UNPKG

@rewaa/event-broker

Version:

A broker for all the events that Rewaa will ever produce or consume

133 lines 4.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Emitter = void 0; const emitter_sqns_1 = require("./emitter.sqns"); const utils_1 = require("../utils/utils"); const eventemitter2_1 = require("eventemitter2"); class Emitter { constructor(options) { var _a; this.localEmitter = new eventemitter2_1.EventEmitter2(); this.options = options; this.logger = (_a = options.logger) !== null && _a !== void 0 ? _a : new utils_1.Logger(!!this.options.log); this.emitter = new emitter_sqns_1.SqnsEmitter(this.logger, this.options); } async bootstrap(topics) { if (this.options.useExternalBroker) { await this.emitter.bootstrap(topics); } } async localEmitAsync(eventName, options, payload) { var _a; try { await this.localEmitter.emitAsync(eventName, payload); } catch (error) { this.logger.error({ msg: `Error emitting event ${eventName} with Emitter2`, eventName, options, payload, error, }); if ((_a = this.options.mockEmitter) === null || _a === void 0 ? void 0 : _a.throwErrors) { throw error; } } } async localEmitAsyncBatch(eventName, options, payloads) { var _a; try { const emitPromises = (payloads === null || payloads === void 0 ? void 0 : payloads.map((payload) => this.localEmitter.emitAsync(eventName, payload))) || []; await Promise.all(emitPromises); } catch (error) { this.logger.error({ msg: `Error emitting event ${eventName} with Emitter2`, eventName, options, payloads, error, }); if ((_a = this.options.mockEmitter) === null || _a === void 0 ? void 0 : _a.throwErrors) { throw error; } } } async emit(eventName, options, payload) { if (this.options.useExternalBroker) { return await this.emitter.emit(eventName, options, payload); } else if (this.options.mockEmitter) { await this.localEmitAsync(eventName, options, payload); } } async emitBatch(eventName, messages, options) { if (this.options.useExternalBroker) { return await this.emitter.emitBatch(eventName, messages, options); } else if (this.options.mockEmitter) { await this.localEmitAsyncBatch(eventName, options, messages); } return []; } emitLocal(eventName, ...args) { return this.localEmitter.emit(eventName, ...args); } on(eventName, listener, options) { if (this.options.useExternalBroker && !(options === null || options === void 0 ? void 0 : options.useLocal)) { this.emitter.on(eventName, listener, options); return; } this.localEmitter.on(eventName, listener); } removeListener(eventName, listener) { if (this.options.useExternalBroker) { this.emitter.removeListener(eventName, listener); return; } this.localEmitter.removeListener(eventName, listener); } removeAllListener() { if (this.options.useExternalBroker) { this.emitter.removeAllListener(); return; } this.localEmitter.removeAllListeners(); } async processMessage(message, options) { return await this.emitter.processMessage(message, options); } async processMessages(messages, options) { return await this.emitter.processMessages(messages, options); } async startConsumers() { await this.emitter.startConsumers(); } getTopicReference(topic) { return this.emitter.getTopicReference(topic); } getInternalTopicName(topic) { return this.emitter.getInternalTopicName(topic); } getQueues() { return this.emitter.getQueues(); } getQueueReference(topic) { return this.emitter.getQueueReference(topic); } getInternalQueueName(topic) { return this.emitter.getInternalQueueName(topic); } getEmitPayload(eventName, options, ...args) { return this.emitter.getEmitPayload(eventName, options, ...args); } getBatchEmitPayload(eventName, messages, options) { return this.emitter.getBatchEmitPayload(eventName, messages, options); } parseDataFromMessage(receivedMessage) { return this.emitter.parseDataFromMessage(receivedMessage); } } exports.Emitter = Emitter; //# sourceMappingURL=emitter.js.map