emitter_wrapper.js 732 B

123456789101112131415161718192021222324252627282930313233
  1. 'use strict'
  2. class EmitterWrapper {
  3. constructor (emitter) {
  4. this.listeners = {}
  5. this.emitter = emitter
  6. }
  7. addListener (event, listener) {
  8. this.emitter.addListener(event, listener)
  9. this.listeners[event] = this.listeners[event] || []
  10. this.listeners[event].push(listener)
  11. return this
  12. }
  13. on (event, listener) {
  14. return this.addListener(event, listener)
  15. }
  16. removeAllListeners (event) {
  17. const events = event ? [event] : Object.keys(this.listeners)
  18. events.forEach((event) => {
  19. this.listeners[event].forEach((listener) => {
  20. this.emitter.removeListener(event, listener)
  21. })
  22. delete this.listeners[event]
  23. })
  24. return this
  25. }
  26. }
  27. module.exports = EmitterWrapper