UNPKG

@grubou/bussy

Version:

Command & query bus implementations

36 lines 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InternalEventBus = void 0; class InternalEventBus { constructor(logger, eventMiddlewares, eventHandlers) { this.logger = logger; this.eventMiddlewares = eventMiddlewares; this.eventHandlers = eventHandlers; } publish(events) { events.reduce((domainEvents, event) => { const correspondingEventHandlers = this.eventHandlers[event.label()]; this.eventMiddlewares.forEach((middleware) => middleware.handle(event)); Promise.allSettled(correspondingEventHandlers.map((eventHandler) => { eventHandler .reactTo(event) .then(() => this.logOnSuccess(event, eventHandler)) .catch((error) => this.logOnError(event, eventHandler, error)); })); return domainEvents.slice(events.indexOf(event)); }, events); } logOnSuccess(event, eventHandler) { this.logger.info(`Event: ${event.label()} successfully processed by ${eventHandler.name()}`, { event: event.serialize() }); } logOnError(event, eventHandler, error) { this.logger.error(`Event: ${event.label()} unsuccessfully processed by ${eventHandler.name()}`, { error, event: event.serialize() }); } } exports.InternalEventBus = InternalEventBus; //# sourceMappingURL=InternalEventBus.js.map