@fulgurjs/federation 5.7.0 → 5.7.1
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/README.en.md +6 -0
- package/README.md +4 -0
- package/dist/bridge-app-react.cjs +5 -1
- package/dist/bridge-app-react.js +5 -1
- package/dist/{chunk-OLQGJR2Z.js → chunk-GLASM5EX.js} +47 -17
- package/dist/{chunk-NHSQHAS4.js → chunk-V6EASSCR.js} +1 -1
- package/dist/{chunk-WOYDFERL.js → chunk-X34EJB4H.js} +1 -1
- package/dist/index.cjs +47 -4
- package/dist/index.js +47 -4
- package/dist/react.d.ts +4 -0
- package/dist/runtime-entry.d.ts +4 -0
- package/dist/runtime.js +22 -21
- package/examples/bridge/react-host/package-lock.json +4 -4
- package/examples/bridge/react-host/package.json +1 -1
- package/examples/bridge/react-remote/package-lock.json +4 -4
- package/examples/bridge/react-remote/package.json +1 -1
- package/examples/bridge/vue-host/package-lock.json +4 -4
- package/examples/bridge/vue-host/package.json +3 -3
- package/examples/bridge/vue-remote/package-lock.json +4 -4
- package/examples/bridge/vue-remote/package.json +1 -1
- package/examples/react/host/package-lock.json +4 -4
- package/examples/react/host/package.json +1 -1
- package/examples/react/remote/package-lock.json +4 -4
- package/examples/react/remote/package.json +1 -1
- package/examples/vue/host/package-lock.json +4 -4
- package/examples/vue/host/package.json +1 -1
- package/examples/vue/remote/package-lock.json +4 -4
- package/examples/vue/remote/package.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.7.1
|
|
4
|
+
|
|
5
|
+
- React 桥接兼容 react-dom/client 的 default-only CJS 命名空间(Vite 6 + React 18),使用同一 renderer 完成真实提交与卸载。
|
|
6
|
+
|
|
7
|
+
- runtime gzip 预算 10240→10496B(实测 10273B):共享屏障及旧冻结内核兼容为必要逻辑增量,继续保留硬门禁。
|
|
8
|
+
|
|
9
|
+
- 修复同步消费拒绝异步 resolveShare 后的迟到 Promise 拒绝,避免额外 unhandledrejection。
|
|
10
|
+
- HTML 入口配置 runtimePlugins 时增加异步协商屏障;远程 expose 执行前准备共享决策,消费方门面保持原有同步形态。异步选择的外部条目与静态/动态实例统一复用;provider 失败后允许重新裁决。
|
|
11
|
+
- 首次消费者接管单例时按真实物理版本登记,不再把 React 18 实例填入标注 React 19 的槽位而绕过 strictVersion;另一版本的单例正在异步加载时拒绝同步接管,避免并发双实例。
|
|
12
|
+
- runtimePlugins 的相对路径以项目 root 解析,避免入口/虚拟模块位置改变后解析错误。
|
|
13
|
+
- 新增 demo/react-versions:React 19 嵌 React 18 隔离、异步 hook 覆盖首次静态导入、严格拒绝与版本对齐远程的同页恢复、Vue 宿主对齐 React 18。新增 Vite 6/8 dev+prod 浏览器 CI。
|
|
14
|
+
- 自定义无 HTML 的入口须先完成动态协商再执行消费者,已求值的静态绑定不能追溯改写。
|
|
15
|
+
|
|
3
16
|
## 5.7.0
|
|
4
17
|
|
|
5
18
|
- **修复:Vite 8 同步协商门面的共享语义补修(strictVersion 拒绝 + resolveShare 契约)**——5.6.0 引入的同步门面(V8-SYNC-FACADE)存在两处语义缺陷,本轮以 runtime 新决策入口 `loadShareSync` 统一修复,绑定门面/命名空间门面/CJS 垫片三条同步路径全部改走该入口(各引擎一致):
|
package/README.en.md
CHANGED
|
@@ -182,6 +182,12 @@ Standalone page-level boundary. Props: `children`, `fallback` (node or `({ error
|
|
|
182
182
|
- No `keepAliveNames` / no keep-alive promise (Vue-specific); routing is not a runtime dependency — render `component(spec)` output from your router (React Router examples in `examples/react/host`; route params reach remote pages as props)
|
|
183
183
|
- Cross-framework Context: host and remote get the **same Context object** through the same expose instance; the plugin does not auto-bridge arbitrary React Contexts
|
|
184
184
|
|
|
185
|
+
### Async shared decisions and React version isolation (5.7.1)
|
|
186
|
+
|
|
187
|
+
HTML entries configured with `runtimePlugins` negotiate and load shared dependencies before dynamically executing the application. Remote containers prepare shared decisions before executing exposes. Sync facades reuse the same decision and instance, including async hooks selecting a lower version or an external entry. Vite 8 consumer facades remain synchronous; the bootstrap boundary keeps negotiation waits out of consumer dependency cycles.
|
|
188
|
+
|
|
189
|
+
Library/custom entries without HTML, and policies registered after application startup, must `await loadShare(name, opts)` before dynamically importing new consumers. Existing evaluated static bindings cannot be changed retroactively. An unprepared synchronous consumer still reports MFU-004 with `details.syncUnsupported`; late hook rejections are handled rather than becoming additional unhandled rejections. Local singleton adoption records the instance under its actual version, preserving strict version rejection. To run React 18 and 19 together, isolate React and its renderer in separate share scopes and bridge plain props/callbacks, not React elements or Context objects. See [the runnable version isolation demo](demo/react-versions/README.md).
|
|
190
|
+
|
|
185
191
|
### 8.2 Runtime API — `@fulgurjs/federation/runtime` (Vue apps) and common functions on `/react`
|
|
186
192
|
|
|
187
193
|
| Function | Signature | Semantics |
|
package/README.md
CHANGED
|
@@ -508,6 +508,10 @@ const Panel = await loadRemote('shop/Panel', {
|
|
|
508
508
|
(`runtimePlugins: ['./src/fulgurjsPlugin.ts']`)
|
|
509
509
|
|
|
510
510
|
> hook 错误契约:`beforeLoadRemote` / `afterLoadRemote` 是**观测 hook**——自身抛错只告警、不改写加载结果;`resolveShare` 是**决策 hook**——显式抛错向调用方传播(绝不静默回退到另一份共享依赖)。
|
|
511
|
+
>
|
|
512
|
+
> **resolveShare 与消费路径(5.7.1 起)**:配置了 `runtimePlugins` 的 HTML 入口在执行应用前完成共享裁决与加载;远程容器也会在执行 expose 前完成异步裁决。同步门面复用同一消费条件的决策与实例,异步 hook 可以选择低版本或原表之外的条目,不会被本地副本覆盖。应用与 provider 之间保留动态导入边界,Vite 8 的消费方门面仍无 TLA,避免把协商等待传入消费方循环依赖。
|
|
513
|
+
>
|
|
514
|
+
> **入口边界**:没有 HTML 入口的 library/自定义入口,或应用运行后才调用 `registerPlugins` 更改策略,需要先 `await loadShare(name, opts)`,再动态导入新的消费者;已经求值的静态绑定无法追溯改写。未准备的同步消费者遇到异步 hook 仍给出 `MFU-004`(`details.syncUnsupported: true`),并接管其迟到拒绝,避免额外 `unhandledrejection`。`strictVersion` 冲突给出 MFU-003;本地接管的实例按真实版本登记,不能借用另一版本槽位绕过检查。需要同时使用 React 18/19 时,为整组 React、renderer 及其消费方设置独立 `shareScope`,通过桥接传普通 props/回调,不跨 renderer 传 ReactElement 或 Context。可运行示例见 [React 版本隔离与恢复](demo/react-versions/README.md)。
|
|
511
515
|
|
|
512
516
|
```ts
|
|
513
517
|
import type { RuntimePlugin } from '@fulgurjs/federation/runtime'
|
|
@@ -79,8 +79,12 @@ function defineBridgeApp(factory, options = {}) {
|
|
|
79
79
|
entriesByEl.set(el, entry);
|
|
80
80
|
const promise = (async () => {
|
|
81
81
|
const reactDomClient = await import("react-dom/client");
|
|
82
|
+
const createRoot = reactDomClient.createRoot ?? reactDomClient.default?.createRoot;
|
|
82
83
|
if (entry.status === "abort" || entriesByEl.get(el) !== entry) return;
|
|
83
|
-
|
|
84
|
+
if (typeof createRoot !== "function") throw new Error(
|
|
85
|
+
"react-dom/client \u672A\u5BFC\u51FA createRoot\u3002\u8BF7\u6838\u5BF9 React \u4E0E renderer \u7248\u672C\u53CA\u5171\u4EAB\u5B50\u8DEF\u5F84\u914D\u7F6E\u3002"
|
|
86
|
+
);
|
|
87
|
+
const root = createRoot(el);
|
|
84
88
|
entry.root = root;
|
|
85
89
|
entry.status = "live";
|
|
86
90
|
const phaseRef = { current: "pending" };
|
package/dist/bridge-app-react.js
CHANGED
|
@@ -45,8 +45,12 @@ function defineBridgeApp(factory, options = {}) {
|
|
|
45
45
|
entriesByEl.set(el, entry);
|
|
46
46
|
const promise = (async () => {
|
|
47
47
|
const reactDomClient = await import("react-dom/client");
|
|
48
|
+
const createRoot = reactDomClient.createRoot ?? reactDomClient.default?.createRoot;
|
|
48
49
|
if (entry.status === "abort" || entriesByEl.get(el) !== entry) return;
|
|
49
|
-
|
|
50
|
+
if (typeof createRoot !== "function") throw new Error(
|
|
51
|
+
"react-dom/client \u672A\u5BFC\u51FA createRoot\u3002\u8BF7\u6838\u5BF9 React \u4E0E renderer \u7248\u672C\u53CA\u5171\u4EAB\u5B50\u8DEF\u5F84\u914D\u7F6E\u3002"
|
|
52
|
+
);
|
|
53
|
+
const root = createRoot(el);
|
|
50
54
|
entry.root = root;
|
|
51
55
|
entry.status = "live";
|
|
52
56
|
const phaseRef = { current: "pending" };
|
|
@@ -550,12 +550,14 @@ function createRuntime() {
|
|
|
550
550
|
if (pick.version === localVersion) {
|
|
551
551
|
pick.value = instance;
|
|
552
552
|
pick.loaded = true;
|
|
553
|
-
} else if (opts.singleton) {
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
553
|
+
} else if (opts.singleton && !pick.pendingGet) {
|
|
554
|
+
registerShare2(scopeName, key, localVersion, () => Promise.resolve(instance), {
|
|
555
|
+
from: "fulgurjs:local-fallback",
|
|
556
|
+
loaded: true
|
|
557
|
+
});
|
|
558
|
+
const local = scope[key][localVersion];
|
|
559
|
+
local.value = instance;
|
|
560
|
+
local.loaded = true;
|
|
559
561
|
}
|
|
560
562
|
}
|
|
561
563
|
} catch {
|
|
@@ -573,7 +575,9 @@ function createRuntime() {
|
|
|
573
575
|
const scopeName = opts.shareScope || "default";
|
|
574
576
|
const shareKey = opts.shareKey || name;
|
|
575
577
|
const byName = getScope(scopeName)[shareKey] || {};
|
|
576
|
-
|
|
578
|
+
const requestKey = shareRequestKey(name, opts);
|
|
579
|
+
const snapshot = hooks.resolveShare ? resolvedShareSnapshots.get(requestKey) : void 0;
|
|
580
|
+
let entry = snapshot || selectShareEntry(name, opts);
|
|
577
581
|
if (!entry) {
|
|
578
582
|
if (opts.fallback) {
|
|
579
583
|
const instance2 = await opts.fallback();
|
|
@@ -590,7 +594,7 @@ function createRuntime() {
|
|
|
590
594
|
emitError({ remote: shareKey, error: err });
|
|
591
595
|
throw err;
|
|
592
596
|
}
|
|
593
|
-
if (hooks.resolveShare) {
|
|
597
|
+
if (hooks.resolveShare && !snapshot) {
|
|
594
598
|
const picked = await hooks.resolveShare({
|
|
595
599
|
shareKey,
|
|
596
600
|
shareScope: scopeName,
|
|
@@ -599,6 +603,7 @@ function createRuntime() {
|
|
|
599
603
|
available: Object.values(byName)
|
|
600
604
|
});
|
|
601
605
|
if (picked) entry = picked;
|
|
606
|
+
resolvedShareSnapshots.set(requestKey, entry);
|
|
602
607
|
}
|
|
603
608
|
if (entry.value !== void 0) {
|
|
604
609
|
resolvedShareSnapshots.set(shareRequestKey(name, opts), entry);
|
|
@@ -622,6 +627,7 @@ function createRuntime() {
|
|
|
622
627
|
return entry.value;
|
|
623
628
|
}
|
|
624
629
|
entry.loaded = false;
|
|
630
|
+
if (resolvedShareSnapshots.get(requestKey) === entry) resolvedShareSnapshots.delete(requestKey);
|
|
625
631
|
throw e;
|
|
626
632
|
} finally {
|
|
627
633
|
if (entry.pendingGet === pending) entry.pendingGet = void 0;
|
|
@@ -644,7 +650,7 @@ function createRuntime() {
|
|
|
644
650
|
const snapKey = shareRequestKey(name, opts);
|
|
645
651
|
const snap = resolvedShareSnapshots.get(snapKey);
|
|
646
652
|
if (snap && snap.value !== void 0) return { kind: "ready", value: snap.value };
|
|
647
|
-
const pickedRaw = hooks.resolveShare({
|
|
653
|
+
const pickedRaw = snap || hooks.resolveShare({
|
|
648
654
|
shareKey,
|
|
649
655
|
shareScope: scopeName,
|
|
650
656
|
requiredVersion: opts.requiredVersion,
|
|
@@ -652,11 +658,13 @@ function createRuntime() {
|
|
|
652
658
|
available: Object.values(getScope(scopeName)[shareKey] || {})
|
|
653
659
|
});
|
|
654
660
|
if (pickedRaw && typeof pickedRaw.then === "function") {
|
|
661
|
+
void Promise.resolve(pickedRaw).catch(() => {
|
|
662
|
+
});
|
|
655
663
|
throw new FgError(
|
|
656
664
|
ErrorCodes.SHARE_NOT_AVAILABLE,
|
|
657
665
|
`\u73B0\u8C61\uFF1AresolveShare \u5BF9\u5171\u4EAB "${shareKey}" \u8FD4\u56DE\u4E86 Promise\uFF0C\u4F46\u8BE5\u5171\u4EAB\u6B63\u88AB\u540C\u6B65\u9759\u6001\u5BFC\u5165\u6D88\u8D39\uFF08Vite 8 \u540C\u6B65\u534F\u5546\u95E8\u9762\uFF09\u3002
|
|
658
666
|
\u539F\u56E0\uFF1A\u6A21\u5757\u6C42\u503C\u671F\u65E0\u6CD5\u7B49\u5F85\u5F02\u6B65\u51B3\u7B56\uFF1B\u9759\u6001\u5BFC\u5165\u4E0D\u80FD\u9759\u9ED8\u5FFD\u7565 hook \u51B3\u7B56\u3002
|
|
659
|
-
\u4FEE\u6CD5\
|
|
667
|
+
\u4FEE\u6CD5\uFF1AVite 8 HTML \u5165\u53E3\u4F1A\u5148\u5B8C\u6210\u5F02\u6B65\u534F\u5546\uFF1B\u5176\u4ED6\u5165\u53E3\u8BF7\u5148\u52A8\u6001 loadShare \u5EFA\u7ACB\u5FEB\u7167\uFF0C\u518D\u5BFC\u5165\u6D88\u8D39\u8005\uFF0C\u6216\u8BA9\u8BE5\u952E\u540C\u6B65\u8FD4\u56DE picked\u3002`,
|
|
660
668
|
{ shareKey, requiredVersion: opts.requiredVersion, syncUnsupported: true }
|
|
661
669
|
);
|
|
662
670
|
}
|
|
@@ -669,8 +677,9 @@ function createRuntime() {
|
|
|
669
677
|
if (picked.version !== void 0 && picked.version === opts.localVersion) return { kind: "local" };
|
|
670
678
|
throw new FgError(
|
|
671
679
|
ErrorCodes.SHARE_NOT_AVAILABLE,
|
|
672
|
-
`\u73B0\u8C61\uFF1AresolveShare \u4E3A
|
|
673
|
-
\
|
|
680
|
+
`\u73B0\u8C61\uFF1AresolveShare \u4E3A "${shareKey}" \u9009\u62E9\u4E86\u672A\u5C31\u7EEA\u7684 ${picked.version ?? "\u6761\u76EE"}\u3002
|
|
681
|
+
\u539F\u56E0\uFF1A\u540C\u6B65\u6D88\u8D39\u4E0D\u80FD\u7B49\u5F85\u52A0\u8F7D\u3002
|
|
682
|
+
\u4FEE\u6CD5\uFF1A\u5148\u52A8\u6001 loadShare \u518D\u5BFC\u5165\u6D88\u8D39\u8005\uFF0C\u6216\u9009\u62E9\u5DF2\u5C31\u7EEA\u5B9E\u4F8B/\u672C\u5730\u7248\u672C ${opts.localVersion ?? "\u672A\u58F0\u660E"}\u3002`,
|
|
674
683
|
{ shareKey, requiredVersion: opts.requiredVersion, syncUnsupported: true }
|
|
675
684
|
);
|
|
676
685
|
}
|
|
@@ -679,12 +688,12 @@ function createRuntime() {
|
|
|
679
688
|
if (!entry) return { kind: "local" };
|
|
680
689
|
if (entry.value !== void 0) return { kind: "ready", value: entry.value };
|
|
681
690
|
if (entry.version !== void 0 && entry.version === opts.localVersion) return { kind: "local" };
|
|
682
|
-
if (opts.singleton) {
|
|
683
|
-
if (opts.strictVersion) {
|
|
691
|
+
if (opts.singleton || opts.strictVersion && opts.requiredVersion && (!opts.localVersion || !satisfies(opts.localVersion, opts.requiredVersion))) {
|
|
692
|
+
if (opts.strictVersion || entry.pendingGet) {
|
|
684
693
|
throw new FgError(
|
|
685
694
|
ErrorCodes.SHARE_NOT_AVAILABLE,
|
|
686
|
-
`\u73B0\u8C61\uFF1A\u5171\u4EAB
|
|
687
|
-
\u539F\u56E0\uFF1A\
|
|
695
|
+
`\u73B0\u8C61\uFF1A\u5171\u4EAB "${shareKey}" \u9009\u4E2D\u4E86 ${entry.from} \u63D0\u4F9B\u7684 ${entry.version}\uFF08\u5C1A\u672A\u52A0\u8F7D\uFF09\uFF0C\u540C\u6B65\u9759\u6001\u5BFC\u5165\u65E0\u6CD5\u7B49\u5F85\u5176\u5B9E\u4F8B\u5C31\u7EEA\u3002
|
|
696
|
+
\u539F\u56E0\uFF1A\u4E0D\u80FD\u6539\u7528\u4E0D\u517C\u5BB9\u7684\u672C\u5730\u526F\u672C\u6216\u5206\u88C2\u5355\u4F8B\u3002
|
|
688
697
|
\u4FEE\u6CD5\uFF1A\u8BA9\u8BE5\u5171\u4EAB\u7684\u9996\u6B21\u6D88\u8D39\u5148\u7ECF\u4E00\u6B21\u52A8\u6001 loadShare \u5B8C\u6210\u52A0\u8F7D\uFF0C\u6216\u5C06\u672C\u5E94\u7528\u7248\u672C\u4E0E\u4F5C\u7528\u57DF\u63D0\u4F9B\u7248\u672C\u5BF9\u9F50\u3002`,
|
|
689
698
|
{ shareKey, requiredVersion: opts.requiredVersion, syncUnsupported: true }
|
|
690
699
|
);
|
|
@@ -699,10 +708,27 @@ function createRuntime() {
|
|
|
699
708
|
return { kind: "local" };
|
|
700
709
|
}
|
|
701
710
|
console.warn(
|
|
702
|
-
`[fulgurjs] \u5171\u4EAB "${shareKey}"
|
|
711
|
+
`[fulgurjs] \u5171\u4EAB "${shareKey}"\uFF1A\u975E\u5355\u4F8B\u540C\u6B65\u6D88\u8D39\u4F7F\u7528\u672C\u5730 ${opts.localVersion ?? ""}\uFF0C\u8FDC\u7A0B ${entry.version} \u5C1A\u672A\u5C31\u7EEA\u3002`
|
|
703
712
|
);
|
|
704
713
|
return { kind: "local" };
|
|
705
714
|
}
|
|
715
|
+
async function prepareShares2(requests) {
|
|
716
|
+
if (!hooks.resolveShare) return;
|
|
717
|
+
for (const { name, opts } of requests) {
|
|
718
|
+
const key = shareRequestKey(name, opts);
|
|
719
|
+
if (resolvedShareSnapshots.has(key)) continue;
|
|
720
|
+
const entry = selectShareEntry(name, opts);
|
|
721
|
+
const picked = await hooks.resolveShare({
|
|
722
|
+
shareKey: opts.shareKey || name,
|
|
723
|
+
shareScope: opts.shareScope || "default",
|
|
724
|
+
requiredVersion: opts.requiredVersion,
|
|
725
|
+
picked: entry,
|
|
726
|
+
available: Object.values(getScope(opts.shareScope || "default")[opts.shareKey || name] || {})
|
|
727
|
+
}) || entry;
|
|
728
|
+
if (picked) resolvedShareSnapshots.set(key, picked);
|
|
729
|
+
}
|
|
730
|
+
for (const { name, opts } of requests) await loadShare2(name, opts);
|
|
731
|
+
}
|
|
706
732
|
function sanitizeUrl(u) {
|
|
707
733
|
try {
|
|
708
734
|
const x = new URL(u, typeof location < "u" ? location.href : "http://f.invalid");
|
|
@@ -1138,6 +1164,7 @@ ${hints.join("\n")}`,
|
|
|
1138
1164
|
registerPlugins: registerPlugins2,
|
|
1139
1165
|
loadShare: loadShare2,
|
|
1140
1166
|
loadShareSync: loadShareSync2,
|
|
1167
|
+
prepareShares: prepareShares2,
|
|
1141
1168
|
getLoadedShare: getLoadedShare2,
|
|
1142
1169
|
pinLoadedShare: pinLoadedShare2,
|
|
1143
1170
|
loadRemote: loadRemote2,
|
|
@@ -1161,6 +1188,9 @@ var registerRemote = runtime.registerRemote;
|
|
|
1161
1188
|
var registerPlugins = runtime.registerPlugins;
|
|
1162
1189
|
var loadShare = runtime.loadShare;
|
|
1163
1190
|
var getLoadedShare = runtime.getLoadedShare;
|
|
1191
|
+
var prepareShares = runtime.prepareShares || (async (requests) => {
|
|
1192
|
+
for (const { name, opts } of requests) await runtime.loadShare(name, opts);
|
|
1193
|
+
});
|
|
1164
1194
|
var loadShareSync = runtime.loadShareSync;
|
|
1165
1195
|
var pinLoadedShare = runtime.pinLoadedShare;
|
|
1166
1196
|
var loadRemote = runtime.loadRemote;
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
releaseBridgeSession,
|
|
11
11
|
resolveBridgeContext,
|
|
12
12
|
withBridgeTimeout
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-GLASM5EX.js";
|
|
14
14
|
|
|
15
15
|
// src/bridge-host-vue.ts
|
|
16
16
|
import { defineComponent, h, onActivated, onBeforeUnmount, onDeactivated, onMounted, ref, shallowRef, toRaw, watch } from "vue";
|
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.7.
|
|
46
|
+
var RUNTIME_VERSION = "5.7.1";
|
|
47
47
|
|
|
48
48
|
// src/dev-cors.ts
|
|
49
49
|
function normalizeDevCorsOrigins(input) {
|
|
@@ -500,7 +500,7 @@ function normalizeOptions(options, root, command) {
|
|
|
500
500
|
runtime: options.runtime,
|
|
501
501
|
runtimeChunk: options.runtimeChunk,
|
|
502
502
|
manifest: options.manifest === void 0 ? true : !!options.manifest,
|
|
503
|
-
runtimePlugins: options.runtimePlugins ?? [],
|
|
503
|
+
runtimePlugins: (options.runtimePlugins ?? []).map((id) => id.startsWith(".") ? import_node_path.default.resolve(root, id) : id),
|
|
504
504
|
dts: options.dts === void 0 ? true : options.dts,
|
|
505
505
|
root,
|
|
506
506
|
pluginVersion: RUNTIME_VERSION,
|
|
@@ -892,6 +892,28 @@ function genInitModule(options, command) {
|
|
|
892
892
|
return `${lines.join("\n")}
|
|
893
893
|
`;
|
|
894
894
|
}
|
|
895
|
+
function prepareSharesCode(options) {
|
|
896
|
+
const requests = options.shared.map((item) => ({
|
|
897
|
+
name: item.shareKey,
|
|
898
|
+
opts: {
|
|
899
|
+
shareScope: item.shareScope,
|
|
900
|
+
shareKey: item.shareKey,
|
|
901
|
+
requiredVersion: item.requiredVersion === false ? void 0 : item.requiredVersion,
|
|
902
|
+
singleton: item.singleton,
|
|
903
|
+
strictVersion: item.strictVersion,
|
|
904
|
+
localVersion: item.version
|
|
905
|
+
}
|
|
906
|
+
}));
|
|
907
|
+
return `await __fulgurjs_prepare(${JSON.stringify(requests)});`;
|
|
908
|
+
}
|
|
909
|
+
function genAsyncBootstrap(options, entry) {
|
|
910
|
+
return [
|
|
911
|
+
genInitModule(options, "build"),
|
|
912
|
+
'import { prepareShares as __fulgurjs_prepare } from "virtual:fulgurjs-runtime";',
|
|
913
|
+
prepareSharesCode(options),
|
|
914
|
+
`await import(${JSON.stringify(entry)});`
|
|
915
|
+
].join("\n");
|
|
916
|
+
}
|
|
895
917
|
function manifestUrlFor(r, command) {
|
|
896
918
|
const entry = command === "serve" ? r.devEntry : r.prodEntry;
|
|
897
919
|
if (!entry) return null;
|
|
@@ -1001,6 +1023,7 @@ function genDevRemoteEntry(options, base) {
|
|
|
1001
1023
|
const b = base.endsWith("/") ? base : `${base}/`;
|
|
1002
1024
|
const remoteLines = registerRemotesLines(options, "serve");
|
|
1003
1025
|
return `import ${JSON.stringify(`${b}@vite/client`)};
|
|
1026
|
+
import { prepareShares as __fulgurjs_prepare } from ${JSON.stringify(`${b}@id/virtual:fulgurjs-runtime`)};
|
|
1004
1027
|
import { name as _fulgurjs_name, exposes, provides } from ${JSON.stringify(`${b}@id/__x00__virtual:fulgurjs-provides`)};
|
|
1005
1028
|
${remoteLines.length > 0 ? `import { registerRemotes } from ${JSON.stringify(`${b}@id/virtual:fulgurjs-runtime`)};
|
|
1006
1029
|
${remoteLines.join("\n")}` : ""}
|
|
@@ -1024,6 +1047,7 @@ export async function get(moduleName) {
|
|
|
1024
1047
|
err.code = 'MFU-006';
|
|
1025
1048
|
throw err;
|
|
1026
1049
|
}
|
|
1050
|
+
${prepareSharesCode(options)}
|
|
1027
1051
|
return loader();
|
|
1028
1052
|
}
|
|
1029
1053
|
`;
|
|
@@ -1078,6 +1102,7 @@ function genBuildRemoteEntry(options, exposeAbsPaths) {
|
|
|
1078
1102
|
);
|
|
1079
1103
|
const remoteLines = registerRemotesLines(options, "build");
|
|
1080
1104
|
return [
|
|
1105
|
+
'import { prepareShares as __fulgurjs_prepare } from "virtual:fulgurjs-runtime";',
|
|
1081
1106
|
...remoteLines.length > 0 ? [`import { registerRemotes } from "virtual:fulgurjs-runtime";`, ...remoteLines] : [],
|
|
1082
1107
|
`const exposes = {`,
|
|
1083
1108
|
...exposes,
|
|
@@ -1104,6 +1129,7 @@ function genBuildRemoteEntry(options, exposeAbsPaths) {
|
|
|
1104
1129
|
` err.code = 'MFU-006';`,
|
|
1105
1130
|
` throw err;`,
|
|
1106
1131
|
` }`,
|
|
1132
|
+
` ${prepareSharesCode(options)}`,
|
|
1107
1133
|
` return loader();`,
|
|
1108
1134
|
`}`,
|
|
1109
1135
|
""
|
|
@@ -2646,7 +2672,7 @@ function repairRolldownAsyncMarks(code, sourceName) {
|
|
|
2646
2672
|
}
|
|
2647
2673
|
|
|
2648
2674
|
// src/runtime-code.gen.ts
|
|
2649
|
-
var runtime_code_gen_default = 'var be=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function j(c){let u=be.exec(String(c).trim());return u?{major:Number(u[1]),minor:Number(u[2]??0),patch:Number(u[3]??0),pre:u[4]?u[4].split("."):[]}:null}function ve(c,u){if(c.length===0&&u.length===0)return 0;if(c.length===0)return 1;if(u.length===0)return-1;let f=Math.max(c.length,u.length);for(let s=0;s<f;s++){let g=c[s],y=u[s];if(g===void 0)return-1;if(y===void 0)return 1;let R=/^\\d+$/.test(g),v=/^\\d+$/.test(y);if(R&&v){let k=Number(g)-Number(y);if(k!==0)return k}else{if(R!==v)return R?-1:1;if(g!==y)return g<y?-1:1}}return 0}function T(c,u){let f=j(c),s=j(u);return!f||!s?c<u?-1:c>u?1:0:f.major!==s.major?f.major-s.major:f.minor!==s.minor?f.minor-s.minor:f.patch!==s.patch?f.patch-s.patch:ve(f.pre,s.pre)}var $e=/^[a-z]+[+:-]/i;function N(c,u){if(u===!1||u==null||u==="")return!0;let f=String(u).trim();return!f||f==="*"||f==="latest"||$e.test(f)?!0:f.split("||").some(s=>Pe(c,s.trim()))}function Pe(c,u){if(!u||u==="*")return!j(c)?.pre.length;let f=u.split(/\\s+-\\s+/);if(f.length===2){let y=f[0].trim(),R=f[1].trim();return!(!N(c,`>=${y}`)||!N(c,`<=${R}`))}let s=j(c);if(!s)return!1;let g=_e(u);if(g===null)return!0;for(let y of g)if(!Ie(s,c,y))return!1;return!(s.pre.length>0&&!g.some(y=>y.ver.pre.length>0)&&!g.some(R=>R.ver.major===s.major&&R.ver.minor===s.minor&&R.ver.patch===s.patch))}function _e(c){let u=[],f=c.trim().split(/\\s+/).filter(Boolean);if(f.length===0)return null;for(let s of f){let g=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(s);if(!g)return null;let y=g[1],R=g[2],v=Le(y,R);if(v===null)return null;u.push(...v)}return u}function Le(c,u){let f=Oe(u);if(!f)return null;let{ver:s,partial:g}=f;switch(c){case"^":{let y=Me(s);return y?[{op:">=",ver:s},{op:"<",ver:y}]:null}case"~":{let y=g>=2?{major:s.major,minor:s.minor+1,patch:0,pre:[]}:{major:s.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:s},{op:"<",ver:y}]}case">=":return[{op:">=",ver:s}];case">":return g===1?[{op:">=",ver:{major:s.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:{major:s.major,minor:s.minor+1,patch:0,pre:[]}}]:[{op:">",ver:s}];case"<":return g===1?[{op:"<",ver:{major:s.major,minor:0,patch:0,pre:[]}}]:g===2?[{op:"<",ver:{major:s.major,minor:s.minor,patch:0,pre:[]}}]:[{op:"<",ver:s}];case"<=":return[{op:"<=",ver:s}];case"=":case void 0:return g===1?[{op:">=",ver:s},{op:"<",ver:{major:s.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:s},{op:"<",ver:{major:s.major,minor:s.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:s}];default:return null}}function Me(c){return c.major>0?{major:c.major+1,minor:0,patch:0,pre:[]}:c.minor>0?{major:0,minor:c.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:c.patch+1,pre:[]}}function Oe(c){let u=c.replace(/^v/,"").trim();if(!u||u==="*"||u==="x"||u==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let f=u.split("."),s=[],g=0;for(let v of f.slice(0,3))if(/^\\d+$/.test(v))s.push(Number(v)),g++;else{if(v==="x"||v==="X"||v==="*")break;break}let y=u.split("-"),R=y.length>1?y.slice(1).join("-").split("+")[0].split("."):[];return g===0&&R.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:s[0]??0,minor:s[1]??0,patch:s[2]??0,pre:R},partial:g}}function ke(c,u){switch(u){case">=":return c>=0;case">":return c>0;case"<":return c<0;case"<=":return c<=0;case"=":return c===0}}function Ie(c,u,f){let s=`${c.major}.${c.minor}.${c.patch}`+(c.pre.length?`-${c.pre.join(".")}`:"");if(f.upper)return!(!(T(s,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:""))>=0)||!(T(s,`${f.upper.major}.${f.upper.minor}.${f.upper.patch}`)<0));let g=T(s,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:"")),y=ke(g,f.op);return f.ver.pre.length>0&&c.pre.length===0&&(f.op===">"||f.op==="<")?!1:y}var S=class extends Error{code;details;constructor(u,f,s,g){super(`[fulgurjs:${u}] ${f}`,g),this.name="FgError",this.code=u,this.details=s}},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 re="5.7.0";var Te="__fulgurjsSetup",xe="__FULGURJS_APP_CONFIG__",q=15e3,ne=2,Ae=5,je=3e4,Ne=4e3,Ue=.2;function Ce(){let c=Object.create(null),u=new Map,f=[],s=new Set,g=new Map,y=(e,r)=>JSON.stringify([r.shareScope||"default",r.shareKey||e,r.requiredVersion??null,!!r.singleton,!!r.strictVersion]),R=new Map,v=new Map,k=new WeakMap,U=new WeakMap,M={},oe=()=>{for(let e of f)try{e.init?.(M)}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)}},C=new Map,F,ie=e=>{let r=C.get(e);return r||C.set(e,r={}),r},H=()=>globalThis[xe]??{};async function G(e,r,n,o){let i=l=>l instanceof S?l:new S(E.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${o} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${String(l?.message??l)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${o} \\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:o},{cause:l});F=e;let t;try{t=r(n)}catch(l){throw i(l)}finally{F=void 0}try{await t}catch(l){throw i(l)}}async function se(e,r,n,o){e.debug.setup="pending";try{if(e.manifestUrl)try{await K(`${e.name}/${n}`)}catch{}let i=await r.get(n),t=i?.default;if(typeof t!="function")throw new S(E.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${i==null?String(i):typeof t}\\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:n});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 "${n}" \\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:n});o.setupExports=i,await G(e.name,t,{appContext:H(),signal:(o.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(i){throw e.debug.setup="failed",o.setupExports=void 0,i}}async function ae(e,r,n){let o=H(),i=o?.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 t=new AbortController;r.controller=t,r.sessionKey=i;let l=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),d=(async()=>{await l,!t.signal.aborted&&await G(e.name,n,{appContext:o,sessionKey:i,signal:t.signal},"onSession")})();return r.sessionPromise=d,d.catch(()=>{r.sessionKey===i&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),d}async function ce(e,r){let n=r?.[Te];if(typeof n!="string"||n==="")return;let o=ie(e.name);o.setupPromise||(o.setupPromise=se(e,r,n,o).catch(t=>{throw o.setupPromise=void 0,t})),await o.setupPromise;let i=o.setupExports?.onSession;typeof i=="function"&&await ae(e,o,i)}function le(){for(let e of C.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let I=e=>c[e]??=Object.create(null);function $(e){try{M.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}function ue(e="default"){return I(e),c}function B(e,r,n,o,i={}){let t=I(e||"default"),l=Object.hasOwn(t,r)?t[r]:void 0,d=l&&typeof l=="object"?l:void 0;d||(d=Object.create(null),t[r]=d),!(Object.hasOwn(d,n)&&d[n])&&(d[n]={version:n,get:o,from:i.from??"unknown",eager:!!i.eager,loaded:!!i.loaded})}function fe(e){let r=(n,o,i)=>{if(n===void 0)return;if(!(typeof n=="number"&&(i?Number.isInteger(n)&&n>=0&&n<=10:Number.isFinite(n)&&n>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${o} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(n)}\\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 J(e){for(let r of e){fe(r);let n=u.get(r.name);u.set(r.name,{timeout:q,retries:ne,...n,...r,breakerThreshold:r.breaker?.threshold??n?.breakerThreshold??Ae,breakerResetMs:r.breaker?.resetMs??n?.breakerResetMs??je,state:n?.state??"idle",breakerState:n?.breakerState??{fails:0,openUntil:0},entryInflight:n?.entryInflight??new Map,entryFailCounts:n?.entryFailCounts??new Map,debug:n?.debug??{entry:r.entry,status:"idle",setup:"none"}})}}function de(e){J([e])}function me(e){f.push(...e),g.clear(),oe()}function x(e,r,n=!1){let o=r.shareScope||"default",i=r.shareKey||e,l=I(o)[i]||{},d=Object.keys(l).filter(p=>!n||r.singleton||l[p].value!==void 0);if(n&&d.length===0)return;let a=r.requiredVersion,m=d.filter(p=>a===void 0||a===!1||N(p,a)),w;if(r.singleton&&d.length>0){let p=d.filter(h=>l[h].loaded);if(w=[...p.length?p:d].sort(T).pop(),!m.includes(w)){let h=l[w],L=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${i}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u5E94\\u7528\\u8981\\u6C42 ${a??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${d.join("\\u3001")}\\uFF1B\\u4E3A\\u4FDD\\u8BC1\\u5168\\u9875\\u53EA\\u4F7F\\u7528\\u4E00\\u4E2A\\u5B9E\\u4F8B\\uFF0C\\u6700\\u7EC8\\u590D\\u7528 ${h.from} \\u63D0\\u4F9B\\u7684 ${w}\\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 O=new S(E.SHARE_STRICT_VERSION,L,{shareKey:i,requiredVersion:a});throw $({remote:h.from,error:O}),O}let P=`${o}|${i}|${a??"*"}|${w}|${d.join(",")}`;s.has(P)||(s.add(P),console.warn(`[fulgurjs:MFU-010] ${L}`))}}else if(w=[...m].sort(T).pop(),!w){if(r.strictVersion){let p=new S(E.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${o}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${i}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${a}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${d.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:i,error:p}),p}return}return l[w]}function W(e,r,n){let o=r.localVersion;if(!o||n===void 0)return;let i=r.shareScope||"default",t=r.shareKey||e,l=I(i),d=Object.hasOwn(l,t)?l[t]:void 0;if(d&&Object.keys(d).length>0){try{let m=x(e,r);m&&m.value===void 0&&(m.version===o?(m.value=n,m.loaded=!0):r.singleton&&(m.value=n,m.loaded=!0,console.warn(`[fulgurjs:MFU-010] \\u5171\\u4EAB\\u5355\\u4F8B "${t}" \\u7684\\u9996\\u6B21\\u6D88\\u8D39\\u8005\\u4EE5\\u672C\\u5730\\u7248\\u672C ${o} \\u63A5\\u7BA1\\u4E86 ${m.from} \\u58F0\\u660E\\u7684 ${m.version} \\u69FD\\u4F4D\\uFF08\\u8BE5\\u7248\\u672C\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\u3002`)))}catch{}return}B(i,t,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let a=l[t]?.[o];a&&(a.value=n)}async function pe(e,r={}){let n=r.shareScope||"default",o=r.shareKey||e,i=I(n)[o]||{},t=x(e,r);if(!t){if(r.fallback){let m=await r.fallback();return W(e,r,m),m}let a=new S(E.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${o}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u4F5C\\u7528\\u57DF "${n}" \\u4E2D\\u6CA1\\u6709\\u7B26\\u5408 ${r.requiredVersion??"\\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:o,requiredVersion:r.requiredVersion});throw $({remote:o,error:a}),a}if(M.resolveShare){let a=await M.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:t,available:Object.values(i)});a&&(t=a)}if(t.value!==void 0)return g.set(y(e,r),t),t.value;if(t.loaded=!0,!t.pendingGet)try{t.pendingGet=t.get()}catch(a){t.pendingGet=Promise.reject(a)}let l=t.pendingGet,d;try{d=await l}catch(a){if(t.value!==void 0)return g.set(y(e,r),t),t.value;throw t.loaded=!1,a}finally{t.pendingGet===l&&(t.pendingGet=void 0)}return t.value===void 0&&(t.value=d),g.set(y(e,r),t),t.value}function ge(e,r={}){return M.resolveShare?g.get(y(e,r))?.value:x(e,r,!0)?.value}function he(e,r,n,o){W(e,{...r,localVersion:n},o)}function ye(e,r){let n=r.shareScope||"default",o=r.shareKey||e;if(M.resolveShare){let t=y(e,r),l=g.get(t);if(l&&l.value!==void 0)return{kind:"ready",value:l.value};let d=M.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:x(e,r),available:Object.values(I(n)[o]||{})});if(d&&typeof d.then=="function")throw new S(E.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u5BF9\\u5171\\u4EAB "${o}" \\u8FD4\\u56DE\\u4E86 Promise\\uFF0C\\u4F46\\u8BE5\\u5171\\u4EAB\\u6B63\\u88AB\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u6D88\\u8D39\\uFF08Vite 8 \\u540C\\u6B65\\u534F\\u5546\\u95E8\\u9762\\uFF09\\u3002\n\\u539F\\u56E0\\uFF1A\\u6A21\\u5757\\u6C42\\u503C\\u671F\\u65E0\\u6CD5\\u7B49\\u5F85\\u5F02\\u6B65\\u51B3\\u7B56\\uFF1B\\u9759\\u6001\\u5BFC\\u5165\\u4E0D\\u80FD\\u9759\\u9ED8\\u5FFD\\u7565 hook \\u51B3\\u7B56\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9 resolveShare \\u5BF9\\u8BE5\\u952E\\u540C\\u6B65\\u8FD4\\u56DE picked\\uFF08\\u4ECE available \\u4E2D\\u9009\\u62E9\\uFF09\\uFF1B\\u6216\\u8BA9\\u9996\\u6B21\\u6D88\\u8D39\\u5148\\u7ECF\\u4E00\\u6B21\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u534F\\u5546\\uFF08\\u6210\\u529F\\u5FEB\\u7167\\u4F1A\\u88AB\\u9759\\u6001\\u5BFC\\u5165\\u590D\\u7528\\uFF09\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let a=d;if(a){if(a.value!==void 0)return g.set(y(e,r),a),{kind:"ready",value:a.value};if(a.version!==void 0&&a.version===r.localVersion)return{kind:"local"};throw new S(E.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u4E3A\\u5171\\u4EAB "${o}" \\u9009\\u62E9\\u4E86 ${a.version??"\\u672A\\u5C31\\u7EEA\\u6761\\u76EE"}\\uFF08\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\uFF0C\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u65E0\\u6CD5\\u7B49\\u5F85\\u5176\\u5B9E\\u4F8B\\u5C31\\u7EEA\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9 hook \\u4F18\\u5148\\u9009\\u62E9\\u5DF2\\u5C31\\u7EEA\\u5B9E\\u4F8B\\u6216\\u672C\\u5E94\\u7528\\u672C\\u5730\\u7248\\u672C\\uFF08${r.localVersion??"\\u672A\\u58F0\\u660E"}\\uFF09\\uFF0C\\u6216\\u5148\\u7ECF\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u534F\\u5546\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0})}}let i=x(e,r);if(!i)return{kind:"local"};if(i.value!==void 0)return{kind:"ready",value:i.value};if(i.version!==void 0&&i.version===r.localVersion)return{kind:"local"};if(r.singleton){if(r.strictVersion)throw new S(E.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${o}" \\u9009\\u4E2D\\u4E86 ${i.from} \\u63D0\\u4F9B\\u7684 ${i.version}\\uFF08\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\uFF0C\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u65E0\\u6CD5\\u7B49\\u5F85\\u5176\\u5B9E\\u4F8B\\u5C31\\u7EEA\\u3002\n\\u539F\\u56E0\\uFF1A\\u5355\\u4F8B\\u5FC5\\u987B\\u5168\\u9875\\u4E00\\u81F4\\uFF0C\\u4E0D\\u80FD\\u9759\\u9ED8\\u6539\\u7528\\u672C\\u5730\\u526F\\u672C\\u5206\\u88C2\\u5B9E\\u4F8B\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9\\u8BE5\\u5171\\u4EAB\\u7684\\u9996\\u6B21\\u6D88\\u8D39\\u5148\\u7ECF\\u4E00\\u6B21\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u52A0\\u8F7D\\uFF0C\\u6216\\u5C06\\u672C\\u5E94\\u7528\\u7248\\u672C\\u4E0E\\u4F5C\\u7528\\u57DF\\u63D0\\u4F9B\\u7248\\u672C\\u5BF9\\u9F50\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let t=`${n}|${o}|${i.version}|${r.localVersion}`;return s.has(t)||(s.add(t),console.warn(`[fulgurjs:MFU-010] \\u5171\\u4EAB\\u5355\\u4F8B "${o}"\\uFF1A\\u4F5C\\u7528\\u57DF\\u4E2D ${i.from} \\u63D0\\u4F9B\\u7684 ${i.version} \\u5C1A\\u672A\\u52A0\\u8F7D\\uFF0C\\u9996\\u4E2A\\u6D88\\u8D39\\u8005\\u4EE5\\u672C\\u5730\\u7248\\u672C ${r.localVersion??""} \\u63A5\\u7BA1\\uFF08\\u540E\\u7EED\\u6D88\\u8D39\\u8005\\u6309\\u5DF2\\u52A0\\u8F7D\\u4F18\\u5148\\u6536\\u655B\\u5230\\u8BE5\\u5B9E\\u4F8B\\uFF09\\u3002`)),{kind:"local"}}return console.warn(`[fulgurjs] \\u5171\\u4EAB "${o}" \\u7684\\u540C\\u6B65\\u9759\\u6001\\u6D88\\u8D39\\u4F7F\\u7528\\u672C\\u5730\\u526F\\u672C ${r.localVersion??""}\\uFF08\\u4F5C\\u7528\\u57DF\\u4E2D\\u6EE1\\u8DB3\\u8981\\u6C42\\u7684\\u53E6\\u4E00\\u7248\\u672C ${i.version} \\u5C1A\\u672A\\u5C31\\u7EEA\\uFF0C\\u65E0\\u6CD5\\u540C\\u6B65\\u7B49\\u5F85\\uFF09\\uFF1B\\u975E\\u5355\\u4F8B\\u5141\\u8BB8\\u591A\\u7248\\u672C\\u5171\\u5B58\\u3002`),{kind:"local"}}function X(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 z(e,r,n){return new Promise((o,i)=>{let t=setTimeout(()=>i(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${n}`)),r);e.then(l=>{clearTimeout(t),o(l)},l=>{clearTimeout(t),i(l)})})}let Se=e=>new Promise(r=>setTimeout(r,e)),Y=new Set;function V(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 n=`\\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){let o=`${r.name}\\u2194${e.name}`;Y.has(o)||(Y.add(o),console.warn(`[fulgurjs] ${n} \\u5F53\\u524D\\u662F\\u52A8\\u6001 Promise \\u8FDC\\u7A0B\\uFF0C\\u7EE7\\u7EED\\u52A0\\u8F7D\\u3002`))}else throw Object.assign(new Error(n),{code:E.REMOTE_NAME_MISMATCH})}}async function Z(e,r){let n=r.entryFailCounts.get(e)??0,o=n>0?`${e}${e.includes("?")?"&":"?"}fulgurjs_retry=${n}`:e,i=r.entryInflight.get(e),t=i??import(o);return i||(r.entryInflight.set(e,t),t.catch(()=>{r.entryInflight.delete(e),r.entryFailCounts.set(e,(r.entryFailCounts.get(e)??0)+1)})),z(t,r.timeout??q,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${X(e)}`)}async function Q(e,r){let n=e.shareScope||"default";if(e.container){let t=U.get(e.container);if(t&&t!==n)throw new S(E.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${t}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return e.container}if(e.containerPromise)return e.containerPromise;let o=e.breakerState;if(o.openUntil>Date.now()){let t=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(o.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:t}),t}e.state="loading",e.debug.status="loading";let i=(async()=>{let t=[];if(e.promise)t.push(async()=>{let p=await z(e.promise(),e.timeout??q,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),h=typeof p=="string"?await Z(p,e):p;return V(h,e),h});else for(let p of[e.entry,...e.fallback??[]])t.push(async()=>{let h=await Z(p,e);return V(h,e),h});let l,d,a=!1,m=r?.retries??e.retries??ne;for(let p of t){for(let h=0;h<=m;h++){let L=performance.now();try{l=await p(),e.lastLoadMs=Math.round(performance.now()-L),e.debug.lastLoadMs=e.lastLoadMs,a=!0;break}catch(P){if(d=P,P?.code)throw P;h<m&&await Se(Math.min(Ne,200*2**h)*(1-Ue*(1-2*Math.random())))}}if(a)break}if(!a||!l){let p=X(e.entry),h=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${p}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),h.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),h.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${p}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),h.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 ${p} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${String(d?.message??d)}\n\\u4FEE\\u6CD5\\uFF1A\n${h.join(`\n`)}`,{remote:e.name})}V(l,e);let w=U.get(l);if(w&&w!==n)throw new S(E.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${w}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof l.init=="function"&&await l.init(c),U.set(l,n),e.container=l,e.state="loaded",e.debug.status="loaded",o.fails=0,l})();e.containerPromise=i;try{return await i}catch(t){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=String(t?.message??t),o.fails+=1,o.fails>=e.breakerThreshold&&(o.openUntil=Date.now()+e.breakerResetMs,o.fails=0),t instanceof S)throw $({remote:e.name,error:t}),t;if(t?.code)throw $({remote:e.name,error:t}),t;let l=new S(E.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(t?.message??t)}\\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:l}),l}}function D(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:ee(e.slice(r+1))}}function ee(e){return e?e.startsWith(".")?e:`./${e}`:""}async function Ee(e,r){let{remote:n,module:o}=D(e);if(o&&F===n)throw new S(E.SETUP_RECURSION,`\\u73B0\\u8C61\\uFF1A\\u52A0\\u8F7D "${e}" \\u65F6\\uFF0C\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\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:n});try{M.beforeLoadRemote?.({remote:n,module:o})}catch(a){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",a)}let i=u.get(n);if(!i)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5728 federation({ remotes }) \\u4E2D\\u914D\\u7F6E\\uFF0C\\u6216\\u5728\\u52A0\\u8F7D\\u524D\\u8C03\\u7528 registerRemote()\\u3002`,{remote:n});let t;try{let a=o&&i.manifestUrl?K(e):Promise.resolve();[t]=await Promise.all([Q(i,{retries:r?.retries}),a])}catch(a){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`,a),$({remote:n,error:a}),await r.fallbackModule();throw a}if(!o)return t;await ce(i,t);let l=`${n}@${i.shareScope||"default"}#${o}`;R.has(l)||R.set(l,t.get(o).catch(a=>{throw R.delete(l),a instanceof S||a?.code?a:new S(E.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u52A0\\u8F7D\\u6A21\\u5757 "${o}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(a?.message??a)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:n,module:o})}));let d;try{d=await R.get(l)}catch(a){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`,a),$({remote:n,error:a}),await r.fallbackModule();throw a}try{M.afterLoadRemote?.({remote:n,module:o,module_ns:d})}catch(a){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",a)}if(d&&typeof d=="object"&&Object.keys(d).length===0){let a=new S(E.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6A21\\u5757 "${o}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:n,module:o});$({remote:n,error:a}),console.error(a.message)}return d}function we(e){let r=u.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 Q(r)}async function K(e,r={}){let{remote:n,module:o}=D(e),i=u.get(n);if(!i)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:n});let t=r.mode??"preload",l=(m,w)=>{if(m.sheet)return Promise.resolve();let p=k.get(m);if(p)return p;let h=new Promise(L=>{let P=()=>{m.removeEventListener("load",P),m.removeEventListener("error",O),L()},O=()=>{$({remote:n,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${w}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:n})}),P()};m.addEventListener("load",P,{once:!0}),m.addEventListener("error",O,{once:!0}),m.sheet&&P()});return k.set(m,h),h},d=(m,w)=>{if(typeof document>"u")return Promise.resolve();let p=document.querySelector(`link[href="${m}"]`);if(p)return w==="style"&&t==="preload"?k.get(p)??Promise.resolve():Promise.resolve();let h=document.createElement("link");h.rel=w==="style"?"stylesheet":"modulepreload",h.href=m,t==="prefetch"&&(h.fetchPriority="low");let L=w==="style"?l(h,m):Promise.resolve();return document.head.appendChild(h),w==="style"&&t==="preload"?L:Promise.resolve()},a=m=>{let w=typeof document<"u"?document.baseURI:void 0,p=new URL(i.entry,w||"http://fulgurjs.invalid/");return!p.pathname.endsWith("/")&&!p.pathname.split("/").pop().includes(".")&&(p.pathname+="/"),new URL(m,p).href};try{if(i.manifestUrl){let m=v.get(i.manifestUrl);m||(m=fetch(i.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(p=>p.ok?p.json():void 0),v.set(i.manifestUrl,m),m.then(p=>{p||v.delete(i.manifestUrl)},()=>v.delete(i.manifestUrl)));let w=await m;if(w){let p=w.schemaVersion;if(typeof p=="number"&&(!Number.isInteger(p)||p>1)){$({remote:n,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(p)}\\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:n})}),await d(i.entry,"modulepreload");return}await d(i.entry,"modulepreload");let h=w.exposes,L=Array.isArray(h)?h.filter(_=>_&&typeof _=="object").map(_=>[String(_.name??""),_]):h&&typeof h=="object"?Object.entries(h):[],P=o?L.filter(([_,A])=>ee(String(A?.name??_))===o):L,O=[];for(let[,_]of P)if(typeof _?.file=="string"&&await d(a(_.file),"modulepreload"),Array.isArray(_?.css))for(let A of _.css){if(typeof A!="string")continue;let Re=d(a(A),"style");t==="preload"&&O.push(Re)}await Promise.all(O);return}}await d(i.entry,"modulepreload")}catch(m){$({remote:n,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(m?.message??m)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:n})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=c,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,n]of u)e[r]={...n.debug,entry:n.entry};return e},errors:[]}),{shareScopeMap:c,initSharing:ue,registerShare:B,registerRemotes:J,registerRemote:de,registerPlugins:me,loadShare:pe,loadShareSync:ye,getLoadedShare:ge,pinLoadedShare:he,loadRemote:Ee,getContainer:we,preloadRemote:K,parseSpec:D,clearSessionState:le}}var te=globalThis,b=te.__FULGURJS_RUNTIME__??Ce();te.__FULGURJS_RUNTIME__=b;try{Object.freeze(b)}catch{}var Be=re;function Je(){return b}var We=b.initSharing,Xe=b.registerShare,ze=b.registerRemotes,Ye=b.registerRemote,Ze=b.registerPlugins,Qe=b.loadShare,er=b.getLoadedShare,rr=b.loadShareSync,nr=b.pinLoadedShare,tr=b.loadRemote,or=b.getContainer,ir=b.preloadRemote,sr=b.parseSpec,ar=b.clearSessionState,cr=b.shareScopeMap;function lr(c){if(c&&typeof c=="object"&&"default"in c){let u=c.default;return u!==void 0?u:c}return c}var ur=b;export{ar as clearSessionState,ur as default,or as getContainer,er as getLoadedShare,Je as getRuntime,We as initSharing,tr as loadRemote,Qe as loadShare,rr as loadShareSync,sr as parseSpec,nr as pinLoadedShare,ir as preloadRemote,Ze as registerPlugins,Ye as registerRemote,ze as registerRemotes,Xe as registerShare,b as runtime,cr as shareScopeMap,lr as unwrapDefault,Be as version};\n';
|
|
2675
|
+
var runtime_code_gen_default = 'var ve=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function N(c){let u=ve.exec(String(c).trim());return u?{major:Number(u[1]),minor:Number(u[2]??0),patch:Number(u[3]??0),pre:u[4]?u[4].split("."):[]}:null}function $e(c,u){if(c.length===0&&u.length===0)return 0;if(c.length===0)return 1;if(u.length===0)return-1;let f=Math.max(c.length,u.length);for(let a=0;a<f;a++){let p=c[a],S=u[a];if(p===void 0)return-1;if(S===void 0)return 1;let b=/^\\d+$/.test(p),v=/^\\d+$/.test(S);if(b&&v){let I=Number(p)-Number(S);if(I!==0)return I}else{if(b!==v)return b?-1:1;if(p!==S)return p<S?-1:1}}return 0}function x(c,u){let f=N(c),a=N(u);return!f||!a?c<u?-1:c>u?1:0:f.major!==a.major?f.major-a.major:f.minor!==a.minor?f.minor-a.minor:f.patch!==a.patch?f.patch-a.patch:$e(f.pre,a.pre)}var Pe=/^[a-z]+[+:-]/i;function A(c,u){if(u===!1||u==null||u==="")return!0;let f=String(u).trim();return!f||f==="*"||f==="latest"||Pe.test(f)?!0:f.split("||").some(a=>_e(c,a.trim()))}function _e(c,u){if(!u||u==="*")return!N(c)?.pre.length;let f=u.split(/\\s+-\\s+/);if(f.length===2){let S=f[0].trim(),b=f[1].trim();return!(!A(c,`>=${S}`)||!A(c,`<=${b}`))}let a=N(c);if(!a)return!1;let p=Le(u);if(p===null)return!0;for(let S of p)if(!Te(a,c,S))return!1;return!(a.pre.length>0&&!p.some(S=>S.ver.pre.length>0)&&!p.some(b=>b.ver.major===a.major&&b.ver.minor===a.minor&&b.ver.patch===a.patch))}function Le(c){let u=[],f=c.trim().split(/\\s+/).filter(Boolean);if(f.length===0)return null;for(let a of f){let p=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(a);if(!p)return null;let S=p[1],b=p[2],v=Oe(S,b);if(v===null)return null;u.push(...v)}return u}function Oe(c,u){let f=Me(u);if(!f)return null;let{ver:a,partial:p}=f;switch(c){case"^":{let S=ke(a);return S?[{op:">=",ver:a},{op:"<",ver:S}]:null}case"~":{let S=p>=2?{major:a.major,minor:a.minor+1,patch:0,pre:[]}:{major:a.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:a},{op:"<",ver:S}]}case">=":return[{op:">=",ver:a}];case">":return p===1?[{op:">=",ver:{major:a.major+1,minor:0,patch:0,pre:[]}}]:p===2?[{op:">=",ver:{major:a.major,minor:a.minor+1,patch:0,pre:[]}}]:[{op:">",ver:a}];case"<":return p===1?[{op:"<",ver:{major:a.major,minor:0,patch:0,pre:[]}}]:p===2?[{op:"<",ver:{major:a.major,minor:a.minor,patch:0,pre:[]}}]:[{op:"<",ver:a}];case"<=":return[{op:"<=",ver:a}];case"=":case void 0:return p===1?[{op:">=",ver:a},{op:"<",ver:{major:a.major+1,minor:0,patch:0,pre:[]}}]:p===2?[{op:">=",ver:a},{op:"<",ver:{major:a.major,minor:a.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:a}];default:return null}}function ke(c){return c.major>0?{major:c.major+1,minor:0,patch:0,pre:[]}:c.minor>0?{major:0,minor:c.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:c.patch+1,pre:[]}}function Me(c){let u=c.replace(/^v/,"").trim();if(!u||u==="*"||u==="x"||u==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let f=u.split("."),a=[],p=0;for(let v of f.slice(0,3))if(/^\\d+$/.test(v))a.push(Number(v)),p++;else{if(v==="x"||v==="X"||v==="*")break;break}let S=u.split("-"),b=S.length>1?S.slice(1).join("-").split("+")[0].split("."):[];return p===0&&b.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:a[0]??0,minor:a[1]??0,patch:a[2]??0,pre:b},partial:p}}function Ie(c,u){switch(u){case">=":return c>=0;case">":return c>0;case"<":return c<0;case"<=":return c<=0;case"=":return c===0}}function Te(c,u,f){let a=`${c.major}.${c.minor}.${c.patch}`+(c.pre.length?`-${c.pre.join(".")}`:"");if(f.upper)return!(!(x(a,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:""))>=0)||!(x(a,`${f.upper.major}.${f.upper.minor}.${f.upper.patch}`)<0));let p=x(a,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:"")),S=Ie(p,f.op);return f.ver.pre.length>0&&c.pre.length===0&&(f.op===">"||f.op==="<")?!1:S}var E=class extends Error{code;details;constructor(u,f,a,p){super(`[fulgurjs:${u}] ${f}`,p),this.name="FgError",this.code=u,this.details=a}},w={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 ne="5.7.1";var xe="__fulgurjsSetup",Ae="__FULGURJS_APP_CONFIG__",H=15e3,te=2,je=5,Ne=3e4,Ue=4e3,Ve=.2;function Ce(){let c=Object.create(null),u=new Map,f=[],a=new Set,p=new Map,S=(e,r)=>JSON.stringify([r.shareScope||"default",r.shareKey||e,r.requiredVersion??null,!!r.singleton,!!r.strictVersion]),b=new Map,v=new Map,I=new WeakMap,U=new WeakMap,_={},se=()=>{for(let e of f)try{e.init?.(_)}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)}},V=new Map,C,ie=e=>{let r=V.get(e);return r||V.set(e,r={}),r},G=()=>globalThis[Ae]??{};async function B(e,r,n,o){let t=l=>l instanceof E?l:new E(w.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${o} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${String(l?.message??l)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${o} \\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:o},{cause:l});C=e;let s;try{s=r(n)}catch(l){throw t(l)}finally{C=void 0}try{await s}catch(l){throw t(l)}}async function ae(e,r,n,o){e.debug.setup="pending";try{if(e.manifestUrl)try{await q(`${e.name}/${n}`)}catch{}let t=await r.get(n),s=t?.default;if(typeof s!="function")throw new E(w.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${t==null?String(t):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:n});if(t.onSession!==void 0&&typeof t.onSession!="function")throw new E(w.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AonSession \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof t.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:n});o.setupExports=t,await B(e.name,s,{appContext:G(),signal:(o.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(t){throw e.debug.setup="failed",o.setupExports=void 0,t}}async function ce(e,r,n){let o=G(),t=o?.sessionKey;if(typeof t!="string"||t==="")throw new E(w.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 ${t===void 0?"\\u7F3A\\u5931":JSON.stringify(t)}\\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===t)return r.sessionPromise;r.controller?.abort();let s=new AbortController;r.controller=s,r.sessionKey=t;let l=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),i=(async()=>{await l,!s.signal.aborted&&await B(e.name,n,{appContext:o,sessionKey:t,signal:s.signal},"onSession")})();return r.sessionPromise=i,i.catch(()=>{r.sessionKey===t&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),i}async function le(e,r){let n=r?.[xe];if(typeof n!="string"||n==="")return;let o=ie(e.name);o.setupPromise||(o.setupPromise=ae(e,r,n,o).catch(s=>{throw o.setupPromise=void 0,s})),await o.setupPromise;let t=o.setupExports?.onSession;typeof t=="function"&&await ce(e,o,t)}function ue(){for(let e of V.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let M=e=>c[e]??=Object.create(null);function $(e){try{_.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}function fe(e="default"){return M(e),c}function F(e,r,n,o,t={}){let s=M(e||"default"),l=Object.hasOwn(s,r)?s[r]:void 0,i=l&&typeof l=="object"?l:void 0;i||(i=Object.create(null),s[r]=i),!(Object.hasOwn(i,n)&&i[n])&&(i[n]={version:n,get:o,from:t.from??"unknown",eager:!!t.eager,loaded:!!t.loaded})}function de(e){let r=(n,o,t)=>{if(n===void 0)return;if(!(typeof n=="number"&&(t?Number.isInteger(n)&&n>=0&&n<=10:Number.isFinite(n)&&n>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${o} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(n)}\\uFF0C\\u5E94\\u4E3A${t?" 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 J(e){for(let r of e){de(r);let n=u.get(r.name);u.set(r.name,{timeout:H,retries:te,...n,...r,breakerThreshold:r.breaker?.threshold??n?.breakerThreshold??je,breakerResetMs:r.breaker?.resetMs??n?.breakerResetMs??Ne,state:n?.state??"idle",breakerState:n?.breakerState??{fails:0,openUntil:0},entryInflight:n?.entryInflight??new Map,entryFailCounts:n?.entryFailCounts??new Map,debug:n?.debug??{entry:r.entry,status:"idle",setup:"none"}})}}function me(e){J([e])}function pe(e){f.push(...e),p.clear(),se()}function T(e,r,n=!1){let o=r.shareScope||"default",t=r.shareKey||e,l=M(o)[t]||{},i=Object.keys(l).filter(m=>!n||r.singleton||l[m].value!==void 0);if(n&&i.length===0)return;let d=r.requiredVersion,g=i.filter(m=>d===void 0||d===!1||A(m,d)),h;if(r.singleton&&i.length>0){let m=i.filter(y=>l[y].loaded);if(h=[...m.length?m:i].sort(x).pop(),!g.includes(h)){let y=l[h],O=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${t}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u5E94\\u7528\\u8981\\u6C42 ${d??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${i.join("\\u3001")}\\uFF1B\\u4E3A\\u4FDD\\u8BC1\\u5168\\u9875\\u53EA\\u4F7F\\u7528\\u4E00\\u4E2A\\u5B9E\\u4F8B\\uFF0C\\u6700\\u7EC8\\u590D\\u7528 ${y.from} \\u63D0\\u4F9B\\u7684 ${h}\\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 k=new E(w.SHARE_STRICT_VERSION,O,{shareKey:t,requiredVersion:d});throw $({remote:y.from,error:k}),k}let P=`${o}|${t}|${d??"*"}|${h}|${i.join(",")}`;a.has(P)||(a.add(P),console.warn(`[fulgurjs:MFU-010] ${O}`))}}else if(h=[...g].sort(x).pop(),!h){if(r.strictVersion){let m=new E(w.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${o}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${t}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${d}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${i.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:t,error:m}),m}return}return l[h]}function W(e,r,n){let o=r.localVersion;if(!o||n===void 0)return;let t=r.shareScope||"default",s=r.shareKey||e,l=M(t),i=Object.hasOwn(l,s)?l[s]:void 0;if(i&&Object.keys(i).length>0){try{let g=T(e,r);if(g&&g.value===void 0){if(g.version===o)g.value=n,g.loaded=!0;else if(r.singleton&&!g.pendingGet){F(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let h=l[s][o];h.value=n,h.loaded=!0}}}catch{}return}F(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let d=l[s]?.[o];d&&(d.value=n)}async function X(e,r={}){let n=r.shareScope||"default",o=r.shareKey||e,t=M(n)[o]||{},s=S(e,r),l=_.resolveShare?p.get(s):void 0,i=l||T(e,r);if(!i){if(r.fallback){let m=await r.fallback();return W(e,r,m),m}let h=new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${o}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u4F5C\\u7528\\u57DF "${n}" \\u4E2D\\u6CA1\\u6709\\u7B26\\u5408 ${r.requiredVersion??"\\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:o,requiredVersion:r.requiredVersion});throw $({remote:o,error:h}),h}if(_.resolveShare&&!l){let h=await _.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:i,available:Object.values(t)});h&&(i=h),p.set(s,i)}if(i.value!==void 0)return p.set(S(e,r),i),i.value;if(i.loaded=!0,!i.pendingGet)try{i.pendingGet=i.get()}catch(h){i.pendingGet=Promise.reject(h)}let d=i.pendingGet,g;try{g=await d}catch(h){if(i.value!==void 0)return p.set(S(e,r),i),i.value;throw i.loaded=!1,p.get(s)===i&&p.delete(s),h}finally{i.pendingGet===d&&(i.pendingGet=void 0)}return i.value===void 0&&(i.value=g),p.set(S(e,r),i),i.value}function ge(e,r={}){return _.resolveShare?p.get(S(e,r))?.value:T(e,r,!0)?.value}function he(e,r,n,o){W(e,{...r,localVersion:n},o)}function ye(e,r){let n=r.shareScope||"default",o=r.shareKey||e;if(_.resolveShare){let s=S(e,r),l=p.get(s);if(l&&l.value!==void 0)return{kind:"ready",value:l.value};let i=l||_.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:T(e,r),available:Object.values(M(n)[o]||{})});if(i&&typeof i.then=="function")throw Promise.resolve(i).catch(()=>{}),new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u5BF9\\u5171\\u4EAB "${o}" \\u8FD4\\u56DE\\u4E86 Promise\\uFF0C\\u4F46\\u8BE5\\u5171\\u4EAB\\u6B63\\u88AB\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u6D88\\u8D39\\uFF08Vite 8 \\u540C\\u6B65\\u534F\\u5546\\u95E8\\u9762\\uFF09\\u3002\n\\u539F\\u56E0\\uFF1A\\u6A21\\u5757\\u6C42\\u503C\\u671F\\u65E0\\u6CD5\\u7B49\\u5F85\\u5F02\\u6B65\\u51B3\\u7B56\\uFF1B\\u9759\\u6001\\u5BFC\\u5165\\u4E0D\\u80FD\\u9759\\u9ED8\\u5FFD\\u7565 hook \\u51B3\\u7B56\\u3002\n\\u4FEE\\u6CD5\\uFF1AVite 8 HTML \\u5165\\u53E3\\u4F1A\\u5148\\u5B8C\\u6210\\u5F02\\u6B65\\u534F\\u5546\\uFF1B\\u5176\\u4ED6\\u5165\\u53E3\\u8BF7\\u5148\\u52A8\\u6001 loadShare \\u5EFA\\u7ACB\\u5FEB\\u7167\\uFF0C\\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u8BA9\\u8BE5\\u952E\\u540C\\u6B65\\u8FD4\\u56DE picked\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let d=i;if(d){if(d.value!==void 0)return p.set(S(e,r),d),{kind:"ready",value:d.value};if(d.version!==void 0&&d.version===r.localVersion)return{kind:"local"};throw new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u4E3A "${o}" \\u9009\\u62E9\\u4E86\\u672A\\u5C31\\u7EEA\\u7684 ${d.version??"\\u6761\\u76EE"}\\u3002\n\\u539F\\u56E0\\uFF1A\\u540C\\u6B65\\u6D88\\u8D39\\u4E0D\\u80FD\\u7B49\\u5F85\\u52A0\\u8F7D\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5148\\u52A8\\u6001 loadShare \\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u9009\\u62E9\\u5DF2\\u5C31\\u7EEA\\u5B9E\\u4F8B/\\u672C\\u5730\\u7248\\u672C ${r.localVersion??"\\u672A\\u58F0\\u660E"}\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0})}}let t=T(e,r);if(!t)return{kind:"local"};if(t.value!==void 0)return{kind:"ready",value:t.value};if(t.version!==void 0&&t.version===r.localVersion)return{kind:"local"};if(r.singleton||r.strictVersion&&r.requiredVersion&&(!r.localVersion||!A(r.localVersion,r.requiredVersion))){if(r.strictVersion||t.pendingGet)throw new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB "${o}" \\u9009\\u4E2D\\u4E86 ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version}\\uFF08\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\uFF0C\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u65E0\\u6CD5\\u7B49\\u5F85\\u5176\\u5B9E\\u4F8B\\u5C31\\u7EEA\\u3002\n\\u539F\\u56E0\\uFF1A\\u4E0D\\u80FD\\u6539\\u7528\\u4E0D\\u517C\\u5BB9\\u7684\\u672C\\u5730\\u526F\\u672C\\u6216\\u5206\\u88C2\\u5355\\u4F8B\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9\\u8BE5\\u5171\\u4EAB\\u7684\\u9996\\u6B21\\u6D88\\u8D39\\u5148\\u7ECF\\u4E00\\u6B21\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u52A0\\u8F7D\\uFF0C\\u6216\\u5C06\\u672C\\u5E94\\u7528\\u7248\\u672C\\u4E0E\\u4F5C\\u7528\\u57DF\\u63D0\\u4F9B\\u7248\\u672C\\u5BF9\\u9F50\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let s=`${n}|${o}|${t.version}|${r.localVersion}`;return a.has(s)||(a.add(s),console.warn(`[fulgurjs:MFU-010] \\u5171\\u4EAB\\u5355\\u4F8B "${o}"\\uFF1A\\u4F5C\\u7528\\u57DF\\u4E2D ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version} \\u5C1A\\u672A\\u52A0\\u8F7D\\uFF0C\\u9996\\u4E2A\\u6D88\\u8D39\\u8005\\u4EE5\\u672C\\u5730\\u7248\\u672C ${r.localVersion??""} \\u63A5\\u7BA1\\uFF08\\u540E\\u7EED\\u6D88\\u8D39\\u8005\\u6309\\u5DF2\\u52A0\\u8F7D\\u4F18\\u5148\\u6536\\u655B\\u5230\\u8BE5\\u5B9E\\u4F8B\\uFF09\\u3002`)),{kind:"local"}}return console.warn(`[fulgurjs] \\u5171\\u4EAB "${o}"\\uFF1A\\u975E\\u5355\\u4F8B\\u540C\\u6B65\\u6D88\\u8D39\\u4F7F\\u7528\\u672C\\u5730 ${r.localVersion??""}\\uFF0C\\u8FDC\\u7A0B ${t.version} \\u5C1A\\u672A\\u5C31\\u7EEA\\u3002`),{kind:"local"}}async function Se(e){if(_.resolveShare){for(let{name:r,opts:n}of e){let o=S(r,n);if(p.has(o))continue;let t=T(r,n),s=await _.resolveShare({shareKey:n.shareKey||r,shareScope:n.shareScope||"default",requiredVersion:n.requiredVersion,picked:t,available:Object.values(M(n.shareScope||"default")[n.shareKey||r]||{})})||t;s&&p.set(o,s)}for(let{name:r,opts:n}of e)await X(r,n)}}function z(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 Y(e,r,n){return new Promise((o,t)=>{let s=setTimeout(()=>t(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${n}`)),r);e.then(l=>{clearTimeout(s),o(l)},l=>{clearTimeout(s),t(l)})})}let Ee=e=>new Promise(r=>setTimeout(r,e)),Z=new Set;function D(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 n=`\\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){let o=`${r.name}\\u2194${e.name}`;Z.has(o)||(Z.add(o),console.warn(`[fulgurjs] ${n} \\u5F53\\u524D\\u662F\\u52A8\\u6001 Promise \\u8FDC\\u7A0B\\uFF0C\\u7EE7\\u7EED\\u52A0\\u8F7D\\u3002`))}else throw Object.assign(new Error(n),{code:w.REMOTE_NAME_MISMATCH})}}async function Q(e,r){let n=r.entryFailCounts.get(e)??0,o=n>0?`${e}${e.includes("?")?"&":"?"}fulgurjs_retry=${n}`:e,t=r.entryInflight.get(e),s=t??import(o);return t||(r.entryInflight.set(e,s),s.catch(()=>{r.entryInflight.delete(e),r.entryFailCounts.set(e,(r.entryFailCounts.get(e)??0)+1)})),Y(s,r.timeout??H,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${z(e)}`)}async function ee(e,r){let n=e.shareScope||"default";if(e.container){let s=U.get(e.container);if(s&&s!==n)throw new E(w.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 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return e.container}if(e.containerPromise)return e.containerPromise;let o=e.breakerState;if(o.openUntil>Date.now()){let s=new E(w.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(o.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 t=(async()=>{let s=[];if(e.promise)s.push(async()=>{let m=await Y(e.promise(),e.timeout??H,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),y=typeof m=="string"?await Q(m,e):m;return D(y,e),y});else for(let m of[e.entry,...e.fallback??[]])s.push(async()=>{let y=await Q(m,e);return D(y,e),y});let l,i,d=!1,g=r?.retries??e.retries??te;for(let m of s){for(let y=0;y<=g;y++){let O=performance.now();try{l=await m(),e.lastLoadMs=Math.round(performance.now()-O),e.debug.lastLoadMs=e.lastLoadMs,d=!0;break}catch(P){if(i=P,P?.code)throw P;y<g&&await Ee(Math.min(Ue,200*2**y)*(1-Ve*(1-2*Math.random())))}}if(d)break}if(!d||!l){let m=z(e.entry),y=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(y.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${m}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),y.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),y.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(y.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${m}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),y.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 E(w.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${m} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${String(i?.message??i)}\n\\u4FEE\\u6CD5\\uFF1A\n${y.join(`\n`)}`,{remote:e.name})}D(l,e);let h=U.get(l);if(h&&h!==n)throw new E(w.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${h}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof l.init=="function"&&await l.init(c),U.set(l,n),e.container=l,e.state="loaded",e.debug.status="loaded",o.fails=0,l})();e.containerPromise=t;try{return await t}catch(s){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=String(s?.message??s),o.fails+=1,o.fails>=e.breakerThreshold&&(o.openUntil=Date.now()+e.breakerResetMs,o.fails=0),s instanceof E)throw $({remote:e.name,error:s}),s;if(s?.code)throw $({remote:e.name,error:s}),s;let l=new E(w.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:l}),l}}function K(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:re(e.slice(r+1))}}function re(e){return e?e.startsWith(".")?e:`./${e}`:""}async function we(e,r){let{remote:n,module:o}=K(e);if(o&&C===n)throw new E(w.SETUP_RECURSION,`\\u73B0\\u8C61\\uFF1A\\u52A0\\u8F7D "${e}" \\u65F6\\uFF0C\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\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:n});try{_.beforeLoadRemote?.({remote:n,module:o})}catch(d){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",d)}let t=u.get(n);if(!t)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5728 federation({ remotes }) \\u4E2D\\u914D\\u7F6E\\uFF0C\\u6216\\u5728\\u52A0\\u8F7D\\u524D\\u8C03\\u7528 registerRemote()\\u3002`,{remote:n});let s;try{let d=o&&t.manifestUrl?q(e):Promise.resolve();[s]=await Promise.all([ee(t,{retries:r?.retries}),d])}catch(d){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`,d),$({remote:n,error:d}),await r.fallbackModule();throw d}if(!o)return s;await le(t,s);let l=`${n}@${t.shareScope||"default"}#${o}`;b.has(l)||b.set(l,s.get(o).catch(d=>{throw b.delete(l),d instanceof E||d?.code?d:new E(w.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u52A0\\u8F7D\\u6A21\\u5757 "${o}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(d?.message??d)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:n,module:o})}));let i;try{i=await b.get(l)}catch(d){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`,d),$({remote:n,error:d}),await r.fallbackModule();throw d}try{_.afterLoadRemote?.({remote:n,module:o,module_ns:i})}catch(d){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",d)}if(i&&typeof i=="object"&&Object.keys(i).length===0){let d=new E(w.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6A21\\u5757 "${o}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:n,module:o});$({remote:n,error:d}),console.error(d.message)}return i}function Re(e){let r=u.get(e);if(!r)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:e});return ee(r)}async function q(e,r={}){let{remote:n,module:o}=K(e),t=u.get(n);if(!t)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:n});let s=r.mode??"preload",l=(g,h)=>{if(g.sheet)return Promise.resolve();let m=I.get(g);if(m)return m;let y=new Promise(O=>{let P=()=>{g.removeEventListener("load",P),g.removeEventListener("error",k),O()},k=()=>{$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${h}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:n})}),P()};g.addEventListener("load",P,{once:!0}),g.addEventListener("error",k,{once:!0}),g.sheet&&P()});return I.set(g,y),y},i=(g,h)=>{if(typeof document>"u")return Promise.resolve();let m=document.querySelector(`link[href="${g}"]`);if(m)return h==="style"&&s==="preload"?I.get(m)??Promise.resolve():Promise.resolve();let y=document.createElement("link");y.rel=h==="style"?"stylesheet":"modulepreload",y.href=g,s==="prefetch"&&(y.fetchPriority="low");let O=h==="style"?l(y,g):Promise.resolve();return document.head.appendChild(y),h==="style"&&s==="preload"?O:Promise.resolve()},d=g=>{let h=typeof document<"u"?document.baseURI:void 0,m=new URL(t.entry,h||"http://fulgurjs.invalid/");return!m.pathname.endsWith("/")&&!m.pathname.split("/").pop().includes(".")&&(m.pathname+="/"),new URL(g,m).href};try{if(t.manifestUrl){let g=v.get(t.manifestUrl);g||(g=fetch(t.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(m=>m.ok?m.json():void 0),v.set(t.manifestUrl,g),g.then(m=>{m||v.delete(t.manifestUrl)},()=>v.delete(t.manifestUrl)));let h=await g;if(h){let m=h.schemaVersion;if(typeof m=="number"&&(!Number.isInteger(m)||m>1)){$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(m)}\\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:n})}),await i(t.entry,"modulepreload");return}await i(t.entry,"modulepreload");let y=h.exposes,O=Array.isArray(y)?y.filter(L=>L&&typeof L=="object").map(L=>[String(L.name??""),L]):y&&typeof y=="object"?Object.entries(y):[],P=o?O.filter(([L,j])=>re(String(j?.name??L))===o):O,k=[];for(let[,L]of P)if(typeof L?.file=="string"&&await i(d(L.file),"modulepreload"),Array.isArray(L?.css))for(let j of L.css){if(typeof j!="string")continue;let be=i(d(j),"style");s==="preload"&&k.push(be)}await Promise.all(k);return}}await i(t.entry,"modulepreload")}catch(g){$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(g?.message??g)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:n})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=c,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,n]of u)e[r]={...n.debug,entry:n.entry};return e},errors:[]}),{shareScopeMap:c,initSharing:fe,registerShare:F,registerRemotes:J,registerRemote:me,registerPlugins:pe,loadShare:X,loadShareSync:ye,prepareShares:Se,getLoadedShare:ge,pinLoadedShare:he,loadRemote:we,getContainer:Re,preloadRemote:q,parseSpec:K,clearSessionState:ue}}var oe=globalThis,R=oe.__FULGURJS_RUNTIME__??Ce();oe.__FULGURJS_RUNTIME__=R;try{Object.freeze(R)}catch{}var Je=ne;function We(){return R}var Xe=R.initSharing,ze=R.registerShare,Ye=R.registerRemotes,Ze=R.registerRemote,Qe=R.registerPlugins,er=R.loadShare,rr=R.getLoadedShare,nr=R.prepareShares||(async c=>{for(let{name:u,opts:f}of c)await R.loadShare(u,f)}),tr=R.loadShareSync,or=R.pinLoadedShare,sr=R.loadRemote,ir=R.getContainer,ar=R.preloadRemote,cr=R.parseSpec,lr=R.clearSessionState,ur=R.shareScopeMap;function fr(c){if(c&&typeof c=="object"&&"default"in c){let u=c.default;return u!==void 0?u:c}return c}var dr=R;export{lr as clearSessionState,dr as default,ir as getContainer,rr as getLoadedShare,We as getRuntime,Xe as initSharing,sr as loadRemote,er as loadShare,tr as loadShareSync,cr as parseSpec,or as pinLoadedShare,ar as preloadRemote,nr as prepareShares,Qe as registerPlugins,Ze as registerRemote,Ye as registerRemotes,ze as registerShare,R as runtime,ur as shareScopeMap,fr as unwrapDefault,Je as version};\n';
|
|
2650
2676
|
|
|
2651
2677
|
// src/index.ts
|
|
2652
2678
|
function readRuntimeCode() {
|
|
@@ -2746,6 +2772,7 @@ function federation(options) {
|
|
|
2746
2772
|
exposeFiles: {},
|
|
2747
2773
|
resolvedSharedPaths: /* @__PURE__ */ new Map(),
|
|
2748
2774
|
entryAbsPaths: /* @__PURE__ */ new Set(),
|
|
2775
|
+
bootstrapEntries: /* @__PURE__ */ new Set(),
|
|
2749
2776
|
entryInitInjected: /* @__PURE__ */ new Set(),
|
|
2750
2777
|
manualChunkGroups: /* @__PURE__ */ new Map(),
|
|
2751
2778
|
sharedClosureRoots: [],
|
|
@@ -3056,6 +3083,7 @@ export { default } from ${JSON.stringify(url)};
|
|
|
3056
3083
|
if (bareClean === RUNTIME_VIRTUAL_ID) return RESOLVED.runtime;
|
|
3057
3084
|
if (bareClean === RUNTIME_PROXY_VIRTUAL_ID) return RESOLVED.runtimeProxy;
|
|
3058
3085
|
if (bareClean === INIT_VIRTUAL_ID) return RESOLVED.init;
|
|
3086
|
+
if (bareClean.startsWith("virtual:fulgurjs-bootstrap:")) return "\0" + bareClean;
|
|
3059
3087
|
if (bareClean === "virtual:fulgurjs-remote-schema") return bareClean;
|
|
3060
3088
|
if (bareClean === "virtual:fulgurjs-api-facade") return bareClean;
|
|
3061
3089
|
if (bareClean === "virtual:fulgurjs-api-facade-react") return bareClean;
|
|
@@ -3087,6 +3115,9 @@ export { default } from ${JSON.stringify(url)};
|
|
|
3087
3115
|
const clean = q === -1 ? raw : raw.slice(0, q);
|
|
3088
3116
|
if (clean === "virtual:fulgurjs-runtime") return readRuntimeCode();
|
|
3089
3117
|
if (clean === RESOLVED.runtimeProxy || clean === RUNTIME_PROXY_VIRTUAL_ID) return genRuntimeProxyModule();
|
|
3118
|
+
if (clean.startsWith("virtual:fulgurjs-bootstrap:") && state.normalized) {
|
|
3119
|
+
return genAsyncBootstrap(state.normalized, decodeURIComponent(clean.slice("virtual:fulgurjs-bootstrap:".length)));
|
|
3120
|
+
}
|
|
3090
3121
|
if (clean === "virtual:fulgurjs-init" && state.normalized) {
|
|
3091
3122
|
return genInitModule(state.normalized, state.command);
|
|
3092
3123
|
}
|
|
@@ -3189,7 +3220,7 @@ export { default } from ${JSON.stringify(url)};
|
|
|
3189
3220
|
async transform(code, id) {
|
|
3190
3221
|
if (!state.normalized) return null;
|
|
3191
3222
|
const clean = id.split("?")[0];
|
|
3192
|
-
if (state.command === "build" && state.entryAbsPaths.has(clean) && !state.entryInitInjected.has(clean)) {
|
|
3223
|
+
if (state.command === "build" && state.entryAbsPaths.has(clean) && !state.bootstrapEntries.has(clean) && !state.entryInitInjected.has(clean)) {
|
|
3193
3224
|
state.entryInitInjected.add(clean);
|
|
3194
3225
|
const initCode = genInitModule(state.normalized, state.command);
|
|
3195
3226
|
return { code: `${initCode}
|
|
@@ -3244,6 +3275,18 @@ ${code}`, map: null };
|
|
|
3244
3275
|
state.entryAbsPaths.add(abs);
|
|
3245
3276
|
}
|
|
3246
3277
|
debugLog("init-entry", { stage: "capture", count: state.entryAbsPaths.size, entries: [...state.entryAbsPaths].map((p) => redactModulePath(p, state.normalized.root)) });
|
|
3278
|
+
if (state.normalized.runtimePlugins.length > 0) {
|
|
3279
|
+
return html.replace(/<script\b[^>]*>[\s\S]*?<\/script>/g, (script) => {
|
|
3280
|
+
const tag = script.slice(0, script.indexOf(">") + 1);
|
|
3281
|
+
if (!/\btype=["']module["']/.test(tag)) return script;
|
|
3282
|
+
const src = srcRe.exec(tag)?.[1];
|
|
3283
|
+
if (!src || src.startsWith("http") || src.startsWith("//")) return script;
|
|
3284
|
+
const abs = import_node_path6.default.resolve(state.normalized.root, src.startsWith("/") ? src.slice(1) : src);
|
|
3285
|
+
state.bootstrapEntries.add(abs);
|
|
3286
|
+
const id = "virtual:fulgurjs-bootstrap:" + encodeURIComponent(abs);
|
|
3287
|
+
return tag.replace(/\s+src=["'][^"']+["']/, "") + `import ${JSON.stringify(id)};</script>`;
|
|
3288
|
+
});
|
|
3289
|
+
}
|
|
3247
3290
|
return html;
|
|
3248
3291
|
}
|
|
3249
3292
|
},
|