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