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