@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.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/index.ts
2
- import fs8 from "fs";
3
- import path10 from "path";
2
+ import fs9 from "fs";
3
+ import path12 from "path";
4
4
  import { createRequire as createRequire4 } from "module";
5
5
 
6
6
  // src/vue-runtime-evidence.ts
@@ -34,7 +34,7 @@ import fs from "fs";
34
34
  import path from "path";
35
35
 
36
36
  // src/version.ts
37
- var RUNTIME_VERSION = "6.14.3";
37
+ var RUNTIME_VERSION = "6.14.5";
38
38
 
39
39
  // src/dev-cors.ts
40
40
  function normalizeDevCorsOrigins(input) {
@@ -1777,12 +1777,12 @@ function collectPackageExportNames(spec, importerFile) {
1777
1777
  }
1778
1778
 
1779
1779
  // src/dts-serve.ts
1780
- import path5 from "path";
1781
- import fs4 from "fs";
1780
+ import path7 from "path";
1781
+ import fs5 from "fs";
1782
1782
 
1783
1783
  // src/dts-generate.ts
1784
1784
  import fs3 from "fs";
1785
- import path4 from "path";
1785
+ import path5 from "path";
1786
1786
 
1787
1787
  // src/dts-diagnostics.ts
1788
1788
  import path3 from "path";
@@ -2006,9 +2006,161 @@ export default ${value};`;
2006
2006
  return text.slice(0, assignment.getStart(source)) + replacement + text.slice(assignment.end);
2007
2007
  }
2008
2008
 
2009
+ // src/dts-type-display.ts
2010
+ import path4 from "path";
2011
+ function displayPublicDataTypes(ts, files, entries, root, compilerOptions = {}) {
2012
+ const base = path4.join(root, ".fulgurjs-types-display");
2013
+ const paths = new Map([...files].map(([rel, text]) => [path4.resolve(base, rel), text]));
2014
+ const entryPaths = [...new Set(entries)].map((rel) => path4.resolve(base, rel));
2015
+ const needsDisplay = entryPaths.filter((file) => {
2016
+ const source = ts.createSourceFile(file, paths.get(file), ts.ScriptTarget.Latest, true);
2017
+ 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));
2018
+ });
2019
+ if (needsDisplay.length === 0) return;
2020
+ const options = {
2021
+ ...compilerOptions,
2022
+ noEmit: true,
2023
+ target: compilerOptions.target ?? ts.ScriptTarget.ESNext,
2024
+ module: compilerOptions.module ?? ts.ModuleKind.ESNext,
2025
+ moduleResolution: compilerOptions.moduleResolution ?? ts.ModuleResolutionKind.Bundler ?? ts.ModuleResolutionKind.NodeJs,
2026
+ skipLibCheck: true,
2027
+ types: [],
2028
+ allowArbitraryExtensions: true
2029
+ };
2030
+ const directories = /* @__PURE__ */ new Set();
2031
+ for (const file of paths.keys()) {
2032
+ for (let dir = path4.dirname(file); dir.startsWith(base); dir = path4.dirname(dir)) directories.add(dir);
2033
+ }
2034
+ const host = ts.createCompilerHost(options, true);
2035
+ const readFile = (file) => paths.get(path4.resolve(file)) ?? ts.sys.readFile(file);
2036
+ host.readFile = readFile;
2037
+ host.fileExists = (file) => paths.has(path4.resolve(file)) || ts.sys.fileExists(file);
2038
+ host.directoryExists = (dir) => directories.has(path4.resolve(dir)) || (ts.sys.directoryExists?.(dir) ?? false);
2039
+ host.realpath = (file) => paths.has(path4.resolve(file)) ? file : ts.sys.realpath?.(file) ?? file;
2040
+ host.getCurrentDirectory = () => root;
2041
+ host.getSourceFile = (file, languageVersion) => {
2042
+ const text = readFile(file);
2043
+ return text === void 0 ? void 0 : ts.createSourceFile(file, text, languageVersion, true);
2044
+ };
2045
+ const program = ts.createProgram(needsDisplay, options, host);
2046
+ const checker = program.getTypeChecker();
2047
+ const plainData = (symbol) => {
2048
+ if (!(symbol.flags & (ts.SymbolFlags.Interface | ts.SymbolFlags.TypeAlias)) || symbol.flags & (ts.SymbolFlags.Value | ts.SymbolFlags.Namespace)) return false;
2049
+ if (symbol.declarations?.some((d) => (ts.isInterfaceDeclaration(d) || ts.isTypeAliasDeclaration(d)) && d.typeParameters?.length)) return false;
2050
+ const type = checker.getDeclaredTypeOfSymbol(symbol);
2051
+ if (!(type.flags & ts.TypeFlags.Object) || type.getCallSignatures().length || type.getConstructSignatures().length || checker.isArrayType(type) || checker.isTupleType(type)) return false;
2052
+ const hasThis = (node) => ts.isThisTypeNode(node) || (ts.forEachChild(node, hasThis) ?? false);
2053
+ const visited = /* @__PURE__ */ new Set();
2054
+ const specialBase = (value) => {
2055
+ if (visited.has(value)) return false;
2056
+ visited.add(value);
2057
+ if (!(value.flags & ts.TypeFlags.Object)) return true;
2058
+ const object = value;
2059
+ const target = object.target ?? object;
2060
+ if ((object.objectFlags | target.objectFlags) & ts.ObjectFlags.Class) return true;
2061
+ if (value.symbol?.declarations?.some(hasThis)) return true;
2062
+ 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;
2063
+ return !!(object.objectFlags & ts.ObjectFlags.Interface && checker.getBaseTypes(object)?.some(specialBase));
2064
+ };
2065
+ if (specialBase(type)) return false;
2066
+ const properties = type.getProperties();
2067
+ if (properties.length === 0) return false;
2068
+ 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))));
2069
+ };
2070
+ for (const file of needsDisplay) {
2071
+ const source = program.getSourceFile(file);
2072
+ const moduleSymbol = source && checker.getSymbolAtLocation(source);
2073
+ if (!source || !moduleSymbol) continue;
2074
+ const original = paths.get(file);
2075
+ const identifiers = /* @__PURE__ */ new Set();
2076
+ const collect = (node) => {
2077
+ if (ts.isIdentifier(node)) identifiers.add(node.text);
2078
+ ts.forEachChild(node, collect);
2079
+ };
2080
+ collect(source);
2081
+ const unique = (stem) => {
2082
+ let name = stem;
2083
+ for (let n = 2; identifiers.has(name); n++) name = `${stem}${n}`;
2084
+ identifiers.add(name);
2085
+ return name;
2086
+ };
2087
+ const views = [];
2088
+ for (const exported of checker.getExportsOfModule(moduleSymbol)) {
2089
+ const name = exported.name;
2090
+ if (name === "default" || !/^[$_\p{ID_Start}][$_\p{ID_Continue}]*$/u.test(name)) continue;
2091
+ const target = exported.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(exported) : exported;
2092
+ if (!plainData(target)) continue;
2093
+ let expression;
2094
+ for (const statement of source.statements) {
2095
+ if ((ts.isInterfaceDeclaration(statement) || ts.isTypeAliasDeclaration(statement)) && statement.name.text === name && checker.getSymbolAtLocation(statement.name) === target) {
2096
+ expression = name;
2097
+ break;
2098
+ }
2099
+ if (!ts.isExportDeclaration(statement)) continue;
2100
+ if (statement.attributes || statement.assertClause) continue;
2101
+ if (statement.exportClause && ts.isNamedExports(statement.exportClause)) {
2102
+ const member = statement.exportClause.elements.find((e) => e.name.text === name);
2103
+ if (member) {
2104
+ const local = member.propertyName ?? member.name;
2105
+ if (!ts.isIdentifier(local)) break;
2106
+ expression = statement.moduleSpecifier ? `import(${statement.moduleSpecifier.getText(source)}).${local.text}` : local.text;
2107
+ break;
2108
+ }
2109
+ } else if (!statement.exportClause && statement.moduleSpecifier) {
2110
+ const from = checker.getSymbolAtLocation(statement.moduleSpecifier);
2111
+ if (from && checker.getExportsOfModule(from).some((e) => e.name === name)) {
2112
+ expression = `import(${statement.moduleSpecifier.getText(source)}).${name}`;
2113
+ break;
2114
+ }
2115
+ }
2116
+ }
2117
+ if (!expression) continue;
2118
+ const docs = exported.getDocumentationComment(checker);
2119
+ const description = ts.displayPartsToString(docs.length ? docs : target.getDocumentationComment(checker));
2120
+ const tags = target.getJsDocTags(checker).map((tag) => `@${tag.name}${tag.text ? ` ${ts.displayPartsToString(tag.text)}` : ""}`);
2121
+ views.push({ name, expression, doc: [description, ...tags].filter(Boolean).join("\n").replace(/\*\//g, "* /") });
2122
+ }
2123
+ if (views.length === 0) continue;
2124
+ const names = new Set(views.map((view) => view.name));
2125
+ const edits = [];
2126
+ for (const statement of source.statements) {
2127
+ if (ts.isExportDeclaration(statement) && statement.exportClause && ts.isNamedExports(statement.exportClause)) {
2128
+ const remaining = statement.exportClause.elements.filter((e) => !names.has(e.name.text));
2129
+ if (remaining.length === statement.exportClause.elements.length) continue;
2130
+ edits.push(remaining.length ? {
2131
+ start: statement.exportClause.getStart(source),
2132
+ end: statement.exportClause.end,
2133
+ text: `{ ${remaining.map((e) => e.getText(source)).join(", ")} }`
2134
+ } : { start: statement.getStart(source), end: statement.end, text: "" });
2135
+ } else if ((ts.isInterfaceDeclaration(statement) || ts.isTypeAliasDeclaration(statement)) && names.has(statement.name.text) && !statement.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword)) {
2136
+ const modifier = statement.modifiers?.find((m) => m.kind === ts.SyntaxKind.ExportKeyword);
2137
+ if (modifier) edits.push({ start: modifier.getStart(source), end: modifier.end, text: "" });
2138
+ }
2139
+ }
2140
+ let output = original;
2141
+ for (const edit of edits.sort((a, b) => b.start - a.start)) output = output.slice(0, edit.start) + edit.text + output.slice(edit.end);
2142
+ const display = unique("__FgDataView");
2143
+ output += `
2144
+ // \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
2145
+ type ${display}<T> = { [K in keyof T]: T[K] } & {};
2146
+ `;
2147
+ for (const view of views.sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0)) {
2148
+ const alias = unique(`__FgData_${view.name}`);
2149
+ if (view.doc) output += `/**
2150
+ ${view.doc.split("\n").map((line) => ` * ${line}`).join("\n")}
2151
+ */
2152
+ `;
2153
+ output += `type ${alias} = ${display}<${view.expression}>;
2154
+ export type { ${alias} as ${view.name} };
2155
+ `;
2156
+ }
2157
+ files.set(path4.relative(base, file).split(path4.sep).join("/"), output);
2158
+ }
2159
+ }
2160
+
2009
2161
  // src/dts-generate.ts
2010
2162
  function resolveFromRoot(root, pkg) {
2011
- const req = createRequire3(path4.join(root, "package.json"));
2163
+ const req = createRequire3(path5.join(root, "package.json"));
2012
2164
  let resolved = null;
2013
2165
  for (const spec of [`${pkg}/package.json`, pkg]) {
2014
2166
  try {
@@ -2018,18 +2170,18 @@ function resolveFromRoot(root, pkg) {
2018
2170
  }
2019
2171
  }
2020
2172
  if (!resolved) return null;
2021
- let dir = path4.dirname(resolved);
2022
- for (let i = 0; i < 5 && !fs3.existsSync(path4.join(dir, "package.json")); i++) {
2023
- const parent = path4.dirname(dir);
2173
+ let dir = path5.dirname(resolved);
2174
+ for (let i = 0; i < 5 && !fs3.existsSync(path5.join(dir, "package.json")); i++) {
2175
+ const parent = path5.dirname(dir);
2024
2176
  if (parent === dir) return null;
2025
2177
  dir = parent;
2026
2178
  }
2027
- return fs3.existsSync(path4.join(dir, "package.json")) ? dir : null;
2179
+ return fs3.existsSync(path5.join(dir, "package.json")) ? dir : null;
2028
2180
  }
2029
2181
  function installHint(root, pkg) {
2030
2182
  const pkgManager = (() => {
2031
- if (fs3.existsSync(path4.join(root, "pnpm-lock.yaml"))) return "pnpm";
2032
- if (fs3.existsSync(path4.join(root, "yarn.lock"))) return "yarn";
2183
+ if (fs3.existsSync(path5.join(root, "pnpm-lock.yaml"))) return "pnpm";
2184
+ if (fs3.existsSync(path5.join(root, "yarn.lock"))) return "yarn";
2033
2185
  return "npm";
2034
2186
  })();
2035
2187
  const devFlag = pkgManager === "pnpm" ? "-D" : "--save-dev";
@@ -2082,7 +2234,7 @@ function computeStaticClosure(ts, entryFiles, resolver, root) {
2082
2234
  continue;
2083
2235
  }
2084
2236
  if (file.endsWith(".vue")) {
2085
- const req = createRequire3(path4.join(root, "package.json"));
2237
+ const req = createRequire3(path5.join(root, "package.json"));
2086
2238
  const { parse: parse2 } = req("vue/compiler-sfc");
2087
2239
  const { descriptor } = parse2(text);
2088
2240
  text = [descriptor.script?.content, descriptor.scriptSetup?.content].filter(Boolean).join("\n");
@@ -2104,16 +2256,16 @@ import ${JSON.stringify(descriptor.script.src)}`;
2104
2256
  const r = resolver(spec, file);
2105
2257
  let resolved = r && !r.fromNodeModules ? r.resolved : null;
2106
2258
  if (!resolved) {
2107
- const base = path4.resolve(path4.dirname(file), spec);
2108
- for (const c of [base, `${base}.vue`, `${base}.ts`, `${base}.tsx`, path4.join(base, "index.ts")]) {
2259
+ const base = path5.resolve(path5.dirname(file), spec);
2260
+ for (const c of [base, `${base}.vue`, `${base}.ts`, `${base}.tsx`, path5.join(base, "index.ts")]) {
2109
2261
  if (fs3.existsSync(c)) {
2110
2262
  resolved = c;
2111
2263
  break;
2112
2264
  }
2113
2265
  }
2114
2266
  }
2115
- if (resolved && !resolved.includes(`${path4.sep}node_modules${path4.sep}`)) {
2116
- queue.push(path4.resolve(resolved));
2267
+ if (resolved && !resolved.includes(`${path5.sep}node_modules${path5.sep}`)) {
2268
+ queue.push(path5.resolve(resolved));
2117
2269
  }
2118
2270
  }
2119
2271
  }
@@ -2124,7 +2276,7 @@ function parseErrorFiles(stdout, root) {
2124
2276
  const out = /* @__PURE__ */ new Set();
2125
2277
  for (const line of stdout.split("\n")) {
2126
2278
  const m = line.match(/^([^)(]+)\((\d+),(\d+)\): error TS/);
2127
- if (m) out.add(path4.resolve(root, m[1].trim()));
2279
+ if (m) out.add(path5.resolve(root, m[1].trim()));
2128
2280
  }
2129
2281
  return out;
2130
2282
  }
@@ -2133,13 +2285,13 @@ function resolveTypesEntries(root, baseCo, diagnostics) {
2133
2285
  if (raw === void 0) return [];
2134
2286
  baseCo.types = [];
2135
2287
  if (!Array.isArray(raw)) return [];
2136
- const req = createRequire3(path4.join(root, "package.json"));
2288
+ const req = createRequire3(path5.join(root, "package.json"));
2137
2289
  const out = [];
2138
2290
  for (const entry of raw) {
2139
2291
  if (typeof entry !== "string" || entry.length === 0) continue;
2140
- const direct = [path4.resolve(root, `${entry}.d.ts`), path4.resolve(root, entry, "index.d.ts"), path4.resolve(root, "node_modules", `${entry}.d.ts`), path4.resolve(root, "node_modules", entry, "index.d.ts"), path4.resolve(root, "node_modules/@types", entry, "index.d.ts")];
2292
+ const direct = [path5.resolve(root, `${entry}.d.ts`), path5.resolve(root, entry, "index.d.ts"), path5.resolve(root, "node_modules", `${entry}.d.ts`), path5.resolve(root, "node_modules", entry, "index.d.ts"), path5.resolve(root, "node_modules/@types", entry, "index.d.ts")];
2141
2293
  let hit = direct.find((c) => fs3.existsSync(c));
2142
- if (!hit && !entry.startsWith(".") && !path4.isAbsolute(entry)) {
2294
+ if (!hit && !entry.startsWith(".") && !path5.isAbsolute(entry)) {
2143
2295
  try {
2144
2296
  const r = req.resolve(entry);
2145
2297
  for (const c of [r.replace(/\.js$/, ".d.ts"), `${r}.d.ts`, r]) {
@@ -2167,27 +2319,27 @@ function hasVueFilesUnderSources(root) {
2167
2319
  }
2168
2320
  for (const e of entries) {
2169
2321
  if (e.name === "node_modules" || e.name === ".git" || e.name === "dist") continue;
2170
- const p = path4.join(dir, e.name);
2322
+ const p = path5.join(dir, e.name);
2171
2323
  budget.left -= 1;
2172
2324
  if (e.isFile() && e.name.endsWith(".vue")) return true;
2173
2325
  if (e.isDirectory() && scan(p, budget)) return true;
2174
2326
  }
2175
2327
  return false;
2176
2328
  };
2177
- const srcDir = path4.join(root, "src");
2329
+ const srcDir = path5.join(root, "src");
2178
2330
  return scan(fs3.existsSync(srcDir) ? srcDir : root, { left: 2e3 });
2179
2331
  }
2180
2332
  function commonDirOf(files) {
2181
2333
  if (files.length === 0) return "";
2182
- let dir = path4.dirname(files[0]);
2334
+ let dir = path5.dirname(files[0]);
2183
2335
  for (const f of files) {
2184
- const rel = path4.relative(dir, f);
2336
+ const rel = path5.relative(dir, f);
2185
2337
  if (rel.startsWith("..")) {
2186
- const parts = path4.dirname(f).split(path4.sep);
2187
- const cur = dir.split(path4.sep);
2338
+ const parts = path5.dirname(f).split(path5.sep);
2339
+ const cur = dir.split(path5.sep);
2188
2340
  let i = 0;
2189
2341
  while (i < parts.length && i < cur.length && parts[i] === cur[i]) i++;
2190
- dir = parts.slice(0, i).join(path4.sep) || path4.sep;
2342
+ dir = parts.slice(0, i).join(path5.sep) || path5.sep;
2191
2343
  }
2192
2344
  }
2193
2345
  return dir;
@@ -2228,12 +2380,12 @@ function loadTsContext(root, ts, diagnostics) {
2228
2380
  diagnostics.push(`tsconfig \u89E3\u6790\u5931\u8D25\uFF08${tsconfigFile}\uFF09\uFF1A${ts.flattenDiagnosticMessageText(raw.error.messageText, " ")}`);
2229
2381
  return null;
2230
2382
  }
2231
- const parsed = ts.parseJsonConfigFileContent(raw.config, ts.sys, path4.dirname(tsconfigFile), void 0, void 0, void 0, [
2383
+ const parsed = ts.parseJsonConfigFileContent(raw.config, ts.sys, path5.dirname(tsconfigFile), void 0, void 0, void 0, [
2232
2384
  { extension: ".vue", isMixedContent: true, scriptKind: ts.ScriptKind.Deferred }
2233
2385
  ]);
2234
2386
  const co = { ...parsed.options };
2235
- if (typeof co.baseUrl === "string" && !path4.isAbsolute(co.baseUrl)) {
2236
- co.baseUrl = path4.resolve(path4.dirname(tsconfigFile), co.baseUrl);
2387
+ if (typeof co.baseUrl === "string" && !path5.isAbsolute(co.baseUrl)) {
2388
+ co.baseUrl = path5.resolve(path5.dirname(tsconfigFile), co.baseUrl);
2237
2389
  }
2238
2390
  if (parsed.errors.length > 0) {
2239
2391
  const fatal = parsed.errors.filter((e) => e.category === ts.DiagnosticCategory.Error);
@@ -2249,7 +2401,7 @@ function loadTsContext(root, ts, diagnostics) {
2249
2401
  compilerOptions: co,
2250
2402
  rawOptions: raw.config.compilerOptions ?? {},
2251
2403
  projectFiles: parsed.fileNames.filter((f) => !f.endsWith(".d.ts")),
2252
- ambientInputs: parsed.fileNames.filter((f) => f.endsWith(".d.ts") && !f.includes(`${path4.sep}node_modules${path4.sep}`)),
2404
+ ambientInputs: parsed.fileNames.filter((f) => f.endsWith(".d.ts") && !f.includes(`${path5.sep}node_modules${path5.sep}`)),
2253
2405
  tsconfigFile
2254
2406
  };
2255
2407
  }
@@ -2260,7 +2412,7 @@ function makeResolver(ts, co) {
2260
2412
  let resolved = r.resolvedModule?.resolvedFileName;
2261
2413
  if (resolved?.endsWith(".vue.ts") && ts.sys.fileExists(resolved.slice(0, -3))) resolved = resolved.slice(0, -3);
2262
2414
  if (!resolved) return null;
2263
- return { resolved, fromNodeModules: resolved.includes(`${path4.sep}node_modules${path4.sep}`) };
2415
+ return { resolved, fromNodeModules: resolved.includes(`${path5.sep}node_modules${path5.sep}`) };
2264
2416
  };
2265
2417
  }
2266
2418
  async function generateTypesBundle(input) {
@@ -2273,7 +2425,7 @@ async function generateTypesBundle(input) {
2273
2425
  if (!tsPkgDir) {
2274
2426
  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")}`] };
2275
2427
  }
2276
- const tsReq = createRequire3(path4.join(tsPkgDir, "package.json"));
2428
+ const tsReq = createRequire3(path5.join(tsPkgDir, "package.json"));
2277
2429
  const ts = tsReq("typescript");
2278
2430
  const ctx = loadTsContext(root, ts, diagnostics);
2279
2431
  if (!ctx) return { ok: false, diagnostics };
@@ -2281,9 +2433,9 @@ async function generateTypesBundle(input) {
2281
2433
  const entryMap = /* @__PURE__ */ new Map();
2282
2434
  for (const expose of exposes) {
2283
2435
  const raw = expose.import.replace(/^\.?\//, "");
2284
- let abs = path4.resolve(root, raw);
2436
+ let abs = path5.resolve(root, raw);
2285
2437
  if (!fs3.existsSync(abs)) {
2286
- const viaResolver = resolver(expose.import, path4.join(root, "package.json"));
2438
+ const viaResolver = resolver(expose.import, path5.join(root, "package.json"));
2287
2439
  if (viaResolver && !viaResolver.fromNodeModules) abs = viaResolver.resolved;
2288
2440
  }
2289
2441
  abs = abs.replace(/\.js$/, ".ts");
@@ -2315,17 +2467,17 @@ async function generateTypesBundle(input) {
2315
2467
  };
2316
2468
  }
2317
2469
  tool = "vue-tsc";
2318
- const vueTscPkg = JSON.parse(fs3.readFileSync(path4.join(vueTscDir, "package.json"), "utf8"));
2470
+ const vueTscPkg = JSON.parse(fs3.readFileSync(path5.join(vueTscDir, "package.json"), "utf8"));
2319
2471
  const binRel = vueTscPkg.bin?.["vue-tsc"] ?? vueTscPkg.bin?.["vue-tsc.js"] ?? "bin/vue-tsc.js";
2320
- const binPath = path4.resolve(vueTscDir, binRel);
2472
+ const binPath = path5.resolve(vueTscDir, binRel);
2321
2473
  const scopedVueProgram = /^1\./.test(vueTscPkg.version);
2322
2474
  if (!fs3.existsSync(binPath)) {
2323
2475
  return { ok: false, diagnostics: [`vue-tsc \u5165\u53E3\u4E0D\u5B58\u5728\uFF08${binPath}\uFF09\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5 vue-tsc\u3002`] };
2324
2476
  }
2325
2477
  const cacheDir = input.incrementalDir;
2326
2478
  if (cacheDir) fs3.mkdirSync(cacheDir, { recursive: true });
2327
- const tmpCfg = path4.join(root, `.fulgurjs-types-tsconfig-${cacheDir ? path4.basename(cacheDir) : `${process.pid}-${crypto.randomUUID()}`}.json`);
2328
- const outDir = cacheDir ? path4.join(cacheDir, "emit") : fs3.mkdtempSync(path4.join(root, "node_modules", ".fulgurjs-types-emit-"));
2479
+ const tmpCfg = path5.join(root, `.fulgurjs-types-tsconfig-${cacheDir ? path5.basename(cacheDir) : `${process.pid}-${crypto.randomUUID()}`}.json`);
2480
+ const outDir = cacheDir ? path5.join(cacheDir, "emit") : fs3.mkdtempSync(path5.join(root, "node_modules", ".fulgurjs-types-emit-"));
2329
2481
  const clearOutput = () => {
2330
2482
  if (!cacheDir) fs3.rmSync(outDir, { recursive: true, force: true });
2331
2483
  };
@@ -2352,14 +2504,14 @@ async function generateTypesBundle(input) {
2352
2504
  sourceMap: false,
2353
2505
  outDir,
2354
2506
  rootDir,
2355
- ...cacheDir && !scopedVueProgram ? { incremental: true, tsBuildInfoFile: path4.join(cacheDir, "state.tsbuildinfo") } : {}
2507
+ ...cacheDir && !scopedVueProgram ? { incremental: true, tsBuildInfoFile: path5.join(cacheDir, "state.tsbuildinfo") } : {}
2356
2508
  },
2357
2509
  // 显式 types 是声明程序的根文件,不能再受工程 exclude: ["node_modules"] 过滤。
2358
2510
  // include 仍受继承的 exclude 约束;files 保留 vite/client 等已解析的全局声明。
2359
- files: resolvedTypeFiles.map((f) => path4.relative(root, f)),
2511
+ files: resolvedTypeFiles.map((f) => path5.relative(root, f)),
2360
2512
  include: [
2361
- ...entryFiles.map((f) => path4.relative(root, f)),
2362
- ...ctx.ambientInputs.map((f) => path4.relative(root, f))
2513
+ ...entryFiles.map((f) => path5.relative(root, f)),
2514
+ ...ctx.ambientInputs.map((f) => path5.relative(root, f))
2363
2515
  ]
2364
2516
  }));
2365
2517
  if (process.env.FG_DUMP_TSCFG) fs3.writeFileSync(process.env.FG_DUMP_TSCFG, fs3.readFileSync(tmpCfg, "utf8"));
@@ -2392,7 +2544,7 @@ async function generateTypesBundle(input) {
2392
2544
  signal?.addEventListener("abort", abort, { once: true });
2393
2545
  if (signal?.aborted) abort();
2394
2546
  });
2395
- const heapMarker = cacheDir ? path4.join(cacheDir, "raised-heap") : void 0;
2547
+ const heapMarker = cacheDir ? path5.join(cacheDir, "raised-heap") : void 0;
2396
2548
  const raisedArgs = [`--max-old-space-size=${process.env.FG_DTS_MAX_OLD_SPACE ?? "8192"}`];
2397
2549
  const initialArgs = heapMarker && fs3.existsSync(heapMarker) ? raisedArgs : [];
2398
2550
  let { err, stdout, stderr } = await attempt(initialArgs);
@@ -2469,7 +2621,7 @@ ${tail}`);
2469
2621
  collectEmitted(ts, outDir, rootDir, emitted, closure);
2470
2622
  clearOutput();
2471
2623
  } else {
2472
- const outDir = fs3.mkdtempSync(path4.join(root, "node_modules", ".fulgurjs-types-emit-"));
2624
+ const outDir = fs3.mkdtempSync(path5.join(root, "node_modules", ".fulgurjs-types-emit-"));
2473
2625
  const program = ts.createProgram([...entryFiles, ...ctx.ambientInputs, ...resolveTypesEntries(root, ctx.rawOptions, [])], {
2474
2626
  ...ctx.compilerOptions,
2475
2627
  noEmit: false,
@@ -2487,13 +2639,13 @@ ${tail}`);
2487
2639
  ...program.getOptionsDiagnostics(),
2488
2640
  ...program.getSemanticDiagnostics(),
2489
2641
  ...program.getDeclarationDiagnostics()
2490
- ].filter((d) => d.category === ts.DiagnosticCategory.Error).filter((d) => !d.file || closure.has(path4.resolve(d.file.fileName)));
2642
+ ].filter((d) => d.category === ts.DiagnosticCategory.Error).filter((d) => !d.file || closure.has(path5.resolve(d.file.fileName)));
2491
2643
  if (errs.length > 0) {
2492
2644
  fs3.rmSync(outDir, { recursive: true, force: true });
2493
2645
  diagnostics.push(
2494
2646
  `\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`,
2495
2647
  ...errs.slice(0, 20).map((d) => {
2496
- const f = d.file ? path4.relative(root, d.file.fileName) : "?";
2648
+ const f = d.file ? path5.relative(root, d.file.fileName) : "?";
2497
2649
  const pos = d.file ? d.file.getLineAndCharacterOfPosition(d.start ?? 0) : { line: 0 };
2498
2650
  return ` ${f}:${pos.line + 1} TS${d.code}: ${ts.flattenDiagnosticMessageText(d.messageText, " ")}`;
2499
2651
  })
@@ -2501,11 +2653,11 @@ ${tail}`);
2501
2653
  return { ok: false, diagnostics };
2502
2654
  }
2503
2655
  for (const source of program.getSourceFiles()) {
2504
- if (source.isDeclarationFile || source.fileName.endsWith(".json") || !closure.has(path4.resolve(source.fileName))) continue;
2656
+ if (source.isDeclarationFile || source.fileName.endsWith(".json") || !closure.has(path5.resolve(source.fileName))) continue;
2505
2657
  const emitResult = program.emit(source, void 0, void 0, true);
2506
2658
  if (emitResult.emitSkipped) {
2507
2659
  fs3.rmSync(outDir, { recursive: true, force: true });
2508
- return { ok: false, diagnostics: [`TypeScript \u58F0\u660E emit \u5931\u8D25\uFF08emitSkipped\uFF09\uFF1A${path4.relative(root, source.fileName)}\u3002\u8BF7\u68C0\u67E5 tsconfig \u7F16\u8BD1\u9009\u9879\u3002`] };
2660
+ return { ok: false, diagnostics: [`TypeScript \u58F0\u660E emit \u5931\u8D25\uFF08emitSkipped\uFF09\uFF1A${path5.relative(root, source.fileName)}\u3002\u8BF7\u68C0\u67E5 tsconfig \u7F16\u8BD1\u9009\u9879\u3002`] };
2509
2661
  }
2510
2662
  }
2511
2663
  collectEmitted(ts, outDir, rootDir, emitted, closure);
@@ -2551,7 +2703,7 @@ export default value;
2551
2703
  const externals = /* @__PURE__ */ new Set();
2552
2704
  const srcToRel = /* @__PURE__ */ new Map();
2553
2705
  for (const srcAbs of emitted.keys()) {
2554
- const rel = path4.relative(rootDir, srcAbs).split(path4.sep).join("/");
2706
+ const rel = path5.relative(rootDir, srcAbs).split(path5.sep).join("/");
2555
2707
  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`;
2556
2708
  srcToRel.set(srcAbs, declRel);
2557
2709
  }
@@ -2563,7 +2715,7 @@ export default value;
2563
2715
  if (reachable.has(srcAbs)) continue;
2564
2716
  const text = emitted.get(srcAbs);
2565
2717
  if (text === void 0) {
2566
- diagnostics.push(`\u516C\u5F00\u58F0\u660E\u4F9D\u8D56\u672A\u4EA7\u51FA\uFF1A${path4.relative(root, srcAbs)}\u3002`);
2718
+ diagnostics.push(`\u516C\u5F00\u58F0\u660E\u4F9D\u8D56\u672A\u4EA7\u51FA\uFF1A${path5.relative(root, srcAbs)}\u3002`);
2567
2719
  return { ok: false, diagnostics };
2568
2720
  }
2569
2721
  const rewritten = rewriteSpecifiers(
@@ -2588,11 +2740,10 @@ export default value;
2588
2740
  for (const [srcAbs, text] of reachable) {
2589
2741
  const rel = srcToRel.get(srcAbs);
2590
2742
  if (text.includes(root)) {
2591
- diagnostics.push(`\u58F0\u660E\u6587\u4EF6\u5305\u542B\u672C\u673A\u7EDD\u5BF9\u8DEF\u5F84\uFF08${path4.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`);
2743
+ diagnostics.push(`\u58F0\u660E\u6587\u4EF6\u5305\u542B\u672C\u673A\u7EDD\u5BF9\u8DEF\u5F84\uFF08${path5.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`);
2592
2744
  leaked = true;
2593
2745
  }
2594
2746
  files.set(rel, text);
2595
- filesDigest[rel] = crypto.createHash("sha256").update(text, "utf8").digest("hex");
2596
2747
  }
2597
2748
  if (leaked) return { ok: false, diagnostics };
2598
2749
  const exposesMap = {};
@@ -2604,6 +2755,13 @@ export default value;
2604
2755
  }
2605
2756
  exposesMap[name] = { declaration: declRel };
2606
2757
  }
2758
+ displayPublicDataTypes(ts, files, Object.values(exposesMap).map((entry) => entry.declaration), root, ctx.compilerOptions);
2759
+ for (const [rel, text] of files) {
2760
+ if (text.includes(root)) {
2761
+ 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`] };
2762
+ }
2763
+ filesDigest[rel] = crypto.createHash("sha256").update(text, "utf8").digest("hex");
2764
+ }
2607
2765
  const index = {
2608
2766
  schemaVersion: TYPES_SCHEMA_VERSION,
2609
2767
  generator: "@fulgurjs/federation",
@@ -2620,18 +2778,18 @@ export default value;
2620
2778
  }
2621
2779
  function collectEmitted(ts, outDir, rootDir, out, closure) {
2622
2780
  const walk = (dir) => fs3.readdirSync(dir, { withFileTypes: true }).flatMap((d) => {
2623
- const p = path4.join(dir, d.name);
2781
+ const p = path5.join(dir, d.name);
2624
2782
  return d.isDirectory() ? walk(p) : [p];
2625
2783
  });
2626
2784
  if (!fs3.existsSync(outDir)) return;
2627
2785
  for (const file of walk(outDir)) {
2628
2786
  if (!file.endsWith(".d.ts")) continue;
2629
- const rel = path4.relative(outDir, file);
2787
+ const rel = path5.relative(outDir, file);
2630
2788
  const srcRel = rel.endsWith(".vue.d.ts") ? rel.replace(/\.d\.ts$/, "") : rel.replace(/\.d\.ts$/, ".ts");
2631
- let srcAbs = path4.join(rootDir, srcRel);
2789
+ let srcAbs = path5.join(rootDir, srcRel);
2632
2790
  if (!out.has(srcAbs) && !fs3.existsSync(srcAbs)) {
2633
2791
  for (const ext of [".tsx", ".jsx", ".mts", ".cts", ".js"]) {
2634
- const candidate = path4.join(rootDir, rel.replace(/\.d\.ts$/, ext));
2792
+ const candidate = path5.join(rootDir, rel.replace(/\.d\.ts$/, ext));
2635
2793
  if (fs3.existsSync(candidate)) {
2636
2794
  srcAbs = candidate;
2637
2795
  break;
@@ -2649,7 +2807,7 @@ function rewriteSpecifiers(ts, text, srcAbs, srcToRel, resolver, externals, root
2649
2807
  const fail = (spec) => {
2650
2808
  failed = true;
2651
2809
  diagnostics.push(
2652
- `\u58F0\u660E\u4F9D\u8D56\u4E0D\u5B8C\u6574\uFF1A${path4.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`
2810
+ `\u58F0\u660E\u4F9D\u8D56\u4E0D\u5B8C\u6574\uFF1A${path5.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`
2653
2811
  );
2654
2812
  return null;
2655
2813
  };
@@ -2680,9 +2838,9 @@ function rewriteSpecifiers(ts, text, srcAbs, srcToRel, resolver, externals, root
2680
2838
  return target;
2681
2839
  };
2682
2840
  const rewriteTo = (targetRel) => {
2683
- const fromDir = path4.posix.dirname(declRel);
2841
+ const fromDir = path5.posix.dirname(declRel);
2684
2842
  const toNoExt = targetRel.replace(/\.d\.ts$/, "");
2685
- let rel = path4.posix.relative(fromDir, toNoExt);
2843
+ let rel = path5.posix.relative(fromDir, toNoExt);
2686
2844
  if (!rel.startsWith(".")) rel = `./${rel}`;
2687
2845
  return rel;
2688
2846
  };
@@ -2766,14 +2924,143 @@ function rewriteSpecifiers(ts, text, srcAbs, srcToRel, resolver, externals, root
2766
2924
  return out;
2767
2925
  }
2768
2926
 
2927
+ // src/dts-cache-worker-client.ts
2928
+ import fs4 from "fs";
2929
+ import path6 from "path";
2930
+ import crypto2 from "crypto";
2931
+ import { fileURLToPath } from "url";
2932
+ import { Worker } from "worker_threads";
2933
+ function createTypesCacheWorker() {
2934
+ let worker = null;
2935
+ let disposed = false;
2936
+ const pending = /* @__PURE__ */ new Map();
2937
+ const temporary = /* @__PURE__ */ new Set();
2938
+ let watches = [];
2939
+ const fail = (error) => {
2940
+ for (const request of pending.values()) request.reject(error);
2941
+ pending.clear();
2942
+ };
2943
+ const ensure = () => {
2944
+ if (disposed) throw new Error("\u7C7B\u578B\u7F13\u5B58\u670D\u52A1\u5DF2\u5173\u95ED");
2945
+ if (worker) return worker;
2946
+ const self = typeof __filename === "string" ? __filename : fileURLToPath(import.meta.url);
2947
+ const directory = path6.dirname(self);
2948
+ const file = [path6.join(directory, "dts-cache-worker.cjs"), path6.join(directory, "../dist/dts-cache-worker.cjs")].find((file2) => fs4.existsSync(file2));
2949
+ 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");
2950
+ const running = new Worker(file);
2951
+ worker = running;
2952
+ running.on("message", (response) => {
2953
+ const request = pending.get(response.id);
2954
+ if (!request) return;
2955
+ pending.delete(response.id);
2956
+ if (pending.size === 0) running.unref();
2957
+ if (response.ok) request.resolve(response.value);
2958
+ else request.reject(new Error(response.error ?? "\u7C7B\u578B\u7F13\u5B58\u540E\u53F0\u4EFB\u52A1\u5931\u8D25"));
2959
+ });
2960
+ running.on("error", (error) => fail(error));
2961
+ running.on("exit", (code) => {
2962
+ if (worker === running) worker = null;
2963
+ if (!disposed) fail(new Error(`\u7C7B\u578B\u7F13\u5B58\u540E\u53F0\u7A0B\u5E8F\u9000\u51FA\uFF08${code}\uFF09`));
2964
+ });
2965
+ running.unref();
2966
+ return running;
2967
+ };
2968
+ const call = (operation, input, payload = {}) => new Promise((resolve, reject) => {
2969
+ const id = crypto2.randomUUID();
2970
+ try {
2971
+ const running = ensure();
2972
+ pending.set(id, { resolve, reject });
2973
+ running.ref();
2974
+ 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 });
2975
+ } catch (error) {
2976
+ pending.delete(id);
2977
+ if (pending.size === 0) worker?.unref();
2978
+ reject(error);
2979
+ }
2980
+ });
2981
+ return {
2982
+ read: (input) => call("read", input),
2983
+ capture: (input) => call("capture", input),
2984
+ validate: (input, handle, stable) => call("validate", input, { token: handle.token, stable }),
2985
+ async write(input, handle, result) {
2986
+ const temporaryId = crypto2.randomUUID();
2987
+ const digest = crypto2.createHash("sha256").update(path6.resolve(input.root)).digest("hex").slice(0, 12);
2988
+ const file = path6.join(input.root, "node_modules/.cache/fulgurjs/types", `provider-${digest}.json.gz.${process.pid}.${temporaryId}.tmp`);
2989
+ temporary.add(file);
2990
+ try {
2991
+ return await call("write", input, { token: handle.token, result, temporaryId });
2992
+ } finally {
2993
+ if (!disposed) {
2994
+ temporary.delete(file);
2995
+ try {
2996
+ fs4.rmSync(file, { force: true });
2997
+ } catch {
2998
+ }
2999
+ }
3000
+ }
3001
+ },
3002
+ async release(input, handle) {
3003
+ if (!disposed) await call("release", input, { token: handle.token });
3004
+ },
3005
+ watch(handle, changed) {
3006
+ const groups = /* @__PURE__ */ new Map();
3007
+ for (const file of handle.externalInputs) {
3008
+ let directory = path6.dirname(file);
3009
+ for (; ; ) {
3010
+ try {
3011
+ if (fs4.statSync(directory).isDirectory()) break;
3012
+ } catch {
3013
+ }
3014
+ const parent = path6.dirname(directory);
3015
+ if (parent === directory) break;
3016
+ directory = parent;
3017
+ }
3018
+ const name = path6.relative(directory, file).split(path6.sep)[0];
3019
+ const names = groups.get(directory) ?? /* @__PURE__ */ new Set();
3020
+ names.add(name);
3021
+ groups.set(directory, names);
3022
+ }
3023
+ const next = [];
3024
+ try {
3025
+ for (const [directory, names] of groups) next.push(fs4.watch(directory, { persistent: false }, (_event, filename) => {
3026
+ if (!filename || names.has(filename.toString().split(path6.sep)[0])) changed();
3027
+ }));
3028
+ } catch (error) {
3029
+ for (const watcher of next) watcher.close();
3030
+ throw error;
3031
+ }
3032
+ for (const watcher of watches) watcher.close();
3033
+ watches = next;
3034
+ },
3035
+ dispose() {
3036
+ if (disposed) return;
3037
+ disposed = true;
3038
+ for (const watcher of watches) watcher.close();
3039
+ watches = [];
3040
+ fail(new Error("\u7C7B\u578B\u7F13\u5B58\u670D\u52A1\u5DF2\u5173\u95ED"));
3041
+ const running = worker;
3042
+ worker = null;
3043
+ if (running) void running.terminate().finally(() => {
3044
+ for (const file of temporary) {
3045
+ try {
3046
+ fs4.rmSync(file, { force: true });
3047
+ } catch {
3048
+ }
3049
+ }
3050
+ temporary.clear();
3051
+ });
3052
+ }
3053
+ };
3054
+ }
3055
+
2769
3056
  // src/dts-serve.ts
2770
3057
  function isTypesInputChange(root, id, outputDir) {
2771
- const relative = path5.relative(root, id);
2772
- if (relative === ".." || relative.startsWith(`..${path5.sep}`) || path5.isAbsolute(relative)) return false;
2773
- if (relative.split(path5.sep).some((part) => part === "node_modules" || part === ".vite")) return false;
2774
- if (path5.basename(id).startsWith(".fulgurjs-types-tsconfig-")) return false;
2775
- const outputRelative = path5.relative(outputDir, id);
2776
- if (!(outputRelative.startsWith(`..${path5.sep}`) || path5.isAbsolute(outputRelative))) return false;
3058
+ const relative = path7.relative(root, id);
3059
+ if (relative === ".." || relative.startsWith(`..${path7.sep}`) || path7.isAbsolute(relative)) return false;
3060
+ if (relative.split(path7.sep).some((part) => part === "node_modules" || part === ".vite")) return false;
3061
+ if (path7.basename(id).startsWith(".fulgurjs-types-tsconfig-")) return false;
3062
+ const outputRelative = path7.relative(outputDir, id);
3063
+ if (!(outputRelative.startsWith(`..${path7.sep}`) || path7.isAbsolute(outputRelative))) return false;
2777
3064
  return /\.(?:[cm]?[jt]sx?|vue|json)$/i.test(id);
2778
3065
  }
2779
3066
  function createDevTypesServer(options, hooks = {}) {
@@ -2788,46 +3075,141 @@ function createDevTypesServer(options, hooks = {}) {
2788
3075
  let lastErrorKey = null;
2789
3076
  let incrementalDir;
2790
3077
  const clearCache = () => {
2791
- if (incrementalDir) fs4.rmSync(incrementalDir, { recursive: true, force: true });
3078
+ if (incrementalDir) fs5.rmSync(incrementalDir, { recursive: true, force: true });
2792
3079
  incrementalDir = void 0;
2793
3080
  };
2794
3081
  const publicExposes = options.exposes.filter((e) => !e.internal).map((e) => ({ name: e.name, import: e.import }));
3082
+ const cacheInput = { root: options.root, exposes: publicExposes, pluginVersion: options.pluginVersion, dts: options.dts };
3083
+ let cacheUnavailableAnnounced = false;
3084
+ let inputEpoch = 0;
3085
+ const cache = createTypesCacheWorker();
3086
+ const changed = () => {
3087
+ inputEpoch++;
3088
+ void ensure();
3089
+ };
3090
+ const queueRecheck = (reason) => {
3091
+ pendingInvalidate = true;
3092
+ 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`);
3093
+ };
2795
3094
  const run = async () => {
3095
+ await new Promise((resolve) => setImmediate(resolve));
2796
3096
  if (disposed) return;
2797
- let result;
3097
+ const epoch = inputEpoch;
3098
+ const started = performance.now();
3099
+ let handle = null;
2798
3100
  try {
2799
- if (!incrementalDir) {
2800
- const cacheRoot = path5.join(options.root, "node_modules");
2801
- fs4.mkdirSync(cacheRoot, { recursive: true });
2802
- incrementalDir = fs4.mkdtempSync(path5.join(cacheRoot, ".fulgurjs-types-cache-"));
3101
+ try {
3102
+ const cached = await cache.read(cacheInput);
3103
+ if (disposed) return;
3104
+ if (cached) {
3105
+ handle = cached;
3106
+ cache.watch(cached, changed);
3107
+ const reason = await cache.validate(cacheInput, cached, false);
3108
+ if (disposed) return;
3109
+ if (epoch !== inputEpoch || pendingInvalidate) {
3110
+ queueRecheck();
3111
+ return;
3112
+ }
3113
+ if (!reason) {
3114
+ files = cached.result.files;
3115
+ revision = cached.result.index.revision;
3116
+ lastErrorKey = null;
3117
+ 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`);
3118
+ return;
3119
+ }
3120
+ await cache.release(cacheInput, cached);
3121
+ handle = null;
3122
+ }
3123
+ handle = await cache.capture(cacheInput);
3124
+ if (disposed) return;
3125
+ if (handle) cache.watch(handle, changed);
3126
+ else if (!cacheUnavailableAnnounced) {
3127
+ cacheUnavailableAnnounced = true;
3128
+ 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");
3129
+ }
3130
+ } catch (error) {
3131
+ if (disposed) return;
3132
+ if (handle) await cache.release(cacheInput, handle).catch(() => {
3133
+ });
3134
+ handle = null;
3135
+ if (!cacheUnavailableAnnounced) {
3136
+ cacheUnavailableAnnounced = true;
3137
+ 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`);
3138
+ }
2803
3139
  }
2804
- result = await generateTypesBundle({
2805
- root: options.root,
2806
- exposes: publicExposes,
2807
- pluginVersion: options.pluginVersion,
2808
- signal: controller.signal,
2809
- incrementalDir
2810
- });
2811
- } catch (e) {
2812
- 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}`] };
2813
- }
2814
- if (disposed) return;
2815
- if (result.ok) {
2816
- files = result.files;
2817
- revision = result.index.revision;
2818
- lastErrorKey = null;
2819
- log(
2820
- `[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`
2821
- );
2822
- } else {
2823
- files = null;
2824
- revision = null;
2825
- const key = result.diagnostics.join("\n");
2826
- if (key !== lastErrorKey) {
2827
- lastErrorKey = key;
2828
- 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
3140
+ let result;
3141
+ try {
3142
+ if (!incrementalDir) {
3143
+ const cacheRoot = path7.join(options.root, "node_modules");
3144
+ fs5.mkdirSync(cacheRoot, { recursive: true });
3145
+ incrementalDir = fs5.mkdtempSync(path7.join(cacheRoot, ".fulgurjs-types-cache-"));
3146
+ }
3147
+ result = await generateTypesBundle({
3148
+ root: options.root,
3149
+ exposes: publicExposes,
3150
+ pluginVersion: options.pluginVersion,
3151
+ signal: controller.signal,
3152
+ incrementalDir
3153
+ });
3154
+ } catch (e) {
3155
+ 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}`] };
3156
+ }
3157
+ if (disposed) return;
3158
+ let changedDuringGeneration = pendingInvalidate || epoch !== inputEpoch;
3159
+ if (handle) {
3160
+ try {
3161
+ const reason = await cache.validate(cacheInput, handle, true);
3162
+ if (reason) {
3163
+ queueRecheck(reason);
3164
+ return;
3165
+ }
3166
+ } catch (error) {
3167
+ if (disposed) return;
3168
+ warn(`[fulgurjs] \u7C7B\u578B\u7F13\u5B58\u6821\u9A8C\u5931\u8D25\uFF1A${error.message}\uFF1B\u672C\u8F6E\u4E0D\u5199\u6301\u4E45\u7F13\u5B58\u3002`);
3169
+ await cache.release(cacheInput, handle).catch(() => {
3170
+ });
3171
+ handle = null;
3172
+ }
3173
+ }
3174
+ if (disposed) return;
3175
+ if (changedDuringGeneration || pendingInvalidate || epoch !== inputEpoch) {
3176
+ queueRecheck();
3177
+ return;
3178
+ }
3179
+ if (result.ok) {
3180
+ if (handle) {
3181
+ try {
3182
+ if (!await cache.write(cacheInput, handle, result)) {
3183
+ queueRecheck();
3184
+ return;
3185
+ }
3186
+ } catch (error) {
3187
+ if (disposed) return;
3188
+ 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`);
3189
+ }
3190
+ }
3191
+ if (disposed) return;
3192
+ if (pendingInvalidate || epoch !== inputEpoch) {
3193
+ queueRecheck();
3194
+ return;
3195
+ }
3196
+ files = result.files;
3197
+ revision = result.index.revision;
3198
+ lastErrorKey = null;
3199
+ 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`);
3200
+ } else {
3201
+ files = null;
3202
+ revision = null;
3203
+ const key = result.diagnostics.join("\n");
3204
+ if (key !== lastErrorKey) {
3205
+ lastErrorKey = key;
3206
+ 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
2829
3207
  ${key}`);
3208
+ }
2830
3209
  }
3210
+ } finally {
3211
+ if (handle) await cache.release(cacheInput, handle).catch(() => {
3212
+ });
2831
3213
  }
2832
3214
  };
2833
3215
  const ensure = async () => {
@@ -2866,21 +3248,26 @@ ${key}`);
2866
3248
  },
2867
3249
  invalidate() {
2868
3250
  if (disposed) return;
3251
+ inputEpoch++;
2869
3252
  void ensure();
2870
3253
  },
3254
+ markInputChanged() {
3255
+ if (!disposed) inputEpoch++;
3256
+ },
2871
3257
  isGenerating: () => generating !== null,
2872
3258
  dispose() {
2873
3259
  disposed = true;
2874
3260
  controller.abort();
3261
+ cache.dispose();
2875
3262
  if (!generating) clearCache();
2876
3263
  }
2877
3264
  };
2878
3265
  }
2879
3266
 
2880
3267
  // src/dts-sync.ts
2881
- import fs6 from "fs";
2882
- import path7 from "path";
2883
- import crypto2 from "crypto";
3268
+ import fs7 from "fs";
3269
+ import path9 from "path";
3270
+ import crypto3 from "crypto";
2884
3271
 
2885
3272
  // src/dts-ambient.ts
2886
3273
  var RUNTIME_TYPE_MODULE = "@fulgurjs/federation/internal/registry.js";
@@ -3039,8 +3426,8 @@ function stripAmbientModifiers(text) {
3039
3426
  }
3040
3427
 
3041
3428
  // src/dts-discovery.ts
3042
- import fs5 from "fs";
3043
- import path6 from "path";
3429
+ import fs6 from "fs";
3430
+ import path8 from "path";
3044
3431
  function stripJsoncForConfig(text) {
3045
3432
  let out = "";
3046
3433
  let i = 0;
@@ -3080,7 +3467,7 @@ function stripJsoncForConfig(text) {
3080
3467
  }
3081
3468
  function readCfg(file) {
3082
3469
  try {
3083
- const raw = JSON.parse(stripJsoncForConfig(fs5.readFileSync(file, "utf8")));
3470
+ const raw = JSON.parse(stripJsoncForConfig(fs6.readFileSync(file, "utf8")));
3084
3471
  const cfg = { file };
3085
3472
  for (const key of ["include", "files", "exclude"]) {
3086
3473
  const v = raw[key];
@@ -3104,25 +3491,25 @@ function effectiveCfg(cfg, depth = 0) {
3104
3491
  const parentFile = resolveConfigFile(parent, cfg.file);
3105
3492
  if (!parentFile) continue;
3106
3493
  const parentCfg = effectiveCfg(readCfg(parentFile) ?? { file: parentFile }, depth + 1);
3107
- const dirOf = (f, base) => path6.resolve(path6.dirname(base), f);
3494
+ const dirOf = (f, base) => path8.resolve(path8.dirname(base), f);
3108
3495
  if (parentCfg.include && !cfg.include) {
3109
- merged.include = parentCfg.include.map((p) => path6.relative(path6.dirname(cfg.file), dirOf(p, parentFile)) || ".");
3496
+ merged.include = parentCfg.include.map((p) => path8.relative(path8.dirname(cfg.file), dirOf(p, parentFile)) || ".");
3110
3497
  }
3111
3498
  if (parentCfg.files && !cfg.files) {
3112
- merged.files = parentCfg.files.map((p) => path6.relative(path6.dirname(cfg.file), dirOf(p, parentFile)));
3499
+ merged.files = parentCfg.files.map((p) => path8.relative(path8.dirname(cfg.file), dirOf(p, parentFile)));
3113
3500
  }
3114
3501
  if (parentCfg.exclude && !cfg.exclude) {
3115
- merged.exclude = parentCfg.exclude.map((p) => path6.relative(path6.dirname(cfg.file), dirOf(p, parentFile)));
3502
+ merged.exclude = parentCfg.exclude.map((p) => path8.relative(path8.dirname(cfg.file), dirOf(p, parentFile)));
3116
3503
  }
3117
3504
  }
3118
3505
  return merged;
3119
3506
  }
3120
3507
  function resolveConfigFile(value, declaringFile) {
3121
- let candidate = path6.resolve(path6.dirname(declaringFile), value);
3508
+ let candidate = path8.resolve(path8.dirname(declaringFile), value);
3122
3509
  if (!candidate.endsWith(".json")) candidate += ".json";
3123
- if (fs5.existsSync(candidate)) return candidate;
3124
- const asDir = path6.join(candidate, "tsconfig.json");
3125
- return fs5.existsSync(asDir) ? asDir : null;
3510
+ if (fs6.existsSync(candidate)) return candidate;
3511
+ const asDir = path8.join(candidate, "tsconfig.json");
3512
+ return fs6.existsSync(asDir) ? asDir : null;
3126
3513
  }
3127
3514
  function patternCoversDir(pattern, target, cfgDir) {
3128
3515
  const norm = pattern.replace(/^\.\//, "");
@@ -3132,15 +3519,15 @@ function patternCoversDir(pattern, target, cfgDir) {
3132
3519
  if (norm.includes("**")) base = norm.slice(0, norm.indexOf("**")).replace(/\/+$/, "");
3133
3520
  else if (norm.endsWith("/*")) base = norm.slice(0, -2);
3134
3521
  else base = norm.replace(/\/+$/, "");
3135
- const abs = base === "" || base === "." ? cfgDir : path6.resolve(cfgDir, base);
3136
- return target === abs || target.startsWith(abs + path6.sep);
3522
+ const abs = base === "" || base === "." ? cfgDir : path8.resolve(cfgDir, base);
3523
+ return target === abs || target.startsWith(abs + path8.sep);
3137
3524
  }
3138
3525
  function checkTypesDiscovery(root, typesRoot) {
3139
- const relTypes = path6.relative(root, typesRoot) || ".";
3526
+ const relTypes = path8.relative(root, typesRoot) || ".";
3140
3527
  const configs = [];
3141
- let primary = path6.join(root, "tsconfig.json");
3142
- if (!fs5.existsSync(primary)) {
3143
- const candidates = fs5.existsSync(root) ? fs5.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f)).map((f) => path6.join(root, f)) : [];
3528
+ let primary = path8.join(root, "tsconfig.json");
3529
+ if (!fs6.existsSync(primary)) {
3530
+ const candidates = fs6.existsSync(root) ? fs6.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f)).map((f) => path8.join(root, f)) : [];
3144
3531
  if (candidates.length === 0) {
3145
3532
  return {
3146
3533
  covered: false,
@@ -3152,7 +3539,7 @@ function checkTypesDiscovery(root, typesRoot) {
3152
3539
  if (candidates.length > 1) {
3153
3540
  let covered = false;
3154
3541
  for (const file of candidates) {
3155
- configs.push(path6.relative(root, file));
3542
+ configs.push(path8.relative(root, file));
3156
3543
  if (configCovers(file, typesRoot)) covered = true;
3157
3544
  }
3158
3545
  if (covered) return { covered: true, configs, fixHint: null };
@@ -3163,34 +3550,34 @@ function checkTypesDiscovery(root, typesRoot) {
3163
3550
  };
3164
3551
  }
3165
3552
  }
3166
- configs.push(path6.relative(root, primary));
3553
+ configs.push(path8.relative(root, primary));
3167
3554
  if (configCovers(primary, typesRoot)) return { covered: true, configs, fixHint: null };
3168
3555
  return {
3169
3556
  covered: false,
3170
3557
  configs,
3171
- fixHint: `TYP-006 \u7C7B\u578B\u76EE\u5F55 ${relTypes} \u672A\u88AB ${path6.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`
3558
+ fixHint: `TYP-006 \u7C7B\u578B\u76EE\u5F55 ${relTypes} \u672A\u88AB ${path8.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`
3172
3559
  };
3173
3560
  }
3174
3561
  function configCovers(cfgFile, typesRoot) {
3175
3562
  const raw = readCfg(cfgFile);
3176
3563
  if (!raw) return false;
3177
3564
  const cfg = effectiveCfg(raw);
3178
- const cfgDir = path6.dirname(cfgFile);
3565
+ const cfgDir = path8.dirname(cfgFile);
3179
3566
  const isSolution = Array.isArray(cfg.files) && cfg.files.length === 0 && !cfg.include;
3180
3567
  if (isSolution && cfg.references && cfg.references.length > 0) {
3181
3568
  return cfg.references.some((ref) => {
3182
- const refFile = resolveConfigFile(ref.startsWith(".") || path6.isAbsolute(ref) ? ref : `./${ref}`, cfgFile);
3569
+ const refFile = resolveConfigFile(ref.startsWith(".") || path8.isAbsolute(ref) ? ref : `./${ref}`, cfgFile);
3183
3570
  return refFile !== null && configCovers(refFile, typesRoot);
3184
3571
  });
3185
3572
  }
3186
3573
  if (Array.isArray(cfg.files) && cfg.files.length > 0) {
3187
3574
  return cfg.files.some((f) => {
3188
- const abs = path6.resolve(cfgDir, f);
3189
- return abs === typesRoot || abs.startsWith(typesRoot + path6.sep);
3575
+ const abs = path8.resolve(cfgDir, f);
3576
+ return abs === typesRoot || abs.startsWith(typesRoot + path8.sep);
3190
3577
  });
3191
3578
  }
3192
3579
  const includes = cfg.include;
3193
- if (!includes) return typesRoot === cfgDir || typesRoot.startsWith(cfgDir + path6.sep);
3580
+ if (!includes) return typesRoot === cfgDir || typesRoot.startsWith(cfgDir + path8.sep);
3194
3581
  const included = includes.some((p) => patternCoversDir(p, typesRoot, cfgDir));
3195
3582
  if (!included) return false;
3196
3583
  if (cfg.exclude && cfg.exclude.some((p) => patternCoversDir(p, typesRoot, cfgDir))) return false;
@@ -3234,7 +3621,7 @@ var METADATA_FILE = "metadata.json";
3234
3621
  var AMBIENT_FORMAT = 2;
3235
3622
  function readMetadata(dir) {
3236
3623
  try {
3237
- const raw = JSON.parse(fs6.readFileSync(path7.join(dir, METADATA_FILE), "utf8"));
3624
+ const raw = JSON.parse(fs7.readFileSync(path9.join(dir, METADATA_FILE), "utf8"));
3238
3625
  if (raw.generator !== "@fulgurjs/federation" || typeof raw.revision !== "string" || !Array.isArray(raw.files)) return null;
3239
3626
  return raw;
3240
3627
  } catch {
@@ -3244,19 +3631,19 @@ function readMetadata(dir) {
3244
3631
  function cleanupOwnFiles(dir, meta) {
3245
3632
  for (const f of meta.files) {
3246
3633
  if (!isSafeBundlePath(f)) continue;
3247
- fs6.rmSync(path7.join(dir, f), { force: true });
3634
+ fs7.rmSync(path9.join(dir, f), { force: true });
3248
3635
  }
3249
- fs6.rmSync(path7.join(dir, METADATA_FILE), { force: true });
3636
+ fs7.rmSync(path9.join(dir, METADATA_FILE), { force: true });
3250
3637
  try {
3251
- if (fs6.readdirSync(dir).length === 0) fs6.rmdirSync(dir);
3638
+ if (fs7.readdirSync(dir).length === 0) fs7.rmdirSync(dir);
3252
3639
  } catch {
3253
3640
  }
3254
3641
  }
3255
3642
  function sweepStaleStaging(typesRoot, alias) {
3256
- if (!fs6.existsSync(typesRoot)) return;
3257
- for (const name of fs6.readdirSync(typesRoot)) {
3643
+ if (!fs7.existsSync(typesRoot)) return;
3644
+ for (const name of fs7.readdirSync(typesRoot)) {
3258
3645
  if (name.startsWith(`.fg-staging-${alias}-`) || name.startsWith(`.fg-trash-${alias}-`)) {
3259
- fs6.rmSync(path7.join(typesRoot, name), { recursive: true, force: true });
3646
+ fs7.rmSync(path9.join(typesRoot, name), { recursive: true, force: true });
3260
3647
  }
3261
3648
  }
3262
3649
  }
@@ -3265,7 +3652,7 @@ async function syncRemoteTypes(input) {
3265
3652
  const fetchJsonFn = input.fetchJsonImpl ?? fetchJson;
3266
3653
  const fetchTextFn = input.fetchTextImpl ?? fetchText;
3267
3654
  const timeoutMs = input.timeoutMs ?? 15e3;
3268
- const dir = path7.join(typesRoot, alias);
3655
+ const dir = path9.join(typesRoot, alias);
3269
3656
  let manifest;
3270
3657
  try {
3271
3658
  const parsed = parseManifest(await fetchJsonFn(manifestUrl, timeoutMs));
@@ -3278,7 +3665,7 @@ async function syncRemoteTypes(input) {
3278
3665
  }
3279
3666
  manifest = parsed.manifest;
3280
3667
  } catch (e) {
3281
- const meta = fs6.existsSync(dir) ? readMetadata(dir) : null;
3668
+ const meta = fs7.existsSync(dir) ? readMetadata(dir) : null;
3282
3669
  return {
3283
3670
  status: "failed",
3284
3671
  alias,
@@ -3288,7 +3675,7 @@ async function syncRemoteTypes(input) {
3288
3675
  }
3289
3676
  const types = readManifestTypes(manifest);
3290
3677
  if (!types) {
3291
- const meta = fs6.existsSync(dir) ? readMetadata(dir) : null;
3678
+ const meta = fs7.existsSync(dir) ? readMetadata(dir) : null;
3292
3679
  if (isDevManifest(manifest) && manifest.typesPending === true) {
3293
3680
  return {
3294
3681
  status: meta ? "stale" : "failed",
@@ -3308,7 +3695,7 @@ async function syncRemoteTypes(input) {
3308
3695
  };
3309
3696
  }
3310
3697
  const indexUrl = new URL(types.index, manifestUrl).toString();
3311
- const existing = fs6.existsSync(dir) ? readMetadata(dir) : null;
3698
+ const existing = fs7.existsSync(dir) ? readMetadata(dir) : null;
3312
3699
  if (existing && existing.revision === types.revision && existing.ambientFormat === AMBIENT_FORMAT) {
3313
3700
  return { status: "unchanged", alias, revision: types.revision, message: `\u8FDC\u7A0B ${alias} \u7C7B\u578B\u5DF2\u662F\u6700\u65B0\uFF08revision ${types.revision}\uFF09\u3002` };
3314
3701
  }
@@ -3358,7 +3745,7 @@ async function syncRemoteTypes(input) {
3358
3745
  if (total > DTS_TOTAL_MAX_BYTES) {
3359
3746
  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` };
3360
3747
  }
3361
- const actual = crypto2.createHash("sha256").update(text, "utf8").digest("hex");
3748
+ const actual = crypto3.createHash("sha256").update(text, "utf8").digest("hex");
3362
3749
  if (actual !== digest) {
3363
3750
  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` };
3364
3751
  }
@@ -3366,15 +3753,15 @@ async function syncRemoteTypes(input) {
3366
3753
  }
3367
3754
  const ambient = buildAmbientDeclarations({ alias, index, readFile: (rel) => indexRaw[rel] ?? "", source });
3368
3755
  sweepStaleStaging(typesRoot, alias);
3369
- const staging = path7.join(typesRoot, `.fg-staging-${alias}-${process.pid}-${Date.now()}`);
3370
- fs6.rmSync(staging, { recursive: true, force: true });
3371
- fs6.mkdirSync(staging, { recursive: true });
3756
+ const staging = path9.join(typesRoot, `.fg-staging-${alias}-${process.pid}-${Date.now()}`);
3757
+ fs7.rmSync(staging, { recursive: true, force: true });
3758
+ fs7.mkdirSync(staging, { recursive: true });
3372
3759
  const written = [];
3373
3760
  try {
3374
3761
  for (const [name, content] of ambient.files) {
3375
- const dest = path7.join(staging, name);
3376
- fs6.mkdirSync(path7.dirname(dest), { recursive: true });
3377
- fs6.writeFileSync(dest, content);
3762
+ const dest = path9.join(staging, name);
3763
+ fs7.mkdirSync(path9.dirname(dest), { recursive: true });
3764
+ fs7.writeFileSync(dest, content);
3378
3765
  written.push(name);
3379
3766
  }
3380
3767
  const meta = {
@@ -3387,22 +3774,22 @@ async function syncRemoteTypes(input) {
3387
3774
  externals: index.externals,
3388
3775
  syncedAt: Date.now()
3389
3776
  };
3390
- fs6.writeFileSync(path7.join(staging, METADATA_FILE), JSON.stringify(meta, null, 2));
3391
- const trash = path7.join(typesRoot, `.fg-trash-${alias}-${Date.now()}`);
3777
+ fs7.writeFileSync(path9.join(staging, METADATA_FILE), JSON.stringify(meta, null, 2));
3778
+ const trash = path9.join(typesRoot, `.fg-trash-${alias}-${Date.now()}`);
3392
3779
  let swapped = false;
3393
- if (fs6.existsSync(dir)) {
3394
- fs6.renameSync(dir, trash);
3780
+ if (fs7.existsSync(dir)) {
3781
+ fs7.renameSync(dir, trash);
3395
3782
  swapped = true;
3396
3783
  }
3397
3784
  try {
3398
- fs6.renameSync(staging, dir);
3785
+ fs7.renameSync(staging, dir);
3399
3786
  } catch (e) {
3400
- if (swapped) fs6.renameSync(trash, dir);
3787
+ if (swapped) fs7.renameSync(trash, dir);
3401
3788
  throw e;
3402
3789
  }
3403
- if (swapped) fs6.rmSync(trash, { recursive: true, force: true });
3790
+ if (swapped) fs7.rmSync(trash, { recursive: true, force: true });
3404
3791
  } catch (e) {
3405
- fs6.rmSync(staging, { recursive: true, force: true });
3792
+ fs7.rmSync(staging, { recursive: true, force: true });
3406
3793
  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` };
3407
3794
  }
3408
3795
  return {
@@ -3414,8 +3801,8 @@ async function syncRemoteTypes(input) {
3414
3801
  };
3415
3802
  }
3416
3803
  function removeGeneratedTypes(typesRoot, alias) {
3417
- const dir = path7.join(typesRoot, alias);
3418
- if (!fs6.existsSync(dir)) return false;
3804
+ const dir = path9.join(typesRoot, alias);
3805
+ if (!fs7.existsSync(dir)) return false;
3419
3806
  const meta = readMetadata(dir);
3420
3807
  if (!meta) return false;
3421
3808
  cleanupOwnFiles(dir, meta);
@@ -3477,8 +3864,8 @@ function startRemoteTypesSyncLoop(opts) {
3477
3864
  let discoveryWarned = false;
3478
3865
  const checkDiscoveryOnce = () => {
3479
3866
  if (discoveryWarned) return;
3480
- if (!fs6.existsSync(opts.typesRoot)) return;
3481
- if (fs6.readdirSync(opts.typesRoot).length === 0) return;
3867
+ if (!fs7.existsSync(opts.typesRoot)) return;
3868
+ if (fs7.readdirSync(opts.typesRoot).length === 0) return;
3482
3869
  discoveryWarned = true;
3483
3870
  const d = checkTypesDiscovery(opts.root, opts.typesRoot);
3484
3871
  if (!d.covered) warn(`[fulgurjs] ${d.fixHint ?? ""}`);
@@ -3492,7 +3879,7 @@ function startRemoteTypesSyncLoop(opts) {
3492
3879
  }
3493
3880
 
3494
3881
  // src/diagnostics.ts
3495
- import path8 from "path";
3882
+ import path10 from "path";
3496
3883
  function formatFulgurjsDiagnostic(input) {
3497
3884
  const ctx = input.details ? `
3498
3885
  \u4E0A\u4E0B\u6587\uFF1A${JSON.stringify(input.details)}` : "";
@@ -3536,8 +3923,8 @@ function debugLog(category, data) {
3536
3923
  function redactModulePath(id, root) {
3537
3924
  const clean = id.split("?")[0];
3538
3925
  try {
3539
- const rel = path8.relative(root, clean);
3540
- if (rel && !rel.startsWith("..") && !path8.isAbsolute(rel)) return rel;
3926
+ const rel = path10.relative(root, clean);
3927
+ if (rel && !rel.startsWith("..") && !path10.isAbsolute(rel)) return rel;
3541
3928
  } catch {
3542
3929
  }
3543
3930
  return clean.split("/").pop() ?? clean;
@@ -3647,22 +4034,22 @@ function genRemoteSchemaModule(schema) {
3647
4034
  }
3648
4035
 
3649
4036
  // src/vite-cache.ts
3650
- import fs7 from "fs";
3651
- import path9 from "path";
4037
+ import fs8 from "fs";
4038
+ import path11 from "path";
3652
4039
  function syncViteCacheMarker(root, pluginVersion, log) {
3653
- const viteDir = path9.join(root, "node_modules", ".vite");
3654
- const marker = path9.join(viteDir, "fulgurjs-version.txt");
4040
+ const viteDir = path11.join(root, "node_modules", ".vite");
4041
+ const marker = path11.join(viteDir, "fulgurjs-version.txt");
3655
4042
  try {
3656
- if (fs7.existsSync(viteDir)) {
3657
- const prev = fs7.existsSync(marker) ? fs7.readFileSync(marker, "utf8").trim() : "";
4043
+ if (fs8.existsSync(viteDir)) {
4044
+ const prev = fs8.existsSync(marker) ? fs8.readFileSync(marker, "utf8").trim() : "";
3658
4045
  if (prev === pluginVersion) return;
3659
- fs7.rmSync(viteDir, { recursive: true, force: true });
4046
+ fs8.rmSync(viteDir, { recursive: true, force: true });
3660
4047
  log(
3661
- `[fulgurjs] \u63D2\u4EF6\u7248\u672C\u53D8\u5316\uFF08${prev || "\u65E0\u8BB0\u5F55"} \u2192 ${pluginVersion}\uFF09\uFF0C\u5DF2\u81EA\u52A8\u6E05\u9664 ${path9.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`
4048
+ `[fulgurjs] \u63D2\u4EF6\u7248\u672C\u53D8\u5316\uFF08${prev || "\u65E0\u8BB0\u5F55"} \u2192 ${pluginVersion}\uFF09\uFF0C\u5DF2\u81EA\u52A8\u6E05\u9664 ${path11.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`
3662
4049
  );
3663
4050
  }
3664
- fs7.mkdirSync(viteDir, { recursive: true });
3665
- fs7.writeFileSync(marker, pluginVersion);
4051
+ fs8.mkdirSync(viteDir, { recursive: true });
4052
+ fs8.writeFileSync(marker, pluginVersion);
3666
4053
  } catch (e) {
3667
4054
  log(
3668
4055
  `[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)}`
@@ -4018,7 +4405,7 @@ function repairRolldownAsyncMarks(code, sourceName) {
4018
4405
  }
4019
4406
 
4020
4407
  // src/runtime-code.gen.ts
4021
- 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';
4408
+ 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';
4022
4409
 
4023
4410
  // src/index.ts
4024
4411
  function readRuntimeCode() {
@@ -4035,7 +4422,7 @@ function enumerateCjsExports(packageName, appRoot) {
4035
4422
  if (cached) return cached;
4036
4423
  let names = [];
4037
4424
  try {
4038
- const appRequire = createRequire4(path10.join(appRoot, "package.json"));
4425
+ const appRequire = createRequire4(path12.join(appRoot, "package.json"));
4039
4426
  const mod = appRequire(packageName);
4040
4427
  names = Object.keys(mod);
4041
4428
  } catch {
@@ -4153,7 +4540,7 @@ async function resolveSharedImportTarget(item, root) {
4153
4540
  const specifier = item.import;
4154
4541
  if (typeof specifier !== "string") return item.shareKey;
4155
4542
  try {
4156
- const resolved = await this.resolve?.(specifier, path10.join(root, "package.json"), { skipSelf: true });
4543
+ const resolved = await this.resolve?.(specifier, path12.join(root, "package.json"), { skipSelf: true });
4157
4544
  if (resolved?.id) return resolved.id;
4158
4545
  } catch {
4159
4546
  }
@@ -4187,7 +4574,7 @@ function federation(options) {
4187
4574
  enforce: "pre",
4188
4575
  async config(userConfig, env) {
4189
4576
  state.command = env.command;
4190
- const root = path10.resolve(userConfig.root ?? process.cwd());
4577
+ const root = path12.resolve(userConfig.root ?? process.cwd());
4191
4578
  const normalized = normalizeOptions(options, root, env.command);
4192
4579
  state.normalized = normalized;
4193
4580
  state.rolldownBuild = env.command === "build" && Number((readInstalledVersion(root, "vite") ?? "0").split(".")[0]) >= 8;
@@ -4466,7 +4853,7 @@ export { default } from ${JSON.stringify(url)};
4466
4853
  },
4467
4854
  resolveId(source, importer) {
4468
4855
  if (state.normalized && importer && (importer.includes("virtual:fulgurjs-shared:") || importer.includes("virtual:fulgurjs-shared-ns:")) && /^\.\.?\//.test(source) && !source.startsWith("virtual:fulgurjs-")) {
4469
- const resolved = path10.resolve(state.normalized.root, source);
4856
+ const resolved = path12.resolve(state.normalized.root, source);
4470
4857
  return resolved + (source.match(/\?[^/]*$/)?.[0] ?? "");
4471
4858
  }
4472
4859
  let s = source;
@@ -4560,7 +4947,7 @@ export { default } from ${JSON.stringify(url)};
4560
4947
  }
4561
4948
  let importTarget = item.import;
4562
4949
  try {
4563
- const resolvedImport = await this.resolve?.(item.import, path10.join(state.normalized.root, "package.json"), { skipSelf: true });
4950
+ const resolvedImport = await this.resolve?.(item.import, path12.join(state.normalized.root, "package.json"), { skipSelf: true });
4564
4951
  if (resolvedImport?.id) importTarget = resolvedImport.id;
4565
4952
  } catch {
4566
4953
  }
@@ -4669,7 +5056,7 @@ ${code}`, map: null };
4669
5056
  const srcRe = /src=["']([^"']+)["']/;
4670
5057
  const entryPath = (src) => {
4671
5058
  const file = src.startsWith("/@fs/") ? src.slice(4) : src;
4672
- return path10.isAbsolute(file) && fs8.existsSync(file) ? file : path10.resolve(state.normalized.root, src.startsWith("/") ? src.slice(1) : src);
5059
+ return path12.isAbsolute(file) && fs9.existsSync(file) ? file : path12.resolve(state.normalized.root, src.startsWith("/") ? src.slice(1) : src);
4673
5060
  };
4674
5061
  for (const tag of html.match(moduleScriptRe) ?? []) {
4675
5062
  const src = srcRe.exec(tag)?.[1];
@@ -4700,7 +5087,7 @@ ${code}`, map: null };
4700
5087
  state.providerEntrySeeds = [];
4701
5088
  providerClosureCache.clear();
4702
5089
  providerClosureBuilt = false;
4703
- const providerRequire = createRequire4(path10.join(n.root, "package.json"));
5090
+ const providerRequire = createRequire4(path12.join(n.root, "package.json"));
4704
5091
  for (const item of n.shared) {
4705
5092
  if (item.import === false) continue;
4706
5093
  try {
@@ -4717,7 +5104,7 @@ ${code}`, map: null };
4717
5104
  {
4718
5105
  for (const item of n.shared) {
4719
5106
  if (item.import === false) continue;
4720
- const resolved = await this.resolve(item.import, path10.join(n.root, "index.html"));
5107
+ const resolved = await this.resolve(item.import, path12.join(n.root, "index.html"));
4721
5108
  const file = resolved?.id.replace(/^\0/, "").split("?")[0];
4722
5109
  if (!file) continue;
4723
5110
  const marker = "/node_modules/";
@@ -4735,7 +5122,7 @@ ${code}`, map: null };
4735
5122
  if (state.manualChunkSpecsPending) {
4736
5123
  for (const [group, specifier] of state.manualChunkSpecsPending) {
4737
5124
  try {
4738
- const r = await this.resolve(specifier, path10.join(n.root, "index.html"));
5125
+ const r = await this.resolve(specifier, path12.join(n.root, "index.html"));
4739
5126
  if (r?.id) {
4740
5127
  state.manualChunkGroups.set(r.id, group);
4741
5128
  state.manualChunkGroups.set(r.id.split("?")[0], group);
@@ -4765,7 +5152,7 @@ ${code}`, map: null };
4765
5152
  };
4766
5153
  for (const item of n.shared) {
4767
5154
  if (item.import === false) continue;
4768
- const selfFile = await this.resolve(item.import, path10.join(n.root, "index.html")).then(
5155
+ const selfFile = await this.resolve(item.import, path12.join(n.root, "index.html")).then(
4769
5156
  (r) => r?.id?.split("?")[0] ?? null
4770
5157
  ).catch(() => null);
4771
5158
  for (const alias of item.aliases) {
@@ -4780,7 +5167,7 @@ ${code}`, map: null };
4780
5167
  }
4781
5168
  }
4782
5169
  if (!file) {
4783
- file = await this.resolve(alias, path10.join(n.root, "index.html")).then(
5170
+ file = await this.resolve(alias, path12.join(n.root, "index.html")).then(
4784
5171
  (r) => r?.id?.split("?")[0] ?? null
4785
5172
  ).catch(() => null);
4786
5173
  }
@@ -4803,7 +5190,7 @@ ${code}`, map: null };
4803
5190
  }
4804
5191
  if (n.exposes.length > 0) {
4805
5192
  for (const e of n.exposes) {
4806
- const resolved = await this.resolve(e.import, path10.join(n.root, "index.html"));
5193
+ const resolved = await this.resolve(e.import, path12.join(n.root, "index.html"));
4807
5194
  if (resolved) {
4808
5195
  state.exposeAbsPaths[e.import] = resolved.id.split("?")[0];
4809
5196
  } else {
@@ -5068,9 +5455,10 @@ ${entryChunk.code}`;
5068
5455
  if (n.exposes.length > 0 && n.dts) {
5069
5456
  typesServer = createDevTypesServer(n);
5070
5457
  let regenTimer = null;
5071
- const syncedTypesDir = typeof n.dts === "object" && n.dts.dir ? path10.resolve(n.root, n.dts.dir) : path10.join(n.root, fs8.existsSync(path10.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types");
5458
+ const syncedTypesDir = typeof n.dts === "object" && n.dts.dir ? path12.resolve(n.root, n.dts.dir) : path12.join(n.root, fs9.existsSync(path12.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types");
5072
5459
  const scheduleRegen = (id) => {
5073
5460
  if (!isTypesInputChange(n.root, id, syncedTypesDir)) return;
5461
+ typesServer?.markInputChanged();
5074
5462
  if (regenTimer) clearTimeout(regenTimer);
5075
5463
  regenTimer = setTimeout(() => {
5076
5464
  regenTimer = null;
@@ -5135,14 +5523,14 @@ ${entryChunk.code}`;
5135
5523
  if (n.remotes.length > 0 && n.dts && state.command === "serve") {
5136
5524
  server.httpServer?.once("listening", () => {
5137
5525
  const dtsOpt = n.dts === true ? true : n.dts;
5138
- const typesRoot = path10.join(
5526
+ const typesRoot = path12.join(
5139
5527
  n.root,
5140
- dtsOpt === false ? "" : (typeof dtsOpt === "object" ? dtsOpt.dir : void 0) ?? (fs8.existsSync(path10.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types")
5528
+ dtsOpt === false ? "" : (typeof dtsOpt === "object" ? dtsOpt.dir : void 0) ?? (fs9.existsSync(path12.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types")
5141
5529
  );
5142
5530
  try {
5143
- if (fs8.existsSync(typesRoot)) {
5531
+ if (fs9.existsSync(typesRoot)) {
5144
5532
  const activeKeys = new Set(n.remotes.map((r) => r.key));
5145
- for (const name of fs8.readdirSync(typesRoot)) {
5533
+ for (const name of fs9.readdirSync(typesRoot)) {
5146
5534
  if (!activeKeys.has(name)) removeGeneratedTypes(typesRoot, name);
5147
5535
  }
5148
5536
  }
@@ -5196,7 +5584,7 @@ ${entryChunk.code}`;
5196
5584
  async transform(code, id) {
5197
5585
  if (!state.normalized) return null;
5198
5586
  const clean = id.split("?")[0];
5199
- const isAppSource = clean.startsWith(state.normalized.root + path10.sep) && !clean.includes(`${path10.sep}node_modules${path10.sep}`) && !clean.includes(`${path10.sep}.vite${path10.sep}`);
5587
+ const isAppSource = clean.startsWith(state.normalized.root + path12.sep) && !clean.includes(`${path12.sep}node_modules${path12.sep}`) && !clean.includes(`${path12.sep}.vite${path12.sep}`);
5200
5588
  const evidence = isAppSource && clean.endsWith(".vue") && (!id.includes("?") || /[?&]type=script(?:&|$)/.test(id)) ? tagVueRuntime(code, (source) => this.parse(source)) : null;
5201
5589
  if (evidence) code = evidence.code;
5202
5590
  const entryRewrite = state.command === "serve" && isAppSource ? await rewriteRuntimeEntryImports(code, isExposeTargetFile(clean, state.normalized.root, state.normalized.exposes)) : null;
@@ -5242,7 +5630,7 @@ ${entryChunk.code}`;
5242
5630
  if (!n) return;
5243
5631
  for (const s of n.shared) {
5244
5632
  if (s.import === false) continue;
5245
- void server.pluginContainer.resolveId(s.import, path10.join(n.root, "index.html")).then((r) => {
5633
+ void server.pluginContainer.resolveId(s.import, path12.join(n.root, "index.html")).then((r) => {
5246
5634
  if (r?.id) state.resolvedSharedPaths.set(r.id.split("?")[0], s.configKey);
5247
5635
  }).catch(() => {
5248
5636
  });