"use strict"; function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; } var id = 0; function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; } var _emitter = /*#__PURE__*/_classPrivateFieldLooseKey("emitter"); var _events = /*#__PURE__*/_classPrivateFieldLooseKey("events"); class EventTracker { constructor(emitter) { Object.defineProperty(this, _emitter, { writable: true, value: void 0 }); Object.defineProperty(this, _events, { writable: true, value: [] }); _classPrivateFieldLooseBase(this, _emitter)[_emitter] = emitter; } on(event, fn) { _classPrivateFieldLooseBase(this, _events)[_events].push([event, fn]); return _classPrivateFieldLooseBase(this, _emitter)[_emitter].on(event, fn); } remove() { for (const [event, fn] of _classPrivateFieldLooseBase(this, _events)[_events].splice(0)) { _classPrivateFieldLooseBase(this, _emitter)[_emitter].off(event, fn); } } } /** * Create a wrapper around an event emitter with a `remove` method to remove * all events that were added using the wrapped emitter. */ module.exports = EventTracker;