Files
emaui/node_modules/@module-federation/webpack-bundler-runtime/dist/initializeSharing.js
2026-05-29 15:23:46 +03:00

61 lines
2.8 KiB
JavaScript

import { attachShareScopeMap } from "./attachShareScopeMap.js";
import { FEDERATION_SUPPORTED_TYPES } from "./constant.js";
//#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"
});
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 (!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
export { initializeSharing };
//# sourceMappingURL=initializeSharing.js.map