mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-27 17:50:56 +00:00
114 lines
4.6 KiB
JavaScript
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; |