mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-27 21:20:58 +00:00
61 lines
2.8 KiB
JavaScript
61 lines
2.8 KiB
JavaScript
const require_attachShareScopeMap = require('./attachShareScopeMap.cjs');
|
|
const require_constant = require('./constant.cjs');
|
|
|
|
//#region src/initializeSharing.ts
|
|
function initializeSharing({ shareScopeName, webpackRequire, initPromises, initTokens, initScope }) {
|
|
const shareScopeKeys = Array.isArray(shareScopeName) ? shareScopeName : [shareScopeName];
|
|
var initializeSharingPromises = [];
|
|
var _initializeSharing = function(shareScopeKey) {
|
|
if (!initScope) initScope = [];
|
|
const mfInstance = webpackRequire.federation.instance;
|
|
var initToken = initTokens[shareScopeKey];
|
|
if (!initToken) initToken = initTokens[shareScopeKey] = { from: mfInstance.name };
|
|
if (initScope.indexOf(initToken) >= 0) return;
|
|
initScope.push(initToken);
|
|
const promise = initPromises[shareScopeKey];
|
|
if (promise) return promise;
|
|
var warn = (msg) => typeof console !== "undefined" && console.warn && console.warn(msg);
|
|
var initExternal = (id) => {
|
|
var handleError = (err) => warn("Initialization of sharing external failed: " + err);
|
|
try {
|
|
var module = webpackRequire(id);
|
|
if (!module) return;
|
|
var initFn = (module) => module && module.init && module.init(webpackRequire.S[shareScopeKey], initScope, {
|
|
shareScopeMap: webpackRequire.S || {},
|
|
shareScopeKeys: shareScopeName
|
|
});
|
|
if (module.then) return promises.push(module.then(initFn, handleError));
|
|
var initResult = initFn(module);
|
|
if (initResult && typeof initResult !== "boolean" && initResult.then) return promises.push(initResult["catch"](handleError));
|
|
} catch (err) {
|
|
handleError(err);
|
|
}
|
|
};
|
|
const promises = mfInstance.initializeSharing(shareScopeKey, {
|
|
strategy: mfInstance.options.shareStrategy,
|
|
initScope,
|
|
from: "build"
|
|
});
|
|
require_attachShareScopeMap.attachShareScopeMap(webpackRequire);
|
|
const bundlerRuntimeRemotesOptions = webpackRequire.federation.bundlerRuntimeOptions.remotes;
|
|
if (bundlerRuntimeRemotesOptions) Object.keys(bundlerRuntimeRemotesOptions.idToRemoteMap).forEach((moduleId) => {
|
|
const info = bundlerRuntimeRemotesOptions.idToRemoteMap[moduleId];
|
|
const externalModuleId = bundlerRuntimeRemotesOptions.idToExternalAndNameMapping[moduleId][2];
|
|
if (info.length > 1) initExternal(externalModuleId);
|
|
else if (info.length === 1) {
|
|
const remoteInfo = info[0];
|
|
if (!require_constant.FEDERATION_SUPPORTED_TYPES.includes(remoteInfo.externalType)) initExternal(externalModuleId);
|
|
}
|
|
});
|
|
if (!promises.length) return initPromises[shareScopeKey] = true;
|
|
return initPromises[shareScopeKey] = Promise.all(promises).then(() => initPromises[shareScopeKey] = true);
|
|
};
|
|
shareScopeKeys.forEach((key) => {
|
|
initializeSharingPromises.push(_initializeSharing(key));
|
|
});
|
|
return Promise.all(initializeSharingPromises).then(() => true);
|
|
}
|
|
|
|
//#endregion
|
|
exports.initializeSharing = initializeSharing;
|
|
//# sourceMappingURL=initializeSharing.cjs.map
|