@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 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
- const root = reactDomClient.createRoot(el);
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" };
@@ -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
- const root = reactDomClient.createRoot(el);
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
- pick.value = instance;
555
- pick.loaded = true;
556
- console.warn(
557
- `[fulgurjs:MFU-010] \u5171\u4EAB\u5355\u4F8B "${key}" \u7684\u9996\u6B21\u6D88\u8D39\u8005\u4EE5\u672C\u5730\u7248\u672C ${localVersion} \u63A5\u7BA1\u4E86 ${pick.from} \u58F0\u660E\u7684 ${pick.version} \u69FD\u4F4D\uFF08\u8BE5\u7248\u672C\u5C1A\u672A\u52A0\u8F7D\uFF09\u3002`
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
- let entry = selectShareEntry(name, opts);
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\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`,
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\u5171\u4EAB "${shareKey}" \u9009\u62E9\u4E86 ${picked.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
673
- \u4FEE\u6CD5\uFF1A\u8BA9 hook \u4F18\u5148\u9009\u62E9\u5DF2\u5C31\u7EEA\u5B9E\u4F8B\u6216\u672C\u5E94\u7528\u672C\u5730\u7248\u672C\uFF08${opts.localVersion ?? "\u672A\u58F0\u660E"}\uFF09\uFF0C\u6216\u5148\u7ECF\u52A8\u6001 loadShare \u5B8C\u6210\u534F\u5546\u3002`,
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\u5355\u4F8B "${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
687
- \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
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}" \u7684\u540C\u6B65\u9759\u6001\u6D88\u8D39\u4F7F\u7528\u672C\u5730\u526F\u672C ${opts.localVersion ?? ""}\uFF08\u4F5C\u7528\u57DF\u4E2D\u6EE1\u8DB3\u8981\u6C42\u7684\u53E6\u4E00\u7248\u672C ${entry.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`
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-OLQGJR2Z.js";
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";
@@ -10,7 +10,7 @@ import {
10
10
  releaseBridgeSession,
11
11
  resolveBridgeContext,
12
12
  withBridgeTimeout
13
- } from "./chunk-OLQGJR2Z.js";
13
+ } from "./chunk-GLASM5EX.js";
14
14
 
15
15
  // src/bridge-host-react.ts
16
16
  import {
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.0";
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
  },