UNPKG

redis-smq-common

Version:

Provides essential components and utilities shared across RedisSMQ packages.

59 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventBus = void 0; const index_js_1 = require("./errors/index.js"); const index_js_2 = require("../runnable/index.js"); const index_js_3 = require("../logger/index.js"); class EventBus extends index_js_2.Runnable { constructor(config = {}, namespace = '') { super(); this.namespace = namespace ? `${namespace}:` : ''; this.logger = (0, index_js_3.createLogger)(config === null || config === void 0 ? void 0 : 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 index_js_1.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()); } } exports.EventBus = EventBus; //# sourceMappingURL=event-bus.js.map