@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/CHANGELOG.md +10 -0
- package/dist/cli.js +294 -130
- package/dist/dts-cache-worker.cjs +684 -0
- package/dist/index.cjs +579 -190
- package/dist/index.js +578 -190
- package/dist/runtime.js +1 -1
- package/docs/en/reference/api.md +4 -0
- package/docs/zh/reference/api.md +4 -0
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import
|
|
3
|
-
import
|
|
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.
|
|
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
|
|
1781
|
-
import
|
|
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
|
|
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(
|
|
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 =
|
|
2022
|
-
for (let i = 0; i < 5 && !fs3.existsSync(
|
|
2023
|
-
const parent =
|
|
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(
|
|
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(
|
|
2032
|
-
if (fs3.existsSync(
|
|
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(
|
|
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 =
|
|
2108
|
-
for (const c of [base, `${base}.vue`, `${base}.ts`, `${base}.tsx`,
|
|
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(`${
|
|
2116
|
-
queue.push(
|
|
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(
|
|
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(
|
|
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 = [
|
|
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(".") && !
|
|
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 =
|
|
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 =
|
|
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 =
|
|
2334
|
+
let dir = path5.dirname(files[0]);
|
|
2183
2335
|
for (const f of files) {
|
|
2184
|
-
const rel =
|
|
2336
|
+
const rel = path5.relative(dir, f);
|
|
2185
2337
|
if (rel.startsWith("..")) {
|
|
2186
|
-
const parts =
|
|
2187
|
-
const cur = dir.split(
|
|
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(
|
|
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,
|
|
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" && !
|
|
2236
|
-
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(`${
|
|
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(`${
|
|
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(
|
|
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 =
|
|
2436
|
+
let abs = path5.resolve(root, raw);
|
|
2285
2437
|
if (!fs3.existsSync(abs)) {
|
|
2286
|
-
const viaResolver = resolver(expose.import,
|
|
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(
|
|
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 =
|
|
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 =
|
|
2328
|
-
const outDir = cacheDir ?
|
|
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:
|
|
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) =>
|
|
2511
|
+
files: resolvedTypeFiles.map((f) => path5.relative(root, f)),
|
|
2360
2512
|
include: [
|
|
2361
|
-
...entryFiles.map((f) =>
|
|
2362
|
-
...ctx.ambientInputs.map((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 ?
|
|
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(
|
|
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(
|
|
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 ?
|
|
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(
|
|
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${
|
|
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 =
|
|
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${
|
|
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${
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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${
|
|
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 =
|
|
2841
|
+
const fromDir = path5.posix.dirname(declRel);
|
|
2684
2842
|
const toNoExt = targetRel.replace(/\.d\.ts$/, "");
|
|
2685
|
-
let rel =
|
|
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 =
|
|
2772
|
-
if (relative === ".." || relative.startsWith(`..${
|
|
2773
|
-
if (relative.split(
|
|
2774
|
-
if (
|
|
2775
|
-
const outputRelative =
|
|
2776
|
-
if (!(outputRelative.startsWith(`..${
|
|
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)
|
|
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
|
-
|
|
3097
|
+
const epoch = inputEpoch;
|
|
3098
|
+
const started = performance.now();
|
|
3099
|
+
let handle = null;
|
|
2798
3100
|
try {
|
|
2799
|
-
|
|
2800
|
-
const
|
|
2801
|
-
|
|
2802
|
-
|
|
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
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
);
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
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
|
|
2882
|
-
import
|
|
2883
|
-
import
|
|
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
|
|
3043
|
-
import
|
|
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(
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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 =
|
|
3508
|
+
let candidate = path8.resolve(path8.dirname(declaringFile), value);
|
|
3122
3509
|
if (!candidate.endsWith(".json")) candidate += ".json";
|
|
3123
|
-
if (
|
|
3124
|
-
const asDir =
|
|
3125
|
-
return
|
|
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 :
|
|
3136
|
-
return target === abs || target.startsWith(abs +
|
|
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 =
|
|
3526
|
+
const relTypes = path8.relative(root, typesRoot) || ".";
|
|
3140
3527
|
const configs = [];
|
|
3141
|
-
let primary =
|
|
3142
|
-
if (!
|
|
3143
|
-
const candidates =
|
|
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(
|
|
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(
|
|
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 ${
|
|
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 =
|
|
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(".") ||
|
|
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 =
|
|
3189
|
-
return abs === typesRoot || abs.startsWith(typesRoot +
|
|
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 +
|
|
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(
|
|
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
|
-
|
|
3634
|
+
fs7.rmSync(path9.join(dir, f), { force: true });
|
|
3248
3635
|
}
|
|
3249
|
-
|
|
3636
|
+
fs7.rmSync(path9.join(dir, METADATA_FILE), { force: true });
|
|
3250
3637
|
try {
|
|
3251
|
-
if (
|
|
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 (!
|
|
3257
|
-
for (const name of
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
3370
|
-
|
|
3371
|
-
|
|
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 =
|
|
3376
|
-
|
|
3377
|
-
|
|
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
|
-
|
|
3391
|
-
const trash =
|
|
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 (
|
|
3394
|
-
|
|
3780
|
+
if (fs7.existsSync(dir)) {
|
|
3781
|
+
fs7.renameSync(dir, trash);
|
|
3395
3782
|
swapped = true;
|
|
3396
3783
|
}
|
|
3397
3784
|
try {
|
|
3398
|
-
|
|
3785
|
+
fs7.renameSync(staging, dir);
|
|
3399
3786
|
} catch (e) {
|
|
3400
|
-
if (swapped)
|
|
3787
|
+
if (swapped) fs7.renameSync(trash, dir);
|
|
3401
3788
|
throw e;
|
|
3402
3789
|
}
|
|
3403
|
-
if (swapped)
|
|
3790
|
+
if (swapped) fs7.rmSync(trash, { recursive: true, force: true });
|
|
3404
3791
|
} catch (e) {
|
|
3405
|
-
|
|
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 =
|
|
3418
|
-
if (!
|
|
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 (!
|
|
3481
|
-
if (
|
|
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
|
|
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 =
|
|
3540
|
-
if (rel && !rel.startsWith("..") && !
|
|
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
|
|
3651
|
-
import
|
|
4037
|
+
import fs8 from "fs";
|
|
4038
|
+
import path11 from "path";
|
|
3652
4039
|
function syncViteCacheMarker(root, pluginVersion, log) {
|
|
3653
|
-
const viteDir =
|
|
3654
|
-
const marker =
|
|
4040
|
+
const viteDir = path11.join(root, "node_modules", ".vite");
|
|
4041
|
+
const marker = path11.join(viteDir, "fulgurjs-version.txt");
|
|
3655
4042
|
try {
|
|
3656
|
-
if (
|
|
3657
|
-
const prev =
|
|
4043
|
+
if (fs8.existsSync(viteDir)) {
|
|
4044
|
+
const prev = fs8.existsSync(marker) ? fs8.readFileSync(marker, "utf8").trim() : "";
|
|
3658
4045
|
if (prev === pluginVersion) return;
|
|
3659
|
-
|
|
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 ${
|
|
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
|
-
|
|
3665
|
-
|
|
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(
|
|
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,
|
|
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 =
|
|
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 =
|
|
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,
|
|
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
|
|
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(
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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 ?
|
|
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 =
|
|
5526
|
+
const typesRoot = path12.join(
|
|
5139
5527
|
n.root,
|
|
5140
|
-
dtsOpt === false ? "" : (typeof dtsOpt === "object" ? dtsOpt.dir : void 0) ?? (
|
|
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 (
|
|
5531
|
+
if (fs9.existsSync(typesRoot)) {
|
|
5144
5532
|
const activeKeys = new Set(n.remotes.map((r) => r.key));
|
|
5145
|
-
for (const name of
|
|
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 +
|
|
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,
|
|
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
|
});
|