-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
44 lines (38 loc) · 863 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
module.exports = function(emitter) {
var oldListeners = Object.create(null)
function on(event, handler) {
detach(event)
emitter.addListener(event, handler)
reattach(event)
return on
}
function once(event, handler) {
detach(event)
emitter.once(event, handler)
reattach(event)
return on
}
function reattach(event) {
var listeners = oldListeners[event] || []
listeners.forEach(function(oldHandler) {
emitter.addListener(event, oldHandler)
})
return on
}
function detach(event) {
if (oldListeners[event]) return
oldListeners[event] = emitter.listeners(event).slice(0);
emitter.removeAllListeners(event);
return on
}
function then(fn) {
fn()
return on
}
on.on = on
on.once = once
on.detach = detach
on.reattach = reattach
on.then = then
return on
}