UNPKG

@solidgrounds/core

Version:
37 lines 1.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServiceContainerFactory = void 0; const tslib_1 = require("tslib"); const FeatureGroupFactory_1 = require("./FeatureGroupFactory"); const Feature_1 = require("./Feature"); const Util_1 = require("./Util"); /** * Immutable container factory. */ class ServiceContainerFactory { constructor(featureGroupFactory, options = { validate: true, name: 'root' }) { this.featureGroupFactory = featureGroupFactory; this.options = options; this.featureFactories = [Feature_1.KernelFeature]; } /** * Merge functional service factory. */ add(f1) { const container = new ServiceContainerFactory(new FeatureGroupFactory_1.FeatureGroupFactory(), this.options); container.featureFactories = [...this.featureFactories, f1]; return container; } build() { return tslib_1.__awaiter(this, void 0, void 0, function* () { const featureGroup = this.featureGroupFactory.build(this.featureFactories, this.options.name); yield featureGroup.compile(); return Util_1.serviceInstances(featureGroup.references); }); } } exports.ServiceContainerFactory = ServiceContainerFactory; ServiceContainerFactory.create = (options) => { return new ServiceContainerFactory(new FeatureGroupFactory_1.FeatureGroupFactory(), options); }; //# sourceMappingURL=ServiceContainerFactory.js.map