@obsidize/logger
Version:
A tiny javascript logging library
44 lines (43 loc) • 1.19 kB
JavaScript
/**
* 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;
}
}