"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InProcessEventBus = void 0; const events_1 = require("events"); class InProcessEventBus { constructor(logger) { this.emitter = new events_1.EventEmitter(); this.emitter.setMaxListeners(50); this.logger = logger; } async publish(event) { this.logger.debug({ eventName: event.eventName, aggregateId: event.aggregateId }, 'Publishing domain event'); this.emitter.emit(event.eventName, event); } subscribe(eventName, handler) { this.emitter.on(eventName, (event) => { handler.handle(event).catch((err) => { this.logger.error({ eventName, err }, 'Error in event handler'); }); }); } } exports.InProcessEventBus = InProcessEventBus;