@fulgurjs/federation 5.0.3 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/DESIGN.md +11 -0
- package/README.en.md +441 -0
- package/README.md +120 -5
- package/dist/chunk-4PLNAYZX.js +84 -0
- package/dist/cli.js +4 -1
- package/dist/host-pages-core-BFxp-IOj.d.cts +37 -0
- package/dist/host-pages-core-DLfMeDrO.d.ts +37 -0
- package/dist/index.cjs +137 -26
- package/dist/index.js +137 -26
- package/dist/react-adapter.cjs +518 -0
- package/dist/react-adapter.d.cts +117 -0
- package/dist/react-adapter.d.ts +117 -0
- package/dist/react-adapter.js +292 -0
- package/dist/react.d.ts +442 -0
- package/dist/react.js +10 -0
- package/dist/runtime-entry.d.ts +29 -17
- package/dist/runtime.js +13 -13
- package/dist/vue-adapter.cjs +66 -50
- package/dist/vue-adapter.d.cts +4 -25
- package/dist/vue-adapter.d.ts +4 -25
- package/dist/vue-adapter.js +14 -66
- package/examples/README.md +5 -0
- package/examples/react-host/README.md +28 -0
- package/examples/react-host/fulgurjs.config.ts +19 -0
- package/examples/react-host/index.html +11 -0
- package/examples/react-host/package.json +23 -0
- package/examples/react-host/src/App.tsx +66 -0
- package/examples/react-host/src/federation/pages.data.ts +19 -0
- package/examples/react-host/src/main.tsx +8 -0
- package/examples/react-host/tsconfig.json +14 -0
- package/examples/react-host/vite.config.ts +8 -0
- package/examples/react-remote/fulgurjs.config.ts +17 -0
- package/examples/react-remote/index.html +11 -0
- package/examples/react-remote/package.json +22 -0
- package/examples/react-remote/src/Button.tsx +15 -0
- package/examples/react-remote/src/main.tsx +6 -0
- package/examples/react-remote/src/pages/Detail.tsx +10 -0
- package/examples/react-remote/src/pages/Home.tsx +14 -0
- package/examples/react-remote/src/utils.ts +3 -0
- package/examples/react-remote/tsconfig.json +14 -0
- package/examples/react-remote/vite.config.ts +8 -0
- package/package.json +30 -3
package/dist/index.cjs
CHANGED
|
@@ -43,7 +43,7 @@ var import_node_fs = __toESM(require("fs"), 1);
|
|
|
43
43
|
var import_node_path = __toESM(require("path"), 1);
|
|
44
44
|
|
|
45
45
|
// src/version.ts
|
|
46
|
-
var RUNTIME_VERSION = "5.0
|
|
46
|
+
var RUNTIME_VERSION = "5.1.0";
|
|
47
47
|
|
|
48
48
|
// src/dev-cors.ts
|
|
49
49
|
function normalizeDevCorsOrigins(input) {
|
|
@@ -903,12 +903,19 @@ export async function get(moduleName) {
|
|
|
903
903
|
}
|
|
904
904
|
`;
|
|
905
905
|
}
|
|
906
|
+
function exposeLoaderCode(devUrl) {
|
|
907
|
+
return [
|
|
908
|
+
`(() => { let __fg_n = 0; const __fg_u = ${JSON.stringify(devUrl)}; return () => __fg_n === 0`,
|
|
909
|
+
` ? import(${JSON.stringify(devUrl)}).catch((e) => { __fg_n = 1; throw e })`,
|
|
910
|
+
` : import(/* @vite-ignore */ __fg_u + '?fulgurjs_retry=' + (__fg_n++)); })()`
|
|
911
|
+
].join("\n");
|
|
912
|
+
}
|
|
906
913
|
function genDevProvides(options) {
|
|
907
914
|
const exposes = [];
|
|
908
915
|
for (const e of options.exposes) {
|
|
909
916
|
const devUrl = `/${e.import.replace(/^\.?\//, "")}`;
|
|
910
917
|
exposes.push(
|
|
911
|
-
` ${JSON.stringify(e.name)}:
|
|
918
|
+
` ${JSON.stringify(e.name)}: ${exposeLoaderCode(devUrl)},`
|
|
912
919
|
);
|
|
913
920
|
}
|
|
914
921
|
const provides = providesRecords(options).map(
|
|
@@ -968,8 +975,8 @@ function genBuildRemoteEntry(options, exposeAbsPaths) {
|
|
|
968
975
|
""
|
|
969
976
|
].join("\n");
|
|
970
977
|
}
|
|
971
|
-
function genApiFacade() {
|
|
972
|
-
|
|
978
|
+
function genApiFacade(framework = "vue") {
|
|
979
|
+
const head = [
|
|
973
980
|
"export {",
|
|
974
981
|
" loadRemote, loadShare, preloadRemote, getContainer,",
|
|
975
982
|
" registerRemote, registerRemotes, registerShare, initSharing, registerPlugins,",
|
|
@@ -977,12 +984,21 @@ function genApiFacade() {
|
|
|
977
984
|
'} from "virtual:fulgurjs-runtime-proxy";',
|
|
978
985
|
"export { provideAppContext, getAppContext, requireAppContext, clearAppContext } from '@fulgurjs/federation/internal/context.js';",
|
|
979
986
|
"export { definePages, validatePages } from '@fulgurjs/federation/internal/pages.js';",
|
|
987
|
+
"import { loadRemote as __fulgurjs_loadRemote } from 'virtual:fulgurjs-runtime-proxy';"
|
|
988
|
+
];
|
|
989
|
+
const vueBody = [
|
|
980
990
|
"import { createRemoteComponent, createHostPages as __fulgurjs_chp } from '@fulgurjs/federation/internal/vue-adapter.js';",
|
|
981
|
-
"import { loadRemote as __fulgurjs_loadRemote } from 'virtual:fulgurjs-runtime-proxy';",
|
|
982
991
|
"export const remoteComponent = createRemoteComponent(__fulgurjs_loadRemote);",
|
|
983
|
-
"export const createHostPages = (options) => __fulgurjs_chp(options, __fulgurjs_loadRemote);"
|
|
984
|
-
|
|
985
|
-
|
|
992
|
+
"export const createHostPages = (options) => __fulgurjs_chp(options, __fulgurjs_loadRemote);"
|
|
993
|
+
];
|
|
994
|
+
const reactBody = [
|
|
995
|
+
"import { createRemoteComponent, createUseLoadRemote, RemoteErrorBoundary, createReactHostPages as __fulgurjs_rhp } from '@fulgurjs/federation/internal/react-adapter.js';",
|
|
996
|
+
"export const remoteComponent = createRemoteComponent(__fulgurjs_loadRemote);",
|
|
997
|
+
"export const useLoadRemote = createUseLoadRemote(__fulgurjs_loadRemote);",
|
|
998
|
+
"export { RemoteErrorBoundary };",
|
|
999
|
+
"export const createReactHostPages = (options) => __fulgurjs_rhp(options, __fulgurjs_loadRemote);"
|
|
1000
|
+
];
|
|
1001
|
+
return [...head, ...framework === "react" ? reactBody : vueBody, ""].join("\n");
|
|
986
1002
|
}
|
|
987
1003
|
function genDevManifest(options, base) {
|
|
988
1004
|
const b = base.endsWith("/") ? base : `${base}/`;
|
|
@@ -1069,17 +1085,22 @@ function splitNamedImportBindings(inner) {
|
|
|
1069
1085
|
parts.push(inner.slice(start).trim());
|
|
1070
1086
|
return parts.filter(Boolean);
|
|
1071
1087
|
}
|
|
1088
|
+
var ENTRY_FACADES = {
|
|
1089
|
+
"@fulgurjs/federation/runtime": "virtual:fulgurjs-api-facade",
|
|
1090
|
+
"@fulgurjs/federation/react": "virtual:fulgurjs-api-facade-react"
|
|
1091
|
+
};
|
|
1072
1092
|
async function rewriteRuntimeEntryImports(code, exposeTarget) {
|
|
1073
|
-
if (!code.includes("@fulgurjs/federation/runtime")) return null;
|
|
1093
|
+
if (!code.includes("@fulgurjs/federation/runtime") && !code.includes("@fulgurjs/federation/react")) return null;
|
|
1074
1094
|
await ensureLexer();
|
|
1075
1095
|
const [imports] = (0, import_es_module_lexer.parse)(code);
|
|
1076
1096
|
const out = new import_magic_string.default(code);
|
|
1077
1097
|
let changed = false;
|
|
1078
1098
|
for (const imp of imports) {
|
|
1079
|
-
|
|
1099
|
+
const facade = ENTRY_FACADES[imp.n ?? ""];
|
|
1100
|
+
if (!facade || imp.d !== -1) continue;
|
|
1080
1101
|
const statement = code.slice(imp.ss, imp.se);
|
|
1081
1102
|
if (/^\s*import\s+type\b/.test(statement)) continue;
|
|
1082
|
-
const destination = exposeTarget ?
|
|
1103
|
+
const destination = exposeTarget ? facade : imp.n;
|
|
1083
1104
|
const braces = statement.match(/\{([\s\S]*?)\}/);
|
|
1084
1105
|
if (braces && /^\s*import\b/.test(statement)) {
|
|
1085
1106
|
const parts = splitNamedImportBindings(braces[1]);
|
|
@@ -1399,10 +1420,10 @@ export { ${nsAs[1]} };`);
|
|
|
1399
1420
|
// src/dts.ts
|
|
1400
1421
|
var import_node_fs2 = __toESM(require("fs"), 1);
|
|
1401
1422
|
var import_node_path3 = __toESM(require("path"), 1);
|
|
1402
|
-
async function fetchManifest(devEntry, attempts = 30, delayMs = 2e3) {
|
|
1423
|
+
async function fetchManifest(devEntry, origin, attempts = 30, delayMs = 2e3) {
|
|
1403
1424
|
let manifestUrl;
|
|
1404
1425
|
try {
|
|
1405
|
-
const u = new URL(devEntry);
|
|
1426
|
+
const u = new URL(devEntry, origin);
|
|
1406
1427
|
u.pathname = u.pathname.replace("@fulgurjs-entry.js", "@fulgurjs-manifest.json");
|
|
1407
1428
|
manifestUrl = u;
|
|
1408
1429
|
} catch {
|
|
@@ -1511,16 +1532,43 @@ function writeAnyModules(outDir, remoteKey, manifest) {
|
|
|
1511
1532
|
}
|
|
1512
1533
|
import_node_fs2.default.writeFileSync(file, ["// \u81EA\u52A8\u751F\u6210\uFF1A\u8FDC\u7A0B\u6E90\u7801\u4E0D\u53EF\u8BBF\u95EE\uFF0C\u6A21\u5757\u5BFC\u51FA\u964D\u7EA7\u4E3A any\u3002", ...modules, ""].join("\n"));
|
|
1513
1534
|
}
|
|
1514
|
-
|
|
1535
|
+
function hostPathsCovers(root, remoteKey) {
|
|
1536
|
+
let files = [];
|
|
1537
|
+
try {
|
|
1538
|
+
files = import_node_fs2.default.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f));
|
|
1539
|
+
} catch {
|
|
1540
|
+
return false;
|
|
1541
|
+
}
|
|
1542
|
+
for (const f of files) {
|
|
1543
|
+
let text;
|
|
1544
|
+
try {
|
|
1545
|
+
text = import_node_fs2.default.readFileSync(import_node_path3.default.join(root, f), "utf8");
|
|
1546
|
+
} catch {
|
|
1547
|
+
continue;
|
|
1548
|
+
}
|
|
1549
|
+
const exact = new RegExp(`"${remoteKey}"\\s*:`);
|
|
1550
|
+
const wildcard = new RegExp(`"${remoteKey}/\\*"\\s*:`);
|
|
1551
|
+
if (exact.test(text) || wildcard.test(text)) return true;
|
|
1552
|
+
try {
|
|
1553
|
+
const cfg = JSON.parse(text.replace(/\/\*[\s\S]*?\*\//g, "").replace(/,\s*([}\]])/g, "$1"));
|
|
1554
|
+
const paths = cfg.compilerOptions?.paths;
|
|
1555
|
+
if (paths && (remoteKey in paths || `${remoteKey}/*` in paths)) return true;
|
|
1556
|
+
} catch {
|
|
1557
|
+
}
|
|
1558
|
+
}
|
|
1559
|
+
return false;
|
|
1560
|
+
}
|
|
1561
|
+
async function generateDevTypes(options, server) {
|
|
1515
1562
|
const dtsOpt = options.dts === void 0 ? true : options.dts;
|
|
1516
1563
|
if (dtsOpt === false) return;
|
|
1517
1564
|
const mode = resolveDtsMode(dtsOpt);
|
|
1518
1565
|
const dir = resolveDtsDir(dtsOpt, import_node_fs2.default.existsSync(import_node_path3.default.join(options.root, "src")));
|
|
1519
1566
|
const outDir = import_node_path3.default.join(options.root, dir);
|
|
1520
1567
|
import_node_fs2.default.mkdirSync(outDir, { recursive: true });
|
|
1568
|
+
const origin = server.config?.server?.origin ?? server.resolvedUrls?.local[0] ?? `${server.config?.server?.https ? "https" : "http"}://localhost:${server.config?.server?.port ?? 5173}`;
|
|
1521
1569
|
for (const remote of options.remotes) {
|
|
1522
1570
|
if (!remote.devEntry || remote.promise) continue;
|
|
1523
|
-
const manifest = await fetchManifest(remote.devEntry);
|
|
1571
|
+
const manifest = await fetchManifest(remote.devEntry, origin);
|
|
1524
1572
|
if (!manifest || !manifest.exposes) {
|
|
1525
1573
|
console.warn(`[fulgurjs] \u7C7B\u578B\u751F\u6210\uFF1A\u8FDC\u7A0B\u5E94\u7528 "${remote.key}" \u7684\u5F00\u53D1 manifest \u4E0D\u53EF\u7528\uFF0C\u5DF2\u8DF3\u8FC7\u7C7B\u578B\u6620\u5C04\u3002\u8BF7\u68C0\u67E5\u8FDC\u7A0B\u5F00\u53D1\u670D\u52A1\u548C manifest \u5730\u5740\u3002`);
|
|
1526
1574
|
continue;
|
|
@@ -1547,6 +1595,10 @@ async function generateDevTypes(options, _server) {
|
|
|
1547
1595
|
`// \u81EA\u52A8\u751F\u6210\uFF1Afulgurjs-federation dev \u7C7B\u578B\u76F4\u8FDE\uFF08remote: ${remote.name}\uFF0Cmode: ${mode}\uFF09`,
|
|
1548
1596
|
`// \u91CD\u65B0\u751F\u6210\uFF1A\u91CD\u542F host dev server`
|
|
1549
1597
|
];
|
|
1598
|
+
const preciseDir = import_node_path3.default.join(outDir, `${remote.key}.d`);
|
|
1599
|
+
import_node_fs2.default.rmSync(preciseDir, { recursive: true, force: true });
|
|
1600
|
+
import_node_fs2.default.mkdirSync(preciseDir, { recursive: true });
|
|
1601
|
+
const preciseFiles = [];
|
|
1550
1602
|
let accepted = 0;
|
|
1551
1603
|
for (const expose of manifest.exposes ?? []) {
|
|
1552
1604
|
if (manifest.setup && expose.name === manifest.setup) continue;
|
|
@@ -1579,6 +1631,9 @@ async function generateDevTypes(options, _server) {
|
|
|
1579
1631
|
if (!import_node_fs2.default.existsSync(realAbs)) continue;
|
|
1580
1632
|
const rel = import_node_path3.default.relative(outDir, realAbs).split(import_node_path3.default.sep).join("/");
|
|
1581
1633
|
const importPath = realAbs.endsWith(".vue") ? sourceImportPath(rel) : stripTsExtension(sourceImportPath(rel));
|
|
1634
|
+
const preciseFileDir = import_node_path3.default.join(outDir, `${remote.key}.d`, import_node_path3.default.dirname(expose.name.replace(/^\.\//, "").split("/").map((seg) => seg.replace(/[^A-Za-z0-9_-]/g, "_")).join("/")));
|
|
1635
|
+
const relPrecise = import_node_path3.default.relative(preciseFileDir, realAbs).split(import_node_path3.default.sep).join("/");
|
|
1636
|
+
const importPathPrecise = realAbs.endsWith(".vue") ? sourceImportPath(relPrecise) : stripTsExtension(sourceImportPath(relPrecise));
|
|
1582
1637
|
const moduleSpecifier = `${remote.key}/${expose.name.replace(/^\.\//, "")}`;
|
|
1583
1638
|
const moduleLiteral = JSON.stringify(moduleSpecifier);
|
|
1584
1639
|
const importLiteral = JSON.stringify(importPath);
|
|
@@ -1593,24 +1648,65 @@ async function generateDevTypes(options, _server) {
|
|
|
1593
1648
|
lines.push(` import type { DefineComponent } from 'vue'`);
|
|
1594
1649
|
lines.push(` const component: DefineComponent<Record<string, unknown>, Record<string, unknown>, unknown>`);
|
|
1595
1650
|
lines.push(` export default component`);
|
|
1596
|
-
lines.push(` export * from ${importLiteral}`);
|
|
1597
1651
|
lines.push(`}`);
|
|
1652
|
+
const subPath = expose.name.replace(/^\.\//, "").split("/").map((seg) => seg.replace(/[^A-Za-z0-9_-]/g, "_")).join("/");
|
|
1653
|
+
const preciseFile = import_node_path3.default.join(preciseDir, `${subPath}.ts`);
|
|
1654
|
+
import_node_fs2.default.mkdirSync(import_node_path3.default.dirname(preciseFile), { recursive: true });
|
|
1655
|
+
preciseFiles.push(`${subPath}.ts`);
|
|
1656
|
+
import_node_fs2.default.writeFileSync(
|
|
1657
|
+
preciseFile,
|
|
1658
|
+
[
|
|
1659
|
+
`// \u81EA\u52A8\u751F\u6210\uFF08\u7CBE\u786E\u8F68\uFF09\uFF1A.vue expose \u4E3A\u5BBD\u677E\u5F62\u6001\uFF08\u7CBE\u786E\u7C7B\u578B\u9700\u5BBF\u4E3B vue-tsc/shim\uFF09`,
|
|
1660
|
+
`import type { DefineComponent } from 'vue'`,
|
|
1661
|
+
`declare const component: DefineComponent<Record<string, unknown>, Record<string, unknown>, unknown>`,
|
|
1662
|
+
`export default component`,
|
|
1663
|
+
``
|
|
1664
|
+
].join("\n")
|
|
1665
|
+
);
|
|
1598
1666
|
} else {
|
|
1667
|
+
const srcText = import_node_fs2.default.readFileSync(realAbs, "utf8");
|
|
1668
|
+
const names = extractTsExportNames(srcText);
|
|
1669
|
+
const hasDefault = sourceHasDefaultExport(realAbs);
|
|
1599
1670
|
lines.push(`declare module ${moduleLiteral} {`);
|
|
1600
|
-
const
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
} else {
|
|
1604
|
-
lines.push(` export * from ${importLiteral}`);
|
|
1605
|
-
}
|
|
1606
|
-
if (sourceHasDefaultExport(realAbs)) lines.push(` export { default } from ${importLiteral}`);
|
|
1671
|
+
if (hasDefault) lines.push(` const __fg_default: any`, ` export default __fg_default`);
|
|
1672
|
+
for (const n of names) lines.push(` export const ${n}: any`, ` export type ${n} = any`);
|
|
1673
|
+
if (!hasDefault && names.length === 0) lines.push(` // \u7EAF\u526F\u4F5C\u7528\u6A21\u5757\uFF08\u65E0\u53EF\u679A\u4E3E\u5BFC\u51FA\uFF09`);
|
|
1607
1674
|
lines.push(`}`);
|
|
1675
|
+
const subPath = expose.name.replace(/^\.\//, "").split("/").map((seg) => seg.replace(/[^A-Za-z0-9_-]/g, "_")).join("/");
|
|
1676
|
+
const preciseFile = import_node_path3.default.join(preciseDir, `${subPath}.ts`);
|
|
1677
|
+
import_node_fs2.default.mkdirSync(import_node_path3.default.dirname(preciseFile), { recursive: true });
|
|
1678
|
+
const fwd = [`// \u81EA\u52A8\u751F\u6210\uFF08\u7CBE\u786E\u8F68\uFF09\uFF1A\u7ECF tsconfig paths \u89E3\u6790\u5230\u672C\u6587\u4EF6\u540E\u83B7\u5F97\u6E90\u7801\u7EA7\u7C7B\u578B`];
|
|
1679
|
+
const preciseImportLiteral = JSON.stringify(importPathPrecise);
|
|
1680
|
+
if (names.length > 0 || hasDefault) fwd.push(`export * from ${preciseImportLiteral}`);
|
|
1681
|
+
if (hasDefault) fwd.push(`export { default } from ${preciseImportLiteral}`);
|
|
1682
|
+
if (fwd.length === 1) fwd.push(`import ${preciseImportLiteral}`);
|
|
1683
|
+
fwd.push("");
|
|
1684
|
+
preciseFiles.push(`${subPath}.ts`);
|
|
1685
|
+
import_node_fs2.default.writeFileSync(preciseFile, fwd.join("\n"));
|
|
1608
1686
|
}
|
|
1609
1687
|
accepted++;
|
|
1610
1688
|
}
|
|
1611
1689
|
if (accepted > 0) {
|
|
1612
|
-
|
|
1690
|
+
const pathsEnabled = hostPathsCovers(options.root, remote.key);
|
|
1691
|
+
if (pathsEnabled) {
|
|
1692
|
+
if (import_node_fs2.default.existsSync(import_node_path3.default.join(outDir, `${remote.key}.d.ts`))) import_node_fs2.default.unlinkSync(import_node_path3.default.join(outDir, `${remote.key}.d.ts`));
|
|
1693
|
+
console.log(
|
|
1694
|
+
`[fulgurjs] \u7C7B\u578B\u751F\u6210\uFF1A\u68C0\u6D4B\u5230\u5BBF\u4E3B tsconfig \u5DF2\u914D\u7F6E "${remote.key}/*" \u7684 paths\u2014\u2014\u7CBE\u786E\u8F68\u751F\u6548\uFF0C\u8DF3\u8FC7\u540C\u540D ambient \u58F0\u660E\uFF08\u907F\u514D shadow \u8F6C\u53D1\u6A21\u5757\uFF09\u3002`
|
|
1695
|
+
);
|
|
1696
|
+
} else {
|
|
1697
|
+
import_node_fs2.default.writeFileSync(import_node_path3.default.join(outDir, `${remote.key}.d.ts`), `${lines.join("\n")}
|
|
1613
1698
|
`);
|
|
1699
|
+
}
|
|
1700
|
+
import_node_fs2.default.writeFileSync(
|
|
1701
|
+
import_node_path3.default.join(preciseDir, "_paths.d.ts"),
|
|
1702
|
+
[
|
|
1703
|
+
`// \u7CBE\u786E\u8F68\u542F\u7528\u65B9\u6CD5\uFF08\u628A\u4E0B\u9762\u7247\u6BB5\u5408\u5165\u5BBF\u4E3B tsconfig \u7684 compilerOptions\uFF1BbaseUrl \u6307\u5411\u672C tsconfig \u6240\u5728\u76EE\u5F55\uFF09\uFF1A`,
|
|
1704
|
+
`// "paths": { "${remote.key}/*": ["${dir}/${remote.key}.d/*"] }`,
|
|
1705
|
+
`// \u8BF4\u660E\uFF1A\u96F6\u914D\u7F6E\u8F68\uFF08${remote.key}.d.ts \u7684 ambient \u58F0\u660E\uFF09\u53EF\u89E3\u6790\u4F46\u5BFC\u51FA\u4E3A\u5BBD\u677E\u7C7B\u578B\uFF1B`,
|
|
1706
|
+
`// \u914D\u7F6E paths \u540E\u540C\u5F62\u6001\u5BFC\u5165\u89E3\u6790\u5230\u672C\u76EE\u5F55\u7684\u8F6C\u53D1\u6A21\u5757\uFF0C\u83B7\u5F97\u8FDC\u7A0B\u6E90\u7801\u7EA7\u7C7B\u578B\u7CBE\u5EA6\u3002`,
|
|
1707
|
+
``
|
|
1708
|
+
].join("\n")
|
|
1709
|
+
);
|
|
1614
1710
|
}
|
|
1615
1711
|
console.log(
|
|
1616
1712
|
`[fulgurjs] \u7C7B\u578B\u751F\u6210\uFF1A\u5DF2\u751F\u6210 ${dir}/${remote.key}.d.ts\uFF08\u5DF2\u6536\u5F55 ${accepted}/${manifest.exposes?.length ?? 0} \u4E2A\u66B4\u9732\u6A21\u5757\uFF0C\u6A21\u5F0F ${mode}\uFF09\u3002\u8BF7\u786E\u4FDD tsconfig \u7684 include \u5305\u542B "${dir}"\uFF0C\u4EE5\u83B7\u5F97\u7C7B\u578B\u8865\u5168\u3002`
|
|
@@ -1798,7 +1894,7 @@ function syncViteCacheMarker(root, pluginVersion, log) {
|
|
|
1798
1894
|
}
|
|
1799
1895
|
|
|
1800
1896
|
// src/runtime-code.gen.ts
|
|
1801
|
-
var runtime_code_gen_default = 'var de=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function L(i){let c=de.exec(String(i).trim());return c?{major:Number(c[1]),minor:Number(c[2]??0),patch:Number(c[3]??0),pre:c[4]?c[4].split("."):[]}:null}function ge(i,c){if(i.length===0&&c.length===0)return 0;if(i.length===0)return 1;if(c.length===0)return-1;let l=Math.max(i.length,c.length);for(let o=0;o<l;o++){let g=i[o],y=c[o];if(g===void 0)return-1;if(y===void 0)return 1;let w=/^\\d+$/.test(g),b=/^\\d+$/.test(y);if(w&&b){let I=Number(g)-Number(y);if(I!==0)return I}else{if(w!==b)return w?-1:1;if(g!==y)return g<y?-1:1}}return 0}function O(i,c){let l=L(i),o=L(c);return!l||!o?i<c?-1:i>c?1:0:l.major!==o.major?l.major-o.major:l.minor!==o.minor?l.minor-o.minor:l.patch!==o.patch?l.patch-o.patch:ge(l.pre,o.pre)}var he=/^[a-z]+[+:-]/i;function j(i,c){if(c===!1||c==null||c==="")return!0;let l=String(c).trim();return!l||l==="*"||l==="latest"||he.test(l)?!0:l.split("||").some(o=>ye(i,o.trim()))}function ye(i,c){if(!c||c==="*")return!L(i)?.pre.length;let l=c.split(/\\s+-\\s+/);if(l.length===2){let y=l[0].trim(),w=l[1].trim();return!(!j(i,`>=${y}`)||!j(i,`<=${w}`))}let o=L(i);if(!o)return!1;let g=Se(c);if(g===null)return!0;for(let y of g)if(!Pe(o,i,y))return!1;return!(o.pre.length>0&&!g.some(y=>y.ver.pre.length>0)&&!g.some(w=>w.ver.major===o.major&&w.ver.minor===o.minor&&w.ver.patch===o.patch))}function Se(i){let c=[],l=i.trim().split(/\\s+/).filter(Boolean);if(l.length===0)return null;for(let o of l){let g=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(o);if(!g)return null;let y=g[1],w=g[2],b=Ee(y,w);if(b===null)return null;c.push(...b)}return c}function Ee(i,c){let l=we(c);if(!l)return null;let{ver:o,partial:g}=l;switch(i){case"^":{let y=Re(o);return y?[{op:">=",ver:o},{op:"<",ver:y}]:null}case"~":{let y=g>=2?{major:o.major,minor:o.minor+1,patch:0,pre:[]}:{major:o.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:o},{op:"<",ver:y}]}case">=":return[{op:">=",ver:o}];case">":return g===1?[{op:">=",ver:{major:o.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:{major:o.major,minor:o.minor+1,patch:0,pre:[]}}]:[{op:">",ver:o}];case"<":return g===1?[{op:"<",ver:{major:o.major,minor:0,patch:0,pre:[]}}]:g===2?[{op:"<",ver:{major:o.major,minor:o.minor,patch:0,pre:[]}}]:[{op:"<",ver:o}];case"<=":return[{op:"<=",ver:o}];case"=":case void 0:return g===1?[{op:">=",ver:o},{op:"<",ver:{major:o.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:o},{op:"<",ver:{major:o.major,minor:o.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:o}];default:return null}}function Re(i){return i.major>0?{major:i.major+1,minor:0,patch:0,pre:[]}:i.minor>0?{major:0,minor:i.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:i.patch+1,pre:[]}}function we(i){let c=i.replace(/^v/,"").trim();if(!c||c==="*"||c==="x"||c==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let l=c.split("."),o=[],g=0;for(let b of l.slice(0,3))if(/^\\d+$/.test(b))o.push(Number(b)),g++;else{if(b==="x"||b==="X"||b==="*")break;break}let y=c.split("-"),w=y.length>1?y.slice(1).join("-").split("+")[0].split("."):[];return g===0&&w.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:o[0]??0,minor:o[1]??0,patch:o[2]??0,pre:w},partial:g}}function be(i,c){switch(c){case">=":return i>=0;case">":return i>0;case"<":return i<0;case"<=":return i<=0;case"=":return i===0}}function Pe(i,c,l){let o=`${i.major}.${i.minor}.${i.patch}`+(i.pre.length?`-${i.pre.join(".")}`:"");if(l.upper)return!(!(O(o,`${l.ver.major}.${l.ver.minor}.${l.ver.patch}`+(l.ver.pre.length?`-${l.ver.pre.join(".")}`:""))>=0)||!(O(o,`${l.upper.major}.${l.upper.minor}.${l.upper.patch}`)<0));let g=O(o,`${l.ver.major}.${l.ver.minor}.${l.ver.patch}`+(l.ver.pre.length?`-${l.ver.pre.join(".")}`:"")),y=be(g,l.op);return l.ver.pre.length>0&&i.pre.length===0&&(l.op===">"||l.op==="<")?!1:y}var S=class extends Error{code;details;constructor(c,l,o){super(`[fulgurjs:${c}] ${l}`),this.name="FgError",this.code=c,this.details=o}},E={REMOTE_LOAD_FAILED:"MFU-001",REMOTE_NAME_MISMATCH:"MFU-002",SHARE_STRICT_VERSION:"MFU-003",SHARE_NOT_AVAILABLE:"MFU-004",CONTAINER_REINIT_CONFLICT:"MFU-005",MODULE_NOT_EXPOSED:"MFU-006",PRELOAD_FAILED:"MFU-007",REMOTE_UNKNOWN:"MFU-008",EMPTY_EXPORTS:"MFU-009",SINGLETON_SKEW:"MFU-010",SETUP_INVALID_EXPORT:"MFU-011",SETUP_RUN_FAILED:"MFU-012",SETUP_SESSION_KEY_MISSING:"MFU-013",SETUP_RECURSION:"MFU-014"};var W="5.0.3";var _e="__fulgurjsSetup",$e="__FULGURJS_APP_CONFIG__",D=15e3,z=2,Me=5,ve=3e4,Ie=4e3,Te=.2;function Oe(){let i=Object.create(null),c=new Map,l=[],o=new Set,g=new Map,y=new Map,w=new WeakMap,b=new WeakMap,I={},Z=()=>{for(let e of l)try{e.init?.(I)}catch(r){console.warn("[fulgurjs] \\u8FD0\\u884C\\u65F6\\u6269\\u5C55\\u521D\\u59CB\\u5316\\u5931\\u8D25\\uFF0C\\u8BE5\\u6269\\u5C55\\u5C06\\u4E0D\\u53EF\\u7528\\uFF1A",e.name,r)}},k=new Map,A,Q=e=>{let r=k.get(e);return r||k.set(e,r={}),r},V=()=>globalThis[$e]??{};async function K(e,r,t,n){let a=u=>u instanceof S?u:new S(E.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${n} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${String(u?.message??u)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${n} \\u51FD\\u6570\\u540E\\u91CD\\u65B0\\u52A0\\u8F7D\\uFF1B\\u5931\\u8D25\\u7F13\\u5B58\\u5DF2\\u6E05\\u9664\\uFF0C\\u53EF\\u4EE5\\u76F4\\u63A5\\u91CD\\u8BD5\\u3002`,{remote:e,phase:n});A=e;let s;try{s=r(t)}catch(u){throw a(u)}finally{A=void 0}try{await s}catch(u){throw a(u)}}async function ee(e,r,t,n){e.debug.setup="pending";try{if(e.manifestUrl)try{await F(`${e.name}/${t}`)}catch{}let a=await r.get(t),s=a?.default;if(typeof s!="function")throw new S(E.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${t}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${a==null?String(a):typeof s}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728 setup \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u4E2D\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u51FD\\u6570\\uFF0C\\u4F8B\\u5982 export default async function setup(context) { ... }\\uFF1B\\u5177\\u540D onSession \\u53EF\\u9009\\u3002`,{remote:e.name,module:t});if(a.onSession!==void 0&&typeof a.onSession!="function")throw new S(E.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${t}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AonSession \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof a.onSession}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5C06 onSession \\u6539\\u4E3A\\u5177\\u540D\\u5BFC\\u51FA\\u7684\\u51FD\\u6570\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:t});n.setupExports=a,await K(e.name,s,{appContext:V(),signal:(n.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(a){throw e.debug.setup="failed",n.setupExports=void 0,a}}async function re(e,r,t){let n=V(),a=n?.sessionKey;if(typeof a!="string"||a==="")throw new S(E.SETUP_SESSION_KEY_MISSING,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u58F0\\u660E\\u4E86 onSession\\uFF0C\\u4F46\\u5BBF\\u4E3B\\u5C1A\\u672A\\u63D0\\u4F9B\\u6709\\u6548\\u7684 AppContext.sessionKey\\u3002\n\\u539F\\u56E0\\uFF1A\\u5F53\\u524D\\u503C\\u4E3A ${a===void 0?"\\u7F3A\\u5931":JSON.stringify(a)}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5BBF\\u4E3B\\u6BCF\\u6B21\\u767B\\u5F55\\u6216\\u91CD\\u767B\\u65F6\\u751F\\u6210\\u65B0\\u7684\\u975E\\u654F\\u611F\\u767B\\u5F55\\u4EE3\\u6B21 ID\\uFF0C\\u5E76\\u5728\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u9875\\u9762\\u524D\\u8C03\\u7528 provideAppContext({ ..., sessionKey: \'\\u767B\\u5F55\\u4EE3\\u6B21 ID\' })\\uFF1B\\u4E0D\\u8981\\u4F7F\\u7528 token \\u539F\\u6587\\u3002`,{remote:e.name});if(r.sessionPromise&&r.sessionKey===a)return r.sessionPromise;r.controller?.abort();let s=new AbortController;r.controller=s,r.sessionKey=a;let u=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),p=(async()=>{await u,!s.signal.aborted&&await K(e.name,t,{appContext:n,sessionKey:a,signal:s.signal},"onSession")})();return r.sessionPromise=p,p.catch(()=>{r.sessionKey===a&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),p}async function te(e,r){let t=r?.[_e];if(typeof t!="string"||t==="")return;let n=Q(e.name);n.setupPromise||(n.setupPromise=ee(e,r,t,n).catch(s=>{throw n.setupPromise=void 0,s})),await n.setupPromise;let a=n.setupExports?.onSession;typeof a=="function"&&await re(e,n,a)}function ne(){for(let e of k.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let U=e=>i[e]??=Object.create(null);function _(e){try{I.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}function oe(e="default"){return U(e),i}function se(e,r,t,n,a={}){let s=U(e||"default"),u=Object.hasOwn(s,r)?s[r]:void 0,p=u&&typeof u=="object"?u:void 0;p||(p=Object.create(null),s[r]=p),!(Object.hasOwn(p,t)&&p[t])&&(p[t]={version:t,get:n,from:a.from??"unknown",eager:!!a.eager,loaded:!!a.loaded})}function ie(e){let r=(t,n,a)=>{if(t===void 0)return;if(!(typeof t=="number"&&(a?Number.isInteger(t)&&t>=0&&t<=10:Number.isFinite(t)&&t>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${n} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(t)}\\uFF0C\\u5E94\\u4E3A${a?" 0 \\u5230 10 \\u7684\\u6574\\u6570":"\\u5927\\u4E8E 0 \\u7684\\u6709\\u9650\\u6570\\u5B57"}\\u3002\\u8BF7\\u4FEE\\u6B63 registerRemote \\u914D\\u7F6E\\u3002`)};r(e.timeout,"timeout"),r(e.retries,"retries",!0),e.breaker&&(r(e.breaker.threshold,"breaker.threshold"),r(e.breaker.resetMs,"breaker.resetMs"))}function H(e){for(let r of e){ie(r);let t=c.get(r.name);c.set(r.name,{timeout:D,retries:z,...t,...r,breakerThreshold:r.breaker?.threshold??t?.breakerThreshold??Me,breakerResetMs:r.breaker?.resetMs??t?.breakerResetMs??ve,state:t?.state??"idle",breakerState:t?.breakerState??{fails:0,openUntil:0},entryInflight:t?.entryInflight??new Map,debug:t?.debug??{entry:r.entry,status:"idle",setup:"none"}})}}function ae(e){H([e])}function ce(e){l.push(...e),Z()}async function le(e,r={}){let t=r.shareScope||"default",n=r.shareKey||e,s=U(t)[n]||{},u=Object.keys(s),p=r.requiredVersion,h=u.filter(f=>p===void 0||p===!1||j(f,p)),d;if(r.singleton&&u.length>0){let f=u.filter(m=>s[m].loaded);if(d=[...f.length?f:u].sort(O).pop(),!h.includes(d)){let m=s[d],v=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${n}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u5E94\\u7528\\u8981\\u6C42 ${p??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${u.join("\\u3001")}\\uFF1B\\u4E3A\\u4FDD\\u8BC1\\u5168\\u9875\\u53EA\\u4F7F\\u7528\\u4E00\\u4E2A\\u5B9E\\u4F8B\\uFF0C\\u6700\\u7EC8\\u590D\\u7528 ${m.from} \\u63D0\\u4F9B\\u7684 ${d}\\u3002\n\\u5F71\\u54CD\\uFF1A\\u53EF\\u80FD\\u51FA\\u73B0\\u72B6\\u6001\\u4E0D\\u4E00\\u81F4\\u6216\\u8FD0\\u884C\\u9519\\u8BEF\\uFF0C\\u5177\\u4F53\\u53D6\\u51B3\\u4E8E\\u4E24\\u7AEF API \\u662F\\u5426\\u517C\\u5BB9\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u6838\\u5BF9\\u540E\\u8C03\\u6574 shared.requiredVersion\\uFF1B\\u82E5\\u5FC5\\u987B\\u62D2\\u7EDD\\u4E0D\\u517C\\u5BB9\\u7248\\u672C\\uFF0C\\u8BF7\\u542F\\u7528 strictVersion\\u3002`;if(r.strictVersion){let T=new S(E.SHARE_STRICT_VERSION,v,{shareKey:n,requiredVersion:p});throw _({remote:m.from,error:T}),T}let $=`${t}|${n}|${p??"*"}|${d}|${u.join(",")}`;o.has($)||(o.add($),console.warn(`[fulgurjs:MFU-010] ${v}`))}}else if(d=[...h].sort(O).pop(),!d){if(r.strictVersion){let m=new S(E.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${t}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${n}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${p}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${u.join("\\u3001")||"\\u65E0"}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u4FEE\\u6B63 shared.requiredVersion\\u3002`);throw _({remote:n,error:m}),m}if(r.fallback)return r.fallback();let f=new S(E.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${n}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u4F5C\\u7528\\u57DF "${t}" \\u4E2D\\u6CA1\\u6709\\u7B26\\u5408 ${p??"\\u4EFB\\u610F\\u7248\\u672C"} \\u8981\\u6C42\\u7684\\u7248\\u672C\\uFF0C\\u4E14\\u672A\\u914D\\u7F6E\\u672C\\u5730\\u526F\\u672C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728\\u5BBF\\u4E3B\\u6216\\u8FDC\\u7A0B\\u6CE8\\u518C\\u8BE5\\u4F9D\\u8D56\\uFF0C\\u6216\\u4E3A shared \\u914D\\u7F6E\\u53EF\\u7528\\u7684\\u672C\\u5730\\u526F\\u672C\\u3002`,{shareKey:n,requiredVersion:p});throw _({remote:n,error:f}),f}let R=s[d];if(I.resolveShare){let f=await I.resolveShare({shareKey:n,shareScope:t,requiredVersion:p,picked:R,available:Object.values(s)});f&&(R=f)}return R.loaded=!0,R.get()}function q(e){try{let r=new URL(e,typeof location<"u"?location.href:"http://f.invalid");return r.protocol+"//"+r.host+r.pathname}catch{return String(e).replace(/[?#].*$/,"")}}function G(e,r,t){return new Promise((n,a)=>{let s=setTimeout(()=>a(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${t}`)),r);e.then(u=>{clearTimeout(s),n(u)},u=>{clearTimeout(s),a(u)})})}let ue=e=>new Promise(r=>setTimeout(r,e));function N(e,r){if(!e||typeof e.get!="function")throw new Error(`\\u8FDC\\u7A0B\\u5E94\\u7528 "${r.name}" \\u7684 remoteEntry \\u672A\\u5BFC\\u51FA\\u5BB9\\u5668\\u63A5\\u53E3\\u3002\\u8BF7\\u786E\\u8BA4\\u5165\\u53E3\\u5BFC\\u51FA\\u4E86 get()\\uFF0C\\u5E76\\u68C0\\u67E5\\u8BE5\\u5730\\u5740\\u662F\\u5426\\u8FD4\\u56DE\\u6B63\\u786E\\u7684\\u8054\\u90A6\\u5165\\u53E3 JS\\u3002`);if(e.name&&r.name&&e.name!==r.name){let t=`\\u8FDC\\u7A0B\\u5165\\u53E3\\u81EA\\u62A5\\u540D\\u79F0 "${e.name}" \\u4E0E\\u5BBF\\u4E3B\\u914D\\u7F6E\\u540D\\u79F0 "${r.name}" \\u4E0D\\u4E00\\u81F4\\u3002\\u8BF7\\u7EDF\\u4E00\\u4E24\\u4FA7 federation({ name }) \\u4E0E remotes \\u7684\\u540D\\u79F0\\u3002`;if(r.promise)console.warn(`[fulgurjs] ${t} \\u5F53\\u524D\\u662F\\u52A8\\u6001 Promise \\u8FDC\\u7A0B\\uFF0C\\u7EE7\\u7EED\\u52A0\\u8F7D\\u3002`);else throw Object.assign(new Error(t),{code:E.REMOTE_NAME_MISMATCH})}}async function J(e,r){let t=r.entryInflight.get(e),n=t??import(e);return t||(r.entryInflight.set(e,n),n.catch(()=>r.entryInflight.delete(e))),G(n,r.timeout??D,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${q(e)}`)}async function X(e,r){let t=e.shareScope||"default";if(e.container){let s=b.get(e.container);if(s&&s!==t)throw new S(E.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${s}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${t}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return e.container}if(e.containerPromise)return e.containerPromise;let n=e.breakerState;if(n.openUntil>Date.now()){let s=new S(E.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u8FDE\\u7EED\\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u7194\\u65AD\\u5668\\u5DF2\\u5F00\\u542F\\uFF1B\\u5C06\\u5728 ${new Date(n.openUntil).toISOString()} \\u540E\\u5141\\u8BB8\\u91CD\\u8BD5\\u3002\\u8BF7\\u5148\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u670D\\u52A1\\u548C\\u7F51\\u7EDC\\u3002`,{remote:e.name});throw _({remote:e.name,error:s}),s}e.state="loading",e.debug.status="loading";let a=(async()=>{let s=[];if(e.promise)s.push(async()=>{let f=await G(e.promise(),e.timeout??D,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),m=typeof f=="string"?await J(f,e):f;return N(m,e),m});else for(let f of[e.entry,...e.fallback??[]])s.push(async()=>{let m=await J(f,e);return N(m,e),m});let u,p,h=!1,d=r?.retries??e.retries??z;for(let f of s){for(let m=0;m<=d;m++){let v=performance.now();try{u=await f(),e.lastLoadMs=Math.round(performance.now()-v),e.debug.lastLoadMs=e.lastLoadMs,h=!0;break}catch($){if(p=$,$?.code)throw $;m<d&&await ue(Math.min(Ie,200*2**m)*(1-Te*(1-2*Math.random())))}}if(h)break}if(!h||!u){let f=q(e.entry),m=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(m.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${f}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),m.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),m.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(m.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${f}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),m.push("2. \\u68C0\\u67E5 Nginx/CDN \\u7684\\u5165\\u53E3\\u8DEF\\u5F84\\u6620\\u5C04\\uFF1B\\u8BE5\\u5730\\u5740\\u4E0D\\u80FD\\u56DE\\u9000\\u5230 index.html\\u3002")),new S(E.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${f} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${String(p?.message??p)}\n\\u4FEE\\u6CD5\\uFF1A\n${m.join(`\n`)}`,{remote:e.name})}N(u,e);let R=b.get(u);if(R&&R!==t)throw new S(E.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${R}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${t}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof u.init=="function"&&await u.init(i),b.set(u,t),e.container=u,e.state="loaded",e.debug.status="loaded",n.fails=0,u})();e.containerPromise=a;try{return await a}catch(s){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=String(s?.message??s),n.fails+=1,n.fails>=e.breakerThreshold&&(n.openUntil=Date.now()+e.breakerResetMs,n.fails=0),s instanceof S)throw _({remote:e.name,error:s}),s;if(s?.code)throw _({remote:e.name,error:s}),s;let u=new S(E.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(s?.message??s)}\\u3002\\u8BF7\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u3001\\u7F51\\u7EDC\\u53CA\\u5171\\u4EAB\\u4F9D\\u8D56\\u3002`,{remote:e.name});throw _({remote:e.name,error:u}),u}}function C(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:B(e.slice(r+1))}}function B(e){return e?e.startsWith(".")?e:`./${e}`:""}async function fe(e,r){let{remote:t,module:n}=C(e);if(n&&A===t)throw new S(E.SETUP_RECURSION,`\\u73B0\\u8C61\\uFF1A\\u52A0\\u8F7D "${e}" \\u65F6\\uFF0C\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684 setup/onSession \\u53C8\\u540C\\u6B65\\u52A0\\u8F7D\\u4E86\\u81EA\\u8EAB\\u6A21\\u5757\\uFF0C\\u5F62\\u6210\\u5FAA\\u73AF\\u7B49\\u5F85\\u3002\n\\u539F\\u56E0\\uFF1A\\u521D\\u59CB\\u5316\\u5C1A\\u672A\\u5B8C\\u6210\\uFF0C\\u4E0D\\u80FD\\u7B49\\u5F85\\u81EA\\u8EAB\\u7684\\u521D\\u59CB\\u5316\\u7ED3\\u679C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u4E0D\\u8981\\u5728 setup/onSession \\u4E2D\\u52A0\\u8F7D\\u540C\\u4E00\\u8FDC\\u7A0B\\u7684\\u6A21\\u5757\\uFF1B\\u8BF7\\u5728\\u9875\\u9762\\u7EC4\\u4EF6\\u4E2D\\u52A0\\u8F7D\\uFF0C\\u6216\\u901A\\u8FC7 context \\u89E3\\u8026\\u3002`,{remote:t});try{I.beforeLoadRemote?.({remote:t,module:n})}catch(h){console.warn("[fulgurjs] beforeLoadRemote \\u89C2\\u6D4B\\u94A9\\u5B50\\u6267\\u884C\\u5931\\u8D25\\uFF1B\\u6A21\\u5757\\u52A0\\u8F7D\\u5C06\\u7EE7\\u7EED\\u3002\\u8BF7\\u68C0\\u67E5\\u8BE5\\u94A9\\u5B50\\uFF1A",h)}let a=c.get(t);if(!a)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}"\\u3002\\u8BF7\\u5728 federation({ remotes }) \\u4E2D\\u914D\\u7F6E\\uFF0C\\u6216\\u5728\\u52A0\\u8F7D\\u524D\\u8C03\\u7528 registerRemote()\\u3002`,{remote:t});let s;try{let h=n&&a.manifestUrl?F(e):Promise.resolve();[s]=await Promise.all([X(a,{retries:r?.retries}),h])}catch(h){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u6B63\\u5728\\u4F7F\\u7528\\u663E\\u5F0F\\u914D\\u7F6E\\u7684 fallbackModule\\uFF1B\\u539F\\u59CB\\u9519\\u8BEF\\uFF1A`,h),_({remote:t,error:h}),await r.fallbackModule();throw h}if(!n)return s;await te(a,s);let u=`${t}@${a.shareScope||"default"}#${n}`;g.has(u)||g.set(u,s.get(n).catch(h=>{throw g.delete(u),h instanceof S||h?.code?h:new S(E.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u52A0\\u8F7D\\u6A21\\u5757 "${n}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(h?.message??h)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:t,module:n})}));let p;try{p=await g.get(u)}catch(h){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u6B63\\u5728\\u4F7F\\u7528\\u663E\\u5F0F\\u914D\\u7F6E\\u7684 fallbackModule\\uFF1B\\u539F\\u59CB\\u9519\\u8BEF\\uFF1A`,h),_({remote:t,error:h}),await r.fallbackModule();throw h}try{I.afterLoadRemote?.({remote:t,module:n,module_ns:p})}catch(h){console.warn("[fulgurjs] afterLoadRemote \\u89C2\\u6D4B\\u94A9\\u5B50\\u6267\\u884C\\u5931\\u8D25\\uFF1B\\u5DF2\\u52A0\\u8F7D\\u6A21\\u5757\\u4ECD\\u53EF\\u4F7F\\u7528\\u3002\\u8BF7\\u68C0\\u67E5\\u8BE5\\u94A9\\u5B50\\uFF1A",h)}if(p&&typeof p=="object"&&Object.keys(p).length===0){let h=new S(E.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684\\u6A21\\u5757 "${n}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:t,module:n});_({remote:t,error:h}),console.error(h.message)}return p}function me(e){let r=c.get(e);if(!r)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:e});return X(r)}async function F(e,r={}){let{remote:t,module:n}=C(e),a=c.get(t);if(!a)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:t});let s=r.mode??"preload",u=(d,R)=>{if(d.sheet)return Promise.resolve();let f=w.get(d);if(f)return f;let m=new Promise(v=>{let $=()=>{d.removeEventListener("load",$),d.removeEventListener("error",T),v()},T=()=>{_({remote:t,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${R}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:t})}),$()};d.addEventListener("load",$,{once:!0}),d.addEventListener("error",T,{once:!0}),d.sheet&&$()});return w.set(d,m),m},p=(d,R)=>{if(typeof document>"u")return Promise.resolve();let f=document.querySelector(`link[href="${d}"]`);if(f)return R==="style"&&s==="preload"?w.get(f)??Promise.resolve():Promise.resolve();let m=document.createElement("link");m.rel=R==="style"?"stylesheet":"modulepreload",m.href=d,s==="prefetch"&&(m.fetchPriority="low");let v=R==="style"?u(m,d):Promise.resolve();return document.head.appendChild(m),R==="style"&&s==="preload"?v:Promise.resolve()},h=d=>{let R=typeof document<"u"?document.baseURI:void 0,f=new URL(a.entry,R||"http://fulgurjs.invalid/");return!f.pathname.endsWith("/")&&!f.pathname.split("/").pop().includes(".")&&(f.pathname+="/"),new URL(d,f).href};try{if(a.manifestUrl){let d=y.get(a.manifestUrl);d||(d=fetch(a.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(f=>f.ok?f.json():void 0),y.set(a.manifestUrl,d),d.then(f=>{f||y.delete(a.manifestUrl)},()=>y.delete(a.manifestUrl)));let R=await d;if(R){let f=R.schemaVersion;if(typeof f=="number"&&(!Number.isInteger(f)||f>1)){_({remote:t,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(f)}\\uFF0C\\u5F53\\u524D\\u4EC5\\u652F\\u6301\\u7248\\u672C 1\\u3002\\u8BF7\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u548C\\u8FDC\\u7A0B\\u7684\\u63D2\\u4EF6\\u7248\\u672C\\u3002`,{remote:t})}),await p(a.entry,"modulepreload");return}await p(a.entry,"modulepreload");let m=R.exposes,v=Array.isArray(m)?m.filter(M=>M&&typeof M=="object").map(M=>[String(M.name??""),M]):m&&typeof m=="object"?Object.entries(m):[],$=n?v.filter(([M,x])=>B(String(x?.name??M))===n):v,T=[];for(let[,M]of $)if(typeof M?.file=="string"&&await p(h(M.file),"modulepreload"),Array.isArray(M?.css))for(let x of M.css){if(typeof x!="string")continue;let pe=p(h(x),"style");s==="preload"&&T.push(pe)}await Promise.all(T);return}}await p(a.entry,"modulepreload")}catch(d){_({remote:t,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(d?.message??d)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:t})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=i,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,t]of c)e[r]={...t.debug,entry:t.entry};return e},errors:[]}),{shareScopeMap:i,initSharing:oe,registerShare:se,registerRemotes:H,registerRemote:ae,registerPlugins:ce,loadShare:le,loadRemote:fe,getContainer:me,preloadRemote:F,parseSpec:C,clearSessionState:ne}}var Y=globalThis,P=Y.__FULGURJS_RUNTIME__??Oe();Y.__FULGURJS_RUNTIME__=P;try{Object.freeze(P)}catch{}var Ce=W;function Fe(){return P}var De=P.initSharing,Ve=P.registerShare,Ke=P.registerRemotes,He=P.registerRemote,qe=P.registerPlugins,Ge=P.loadShare,Je=P.loadRemote,Xe=P.getContainer,Be=P.preloadRemote,We=P.parseSpec,ze=P.clearSessionState,Ye=P.shareScopeMap;function Ze(i){if(i&&typeof i=="object"&&"default"in i){let c=i.default;return c!==void 0?c:i}return i}var Qe=P;export{ze as clearSessionState,Qe as default,Xe as getContainer,Fe as getRuntime,De as initSharing,Je as loadRemote,Ge as loadShare,We as parseSpec,Be as preloadRemote,qe as registerPlugins,He as registerRemote,Ke as registerRemotes,Ve as registerShare,P as runtime,Ye as shareScopeMap,Ze as unwrapDefault,Ce as version};\n';
|
|
1897
|
+
var runtime_code_gen_default = 'var de=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function L(a){let c=de.exec(String(a).trim());return c?{major:Number(c[1]),minor:Number(c[2]??0),patch:Number(c[3]??0),pre:c[4]?c[4].split("."):[]}:null}function ge(a,c){if(a.length===0&&c.length===0)return 0;if(a.length===0)return 1;if(c.length===0)return-1;let l=Math.max(a.length,c.length);for(let o=0;o<l;o++){let g=a[o],y=c[o];if(g===void 0)return-1;if(y===void 0)return 1;let w=/^\\d+$/.test(g),b=/^\\d+$/.test(y);if(w&&b){let I=Number(g)-Number(y);if(I!==0)return I}else{if(w!==b)return w?-1:1;if(g!==y)return g<y?-1:1}}return 0}function O(a,c){let l=L(a),o=L(c);return!l||!o?a<c?-1:a>c?1:0:l.major!==o.major?l.major-o.major:l.minor!==o.minor?l.minor-o.minor:l.patch!==o.patch?l.patch-o.patch:ge(l.pre,o.pre)}var he=/^[a-z]+[+:-]/i;function j(a,c){if(c===!1||c==null||c==="")return!0;let l=String(c).trim();return!l||l==="*"||l==="latest"||he.test(l)?!0:l.split("||").some(o=>ye(a,o.trim()))}function ye(a,c){if(!c||c==="*")return!L(a)?.pre.length;let l=c.split(/\\s+-\\s+/);if(l.length===2){let y=l[0].trim(),w=l[1].trim();return!(!j(a,`>=${y}`)||!j(a,`<=${w}`))}let o=L(a);if(!o)return!1;let g=Se(c);if(g===null)return!0;for(let y of g)if(!Pe(o,a,y))return!1;return!(o.pre.length>0&&!g.some(y=>y.ver.pre.length>0)&&!g.some(w=>w.ver.major===o.major&&w.ver.minor===o.minor&&w.ver.patch===o.patch))}function Se(a){let c=[],l=a.trim().split(/\\s+/).filter(Boolean);if(l.length===0)return null;for(let o of l){let g=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(o);if(!g)return null;let y=g[1],w=g[2],b=Ee(y,w);if(b===null)return null;c.push(...b)}return c}function Ee(a,c){let l=we(c);if(!l)return null;let{ver:o,partial:g}=l;switch(a){case"^":{let y=Re(o);return y?[{op:">=",ver:o},{op:"<",ver:y}]:null}case"~":{let y=g>=2?{major:o.major,minor:o.minor+1,patch:0,pre:[]}:{major:o.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:o},{op:"<",ver:y}]}case">=":return[{op:">=",ver:o}];case">":return g===1?[{op:">=",ver:{major:o.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:{major:o.major,minor:o.minor+1,patch:0,pre:[]}}]:[{op:">",ver:o}];case"<":return g===1?[{op:"<",ver:{major:o.major,minor:0,patch:0,pre:[]}}]:g===2?[{op:"<",ver:{major:o.major,minor:o.minor,patch:0,pre:[]}}]:[{op:"<",ver:o}];case"<=":return[{op:"<=",ver:o}];case"=":case void 0:return g===1?[{op:">=",ver:o},{op:"<",ver:{major:o.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:o},{op:"<",ver:{major:o.major,minor:o.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:o}];default:return null}}function Re(a){return a.major>0?{major:a.major+1,minor:0,patch:0,pre:[]}:a.minor>0?{major:0,minor:a.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:a.patch+1,pre:[]}}function we(a){let c=a.replace(/^v/,"").trim();if(!c||c==="*"||c==="x"||c==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let l=c.split("."),o=[],g=0;for(let b of l.slice(0,3))if(/^\\d+$/.test(b))o.push(Number(b)),g++;else{if(b==="x"||b==="X"||b==="*")break;break}let y=c.split("-"),w=y.length>1?y.slice(1).join("-").split("+")[0].split("."):[];return g===0&&w.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:o[0]??0,minor:o[1]??0,patch:o[2]??0,pre:w},partial:g}}function be(a,c){switch(c){case">=":return a>=0;case">":return a>0;case"<":return a<0;case"<=":return a<=0;case"=":return a===0}}function Pe(a,c,l){let o=`${a.major}.${a.minor}.${a.patch}`+(a.pre.length?`-${a.pre.join(".")}`:"");if(l.upper)return!(!(O(o,`${l.ver.major}.${l.ver.minor}.${l.ver.patch}`+(l.ver.pre.length?`-${l.ver.pre.join(".")}`:""))>=0)||!(O(o,`${l.upper.major}.${l.upper.minor}.${l.upper.patch}`)<0));let g=O(o,`${l.ver.major}.${l.ver.minor}.${l.ver.patch}`+(l.ver.pre.length?`-${l.ver.pre.join(".")}`:"")),y=be(g,l.op);return l.ver.pre.length>0&&a.pre.length===0&&(l.op===">"||l.op==="<")?!1:y}var S=class extends Error{code;details;constructor(c,l,o){super(`[fulgurjs:${c}] ${l}`),this.name="FgError",this.code=c,this.details=o}},E={REMOTE_LOAD_FAILED:"MFU-001",REMOTE_NAME_MISMATCH:"MFU-002",SHARE_STRICT_VERSION:"MFU-003",SHARE_NOT_AVAILABLE:"MFU-004",CONTAINER_REINIT_CONFLICT:"MFU-005",MODULE_NOT_EXPOSED:"MFU-006",PRELOAD_FAILED:"MFU-007",REMOTE_UNKNOWN:"MFU-008",EMPTY_EXPORTS:"MFU-009",SINGLETON_SKEW:"MFU-010",SETUP_INVALID_EXPORT:"MFU-011",SETUP_RUN_FAILED:"MFU-012",SETUP_SESSION_KEY_MISSING:"MFU-013",SETUP_RECURSION:"MFU-014"};var W="5.1.0";var $e="__fulgurjsSetup",_e="__FULGURJS_APP_CONFIG__",D=15e3,z=2,Me=5,ve=3e4,Ie=4e3,Te=.2;function Oe(){let a=Object.create(null),c=new Map,l=[],o=new Set,g=new Map,y=new Map,w=new WeakMap,b=new WeakMap,I={},Z=()=>{for(let e of l)try{e.init?.(I)}catch(r){console.warn("[fulgurjs] \\u8FD0\\u884C\\u65F6\\u6269\\u5C55\\u521D\\u59CB\\u5316\\u5931\\u8D25\\uFF0C\\u8BE5\\u6269\\u5C55\\u5C06\\u4E0D\\u53EF\\u7528\\uFF1A",e.name,r)}},U=new Map,k,Q=e=>{let r=U.get(e);return r||U.set(e,r={}),r},V=()=>globalThis[_e]??{};async function K(e,r,t,s){let i=u=>u instanceof S?u:new S(E.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${s} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${String(u?.message??u)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${s} \\u51FD\\u6570\\u540E\\u91CD\\u65B0\\u52A0\\u8F7D\\uFF1B\\u5931\\u8D25\\u7F13\\u5B58\\u5DF2\\u6E05\\u9664\\uFF0C\\u53EF\\u4EE5\\u76F4\\u63A5\\u91CD\\u8BD5\\u3002`,{remote:e,phase:s});k=e;let n;try{n=r(t)}catch(u){throw i(u)}finally{k=void 0}try{await n}catch(u){throw i(u)}}async function ee(e,r,t,s){e.debug.setup="pending";try{if(e.manifestUrl)try{await F(`${e.name}/${t}`)}catch{}let i=await r.get(t),n=i?.default;if(typeof n!="function")throw new S(E.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${t}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${i==null?String(i):typeof n}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728 setup \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u4E2D\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u51FD\\u6570\\uFF0C\\u4F8B\\u5982 export default async function setup(context) { ... }\\uFF1B\\u5177\\u540D onSession \\u53EF\\u9009\\u3002`,{remote:e.name,module:t});if(i.onSession!==void 0&&typeof i.onSession!="function")throw new S(E.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${t}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AonSession \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof i.onSession}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5C06 onSession \\u6539\\u4E3A\\u5177\\u540D\\u5BFC\\u51FA\\u7684\\u51FD\\u6570\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:t});s.setupExports=i,await K(e.name,n,{appContext:V(),signal:(s.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(i){throw e.debug.setup="failed",s.setupExports=void 0,i}}async function re(e,r,t){let s=V(),i=s?.sessionKey;if(typeof i!="string"||i==="")throw new S(E.SETUP_SESSION_KEY_MISSING,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u58F0\\u660E\\u4E86 onSession\\uFF0C\\u4F46\\u5BBF\\u4E3B\\u5C1A\\u672A\\u63D0\\u4F9B\\u6709\\u6548\\u7684 AppContext.sessionKey\\u3002\n\\u539F\\u56E0\\uFF1A\\u5F53\\u524D\\u503C\\u4E3A ${i===void 0?"\\u7F3A\\u5931":JSON.stringify(i)}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5BBF\\u4E3B\\u6BCF\\u6B21\\u767B\\u5F55\\u6216\\u91CD\\u767B\\u65F6\\u751F\\u6210\\u65B0\\u7684\\u975E\\u654F\\u611F\\u767B\\u5F55\\u4EE3\\u6B21 ID\\uFF0C\\u5E76\\u5728\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u9875\\u9762\\u524D\\u8C03\\u7528 provideAppContext({ ..., sessionKey: \'\\u767B\\u5F55\\u4EE3\\u6B21 ID\' })\\uFF1B\\u4E0D\\u8981\\u4F7F\\u7528 token \\u539F\\u6587\\u3002`,{remote:e.name});if(r.sessionPromise&&r.sessionKey===i)return r.sessionPromise;r.controller?.abort();let n=new AbortController;r.controller=n,r.sessionKey=i;let u=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),p=(async()=>{await u,!n.signal.aborted&&await K(e.name,t,{appContext:s,sessionKey:i,signal:n.signal},"onSession")})();return r.sessionPromise=p,p.catch(()=>{r.sessionKey===i&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),p}async function te(e,r){let t=r?.[$e];if(typeof t!="string"||t==="")return;let s=Q(e.name);s.setupPromise||(s.setupPromise=ee(e,r,t,s).catch(n=>{throw s.setupPromise=void 0,n})),await s.setupPromise;let i=s.setupExports?.onSession;typeof i=="function"&&await re(e,s,i)}function ne(){for(let e of U.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let A=e=>a[e]??=Object.create(null);function $(e){try{I.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}function oe(e="default"){return A(e),a}function se(e,r,t,s,i={}){let n=A(e||"default"),u=Object.hasOwn(n,r)?n[r]:void 0,p=u&&typeof u=="object"?u:void 0;p||(p=Object.create(null),n[r]=p),!(Object.hasOwn(p,t)&&p[t])&&(p[t]={version:t,get:s,from:i.from??"unknown",eager:!!i.eager,loaded:!!i.loaded})}function ie(e){let r=(t,s,i)=>{if(t===void 0)return;if(!(typeof t=="number"&&(i?Number.isInteger(t)&&t>=0&&t<=10:Number.isFinite(t)&&t>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${s} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(t)}\\uFF0C\\u5E94\\u4E3A${i?" 0 \\u5230 10 \\u7684\\u6574\\u6570":"\\u5927\\u4E8E 0 \\u7684\\u6709\\u9650\\u6570\\u5B57"}\\u3002\\u8BF7\\u4FEE\\u6B63 registerRemote \\u914D\\u7F6E\\u3002`)};r(e.timeout,"timeout"),r(e.retries,"retries",!0),e.breaker&&(r(e.breaker.threshold,"breaker.threshold"),r(e.breaker.resetMs,"breaker.resetMs"))}function H(e){for(let r of e){ie(r);let t=c.get(r.name);c.set(r.name,{timeout:D,retries:z,...t,...r,breakerThreshold:r.breaker?.threshold??t?.breakerThreshold??Me,breakerResetMs:r.breaker?.resetMs??t?.breakerResetMs??ve,state:t?.state??"idle",breakerState:t?.breakerState??{fails:0,openUntil:0},entryInflight:t?.entryInflight??new Map,entryFailCounts:t?.entryFailCounts??new Map,debug:t?.debug??{entry:r.entry,status:"idle",setup:"none"}})}}function ae(e){H([e])}function ce(e){l.push(...e),Z()}async function le(e,r={}){let t=r.shareScope||"default",s=r.shareKey||e,n=A(t)[s]||{},u=Object.keys(n),p=r.requiredVersion,h=u.filter(f=>p===void 0||p===!1||j(f,p)),d;if(r.singleton&&u.length>0){let f=u.filter(m=>n[m].loaded);if(d=[...f.length?f:u].sort(O).pop(),!h.includes(d)){let m=n[d],v=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${s}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u5E94\\u7528\\u8981\\u6C42 ${p??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${u.join("\\u3001")}\\uFF1B\\u4E3A\\u4FDD\\u8BC1\\u5168\\u9875\\u53EA\\u4F7F\\u7528\\u4E00\\u4E2A\\u5B9E\\u4F8B\\uFF0C\\u6700\\u7EC8\\u590D\\u7528 ${m.from} \\u63D0\\u4F9B\\u7684 ${d}\\u3002\n\\u5F71\\u54CD\\uFF1A\\u53EF\\u80FD\\u51FA\\u73B0\\u72B6\\u6001\\u4E0D\\u4E00\\u81F4\\u6216\\u8FD0\\u884C\\u9519\\u8BEF\\uFF0C\\u5177\\u4F53\\u53D6\\u51B3\\u4E8E\\u4E24\\u7AEF API \\u662F\\u5426\\u517C\\u5BB9\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u6838\\u5BF9\\u540E\\u8C03\\u6574 shared.requiredVersion\\uFF1B\\u82E5\\u5FC5\\u987B\\u62D2\\u7EDD\\u4E0D\\u517C\\u5BB9\\u7248\\u672C\\uFF0C\\u8BF7\\u542F\\u7528 strictVersion\\u3002`;if(r.strictVersion){let T=new S(E.SHARE_STRICT_VERSION,v,{shareKey:s,requiredVersion:p});throw $({remote:m.from,error:T}),T}let _=`${t}|${s}|${p??"*"}|${d}|${u.join(",")}`;o.has(_)||(o.add(_),console.warn(`[fulgurjs:MFU-010] ${v}`))}}else if(d=[...h].sort(O).pop(),!d){if(r.strictVersion){let m=new S(E.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${t}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${s}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${p}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${u.join("\\u3001")||"\\u65E0"}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u4FEE\\u6B63 shared.requiredVersion\\u3002`);throw $({remote:s,error:m}),m}if(r.fallback)return r.fallback();let f=new S(E.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${s}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u4F5C\\u7528\\u57DF "${t}" \\u4E2D\\u6CA1\\u6709\\u7B26\\u5408 ${p??"\\u4EFB\\u610F\\u7248\\u672C"} \\u8981\\u6C42\\u7684\\u7248\\u672C\\uFF0C\\u4E14\\u672A\\u914D\\u7F6E\\u672C\\u5730\\u526F\\u672C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728\\u5BBF\\u4E3B\\u6216\\u8FDC\\u7A0B\\u6CE8\\u518C\\u8BE5\\u4F9D\\u8D56\\uFF0C\\u6216\\u4E3A shared \\u914D\\u7F6E\\u53EF\\u7528\\u7684\\u672C\\u5730\\u526F\\u672C\\u3002`,{shareKey:s,requiredVersion:p});throw $({remote:s,error:f}),f}let R=n[d];if(I.resolveShare){let f=await I.resolveShare({shareKey:s,shareScope:t,requiredVersion:p,picked:R,available:Object.values(n)});f&&(R=f)}return R.loaded=!0,R.get()}function q(e){try{let r=new URL(e,typeof location<"u"?location.href:"http://f.invalid");return r.protocol+"//"+r.host+r.pathname}catch{return String(e).replace(/[?#].*$/,"")}}function G(e,r,t){return new Promise((s,i)=>{let n=setTimeout(()=>i(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${t}`)),r);e.then(u=>{clearTimeout(n),s(u)},u=>{clearTimeout(n),i(u)})})}let ue=e=>new Promise(r=>setTimeout(r,e));function N(e,r){if(!e||typeof e.get!="function")throw new Error(`\\u8FDC\\u7A0B\\u5E94\\u7528 "${r.name}" \\u7684 remoteEntry \\u672A\\u5BFC\\u51FA\\u5BB9\\u5668\\u63A5\\u53E3\\u3002\\u8BF7\\u786E\\u8BA4\\u5165\\u53E3\\u5BFC\\u51FA\\u4E86 get()\\uFF0C\\u5E76\\u68C0\\u67E5\\u8BE5\\u5730\\u5740\\u662F\\u5426\\u8FD4\\u56DE\\u6B63\\u786E\\u7684\\u8054\\u90A6\\u5165\\u53E3 JS\\u3002`);if(e.name&&r.name&&e.name!==r.name){let t=`\\u8FDC\\u7A0B\\u5165\\u53E3\\u81EA\\u62A5\\u540D\\u79F0 "${e.name}" \\u4E0E\\u5BBF\\u4E3B\\u914D\\u7F6E\\u540D\\u79F0 "${r.name}" \\u4E0D\\u4E00\\u81F4\\u3002\\u8BF7\\u7EDF\\u4E00\\u4E24\\u4FA7 federation({ name }) \\u4E0E remotes \\u7684\\u540D\\u79F0\\u3002`;if(r.promise)console.warn(`[fulgurjs] ${t} \\u5F53\\u524D\\u662F\\u52A8\\u6001 Promise \\u8FDC\\u7A0B\\uFF0C\\u7EE7\\u7EED\\u52A0\\u8F7D\\u3002`);else throw Object.assign(new Error(t),{code:E.REMOTE_NAME_MISMATCH})}}async function J(e,r){let t=r.entryFailCounts.get(e)??0,s=t>0?`${e}${e.includes("?")?"&":"?"}fulgurjs_retry=${t}`:e,i=r.entryInflight.get(e),n=i??import(s);return i||(r.entryInflight.set(e,n),n.catch(()=>{r.entryInflight.delete(e),r.entryFailCounts.set(e,(r.entryFailCounts.get(e)??0)+1)})),G(n,r.timeout??D,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${q(e)}`)}async function X(e,r){let t=e.shareScope||"default";if(e.container){let n=b.get(e.container);if(n&&n!==t)throw new S(E.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${n}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${t}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return e.container}if(e.containerPromise)return e.containerPromise;let s=e.breakerState;if(s.openUntil>Date.now()){let n=new S(E.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u8FDE\\u7EED\\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u7194\\u65AD\\u5668\\u5DF2\\u5F00\\u542F\\uFF1B\\u5C06\\u5728 ${new Date(s.openUntil).toISOString()} \\u540E\\u5141\\u8BB8\\u91CD\\u8BD5\\u3002\\u8BF7\\u5148\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u670D\\u52A1\\u548C\\u7F51\\u7EDC\\u3002`,{remote:e.name});throw $({remote:e.name,error:n}),n}e.state="loading",e.debug.status="loading";let i=(async()=>{let n=[];if(e.promise)n.push(async()=>{let f=await G(e.promise(),e.timeout??D,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),m=typeof f=="string"?await J(f,e):f;return N(m,e),m});else for(let f of[e.entry,...e.fallback??[]])n.push(async()=>{let m=await J(f,e);return N(m,e),m});let u,p,h=!1,d=r?.retries??e.retries??z;for(let f of n){for(let m=0;m<=d;m++){let v=performance.now();try{u=await f(),e.lastLoadMs=Math.round(performance.now()-v),e.debug.lastLoadMs=e.lastLoadMs,h=!0;break}catch(_){if(p=_,_?.code)throw _;m<d&&await ue(Math.min(Ie,200*2**m)*(1-Te*(1-2*Math.random())))}}if(h)break}if(!h||!u){let f=q(e.entry),m=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(m.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${f}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),m.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),m.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(m.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${f}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),m.push("2. \\u68C0\\u67E5 Nginx/CDN \\u7684\\u5165\\u53E3\\u8DEF\\u5F84\\u6620\\u5C04\\uFF1B\\u8BE5\\u5730\\u5740\\u4E0D\\u80FD\\u56DE\\u9000\\u5230 index.html\\u3002")),new S(E.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${f} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${String(p?.message??p)}\n\\u4FEE\\u6CD5\\uFF1A\n${m.join(`\n`)}`,{remote:e.name})}N(u,e);let R=b.get(u);if(R&&R!==t)throw new S(E.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${R}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${t}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof u.init=="function"&&await u.init(a),b.set(u,t),e.container=u,e.state="loaded",e.debug.status="loaded",s.fails=0,u})();e.containerPromise=i;try{return await i}catch(n){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=String(n?.message??n),s.fails+=1,s.fails>=e.breakerThreshold&&(s.openUntil=Date.now()+e.breakerResetMs,s.fails=0),n instanceof S)throw $({remote:e.name,error:n}),n;if(n?.code)throw $({remote:e.name,error:n}),n;let u=new S(E.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(n?.message??n)}\\u3002\\u8BF7\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u3001\\u7F51\\u7EDC\\u53CA\\u5171\\u4EAB\\u4F9D\\u8D56\\u3002`,{remote:e.name});throw $({remote:e.name,error:u}),u}}function C(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:B(e.slice(r+1))}}function B(e){return e?e.startsWith(".")?e:`./${e}`:""}async function fe(e,r){let{remote:t,module:s}=C(e);if(s&&k===t)throw new S(E.SETUP_RECURSION,`\\u73B0\\u8C61\\uFF1A\\u52A0\\u8F7D "${e}" \\u65F6\\uFF0C\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684 setup/onSession \\u53C8\\u540C\\u6B65\\u52A0\\u8F7D\\u4E86\\u81EA\\u8EAB\\u6A21\\u5757\\uFF0C\\u5F62\\u6210\\u5FAA\\u73AF\\u7B49\\u5F85\\u3002\n\\u539F\\u56E0\\uFF1A\\u521D\\u59CB\\u5316\\u5C1A\\u672A\\u5B8C\\u6210\\uFF0C\\u4E0D\\u80FD\\u7B49\\u5F85\\u81EA\\u8EAB\\u7684\\u521D\\u59CB\\u5316\\u7ED3\\u679C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u4E0D\\u8981\\u5728 setup/onSession \\u4E2D\\u52A0\\u8F7D\\u540C\\u4E00\\u8FDC\\u7A0B\\u7684\\u6A21\\u5757\\uFF1B\\u8BF7\\u5728\\u9875\\u9762\\u7EC4\\u4EF6\\u4E2D\\u52A0\\u8F7D\\uFF0C\\u6216\\u901A\\u8FC7 context \\u89E3\\u8026\\u3002`,{remote:t});try{I.beforeLoadRemote?.({remote:t,module:s})}catch(h){console.warn("[fulgurjs] beforeLoadRemote \\u89C2\\u6D4B\\u94A9\\u5B50\\u6267\\u884C\\u5931\\u8D25\\uFF1B\\u6A21\\u5757\\u52A0\\u8F7D\\u5C06\\u7EE7\\u7EED\\u3002\\u8BF7\\u68C0\\u67E5\\u8BE5\\u94A9\\u5B50\\uFF1A",h)}let i=c.get(t);if(!i)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}"\\u3002\\u8BF7\\u5728 federation({ remotes }) \\u4E2D\\u914D\\u7F6E\\uFF0C\\u6216\\u5728\\u52A0\\u8F7D\\u524D\\u8C03\\u7528 registerRemote()\\u3002`,{remote:t});let n;try{let h=s&&i.manifestUrl?F(e):Promise.resolve();[n]=await Promise.all([X(i,{retries:r?.retries}),h])}catch(h){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u6B63\\u5728\\u4F7F\\u7528\\u663E\\u5F0F\\u914D\\u7F6E\\u7684 fallbackModule\\uFF1B\\u539F\\u59CB\\u9519\\u8BEF\\uFF1A`,h),$({remote:t,error:h}),await r.fallbackModule();throw h}if(!s)return n;await te(i,n);let u=`${t}@${i.shareScope||"default"}#${s}`;g.has(u)||g.set(u,n.get(s).catch(h=>{throw g.delete(u),h instanceof S||h?.code?h:new S(E.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u52A0\\u8F7D\\u6A21\\u5757 "${s}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(h?.message??h)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:t,module:s})}));let p;try{p=await g.get(u)}catch(h){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u6B63\\u5728\\u4F7F\\u7528\\u663E\\u5F0F\\u914D\\u7F6E\\u7684 fallbackModule\\uFF1B\\u539F\\u59CB\\u9519\\u8BEF\\uFF1A`,h),$({remote:t,error:h}),await r.fallbackModule();throw h}try{I.afterLoadRemote?.({remote:t,module:s,module_ns:p})}catch(h){console.warn("[fulgurjs] afterLoadRemote \\u89C2\\u6D4B\\u94A9\\u5B50\\u6267\\u884C\\u5931\\u8D25\\uFF1B\\u5DF2\\u52A0\\u8F7D\\u6A21\\u5757\\u4ECD\\u53EF\\u4F7F\\u7528\\u3002\\u8BF7\\u68C0\\u67E5\\u8BE5\\u94A9\\u5B50\\uFF1A",h)}if(p&&typeof p=="object"&&Object.keys(p).length===0){let h=new S(E.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684\\u6A21\\u5757 "${s}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:t,module:s});$({remote:t,error:h}),console.error(h.message)}return p}function me(e){let r=c.get(e);if(!r)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:e});return X(r)}async function F(e,r={}){let{remote:t,module:s}=C(e),i=c.get(t);if(!i)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:t});let n=r.mode??"preload",u=(d,R)=>{if(d.sheet)return Promise.resolve();let f=w.get(d);if(f)return f;let m=new Promise(v=>{let _=()=>{d.removeEventListener("load",_),d.removeEventListener("error",T),v()},T=()=>{$({remote:t,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${R}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:t})}),_()};d.addEventListener("load",_,{once:!0}),d.addEventListener("error",T,{once:!0}),d.sheet&&_()});return w.set(d,m),m},p=(d,R)=>{if(typeof document>"u")return Promise.resolve();let f=document.querySelector(`link[href="${d}"]`);if(f)return R==="style"&&n==="preload"?w.get(f)??Promise.resolve():Promise.resolve();let m=document.createElement("link");m.rel=R==="style"?"stylesheet":"modulepreload",m.href=d,n==="prefetch"&&(m.fetchPriority="low");let v=R==="style"?u(m,d):Promise.resolve();return document.head.appendChild(m),R==="style"&&n==="preload"?v:Promise.resolve()},h=d=>{let R=typeof document<"u"?document.baseURI:void 0,f=new URL(i.entry,R||"http://fulgurjs.invalid/");return!f.pathname.endsWith("/")&&!f.pathname.split("/").pop().includes(".")&&(f.pathname+="/"),new URL(d,f).href};try{if(i.manifestUrl){let d=y.get(i.manifestUrl);d||(d=fetch(i.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(f=>f.ok?f.json():void 0),y.set(i.manifestUrl,d),d.then(f=>{f||y.delete(i.manifestUrl)},()=>y.delete(i.manifestUrl)));let R=await d;if(R){let f=R.schemaVersion;if(typeof f=="number"&&(!Number.isInteger(f)||f>1)){$({remote:t,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(f)}\\uFF0C\\u5F53\\u524D\\u4EC5\\u652F\\u6301\\u7248\\u672C 1\\u3002\\u8BF7\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u548C\\u8FDC\\u7A0B\\u7684\\u63D2\\u4EF6\\u7248\\u672C\\u3002`,{remote:t})}),await p(i.entry,"modulepreload");return}await p(i.entry,"modulepreload");let m=R.exposes,v=Array.isArray(m)?m.filter(M=>M&&typeof M=="object").map(M=>[String(M.name??""),M]):m&&typeof m=="object"?Object.entries(m):[],_=s?v.filter(([M,x])=>B(String(x?.name??M))===s):v,T=[];for(let[,M]of _)if(typeof M?.file=="string"&&await p(h(M.file),"modulepreload"),Array.isArray(M?.css))for(let x of M.css){if(typeof x!="string")continue;let pe=p(h(x),"style");n==="preload"&&T.push(pe)}await Promise.all(T);return}}await p(i.entry,"modulepreload")}catch(d){$({remote:t,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(d?.message??d)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:t})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=a,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,t]of c)e[r]={...t.debug,entry:t.entry};return e},errors:[]}),{shareScopeMap:a,initSharing:oe,registerShare:se,registerRemotes:H,registerRemote:ae,registerPlugins:ce,loadShare:le,loadRemote:fe,getContainer:me,preloadRemote:F,parseSpec:C,clearSessionState:ne}}var Y=globalThis,P=Y.__FULGURJS_RUNTIME__??Oe();Y.__FULGURJS_RUNTIME__=P;try{Object.freeze(P)}catch{}var Ce=W;function Fe(){return P}var De=P.initSharing,Ve=P.registerShare,Ke=P.registerRemotes,He=P.registerRemote,qe=P.registerPlugins,Ge=P.loadShare,Je=P.loadRemote,Xe=P.getContainer,Be=P.preloadRemote,We=P.parseSpec,ze=P.clearSessionState,Ye=P.shareScopeMap;function Ze(a){if(a&&typeof a=="object"&&"default"in a){let c=a.default;return c!==void 0?c:a}return a}var Qe=P;export{ze as clearSessionState,Qe as default,Xe as getContainer,Fe as getRuntime,De as initSharing,Je as loadRemote,Ge as loadShare,We as parseSpec,Be as preloadRemote,qe as registerPlugins,He as registerRemote,Ke as registerRemotes,Ve as registerShare,P as runtime,Ye as shareScopeMap,Ze as unwrapDefault,Ce as version};\n';
|
|
1802
1898
|
|
|
1803
1899
|
// src/index.ts
|
|
1804
1900
|
function readRuntimeCode() {
|
|
@@ -2069,6 +2165,7 @@ export { default } from ${JSON.stringify(url)};
|
|
|
2069
2165
|
if (bareClean === INIT_VIRTUAL_ID) return RESOLVED.init;
|
|
2070
2166
|
if (bareClean === "virtual:fulgurjs-remote-schema") return bareClean;
|
|
2071
2167
|
if (bareClean === "virtual:fulgurjs-api-facade") return bareClean;
|
|
2168
|
+
if (bareClean === "virtual:fulgurjs-api-facade-react") return bareClean;
|
|
2072
2169
|
if (bareClean === "virtual:fulgurjs-provides") return RESOLVED.provides;
|
|
2073
2170
|
if (bareClean === "virtual:fulgurjs-remote-entry") return RESOLVED.remoteEntry;
|
|
2074
2171
|
if (bareClean.startsWith(SHARED_NS_FACADE_PREFIX)) {
|
|
@@ -2096,7 +2193,10 @@ export { default } from ${JSON.stringify(url)};
|
|
|
2096
2193
|
return genDevProvides(state.normalized);
|
|
2097
2194
|
}
|
|
2098
2195
|
if (clean === "virtual:fulgurjs-api-facade" && state.command === "serve") {
|
|
2099
|
-
return genApiFacade();
|
|
2196
|
+
return genApiFacade("vue");
|
|
2197
|
+
}
|
|
2198
|
+
if (clean === "virtual:fulgurjs-api-facade-react" && state.command === "serve") {
|
|
2199
|
+
return genApiFacade("react");
|
|
2100
2200
|
}
|
|
2101
2201
|
if (clean === "virtual:fulgurjs-remote-schema" && state.normalized) {
|
|
2102
2202
|
if (state.command === "build") return genEmptyRemoteSchemaModule();
|
|
@@ -2335,6 +2435,17 @@ ${code}`, map: null };
|
|
|
2335
2435
|
if (hit) state.exposeFiles[e.name] = hit;
|
|
2336
2436
|
}
|
|
2337
2437
|
const entryChunkName = Object.keys(bundle).find((k) => bundle[k].type === "chunk" && k === n.filename);
|
|
2438
|
+
const entryChunk = entryChunkName ? bundle[entryChunkName] : void 0;
|
|
2439
|
+
if (entryChunk && entryChunk.type === "chunk" && /import\((['"])[^'")]+\1\)/.test(entryChunk.code)) {
|
|
2440
|
+
const helper = 'var __fgN={};var __fgR=function(u){__fgN[u]=(__fgN[u]||0)+1;return __fgN[u]>1?u+(u.indexOf("?")>-1?"&":"?")+"fulgurjs_retry="+(__fgN[u]-1):u};';
|
|
2441
|
+
entryChunk.code = entryChunk.code.replace(
|
|
2442
|
+
/import\((['"])([^'")]+)\1\)/g,
|
|
2443
|
+
(_m, q, u) => `import(__fgR(${q}${u}${q}))`
|
|
2444
|
+
);
|
|
2445
|
+
entryChunk.code = `${helper}
|
|
2446
|
+
${entryChunk.code}`;
|
|
2447
|
+
debugLog("manifest", { stage: "generateBundle", retryBust: "remoteEntry loaders wrapped" });
|
|
2448
|
+
}
|
|
2338
2449
|
const manifest = genProdManifest(n, state.exposeFiles, entryChunkName ?? n.filename);
|
|
2339
2450
|
debugLog("manifest", {
|
|
2340
2451
|
stage: "generateBundle",
|