UNPKG

acelga-bus

Version:

An extensible typescript message bus with support for middlewares

56 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class EventFactoryRespository { constructor() { this.factories = new Map(); } set(name, factory) { if (this.factories.get(name)) { throw new EventNameCollision(); } this.factories.set(name, factory); } get(name) { this.factories.get(name); } execute(event) { if (!this.isIDecodedSerializedEventstoreEvent(event)) { throw new NotADecodedSerializedEventstoreEvent(event); } const eventFactory = this.factories.get(event.eventType); if (!eventFactory) { throw new FactoryNotFoundError(); } return eventFactory.build(event); } isIDecodedSerializedEventstoreEvent(item) { if (!!item && typeof item === 'object' && 'eventType' in item) { true; } return false; } } exports.EventFactoryRespository = EventFactoryRespository; class FactoryNotFoundError extends Error { constructor() { super(); this.message = 'Event Factory not found'; } } exports.FactoryNotFoundError = FactoryNotFoundError; class NotADecodedSerializedEventstoreEvent extends Error { constructor(givenEvent) { super(); this.givenEvent = givenEvent; this.message = 'The middleware for passing from a raw eventstore JSON object to a Event class has found that the data given is not an event. The original data is in the attribute "givenEvent" of this Error object'; } } exports.NotADecodedSerializedEventstoreEvent = NotADecodedSerializedEventstoreEvent; class EventNameCollision extends Error { constructor() { super(); this.message = 'The event you are trying to register seem to be registered previously. Maybe you are registerint it 2 times or you have 2 classes with the same name.'; } } exports.EventNameCollision = EventNameCollision; //# sourceMappingURL=factoryRepository.js.map