You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
732 B
33 lines
732 B
'use strict'
|
|
|
|
class EmitterWrapper {
|
|
constructor (emitter) {
|
|
this.listeners = {}
|
|
this.emitter = emitter
|
|
}
|
|
|
|
addListener (event, listener) {
|
|
this.emitter.addListener(event, listener)
|
|
this.listeners[event] = this.listeners[event] || []
|
|
this.listeners[event].push(listener)
|
|
return this
|
|
}
|
|
|
|
on (event, listener) {
|
|
return this.addListener(event, listener)
|
|
}
|
|
|
|
removeAllListeners (event) {
|
|
const events = event ? [event] : Object.keys(this.listeners)
|
|
events.forEach((event) => {
|
|
this.listeners[event].forEach((listener) => {
|
|
this.emitter.removeListener(event, listener)
|
|
})
|
|
delete this.listeners[event]
|
|
})
|
|
|
|
return this
|
|
}
|
|
}
|
|
|
|
module.exports = EmitterWrapper
|