UNPKG

@feature-hub/core

Version:

Create scalable web applications using micro frontends.

38 lines 1.68 kB
import { ExternalsValidator } from './externals-validator'; import { FeatureAppManager, } from './feature-app-manager'; import { FeatureServiceRegistry, } from './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. */ export function createFeatureHub(integratorId, options = {}) { const { featureServiceDefinitions, featureServiceDependencies, providedExternals, moduleLoader, logger, onBind, } = options; let externalsValidator; if (providedExternals) { externalsValidator = new ExternalsValidator(providedExternals); } const featureServiceRegistry = new FeatureServiceRegistry({ externalsValidator, logger, }); const integratorDefinition = { dependencies: { featureServices: featureServiceDependencies }, }; if (featureServiceDefinitions) { featureServiceRegistry.registerFeatureServices(featureServiceDefinitions, integratorId); } const featureAppManager = new FeatureAppManager(featureServiceRegistry, { externalsValidator, moduleLoader, logger, onBind, }); const { featureServices } = featureServiceRegistry.bindFeatureServices(integratorDefinition, integratorId); return { featureAppManager, featureServiceRegistry, featureServices }; } //# sourceMappingURL=create-feature-hub.js.map