@fulgurjs/federation 6.14.3 → 6.14.5

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
@@ -34,8 +34,8 @@ __export(index_exports, {
34
34
  federation: () => federation
35
35
  });
36
36
  module.exports = __toCommonJS(index_exports);
37
- var import_node_fs8 = __toESM(require("fs"), 1);
38
- var import_node_path10 = __toESM(require("path"), 1);
37
+ var import_node_fs9 = __toESM(require("fs"), 1);
38
+ var import_node_path12 = __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.3";
72
+ var RUNTIME_VERSION = "6.14.5";
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);
1816
- var import_node_fs4 = __toESM(require("fs"), 1);
1815
+ var import_node_path7 = __toESM(require("path"), 1);
1816
+ var import_node_fs5 = __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
  };
@@ -2801,14 +2959,144 @@ function rewriteSpecifiers(ts, text, srcAbs, srcToRel, resolver, externals, root
2801
2959
  return out;
2802
2960
  }
2803
2961
 
2962
+ // src/dts-cache-worker-client.ts
2963
+ var import_node_fs4 = __toESM(require("fs"), 1);
2964
+ var import_node_path6 = __toESM(require("path"), 1);
2965
+ var import_node_crypto2 = __toESM(require("crypto"), 1);
2966
+ var import_node_url = require("url");
2967
+ var import_node_worker_threads = require("worker_threads");
2968
+ var import_meta = {};
2969
+ function createTypesCacheWorker() {
2970
+ let worker = null;
2971
+ let disposed = false;
2972
+ const pending = /* @__PURE__ */ new Map();
2973
+ const temporary = /* @__PURE__ */ new Set();
2974
+ let watches = [];
2975
+ const fail = (error) => {
2976
+ for (const request of pending.values()) request.reject(error);
2977
+ pending.clear();
2978
+ };
2979
+ const ensure = () => {
2980
+ if (disposed) throw new Error("\u7C7B\u578B\u7F13\u5B58\u670D\u52A1\u5DF2\u5173\u95ED");
2981
+ if (worker) return worker;
2982
+ const self = typeof __filename === "string" ? __filename : (0, import_node_url.fileURLToPath)(import_meta.url);
2983
+ const directory = import_node_path6.default.dirname(self);
2984
+ const file = [import_node_path6.default.join(directory, "dts-cache-worker.cjs"), import_node_path6.default.join(directory, "../dist/dts-cache-worker.cjs")].find((file2) => import_node_fs4.default.existsSync(file2));
2985
+ if (!file) throw new Error("\u7C7B\u578B\u7F13\u5B58\u540E\u53F0\u7A0B\u5E8F\u7F3A\u5931\uFF0C\u8BF7\u91CD\u65B0\u6784\u5EFA\u6216\u5B89\u88C5\u63D2\u4EF6");
2986
+ const running = new import_node_worker_threads.Worker(file);
2987
+ worker = running;
2988
+ running.on("message", (response) => {
2989
+ const request = pending.get(response.id);
2990
+ if (!request) return;
2991
+ pending.delete(response.id);
2992
+ if (pending.size === 0) running.unref();
2993
+ if (response.ok) request.resolve(response.value);
2994
+ else request.reject(new Error(response.error ?? "\u7C7B\u578B\u7F13\u5B58\u540E\u53F0\u4EFB\u52A1\u5931\u8D25"));
2995
+ });
2996
+ running.on("error", (error) => fail(error));
2997
+ running.on("exit", (code) => {
2998
+ if (worker === running) worker = null;
2999
+ if (!disposed) fail(new Error(`\u7C7B\u578B\u7F13\u5B58\u540E\u53F0\u7A0B\u5E8F\u9000\u51FA\uFF08${code}\uFF09`));
3000
+ });
3001
+ running.unref();
3002
+ return running;
3003
+ };
3004
+ const call = (operation, input, payload = {}) => new Promise((resolve, reject) => {
3005
+ const id = import_node_crypto2.default.randomUUID();
3006
+ try {
3007
+ const running = ensure();
3008
+ pending.set(id, { resolve, reject });
3009
+ running.ref();
3010
+ running.postMessage({ id, operation, input: { ...input, execution: { env: Object.fromEntries(Object.entries(process.env).filter(([key]) => /^(NODE_ENV|NODE_OPTIONS|TS_NODE_|VUE_|VOLAR_)/.test(key))), execArgv: process.execArgv } }, ...payload });
3011
+ } catch (error) {
3012
+ pending.delete(id);
3013
+ if (pending.size === 0) worker?.unref();
3014
+ reject(error);
3015
+ }
3016
+ });
3017
+ return {
3018
+ read: (input) => call("read", input),
3019
+ capture: (input) => call("capture", input),
3020
+ validate: (input, handle, stable) => call("validate", input, { token: handle.token, stable }),
3021
+ async write(input, handle, result) {
3022
+ const temporaryId = import_node_crypto2.default.randomUUID();
3023
+ const digest = import_node_crypto2.default.createHash("sha256").update(import_node_path6.default.resolve(input.root)).digest("hex").slice(0, 12);
3024
+ const file = import_node_path6.default.join(input.root, "node_modules/.cache/fulgurjs/types", `provider-${digest}.json.gz.${process.pid}.${temporaryId}.tmp`);
3025
+ temporary.add(file);
3026
+ try {
3027
+ return await call("write", input, { token: handle.token, result, temporaryId });
3028
+ } finally {
3029
+ if (!disposed) {
3030
+ temporary.delete(file);
3031
+ try {
3032
+ import_node_fs4.default.rmSync(file, { force: true });
3033
+ } catch {
3034
+ }
3035
+ }
3036
+ }
3037
+ },
3038
+ async release(input, handle) {
3039
+ if (!disposed) await call("release", input, { token: handle.token });
3040
+ },
3041
+ watch(handle, changed) {
3042
+ const groups = /* @__PURE__ */ new Map();
3043
+ for (const file of handle.externalInputs) {
3044
+ let directory = import_node_path6.default.dirname(file);
3045
+ for (; ; ) {
3046
+ try {
3047
+ if (import_node_fs4.default.statSync(directory).isDirectory()) break;
3048
+ } catch {
3049
+ }
3050
+ const parent = import_node_path6.default.dirname(directory);
3051
+ if (parent === directory) break;
3052
+ directory = parent;
3053
+ }
3054
+ const name = import_node_path6.default.relative(directory, file).split(import_node_path6.default.sep)[0];
3055
+ const names = groups.get(directory) ?? /* @__PURE__ */ new Set();
3056
+ names.add(name);
3057
+ groups.set(directory, names);
3058
+ }
3059
+ const next = [];
3060
+ try {
3061
+ for (const [directory, names] of groups) next.push(import_node_fs4.default.watch(directory, { persistent: false }, (_event, filename) => {
3062
+ if (!filename || names.has(filename.toString().split(import_node_path6.default.sep)[0])) changed();
3063
+ }));
3064
+ } catch (error) {
3065
+ for (const watcher of next) watcher.close();
3066
+ throw error;
3067
+ }
3068
+ for (const watcher of watches) watcher.close();
3069
+ watches = next;
3070
+ },
3071
+ dispose() {
3072
+ if (disposed) return;
3073
+ disposed = true;
3074
+ for (const watcher of watches) watcher.close();
3075
+ watches = [];
3076
+ fail(new Error("\u7C7B\u578B\u7F13\u5B58\u670D\u52A1\u5DF2\u5173\u95ED"));
3077
+ const running = worker;
3078
+ worker = null;
3079
+ if (running) void running.terminate().finally(() => {
3080
+ for (const file of temporary) {
3081
+ try {
3082
+ import_node_fs4.default.rmSync(file, { force: true });
3083
+ } catch {
3084
+ }
3085
+ }
3086
+ temporary.clear();
3087
+ });
3088
+ }
3089
+ };
3090
+ }
3091
+
2804
3092
  // src/dts-serve.ts
2805
3093
  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;
3094
+ const relative = import_node_path7.default.relative(root, id);
3095
+ if (relative === ".." || relative.startsWith(`..${import_node_path7.default.sep}`) || import_node_path7.default.isAbsolute(relative)) return false;
3096
+ if (relative.split(import_node_path7.default.sep).some((part) => part === "node_modules" || part === ".vite")) return false;
3097
+ if (import_node_path7.default.basename(id).startsWith(".fulgurjs-types-tsconfig-")) return false;
3098
+ const outputRelative = import_node_path7.default.relative(outputDir, id);
3099
+ if (!(outputRelative.startsWith(`..${import_node_path7.default.sep}`) || import_node_path7.default.isAbsolute(outputRelative))) return false;
2812
3100
  return /\.(?:[cm]?[jt]sx?|vue|json)$/i.test(id);
2813
3101
  }
2814
3102
  function createDevTypesServer(options, hooks = {}) {
@@ -2823,46 +3111,141 @@ function createDevTypesServer(options, hooks = {}) {
2823
3111
  let lastErrorKey = null;
2824
3112
  let incrementalDir;
2825
3113
  const clearCache = () => {
2826
- if (incrementalDir) import_node_fs4.default.rmSync(incrementalDir, { recursive: true, force: true });
3114
+ if (incrementalDir) import_node_fs5.default.rmSync(incrementalDir, { recursive: true, force: true });
2827
3115
  incrementalDir = void 0;
2828
3116
  };
2829
3117
  const publicExposes = options.exposes.filter((e) => !e.internal).map((e) => ({ name: e.name, import: e.import }));
3118
+ const cacheInput = { root: options.root, exposes: publicExposes, pluginVersion: options.pluginVersion, dts: options.dts };
3119
+ let cacheUnavailableAnnounced = false;
3120
+ let inputEpoch = 0;
3121
+ const cache = createTypesCacheWorker();
3122
+ const changed = () => {
3123
+ inputEpoch++;
3124
+ void ensure();
3125
+ };
3126
+ const queueRecheck = (reason) => {
3127
+ pendingInvalidate = true;
3128
+ log(`[fulgurjs] \u7C7B\u578B\u8F93\u5165\u5728\u6821\u9A8C/\u751F\u6210\u671F\u95F4\u53D8\u5316${reason ? `\uFF08${reason}\uFF09` : ""}\uFF0C\u5DF2\u6392\u961F\u91CD\u68C0\uFF1B\u672C\u8F6E\u7ED3\u679C\u4E0D\u53D1\u5E03\u5230\u7F13\u5B58\u3002`);
3129
+ };
2830
3130
  const run = async () => {
3131
+ await new Promise((resolve) => setImmediate(resolve));
2831
3132
  if (disposed) return;
2832
- let result;
3133
+ const epoch = inputEpoch;
3134
+ const started = performance.now();
3135
+ let handle = null;
2833
3136
  try {
2834
- if (!incrementalDir) {
2835
- const cacheRoot = import_node_path5.default.join(options.root, "node_modules");
2836
- import_node_fs4.default.mkdirSync(cacheRoot, { recursive: true });
2837
- incrementalDir = import_node_fs4.default.mkdtempSync(import_node_path5.default.join(cacheRoot, ".fulgurjs-types-cache-"));
3137
+ try {
3138
+ const cached = await cache.read(cacheInput);
3139
+ if (disposed) return;
3140
+ if (cached) {
3141
+ handle = cached;
3142
+ cache.watch(cached, changed);
3143
+ const reason = await cache.validate(cacheInput, cached, false);
3144
+ if (disposed) return;
3145
+ if (epoch !== inputEpoch || pendingInvalidate) {
3146
+ queueRecheck();
3147
+ return;
3148
+ }
3149
+ if (!reason) {
3150
+ files = cached.result.files;
3151
+ revision = cached.result.index.revision;
3152
+ lastErrorKey = null;
3153
+ log(`[fulgurjs] \u7C7B\u578B\u7F13\u5B58\u547D\u4E2D\uFF08\u540E\u53F0\u8F93\u5165\u4E0E\u58F0\u660E\u6458\u8981\u6821\u9A8C ${Math.round(performance.now() - started)}ms\uFF0C${cached.result.fileCount} \u4E2A\u58F0\u660E\u6587\u4EF6\uFF0Crevision ${revision}\uFF09\uFF0C\u65E0\u9700\u91CD\u65B0\u7F16\u8BD1\u3002`);
3154
+ return;
3155
+ }
3156
+ await cache.release(cacheInput, cached);
3157
+ handle = null;
3158
+ }
3159
+ handle = await cache.capture(cacheInput);
3160
+ if (disposed) return;
3161
+ if (handle) cache.watch(handle, changed);
3162
+ else if (!cacheUnavailableAnnounced) {
3163
+ cacheUnavailableAnnounced = true;
3164
+ log("[fulgurjs] \u7C7B\u578B\u7F13\u5B58\uFF1A\u65E0\u6CD5\u5EFA\u7ACB\u5B8C\u6574\u8F93\u5165\u5FEB\u7167\uFF0C\u4F7F\u7528\u6B63\u5E38\u7F16\u8BD1\uFF1B\u81EA\u5B9A\u4E49\u7F16\u8BD1\u63D2\u4EF6\u3001\u5916\u90E8\u6A21\u677F\u6216\u5DE5\u5177\u4E0D\u53EF\u8BFB\u53D6\u65F6\u4E0D\u590D\u7528\u6301\u4E45\u7F13\u5B58\u3002");
3165
+ }
3166
+ } catch (error) {
3167
+ if (disposed) return;
3168
+ if (handle) await cache.release(cacheInput, handle).catch(() => {
3169
+ });
3170
+ handle = null;
3171
+ if (!cacheUnavailableAnnounced) {
3172
+ cacheUnavailableAnnounced = true;
3173
+ warn(`[fulgurjs] \u7C7B\u578B\u7F13\u5B58\u540E\u53F0\u68C0\u67E5\u4E0D\u53EF\u7528\uFF1A${error.message}\uFF1B\u5DF2\u56DE\u5230\u6B63\u5E38\u751F\u6210\u3002\u8BF7\u68C0\u67E5\u63D2\u4EF6\u5B89\u88C5\u53CA\u7F13\u5B58\u76EE\u5F55\u6743\u9650\u3002`);
3174
+ }
2838
3175
  }
2839
- result = await generateTypesBundle({
2840
- root: options.root,
2841
- exposes: publicExposes,
2842
- pluginVersion: options.pluginVersion,
2843
- signal: controller.signal,
2844
- incrementalDir
2845
- });
2846
- } catch (e) {
2847
- result = { ok: false, diagnostics: [`\u58F0\u660E\u751F\u6210\u53D1\u751F\u672A\u9884\u671F\u5F02\u5E38\uFF08\u5DF2\u62E6\u622A\uFF09\uFF1A${e.stack ?? e.message}`] };
2848
- }
2849
- if (disposed) return;
2850
- if (result.ok) {
2851
- files = result.files;
2852
- revision = result.index.revision;
2853
- lastErrorKey = null;
2854
- log(
2855
- `[fulgurjs] \u7C7B\u578B\u8D44\u6E90\u5DF2\u751F\u6210\uFF08${result.tool}\uFF0C${result.fileCount} \u4E2A\u58F0\u660E\u6587\u4EF6\uFF0Crevision ${result.index.revision}\uFF09${result.index.externals.length > 0 ? `\uFF1B\u5916\u90E8\u7C7B\u578B\u4F9D\u8D56\uFF1A${result.index.externals.join(", ")}` : ""}\u3002\u5BBF\u4E3B\u5C06\u81EA\u52A8\u540C\u6B65\u3002`
2856
- );
2857
- } else {
2858
- files = null;
2859
- revision = null;
2860
- const key = result.diagnostics.join("\n");
2861
- if (key !== lastErrorKey) {
2862
- lastErrorKey = key;
2863
- warn(`[fulgurjs] TYP-001 \u8FDC\u7A0B\u7C7B\u578B\u8D44\u6E90\u751F\u6210\u5931\u8D25\uFF08manifest \u4E0D\u643A\u5E26 types\uFF0C\u5BBF\u4E3B\u7C7B\u578B\u540C\u6B65\u5C06\u63D0\u793A\u672A\u63D0\u4F9B\uFF09\uFF1A
3176
+ let result;
3177
+ try {
3178
+ if (!incrementalDir) {
3179
+ const cacheRoot = import_node_path7.default.join(options.root, "node_modules");
3180
+ import_node_fs5.default.mkdirSync(cacheRoot, { recursive: true });
3181
+ incrementalDir = import_node_fs5.default.mkdtempSync(import_node_path7.default.join(cacheRoot, ".fulgurjs-types-cache-"));
3182
+ }
3183
+ result = await generateTypesBundle({
3184
+ root: options.root,
3185
+ exposes: publicExposes,
3186
+ pluginVersion: options.pluginVersion,
3187
+ signal: controller.signal,
3188
+ incrementalDir
3189
+ });
3190
+ } catch (e) {
3191
+ result = { ok: false, diagnostics: [`\u58F0\u660E\u751F\u6210\u53D1\u751F\u672A\u9884\u671F\u5F02\u5E38\uFF08\u5DF2\u62E6\u622A\uFF09\uFF1A${e.stack ?? e.message}`] };
3192
+ }
3193
+ if (disposed) return;
3194
+ let changedDuringGeneration = pendingInvalidate || epoch !== inputEpoch;
3195
+ if (handle) {
3196
+ try {
3197
+ const reason = await cache.validate(cacheInput, handle, true);
3198
+ if (reason) {
3199
+ queueRecheck(reason);
3200
+ return;
3201
+ }
3202
+ } catch (error) {
3203
+ if (disposed) return;
3204
+ warn(`[fulgurjs] \u7C7B\u578B\u7F13\u5B58\u6821\u9A8C\u5931\u8D25\uFF1A${error.message}\uFF1B\u672C\u8F6E\u4E0D\u5199\u6301\u4E45\u7F13\u5B58\u3002`);
3205
+ await cache.release(cacheInput, handle).catch(() => {
3206
+ });
3207
+ handle = null;
3208
+ }
3209
+ }
3210
+ if (disposed) return;
3211
+ if (changedDuringGeneration || pendingInvalidate || epoch !== inputEpoch) {
3212
+ queueRecheck();
3213
+ return;
3214
+ }
3215
+ if (result.ok) {
3216
+ if (handle) {
3217
+ try {
3218
+ if (!await cache.write(cacheInput, handle, result)) {
3219
+ queueRecheck();
3220
+ return;
3221
+ }
3222
+ } catch (error) {
3223
+ if (disposed) return;
3224
+ warn(`[fulgurjs] \u7C7B\u578B\u7F13\u5B58\u5199\u5165\u5931\u8D25\uFF1A${error.message}\uFF1B\u672C\u8F6E\u58F0\u660E\u6B63\u5E38\u63D0\u4F9B\uFF0C\u4E0B\u6B21\u53EF\u80FD\u91CD\u65B0\u7F16\u8BD1\u3002\u8BF7\u68C0\u67E5 node_modules/.cache/fulgurjs \u7684\u5199\u5165\u6743\u9650\u3002`);
3225
+ }
3226
+ }
3227
+ if (disposed) return;
3228
+ if (pendingInvalidate || epoch !== inputEpoch) {
3229
+ queueRecheck();
3230
+ return;
3231
+ }
3232
+ files = result.files;
3233
+ revision = result.index.revision;
3234
+ lastErrorKey = null;
3235
+ log(`[fulgurjs] \u7C7B\u578B\u8D44\u6E90\u5DF2\u751F\u6210\uFF08${result.tool}\uFF0C${result.fileCount} \u4E2A\u58F0\u660E\u6587\u4EF6\uFF0Crevision ${revision}\uFF09${result.index.externals.length > 0 ? `\uFF1B\u5916\u90E8\u7C7B\u578B\u4F9D\u8D56\uFF1A${result.index.externals.join(", ")}` : ""}\u3002\u5BBF\u4E3B\u5C06\u81EA\u52A8\u540C\u6B65\u3002`);
3236
+ } else {
3237
+ files = null;
3238
+ revision = null;
3239
+ const key = result.diagnostics.join("\n");
3240
+ if (key !== lastErrorKey) {
3241
+ lastErrorKey = key;
3242
+ warn(`[fulgurjs] TYP-001 \u8FDC\u7A0B\u7C7B\u578B\u8D44\u6E90\u751F\u6210\u5931\u8D25\uFF08manifest \u4E0D\u643A\u5E26 types\uFF0C\u5BBF\u4E3B\u7C7B\u578B\u540C\u6B65\u5C06\u63D0\u793A\u672A\u63D0\u4F9B\uFF09\uFF1A
2864
3243
  ${key}`);
3244
+ }
2865
3245
  }
3246
+ } finally {
3247
+ if (handle) await cache.release(cacheInput, handle).catch(() => {
3248
+ });
2866
3249
  }
2867
3250
  };
2868
3251
  const ensure = async () => {
@@ -2901,21 +3284,26 @@ ${key}`);
2901
3284
  },
2902
3285
  invalidate() {
2903
3286
  if (disposed) return;
3287
+ inputEpoch++;
2904
3288
  void ensure();
2905
3289
  },
3290
+ markInputChanged() {
3291
+ if (!disposed) inputEpoch++;
3292
+ },
2906
3293
  isGenerating: () => generating !== null,
2907
3294
  dispose() {
2908
3295
  disposed = true;
2909
3296
  controller.abort();
3297
+ cache.dispose();
2910
3298
  if (!generating) clearCache();
2911
3299
  }
2912
3300
  };
2913
3301
  }
2914
3302
 
2915
3303
  // src/dts-sync.ts
2916
- var import_node_fs6 = __toESM(require("fs"), 1);
2917
- var import_node_path7 = __toESM(require("path"), 1);
2918
- var import_node_crypto2 = __toESM(require("crypto"), 1);
3304
+ var import_node_fs7 = __toESM(require("fs"), 1);
3305
+ var import_node_path9 = __toESM(require("path"), 1);
3306
+ var import_node_crypto3 = __toESM(require("crypto"), 1);
2919
3307
 
2920
3308
  // src/dts-ambient.ts
2921
3309
  var RUNTIME_TYPE_MODULE = "@fulgurjs/federation/internal/registry.js";
@@ -3074,8 +3462,8 @@ function stripAmbientModifiers(text) {
3074
3462
  }
3075
3463
 
3076
3464
  // src/dts-discovery.ts
3077
- var import_node_fs5 = __toESM(require("fs"), 1);
3078
- var import_node_path6 = __toESM(require("path"), 1);
3465
+ var import_node_fs6 = __toESM(require("fs"), 1);
3466
+ var import_node_path8 = __toESM(require("path"), 1);
3079
3467
  function stripJsoncForConfig(text) {
3080
3468
  let out = "";
3081
3469
  let i = 0;
@@ -3115,7 +3503,7 @@ function stripJsoncForConfig(text) {
3115
3503
  }
3116
3504
  function readCfg(file) {
3117
3505
  try {
3118
- const raw = JSON.parse(stripJsoncForConfig(import_node_fs5.default.readFileSync(file, "utf8")));
3506
+ const raw = JSON.parse(stripJsoncForConfig(import_node_fs6.default.readFileSync(file, "utf8")));
3119
3507
  const cfg = { file };
3120
3508
  for (const key of ["include", "files", "exclude"]) {
3121
3509
  const v = raw[key];
@@ -3139,25 +3527,25 @@ function effectiveCfg(cfg, depth = 0) {
3139
3527
  const parentFile = resolveConfigFile(parent, cfg.file);
3140
3528
  if (!parentFile) continue;
3141
3529
  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);
3530
+ const dirOf = (f, base) => import_node_path8.default.resolve(import_node_path8.default.dirname(base), f);
3143
3531
  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)) || ".");
3532
+ merged.include = parentCfg.include.map((p) => import_node_path8.default.relative(import_node_path8.default.dirname(cfg.file), dirOf(p, parentFile)) || ".");
3145
3533
  }
3146
3534
  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)));
3535
+ merged.files = parentCfg.files.map((p) => import_node_path8.default.relative(import_node_path8.default.dirname(cfg.file), dirOf(p, parentFile)));
3148
3536
  }
3149
3537
  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)));
3538
+ merged.exclude = parentCfg.exclude.map((p) => import_node_path8.default.relative(import_node_path8.default.dirname(cfg.file), dirOf(p, parentFile)));
3151
3539
  }
3152
3540
  }
3153
3541
  return merged;
3154
3542
  }
3155
3543
  function resolveConfigFile(value, declaringFile) {
3156
- let candidate = import_node_path6.default.resolve(import_node_path6.default.dirname(declaringFile), value);
3544
+ let candidate = import_node_path8.default.resolve(import_node_path8.default.dirname(declaringFile), value);
3157
3545
  if (!candidate.endsWith(".json")) candidate += ".json";
3158
- if (import_node_fs5.default.existsSync(candidate)) return candidate;
3159
- const asDir = import_node_path6.default.join(candidate, "tsconfig.json");
3160
- return import_node_fs5.default.existsSync(asDir) ? asDir : null;
3546
+ if (import_node_fs6.default.existsSync(candidate)) return candidate;
3547
+ const asDir = import_node_path8.default.join(candidate, "tsconfig.json");
3548
+ return import_node_fs6.default.existsSync(asDir) ? asDir : null;
3161
3549
  }
3162
3550
  function patternCoversDir(pattern, target, cfgDir) {
3163
3551
  const norm = pattern.replace(/^\.\//, "");
@@ -3167,15 +3555,15 @@ function patternCoversDir(pattern, target, cfgDir) {
3167
3555
  if (norm.includes("**")) base = norm.slice(0, norm.indexOf("**")).replace(/\/+$/, "");
3168
3556
  else if (norm.endsWith("/*")) base = norm.slice(0, -2);
3169
3557
  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);
3558
+ const abs = base === "" || base === "." ? cfgDir : import_node_path8.default.resolve(cfgDir, base);
3559
+ return target === abs || target.startsWith(abs + import_node_path8.default.sep);
3172
3560
  }
3173
3561
  function checkTypesDiscovery(root, typesRoot) {
3174
- const relTypes = import_node_path6.default.relative(root, typesRoot) || ".";
3562
+ const relTypes = import_node_path8.default.relative(root, typesRoot) || ".";
3175
3563
  const configs = [];
3176
- let primary = import_node_path6.default.join(root, "tsconfig.json");
3177
- 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)) : [];
3564
+ let primary = import_node_path8.default.join(root, "tsconfig.json");
3565
+ if (!import_node_fs6.default.existsSync(primary)) {
3566
+ const candidates = import_node_fs6.default.existsSync(root) ? import_node_fs6.default.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f)).map((f) => import_node_path8.default.join(root, f)) : [];
3179
3567
  if (candidates.length === 0) {
3180
3568
  return {
3181
3569
  covered: false,
@@ -3187,7 +3575,7 @@ function checkTypesDiscovery(root, typesRoot) {
3187
3575
  if (candidates.length > 1) {
3188
3576
  let covered = false;
3189
3577
  for (const file of candidates) {
3190
- configs.push(import_node_path6.default.relative(root, file));
3578
+ configs.push(import_node_path8.default.relative(root, file));
3191
3579
  if (configCovers(file, typesRoot)) covered = true;
3192
3580
  }
3193
3581
  if (covered) return { covered: true, configs, fixHint: null };
@@ -3198,34 +3586,34 @@ function checkTypesDiscovery(root, typesRoot) {
3198
3586
  };
3199
3587
  }
3200
3588
  }
3201
- configs.push(import_node_path6.default.relative(root, primary));
3589
+ configs.push(import_node_path8.default.relative(root, primary));
3202
3590
  if (configCovers(primary, typesRoot)) return { covered: true, configs, fixHint: null };
3203
3591
  return {
3204
3592
  covered: false,
3205
3593
  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`
3594
+ fixHint: `TYP-006 \u7C7B\u578B\u76EE\u5F55 ${relTypes} \u672A\u88AB ${import_node_path8.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
3595
  };
3208
3596
  }
3209
3597
  function configCovers(cfgFile, typesRoot) {
3210
3598
  const raw = readCfg(cfgFile);
3211
3599
  if (!raw) return false;
3212
3600
  const cfg = effectiveCfg(raw);
3213
- const cfgDir = import_node_path6.default.dirname(cfgFile);
3601
+ const cfgDir = import_node_path8.default.dirname(cfgFile);
3214
3602
  const isSolution = Array.isArray(cfg.files) && cfg.files.length === 0 && !cfg.include;
3215
3603
  if (isSolution && cfg.references && cfg.references.length > 0) {
3216
3604
  return cfg.references.some((ref) => {
3217
- const refFile = resolveConfigFile(ref.startsWith(".") || import_node_path6.default.isAbsolute(ref) ? ref : `./${ref}`, cfgFile);
3605
+ const refFile = resolveConfigFile(ref.startsWith(".") || import_node_path8.default.isAbsolute(ref) ? ref : `./${ref}`, cfgFile);
3218
3606
  return refFile !== null && configCovers(refFile, typesRoot);
3219
3607
  });
3220
3608
  }
3221
3609
  if (Array.isArray(cfg.files) && cfg.files.length > 0) {
3222
3610
  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);
3611
+ const abs = import_node_path8.default.resolve(cfgDir, f);
3612
+ return abs === typesRoot || abs.startsWith(typesRoot + import_node_path8.default.sep);
3225
3613
  });
3226
3614
  }
3227
3615
  const includes = cfg.include;
3228
- if (!includes) return typesRoot === cfgDir || typesRoot.startsWith(cfgDir + import_node_path6.default.sep);
3616
+ if (!includes) return typesRoot === cfgDir || typesRoot.startsWith(cfgDir + import_node_path8.default.sep);
3229
3617
  const included = includes.some((p) => patternCoversDir(p, typesRoot, cfgDir));
3230
3618
  if (!included) return false;
3231
3619
  if (cfg.exclude && cfg.exclude.some((p) => patternCoversDir(p, typesRoot, cfgDir))) return false;
@@ -3269,7 +3657,7 @@ var METADATA_FILE = "metadata.json";
3269
3657
  var AMBIENT_FORMAT = 2;
3270
3658
  function readMetadata(dir) {
3271
3659
  try {
3272
- const raw = JSON.parse(import_node_fs6.default.readFileSync(import_node_path7.default.join(dir, METADATA_FILE), "utf8"));
3660
+ const raw = JSON.parse(import_node_fs7.default.readFileSync(import_node_path9.default.join(dir, METADATA_FILE), "utf8"));
3273
3661
  if (raw.generator !== "@fulgurjs/federation" || typeof raw.revision !== "string" || !Array.isArray(raw.files)) return null;
3274
3662
  return raw;
3275
3663
  } catch {
@@ -3279,19 +3667,19 @@ function readMetadata(dir) {
3279
3667
  function cleanupOwnFiles(dir, meta) {
3280
3668
  for (const f of meta.files) {
3281
3669
  if (!isSafeBundlePath(f)) continue;
3282
- import_node_fs6.default.rmSync(import_node_path7.default.join(dir, f), { force: true });
3670
+ import_node_fs7.default.rmSync(import_node_path9.default.join(dir, f), { force: true });
3283
3671
  }
3284
- import_node_fs6.default.rmSync(import_node_path7.default.join(dir, METADATA_FILE), { force: true });
3672
+ import_node_fs7.default.rmSync(import_node_path9.default.join(dir, METADATA_FILE), { force: true });
3285
3673
  try {
3286
- if (import_node_fs6.default.readdirSync(dir).length === 0) import_node_fs6.default.rmdirSync(dir);
3674
+ if (import_node_fs7.default.readdirSync(dir).length === 0) import_node_fs7.default.rmdirSync(dir);
3287
3675
  } catch {
3288
3676
  }
3289
3677
  }
3290
3678
  function sweepStaleStaging(typesRoot, alias) {
3291
- if (!import_node_fs6.default.existsSync(typesRoot)) return;
3292
- for (const name of import_node_fs6.default.readdirSync(typesRoot)) {
3679
+ if (!import_node_fs7.default.existsSync(typesRoot)) return;
3680
+ for (const name of import_node_fs7.default.readdirSync(typesRoot)) {
3293
3681
  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 });
3682
+ import_node_fs7.default.rmSync(import_node_path9.default.join(typesRoot, name), { recursive: true, force: true });
3295
3683
  }
3296
3684
  }
3297
3685
  }
@@ -3300,7 +3688,7 @@ async function syncRemoteTypes(input) {
3300
3688
  const fetchJsonFn = input.fetchJsonImpl ?? fetchJson;
3301
3689
  const fetchTextFn = input.fetchTextImpl ?? fetchText;
3302
3690
  const timeoutMs = input.timeoutMs ?? 15e3;
3303
- const dir = import_node_path7.default.join(typesRoot, alias);
3691
+ const dir = import_node_path9.default.join(typesRoot, alias);
3304
3692
  let manifest;
3305
3693
  try {
3306
3694
  const parsed = parseManifest(await fetchJsonFn(manifestUrl, timeoutMs));
@@ -3313,7 +3701,7 @@ async function syncRemoteTypes(input) {
3313
3701
  }
3314
3702
  manifest = parsed.manifest;
3315
3703
  } catch (e) {
3316
- const meta = import_node_fs6.default.existsSync(dir) ? readMetadata(dir) : null;
3704
+ const meta = import_node_fs7.default.existsSync(dir) ? readMetadata(dir) : null;
3317
3705
  return {
3318
3706
  status: "failed",
3319
3707
  alias,
@@ -3323,7 +3711,7 @@ async function syncRemoteTypes(input) {
3323
3711
  }
3324
3712
  const types = readManifestTypes(manifest);
3325
3713
  if (!types) {
3326
- const meta = import_node_fs6.default.existsSync(dir) ? readMetadata(dir) : null;
3714
+ const meta = import_node_fs7.default.existsSync(dir) ? readMetadata(dir) : null;
3327
3715
  if (isDevManifest(manifest) && manifest.typesPending === true) {
3328
3716
  return {
3329
3717
  status: meta ? "stale" : "failed",
@@ -3343,7 +3731,7 @@ async function syncRemoteTypes(input) {
3343
3731
  };
3344
3732
  }
3345
3733
  const indexUrl = new URL(types.index, manifestUrl).toString();
3346
- const existing = import_node_fs6.default.existsSync(dir) ? readMetadata(dir) : null;
3734
+ const existing = import_node_fs7.default.existsSync(dir) ? readMetadata(dir) : null;
3347
3735
  if (existing && existing.revision === types.revision && existing.ambientFormat === AMBIENT_FORMAT) {
3348
3736
  return { status: "unchanged", alias, revision: types.revision, message: `\u8FDC\u7A0B ${alias} \u7C7B\u578B\u5DF2\u662F\u6700\u65B0\uFF08revision ${types.revision}\uFF09\u3002` };
3349
3737
  }
@@ -3393,7 +3781,7 @@ async function syncRemoteTypes(input) {
3393
3781
  if (total > DTS_TOTAL_MAX_BYTES) {
3394
3782
  return { status: "failed", alias, message: `\u8FDC\u7A0B ${alias} \u7684\u7C7B\u578B\u8D44\u6E90\u603B\u91CF\u8D85\u9650\uFF08>${DTS_TOTAL_MAX_BYTES}B\uFF09\uFF0C\u5DF2\u62D2\u7EDD\u3002` };
3395
3783
  }
3396
- const actual = import_node_crypto2.default.createHash("sha256").update(text, "utf8").digest("hex");
3784
+ const actual = import_node_crypto3.default.createHash("sha256").update(text, "utf8").digest("hex");
3397
3785
  if (actual !== digest) {
3398
3786
  return { status: "failed", alias, message: `\u8FDC\u7A0B ${alias} \u7684\u58F0\u660E\u6587\u4EF6\u6458\u8981\u4E0D\u7B26\uFF08${rel}\uFF09\uFF0C\u5DF2\u62D2\u7EDD\u672C\u6B21\u66F4\u65B0\uFF08\u4F20\u8F93\u635F\u574F\u6216\u88AB\u7BE1\u6539\uFF09\u3002` };
3399
3787
  }
@@ -3401,15 +3789,15 @@ async function syncRemoteTypes(input) {
3401
3789
  }
3402
3790
  const ambient = buildAmbientDeclarations({ alias, index, readFile: (rel) => indexRaw[rel] ?? "", source });
3403
3791
  sweepStaleStaging(typesRoot, alias);
3404
- const staging = import_node_path7.default.join(typesRoot, `.fg-staging-${alias}-${process.pid}-${Date.now()}`);
3405
- import_node_fs6.default.rmSync(staging, { recursive: true, force: true });
3406
- import_node_fs6.default.mkdirSync(staging, { recursive: true });
3792
+ const staging = import_node_path9.default.join(typesRoot, `.fg-staging-${alias}-${process.pid}-${Date.now()}`);
3793
+ import_node_fs7.default.rmSync(staging, { recursive: true, force: true });
3794
+ import_node_fs7.default.mkdirSync(staging, { recursive: true });
3407
3795
  const written = [];
3408
3796
  try {
3409
3797
  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 });
3412
- import_node_fs6.default.writeFileSync(dest, content);
3798
+ const dest = import_node_path9.default.join(staging, name);
3799
+ import_node_fs7.default.mkdirSync(import_node_path9.default.dirname(dest), { recursive: true });
3800
+ import_node_fs7.default.writeFileSync(dest, content);
3413
3801
  written.push(name);
3414
3802
  }
3415
3803
  const meta = {
@@ -3422,22 +3810,22 @@ async function syncRemoteTypes(input) {
3422
3810
  externals: index.externals,
3423
3811
  syncedAt: Date.now()
3424
3812
  };
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()}`);
3813
+ import_node_fs7.default.writeFileSync(import_node_path9.default.join(staging, METADATA_FILE), JSON.stringify(meta, null, 2));
3814
+ const trash = import_node_path9.default.join(typesRoot, `.fg-trash-${alias}-${Date.now()}`);
3427
3815
  let swapped = false;
3428
- if (import_node_fs6.default.existsSync(dir)) {
3429
- import_node_fs6.default.renameSync(dir, trash);
3816
+ if (import_node_fs7.default.existsSync(dir)) {
3817
+ import_node_fs7.default.renameSync(dir, trash);
3430
3818
  swapped = true;
3431
3819
  }
3432
3820
  try {
3433
- import_node_fs6.default.renameSync(staging, dir);
3821
+ import_node_fs7.default.renameSync(staging, dir);
3434
3822
  } catch (e) {
3435
- if (swapped) import_node_fs6.default.renameSync(trash, dir);
3823
+ if (swapped) import_node_fs7.default.renameSync(trash, dir);
3436
3824
  throw e;
3437
3825
  }
3438
- if (swapped) import_node_fs6.default.rmSync(trash, { recursive: true, force: true });
3826
+ if (swapped) import_node_fs7.default.rmSync(trash, { recursive: true, force: true });
3439
3827
  } catch (e) {
3440
- import_node_fs6.default.rmSync(staging, { recursive: true, force: true });
3828
+ import_node_fs7.default.rmSync(staging, { recursive: true, force: true });
3441
3829
  return { status: "failed", alias, message: `\u8FDC\u7A0B ${alias} \u7684\u7C7B\u578B\u5199\u5165\u5931\u8D25\uFF08${e.message}\uFF09\u3002\u672C\u5730\u58F0\u660E\u4FDD\u6301\u539F\u72B6\u3002` };
3442
3830
  }
3443
3831
  return {
@@ -3449,8 +3837,8 @@ async function syncRemoteTypes(input) {
3449
3837
  };
3450
3838
  }
3451
3839
  function removeGeneratedTypes(typesRoot, alias) {
3452
- const dir = import_node_path7.default.join(typesRoot, alias);
3453
- if (!import_node_fs6.default.existsSync(dir)) return false;
3840
+ const dir = import_node_path9.default.join(typesRoot, alias);
3841
+ if (!import_node_fs7.default.existsSync(dir)) return false;
3454
3842
  const meta = readMetadata(dir);
3455
3843
  if (!meta) return false;
3456
3844
  cleanupOwnFiles(dir, meta);
@@ -3512,8 +3900,8 @@ function startRemoteTypesSyncLoop(opts) {
3512
3900
  let discoveryWarned = false;
3513
3901
  const checkDiscoveryOnce = () => {
3514
3902
  if (discoveryWarned) return;
3515
- if (!import_node_fs6.default.existsSync(opts.typesRoot)) return;
3516
- if (import_node_fs6.default.readdirSync(opts.typesRoot).length === 0) return;
3903
+ if (!import_node_fs7.default.existsSync(opts.typesRoot)) return;
3904
+ if (import_node_fs7.default.readdirSync(opts.typesRoot).length === 0) return;
3517
3905
  discoveryWarned = true;
3518
3906
  const d = checkTypesDiscovery(opts.root, opts.typesRoot);
3519
3907
  if (!d.covered) warn(`[fulgurjs] ${d.fixHint ?? ""}`);
@@ -3527,7 +3915,7 @@ function startRemoteTypesSyncLoop(opts) {
3527
3915
  }
3528
3916
 
3529
3917
  // src/diagnostics.ts
3530
- var import_node_path8 = __toESM(require("path"), 1);
3918
+ var import_node_path10 = __toESM(require("path"), 1);
3531
3919
  function formatFulgurjsDiagnostic(input) {
3532
3920
  const ctx = input.details ? `
3533
3921
  \u4E0A\u4E0B\u6587\uFF1A${JSON.stringify(input.details)}` : "";
@@ -3571,8 +3959,8 @@ function debugLog(category, data) {
3571
3959
  function redactModulePath(id, root) {
3572
3960
  const clean = id.split("?")[0];
3573
3961
  try {
3574
- const rel = import_node_path8.default.relative(root, clean);
3575
- if (rel && !rel.startsWith("..") && !import_node_path8.default.isAbsolute(rel)) return rel;
3962
+ const rel = import_node_path10.default.relative(root, clean);
3963
+ if (rel && !rel.startsWith("..") && !import_node_path10.default.isAbsolute(rel)) return rel;
3576
3964
  } catch {
3577
3965
  }
3578
3966
  return clean.split("/").pop() ?? clean;
@@ -3682,22 +4070,22 @@ function genRemoteSchemaModule(schema) {
3682
4070
  }
3683
4071
 
3684
4072
  // src/vite-cache.ts
3685
- var import_node_fs7 = __toESM(require("fs"), 1);
3686
- var import_node_path9 = __toESM(require("path"), 1);
4073
+ var import_node_fs8 = __toESM(require("fs"), 1);
4074
+ var import_node_path11 = __toESM(require("path"), 1);
3687
4075
  function syncViteCacheMarker(root, pluginVersion, log) {
3688
- const viteDir = import_node_path9.default.join(root, "node_modules", ".vite");
3689
- const marker = import_node_path9.default.join(viteDir, "fulgurjs-version.txt");
4076
+ const viteDir = import_node_path11.default.join(root, "node_modules", ".vite");
4077
+ const marker = import_node_path11.default.join(viteDir, "fulgurjs-version.txt");
3690
4078
  try {
3691
- if (import_node_fs7.default.existsSync(viteDir)) {
3692
- const prev = import_node_fs7.default.existsSync(marker) ? import_node_fs7.default.readFileSync(marker, "utf8").trim() : "";
4079
+ if (import_node_fs8.default.existsSync(viteDir)) {
4080
+ const prev = import_node_fs8.default.existsSync(marker) ? import_node_fs8.default.readFileSync(marker, "utf8").trim() : "";
3693
4081
  if (prev === pluginVersion) return;
3694
- import_node_fs7.default.rmSync(viteDir, { recursive: true, force: true });
4082
+ import_node_fs8.default.rmSync(viteDir, { recursive: true, force: true });
3695
4083
  log(
3696
- `[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`
4084
+ `[fulgurjs] \u63D2\u4EF6\u7248\u672C\u53D8\u5316\uFF08${prev || "\u65E0\u8BB0\u5F55"} \u2192 ${pluginVersion}\uFF09\uFF0C\u5DF2\u81EA\u52A8\u6E05\u9664 ${import_node_path11.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`
3697
4085
  );
3698
4086
  }
3699
- import_node_fs7.default.mkdirSync(viteDir, { recursive: true });
3700
- import_node_fs7.default.writeFileSync(marker, pluginVersion);
4087
+ import_node_fs8.default.mkdirSync(viteDir, { recursive: true });
4088
+ import_node_fs8.default.writeFileSync(marker, pluginVersion);
3701
4089
  } catch (e) {
3702
4090
  log(
3703
4091
  `[fulgurjs] \u81EA\u52A8\u6E05\u7406 .vite \u7F13\u5B58\u5931\u8D25\uFF08\u4E0D\u5F71\u54CD\u542F\u52A8\uFF1B\u5982\u9047\u8054\u90A6\u6A21\u5757 404 \u8BF7\u624B\u5DE5\u6267\u884C rm -rf ${viteDir}\uFF09\uFF1A${String(e.message ?? e)}`
@@ -4053,7 +4441,7 @@ function repairRolldownAsyncMarks(code, sourceName) {
4053
4441
  }
4054
4442
 
4055
4443
  // src/runtime-code.gen.ts
4056
- 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.3";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';
4444
+ 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.5";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';
4057
4445
 
4058
4446
  // src/index.ts
4059
4447
  function readRuntimeCode() {
@@ -4070,7 +4458,7 @@ function enumerateCjsExports(packageName, appRoot) {
4070
4458
  if (cached) return cached;
4071
4459
  let names = [];
4072
4460
  try {
4073
- const appRequire = (0, import_node_module4.createRequire)(import_node_path10.default.join(appRoot, "package.json"));
4461
+ const appRequire = (0, import_node_module4.createRequire)(import_node_path12.default.join(appRoot, "package.json"));
4074
4462
  const mod = appRequire(packageName);
4075
4463
  names = Object.keys(mod);
4076
4464
  } catch {
@@ -4188,7 +4576,7 @@ async function resolveSharedImportTarget(item, root) {
4188
4576
  const specifier = item.import;
4189
4577
  if (typeof specifier !== "string") return item.shareKey;
4190
4578
  try {
4191
- const resolved = await this.resolve?.(specifier, import_node_path10.default.join(root, "package.json"), { skipSelf: true });
4579
+ const resolved = await this.resolve?.(specifier, import_node_path12.default.join(root, "package.json"), { skipSelf: true });
4192
4580
  if (resolved?.id) return resolved.id;
4193
4581
  } catch {
4194
4582
  }
@@ -4222,7 +4610,7 @@ function federation(options) {
4222
4610
  enforce: "pre",
4223
4611
  async config(userConfig, env) {
4224
4612
  state.command = env.command;
4225
- const root = import_node_path10.default.resolve(userConfig.root ?? process.cwd());
4613
+ const root = import_node_path12.default.resolve(userConfig.root ?? process.cwd());
4226
4614
  const normalized = normalizeOptions(options, root, env.command);
4227
4615
  state.normalized = normalized;
4228
4616
  state.rolldownBuild = env.command === "build" && Number((readInstalledVersion(root, "vite") ?? "0").split(".")[0]) >= 8;
@@ -4501,7 +4889,7 @@ export { default } from ${JSON.stringify(url)};
4501
4889
  },
4502
4890
  resolveId(source, importer) {
4503
4891
  if (state.normalized && importer && (importer.includes("virtual:fulgurjs-shared:") || importer.includes("virtual:fulgurjs-shared-ns:")) && /^\.\.?\//.test(source) && !source.startsWith("virtual:fulgurjs-")) {
4504
- const resolved = import_node_path10.default.resolve(state.normalized.root, source);
4892
+ const resolved = import_node_path12.default.resolve(state.normalized.root, source);
4505
4893
  return resolved + (source.match(/\?[^/]*$/)?.[0] ?? "");
4506
4894
  }
4507
4895
  let s = source;
@@ -4595,7 +4983,7 @@ export { default } from ${JSON.stringify(url)};
4595
4983
  }
4596
4984
  let importTarget = item.import;
4597
4985
  try {
4598
- const resolvedImport = await this.resolve?.(item.import, import_node_path10.default.join(state.normalized.root, "package.json"), { skipSelf: true });
4986
+ const resolvedImport = await this.resolve?.(item.import, import_node_path12.default.join(state.normalized.root, "package.json"), { skipSelf: true });
4599
4987
  if (resolvedImport?.id) importTarget = resolvedImport.id;
4600
4988
  } catch {
4601
4989
  }
@@ -4704,7 +5092,7 @@ ${code}`, map: null };
4704
5092
  const srcRe = /src=["']([^"']+)["']/;
4705
5093
  const entryPath = (src) => {
4706
5094
  const file = src.startsWith("/@fs/") ? src.slice(4) : src;
4707
- 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);
5095
+ return import_node_path12.default.isAbsolute(file) && import_node_fs9.default.existsSync(file) ? file : import_node_path12.default.resolve(state.normalized.root, src.startsWith("/") ? src.slice(1) : src);
4708
5096
  };
4709
5097
  for (const tag of html.match(moduleScriptRe) ?? []) {
4710
5098
  const src = srcRe.exec(tag)?.[1];
@@ -4735,7 +5123,7 @@ ${code}`, map: null };
4735
5123
  state.providerEntrySeeds = [];
4736
5124
  providerClosureCache.clear();
4737
5125
  providerClosureBuilt = false;
4738
- const providerRequire = (0, import_node_module4.createRequire)(import_node_path10.default.join(n.root, "package.json"));
5126
+ const providerRequire = (0, import_node_module4.createRequire)(import_node_path12.default.join(n.root, "package.json"));
4739
5127
  for (const item of n.shared) {
4740
5128
  if (item.import === false) continue;
4741
5129
  try {
@@ -4752,7 +5140,7 @@ ${code}`, map: null };
4752
5140
  {
4753
5141
  for (const item of n.shared) {
4754
5142
  if (item.import === false) continue;
4755
- const resolved = await this.resolve(item.import, import_node_path10.default.join(n.root, "index.html"));
5143
+ const resolved = await this.resolve(item.import, import_node_path12.default.join(n.root, "index.html"));
4756
5144
  const file = resolved?.id.replace(/^\0/, "").split("?")[0];
4757
5145
  if (!file) continue;
4758
5146
  const marker = "/node_modules/";
@@ -4770,7 +5158,7 @@ ${code}`, map: null };
4770
5158
  if (state.manualChunkSpecsPending) {
4771
5159
  for (const [group, specifier] of state.manualChunkSpecsPending) {
4772
5160
  try {
4773
- const r = await this.resolve(specifier, import_node_path10.default.join(n.root, "index.html"));
5161
+ const r = await this.resolve(specifier, import_node_path12.default.join(n.root, "index.html"));
4774
5162
  if (r?.id) {
4775
5163
  state.manualChunkGroups.set(r.id, group);
4776
5164
  state.manualChunkGroups.set(r.id.split("?")[0], group);
@@ -4800,7 +5188,7 @@ ${code}`, map: null };
4800
5188
  };
4801
5189
  for (const item of n.shared) {
4802
5190
  if (item.import === false) continue;
4803
- const selfFile = await this.resolve(item.import, import_node_path10.default.join(n.root, "index.html")).then(
5191
+ const selfFile = await this.resolve(item.import, import_node_path12.default.join(n.root, "index.html")).then(
4804
5192
  (r) => r?.id?.split("?")[0] ?? null
4805
5193
  ).catch(() => null);
4806
5194
  for (const alias of item.aliases) {
@@ -4815,7 +5203,7 @@ ${code}`, map: null };
4815
5203
  }
4816
5204
  }
4817
5205
  if (!file) {
4818
- file = await this.resolve(alias, import_node_path10.default.join(n.root, "index.html")).then(
5206
+ file = await this.resolve(alias, import_node_path12.default.join(n.root, "index.html")).then(
4819
5207
  (r) => r?.id?.split("?")[0] ?? null
4820
5208
  ).catch(() => null);
4821
5209
  }
@@ -4838,7 +5226,7 @@ ${code}`, map: null };
4838
5226
  }
4839
5227
  if (n.exposes.length > 0) {
4840
5228
  for (const e of n.exposes) {
4841
- const resolved = await this.resolve(e.import, import_node_path10.default.join(n.root, "index.html"));
5229
+ const resolved = await this.resolve(e.import, import_node_path12.default.join(n.root, "index.html"));
4842
5230
  if (resolved) {
4843
5231
  state.exposeAbsPaths[e.import] = resolved.id.split("?")[0];
4844
5232
  } else {
@@ -5103,9 +5491,10 @@ ${entryChunk.code}`;
5103
5491
  if (n.exposes.length > 0 && n.dts) {
5104
5492
  typesServer = createDevTypesServer(n);
5105
5493
  let regenTimer = null;
5106
- 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");
5494
+ const syncedTypesDir = typeof n.dts === "object" && n.dts.dir ? import_node_path12.default.resolve(n.root, n.dts.dir) : import_node_path12.default.join(n.root, import_node_fs9.default.existsSync(import_node_path12.default.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types");
5107
5495
  const scheduleRegen = (id) => {
5108
5496
  if (!isTypesInputChange(n.root, id, syncedTypesDir)) return;
5497
+ typesServer?.markInputChanged();
5109
5498
  if (regenTimer) clearTimeout(regenTimer);
5110
5499
  regenTimer = setTimeout(() => {
5111
5500
  regenTimer = null;
@@ -5170,14 +5559,14 @@ ${entryChunk.code}`;
5170
5559
  if (n.remotes.length > 0 && n.dts && state.command === "serve") {
5171
5560
  server.httpServer?.once("listening", () => {
5172
5561
  const dtsOpt = n.dts === true ? true : n.dts;
5173
- const typesRoot = import_node_path10.default.join(
5562
+ const typesRoot = import_node_path12.default.join(
5174
5563
  n.root,
5175
- 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")
5564
+ dtsOpt === false ? "" : (typeof dtsOpt === "object" ? dtsOpt.dir : void 0) ?? (import_node_fs9.default.existsSync(import_node_path12.default.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types")
5176
5565
  );
5177
5566
  try {
5178
- if (import_node_fs8.default.existsSync(typesRoot)) {
5567
+ if (import_node_fs9.default.existsSync(typesRoot)) {
5179
5568
  const activeKeys = new Set(n.remotes.map((r) => r.key));
5180
- for (const name of import_node_fs8.default.readdirSync(typesRoot)) {
5569
+ for (const name of import_node_fs9.default.readdirSync(typesRoot)) {
5181
5570
  if (!activeKeys.has(name)) removeGeneratedTypes(typesRoot, name);
5182
5571
  }
5183
5572
  }
@@ -5231,7 +5620,7 @@ ${entryChunk.code}`;
5231
5620
  async transform(code, id) {
5232
5621
  if (!state.normalized) return null;
5233
5622
  const clean = id.split("?")[0];
5234
- 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}`);
5623
+ const isAppSource = clean.startsWith(state.normalized.root + import_node_path12.default.sep) && !clean.includes(`${import_node_path12.default.sep}node_modules${import_node_path12.default.sep}`) && !clean.includes(`${import_node_path12.default.sep}.vite${import_node_path12.default.sep}`);
5235
5624
  const evidence = isAppSource && clean.endsWith(".vue") && (!id.includes("?") || /[?&]type=script(?:&|$)/.test(id)) ? tagVueRuntime(code, (source) => this.parse(source)) : null;
5236
5625
  if (evidence) code = evidence.code;
5237
5626
  const entryRewrite = state.command === "serve" && isAppSource ? await rewriteRuntimeEntryImports(code, isExposeTargetFile(clean, state.normalized.root, state.normalized.exposes)) : null;
@@ -5277,7 +5666,7 @@ ${entryChunk.code}`;
5277
5666
  if (!n) return;
5278
5667
  for (const s of n.shared) {
5279
5668
  if (s.import === false) continue;
5280
- void server.pluginContainer.resolveId(s.import, import_node_path10.default.join(n.root, "index.html")).then((r) => {
5669
+ void server.pluginContainer.resolveId(s.import, import_node_path12.default.join(n.root, "index.html")).then((r) => {
5281
5670
  if (r?.id) state.resolvedSharedPaths.set(r.id.split("?")[0], s.configKey);
5282
5671
  }).catch(() => {
5283
5672
  });