UNPKG

@feature-hub/core

Version:

Create scalable web applications using micro frontends.

41 lines 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createFeatureHub = createFeatureHub; const externals_validator_1 = require("./externals-validator"); const feature_app_manager_1 = require("./feature-app-manager"); const feature_service_registry_1 = require("./feature-service-registry"); /** * Creates the [[FeatureServiceRegistry]] singleton instance, registers all * [[FeatureHubOptions.featureServiceDefinitions]] for the given integrator * ID, and instantiates a [[FeatureAppManager]] singleton instance using * the [[FeatureServiceRegistry]]. * * @param integratorId A self-selected but unique consumer ID that is used to * register or consume Feature Services. */ function createFeatureHub(integratorId, options = {}) { const { featureServiceDefinitions, featureServiceDependencies, providedExternals, moduleLoader, logger, onBind, } = options; let externalsValidator; if (providedExternals) { externalsValidator = new externals_validator_1.ExternalsValidator(providedExternals); } const featureServiceRegistry = new feature_service_registry_1.FeatureServiceRegistry({ externalsValidator, logger, }); const integratorDefinition = { dependencies: { featureServices: featureServiceDependencies }, }; if (featureServiceDefinitions) { featureServiceRegistry.registerFeatureServices(featureServiceDefinitions, integratorId); } const featureAppManager = new feature_app_manager_1.FeatureAppManager(featureServiceRegistry, { externalsValidator, moduleLoader, logger, onBind, }); const { featureServices } = featureServiceRegistry.bindFeatureServices(integratorDefinition, integratorId); return { featureAppManager, featureServiceRegistry, featureServices }; } //# sourceMappingURL=create-feature-hub.js.map