@fulgurjs/federation 5.9.0 → 5.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/cli.js +141 -21
- package/dist/index.cjs +2 -2
- package/dist/index.js +2 -2
- package/dist/runtime.js +1 -1
- package/docs/API.en.md +2 -2
- package/docs/API.md +2 -2
- package/examples/templates/README.md +12 -11
- package/examples/templates/react-host-vue-remote/README.md +6 -0
- package/examples/templates/react-host-vue-remote/pnpm-lock.yaml +7 -7
- package/examples/templates/react-host-vue-remote/pnpm-workspace.yaml +1 -1
- package/examples/templates/react-host-vue-remote/react-host/package.json +1 -1
- package/examples/templates/react-host-vue-remote/scripts/dev.mjs +82 -29
- package/examples/templates/react-host-vue-remote/vue-remote/package.json +1 -1
- package/examples/templates/react-react/README.md +6 -0
- package/examples/templates/react-react/host/package.json +1 -1
- package/examples/templates/react-react/pnpm-lock.yaml +7 -7
- package/examples/templates/react-react/pnpm-workspace.yaml +1 -1
- package/examples/templates/react-react/remote/package.json +1 -1
- package/examples/templates/react-react/scripts/dev.mjs +82 -29
- package/examples/templates/showcase/README.md +11 -1
- package/examples/templates/showcase/pnpm-lock.yaml +11 -11
- package/examples/templates/showcase/pnpm-workspace.yaml +1 -1
- package/examples/templates/showcase/react-host/index.html +1 -1
- package/examples/templates/showcase/react-host/package.json +1 -1
- package/examples/templates/showcase/react-remote/package.json +1 -1
- package/examples/templates/showcase/scripts/dev.mjs +82 -29
- package/examples/templates/showcase/vue-host/package.json +1 -1
- package/examples/templates/showcase/vue-remote/index.html +1 -1
- package/examples/templates/showcase/vue-remote/package.json +1 -1
- package/examples/templates/showcase/vue-remote/src/main.ts +2 -2
- package/examples/templates/vue-host-react-remote/README.md +6 -0
- package/examples/templates/vue-host-react-remote/pnpm-lock.yaml +7 -7
- package/examples/templates/vue-host-react-remote/pnpm-workspace.yaml +1 -1
- package/examples/templates/vue-host-react-remote/react-remote/package.json +1 -1
- package/examples/templates/vue-host-react-remote/scripts/dev.mjs +82 -29
- package/examples/templates/vue-host-react-remote/vue-host/package.json +1 -1
- package/examples/templates/vue-vue/README.md +6 -0
- package/examples/templates/vue-vue/host/package.json +1 -1
- package/examples/templates/vue-vue/pnpm-lock.yaml +7 -7
- package/examples/templates/vue-vue/pnpm-workspace.yaml +1 -1
- package/examples/templates/vue-vue/remote/package.json +1 -1
- package/examples/templates/vue-vue/scripts/dev.mjs +82 -29
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.9.2
|
|
4
|
+
|
|
5
|
+
- **修复:`fulgurjs create --force` 提示与实际覆盖行为不一致**——此前 `copyFileSync` 会静默改写非空目录中的同名文件,与「只新增、不删除/改写已有文件」的提示矛盾。现实现一致的覆盖合同:`--force` 复用目录时只补缺失文件,同名冲突(同名文件 / 文件-目录类型不符 / 目标侧符号链接)预检后逐项列出并保留用户版本,绝不改写;目标路径是文件、复制中途失败、依赖安装失败均非零退出并保留现场(已生成工程可用于排查,不删除用户原文件)。`--json` 模式 stdout 仅输出最终结果 JSON(进度与 pnpm 安装日志改走 stderr),输出新增 `copiedCount`/`skippedConflicts`。回归:同名 `package.json`/锁文件内容逐字节保护、类型冲突、符号链接不穿透、幂等重跑零改写等 14 例。
|
|
6
|
+
- **修复:模板统一 dev 启动器(`scripts/dev.mjs`)监督空窗与孤儿孙进程**——①运行期退出监听此前在「全部就绪」之后才注册,远程就绪后、宿主启动期间退出会漏报并错误宣布整组可用;现每个进程从 spawn 起进入全生命周期监督,统一失败通道(幂等,多事件并发不冲突)。②停止清理此前在「包管理器父进程已退出」时跳过组信号,留下仍监听端口的 dev server 孙进程;现无条件发进程组信号(ESRCH 容忍),SIGKILL 兜底 + 15s 看门狗。进程级回归 10 例(就绪前失败 / 就绪后宿主启动期间退出 / 全就绪后退出 / 探活超时 / 端口占用保护既有服务 / 孤儿孙进程终止 / pnpm 缺失 / pnpm 启动失败 / SIGTERM 清理到端口释放 / 含空格与中文路径),挂入 `npm run test:examples`。
|
|
7
|
+
- **改端口指导统一为四处同步清单**:模板 README 曾把 `scripts/dev.config.json` 的端口写成「可选」,create 结束提示与启动器占用报错也未列全,用户改应用端口会被旧端口阻塞或探活超时。现四处清单(各应用 package.json 的 dev/preview `--port`、宿主 `fulgurjs.config.ts` remotes dev 地址、`scripts/dev.config.json` 的 `port`【必改】、README 端口表)贯穿:模板总 README、五模板各自 README(复制出去后自含)、create 成功提示、启动器端口占用报错、CLI help、中英文 API 手册。区分 dev 端口与生产部署地址(`prod` 不随改端口变化)。
|
|
8
|
+
- **独立启动页/注释的默认端口标注**(showcase 独立页标题与链接、模板 README 顶部端口表明确为「默认端口」口径,与四处清单第④项对齐)。
|
|
9
|
+
- 模板依赖钉 5.9.1(5.9.2 发布时的最后已发布验证版本;本版本仅改 CLI/文档/示例与版本常量,运行时与 5.9.1 无语义差异——README 与模板 README 已明示该口径)。版本 5.9.1 → 5.9.2。
|
|
10
|
+
|
|
11
|
+
## 5.9.1
|
|
12
|
+
|
|
13
|
+
- **npm 包内模板与正式版本对齐**:包内 `examples/templates` 的插件依赖由 5.8.0 升至 **5.9.0**(精确版本 + 锁文件)。5.9.0 包因「先发布、后升模板依赖」的两阶段时序,包内模板仍锁 5.8.0(可正常安装,但 `create` 生成的工程与 npm latest 不一致);本版本重新打包,使 `fulgurjs create` 生成的工程直接安装当前正式版本。插件源码与 5.9.0 完全一致(仅 version 常量与包内模板)。
|
|
14
|
+
- 版本 5.9.0 → 5.9.1。
|
|
15
|
+
|
|
3
16
|
## 5.9.0
|
|
4
17
|
|
|
5
18
|
- **新增 CLI:`fulgurjs create`——完整工程创建向导(新项目入口)**。从已安装 npm 包内复制一个完整模板工程(workspace + 子应用 + 锁文件 + 统一启动脚本)并默认执行 `pnpm install --frozen-lockfile`;交互(TTY)与显式参数(`create <模板> [--dir] [--no-install] [--force] [--json]`)双形态;目标目录非空默认拒绝(`--force` 只增量复制不删除);复制后校验关键文件齐全;安装失败非零退出并透传原因;完成后打印进入/启动/构建/部署命令(入口从模板 `scripts/dev.config.json` 读取)。与 `init` 职责区分:init 面向已有项目生成单文件配置(`--template` 语义不变,仍是输出路径);create 从零创建完整工程,模板唯一来源为包内 `examples/templates/`,不 clone 插件仓库、不依赖作者路径。不做应用名称/端口改写(改端口清单在模板 README)。
|
package/README.en.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
For example, a main application can load a separately deployed approval page, a Vue host can embed a React sub-app, or several applications can use the same utility module. Each application can live in its own repository and build and deploy separately.
|
|
10
10
|
|
|
11
|
-
This is the usage guide. Examples and templates are written against **5.
|
|
11
|
+
This is the usage guide. Examples and templates are written against **5.9.0** (the exact version in each project's `package.json` is what gets installed). Signatures, defaults and execution rules are in the [API reference](https://github.com/chenmingye/fulgurjs-federation/blob/master/docs/API.en.md).
|
|
12
12
|
|
|
13
13
|
## Choose what you need
|
|
14
14
|
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
例如:主系统加载独立部署的审批页面,Vue 页面中嵌入一个 React 子应用,或者多个应用共用同一套工具函数。提供方和使用方可以放在不同仓库,各自构建和部署。
|
|
10
10
|
|
|
11
|
-
本文是使用指南,示例与模板按 **5.
|
|
11
|
+
本文是使用指南,示例与模板按 **5.9.0** 编写(各工程 `package.json` 声明的精确版本即实际安装版本)。完整参数、默认值和执行规则在 [API 手册](https://github.com/chenmingye/fulgurjs-federation/blob/master/docs/API.md)。
|
|
12
12
|
|
|
13
13
|
## 先看你要做什么
|
|
14
14
|
|
package/dist/cli.js
CHANGED
|
@@ -529,6 +529,7 @@ var create_exports = {};
|
|
|
529
529
|
__export(create_exports, {
|
|
530
530
|
COPY_EXCLUDED: () => COPY_EXCLUDED,
|
|
531
531
|
TEMPLATE_CATALOG: () => TEMPLATE_CATALOG,
|
|
532
|
+
copyMissingFiles: () => copyMissingFiles,
|
|
532
533
|
copyTemplate: () => copyTemplate,
|
|
533
534
|
createProject: () => createProject,
|
|
534
535
|
defaultInstall: () => defaultInstall,
|
|
@@ -538,6 +539,7 @@ __export(create_exports, {
|
|
|
538
539
|
packageRootOf: () => packageRootOf,
|
|
539
540
|
readDevConfig: () => readDevConfig,
|
|
540
541
|
resolveTemplatesRoot: () => resolveTemplatesRoot,
|
|
542
|
+
scanTemplateConflicts: () => scanTemplateConflicts,
|
|
541
543
|
validateTemplateDir: () => validateTemplateDir
|
|
542
544
|
});
|
|
543
545
|
import fs2 from "node:fs";
|
|
@@ -560,15 +562,75 @@ function isExcluded(name) {
|
|
|
560
562
|
if (COPY_EXCLUDED.has(name)) return true;
|
|
561
563
|
return name.endsWith(".log");
|
|
562
564
|
}
|
|
565
|
+
function scanTemplateConflicts(from, to) {
|
|
566
|
+
const conflicts = [];
|
|
567
|
+
const walk = (srcDir, relDir) => {
|
|
568
|
+
for (const entry of fs2.readdirSync(srcDir, { withFileTypes: true })) {
|
|
569
|
+
if (isExcluded(entry.name)) continue;
|
|
570
|
+
const rel = relDir ? `${relDir}/${entry.name}` : entry.name;
|
|
571
|
+
const src = path2.join(srcDir, entry.name);
|
|
572
|
+
const dest = path2.join(to, rel);
|
|
573
|
+
let destStat;
|
|
574
|
+
try {
|
|
575
|
+
destStat = fs2.lstatSync(dest);
|
|
576
|
+
} catch {
|
|
577
|
+
}
|
|
578
|
+
if (!destStat) {
|
|
579
|
+
if (entry.isDirectory()) walk(src, rel);
|
|
580
|
+
continue;
|
|
581
|
+
}
|
|
582
|
+
if (destStat.isSymbolicLink()) {
|
|
583
|
+
conflicts.push({ rel, reason: "\u76EE\u6807\u5DF2\u6709\u7B26\u53F7\u94FE\u63A5\uFF0C\u4E0D\u5199\u5165" });
|
|
584
|
+
continue;
|
|
585
|
+
}
|
|
586
|
+
if (entry.isDirectory()) {
|
|
587
|
+
if (!destStat.isDirectory()) conflicts.push({ rel, reason: "\u6A21\u677F\u662F\u76EE\u5F55\uFF0C\u76EE\u6807\u540C\u540D\u8DEF\u5F84\u662F\u6587\u4EF6" });
|
|
588
|
+
else walk(src, rel);
|
|
589
|
+
continue;
|
|
590
|
+
}
|
|
591
|
+
if (destStat.isDirectory()) conflicts.push({ rel, reason: "\u6A21\u677F\u662F\u6587\u4EF6\uFF0C\u76EE\u6807\u540C\u540D\u8DEF\u5F84\u662F\u76EE\u5F55" });
|
|
592
|
+
else conflicts.push({ rel, reason: "\u540C\u540D\u6587\u4EF6\u5DF2\u5B58\u5728\uFF08\u4FDD\u7559\u4F60\u7684\u7248\u672C\uFF09" });
|
|
593
|
+
}
|
|
594
|
+
};
|
|
595
|
+
walk(from, "");
|
|
596
|
+
return conflicts;
|
|
597
|
+
}
|
|
598
|
+
function copyMissingFiles(from, to, conflicts) {
|
|
599
|
+
const blocked = new Set(conflicts.map((c) => c.rel));
|
|
600
|
+
const outcome = { copied: [], skipped: [] };
|
|
601
|
+
const walk = (srcDir, relDir) => {
|
|
602
|
+
fs2.mkdirSync(to, { recursive: true });
|
|
603
|
+
for (const entry of fs2.readdirSync(srcDir, { withFileTypes: true })) {
|
|
604
|
+
if (isExcluded(entry.name)) continue;
|
|
605
|
+
const rel = relDir ? `${relDir}/${entry.name}` : entry.name;
|
|
606
|
+
const src = path2.join(srcDir, entry.name);
|
|
607
|
+
const dest = path2.join(to, rel);
|
|
608
|
+
if (blocked.has(rel)) {
|
|
609
|
+
outcome.skipped.push({ rel, reason: conflicts.find((c) => c.rel === rel)?.reason ?? "\u540C\u540D\u51B2\u7A81" });
|
|
610
|
+
continue;
|
|
611
|
+
}
|
|
612
|
+
if (entry.isDirectory()) {
|
|
613
|
+
walk(src, rel);
|
|
614
|
+
continue;
|
|
615
|
+
}
|
|
616
|
+
fs2.mkdirSync(path2.dirname(dest), { recursive: true });
|
|
617
|
+
fs2.copyFileSync(src, dest);
|
|
618
|
+
outcome.copied.push(rel);
|
|
619
|
+
}
|
|
620
|
+
};
|
|
621
|
+
walk(from, "");
|
|
622
|
+
return outcome;
|
|
623
|
+
}
|
|
563
624
|
function copyTemplate(from, to) {
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
625
|
+
const conflicts = scanTemplateConflicts(from, to);
|
|
626
|
+
if (conflicts.length > 0) {
|
|
627
|
+
throw new Error(
|
|
628
|
+
`[fulgurjs:create] \u76EE\u6807\u76EE\u5F55\u5B58\u5728\u540C\u540D\u51B2\u7A81\uFF0C\u62D2\u7EDD\u5199\u5165\uFF1A
|
|
629
|
+
` + conflicts.map((c) => ` ${c.rel} \u2014 ${c.reason}`).join("\n") + `
|
|
630
|
+
\u4FEE\u6CD5\uFF1A\u6362\u4E00\u4E2A\u7A7A\u76EE\u5F55\uFF08--dir\uFF09\uFF0C\u6216\u52A0 --force \u590D\u7528\u76EE\u5F55\uFF08\u53EA\u8865\u7F3A\u5931\u6587\u4EF6\uFF0C\u4E0D\u6539\u5199\u4EE5\u4E0A\u51B2\u7A81\u9879\uFF09`
|
|
631
|
+
);
|
|
571
632
|
}
|
|
633
|
+
return copyMissingFiles(from, to, conflicts);
|
|
572
634
|
}
|
|
573
635
|
function validateTemplateDir(dir) {
|
|
574
636
|
const required = ["package.json", "pnpm-workspace.yaml", "pnpm-lock.yaml", "scripts/dev.mjs", "scripts/dev.config.json"];
|
|
@@ -602,6 +664,10 @@ function formatCreateResult(result) {
|
|
|
602
664
|
const apps = result.apps;
|
|
603
665
|
const lines = [];
|
|
604
666
|
lines.push(`[fulgurjs:create] \u5DF2\u521B\u5EFA\u5B8C\u6574\u5DE5\u7A0B ${result.target}\uFF08\u6A21\u677F ${result.template}\uFF0C\u63D2\u4EF6\u4F9D\u8D56 ${result.pluginVersion}\uFF09`);
|
|
667
|
+
if (result.skippedConflicts.length > 0) {
|
|
668
|
+
lines.push(`\u4EE5\u4E0B ${result.skippedConflicts.length} \u4E2A\u540C\u540D\u6587\u4EF6\u4FDD\u7559\u4F60\u7684\u7248\u672C\u3001\u672A\u88AB\u6539\u5199\uFF08\u5982\u9700\u4E0E\u6A21\u677F\u5BF9\u9F50\u8BF7\u624B\u5DE5\u5408\u5E76\uFF09\uFF1A`);
|
|
669
|
+
for (const c of result.skippedConflicts) lines.push(` ${c.rel} \u2014 ${c.reason}`);
|
|
670
|
+
}
|
|
605
671
|
lines.push("\u540E\u7EED\u6B65\u9AA4\uFF1A");
|
|
606
672
|
lines.push(` cd ${result.target}`);
|
|
607
673
|
if (!result.installRan) lines.push(" pnpm install --frozen-lockfile");
|
|
@@ -614,7 +680,11 @@ function formatCreateResult(result) {
|
|
|
614
680
|
lines.push(`\u6D4F\u89C8\u5668\u6253\u5F00\u5BBF\u4E3B\u5165\u53E3\uFF1A${hosts.length ? `http://localhost:${hosts[0].port}/` : "\uFF08\u89C1\u6A21\u677F README\uFF09"}`);
|
|
615
681
|
lines.push(" pnpm build # \u5404\u5B50\u5E94\u7528\u751F\u4EA7\u6784\u5EFA\uFF08\u8FDC\u7A0B\u751F\u6210 fulgurjs-remoteEntry.js / fulgurjs-manifest.json\uFF09");
|
|
616
682
|
lines.push(" \u90E8\u7F72\u89C4\u5219\uFF08no-cache / SPA \u56DE\u9000 / base \u5BF9\u9F50\uFF09\u89C1\u6A21\u677F\u5185\u5404\u5B50\u5E94\u7528 README\uFF1B\u90E8\u7F72\u540E\u53EF\u7528 npx fulgurjs doctor --base <\u7AD9\u70B9> --apps <\u90E8\u7F72\u5B50\u76EE\u5F55> \u4F53\u68C0");
|
|
617
|
-
lines.push(" \u6539\u7AEF\u53E3\
|
|
683
|
+
lines.push(" \u6539\u7AEF\u53E3\uFF08\u56DB\u5904\u540C\u6B65\uFF0C\u6F0F\u4E00\u5904\u542F\u52A8\u5668\u4F1A\u88AB\u65E7\u7AEF\u53E3\u5361\u4F4F\uFF09\uFF1A");
|
|
684
|
+
lines.push(" 1. \u5404\u5E94\u7528 package.json \u7684 dev \u4E0E preview \u811A\u672C --port");
|
|
685
|
+
lines.push(" 2. \u5BBF\u4E3B fulgurjs.config.ts \u91CC remotes \u7684 dev \u5730\u5740");
|
|
686
|
+
lines.push(" 3. scripts/dev.config.json \u91CC\u8BE5\u5E94\u7528\u7684 port\uFF08\u542F\u52A8\u5668\u9884\u68C0/\u63A2\u6D3B\u90FD\u7528\u5B83\uFF09");
|
|
687
|
+
lines.push(" 4. \u6A21\u677F README \u9876\u90E8\u7684\u7AEF\u53E3\u8868\uFF08\u81EA\u884C\u4FDD\u6301\u8BB0\u5F55\u4E00\u81F4\uFF09");
|
|
618
688
|
return lines.join("\n");
|
|
619
689
|
}
|
|
620
690
|
function formatCreateJson(result) {
|
|
@@ -626,6 +696,8 @@ function formatCreateJson(result) {
|
|
|
626
696
|
apps: result.apps,
|
|
627
697
|
installRan: result.installRan,
|
|
628
698
|
...result.installCode !== void 0 ? { installCode: result.installCode } : {},
|
|
699
|
+
copiedCount: result.copiedCount,
|
|
700
|
+
skippedConflicts: result.skippedConflicts,
|
|
629
701
|
next: {
|
|
630
702
|
cd: result.target,
|
|
631
703
|
dev: "pnpm dev",
|
|
@@ -658,26 +730,49 @@ async function createProject(opts, io) {
|
|
|
658
730
|
throw new Error(`[fulgurjs:create] \u5305\u5185\u6A21\u677F\u4E0D\u5B8C\u6574\uFF1A${templateDir} \u7F3A\u5C11 package.json`);
|
|
659
731
|
}
|
|
660
732
|
const target = path2.resolve(opts.cwd, opts.dir ?? templateName);
|
|
733
|
+
if (fs2.existsSync(target) && !fs2.statSync(target).isDirectory()) {
|
|
734
|
+
throw new Error(
|
|
735
|
+
`[fulgurjs:create] \u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728\u4E14\u662F\u6587\u4EF6\uFF0C\u65E0\u6CD5\u4F5C\u4E3A\u5DE5\u7A0B\u76EE\u5F55\uFF1A${target}
|
|
736
|
+
\u4FEE\u6CD5\uFF1A\u6362\u4E00\u4E2A\u76EE\u5F55\uFF08--dir\uFF09\uFF0C\u6216\u5148\u79FB\u8D70\u8BE5\u6587\u4EF6`
|
|
737
|
+
);
|
|
738
|
+
}
|
|
661
739
|
if (fs2.existsSync(target)) {
|
|
662
740
|
const existing = fs2.readdirSync(target);
|
|
663
741
|
if (existing.length > 0 && !opts.force) {
|
|
664
742
|
throw new Error(
|
|
665
743
|
`[fulgurjs:create] \u76EE\u6807\u76EE\u5F55\u975E\u7A7A\uFF0C\u62D2\u7EDD\u8986\u76D6\uFF1A${target}
|
|
666
744
|
\u6839\u56E0\uFF1A\u9759\u9ED8\u5408\u5E76\u53EF\u80FD\u63A9\u76D6\u4E0E\u4F60\u5DF2\u6709\u6587\u4EF6\u7684\u51B2\u7A81\u3002
|
|
667
|
-
\u4FEE\u6CD5\uFF1A\u6362\u4E00\u4E2A\u76EE\u5F55\uFF08--dir\uFF09\uFF0C\u6216\
|
|
745
|
+
\u4FEE\u6CD5\uFF1A\u6362\u4E00\u4E2A\u76EE\u5F55\uFF08--dir\uFF09\uFF0C\u6216\u52A0 --force \u590D\u7528\u76EE\u5F55\uFF08\u53EA\u8865\u7F3A\u5931\u6587\u4EF6\uFF1B\u540C\u540D\u51B2\u7A81\u9010\u9879\u5217\u51FA\u5E76\u4FDD\u7559\u4F60\u7684\u7248\u672C\uFF0C\u7EDD\u4E0D\u6539\u5199\uFF09`
|
|
668
746
|
);
|
|
669
747
|
}
|
|
670
|
-
if (existing.length > 0) {
|
|
671
|
-
io.log(`[fulgurjs:create] --force\uFF1A\u5411\u975E\u7A7A\u76EE\u5F55 ${target} \u589E\u91CF\u590D\u5236\uFF08\u4E0D\u5220\u9664\u5DF2\u6709\u6587\u4EF6\uFF09`);
|
|
672
|
-
}
|
|
673
748
|
}
|
|
674
749
|
const warnings = [];
|
|
675
750
|
const nodeWarn = nodeVersionWarning(process.version);
|
|
676
751
|
if (nodeWarn) warnings.push(nodeWarn);
|
|
677
|
-
|
|
752
|
+
let outcome;
|
|
753
|
+
try {
|
|
754
|
+
if (fs2.existsSync(target) && fs2.readdirSync(target).length > 0) {
|
|
755
|
+
const conflicts = scanTemplateConflicts(templateDir, target);
|
|
756
|
+
io.log(
|
|
757
|
+
`[fulgurjs:create] --force\uFF1A\u5411\u975E\u7A7A\u76EE\u5F55 ${target} \u590D\u5236\uFF08\u53EA\u8865\u7F3A\u5931\u6587\u4EF6\uFF0C\u4E0D\u6539\u5199\u5DF2\u6709\u5185\u5BB9\uFF1B\u9884\u68C0\u5230 ${conflicts.length} \u4E2A\u540C\u540D\u51B2\u7A81\u5C06\u4FDD\u7559\u4F60\u7684\u7248\u672C\uFF09`
|
|
758
|
+
);
|
|
759
|
+
outcome = copyMissingFiles(templateDir, target, conflicts);
|
|
760
|
+
} else {
|
|
761
|
+
outcome = copyTemplate(templateDir, target);
|
|
762
|
+
}
|
|
763
|
+
} catch (e) {
|
|
764
|
+
const detail = e instanceof Error ? e.message : String(e);
|
|
765
|
+
if (detail.includes("\u540C\u540D\u51B2\u7A81\uFF0C\u62D2\u7EDD\u5199\u5165")) throw e;
|
|
766
|
+
throw new Error(
|
|
767
|
+
`[fulgurjs:create] \u590D\u5236\u6A21\u677F\u4E2D\u9014\u5931\u8D25\uFF1A${detail}
|
|
768
|
+
\u5DF2\u5199\u5165\u7684\u6587\u4EF6\u4FDD\u7559\u5728 ${target}\uFF0C\u4F60\u5DF2\u6709\u7684\u6587\u4EF6\u672A\u88AB\u5220\u9664\uFF1B\u6392\u67E5\uFF08\u78C1\u76D8/\u6743\u9650/\u8DEF\u5F84\uFF09\u540E\u91CD\u65B0\u8FD0\u884C fulgurjs create ${templateName} --dir <\u76EE\u5F55> --force\u2014\u2014\u53EA\u8865\u7F3A\u5931\u6587\u4EF6\uFF0C\u4E0D\u4F1A\u6539\u5199\u5DF2\u590D\u5236\u5185\u5BB9`
|
|
769
|
+
);
|
|
770
|
+
}
|
|
678
771
|
const missing = validateTemplateDir(target);
|
|
679
772
|
if (missing.length > 0) {
|
|
680
|
-
throw new Error(
|
|
773
|
+
throw new Error(
|
|
774
|
+
`[fulgurjs:create] \u590D\u5236\u540E\u7684\u6A21\u677F\u7F3A\u5C11\u5173\u952E\u6587\u4EF6\uFF1A${missing.join("\u3001")}\u2014\u2014\u5305\u5185\u6A21\u677F\u8D44\u4EA7\u4E0D\u5B8C\u6574\uFF0C\u6216\u540C\u540D\u51B2\u7A81\u8986\u76D6\u4E86\u5173\u952E\u6587\u4EF6\uFF08\u4FDD\u7559\u7684\u662F\u4F60\u7684\u7248\u672C\uFF09\uFF0C\u8BF7\u5BF9\u7167\u5305\u5185\u6A21\u677F\u624B\u5DE5\u5408\u5E76`
|
|
775
|
+
);
|
|
681
776
|
}
|
|
682
777
|
const apps = readDevConfig(target).apps;
|
|
683
778
|
const pluginVersion = pluginVersionOf(target, apps);
|
|
@@ -690,20 +785,34 @@ async function createProject(opts, io) {
|
|
|
690
785
|
if (installCode !== 0) {
|
|
691
786
|
throw new Error(
|
|
692
787
|
`[fulgurjs:create] \u4F9D\u8D56\u5B89\u88C5\u5931\u8D25\uFF08\u9000\u51FA\u7801 ${installCode}\uFF09\u3002\u4E0A\u9762\u7684\u8F93\u51FA\u5305\u542B\u5177\u4F53\u539F\u56E0\uFF1B\u5E38\u89C1\u539F\u56E0\uFF1Apnpm \u672A\u5B89\u88C5\uFF08corepack enable \u6216 npm i -g pnpm\uFF09\u3001registry \u4E0D\u53EF\u8FBE\u3001Node \u7248\u672C\u8FC7\u4F4E\u3002
|
|
693
|
-
\
|
|
788
|
+
\u5DE5\u7A0B\u6587\u4EF6\u5DF2\u5B8C\u6574\u4FDD\u7559\u5728 ${target}\uFF08\u4FBF\u4E8E\u6392\u67E5\uFF09\uFF1B\u4FEE\u590D\u540E\u8FDB\u5165\u8BE5\u76EE\u5F55\u624B\u52A8\u6267\u884C pnpm install --frozen-lockfile \u518D pnpm dev`
|
|
694
789
|
);
|
|
695
790
|
}
|
|
696
791
|
} else {
|
|
697
792
|
io.log("[fulgurjs:create] \u6309\u8981\u6C42\u8DF3\u8FC7\u5B89\u88C5\uFF08--no-install\uFF09\uFF1A\u8FDB\u5165\u76EE\u5F55\u540E\u5148\u6267\u884C pnpm install --frozen-lockfile");
|
|
698
793
|
}
|
|
699
794
|
for (const w of warnings) io.log(`[fulgurjs:create] \u8B66\u544A\uFF1A${w}`);
|
|
700
|
-
const result = {
|
|
701
|
-
|
|
795
|
+
const result = {
|
|
796
|
+
template: templateName,
|
|
797
|
+
target,
|
|
798
|
+
pluginVersion,
|
|
799
|
+
apps,
|
|
800
|
+
installRan,
|
|
801
|
+
installCode,
|
|
802
|
+
copiedCount: outcome.copied.length,
|
|
803
|
+
skippedConflicts: outcome.skipped
|
|
804
|
+
};
|
|
805
|
+
if (opts.json) io.out(formatCreateJson(result));
|
|
806
|
+
else io.log(formatCreateResult(result));
|
|
702
807
|
return result;
|
|
703
808
|
}
|
|
704
|
-
function defaultInstall(cwd) {
|
|
809
|
+
function defaultInstall(cwd, output = "inherit") {
|
|
705
810
|
return new Promise((resolve2) => {
|
|
706
|
-
const child = spawn("pnpm", ["install", "--frozen-lockfile"], { cwd, stdio: "inherit" });
|
|
811
|
+
const child = output === "inherit" ? spawn("pnpm", ["install", "--frozen-lockfile"], { cwd, stdio: "inherit" }) : spawn("pnpm", ["install", "--frozen-lockfile"], { cwd, stdio: ["ignore", "pipe", "pipe"] });
|
|
812
|
+
if (output === "stderr") {
|
|
813
|
+
child.stdout?.on("data", (c) => process.stderr.write(c));
|
|
814
|
+
child.stderr?.on("data", (c) => process.stderr.write(c));
|
|
815
|
+
}
|
|
707
816
|
child.once("error", (e) => {
|
|
708
817
|
console.error(`[fulgurjs:create] \u65E0\u6CD5\u542F\u52A8 pnpm\uFF1A${e.message}\uFF08corepack enable \u6216 npm i -g pnpm\uFF09`);
|
|
709
818
|
resolve2(1);
|
|
@@ -1493,6 +1602,9 @@ var HELP = `fulgurjs \u2014 Vite Module Federation CLI (@fulgurjs/federation)
|
|
|
1493
1602
|
fulgurjs create <\u6A21\u677F> [--dir <\u8DEF\u5F84>] [--no-install] [--force] [--json]
|
|
1494
1603
|
\u975E\u4EA4\u4E92\u521B\u5EFA\uFF1B\u6A21\u677F\uFF1Avue-vue / react-react /
|
|
1495
1604
|
vue-host-react-remote / react-host-vue-remote / showcase
|
|
1605
|
+
--force \u590D\u7528\u975E\u7A7A\u76EE\u5F55\uFF1A\u53EA\u8865\u7F3A\u5931\u6587\u4EF6\uFF0C\u540C\u540D\u51B2\u7A81\u9010\u9879\u5217\u51FA\u5E76
|
|
1606
|
+
\u4FDD\u7559\u4F60\u7684\u7248\u672C\uFF08\u7EDD\u4E0D\u6539\u5199\uFF09\uFF1B--json \u65F6 stdout \u4EC5\u8F93\u51FA\u7ED3\u679C
|
|
1607
|
+
JSON\uFF0C\u8FDB\u5EA6\u4E0E\u5B89\u88C5\u65E5\u5FD7\u8D70 stderr
|
|
1496
1608
|
\u5DF2\u6709\u9879\u76EE\uFF08\u5355\u9879\u76EE fulgurjs.config.ts \u5728\u5E94\u7528\u6839\u76EE\u5F55\uFF1B\u547D\u4EE4\u9ED8\u8BA4\u8BFB ./fulgurjs.config.ts\uFF09\uFF1A
|
|
1497
1609
|
fulgurjs init [--template <path>] [--force] \u751F\u6210\u5355\u9879\u76EE fulgurjs.config.ts \u8D77\u6B65\u6A21\u677F
|
|
1498
1610
|
\uFF08\u9ED8\u8BA4\u5BFC\u51FA\u76F4\u63A5\u662F federation() \u9009\u9879\uFF1B--template \u662F\u8F93\u51FA\u8DEF\u5F84\uFF09
|
|
@@ -1592,17 +1704,25 @@ async function main() {
|
|
|
1592
1704
|
};
|
|
1593
1705
|
}
|
|
1594
1706
|
try {
|
|
1707
|
+
const json = has("--json");
|
|
1595
1708
|
await createProject2(
|
|
1596
1709
|
{
|
|
1597
1710
|
template: argv[1] && !argv[1].startsWith("-") ? argv[1] : void 0,
|
|
1598
1711
|
dir: argOf("--dir"),
|
|
1599
1712
|
install: !has("--no-install"),
|
|
1600
1713
|
force: has("--force"),
|
|
1601
|
-
json
|
|
1714
|
+
json,
|
|
1602
1715
|
templatesRoot: resolveTemplatesRoot2(import.meta.url),
|
|
1603
1716
|
cwd: process.cwd()
|
|
1604
1717
|
},
|
|
1605
|
-
{
|
|
1718
|
+
{
|
|
1719
|
+
// --json 时进度走 stderr:stdout 只输出最终 JSON,可被消费方直接解析
|
|
1720
|
+
log: json ? (m) => console.error(m) : (m) => console.log(m),
|
|
1721
|
+
out: (m) => console.log(m),
|
|
1722
|
+
error: (m) => console.error(m),
|
|
1723
|
+
prompt: promptImpl,
|
|
1724
|
+
install: (cwd) => defaultInstall2(cwd, json ? "stderr" : "inherit")
|
|
1725
|
+
}
|
|
1606
1726
|
);
|
|
1607
1727
|
return 0;
|
|
1608
1728
|
} catch (e) {
|
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.9.
|
|
46
|
+
var RUNTIME_VERSION = "5.9.2";
|
|
47
47
|
|
|
48
48
|
// src/dev-cors.ts
|
|
49
49
|
function normalizeDevCorsOrigins(input) {
|
|
@@ -2672,7 +2672,7 @@ function repairRolldownAsyncMarks(code, sourceName) {
|
|
|
2672
2672
|
}
|
|
2673
2673
|
|
|
2674
2674
|
// src/runtime-code.gen.ts
|
|
2675
|
-
var runtime_code_gen_default = 'var ve=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function N(c){let u=ve.exec(String(c).trim());return u?{major:Number(u[1]),minor:Number(u[2]??0),patch:Number(u[3]??0),pre:u[4]?u[4].split("."):[]}:null}function $e(c,u){if(c.length===0&&u.length===0)return 0;if(c.length===0)return 1;if(u.length===0)return-1;let f=Math.max(c.length,u.length);for(let a=0;a<f;a++){let p=c[a],S=u[a];if(p===void 0)return-1;if(S===void 0)return 1;let b=/^\\d+$/.test(p),v=/^\\d+$/.test(S);if(b&&v){let I=Number(p)-Number(S);if(I!==0)return I}else{if(b!==v)return b?-1:1;if(p!==S)return p<S?-1:1}}return 0}function x(c,u){let f=N(c),a=N(u);return!f||!a?c<u?-1:c>u?1:0:f.major!==a.major?f.major-a.major:f.minor!==a.minor?f.minor-a.minor:f.patch!==a.patch?f.patch-a.patch:$e(f.pre,a.pre)}var Pe=/^[a-z]+[+:-]/i;function A(c,u){if(u===!1||u==null||u==="")return!0;let f=String(u).trim();return!f||f==="*"||f==="latest"||Pe.test(f)?!0:f.split("||").some(a=>_e(c,a.trim()))}function _e(c,u){if(!u||u==="*")return!N(c)?.pre.length;let f=u.split(/\\s+-\\s+/);if(f.length===2){let S=f[0].trim(),b=f[1].trim();return!(!A(c,`>=${S}`)||!A(c,`<=${b}`))}let a=N(c);if(!a)return!1;let p=Le(u);if(p===null)return!0;for(let S of p)if(!Te(a,c,S))return!1;return!(a.pre.length>0&&!p.some(S=>S.ver.pre.length>0)&&!p.some(b=>b.ver.major===a.major&&b.ver.minor===a.minor&&b.ver.patch===a.patch))}function Le(c){let u=[],f=c.trim().split(/\\s+/).filter(Boolean);if(f.length===0)return null;for(let a of f){let p=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(a);if(!p)return null;let S=p[1],b=p[2],v=Oe(S,b);if(v===null)return null;u.push(...v)}return u}function Oe(c,u){let f=Me(u);if(!f)return null;let{ver:a,partial:p}=f;switch(c){case"^":{let S=ke(a);return S?[{op:">=",ver:a},{op:"<",ver:S}]:null}case"~":{let S=p>=2?{major:a.major,minor:a.minor+1,patch:0,pre:[]}:{major:a.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:a},{op:"<",ver:S}]}case">=":return[{op:">=",ver:a}];case">":return p===1?[{op:">=",ver:{major:a.major+1,minor:0,patch:0,pre:[]}}]:p===2?[{op:">=",ver:{major:a.major,minor:a.minor+1,patch:0,pre:[]}}]:[{op:">",ver:a}];case"<":return p===1?[{op:"<",ver:{major:a.major,minor:0,patch:0,pre:[]}}]:p===2?[{op:"<",ver:{major:a.major,minor:a.minor,patch:0,pre:[]}}]:[{op:"<",ver:a}];case"<=":return[{op:"<=",ver:a}];case"=":case void 0:return p===1?[{op:">=",ver:a},{op:"<",ver:{major:a.major+1,minor:0,patch:0,pre:[]}}]:p===2?[{op:">=",ver:a},{op:"<",ver:{major:a.major,minor:a.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:a}];default:return null}}function ke(c){return c.major>0?{major:c.major+1,minor:0,patch:0,pre:[]}:c.minor>0?{major:0,minor:c.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:c.patch+1,pre:[]}}function Me(c){let u=c.replace(/^v/,"").trim();if(!u||u==="*"||u==="x"||u==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let f=u.split("."),a=[],p=0;for(let v of f.slice(0,3))if(/^\\d+$/.test(v))a.push(Number(v)),p++;else{if(v==="x"||v==="X"||v==="*")break;break}let S=u.split("-"),b=S.length>1?S.slice(1).join("-").split("+")[0].split("."):[];return p===0&&b.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:a[0]??0,minor:a[1]??0,patch:a[2]??0,pre:b},partial:p}}function Ie(c,u){switch(u){case">=":return c>=0;case">":return c>0;case"<":return c<0;case"<=":return c<=0;case"=":return c===0}}function Te(c,u,f){let a=`${c.major}.${c.minor}.${c.patch}`+(c.pre.length?`-${c.pre.join(".")}`:"");if(f.upper)return!(!(x(a,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:""))>=0)||!(x(a,`${f.upper.major}.${f.upper.minor}.${f.upper.patch}`)<0));let p=x(a,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:"")),S=Ie(p,f.op);return f.ver.pre.length>0&&c.pre.length===0&&(f.op===">"||f.op==="<")?!1:S}var E=class extends Error{code;details;constructor(u,f,a,p){super(`[fulgurjs:${u}] ${f}`,p),this.name="FgError",this.code=u,this.details=a}},w={REMOTE_LOAD_FAILED:"MFU-001",REMOTE_NAME_MISMATCH:"MFU-002",SHARE_STRICT_VERSION:"MFU-003",SHARE_NOT_AVAILABLE:"MFU-004",CONTAINER_REINIT_CONFLICT:"MFU-005",MODULE_NOT_EXPOSED:"MFU-006",PRELOAD_FAILED:"MFU-007",REMOTE_UNKNOWN:"MFU-008",EMPTY_EXPORTS:"MFU-009",SINGLETON_SKEW:"MFU-010",SETUP_INVALID_EXPORT:"MFU-011",SETUP_RUN_FAILED:"MFU-012",SETUP_SESSION_KEY_MISSING:"MFU-013",SETUP_RECURSION:"MFU-014"};var ne="5.9.0";var xe="__fulgurjsSetup",Ae="__FULGURJS_APP_CONFIG__",H=15e3,te=2,je=5,Ne=3e4,Ue=4e3,Ve=.2;function Ce(){let c=Object.create(null),u=new Map,f=[],a=new Set,p=new Map,S=(e,r)=>JSON.stringify([r.shareScope||"default",r.shareKey||e,r.requiredVersion??null,!!r.singleton,!!r.strictVersion]),b=new Map,v=new Map,I=new WeakMap,U=new WeakMap,_={},se=()=>{for(let e of f)try{e.init?.(_)}catch(r){console.warn("[fulgurjs] \\u8FD0\\u884C\\u65F6\\u6269\\u5C55\\u521D\\u59CB\\u5316\\u5931\\u8D25\\uFF0C\\u8BE5\\u6269\\u5C55\\u5C06\\u4E0D\\u53EF\\u7528\\uFF1A",e.name,r)}},V=new Map,C,ie=e=>{let r=V.get(e);return r||V.set(e,r={}),r},G=()=>globalThis[Ae]??{};async function B(e,r,n,o){let t=l=>l instanceof E?l:new E(w.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${o} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${String(l?.message??l)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${o} \\u51FD\\u6570\\u540E\\u91CD\\u65B0\\u52A0\\u8F7D\\uFF1B\\u5931\\u8D25\\u7F13\\u5B58\\u5DF2\\u6E05\\u9664\\uFF0C\\u53EF\\u4EE5\\u76F4\\u63A5\\u91CD\\u8BD5\\u3002`,{remote:e,phase:o},{cause:l});C=e;let s;try{s=r(n)}catch(l){throw t(l)}finally{C=void 0}try{await s}catch(l){throw t(l)}}async function ae(e,r,n,o){e.debug.setup="pending";try{if(e.manifestUrl)try{await q(`${e.name}/${n}`)}catch{}let t=await r.get(n),s=t?.default;if(typeof s!="function")throw new E(w.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${t==null?String(t):typeof s}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728 setup \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u4E2D\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u51FD\\u6570\\uFF0C\\u4F8B\\u5982 export default async function setup(context) { ... }\\uFF1B\\u5177\\u540D onSession \\u53EF\\u9009\\u3002`,{remote:e.name,module:n});if(t.onSession!==void 0&&typeof t.onSession!="function")throw new E(w.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AonSession \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof t.onSession}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5C06 onSession \\u6539\\u4E3A\\u5177\\u540D\\u5BFC\\u51FA\\u7684\\u51FD\\u6570\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});o.setupExports=t,await B(e.name,s,{appContext:G(),signal:(o.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(t){throw e.debug.setup="failed",o.setupExports=void 0,t}}async function ce(e,r,n){let o=G(),t=o?.sessionKey;if(typeof t!="string"||t==="")throw new E(w.SETUP_SESSION_KEY_MISSING,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u58F0\\u660E\\u4E86 onSession\\uFF0C\\u4F46\\u5BBF\\u4E3B\\u5C1A\\u672A\\u63D0\\u4F9B\\u6709\\u6548\\u7684 AppContext.sessionKey\\u3002\n\\u539F\\u56E0\\uFF1A\\u5F53\\u524D\\u503C\\u4E3A ${t===void 0?"\\u7F3A\\u5931":JSON.stringify(t)}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5BBF\\u4E3B\\u6BCF\\u6B21\\u767B\\u5F55\\u6216\\u91CD\\u767B\\u65F6\\u751F\\u6210\\u65B0\\u7684\\u975E\\u654F\\u611F\\u767B\\u5F55\\u4EE3\\u6B21 ID\\uFF0C\\u5E76\\u5728\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u9875\\u9762\\u524D\\u8C03\\u7528 provideAppContext({ ..., sessionKey: \'\\u767B\\u5F55\\u4EE3\\u6B21 ID\' })\\uFF1B\\u4E0D\\u8981\\u4F7F\\u7528 token \\u539F\\u6587\\u3002`,{remote:e.name});if(r.sessionPromise&&r.sessionKey===t)return r.sessionPromise;r.controller?.abort();let s=new AbortController;r.controller=s,r.sessionKey=t;let l=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),i=(async()=>{await l,!s.signal.aborted&&await B(e.name,n,{appContext:o,sessionKey:t,signal:s.signal},"onSession")})();return r.sessionPromise=i,i.catch(()=>{r.sessionKey===t&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),i}async function le(e,r){let n=r?.[xe];if(typeof n!="string"||n==="")return;let o=ie(e.name);o.setupPromise||(o.setupPromise=ae(e,r,n,o).catch(s=>{throw o.setupPromise=void 0,s})),await o.setupPromise;let t=o.setupExports?.onSession;typeof t=="function"&&await ce(e,o,t)}function ue(){for(let e of V.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let M=e=>c[e]??=Object.create(null);function $(e){try{_.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}function fe(e="default"){return M(e),c}function F(e,r,n,o,t={}){let s=M(e||"default"),l=Object.hasOwn(s,r)?s[r]:void 0,i=l&&typeof l=="object"?l:void 0;i||(i=Object.create(null),s[r]=i),!(Object.hasOwn(i,n)&&i[n])&&(i[n]={version:n,get:o,from:t.from??"unknown",eager:!!t.eager,loaded:!!t.loaded})}function de(e){let r=(n,o,t)=>{if(n===void 0)return;if(!(typeof n=="number"&&(t?Number.isInteger(n)&&n>=0&&n<=10:Number.isFinite(n)&&n>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${o} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(n)}\\uFF0C\\u5E94\\u4E3A${t?" 0 \\u5230 10 \\u7684\\u6574\\u6570":"\\u5927\\u4E8E 0 \\u7684\\u6709\\u9650\\u6570\\u5B57"}\\u3002\\u8BF7\\u4FEE\\u6B63 registerRemote \\u914D\\u7F6E\\u3002`)};r(e.timeout,"timeout"),r(e.retries,"retries",!0),e.breaker&&(r(e.breaker.threshold,"breaker.threshold"),r(e.breaker.resetMs,"breaker.resetMs"))}function J(e){for(let r of e){de(r);let n=u.get(r.name);u.set(r.name,{timeout:H,retries:te,...n,...r,breakerThreshold:r.breaker?.threshold??n?.breakerThreshold??je,breakerResetMs:r.breaker?.resetMs??n?.breakerResetMs??Ne,state:n?.state??"idle",breakerState:n?.breakerState??{fails:0,openUntil:0},entryInflight:n?.entryInflight??new Map,entryFailCounts:n?.entryFailCounts??new Map,debug:n?.debug??{entry:r.entry,status:"idle",setup:"none"}})}}function me(e){J([e])}function pe(e){f.push(...e),p.clear(),se()}function T(e,r,n=!1){let o=r.shareScope||"default",t=r.shareKey||e,l=M(o)[t]||{},i=Object.keys(l).filter(m=>!n||r.singleton||l[m].value!==void 0);if(n&&i.length===0)return;let d=r.requiredVersion,g=i.filter(m=>d===void 0||d===!1||A(m,d)),h;if(r.singleton&&i.length>0){let m=i.filter(y=>l[y].loaded);if(h=[...m.length?m:i].sort(x).pop(),!g.includes(h)){let y=l[h],O=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${t}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u5E94\\u7528\\u8981\\u6C42 ${d??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${i.join("\\u3001")}\\uFF1B\\u4E3A\\u4FDD\\u8BC1\\u5168\\u9875\\u53EA\\u4F7F\\u7528\\u4E00\\u4E2A\\u5B9E\\u4F8B\\uFF0C\\u6700\\u7EC8\\u590D\\u7528 ${y.from} \\u63D0\\u4F9B\\u7684 ${h}\\u3002\n\\u5F71\\u54CD\\uFF1A\\u53EF\\u80FD\\u51FA\\u73B0\\u72B6\\u6001\\u4E0D\\u4E00\\u81F4\\u6216\\u8FD0\\u884C\\u9519\\u8BEF\\uFF0C\\u5177\\u4F53\\u53D6\\u51B3\\u4E8E\\u4E24\\u7AEF API \\u662F\\u5426\\u517C\\u5BB9\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u6838\\u5BF9\\u540E\\u8C03\\u6574 shared.requiredVersion\\uFF1B\\u82E5\\u5FC5\\u987B\\u62D2\\u7EDD\\u4E0D\\u517C\\u5BB9\\u7248\\u672C\\uFF0C\\u8BF7\\u542F\\u7528 strictVersion\\u3002`;if(r.strictVersion){let k=new E(w.SHARE_STRICT_VERSION,O,{shareKey:t,requiredVersion:d});throw $({remote:y.from,error:k}),k}let P=`${o}|${t}|${d??"*"}|${h}|${i.join(",")}`;a.has(P)||(a.add(P),console.warn(`[fulgurjs:MFU-010] ${O}`))}}else if(h=[...g].sort(x).pop(),!h){if(r.strictVersion){let m=new E(w.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${o}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${t}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${d}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${i.join("\\u3001")||"\\u65E0"}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u4FEE\\u6B63 shared.requiredVersion\\u3002`);throw $({remote:t,error:m}),m}return}return l[h]}function W(e,r,n){let o=r.localVersion;if(!o||n===void 0)return;let t=r.shareScope||"default",s=r.shareKey||e,l=M(t),i=Object.hasOwn(l,s)?l[s]:void 0;if(i&&Object.keys(i).length>0){try{let g=T(e,r);if(g&&g.value===void 0){if(g.version===o)g.value=n,g.loaded=!0;else if(r.singleton&&!g.pendingGet){F(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let h=l[s][o];h.value=n,h.loaded=!0}}}catch{}return}F(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let d=l[s]?.[o];d&&(d.value=n)}async function X(e,r={}){let n=r.shareScope||"default",o=r.shareKey||e,t=M(n)[o]||{},s=S(e,r),l=_.resolveShare?p.get(s):void 0,i=l||T(e,r);if(!i){if(r.fallback){let m=await r.fallback();return W(e,r,m),m}let h=new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${o}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u4F5C\\u7528\\u57DF "${n}" \\u4E2D\\u6CA1\\u6709\\u7B26\\u5408 ${r.requiredVersion??"\\u4EFB\\u610F\\u7248\\u672C"} \\u8981\\u6C42\\u7684\\u7248\\u672C\\uFF0C\\u4E14\\u672A\\u914D\\u7F6E\\u672C\\u5730\\u526F\\u672C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728\\u5BBF\\u4E3B\\u6216\\u8FDC\\u7A0B\\u6CE8\\u518C\\u8BE5\\u4F9D\\u8D56\\uFF0C\\u6216\\u4E3A shared \\u914D\\u7F6E\\u53EF\\u7528\\u7684\\u672C\\u5730\\u526F\\u672C\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion});throw $({remote:o,error:h}),h}if(_.resolveShare&&!l){let h=await _.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:i,available:Object.values(t)});h&&(i=h),p.set(s,i)}if(i.value!==void 0)return p.set(S(e,r),i),i.value;if(i.loaded=!0,!i.pendingGet)try{i.pendingGet=i.get()}catch(h){i.pendingGet=Promise.reject(h)}let d=i.pendingGet,g;try{g=await d}catch(h){if(i.value!==void 0)return p.set(S(e,r),i),i.value;throw i.loaded=!1,p.get(s)===i&&p.delete(s),h}finally{i.pendingGet===d&&(i.pendingGet=void 0)}return i.value===void 0&&(i.value=g),p.set(S(e,r),i),i.value}function ge(e,r={}){return _.resolveShare?p.get(S(e,r))?.value:T(e,r,!0)?.value}function he(e,r,n,o){W(e,{...r,localVersion:n},o)}function ye(e,r){let n=r.shareScope||"default",o=r.shareKey||e;if(_.resolveShare){let s=S(e,r),l=p.get(s);if(l&&l.value!==void 0)return{kind:"ready",value:l.value};let i=l||_.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:T(e,r),available:Object.values(M(n)[o]||{})});if(i&&typeof i.then=="function")throw Promise.resolve(i).catch(()=>{}),new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u5BF9\\u5171\\u4EAB "${o}" \\u8FD4\\u56DE\\u4E86 Promise\\uFF0C\\u4F46\\u8BE5\\u5171\\u4EAB\\u6B63\\u88AB\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u6D88\\u8D39\\uFF08Vite 8 \\u540C\\u6B65\\u534F\\u5546\\u95E8\\u9762\\uFF09\\u3002\n\\u539F\\u56E0\\uFF1A\\u6A21\\u5757\\u6C42\\u503C\\u671F\\u65E0\\u6CD5\\u7B49\\u5F85\\u5F02\\u6B65\\u51B3\\u7B56\\uFF1B\\u9759\\u6001\\u5BFC\\u5165\\u4E0D\\u80FD\\u9759\\u9ED8\\u5FFD\\u7565 hook \\u51B3\\u7B56\\u3002\n\\u4FEE\\u6CD5\\uFF1AVite 8 HTML \\u5165\\u53E3\\u4F1A\\u5148\\u5B8C\\u6210\\u5F02\\u6B65\\u534F\\u5546\\uFF1B\\u5176\\u4ED6\\u5165\\u53E3\\u8BF7\\u5148\\u52A8\\u6001 loadShare \\u5EFA\\u7ACB\\u5FEB\\u7167\\uFF0C\\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u8BA9\\u8BE5\\u952E\\u540C\\u6B65\\u8FD4\\u56DE picked\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let d=i;if(d){if(d.value!==void 0)return p.set(S(e,r),d),{kind:"ready",value:d.value};if(d.version!==void 0&&d.version===r.localVersion)return{kind:"local"};throw new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u4E3A "${o}" \\u9009\\u62E9\\u4E86\\u672A\\u5C31\\u7EEA\\u7684 ${d.version??"\\u6761\\u76EE"}\\u3002\n\\u539F\\u56E0\\uFF1A\\u540C\\u6B65\\u6D88\\u8D39\\u4E0D\\u80FD\\u7B49\\u5F85\\u52A0\\u8F7D\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5148\\u52A8\\u6001 loadShare \\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u9009\\u62E9\\u5DF2\\u5C31\\u7EEA\\u5B9E\\u4F8B/\\u672C\\u5730\\u7248\\u672C ${r.localVersion??"\\u672A\\u58F0\\u660E"}\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0})}}let t=T(e,r);if(!t)return{kind:"local"};if(t.value!==void 0)return{kind:"ready",value:t.value};if(t.version!==void 0&&t.version===r.localVersion)return{kind:"local"};if(r.singleton||r.strictVersion&&r.requiredVersion&&(!r.localVersion||!A(r.localVersion,r.requiredVersion))){if(r.strictVersion||t.pendingGet)throw new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB "${o}" \\u9009\\u4E2D\\u4E86 ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version}\\uFF08\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\uFF0C\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u65E0\\u6CD5\\u7B49\\u5F85\\u5176\\u5B9E\\u4F8B\\u5C31\\u7EEA\\u3002\n\\u539F\\u56E0\\uFF1A\\u4E0D\\u80FD\\u6539\\u7528\\u4E0D\\u517C\\u5BB9\\u7684\\u672C\\u5730\\u526F\\u672C\\u6216\\u5206\\u88C2\\u5355\\u4F8B\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9\\u8BE5\\u5171\\u4EAB\\u7684\\u9996\\u6B21\\u6D88\\u8D39\\u5148\\u7ECF\\u4E00\\u6B21\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u52A0\\u8F7D\\uFF0C\\u6216\\u5C06\\u672C\\u5E94\\u7528\\u7248\\u672C\\u4E0E\\u4F5C\\u7528\\u57DF\\u63D0\\u4F9B\\u7248\\u672C\\u5BF9\\u9F50\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let s=`${n}|${o}|${t.version}|${r.localVersion}`;return a.has(s)||(a.add(s),console.warn(`[fulgurjs:MFU-010] \\u5171\\u4EAB\\u5355\\u4F8B "${o}"\\uFF1A\\u4F5C\\u7528\\u57DF\\u4E2D ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version} \\u5C1A\\u672A\\u52A0\\u8F7D\\uFF0C\\u9996\\u4E2A\\u6D88\\u8D39\\u8005\\u4EE5\\u672C\\u5730\\u7248\\u672C ${r.localVersion??""} \\u63A5\\u7BA1\\uFF08\\u540E\\u7EED\\u6D88\\u8D39\\u8005\\u6309\\u5DF2\\u52A0\\u8F7D\\u4F18\\u5148\\u6536\\u655B\\u5230\\u8BE5\\u5B9E\\u4F8B\\uFF09\\u3002`)),{kind:"local"}}return console.warn(`[fulgurjs] \\u5171\\u4EAB "${o}"\\uFF1A\\u975E\\u5355\\u4F8B\\u540C\\u6B65\\u6D88\\u8D39\\u4F7F\\u7528\\u672C\\u5730 ${r.localVersion??""}\\uFF0C\\u8FDC\\u7A0B ${t.version} \\u5C1A\\u672A\\u5C31\\u7EEA\\u3002`),{kind:"local"}}async function Se(e){if(_.resolveShare){for(let{name:r,opts:n}of e){let o=S(r,n);if(p.has(o))continue;let t=T(r,n),s=await _.resolveShare({shareKey:n.shareKey||r,shareScope:n.shareScope||"default",requiredVersion:n.requiredVersion,picked:t,available:Object.values(M(n.shareScope||"default")[n.shareKey||r]||{})})||t;s&&p.set(o,s)}for(let{name:r,opts:n}of e)await X(r,n)}}function z(e){try{let r=new URL(e,typeof location<"u"?location.href:"http://f.invalid");return r.protocol+"//"+r.host+r.pathname}catch{return String(e).replace(/[?#].*$/,"")}}function Y(e,r,n){return new Promise((o,t)=>{let s=setTimeout(()=>t(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${n}`)),r);e.then(l=>{clearTimeout(s),o(l)},l=>{clearTimeout(s),t(l)})})}let Ee=e=>new Promise(r=>setTimeout(r,e)),Z=new Set;function D(e,r){if(!e||typeof e.get!="function")throw new Error(`\\u8FDC\\u7A0B\\u5E94\\u7528 "${r.name}" \\u7684 remoteEntry \\u672A\\u5BFC\\u51FA\\u5BB9\\u5668\\u63A5\\u53E3\\u3002\\u8BF7\\u786E\\u8BA4\\u5165\\u53E3\\u5BFC\\u51FA\\u4E86 get()\\uFF0C\\u5E76\\u68C0\\u67E5\\u8BE5\\u5730\\u5740\\u662F\\u5426\\u8FD4\\u56DE\\u6B63\\u786E\\u7684\\u8054\\u90A6\\u5165\\u53E3 JS\\u3002`);if(e.name&&r.name&&e.name!==r.name){let n=`\\u8FDC\\u7A0B\\u5165\\u53E3\\u81EA\\u62A5\\u540D\\u79F0 "${e.name}" \\u4E0E\\u5BBF\\u4E3B\\u914D\\u7F6E\\u540D\\u79F0 "${r.name}" \\u4E0D\\u4E00\\u81F4\\u3002\\u8BF7\\u7EDF\\u4E00\\u4E24\\u4FA7 federation({ name }) \\u4E0E remotes \\u7684\\u540D\\u79F0\\u3002`;if(r.promise){let o=`${r.name}\\u2194${e.name}`;Z.has(o)||(Z.add(o),console.warn(`[fulgurjs] ${n} \\u5F53\\u524D\\u662F\\u52A8\\u6001 Promise \\u8FDC\\u7A0B\\uFF0C\\u7EE7\\u7EED\\u52A0\\u8F7D\\u3002`))}else throw Object.assign(new Error(n),{code:w.REMOTE_NAME_MISMATCH})}}async function Q(e,r){let n=r.entryFailCounts.get(e)??0,o=n>0?`${e}${e.includes("?")?"&":"?"}fulgurjs_retry=${n}`:e,t=r.entryInflight.get(e),s=t??import(o);return t||(r.entryInflight.set(e,s),s.catch(()=>{r.entryInflight.delete(e),r.entryFailCounts.set(e,(r.entryFailCounts.get(e)??0)+1)})),Y(s,r.timeout??H,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${z(e)}`)}async function ee(e,r){let n=e.shareScope||"default";if(e.container){let s=U.get(e.container);if(s&&s!==n)throw new E(w.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${s}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return e.container}if(e.containerPromise)return e.containerPromise;let o=e.breakerState;if(o.openUntil>Date.now()){let s=new E(w.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u8FDE\\u7EED\\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u7194\\u65AD\\u5668\\u5DF2\\u5F00\\u542F\\uFF1B\\u5C06\\u5728 ${new Date(o.openUntil).toISOString()} \\u540E\\u5141\\u8BB8\\u91CD\\u8BD5\\u3002\\u8BF7\\u5148\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u670D\\u52A1\\u548C\\u7F51\\u7EDC\\u3002`,{remote:e.name});throw $({remote:e.name,error:s}),s}e.state="loading",e.debug.status="loading";let t=(async()=>{let s=[];if(e.promise)s.push(async()=>{let m=await Y(e.promise(),e.timeout??H,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),y=typeof m=="string"?await Q(m,e):m;return D(y,e),y});else for(let m of[e.entry,...e.fallback??[]])s.push(async()=>{let y=await Q(m,e);return D(y,e),y});let l,i,d=!1,g=r?.retries??e.retries??te;for(let m of s){for(let y=0;y<=g;y++){let O=performance.now();try{l=await m(),e.lastLoadMs=Math.round(performance.now()-O),e.debug.lastLoadMs=e.lastLoadMs,d=!0;break}catch(P){if(i=P,P?.code)throw P;y<g&&await Ee(Math.min(Ue,200*2**y)*(1-Ve*(1-2*Math.random())))}}if(d)break}if(!d||!l){let m=z(e.entry),y=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(y.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${m}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),y.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),y.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(y.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${m}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),y.push("2. \\u68C0\\u67E5 Nginx/CDN \\u7684\\u5165\\u53E3\\u8DEF\\u5F84\\u6620\\u5C04\\uFF1B\\u8BE5\\u5730\\u5740\\u4E0D\\u80FD\\u56DE\\u9000\\u5230 index.html\\u3002")),new E(w.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${m} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${String(i?.message??i)}\n\\u4FEE\\u6CD5\\uFF1A\n${y.join(`\n`)}`,{remote:e.name})}D(l,e);let h=U.get(l);if(h&&h!==n)throw new E(w.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${h}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof l.init=="function"&&await l.init(c),U.set(l,n),e.container=l,e.state="loaded",e.debug.status="loaded",o.fails=0,l})();e.containerPromise=t;try{return await t}catch(s){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=String(s?.message??s),o.fails+=1,o.fails>=e.breakerThreshold&&(o.openUntil=Date.now()+e.breakerResetMs,o.fails=0),s instanceof E)throw $({remote:e.name,error:s}),s;if(s?.code)throw $({remote:e.name,error:s}),s;let l=new E(w.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(s?.message??s)}\\u3002\\u8BF7\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u3001\\u7F51\\u7EDC\\u53CA\\u5171\\u4EAB\\u4F9D\\u8D56\\u3002`,{remote:e.name});throw $({remote:e.name,error:l}),l}}function K(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:re(e.slice(r+1))}}function re(e){return e?e.startsWith(".")?e:`./${e}`:""}async function we(e,r){let{remote:n,module:o}=K(e);if(o&&C===n)throw new E(w.SETUP_RECURSION,`\\u73B0\\u8C61\\uFF1A\\u52A0\\u8F7D "${e}" \\u65F6\\uFF0C\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 setup/onSession \\u53C8\\u540C\\u6B65\\u52A0\\u8F7D\\u4E86\\u81EA\\u8EAB\\u6A21\\u5757\\uFF0C\\u5F62\\u6210\\u5FAA\\u73AF\\u7B49\\u5F85\\u3002\n\\u539F\\u56E0\\uFF1A\\u521D\\u59CB\\u5316\\u5C1A\\u672A\\u5B8C\\u6210\\uFF0C\\u4E0D\\u80FD\\u7B49\\u5F85\\u81EA\\u8EAB\\u7684\\u521D\\u59CB\\u5316\\u7ED3\\u679C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u4E0D\\u8981\\u5728 setup/onSession \\u4E2D\\u52A0\\u8F7D\\u540C\\u4E00\\u8FDC\\u7A0B\\u7684\\u6A21\\u5757\\uFF1B\\u8BF7\\u5728\\u9875\\u9762\\u7EC4\\u4EF6\\u4E2D\\u52A0\\u8F7D\\uFF0C\\u6216\\u901A\\u8FC7 context \\u89E3\\u8026\\u3002`,{remote:n});try{_.beforeLoadRemote?.({remote:n,module:o})}catch(d){console.warn("[fulgurjs] beforeLoadRemote \\u89C2\\u6D4B\\u94A9\\u5B50\\u6267\\u884C\\u5931\\u8D25\\uFF1B\\u6A21\\u5757\\u52A0\\u8F7D\\u5C06\\u7EE7\\u7EED\\u3002\\u8BF7\\u68C0\\u67E5\\u8BE5\\u94A9\\u5B50\\uFF1A",d)}let t=u.get(n);if(!t)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5728 federation({ remotes }) \\u4E2D\\u914D\\u7F6E\\uFF0C\\u6216\\u5728\\u52A0\\u8F7D\\u524D\\u8C03\\u7528 registerRemote()\\u3002`,{remote:n});let s;try{let d=o&&t.manifestUrl?q(e):Promise.resolve();[s]=await Promise.all([ee(t,{retries:r?.retries}),d])}catch(d){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u6B63\\u5728\\u4F7F\\u7528\\u663E\\u5F0F\\u914D\\u7F6E\\u7684 fallbackModule\\uFF1B\\u539F\\u59CB\\u9519\\u8BEF\\uFF1A`,d),$({remote:n,error:d}),await r.fallbackModule();throw d}if(!o)return s;await le(t,s);let l=`${n}@${t.shareScope||"default"}#${o}`;b.has(l)||b.set(l,s.get(o).catch(d=>{throw b.delete(l),d instanceof E||d?.code?d:new E(w.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u52A0\\u8F7D\\u6A21\\u5757 "${o}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(d?.message??d)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:n,module:o})}));let i;try{i=await b.get(l)}catch(d){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u6B63\\u5728\\u4F7F\\u7528\\u663E\\u5F0F\\u914D\\u7F6E\\u7684 fallbackModule\\uFF1B\\u539F\\u59CB\\u9519\\u8BEF\\uFF1A`,d),$({remote:n,error:d}),await r.fallbackModule();throw d}try{_.afterLoadRemote?.({remote:n,module:o,module_ns:i})}catch(d){console.warn("[fulgurjs] afterLoadRemote \\u89C2\\u6D4B\\u94A9\\u5B50\\u6267\\u884C\\u5931\\u8D25\\uFF1B\\u5DF2\\u52A0\\u8F7D\\u6A21\\u5757\\u4ECD\\u53EF\\u4F7F\\u7528\\u3002\\u8BF7\\u68C0\\u67E5\\u8BE5\\u94A9\\u5B50\\uFF1A",d)}if(i&&typeof i=="object"&&Object.keys(i).length===0){let d=new E(w.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6A21\\u5757 "${o}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:n,module:o});$({remote:n,error:d}),console.error(d.message)}return i}function Re(e){let r=u.get(e);if(!r)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:e});return ee(r)}async function q(e,r={}){let{remote:n,module:o}=K(e),t=u.get(n);if(!t)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:n});let s=r.mode??"preload",l=(g,h)=>{if(g.sheet)return Promise.resolve();let m=I.get(g);if(m)return m;let y=new Promise(O=>{let P=()=>{g.removeEventListener("load",P),g.removeEventListener("error",k),O()},k=()=>{$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${h}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:n})}),P()};g.addEventListener("load",P,{once:!0}),g.addEventListener("error",k,{once:!0}),g.sheet&&P()});return I.set(g,y),y},i=(g,h)=>{if(typeof document>"u")return Promise.resolve();let m=document.querySelector(`link[href="${g}"]`);if(m)return h==="style"&&s==="preload"?I.get(m)??Promise.resolve():Promise.resolve();let y=document.createElement("link");y.rel=h==="style"?"stylesheet":"modulepreload",y.href=g,s==="prefetch"&&(y.fetchPriority="low");let O=h==="style"?l(y,g):Promise.resolve();return document.head.appendChild(y),h==="style"&&s==="preload"?O:Promise.resolve()},d=g=>{let h=typeof document<"u"?document.baseURI:void 0,m=new URL(t.entry,h||"http://fulgurjs.invalid/");return!m.pathname.endsWith("/")&&!m.pathname.split("/").pop().includes(".")&&(m.pathname+="/"),new URL(g,m).href};try{if(t.manifestUrl){let g=v.get(t.manifestUrl);g||(g=fetch(t.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(m=>m.ok?m.json():void 0),v.set(t.manifestUrl,g),g.then(m=>{m||v.delete(t.manifestUrl)},()=>v.delete(t.manifestUrl)));let h=await g;if(h){let m=h.schemaVersion;if(typeof m=="number"&&(!Number.isInteger(m)||m>1)){$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(m)}\\uFF0C\\u5F53\\u524D\\u4EC5\\u652F\\u6301\\u7248\\u672C 1\\u3002\\u8BF7\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u548C\\u8FDC\\u7A0B\\u7684\\u63D2\\u4EF6\\u7248\\u672C\\u3002`,{remote:n})}),await i(t.entry,"modulepreload");return}await i(t.entry,"modulepreload");let y=h.exposes,O=Array.isArray(y)?y.filter(L=>L&&typeof L=="object").map(L=>[String(L.name??""),L]):y&&typeof y=="object"?Object.entries(y):[],P=o?O.filter(([L,j])=>re(String(j?.name??L))===o):O,k=[];for(let[,L]of P)if(typeof L?.file=="string"&&await i(d(L.file),"modulepreload"),Array.isArray(L?.css))for(let j of L.css){if(typeof j!="string")continue;let be=i(d(j),"style");s==="preload"&&k.push(be)}await Promise.all(k);return}}await i(t.entry,"modulepreload")}catch(g){$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(g?.message??g)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:n})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=c,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,n]of u)e[r]={...n.debug,entry:n.entry};return e},errors:[]}),{shareScopeMap:c,initSharing:fe,registerShare:F,registerRemotes:J,registerRemote:me,registerPlugins:pe,loadShare:X,loadShareSync:ye,prepareShares:Se,getLoadedShare:ge,pinLoadedShare:he,loadRemote:we,getContainer:Re,preloadRemote:q,parseSpec:K,clearSessionState:ue}}var oe=globalThis,R=oe.__FULGURJS_RUNTIME__??Ce();oe.__FULGURJS_RUNTIME__=R;try{Object.freeze(R)}catch{}var Je=ne;function We(){return R}var Xe=R.initSharing,ze=R.registerShare,Ye=R.registerRemotes,Ze=R.registerRemote,Qe=R.registerPlugins,er=R.loadShare,rr=R.getLoadedShare,nr=R.prepareShares||(async c=>{for(let{name:u,opts:f}of c)await R.loadShare(u,f)}),tr=R.loadShareSync,or=R.pinLoadedShare,sr=R.loadRemote,ir=R.getContainer,ar=R.preloadRemote,cr=R.parseSpec,lr=R.clearSessionState,ur=R.shareScopeMap;function fr(c){if(c&&typeof c=="object"&&"default"in c){let u=c.default;return u!==void 0?u:c}return c}var dr=R;export{lr as clearSessionState,dr as default,ir as getContainer,rr as getLoadedShare,We as getRuntime,Xe as initSharing,sr as loadRemote,er as loadShare,tr as loadShareSync,cr as parseSpec,or as pinLoadedShare,ar as preloadRemote,nr as prepareShares,Qe as registerPlugins,Ze as registerRemote,Ye as registerRemotes,ze as registerShare,R as runtime,ur as shareScopeMap,fr as unwrapDefault,Je as version};\n';
|
|
2675
|
+
var runtime_code_gen_default = 'var ve=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function N(c){let u=ve.exec(String(c).trim());return u?{major:Number(u[1]),minor:Number(u[2]??0),patch:Number(u[3]??0),pre:u[4]?u[4].split("."):[]}:null}function $e(c,u){if(c.length===0&&u.length===0)return 0;if(c.length===0)return 1;if(u.length===0)return-1;let f=Math.max(c.length,u.length);for(let a=0;a<f;a++){let p=c[a],S=u[a];if(p===void 0)return-1;if(S===void 0)return 1;let b=/^\\d+$/.test(p),v=/^\\d+$/.test(S);if(b&&v){let I=Number(p)-Number(S);if(I!==0)return I}else{if(b!==v)return b?-1:1;if(p!==S)return p<S?-1:1}}return 0}function x(c,u){let f=N(c),a=N(u);return!f||!a?c<u?-1:c>u?1:0:f.major!==a.major?f.major-a.major:f.minor!==a.minor?f.minor-a.minor:f.patch!==a.patch?f.patch-a.patch:$e(f.pre,a.pre)}var Pe=/^[a-z]+[+:-]/i;function A(c,u){if(u===!1||u==null||u==="")return!0;let f=String(u).trim();return!f||f==="*"||f==="latest"||Pe.test(f)?!0:f.split("||").some(a=>_e(c,a.trim()))}function _e(c,u){if(!u||u==="*")return!N(c)?.pre.length;let f=u.split(/\\s+-\\s+/);if(f.length===2){let S=f[0].trim(),b=f[1].trim();return!(!A(c,`>=${S}`)||!A(c,`<=${b}`))}let a=N(c);if(!a)return!1;let p=Le(u);if(p===null)return!0;for(let S of p)if(!Te(a,c,S))return!1;return!(a.pre.length>0&&!p.some(S=>S.ver.pre.length>0)&&!p.some(b=>b.ver.major===a.major&&b.ver.minor===a.minor&&b.ver.patch===a.patch))}function Le(c){let u=[],f=c.trim().split(/\\s+/).filter(Boolean);if(f.length===0)return null;for(let a of f){let p=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(a);if(!p)return null;let S=p[1],b=p[2],v=Oe(S,b);if(v===null)return null;u.push(...v)}return u}function Oe(c,u){let f=Me(u);if(!f)return null;let{ver:a,partial:p}=f;switch(c){case"^":{let S=ke(a);return S?[{op:">=",ver:a},{op:"<",ver:S}]:null}case"~":{let S=p>=2?{major:a.major,minor:a.minor+1,patch:0,pre:[]}:{major:a.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:a},{op:"<",ver:S}]}case">=":return[{op:">=",ver:a}];case">":return p===1?[{op:">=",ver:{major:a.major+1,minor:0,patch:0,pre:[]}}]:p===2?[{op:">=",ver:{major:a.major,minor:a.minor+1,patch:0,pre:[]}}]:[{op:">",ver:a}];case"<":return p===1?[{op:"<",ver:{major:a.major,minor:0,patch:0,pre:[]}}]:p===2?[{op:"<",ver:{major:a.major,minor:a.minor,patch:0,pre:[]}}]:[{op:"<",ver:a}];case"<=":return[{op:"<=",ver:a}];case"=":case void 0:return p===1?[{op:">=",ver:a},{op:"<",ver:{major:a.major+1,minor:0,patch:0,pre:[]}}]:p===2?[{op:">=",ver:a},{op:"<",ver:{major:a.major,minor:a.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:a}];default:return null}}function ke(c){return c.major>0?{major:c.major+1,minor:0,patch:0,pre:[]}:c.minor>0?{major:0,minor:c.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:c.patch+1,pre:[]}}function Me(c){let u=c.replace(/^v/,"").trim();if(!u||u==="*"||u==="x"||u==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let f=u.split("."),a=[],p=0;for(let v of f.slice(0,3))if(/^\\d+$/.test(v))a.push(Number(v)),p++;else{if(v==="x"||v==="X"||v==="*")break;break}let S=u.split("-"),b=S.length>1?S.slice(1).join("-").split("+")[0].split("."):[];return p===0&&b.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:a[0]??0,minor:a[1]??0,patch:a[2]??0,pre:b},partial:p}}function Ie(c,u){switch(u){case">=":return c>=0;case">":return c>0;case"<":return c<0;case"<=":return c<=0;case"=":return c===0}}function Te(c,u,f){let a=`${c.major}.${c.minor}.${c.patch}`+(c.pre.length?`-${c.pre.join(".")}`:"");if(f.upper)return!(!(x(a,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:""))>=0)||!(x(a,`${f.upper.major}.${f.upper.minor}.${f.upper.patch}`)<0));let p=x(a,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:"")),S=Ie(p,f.op);return f.ver.pre.length>0&&c.pre.length===0&&(f.op===">"||f.op==="<")?!1:S}var E=class extends Error{code;details;constructor(u,f,a,p){super(`[fulgurjs:${u}] ${f}`,p),this.name="FgError",this.code=u,this.details=a}},w={REMOTE_LOAD_FAILED:"MFU-001",REMOTE_NAME_MISMATCH:"MFU-002",SHARE_STRICT_VERSION:"MFU-003",SHARE_NOT_AVAILABLE:"MFU-004",CONTAINER_REINIT_CONFLICT:"MFU-005",MODULE_NOT_EXPOSED:"MFU-006",PRELOAD_FAILED:"MFU-007",REMOTE_UNKNOWN:"MFU-008",EMPTY_EXPORTS:"MFU-009",SINGLETON_SKEW:"MFU-010",SETUP_INVALID_EXPORT:"MFU-011",SETUP_RUN_FAILED:"MFU-012",SETUP_SESSION_KEY_MISSING:"MFU-013",SETUP_RECURSION:"MFU-014"};var ne="5.9.2";var xe="__fulgurjsSetup",Ae="__FULGURJS_APP_CONFIG__",H=15e3,te=2,je=5,Ne=3e4,Ue=4e3,Ve=.2;function Ce(){let c=Object.create(null),u=new Map,f=[],a=new Set,p=new Map,S=(e,r)=>JSON.stringify([r.shareScope||"default",r.shareKey||e,r.requiredVersion??null,!!r.singleton,!!r.strictVersion]),b=new Map,v=new Map,I=new WeakMap,U=new WeakMap,_={},se=()=>{for(let e of f)try{e.init?.(_)}catch(r){console.warn("[fulgurjs] \\u8FD0\\u884C\\u65F6\\u6269\\u5C55\\u521D\\u59CB\\u5316\\u5931\\u8D25\\uFF0C\\u8BE5\\u6269\\u5C55\\u5C06\\u4E0D\\u53EF\\u7528\\uFF1A",e.name,r)}},V=new Map,C,ie=e=>{let r=V.get(e);return r||V.set(e,r={}),r},G=()=>globalThis[Ae]??{};async function B(e,r,n,o){let t=l=>l instanceof E?l:new E(w.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${o} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${String(l?.message??l)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${o} \\u51FD\\u6570\\u540E\\u91CD\\u65B0\\u52A0\\u8F7D\\uFF1B\\u5931\\u8D25\\u7F13\\u5B58\\u5DF2\\u6E05\\u9664\\uFF0C\\u53EF\\u4EE5\\u76F4\\u63A5\\u91CD\\u8BD5\\u3002`,{remote:e,phase:o},{cause:l});C=e;let s;try{s=r(n)}catch(l){throw t(l)}finally{C=void 0}try{await s}catch(l){throw t(l)}}async function ae(e,r,n,o){e.debug.setup="pending";try{if(e.manifestUrl)try{await q(`${e.name}/${n}`)}catch{}let t=await r.get(n),s=t?.default;if(typeof s!="function")throw new E(w.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${t==null?String(t):typeof s}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728 setup \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u4E2D\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u51FD\\u6570\\uFF0C\\u4F8B\\u5982 export default async function setup(context) { ... }\\uFF1B\\u5177\\u540D onSession \\u53EF\\u9009\\u3002`,{remote:e.name,module:n});if(t.onSession!==void 0&&typeof t.onSession!="function")throw new E(w.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AonSession \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof t.onSession}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5C06 onSession \\u6539\\u4E3A\\u5177\\u540D\\u5BFC\\u51FA\\u7684\\u51FD\\u6570\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});o.setupExports=t,await B(e.name,s,{appContext:G(),signal:(o.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(t){throw e.debug.setup="failed",o.setupExports=void 0,t}}async function ce(e,r,n){let o=G(),t=o?.sessionKey;if(typeof t!="string"||t==="")throw new E(w.SETUP_SESSION_KEY_MISSING,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u58F0\\u660E\\u4E86 onSession\\uFF0C\\u4F46\\u5BBF\\u4E3B\\u5C1A\\u672A\\u63D0\\u4F9B\\u6709\\u6548\\u7684 AppContext.sessionKey\\u3002\n\\u539F\\u56E0\\uFF1A\\u5F53\\u524D\\u503C\\u4E3A ${t===void 0?"\\u7F3A\\u5931":JSON.stringify(t)}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5BBF\\u4E3B\\u6BCF\\u6B21\\u767B\\u5F55\\u6216\\u91CD\\u767B\\u65F6\\u751F\\u6210\\u65B0\\u7684\\u975E\\u654F\\u611F\\u767B\\u5F55\\u4EE3\\u6B21 ID\\uFF0C\\u5E76\\u5728\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u9875\\u9762\\u524D\\u8C03\\u7528 provideAppContext({ ..., sessionKey: \'\\u767B\\u5F55\\u4EE3\\u6B21 ID\' })\\uFF1B\\u4E0D\\u8981\\u4F7F\\u7528 token \\u539F\\u6587\\u3002`,{remote:e.name});if(r.sessionPromise&&r.sessionKey===t)return r.sessionPromise;r.controller?.abort();let s=new AbortController;r.controller=s,r.sessionKey=t;let l=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),i=(async()=>{await l,!s.signal.aborted&&await B(e.name,n,{appContext:o,sessionKey:t,signal:s.signal},"onSession")})();return r.sessionPromise=i,i.catch(()=>{r.sessionKey===t&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),i}async function le(e,r){let n=r?.[xe];if(typeof n!="string"||n==="")return;let o=ie(e.name);o.setupPromise||(o.setupPromise=ae(e,r,n,o).catch(s=>{throw o.setupPromise=void 0,s})),await o.setupPromise;let t=o.setupExports?.onSession;typeof t=="function"&&await ce(e,o,t)}function ue(){for(let e of V.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let M=e=>c[e]??=Object.create(null);function $(e){try{_.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}function fe(e="default"){return M(e),c}function F(e,r,n,o,t={}){let s=M(e||"default"),l=Object.hasOwn(s,r)?s[r]:void 0,i=l&&typeof l=="object"?l:void 0;i||(i=Object.create(null),s[r]=i),!(Object.hasOwn(i,n)&&i[n])&&(i[n]={version:n,get:o,from:t.from??"unknown",eager:!!t.eager,loaded:!!t.loaded})}function de(e){let r=(n,o,t)=>{if(n===void 0)return;if(!(typeof n=="number"&&(t?Number.isInteger(n)&&n>=0&&n<=10:Number.isFinite(n)&&n>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${o} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(n)}\\uFF0C\\u5E94\\u4E3A${t?" 0 \\u5230 10 \\u7684\\u6574\\u6570":"\\u5927\\u4E8E 0 \\u7684\\u6709\\u9650\\u6570\\u5B57"}\\u3002\\u8BF7\\u4FEE\\u6B63 registerRemote \\u914D\\u7F6E\\u3002`)};r(e.timeout,"timeout"),r(e.retries,"retries",!0),e.breaker&&(r(e.breaker.threshold,"breaker.threshold"),r(e.breaker.resetMs,"breaker.resetMs"))}function J(e){for(let r of e){de(r);let n=u.get(r.name);u.set(r.name,{timeout:H,retries:te,...n,...r,breakerThreshold:r.breaker?.threshold??n?.breakerThreshold??je,breakerResetMs:r.breaker?.resetMs??n?.breakerResetMs??Ne,state:n?.state??"idle",breakerState:n?.breakerState??{fails:0,openUntil:0},entryInflight:n?.entryInflight??new Map,entryFailCounts:n?.entryFailCounts??new Map,debug:n?.debug??{entry:r.entry,status:"idle",setup:"none"}})}}function me(e){J([e])}function pe(e){f.push(...e),p.clear(),se()}function T(e,r,n=!1){let o=r.shareScope||"default",t=r.shareKey||e,l=M(o)[t]||{},i=Object.keys(l).filter(m=>!n||r.singleton||l[m].value!==void 0);if(n&&i.length===0)return;let d=r.requiredVersion,g=i.filter(m=>d===void 0||d===!1||A(m,d)),h;if(r.singleton&&i.length>0){let m=i.filter(y=>l[y].loaded);if(h=[...m.length?m:i].sort(x).pop(),!g.includes(h)){let y=l[h],O=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${t}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u5E94\\u7528\\u8981\\u6C42 ${d??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${i.join("\\u3001")}\\uFF1B\\u4E3A\\u4FDD\\u8BC1\\u5168\\u9875\\u53EA\\u4F7F\\u7528\\u4E00\\u4E2A\\u5B9E\\u4F8B\\uFF0C\\u6700\\u7EC8\\u590D\\u7528 ${y.from} \\u63D0\\u4F9B\\u7684 ${h}\\u3002\n\\u5F71\\u54CD\\uFF1A\\u53EF\\u80FD\\u51FA\\u73B0\\u72B6\\u6001\\u4E0D\\u4E00\\u81F4\\u6216\\u8FD0\\u884C\\u9519\\u8BEF\\uFF0C\\u5177\\u4F53\\u53D6\\u51B3\\u4E8E\\u4E24\\u7AEF API \\u662F\\u5426\\u517C\\u5BB9\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u6838\\u5BF9\\u540E\\u8C03\\u6574 shared.requiredVersion\\uFF1B\\u82E5\\u5FC5\\u987B\\u62D2\\u7EDD\\u4E0D\\u517C\\u5BB9\\u7248\\u672C\\uFF0C\\u8BF7\\u542F\\u7528 strictVersion\\u3002`;if(r.strictVersion){let k=new E(w.SHARE_STRICT_VERSION,O,{shareKey:t,requiredVersion:d});throw $({remote:y.from,error:k}),k}let P=`${o}|${t}|${d??"*"}|${h}|${i.join(",")}`;a.has(P)||(a.add(P),console.warn(`[fulgurjs:MFU-010] ${O}`))}}else if(h=[...g].sort(x).pop(),!h){if(r.strictVersion){let m=new E(w.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${o}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${t}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${d}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${i.join("\\u3001")||"\\u65E0"}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u4FEE\\u6B63 shared.requiredVersion\\u3002`);throw $({remote:t,error:m}),m}return}return l[h]}function W(e,r,n){let o=r.localVersion;if(!o||n===void 0)return;let t=r.shareScope||"default",s=r.shareKey||e,l=M(t),i=Object.hasOwn(l,s)?l[s]:void 0;if(i&&Object.keys(i).length>0){try{let g=T(e,r);if(g&&g.value===void 0){if(g.version===o)g.value=n,g.loaded=!0;else if(r.singleton&&!g.pendingGet){F(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let h=l[s][o];h.value=n,h.loaded=!0}}}catch{}return}F(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let d=l[s]?.[o];d&&(d.value=n)}async function X(e,r={}){let n=r.shareScope||"default",o=r.shareKey||e,t=M(n)[o]||{},s=S(e,r),l=_.resolveShare?p.get(s):void 0,i=l||T(e,r);if(!i){if(r.fallback){let m=await r.fallback();return W(e,r,m),m}let h=new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${o}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u4F5C\\u7528\\u57DF "${n}" \\u4E2D\\u6CA1\\u6709\\u7B26\\u5408 ${r.requiredVersion??"\\u4EFB\\u610F\\u7248\\u672C"} \\u8981\\u6C42\\u7684\\u7248\\u672C\\uFF0C\\u4E14\\u672A\\u914D\\u7F6E\\u672C\\u5730\\u526F\\u672C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728\\u5BBF\\u4E3B\\u6216\\u8FDC\\u7A0B\\u6CE8\\u518C\\u8BE5\\u4F9D\\u8D56\\uFF0C\\u6216\\u4E3A shared \\u914D\\u7F6E\\u53EF\\u7528\\u7684\\u672C\\u5730\\u526F\\u672C\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion});throw $({remote:o,error:h}),h}if(_.resolveShare&&!l){let h=await _.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:i,available:Object.values(t)});h&&(i=h),p.set(s,i)}if(i.value!==void 0)return p.set(S(e,r),i),i.value;if(i.loaded=!0,!i.pendingGet)try{i.pendingGet=i.get()}catch(h){i.pendingGet=Promise.reject(h)}let d=i.pendingGet,g;try{g=await d}catch(h){if(i.value!==void 0)return p.set(S(e,r),i),i.value;throw i.loaded=!1,p.get(s)===i&&p.delete(s),h}finally{i.pendingGet===d&&(i.pendingGet=void 0)}return i.value===void 0&&(i.value=g),p.set(S(e,r),i),i.value}function ge(e,r={}){return _.resolveShare?p.get(S(e,r))?.value:T(e,r,!0)?.value}function he(e,r,n,o){W(e,{...r,localVersion:n},o)}function ye(e,r){let n=r.shareScope||"default",o=r.shareKey||e;if(_.resolveShare){let s=S(e,r),l=p.get(s);if(l&&l.value!==void 0)return{kind:"ready",value:l.value};let i=l||_.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:T(e,r),available:Object.values(M(n)[o]||{})});if(i&&typeof i.then=="function")throw Promise.resolve(i).catch(()=>{}),new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u5BF9\\u5171\\u4EAB "${o}" \\u8FD4\\u56DE\\u4E86 Promise\\uFF0C\\u4F46\\u8BE5\\u5171\\u4EAB\\u6B63\\u88AB\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u6D88\\u8D39\\uFF08Vite 8 \\u540C\\u6B65\\u534F\\u5546\\u95E8\\u9762\\uFF09\\u3002\n\\u539F\\u56E0\\uFF1A\\u6A21\\u5757\\u6C42\\u503C\\u671F\\u65E0\\u6CD5\\u7B49\\u5F85\\u5F02\\u6B65\\u51B3\\u7B56\\uFF1B\\u9759\\u6001\\u5BFC\\u5165\\u4E0D\\u80FD\\u9759\\u9ED8\\u5FFD\\u7565 hook \\u51B3\\u7B56\\u3002\n\\u4FEE\\u6CD5\\uFF1AVite 8 HTML \\u5165\\u53E3\\u4F1A\\u5148\\u5B8C\\u6210\\u5F02\\u6B65\\u534F\\u5546\\uFF1B\\u5176\\u4ED6\\u5165\\u53E3\\u8BF7\\u5148\\u52A8\\u6001 loadShare \\u5EFA\\u7ACB\\u5FEB\\u7167\\uFF0C\\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u8BA9\\u8BE5\\u952E\\u540C\\u6B65\\u8FD4\\u56DE picked\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let d=i;if(d){if(d.value!==void 0)return p.set(S(e,r),d),{kind:"ready",value:d.value};if(d.version!==void 0&&d.version===r.localVersion)return{kind:"local"};throw new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u4E3A "${o}" \\u9009\\u62E9\\u4E86\\u672A\\u5C31\\u7EEA\\u7684 ${d.version??"\\u6761\\u76EE"}\\u3002\n\\u539F\\u56E0\\uFF1A\\u540C\\u6B65\\u6D88\\u8D39\\u4E0D\\u80FD\\u7B49\\u5F85\\u52A0\\u8F7D\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5148\\u52A8\\u6001 loadShare \\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u9009\\u62E9\\u5DF2\\u5C31\\u7EEA\\u5B9E\\u4F8B/\\u672C\\u5730\\u7248\\u672C ${r.localVersion??"\\u672A\\u58F0\\u660E"}\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0})}}let t=T(e,r);if(!t)return{kind:"local"};if(t.value!==void 0)return{kind:"ready",value:t.value};if(t.version!==void 0&&t.version===r.localVersion)return{kind:"local"};if(r.singleton||r.strictVersion&&r.requiredVersion&&(!r.localVersion||!A(r.localVersion,r.requiredVersion))){if(r.strictVersion||t.pendingGet)throw new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB "${o}" \\u9009\\u4E2D\\u4E86 ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version}\\uFF08\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\uFF0C\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u65E0\\u6CD5\\u7B49\\u5F85\\u5176\\u5B9E\\u4F8B\\u5C31\\u7EEA\\u3002\n\\u539F\\u56E0\\uFF1A\\u4E0D\\u80FD\\u6539\\u7528\\u4E0D\\u517C\\u5BB9\\u7684\\u672C\\u5730\\u526F\\u672C\\u6216\\u5206\\u88C2\\u5355\\u4F8B\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9\\u8BE5\\u5171\\u4EAB\\u7684\\u9996\\u6B21\\u6D88\\u8D39\\u5148\\u7ECF\\u4E00\\u6B21\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u52A0\\u8F7D\\uFF0C\\u6216\\u5C06\\u672C\\u5E94\\u7528\\u7248\\u672C\\u4E0E\\u4F5C\\u7528\\u57DF\\u63D0\\u4F9B\\u7248\\u672C\\u5BF9\\u9F50\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let s=`${n}|${o}|${t.version}|${r.localVersion}`;return a.has(s)||(a.add(s),console.warn(`[fulgurjs:MFU-010] \\u5171\\u4EAB\\u5355\\u4F8B "${o}"\\uFF1A\\u4F5C\\u7528\\u57DF\\u4E2D ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version} \\u5C1A\\u672A\\u52A0\\u8F7D\\uFF0C\\u9996\\u4E2A\\u6D88\\u8D39\\u8005\\u4EE5\\u672C\\u5730\\u7248\\u672C ${r.localVersion??""} \\u63A5\\u7BA1\\uFF08\\u540E\\u7EED\\u6D88\\u8D39\\u8005\\u6309\\u5DF2\\u52A0\\u8F7D\\u4F18\\u5148\\u6536\\u655B\\u5230\\u8BE5\\u5B9E\\u4F8B\\uFF09\\u3002`)),{kind:"local"}}return console.warn(`[fulgurjs] \\u5171\\u4EAB "${o}"\\uFF1A\\u975E\\u5355\\u4F8B\\u540C\\u6B65\\u6D88\\u8D39\\u4F7F\\u7528\\u672C\\u5730 ${r.localVersion??""}\\uFF0C\\u8FDC\\u7A0B ${t.version} \\u5C1A\\u672A\\u5C31\\u7EEA\\u3002`),{kind:"local"}}async function Se(e){if(_.resolveShare){for(let{name:r,opts:n}of e){let o=S(r,n);if(p.has(o))continue;let t=T(r,n),s=await _.resolveShare({shareKey:n.shareKey||r,shareScope:n.shareScope||"default",requiredVersion:n.requiredVersion,picked:t,available:Object.values(M(n.shareScope||"default")[n.shareKey||r]||{})})||t;s&&p.set(o,s)}for(let{name:r,opts:n}of e)await X(r,n)}}function z(e){try{let r=new URL(e,typeof location<"u"?location.href:"http://f.invalid");return r.protocol+"//"+r.host+r.pathname}catch{return String(e).replace(/[?#].*$/,"")}}function Y(e,r,n){return new Promise((o,t)=>{let s=setTimeout(()=>t(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${n}`)),r);e.then(l=>{clearTimeout(s),o(l)},l=>{clearTimeout(s),t(l)})})}let Ee=e=>new Promise(r=>setTimeout(r,e)),Z=new Set;function D(e,r){if(!e||typeof e.get!="function")throw new Error(`\\u8FDC\\u7A0B\\u5E94\\u7528 "${r.name}" \\u7684 remoteEntry \\u672A\\u5BFC\\u51FA\\u5BB9\\u5668\\u63A5\\u53E3\\u3002\\u8BF7\\u786E\\u8BA4\\u5165\\u53E3\\u5BFC\\u51FA\\u4E86 get()\\uFF0C\\u5E76\\u68C0\\u67E5\\u8BE5\\u5730\\u5740\\u662F\\u5426\\u8FD4\\u56DE\\u6B63\\u786E\\u7684\\u8054\\u90A6\\u5165\\u53E3 JS\\u3002`);if(e.name&&r.name&&e.name!==r.name){let n=`\\u8FDC\\u7A0B\\u5165\\u53E3\\u81EA\\u62A5\\u540D\\u79F0 "${e.name}" \\u4E0E\\u5BBF\\u4E3B\\u914D\\u7F6E\\u540D\\u79F0 "${r.name}" \\u4E0D\\u4E00\\u81F4\\u3002\\u8BF7\\u7EDF\\u4E00\\u4E24\\u4FA7 federation({ name }) \\u4E0E remotes \\u7684\\u540D\\u79F0\\u3002`;if(r.promise){let o=`${r.name}\\u2194${e.name}`;Z.has(o)||(Z.add(o),console.warn(`[fulgurjs] ${n} \\u5F53\\u524D\\u662F\\u52A8\\u6001 Promise \\u8FDC\\u7A0B\\uFF0C\\u7EE7\\u7EED\\u52A0\\u8F7D\\u3002`))}else throw Object.assign(new Error(n),{code:w.REMOTE_NAME_MISMATCH})}}async function Q(e,r){let n=r.entryFailCounts.get(e)??0,o=n>0?`${e}${e.includes("?")?"&":"?"}fulgurjs_retry=${n}`:e,t=r.entryInflight.get(e),s=t??import(o);return t||(r.entryInflight.set(e,s),s.catch(()=>{r.entryInflight.delete(e),r.entryFailCounts.set(e,(r.entryFailCounts.get(e)??0)+1)})),Y(s,r.timeout??H,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${z(e)}`)}async function ee(e,r){let n=e.shareScope||"default";if(e.container){let s=U.get(e.container);if(s&&s!==n)throw new E(w.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${s}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return e.container}if(e.containerPromise)return e.containerPromise;let o=e.breakerState;if(o.openUntil>Date.now()){let s=new E(w.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u8FDE\\u7EED\\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u7194\\u65AD\\u5668\\u5DF2\\u5F00\\u542F\\uFF1B\\u5C06\\u5728 ${new Date(o.openUntil).toISOString()} \\u540E\\u5141\\u8BB8\\u91CD\\u8BD5\\u3002\\u8BF7\\u5148\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u670D\\u52A1\\u548C\\u7F51\\u7EDC\\u3002`,{remote:e.name});throw $({remote:e.name,error:s}),s}e.state="loading",e.debug.status="loading";let t=(async()=>{let s=[];if(e.promise)s.push(async()=>{let m=await Y(e.promise(),e.timeout??H,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),y=typeof m=="string"?await Q(m,e):m;return D(y,e),y});else for(let m of[e.entry,...e.fallback??[]])s.push(async()=>{let y=await Q(m,e);return D(y,e),y});let l,i,d=!1,g=r?.retries??e.retries??te;for(let m of s){for(let y=0;y<=g;y++){let O=performance.now();try{l=await m(),e.lastLoadMs=Math.round(performance.now()-O),e.debug.lastLoadMs=e.lastLoadMs,d=!0;break}catch(P){if(i=P,P?.code)throw P;y<g&&await Ee(Math.min(Ue,200*2**y)*(1-Ve*(1-2*Math.random())))}}if(d)break}if(!d||!l){let m=z(e.entry),y=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(y.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${m}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),y.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),y.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(y.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${m}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),y.push("2. \\u68C0\\u67E5 Nginx/CDN \\u7684\\u5165\\u53E3\\u8DEF\\u5F84\\u6620\\u5C04\\uFF1B\\u8BE5\\u5730\\u5740\\u4E0D\\u80FD\\u56DE\\u9000\\u5230 index.html\\u3002")),new E(w.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${m} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${String(i?.message??i)}\n\\u4FEE\\u6CD5\\uFF1A\n${y.join(`\n`)}`,{remote:e.name})}D(l,e);let h=U.get(l);if(h&&h!==n)throw new E(w.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${h}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof l.init=="function"&&await l.init(c),U.set(l,n),e.container=l,e.state="loaded",e.debug.status="loaded",o.fails=0,l})();e.containerPromise=t;try{return await t}catch(s){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=String(s?.message??s),o.fails+=1,o.fails>=e.breakerThreshold&&(o.openUntil=Date.now()+e.breakerResetMs,o.fails=0),s instanceof E)throw $({remote:e.name,error:s}),s;if(s?.code)throw $({remote:e.name,error:s}),s;let l=new E(w.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(s?.message??s)}\\u3002\\u8BF7\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u3001\\u7F51\\u7EDC\\u53CA\\u5171\\u4EAB\\u4F9D\\u8D56\\u3002`,{remote:e.name});throw $({remote:e.name,error:l}),l}}function K(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:re(e.slice(r+1))}}function re(e){return e?e.startsWith(".")?e:`./${e}`:""}async function we(e,r){let{remote:n,module:o}=K(e);if(o&&C===n)throw new E(w.SETUP_RECURSION,`\\u73B0\\u8C61\\uFF1A\\u52A0\\u8F7D "${e}" \\u65F6\\uFF0C\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 setup/onSession \\u53C8\\u540C\\u6B65\\u52A0\\u8F7D\\u4E86\\u81EA\\u8EAB\\u6A21\\u5757\\uFF0C\\u5F62\\u6210\\u5FAA\\u73AF\\u7B49\\u5F85\\u3002\n\\u539F\\u56E0\\uFF1A\\u521D\\u59CB\\u5316\\u5C1A\\u672A\\u5B8C\\u6210\\uFF0C\\u4E0D\\u80FD\\u7B49\\u5F85\\u81EA\\u8EAB\\u7684\\u521D\\u59CB\\u5316\\u7ED3\\u679C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u4E0D\\u8981\\u5728 setup/onSession \\u4E2D\\u52A0\\u8F7D\\u540C\\u4E00\\u8FDC\\u7A0B\\u7684\\u6A21\\u5757\\uFF1B\\u8BF7\\u5728\\u9875\\u9762\\u7EC4\\u4EF6\\u4E2D\\u52A0\\u8F7D\\uFF0C\\u6216\\u901A\\u8FC7 context \\u89E3\\u8026\\u3002`,{remote:n});try{_.beforeLoadRemote?.({remote:n,module:o})}catch(d){console.warn("[fulgurjs] beforeLoadRemote \\u89C2\\u6D4B\\u94A9\\u5B50\\u6267\\u884C\\u5931\\u8D25\\uFF1B\\u6A21\\u5757\\u52A0\\u8F7D\\u5C06\\u7EE7\\u7EED\\u3002\\u8BF7\\u68C0\\u67E5\\u8BE5\\u94A9\\u5B50\\uFF1A",d)}let t=u.get(n);if(!t)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5728 federation({ remotes }) \\u4E2D\\u914D\\u7F6E\\uFF0C\\u6216\\u5728\\u52A0\\u8F7D\\u524D\\u8C03\\u7528 registerRemote()\\u3002`,{remote:n});let s;try{let d=o&&t.manifestUrl?q(e):Promise.resolve();[s]=await Promise.all([ee(t,{retries:r?.retries}),d])}catch(d){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u6B63\\u5728\\u4F7F\\u7528\\u663E\\u5F0F\\u914D\\u7F6E\\u7684 fallbackModule\\uFF1B\\u539F\\u59CB\\u9519\\u8BEF\\uFF1A`,d),$({remote:n,error:d}),await r.fallbackModule();throw d}if(!o)return s;await le(t,s);let l=`${n}@${t.shareScope||"default"}#${o}`;b.has(l)||b.set(l,s.get(o).catch(d=>{throw b.delete(l),d instanceof E||d?.code?d:new E(w.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u52A0\\u8F7D\\u6A21\\u5757 "${o}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(d?.message??d)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:n,module:o})}));let i;try{i=await b.get(l)}catch(d){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u6B63\\u5728\\u4F7F\\u7528\\u663E\\u5F0F\\u914D\\u7F6E\\u7684 fallbackModule\\uFF1B\\u539F\\u59CB\\u9519\\u8BEF\\uFF1A`,d),$({remote:n,error:d}),await r.fallbackModule();throw d}try{_.afterLoadRemote?.({remote:n,module:o,module_ns:i})}catch(d){console.warn("[fulgurjs] afterLoadRemote \\u89C2\\u6D4B\\u94A9\\u5B50\\u6267\\u884C\\u5931\\u8D25\\uFF1B\\u5DF2\\u52A0\\u8F7D\\u6A21\\u5757\\u4ECD\\u53EF\\u4F7F\\u7528\\u3002\\u8BF7\\u68C0\\u67E5\\u8BE5\\u94A9\\u5B50\\uFF1A",d)}if(i&&typeof i=="object"&&Object.keys(i).length===0){let d=new E(w.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6A21\\u5757 "${o}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:n,module:o});$({remote:n,error:d}),console.error(d.message)}return i}function Re(e){let r=u.get(e);if(!r)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:e});return ee(r)}async function q(e,r={}){let{remote:n,module:o}=K(e),t=u.get(n);if(!t)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:n});let s=r.mode??"preload",l=(g,h)=>{if(g.sheet)return Promise.resolve();let m=I.get(g);if(m)return m;let y=new Promise(O=>{let P=()=>{g.removeEventListener("load",P),g.removeEventListener("error",k),O()},k=()=>{$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${h}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:n})}),P()};g.addEventListener("load",P,{once:!0}),g.addEventListener("error",k,{once:!0}),g.sheet&&P()});return I.set(g,y),y},i=(g,h)=>{if(typeof document>"u")return Promise.resolve();let m=document.querySelector(`link[href="${g}"]`);if(m)return h==="style"&&s==="preload"?I.get(m)??Promise.resolve():Promise.resolve();let y=document.createElement("link");y.rel=h==="style"?"stylesheet":"modulepreload",y.href=g,s==="prefetch"&&(y.fetchPriority="low");let O=h==="style"?l(y,g):Promise.resolve();return document.head.appendChild(y),h==="style"&&s==="preload"?O:Promise.resolve()},d=g=>{let h=typeof document<"u"?document.baseURI:void 0,m=new URL(t.entry,h||"http://fulgurjs.invalid/");return!m.pathname.endsWith("/")&&!m.pathname.split("/").pop().includes(".")&&(m.pathname+="/"),new URL(g,m).href};try{if(t.manifestUrl){let g=v.get(t.manifestUrl);g||(g=fetch(t.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(m=>m.ok?m.json():void 0),v.set(t.manifestUrl,g),g.then(m=>{m||v.delete(t.manifestUrl)},()=>v.delete(t.manifestUrl)));let h=await g;if(h){let m=h.schemaVersion;if(typeof m=="number"&&(!Number.isInteger(m)||m>1)){$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(m)}\\uFF0C\\u5F53\\u524D\\u4EC5\\u652F\\u6301\\u7248\\u672C 1\\u3002\\u8BF7\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u548C\\u8FDC\\u7A0B\\u7684\\u63D2\\u4EF6\\u7248\\u672C\\u3002`,{remote:n})}),await i(t.entry,"modulepreload");return}await i(t.entry,"modulepreload");let y=h.exposes,O=Array.isArray(y)?y.filter(L=>L&&typeof L=="object").map(L=>[String(L.name??""),L]):y&&typeof y=="object"?Object.entries(y):[],P=o?O.filter(([L,j])=>re(String(j?.name??L))===o):O,k=[];for(let[,L]of P)if(typeof L?.file=="string"&&await i(d(L.file),"modulepreload"),Array.isArray(L?.css))for(let j of L.css){if(typeof j!="string")continue;let be=i(d(j),"style");s==="preload"&&k.push(be)}await Promise.all(k);return}}await i(t.entry,"modulepreload")}catch(g){$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(g?.message??g)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:n})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=c,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,n]of u)e[r]={...n.debug,entry:n.entry};return e},errors:[]}),{shareScopeMap:c,initSharing:fe,registerShare:F,registerRemotes:J,registerRemote:me,registerPlugins:pe,loadShare:X,loadShareSync:ye,prepareShares:Se,getLoadedShare:ge,pinLoadedShare:he,loadRemote:we,getContainer:Re,preloadRemote:q,parseSpec:K,clearSessionState:ue}}var oe=globalThis,R=oe.__FULGURJS_RUNTIME__??Ce();oe.__FULGURJS_RUNTIME__=R;try{Object.freeze(R)}catch{}var Je=ne;function We(){return R}var Xe=R.initSharing,ze=R.registerShare,Ye=R.registerRemotes,Ze=R.registerRemote,Qe=R.registerPlugins,er=R.loadShare,rr=R.getLoadedShare,nr=R.prepareShares||(async c=>{for(let{name:u,opts:f}of c)await R.loadShare(u,f)}),tr=R.loadShareSync,or=R.pinLoadedShare,sr=R.loadRemote,ir=R.getContainer,ar=R.preloadRemote,cr=R.parseSpec,lr=R.clearSessionState,ur=R.shareScopeMap;function fr(c){if(c&&typeof c=="object"&&"default"in c){let u=c.default;return u!==void 0?u:c}return c}var dr=R;export{lr as clearSessionState,dr as default,ir as getContainer,rr as getLoadedShare,We as getRuntime,Xe as initSharing,sr as loadRemote,er as loadShare,tr as loadShareSync,cr as parseSpec,or as pinLoadedShare,ar as preloadRemote,nr as prepareShares,Qe as registerPlugins,Ze as registerRemote,Ye as registerRemotes,ze as registerShare,R as runtime,ur as shareScopeMap,fr as unwrapDefault,Je as version};\n';
|
|
2676
2676
|
|
|
2677
2677
|
// src/index.ts
|
|
2678
2678
|
function readRuntimeCode() {
|