UNPKG

@obsidize/logger

Version:
44 lines (43 loc) 1.19 kB
/** * Lightweight event broadcaster. * * While this class' primary use in the library is for * sending log events to registered listeners, it * is defined to be generic, and can technically * emit any type of value. * * Feel free to use this for non-logging things since * javascript has no built-in observer pattern... */ export class EventEmitter { constructor() { this.mListeners = []; } get listenerCount() { return this.mListeners.length; } emit(value) { for (const listener of this.mListeners) listener(value); return this; } hasListener(listener) { return this.mListeners.indexOf(listener) >= 0; } addListener(listener) { if (typeof listener === 'function' && !this.hasListener(listener)) this.mListeners.push(listener); return this; } removeListener(listener) { const index = this.mListeners.indexOf(listener); if (index >= 0) this.mListeners.splice(index, 1); return this; } removeAllListeners() { while (this.mListeners.length > 0) this.mListeners.pop(); return this; } }