@fulgurjs/federation 6.14.3 → 6.14.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/dist/cli.js +294 -130
- package/dist/index.cjs +283 -125
- package/dist/index.js +283 -125
- package/dist/runtime.js +1 -1
- package/docs/en/reference/api.md +2 -0
- package/docs/zh/reference/api.md +2 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
import fs8 from "fs";
|
|
3
|
-
import
|
|
3
|
+
import path11 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.4";
|
|
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
|
|
1780
|
+
import path6 from "path";
|
|
1781
1781
|
import fs4 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
|
};
|
|
@@ -2768,12 +2926,12 @@ function rewriteSpecifiers(ts, text, srcAbs, srcToRel, resolver, externals, root
|
|
|
2768
2926
|
|
|
2769
2927
|
// src/dts-serve.ts
|
|
2770
2928
|
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(`..${
|
|
2929
|
+
const relative = path6.relative(root, id);
|
|
2930
|
+
if (relative === ".." || relative.startsWith(`..${path6.sep}`) || path6.isAbsolute(relative)) return false;
|
|
2931
|
+
if (relative.split(path6.sep).some((part) => part === "node_modules" || part === ".vite")) return false;
|
|
2932
|
+
if (path6.basename(id).startsWith(".fulgurjs-types-tsconfig-")) return false;
|
|
2933
|
+
const outputRelative = path6.relative(outputDir, id);
|
|
2934
|
+
if (!(outputRelative.startsWith(`..${path6.sep}`) || path6.isAbsolute(outputRelative))) return false;
|
|
2777
2935
|
return /\.(?:[cm]?[jt]sx?|vue|json)$/i.test(id);
|
|
2778
2936
|
}
|
|
2779
2937
|
function createDevTypesServer(options, hooks = {}) {
|
|
@@ -2797,9 +2955,9 @@ function createDevTypesServer(options, hooks = {}) {
|
|
|
2797
2955
|
let result;
|
|
2798
2956
|
try {
|
|
2799
2957
|
if (!incrementalDir) {
|
|
2800
|
-
const cacheRoot =
|
|
2958
|
+
const cacheRoot = path6.join(options.root, "node_modules");
|
|
2801
2959
|
fs4.mkdirSync(cacheRoot, { recursive: true });
|
|
2802
|
-
incrementalDir = fs4.mkdtempSync(
|
|
2960
|
+
incrementalDir = fs4.mkdtempSync(path6.join(cacheRoot, ".fulgurjs-types-cache-"));
|
|
2803
2961
|
}
|
|
2804
2962
|
result = await generateTypesBundle({
|
|
2805
2963
|
root: options.root,
|
|
@@ -2879,7 +3037,7 @@ ${key}`);
|
|
|
2879
3037
|
|
|
2880
3038
|
// src/dts-sync.ts
|
|
2881
3039
|
import fs6 from "fs";
|
|
2882
|
-
import
|
|
3040
|
+
import path8 from "path";
|
|
2883
3041
|
import crypto2 from "crypto";
|
|
2884
3042
|
|
|
2885
3043
|
// src/dts-ambient.ts
|
|
@@ -3040,7 +3198,7 @@ function stripAmbientModifiers(text) {
|
|
|
3040
3198
|
|
|
3041
3199
|
// src/dts-discovery.ts
|
|
3042
3200
|
import fs5 from "fs";
|
|
3043
|
-
import
|
|
3201
|
+
import path7 from "path";
|
|
3044
3202
|
function stripJsoncForConfig(text) {
|
|
3045
3203
|
let out = "";
|
|
3046
3204
|
let i = 0;
|
|
@@ -3104,24 +3262,24 @@ function effectiveCfg(cfg, depth = 0) {
|
|
|
3104
3262
|
const parentFile = resolveConfigFile(parent, cfg.file);
|
|
3105
3263
|
if (!parentFile) continue;
|
|
3106
3264
|
const parentCfg = effectiveCfg(readCfg(parentFile) ?? { file: parentFile }, depth + 1);
|
|
3107
|
-
const dirOf = (f, base) =>
|
|
3265
|
+
const dirOf = (f, base) => path7.resolve(path7.dirname(base), f);
|
|
3108
3266
|
if (parentCfg.include && !cfg.include) {
|
|
3109
|
-
merged.include = parentCfg.include.map((p) =>
|
|
3267
|
+
merged.include = parentCfg.include.map((p) => path7.relative(path7.dirname(cfg.file), dirOf(p, parentFile)) || ".");
|
|
3110
3268
|
}
|
|
3111
3269
|
if (parentCfg.files && !cfg.files) {
|
|
3112
|
-
merged.files = parentCfg.files.map((p) =>
|
|
3270
|
+
merged.files = parentCfg.files.map((p) => path7.relative(path7.dirname(cfg.file), dirOf(p, parentFile)));
|
|
3113
3271
|
}
|
|
3114
3272
|
if (parentCfg.exclude && !cfg.exclude) {
|
|
3115
|
-
merged.exclude = parentCfg.exclude.map((p) =>
|
|
3273
|
+
merged.exclude = parentCfg.exclude.map((p) => path7.relative(path7.dirname(cfg.file), dirOf(p, parentFile)));
|
|
3116
3274
|
}
|
|
3117
3275
|
}
|
|
3118
3276
|
return merged;
|
|
3119
3277
|
}
|
|
3120
3278
|
function resolveConfigFile(value, declaringFile) {
|
|
3121
|
-
let candidate =
|
|
3279
|
+
let candidate = path7.resolve(path7.dirname(declaringFile), value);
|
|
3122
3280
|
if (!candidate.endsWith(".json")) candidate += ".json";
|
|
3123
3281
|
if (fs5.existsSync(candidate)) return candidate;
|
|
3124
|
-
const asDir =
|
|
3282
|
+
const asDir = path7.join(candidate, "tsconfig.json");
|
|
3125
3283
|
return fs5.existsSync(asDir) ? asDir : null;
|
|
3126
3284
|
}
|
|
3127
3285
|
function patternCoversDir(pattern, target, cfgDir) {
|
|
@@ -3132,15 +3290,15 @@ function patternCoversDir(pattern, target, cfgDir) {
|
|
|
3132
3290
|
if (norm.includes("**")) base = norm.slice(0, norm.indexOf("**")).replace(/\/+$/, "");
|
|
3133
3291
|
else if (norm.endsWith("/*")) base = norm.slice(0, -2);
|
|
3134
3292
|
else base = norm.replace(/\/+$/, "");
|
|
3135
|
-
const abs = base === "" || base === "." ? cfgDir :
|
|
3136
|
-
return target === abs || target.startsWith(abs +
|
|
3293
|
+
const abs = base === "" || base === "." ? cfgDir : path7.resolve(cfgDir, base);
|
|
3294
|
+
return target === abs || target.startsWith(abs + path7.sep);
|
|
3137
3295
|
}
|
|
3138
3296
|
function checkTypesDiscovery(root, typesRoot) {
|
|
3139
|
-
const relTypes =
|
|
3297
|
+
const relTypes = path7.relative(root, typesRoot) || ".";
|
|
3140
3298
|
const configs = [];
|
|
3141
|
-
let primary =
|
|
3299
|
+
let primary = path7.join(root, "tsconfig.json");
|
|
3142
3300
|
if (!fs5.existsSync(primary)) {
|
|
3143
|
-
const candidates = fs5.existsSync(root) ? fs5.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f)).map((f) =>
|
|
3301
|
+
const candidates = fs5.existsSync(root) ? fs5.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f)).map((f) => path7.join(root, f)) : [];
|
|
3144
3302
|
if (candidates.length === 0) {
|
|
3145
3303
|
return {
|
|
3146
3304
|
covered: false,
|
|
@@ -3152,7 +3310,7 @@ function checkTypesDiscovery(root, typesRoot) {
|
|
|
3152
3310
|
if (candidates.length > 1) {
|
|
3153
3311
|
let covered = false;
|
|
3154
3312
|
for (const file of candidates) {
|
|
3155
|
-
configs.push(
|
|
3313
|
+
configs.push(path7.relative(root, file));
|
|
3156
3314
|
if (configCovers(file, typesRoot)) covered = true;
|
|
3157
3315
|
}
|
|
3158
3316
|
if (covered) return { covered: true, configs, fixHint: null };
|
|
@@ -3163,34 +3321,34 @@ function checkTypesDiscovery(root, typesRoot) {
|
|
|
3163
3321
|
};
|
|
3164
3322
|
}
|
|
3165
3323
|
}
|
|
3166
|
-
configs.push(
|
|
3324
|
+
configs.push(path7.relative(root, primary));
|
|
3167
3325
|
if (configCovers(primary, typesRoot)) return { covered: true, configs, fixHint: null };
|
|
3168
3326
|
return {
|
|
3169
3327
|
covered: false,
|
|
3170
3328
|
configs,
|
|
3171
|
-
fixHint: `TYP-006 \u7C7B\u578B\u76EE\u5F55 ${relTypes} \u672A\u88AB ${
|
|
3329
|
+
fixHint: `TYP-006 \u7C7B\u578B\u76EE\u5F55 ${relTypes} \u672A\u88AB ${path7.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
3330
|
};
|
|
3173
3331
|
}
|
|
3174
3332
|
function configCovers(cfgFile, typesRoot) {
|
|
3175
3333
|
const raw = readCfg(cfgFile);
|
|
3176
3334
|
if (!raw) return false;
|
|
3177
3335
|
const cfg = effectiveCfg(raw);
|
|
3178
|
-
const cfgDir =
|
|
3336
|
+
const cfgDir = path7.dirname(cfgFile);
|
|
3179
3337
|
const isSolution = Array.isArray(cfg.files) && cfg.files.length === 0 && !cfg.include;
|
|
3180
3338
|
if (isSolution && cfg.references && cfg.references.length > 0) {
|
|
3181
3339
|
return cfg.references.some((ref) => {
|
|
3182
|
-
const refFile = resolveConfigFile(ref.startsWith(".") ||
|
|
3340
|
+
const refFile = resolveConfigFile(ref.startsWith(".") || path7.isAbsolute(ref) ? ref : `./${ref}`, cfgFile);
|
|
3183
3341
|
return refFile !== null && configCovers(refFile, typesRoot);
|
|
3184
3342
|
});
|
|
3185
3343
|
}
|
|
3186
3344
|
if (Array.isArray(cfg.files) && cfg.files.length > 0) {
|
|
3187
3345
|
return cfg.files.some((f) => {
|
|
3188
|
-
const abs =
|
|
3189
|
-
return abs === typesRoot || abs.startsWith(typesRoot +
|
|
3346
|
+
const abs = path7.resolve(cfgDir, f);
|
|
3347
|
+
return abs === typesRoot || abs.startsWith(typesRoot + path7.sep);
|
|
3190
3348
|
});
|
|
3191
3349
|
}
|
|
3192
3350
|
const includes = cfg.include;
|
|
3193
|
-
if (!includes) return typesRoot === cfgDir || typesRoot.startsWith(cfgDir +
|
|
3351
|
+
if (!includes) return typesRoot === cfgDir || typesRoot.startsWith(cfgDir + path7.sep);
|
|
3194
3352
|
const included = includes.some((p) => patternCoversDir(p, typesRoot, cfgDir));
|
|
3195
3353
|
if (!included) return false;
|
|
3196
3354
|
if (cfg.exclude && cfg.exclude.some((p) => patternCoversDir(p, typesRoot, cfgDir))) return false;
|
|
@@ -3234,7 +3392,7 @@ var METADATA_FILE = "metadata.json";
|
|
|
3234
3392
|
var AMBIENT_FORMAT = 2;
|
|
3235
3393
|
function readMetadata(dir) {
|
|
3236
3394
|
try {
|
|
3237
|
-
const raw = JSON.parse(fs6.readFileSync(
|
|
3395
|
+
const raw = JSON.parse(fs6.readFileSync(path8.join(dir, METADATA_FILE), "utf8"));
|
|
3238
3396
|
if (raw.generator !== "@fulgurjs/federation" || typeof raw.revision !== "string" || !Array.isArray(raw.files)) return null;
|
|
3239
3397
|
return raw;
|
|
3240
3398
|
} catch {
|
|
@@ -3244,9 +3402,9 @@ function readMetadata(dir) {
|
|
|
3244
3402
|
function cleanupOwnFiles(dir, meta) {
|
|
3245
3403
|
for (const f of meta.files) {
|
|
3246
3404
|
if (!isSafeBundlePath(f)) continue;
|
|
3247
|
-
fs6.rmSync(
|
|
3405
|
+
fs6.rmSync(path8.join(dir, f), { force: true });
|
|
3248
3406
|
}
|
|
3249
|
-
fs6.rmSync(
|
|
3407
|
+
fs6.rmSync(path8.join(dir, METADATA_FILE), { force: true });
|
|
3250
3408
|
try {
|
|
3251
3409
|
if (fs6.readdirSync(dir).length === 0) fs6.rmdirSync(dir);
|
|
3252
3410
|
} catch {
|
|
@@ -3256,7 +3414,7 @@ function sweepStaleStaging(typesRoot, alias) {
|
|
|
3256
3414
|
if (!fs6.existsSync(typesRoot)) return;
|
|
3257
3415
|
for (const name of fs6.readdirSync(typesRoot)) {
|
|
3258
3416
|
if (name.startsWith(`.fg-staging-${alias}-`) || name.startsWith(`.fg-trash-${alias}-`)) {
|
|
3259
|
-
fs6.rmSync(
|
|
3417
|
+
fs6.rmSync(path8.join(typesRoot, name), { recursive: true, force: true });
|
|
3260
3418
|
}
|
|
3261
3419
|
}
|
|
3262
3420
|
}
|
|
@@ -3265,7 +3423,7 @@ async function syncRemoteTypes(input) {
|
|
|
3265
3423
|
const fetchJsonFn = input.fetchJsonImpl ?? fetchJson;
|
|
3266
3424
|
const fetchTextFn = input.fetchTextImpl ?? fetchText;
|
|
3267
3425
|
const timeoutMs = input.timeoutMs ?? 15e3;
|
|
3268
|
-
const dir =
|
|
3426
|
+
const dir = path8.join(typesRoot, alias);
|
|
3269
3427
|
let manifest;
|
|
3270
3428
|
try {
|
|
3271
3429
|
const parsed = parseManifest(await fetchJsonFn(manifestUrl, timeoutMs));
|
|
@@ -3366,14 +3524,14 @@ async function syncRemoteTypes(input) {
|
|
|
3366
3524
|
}
|
|
3367
3525
|
const ambient = buildAmbientDeclarations({ alias, index, readFile: (rel) => indexRaw[rel] ?? "", source });
|
|
3368
3526
|
sweepStaleStaging(typesRoot, alias);
|
|
3369
|
-
const staging =
|
|
3527
|
+
const staging = path8.join(typesRoot, `.fg-staging-${alias}-${process.pid}-${Date.now()}`);
|
|
3370
3528
|
fs6.rmSync(staging, { recursive: true, force: true });
|
|
3371
3529
|
fs6.mkdirSync(staging, { recursive: true });
|
|
3372
3530
|
const written = [];
|
|
3373
3531
|
try {
|
|
3374
3532
|
for (const [name, content] of ambient.files) {
|
|
3375
|
-
const dest =
|
|
3376
|
-
fs6.mkdirSync(
|
|
3533
|
+
const dest = path8.join(staging, name);
|
|
3534
|
+
fs6.mkdirSync(path8.dirname(dest), { recursive: true });
|
|
3377
3535
|
fs6.writeFileSync(dest, content);
|
|
3378
3536
|
written.push(name);
|
|
3379
3537
|
}
|
|
@@ -3387,8 +3545,8 @@ async function syncRemoteTypes(input) {
|
|
|
3387
3545
|
externals: index.externals,
|
|
3388
3546
|
syncedAt: Date.now()
|
|
3389
3547
|
};
|
|
3390
|
-
fs6.writeFileSync(
|
|
3391
|
-
const trash =
|
|
3548
|
+
fs6.writeFileSync(path8.join(staging, METADATA_FILE), JSON.stringify(meta, null, 2));
|
|
3549
|
+
const trash = path8.join(typesRoot, `.fg-trash-${alias}-${Date.now()}`);
|
|
3392
3550
|
let swapped = false;
|
|
3393
3551
|
if (fs6.existsSync(dir)) {
|
|
3394
3552
|
fs6.renameSync(dir, trash);
|
|
@@ -3414,7 +3572,7 @@ async function syncRemoteTypes(input) {
|
|
|
3414
3572
|
};
|
|
3415
3573
|
}
|
|
3416
3574
|
function removeGeneratedTypes(typesRoot, alias) {
|
|
3417
|
-
const dir =
|
|
3575
|
+
const dir = path8.join(typesRoot, alias);
|
|
3418
3576
|
if (!fs6.existsSync(dir)) return false;
|
|
3419
3577
|
const meta = readMetadata(dir);
|
|
3420
3578
|
if (!meta) return false;
|
|
@@ -3492,7 +3650,7 @@ function startRemoteTypesSyncLoop(opts) {
|
|
|
3492
3650
|
}
|
|
3493
3651
|
|
|
3494
3652
|
// src/diagnostics.ts
|
|
3495
|
-
import
|
|
3653
|
+
import path9 from "path";
|
|
3496
3654
|
function formatFulgurjsDiagnostic(input) {
|
|
3497
3655
|
const ctx = input.details ? `
|
|
3498
3656
|
\u4E0A\u4E0B\u6587\uFF1A${JSON.stringify(input.details)}` : "";
|
|
@@ -3536,8 +3694,8 @@ function debugLog(category, data) {
|
|
|
3536
3694
|
function redactModulePath(id, root) {
|
|
3537
3695
|
const clean = id.split("?")[0];
|
|
3538
3696
|
try {
|
|
3539
|
-
const rel =
|
|
3540
|
-
if (rel && !rel.startsWith("..") && !
|
|
3697
|
+
const rel = path9.relative(root, clean);
|
|
3698
|
+
if (rel && !rel.startsWith("..") && !path9.isAbsolute(rel)) return rel;
|
|
3541
3699
|
} catch {
|
|
3542
3700
|
}
|
|
3543
3701
|
return clean.split("/").pop() ?? clean;
|
|
@@ -3648,17 +3806,17 @@ function genRemoteSchemaModule(schema) {
|
|
|
3648
3806
|
|
|
3649
3807
|
// src/vite-cache.ts
|
|
3650
3808
|
import fs7 from "fs";
|
|
3651
|
-
import
|
|
3809
|
+
import path10 from "path";
|
|
3652
3810
|
function syncViteCacheMarker(root, pluginVersion, log) {
|
|
3653
|
-
const viteDir =
|
|
3654
|
-
const marker =
|
|
3811
|
+
const viteDir = path10.join(root, "node_modules", ".vite");
|
|
3812
|
+
const marker = path10.join(viteDir, "fulgurjs-version.txt");
|
|
3655
3813
|
try {
|
|
3656
3814
|
if (fs7.existsSync(viteDir)) {
|
|
3657
3815
|
const prev = fs7.existsSync(marker) ? fs7.readFileSync(marker, "utf8").trim() : "";
|
|
3658
3816
|
if (prev === pluginVersion) return;
|
|
3659
3817
|
fs7.rmSync(viteDir, { recursive: true, force: true });
|
|
3660
3818
|
log(
|
|
3661
|
-
`[fulgurjs] \u63D2\u4EF6\u7248\u672C\u53D8\u5316\uFF08${prev || "\u65E0\u8BB0\u5F55"} \u2192 ${pluginVersion}\uFF09\uFF0C\u5DF2\u81EA\u52A8\u6E05\u9664 ${
|
|
3819
|
+
`[fulgurjs] \u63D2\u4EF6\u7248\u672C\u53D8\u5316\uFF08${prev || "\u65E0\u8BB0\u5F55"} \u2192 ${pluginVersion}\uFF09\uFF0C\u5DF2\u81EA\u52A8\u6E05\u9664 ${path10.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
3820
|
);
|
|
3663
3821
|
}
|
|
3664
3822
|
fs7.mkdirSync(viteDir, { recursive: true });
|
|
@@ -4018,7 +4176,7 @@ function repairRolldownAsyncMarks(code, sourceName) {
|
|
|
4018
4176
|
}
|
|
4019
4177
|
|
|
4020
4178
|
// 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';
|
|
4179
|
+
var runtime_code_gen_default = 'var ke=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function C(c){let d=ke.exec(String(c).trim());return d?{major:Number(d[1]),minor:Number(d[2]??0),patch:Number(d[3]??0),pre:d[4]?d[4].split("."):[]}:null}function Oe(c,d){if(c.length===0&&d.length===0)return 0;if(c.length===0)return 1;if(d.length===0)return-1;let f=Math.max(c.length,d.length);for(let l=0;l<f;l++){let m=c[l],S=d[l];if(m===void 0)return-1;if(S===void 0)return 1;let b=/^\\d+$/.test(m),P=/^\\d+$/.test(S);if(b&&P){let A=Number(m)-Number(S);if(A!==0)return A}else{if(b!==P)return b?-1:1;if(m!==S)return m<S?-1:1}}return 0}function x(c,d){let f=C(c),l=C(d);return!f||!l?c<d?-1:c>d?1:0:f.major!==l.major?f.major-l.major:f.minor!==l.minor?f.minor-l.minor:f.patch!==l.patch?f.patch-l.patch:Oe(f.pre,l.pre)}var Me=/^[a-z]+[+:-]/i;function U(c,d){if(d===!1||d==null||d==="")return!0;let f=String(d).trim();return!f||f==="*"||f==="latest"||Me.test(f)?!0:f.split("||").some(l=>Te(c,l.trim()))}function Te(c,d){if(!d||d==="*")return!C(c)?.pre.length;let f=d.split(/\\s+-\\s+/);if(f.length===2){let S=f[0].trim(),b=f[1].trim();return!(!U(c,`>=${S}`)||!U(c,`<=${b}`))}let l=C(c);if(!l)return!1;let m=Le(d);if(m===null)return!0;for(let S of m)if(!je(l,c,S))return!1;return!(l.pre.length>0&&!m.some(S=>S.ver.pre.length>0)&&!m.some(b=>b.ver.major===l.major&&b.ver.minor===l.minor&&b.ver.patch===l.patch))}function Le(c){let d=[],f=c.trim().split(/\\s+/).filter(Boolean);if(f.length===0)return null;for(let l of f){let m=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(l);if(!m)return null;let S=m[1],b=m[2],P=Ae(S,b);if(P===null)return null;d.push(...P)}return d}function Ae(c,d){let f=xe(d);if(!f)return null;let{ver:l,partial:m}=f;switch(c){case"^":{let S=Ie(l);return S?[{op:">=",ver:l},{op:"<",ver:S}]:null}case"~":{let S=m>=2?{major:l.major,minor:l.minor+1,patch:0,pre:[]}:{major:l.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:l},{op:"<",ver:S}]}case">=":return[{op:">=",ver:l}];case">":return m===1?[{op:">=",ver:{major:l.major+1,minor:0,patch:0,pre:[]}}]:m===2?[{op:">=",ver:{major:l.major,minor:l.minor+1,patch:0,pre:[]}}]:[{op:">",ver:l}];case"<":return m===1?[{op:"<",ver:{major:l.major,minor:0,patch:0,pre:[]}}]:m===2?[{op:"<",ver:{major:l.major,minor:l.minor,patch:0,pre:[]}}]:[{op:"<",ver:l}];case"<=":return[{op:"<=",ver:l}];case"=":case void 0:return m===1?[{op:">=",ver:l},{op:"<",ver:{major:l.major+1,minor:0,patch:0,pre:[]}}]:m===2?[{op:">=",ver:l},{op:"<",ver:{major:l.major,minor:l.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:l}];default:return null}}function Ie(c){return c.major>0?{major:c.major+1,minor:0,patch:0,pre:[]}:c.minor>0?{major:0,minor:c.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:c.patch+1,pre:[]}}function xe(c){let d=c.replace(/^v/,"").trim();if(!d||d==="*"||d==="x"||d==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let f=d.split("."),l=[],m=0;for(let P of f.slice(0,3))if(/^\\d+$/.test(P))l.push(Number(P)),m++;else{if(P==="x"||P==="X"||P==="*")break;break}let S=d.split("-"),b=S.length>1?S.slice(1).join("-").split("+")[0].split("."):[];return m===0&&b.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:l[0]??0,minor:l[1]??0,patch:l[2]??0,pre:b},partial:m}}function Ue(c,d){switch(d){case">=":return c>=0;case">":return c>0;case"<":return c<0;case"<=":return c<=0;case"=":return c===0}}function je(c,d,f){let l=`${c.major}.${c.minor}.${c.patch}`+(c.pre.length?`-${c.pre.join(".")}`:"");if(f.upper)return!(!(x(l,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:""))>=0)||!(x(l,`${f.upper.major}.${f.upper.minor}.${f.upper.patch}`)<0));let m=x(l,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:"")),S=Ue(m,f.op);return f.ver.pre.length>0&&c.pre.length===0&&(f.op===">"||f.op==="<")?!1:S}function F(c){return c.replace(/(https?:\\/\\/)(?:[^\\s/@]+@)?([^\\s?#"\'<>\uFF0C\u3002\uFF1B\uFF09)\\]]+)(?:[?#][^\\s"\'<>\uFF0C\u3002\uFF1B\uFF09)\\]]*)?/g,"$1$2")}function M(c){return F(String(c?.message??c)).replace(/\\b(token|password|cookie|authorization)["\']?\\s*[:=]\\s*["\']?(?:Bearer\\s+)?[^\\s,;"\'}]+/gi,"$1=[redacted]")}var E=class extends Error{code;details;constructor(d,f,l,m){super(`[fulgurjs:${d}] ${F(f)}`,m),this.name="FgError",this.code=d,this.details=l}},R={REMOTE_LOAD_FAILED:"MFU-001",REMOTE_NAME_MISMATCH:"MFU-002",SHARE_STRICT_VERSION:"MFU-003",SHARE_NOT_AVAILABLE:"MFU-004",CONTAINER_REINIT_CONFLICT:"MFU-005",MODULE_NOT_EXPOSED:"MFU-006",PRELOAD_FAILED:"MFU-007",REMOTE_UNKNOWN:"MFU-008",EMPTY_EXPORTS:"MFU-009",SINGLETON_SKEW:"MFU-010",SETUP_INVALID_EXPORT:"MFU-011",SETUP_RUN_FAILED:"MFU-012",SETUP_SESSION_KEY_MISSING:"MFU-013",SETUP_RECURSION:"MFU-014",COMPONENT_EXPORT_INVALID:"MFU-018",VUE_RUNTIME_IDENTITY_MISMATCH:"MFU-019",REMOTE_RENDER_ERROR:"MFU-020"};function ie(c){if(typeof c!="object"||c===null)return!1;let d=globalThis,f=d.__FULGURJS_REPORTED_ERRORS__??=new WeakSet;return f.has(c)?!0:(f.add(c),!1)}var ae="6.14.4";var Ne="__fulgurjsSetup",Ce="__FULGURJS_APP_CONFIG__",J=15e3,ce=2,Fe=5,Ve=3e4,De=4e3,Ke=.2;function qe(){let c=Object.create(null),d=new Map,f=[],l=new Set,m=new Map,S=(e,r)=>JSON.stringify([r.shareScope||"default",r.shareKey||e,r.requiredVersion??null,!!r.singleton,!!r.strictVersion]),b=new Map,P=new Map,A=new WeakMap,V=new WeakMap,W=(e,r)=>{console.warn(`[fulgurjs] ${e} \\u94A9\\u5B50\\u5931\\u8D25\\uFF08\\u4E0D\\u5F71\\u54CD\\u52A0\\u8F7D\\uFF09\\uFF0C\\u8BF7\\u68C0\\u67E5\\uFF1A`,M(r))},_={},ue=()=>{for(let e of f)try{e.init?.(_)}catch(r){console.warn("[fulgurjs] \\u6269\\u5C55\\u521D\\u59CB\\u5316\\u5931\\u8D25\\uFF0C\\u8BF7\\u68C0\\u67E5\\uFF1A",e.name,M(r))}},D=new Map,K,q=e=>{let r=D.get(e);return r||D.set(e,r={}),r},z=()=>globalThis[Ce]??{};async function Y(e,r,n,o){let t=u=>{if(u instanceof E)return v({remote:e,error:u}),u;let a=new E(R.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${o} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${M(u)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${o} \\u51FD\\u6570\\u540E\\u91CD\\u65B0\\u52A0\\u8F7D\\uFF1B\\u5931\\u8D25\\u7F13\\u5B58\\u5DF2\\u6E05\\u9664\\uFF0C\\u53EF\\u4EE5\\u76F4\\u63A5\\u91CD\\u8BD5\\u3002`,{remote:e,phase:o},{cause:u});return v({remote:e,error:a}),a};K=e;let s;try{s=r(n)}catch(u){throw t(u)}finally{K=void 0}try{await s}catch(u){throw t(u)}}async function de(e,r,n,o){e.debug.setup="pending";try{if(e.manifestUrl)try{await B(`${e.name}/${n}`)}catch{}let t=await r.get(n),s=t?.default,u=t?.onSession!==void 0||t?.globalComponents!==void 0||t?.pageProviders!==void 0;if(s!==void 0&&typeof s!="function"||!s&&!u)throw new E(R.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${t==null?String(t):typeof s}\\uFF0C\\u4E14\\u6A21\\u5757\\u4E0D\\u6EE1\\u8DB3\\u521D\\u59CB\\u5316\\u58F0\\u660E\\u5951\\u7EA6\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u521D\\u59CB\\u5316\\u51FD\\u6570\\uFF0C\\u6216\\u53EA\\u58F0\\u660E onSession/globalComponents/pageProviders\\uFF1B\\u7A7A\\u6A21\\u5757\\u4E0E\\u975E\\u51FD\\u6570\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u65E0\\u6548\\u3002`,{remote:e.name,module:n});if(t.onSession!==void 0&&typeof t.onSession!="function")throw new E(R.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AonSession \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof t.onSession}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5C06 onSession \\u6539\\u4E3A\\u5177\\u540D\\u5BFC\\u51FA\\u7684\\u51FD\\u6570\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});if(o.setupExports=t,t.globalComponents!==void 0){if(typeof t.globalComponents!="object"||t.globalComponents===null||Array.isArray(t.globalComponents))throw new E(R.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AglobalComponents \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${Array.isArray(t.globalComponents)?"array":typeof t.globalComponents}\\uFF0C\\u5E94\\u4E3A\\u5BF9\\u8C61\\uFF08\\u952E=\\u7EC4\\u4EF6\\u6CE8\\u518C\\u540D\\uFF0C\\u503C=\\u7EC4\\u4EF6\\uFF09\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u6539\\u4E3A export const globalComponents = { \\u7EC4\\u4EF6\\u6CE8\\u518C\\u540D: \\u7EC4\\u4EF6 } \\u5F62\\u6001\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});o.globalComponents=t.globalComponents}if(t.pageProviders!==void 0){if(!Array.isArray(t.pageProviders))throw new E(R.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1ApageProviders \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof t.pageProviders}\\uFF0C\\u5E94\\u4E3A\\u6570\\u7EC4\\uFF08\\u6BCF\\u9879=\\u7EC4\\u4EF6\\u6216\\u96F6\\u53C2 loader\\uFF09\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u6539\\u4E3A export const pageProviders = [AppProvider] \\u6216 [() => import(\'./X\').then((m) => m.AppProvider)] \\u5F62\\u6001\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});o.pageProviders=t.pageProviders}s&&await Y(e.name,s,{appContext:z(),signal:(o.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(t){throw e.debug.setup="failed",t?.code&&v({remote:e.name,error:t}),o.setupExports=void 0,o.globalComponents=void 0,o.pageProviders=void 0,t}}async function fe(e,r,n){let o=z(),t=o?.sessionKey;if(typeof t!="string"||t===""){let y=new E(R.SETUP_SESSION_KEY_MISSING,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u58F0\\u660E\\u4E86 onSession\\uFF0C\\u4F46\\u5BBF\\u4E3B\\u5C1A\\u672A\\u63D0\\u4F9B\\u6709\\u6548\\u7684 AppContext.sessionKey\\u3002\n\\u539F\\u56E0\\uFF1A\\u5F53\\u524D\\u503C\\u4E3A ${t===void 0?"\\u7F3A\\u5931":JSON.stringify(t)}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5BBF\\u4E3B\\u6BCF\\u6B21\\u767B\\u5F55\\u6216\\u91CD\\u767B\\u65F6\\u751F\\u6210\\u65B0\\u7684\\u975E\\u654F\\u611F\\u767B\\u5F55\\u4EE3\\u6B21 ID\\uFF0C\\u5E76\\u5728\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u9875\\u9762\\u524D\\u8C03\\u7528 provideAppContext({ ..., sessionKey: \'\\u767B\\u5F55\\u4EE3\\u6B21 ID\' })\\uFF1B\\u4E0D\\u8981\\u4F7F\\u7528 token \\u539F\\u6587\\u3002`,{remote:e.name});throw v({remote:e.name,error:y}),y}if(r.sessionPromise&&r.sessionKey===t)return r.sessionPromise;r.controller?.abort();let s=new AbortController;r.controller=s,r.sessionKey=t;let u=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),a=(async()=>{await u,!s.signal.aborted&&await Y(e.name,n,{appContext:o,sessionKey:t,signal:s.signal},"onSession")})();return r.sessionPromise=a,a.catch(()=>{r.sessionKey===t&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),a}async function pe(e,r){let n=r?.[Ne];if(typeof n!="string"||n==="")return;let o=q(e.name);o.setupPromise||(o.setupPromise=de(e,r,n,o).catch(s=>{throw o.setupPromise=void 0,s})),await o.setupPromise;let t=o.setupExports?.onSession;typeof t=="function"&&await fe(e,o,t)}function me(){for(let e of D.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let L=e=>c[e]??=Object.create(null);function v(e){if(!ie(e.error)){try{_.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}}function ge(e="default"){return L(e),c}function H(e,r,n,o,t={}){let s=L(e||"default"),u=Object.hasOwn(s,r)?s[r]:void 0,a=u&&typeof u=="object"?u:void 0;a||(a=Object.create(null),s[r]=a),!(Object.hasOwn(a,n)&&a[n])&&(a[n]={version:n,get:o,from:t.from??"unknown",eager:!!t.eager,loaded:!!t.loaded})}function he(e){let r=(n,o,t)=>{if(n===void 0)return;if(!(typeof n=="number"&&(t?Number.isInteger(n)&&n>=0&&n<=10:Number.isFinite(n)&&n>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${o} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(n)}\\uFF0C\\u5E94\\u4E3A${t?" 0 \\u5230 10 \\u7684\\u6574\\u6570":"\\u5927\\u4E8E 0 \\u7684\\u6709\\u9650\\u6570\\u5B57"}\\u3002\\u8BF7\\u4FEE\\u6B63 registerRemote \\u914D\\u7F6E\\u3002`)};r(e.timeout,"timeout"),r(e.retries,"retries",!0),e.breaker&&(r(e.breaker.threshold,"breaker.threshold"),r(e.breaker.resetMs,"breaker.resetMs"))}function Z(e){for(let r of e){he(r);let n=d.get(r.name);d.set(r.name,{timeout:J,retries:ce,...n,...r,breakerThreshold:r.breaker?.threshold??n?.breakerThreshold??Fe,breakerResetMs:r.breaker?.resetMs??n?.breakerResetMs??Ve,state:n?.state??"idle",breakerState:n?.breakerState??{fails:0,openUntil:0},entryInflight:n?.entryInflight??new Map,entryFailCounts:n?.entryFailCounts??new Map,debug:n?.debug??{entry:j(r.entry),status:"idle",setup:"none"}})}}function ye(e){Z([e])}function Se(e){f.push(...e),m.clear(),ue()}function I(e,r,n=!1){let o=r.shareScope||"default",t=r.shareKey||e,u=L(o)[t]||{},a=Object.keys(u).filter(i=>!n||r.singleton||u[i].value!==void 0);if(n&&a.length===0)return;let y=r.requiredVersion,g=a.filter(i=>y===void 0||y===!1||U(i,y)),p;if(r.singleton&&a.length>0){let i=a.filter(h=>u[h].loaded);if(p=[...i.length?i:a].sort(x).pop(),!g.includes(p)){let h=u[p],O=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${t}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42 ${y??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${a.join("\\u3001")}\\uFF1B\\u5355\\u4F8B\\u5019\\u9009\\u4E3A ${h.from} \\u63D0\\u4F9B\\u7684 ${p}\\u3002\n`+(r.strictVersion?`\\u7ED3\\u679C\\uFF1AstrictVersion \\u5DF2\\u5F00\\u542F\\uFF0C\\u672C\\u6B21\\u52A0\\u8F7D\\u5DF2\\u62D2\\u7EDD\\uFF0C\\u672A\\u4EA4\\u4ED8\\u4E0D\\u517C\\u5BB9\\u5B9E\\u4F8B\\u3002\n`:`\\u7ED3\\u679C\\uFF1A\\u590D\\u7528\\u6B64\\u5355\\u4F8B\\uFF1B\\u8BF7\\u786E\\u8BA4\\u4E24\\u7AEF API \\u517C\\u5BB9\\u3002\n`)+"\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u6838\\u5BF9\\u540E\\u8C03\\u6574 shared.requiredVersion\\u3002";if(r.strictVersion){let T=new E(R.SHARE_STRICT_VERSION,O,{shareKey:t,requiredVersion:y});throw v({remote:h.from,error:T}),T}let $=`${o}|${t}|${y??"*"}|${p}|${a.join(",")}`;l.has($)||(l.add($),console.warn(`[fulgurjs:MFU-010] ${O}`))}}else if(p=[...g].sort(x).pop(),!p){if(r.strictVersion){let i=new E(R.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${o}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${t}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${y}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${a.join("\\u3001")||"\\u65E0"}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u4FEE\\u6B63 shared.requiredVersion\\u3002`);throw v({remote:t,error:i}),i}return}return u[p]}function Q(e,r,n){let o=r.localVersion;if(!o||n===void 0)return;let t=r.shareScope||"default",s=r.shareKey||e,u=L(t),a=Object.hasOwn(u,s)?u[s]:void 0;if(a&&Object.keys(a).length>0){try{let g=I(e,r);if(g&&g.value===void 0){if(g.version===o)g.value=n,g.loaded=!0;else if(r.singleton&&!g.pendingGet){H(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let p=u[s][o];p.value=n,p.loaded=!0}}}catch{}return}H(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let y=u[s]?.[o];y&&(y.value=n)}async function ee(e,r={}){let n=r.shareScope||"default",o=r.shareKey||e,t=L(n)[o]||{},s=S(e,r),u=_.resolveShare?m.get(s):void 0,a=u||I(e,r);if(!a){if(r.fallback){let i=await r.fallback();return Q(e,r,i),i}let p=new E(R.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${o}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u4F5C\\u7528\\u57DF "${n}" \\u4E2D\\u6CA1\\u6709\\u7B26\\u5408 ${r.requiredVersion??"\\u4EFB\\u610F\\u7248\\u672C"} \\u8981\\u6C42\\u7684\\u7248\\u672C\\uFF0C\\u4E14\\u672A\\u914D\\u7F6E\\u672C\\u5730\\u526F\\u672C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728\\u5BBF\\u4E3B\\u6216\\u8FDC\\u7A0B\\u6CE8\\u518C\\u8BE5\\u4F9D\\u8D56\\uFF0C\\u6216\\u4E3A shared \\u914D\\u7F6E\\u53EF\\u7528\\u7684\\u672C\\u5730\\u526F\\u672C\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion});throw v({remote:o,error:p}),p}if(_.resolveShare&&!u){let p=await _.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:a,available:Object.values(t)});p&&(a=p),m.set(s,a)}if(a.value!==void 0)return m.set(S(e,r),a),a.value;if(a.loaded=!0,!a.pendingGet)try{a.pendingGet=a.get()}catch(p){a.pendingGet=Promise.reject(p)}let y=a.pendingGet,g;try{g=await y}catch(p){if(a.value!==void 0)return m.set(S(e,r),a),a.value;throw a.loaded=!1,m.get(s)===a&&m.delete(s),p}finally{a.pendingGet===y&&(a.pendingGet=void 0)}return a.value===void 0&&(a.value=g),m.set(S(e,r),a),a.value}function Ee(e,r={}){return _.resolveShare?m.get(S(e,r))?.value:I(e,r,!0)?.value}function Re(e,r,n,o){Q(e,{...r,localVersion:n},o)}function we(e,r){let n=r.shareScope||"default",o=r.shareKey||e;if(_.resolveShare){let s=S(e,r),u=m.get(s);if(u&&u.value!==void 0)return{kind:"ready",value:u.value};let a=u||_.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:I(e,r),available:Object.values(L(n)[o]||{})});if(a&&typeof a.then=="function")throw Promise.resolve(a).catch(()=>{}),new E(R.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u5BF9\\u5171\\u4EAB "${o}" \\u8FD4\\u56DE\\u4E86 Promise\\uFF0C\\u4F46\\u8BE5\\u5171\\u4EAB\\u6B63\\u88AB\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u6D88\\u8D39\\uFF08Vite 8 \\u540C\\u6B65\\u534F\\u5546\\u95E8\\u9762\\uFF09\\u3002\n\\u539F\\u56E0\\uFF1A\\u6A21\\u5757\\u6C42\\u503C\\u671F\\u65E0\\u6CD5\\u7B49\\u5F85\\u5F02\\u6B65\\u51B3\\u7B56\\uFF1B\\u9759\\u6001\\u5BFC\\u5165\\u4E0D\\u80FD\\u9759\\u9ED8\\u5FFD\\u7565 hook \\u51B3\\u7B56\\u3002\n\\u4FEE\\u6CD5\\uFF1AVite 8 HTML \\u5165\\u53E3\\u4F1A\\u5148\\u5B8C\\u6210\\u5F02\\u6B65\\u534F\\u5546\\uFF1B\\u5176\\u4ED6\\u5165\\u53E3\\u8BF7\\u5148\\u52A8\\u6001 loadShare \\u5EFA\\u7ACB\\u5FEB\\u7167\\uFF0C\\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u8BA9\\u8BE5\\u952E\\u540C\\u6B65\\u8FD4\\u56DE picked\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let y=a;if(y){if(y.value!==void 0)return m.set(S(e,r),y),{kind:"ready",value:y.value};if(y.version!==void 0&&y.version===r.localVersion)return{kind:"local"};throw new E(R.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u4E3A "${o}" \\u9009\\u62E9\\u4E86\\u672A\\u5C31\\u7EEA\\u7684 ${y.version??"\\u6761\\u76EE"}\\u3002\n\\u539F\\u56E0\\uFF1A\\u540C\\u6B65\\u6D88\\u8D39\\u4E0D\\u80FD\\u7B49\\u5F85\\u52A0\\u8F7D\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5148\\u52A8\\u6001 loadShare \\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u9009\\u62E9\\u5DF2\\u5C31\\u7EEA\\u5B9E\\u4F8B/\\u672C\\u5730\\u7248\\u672C ${r.localVersion??"\\u672A\\u58F0\\u660E"}\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0})}}let t=I(e,r);if(!t)return{kind:"local"};if(t.value!==void 0)return{kind:"ready",value:t.value};if(t.version!==void 0&&t.version===r.localVersion)return{kind:"local"};if(r.singleton||r.strictVersion&&r.requiredVersion&&(!r.localVersion||!U(r.localVersion,r.requiredVersion))){if(r.strictVersion||t.pendingGet)throw new E(R.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB "${o}" \\u9009\\u4E2D\\u4E86 ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version}\\uFF08\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\uFF0C\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u65E0\\u6CD5\\u7B49\\u5F85\\u5176\\u5B9E\\u4F8B\\u5C31\\u7EEA\\u3002\n\\u539F\\u56E0\\uFF1A\\u4E0D\\u80FD\\u6539\\u7528\\u4E0D\\u517C\\u5BB9\\u7684\\u672C\\u5730\\u526F\\u672C\\u6216\\u5206\\u88C2\\u5355\\u4F8B\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9\\u8BE5\\u5171\\u4EAB\\u7684\\u9996\\u6B21\\u6D88\\u8D39\\u5148\\u7ECF\\u4E00\\u6B21\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u52A0\\u8F7D\\uFF0C\\u6216\\u5C06\\u672C\\u5E94\\u7528\\u7248\\u672C\\u4E0E\\u4F5C\\u7528\\u57DF\\u63D0\\u4F9B\\u7248\\u672C\\u5BF9\\u9F50\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let s=`${n}|${o}|${t.version}|${r.localVersion}`;return l.has(s)||(l.add(s),console.warn(`[fulgurjs:MFU-010] \\u5171\\u4EAB\\u5355\\u4F8B "${o}"\\uFF1A\\u4F5C\\u7528\\u57DF\\u4E2D ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version} \\u5C1A\\u672A\\u52A0\\u8F7D\\uFF0C\\u9996\\u4E2A\\u6D88\\u8D39\\u8005\\u4EE5\\u672C\\u5730\\u7248\\u672C ${r.localVersion??""} \\u63A5\\u7BA1\\uFF08\\u540E\\u7EED\\u6D88\\u8D39\\u8005\\u6309\\u5DF2\\u52A0\\u8F7D\\u4F18\\u5148\\u6536\\u655B\\u5230\\u8BE5\\u5B9E\\u4F8B\\uFF09\\u3002`)),{kind:"local"}}return console.warn(`[fulgurjs] \\u5171\\u4EAB "${o}"\\uFF1A\\u975E\\u5355\\u4F8B\\u540C\\u6B65\\u6D88\\u8D39\\u4F7F\\u7528\\u672C\\u5730 ${r.localVersion??""}\\uFF0C\\u8FDC\\u7A0B ${t.version} \\u5C1A\\u672A\\u5C31\\u7EEA\\u3002`),{kind:"local"}}async function be(e){if(_.resolveShare){for(let{name:r,opts:n}of e){let o=S(r,n);if(m.has(o))continue;let t=I(r,n),s=await _.resolveShare({shareKey:n.shareKey||r,shareScope:n.shareScope||"default",requiredVersion:n.requiredVersion,picked:t,available:Object.values(L(n.shareScope||"default")[n.shareKey||r]||{})})||t;s&&m.set(o,s)}for(let{name:r,opts:n}of e)await ee(r,n)}}function j(e=""){return F(e).split(/[?#]/,1)[0]}function re(e,r,n){return new Promise((o,t)=>{let s=setTimeout(()=>t(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${n}`)),r);e.then(u=>{clearTimeout(s),o(u)},u=>{clearTimeout(s),t(u)})})}let ve=e=>new Promise(r=>setTimeout(r,e)),ne=new Set;function G(e,r){if(!e||typeof e.get!="function")throw new Error(`\\u8FDC\\u7A0B\\u5E94\\u7528 "${r.name}" \\u7684 remoteEntry \\u672A\\u5BFC\\u51FA\\u5BB9\\u5668\\u63A5\\u53E3\\u3002\\u8BF7\\u786E\\u8BA4\\u5165\\u53E3\\u5BFC\\u51FA\\u4E86 get()\\uFF0C\\u5E76\\u68C0\\u67E5\\u8BE5\\u5730\\u5740\\u662F\\u5426\\u8FD4\\u56DE\\u6B63\\u786E\\u7684\\u8054\\u90A6\\u5165\\u53E3 JS\\u3002`);if(e.name&&r.name&&e.name!==r.name){let n=`\\u8FDC\\u7A0B\\u5165\\u53E3\\u81EA\\u62A5\\u540D\\u79F0 "${e.name}" \\u4E0E\\u5BBF\\u4E3B\\u914D\\u7F6E\\u540D\\u79F0 "${r.name}" \\u4E0D\\u4E00\\u81F4\\u3002\\u8BF7\\u7EDF\\u4E00\\u4E24\\u4FA7 federation({ name }) \\u4E0E remotes \\u7684\\u540D\\u79F0\\u3002`;if(r.promise){let o=`${r.name}\\u2194${e.name}`;ne.has(o)||(ne.add(o),console.warn(`[fulgurjs] ${n} \\u5F53\\u524D\\u662F\\u52A8\\u6001 Promise \\u8FDC\\u7A0B\\uFF0C\\u7EE7\\u7EED\\u52A0\\u8F7D\\u3002`))}else throw Object.assign(new Error(n),{code:R.REMOTE_NAME_MISMATCH})}}async function te(e,r){let n=r.entryFailCounts.get(e)??0,o=n>0?`${e}${e.includes("?")?"&":"?"}fulgurjs_retry=${n}`:e,t=r.entryInflight.get(e),s=t??import(o);return t||(r.entryInflight.set(e,s),s.catch(()=>{r.entryInflight.delete(e),r.entryFailCounts.set(e,(r.entryFailCounts.get(e)??0)+1)})),re(s,r.timeout??J,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${j(e)}`)}async function oe(e,r){let n=e.shareScope||"default";if(e.container){let s=V.get(e.container);if(s&&s!==n)throw new E(R.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${s}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return e.container}if(e.containerPromise)return e.containerPromise;let o=e.breakerState;if(o.openUntil>Date.now()){let s=new E(R.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u8FDE\\u7EED\\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u7194\\u65AD\\u5668\\u5DF2\\u5F00\\u542F\\uFF1B\\u5C06\\u5728 ${new Date(o.openUntil).toISOString()} \\u540E\\u5141\\u8BB8\\u91CD\\u8BD5\\u3002\\u8BF7\\u5148\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u670D\\u52A1\\u548C\\u7F51\\u7EDC\\u3002`,{remote:e.name,stage:"container"});throw v({remote:e.name,error:s}),s}e.state="loading",e.debug.status="loading";let t=(async()=>{let s=[];if(e.promise)s.push(async()=>{let i=await re(e.promise(),e.timeout??J,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),h=typeof i=="string"?await te(i,e):i;return G(h,e),h});else for(let i of[e.entry,...e.fallback??[]])s.push(async()=>{let h=await te(i,e);return G(h,e),h});let u,a,y=!1,g=r?.retries??e.retries??ce;for(let i of s){for(let h=0;h<=g;h++){let O=performance.now();try{u=await i(),e.lastLoadMs=Math.round(performance.now()-O),e.debug.lastLoadMs=e.lastLoadMs,y=!0;break}catch($){if(a=$,$?.code)throw $;h<g&&await ve(Math.min(De,200*2**h)*(1-Ke*(1-2*Math.random())))}}if(y)break}if(!y||!u){let i=j(e.entry),h=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${i}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),h.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),h.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${i}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),h.push("2. \\u68C0\\u67E5 Nginx/CDN \\u7684\\u5165\\u53E3\\u8DEF\\u5F84\\u6620\\u5C04\\uFF1B\\u8BE5\\u5730\\u5740\\u4E0D\\u80FD\\u56DE\\u9000\\u5230 index.html\\u3002")),new E(R.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${i} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${M(a)}\n\\u4FEE\\u6CD5\\uFF1A\n${h.join(`\n`)}`,{remote:e.name,stage:"container"},{cause:a})}G(u,e);let p=V.get(u);if(p&&p!==n)throw new E(R.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${p}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof u.init=="function"&&await u.init(c),V.set(u,n),e.container=u,e.state="loaded",e.debug.status="loaded",o.fails=0,u})();e.containerPromise=t;try{return await t}catch(s){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=M(s),o.fails+=1,o.fails>=e.breakerThreshold&&(o.openUntil=Date.now()+e.breakerResetMs,o.fails=0),s instanceof E)throw v({remote:e.name,error:s}),s;if(s?.code)throw v({remote:e.name,error:s}),s;let u=new E(R.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(s)}\\u3002\\u8BF7\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u3001\\u7F51\\u7EDC\\u53CA\\u5171\\u4EAB\\u4F9D\\u8D56\\u3002`,{remote:e.name,stage:"container"},{cause:s});throw v({remote:e.name,error:u}),u}}function X(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:se(e.slice(r+1))}}function se(e){return e?e.startsWith(".")?e:`./${e}`:""}async function Pe(e,r){let{remote:n,module:o}=X(e);if(o&&K===n)throw new E(R.SETUP_RECURSION,`\\u73B0\\u8C61\\uFF1A\\u52A0\\u8F7D "${e}" \\u65F6\\uFF0C\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 setup/onSession \\u53C8\\u540C\\u6B65\\u52A0\\u8F7D\\u4E86\\u81EA\\u8EAB\\u6A21\\u5757\\uFF0C\\u5F62\\u6210\\u5FAA\\u73AF\\u7B49\\u5F85\\u3002\n\\u539F\\u56E0\\uFF1A\\u521D\\u59CB\\u5316\\u5C1A\\u672A\\u5B8C\\u6210\\uFF0C\\u4E0D\\u80FD\\u7B49\\u5F85\\u81EA\\u8EAB\\u7684\\u521D\\u59CB\\u5316\\u7ED3\\u679C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u4E0D\\u8981\\u5728 setup/onSession \\u4E2D\\u52A0\\u8F7D\\u540C\\u4E00\\u8FDC\\u7A0B\\u7684\\u6A21\\u5757\\uFF1B\\u8BF7\\u5728\\u9875\\u9762\\u7EC4\\u4EF6\\u4E2D\\u52A0\\u8F7D\\uFF0C\\u6216\\u901A\\u8FC7 context \\u89E3\\u8026\\u3002`,{remote:n});try{_.beforeLoadRemote?.({remote:n,module:o})}catch(i){W("beforeLoadRemote",i)}let t=d.get(n);if(!t)throw new E(R.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5728 federation({ remotes }) \\u4E2D\\u914D\\u7F6E\\uFF0C\\u6216\\u5728\\u52A0\\u8F7D\\u524D\\u8C03\\u7528 registerRemote()\\u3002`,{remote:n});let s;try{let i=o&&t.manifestUrl?B(e):Promise.resolve();[s]=await Promise.all([oe(t,{retries:r?.retries}),i])}catch(i){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF1B\\u4F7F\\u7528\\u914D\\u7F6E\\u7684 fallbackModule\\u3002\\u6458\\u8981\\uFF1A`,M(i)),v({remote:n,error:i}),await r.fallbackModule();throw i}if(!o)return s;await pe(t,s);let u=q(n).globalComponents,a=r?.consumerApp;if(u&&a&&typeof a.component=="function")for(let i of Object.keys(u))a.component(i,u[i]);let y=q(n).pageProviders;y&&y.length>0&&typeof a?.pageProviders=="function"&&a.pageProviders(y);let g=`${n}@${t.shareScope||"default"}#${o}`;b.has(g)||b.set(g,s.get(o).catch(i=>{if(b.delete(g),i instanceof E||i?.code)throw v({remote:n,error:i}),i;let h=new E(R.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u52A0\\u8F7D\\u6A21\\u5757 "${o}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(i)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:n,module:o,stage:"expose"},{cause:i});throw v({remote:n,error:h}),h}));let p;try{p=await b.get(g)}catch(i){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF1B\\u4F7F\\u7528\\u914D\\u7F6E\\u7684 fallbackModule\\u3002\\u6458\\u8981\\uFF1A`,M(i)),v({remote:n,error:i}),await r.fallbackModule();throw i}try{_.afterLoadRemote?.({remote:n,module:o,module_ns:p})}catch(i){W("afterLoadRemote",i)}if(p&&typeof p=="object"&&Object.keys(p).length===0){let i=new E(R.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6A21\\u5757 "${o}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:n,module:o});v({remote:n,error:i}),console.error(i.message)}return p}function $e(e){let r=d.get(e);if(!r)throw new E(R.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:e});return oe(r)}async function B(e,r={}){let{remote:n,module:o}=X(e),t=d.get(n);if(!t)throw new E(R.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:n});let s=r.mode??"preload",u=(g,p)=>{if(g.sheet)return Promise.resolve();let i=A.get(g);if(i)return i;let h=new Promise(O=>{let $=()=>{g.removeEventListener("load",$),g.removeEventListener("error",T),O()},T=()=>{v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${p}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:n})}),$()};g.addEventListener("load",$,{once:!0}),g.addEventListener("error",T,{once:!0}),g.sheet&&$()});return A.set(g,h),h},a=(g,p)=>{if(typeof document>"u")return Promise.resolve();let i=document.querySelector(`link[href="${g}"]`);if(i)return p==="style"&&s==="preload"?A.get(i)??Promise.resolve():Promise.resolve();let h=document.createElement("link");h.rel=p==="style"?"stylesheet":"modulepreload",h.href=g,s==="prefetch"&&(h.fetchPriority="low");let O=p==="style"?u(h,g):Promise.resolve();return document.head.appendChild(h),p==="style"&&s==="preload"?O:Promise.resolve()},y=g=>{let p=typeof document<"u"?document.baseURI:void 0,i=new URL(t.entry,p||"http://fulgurjs.invalid/");return!i.pathname.endsWith("/")&&!i.pathname.split("/").pop().includes(".")&&(i.pathname+="/"),new URL(g,i).href};try{if(t.manifestUrl){let g=P.get(t.manifestUrl);g||(g=fetch(t.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(i=>i.ok?i.json():void 0),P.set(t.manifestUrl,g),g.then(i=>{i||P.delete(t.manifestUrl)},()=>P.delete(t.manifestUrl)));let p=await g;if(p){let i=p.schemaVersion;if(typeof i=="number"&&(!Number.isInteger(i)||i>1)){v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(i)}\\uFF0C\\u5F53\\u524D\\u4EC5\\u652F\\u6301\\u7248\\u672C 1\\u3002\\u8BF7\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u548C\\u8FDC\\u7A0B\\u7684\\u63D2\\u4EF6\\u7248\\u672C\\u3002`,{remote:n})}),await a(t.entry,"modulepreload");return}await a(t.entry,"modulepreload");let h=p.exposes,O=Array.isArray(h)?h.filter(k=>k&&typeof k=="object").map(k=>[String(k.name??""),k]):h&&typeof h=="object"?Object.entries(h):[],$=o?O.filter(([k,N])=>se(String(N?.name??k))===o):O,T=[];for(let[,k]of $)if(typeof k?.file=="string"&&await a(y(k.file),"modulepreload"),Array.isArray(k?.css))for(let N of k.css){if(typeof N!="string")continue;let _e=a(y(N),"style");s==="preload"&&T.push(_e)}await Promise.all(T);return}}await a(t.entry,"modulepreload")}catch(g){v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(g)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:n})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=c,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,n]of d)e[r]={...n.debug,entry:j(n.entry)};return e},errors:[]}),{shareScopeMap:c,initSharing:ge,registerShare:H,registerRemotes:Z,registerRemote:ye,registerPlugins:Se,loadShare:ee,loadShareSync:we,prepareShares:be,getLoadedShare:Ee,pinLoadedShare:Re,loadRemote:Pe,getContainer:$e,preloadRemote:B,parseSpec:X,clearSessionState:me,reportRemoteError:e=>{v(e)}}}var le=globalThis,w=le.__FULGURJS_RUNTIME__??qe();le.__FULGURJS_RUNTIME__=w;try{Object.freeze(w)}catch{}var Ye=ae;function Ze(){return w}var Qe=w.initSharing,er=w.registerShare,rr=w.registerRemotes,nr=w.registerRemote,tr=w.registerPlugins,or=w.loadShare,sr=w.getLoadedShare,ir=w.prepareShares||(async c=>{for(let{name:d,opts:f}of c)await w.loadShare(d,f)}),ar=w.loadShareSync,cr=w.pinLoadedShare,lr=w.loadRemote,ur=w.getContainer,dr=w.preloadRemote,fr=w.parseSpec,pr=w.clearSessionState,mr=w.shareScopeMap;function gr(c){if(c&&typeof c=="object"&&"default"in c){let d=c.default;return d!==void 0?d:c}return c}var hr=w;export{pr as clearSessionState,hr as default,ur as getContainer,sr as getLoadedShare,Ze as getRuntime,Qe as initSharing,lr as loadRemote,or as loadShare,ar as loadShareSync,fr as parseSpec,cr as pinLoadedShare,dr as preloadRemote,ir as prepareShares,tr as registerPlugins,nr as registerRemote,rr as registerRemotes,er as registerShare,w as runtime,mr as shareScopeMap,gr as unwrapDefault,Ye as version};\n';
|
|
4022
4180
|
|
|
4023
4181
|
// src/index.ts
|
|
4024
4182
|
function readRuntimeCode() {
|
|
@@ -4035,7 +4193,7 @@ function enumerateCjsExports(packageName, appRoot) {
|
|
|
4035
4193
|
if (cached) return cached;
|
|
4036
4194
|
let names = [];
|
|
4037
4195
|
try {
|
|
4038
|
-
const appRequire = createRequire4(
|
|
4196
|
+
const appRequire = createRequire4(path11.join(appRoot, "package.json"));
|
|
4039
4197
|
const mod = appRequire(packageName);
|
|
4040
4198
|
names = Object.keys(mod);
|
|
4041
4199
|
} catch {
|
|
@@ -4153,7 +4311,7 @@ async function resolveSharedImportTarget(item, root) {
|
|
|
4153
4311
|
const specifier = item.import;
|
|
4154
4312
|
if (typeof specifier !== "string") return item.shareKey;
|
|
4155
4313
|
try {
|
|
4156
|
-
const resolved = await this.resolve?.(specifier,
|
|
4314
|
+
const resolved = await this.resolve?.(specifier, path11.join(root, "package.json"), { skipSelf: true });
|
|
4157
4315
|
if (resolved?.id) return resolved.id;
|
|
4158
4316
|
} catch {
|
|
4159
4317
|
}
|
|
@@ -4187,7 +4345,7 @@ function federation(options) {
|
|
|
4187
4345
|
enforce: "pre",
|
|
4188
4346
|
async config(userConfig, env) {
|
|
4189
4347
|
state.command = env.command;
|
|
4190
|
-
const root =
|
|
4348
|
+
const root = path11.resolve(userConfig.root ?? process.cwd());
|
|
4191
4349
|
const normalized = normalizeOptions(options, root, env.command);
|
|
4192
4350
|
state.normalized = normalized;
|
|
4193
4351
|
state.rolldownBuild = env.command === "build" && Number((readInstalledVersion(root, "vite") ?? "0").split(".")[0]) >= 8;
|
|
@@ -4466,7 +4624,7 @@ export { default } from ${JSON.stringify(url)};
|
|
|
4466
4624
|
},
|
|
4467
4625
|
resolveId(source, importer) {
|
|
4468
4626
|
if (state.normalized && importer && (importer.includes("virtual:fulgurjs-shared:") || importer.includes("virtual:fulgurjs-shared-ns:")) && /^\.\.?\//.test(source) && !source.startsWith("virtual:fulgurjs-")) {
|
|
4469
|
-
const resolved =
|
|
4627
|
+
const resolved = path11.resolve(state.normalized.root, source);
|
|
4470
4628
|
return resolved + (source.match(/\?[^/]*$/)?.[0] ?? "");
|
|
4471
4629
|
}
|
|
4472
4630
|
let s = source;
|
|
@@ -4560,7 +4718,7 @@ export { default } from ${JSON.stringify(url)};
|
|
|
4560
4718
|
}
|
|
4561
4719
|
let importTarget = item.import;
|
|
4562
4720
|
try {
|
|
4563
|
-
const resolvedImport = await this.resolve?.(item.import,
|
|
4721
|
+
const resolvedImport = await this.resolve?.(item.import, path11.join(state.normalized.root, "package.json"), { skipSelf: true });
|
|
4564
4722
|
if (resolvedImport?.id) importTarget = resolvedImport.id;
|
|
4565
4723
|
} catch {
|
|
4566
4724
|
}
|
|
@@ -4669,7 +4827,7 @@ ${code}`, map: null };
|
|
|
4669
4827
|
const srcRe = /src=["']([^"']+)["']/;
|
|
4670
4828
|
const entryPath = (src) => {
|
|
4671
4829
|
const file = src.startsWith("/@fs/") ? src.slice(4) : src;
|
|
4672
|
-
return
|
|
4830
|
+
return path11.isAbsolute(file) && fs8.existsSync(file) ? file : path11.resolve(state.normalized.root, src.startsWith("/") ? src.slice(1) : src);
|
|
4673
4831
|
};
|
|
4674
4832
|
for (const tag of html.match(moduleScriptRe) ?? []) {
|
|
4675
4833
|
const src = srcRe.exec(tag)?.[1];
|
|
@@ -4700,7 +4858,7 @@ ${code}`, map: null };
|
|
|
4700
4858
|
state.providerEntrySeeds = [];
|
|
4701
4859
|
providerClosureCache.clear();
|
|
4702
4860
|
providerClosureBuilt = false;
|
|
4703
|
-
const providerRequire = createRequire4(
|
|
4861
|
+
const providerRequire = createRequire4(path11.join(n.root, "package.json"));
|
|
4704
4862
|
for (const item of n.shared) {
|
|
4705
4863
|
if (item.import === false) continue;
|
|
4706
4864
|
try {
|
|
@@ -4717,7 +4875,7 @@ ${code}`, map: null };
|
|
|
4717
4875
|
{
|
|
4718
4876
|
for (const item of n.shared) {
|
|
4719
4877
|
if (item.import === false) continue;
|
|
4720
|
-
const resolved = await this.resolve(item.import,
|
|
4878
|
+
const resolved = await this.resolve(item.import, path11.join(n.root, "index.html"));
|
|
4721
4879
|
const file = resolved?.id.replace(/^\0/, "").split("?")[0];
|
|
4722
4880
|
if (!file) continue;
|
|
4723
4881
|
const marker = "/node_modules/";
|
|
@@ -4735,7 +4893,7 @@ ${code}`, map: null };
|
|
|
4735
4893
|
if (state.manualChunkSpecsPending) {
|
|
4736
4894
|
for (const [group, specifier] of state.manualChunkSpecsPending) {
|
|
4737
4895
|
try {
|
|
4738
|
-
const r = await this.resolve(specifier,
|
|
4896
|
+
const r = await this.resolve(specifier, path11.join(n.root, "index.html"));
|
|
4739
4897
|
if (r?.id) {
|
|
4740
4898
|
state.manualChunkGroups.set(r.id, group);
|
|
4741
4899
|
state.manualChunkGroups.set(r.id.split("?")[0], group);
|
|
@@ -4765,7 +4923,7 @@ ${code}`, map: null };
|
|
|
4765
4923
|
};
|
|
4766
4924
|
for (const item of n.shared) {
|
|
4767
4925
|
if (item.import === false) continue;
|
|
4768
|
-
const selfFile = await this.resolve(item.import,
|
|
4926
|
+
const selfFile = await this.resolve(item.import, path11.join(n.root, "index.html")).then(
|
|
4769
4927
|
(r) => r?.id?.split("?")[0] ?? null
|
|
4770
4928
|
).catch(() => null);
|
|
4771
4929
|
for (const alias of item.aliases) {
|
|
@@ -4780,7 +4938,7 @@ ${code}`, map: null };
|
|
|
4780
4938
|
}
|
|
4781
4939
|
}
|
|
4782
4940
|
if (!file) {
|
|
4783
|
-
file = await this.resolve(alias,
|
|
4941
|
+
file = await this.resolve(alias, path11.join(n.root, "index.html")).then(
|
|
4784
4942
|
(r) => r?.id?.split("?")[0] ?? null
|
|
4785
4943
|
).catch(() => null);
|
|
4786
4944
|
}
|
|
@@ -4803,7 +4961,7 @@ ${code}`, map: null };
|
|
|
4803
4961
|
}
|
|
4804
4962
|
if (n.exposes.length > 0) {
|
|
4805
4963
|
for (const e of n.exposes) {
|
|
4806
|
-
const resolved = await this.resolve(e.import,
|
|
4964
|
+
const resolved = await this.resolve(e.import, path11.join(n.root, "index.html"));
|
|
4807
4965
|
if (resolved) {
|
|
4808
4966
|
state.exposeAbsPaths[e.import] = resolved.id.split("?")[0];
|
|
4809
4967
|
} else {
|
|
@@ -5068,7 +5226,7 @@ ${entryChunk.code}`;
|
|
|
5068
5226
|
if (n.exposes.length > 0 && n.dts) {
|
|
5069
5227
|
typesServer = createDevTypesServer(n);
|
|
5070
5228
|
let regenTimer = null;
|
|
5071
|
-
const syncedTypesDir = typeof n.dts === "object" && n.dts.dir ?
|
|
5229
|
+
const syncedTypesDir = typeof n.dts === "object" && n.dts.dir ? path11.resolve(n.root, n.dts.dir) : path11.join(n.root, fs8.existsSync(path11.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types");
|
|
5072
5230
|
const scheduleRegen = (id) => {
|
|
5073
5231
|
if (!isTypesInputChange(n.root, id, syncedTypesDir)) return;
|
|
5074
5232
|
if (regenTimer) clearTimeout(regenTimer);
|
|
@@ -5135,9 +5293,9 @@ ${entryChunk.code}`;
|
|
|
5135
5293
|
if (n.remotes.length > 0 && n.dts && state.command === "serve") {
|
|
5136
5294
|
server.httpServer?.once("listening", () => {
|
|
5137
5295
|
const dtsOpt = n.dts === true ? true : n.dts;
|
|
5138
|
-
const typesRoot =
|
|
5296
|
+
const typesRoot = path11.join(
|
|
5139
5297
|
n.root,
|
|
5140
|
-
dtsOpt === false ? "" : (typeof dtsOpt === "object" ? dtsOpt.dir : void 0) ?? (fs8.existsSync(
|
|
5298
|
+
dtsOpt === false ? "" : (typeof dtsOpt === "object" ? dtsOpt.dir : void 0) ?? (fs8.existsSync(path11.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types")
|
|
5141
5299
|
);
|
|
5142
5300
|
try {
|
|
5143
5301
|
if (fs8.existsSync(typesRoot)) {
|
|
@@ -5196,7 +5354,7 @@ ${entryChunk.code}`;
|
|
|
5196
5354
|
async transform(code, id) {
|
|
5197
5355
|
if (!state.normalized) return null;
|
|
5198
5356
|
const clean = id.split("?")[0];
|
|
5199
|
-
const isAppSource = clean.startsWith(state.normalized.root +
|
|
5357
|
+
const isAppSource = clean.startsWith(state.normalized.root + path11.sep) && !clean.includes(`${path11.sep}node_modules${path11.sep}`) && !clean.includes(`${path11.sep}.vite${path11.sep}`);
|
|
5200
5358
|
const evidence = isAppSource && clean.endsWith(".vue") && (!id.includes("?") || /[?&]type=script(?:&|$)/.test(id)) ? tagVueRuntime(code, (source) => this.parse(source)) : null;
|
|
5201
5359
|
if (evidence) code = evidence.code;
|
|
5202
5360
|
const entryRewrite = state.command === "serve" && isAppSource ? await rewriteRuntimeEntryImports(code, isExposeTargetFile(clean, state.normalized.root, state.normalized.exposes)) : null;
|
|
@@ -5242,7 +5400,7 @@ ${entryChunk.code}`;
|
|
|
5242
5400
|
if (!n) return;
|
|
5243
5401
|
for (const s of n.shared) {
|
|
5244
5402
|
if (s.import === false) continue;
|
|
5245
|
-
void server.pluginContainer.resolveId(s.import,
|
|
5403
|
+
void server.pluginContainer.resolveId(s.import, path11.join(n.root, "index.html")).then((r) => {
|
|
5246
5404
|
if (r?.id) state.resolvedSharedPaths.set(r.id.split("?")[0], s.configKey);
|
|
5247
5405
|
}).catch(() => {
|
|
5248
5406
|
});
|