@fulgurjs/federation 5.1.0 → 5.1.2
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 +17 -0
- package/README.en.md +228 -307
- package/README.md +14 -11
- package/dist/index.cjs +171 -26
- package/dist/index.js +171 -26
- package/dist/react-adapter.cjs +16 -7
- package/dist/react-adapter.d.cts +2 -2
- package/dist/react-adapter.d.ts +2 -2
- package/dist/react-adapter.js +16 -7
- package/dist/react.d.ts +2 -2
- package/dist/runtime.js +1 -1
- package/examples/react-host/src/federation/pages.data.ts +2 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -467,7 +467,7 @@ import { loadRemote } from '@fulgurjs/federation/runtime'
|
|
|
467
467
|
|
|
468
468
|
#### 函数总表
|
|
469
469
|
|
|
470
|
-
> 下表全部函数与 `definePages` / `remoteSchema` / `provideAppContext` 等 context 函数 / `remoteComponent` / `createHostPages`
|
|
470
|
+
> 下表全部函数与 `definePages` / `remoteSchema` / `provideAppContext` 等 context 函数 / `remoteComponent` / `createHostPages` 都从 Vue 入口 `@fulgurjs/federation/runtime` 导入(见 §2);旧入口已删除。**React 浏览器应用请使用 `@fulgurjs/federation/react`**(通用函数同名提供 + §8.1 的 React 适配 API;不含本表的 Vue 专属项 `remoteComponent` Vue 形态 / `createHostPages` / `keepAliveNames`)。
|
|
471
471
|
|
|
472
472
|
> **TS 提示**:`@fulgurjs/federation/runtime` 的类型随包发布,由包的 `exports` 和 `typesVersions` 直接解析;不需要 `client` 类型垫片。dev 启动时插件仅在类型目录(默认 `src/fulgurjs/types/`)生成远程 exposes 的类型声明。
|
|
473
473
|
|
|
@@ -726,7 +726,7 @@ const { data, error, loading, reload } = useLoadRemote<Utils>('remote-react/util
|
|
|
726
726
|
- `options`:`shareScope` / `retries` / `fallbackModule`(透传 `loadRemote`;配置 `fallbackModule` 是显式声明的行为——失败返回兜底值而非写 error)
|
|
727
727
|
- 按字段比较依赖(调用方每次 render 新建 options 对象不会无限重载);spec/选项变化时清理旧数据进入新请求
|
|
728
728
|
- 每轮 effect 与 `reload` 有独立代次:快速 A→B、慢请求晚返回、连续 reload、卸载后返回、StrictMode 双 effect 都只允许最新有效请求写状态;不宣称重复 effect 从未发生(运行时缓存去重网络与生命周期)
|
|
729
|
-
- `reload`
|
|
729
|
+
- `reload` 开始时清空旧 data/error 并设 loading=true;当前尝试成功后写 data,失败后仅写 error,均结束 loading。卸载会作废未完成的 effect/reload,卸载后调用已保存的 reload 不发起请求。已成功缓存的模块不会重新下载;`Promise<void>` 正常结束(按钮 `onClick` 调用不产生未处理拒绝)
|
|
730
730
|
- `AppContext` 不是 React 状态订阅:宿主读到新的非空 `sessionKey` 时由**宿主自身状态/路由**触发重新渲染(`createHostPages` 的组件缓存会在新登录代次自动重建,触发新代次 `onSession`)
|
|
731
731
|
|
|
732
732
|
#### `RemoteErrorBoundary`
|
|
@@ -1124,25 +1124,28 @@ const Panel = await loadRemote('shop/Panel', {
|
|
|
1124
1124
|
## 开发与测试
|
|
1125
1125
|
|
|
1126
1126
|
```bash
|
|
1127
|
-
#
|
|
1127
|
+
# 各子项目独立安装;插件需先 build,
|
|
1128
1128
|
# fixtures 经 link: 消费插件 dist,而 dist 运行时依赖就地安装在插件目录
|
|
1129
1129
|
pnpm --dir packages/plugin install && pnpm --dir packages/plugin build
|
|
1130
|
-
for app in fixtures/host-vue fixtures/remote-a fixtures/remote-b e2e; do pnpm --dir "$app" install; done
|
|
1130
|
+
for app in fixtures/host-vue fixtures/remote-a fixtures/remote-b fixtures/remote-auto fixtures/host-auto fixtures/remote-react fixtures/host-react e2e; do pnpm --dir "$app" install; done
|
|
1131
|
+
pnpm --dir e2e exec playwright install chromium
|
|
1131
1132
|
|
|
1132
1133
|
pnpm test:unit # 全量单测(数量以本次输出为准)
|
|
1133
|
-
pnpm test:dev # dev
|
|
1134
|
-
pnpm test:prod # prod
|
|
1134
|
+
pnpm test:dev # Vue + React 的 dev 与 fault 四个项目
|
|
1135
|
+
pnpm test:prod # Vue + React 的 prod 两个项目;需 NGINX,结束后清理脚本启动的隔离实例
|
|
1135
1136
|
pnpm test # unit + dev + prod 全跑
|
|
1136
|
-
pnpm --dir e2e exec playwright test --
|
|
1137
|
-
|
|
1137
|
+
pnpm --dir e2e exec playwright test --list # 核对用例归属,数量以本次输出为准
|
|
1138
|
+
node e2e/scripts/pack-smoke.mjs # 本地 tarball 的隔离消费者检查,不替代发版后正式包验收
|
|
1138
1139
|
```
|
|
1139
1140
|
|
|
1140
|
-
CI(GitHub Actions
|
|
1141
|
+
CI(GitHub Actions):
|
|
1141
1142
|
|
|
1142
1143
|
- `test`:单测 + 双口径 typecheck(pinned / latest)+ build 门禁(runtime gzip ≤ 9216B、错误码三方一致性);
|
|
1143
|
-
- `e2e`:
|
|
1144
|
+
- `e2e`:Vue + React 的 dev/fault × Vite 6.4.3 / 7.3.6 / 8.3.0 兼容矩阵;
|
|
1145
|
+
- `prod-e2e`:隔离 NGINX 下的 Vue + React 生产套件;`tarball`:真实打包消费者检查;
|
|
1146
|
+
- `vite5`:schedule/workflow_dispatch 运行最低支持线;已复现的 5.1.4 双 client 错误覆盖层用例单列跳过,不算通过,也不跳过其他 Vite 5 版本。
|
|
1144
1147
|
|
|
1145
|
-
|
|
1148
|
+
fixtures 测试与真实项目验收分别记录;fixture 全过不代表 MES 双环境已完成验收。
|
|
1146
1149
|
|
|
1147
1150
|
## License
|
|
1148
1151
|
|
package/dist/index.cjs
CHANGED
|
@@ -35,7 +35,7 @@ __export(index_exports, {
|
|
|
35
35
|
});
|
|
36
36
|
module.exports = __toCommonJS(index_exports);
|
|
37
37
|
var import_node_path6 = __toESM(require("path"), 1);
|
|
38
|
-
var
|
|
38
|
+
var import_node_module3 = require("module");
|
|
39
39
|
|
|
40
40
|
// src/options.ts
|
|
41
41
|
var import_node_module = require("module");
|
|
@@ -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.1.
|
|
46
|
+
var RUNTIME_VERSION = "5.1.2";
|
|
47
47
|
|
|
48
48
|
// src/dev-cors.ts
|
|
49
49
|
function normalizeDevCorsOrigins(input) {
|
|
@@ -903,6 +903,13 @@ export async function get(moduleName) {
|
|
|
903
903
|
}
|
|
904
904
|
`;
|
|
905
905
|
}
|
|
906
|
+
function genProdRetryHelper() {
|
|
907
|
+
return [
|
|
908
|
+
"var __fgS={};",
|
|
909
|
+
"var __fgR=function(u){var s=__fgS[u]||(__fgS[u]={u:u,n:0});",
|
|
910
|
+
'return import(s.u).then(function(m){return m},function(e){s.n++;s.u=u+(u.indexOf("?")>-1?"&":"?")+"fulgurjs_retry="+s.n;throw e})};'
|
|
911
|
+
].join("");
|
|
912
|
+
}
|
|
906
913
|
function exposeLoaderCode(devUrl) {
|
|
907
914
|
return [
|
|
908
915
|
`(() => { let __fg_n = 0; const __fg_u = ${JSON.stringify(devUrl)}; return () => __fg_n === 0`,
|
|
@@ -1420,6 +1427,7 @@ export { ${nsAs[1]} };`);
|
|
|
1420
1427
|
// src/dts.ts
|
|
1421
1428
|
var import_node_fs2 = __toESM(require("fs"), 1);
|
|
1422
1429
|
var import_node_path3 = __toESM(require("path"), 1);
|
|
1430
|
+
var import_node_module2 = require("module");
|
|
1423
1431
|
async function fetchManifest(devEntry, origin, attempts = 30, delayMs = 2e3) {
|
|
1424
1432
|
let manifestUrl;
|
|
1425
1433
|
try {
|
|
@@ -1526,38 +1534,155 @@ function buildShimModule(abs, moduleSpecifier) {
|
|
|
1526
1534
|
function writeAnyModules(outDir, remoteKey, manifest) {
|
|
1527
1535
|
const modules = manifest.exposes.filter((expose) => !manifest.setup || expose.name !== manifest.setup).map((expose) => `declare module ${JSON.stringify(`${remoteKey}/${expose.name.replace(/^\.\//, "")}`)};`);
|
|
1528
1536
|
const file = import_node_path3.default.join(outDir, `${remoteKey}.d.ts`);
|
|
1537
|
+
import_node_fs2.default.rmSync(import_node_path3.default.join(outDir, `${remoteKey}.d`), { recursive: true, force: true });
|
|
1529
1538
|
if (modules.length === 0) {
|
|
1530
1539
|
if (import_node_fs2.default.existsSync(file)) import_node_fs2.default.unlinkSync(file);
|
|
1531
1540
|
return;
|
|
1532
1541
|
}
|
|
1533
1542
|
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"));
|
|
1534
1543
|
}
|
|
1535
|
-
function
|
|
1544
|
+
function stripJsonc(text) {
|
|
1545
|
+
let out = "";
|
|
1546
|
+
let i = 0;
|
|
1547
|
+
const n = text.length;
|
|
1548
|
+
let inStr = false;
|
|
1549
|
+
let esc = false;
|
|
1550
|
+
const skipWsAndComments = (from) => {
|
|
1551
|
+
let j = from;
|
|
1552
|
+
for (; ; ) {
|
|
1553
|
+
while (j < n && /\s/.test(text[j])) j++;
|
|
1554
|
+
if (text[j] === "/" && text[j + 1] === "/") {
|
|
1555
|
+
while (j < n && text[j] !== "\n") j++;
|
|
1556
|
+
continue;
|
|
1557
|
+
}
|
|
1558
|
+
if (text[j] === "/" && text[j + 1] === "*") {
|
|
1559
|
+
j += 2;
|
|
1560
|
+
while (j < n && !(text[j] === "*" && text[j + 1] === "/")) j++;
|
|
1561
|
+
j += 2;
|
|
1562
|
+
continue;
|
|
1563
|
+
}
|
|
1564
|
+
return j;
|
|
1565
|
+
}
|
|
1566
|
+
};
|
|
1567
|
+
while (i < n) {
|
|
1568
|
+
const c = text[i];
|
|
1569
|
+
if (inStr) {
|
|
1570
|
+
out += c;
|
|
1571
|
+
if (esc) esc = false;
|
|
1572
|
+
else if (c === "\\") esc = true;
|
|
1573
|
+
else if (c === '"') inStr = false;
|
|
1574
|
+
i++;
|
|
1575
|
+
continue;
|
|
1576
|
+
}
|
|
1577
|
+
if (c === '"') {
|
|
1578
|
+
inStr = true;
|
|
1579
|
+
out += c;
|
|
1580
|
+
i++;
|
|
1581
|
+
continue;
|
|
1582
|
+
}
|
|
1583
|
+
if (c === "/" && text[i + 1] === "/") {
|
|
1584
|
+
while (i < n && text[i] !== "\n") i++;
|
|
1585
|
+
continue;
|
|
1586
|
+
}
|
|
1587
|
+
if (c === "/" && text[i + 1] === "*") {
|
|
1588
|
+
i += 2;
|
|
1589
|
+
while (i < n && !(text[i] === "*" && text[i + 1] === "/")) i++;
|
|
1590
|
+
i += 2;
|
|
1591
|
+
continue;
|
|
1592
|
+
}
|
|
1593
|
+
if (c === ",") {
|
|
1594
|
+
const j = skipWsAndComments(i + 1);
|
|
1595
|
+
if (text[j] === "}" || text[j] === "]") {
|
|
1596
|
+
i = i + 1;
|
|
1597
|
+
continue;
|
|
1598
|
+
}
|
|
1599
|
+
out += c;
|
|
1600
|
+
i++;
|
|
1601
|
+
continue;
|
|
1602
|
+
}
|
|
1603
|
+
out += c;
|
|
1604
|
+
i++;
|
|
1605
|
+
}
|
|
1606
|
+
return out;
|
|
1607
|
+
}
|
|
1608
|
+
function parseJsoncFile(file) {
|
|
1609
|
+
let text;
|
|
1610
|
+
try {
|
|
1611
|
+
text = import_node_fs2.default.readFileSync(file, "utf8");
|
|
1612
|
+
} catch {
|
|
1613
|
+
return null;
|
|
1614
|
+
}
|
|
1615
|
+
try {
|
|
1616
|
+
return JSON.parse(stripJsonc(text));
|
|
1617
|
+
} catch {
|
|
1618
|
+
return null;
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
function hostPathsCovers(root, remoteKey, preciseDir) {
|
|
1536
1622
|
let files = [];
|
|
1537
1623
|
try {
|
|
1538
|
-
files = import_node_fs2.default.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f));
|
|
1624
|
+
files = import_node_fs2.default.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f) && f !== "tsconfig.node.json");
|
|
1539
1625
|
} catch {
|
|
1540
1626
|
return false;
|
|
1541
1627
|
}
|
|
1542
1628
|
for (const f of files) {
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1629
|
+
const paths = inheritedPaths(import_node_path3.default.join(root, f));
|
|
1630
|
+
if (!paths) continue;
|
|
1631
|
+
if (!Object.keys(paths).some((k) => k === `${remoteKey}/*`)) continue;
|
|
1632
|
+
if (preciseDir) {
|
|
1633
|
+
const preciseReal = safeReal(preciseDir);
|
|
1634
|
+
const coversPrecise = preciseReal !== null && Object.entries(paths).filter(([k]) => k === `${remoteKey}/*`).some(
|
|
1635
|
+
([, targets]) => (Array.isArray(targets) ? targets : [targets]).some((t) => {
|
|
1636
|
+
if (typeof t !== "string") return false;
|
|
1637
|
+
const base = t.includes("*") ? t.slice(0, t.indexOf("*")) : t;
|
|
1638
|
+
const resolvedBase = import_node_path3.default.resolve(import_node_path3.default.dirname(import_node_path3.default.join(root, f)), base);
|
|
1639
|
+
return preciseReal === resolvedBase || preciseReal.startsWith(resolvedBase + import_node_path3.default.sep);
|
|
1640
|
+
})
|
|
1641
|
+
);
|
|
1642
|
+
if (!coversPrecise) {
|
|
1643
|
+
console.warn(
|
|
1644
|
+
`[fulgurjs] \u7C7B\u578B\u751F\u6210\uFF1A\u5BBF\u4E3B ${f} \u5DF2\u4E3A "${remoteKey}" \u914D\u7F6E paths\uFF0C\u4F46\u76EE\u6807\u672A\u6307\u5411\u63D2\u4EF6\u751F\u6210\u7684\u7CBE\u786E\u76EE\u5F55\uFF08${preciseDir}\uFF09\u3002\u5DF2\u8DF3\u8FC7\u540C\u540D\u5BBD\u677E\u58F0\u660E\u4EE5\u907F\u514D\u906E\u853D\u4F60\u7684\u6620\u5C04\uFF1B\u6E90\u7801\u7EA7\u7C7B\u578B\u7531\u4F60\u7684 paths \u76EE\u6807\u51B3\u5B9A\uFF0C\u8BF7\u6838\u5BF9\u5176\u89E3\u6790\u7ED3\u679C\u3002`
|
|
1645
|
+
);
|
|
1646
|
+
}
|
|
1557
1647
|
}
|
|
1648
|
+
return true;
|
|
1558
1649
|
}
|
|
1559
1650
|
return false;
|
|
1560
1651
|
}
|
|
1652
|
+
function inheritedPaths(tsconfigFile) {
|
|
1653
|
+
const seen = /* @__PURE__ */ new Set();
|
|
1654
|
+
let current = tsconfigFile;
|
|
1655
|
+
while (current && !seen.has(current)) {
|
|
1656
|
+
seen.add(current);
|
|
1657
|
+
const cfg = parseJsoncFile(current);
|
|
1658
|
+
if (!cfg) return void 0;
|
|
1659
|
+
if (cfg.compilerOptions?.paths) return cfg.compilerOptions.paths;
|
|
1660
|
+
if (!cfg.extends) return void 0;
|
|
1661
|
+
const ext = cfg.extends;
|
|
1662
|
+
let next = null;
|
|
1663
|
+
if (import_node_path3.default.isAbsolute(ext)) {
|
|
1664
|
+
next = ext;
|
|
1665
|
+
} else if (ext.startsWith(".")) {
|
|
1666
|
+
next = import_node_path3.default.resolve(import_node_path3.default.dirname(current), ext);
|
|
1667
|
+
} else {
|
|
1668
|
+
try {
|
|
1669
|
+
next = (0, import_node_module2.createRequire)(current).resolve(ext.endsWith(".json") ? ext : `${ext}.json`, { paths: [import_node_path3.default.dirname(current)] });
|
|
1670
|
+
} catch {
|
|
1671
|
+
next = null;
|
|
1672
|
+
}
|
|
1673
|
+
}
|
|
1674
|
+
if (next !== null && !next.endsWith(".json")) next = `${next}.json`;
|
|
1675
|
+
current = next && import_node_fs2.default.existsSync(next) ? next : null;
|
|
1676
|
+
}
|
|
1677
|
+
return void 0;
|
|
1678
|
+
}
|
|
1679
|
+
function safeReal(p) {
|
|
1680
|
+
try {
|
|
1681
|
+
return import_node_fs2.default.realpathSync(p);
|
|
1682
|
+
} catch {
|
|
1683
|
+
return import_node_path3.default.resolve(p);
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1561
1686
|
async function generateDevTypes(options, server) {
|
|
1562
1687
|
const dtsOpt = options.dts === void 0 ? true : options.dts;
|
|
1563
1688
|
if (dtsOpt === false) return;
|
|
@@ -1687,7 +1812,7 @@ async function generateDevTypes(options, server) {
|
|
|
1687
1812
|
accepted++;
|
|
1688
1813
|
}
|
|
1689
1814
|
if (accepted > 0) {
|
|
1690
|
-
const pathsEnabled = hostPathsCovers(options.root, remote.key);
|
|
1815
|
+
const pathsEnabled = hostPathsCovers(options.root, remote.key, preciseDir);
|
|
1691
1816
|
if (pathsEnabled) {
|
|
1692
1817
|
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
1818
|
console.log(
|
|
@@ -1894,7 +2019,7 @@ function syncViteCacheMarker(root, pluginVersion, log) {
|
|
|
1894
2019
|
}
|
|
1895
2020
|
|
|
1896
2021
|
// src/runtime-code.gen.ts
|
|
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';
|
|
2022
|
+
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.2";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';
|
|
1898
2023
|
|
|
1899
2024
|
// src/index.ts
|
|
1900
2025
|
function readRuntimeCode() {
|
|
@@ -1911,7 +2036,7 @@ function enumerateCjsExports(packageName, appRoot) {
|
|
|
1911
2036
|
if (cached) return cached;
|
|
1912
2037
|
let names = [];
|
|
1913
2038
|
try {
|
|
1914
|
-
const appRequire = (0,
|
|
2039
|
+
const appRequire = (0, import_node_module3.createRequire)(import_node_path6.default.join(appRoot, "package.json"));
|
|
1915
2040
|
const mod = appRequire(packageName);
|
|
1916
2041
|
names = Object.keys(mod);
|
|
1917
2042
|
} catch {
|
|
@@ -1996,10 +2121,10 @@ function federation(options) {
|
|
|
1996
2121
|
const escapeRe = (v) => v.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1997
2122
|
const filter = new RegExp(`^(${[...aliasToShare.keys()].map(escapeRe).join("|")})$`);
|
|
1998
2123
|
const devBase = normalizeBase(userConfig.base ?? "/");
|
|
2124
|
+
const facadeUrlFor = (shareKey) => `${devBase}@id/__x00__virtual:fulgurjs-shared-ns:${shareKey}?import`;
|
|
1999
2125
|
const sharedExternal = {
|
|
2000
2126
|
name: "fulgurjs:optimize-shared-external",
|
|
2001
2127
|
setup(build) {
|
|
2002
|
-
const facadeUrlFor = (shareKey) => `${devBase}@id/__x00__virtual:fulgurjs-shared-ns:${shareKey}?import`;
|
|
2003
2128
|
const b = build;
|
|
2004
2129
|
b.onResolve({ filter: /fulgurjs-shared-ns:/ }, (args) => ({ path: args.path, external: true }));
|
|
2005
2130
|
b.onResolve({ filter }, (args) => {
|
|
@@ -2020,8 +2145,28 @@ export { default } from ${JSON.stringify(url)};
|
|
|
2020
2145
|
});
|
|
2021
2146
|
}
|
|
2022
2147
|
};
|
|
2148
|
+
const rolldownShared = {
|
|
2149
|
+
name: "fulgurjs:optimize-shared-external",
|
|
2150
|
+
resolveId(source, _importer, opts = {}) {
|
|
2151
|
+
if (source.includes("fulgurjs-shared-ns:")) return { id: source, external: true };
|
|
2152
|
+
if (source.startsWith(`${FULGURJS_STUB_NAMESPACE}:fulgurjs-stub:`)) return source.slice(FULGURJS_STUB_NAMESPACE.length + 1);
|
|
2153
|
+
if (source.startsWith("fulgurjs-stub:")) return source;
|
|
2154
|
+
if (opts.isEntry) return null;
|
|
2155
|
+
const s = aliasToShare.get(source);
|
|
2156
|
+
if (!s) return null;
|
|
2157
|
+
return `fulgurjs-stub:${s.shareKey}`;
|
|
2158
|
+
},
|
|
2159
|
+
load(id) {
|
|
2160
|
+
if (!id.startsWith("fulgurjs-stub:")) return null;
|
|
2161
|
+
const url = facadeUrlFor(id.slice("fulgurjs-stub:".length));
|
|
2162
|
+
return `export * from ${JSON.stringify(url)};
|
|
2163
|
+
export { default } from ${JSON.stringify(url)};
|
|
2164
|
+
`;
|
|
2165
|
+
}
|
|
2166
|
+
};
|
|
2023
2167
|
extra.optimizeDeps = {
|
|
2024
|
-
esbuildOptions: { plugins: [sharedExternal] }
|
|
2168
|
+
esbuildOptions: { plugins: [sharedExternal] },
|
|
2169
|
+
rolldownOptions: { plugins: [rolldownShared] }
|
|
2025
2170
|
};
|
|
2026
2171
|
}
|
|
2027
2172
|
}
|
|
@@ -2353,7 +2498,7 @@ ${code}`, map: null };
|
|
|
2353
2498
|
let file = null;
|
|
2354
2499
|
if (selfFile) {
|
|
2355
2500
|
try {
|
|
2356
|
-
const req = (0,
|
|
2501
|
+
const req = (0, import_node_module3.createRequire)(selfFile);
|
|
2357
2502
|
file = req.resolve(`${alias}/package.json`, { paths: [selfFile] }).replace(/\/package\.json$/, "");
|
|
2358
2503
|
} catch {
|
|
2359
2504
|
file = null;
|
|
@@ -2437,10 +2582,10 @@ ${code}`, map: null };
|
|
|
2437
2582
|
const entryChunkName = Object.keys(bundle).find((k) => bundle[k].type === "chunk" && k === n.filename);
|
|
2438
2583
|
const entryChunk = entryChunkName ? bundle[entryChunkName] : void 0;
|
|
2439
2584
|
if (entryChunk && entryChunk.type === "chunk" && /import\((['"])[^'")]+\1\)/.test(entryChunk.code)) {
|
|
2440
|
-
const helper =
|
|
2585
|
+
const helper = genProdRetryHelper();
|
|
2441
2586
|
entryChunk.code = entryChunk.code.replace(
|
|
2442
2587
|
/import\((['"])([^'")]+)\1\)/g,
|
|
2443
|
-
(_m, q, u) => `
|
|
2588
|
+
(_m, q, u) => `__fgR(${q}${u}${q})`
|
|
2444
2589
|
);
|
|
2445
2590
|
entryChunk.code = `${helper}
|
|
2446
2591
|
${entryChunk.code}`;
|