UNPKG

rjweb-server

Version:

Easy and Robust Way to create a Web Server with Many Easy-to-use Features in NodeJS

45 lines (44 loc) 974 B
const normalize = (o) => o ?? []; class MiniEventEmitter { constructor() { this.listeners = {}; } /** * Listen for an Event * @since 7.7.0 */ listen(event, callback) { this.listeners[event] = normalize(this.listeners[event]); this.listeners[event].push(callback); return this; } /** * Remove a listener * @since 7.7.0 */ unlist(event, callback) { this.listeners[event] = this.listeners[event].filter((e) => Object.is(e, callback)); return this; } /** * Send (Emit) an Event * @since 7.7.0 */ async send(event, ...args) { this.listeners[event] = normalize(this.listeners[event]); const returns = []; for (const callback of this.listeners[event]) { try { const res = await Promise.resolve(callback(...args)); returns.push(res); } catch (err) { returns.push(err); break; } } return returns; } } export { MiniEventEmitter as default };