@fulgurjs/federation 6.14.2 → 6.14.4

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
@@ -35,7 +35,7 @@ __export(index_exports, {
35
35
  });
36
36
  module.exports = __toCommonJS(index_exports);
37
37
  var import_node_fs8 = __toESM(require("fs"), 1);
38
- var import_node_path10 = __toESM(require("path"), 1);
38
+ var import_node_path11 = __toESM(require("path"), 1);
39
39
  var import_node_module4 = require("module");
40
40
 
41
41
  // src/vue-runtime-evidence.ts
@@ -69,7 +69,7 @@ var import_node_fs = __toESM(require("fs"), 1);
69
69
  var import_node_path = __toESM(require("path"), 1);
70
70
 
71
71
  // src/version.ts
72
- var RUNTIME_VERSION = "6.14.2";
72
+ var RUNTIME_VERSION = "6.14.4";
73
73
 
74
74
  // src/dev-cors.ts
75
75
  function normalizeDevCorsOrigins(input) {
@@ -1812,12 +1812,12 @@ function collectPackageExportNames(spec, importerFile) {
1812
1812
  }
1813
1813
 
1814
1814
  // src/dts-serve.ts
1815
- var import_node_path5 = __toESM(require("path"), 1);
1815
+ var import_node_path6 = __toESM(require("path"), 1);
1816
1816
  var import_node_fs4 = __toESM(require("fs"), 1);
1817
1817
 
1818
1818
  // src/dts-generate.ts
1819
1819
  var import_node_fs3 = __toESM(require("fs"), 1);
1820
- var import_node_path4 = __toESM(require("path"), 1);
1820
+ var import_node_path5 = __toESM(require("path"), 1);
1821
1821
 
1822
1822
  // src/dts-diagnostics.ts
1823
1823
  var import_node_path3 = __toESM(require("path"), 1);
@@ -2041,9 +2041,161 @@ export default ${value};`;
2041
2041
  return text.slice(0, assignment.getStart(source)) + replacement + text.slice(assignment.end);
2042
2042
  }
2043
2043
 
2044
+ // src/dts-type-display.ts
2045
+ var import_node_path4 = __toESM(require("path"), 1);
2046
+ function displayPublicDataTypes(ts, files, entries, root, compilerOptions = {}) {
2047
+ const base = import_node_path4.default.join(root, ".fulgurjs-types-display");
2048
+ const paths = new Map([...files].map(([rel, text]) => [import_node_path4.default.resolve(base, rel), text]));
2049
+ const entryPaths = [...new Set(entries)].map((rel) => import_node_path4.default.resolve(base, rel));
2050
+ const needsDisplay = entryPaths.filter((file) => {
2051
+ const source = ts.createSourceFile(file, paths.get(file), ts.ScriptTarget.Latest, true);
2052
+ return source.statements.some((s) => ts.isExportDeclaration(s) && (!s.exportClause || ts.isNamedExports(s.exportClause) && s.exportClause.elements.length > 0) || (ts.isInterfaceDeclaration(s) || ts.isTypeAliasDeclaration(s)) && s.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword));
2053
+ });
2054
+ if (needsDisplay.length === 0) return;
2055
+ const options = {
2056
+ ...compilerOptions,
2057
+ noEmit: true,
2058
+ target: compilerOptions.target ?? ts.ScriptTarget.ESNext,
2059
+ module: compilerOptions.module ?? ts.ModuleKind.ESNext,
2060
+ moduleResolution: compilerOptions.moduleResolution ?? ts.ModuleResolutionKind.Bundler ?? ts.ModuleResolutionKind.NodeJs,
2061
+ skipLibCheck: true,
2062
+ types: [],
2063
+ allowArbitraryExtensions: true
2064
+ };
2065
+ const directories = /* @__PURE__ */ new Set();
2066
+ for (const file of paths.keys()) {
2067
+ for (let dir = import_node_path4.default.dirname(file); dir.startsWith(base); dir = import_node_path4.default.dirname(dir)) directories.add(dir);
2068
+ }
2069
+ const host = ts.createCompilerHost(options, true);
2070
+ const readFile = (file) => paths.get(import_node_path4.default.resolve(file)) ?? ts.sys.readFile(file);
2071
+ host.readFile = readFile;
2072
+ host.fileExists = (file) => paths.has(import_node_path4.default.resolve(file)) || ts.sys.fileExists(file);
2073
+ host.directoryExists = (dir) => directories.has(import_node_path4.default.resolve(dir)) || (ts.sys.directoryExists?.(dir) ?? false);
2074
+ host.realpath = (file) => paths.has(import_node_path4.default.resolve(file)) ? file : ts.sys.realpath?.(file) ?? file;
2075
+ host.getCurrentDirectory = () => root;
2076
+ host.getSourceFile = (file, languageVersion) => {
2077
+ const text = readFile(file);
2078
+ return text === void 0 ? void 0 : ts.createSourceFile(file, text, languageVersion, true);
2079
+ };
2080
+ const program = ts.createProgram(needsDisplay, options, host);
2081
+ const checker = program.getTypeChecker();
2082
+ const plainData = (symbol) => {
2083
+ if (!(symbol.flags & (ts.SymbolFlags.Interface | ts.SymbolFlags.TypeAlias)) || symbol.flags & (ts.SymbolFlags.Value | ts.SymbolFlags.Namespace)) return false;
2084
+ if (symbol.declarations?.some((d) => (ts.isInterfaceDeclaration(d) || ts.isTypeAliasDeclaration(d)) && d.typeParameters?.length)) return false;
2085
+ const type = checker.getDeclaredTypeOfSymbol(symbol);
2086
+ if (!(type.flags & ts.TypeFlags.Object) || type.getCallSignatures().length || type.getConstructSignatures().length || checker.isArrayType(type) || checker.isTupleType(type)) return false;
2087
+ const hasThis = (node) => ts.isThisTypeNode(node) || (ts.forEachChild(node, hasThis) ?? false);
2088
+ const visited = /* @__PURE__ */ new Set();
2089
+ const specialBase = (value) => {
2090
+ if (visited.has(value)) return false;
2091
+ visited.add(value);
2092
+ if (!(value.flags & ts.TypeFlags.Object)) return true;
2093
+ const object = value;
2094
+ const target = object.target ?? object;
2095
+ if ((object.objectFlags | target.objectFlags) & ts.ObjectFlags.Class) return true;
2096
+ if (value.symbol?.declarations?.some(hasThis)) return true;
2097
+ if (value.symbol?.declarations?.some((d) => ts.isInterfaceDeclaration(d) && d.heritageClauses?.some((clause) => clause.types.some((base2) => checker.getTypeAtLocation(base2).flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown | ts.TypeFlags.TypeParameter))))) return true;
2098
+ return !!(object.objectFlags & ts.ObjectFlags.Interface && checker.getBaseTypes(object)?.some(specialBase));
2099
+ };
2100
+ if (specialBase(type)) return false;
2101
+ const properties = type.getProperties();
2102
+ if (properties.length === 0) return false;
2103
+ return properties.every((property) => !property.name.startsWith("__@") && property.declarations?.every((d) => !hasThis(d) && !ts.isMethodSignature(d) && !ts.isMethodDeclaration(d) && !ts.isGetAccessorDeclaration(d) && !ts.isSetAccessorDeclaration(d) && !(ts.getCombinedModifierFlags(d) & (ts.ModifierFlags.Private | ts.ModifierFlags.Protected)) && !("name" in d && d.name && ts.isPrivateIdentifier(d.name))));
2104
+ };
2105
+ for (const file of needsDisplay) {
2106
+ const source = program.getSourceFile(file);
2107
+ const moduleSymbol = source && checker.getSymbolAtLocation(source);
2108
+ if (!source || !moduleSymbol) continue;
2109
+ const original = paths.get(file);
2110
+ const identifiers = /* @__PURE__ */ new Set();
2111
+ const collect = (node) => {
2112
+ if (ts.isIdentifier(node)) identifiers.add(node.text);
2113
+ ts.forEachChild(node, collect);
2114
+ };
2115
+ collect(source);
2116
+ const unique = (stem) => {
2117
+ let name = stem;
2118
+ for (let n = 2; identifiers.has(name); n++) name = `${stem}${n}`;
2119
+ identifiers.add(name);
2120
+ return name;
2121
+ };
2122
+ const views = [];
2123
+ for (const exported of checker.getExportsOfModule(moduleSymbol)) {
2124
+ const name = exported.name;
2125
+ if (name === "default" || !/^[$_\p{ID_Start}][$_\p{ID_Continue}]*$/u.test(name)) continue;
2126
+ const target = exported.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(exported) : exported;
2127
+ if (!plainData(target)) continue;
2128
+ let expression;
2129
+ for (const statement of source.statements) {
2130
+ if ((ts.isInterfaceDeclaration(statement) || ts.isTypeAliasDeclaration(statement)) && statement.name.text === name && checker.getSymbolAtLocation(statement.name) === target) {
2131
+ expression = name;
2132
+ break;
2133
+ }
2134
+ if (!ts.isExportDeclaration(statement)) continue;
2135
+ if (statement.attributes || statement.assertClause) continue;
2136
+ if (statement.exportClause && ts.isNamedExports(statement.exportClause)) {
2137
+ const member = statement.exportClause.elements.find((e) => e.name.text === name);
2138
+ if (member) {
2139
+ const local = member.propertyName ?? member.name;
2140
+ if (!ts.isIdentifier(local)) break;
2141
+ expression = statement.moduleSpecifier ? `import(${statement.moduleSpecifier.getText(source)}).${local.text}` : local.text;
2142
+ break;
2143
+ }
2144
+ } else if (!statement.exportClause && statement.moduleSpecifier) {
2145
+ const from = checker.getSymbolAtLocation(statement.moduleSpecifier);
2146
+ if (from && checker.getExportsOfModule(from).some((e) => e.name === name)) {
2147
+ expression = `import(${statement.moduleSpecifier.getText(source)}).${name}`;
2148
+ break;
2149
+ }
2150
+ }
2151
+ }
2152
+ if (!expression) continue;
2153
+ const docs = exported.getDocumentationComment(checker);
2154
+ const description = ts.displayPartsToString(docs.length ? docs : target.getDocumentationComment(checker));
2155
+ const tags = target.getJsDocTags(checker).map((tag) => `@${tag.name}${tag.text ? ` ${ts.displayPartsToString(tag.text)}` : ""}`);
2156
+ views.push({ name, expression, doc: [description, ...tags].filter(Boolean).join("\n").replace(/\*\//g, "* /") });
2157
+ }
2158
+ if (views.length === 0) continue;
2159
+ const names = new Set(views.map((view) => view.name));
2160
+ const edits = [];
2161
+ for (const statement of source.statements) {
2162
+ if (ts.isExportDeclaration(statement) && statement.exportClause && ts.isNamedExports(statement.exportClause)) {
2163
+ const remaining = statement.exportClause.elements.filter((e) => !names.has(e.name.text));
2164
+ if (remaining.length === statement.exportClause.elements.length) continue;
2165
+ edits.push(remaining.length ? {
2166
+ start: statement.exportClause.getStart(source),
2167
+ end: statement.exportClause.end,
2168
+ text: `{ ${remaining.map((e) => e.getText(source)).join(", ")} }`
2169
+ } : { start: statement.getStart(source), end: statement.end, text: "" });
2170
+ } else if ((ts.isInterfaceDeclaration(statement) || ts.isTypeAliasDeclaration(statement)) && names.has(statement.name.text) && !statement.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword)) {
2171
+ const modifier = statement.modifiers?.find((m) => m.kind === ts.SyntaxKind.ExportKeyword);
2172
+ if (modifier) edits.push({ start: modifier.getStart(source), end: modifier.end, text: "" });
2173
+ }
2174
+ }
2175
+ let output = original;
2176
+ for (const edit of edits.sort((a, b) => b.start - a.start)) output = output.slice(0, edit.start) + edit.text + output.slice(edit.end);
2177
+ const display = unique("__FgDataView");
2178
+ output += `
2179
+ // \u81EA\u52A8\u751F\u6210\u7684\u5B57\u6BB5\u89C6\u56FE\uFF1B\u539F\u5408\u540C\u53CA\u7EC4\u4EF6\u7B7E\u540D\u4FDD\u7559\uFF0C\u6D88\u8D39\u65B9\u65E0\u9700\u81EA\u884C\u6620\u5C04\u3002
2180
+ type ${display}<T> = { [K in keyof T]: T[K] } & {};
2181
+ `;
2182
+ for (const view of views.sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0)) {
2183
+ const alias = unique(`__FgData_${view.name}`);
2184
+ if (view.doc) output += `/**
2185
+ ${view.doc.split("\n").map((line) => ` * ${line}`).join("\n")}
2186
+ */
2187
+ `;
2188
+ output += `type ${alias} = ${display}<${view.expression}>;
2189
+ export type { ${alias} as ${view.name} };
2190
+ `;
2191
+ }
2192
+ files.set(import_node_path4.default.relative(base, file).split(import_node_path4.default.sep).join("/"), output);
2193
+ }
2194
+ }
2195
+
2044
2196
  // src/dts-generate.ts
2045
2197
  function resolveFromRoot(root, pkg) {
2046
- const req = (0, import_node_module3.createRequire)(import_node_path4.default.join(root, "package.json"));
2198
+ const req = (0, import_node_module3.createRequire)(import_node_path5.default.join(root, "package.json"));
2047
2199
  let resolved = null;
2048
2200
  for (const spec of [`${pkg}/package.json`, pkg]) {
2049
2201
  try {
@@ -2053,18 +2205,18 @@ function resolveFromRoot(root, pkg) {
2053
2205
  }
2054
2206
  }
2055
2207
  if (!resolved) return null;
2056
- let dir = import_node_path4.default.dirname(resolved);
2057
- for (let i = 0; i < 5 && !import_node_fs3.default.existsSync(import_node_path4.default.join(dir, "package.json")); i++) {
2058
- const parent = import_node_path4.default.dirname(dir);
2208
+ let dir = import_node_path5.default.dirname(resolved);
2209
+ for (let i = 0; i < 5 && !import_node_fs3.default.existsSync(import_node_path5.default.join(dir, "package.json")); i++) {
2210
+ const parent = import_node_path5.default.dirname(dir);
2059
2211
  if (parent === dir) return null;
2060
2212
  dir = parent;
2061
2213
  }
2062
- return import_node_fs3.default.existsSync(import_node_path4.default.join(dir, "package.json")) ? dir : null;
2214
+ return import_node_fs3.default.existsSync(import_node_path5.default.join(dir, "package.json")) ? dir : null;
2063
2215
  }
2064
2216
  function installHint(root, pkg) {
2065
2217
  const pkgManager = (() => {
2066
- if (import_node_fs3.default.existsSync(import_node_path4.default.join(root, "pnpm-lock.yaml"))) return "pnpm";
2067
- if (import_node_fs3.default.existsSync(import_node_path4.default.join(root, "yarn.lock"))) return "yarn";
2218
+ if (import_node_fs3.default.existsSync(import_node_path5.default.join(root, "pnpm-lock.yaml"))) return "pnpm";
2219
+ if (import_node_fs3.default.existsSync(import_node_path5.default.join(root, "yarn.lock"))) return "yarn";
2068
2220
  return "npm";
2069
2221
  })();
2070
2222
  const devFlag = pkgManager === "pnpm" ? "-D" : "--save-dev";
@@ -2117,7 +2269,7 @@ function computeStaticClosure(ts, entryFiles, resolver, root) {
2117
2269
  continue;
2118
2270
  }
2119
2271
  if (file.endsWith(".vue")) {
2120
- const req = (0, import_node_module3.createRequire)(import_node_path4.default.join(root, "package.json"));
2272
+ const req = (0, import_node_module3.createRequire)(import_node_path5.default.join(root, "package.json"));
2121
2273
  const { parse: parse2 } = req("vue/compiler-sfc");
2122
2274
  const { descriptor } = parse2(text);
2123
2275
  text = [descriptor.script?.content, descriptor.scriptSetup?.content].filter(Boolean).join("\n");
@@ -2139,16 +2291,16 @@ import ${JSON.stringify(descriptor.script.src)}`;
2139
2291
  const r = resolver(spec, file);
2140
2292
  let resolved = r && !r.fromNodeModules ? r.resolved : null;
2141
2293
  if (!resolved) {
2142
- const base = import_node_path4.default.resolve(import_node_path4.default.dirname(file), spec);
2143
- for (const c of [base, `${base}.vue`, `${base}.ts`, `${base}.tsx`, import_node_path4.default.join(base, "index.ts")]) {
2294
+ const base = import_node_path5.default.resolve(import_node_path5.default.dirname(file), spec);
2295
+ for (const c of [base, `${base}.vue`, `${base}.ts`, `${base}.tsx`, import_node_path5.default.join(base, "index.ts")]) {
2144
2296
  if (import_node_fs3.default.existsSync(c)) {
2145
2297
  resolved = c;
2146
2298
  break;
2147
2299
  }
2148
2300
  }
2149
2301
  }
2150
- if (resolved && !resolved.includes(`${import_node_path4.default.sep}node_modules${import_node_path4.default.sep}`)) {
2151
- queue.push(import_node_path4.default.resolve(resolved));
2302
+ if (resolved && !resolved.includes(`${import_node_path5.default.sep}node_modules${import_node_path5.default.sep}`)) {
2303
+ queue.push(import_node_path5.default.resolve(resolved));
2152
2304
  }
2153
2305
  }
2154
2306
  }
@@ -2159,7 +2311,7 @@ function parseErrorFiles(stdout, root) {
2159
2311
  const out = /* @__PURE__ */ new Set();
2160
2312
  for (const line of stdout.split("\n")) {
2161
2313
  const m = line.match(/^([^)(]+)\((\d+),(\d+)\): error TS/);
2162
- if (m) out.add(import_node_path4.default.resolve(root, m[1].trim()));
2314
+ if (m) out.add(import_node_path5.default.resolve(root, m[1].trim()));
2163
2315
  }
2164
2316
  return out;
2165
2317
  }
@@ -2168,13 +2320,13 @@ function resolveTypesEntries(root, baseCo, diagnostics) {
2168
2320
  if (raw === void 0) return [];
2169
2321
  baseCo.types = [];
2170
2322
  if (!Array.isArray(raw)) return [];
2171
- const req = (0, import_node_module3.createRequire)(import_node_path4.default.join(root, "package.json"));
2323
+ const req = (0, import_node_module3.createRequire)(import_node_path5.default.join(root, "package.json"));
2172
2324
  const out = [];
2173
2325
  for (const entry of raw) {
2174
2326
  if (typeof entry !== "string" || entry.length === 0) continue;
2175
- const direct = [import_node_path4.default.resolve(root, `${entry}.d.ts`), import_node_path4.default.resolve(root, entry, "index.d.ts"), import_node_path4.default.resolve(root, "node_modules", `${entry}.d.ts`), import_node_path4.default.resolve(root, "node_modules", entry, "index.d.ts"), import_node_path4.default.resolve(root, "node_modules/@types", entry, "index.d.ts")];
2327
+ const direct = [import_node_path5.default.resolve(root, `${entry}.d.ts`), import_node_path5.default.resolve(root, entry, "index.d.ts"), import_node_path5.default.resolve(root, "node_modules", `${entry}.d.ts`), import_node_path5.default.resolve(root, "node_modules", entry, "index.d.ts"), import_node_path5.default.resolve(root, "node_modules/@types", entry, "index.d.ts")];
2176
2328
  let hit = direct.find((c) => import_node_fs3.default.existsSync(c));
2177
- if (!hit && !entry.startsWith(".") && !import_node_path4.default.isAbsolute(entry)) {
2329
+ if (!hit && !entry.startsWith(".") && !import_node_path5.default.isAbsolute(entry)) {
2178
2330
  try {
2179
2331
  const r = req.resolve(entry);
2180
2332
  for (const c of [r.replace(/\.js$/, ".d.ts"), `${r}.d.ts`, r]) {
@@ -2202,27 +2354,27 @@ function hasVueFilesUnderSources(root) {
2202
2354
  }
2203
2355
  for (const e of entries) {
2204
2356
  if (e.name === "node_modules" || e.name === ".git" || e.name === "dist") continue;
2205
- const p = import_node_path4.default.join(dir, e.name);
2357
+ const p = import_node_path5.default.join(dir, e.name);
2206
2358
  budget.left -= 1;
2207
2359
  if (e.isFile() && e.name.endsWith(".vue")) return true;
2208
2360
  if (e.isDirectory() && scan(p, budget)) return true;
2209
2361
  }
2210
2362
  return false;
2211
2363
  };
2212
- const srcDir = import_node_path4.default.join(root, "src");
2364
+ const srcDir = import_node_path5.default.join(root, "src");
2213
2365
  return scan(import_node_fs3.default.existsSync(srcDir) ? srcDir : root, { left: 2e3 });
2214
2366
  }
2215
2367
  function commonDirOf(files) {
2216
2368
  if (files.length === 0) return "";
2217
- let dir = import_node_path4.default.dirname(files[0]);
2369
+ let dir = import_node_path5.default.dirname(files[0]);
2218
2370
  for (const f of files) {
2219
- const rel = import_node_path4.default.relative(dir, f);
2371
+ const rel = import_node_path5.default.relative(dir, f);
2220
2372
  if (rel.startsWith("..")) {
2221
- const parts = import_node_path4.default.dirname(f).split(import_node_path4.default.sep);
2222
- const cur = dir.split(import_node_path4.default.sep);
2373
+ const parts = import_node_path5.default.dirname(f).split(import_node_path5.default.sep);
2374
+ const cur = dir.split(import_node_path5.default.sep);
2223
2375
  let i = 0;
2224
2376
  while (i < parts.length && i < cur.length && parts[i] === cur[i]) i++;
2225
- dir = parts.slice(0, i).join(import_node_path4.default.sep) || import_node_path4.default.sep;
2377
+ dir = parts.slice(0, i).join(import_node_path5.default.sep) || import_node_path5.default.sep;
2226
2378
  }
2227
2379
  }
2228
2380
  return dir;
@@ -2263,12 +2415,12 @@ function loadTsContext(root, ts, diagnostics) {
2263
2415
  diagnostics.push(`tsconfig \u89E3\u6790\u5931\u8D25\uFF08${tsconfigFile}\uFF09\uFF1A${ts.flattenDiagnosticMessageText(raw.error.messageText, " ")}`);
2264
2416
  return null;
2265
2417
  }
2266
- const parsed = ts.parseJsonConfigFileContent(raw.config, ts.sys, import_node_path4.default.dirname(tsconfigFile), void 0, void 0, void 0, [
2418
+ const parsed = ts.parseJsonConfigFileContent(raw.config, ts.sys, import_node_path5.default.dirname(tsconfigFile), void 0, void 0, void 0, [
2267
2419
  { extension: ".vue", isMixedContent: true, scriptKind: ts.ScriptKind.Deferred }
2268
2420
  ]);
2269
2421
  const co = { ...parsed.options };
2270
- if (typeof co.baseUrl === "string" && !import_node_path4.default.isAbsolute(co.baseUrl)) {
2271
- co.baseUrl = import_node_path4.default.resolve(import_node_path4.default.dirname(tsconfigFile), co.baseUrl);
2422
+ if (typeof co.baseUrl === "string" && !import_node_path5.default.isAbsolute(co.baseUrl)) {
2423
+ co.baseUrl = import_node_path5.default.resolve(import_node_path5.default.dirname(tsconfigFile), co.baseUrl);
2272
2424
  }
2273
2425
  if (parsed.errors.length > 0) {
2274
2426
  const fatal = parsed.errors.filter((e) => e.category === ts.DiagnosticCategory.Error);
@@ -2284,7 +2436,7 @@ function loadTsContext(root, ts, diagnostics) {
2284
2436
  compilerOptions: co,
2285
2437
  rawOptions: raw.config.compilerOptions ?? {},
2286
2438
  projectFiles: parsed.fileNames.filter((f) => !f.endsWith(".d.ts")),
2287
- ambientInputs: parsed.fileNames.filter((f) => f.endsWith(".d.ts") && !f.includes(`${import_node_path4.default.sep}node_modules${import_node_path4.default.sep}`)),
2439
+ ambientInputs: parsed.fileNames.filter((f) => f.endsWith(".d.ts") && !f.includes(`${import_node_path5.default.sep}node_modules${import_node_path5.default.sep}`)),
2288
2440
  tsconfigFile
2289
2441
  };
2290
2442
  }
@@ -2295,7 +2447,7 @@ function makeResolver(ts, co) {
2295
2447
  let resolved = r.resolvedModule?.resolvedFileName;
2296
2448
  if (resolved?.endsWith(".vue.ts") && ts.sys.fileExists(resolved.slice(0, -3))) resolved = resolved.slice(0, -3);
2297
2449
  if (!resolved) return null;
2298
- return { resolved, fromNodeModules: resolved.includes(`${import_node_path4.default.sep}node_modules${import_node_path4.default.sep}`) };
2450
+ return { resolved, fromNodeModules: resolved.includes(`${import_node_path5.default.sep}node_modules${import_node_path5.default.sep}`) };
2299
2451
  };
2300
2452
  }
2301
2453
  async function generateTypesBundle(input) {
@@ -2308,7 +2460,7 @@ async function generateTypesBundle(input) {
2308
2460
  if (!tsPkgDir) {
2309
2461
  return { ok: false, diagnostics: [`\u63D0\u4F9B\u65B9\u5DE5\u7A0B\u672A\u5B89\u88C5 typescript\uFF08\u58F0\u660E\u751F\u6210\u5FC5\u9700\uFF09\u3002${installHint(root, "typescript")}`] };
2310
2462
  }
2311
- const tsReq = (0, import_node_module3.createRequire)(import_node_path4.default.join(tsPkgDir, "package.json"));
2463
+ const tsReq = (0, import_node_module3.createRequire)(import_node_path5.default.join(tsPkgDir, "package.json"));
2312
2464
  const ts = tsReq("typescript");
2313
2465
  const ctx = loadTsContext(root, ts, diagnostics);
2314
2466
  if (!ctx) return { ok: false, diagnostics };
@@ -2316,9 +2468,9 @@ async function generateTypesBundle(input) {
2316
2468
  const entryMap = /* @__PURE__ */ new Map();
2317
2469
  for (const expose of exposes) {
2318
2470
  const raw = expose.import.replace(/^\.?\//, "");
2319
- let abs = import_node_path4.default.resolve(root, raw);
2471
+ let abs = import_node_path5.default.resolve(root, raw);
2320
2472
  if (!import_node_fs3.default.existsSync(abs)) {
2321
- const viaResolver = resolver(expose.import, import_node_path4.default.join(root, "package.json"));
2473
+ const viaResolver = resolver(expose.import, import_node_path5.default.join(root, "package.json"));
2322
2474
  if (viaResolver && !viaResolver.fromNodeModules) abs = viaResolver.resolved;
2323
2475
  }
2324
2476
  abs = abs.replace(/\.js$/, ".ts");
@@ -2350,17 +2502,17 @@ async function generateTypesBundle(input) {
2350
2502
  };
2351
2503
  }
2352
2504
  tool = "vue-tsc";
2353
- const vueTscPkg = JSON.parse(import_node_fs3.default.readFileSync(import_node_path4.default.join(vueTscDir, "package.json"), "utf8"));
2505
+ const vueTscPkg = JSON.parse(import_node_fs3.default.readFileSync(import_node_path5.default.join(vueTscDir, "package.json"), "utf8"));
2354
2506
  const binRel = vueTscPkg.bin?.["vue-tsc"] ?? vueTscPkg.bin?.["vue-tsc.js"] ?? "bin/vue-tsc.js";
2355
- const binPath = import_node_path4.default.resolve(vueTscDir, binRel);
2507
+ const binPath = import_node_path5.default.resolve(vueTscDir, binRel);
2356
2508
  const scopedVueProgram = /^1\./.test(vueTscPkg.version);
2357
2509
  if (!import_node_fs3.default.existsSync(binPath)) {
2358
2510
  return { ok: false, diagnostics: [`vue-tsc \u5165\u53E3\u4E0D\u5B58\u5728\uFF08${binPath}\uFF09\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5 vue-tsc\u3002`] };
2359
2511
  }
2360
2512
  const cacheDir = input.incrementalDir;
2361
2513
  if (cacheDir) import_node_fs3.default.mkdirSync(cacheDir, { recursive: true });
2362
- const tmpCfg = import_node_path4.default.join(root, `.fulgurjs-types-tsconfig-${cacheDir ? import_node_path4.default.basename(cacheDir) : `${process.pid}-${import_node_crypto.default.randomUUID()}`}.json`);
2363
- const outDir = cacheDir ? import_node_path4.default.join(cacheDir, "emit") : import_node_fs3.default.mkdtempSync(import_node_path4.default.join(root, "node_modules", ".fulgurjs-types-emit-"));
2514
+ const tmpCfg = import_node_path5.default.join(root, `.fulgurjs-types-tsconfig-${cacheDir ? import_node_path5.default.basename(cacheDir) : `${process.pid}-${import_node_crypto.default.randomUUID()}`}.json`);
2515
+ const outDir = cacheDir ? import_node_path5.default.join(cacheDir, "emit") : import_node_fs3.default.mkdtempSync(import_node_path5.default.join(root, "node_modules", ".fulgurjs-types-emit-"));
2364
2516
  const clearOutput = () => {
2365
2517
  if (!cacheDir) import_node_fs3.default.rmSync(outDir, { recursive: true, force: true });
2366
2518
  };
@@ -2387,14 +2539,14 @@ async function generateTypesBundle(input) {
2387
2539
  sourceMap: false,
2388
2540
  outDir,
2389
2541
  rootDir,
2390
- ...cacheDir && !scopedVueProgram ? { incremental: true, tsBuildInfoFile: import_node_path4.default.join(cacheDir, "state.tsbuildinfo") } : {}
2542
+ ...cacheDir && !scopedVueProgram ? { incremental: true, tsBuildInfoFile: import_node_path5.default.join(cacheDir, "state.tsbuildinfo") } : {}
2391
2543
  },
2392
2544
  // 显式 types 是声明程序的根文件,不能再受工程 exclude: ["node_modules"] 过滤。
2393
2545
  // include 仍受继承的 exclude 约束;files 保留 vite/client 等已解析的全局声明。
2394
- files: resolvedTypeFiles.map((f) => import_node_path4.default.relative(root, f)),
2546
+ files: resolvedTypeFiles.map((f) => import_node_path5.default.relative(root, f)),
2395
2547
  include: [
2396
- ...entryFiles.map((f) => import_node_path4.default.relative(root, f)),
2397
- ...ctx.ambientInputs.map((f) => import_node_path4.default.relative(root, f))
2548
+ ...entryFiles.map((f) => import_node_path5.default.relative(root, f)),
2549
+ ...ctx.ambientInputs.map((f) => import_node_path5.default.relative(root, f))
2398
2550
  ]
2399
2551
  }));
2400
2552
  if (process.env.FG_DUMP_TSCFG) import_node_fs3.default.writeFileSync(process.env.FG_DUMP_TSCFG, import_node_fs3.default.readFileSync(tmpCfg, "utf8"));
@@ -2427,7 +2579,7 @@ async function generateTypesBundle(input) {
2427
2579
  signal?.addEventListener("abort", abort, { once: true });
2428
2580
  if (signal?.aborted) abort();
2429
2581
  });
2430
- const heapMarker = cacheDir ? import_node_path4.default.join(cacheDir, "raised-heap") : void 0;
2582
+ const heapMarker = cacheDir ? import_node_path5.default.join(cacheDir, "raised-heap") : void 0;
2431
2583
  const raisedArgs = [`--max-old-space-size=${process.env.FG_DTS_MAX_OLD_SPACE ?? "8192"}`];
2432
2584
  const initialArgs = heapMarker && import_node_fs3.default.existsSync(heapMarker) ? raisedArgs : [];
2433
2585
  let { err, stdout, stderr } = await attempt(initialArgs);
@@ -2504,7 +2656,7 @@ ${tail}`);
2504
2656
  collectEmitted(ts, outDir, rootDir, emitted, closure);
2505
2657
  clearOutput();
2506
2658
  } else {
2507
- const outDir = import_node_fs3.default.mkdtempSync(import_node_path4.default.join(root, "node_modules", ".fulgurjs-types-emit-"));
2659
+ const outDir = import_node_fs3.default.mkdtempSync(import_node_path5.default.join(root, "node_modules", ".fulgurjs-types-emit-"));
2508
2660
  const program = ts.createProgram([...entryFiles, ...ctx.ambientInputs, ...resolveTypesEntries(root, ctx.rawOptions, [])], {
2509
2661
  ...ctx.compilerOptions,
2510
2662
  noEmit: false,
@@ -2522,13 +2674,13 @@ ${tail}`);
2522
2674
  ...program.getOptionsDiagnostics(),
2523
2675
  ...program.getSemanticDiagnostics(),
2524
2676
  ...program.getDeclarationDiagnostics()
2525
- ].filter((d) => d.category === ts.DiagnosticCategory.Error).filter((d) => !d.file || closure.has(import_node_path4.default.resolve(d.file.fileName)));
2677
+ ].filter((d) => d.category === ts.DiagnosticCategory.Error).filter((d) => !d.file || closure.has(import_node_path5.default.resolve(d.file.fileName)));
2526
2678
  if (errs.length > 0) {
2527
2679
  import_node_fs3.default.rmSync(outDir, { recursive: true, force: true });
2528
2680
  diagnostics.push(
2529
2681
  `\u58F0\u660E\u751F\u6210\u5931\u8D25\uFF1A\u66B4\u9732\u95ED\u5305\u5185\u5B58\u5728 ${errs.length} \u4E2A\u7F16\u8BD1\u9519\u8BEF\u2014\u2014\u7C7B\u578B\u8D44\u6E90\u672A\u4EA7\u51FA\uFF08\u4FEE\u590D\u540E\u91CD\u65B0\u6784\u5EFA/\u91CD\u542F dev\uFF09\u3002\u524D\u82E5\u5E72\u6761\uFF1A`,
2530
2682
  ...errs.slice(0, 20).map((d) => {
2531
- const f = d.file ? import_node_path4.default.relative(root, d.file.fileName) : "?";
2683
+ const f = d.file ? import_node_path5.default.relative(root, d.file.fileName) : "?";
2532
2684
  const pos = d.file ? d.file.getLineAndCharacterOfPosition(d.start ?? 0) : { line: 0 };
2533
2685
  return ` ${f}:${pos.line + 1} TS${d.code}: ${ts.flattenDiagnosticMessageText(d.messageText, " ")}`;
2534
2686
  })
@@ -2536,11 +2688,11 @@ ${tail}`);
2536
2688
  return { ok: false, diagnostics };
2537
2689
  }
2538
2690
  for (const source of program.getSourceFiles()) {
2539
- if (source.isDeclarationFile || source.fileName.endsWith(".json") || !closure.has(import_node_path4.default.resolve(source.fileName))) continue;
2691
+ if (source.isDeclarationFile || source.fileName.endsWith(".json") || !closure.has(import_node_path5.default.resolve(source.fileName))) continue;
2540
2692
  const emitResult = program.emit(source, void 0, void 0, true);
2541
2693
  if (emitResult.emitSkipped) {
2542
2694
  import_node_fs3.default.rmSync(outDir, { recursive: true, force: true });
2543
- return { ok: false, diagnostics: [`TypeScript \u58F0\u660E emit \u5931\u8D25\uFF08emitSkipped\uFF09\uFF1A${import_node_path4.default.relative(root, source.fileName)}\u3002\u8BF7\u68C0\u67E5 tsconfig \u7F16\u8BD1\u9009\u9879\u3002`] };
2695
+ return { ok: false, diagnostics: [`TypeScript \u58F0\u660E emit \u5931\u8D25\uFF08emitSkipped\uFF09\uFF1A${import_node_path5.default.relative(root, source.fileName)}\u3002\u8BF7\u68C0\u67E5 tsconfig \u7F16\u8BD1\u9009\u9879\u3002`] };
2544
2696
  }
2545
2697
  }
2546
2698
  collectEmitted(ts, outDir, rootDir, emitted, closure);
@@ -2586,7 +2738,7 @@ export default value;
2586
2738
  const externals = /* @__PURE__ */ new Set();
2587
2739
  const srcToRel = /* @__PURE__ */ new Map();
2588
2740
  for (const srcAbs of emitted.keys()) {
2589
- const rel = import_node_path4.default.relative(rootDir, srcAbs).split(import_node_path4.default.sep).join("/");
2741
+ const rel = import_node_path5.default.relative(rootDir, srcAbs).split(import_node_path5.default.sep).join("/");
2590
2742
  const declRel = rel.endsWith(".d.ts") ? `files/${rel}` : rel.endsWith(".vue") ? `files/${rel}.d.ts` : `files/${rel.replace(/\.(mts|cts|ts|tsx|jsx|js)$/, "")}.d.ts`;
2591
2743
  srcToRel.set(srcAbs, declRel);
2592
2744
  }
@@ -2598,7 +2750,7 @@ export default value;
2598
2750
  if (reachable.has(srcAbs)) continue;
2599
2751
  const text = emitted.get(srcAbs);
2600
2752
  if (text === void 0) {
2601
- diagnostics.push(`\u516C\u5F00\u58F0\u660E\u4F9D\u8D56\u672A\u4EA7\u51FA\uFF1A${import_node_path4.default.relative(root, srcAbs)}\u3002`);
2753
+ diagnostics.push(`\u516C\u5F00\u58F0\u660E\u4F9D\u8D56\u672A\u4EA7\u51FA\uFF1A${import_node_path5.default.relative(root, srcAbs)}\u3002`);
2602
2754
  return { ok: false, diagnostics };
2603
2755
  }
2604
2756
  const rewritten = rewriteSpecifiers(
@@ -2623,11 +2775,10 @@ export default value;
2623
2775
  for (const [srcAbs, text] of reachable) {
2624
2776
  const rel = srcToRel.get(srcAbs);
2625
2777
  if (text.includes(root)) {
2626
- diagnostics.push(`\u58F0\u660E\u6587\u4EF6\u5305\u542B\u672C\u673A\u7EDD\u5BF9\u8DEF\u5F84\uFF08${import_node_path4.default.relative(root, srcAbs)}\uFF09\uFF0C\u5DF2\u62D2\u7EDD\u4EA7\u51FA\u3002\u8BF7\u68C0\u67E5\u8BE5\u6587\u4EF6\u7684\u7C7B\u578B\u662F\u5426\u5F15\u7528\u4E86\u5B57\u9762\u8DEF\u5F84\u3002`);
2778
+ diagnostics.push(`\u58F0\u660E\u6587\u4EF6\u5305\u542B\u672C\u673A\u7EDD\u5BF9\u8DEF\u5F84\uFF08${import_node_path5.default.relative(root, srcAbs)}\uFF09\uFF0C\u5DF2\u62D2\u7EDD\u4EA7\u51FA\u3002\u8BF7\u68C0\u67E5\u8BE5\u6587\u4EF6\u7684\u7C7B\u578B\u662F\u5426\u5F15\u7528\u4E86\u5B57\u9762\u8DEF\u5F84\u3002`);
2627
2779
  leaked = true;
2628
2780
  }
2629
2781
  files.set(rel, text);
2630
- filesDigest[rel] = import_node_crypto.default.createHash("sha256").update(text, "utf8").digest("hex");
2631
2782
  }
2632
2783
  if (leaked) return { ok: false, diagnostics };
2633
2784
  const exposesMap = {};
@@ -2639,6 +2790,13 @@ export default value;
2639
2790
  }
2640
2791
  exposesMap[name] = { declaration: declRel };
2641
2792
  }
2793
+ displayPublicDataTypes(ts, files, Object.values(exposesMap).map((entry) => entry.declaration), root, ctx.compilerOptions);
2794
+ for (const [rel, text] of files) {
2795
+ if (text.includes(root)) {
2796
+ return { ok: false, diagnostics: [...diagnostics, `\u58F0\u660E\u6587\u4EF6\u5305\u542B\u672C\u673A\u7EDD\u5BF9\u8DEF\u5F84\uFF08${rel}\uFF09\uFF0C\u5DF2\u62D2\u7EDD\u4EA7\u51FA\u3002`] };
2797
+ }
2798
+ filesDigest[rel] = import_node_crypto.default.createHash("sha256").update(text, "utf8").digest("hex");
2799
+ }
2642
2800
  const index = {
2643
2801
  schemaVersion: TYPES_SCHEMA_VERSION,
2644
2802
  generator: "@fulgurjs/federation",
@@ -2655,18 +2813,18 @@ export default value;
2655
2813
  }
2656
2814
  function collectEmitted(ts, outDir, rootDir, out, closure) {
2657
2815
  const walk = (dir) => import_node_fs3.default.readdirSync(dir, { withFileTypes: true }).flatMap((d) => {
2658
- const p = import_node_path4.default.join(dir, d.name);
2816
+ const p = import_node_path5.default.join(dir, d.name);
2659
2817
  return d.isDirectory() ? walk(p) : [p];
2660
2818
  });
2661
2819
  if (!import_node_fs3.default.existsSync(outDir)) return;
2662
2820
  for (const file of walk(outDir)) {
2663
2821
  if (!file.endsWith(".d.ts")) continue;
2664
- const rel = import_node_path4.default.relative(outDir, file);
2822
+ const rel = import_node_path5.default.relative(outDir, file);
2665
2823
  const srcRel = rel.endsWith(".vue.d.ts") ? rel.replace(/\.d\.ts$/, "") : rel.replace(/\.d\.ts$/, ".ts");
2666
- let srcAbs = import_node_path4.default.join(rootDir, srcRel);
2824
+ let srcAbs = import_node_path5.default.join(rootDir, srcRel);
2667
2825
  if (!out.has(srcAbs) && !import_node_fs3.default.existsSync(srcAbs)) {
2668
2826
  for (const ext of [".tsx", ".jsx", ".mts", ".cts", ".js"]) {
2669
- const candidate = import_node_path4.default.join(rootDir, rel.replace(/\.d\.ts$/, ext));
2827
+ const candidate = import_node_path5.default.join(rootDir, rel.replace(/\.d\.ts$/, ext));
2670
2828
  if (import_node_fs3.default.existsSync(candidate)) {
2671
2829
  srcAbs = candidate;
2672
2830
  break;
@@ -2684,7 +2842,7 @@ function rewriteSpecifiers(ts, text, srcAbs, srcToRel, resolver, externals, root
2684
2842
  const fail = (spec) => {
2685
2843
  failed = true;
2686
2844
  diagnostics.push(
2687
- `\u58F0\u660E\u4F9D\u8D56\u4E0D\u5B8C\u6574\uFF1A${import_node_path4.default.relative(root, srcAbs)} \u7684\u5BFC\u5165 "${spec}" \u65E0\u6CD5\u89E3\u6790\u5230\u5DE5\u7A0B\u5185\u6587\u4EF6\u3002\u8BF7\u68C0\u67E5 tsconfig paths/include \u662F\u5426\u8986\u76D6\u8BE5\u4F9D\u8D56\u3002`
2845
+ `\u58F0\u660E\u4F9D\u8D56\u4E0D\u5B8C\u6574\uFF1A${import_node_path5.default.relative(root, srcAbs)} \u7684\u5BFC\u5165 "${spec}" \u65E0\u6CD5\u89E3\u6790\u5230\u5DE5\u7A0B\u5185\u6587\u4EF6\u3002\u8BF7\u68C0\u67E5 tsconfig paths/include \u662F\u5426\u8986\u76D6\u8BE5\u4F9D\u8D56\u3002`
2688
2846
  );
2689
2847
  return null;
2690
2848
  };
@@ -2715,9 +2873,9 @@ function rewriteSpecifiers(ts, text, srcAbs, srcToRel, resolver, externals, root
2715
2873
  return target;
2716
2874
  };
2717
2875
  const rewriteTo = (targetRel) => {
2718
- const fromDir = import_node_path4.default.posix.dirname(declRel);
2876
+ const fromDir = import_node_path5.default.posix.dirname(declRel);
2719
2877
  const toNoExt = targetRel.replace(/\.d\.ts$/, "");
2720
- let rel = import_node_path4.default.posix.relative(fromDir, toNoExt);
2878
+ let rel = import_node_path5.default.posix.relative(fromDir, toNoExt);
2721
2879
  if (!rel.startsWith(".")) rel = `./${rel}`;
2722
2880
  return rel;
2723
2881
  };
@@ -2803,12 +2961,12 @@ function rewriteSpecifiers(ts, text, srcAbs, srcToRel, resolver, externals, root
2803
2961
 
2804
2962
  // src/dts-serve.ts
2805
2963
  function isTypesInputChange(root, id, outputDir) {
2806
- const relative = import_node_path5.default.relative(root, id);
2807
- if (relative === ".." || relative.startsWith(`..${import_node_path5.default.sep}`) || import_node_path5.default.isAbsolute(relative)) return false;
2808
- if (relative.split(import_node_path5.default.sep).some((part) => part === "node_modules" || part === ".vite")) return false;
2809
- if (import_node_path5.default.basename(id).startsWith(".fulgurjs-types-tsconfig-")) return false;
2810
- const outputRelative = import_node_path5.default.relative(outputDir, id);
2811
- if (!(outputRelative.startsWith(`..${import_node_path5.default.sep}`) || import_node_path5.default.isAbsolute(outputRelative))) return false;
2964
+ const relative = import_node_path6.default.relative(root, id);
2965
+ if (relative === ".." || relative.startsWith(`..${import_node_path6.default.sep}`) || import_node_path6.default.isAbsolute(relative)) return false;
2966
+ if (relative.split(import_node_path6.default.sep).some((part) => part === "node_modules" || part === ".vite")) return false;
2967
+ if (import_node_path6.default.basename(id).startsWith(".fulgurjs-types-tsconfig-")) return false;
2968
+ const outputRelative = import_node_path6.default.relative(outputDir, id);
2969
+ if (!(outputRelative.startsWith(`..${import_node_path6.default.sep}`) || import_node_path6.default.isAbsolute(outputRelative))) return false;
2812
2970
  return /\.(?:[cm]?[jt]sx?|vue|json)$/i.test(id);
2813
2971
  }
2814
2972
  function createDevTypesServer(options, hooks = {}) {
@@ -2832,9 +2990,9 @@ function createDevTypesServer(options, hooks = {}) {
2832
2990
  let result;
2833
2991
  try {
2834
2992
  if (!incrementalDir) {
2835
- const cacheRoot = import_node_path5.default.join(options.root, "node_modules");
2993
+ const cacheRoot = import_node_path6.default.join(options.root, "node_modules");
2836
2994
  import_node_fs4.default.mkdirSync(cacheRoot, { recursive: true });
2837
- incrementalDir = import_node_fs4.default.mkdtempSync(import_node_path5.default.join(cacheRoot, ".fulgurjs-types-cache-"));
2995
+ incrementalDir = import_node_fs4.default.mkdtempSync(import_node_path6.default.join(cacheRoot, ".fulgurjs-types-cache-"));
2838
2996
  }
2839
2997
  result = await generateTypesBundle({
2840
2998
  root: options.root,
@@ -2914,7 +3072,7 @@ ${key}`);
2914
3072
 
2915
3073
  // src/dts-sync.ts
2916
3074
  var import_node_fs6 = __toESM(require("fs"), 1);
2917
- var import_node_path7 = __toESM(require("path"), 1);
3075
+ var import_node_path8 = __toESM(require("path"), 1);
2918
3076
  var import_node_crypto2 = __toESM(require("crypto"), 1);
2919
3077
 
2920
3078
  // src/dts-ambient.ts
@@ -3075,7 +3233,7 @@ function stripAmbientModifiers(text) {
3075
3233
 
3076
3234
  // src/dts-discovery.ts
3077
3235
  var import_node_fs5 = __toESM(require("fs"), 1);
3078
- var import_node_path6 = __toESM(require("path"), 1);
3236
+ var import_node_path7 = __toESM(require("path"), 1);
3079
3237
  function stripJsoncForConfig(text) {
3080
3238
  let out = "";
3081
3239
  let i = 0;
@@ -3139,24 +3297,24 @@ function effectiveCfg(cfg, depth = 0) {
3139
3297
  const parentFile = resolveConfigFile(parent, cfg.file);
3140
3298
  if (!parentFile) continue;
3141
3299
  const parentCfg = effectiveCfg(readCfg(parentFile) ?? { file: parentFile }, depth + 1);
3142
- const dirOf = (f, base) => import_node_path6.default.resolve(import_node_path6.default.dirname(base), f);
3300
+ const dirOf = (f, base) => import_node_path7.default.resolve(import_node_path7.default.dirname(base), f);
3143
3301
  if (parentCfg.include && !cfg.include) {
3144
- merged.include = parentCfg.include.map((p) => import_node_path6.default.relative(import_node_path6.default.dirname(cfg.file), dirOf(p, parentFile)) || ".");
3302
+ merged.include = parentCfg.include.map((p) => import_node_path7.default.relative(import_node_path7.default.dirname(cfg.file), dirOf(p, parentFile)) || ".");
3145
3303
  }
3146
3304
  if (parentCfg.files && !cfg.files) {
3147
- merged.files = parentCfg.files.map((p) => import_node_path6.default.relative(import_node_path6.default.dirname(cfg.file), dirOf(p, parentFile)));
3305
+ merged.files = parentCfg.files.map((p) => import_node_path7.default.relative(import_node_path7.default.dirname(cfg.file), dirOf(p, parentFile)));
3148
3306
  }
3149
3307
  if (parentCfg.exclude && !cfg.exclude) {
3150
- merged.exclude = parentCfg.exclude.map((p) => import_node_path6.default.relative(import_node_path6.default.dirname(cfg.file), dirOf(p, parentFile)));
3308
+ merged.exclude = parentCfg.exclude.map((p) => import_node_path7.default.relative(import_node_path7.default.dirname(cfg.file), dirOf(p, parentFile)));
3151
3309
  }
3152
3310
  }
3153
3311
  return merged;
3154
3312
  }
3155
3313
  function resolveConfigFile(value, declaringFile) {
3156
- let candidate = import_node_path6.default.resolve(import_node_path6.default.dirname(declaringFile), value);
3314
+ let candidate = import_node_path7.default.resolve(import_node_path7.default.dirname(declaringFile), value);
3157
3315
  if (!candidate.endsWith(".json")) candidate += ".json";
3158
3316
  if (import_node_fs5.default.existsSync(candidate)) return candidate;
3159
- const asDir = import_node_path6.default.join(candidate, "tsconfig.json");
3317
+ const asDir = import_node_path7.default.join(candidate, "tsconfig.json");
3160
3318
  return import_node_fs5.default.existsSync(asDir) ? asDir : null;
3161
3319
  }
3162
3320
  function patternCoversDir(pattern, target, cfgDir) {
@@ -3167,15 +3325,15 @@ function patternCoversDir(pattern, target, cfgDir) {
3167
3325
  if (norm.includes("**")) base = norm.slice(0, norm.indexOf("**")).replace(/\/+$/, "");
3168
3326
  else if (norm.endsWith("/*")) base = norm.slice(0, -2);
3169
3327
  else base = norm.replace(/\/+$/, "");
3170
- const abs = base === "" || base === "." ? cfgDir : import_node_path6.default.resolve(cfgDir, base);
3171
- return target === abs || target.startsWith(abs + import_node_path6.default.sep);
3328
+ const abs = base === "" || base === "." ? cfgDir : import_node_path7.default.resolve(cfgDir, base);
3329
+ return target === abs || target.startsWith(abs + import_node_path7.default.sep);
3172
3330
  }
3173
3331
  function checkTypesDiscovery(root, typesRoot) {
3174
- const relTypes = import_node_path6.default.relative(root, typesRoot) || ".";
3332
+ const relTypes = import_node_path7.default.relative(root, typesRoot) || ".";
3175
3333
  const configs = [];
3176
- let primary = import_node_path6.default.join(root, "tsconfig.json");
3334
+ let primary = import_node_path7.default.join(root, "tsconfig.json");
3177
3335
  if (!import_node_fs5.default.existsSync(primary)) {
3178
- const candidates = import_node_fs5.default.existsSync(root) ? import_node_fs5.default.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f)).map((f) => import_node_path6.default.join(root, f)) : [];
3336
+ const candidates = import_node_fs5.default.existsSync(root) ? import_node_fs5.default.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f)).map((f) => import_node_path7.default.join(root, f)) : [];
3179
3337
  if (candidates.length === 0) {
3180
3338
  return {
3181
3339
  covered: false,
@@ -3187,7 +3345,7 @@ function checkTypesDiscovery(root, typesRoot) {
3187
3345
  if (candidates.length > 1) {
3188
3346
  let covered = false;
3189
3347
  for (const file of candidates) {
3190
- configs.push(import_node_path6.default.relative(root, file));
3348
+ configs.push(import_node_path7.default.relative(root, file));
3191
3349
  if (configCovers(file, typesRoot)) covered = true;
3192
3350
  }
3193
3351
  if (covered) return { covered: true, configs, fixHint: null };
@@ -3198,34 +3356,34 @@ function checkTypesDiscovery(root, typesRoot) {
3198
3356
  };
3199
3357
  }
3200
3358
  }
3201
- configs.push(import_node_path6.default.relative(root, primary));
3359
+ configs.push(import_node_path7.default.relative(root, primary));
3202
3360
  if (configCovers(primary, typesRoot)) return { covered: true, configs, fixHint: null };
3203
3361
  return {
3204
3362
  covered: false,
3205
3363
  configs,
3206
- fixHint: `TYP-006 \u7C7B\u578B\u76EE\u5F55 ${relTypes} \u672A\u88AB ${import_node_path6.default.relative(root, primary)} \u7684 include/files \u8986\u76D6\uFF08exclude \u6216\u4E25\u683C files \u767D\u540D\u5355\u90FD\u4F1A\u8BA9\u751F\u6210\u58F0\u660E\u5BF9 IDE/tsc \u4E0D\u53EF\u89C1\uFF09\u3002\u6700\u5C0F\u4FEE\u6CD5\uFF1Ainclude \u52A0\u5165 "${relTypes}/**/*.d.ts"\uFF0C\u6216\u79FB\u9664\u5BF9\u5B83\u7684 exclude/files \u9650\u5236\u3002`
3364
+ fixHint: `TYP-006 \u7C7B\u578B\u76EE\u5F55 ${relTypes} \u672A\u88AB ${import_node_path7.default.relative(root, primary)} \u7684 include/files \u8986\u76D6\uFF08exclude \u6216\u4E25\u683C files \u767D\u540D\u5355\u90FD\u4F1A\u8BA9\u751F\u6210\u58F0\u660E\u5BF9 IDE/tsc \u4E0D\u53EF\u89C1\uFF09\u3002\u6700\u5C0F\u4FEE\u6CD5\uFF1Ainclude \u52A0\u5165 "${relTypes}/**/*.d.ts"\uFF0C\u6216\u79FB\u9664\u5BF9\u5B83\u7684 exclude/files \u9650\u5236\u3002`
3207
3365
  };
3208
3366
  }
3209
3367
  function configCovers(cfgFile, typesRoot) {
3210
3368
  const raw = readCfg(cfgFile);
3211
3369
  if (!raw) return false;
3212
3370
  const cfg = effectiveCfg(raw);
3213
- const cfgDir = import_node_path6.default.dirname(cfgFile);
3371
+ const cfgDir = import_node_path7.default.dirname(cfgFile);
3214
3372
  const isSolution = Array.isArray(cfg.files) && cfg.files.length === 0 && !cfg.include;
3215
3373
  if (isSolution && cfg.references && cfg.references.length > 0) {
3216
3374
  return cfg.references.some((ref) => {
3217
- const refFile = resolveConfigFile(ref.startsWith(".") || import_node_path6.default.isAbsolute(ref) ? ref : `./${ref}`, cfgFile);
3375
+ const refFile = resolveConfigFile(ref.startsWith(".") || import_node_path7.default.isAbsolute(ref) ? ref : `./${ref}`, cfgFile);
3218
3376
  return refFile !== null && configCovers(refFile, typesRoot);
3219
3377
  });
3220
3378
  }
3221
3379
  if (Array.isArray(cfg.files) && cfg.files.length > 0) {
3222
3380
  return cfg.files.some((f) => {
3223
- const abs = import_node_path6.default.resolve(cfgDir, f);
3224
- return abs === typesRoot || abs.startsWith(typesRoot + import_node_path6.default.sep);
3381
+ const abs = import_node_path7.default.resolve(cfgDir, f);
3382
+ return abs === typesRoot || abs.startsWith(typesRoot + import_node_path7.default.sep);
3225
3383
  });
3226
3384
  }
3227
3385
  const includes = cfg.include;
3228
- if (!includes) return typesRoot === cfgDir || typesRoot.startsWith(cfgDir + import_node_path6.default.sep);
3386
+ if (!includes) return typesRoot === cfgDir || typesRoot.startsWith(cfgDir + import_node_path7.default.sep);
3229
3387
  const included = includes.some((p) => patternCoversDir(p, typesRoot, cfgDir));
3230
3388
  if (!included) return false;
3231
3389
  if (cfg.exclude && cfg.exclude.some((p) => patternCoversDir(p, typesRoot, cfgDir))) return false;
@@ -3269,7 +3427,7 @@ var METADATA_FILE = "metadata.json";
3269
3427
  var AMBIENT_FORMAT = 2;
3270
3428
  function readMetadata(dir) {
3271
3429
  try {
3272
- const raw = JSON.parse(import_node_fs6.default.readFileSync(import_node_path7.default.join(dir, METADATA_FILE), "utf8"));
3430
+ const raw = JSON.parse(import_node_fs6.default.readFileSync(import_node_path8.default.join(dir, METADATA_FILE), "utf8"));
3273
3431
  if (raw.generator !== "@fulgurjs/federation" || typeof raw.revision !== "string" || !Array.isArray(raw.files)) return null;
3274
3432
  return raw;
3275
3433
  } catch {
@@ -3279,9 +3437,9 @@ function readMetadata(dir) {
3279
3437
  function cleanupOwnFiles(dir, meta) {
3280
3438
  for (const f of meta.files) {
3281
3439
  if (!isSafeBundlePath(f)) continue;
3282
- import_node_fs6.default.rmSync(import_node_path7.default.join(dir, f), { force: true });
3440
+ import_node_fs6.default.rmSync(import_node_path8.default.join(dir, f), { force: true });
3283
3441
  }
3284
- import_node_fs6.default.rmSync(import_node_path7.default.join(dir, METADATA_FILE), { force: true });
3442
+ import_node_fs6.default.rmSync(import_node_path8.default.join(dir, METADATA_FILE), { force: true });
3285
3443
  try {
3286
3444
  if (import_node_fs6.default.readdirSync(dir).length === 0) import_node_fs6.default.rmdirSync(dir);
3287
3445
  } catch {
@@ -3291,7 +3449,7 @@ function sweepStaleStaging(typesRoot, alias) {
3291
3449
  if (!import_node_fs6.default.existsSync(typesRoot)) return;
3292
3450
  for (const name of import_node_fs6.default.readdirSync(typesRoot)) {
3293
3451
  if (name.startsWith(`.fg-staging-${alias}-`) || name.startsWith(`.fg-trash-${alias}-`)) {
3294
- import_node_fs6.default.rmSync(import_node_path7.default.join(typesRoot, name), { recursive: true, force: true });
3452
+ import_node_fs6.default.rmSync(import_node_path8.default.join(typesRoot, name), { recursive: true, force: true });
3295
3453
  }
3296
3454
  }
3297
3455
  }
@@ -3300,7 +3458,7 @@ async function syncRemoteTypes(input) {
3300
3458
  const fetchJsonFn = input.fetchJsonImpl ?? fetchJson;
3301
3459
  const fetchTextFn = input.fetchTextImpl ?? fetchText;
3302
3460
  const timeoutMs = input.timeoutMs ?? 15e3;
3303
- const dir = import_node_path7.default.join(typesRoot, alias);
3461
+ const dir = import_node_path8.default.join(typesRoot, alias);
3304
3462
  let manifest;
3305
3463
  try {
3306
3464
  const parsed = parseManifest(await fetchJsonFn(manifestUrl, timeoutMs));
@@ -3401,14 +3559,14 @@ async function syncRemoteTypes(input) {
3401
3559
  }
3402
3560
  const ambient = buildAmbientDeclarations({ alias, index, readFile: (rel) => indexRaw[rel] ?? "", source });
3403
3561
  sweepStaleStaging(typesRoot, alias);
3404
- const staging = import_node_path7.default.join(typesRoot, `.fg-staging-${alias}-${process.pid}-${Date.now()}`);
3562
+ const staging = import_node_path8.default.join(typesRoot, `.fg-staging-${alias}-${process.pid}-${Date.now()}`);
3405
3563
  import_node_fs6.default.rmSync(staging, { recursive: true, force: true });
3406
3564
  import_node_fs6.default.mkdirSync(staging, { recursive: true });
3407
3565
  const written = [];
3408
3566
  try {
3409
3567
  for (const [name, content] of ambient.files) {
3410
- const dest = import_node_path7.default.join(staging, name);
3411
- import_node_fs6.default.mkdirSync(import_node_path7.default.dirname(dest), { recursive: true });
3568
+ const dest = import_node_path8.default.join(staging, name);
3569
+ import_node_fs6.default.mkdirSync(import_node_path8.default.dirname(dest), { recursive: true });
3412
3570
  import_node_fs6.default.writeFileSync(dest, content);
3413
3571
  written.push(name);
3414
3572
  }
@@ -3422,8 +3580,8 @@ async function syncRemoteTypes(input) {
3422
3580
  externals: index.externals,
3423
3581
  syncedAt: Date.now()
3424
3582
  };
3425
- import_node_fs6.default.writeFileSync(import_node_path7.default.join(staging, METADATA_FILE), JSON.stringify(meta, null, 2));
3426
- const trash = import_node_path7.default.join(typesRoot, `.fg-trash-${alias}-${Date.now()}`);
3583
+ import_node_fs6.default.writeFileSync(import_node_path8.default.join(staging, METADATA_FILE), JSON.stringify(meta, null, 2));
3584
+ const trash = import_node_path8.default.join(typesRoot, `.fg-trash-${alias}-${Date.now()}`);
3427
3585
  let swapped = false;
3428
3586
  if (import_node_fs6.default.existsSync(dir)) {
3429
3587
  import_node_fs6.default.renameSync(dir, trash);
@@ -3449,7 +3607,7 @@ async function syncRemoteTypes(input) {
3449
3607
  };
3450
3608
  }
3451
3609
  function removeGeneratedTypes(typesRoot, alias) {
3452
- const dir = import_node_path7.default.join(typesRoot, alias);
3610
+ const dir = import_node_path8.default.join(typesRoot, alias);
3453
3611
  if (!import_node_fs6.default.existsSync(dir)) return false;
3454
3612
  const meta = readMetadata(dir);
3455
3613
  if (!meta) return false;
@@ -3481,6 +3639,7 @@ function startRemoteTypesSyncLoop(opts) {
3481
3639
  typesRoot: opts.typesRoot,
3482
3640
  source: devEntry
3483
3641
  });
3642
+ if (result.status === "synced" && !controller.signal.aborted) opts.onSynced?.();
3484
3643
  if (result.status === "synced" || result.status === "absent" && !announced.has(alias)) {
3485
3644
  log(`[fulgurjs] \u7C7B\u578B\u540C\u6B65\uFF1A${result.message}`);
3486
3645
  announced.add(alias);
@@ -3526,7 +3685,7 @@ function startRemoteTypesSyncLoop(opts) {
3526
3685
  }
3527
3686
 
3528
3687
  // src/diagnostics.ts
3529
- var import_node_path8 = __toESM(require("path"), 1);
3688
+ var import_node_path9 = __toESM(require("path"), 1);
3530
3689
  function formatFulgurjsDiagnostic(input) {
3531
3690
  const ctx = input.details ? `
3532
3691
  \u4E0A\u4E0B\u6587\uFF1A${JSON.stringify(input.details)}` : "";
@@ -3570,8 +3729,8 @@ function debugLog(category, data) {
3570
3729
  function redactModulePath(id, root) {
3571
3730
  const clean = id.split("?")[0];
3572
3731
  try {
3573
- const rel = import_node_path8.default.relative(root, clean);
3574
- if (rel && !rel.startsWith("..") && !import_node_path8.default.isAbsolute(rel)) return rel;
3732
+ const rel = import_node_path9.default.relative(root, clean);
3733
+ if (rel && !rel.startsWith("..") && !import_node_path9.default.isAbsolute(rel)) return rel;
3575
3734
  } catch {
3576
3735
  }
3577
3736
  return clean.split("/").pop() ?? clean;
@@ -3682,17 +3841,17 @@ function genRemoteSchemaModule(schema) {
3682
3841
 
3683
3842
  // src/vite-cache.ts
3684
3843
  var import_node_fs7 = __toESM(require("fs"), 1);
3685
- var import_node_path9 = __toESM(require("path"), 1);
3844
+ var import_node_path10 = __toESM(require("path"), 1);
3686
3845
  function syncViteCacheMarker(root, pluginVersion, log) {
3687
- const viteDir = import_node_path9.default.join(root, "node_modules", ".vite");
3688
- const marker = import_node_path9.default.join(viteDir, "fulgurjs-version.txt");
3846
+ const viteDir = import_node_path10.default.join(root, "node_modules", ".vite");
3847
+ const marker = import_node_path10.default.join(viteDir, "fulgurjs-version.txt");
3689
3848
  try {
3690
3849
  if (import_node_fs7.default.existsSync(viteDir)) {
3691
3850
  const prev = import_node_fs7.default.existsSync(marker) ? import_node_fs7.default.readFileSync(marker, "utf8").trim() : "";
3692
3851
  if (prev === pluginVersion) return;
3693
3852
  import_node_fs7.default.rmSync(viteDir, { recursive: true, force: true });
3694
3853
  log(
3695
- `[fulgurjs] \u63D2\u4EF6\u7248\u672C\u53D8\u5316\uFF08${prev || "\u65E0\u8BB0\u5F55"} \u2192 ${pluginVersion}\uFF09\uFF0C\u5DF2\u81EA\u52A8\u6E05\u9664 ${import_node_path9.default.relative(root, viteDir)} \u9884\u6784\u5EFA\u7F13\u5B58\uFF08\u907F\u514D\u65E7\u95E8\u9762\u7B7E\u540D 404 / DEV-009\uFF09\u3002\u672C\u6B21\u542F\u52A8\u5C06\u91CD\u65B0\u9884\u6784\u5EFA\uFF0C\u9996\u8F6E 30~60s \u5C5E\u6682\u6001\uFF08DEV-010\uFF09\u3002`
3854
+ `[fulgurjs] \u63D2\u4EF6\u7248\u672C\u53D8\u5316\uFF08${prev || "\u65E0\u8BB0\u5F55"} \u2192 ${pluginVersion}\uFF09\uFF0C\u5DF2\u81EA\u52A8\u6E05\u9664 ${import_node_path10.default.relative(root, viteDir)} \u9884\u6784\u5EFA\u7F13\u5B58\uFF08\u907F\u514D\u65E7\u95E8\u9762\u7B7E\u540D 404 / DEV-009\uFF09\u3002\u672C\u6B21\u542F\u52A8\u5C06\u91CD\u65B0\u9884\u6784\u5EFA\uFF0C\u9996\u8F6E 30~60s \u5C5E\u6682\u6001\uFF08DEV-010\uFF09\u3002`
3696
3855
  );
3697
3856
  }
3698
3857
  import_node_fs7.default.mkdirSync(viteDir, { recursive: true });
@@ -4052,7 +4211,7 @@ function repairRolldownAsyncMarks(code, sourceName) {
4052
4211
  }
4053
4212
 
4054
4213
  // src/runtime-code.gen.ts
4055
- var runtime_code_gen_default = 'var ke=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function C(c){let d=ke.exec(String(c).trim());return d?{major:Number(d[1]),minor:Number(d[2]??0),patch:Number(d[3]??0),pre:d[4]?d[4].split("."):[]}:null}function Oe(c,d){if(c.length===0&&d.length===0)return 0;if(c.length===0)return 1;if(d.length===0)return-1;let f=Math.max(c.length,d.length);for(let l=0;l<f;l++){let m=c[l],S=d[l];if(m===void 0)return-1;if(S===void 0)return 1;let b=/^\\d+$/.test(m),P=/^\\d+$/.test(S);if(b&&P){let A=Number(m)-Number(S);if(A!==0)return A}else{if(b!==P)return b?-1:1;if(m!==S)return m<S?-1:1}}return 0}function x(c,d){let f=C(c),l=C(d);return!f||!l?c<d?-1:c>d?1:0:f.major!==l.major?f.major-l.major:f.minor!==l.minor?f.minor-l.minor:f.patch!==l.patch?f.patch-l.patch:Oe(f.pre,l.pre)}var Me=/^[a-z]+[+:-]/i;function U(c,d){if(d===!1||d==null||d==="")return!0;let f=String(d).trim();return!f||f==="*"||f==="latest"||Me.test(f)?!0:f.split("||").some(l=>Te(c,l.trim()))}function Te(c,d){if(!d||d==="*")return!C(c)?.pre.length;let f=d.split(/\\s+-\\s+/);if(f.length===2){let S=f[0].trim(),b=f[1].trim();return!(!U(c,`>=${S}`)||!U(c,`<=${b}`))}let l=C(c);if(!l)return!1;let m=Le(d);if(m===null)return!0;for(let S of m)if(!je(l,c,S))return!1;return!(l.pre.length>0&&!m.some(S=>S.ver.pre.length>0)&&!m.some(b=>b.ver.major===l.major&&b.ver.minor===l.minor&&b.ver.patch===l.patch))}function Le(c){let d=[],f=c.trim().split(/\\s+/).filter(Boolean);if(f.length===0)return null;for(let l of f){let m=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(l);if(!m)return null;let S=m[1],b=m[2],P=Ae(S,b);if(P===null)return null;d.push(...P)}return d}function Ae(c,d){let f=xe(d);if(!f)return null;let{ver:l,partial:m}=f;switch(c){case"^":{let S=Ie(l);return S?[{op:">=",ver:l},{op:"<",ver:S}]:null}case"~":{let S=m>=2?{major:l.major,minor:l.minor+1,patch:0,pre:[]}:{major:l.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:l},{op:"<",ver:S}]}case">=":return[{op:">=",ver:l}];case">":return m===1?[{op:">=",ver:{major:l.major+1,minor:0,patch:0,pre:[]}}]:m===2?[{op:">=",ver:{major:l.major,minor:l.minor+1,patch:0,pre:[]}}]:[{op:">",ver:l}];case"<":return m===1?[{op:"<",ver:{major:l.major,minor:0,patch:0,pre:[]}}]:m===2?[{op:"<",ver:{major:l.major,minor:l.minor,patch:0,pre:[]}}]:[{op:"<",ver:l}];case"<=":return[{op:"<=",ver:l}];case"=":case void 0:return m===1?[{op:">=",ver:l},{op:"<",ver:{major:l.major+1,minor:0,patch:0,pre:[]}}]:m===2?[{op:">=",ver:l},{op:"<",ver:{major:l.major,minor:l.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:l}];default:return null}}function Ie(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 xe(c){let d=c.replace(/^v/,"").trim();if(!d||d==="*"||d==="x"||d==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let f=d.split("."),l=[],m=0;for(let P of f.slice(0,3))if(/^\\d+$/.test(P))l.push(Number(P)),m++;else{if(P==="x"||P==="X"||P==="*")break;break}let S=d.split("-"),b=S.length>1?S.slice(1).join("-").split("+")[0].split("."):[];return m===0&&b.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:l[0]??0,minor:l[1]??0,patch:l[2]??0,pre:b},partial:m}}function Ue(c,d){switch(d){case">=":return c>=0;case">":return c>0;case"<":return c<0;case"<=":return c<=0;case"=":return c===0}}function je(c,d,f){let l=`${c.major}.${c.minor}.${c.patch}`+(c.pre.length?`-${c.pre.join(".")}`:"");if(f.upper)return!(!(x(l,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:""))>=0)||!(x(l,`${f.upper.major}.${f.upper.minor}.${f.upper.patch}`)<0));let m=x(l,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:"")),S=Ue(m,f.op);return f.ver.pre.length>0&&c.pre.length===0&&(f.op===">"||f.op==="<")?!1:S}function F(c){return c.replace(/(https?:\\/\\/)(?:[^\\s/@]+@)?([^\\s?#"\'<>\uFF0C\u3002\uFF1B\uFF09)\\]]+)(?:[?#][^\\s"\'<>\uFF0C\u3002\uFF1B\uFF09)\\]]*)?/g,"$1$2")}function M(c){return F(String(c?.message??c)).replace(/\\b(token|password|cookie|authorization)["\']?\\s*[:=]\\s*["\']?(?:Bearer\\s+)?[^\\s,;"\'}]+/gi,"$1=[redacted]")}var E=class extends Error{code;details;constructor(d,f,l,m){super(`[fulgurjs:${d}] ${F(f)}`,m),this.name="FgError",this.code=d,this.details=l}},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",COMPONENT_EXPORT_INVALID:"MFU-018",VUE_RUNTIME_IDENTITY_MISMATCH:"MFU-019",REMOTE_RENDER_ERROR:"MFU-020"};function ie(c){if(typeof c!="object"||c===null)return!1;let d=globalThis,f=d.__FULGURJS_REPORTED_ERRORS__??=new WeakSet;return f.has(c)?!0:(f.add(c),!1)}var ae="6.14.2";var Ne="__fulgurjsSetup",Ce="__FULGURJS_APP_CONFIG__",J=15e3,ce=2,Fe=5,Ve=3e4,De=4e3,Ke=.2;function qe(){let c=Object.create(null),d=new Map,f=[],l=new Set,m=new Map,S=(e,r)=>JSON.stringify([r.shareScope||"default",r.shareKey||e,r.requiredVersion??null,!!r.singleton,!!r.strictVersion]),b=new Map,P=new Map,A=new WeakMap,V=new WeakMap,W=(e,r)=>{console.warn(`[fulgurjs] ${e} \\u94A9\\u5B50\\u5931\\u8D25\\uFF08\\u4E0D\\u5F71\\u54CD\\u52A0\\u8F7D\\uFF09\\uFF0C\\u8BF7\\u68C0\\u67E5\\uFF1A`,M(r))},_={},ue=()=>{for(let e of f)try{e.init?.(_)}catch(r){console.warn("[fulgurjs] \\u6269\\u5C55\\u521D\\u59CB\\u5316\\u5931\\u8D25\\uFF0C\\u8BF7\\u68C0\\u67E5\\uFF1A",e.name,M(r))}},D=new Map,K,q=e=>{let r=D.get(e);return r||D.set(e,r={}),r},z=()=>globalThis[Ce]??{};async function Y(e,r,n,o){let t=u=>{if(u instanceof E)return v({remote:e,error:u}),u;let a=new E(R.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${o} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${M(u)}\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:u});return v({remote:e,error:a}),a};K=e;let s;try{s=r(n)}catch(u){throw t(u)}finally{K=void 0}try{await s}catch(u){throw t(u)}}async function de(e,r,n,o){e.debug.setup="pending";try{if(e.manifestUrl)try{await B(`${e.name}/${n}`)}catch{}let t=await r.get(n),s=t?.default,u=t?.onSession!==void 0||t?.globalComponents!==void 0||t?.pageProviders!==void 0;if(s!==void 0&&typeof s!="function"||!s&&!u)throw new E(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 ${t==null?String(t):typeof s}\\uFF0C\\u4E14\\u6A21\\u5757\\u4E0D\\u6EE1\\u8DB3\\u521D\\u59CB\\u5316\\u58F0\\u660E\\u5951\\u7EA6\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u521D\\u59CB\\u5316\\u51FD\\u6570\\uFF0C\\u6216\\u53EA\\u58F0\\u660E onSession/globalComponents/pageProviders\\uFF1B\\u7A7A\\u6A21\\u5757\\u4E0E\\u975E\\u51FD\\u6570\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u65E0\\u6548\\u3002`,{remote:e.name,module:n});if(t.onSession!==void 0&&typeof t.onSession!="function")throw new E(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 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});if(o.setupExports=t,t.globalComponents!==void 0){if(typeof t.globalComponents!="object"||t.globalComponents===null||Array.isArray(t.globalComponents))throw new E(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\\uFF1AglobalComponents \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${Array.isArray(t.globalComponents)?"array":typeof t.globalComponents}\\uFF0C\\u5E94\\u4E3A\\u5BF9\\u8C61\\uFF08\\u952E=\\u7EC4\\u4EF6\\u6CE8\\u518C\\u540D\\uFF0C\\u503C=\\u7EC4\\u4EF6\\uFF09\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u6539\\u4E3A export const globalComponents = { \\u7EC4\\u4EF6\\u6CE8\\u518C\\u540D: \\u7EC4\\u4EF6 } \\u5F62\\u6001\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});o.globalComponents=t.globalComponents}if(t.pageProviders!==void 0){if(!Array.isArray(t.pageProviders))throw new E(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\\uFF1ApageProviders \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof t.pageProviders}\\uFF0C\\u5E94\\u4E3A\\u6570\\u7EC4\\uFF08\\u6BCF\\u9879=\\u7EC4\\u4EF6\\u6216\\u96F6\\u53C2 loader\\uFF09\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u6539\\u4E3A export const pageProviders = [AppProvider] \\u6216 [() => import(\'./X\').then((m) => m.AppProvider)] \\u5F62\\u6001\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});o.pageProviders=t.pageProviders}s&&await Y(e.name,s,{appContext:z(),signal:(o.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(t){throw e.debug.setup="failed",t?.code&&v({remote:e.name,error:t}),o.setupExports=void 0,o.globalComponents=void 0,o.pageProviders=void 0,t}}async function fe(e,r,n){let o=z(),t=o?.sessionKey;if(typeof t!="string"||t===""){let y=new E(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 ${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});throw v({remote:e.name,error:y}),y}if(r.sessionPromise&&r.sessionKey===t)return r.sessionPromise;r.controller?.abort();let s=new AbortController;r.controller=s,r.sessionKey=t;let u=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),a=(async()=>{await u,!s.signal.aborted&&await Y(e.name,n,{appContext:o,sessionKey:t,signal:s.signal},"onSession")})();return r.sessionPromise=a,a.catch(()=>{r.sessionKey===t&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),a}async function pe(e,r){let n=r?.[Ne];if(typeof n!="string"||n==="")return;let o=q(e.name);o.setupPromise||(o.setupPromise=de(e,r,n,o).catch(s=>{throw o.setupPromise=void 0,s})),await o.setupPromise;let t=o.setupExports?.onSession;typeof t=="function"&&await fe(e,o,t)}function me(){for(let e of D.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let L=e=>c[e]??=Object.create(null);function v(e){if(!ie(e.error)){try{_.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}}function ge(e="default"){return L(e),c}function H(e,r,n,o,t={}){let s=L(e||"default"),u=Object.hasOwn(s,r)?s[r]:void 0,a=u&&typeof u=="object"?u:void 0;a||(a=Object.create(null),s[r]=a),!(Object.hasOwn(a,n)&&a[n])&&(a[n]={version:n,get:o,from:t.from??"unknown",eager:!!t.eager,loaded:!!t.loaded})}function he(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 Z(e){for(let r of e){he(r);let n=d.get(r.name);d.set(r.name,{timeout:J,retries:ce,...n,...r,breakerThreshold:r.breaker?.threshold??n?.breakerThreshold??Fe,breakerResetMs:r.breaker?.resetMs??n?.breakerResetMs??Ve,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:j(r.entry),status:"idle",setup:"none"}})}}function ye(e){Z([e])}function Se(e){f.push(...e),m.clear(),ue()}function I(e,r,n=!1){let o=r.shareScope||"default",t=r.shareKey||e,u=L(o)[t]||{},a=Object.keys(u).filter(i=>!n||r.singleton||u[i].value!==void 0);if(n&&a.length===0)return;let y=r.requiredVersion,g=a.filter(i=>y===void 0||y===!1||U(i,y)),p;if(r.singleton&&a.length>0){let i=a.filter(h=>u[h].loaded);if(p=[...i.length?i:a].sort(x).pop(),!g.includes(p)){let h=u[p],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\\u8981\\u6C42 ${y??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${a.join("\\u3001")}\\uFF1B\\u5355\\u4F8B\\u5019\\u9009\\u4E3A ${h.from} \\u63D0\\u4F9B\\u7684 ${p}\\u3002\n`+(r.strictVersion?`\\u7ED3\\u679C\\uFF1AstrictVersion \\u5DF2\\u5F00\\u542F\\uFF0C\\u672C\\u6B21\\u52A0\\u8F7D\\u5DF2\\u62D2\\u7EDD\\uFF0C\\u672A\\u4EA4\\u4ED8\\u4E0D\\u517C\\u5BB9\\u5B9E\\u4F8B\\u3002\n`:`\\u7ED3\\u679C\\uFF1A\\u590D\\u7528\\u6B64\\u5355\\u4F8B\\uFF1B\\u8BF7\\u786E\\u8BA4\\u4E24\\u7AEF API \\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\\u3002";if(r.strictVersion){let T=new E(R.SHARE_STRICT_VERSION,O,{shareKey:t,requiredVersion:y});throw v({remote:h.from,error:T}),T}let $=`${o}|${t}|${y??"*"}|${p}|${a.join(",")}`;l.has($)||(l.add($),console.warn(`[fulgurjs:MFU-010] ${O}`))}}else if(p=[...g].sort(x).pop(),!p){if(r.strictVersion){let i=new E(R.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 ${y}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${a.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 v({remote:t,error:i}),i}return}return u[p]}function Q(e,r,n){let o=r.localVersion;if(!o||n===void 0)return;let t=r.shareScope||"default",s=r.shareKey||e,u=L(t),a=Object.hasOwn(u,s)?u[s]:void 0;if(a&&Object.keys(a).length>0){try{let g=I(e,r);if(g&&g.value===void 0){if(g.version===o)g.value=n,g.loaded=!0;else if(r.singleton&&!g.pendingGet){H(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let p=u[s][o];p.value=n,p.loaded=!0}}}catch{}return}H(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let y=u[s]?.[o];y&&(y.value=n)}async function ee(e,r={}){let n=r.shareScope||"default",o=r.shareKey||e,t=L(n)[o]||{},s=S(e,r),u=_.resolveShare?m.get(s):void 0,a=u||I(e,r);if(!a){if(r.fallback){let i=await r.fallback();return Q(e,r,i),i}let p=new E(R.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 v({remote:o,error:p}),p}if(_.resolveShare&&!u){let p=await _.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:a,available:Object.values(t)});p&&(a=p),m.set(s,a)}if(a.value!==void 0)return m.set(S(e,r),a),a.value;if(a.loaded=!0,!a.pendingGet)try{a.pendingGet=a.get()}catch(p){a.pendingGet=Promise.reject(p)}let y=a.pendingGet,g;try{g=await y}catch(p){if(a.value!==void 0)return m.set(S(e,r),a),a.value;throw a.loaded=!1,m.get(s)===a&&m.delete(s),p}finally{a.pendingGet===y&&(a.pendingGet=void 0)}return a.value===void 0&&(a.value=g),m.set(S(e,r),a),a.value}function Ee(e,r={}){return _.resolveShare?m.get(S(e,r))?.value:I(e,r,!0)?.value}function Re(e,r,n,o){Q(e,{...r,localVersion:n},o)}function we(e,r){let n=r.shareScope||"default",o=r.shareKey||e;if(_.resolveShare){let s=S(e,r),u=m.get(s);if(u&&u.value!==void 0)return{kind:"ready",value:u.value};let a=u||_.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:I(e,r),available:Object.values(L(n)[o]||{})});if(a&&typeof a.then=="function")throw Promise.resolve(a).catch(()=>{}),new E(R.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 y=a;if(y){if(y.value!==void 0)return m.set(S(e,r),y),{kind:"ready",value:y.value};if(y.version!==void 0&&y.version===r.localVersion)return{kind:"local"};throw new E(R.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u4E3A "${o}" \\u9009\\u62E9\\u4E86\\u672A\\u5C31\\u7EEA\\u7684 ${y.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=I(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||!U(r.localVersion,r.requiredVersion))){if(r.strictVersion||t.pendingGet)throw new E(R.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 l.has(s)||(l.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 be(e){if(_.resolveShare){for(let{name:r,opts:n}of e){let o=S(r,n);if(m.has(o))continue;let t=I(r,n),s=await _.resolveShare({shareKey:n.shareKey||r,shareScope:n.shareScope||"default",requiredVersion:n.requiredVersion,picked:t,available:Object.values(L(n.shareScope||"default")[n.shareKey||r]||{})})||t;s&&m.set(o,s)}for(let{name:r,opts:n}of e)await ee(r,n)}}function j(e=""){return F(e).split(/[?#]/,1)[0]}function re(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(u=>{clearTimeout(s),o(u)},u=>{clearTimeout(s),t(u)})})}let ve=e=>new Promise(r=>setTimeout(r,e)),ne=new Set;function G(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}`;ne.has(o)||(ne.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:R.REMOTE_NAME_MISMATCH})}}async function te(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)})),re(s,r.timeout??J,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${j(e)}`)}async function oe(e,r){let n=e.shareScope||"default";if(e.container){let s=V.get(e.container);if(s&&s!==n)throw new E(R.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(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(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,stage:"container"});throw v({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 i=await re(e.promise(),e.timeout??J,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),h=typeof i=="string"?await te(i,e):i;return G(h,e),h});else for(let i of[e.entry,...e.fallback??[]])s.push(async()=>{let h=await te(i,e);return G(h,e),h});let u,a,y=!1,g=r?.retries??e.retries??ce;for(let i of s){for(let h=0;h<=g;h++){let O=performance.now();try{u=await i(),e.lastLoadMs=Math.round(performance.now()-O),e.debug.lastLoadMs=e.lastLoadMs,y=!0;break}catch($){if(a=$,$?.code)throw $;h<g&&await ve(Math.min(De,200*2**h)*(1-Ke*(1-2*Math.random())))}}if(y)break}if(!y||!u){let i=j(e.entry),h=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${i}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),h.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),h.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${i}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),h.push("2. \\u68C0\\u67E5 Nginx/CDN \\u7684\\u5165\\u53E3\\u8DEF\\u5F84\\u6620\\u5C04\\uFF1B\\u8BE5\\u5730\\u5740\\u4E0D\\u80FD\\u56DE\\u9000\\u5230 index.html\\u3002")),new E(R.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${i} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${M(a)}\n\\u4FEE\\u6CD5\\uFF1A\n${h.join(`\n`)}`,{remote:e.name,stage:"container"},{cause:a})}G(u,e);let p=V.get(u);if(p&&p!==n)throw new E(R.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${p}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof u.init=="function"&&await u.init(c),V.set(u,n),e.container=u,e.state="loaded",e.debug.status="loaded",o.fails=0,u})();e.containerPromise=t;try{return await t}catch(s){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=M(s),o.fails+=1,o.fails>=e.breakerThreshold&&(o.openUntil=Date.now()+e.breakerResetMs,o.fails=0),s instanceof E)throw v({remote:e.name,error:s}),s;if(s?.code)throw v({remote:e.name,error:s}),s;let u=new E(R.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(s)}\\u3002\\u8BF7\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u3001\\u7F51\\u7EDC\\u53CA\\u5171\\u4EAB\\u4F9D\\u8D56\\u3002`,{remote:e.name,stage:"container"},{cause:s});throw v({remote:e.name,error:u}),u}}function X(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:se(e.slice(r+1))}}function se(e){return e?e.startsWith(".")?e:`./${e}`:""}async function Pe(e,r){let{remote:n,module:o}=X(e);if(o&&K===n)throw new E(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{_.beforeLoadRemote?.({remote:n,module:o})}catch(i){W("beforeLoadRemote",i)}let t=d.get(n);if(!t)throw new E(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 s;try{let i=o&&t.manifestUrl?B(e):Promise.resolve();[s]=await Promise.all([oe(t,{retries:r?.retries}),i])}catch(i){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF1B\\u4F7F\\u7528\\u914D\\u7F6E\\u7684 fallbackModule\\u3002\\u6458\\u8981\\uFF1A`,M(i)),v({remote:n,error:i}),await r.fallbackModule();throw i}if(!o)return s;await pe(t,s);let u=q(n).globalComponents,a=r?.consumerApp;if(u&&a&&typeof a.component=="function")for(let i of Object.keys(u))a.component(i,u[i]);let y=q(n).pageProviders;y&&y.length>0&&typeof a?.pageProviders=="function"&&a.pageProviders(y);let g=`${n}@${t.shareScope||"default"}#${o}`;b.has(g)||b.set(g,s.get(o).catch(i=>{if(b.delete(g),i instanceof E||i?.code)throw v({remote:n,error:i}),i;let h=new E(R.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u52A0\\u8F7D\\u6A21\\u5757 "${o}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(i)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:n,module:o,stage:"expose"},{cause:i});throw v({remote:n,error:h}),h}));let p;try{p=await b.get(g)}catch(i){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF1B\\u4F7F\\u7528\\u914D\\u7F6E\\u7684 fallbackModule\\u3002\\u6458\\u8981\\uFF1A`,M(i)),v({remote:n,error:i}),await r.fallbackModule();throw i}try{_.afterLoadRemote?.({remote:n,module:o,module_ns:p})}catch(i){W("afterLoadRemote",i)}if(p&&typeof p=="object"&&Object.keys(p).length===0){let i=new E(R.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});v({remote:n,error:i}),console.error(i.message)}return p}function $e(e){let r=d.get(e);if(!r)throw new E(R.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:e});return oe(r)}async function B(e,r={}){let{remote:n,module:o}=X(e),t=d.get(n);if(!t)throw new E(R.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",u=(g,p)=>{if(g.sheet)return Promise.resolve();let i=A.get(g);if(i)return i;let h=new Promise(O=>{let $=()=>{g.removeEventListener("load",$),g.removeEventListener("error",T),O()},T=()=>{v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${p}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:n})}),$()};g.addEventListener("load",$,{once:!0}),g.addEventListener("error",T,{once:!0}),g.sheet&&$()});return A.set(g,h),h},a=(g,p)=>{if(typeof document>"u")return Promise.resolve();let i=document.querySelector(`link[href="${g}"]`);if(i)return p==="style"&&s==="preload"?A.get(i)??Promise.resolve():Promise.resolve();let h=document.createElement("link");h.rel=p==="style"?"stylesheet":"modulepreload",h.href=g,s==="prefetch"&&(h.fetchPriority="low");let O=p==="style"?u(h,g):Promise.resolve();return document.head.appendChild(h),p==="style"&&s==="preload"?O:Promise.resolve()},y=g=>{let p=typeof document<"u"?document.baseURI:void 0,i=new URL(t.entry,p||"http://fulgurjs.invalid/");return!i.pathname.endsWith("/")&&!i.pathname.split("/").pop().includes(".")&&(i.pathname+="/"),new URL(g,i).href};try{if(t.manifestUrl){let g=P.get(t.manifestUrl);g||(g=fetch(t.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(i=>i.ok?i.json():void 0),P.set(t.manifestUrl,g),g.then(i=>{i||P.delete(t.manifestUrl)},()=>P.delete(t.manifestUrl)));let p=await g;if(p){let i=p.schemaVersion;if(typeof i=="number"&&(!Number.isInteger(i)||i>1)){v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(i)}\\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 a(t.entry,"modulepreload");return}await a(t.entry,"modulepreload");let h=p.exposes,O=Array.isArray(h)?h.filter(k=>k&&typeof k=="object").map(k=>[String(k.name??""),k]):h&&typeof h=="object"?Object.entries(h):[],$=o?O.filter(([k,N])=>se(String(N?.name??k))===o):O,T=[];for(let[,k]of $)if(typeof k?.file=="string"&&await a(y(k.file),"modulepreload"),Array.isArray(k?.css))for(let N of k.css){if(typeof N!="string")continue;let _e=a(y(N),"style");s==="preload"&&T.push(_e)}await Promise.all(T);return}}await a(t.entry,"modulepreload")}catch(g){v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(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 d)e[r]={...n.debug,entry:j(n.entry)};return e},errors:[]}),{shareScopeMap:c,initSharing:ge,registerShare:H,registerRemotes:Z,registerRemote:ye,registerPlugins:Se,loadShare:ee,loadShareSync:we,prepareShares:be,getLoadedShare:Ee,pinLoadedShare:Re,loadRemote:Pe,getContainer:$e,preloadRemote:B,parseSpec:X,clearSessionState:me,reportRemoteError:e=>{v(e)}}}var le=globalThis,w=le.__FULGURJS_RUNTIME__??qe();le.__FULGURJS_RUNTIME__=w;try{Object.freeze(w)}catch{}var Ye=ae;function Ze(){return w}var Qe=w.initSharing,er=w.registerShare,rr=w.registerRemotes,nr=w.registerRemote,tr=w.registerPlugins,or=w.loadShare,sr=w.getLoadedShare,ir=w.prepareShares||(async c=>{for(let{name:d,opts:f}of c)await w.loadShare(d,f)}),ar=w.loadShareSync,cr=w.pinLoadedShare,lr=w.loadRemote,ur=w.getContainer,dr=w.preloadRemote,fr=w.parseSpec,pr=w.clearSessionState,mr=w.shareScopeMap;function gr(c){if(c&&typeof c=="object"&&"default"in c){let d=c.default;return d!==void 0?d:c}return c}var hr=w;export{pr as clearSessionState,hr as default,ur as getContainer,sr as getLoadedShare,Ze as getRuntime,Qe as initSharing,lr as loadRemote,or as loadShare,ar as loadShareSync,fr as parseSpec,cr as pinLoadedShare,dr as preloadRemote,ir as prepareShares,tr as registerPlugins,nr as registerRemote,rr as registerRemotes,er as registerShare,w as runtime,mr as shareScopeMap,gr as unwrapDefault,Ye as version};\n';
4214
+ var runtime_code_gen_default = 'var ke=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function C(c){let d=ke.exec(String(c).trim());return d?{major:Number(d[1]),minor:Number(d[2]??0),patch:Number(d[3]??0),pre:d[4]?d[4].split("."):[]}:null}function Oe(c,d){if(c.length===0&&d.length===0)return 0;if(c.length===0)return 1;if(d.length===0)return-1;let f=Math.max(c.length,d.length);for(let l=0;l<f;l++){let m=c[l],S=d[l];if(m===void 0)return-1;if(S===void 0)return 1;let b=/^\\d+$/.test(m),P=/^\\d+$/.test(S);if(b&&P){let A=Number(m)-Number(S);if(A!==0)return A}else{if(b!==P)return b?-1:1;if(m!==S)return m<S?-1:1}}return 0}function x(c,d){let f=C(c),l=C(d);return!f||!l?c<d?-1:c>d?1:0:f.major!==l.major?f.major-l.major:f.minor!==l.minor?f.minor-l.minor:f.patch!==l.patch?f.patch-l.patch:Oe(f.pre,l.pre)}var Me=/^[a-z]+[+:-]/i;function U(c,d){if(d===!1||d==null||d==="")return!0;let f=String(d).trim();return!f||f==="*"||f==="latest"||Me.test(f)?!0:f.split("||").some(l=>Te(c,l.trim()))}function Te(c,d){if(!d||d==="*")return!C(c)?.pre.length;let f=d.split(/\\s+-\\s+/);if(f.length===2){let S=f[0].trim(),b=f[1].trim();return!(!U(c,`>=${S}`)||!U(c,`<=${b}`))}let l=C(c);if(!l)return!1;let m=Le(d);if(m===null)return!0;for(let S of m)if(!je(l,c,S))return!1;return!(l.pre.length>0&&!m.some(S=>S.ver.pre.length>0)&&!m.some(b=>b.ver.major===l.major&&b.ver.minor===l.minor&&b.ver.patch===l.patch))}function Le(c){let d=[],f=c.trim().split(/\\s+/).filter(Boolean);if(f.length===0)return null;for(let l of f){let m=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(l);if(!m)return null;let S=m[1],b=m[2],P=Ae(S,b);if(P===null)return null;d.push(...P)}return d}function Ae(c,d){let f=xe(d);if(!f)return null;let{ver:l,partial:m}=f;switch(c){case"^":{let S=Ie(l);return S?[{op:">=",ver:l},{op:"<",ver:S}]:null}case"~":{let S=m>=2?{major:l.major,minor:l.minor+1,patch:0,pre:[]}:{major:l.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:l},{op:"<",ver:S}]}case">=":return[{op:">=",ver:l}];case">":return m===1?[{op:">=",ver:{major:l.major+1,minor:0,patch:0,pre:[]}}]:m===2?[{op:">=",ver:{major:l.major,minor:l.minor+1,patch:0,pre:[]}}]:[{op:">",ver:l}];case"<":return m===1?[{op:"<",ver:{major:l.major,minor:0,patch:0,pre:[]}}]:m===2?[{op:"<",ver:{major:l.major,minor:l.minor,patch:0,pre:[]}}]:[{op:"<",ver:l}];case"<=":return[{op:"<=",ver:l}];case"=":case void 0:return m===1?[{op:">=",ver:l},{op:"<",ver:{major:l.major+1,minor:0,patch:0,pre:[]}}]:m===2?[{op:">=",ver:l},{op:"<",ver:{major:l.major,minor:l.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:l}];default:return null}}function Ie(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 xe(c){let d=c.replace(/^v/,"").trim();if(!d||d==="*"||d==="x"||d==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let f=d.split("."),l=[],m=0;for(let P of f.slice(0,3))if(/^\\d+$/.test(P))l.push(Number(P)),m++;else{if(P==="x"||P==="X"||P==="*")break;break}let S=d.split("-"),b=S.length>1?S.slice(1).join("-").split("+")[0].split("."):[];return m===0&&b.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:l[0]??0,minor:l[1]??0,patch:l[2]??0,pre:b},partial:m}}function Ue(c,d){switch(d){case">=":return c>=0;case">":return c>0;case"<":return c<0;case"<=":return c<=0;case"=":return c===0}}function je(c,d,f){let l=`${c.major}.${c.minor}.${c.patch}`+(c.pre.length?`-${c.pre.join(".")}`:"");if(f.upper)return!(!(x(l,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:""))>=0)||!(x(l,`${f.upper.major}.${f.upper.minor}.${f.upper.patch}`)<0));let m=x(l,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:"")),S=Ue(m,f.op);return f.ver.pre.length>0&&c.pre.length===0&&(f.op===">"||f.op==="<")?!1:S}function F(c){return c.replace(/(https?:\\/\\/)(?:[^\\s/@]+@)?([^\\s?#"\'<>\uFF0C\u3002\uFF1B\uFF09)\\]]+)(?:[?#][^\\s"\'<>\uFF0C\u3002\uFF1B\uFF09)\\]]*)?/g,"$1$2")}function M(c){return F(String(c?.message??c)).replace(/\\b(token|password|cookie|authorization)["\']?\\s*[:=]\\s*["\']?(?:Bearer\\s+)?[^\\s,;"\'}]+/gi,"$1=[redacted]")}var E=class extends Error{code;details;constructor(d,f,l,m){super(`[fulgurjs:${d}] ${F(f)}`,m),this.name="FgError",this.code=d,this.details=l}},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",COMPONENT_EXPORT_INVALID:"MFU-018",VUE_RUNTIME_IDENTITY_MISMATCH:"MFU-019",REMOTE_RENDER_ERROR:"MFU-020"};function ie(c){if(typeof c!="object"||c===null)return!1;let d=globalThis,f=d.__FULGURJS_REPORTED_ERRORS__??=new WeakSet;return f.has(c)?!0:(f.add(c),!1)}var ae="6.14.4";var Ne="__fulgurjsSetup",Ce="__FULGURJS_APP_CONFIG__",J=15e3,ce=2,Fe=5,Ve=3e4,De=4e3,Ke=.2;function qe(){let c=Object.create(null),d=new Map,f=[],l=new Set,m=new Map,S=(e,r)=>JSON.stringify([r.shareScope||"default",r.shareKey||e,r.requiredVersion??null,!!r.singleton,!!r.strictVersion]),b=new Map,P=new Map,A=new WeakMap,V=new WeakMap,W=(e,r)=>{console.warn(`[fulgurjs] ${e} \\u94A9\\u5B50\\u5931\\u8D25\\uFF08\\u4E0D\\u5F71\\u54CD\\u52A0\\u8F7D\\uFF09\\uFF0C\\u8BF7\\u68C0\\u67E5\\uFF1A`,M(r))},_={},ue=()=>{for(let e of f)try{e.init?.(_)}catch(r){console.warn("[fulgurjs] \\u6269\\u5C55\\u521D\\u59CB\\u5316\\u5931\\u8D25\\uFF0C\\u8BF7\\u68C0\\u67E5\\uFF1A",e.name,M(r))}},D=new Map,K,q=e=>{let r=D.get(e);return r||D.set(e,r={}),r},z=()=>globalThis[Ce]??{};async function Y(e,r,n,o){let t=u=>{if(u instanceof E)return v({remote:e,error:u}),u;let a=new E(R.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${o} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${M(u)}\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:u});return v({remote:e,error:a}),a};K=e;let s;try{s=r(n)}catch(u){throw t(u)}finally{K=void 0}try{await s}catch(u){throw t(u)}}async function de(e,r,n,o){e.debug.setup="pending";try{if(e.manifestUrl)try{await B(`${e.name}/${n}`)}catch{}let t=await r.get(n),s=t?.default,u=t?.onSession!==void 0||t?.globalComponents!==void 0||t?.pageProviders!==void 0;if(s!==void 0&&typeof s!="function"||!s&&!u)throw new E(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 ${t==null?String(t):typeof s}\\uFF0C\\u4E14\\u6A21\\u5757\\u4E0D\\u6EE1\\u8DB3\\u521D\\u59CB\\u5316\\u58F0\\u660E\\u5951\\u7EA6\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u521D\\u59CB\\u5316\\u51FD\\u6570\\uFF0C\\u6216\\u53EA\\u58F0\\u660E onSession/globalComponents/pageProviders\\uFF1B\\u7A7A\\u6A21\\u5757\\u4E0E\\u975E\\u51FD\\u6570\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u65E0\\u6548\\u3002`,{remote:e.name,module:n});if(t.onSession!==void 0&&typeof t.onSession!="function")throw new E(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 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});if(o.setupExports=t,t.globalComponents!==void 0){if(typeof t.globalComponents!="object"||t.globalComponents===null||Array.isArray(t.globalComponents))throw new E(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\\uFF1AglobalComponents \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${Array.isArray(t.globalComponents)?"array":typeof t.globalComponents}\\uFF0C\\u5E94\\u4E3A\\u5BF9\\u8C61\\uFF08\\u952E=\\u7EC4\\u4EF6\\u6CE8\\u518C\\u540D\\uFF0C\\u503C=\\u7EC4\\u4EF6\\uFF09\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u6539\\u4E3A export const globalComponents = { \\u7EC4\\u4EF6\\u6CE8\\u518C\\u540D: \\u7EC4\\u4EF6 } \\u5F62\\u6001\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});o.globalComponents=t.globalComponents}if(t.pageProviders!==void 0){if(!Array.isArray(t.pageProviders))throw new E(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\\uFF1ApageProviders \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof t.pageProviders}\\uFF0C\\u5E94\\u4E3A\\u6570\\u7EC4\\uFF08\\u6BCF\\u9879=\\u7EC4\\u4EF6\\u6216\\u96F6\\u53C2 loader\\uFF09\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u6539\\u4E3A export const pageProviders = [AppProvider] \\u6216 [() => import(\'./X\').then((m) => m.AppProvider)] \\u5F62\\u6001\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});o.pageProviders=t.pageProviders}s&&await Y(e.name,s,{appContext:z(),signal:(o.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(t){throw e.debug.setup="failed",t?.code&&v({remote:e.name,error:t}),o.setupExports=void 0,o.globalComponents=void 0,o.pageProviders=void 0,t}}async function fe(e,r,n){let o=z(),t=o?.sessionKey;if(typeof t!="string"||t===""){let y=new E(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 ${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});throw v({remote:e.name,error:y}),y}if(r.sessionPromise&&r.sessionKey===t)return r.sessionPromise;r.controller?.abort();let s=new AbortController;r.controller=s,r.sessionKey=t;let u=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),a=(async()=>{await u,!s.signal.aborted&&await Y(e.name,n,{appContext:o,sessionKey:t,signal:s.signal},"onSession")})();return r.sessionPromise=a,a.catch(()=>{r.sessionKey===t&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),a}async function pe(e,r){let n=r?.[Ne];if(typeof n!="string"||n==="")return;let o=q(e.name);o.setupPromise||(o.setupPromise=de(e,r,n,o).catch(s=>{throw o.setupPromise=void 0,s})),await o.setupPromise;let t=o.setupExports?.onSession;typeof t=="function"&&await fe(e,o,t)}function me(){for(let e of D.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let L=e=>c[e]??=Object.create(null);function v(e){if(!ie(e.error)){try{_.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}}function ge(e="default"){return L(e),c}function H(e,r,n,o,t={}){let s=L(e||"default"),u=Object.hasOwn(s,r)?s[r]:void 0,a=u&&typeof u=="object"?u:void 0;a||(a=Object.create(null),s[r]=a),!(Object.hasOwn(a,n)&&a[n])&&(a[n]={version:n,get:o,from:t.from??"unknown",eager:!!t.eager,loaded:!!t.loaded})}function he(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 Z(e){for(let r of e){he(r);let n=d.get(r.name);d.set(r.name,{timeout:J,retries:ce,...n,...r,breakerThreshold:r.breaker?.threshold??n?.breakerThreshold??Fe,breakerResetMs:r.breaker?.resetMs??n?.breakerResetMs??Ve,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:j(r.entry),status:"idle",setup:"none"}})}}function ye(e){Z([e])}function Se(e){f.push(...e),m.clear(),ue()}function I(e,r,n=!1){let o=r.shareScope||"default",t=r.shareKey||e,u=L(o)[t]||{},a=Object.keys(u).filter(i=>!n||r.singleton||u[i].value!==void 0);if(n&&a.length===0)return;let y=r.requiredVersion,g=a.filter(i=>y===void 0||y===!1||U(i,y)),p;if(r.singleton&&a.length>0){let i=a.filter(h=>u[h].loaded);if(p=[...i.length?i:a].sort(x).pop(),!g.includes(p)){let h=u[p],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\\u8981\\u6C42 ${y??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${a.join("\\u3001")}\\uFF1B\\u5355\\u4F8B\\u5019\\u9009\\u4E3A ${h.from} \\u63D0\\u4F9B\\u7684 ${p}\\u3002\n`+(r.strictVersion?`\\u7ED3\\u679C\\uFF1AstrictVersion \\u5DF2\\u5F00\\u542F\\uFF0C\\u672C\\u6B21\\u52A0\\u8F7D\\u5DF2\\u62D2\\u7EDD\\uFF0C\\u672A\\u4EA4\\u4ED8\\u4E0D\\u517C\\u5BB9\\u5B9E\\u4F8B\\u3002\n`:`\\u7ED3\\u679C\\uFF1A\\u590D\\u7528\\u6B64\\u5355\\u4F8B\\uFF1B\\u8BF7\\u786E\\u8BA4\\u4E24\\u7AEF API \\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\\u3002";if(r.strictVersion){let T=new E(R.SHARE_STRICT_VERSION,O,{shareKey:t,requiredVersion:y});throw v({remote:h.from,error:T}),T}let $=`${o}|${t}|${y??"*"}|${p}|${a.join(",")}`;l.has($)||(l.add($),console.warn(`[fulgurjs:MFU-010] ${O}`))}}else if(p=[...g].sort(x).pop(),!p){if(r.strictVersion){let i=new E(R.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 ${y}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${a.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 v({remote:t,error:i}),i}return}return u[p]}function Q(e,r,n){let o=r.localVersion;if(!o||n===void 0)return;let t=r.shareScope||"default",s=r.shareKey||e,u=L(t),a=Object.hasOwn(u,s)?u[s]:void 0;if(a&&Object.keys(a).length>0){try{let g=I(e,r);if(g&&g.value===void 0){if(g.version===o)g.value=n,g.loaded=!0;else if(r.singleton&&!g.pendingGet){H(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let p=u[s][o];p.value=n,p.loaded=!0}}}catch{}return}H(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let y=u[s]?.[o];y&&(y.value=n)}async function ee(e,r={}){let n=r.shareScope||"default",o=r.shareKey||e,t=L(n)[o]||{},s=S(e,r),u=_.resolveShare?m.get(s):void 0,a=u||I(e,r);if(!a){if(r.fallback){let i=await r.fallback();return Q(e,r,i),i}let p=new E(R.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 v({remote:o,error:p}),p}if(_.resolveShare&&!u){let p=await _.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:a,available:Object.values(t)});p&&(a=p),m.set(s,a)}if(a.value!==void 0)return m.set(S(e,r),a),a.value;if(a.loaded=!0,!a.pendingGet)try{a.pendingGet=a.get()}catch(p){a.pendingGet=Promise.reject(p)}let y=a.pendingGet,g;try{g=await y}catch(p){if(a.value!==void 0)return m.set(S(e,r),a),a.value;throw a.loaded=!1,m.get(s)===a&&m.delete(s),p}finally{a.pendingGet===y&&(a.pendingGet=void 0)}return a.value===void 0&&(a.value=g),m.set(S(e,r),a),a.value}function Ee(e,r={}){return _.resolveShare?m.get(S(e,r))?.value:I(e,r,!0)?.value}function Re(e,r,n,o){Q(e,{...r,localVersion:n},o)}function we(e,r){let n=r.shareScope||"default",o=r.shareKey||e;if(_.resolveShare){let s=S(e,r),u=m.get(s);if(u&&u.value!==void 0)return{kind:"ready",value:u.value};let a=u||_.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:I(e,r),available:Object.values(L(n)[o]||{})});if(a&&typeof a.then=="function")throw Promise.resolve(a).catch(()=>{}),new E(R.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 y=a;if(y){if(y.value!==void 0)return m.set(S(e,r),y),{kind:"ready",value:y.value};if(y.version!==void 0&&y.version===r.localVersion)return{kind:"local"};throw new E(R.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u4E3A "${o}" \\u9009\\u62E9\\u4E86\\u672A\\u5C31\\u7EEA\\u7684 ${y.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=I(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||!U(r.localVersion,r.requiredVersion))){if(r.strictVersion||t.pendingGet)throw new E(R.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 l.has(s)||(l.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 be(e){if(_.resolveShare){for(let{name:r,opts:n}of e){let o=S(r,n);if(m.has(o))continue;let t=I(r,n),s=await _.resolveShare({shareKey:n.shareKey||r,shareScope:n.shareScope||"default",requiredVersion:n.requiredVersion,picked:t,available:Object.values(L(n.shareScope||"default")[n.shareKey||r]||{})})||t;s&&m.set(o,s)}for(let{name:r,opts:n}of e)await ee(r,n)}}function j(e=""){return F(e).split(/[?#]/,1)[0]}function re(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(u=>{clearTimeout(s),o(u)},u=>{clearTimeout(s),t(u)})})}let ve=e=>new Promise(r=>setTimeout(r,e)),ne=new Set;function G(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}`;ne.has(o)||(ne.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:R.REMOTE_NAME_MISMATCH})}}async function te(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)})),re(s,r.timeout??J,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${j(e)}`)}async function oe(e,r){let n=e.shareScope||"default";if(e.container){let s=V.get(e.container);if(s&&s!==n)throw new E(R.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(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(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,stage:"container"});throw v({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 i=await re(e.promise(),e.timeout??J,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),h=typeof i=="string"?await te(i,e):i;return G(h,e),h});else for(let i of[e.entry,...e.fallback??[]])s.push(async()=>{let h=await te(i,e);return G(h,e),h});let u,a,y=!1,g=r?.retries??e.retries??ce;for(let i of s){for(let h=0;h<=g;h++){let O=performance.now();try{u=await i(),e.lastLoadMs=Math.round(performance.now()-O),e.debug.lastLoadMs=e.lastLoadMs,y=!0;break}catch($){if(a=$,$?.code)throw $;h<g&&await ve(Math.min(De,200*2**h)*(1-Ke*(1-2*Math.random())))}}if(y)break}if(!y||!u){let i=j(e.entry),h=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${i}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),h.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),h.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${i}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),h.push("2. \\u68C0\\u67E5 Nginx/CDN \\u7684\\u5165\\u53E3\\u8DEF\\u5F84\\u6620\\u5C04\\uFF1B\\u8BE5\\u5730\\u5740\\u4E0D\\u80FD\\u56DE\\u9000\\u5230 index.html\\u3002")),new E(R.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${i} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${M(a)}\n\\u4FEE\\u6CD5\\uFF1A\n${h.join(`\n`)}`,{remote:e.name,stage:"container"},{cause:a})}G(u,e);let p=V.get(u);if(p&&p!==n)throw new E(R.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${p}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof u.init=="function"&&await u.init(c),V.set(u,n),e.container=u,e.state="loaded",e.debug.status="loaded",o.fails=0,u})();e.containerPromise=t;try{return await t}catch(s){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=M(s),o.fails+=1,o.fails>=e.breakerThreshold&&(o.openUntil=Date.now()+e.breakerResetMs,o.fails=0),s instanceof E)throw v({remote:e.name,error:s}),s;if(s?.code)throw v({remote:e.name,error:s}),s;let u=new E(R.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(s)}\\u3002\\u8BF7\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u3001\\u7F51\\u7EDC\\u53CA\\u5171\\u4EAB\\u4F9D\\u8D56\\u3002`,{remote:e.name,stage:"container"},{cause:s});throw v({remote:e.name,error:u}),u}}function X(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:se(e.slice(r+1))}}function se(e){return e?e.startsWith(".")?e:`./${e}`:""}async function Pe(e,r){let{remote:n,module:o}=X(e);if(o&&K===n)throw new E(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{_.beforeLoadRemote?.({remote:n,module:o})}catch(i){W("beforeLoadRemote",i)}let t=d.get(n);if(!t)throw new E(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 s;try{let i=o&&t.manifestUrl?B(e):Promise.resolve();[s]=await Promise.all([oe(t,{retries:r?.retries}),i])}catch(i){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF1B\\u4F7F\\u7528\\u914D\\u7F6E\\u7684 fallbackModule\\u3002\\u6458\\u8981\\uFF1A`,M(i)),v({remote:n,error:i}),await r.fallbackModule();throw i}if(!o)return s;await pe(t,s);let u=q(n).globalComponents,a=r?.consumerApp;if(u&&a&&typeof a.component=="function")for(let i of Object.keys(u))a.component(i,u[i]);let y=q(n).pageProviders;y&&y.length>0&&typeof a?.pageProviders=="function"&&a.pageProviders(y);let g=`${n}@${t.shareScope||"default"}#${o}`;b.has(g)||b.set(g,s.get(o).catch(i=>{if(b.delete(g),i instanceof E||i?.code)throw v({remote:n,error:i}),i;let h=new E(R.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u52A0\\u8F7D\\u6A21\\u5757 "${o}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(i)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:n,module:o,stage:"expose"},{cause:i});throw v({remote:n,error:h}),h}));let p;try{p=await b.get(g)}catch(i){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF1B\\u4F7F\\u7528\\u914D\\u7F6E\\u7684 fallbackModule\\u3002\\u6458\\u8981\\uFF1A`,M(i)),v({remote:n,error:i}),await r.fallbackModule();throw i}try{_.afterLoadRemote?.({remote:n,module:o,module_ns:p})}catch(i){W("afterLoadRemote",i)}if(p&&typeof p=="object"&&Object.keys(p).length===0){let i=new E(R.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});v({remote:n,error:i}),console.error(i.message)}return p}function $e(e){let r=d.get(e);if(!r)throw new E(R.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:e});return oe(r)}async function B(e,r={}){let{remote:n,module:o}=X(e),t=d.get(n);if(!t)throw new E(R.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",u=(g,p)=>{if(g.sheet)return Promise.resolve();let i=A.get(g);if(i)return i;let h=new Promise(O=>{let $=()=>{g.removeEventListener("load",$),g.removeEventListener("error",T),O()},T=()=>{v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${p}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:n})}),$()};g.addEventListener("load",$,{once:!0}),g.addEventListener("error",T,{once:!0}),g.sheet&&$()});return A.set(g,h),h},a=(g,p)=>{if(typeof document>"u")return Promise.resolve();let i=document.querySelector(`link[href="${g}"]`);if(i)return p==="style"&&s==="preload"?A.get(i)??Promise.resolve():Promise.resolve();let h=document.createElement("link");h.rel=p==="style"?"stylesheet":"modulepreload",h.href=g,s==="prefetch"&&(h.fetchPriority="low");let O=p==="style"?u(h,g):Promise.resolve();return document.head.appendChild(h),p==="style"&&s==="preload"?O:Promise.resolve()},y=g=>{let p=typeof document<"u"?document.baseURI:void 0,i=new URL(t.entry,p||"http://fulgurjs.invalid/");return!i.pathname.endsWith("/")&&!i.pathname.split("/").pop().includes(".")&&(i.pathname+="/"),new URL(g,i).href};try{if(t.manifestUrl){let g=P.get(t.manifestUrl);g||(g=fetch(t.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(i=>i.ok?i.json():void 0),P.set(t.manifestUrl,g),g.then(i=>{i||P.delete(t.manifestUrl)},()=>P.delete(t.manifestUrl)));let p=await g;if(p){let i=p.schemaVersion;if(typeof i=="number"&&(!Number.isInteger(i)||i>1)){v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(i)}\\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 a(t.entry,"modulepreload");return}await a(t.entry,"modulepreload");let h=p.exposes,O=Array.isArray(h)?h.filter(k=>k&&typeof k=="object").map(k=>[String(k.name??""),k]):h&&typeof h=="object"?Object.entries(h):[],$=o?O.filter(([k,N])=>se(String(N?.name??k))===o):O,T=[];for(let[,k]of $)if(typeof k?.file=="string"&&await a(y(k.file),"modulepreload"),Array.isArray(k?.css))for(let N of k.css){if(typeof N!="string")continue;let _e=a(y(N),"style");s==="preload"&&T.push(_e)}await Promise.all(T);return}}await a(t.entry,"modulepreload")}catch(g){v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(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 d)e[r]={...n.debug,entry:j(n.entry)};return e},errors:[]}),{shareScopeMap:c,initSharing:ge,registerShare:H,registerRemotes:Z,registerRemote:ye,registerPlugins:Se,loadShare:ee,loadShareSync:we,prepareShares:be,getLoadedShare:Ee,pinLoadedShare:Re,loadRemote:Pe,getContainer:$e,preloadRemote:B,parseSpec:X,clearSessionState:me,reportRemoteError:e=>{v(e)}}}var le=globalThis,w=le.__FULGURJS_RUNTIME__??qe();le.__FULGURJS_RUNTIME__=w;try{Object.freeze(w)}catch{}var Ye=ae;function Ze(){return w}var Qe=w.initSharing,er=w.registerShare,rr=w.registerRemotes,nr=w.registerRemote,tr=w.registerPlugins,or=w.loadShare,sr=w.getLoadedShare,ir=w.prepareShares||(async c=>{for(let{name:d,opts:f}of c)await w.loadShare(d,f)}),ar=w.loadShareSync,cr=w.pinLoadedShare,lr=w.loadRemote,ur=w.getContainer,dr=w.preloadRemote,fr=w.parseSpec,pr=w.clearSessionState,mr=w.shareScopeMap;function gr(c){if(c&&typeof c=="object"&&"default"in c){let d=c.default;return d!==void 0?d:c}return c}var hr=w;export{pr as clearSessionState,hr as default,ur as getContainer,sr as getLoadedShare,Ze as getRuntime,Qe as initSharing,lr as loadRemote,or as loadShare,ar as loadShareSync,fr as parseSpec,cr as pinLoadedShare,dr as preloadRemote,ir as prepareShares,tr as registerPlugins,nr as registerRemote,rr as registerRemotes,er as registerShare,w as runtime,mr as shareScopeMap,gr as unwrapDefault,Ye as version};\n';
4056
4215
 
4057
4216
  // src/index.ts
4058
4217
  function readRuntimeCode() {
@@ -4069,7 +4228,7 @@ function enumerateCjsExports(packageName, appRoot) {
4069
4228
  if (cached) return cached;
4070
4229
  let names = [];
4071
4230
  try {
4072
- const appRequire = (0, import_node_module4.createRequire)(import_node_path10.default.join(appRoot, "package.json"));
4231
+ const appRequire = (0, import_node_module4.createRequire)(import_node_path11.default.join(appRoot, "package.json"));
4073
4232
  const mod = appRequire(packageName);
4074
4233
  names = Object.keys(mod);
4075
4234
  } catch {
@@ -4187,7 +4346,7 @@ async function resolveSharedImportTarget(item, root) {
4187
4346
  const specifier = item.import;
4188
4347
  if (typeof specifier !== "string") return item.shareKey;
4189
4348
  try {
4190
- const resolved = await this.resolve?.(specifier, import_node_path10.default.join(root, "package.json"), { skipSelf: true });
4349
+ const resolved = await this.resolve?.(specifier, import_node_path11.default.join(root, "package.json"), { skipSelf: true });
4191
4350
  if (resolved?.id) return resolved.id;
4192
4351
  } catch {
4193
4352
  }
@@ -4221,7 +4380,7 @@ function federation(options) {
4221
4380
  enforce: "pre",
4222
4381
  async config(userConfig, env) {
4223
4382
  state.command = env.command;
4224
- const root = import_node_path10.default.resolve(userConfig.root ?? process.cwd());
4383
+ const root = import_node_path11.default.resolve(userConfig.root ?? process.cwd());
4225
4384
  const normalized = normalizeOptions(options, root, env.command);
4226
4385
  state.normalized = normalized;
4227
4386
  state.rolldownBuild = env.command === "build" && Number((readInstalledVersion(root, "vite") ?? "0").split(".")[0]) >= 8;
@@ -4500,7 +4659,7 @@ export { default } from ${JSON.stringify(url)};
4500
4659
  },
4501
4660
  resolveId(source, importer) {
4502
4661
  if (state.normalized && importer && (importer.includes("virtual:fulgurjs-shared:") || importer.includes("virtual:fulgurjs-shared-ns:")) && /^\.\.?\//.test(source) && !source.startsWith("virtual:fulgurjs-")) {
4503
- const resolved = import_node_path10.default.resolve(state.normalized.root, source);
4662
+ const resolved = import_node_path11.default.resolve(state.normalized.root, source);
4504
4663
  return resolved + (source.match(/\?[^/]*$/)?.[0] ?? "");
4505
4664
  }
4506
4665
  let s = source;
@@ -4594,7 +4753,7 @@ export { default } from ${JSON.stringify(url)};
4594
4753
  }
4595
4754
  let importTarget = item.import;
4596
4755
  try {
4597
- const resolvedImport = await this.resolve?.(item.import, import_node_path10.default.join(state.normalized.root, "package.json"), { skipSelf: true });
4756
+ const resolvedImport = await this.resolve?.(item.import, import_node_path11.default.join(state.normalized.root, "package.json"), { skipSelf: true });
4598
4757
  if (resolvedImport?.id) importTarget = resolvedImport.id;
4599
4758
  } catch {
4600
4759
  }
@@ -4703,7 +4862,7 @@ ${code}`, map: null };
4703
4862
  const srcRe = /src=["']([^"']+)["']/;
4704
4863
  const entryPath = (src) => {
4705
4864
  const file = src.startsWith("/@fs/") ? src.slice(4) : src;
4706
- return import_node_path10.default.isAbsolute(file) && import_node_fs8.default.existsSync(file) ? file : import_node_path10.default.resolve(state.normalized.root, src.startsWith("/") ? src.slice(1) : src);
4865
+ return import_node_path11.default.isAbsolute(file) && import_node_fs8.default.existsSync(file) ? file : import_node_path11.default.resolve(state.normalized.root, src.startsWith("/") ? src.slice(1) : src);
4707
4866
  };
4708
4867
  for (const tag of html.match(moduleScriptRe) ?? []) {
4709
4868
  const src = srcRe.exec(tag)?.[1];
@@ -4734,7 +4893,7 @@ ${code}`, map: null };
4734
4893
  state.providerEntrySeeds = [];
4735
4894
  providerClosureCache.clear();
4736
4895
  providerClosureBuilt = false;
4737
- const providerRequire = (0, import_node_module4.createRequire)(import_node_path10.default.join(n.root, "package.json"));
4896
+ const providerRequire = (0, import_node_module4.createRequire)(import_node_path11.default.join(n.root, "package.json"));
4738
4897
  for (const item of n.shared) {
4739
4898
  if (item.import === false) continue;
4740
4899
  try {
@@ -4751,7 +4910,7 @@ ${code}`, map: null };
4751
4910
  {
4752
4911
  for (const item of n.shared) {
4753
4912
  if (item.import === false) continue;
4754
- const resolved = await this.resolve(item.import, import_node_path10.default.join(n.root, "index.html"));
4913
+ const resolved = await this.resolve(item.import, import_node_path11.default.join(n.root, "index.html"));
4755
4914
  const file = resolved?.id.replace(/^\0/, "").split("?")[0];
4756
4915
  if (!file) continue;
4757
4916
  const marker = "/node_modules/";
@@ -4769,7 +4928,7 @@ ${code}`, map: null };
4769
4928
  if (state.manualChunkSpecsPending) {
4770
4929
  for (const [group, specifier] of state.manualChunkSpecsPending) {
4771
4930
  try {
4772
- const r = await this.resolve(specifier, import_node_path10.default.join(n.root, "index.html"));
4931
+ const r = await this.resolve(specifier, import_node_path11.default.join(n.root, "index.html"));
4773
4932
  if (r?.id) {
4774
4933
  state.manualChunkGroups.set(r.id, group);
4775
4934
  state.manualChunkGroups.set(r.id.split("?")[0], group);
@@ -4799,7 +4958,7 @@ ${code}`, map: null };
4799
4958
  };
4800
4959
  for (const item of n.shared) {
4801
4960
  if (item.import === false) continue;
4802
- const selfFile = await this.resolve(item.import, import_node_path10.default.join(n.root, "index.html")).then(
4961
+ const selfFile = await this.resolve(item.import, import_node_path11.default.join(n.root, "index.html")).then(
4803
4962
  (r) => r?.id?.split("?")[0] ?? null
4804
4963
  ).catch(() => null);
4805
4964
  for (const alias of item.aliases) {
@@ -4814,7 +4973,7 @@ ${code}`, map: null };
4814
4973
  }
4815
4974
  }
4816
4975
  if (!file) {
4817
- file = await this.resolve(alias, import_node_path10.default.join(n.root, "index.html")).then(
4976
+ file = await this.resolve(alias, import_node_path11.default.join(n.root, "index.html")).then(
4818
4977
  (r) => r?.id?.split("?")[0] ?? null
4819
4978
  ).catch(() => null);
4820
4979
  }
@@ -4837,7 +4996,7 @@ ${code}`, map: null };
4837
4996
  }
4838
4997
  if (n.exposes.length > 0) {
4839
4998
  for (const e of n.exposes) {
4840
- const resolved = await this.resolve(e.import, import_node_path10.default.join(n.root, "index.html"));
4999
+ const resolved = await this.resolve(e.import, import_node_path11.default.join(n.root, "index.html"));
4841
5000
  if (resolved) {
4842
5001
  state.exposeAbsPaths[e.import] = resolved.id.split("?")[0];
4843
5002
  } else {
@@ -5102,7 +5261,7 @@ ${entryChunk.code}`;
5102
5261
  if (n.exposes.length > 0 && n.dts) {
5103
5262
  typesServer = createDevTypesServer(n);
5104
5263
  let regenTimer = null;
5105
- const syncedTypesDir = typeof n.dts === "object" && n.dts.dir ? import_node_path10.default.resolve(n.root, n.dts.dir) : import_node_path10.default.join(n.root, import_node_fs8.default.existsSync(import_node_path10.default.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types");
5264
+ const syncedTypesDir = typeof n.dts === "object" && n.dts.dir ? import_node_path11.default.resolve(n.root, n.dts.dir) : import_node_path11.default.join(n.root, import_node_fs8.default.existsSync(import_node_path11.default.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types");
5106
5265
  const scheduleRegen = (id) => {
5107
5266
  if (!isTypesInputChange(n.root, id, syncedTypesDir)) return;
5108
5267
  if (regenTimer) clearTimeout(regenTimer);
@@ -5169,9 +5328,9 @@ ${entryChunk.code}`;
5169
5328
  if (n.remotes.length > 0 && n.dts && state.command === "serve") {
5170
5329
  server.httpServer?.once("listening", () => {
5171
5330
  const dtsOpt = n.dts === true ? true : n.dts;
5172
- const typesRoot = import_node_path10.default.join(
5331
+ const typesRoot = import_node_path11.default.join(
5173
5332
  n.root,
5174
- dtsOpt === false ? "" : (typeof dtsOpt === "object" ? dtsOpt.dir : void 0) ?? (import_node_fs8.default.existsSync(import_node_path10.default.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types")
5333
+ dtsOpt === false ? "" : (typeof dtsOpt === "object" ? dtsOpt.dir : void 0) ?? (import_node_fs8.default.existsSync(import_node_path11.default.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types")
5175
5334
  );
5176
5335
  try {
5177
5336
  if (import_node_fs8.default.existsSync(typesRoot)) {
@@ -5187,7 +5346,10 @@ ${entryChunk.code}`;
5187
5346
  const stop = startRemoteTypesSyncLoop({
5188
5347
  root: n.root,
5189
5348
  typesRoot,
5190
- remotes: syncable.map((r) => ({ key: r.key, devEntry: r.devEntry }))
5349
+ remotes: syncable.map((r) => ({ key: r.key, devEntry: r.devEntry })),
5350
+ // 消费/提供双角色的公开源码可能直接 import 上游具名类型。
5351
+ // 首轮编译早于同步时会失败;仅在新类型原子写入后重检,普通轮询不触发。
5352
+ onSynced: () => typesServer?.invalidate()
5191
5353
  });
5192
5354
  server.httpServer?.once("close", stop);
5193
5355
  });
@@ -5227,7 +5389,7 @@ ${entryChunk.code}`;
5227
5389
  async transform(code, id) {
5228
5390
  if (!state.normalized) return null;
5229
5391
  const clean = id.split("?")[0];
5230
- const isAppSource = clean.startsWith(state.normalized.root + import_node_path10.default.sep) && !clean.includes(`${import_node_path10.default.sep}node_modules${import_node_path10.default.sep}`) && !clean.includes(`${import_node_path10.default.sep}.vite${import_node_path10.default.sep}`);
5392
+ const isAppSource = clean.startsWith(state.normalized.root + import_node_path11.default.sep) && !clean.includes(`${import_node_path11.default.sep}node_modules${import_node_path11.default.sep}`) && !clean.includes(`${import_node_path11.default.sep}.vite${import_node_path11.default.sep}`);
5231
5393
  const evidence = isAppSource && clean.endsWith(".vue") && (!id.includes("?") || /[?&]type=script(?:&|$)/.test(id)) ? tagVueRuntime(code, (source) => this.parse(source)) : null;
5232
5394
  if (evidence) code = evidence.code;
5233
5395
  const entryRewrite = state.command === "serve" && isAppSource ? await rewriteRuntimeEntryImports(code, isExposeTargetFile(clean, state.normalized.root, state.normalized.exposes)) : null;
@@ -5273,7 +5435,7 @@ ${entryChunk.code}`;
5273
5435
  if (!n) return;
5274
5436
  for (const s of n.shared) {
5275
5437
  if (s.import === false) continue;
5276
- void server.pluginContainer.resolveId(s.import, import_node_path10.default.join(n.root, "index.html")).then((r) => {
5438
+ void server.pluginContainer.resolveId(s.import, import_node_path11.default.join(n.root, "index.html")).then((r) => {
5277
5439
  if (r?.id) state.resolvedSharedPaths.set(r.id.split("?")[0], s.configKey);
5278
5440
  }).catch(() => {
5279
5441
  });