token-management
Version:
``` npm i token-management ``` or ``` yarn add token-management ```
41 lines (32 loc) • 797 B
JavaScript
export default class EventEmitter {
constructor() {
this.events = {};
}
_getEventListByName(eventName) {
if (typeof this.events[eventName] === 'undefined') {
this.events[eventName] = new Set();
}
return this.events[eventName];
}
on(eventName, fn) {
this._getEventListByName(eventName).add(fn);
}
once(eventName, fn) {
const self = this;
const onceFn = function(...args) {
self.removeListener(eventName, onceFn);
fn.apply(self, args);
};
this.on(eventName, onceFn);
}
emit(eventName, ...args) {
this._getEventListByName(eventName).forEach(
function(fn) {
fn.apply(this, args);
}.bind(this),
);
}
removeListener(eventName, fn) {
this._getEventListByName(eventName).delete(fn);
}
}