UNPKG

@dolittle/sdk.events.handling

Version:

Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.

51 lines 4.85 kB
"use strict"; // Copyright (c) Dolittle. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. Object.defineProperty(exports, "__esModule", { value: true }); exports.EventHandlersBuilder = void 0; const EventHandlerId_1 = require("../EventHandlerId"); const EventHandlerBuilder_1 = require("./EventHandlerBuilder"); const EventHandlerClassBuilder_1 = require("./EventHandlerClassBuilder"); const eventHandlerDecorator_1 = require("./eventHandlerDecorator"); const IEventHandlersBuilder_1 = require("./IEventHandlersBuilder"); const EventHandlerModelId_1 = require("../EventHandlerModelId"); /** * Represents an implementation of {@link IEventHandlersBuilder}. */ class EventHandlersBuilder extends IEventHandlersBuilder_1.IEventHandlersBuilder { /** * Initialises a new instance of the {@link EventHandlersBuilder} class. * @param {IModelBuilder} _modelBuilder - For binding event handlers to identifiers. * @param {IClientBuildResults} _buildResults - For keeping track of build results. */ constructor(_modelBuilder, _buildResults) { super(); this._modelBuilder = _modelBuilder; this._buildResults = _buildResults; } /** @inheritdoc */ create(eventHandlerId) { const identifier = EventHandlerId_1.EventHandlerId.from(eventHandlerId); return new EventHandlerBuilder_1.EventHandlerBuilder(identifier, this._modelBuilder); } register(typeOrInstance) { const type = typeOrInstance instanceof Function ? typeOrInstance : Object.getPrototypeOf(typeOrInstance).constructor; const instance = typeOrInstance instanceof Function ? undefined : typeOrInstance; if (type === undefined) { this._buildResults.addFailure(`The event handler instance ${typeOrInstance} is not a class, it cannot be used as an event handler`); return this; } if (!(0, eventHandlerDecorator_1.isDecoratedEventHandlerType)(type)) { this._buildResults.addFailure(`The event handler class ${type.name} is not decorated as an event handler`, `Add the @${eventHandlerDecorator_1.eventHandler.name} decorator to the class`); return this; } const eventHandlerType = (0, eventHandlerDecorator_1.getDecoratedEventHandlerType)(type); const identifier = new EventHandlerModelId_1.EventHandlerModelId(eventHandlerType.eventHandlerId, eventHandlerType.scopeId); const builder = new EventHandlerClassBuilder_1.EventHandlerClassBuilder(eventHandlerType, instance); this._modelBuilder.bindIdentifierToType(identifier, type); this._modelBuilder.bindIdentifierToProcessorBuilder(identifier, builder); return this; } } exports.EventHandlersBuilder = EventHandlersBuilder; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRIYW5kbGVyc0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiLi4vIiwic291cmNlcyI6WyJCdWlsZGVycy9FdmVudEhhbmRsZXJzQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHFHQUFxRzs7O0FBT3JHLHNEQUFtRDtBQUNuRCwrREFBNEQ7QUFDNUQseUVBQXNFO0FBQ3RFLG1FQUEySTtBQUMzSSxtRUFBZ0U7QUFDaEUsZ0VBQTZEO0FBRzdEOztHQUVHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSw2Q0FBcUI7SUFDM0Q7Ozs7T0FJRztJQUNILFlBQ3FCLGFBQTRCLEVBQzVCLGFBQWtDO1FBRW5ELEtBQUssRUFBRSxDQUFDO1FBSFMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQXFCO0lBR3ZELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsTUFBTSxDQUFDLGNBQThDO1FBQ2pELE1BQU0sVUFBVSxHQUFHLCtCQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSx5Q0FBbUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFLRCxRQUFRLENBQVUsY0FBa0M7UUFDaEQsTUFBTSxJQUFJLEdBQUcsY0FBYyxZQUFZLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNySCxNQUFNLFFBQVEsR0FBRyxjQUFjLFlBQVksUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNqRixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsOEJBQThCLGNBQWMsd0RBQXdELENBQUMsQ0FBQztZQUNwSSxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLElBQUEsbURBQTJCLEVBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsMkJBQTJCLElBQUksQ0FBQyxJQUFJLHVDQUF1QyxFQUFDLFlBQVksb0NBQXFCLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO1lBQzNLLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUEsb0RBQTRCLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSx5Q0FBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEcsTUFBTSxPQUFPLEdBQUcsSUFBSSxtREFBd0IsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUExQ0Qsb0RBMENDIn0=