@talend/react-cmf
Version:
A framework built on top of best react libraries
54 lines (52 loc) • 1.52 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = mergeModulesAndApp;
var _cmfModule = _interopRequireDefault(require("./cmfModule.merge"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
async function getModule(module) {
const {
init,
...syncModule
} = module;
if (init) {
const asyncModule = await init();
return {
...syncModule,
...asyncModule
};
}
return syncModule;
}
async function find(options, buff = []) {
if (options.modules) {
// eslint-disable-next-line no-restricted-syntax
for await (const current of options.modules) {
if (!current.id) {
throw new Error('a cmf.module must have an id');
}
if (buff.some(({
id
}) => current.id === id)) {
// eslint-disable-next-line no-console
console.warn(`cmf.bootstrap: 2 modules have the same id ${current.id}. This duplicated module will be skipped.`);
} else {
const module = await getModule(current);
buff.push(module);
await find(module, buff);
}
}
}
return buff;
}
/**
* This function find all modules then it merge all configurations
* @return {Object} the configuration for cmf.bootstrap
*/
async function mergeModulesAndApp(options) {
const modules = await find(options);
return (0, _cmfModule.default)(...modules, options);
}
mergeModulesAndApp.merge = _cmfModule.default;
//# sourceMappingURL=cmfModule.js.map
;