@feature-hub/core
Version:
Create scalable web applications using micro frontends.
38 lines • 1.68 kB
JavaScript
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