@fulgurjs/federation 5.5.2 → 5.6.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.6.0";
47
47
 
48
48
  // src/dev-cors.ts
49
49
  function normalizeDevCorsOrigins(input) {
@@ -769,6 +769,61 @@ function genBindingFacade(item, bindings, loadShareCall, dynamic = false) {
769
769
  lines.push("");
770
770
  return lines.join("\n");
771
771
  }
772
+ function shareOptsLines(item) {
773
+ return [
774
+ `shareScope: ${JSON.stringify(item.shareScope)}`,
775
+ `shareKey: ${JSON.stringify(item.shareKey)}`,
776
+ ...item.requiredVersion !== false ? [`requiredVersion: ${JSON.stringify(item.requiredVersion)}`] : [],
777
+ ...item.singleton ? ["singleton: true"] : [],
778
+ ...item.strictVersion ? ["strictVersion: true"] : []
779
+ ];
780
+ }
781
+ function genBindingFacadeSync(item, bindings, importTarget) {
782
+ const opts = shareOptsLines(item);
783
+ const lines = [
784
+ `import { getLoadedShare as __fulgurjs_gls, pinLoadedShare as __fulgurjs_pin, unwrapDefault as __fulgurjsU } from "virtual:fulgurjs-runtime";`,
785
+ `import * as __fulgurjs_local from ${JSON.stringify(importTarget)};`,
786
+ // strictVersion 版本冲突时 getLoadedShare 会抛 MFU-003:同步门面与 TLA 路径的
787
+ // loadShare→fallback 语义对齐——回退本地副本,不让协商冲突杀死模块求值
788
+ `let __fulgurjs_snap;`,
789
+ `try { __fulgurjs_snap = __fulgurjs_gls(${JSON.stringify(item.shareKey)}, { ${opts.join(", ")} }); } catch {}`,
790
+ `if (__fulgurjs_snap === undefined) __fulgurjs_pin(${JSON.stringify(item.shareKey)}, { ${opts.join(", ")} }, ${JSON.stringify(item.version)}, __fulgurjs_local);`,
791
+ `const __fulgurjs_m = __fulgurjs_snap ?? __fulgurjs_local;`
792
+ ];
793
+ const seen = /* @__PURE__ */ new Set();
794
+ for (const bRaw of bindings) {
795
+ if (bRaw === "default") continue;
796
+ const asMatch = bRaw.match(/^(.*?)\s+as\s+(.+)$/);
797
+ const imported = (asMatch ? asMatch[1] : bRaw).trim();
798
+ if (seen.has(imported)) continue;
799
+ seen.add(imported);
800
+ lines.push(`export const ${imported} = __fulgurjs_m.${imported};`);
801
+ }
802
+ lines.push(`export default __fulgurjsU(__fulgurjs_m);`);
803
+ lines.push("");
804
+ return lines.join("\n");
805
+ }
806
+ function genSharedNsFacadeSync(item, exportNames, importTarget) {
807
+ const opts = shareOptsLines(item);
808
+ const lines = [
809
+ `import { getLoadedShare as __fulgurjs_gls, pinLoadedShare as __fulgurjs_pin, unwrapDefault as __fulgurjsU } from "virtual:fulgurjs-runtime";`,
810
+ `import * as __fulgurjs_local from ${JSON.stringify(importTarget)};`,
811
+ `let __fulgurjs_snap;`,
812
+ `try { __fulgurjs_snap = __fulgurjs_gls(${JSON.stringify(item.shareKey)}, { ${opts.join(", ")} }); } catch {}`,
813
+ `if (__fulgurjs_snap === undefined) __fulgurjs_pin(${JSON.stringify(item.shareKey)}, { ${opts.join(", ")} }, ${JSON.stringify(item.version)}, __fulgurjs_local);`,
814
+ `const __fulgurjs_m = __fulgurjs_snap ?? __fulgurjs_local;`,
815
+ `const __fulgurjs_d = __fulgurjsU(__fulgurjs_m);`,
816
+ `export default __fulgurjs_d;`
817
+ ];
818
+ const seen = /* @__PURE__ */ new Set(["default"]);
819
+ for (const name of exportNames) {
820
+ if (seen.has(name) || !/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name)) continue;
821
+ seen.add(name);
822
+ lines.push(`export const ${name} = __fulgurjs_d[${JSON.stringify(name)}];`);
823
+ }
824
+ lines.push("");
825
+ return lines.join("\n");
826
+ }
772
827
  function genRemoteBindingFacade(remoteSpec, bindings, dynamic = false) {
773
828
  const lines = [
774
829
  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 +2296,354 @@ function syncViteCacheMarker(root, pluginVersion, log) {
2241
2296
  }
2242
2297
 
2243
2298
  // src/async-mark-repair.ts
2244
- var import_magic_string2 = __toESM(require("magic-string"), 1);
2245
2299
  var import_esbuild = require("esbuild");
2246
2300
  var ROLLDOWN_RUNTIME_MARK = "rolldown-runtime";
2247
2301
  var ASYNC_ERROR_SIGNATURE = /await["']?\s+(?:is only allowed within|can only be used inside an?)\s+["']?async/i;
2302
+ var MAX_REPAIR_ROUNDS = 64;
2248
2303
  function validate(code) {
2249
2304
  try {
2250
2305
  (0, import_esbuild.transformSync)(code, { loader: "js", format: "esm" });
2251
2306
  return { ok: true };
2252
2307
  } catch (e) {
2253
2308
  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: "" };
2309
+ const first = err.errors?.[0];
2310
+ const text = first?.text ?? err.message ?? "";
2311
+ if (!ASYNC_ERROR_SIGNATURE.test(text)) return { ok: false, offset: -1, text: "" };
2312
+ const loc = first?.location;
2313
+ if (!loc) return { ok: false, offset: -1, text };
2314
+ let offset = -1;
2315
+ if (loc.line >= 1) {
2316
+ let lineStart = 0;
2317
+ for (let l = 1; l < loc.line; l++) {
2318
+ const nl = code.indexOf("\n", lineStart);
2319
+ if (nl === -1) {
2320
+ lineStart = -1;
2321
+ break;
2322
+ }
2323
+ lineStart = nl + 1;
2324
+ }
2325
+ if (lineStart >= 0) offset = lineStart + loc.column;
2326
+ }
2327
+ return { ok: false, offset, text };
2256
2328
  }
2257
2329
  }
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);
2330
+ function buildCodeMask(code) {
2331
+ const masked = [];
2332
+ const n = code.length;
2333
+ let i = 0;
2334
+ let prevSignificant = "";
2335
+ const lastMeaningful = (from) => {
2336
+ for (let j = from; j >= 0; j--) {
2337
+ const c = code[j];
2338
+ if (!/\s/.test(c)) return c;
2339
+ }
2340
+ return "";
2341
+ };
2342
+ while (i < n) {
2343
+ const c = code[i];
2344
+ if (c === '"' || c === "'") {
2345
+ const start = i;
2346
+ i++;
2347
+ while (i < n) {
2348
+ if (code[i] === "\\") {
2349
+ i += 2;
2350
+ continue;
2351
+ }
2352
+ if (code[i] === c || code[i] === "\n") {
2353
+ i++;
2354
+ break;
2355
+ }
2356
+ i++;
2286
2357
  }
2358
+ masked.push([start, Math.min(i, n)]);
2359
+ prevSignificant = c;
2360
+ continue;
2287
2361
  }
2362
+ if (c === "`") {
2363
+ const start = i;
2364
+ i++;
2365
+ let depth = 0;
2366
+ while (i < n) {
2367
+ if (code[i] === "\\") {
2368
+ i += 2;
2369
+ continue;
2370
+ }
2371
+ if (depth === 0 && code[i] === "`") {
2372
+ i++;
2373
+ break;
2374
+ }
2375
+ if (depth === 0 && code[i] === "$" && code[i + 1] === "{") {
2376
+ depth = 1;
2377
+ i += 2;
2378
+ continue;
2379
+ }
2380
+ if (depth > 0) {
2381
+ if (code[i] === '"' || code[i] === "'") {
2382
+ const q = code[i];
2383
+ i++;
2384
+ while (i < n) {
2385
+ if (code[i] === "\\") {
2386
+ i += 2;
2387
+ continue;
2388
+ }
2389
+ ;
2390
+ if (code[i] === q) {
2391
+ i++;
2392
+ break;
2393
+ }
2394
+ ;
2395
+ i++;
2396
+ }
2397
+ continue;
2398
+ }
2399
+ if (code[i] === "{") depth++;
2400
+ if (code[i] === "}") depth--;
2401
+ }
2402
+ i++;
2403
+ }
2404
+ masked.push([start, Math.min(i, n)]);
2405
+ prevSignificant = "`";
2406
+ continue;
2407
+ }
2408
+ if (c === "/" && code[i + 1] === "/") {
2409
+ const start = i;
2410
+ const nl = code.indexOf("\n", i);
2411
+ i = nl === -1 ? n : nl + 1;
2412
+ masked.push([start, i]);
2413
+ continue;
2414
+ }
2415
+ if (c === "/" && code[i + 1] === "*") {
2416
+ const start = i;
2417
+ const end = code.indexOf("*/", i + 2);
2418
+ i = end === -1 ? n : end + 2;
2419
+ masked.push([start, i]);
2420
+ continue;
2421
+ }
2422
+ if (c === "/") {
2423
+ const p = prevSignificant || lastMeaningful(i - 1);
2424
+ const isDivision = /[A-Za-z0-9_$)\]]/.test(p);
2425
+ if (!isDivision) {
2426
+ const start = i;
2427
+ i++;
2428
+ let inClass = false;
2429
+ while (i < n) {
2430
+ const rc = code[i];
2431
+ if (rc === "\\") {
2432
+ i += 2;
2433
+ continue;
2434
+ }
2435
+ if (rc === "\n") break;
2436
+ if (rc === "[") inClass = true;
2437
+ else if (rc === "]") inClass = false;
2438
+ else if (rc === "/" && !inClass) {
2439
+ i++;
2440
+ break;
2441
+ }
2442
+ i++;
2443
+ }
2444
+ while (i < n && /[a-z]/i.test(code[i])) i++;
2445
+ masked.push([start, Math.min(i, n)]);
2446
+ prevSignificant = "/";
2447
+ continue;
2448
+ }
2449
+ }
2450
+ if (!/\s/.test(c)) prevSignificant = c;
2451
+ i++;
2452
+ }
2453
+ masked.sort((a, b) => a[0] - b[0]);
2454
+ return (offset) => {
2455
+ let lo = 0, hi = masked.length - 1;
2456
+ while (lo <= hi) {
2457
+ const mid = lo + hi >> 1;
2458
+ const [s, e] = masked[mid];
2459
+ if (offset < s) hi = mid - 1;
2460
+ else if (offset >= e) lo = mid + 1;
2461
+ else return true;
2462
+ }
2463
+ return false;
2288
2464
  };
2289
- visit(ast, null);
2290
- return broken.filter((n) => n.__fgBroken === true);
2291
2465
  }
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
- );
2466
+ function findEnclosingFunctionHead(code, awaitOffset, isMasked) {
2467
+ const isCode = (o) => o >= 0 && o < code.length && !isMasked(o);
2468
+ let i = awaitOffset;
2469
+ let depth = 0;
2470
+ while (i > 0) {
2471
+ i--;
2472
+ if (!isCode(i)) continue;
2473
+ const c = code[i];
2474
+ if (c === "}" || c === ")" || c === "]") {
2475
+ depth++;
2476
+ continue;
2477
+ }
2478
+ if (c === "(" || c === "[") {
2479
+ if (depth > 0) depth--;
2480
+ continue;
2481
+ }
2482
+ if (c === "{") {
2483
+ if (depth > 0) {
2484
+ depth--;
2485
+ continue;
2486
+ }
2487
+ const head = classifyBrace(code, i, isCode);
2488
+ if (head) return head;
2489
+ continue;
2490
+ }
2491
+ if (c === ">" && i > 0 && code[i - 1] === "=" && isCode(i - 1)) {
2492
+ const head = arrowHeadBefore(code, i - 1, isCode);
2493
+ if (head) return head;
2494
+ continue;
2495
+ }
2300
2496
  }
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
- );
2497
+ return null;
2498
+ }
2499
+ function skipBackward(from, code, isCode) {
2500
+ let i = from;
2501
+ while (i >= 0 && (!isCode(i) || /\s/.test(code[i]))) i--;
2502
+ return i;
2503
+ }
2504
+ function arrowHeadBefore(code, arrowEq, isCode) {
2505
+ const before = skipBackward(arrowEq - 1, code, isCode);
2506
+ if (before < 0) return null;
2507
+ if (code[before] === ")") {
2508
+ let d = 0;
2509
+ let i = before;
2510
+ while (i >= 0) {
2511
+ if (!isCode(i)) {
2512
+ i--;
2513
+ continue;
2514
+ }
2515
+ const c = code[i];
2516
+ if (c === ")") d++;
2517
+ else if (c === "(") {
2518
+ d--;
2519
+ if (d === 0) return { insertAt: i, kind: "arrow" };
2520
+ }
2521
+ i--;
2522
+ }
2523
+ return null;
2306
2524
  }
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
- );
2525
+ if (/[A-Za-z0-9_$]/.test(code[before])) {
2526
+ let i = before;
2527
+ while (i >= 0 && /[A-Za-z0-9_$]/.test(code[i]) && isCode(i)) i--;
2528
+ return { insertAt: i + 1, kind: "arrow" };
2529
+ }
2530
+ return null;
2531
+ }
2532
+ function classifyBrace(code, brace, isCode) {
2533
+ let i = skipBackward(brace - 1, code, isCode);
2534
+ if (i < 0) return null;
2535
+ if (code[i] === ">" && i > 0 && code[i - 1] === "=") {
2536
+ return arrowHeadBefore(code, i - 1, isCode);
2537
+ }
2538
+ if (code[i] !== ")") return null;
2539
+ let d = 0;
2540
+ let j = i;
2541
+ while (j >= 0) {
2542
+ if (!isCode(j)) {
2543
+ j--;
2544
+ continue;
2318
2545
  }
2319
- s.appendLeft(start, "async ");
2320
- repaired++;
2546
+ const c = code[j];
2547
+ if (c === ")") d++;
2548
+ else if (c === "(") {
2549
+ d--;
2550
+ if (d === 0) break;
2551
+ }
2552
+ j--;
2553
+ }
2554
+ if (j < 0) return null;
2555
+ const beforeParen = skipBackward(j - 1, code, isCode);
2556
+ if (beforeParen < 0) return null;
2557
+ if (code[beforeParen] === "*") return null;
2558
+ if (!/[A-Za-z0-9_$"']/.test(code[beforeParen])) return null;
2559
+ const word = readWordBackward(code, beforeParen, isCode);
2560
+ if (word.word === "function") return { insertAt: word.start, kind: "function" };
2561
+ const beforeWordPos = skipBackward(word.start - 1, code, isCode);
2562
+ if (beforeWordPos >= 0 && /[A-Za-z0-9_$]/.test(code[beforeWordPos])) {
2563
+ const beforeWord = readWordBackward(code, beforeWordPos, isCode);
2564
+ if (beforeWord.word === "function") return { insertAt: beforeWord.start, kind: "function" };
2565
+ }
2566
+ const key = readMethodKeyBackward(code, beforeParen, isCode);
2567
+ return key ? { insertAt: key.start, kind: "method" } : null;
2568
+ }
2569
+ function readWordBackward(code, wordEnd, isCode) {
2570
+ let i = wordEnd;
2571
+ while (i >= 0 && /[A-Za-z0-9_$]/.test(code[i]) && isCode(i)) i--;
2572
+ return { word: code.slice(i + 1, wordEnd + 1), start: i + 1 };
2573
+ }
2574
+ function readMethodKeyBackward(code, keyEnd, isCode) {
2575
+ const i = keyEnd;
2576
+ if (i < 0) return null;
2577
+ let keyStart;
2578
+ if (code[i] === '"' || code[i] === "'") {
2579
+ const q = code[i];
2580
+ let j = i - 1;
2581
+ while (j >= 0) {
2582
+ if (code[j] === "\\") {
2583
+ j -= 2;
2584
+ continue;
2585
+ }
2586
+ ;
2587
+ if (code[j] === q) break;
2588
+ j--;
2589
+ }
2590
+ if (j < 0) return null;
2591
+ keyStart = j;
2592
+ } else if (/[A-Za-z0-9_$]/.test(code[i])) {
2593
+ keyStart = readWordBackward(code, i, isCode).start;
2594
+ } else {
2595
+ return null;
2321
2596
  }
2322
- return { code: s.toString(), repaired };
2597
+ const before = skipBackward(keyStart - 1, code, isCode);
2598
+ if (before >= 0) {
2599
+ if (code[before] === "*") return null;
2600
+ if (/[A-Za-z0-9_$]/.test(code[before])) {
2601
+ const w = readWordBackward(code, before, isCode);
2602
+ if (w.word === "get" || w.word === "set" || w.word === "async") return null;
2603
+ }
2604
+ }
2605
+ return { start: keyStart };
2323
2606
  }
2324
- function repairRolldownAsyncMarks(code, parse2, sourceName) {
2607
+ function repairRolldownAsyncMarks(code, sourceName) {
2325
2608
  if (!code.includes(ROLLDOWN_RUNTIME_MARK) || !code.includes("await")) return null;
2326
2609
  const first = validate(code);
2327
2610
  if (first.ok) return null;
2328
2611
  if (!first.text) return null;
2329
2612
  let current = code;
2330
2613
  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
- );
2614
+ let lastText = first.text;
2615
+ for (let round = 0; round < MAX_REPAIR_ROUNDS; round++) {
2616
+ const v = validate(current);
2617
+ if (v.ok) return { code: current, repaired };
2618
+ if (!v.text) {
2619
+ throw new Error(
2620
+ `[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`
2621
+ );
2622
+ }
2623
+ lastText = v.text;
2624
+ const isMasked = buildCodeMask(current);
2625
+ if (v.offset < 0 || isMasked(v.offset)) {
2626
+ throw new Error(
2627
+ `[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`
2628
+ );
2629
+ }
2630
+ const head = findEnclosingFunctionHead(current, v.offset, isMasked);
2631
+ if (!head) {
2632
+ const ctx = current.slice(Math.max(0, v.offset - 100), v.offset + 100);
2633
+ throw new Error(
2634
+ `[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)}`
2635
+ );
2636
+ }
2637
+ current = current.slice(0, head.insertAt) + "async " + current.slice(head.insertAt);
2638
+ repaired++;
2348
2639
  }
2349
- return { code: current, repaired };
2640
+ throw new Error(
2641
+ `[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`
2642
+ );
2350
2643
  }
2351
2644
 
2352
2645
  // 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';
2646
+ 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.6.0";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';
2354
2647
 
2355
2648
  // src/index.ts
2356
2649
  function readRuntimeCode() {
@@ -2429,6 +2722,16 @@ function providerChunkOf(id, roots) {
2429
2722
  if (!provider) return void 0;
2430
2723
  return "fulgurjs-provider-" + (provider.shareKey.replace(/[^A-Za-z0-9_-]/g, "_") || "unknown");
2431
2724
  }
2725
+ async function resolveSharedImportTarget(item, root) {
2726
+ const specifier = item.import;
2727
+ if (typeof specifier !== "string") return item.shareKey;
2728
+ try {
2729
+ const resolved = await this.resolve?.(specifier, import_node_path6.default.join(root, "package.json"), { skipSelf: true });
2730
+ if (resolved?.id) return resolved.id;
2731
+ } catch {
2732
+ }
2733
+ return specifier;
2734
+ }
2432
2735
  function federation(options) {
2433
2736
  let remoteSchemaPromise = null;
2434
2737
  const state = {
@@ -2513,8 +2816,9 @@ export { default } from ${JSON.stringify(url)};
2513
2816
  `;
2514
2817
  }
2515
2818
  };
2819
+ const isVite8Prebundle = Number((readInstalledVersion(root, "vite") ?? "0").split(".")[0]) >= 8;
2516
2820
  extra.optimizeDeps = {
2517
- esbuildOptions: { plugins: [sharedExternal] },
2821
+ ...isVite8Prebundle ? {} : { esbuildOptions: { plugins: [sharedExternal] } },
2518
2822
  rolldownOptions: { plugins: [rolldownShared] }
2519
2823
  };
2520
2824
  }
@@ -2839,6 +3143,9 @@ export { default } from ${JSON.stringify(url)};
2839
3143
  if (!names.includes(compat)) names.push(compat);
2840
3144
  }
2841
3145
  }
3146
+ if (state.rolldownBuild) {
3147
+ return genSharedNsFacadeSync(item, names, await resolveSharedImportTarget.call(this, item, state.normalized.root));
3148
+ }
2842
3149
  return genSharedNsFacade(item, serializeShareCallForFacade(item), names, state.facadeDynamic);
2843
3150
  }
2844
3151
  if (clean.startsWith("virtual:fulgurjs-shared:") && state.normalized) {
@@ -2859,6 +3166,9 @@ export { default } from ${JSON.stringify(url)};
2859
3166
  }
2860
3167
  const item = state.normalized.shared.find((x) => x.shareKey === entry.shareKey);
2861
3168
  if (!item || item.import === false) return null;
3169
+ if (state.rolldownBuild) {
3170
+ return genBindingFacadeSync(item, entry.bindings, await resolveSharedImportTarget.call(this, item, state.normalized.root));
3171
+ }
2862
3172
  const opts = [
2863
3173
  "shareScope: " + JSON.stringify(item.shareScope),
2864
3174
  "shareKey: " + JSON.stringify(item.shareKey),
@@ -3123,7 +3433,7 @@ ${code}`, map: null };
3123
3433
  order: "pre",
3124
3434
  handler(code, chunk) {
3125
3435
  if (!state.rolldownBuild || state.command !== "build") return null;
3126
- const result = repairRolldownAsyncMarks(code, (input) => this.parse(input), chunk.fileName);
3436
+ const result = repairRolldownAsyncMarks(code, chunk.fileName);
3127
3437
  if (!result) return null;
3128
3438
  debugLog("v8-async-fix", { stage: "renderChunk", file: chunk.fileName, repaired: result.repaired });
3129
3439
  return result.code;
@@ -3160,19 +3470,48 @@ ${code}`, map: null };
3160
3470
  };
3161
3471
  }
3162
3472
  }
3473
+ const moduleToChunk = /* @__PURE__ */ new Map();
3474
+ for (const [fileName, chunk] of Object.entries(bundle)) {
3475
+ if (chunk.type !== "chunk") continue;
3476
+ for (const moduleId of Object.keys(chunk.modules ?? {})) {
3477
+ if (!moduleToChunk.has(moduleId)) moduleToChunk.set(moduleId, fileName);
3478
+ }
3479
+ }
3163
3480
  for (const e of n.exposes) {
3164
3481
  const abs = state.exposeAbsPaths[e.import];
3165
3482
  const hit = abs ? facadeToChunk[abs] : void 0;
3166
- if (hit) state.exposeFiles[e.name] = hit;
3483
+ if (hit) {
3484
+ state.exposeFiles[e.name] = hit;
3485
+ continue;
3486
+ }
3487
+ const merged = abs ? moduleToChunk.get(abs) : void 0;
3488
+ if (merged) {
3489
+ state.exposeFiles[e.name] = { file: merged, css: collectStaticCss(merged) };
3490
+ }
3167
3491
  }
3168
3492
  const entryChunkName = Object.keys(bundle).find((k) => bundle[k].type === "chunk" && k === n.filename);
3169
3493
  const entryChunk = entryChunkName ? bundle[entryChunkName] : void 0;
3170
- if (entryChunk && entryChunk.type === "chunk" && /import\((['"])[^'")]+\1\)/.test(entryChunk.code)) {
3494
+ if (entryChunk && entryChunk.type === "chunk" && /import\((['"`])[^'"`)]+\1\)/.test(entryChunk.code)) {
3171
3495
  const helper = genProdRetryHelper();
3172
3496
  entryChunk.code = entryChunk.code.replace(
3173
- /import\((['"])([^'")]+)\1\)/g,
3497
+ /import\((['"`])([^'"`)]+)\1\)/g,
3174
3498
  (_m, q, u) => `__fgR(${q}${u}${q})`
3175
3499
  );
3500
+ if (state.rolldownBuild) {
3501
+ const depsArrayMatch = /__vite__mapDeps=\(i,m=__vite__mapDeps,d=\(m\.f\|\|\(m\.f=(\[[^\]]*\])\)\)\)=>/.exec(entryChunk.code);
3502
+ if (depsArrayMatch) {
3503
+ try {
3504
+ const deps = JSON.parse(depsArrayMatch[1].replace(/`/g, '"').replace(/'/g, '"'));
3505
+ const cssOnly = new Set(deps.map((d, i) => /\.(css|scss|less)$/.test(d) ? i : -1).filter((i) => i >= 0));
3506
+ entryChunk.code = entryChunk.code.replace(/__vite__mapDeps\(\[([\d,\s]*)\]\)/g, (m, list) => {
3507
+ const kept = list.split(",").map((x) => x.trim()).filter(Boolean).map(Number).filter((i) => cssOnly.has(i));
3508
+ return `__vite__mapDeps([${kept.join(",")}])`;
3509
+ });
3510
+ debugLog("manifest", { stage: "generateBundle", mapDepsCssOnly: true, kept: cssOnly.size, total: deps.length });
3511
+ } catch {
3512
+ }
3513
+ }
3514
+ }
3176
3515
  entryChunk.code = `${helper}
3177
3516
  ${entryChunk.code}`;
3178
3517
  debugLog("manifest", { stage: "generateBundle", retryBust: "remoteEntry loaders wrapped" });