@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
JavaScript
;
// 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=