UNPKG

@mo-platform/auth

Version:

Mo authentication library

36 lines (30 loc) 773 B
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) } }