@fulgurjs/federation 5.5.2 → 5.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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.5.2";
46
+ var RUNTIME_VERSION = "5.7.0";
47
47
 
48
48
  // src/dev-cors.ts
49
49
  function normalizeDevCorsOrigins(input) {
@@ -726,19 +726,24 @@ function genCjsNsFacade(item, exportNames, importTarget) {
726
726
  `shareKey: ${JSON.stringify(item.shareKey)}`,
727
727
  ...item.requiredVersion !== false ? [`requiredVersion: ${JSON.stringify(item.requiredVersion)}`] : [],
728
728
  ...item.singleton ? ["singleton: true"] : [],
729
- ...item.strictVersion ? ["strictVersion: true"] : []
729
+ ...item.strictVersion ? ["strictVersion: true"] : [],
730
+ `localVersion: ${JSON.stringify(item.version)}`
730
731
  ];
731
732
  const lines = [
732
- `import { getLoadedShare as __fulgurjs_gls, pinLoadedShare as __fulgurjs_pin, unwrapDefault as __fulgurjsU } from "virtual:fulgurjs-runtime";`,
733
+ // loadShareSync(2026-10-03 语义补修):与异步 loadShare 同一选择器(全注册版本)
734
+ // 与 strictVersion 语义(冲突抛 MFU-003 不吞)、resolveShare 快照/同步决策参与;
735
+ // 旧形态 getLoadedShare 的 readyOnly 过滤会把「已注册未加载」的本地版本排除出
736
+ // 候选集,非 singleton(strictVersion 默认 true)下误判「无满足版本」而拒绝。
737
+ `import { loadShareSync as __fulgurjs_ls, pinLoadedShare as __fulgurjs_pin, unwrapDefault as __fulgurjsU } from "virtual:fulgurjs-runtime";`,
733
738
  // importTarget 为 load 期解析出的绝对 id(proxy 虚拟 id 上下文里裸包名无法 node 解析);
734
739
  // 兜底保留裸包名(与命名空间门面同语义,无 proxy 载体时可解析)
735
740
  `import * as __fulgurjs_local from ${JSON.stringify(importTarget ?? item.import)};`,
736
- `const __fulgurjs_snap = __fulgurjs_gls(${JSON.stringify(item.shareKey)}, { ${opts.join(", ")} });`,
737
- // 未命中同步快照:空作用域登记本地副本,已有条目仅在版本一致且未就绪时回填,
738
- // 使先于 TLA 门面求值的垫片(jsx-runtime 拖入 provider chunk 的场景)与后续协商
739
- // 收敛到同一份实例,杜绝单例双实例。
740
- `if (__fulgurjs_snap === undefined) __fulgurjs_pin(${JSON.stringify(item.shareKey)}, { ${opts.join(", ")} }, ${JSON.stringify(item.version)}, __fulgurjs_local);`,
741
- `const __fulgurjs_m = __fulgurjs_snap ?? __fulgurjs_local;`,
741
+ `const __fulgurjs_r = __fulgurjs_ls(${JSON.stringify(item.shareKey)}, { ${opts.join(", ")} });`,
742
+ // kind=local:空作用域/选中版本==本地版本——登记本地副本,使先于协商门面求值的
743
+ // 垫片(jsx-runtime 拖入 provider chunk 的场景)与后续协商收敛到同一份实例,
744
+ // 杜绝单例双实例。
745
+ `if (__fulgurjs_r.kind !== 'ready') __fulgurjs_pin(${JSON.stringify(item.shareKey)}, { ${opts.join(", ")} }, ${JSON.stringify(item.version)}, __fulgurjs_local);`,
746
+ `const __fulgurjs_m = __fulgurjs_r.kind === 'ready' ? __fulgurjs_r.value : __fulgurjs_local;`,
742
747
  `const __fulgurjs_d = __fulgurjsU(__fulgurjs_m);`,
743
748
  `export default __fulgurjs_d;`
744
749
  ];
@@ -769,6 +774,59 @@ function genBindingFacade(item, bindings, loadShareCall, dynamic = false) {
769
774
  lines.push("");
770
775
  return lines.join("\n");
771
776
  }
777
+ function shareOptsLines(item) {
778
+ return [
779
+ `shareScope: ${JSON.stringify(item.shareScope)}`,
780
+ `shareKey: ${JSON.stringify(item.shareKey)}`,
781
+ ...item.requiredVersion !== false ? [`requiredVersion: ${JSON.stringify(item.requiredVersion)}`] : [],
782
+ ...item.singleton ? ["singleton: true"] : [],
783
+ ...item.strictVersion ? ["strictVersion: true"] : []
784
+ ];
785
+ }
786
+ function genBindingFacadeSync(item, bindings, importTarget) {
787
+ const opts = shareOptsLines(item);
788
+ const optsWithLocal = [...opts, `localVersion: ${JSON.stringify(item.version)}`];
789
+ const lines = [
790
+ `import { loadShareSync as __fulgurjs_ls, pinLoadedShare as __fulgurjs_pin, unwrapDefault as __fulgurjsU } from "virtual:fulgurjs-runtime";`,
791
+ `import * as __fulgurjs_local from ${JSON.stringify(importTarget)};`,
792
+ `const __fulgurjs_r = __fulgurjs_ls(${JSON.stringify(item.shareKey)}, { ${optsWithLocal.join(", ")} });`,
793
+ `const __fulgurjs_m = __fulgurjs_r.kind === 'ready' ? __fulgurjs_r.value : __fulgurjs_local;`,
794
+ `if (__fulgurjs_r.kind !== 'ready') __fulgurjs_pin(${JSON.stringify(item.shareKey)}, { ${optsWithLocal.join(", ")} }, ${JSON.stringify(item.version)}, __fulgurjs_local);`
795
+ ];
796
+ const seen = /* @__PURE__ */ new Set();
797
+ for (const bRaw of bindings) {
798
+ if (bRaw === "default") continue;
799
+ const asMatch = bRaw.match(/^(.*?)\s+as\s+(.+)$/);
800
+ const imported = (asMatch ? asMatch[1] : bRaw).trim();
801
+ if (seen.has(imported)) continue;
802
+ seen.add(imported);
803
+ lines.push(`export const ${imported} = __fulgurjs_m.${imported};`);
804
+ }
805
+ lines.push(`export default __fulgurjsU(__fulgurjs_m);`);
806
+ lines.push("");
807
+ return lines.join("\n");
808
+ }
809
+ function genSharedNsFacadeSync(item, exportNames, importTarget) {
810
+ const opts = shareOptsLines(item);
811
+ const optsWithLocal = [...opts, `localVersion: ${JSON.stringify(item.version)}`];
812
+ const lines = [
813
+ `import { loadShareSync as __fulgurjs_ls, pinLoadedShare as __fulgurjs_pin, unwrapDefault as __fulgurjsU } from "virtual:fulgurjs-runtime";`,
814
+ `import * as __fulgurjs_local from ${JSON.stringify(importTarget)};`,
815
+ `const __fulgurjs_r = __fulgurjs_ls(${JSON.stringify(item.shareKey)}, { ${optsWithLocal.join(", ")} });`,
816
+ `const __fulgurjs_m = __fulgurjs_r.kind === 'ready' ? __fulgurjs_r.value : __fulgurjs_local;`,
817
+ `if (__fulgurjs_r.kind !== 'ready') __fulgurjs_pin(${JSON.stringify(item.shareKey)}, { ${optsWithLocal.join(", ")} }, ${JSON.stringify(item.version)}, __fulgurjs_local);`,
818
+ `const __fulgurjs_d = __fulgurjsU(__fulgurjs_m);`,
819
+ `export default __fulgurjs_d;`
820
+ ];
821
+ const seen = /* @__PURE__ */ new Set(["default"]);
822
+ for (const name of exportNames) {
823
+ if (seen.has(name) || !/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name)) continue;
824
+ seen.add(name);
825
+ lines.push(`export const ${name} = __fulgurjs_d[${JSON.stringify(name)}];`);
826
+ }
827
+ lines.push("");
828
+ return lines.join("\n");
829
+ }
772
830
  function genRemoteBindingFacade(remoteSpec, bindings, dynamic = false) {
773
831
  const lines = [
774
832
  dynamic ? `const { loadRemote: __fulgurjs_loadRemote, unwrapDefault: __fulgurjsU } = await import("virtual:fulgurjs-runtime");` : `import { loadRemote as __fulgurjs_loadRemote, unwrapDefault: __fulgurjsU } from "virtual:fulgurjs-runtime";`.replace("unwrapDefault: __fulgurjsU", "unwrapDefault as __fulgurjsU"),
@@ -2241,116 +2299,354 @@ function syncViteCacheMarker(root, pluginVersion, log) {
2241
2299
  }
2242
2300
 
2243
2301
  // src/async-mark-repair.ts
2244
- var import_magic_string2 = __toESM(require("magic-string"), 1);
2245
2302
  var import_esbuild = require("esbuild");
2246
2303
  var ROLLDOWN_RUNTIME_MARK = "rolldown-runtime";
2247
2304
  var ASYNC_ERROR_SIGNATURE = /await["']?\s+(?:is only allowed within|can only be used inside an?)\s+["']?async/i;
2305
+ var MAX_REPAIR_ROUNDS = 64;
2248
2306
  function validate(code) {
2249
2307
  try {
2250
2308
  (0, import_esbuild.transformSync)(code, { loader: "js", format: "esm" });
2251
2309
  return { ok: true };
2252
2310
  } catch (e) {
2253
2311
  const err = e;
2254
- const text = err.errors?.[0]?.text ?? err.message ?? "";
2255
- return ASYNC_ERROR_SIGNATURE.test(text) ? { ok: false, text } : { ok: false, text: "" };
2312
+ const first = err.errors?.[0];
2313
+ const text = first?.text ?? err.message ?? "";
2314
+ if (!ASYNC_ERROR_SIGNATURE.test(text)) return { ok: false, offset: -1, text: "" };
2315
+ const loc = first?.location;
2316
+ if (!loc) return { ok: false, offset: -1, text };
2317
+ let offset = -1;
2318
+ if (loc.line >= 1) {
2319
+ let lineStart = 0;
2320
+ for (let l = 1; l < loc.line; l++) {
2321
+ const nl = code.indexOf("\n", lineStart);
2322
+ if (nl === -1) {
2323
+ lineStart = -1;
2324
+ break;
2325
+ }
2326
+ lineStart = nl + 1;
2327
+ }
2328
+ if (lineStart >= 0) offset = lineStart + loc.column;
2329
+ }
2330
+ return { ok: false, offset, text };
2256
2331
  }
2257
2332
  }
2258
- function repairBySignature(code) {
2259
- const re = /(?<!async\s*)\(\s*\)\s*=>\s*\{\s*await\b/g;
2260
- let repaired = 0;
2261
- const out = code.replace(re, (m) => {
2262
- repaired++;
2263
- return `async ${m}`;
2264
- });
2265
- return { code: out, repaired };
2266
- }
2267
- function collectBrokenFunctions(ast) {
2268
- const broken = [];
2269
- const fnTypes = /* @__PURE__ */ new Set(["FunctionDeclaration", "FunctionExpression", "ArrowFunctionExpression"]);
2270
- const visit = (node, fn) => {
2271
- if (!node || typeof node !== "object") return;
2272
- const n = node;
2273
- if (typeof n.type !== "string") return;
2274
- let current = fn;
2275
- if (fnTypes.has(n.type)) current = n;
2276
- if (n.type === "AwaitExpression" || n.type === "ForOfStatement" && n.await === true) {
2277
- if (current && current.async !== true) current.__fgBroken = true;
2278
- }
2279
- for (const key of Object.keys(n)) {
2280
- if (key === "type" || key === "start" || key === "end") continue;
2281
- const v = n[key];
2282
- if (Array.isArray(v)) {
2283
- for (const item of v) if (item && typeof item === "object") visit(item, current);
2284
- } else if (v && typeof v === "object") {
2285
- visit(v, current);
2333
+ function buildCodeMask(code) {
2334
+ const masked = [];
2335
+ const n = code.length;
2336
+ let i = 0;
2337
+ let prevSignificant = "";
2338
+ const lastMeaningful = (from) => {
2339
+ for (let j = from; j >= 0; j--) {
2340
+ const c = code[j];
2341
+ if (!/\s/.test(c)) return c;
2342
+ }
2343
+ return "";
2344
+ };
2345
+ while (i < n) {
2346
+ const c = code[i];
2347
+ if (c === '"' || c === "'") {
2348
+ const start = i;
2349
+ i++;
2350
+ while (i < n) {
2351
+ if (code[i] === "\\") {
2352
+ i += 2;
2353
+ continue;
2354
+ }
2355
+ if (code[i] === c || code[i] === "\n") {
2356
+ i++;
2357
+ break;
2358
+ }
2359
+ i++;
2360
+ }
2361
+ masked.push([start, Math.min(i, n)]);
2362
+ prevSignificant = c;
2363
+ continue;
2364
+ }
2365
+ if (c === "`") {
2366
+ const start = i;
2367
+ i++;
2368
+ let depth = 0;
2369
+ while (i < n) {
2370
+ if (code[i] === "\\") {
2371
+ i += 2;
2372
+ continue;
2373
+ }
2374
+ if (depth === 0 && code[i] === "`") {
2375
+ i++;
2376
+ break;
2377
+ }
2378
+ if (depth === 0 && code[i] === "$" && code[i + 1] === "{") {
2379
+ depth = 1;
2380
+ i += 2;
2381
+ continue;
2382
+ }
2383
+ if (depth > 0) {
2384
+ if (code[i] === '"' || code[i] === "'") {
2385
+ const q = code[i];
2386
+ i++;
2387
+ while (i < n) {
2388
+ if (code[i] === "\\") {
2389
+ i += 2;
2390
+ continue;
2391
+ }
2392
+ ;
2393
+ if (code[i] === q) {
2394
+ i++;
2395
+ break;
2396
+ }
2397
+ ;
2398
+ i++;
2399
+ }
2400
+ continue;
2401
+ }
2402
+ if (code[i] === "{") depth++;
2403
+ if (code[i] === "}") depth--;
2404
+ }
2405
+ i++;
2286
2406
  }
2407
+ masked.push([start, Math.min(i, n)]);
2408
+ prevSignificant = "`";
2409
+ continue;
2287
2410
  }
2411
+ if (c === "/" && code[i + 1] === "/") {
2412
+ const start = i;
2413
+ const nl = code.indexOf("\n", i);
2414
+ i = nl === -1 ? n : nl + 1;
2415
+ masked.push([start, i]);
2416
+ continue;
2417
+ }
2418
+ if (c === "/" && code[i + 1] === "*") {
2419
+ const start = i;
2420
+ const end = code.indexOf("*/", i + 2);
2421
+ i = end === -1 ? n : end + 2;
2422
+ masked.push([start, i]);
2423
+ continue;
2424
+ }
2425
+ if (c === "/") {
2426
+ const p = prevSignificant || lastMeaningful(i - 1);
2427
+ const isDivision = /[A-Za-z0-9_$)\]]/.test(p);
2428
+ if (!isDivision) {
2429
+ const start = i;
2430
+ i++;
2431
+ let inClass = false;
2432
+ while (i < n) {
2433
+ const rc = code[i];
2434
+ if (rc === "\\") {
2435
+ i += 2;
2436
+ continue;
2437
+ }
2438
+ if (rc === "\n") break;
2439
+ if (rc === "[") inClass = true;
2440
+ else if (rc === "]") inClass = false;
2441
+ else if (rc === "/" && !inClass) {
2442
+ i++;
2443
+ break;
2444
+ }
2445
+ i++;
2446
+ }
2447
+ while (i < n && /[a-z]/i.test(code[i])) i++;
2448
+ masked.push([start, Math.min(i, n)]);
2449
+ prevSignificant = "/";
2450
+ continue;
2451
+ }
2452
+ }
2453
+ if (!/\s/.test(c)) prevSignificant = c;
2454
+ i++;
2455
+ }
2456
+ masked.sort((a, b) => a[0] - b[0]);
2457
+ return (offset) => {
2458
+ let lo = 0, hi = masked.length - 1;
2459
+ while (lo <= hi) {
2460
+ const mid = lo + hi >> 1;
2461
+ const [s, e] = masked[mid];
2462
+ if (offset < s) hi = mid - 1;
2463
+ else if (offset >= e) lo = mid + 1;
2464
+ else return true;
2465
+ }
2466
+ return false;
2288
2467
  };
2289
- visit(ast, null);
2290
- return broken.filter((n) => n.__fgBroken === true);
2291
2468
  }
2292
- function repairByAst(code, parse2, sourceName) {
2293
- let ast;
2294
- try {
2295
- ast = parse2(code);
2296
- } catch (e) {
2297
- throw new Error(
2298
- `[fulgurjs] \u68C0\u6D4B\u5230\u4EA7\u7269\u5B58\u5728\u300Cawait \u4F4D\u4E8E\u975E async \u51FD\u6570\u300D\uFF08rolldown codegen \u7F3A\u9677\uFF0CV8-ASYNC-FIX\uFF09\uFF0C\u7B7E\u540D\u4FEE\u590D\u540E AST \u89E3\u6790\u4ECD\u5931\u8D25\u65E0\u6CD5\u515C\u5E95\uFF08${sourceName}\uFF09\uFF1A${e instanceof Error ? e.message : String(e)}`
2299
- );
2469
+ function findEnclosingFunctionHead(code, awaitOffset, isMasked) {
2470
+ const isCode = (o) => o >= 0 && o < code.length && !isMasked(o);
2471
+ let i = awaitOffset;
2472
+ let depth = 0;
2473
+ while (i > 0) {
2474
+ i--;
2475
+ if (!isCode(i)) continue;
2476
+ const c = code[i];
2477
+ if (c === "}" || c === ")" || c === "]") {
2478
+ depth++;
2479
+ continue;
2480
+ }
2481
+ if (c === "(" || c === "[") {
2482
+ if (depth > 0) depth--;
2483
+ continue;
2484
+ }
2485
+ if (c === "{") {
2486
+ if (depth > 0) {
2487
+ depth--;
2488
+ continue;
2489
+ }
2490
+ const head = classifyBrace(code, i, isCode);
2491
+ if (head) return head;
2492
+ continue;
2493
+ }
2494
+ if (c === ">" && i > 0 && code[i - 1] === "=" && isCode(i - 1)) {
2495
+ const head = arrowHeadBefore(code, i - 1, isCode);
2496
+ if (head) return head;
2497
+ continue;
2498
+ }
2300
2499
  }
2301
- const broken = collectBrokenFunctions(ast);
2302
- if (broken.length === 0) {
2303
- throw new Error(
2304
- `[fulgurjs] \u68C0\u6D4B\u5230\u300Cawait \u4F4D\u4E8E\u975E async \u51FD\u6570\u300D\uFF08rolldown codegen \u7F3A\u9677\uFF0CV8-ASYNC-FIX\uFF09\uFF0C\u4F46\u672A\u80FD\u5B9A\u4F4D\u5230\u53EF\u4FEE\u590D\u7684\u51FD\u6570\u8282\u70B9\uFF08${sourceName}\uFF09\u3002`
2305
- );
2500
+ return null;
2501
+ }
2502
+ function skipBackward(from, code, isCode) {
2503
+ let i = from;
2504
+ while (i >= 0 && (!isCode(i) || /\s/.test(code[i]))) i--;
2505
+ return i;
2506
+ }
2507
+ function arrowHeadBefore(code, arrowEq, isCode) {
2508
+ const before = skipBackward(arrowEq - 1, code, isCode);
2509
+ if (before < 0) return null;
2510
+ if (code[before] === ")") {
2511
+ let d = 0;
2512
+ let i = before;
2513
+ while (i >= 0) {
2514
+ if (!isCode(i)) {
2515
+ i--;
2516
+ continue;
2517
+ }
2518
+ const c = code[i];
2519
+ if (c === ")") d++;
2520
+ else if (c === "(") {
2521
+ d--;
2522
+ if (d === 0) return { insertAt: i, kind: "arrow" };
2523
+ }
2524
+ i--;
2525
+ }
2526
+ return null;
2306
2527
  }
2307
- const s = new import_magic_string2.default(code);
2308
- let repaired = 0;
2309
- for (const fn of broken) {
2310
- const start = typeof fn.start === "number" ? fn.start : -1;
2311
- const type = String(fn.type);
2312
- const repairable = start >= 0 && (type === "ArrowFunctionExpression" || code.slice(start, start + 8) === "function");
2313
- if (!repairable) {
2314
- const ctx = start >= 0 ? code.slice(Math.max(0, start - 80), start + 80) : code.slice(0, 160);
2315
- throw new Error(
2316
- `[fulgurjs] \u68C0\u6D4B\u5230\u300Cawait \u4F4D\u4E8E\u975E async \u51FD\u6570\u300D\uFF08rolldown codegen \u7F3A\u9677\uFF0CV8-ASYNC-FIX\uFF09\uFF0C\u4F46\u8282\u70B9\u7C7B\u578B ${type} \u65E0\u6CD5\u5B89\u5168\u8865\u6807 async\uFF08${sourceName}\uFF09\u3002\u4E0A\u4E0B\u6587\uFF1A${JSON.stringify(ctx)}`
2317
- );
2528
+ if (/[A-Za-z0-9_$]/.test(code[before])) {
2529
+ let i = before;
2530
+ while (i >= 0 && /[A-Za-z0-9_$]/.test(code[i]) && isCode(i)) i--;
2531
+ return { insertAt: i + 1, kind: "arrow" };
2532
+ }
2533
+ return null;
2534
+ }
2535
+ function classifyBrace(code, brace, isCode) {
2536
+ let i = skipBackward(brace - 1, code, isCode);
2537
+ if (i < 0) return null;
2538
+ if (code[i] === ">" && i > 0 && code[i - 1] === "=") {
2539
+ return arrowHeadBefore(code, i - 1, isCode);
2540
+ }
2541
+ if (code[i] !== ")") return null;
2542
+ let d = 0;
2543
+ let j = i;
2544
+ while (j >= 0) {
2545
+ if (!isCode(j)) {
2546
+ j--;
2547
+ continue;
2548
+ }
2549
+ const c = code[j];
2550
+ if (c === ")") d++;
2551
+ else if (c === "(") {
2552
+ d--;
2553
+ if (d === 0) break;
2554
+ }
2555
+ j--;
2556
+ }
2557
+ if (j < 0) return null;
2558
+ const beforeParen = skipBackward(j - 1, code, isCode);
2559
+ if (beforeParen < 0) return null;
2560
+ if (code[beforeParen] === "*") return null;
2561
+ if (!/[A-Za-z0-9_$"']/.test(code[beforeParen])) return null;
2562
+ const word = readWordBackward(code, beforeParen, isCode);
2563
+ if (word.word === "function") return { insertAt: word.start, kind: "function" };
2564
+ const beforeWordPos = skipBackward(word.start - 1, code, isCode);
2565
+ if (beforeWordPos >= 0 && /[A-Za-z0-9_$]/.test(code[beforeWordPos])) {
2566
+ const beforeWord = readWordBackward(code, beforeWordPos, isCode);
2567
+ if (beforeWord.word === "function") return { insertAt: beforeWord.start, kind: "function" };
2568
+ }
2569
+ const key = readMethodKeyBackward(code, beforeParen, isCode);
2570
+ return key ? { insertAt: key.start, kind: "method" } : null;
2571
+ }
2572
+ function readWordBackward(code, wordEnd, isCode) {
2573
+ let i = wordEnd;
2574
+ while (i >= 0 && /[A-Za-z0-9_$]/.test(code[i]) && isCode(i)) i--;
2575
+ return { word: code.slice(i + 1, wordEnd + 1), start: i + 1 };
2576
+ }
2577
+ function readMethodKeyBackward(code, keyEnd, isCode) {
2578
+ const i = keyEnd;
2579
+ if (i < 0) return null;
2580
+ let keyStart;
2581
+ if (code[i] === '"' || code[i] === "'") {
2582
+ const q = code[i];
2583
+ let j = i - 1;
2584
+ while (j >= 0) {
2585
+ if (code[j] === "\\") {
2586
+ j -= 2;
2587
+ continue;
2588
+ }
2589
+ ;
2590
+ if (code[j] === q) break;
2591
+ j--;
2592
+ }
2593
+ if (j < 0) return null;
2594
+ keyStart = j;
2595
+ } else if (/[A-Za-z0-9_$]/.test(code[i])) {
2596
+ keyStart = readWordBackward(code, i, isCode).start;
2597
+ } else {
2598
+ return null;
2599
+ }
2600
+ const before = skipBackward(keyStart - 1, code, isCode);
2601
+ if (before >= 0) {
2602
+ if (code[before] === "*") return null;
2603
+ if (/[A-Za-z0-9_$]/.test(code[before])) {
2604
+ const w = readWordBackward(code, before, isCode);
2605
+ if (w.word === "get" || w.word === "set" || w.word === "async") return null;
2318
2606
  }
2319
- s.appendLeft(start, "async ");
2320
- repaired++;
2321
2607
  }
2322
- return { code: s.toString(), repaired };
2608
+ return { start: keyStart };
2323
2609
  }
2324
- function repairRolldownAsyncMarks(code, parse2, sourceName) {
2610
+ function repairRolldownAsyncMarks(code, sourceName) {
2325
2611
  if (!code.includes(ROLLDOWN_RUNTIME_MARK) || !code.includes("await")) return null;
2326
2612
  const first = validate(code);
2327
2613
  if (first.ok) return null;
2328
2614
  if (!first.text) return null;
2329
2615
  let current = code;
2330
2616
  let repaired = 0;
2331
- const sig = repairBySignature(current);
2332
- if (sig.repaired > 0) {
2333
- current = sig.code;
2334
- repaired += sig.repaired;
2335
- }
2336
- const afterSig = validate(current);
2337
- if (!afterSig.ok) {
2338
- if (!afterSig.text) return null;
2339
- const ast = repairByAst(current, parse2, sourceName);
2340
- current = ast.code;
2341
- repaired += ast.repaired;
2342
- }
2343
- const final = validate(current);
2344
- if (!final.ok) {
2345
- throw new Error(
2346
- `[fulgurjs] async \u6807\u8BB0\u4FEE\u590D\u540E\u590D\u9A8C\u4ECD\u672A\u901A\u8FC7\uFF08${sourceName}\uFF09\uFF1A${final.text || "\u672A\u77E5\u8BED\u6CD5\u9519\u8BEF"}`
2347
- );
2617
+ let lastText = first.text;
2618
+ for (let round = 0; round < MAX_REPAIR_ROUNDS; round++) {
2619
+ const v = validate(current);
2620
+ if (v.ok) return { code: current, repaired };
2621
+ if (!v.text) {
2622
+ throw new Error(
2623
+ `[fulgurjs] async \u6807\u8BB0\u4FEE\u590D\u8FC7\u7A0B\u4E2D\u51FA\u73B0\u975E\u76EE\u6807\u8BED\u6CD5\u9519\u8BEF\uFF08rolldown codegen \u7F3A\u9677\uFF0CV8-ASYNC-FIX\uFF0C${sourceName}\uFF09\u3002\u5DF2\u5B8C\u6210\u8865\u6807 ${repaired} \u5904\u3002\u8BF7\u628A\u8BE5 chunk \u4E0E\u6784\u5EFA\u914D\u7F6E\u53CD\u9988\u7ED9 fulgurjs\u3002`
2624
+ );
2625
+ }
2626
+ lastText = v.text;
2627
+ const isMasked = buildCodeMask(current);
2628
+ if (v.offset < 0 || isMasked(v.offset)) {
2629
+ throw new Error(
2630
+ `[fulgurjs] \u68C0\u6D4B\u5230\u300Cawait \u4F4D\u4E8E\u975E async \u51FD\u6570\u300D\uFF08rolldown codegen \u7F3A\u9677\uFF0CV8-ASYNC-FIX\uFF09\uFF0C\u4F46\u65E0\u6CD5\u5B9A\u4F4D\u7834\u635F await \u7684\u4EE3\u7801\u4F4D\u7F6E\uFF08${sourceName}\uFF09\uFF1A${v.text}\u3002`
2631
+ );
2632
+ }
2633
+ const head = findEnclosingFunctionHead(current, v.offset, isMasked);
2634
+ if (!head) {
2635
+ const ctx = current.slice(Math.max(0, v.offset - 100), v.offset + 100);
2636
+ throw new Error(
2637
+ `[fulgurjs] \u68C0\u6D4B\u5230\u300Cawait \u4F4D\u4E8E\u975E async \u51FD\u6570\u300D\uFF08rolldown codegen \u7F3A\u9677\uFF0CV8-ASYNC-FIX\uFF09\uFF0C\u4F46\u65E0\u6CD5\u5B89\u5168\u5B9A\u4F4D\u5305\u88F9\u51FD\u6570\u5934\uFF08\u53EF\u80FD\u4E3A getter/setter/\u8BA1\u7B97\u952E\u65B9\u6CD5\u7B49\u4E0D\u652F\u6301\u5F62\u6001\uFF0C${sourceName}\uFF09\u3002\u4E0A\u4E0B\u6587\uFF1A${JSON.stringify(ctx)}`
2638
+ );
2639
+ }
2640
+ current = current.slice(0, head.insertAt) + "async " + current.slice(head.insertAt);
2641
+ repaired++;
2348
2642
  }
2349
- return { code: current, repaired };
2643
+ throw new Error(
2644
+ `[fulgurjs] async \u6807\u8BB0\u4FEE\u590D\u8D85\u8FC7 ${MAX_REPAIR_ROUNDS} \u8F6E\u4ECD\u672A\u901A\u8FC7\uFF08${sourceName}\uFF09\uFF1A${lastText}\u3002\u7591\u4F3C\u975E rolldown \u5DF2\u77E5\u7F3A\u9677\u5F62\u6001\uFF0C\u8BF7\u53CD\u9988\u7ED9 fulgurjs\u3002`
2645
+ );
2350
2646
  }
2351
2647
 
2352
2648
  // src/runtime-code.gen.ts
2353
- var runtime_code_gen_default = 'var we=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function j(a){let c=we.exec(String(a).trim());return c?{major:Number(c[1]),minor:Number(c[2]??0),patch:Number(c[3]??0),pre:c[4]?c[4].split("."):[]}:null}function be(a,c){if(a.length===0&&c.length===0)return 0;if(a.length===0)return 1;if(c.length===0)return-1;let u=Math.max(a.length,c.length);for(let i=0;i<u;i++){let h=a[i],y=c[i];if(h===void 0)return-1;if(y===void 0)return 1;let w=/^\\d+$/.test(h),P=/^\\d+$/.test(y);if(w&&P){let I=Number(h)-Number(y);if(I!==0)return I}else{if(w!==P)return w?-1:1;if(h!==y)return h<y?-1:1}}return 0}function T(a,c){let u=j(a),i=j(c);return!u||!i?a<c?-1:a>c?1:0:u.major!==i.major?u.major-i.major:u.minor!==i.minor?u.minor-i.minor:u.patch!==i.patch?u.patch-i.patch:be(u.pre,i.pre)}var Pe=/^[a-z]+[+:-]/i;function N(a,c){if(c===!1||c==null||c==="")return!0;let u=String(c).trim();return!u||u==="*"||u==="latest"||Pe.test(u)?!0:u.split("||").some(i=>$e(a,i.trim()))}function $e(a,c){if(!c||c==="*")return!j(a)?.pre.length;let u=c.split(/\\s+-\\s+/);if(u.length===2){let y=u[0].trim(),w=u[1].trim();return!(!N(a,`>=${y}`)||!N(a,`<=${w}`))}let i=j(a);if(!i)return!1;let h=ve(c);if(h===null)return!0;for(let y of h)if(!Ie(i,a,y))return!1;return!(i.pre.length>0&&!h.some(y=>y.ver.pre.length>0)&&!h.some(w=>w.ver.major===i.major&&w.ver.minor===i.minor&&w.ver.patch===i.patch))}function ve(a){let c=[],u=a.trim().split(/\\s+/).filter(Boolean);if(u.length===0)return null;for(let i of u){let h=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(i);if(!h)return null;let y=h[1],w=h[2],P=_e(y,w);if(P===null)return null;c.push(...P)}return c}function _e(a,c){let u=Le(c);if(!u)return null;let{ver:i,partial:h}=u;switch(a){case"^":{let y=Me(i);return y?[{op:">=",ver:i},{op:"<",ver:y}]:null}case"~":{let y=h>=2?{major:i.major,minor:i.minor+1,patch:0,pre:[]}:{major:i.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:i},{op:"<",ver:y}]}case">=":return[{op:">=",ver:i}];case">":return h===1?[{op:">=",ver:{major:i.major+1,minor:0,patch:0,pre:[]}}]:h===2?[{op:">=",ver:{major:i.major,minor:i.minor+1,patch:0,pre:[]}}]:[{op:">",ver:i}];case"<":return h===1?[{op:"<",ver:{major:i.major,minor:0,patch:0,pre:[]}}]:h===2?[{op:"<",ver:{major:i.major,minor:i.minor,patch:0,pre:[]}}]:[{op:"<",ver:i}];case"<=":return[{op:"<=",ver:i}];case"=":case void 0:return h===1?[{op:">=",ver:i},{op:"<",ver:{major:i.major+1,minor:0,patch:0,pre:[]}}]:h===2?[{op:">=",ver:i},{op:"<",ver:{major:i.major,minor:i.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:i}];default:return null}}function Me(a){return a.major>0?{major:a.major+1,minor:0,patch:0,pre:[]}:a.minor>0?{major:0,minor:a.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:a.patch+1,pre:[]}}function Le(a){let c=a.replace(/^v/,"").trim();if(!c||c==="*"||c==="x"||c==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let u=c.split("."),i=[],h=0;for(let P of u.slice(0,3))if(/^\\d+$/.test(P))i.push(Number(P)),h++;else{if(P==="x"||P==="X"||P==="*")break;break}let y=c.split("-"),w=y.length>1?y.slice(1).join("-").split("+")[0].split("."):[];return h===0&&w.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:i[0]??0,minor:i[1]??0,patch:i[2]??0,pre:w},partial:h}}function Oe(a,c){switch(c){case">=":return a>=0;case">":return a>0;case"<":return a<0;case"<=":return a<=0;case"=":return a===0}}function Ie(a,c,u){let i=`${a.major}.${a.minor}.${a.patch}`+(a.pre.length?`-${a.pre.join(".")}`:"");if(u.upper)return!(!(T(i,`${u.ver.major}.${u.ver.minor}.${u.ver.patch}`+(u.ver.pre.length?`-${u.ver.pre.join(".")}`:""))>=0)||!(T(i,`${u.upper.major}.${u.upper.minor}.${u.upper.patch}`)<0));let h=T(i,`${u.ver.major}.${u.ver.minor}.${u.ver.patch}`+(u.ver.pre.length?`-${u.ver.pre.join(".")}`:"")),y=Oe(h,u.op);return u.ver.pre.length>0&&a.pre.length===0&&(u.op===">"||u.op==="<")?!1:y}var S=class extends Error{code;details;constructor(c,u,i,h){super(`[fulgurjs:${c}] ${u}`,h),this.name="FgError",this.code=c,this.details=i}},R={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.5.2";var Te="__fulgurjsSetup",xe="__FULGURJS_APP_CONFIG__",G=15e3,ne=2,ke=5,je=3e4,Ne=4e3,Ue=.2;function Ae(){let a=Object.create(null),c=new Map,u=[],i=new Set,h=new Map,y=(e,r)=>JSON.stringify([r.shareScope||"default",r.shareKey||e,r.requiredVersion??null,!!r.singleton,!!r.strictVersion]),w=new Map,P=new Map,I=new WeakMap,U=new WeakMap,O={},oe=()=>{for(let e of u)try{e.init?.(O)}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)}},A=new Map,C,se=e=>{let r=A.get(e);return r||A.set(e,r={}),r},H=()=>globalThis[xe]??{};async function q(e,r,n,s){let o=l=>l instanceof S?l:new S(R.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${s} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${String(l?.message??l)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${s} \\u51FD\\u6570\\u540E\\u91CD\\u65B0\\u52A0\\u8F7D\\uFF1B\\u5931\\u8D25\\u7F13\\u5B58\\u5DF2\\u6E05\\u9664\\uFF0C\\u53EF\\u4EE5\\u76F4\\u63A5\\u91CD\\u8BD5\\u3002`,{remote:e,phase:s},{cause:l});C=e;let t;try{t=r(n)}catch(l){throw o(l)}finally{C=void 0}try{await t}catch(l){throw o(l)}}async function ie(e,r,n,s){e.debug.setup="pending";try{if(e.manifestUrl)try{await K(`${e.name}/${n}`)}catch{}let o=await r.get(n),t=o?.default;if(typeof t!="function")throw new S(R.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 ${o==null?String(o):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(o.onSession!==void 0&&typeof o.onSession!="function")throw new S(R.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 o.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});s.setupExports=o,await q(e.name,t,{appContext:H(),signal:(s.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(o){throw e.debug.setup="failed",s.setupExports=void 0,o}}async function ae(e,r,n){let s=H(),o=s?.sessionKey;if(typeof o!="string"||o==="")throw new S(R.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 ${o===void 0?"\\u7F3A\\u5931":JSON.stringify(o)}\\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===o)return r.sessionPromise;r.controller?.abort();let t=new AbortController;r.controller=t,r.sessionKey=o;let l=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),d=(async()=>{await l,!t.signal.aborted&&await q(e.name,n,{appContext:s,sessionKey:o,signal:t.signal},"onSession")})();return r.sessionPromise=d,d.catch(()=>{r.sessionKey===o&&(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 s=se(e.name);s.setupPromise||(s.setupPromise=ie(e,r,n,s).catch(t=>{throw s.setupPromise=void 0,t})),await s.setupPromise;let o=s.setupExports?.onSession;typeof o=="function"&&await ae(e,s,o)}function ue(){for(let e of A.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let x=e=>a[e]??=Object.create(null);function $(e){try{O.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}function le(e="default"){return x(e),a}function J(e,r,n,s,o={}){let t=x(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:s,from:o.from??"unknown",eager:!!o.eager,loaded:!!o.loaded})}function fe(e){let r=(n,s,o)=>{if(n===void 0)return;if(!(typeof n=="number"&&(o?Number.isInteger(n)&&n>=0&&n<=10:Number.isFinite(n)&&n>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${s} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(n)}\\uFF0C\\u5E94\\u4E3A${o?" 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 W(e){for(let r of e){fe(r);let n=c.get(r.name);c.set(r.name,{timeout:G,retries:ne,...n,...r,breakerThreshold:r.breaker?.threshold??n?.breakerThreshold??ke,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){W([e])}function me(e){u.push(...e),h.clear(),oe()}function F(e,r,n=!1){let s=r.shareScope||"default",o=r.shareKey||e,l=x(s)[o]||{},d=Object.keys(l).filter(m=>!n||r.singleton||l[m].value!==void 0);if(n&&d.length===0)return;let f=r.requiredVersion,p=d.filter(m=>f===void 0||f===!1||N(m,f)),E;if(r.singleton&&d.length>0){let m=d.filter(g=>l[g].loaded);if(E=[...m.length?m:d].sort(T).pop(),!p.includes(E)){let g=l[E],M=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${o}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u5E94\\u7528\\u8981\\u6C42 ${f??"\\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 ${g.from} \\u63D0\\u4F9B\\u7684 ${E}\\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 L=new S(R.SHARE_STRICT_VERSION,M,{shareKey:o,requiredVersion:f});throw $({remote:g.from,error:L}),L}let v=`${s}|${o}|${f??"*"}|${E}|${d.join(",")}`;i.has(v)||(i.add(v),console.warn(`[fulgurjs:MFU-010] ${M}`))}}else if(E=[...p].sort(T).pop(),!E){if(r.strictVersion){let m=new S(R.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${s}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${o}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${f}\\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:o,error:m}),m}return}return l[E]}function X(e,r,n){let s=r.localVersion;if(!s||n===void 0)return;let o=r.shareScope||"default",t=r.shareKey||e,l=x(o),d=Object.hasOwn(l,t)?l[t]:void 0;if(d&&Object.keys(d).length>0){try{let p=F(e,r);p&&p.value===void 0&&p.version===s&&(p.value=n,p.loaded=!0)}catch{}return}J(o,t,s,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let f=l[t]?.[s];f&&(f.value=n)}async function pe(e,r={}){let n=r.shareScope||"default",s=r.shareKey||e,o=x(n)[s]||{},t=F(e,r);if(!t){if(r.fallback){let p=await r.fallback();return X(e,r,p),p}let f=new S(R.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${s}"\\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:s,requiredVersion:r.requiredVersion});throw $({remote:s,error:f}),f}if(O.resolveShare){let f=await O.resolveShare({shareKey:s,shareScope:n,requiredVersion:r.requiredVersion,picked:t,available:Object.values(o)});f&&(t=f)}if(t.value!==void 0)return h.set(y(e,r),t),t.value;if(t.loaded=!0,!t.pendingGet)try{t.pendingGet=t.get()}catch(f){t.pendingGet=Promise.reject(f)}let l=t.pendingGet,d;try{d=await l}catch(f){if(t.value!==void 0)return h.set(y(e,r),t),t.value;throw t.loaded=!1,f}finally{t.pendingGet===l&&(t.pendingGet=void 0)}return t.value===void 0&&(t.value=d),h.set(y(e,r),t),t.value}function ge(e,r={}){return O.resolveShare?h.get(y(e,r))?.value:F(e,r,!0)?.value}function he(e,r,n,s){X(e,{...r,localVersion:n},s)}function B(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((s,o)=>{let t=setTimeout(()=>o(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${n}`)),r);e.then(l=>{clearTimeout(t),s(l)},l=>{clearTimeout(t),o(l)})})}let ye=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 s=`${r.name}\\u2194${e.name}`;Y.has(s)||(Y.add(s),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:R.REMOTE_NAME_MISMATCH})}}async function Z(e,r){let n=r.entryFailCounts.get(e)??0,s=n>0?`${e}${e.includes("?")?"&":"?"}fulgurjs_retry=${n}`:e,o=r.entryInflight.get(e),t=o??import(s);return o||(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??G,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${B(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(R.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 s=e.breakerState;if(s.openUntil>Date.now()){let t=new S(R.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u8FDE\\u7EED\\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u7194\\u65AD\\u5668\\u5DF2\\u5F00\\u542F\\uFF1B\\u5C06\\u5728 ${new Date(s.openUntil).toISOString()} \\u540E\\u5141\\u8BB8\\u91CD\\u8BD5\\u3002\\u8BF7\\u5148\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u670D\\u52A1\\u548C\\u7F51\\u7EDC\\u3002`,{remote:e.name});throw $({remote:e.name,error:t}),t}e.state="loading",e.debug.status="loading";let o=(async()=>{let t=[];if(e.promise)t.push(async()=>{let m=await z(e.promise(),e.timeout??G,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),g=typeof m=="string"?await Z(m,e):m;return V(g,e),g});else for(let m of[e.entry,...e.fallback??[]])t.push(async()=>{let g=await Z(m,e);return V(g,e),g});let l,d,f=!1,p=r?.retries??e.retries??ne;for(let m of t){for(let g=0;g<=p;g++){let M=performance.now();try{l=await m(),e.lastLoadMs=Math.round(performance.now()-M),e.debug.lastLoadMs=e.lastLoadMs,f=!0;break}catch(v){if(d=v,v?.code)throw v;g<p&&await ye(Math.min(Ne,200*2**g)*(1-Ue*(1-2*Math.random())))}}if(f)break}if(!f||!l){let m=B(e.entry),g=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(g.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`),g.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),g.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(g.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`),g.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(R.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${m} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${String(d?.message??d)}\n\\u4FEE\\u6CD5\\uFF1A\n${g.join(`\n`)}`,{remote:e.name})}V(l,e);let E=U.get(l);if(E&&E!==n)throw new S(R.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${E}" \\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(a),U.set(l,n),e.container=l,e.state="loaded",e.debug.status="loaded",s.fails=0,l})();e.containerPromise=o;try{return await o}catch(t){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=String(t?.message??t),s.fails+=1,s.fails>=e.breakerThreshold&&(s.openUntil=Date.now()+e.breakerResetMs,s.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(R.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 Se(e,r){let{remote:n,module:s}=D(e);if(s&&C===n)throw new S(R.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{O.beforeLoadRemote?.({remote:n,module:s})}catch(f){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",f)}let o=c.get(n);if(!o)throw new S(R.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 f=s&&o.manifestUrl?K(e):Promise.resolve();[t]=await Promise.all([Q(o,{retries:r?.retries}),f])}catch(f){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`,f),$({remote:n,error:f}),await r.fallbackModule();throw f}if(!s)return t;await ce(o,t);let l=`${n}@${o.shareScope||"default"}#${s}`;w.has(l)||w.set(l,t.get(s).catch(f=>{throw w.delete(l),f instanceof S||f?.code?f:new S(R.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u52A0\\u8F7D\\u6A21\\u5757 "${s}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(f?.message??f)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:n,module:s})}));let d;try{d=await w.get(l)}catch(f){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`,f),$({remote:n,error:f}),await r.fallbackModule();throw f}try{O.afterLoadRemote?.({remote:n,module:s,module_ns:d})}catch(f){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",f)}if(d&&typeof d=="object"&&Object.keys(d).length===0){let f=new S(R.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6A21\\u5757 "${s}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:n,module:s});$({remote:n,error:f}),console.error(f.message)}return d}function Ee(e){let r=c.get(e);if(!r)throw new S(R.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:s}=D(e),o=c.get(n);if(!o)throw new S(R.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=(p,E)=>{if(p.sheet)return Promise.resolve();let m=I.get(p);if(m)return m;let g=new Promise(M=>{let v=()=>{p.removeEventListener("load",v),p.removeEventListener("error",L),M()},L=()=>{$({remote:n,error:new S(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${E}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:n})}),v()};p.addEventListener("load",v,{once:!0}),p.addEventListener("error",L,{once:!0}),p.sheet&&v()});return I.set(p,g),g},d=(p,E)=>{if(typeof document>"u")return Promise.resolve();let m=document.querySelector(`link[href="${p}"]`);if(m)return E==="style"&&t==="preload"?I.get(m)??Promise.resolve():Promise.resolve();let g=document.createElement("link");g.rel=E==="style"?"stylesheet":"modulepreload",g.href=p,t==="prefetch"&&(g.fetchPriority="low");let M=E==="style"?l(g,p):Promise.resolve();return document.head.appendChild(g),E==="style"&&t==="preload"?M:Promise.resolve()},f=p=>{let E=typeof document<"u"?document.baseURI:void 0,m=new URL(o.entry,E||"http://fulgurjs.invalid/");return!m.pathname.endsWith("/")&&!m.pathname.split("/").pop().includes(".")&&(m.pathname+="/"),new URL(p,m).href};try{if(o.manifestUrl){let p=P.get(o.manifestUrl);p||(p=fetch(o.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(m=>m.ok?m.json():void 0),P.set(o.manifestUrl,p),p.then(m=>{m||P.delete(o.manifestUrl)},()=>P.delete(o.manifestUrl)));let E=await p;if(E){let m=E.schemaVersion;if(typeof m=="number"&&(!Number.isInteger(m)||m>1)){$({remote:n,error:new S(R.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 d(o.entry,"modulepreload");return}await d(o.entry,"modulepreload");let g=E.exposes,M=Array.isArray(g)?g.filter(_=>_&&typeof _=="object").map(_=>[String(_.name??""),_]):g&&typeof g=="object"?Object.entries(g):[],v=s?M.filter(([_,k])=>ee(String(k?.name??_))===s):M,L=[];for(let[,_]of v)if(typeof _?.file=="string"&&await d(f(_.file),"modulepreload"),Array.isArray(_?.css))for(let k of _.css){if(typeof k!="string")continue;let Re=d(f(k),"style");t==="preload"&&L.push(Re)}await Promise.all(L);return}}await d(o.entry,"modulepreload")}catch(p){$({remote:n,error:new S(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(p?.message??p)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:n})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=a,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,n]of c)e[r]={...n.debug,entry:n.entry};return e},errors:[]}),{shareScopeMap:a,initSharing:le,registerShare:J,registerRemotes:W,registerRemote:de,registerPlugins:me,loadShare:pe,getLoadedShare:ge,pinLoadedShare:he,loadRemote:Se,getContainer:Ee,preloadRemote:K,parseSpec:D,clearSessionState:ue}}var te=globalThis,b=te.__FULGURJS_RUNTIME__??Ae();te.__FULGURJS_RUNTIME__=b;try{Object.freeze(b)}catch{}var qe=re;function Je(){return b}var We=b.initSharing,Xe=b.registerShare,Be=b.registerRemotes,ze=b.registerRemote,Ye=b.registerPlugins,Ze=b.loadShare,Qe=b.getLoadedShare,er=b.pinLoadedShare,rr=b.loadRemote,nr=b.getContainer,tr=b.preloadRemote,or=b.parseSpec,sr=b.clearSessionState,ir=b.shareScopeMap;function ar(a){if(a&&typeof a=="object"&&"default"in a){let c=a.default;return c!==void 0?c:a}return a}var cr=b;export{sr as clearSessionState,cr as default,nr as getContainer,Qe as getLoadedShare,Je as getRuntime,We as initSharing,rr as loadRemote,Ze as loadShare,or as parseSpec,er as pinLoadedShare,tr as preloadRemote,Ye as registerPlugins,ze as registerRemote,Be as registerRemotes,Xe as registerShare,b as runtime,ir as shareScopeMap,ar as unwrapDefault,qe as version};\n';
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';
2354
2650
 
2355
2651
  // src/index.ts
2356
2652
  function readRuntimeCode() {
@@ -2429,6 +2725,16 @@ function providerChunkOf(id, roots) {
2429
2725
  if (!provider) return void 0;
2430
2726
  return "fulgurjs-provider-" + (provider.shareKey.replace(/[^A-Za-z0-9_-]/g, "_") || "unknown");
2431
2727
  }
2728
+ async function resolveSharedImportTarget(item, root) {
2729
+ const specifier = item.import;
2730
+ if (typeof specifier !== "string") return item.shareKey;
2731
+ try {
2732
+ const resolved = await this.resolve?.(specifier, import_node_path6.default.join(root, "package.json"), { skipSelf: true });
2733
+ if (resolved?.id) return resolved.id;
2734
+ } catch {
2735
+ }
2736
+ return specifier;
2737
+ }
2432
2738
  function federation(options) {
2433
2739
  let remoteSchemaPromise = null;
2434
2740
  const state = {
@@ -2513,8 +2819,9 @@ export { default } from ${JSON.stringify(url)};
2513
2819
  `;
2514
2820
  }
2515
2821
  };
2822
+ const isVite8Prebundle = Number((readInstalledVersion(root, "vite") ?? "0").split(".")[0]) >= 8;
2516
2823
  extra.optimizeDeps = {
2517
- esbuildOptions: { plugins: [sharedExternal] },
2824
+ ...isVite8Prebundle ? {} : { esbuildOptions: { plugins: [sharedExternal] } },
2518
2825
  rolldownOptions: { plugins: [rolldownShared] }
2519
2826
  };
2520
2827
  }
@@ -2839,6 +3146,9 @@ export { default } from ${JSON.stringify(url)};
2839
3146
  if (!names.includes(compat)) names.push(compat);
2840
3147
  }
2841
3148
  }
3149
+ if (state.rolldownBuild) {
3150
+ return genSharedNsFacadeSync(item, names, await resolveSharedImportTarget.call(this, item, state.normalized.root));
3151
+ }
2842
3152
  return genSharedNsFacade(item, serializeShareCallForFacade(item), names, state.facadeDynamic);
2843
3153
  }
2844
3154
  if (clean.startsWith("virtual:fulgurjs-shared:") && state.normalized) {
@@ -2859,6 +3169,9 @@ export { default } from ${JSON.stringify(url)};
2859
3169
  }
2860
3170
  const item = state.normalized.shared.find((x) => x.shareKey === entry.shareKey);
2861
3171
  if (!item || item.import === false) return null;
3172
+ if (state.rolldownBuild) {
3173
+ return genBindingFacadeSync(item, entry.bindings, await resolveSharedImportTarget.call(this, item, state.normalized.root));
3174
+ }
2862
3175
  const opts = [
2863
3176
  "shareScope: " + JSON.stringify(item.shareScope),
2864
3177
  "shareKey: " + JSON.stringify(item.shareKey),
@@ -3123,7 +3436,7 @@ ${code}`, map: null };
3123
3436
  order: "pre",
3124
3437
  handler(code, chunk) {
3125
3438
  if (!state.rolldownBuild || state.command !== "build") return null;
3126
- const result = repairRolldownAsyncMarks(code, (input) => this.parse(input), chunk.fileName);
3439
+ const result = repairRolldownAsyncMarks(code, chunk.fileName);
3127
3440
  if (!result) return null;
3128
3441
  debugLog("v8-async-fix", { stage: "renderChunk", file: chunk.fileName, repaired: result.repaired });
3129
3442
  return result.code;
@@ -3160,19 +3473,48 @@ ${code}`, map: null };
3160
3473
  };
3161
3474
  }
3162
3475
  }
3476
+ const moduleToChunk = /* @__PURE__ */ new Map();
3477
+ for (const [fileName, chunk] of Object.entries(bundle)) {
3478
+ if (chunk.type !== "chunk") continue;
3479
+ for (const moduleId of Object.keys(chunk.modules ?? {})) {
3480
+ if (!moduleToChunk.has(moduleId)) moduleToChunk.set(moduleId, fileName);
3481
+ }
3482
+ }
3163
3483
  for (const e of n.exposes) {
3164
3484
  const abs = state.exposeAbsPaths[e.import];
3165
3485
  const hit = abs ? facadeToChunk[abs] : void 0;
3166
- if (hit) state.exposeFiles[e.name] = hit;
3486
+ if (hit) {
3487
+ state.exposeFiles[e.name] = hit;
3488
+ continue;
3489
+ }
3490
+ const merged = abs ? moduleToChunk.get(abs) : void 0;
3491
+ if (merged) {
3492
+ state.exposeFiles[e.name] = { file: merged, css: collectStaticCss(merged) };
3493
+ }
3167
3494
  }
3168
3495
  const entryChunkName = Object.keys(bundle).find((k) => bundle[k].type === "chunk" && k === n.filename);
3169
3496
  const entryChunk = entryChunkName ? bundle[entryChunkName] : void 0;
3170
- if (entryChunk && entryChunk.type === "chunk" && /import\((['"])[^'")]+\1\)/.test(entryChunk.code)) {
3497
+ if (entryChunk && entryChunk.type === "chunk" && /import\((['"`])[^'"`)]+\1\)/.test(entryChunk.code)) {
3171
3498
  const helper = genProdRetryHelper();
3172
3499
  entryChunk.code = entryChunk.code.replace(
3173
- /import\((['"])([^'")]+)\1\)/g,
3500
+ /import\((['"`])([^'"`)]+)\1\)/g,
3174
3501
  (_m, q, u) => `__fgR(${q}${u}${q})`
3175
3502
  );
3503
+ if (state.rolldownBuild) {
3504
+ const depsArrayMatch = /__vite__mapDeps=\(i,m=__vite__mapDeps,d=\(m\.f\|\|\(m\.f=(\[[^\]]*\])\)\)\)=>/.exec(entryChunk.code);
3505
+ if (depsArrayMatch) {
3506
+ try {
3507
+ const deps = JSON.parse(depsArrayMatch[1].replace(/`/g, '"').replace(/'/g, '"'));
3508
+ const cssOnly = new Set(deps.map((d, i) => /\.(css|scss|less)$/.test(d) ? i : -1).filter((i) => i >= 0));
3509
+ entryChunk.code = entryChunk.code.replace(/__vite__mapDeps\(\[([\d,\s]*)\]\)/g, (m, list) => {
3510
+ const kept = list.split(",").map((x) => x.trim()).filter(Boolean).map(Number).filter((i) => cssOnly.has(i));
3511
+ return `__vite__mapDeps([${kept.join(",")}])`;
3512
+ });
3513
+ debugLog("manifest", { stage: "generateBundle", mapDepsCssOnly: true, kept: cssOnly.size, total: deps.length });
3514
+ } catch {
3515
+ }
3516
+ }
3517
+ }
3176
3518
  entryChunk.code = `${helper}
3177
3519
  ${entryChunk.code}`;
3178
3520
  debugLog("manifest", { stage: "generateBundle", retryBust: "remoteEntry loaders wrapped" });