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

74 lines
3.1 KiB
JavaScript

const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
const require_attachShareScopeMap = require('./attachShareScopeMap.cjs');
const require_constant = require('./constant.cjs');
const require_updateOptions = require('./updateOptions.cjs');
let _module_federation_sdk = require("@module-federation/sdk");
//#region src/remotes.ts
function remotes(options) {
require_updateOptions.updateRemoteOptions(options);
const { chunkId, promises, webpackRequire, chunkMapping, idToExternalAndNameMapping, idToRemoteMap } = options;
require_attachShareScopeMap.attachShareScopeMap(webpackRequire);
if (webpackRequire.o(chunkMapping, chunkId)) chunkMapping[chunkId].forEach((id) => {
let getScope = webpackRequire.R;
if (!getScope) getScope = [];
const data = idToExternalAndNameMapping[id];
const remoteInfos = idToRemoteMap[id] || [];
if (getScope.indexOf(data) >= 0) return;
getScope.push(data);
if (data.p) return promises.push(data.p);
const onError = (error) => {
if (!error) error = /* @__PURE__ */ new Error("Container missing");
if (typeof error.message === "string") error.message += `\nwhile loading "${data[1]}" from ${data[2]}`;
webpackRequire.m[id] = () => {
throw error;
};
data.p = 0;
};
const handleFunction = (fn, arg1, arg2, d, next, first) => {
try {
const promise = fn(arg1, arg2);
if (promise && promise.then) {
const p = promise.then((result) => next(result, d), onError);
if (first) promises.push(data.p = p);
else return p;
} else return next(promise, d, first);
} catch (error) {
onError(error);
}
};
const onExternal = (external, _, first) => external ? handleFunction(webpackRequire.I, data[0], 0, external, onInitialized, first) : onError();
var onInitialized = (_, external, first) => handleFunction(external.get, data[1], getScope, 0, onFactory, first);
var onFactory = (factory) => {
data.p = 1;
webpackRequire.m[id] = (module) => {
module.exports = factory();
};
};
const onRemoteLoaded = () => {
try {
const remoteModuleName = (0, _module_federation_sdk.decodeName)(remoteInfos[0].name, _module_federation_sdk.ENCODE_NAME_PREFIX) + data[1].slice(1);
const instance = webpackRequire.federation.instance;
const loadRemote = () => webpackRequire.federation.instance.loadRemote(remoteModuleName, {
loadFactory: false,
from: "build"
});
if (instance.options.shareStrategy === "version-first") {
const shareScopes = Array.isArray(data[0]) ? data[0] : [data[0]];
return Promise.all(shareScopes.map((shareScope) => instance.sharedHandler.initializeSharing(shareScope))).then(() => {
return loadRemote();
});
}
return loadRemote();
} catch (error) {
onError(error);
}
};
if (remoteInfos.length === 1 && require_constant.FEDERATION_SUPPORTED_TYPES.includes(remoteInfos[0].externalType) && remoteInfos[0].name) handleFunction(onRemoteLoaded, data[2], 0, 0, onFactory, 1);
else handleFunction(webpackRequire, data[2], 0, 0, onExternal, 1);
});
}
//#endregion
exports.remotes = remotes;
//# sourceMappingURL=remotes.cjs.map