UNPKG

curli-bus

Version:

Simple Command Bus Implementation (CQRS) for NodeJS/Typescript.

36 lines (35 loc) 1.21 kB
"use strict"; 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;