@rewaa/event-broker
Version:
A broker for all the events that Rewaa will ever produce or consume
92 lines • 3.25 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Emitter = void 0;
const events_1 = require("events");
const emitter_sqns_1 = require("./emitter.sqns");
const utils_1 = require("../utils/utils");
class Emitter {
constructor(options) {
var _a;
this.localEmitter = new events_1.EventEmitter();
this.options = options;
this.logger = (_a = options.logger) !== null && _a !== void 0 ? _a : new utils_1.Logger(!!this.options.log);
if (this.options.useExternalBroker) {
this.emitter = new emitter_sqns_1.SqnsEmitter(this.logger, this.options);
}
}
async bootstrap(topics) {
if (this.options.useExternalBroker) {
await this.emitter.bootstrap(topics);
}
}
async emit(eventName, options, payload) {
if (this.options.useExternalBroker) {
return await this.emitter.emit(eventName, options, payload);
}
}
async emitBatch(eventName, messages, options) {
if (this.options.useExternalBroker) {
return await this.emitter.emitBatch(eventName, messages, options);
}
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