EventTracker.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. "use strict";
  2. function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
  3. var id = 0;
  4. function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
  5. var _emitter = /*#__PURE__*/_classPrivateFieldLooseKey("emitter");
  6. var _events = /*#__PURE__*/_classPrivateFieldLooseKey("events");
  7. class EventTracker {
  8. constructor(emitter) {
  9. Object.defineProperty(this, _emitter, {
  10. writable: true,
  11. value: void 0
  12. });
  13. Object.defineProperty(this, _events, {
  14. writable: true,
  15. value: []
  16. });
  17. _classPrivateFieldLooseBase(this, _emitter)[_emitter] = emitter;
  18. }
  19. on(event, fn) {
  20. _classPrivateFieldLooseBase(this, _events)[_events].push([event, fn]);
  21. return _classPrivateFieldLooseBase(this, _emitter)[_emitter].on(event, fn);
  22. }
  23. remove() {
  24. for (const [event, fn] of _classPrivateFieldLooseBase(this, _events)[_events].splice(0)) {
  25. _classPrivateFieldLooseBase(this, _emitter)[_emitter].off(event, fn);
  26. }
  27. }
  28. }
  29. /**
  30. * Create a wrapper around an event emitter with a `remove` method to remove
  31. * all events that were added using the wrapped emitter.
  32. */
  33. module.exports = EventTracker;