UNPKG

@dolittle/sdk.events.handling

Version:

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

81 lines 6.42 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.EventHandlerBuilder = void 0; const sdk_events_1 = require("@dolittle/sdk.events"); const EventHandler_1 = require("../EventHandler"); const EventHandlerAlias_1 = require("../EventHandlerAlias"); const EventHandlerModelId_1 = require("../EventHandlerModelId"); const EventHandlerMethodsBuilder_1 = require("./EventHandlerMethodsBuilder"); const IEventHandlerBuilder_1 = require("./IEventHandlerBuilder"); /** * Represents an implementation of {@link IEventHandlerBuilder}. */ class EventHandlerBuilder extends IEventHandlerBuilder_1.IEventHandlerBuilder { /** * Initializes a new instance of {@link EventHandlerBuilder}. * @param {EventHandlerId} _eventHandlerId - The unique identifier of the event handler to build for. * @param {IModelBuilder} _modelBuilder - For binding the event handler to its identifier. */ constructor(_eventHandlerId, _modelBuilder) { super(); this._eventHandlerId = _eventHandlerId; this._modelBuilder = _modelBuilder; this._scopeId = sdk_events_1.ScopeId.default; this._modelBuilder.bindIdentifierToProcessorBuilder(this._modelId, this); } /** @inheritdoc */ partitioned() { this._partitioned = true; this._methodsBuilder = new EventHandlerMethodsBuilder_1.EventHandlerMethodsBuilder(this._eventHandlerId); return this._methodsBuilder; } /** @inheritdoc */ unpartitioned() { this._partitioned = false; this._methodsBuilder = new EventHandlerMethodsBuilder_1.EventHandlerMethodsBuilder(this._eventHandlerId); return this._methodsBuilder; } /** @inheritdoc */ inScope(scopeId) { this._modelBuilder.unbindIdentifierFromProcessorBuilder(this._modelId, this); this._scopeId = sdk_events_1.ScopeId.from(scopeId); this._modelBuilder.bindIdentifierToProcessorBuilder(this._modelId, this); return this; } /** @inheritdoc */ withAlias(alias) { this._alias = EventHandlerAlias_1.EventHandlerAlias.from(alias); return this; } /** @inheritdoc */ equals(other) { return this === other; } /** * Builds the event handler. * @param {IEventTypes} eventTypes - For event types resolution. * @param {IServiceProviderBuilder} bindings - For registering the bindings for the event handler class. * @param {IClientBuildResults} results - For keeping track of build results. * @returns {IEventHandler | undefined} The built event handler if successful. */ build(eventTypes, bindings, results) { const eventTypeToMethods = new sdk_events_1.EventTypeMap(); if (this._methodsBuilder === undefined) { results.addFailure(`Failed to build event handler ${this._eventHandlerId}. No event handler methods are configured for event handler`); return; } const allMethodsBuilt = this._methodsBuilder.tryAddEventHandlerMethods(eventTypes, eventTypeToMethods, results); if (!allMethodsBuilt) { results.addFailure(`Could not build event handler ${this._eventHandlerId}`); return; } return new EventHandler_1.EventHandler(this._eventHandlerId, this._scopeId, this._partitioned, eventTypeToMethods, this._alias); } get _modelId() { return new EventHandlerModelId_1.EventHandlerModelId(this._eventHandlerId, this._scopeId); } } exports.EventHandlerBuilder = EventHandlerBuilder; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRIYW5kbGVyQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8iLCJzb3VyY2VzIjpbIkJ1aWxkZXJzL0V2ZW50SGFuZGxlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxxR0FBcUc7OztBQU1yRyxxREFBMEU7QUFFMUUsa0RBQStDO0FBQy9DLDREQUFnRjtBQUVoRixnRUFBNkQ7QUFHN0QsNkVBQTBFO0FBQzFFLGlFQUE4RDtBQUc5RDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsMkNBQW9CO0lBTXpEOzs7O09BSUc7SUFDSCxZQUE2QixlQUErQixFQUFtQixhQUE0QjtRQUN2RyxLQUFLLEVBQUUsQ0FBQztRQURpQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFBbUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFUbkcsYUFBUSxHQUFZLG9CQUFPLENBQUMsT0FBTyxDQUFDO1FBV3hDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksdURBQTBCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGFBQWE7UUFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksdURBQTBCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQyxPQUFnQztRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9DQUFvQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixTQUFTLENBQUMsS0FBNEI7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxxQ0FBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixNQUFNLENBQUMsS0FBVTtRQUNiLE9BQU8sSUFBSSxLQUFLLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFVBQXVCLEVBQUUsUUFBaUMsRUFBRSxPQUE0QjtRQUMxRixNQUFNLGtCQUFrQixHQUFHLElBQUkseUJBQVksRUFBOEIsQ0FBQztRQUMxRSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQ3BDLE9BQU8sQ0FBQyxVQUFVLENBQUMsaUNBQWlDLElBQUksQ0FBQyxlQUFlLDZEQUE2RCxDQUFDLENBQUM7WUFDdkksT0FBTztTQUNWO1FBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNsQixPQUFPLENBQUMsVUFBVSxDQUFDLGlDQUFpQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztZQUM1RSxPQUFPO1NBQ1Y7UUFDRCxPQUFPLElBQUksMkJBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVELElBQVksUUFBUTtRQUNoQixPQUFPLElBQUkseUNBQW1CLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEUsQ0FBQztDQUNKO0FBekVELGtEQXlFQyJ9