Files
emaui/node_modules/@module-federation/dts-plugin/dist/fork-dev-worker.js
2026-05-29 15:23:46 +03:00

114 lines
4.6 KiB
JavaScript

Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_Action = require('./Action-CzhPMw2i.js');
const require_Broker = require('./Broker-DRFgFvXI.js');
const require_expose_rpc = require('./expose-rpc-mEaCWCcd.js');
require('./consumeTypes-CFK17Cck.js');
require('./core.js');
const require_utils = require('./utils-7KqCZHbb.js');
let _module_federation_sdk = require("@module-federation/sdk");
//#region src/dev-worker/handleWorkerMessage.ts
function handleDevWorkerMessage(message, options = {}) {
const { moduleServer, processExit = process.exit, pid = process.pid, log = () => void 0 } = options;
log(`ChildProcess(${pid}), message: ${JSON.stringify(message)} `, "forkDevWorker", "info");
if (message.type === require_expose_rpc.RpcGMCallTypes.EXIT) {
log(`ChildProcess(${pid}) SIGTERM, Federation DevServer will exit...`, "forkDevWorker", "error");
moduleServer?.exit();
processExit(0);
}
}
//#endregion
//#region src/dev-worker/forkDevWorker.ts
let typesManager, serverAddress, moduleServer, cacheOptions;
function getLocalRemoteNames(options, encodeNameIdentifier) {
if (!options) return [];
let hostConfig;
try {
hostConfig = require_expose_rpc.retrieveHostConfig(options);
} catch (e) {
require_Broker.fileLog(`getLocalRemoteNames: retrieveHostConfig failed: ${e.message}`, "forkDevWorker", "warn");
return [];
}
const { mapRemotesToDownload } = hostConfig;
return Object.keys(mapRemotesToDownload).reduce((sum, remoteModuleName) => {
const remoteInfo = mapRemotesToDownload[remoteModuleName];
const name = encodeNameIdentifier ? (0, _module_federation_sdk.decodeName)(remoteInfo.name, encodeNameIdentifier) : remoteInfo.name;
const ip = require_utils.getIpFromEntry(remoteInfo.url, require_Broker.getIPV4());
if (!ip) return sum;
sum.push({
name,
entry: remoteInfo.url,
ip
});
return sum;
}, []);
}
async function updateCallback({ updateMode, name, remoteTypeTarPath, remoteInfo, once }) {
const { disableHotTypesReload, disableLiveReload } = cacheOptions || {};
require_Broker.fileLog(`sync remote module ${name}, types to ${cacheOptions?.name},typesManager.updateTypes run`, "forkDevWorker", "info");
if (!disableLiveReload && moduleServer) moduleServer.update({
updateKind: require_Broker.UpdateKind.RELOAD_PAGE,
updateMode: require_Action.UpdateMode.PASSIVE
});
if (!disableHotTypesReload && typesManager) await typesManager.updateTypes({
updateMode,
remoteName: name,
remoteTarPath: remoteTypeTarPath,
remoteInfo,
once
});
}
async function forkDevWorker(options, action) {
if (!typesManager) {
const { name, remote, host, extraOptions } = options;
typesManager = new (require_expose_rpc.getDTSManagerConstructor(remote?.implementation))({
remote,
host,
extraOptions
});
if (!options.disableHotTypesReload && remote) {
const { remoteOptions, tsConfig } = require_expose_rpc.retrieveRemoteConfig(remote);
const mfTypesZipPath = require_expose_rpc.retrieveTypesZipPath(require_expose_rpc.retrieveMfTypesPath(tsConfig, remoteOptions), remoteOptions);
await Promise.all([require_expose_rpc.createHttpServer({ typeTarPath: mfTypesZipPath }).then((res) => {
serverAddress = res.serverAddress;
}), typesManager.generateTypes()]).catch((err) => {
require_Broker.fileLog(`${name} module generateTypes done, localServerAddress: ${JSON.stringify(err)}`, "forkDevWorker", "error");
});
require_Broker.fileLog(`${name} module generateTypes done, localServerAddress: ${serverAddress}`, "forkDevWorker", "info");
}
moduleServer = new require_expose_rpc.ModuleFederationDevServer({
name,
remotes: getLocalRemoteNames(host, extraOptions?.["encodeNameIdentifier"]),
updateCallback,
remoteTypeTarPath: `${serverAddress}/${require_Action.DEFAULT_TAR_NAME}`
});
cacheOptions = options;
}
if (action === "update" && cacheOptions) {
require_Broker.fileLog(`remoteModule ${cacheOptions.name} receive devWorker update, start typesManager.updateTypes `, "forkDevWorker", "info");
if (!cacheOptions.disableLiveReload) moduleServer?.update({
updateKind: require_Broker.UpdateKind.RELOAD_PAGE,
updateMode: require_Action.UpdateMode.POSITIVE
});
if (!cacheOptions.disableHotTypesReload) typesManager?.updateTypes({
updateMode: require_Action.UpdateMode.POSITIVE,
remoteName: cacheOptions.name
}).then(() => {
moduleServer?.update({
updateKind: require_Broker.UpdateKind.UPDATE_TYPE,
updateMode: require_Action.UpdateMode.POSITIVE
});
});
}
}
process.on("message", (message) => {
handleDevWorkerMessage(message, {
moduleServer,
log: require_Broker.fileLog
});
});
require_expose_rpc.exposeRpc(forkDevWorker);
//#endregion
exports.forkDevWorker = forkDevWorker;