@dolittle/sdk.common
Version:
Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.
56 lines • 4.14 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.Model = void 0;
const IModel_1 = require("./IModel");
/**
* Represents an implementation of {@link IModel}.
*/
class Model extends IModel_1.IModel {
/**
* Initialises a new instance of the {@link Model} class.
* @param {[AnyIdentifier, Constructor][]} types - The valid type bindings.
* @param {[AnyIdentifier, ProcessorBuilder][]} processorBuilders - The valid processor builder bindings.
*/
constructor(types, processorBuilders) {
super();
/** @inheritdoc */
this.bindings = [];
for (const [identifier, type] of types) {
this.bindings.push({ identifier, type });
}
binding: for (const [identifier, processorBuilder] of processorBuilders) {
for (const binding of this.bindings) {
if (binding.identifier.equals(identifier)) {
binding.processorBuilder = processorBuilder;
continue binding;
}
}
this.bindings.push({ identifier, processorBuilder });
}
}
/** @inheritdoc */
getTypeBindings(predicate) {
const typeBindings = [];
for (const { identifier, type } of this.bindings) {
if (predicate(identifier) && type !== undefined) {
typeBindings.push({ identifier, type });
}
}
return typeBindings;
}
/** @inheritdoc */
getProcessorBuilderBindings(...builderTypes) {
const processorBuilderBindings = [];
for (const { identifier, processorBuilder: builder } of this.bindings) {
if (builder !== undefined && builderTypes.some(type => builder instanceof type)) {
const processorBuilder = builder;
processorBuilderBindings.push({ identifier, processorBuilder });
}
}
return processorBuilderBindings;
}
}
exports.Model = Model;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWwuanMiLCJzb3VyY2VSb290IjoiLi4vIiwic291cmNlcyI6WyJNb2RlbC9Nb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHFHQUFxRzs7O0FBSXJHLHFDQUFpRjtBQUlqRjs7R0FFRztBQUNILE1BQWEsS0FBTSxTQUFRLGVBQU07SUFJN0I7Ozs7T0FJRztJQUNILFlBQ0ksS0FBbUQsRUFDbkQsaUJBQStEO1FBRS9ELEtBQUssRUFBRSxDQUFDO1FBWlosa0JBQWtCO1FBQ1QsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQWE5QixLQUFLLE1BQU0sQ0FBRSxVQUFVLEVBQUUsSUFBSSxDQUFFLElBQUksS0FBSyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDNUM7UUFDRCxPQUFPLEVBQUUsS0FBSyxNQUFNLENBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFFLElBQUksaUJBQWlCLEVBQUU7WUFDdkUsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFO29CQUN2QyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7b0JBQzVDLFNBQVMsT0FBTyxDQUFDO2lCQUNwQjthQUNKO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixlQUFlLENBQTBCLFNBQStDO1FBQ3BGLE1BQU0sWUFBWSxHQUFxQixFQUFFLENBQUM7UUFDMUMsS0FBSyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDOUMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDN0MsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzNDO1NBQ0o7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDJCQUEyQixDQUErQixHQUFHLFlBQWU7UUFDeEUsTUFBTSx3QkFBd0IsR0FBdUQsRUFBRSxDQUFDO1FBQ3hGLEtBQUssTUFBTSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ25FLElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxZQUFZLElBQUksQ0FBQyxFQUFFO2dCQUM3RSxNQUFNLGdCQUFnQixHQUFHLE9BQWtDLENBQUM7Z0JBQzVELHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7YUFDbkU7U0FDSjtRQUNELE9BQU8sd0JBQXdCLENBQUM7SUFDcEMsQ0FBQztDQUNKO0FBbkRELHNCQW1EQyJ9