curli-bus
Version:
Simple Command Bus Implementation (CQRS) for NodeJS/Typescript.
36 lines (35 loc) • 1.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class EventBus {
constructor() {
this.subscribersMap = {};
}
register(eventSubscriber) {
const eventClassName = eventSubscriber.getEventName();
if (!this.subscribersMap.hasOwnProperty(eventClassName)) {
this.subscribersMap[eventClassName] = [];
}
this.subscribersMap[eventClassName].push(eventSubscriber);
}
publish(events) {
if (Array.isArray(events)) {
events.forEach((event) => {
this.publishSingleEvent(event);
});
}
else {
this.publishSingleEvent(events);
}
}
publishSingleEvent(event) {
var _a;
if (!this.subscribersMap.hasOwnProperty(event.eventName)) {
throw new Error(`There is not a subscriber for ${event.eventName} event.`);
}
event.dateTimeOccurred = (_a = event.dateTimeOccurred) !== null && _a !== void 0 ? _a : new Date();
this.subscribersMap[event.eventName].map((subscriber) => {
subscriber.handle(event);
});
}
}
exports.EventBus = EventBus;