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.
44 lines
1.3 KiB
44 lines
1.3 KiB
|
2 years ago
|
"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;
|