UNPKG

redis-smq-common

Version:

Provides essential components and utilities shared across RedisSMQ packages.

57 lines 2.02 kB
import { EventBusNotConnectedError } from './errors/index.js'; import { Runnable } from '../runnable/index.js'; import { createLogger } from '../logger/index.js'; export class EventBus extends Runnable { namespace; logger; constructor(config = {}, namespace = '') { super(); this.namespace = namespace ? `${namespace}:` : ''; this.logger = createLogger(config?.logger, `${this.constructor.name}${namespace ? `-${namespace}` : ''}-${this.id}`); } toNamespacedEvent(event) { return event === 'error' ? 'error' : `${this.namespace}${event}`; } emit(event, ...args) { if (event === 'error') { return super.emit(event, ...args); } if (!this.isOperational()) { this.eventEmitter.emit('error', new EventBusNotConnectedError()); return false; } const namespacedEvent = this.toNamespacedEvent(String(event)); this.eventEmitter.emit(namespacedEvent, ...args); return true; } on(event, listener) { const namespacedEvent = this.toNamespacedEvent(String(event)); this.eventEmitter.on(namespacedEvent, listener); return this; } once(event, listener) { const namespacedEvent = this.toNamespacedEvent(String(event)); this.eventEmitter.once(namespacedEvent, listener); return this; } removeListener(event, listener) { const namespacedEvent = this.toNamespacedEvent(String(event)); this.eventEmitter.removeListener(namespacedEvent, listener); return this; } removeAllListeners(event) { const namespacedEvent = event ? this.toNamespacedEvent(String(event)) : undefined; return super.removeAllListeners(namespacedEvent); } goingDown() { return [ (cb) => { super.removeAllListeners(); cb(); }, ].concat(super.goingDown()); } } //# sourceMappingURL=event-bus.js.map