@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.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
import fs8 from "fs";
|
|
3
|
-
import
|
|
3
|
+
import path11 from "path";
|
|
4
4
|
import { createRequire as createRequire4 } from "module";
|
|
5
5
|
|
|
6
6
|
// src/vue-runtime-evidence.ts
|
|
@@ -34,7 +34,7 @@ import fs from "fs";
|
|
|
34
34
|
import path from "path";
|
|
35
35
|
|
|
36
36
|
// src/version.ts
|
|
37
|
-
var RUNTIME_VERSION = "6.14.
|
|
37
|
+
var RUNTIME_VERSION = "6.14.4";
|
|
38
38
|
|
|
39
39
|
// src/dev-cors.ts
|
|
40
40
|
function normalizeDevCorsOrigins(input) {
|
|
@@ -1777,12 +1777,12 @@ function collectPackageExportNames(spec, importerFile) {
|
|
|
1777
1777
|
}
|
|
1778
1778
|
|
|
1779
1779
|
// src/dts-serve.ts
|
|
1780
|
-
import
|
|
1780
|
+
import path6 from "path";
|
|
1781
1781
|
import fs4 from "fs";
|
|
1782
1782
|
|
|
1783
1783
|
// src/dts-generate.ts
|
|
1784
1784
|
import fs3 from "fs";
|
|
1785
|
-
import
|
|
1785
|
+
import path5 from "path";
|
|
1786
1786
|
|
|
1787
1787
|
// src/dts-diagnostics.ts
|
|
1788
1788
|
import path3 from "path";
|
|
@@ -2006,9 +2006,161 @@ export default ${value};`;
|
|
|
2006
2006
|
return text.slice(0, assignment.getStart(source)) + replacement + text.slice(assignment.end);
|
|
2007
2007
|
}
|
|
2008
2008
|
|
|
2009
|
+
// src/dts-type-display.ts
|
|
2010
|
+
import path4 from "path";
|
|
2011
|
+
function displayPublicDataTypes(ts, files, entries, root, compilerOptions = {}) {
|
|
2012
|
+
const base = path4.join(root, ".fulgurjs-types-display");
|
|
2013
|
+
const paths = new Map([...files].map(([rel, text]) => [path4.resolve(base, rel), text]));
|
|
2014
|
+
const entryPaths = [...new Set(entries)].map((rel) => path4.resolve(base, rel));
|
|
2015
|
+
const needsDisplay = entryPaths.filter((file) => {
|
|
2016
|
+
const source = ts.createSourceFile(file, paths.get(file), ts.ScriptTarget.Latest, true);
|
|
2017
|
+
return source.statements.some((s) => ts.isExportDeclaration(s) && (!s.exportClause || ts.isNamedExports(s.exportClause) && s.exportClause.elements.length > 0) || (ts.isInterfaceDeclaration(s) || ts.isTypeAliasDeclaration(s)) && s.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword));
|
|
2018
|
+
});
|
|
2019
|
+
if (needsDisplay.length === 0) return;
|
|
2020
|
+
const options = {
|
|
2021
|
+
...compilerOptions,
|
|
2022
|
+
noEmit: true,
|
|
2023
|
+
target: compilerOptions.target ?? ts.ScriptTarget.ESNext,
|
|
2024
|
+
module: compilerOptions.module ?? ts.ModuleKind.ESNext,
|
|
2025
|
+
moduleResolution: compilerOptions.moduleResolution ?? ts.ModuleResolutionKind.Bundler ?? ts.ModuleResolutionKind.NodeJs,
|
|
2026
|
+
skipLibCheck: true,
|
|
2027
|
+
types: [],
|
|
2028
|
+
allowArbitraryExtensions: true
|
|
2029
|
+
};
|
|
2030
|
+
const directories = /* @__PURE__ */ new Set();
|
|
2031
|
+
for (const file of paths.keys()) {
|
|
2032
|
+
for (let dir = path4.dirname(file); dir.startsWith(base); dir = path4.dirname(dir)) directories.add(dir);
|
|
2033
|
+
}
|
|
2034
|
+
const host = ts.createCompilerHost(options, true);
|
|
2035
|
+
const readFile = (file) => paths.get(path4.resolve(file)) ?? ts.sys.readFile(file);
|
|
2036
|
+
host.readFile = readFile;
|
|
2037
|
+
host.fileExists = (file) => paths.has(path4.resolve(file)) || ts.sys.fileExists(file);
|
|
2038
|
+
host.directoryExists = (dir) => directories.has(path4.resolve(dir)) || (ts.sys.directoryExists?.(dir) ?? false);
|
|
2039
|
+
host.realpath = (file) => paths.has(path4.resolve(file)) ? file : ts.sys.realpath?.(file) ?? file;
|
|
2040
|
+
host.getCurrentDirectory = () => root;
|
|
2041
|
+
host.getSourceFile = (file, languageVersion) => {
|
|
2042
|
+
const text = readFile(file);
|
|
2043
|
+
return text === void 0 ? void 0 : ts.createSourceFile(file, text, languageVersion, true);
|
|
2044
|
+
};
|
|
2045
|
+
const program = ts.createProgram(needsDisplay, options, host);
|
|
2046
|
+
const checker = program.getTypeChecker();
|
|
2047
|
+
const plainData = (symbol) => {
|
|
2048
|
+
if (!(symbol.flags & (ts.SymbolFlags.Interface | ts.SymbolFlags.TypeAlias)) || symbol.flags & (ts.SymbolFlags.Value | ts.SymbolFlags.Namespace)) return false;
|
|
2049
|
+
if (symbol.declarations?.some((d) => (ts.isInterfaceDeclaration(d) || ts.isTypeAliasDeclaration(d)) && d.typeParameters?.length)) return false;
|
|
2050
|
+
const type = checker.getDeclaredTypeOfSymbol(symbol);
|
|
2051
|
+
if (!(type.flags & ts.TypeFlags.Object) || type.getCallSignatures().length || type.getConstructSignatures().length || checker.isArrayType(type) || checker.isTupleType(type)) return false;
|
|
2052
|
+
const hasThis = (node) => ts.isThisTypeNode(node) || (ts.forEachChild(node, hasThis) ?? false);
|
|
2053
|
+
const visited = /* @__PURE__ */ new Set();
|
|
2054
|
+
const specialBase = (value) => {
|
|
2055
|
+
if (visited.has(value)) return false;
|
|
2056
|
+
visited.add(value);
|
|
2057
|
+
if (!(value.flags & ts.TypeFlags.Object)) return true;
|
|
2058
|
+
const object = value;
|
|
2059
|
+
const target = object.target ?? object;
|
|
2060
|
+
if ((object.objectFlags | target.objectFlags) & ts.ObjectFlags.Class) return true;
|
|
2061
|
+
if (value.symbol?.declarations?.some(hasThis)) return true;
|
|
2062
|
+
if (value.symbol?.declarations?.some((d) => ts.isInterfaceDeclaration(d) && d.heritageClauses?.some((clause) => clause.types.some((base2) => checker.getTypeAtLocation(base2).flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown | ts.TypeFlags.TypeParameter))))) return true;
|
|
2063
|
+
return !!(object.objectFlags & ts.ObjectFlags.Interface && checker.getBaseTypes(object)?.some(specialBase));
|
|
2064
|
+
};
|
|
2065
|
+
if (specialBase(type)) return false;
|
|
2066
|
+
const properties = type.getProperties();
|
|
2067
|
+
if (properties.length === 0) return false;
|
|
2068
|
+
return properties.every((property) => !property.name.startsWith("__@") && property.declarations?.every((d) => !hasThis(d) && !ts.isMethodSignature(d) && !ts.isMethodDeclaration(d) && !ts.isGetAccessorDeclaration(d) && !ts.isSetAccessorDeclaration(d) && !(ts.getCombinedModifierFlags(d) & (ts.ModifierFlags.Private | ts.ModifierFlags.Protected)) && !("name" in d && d.name && ts.isPrivateIdentifier(d.name))));
|
|
2069
|
+
};
|
|
2070
|
+
for (const file of needsDisplay) {
|
|
2071
|
+
const source = program.getSourceFile(file);
|
|
2072
|
+
const moduleSymbol = source && checker.getSymbolAtLocation(source);
|
|
2073
|
+
if (!source || !moduleSymbol) continue;
|
|
2074
|
+
const original = paths.get(file);
|
|
2075
|
+
const identifiers = /* @__PURE__ */ new Set();
|
|
2076
|
+
const collect = (node) => {
|
|
2077
|
+
if (ts.isIdentifier(node)) identifiers.add(node.text);
|
|
2078
|
+
ts.forEachChild(node, collect);
|
|
2079
|
+
};
|
|
2080
|
+
collect(source);
|
|
2081
|
+
const unique = (stem) => {
|
|
2082
|
+
let name = stem;
|
|
2083
|
+
for (let n = 2; identifiers.has(name); n++) name = `${stem}${n}`;
|
|
2084
|
+
identifiers.add(name);
|
|
2085
|
+
return name;
|
|
2086
|
+
};
|
|
2087
|
+
const views = [];
|
|
2088
|
+
for (const exported of checker.getExportsOfModule(moduleSymbol)) {
|
|
2089
|
+
const name = exported.name;
|
|
2090
|
+
if (name === "default" || !/^[$_\p{ID_Start}][$_\p{ID_Continue}]*$/u.test(name)) continue;
|
|
2091
|
+
const target = exported.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(exported) : exported;
|
|
2092
|
+
if (!plainData(target)) continue;
|
|
2093
|
+
let expression;
|
|
2094
|
+
for (const statement of source.statements) {
|
|
2095
|
+
if ((ts.isInterfaceDeclaration(statement) || ts.isTypeAliasDeclaration(statement)) && statement.name.text === name && checker.getSymbolAtLocation(statement.name) === target) {
|
|
2096
|
+
expression = name;
|
|
2097
|
+
break;
|
|
2098
|
+
}
|
|
2099
|
+
if (!ts.isExportDeclaration(statement)) continue;
|
|
2100
|
+
if (statement.attributes || statement.assertClause) continue;
|
|
2101
|
+
if (statement.exportClause && ts.isNamedExports(statement.exportClause)) {
|
|
2102
|
+
const member = statement.exportClause.elements.find((e) => e.name.text === name);
|
|
2103
|
+
if (member) {
|
|
2104
|
+
const local = member.propertyName ?? member.name;
|
|
2105
|
+
if (!ts.isIdentifier(local)) break;
|
|
2106
|
+
expression = statement.moduleSpecifier ? `import(${statement.moduleSpecifier.getText(source)}).${local.text}` : local.text;
|
|
2107
|
+
break;
|
|
2108
|
+
}
|
|
2109
|
+
} else if (!statement.exportClause && statement.moduleSpecifier) {
|
|
2110
|
+
const from = checker.getSymbolAtLocation(statement.moduleSpecifier);
|
|
2111
|
+
if (from && checker.getExportsOfModule(from).some((e) => e.name === name)) {
|
|
2112
|
+
expression = `import(${statement.moduleSpecifier.getText(source)}).${name}`;
|
|
2113
|
+
break;
|
|
2114
|
+
}
|
|
2115
|
+
}
|
|
2116
|
+
}
|
|
2117
|
+
if (!expression) continue;
|
|
2118
|
+
const docs = exported.getDocumentationComment(checker);
|
|
2119
|
+
const description = ts.displayPartsToString(docs.length ? docs : target.getDocumentationComment(checker));
|
|
2120
|
+
const tags = target.getJsDocTags(checker).map((tag) => `@${tag.name}${tag.text ? ` ${ts.displayPartsToString(tag.text)}` : ""}`);
|
|
2121
|
+
views.push({ name, expression, doc: [description, ...tags].filter(Boolean).join("\n").replace(/\*\//g, "* /") });
|
|
2122
|
+
}
|
|
2123
|
+
if (views.length === 0) continue;
|
|
2124
|
+
const names = new Set(views.map((view) => view.name));
|
|
2125
|
+
const edits = [];
|
|
2126
|
+
for (const statement of source.statements) {
|
|
2127
|
+
if (ts.isExportDeclaration(statement) && statement.exportClause && ts.isNamedExports(statement.exportClause)) {
|
|
2128
|
+
const remaining = statement.exportClause.elements.filter((e) => !names.has(e.name.text));
|
|
2129
|
+
if (remaining.length === statement.exportClause.elements.length) continue;
|
|
2130
|
+
edits.push(remaining.length ? {
|
|
2131
|
+
start: statement.exportClause.getStart(source),
|
|
2132
|
+
end: statement.exportClause.end,
|
|
2133
|
+
text: `{ ${remaining.map((e) => e.getText(source)).join(", ")} }`
|
|
2134
|
+
} : { start: statement.getStart(source), end: statement.end, text: "" });
|
|
2135
|
+
} else if ((ts.isInterfaceDeclaration(statement) || ts.isTypeAliasDeclaration(statement)) && names.has(statement.name.text) && !statement.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword)) {
|
|
2136
|
+
const modifier = statement.modifiers?.find((m) => m.kind === ts.SyntaxKind.ExportKeyword);
|
|
2137
|
+
if (modifier) edits.push({ start: modifier.getStart(source), end: modifier.end, text: "" });
|
|
2138
|
+
}
|
|
2139
|
+
}
|
|
2140
|
+
let output = original;
|
|
2141
|
+
for (const edit of edits.sort((a, b) => b.start - a.start)) output = output.slice(0, edit.start) + edit.text + output.slice(edit.end);
|
|
2142
|
+
const display = unique("__FgDataView");
|
|
2143
|
+
output += `
|
|
2144
|
+
// \u81EA\u52A8\u751F\u6210\u7684\u5B57\u6BB5\u89C6\u56FE\uFF1B\u539F\u5408\u540C\u53CA\u7EC4\u4EF6\u7B7E\u540D\u4FDD\u7559\uFF0C\u6D88\u8D39\u65B9\u65E0\u9700\u81EA\u884C\u6620\u5C04\u3002
|
|
2145
|
+
type ${display}<T> = { [K in keyof T]: T[K] } & {};
|
|
2146
|
+
`;
|
|
2147
|
+
for (const view of views.sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0)) {
|
|
2148
|
+
const alias = unique(`__FgData_${view.name}`);
|
|
2149
|
+
if (view.doc) output += `/**
|
|
2150
|
+
${view.doc.split("\n").map((line) => ` * ${line}`).join("\n")}
|
|
2151
|
+
*/
|
|
2152
|
+
`;
|
|
2153
|
+
output += `type ${alias} = ${display}<${view.expression}>;
|
|
2154
|
+
export type { ${alias} as ${view.name} };
|
|
2155
|
+
`;
|
|
2156
|
+
}
|
|
2157
|
+
files.set(path4.relative(base, file).split(path4.sep).join("/"), output);
|
|
2158
|
+
}
|
|
2159
|
+
}
|
|
2160
|
+
|
|
2009
2161
|
// src/dts-generate.ts
|
|
2010
2162
|
function resolveFromRoot(root, pkg) {
|
|
2011
|
-
const req = createRequire3(
|
|
2163
|
+
const req = createRequire3(path5.join(root, "package.json"));
|
|
2012
2164
|
let resolved = null;
|
|
2013
2165
|
for (const spec of [`${pkg}/package.json`, pkg]) {
|
|
2014
2166
|
try {
|
|
@@ -2018,18 +2170,18 @@ function resolveFromRoot(root, pkg) {
|
|
|
2018
2170
|
}
|
|
2019
2171
|
}
|
|
2020
2172
|
if (!resolved) return null;
|
|
2021
|
-
let dir =
|
|
2022
|
-
for (let i = 0; i < 5 && !fs3.existsSync(
|
|
2023
|
-
const parent =
|
|
2173
|
+
let dir = path5.dirname(resolved);
|
|
2174
|
+
for (let i = 0; i < 5 && !fs3.existsSync(path5.join(dir, "package.json")); i++) {
|
|
2175
|
+
const parent = path5.dirname(dir);
|
|
2024
2176
|
if (parent === dir) return null;
|
|
2025
2177
|
dir = parent;
|
|
2026
2178
|
}
|
|
2027
|
-
return fs3.existsSync(
|
|
2179
|
+
return fs3.existsSync(path5.join(dir, "package.json")) ? dir : null;
|
|
2028
2180
|
}
|
|
2029
2181
|
function installHint(root, pkg) {
|
|
2030
2182
|
const pkgManager = (() => {
|
|
2031
|
-
if (fs3.existsSync(
|
|
2032
|
-
if (fs3.existsSync(
|
|
2183
|
+
if (fs3.existsSync(path5.join(root, "pnpm-lock.yaml"))) return "pnpm";
|
|
2184
|
+
if (fs3.existsSync(path5.join(root, "yarn.lock"))) return "yarn";
|
|
2033
2185
|
return "npm";
|
|
2034
2186
|
})();
|
|
2035
2187
|
const devFlag = pkgManager === "pnpm" ? "-D" : "--save-dev";
|
|
@@ -2082,7 +2234,7 @@ function computeStaticClosure(ts, entryFiles, resolver, root) {
|
|
|
2082
2234
|
continue;
|
|
2083
2235
|
}
|
|
2084
2236
|
if (file.endsWith(".vue")) {
|
|
2085
|
-
const req = createRequire3(
|
|
2237
|
+
const req = createRequire3(path5.join(root, "package.json"));
|
|
2086
2238
|
const { parse: parse2 } = req("vue/compiler-sfc");
|
|
2087
2239
|
const { descriptor } = parse2(text);
|
|
2088
2240
|
text = [descriptor.script?.content, descriptor.scriptSetup?.content].filter(Boolean).join("\n");
|
|
@@ -2104,16 +2256,16 @@ import ${JSON.stringify(descriptor.script.src)}`;
|
|
|
2104
2256
|
const r = resolver(spec, file);
|
|
2105
2257
|
let resolved = r && !r.fromNodeModules ? r.resolved : null;
|
|
2106
2258
|
if (!resolved) {
|
|
2107
|
-
const base =
|
|
2108
|
-
for (const c of [base, `${base}.vue`, `${base}.ts`, `${base}.tsx`,
|
|
2259
|
+
const base = path5.resolve(path5.dirname(file), spec);
|
|
2260
|
+
for (const c of [base, `${base}.vue`, `${base}.ts`, `${base}.tsx`, path5.join(base, "index.ts")]) {
|
|
2109
2261
|
if (fs3.existsSync(c)) {
|
|
2110
2262
|
resolved = c;
|
|
2111
2263
|
break;
|
|
2112
2264
|
}
|
|
2113
2265
|
}
|
|
2114
2266
|
}
|
|
2115
|
-
if (resolved && !resolved.includes(`${
|
|
2116
|
-
queue.push(
|
|
2267
|
+
if (resolved && !resolved.includes(`${path5.sep}node_modules${path5.sep}`)) {
|
|
2268
|
+
queue.push(path5.resolve(resolved));
|
|
2117
2269
|
}
|
|
2118
2270
|
}
|
|
2119
2271
|
}
|
|
@@ -2124,7 +2276,7 @@ function parseErrorFiles(stdout, root) {
|
|
|
2124
2276
|
const out = /* @__PURE__ */ new Set();
|
|
2125
2277
|
for (const line of stdout.split("\n")) {
|
|
2126
2278
|
const m = line.match(/^([^)(]+)\((\d+),(\d+)\): error TS/);
|
|
2127
|
-
if (m) out.add(
|
|
2279
|
+
if (m) out.add(path5.resolve(root, m[1].trim()));
|
|
2128
2280
|
}
|
|
2129
2281
|
return out;
|
|
2130
2282
|
}
|
|
@@ -2133,13 +2285,13 @@ function resolveTypesEntries(root, baseCo, diagnostics) {
|
|
|
2133
2285
|
if (raw === void 0) return [];
|
|
2134
2286
|
baseCo.types = [];
|
|
2135
2287
|
if (!Array.isArray(raw)) return [];
|
|
2136
|
-
const req = createRequire3(
|
|
2288
|
+
const req = createRequire3(path5.join(root, "package.json"));
|
|
2137
2289
|
const out = [];
|
|
2138
2290
|
for (const entry of raw) {
|
|
2139
2291
|
if (typeof entry !== "string" || entry.length === 0) continue;
|
|
2140
|
-
const direct = [
|
|
2292
|
+
const direct = [path5.resolve(root, `${entry}.d.ts`), path5.resolve(root, entry, "index.d.ts"), path5.resolve(root, "node_modules", `${entry}.d.ts`), path5.resolve(root, "node_modules", entry, "index.d.ts"), path5.resolve(root, "node_modules/@types", entry, "index.d.ts")];
|
|
2141
2293
|
let hit = direct.find((c) => fs3.existsSync(c));
|
|
2142
|
-
if (!hit && !entry.startsWith(".") && !
|
|
2294
|
+
if (!hit && !entry.startsWith(".") && !path5.isAbsolute(entry)) {
|
|
2143
2295
|
try {
|
|
2144
2296
|
const r = req.resolve(entry);
|
|
2145
2297
|
for (const c of [r.replace(/\.js$/, ".d.ts"), `${r}.d.ts`, r]) {
|
|
@@ -2167,27 +2319,27 @@ function hasVueFilesUnderSources(root) {
|
|
|
2167
2319
|
}
|
|
2168
2320
|
for (const e of entries) {
|
|
2169
2321
|
if (e.name === "node_modules" || e.name === ".git" || e.name === "dist") continue;
|
|
2170
|
-
const p =
|
|
2322
|
+
const p = path5.join(dir, e.name);
|
|
2171
2323
|
budget.left -= 1;
|
|
2172
2324
|
if (e.isFile() && e.name.endsWith(".vue")) return true;
|
|
2173
2325
|
if (e.isDirectory() && scan(p, budget)) return true;
|
|
2174
2326
|
}
|
|
2175
2327
|
return false;
|
|
2176
2328
|
};
|
|
2177
|
-
const srcDir =
|
|
2329
|
+
const srcDir = path5.join(root, "src");
|
|
2178
2330
|
return scan(fs3.existsSync(srcDir) ? srcDir : root, { left: 2e3 });
|
|
2179
2331
|
}
|
|
2180
2332
|
function commonDirOf(files) {
|
|
2181
2333
|
if (files.length === 0) return "";
|
|
2182
|
-
let dir =
|
|
2334
|
+
let dir = path5.dirname(files[0]);
|
|
2183
2335
|
for (const f of files) {
|
|
2184
|
-
const rel =
|
|
2336
|
+
const rel = path5.relative(dir, f);
|
|
2185
2337
|
if (rel.startsWith("..")) {
|
|
2186
|
-
const parts =
|
|
2187
|
-
const cur = dir.split(
|
|
2338
|
+
const parts = path5.dirname(f).split(path5.sep);
|
|
2339
|
+
const cur = dir.split(path5.sep);
|
|
2188
2340
|
let i = 0;
|
|
2189
2341
|
while (i < parts.length && i < cur.length && parts[i] === cur[i]) i++;
|
|
2190
|
-
dir = parts.slice(0, i).join(
|
|
2342
|
+
dir = parts.slice(0, i).join(path5.sep) || path5.sep;
|
|
2191
2343
|
}
|
|
2192
2344
|
}
|
|
2193
2345
|
return dir;
|
|
@@ -2228,12 +2380,12 @@ function loadTsContext(root, ts, diagnostics) {
|
|
|
2228
2380
|
diagnostics.push(`tsconfig \u89E3\u6790\u5931\u8D25\uFF08${tsconfigFile}\uFF09\uFF1A${ts.flattenDiagnosticMessageText(raw.error.messageText, " ")}`);
|
|
2229
2381
|
return null;
|
|
2230
2382
|
}
|
|
2231
|
-
const parsed = ts.parseJsonConfigFileContent(raw.config, ts.sys,
|
|
2383
|
+
const parsed = ts.parseJsonConfigFileContent(raw.config, ts.sys, path5.dirname(tsconfigFile), void 0, void 0, void 0, [
|
|
2232
2384
|
{ extension: ".vue", isMixedContent: true, scriptKind: ts.ScriptKind.Deferred }
|
|
2233
2385
|
]);
|
|
2234
2386
|
const co = { ...parsed.options };
|
|
2235
|
-
if (typeof co.baseUrl === "string" && !
|
|
2236
|
-
co.baseUrl =
|
|
2387
|
+
if (typeof co.baseUrl === "string" && !path5.isAbsolute(co.baseUrl)) {
|
|
2388
|
+
co.baseUrl = path5.resolve(path5.dirname(tsconfigFile), co.baseUrl);
|
|
2237
2389
|
}
|
|
2238
2390
|
if (parsed.errors.length > 0) {
|
|
2239
2391
|
const fatal = parsed.errors.filter((e) => e.category === ts.DiagnosticCategory.Error);
|
|
@@ -2249,7 +2401,7 @@ function loadTsContext(root, ts, diagnostics) {
|
|
|
2249
2401
|
compilerOptions: co,
|
|
2250
2402
|
rawOptions: raw.config.compilerOptions ?? {},
|
|
2251
2403
|
projectFiles: parsed.fileNames.filter((f) => !f.endsWith(".d.ts")),
|
|
2252
|
-
ambientInputs: parsed.fileNames.filter((f) => f.endsWith(".d.ts") && !f.includes(`${
|
|
2404
|
+
ambientInputs: parsed.fileNames.filter((f) => f.endsWith(".d.ts") && !f.includes(`${path5.sep}node_modules${path5.sep}`)),
|
|
2253
2405
|
tsconfigFile
|
|
2254
2406
|
};
|
|
2255
2407
|
}
|
|
@@ -2260,7 +2412,7 @@ function makeResolver(ts, co) {
|
|
|
2260
2412
|
let resolved = r.resolvedModule?.resolvedFileName;
|
|
2261
2413
|
if (resolved?.endsWith(".vue.ts") && ts.sys.fileExists(resolved.slice(0, -3))) resolved = resolved.slice(0, -3);
|
|
2262
2414
|
if (!resolved) return null;
|
|
2263
|
-
return { resolved, fromNodeModules: resolved.includes(`${
|
|
2415
|
+
return { resolved, fromNodeModules: resolved.includes(`${path5.sep}node_modules${path5.sep}`) };
|
|
2264
2416
|
};
|
|
2265
2417
|
}
|
|
2266
2418
|
async function generateTypesBundle(input) {
|
|
@@ -2273,7 +2425,7 @@ async function generateTypesBundle(input) {
|
|
|
2273
2425
|
if (!tsPkgDir) {
|
|
2274
2426
|
return { ok: false, diagnostics: [`\u63D0\u4F9B\u65B9\u5DE5\u7A0B\u672A\u5B89\u88C5 typescript\uFF08\u58F0\u660E\u751F\u6210\u5FC5\u9700\uFF09\u3002${installHint(root, "typescript")}`] };
|
|
2275
2427
|
}
|
|
2276
|
-
const tsReq = createRequire3(
|
|
2428
|
+
const tsReq = createRequire3(path5.join(tsPkgDir, "package.json"));
|
|
2277
2429
|
const ts = tsReq("typescript");
|
|
2278
2430
|
const ctx = loadTsContext(root, ts, diagnostics);
|
|
2279
2431
|
if (!ctx) return { ok: false, diagnostics };
|
|
@@ -2281,9 +2433,9 @@ async function generateTypesBundle(input) {
|
|
|
2281
2433
|
const entryMap = /* @__PURE__ */ new Map();
|
|
2282
2434
|
for (const expose of exposes) {
|
|
2283
2435
|
const raw = expose.import.replace(/^\.?\//, "");
|
|
2284
|
-
let abs =
|
|
2436
|
+
let abs = path5.resolve(root, raw);
|
|
2285
2437
|
if (!fs3.existsSync(abs)) {
|
|
2286
|
-
const viaResolver = resolver(expose.import,
|
|
2438
|
+
const viaResolver = resolver(expose.import, path5.join(root, "package.json"));
|
|
2287
2439
|
if (viaResolver && !viaResolver.fromNodeModules) abs = viaResolver.resolved;
|
|
2288
2440
|
}
|
|
2289
2441
|
abs = abs.replace(/\.js$/, ".ts");
|
|
@@ -2315,17 +2467,17 @@ async function generateTypesBundle(input) {
|
|
|
2315
2467
|
};
|
|
2316
2468
|
}
|
|
2317
2469
|
tool = "vue-tsc";
|
|
2318
|
-
const vueTscPkg = JSON.parse(fs3.readFileSync(
|
|
2470
|
+
const vueTscPkg = JSON.parse(fs3.readFileSync(path5.join(vueTscDir, "package.json"), "utf8"));
|
|
2319
2471
|
const binRel = vueTscPkg.bin?.["vue-tsc"] ?? vueTscPkg.bin?.["vue-tsc.js"] ?? "bin/vue-tsc.js";
|
|
2320
|
-
const binPath =
|
|
2472
|
+
const binPath = path5.resolve(vueTscDir, binRel);
|
|
2321
2473
|
const scopedVueProgram = /^1\./.test(vueTscPkg.version);
|
|
2322
2474
|
if (!fs3.existsSync(binPath)) {
|
|
2323
2475
|
return { ok: false, diagnostics: [`vue-tsc \u5165\u53E3\u4E0D\u5B58\u5728\uFF08${binPath}\uFF09\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5 vue-tsc\u3002`] };
|
|
2324
2476
|
}
|
|
2325
2477
|
const cacheDir = input.incrementalDir;
|
|
2326
2478
|
if (cacheDir) fs3.mkdirSync(cacheDir, { recursive: true });
|
|
2327
|
-
const tmpCfg =
|
|
2328
|
-
const outDir = cacheDir ?
|
|
2479
|
+
const tmpCfg = path5.join(root, `.fulgurjs-types-tsconfig-${cacheDir ? path5.basename(cacheDir) : `${process.pid}-${crypto.randomUUID()}`}.json`);
|
|
2480
|
+
const outDir = cacheDir ? path5.join(cacheDir, "emit") : fs3.mkdtempSync(path5.join(root, "node_modules", ".fulgurjs-types-emit-"));
|
|
2329
2481
|
const clearOutput = () => {
|
|
2330
2482
|
if (!cacheDir) fs3.rmSync(outDir, { recursive: true, force: true });
|
|
2331
2483
|
};
|
|
@@ -2352,14 +2504,14 @@ async function generateTypesBundle(input) {
|
|
|
2352
2504
|
sourceMap: false,
|
|
2353
2505
|
outDir,
|
|
2354
2506
|
rootDir,
|
|
2355
|
-
...cacheDir && !scopedVueProgram ? { incremental: true, tsBuildInfoFile:
|
|
2507
|
+
...cacheDir && !scopedVueProgram ? { incremental: true, tsBuildInfoFile: path5.join(cacheDir, "state.tsbuildinfo") } : {}
|
|
2356
2508
|
},
|
|
2357
2509
|
// 显式 types 是声明程序的根文件,不能再受工程 exclude: ["node_modules"] 过滤。
|
|
2358
2510
|
// include 仍受继承的 exclude 约束;files 保留 vite/client 等已解析的全局声明。
|
|
2359
|
-
files: resolvedTypeFiles.map((f) =>
|
|
2511
|
+
files: resolvedTypeFiles.map((f) => path5.relative(root, f)),
|
|
2360
2512
|
include: [
|
|
2361
|
-
...entryFiles.map((f) =>
|
|
2362
|
-
...ctx.ambientInputs.map((f) =>
|
|
2513
|
+
...entryFiles.map((f) => path5.relative(root, f)),
|
|
2514
|
+
...ctx.ambientInputs.map((f) => path5.relative(root, f))
|
|
2363
2515
|
]
|
|
2364
2516
|
}));
|
|
2365
2517
|
if (process.env.FG_DUMP_TSCFG) fs3.writeFileSync(process.env.FG_DUMP_TSCFG, fs3.readFileSync(tmpCfg, "utf8"));
|
|
@@ -2392,7 +2544,7 @@ async function generateTypesBundle(input) {
|
|
|
2392
2544
|
signal?.addEventListener("abort", abort, { once: true });
|
|
2393
2545
|
if (signal?.aborted) abort();
|
|
2394
2546
|
});
|
|
2395
|
-
const heapMarker = cacheDir ?
|
|
2547
|
+
const heapMarker = cacheDir ? path5.join(cacheDir, "raised-heap") : void 0;
|
|
2396
2548
|
const raisedArgs = [`--max-old-space-size=${process.env.FG_DTS_MAX_OLD_SPACE ?? "8192"}`];
|
|
2397
2549
|
const initialArgs = heapMarker && fs3.existsSync(heapMarker) ? raisedArgs : [];
|
|
2398
2550
|
let { err, stdout, stderr } = await attempt(initialArgs);
|
|
@@ -2469,7 +2621,7 @@ ${tail}`);
|
|
|
2469
2621
|
collectEmitted(ts, outDir, rootDir, emitted, closure);
|
|
2470
2622
|
clearOutput();
|
|
2471
2623
|
} else {
|
|
2472
|
-
const outDir = fs3.mkdtempSync(
|
|
2624
|
+
const outDir = fs3.mkdtempSync(path5.join(root, "node_modules", ".fulgurjs-types-emit-"));
|
|
2473
2625
|
const program = ts.createProgram([...entryFiles, ...ctx.ambientInputs, ...resolveTypesEntries(root, ctx.rawOptions, [])], {
|
|
2474
2626
|
...ctx.compilerOptions,
|
|
2475
2627
|
noEmit: false,
|
|
@@ -2487,13 +2639,13 @@ ${tail}`);
|
|
|
2487
2639
|
...program.getOptionsDiagnostics(),
|
|
2488
2640
|
...program.getSemanticDiagnostics(),
|
|
2489
2641
|
...program.getDeclarationDiagnostics()
|
|
2490
|
-
].filter((d) => d.category === ts.DiagnosticCategory.Error).filter((d) => !d.file || closure.has(
|
|
2642
|
+
].filter((d) => d.category === ts.DiagnosticCategory.Error).filter((d) => !d.file || closure.has(path5.resolve(d.file.fileName)));
|
|
2491
2643
|
if (errs.length > 0) {
|
|
2492
2644
|
fs3.rmSync(outDir, { recursive: true, force: true });
|
|
2493
2645
|
diagnostics.push(
|
|
2494
2646
|
`\u58F0\u660E\u751F\u6210\u5931\u8D25\uFF1A\u66B4\u9732\u95ED\u5305\u5185\u5B58\u5728 ${errs.length} \u4E2A\u7F16\u8BD1\u9519\u8BEF\u2014\u2014\u7C7B\u578B\u8D44\u6E90\u672A\u4EA7\u51FA\uFF08\u4FEE\u590D\u540E\u91CD\u65B0\u6784\u5EFA/\u91CD\u542F dev\uFF09\u3002\u524D\u82E5\u5E72\u6761\uFF1A`,
|
|
2495
2647
|
...errs.slice(0, 20).map((d) => {
|
|
2496
|
-
const f = d.file ?
|
|
2648
|
+
const f = d.file ? path5.relative(root, d.file.fileName) : "?";
|
|
2497
2649
|
const pos = d.file ? d.file.getLineAndCharacterOfPosition(d.start ?? 0) : { line: 0 };
|
|
2498
2650
|
return ` ${f}:${pos.line + 1} TS${d.code}: ${ts.flattenDiagnosticMessageText(d.messageText, " ")}`;
|
|
2499
2651
|
})
|
|
@@ -2501,11 +2653,11 @@ ${tail}`);
|
|
|
2501
2653
|
return { ok: false, diagnostics };
|
|
2502
2654
|
}
|
|
2503
2655
|
for (const source of program.getSourceFiles()) {
|
|
2504
|
-
if (source.isDeclarationFile || source.fileName.endsWith(".json") || !closure.has(
|
|
2656
|
+
if (source.isDeclarationFile || source.fileName.endsWith(".json") || !closure.has(path5.resolve(source.fileName))) continue;
|
|
2505
2657
|
const emitResult = program.emit(source, void 0, void 0, true);
|
|
2506
2658
|
if (emitResult.emitSkipped) {
|
|
2507
2659
|
fs3.rmSync(outDir, { recursive: true, force: true });
|
|
2508
|
-
return { ok: false, diagnostics: [`TypeScript \u58F0\u660E emit \u5931\u8D25\uFF08emitSkipped\uFF09\uFF1A${
|
|
2660
|
+
return { ok: false, diagnostics: [`TypeScript \u58F0\u660E emit \u5931\u8D25\uFF08emitSkipped\uFF09\uFF1A${path5.relative(root, source.fileName)}\u3002\u8BF7\u68C0\u67E5 tsconfig \u7F16\u8BD1\u9009\u9879\u3002`] };
|
|
2509
2661
|
}
|
|
2510
2662
|
}
|
|
2511
2663
|
collectEmitted(ts, outDir, rootDir, emitted, closure);
|
|
@@ -2551,7 +2703,7 @@ export default value;
|
|
|
2551
2703
|
const externals = /* @__PURE__ */ new Set();
|
|
2552
2704
|
const srcToRel = /* @__PURE__ */ new Map();
|
|
2553
2705
|
for (const srcAbs of emitted.keys()) {
|
|
2554
|
-
const rel =
|
|
2706
|
+
const rel = path5.relative(rootDir, srcAbs).split(path5.sep).join("/");
|
|
2555
2707
|
const declRel = rel.endsWith(".d.ts") ? `files/${rel}` : rel.endsWith(".vue") ? `files/${rel}.d.ts` : `files/${rel.replace(/\.(mts|cts|ts|tsx|jsx|js)$/, "")}.d.ts`;
|
|
2556
2708
|
srcToRel.set(srcAbs, declRel);
|
|
2557
2709
|
}
|
|
@@ -2563,7 +2715,7 @@ export default value;
|
|
|
2563
2715
|
if (reachable.has(srcAbs)) continue;
|
|
2564
2716
|
const text = emitted.get(srcAbs);
|
|
2565
2717
|
if (text === void 0) {
|
|
2566
|
-
diagnostics.push(`\u516C\u5F00\u58F0\u660E\u4F9D\u8D56\u672A\u4EA7\u51FA\uFF1A${
|
|
2718
|
+
diagnostics.push(`\u516C\u5F00\u58F0\u660E\u4F9D\u8D56\u672A\u4EA7\u51FA\uFF1A${path5.relative(root, srcAbs)}\u3002`);
|
|
2567
2719
|
return { ok: false, diagnostics };
|
|
2568
2720
|
}
|
|
2569
2721
|
const rewritten = rewriteSpecifiers(
|
|
@@ -2588,11 +2740,10 @@ export default value;
|
|
|
2588
2740
|
for (const [srcAbs, text] of reachable) {
|
|
2589
2741
|
const rel = srcToRel.get(srcAbs);
|
|
2590
2742
|
if (text.includes(root)) {
|
|
2591
|
-
diagnostics.push(`\u58F0\u660E\u6587\u4EF6\u5305\u542B\u672C\u673A\u7EDD\u5BF9\u8DEF\u5F84\uFF08${
|
|
2743
|
+
diagnostics.push(`\u58F0\u660E\u6587\u4EF6\u5305\u542B\u672C\u673A\u7EDD\u5BF9\u8DEF\u5F84\uFF08${path5.relative(root, srcAbs)}\uFF09\uFF0C\u5DF2\u62D2\u7EDD\u4EA7\u51FA\u3002\u8BF7\u68C0\u67E5\u8BE5\u6587\u4EF6\u7684\u7C7B\u578B\u662F\u5426\u5F15\u7528\u4E86\u5B57\u9762\u8DEF\u5F84\u3002`);
|
|
2592
2744
|
leaked = true;
|
|
2593
2745
|
}
|
|
2594
2746
|
files.set(rel, text);
|
|
2595
|
-
filesDigest[rel] = crypto.createHash("sha256").update(text, "utf8").digest("hex");
|
|
2596
2747
|
}
|
|
2597
2748
|
if (leaked) return { ok: false, diagnostics };
|
|
2598
2749
|
const exposesMap = {};
|
|
@@ -2604,6 +2755,13 @@ export default value;
|
|
|
2604
2755
|
}
|
|
2605
2756
|
exposesMap[name] = { declaration: declRel };
|
|
2606
2757
|
}
|
|
2758
|
+
displayPublicDataTypes(ts, files, Object.values(exposesMap).map((entry) => entry.declaration), root, ctx.compilerOptions);
|
|
2759
|
+
for (const [rel, text] of files) {
|
|
2760
|
+
if (text.includes(root)) {
|
|
2761
|
+
return { ok: false, diagnostics: [...diagnostics, `\u58F0\u660E\u6587\u4EF6\u5305\u542B\u672C\u673A\u7EDD\u5BF9\u8DEF\u5F84\uFF08${rel}\uFF09\uFF0C\u5DF2\u62D2\u7EDD\u4EA7\u51FA\u3002`] };
|
|
2762
|
+
}
|
|
2763
|
+
filesDigest[rel] = crypto.createHash("sha256").update(text, "utf8").digest("hex");
|
|
2764
|
+
}
|
|
2607
2765
|
const index = {
|
|
2608
2766
|
schemaVersion: TYPES_SCHEMA_VERSION,
|
|
2609
2767
|
generator: "@fulgurjs/federation",
|
|
@@ -2620,18 +2778,18 @@ export default value;
|
|
|
2620
2778
|
}
|
|
2621
2779
|
function collectEmitted(ts, outDir, rootDir, out, closure) {
|
|
2622
2780
|
const walk = (dir) => fs3.readdirSync(dir, { withFileTypes: true }).flatMap((d) => {
|
|
2623
|
-
const p =
|
|
2781
|
+
const p = path5.join(dir, d.name);
|
|
2624
2782
|
return d.isDirectory() ? walk(p) : [p];
|
|
2625
2783
|
});
|
|
2626
2784
|
if (!fs3.existsSync(outDir)) return;
|
|
2627
2785
|
for (const file of walk(outDir)) {
|
|
2628
2786
|
if (!file.endsWith(".d.ts")) continue;
|
|
2629
|
-
const rel =
|
|
2787
|
+
const rel = path5.relative(outDir, file);
|
|
2630
2788
|
const srcRel = rel.endsWith(".vue.d.ts") ? rel.replace(/\.d\.ts$/, "") : rel.replace(/\.d\.ts$/, ".ts");
|
|
2631
|
-
let srcAbs =
|
|
2789
|
+
let srcAbs = path5.join(rootDir, srcRel);
|
|
2632
2790
|
if (!out.has(srcAbs) && !fs3.existsSync(srcAbs)) {
|
|
2633
2791
|
for (const ext of [".tsx", ".jsx", ".mts", ".cts", ".js"]) {
|
|
2634
|
-
const candidate =
|
|
2792
|
+
const candidate = path5.join(rootDir, rel.replace(/\.d\.ts$/, ext));
|
|
2635
2793
|
if (fs3.existsSync(candidate)) {
|
|
2636
2794
|
srcAbs = candidate;
|
|
2637
2795
|
break;
|
|
@@ -2649,7 +2807,7 @@ function rewriteSpecifiers(ts, text, srcAbs, srcToRel, resolver, externals, root
|
|
|
2649
2807
|
const fail = (spec) => {
|
|
2650
2808
|
failed = true;
|
|
2651
2809
|
diagnostics.push(
|
|
2652
|
-
`\u58F0\u660E\u4F9D\u8D56\u4E0D\u5B8C\u6574\uFF1A${
|
|
2810
|
+
`\u58F0\u660E\u4F9D\u8D56\u4E0D\u5B8C\u6574\uFF1A${path5.relative(root, srcAbs)} \u7684\u5BFC\u5165 "${spec}" \u65E0\u6CD5\u89E3\u6790\u5230\u5DE5\u7A0B\u5185\u6587\u4EF6\u3002\u8BF7\u68C0\u67E5 tsconfig paths/include \u662F\u5426\u8986\u76D6\u8BE5\u4F9D\u8D56\u3002`
|
|
2653
2811
|
);
|
|
2654
2812
|
return null;
|
|
2655
2813
|
};
|
|
@@ -2680,9 +2838,9 @@ function rewriteSpecifiers(ts, text, srcAbs, srcToRel, resolver, externals, root
|
|
|
2680
2838
|
return target;
|
|
2681
2839
|
};
|
|
2682
2840
|
const rewriteTo = (targetRel) => {
|
|
2683
|
-
const fromDir =
|
|
2841
|
+
const fromDir = path5.posix.dirname(declRel);
|
|
2684
2842
|
const toNoExt = targetRel.replace(/\.d\.ts$/, "");
|
|
2685
|
-
let rel =
|
|
2843
|
+
let rel = path5.posix.relative(fromDir, toNoExt);
|
|
2686
2844
|
if (!rel.startsWith(".")) rel = `./${rel}`;
|
|
2687
2845
|
return rel;
|
|
2688
2846
|
};
|
|
@@ -2768,12 +2926,12 @@ function rewriteSpecifiers(ts, text, srcAbs, srcToRel, resolver, externals, root
|
|
|
2768
2926
|
|
|
2769
2927
|
// src/dts-serve.ts
|
|
2770
2928
|
function isTypesInputChange(root, id, outputDir) {
|
|
2771
|
-
const relative =
|
|
2772
|
-
if (relative === ".." || relative.startsWith(`..${
|
|
2773
|
-
if (relative.split(
|
|
2774
|
-
if (
|
|
2775
|
-
const outputRelative =
|
|
2776
|
-
if (!(outputRelative.startsWith(`..${
|
|
2929
|
+
const relative = path6.relative(root, id);
|
|
2930
|
+
if (relative === ".." || relative.startsWith(`..${path6.sep}`) || path6.isAbsolute(relative)) return false;
|
|
2931
|
+
if (relative.split(path6.sep).some((part) => part === "node_modules" || part === ".vite")) return false;
|
|
2932
|
+
if (path6.basename(id).startsWith(".fulgurjs-types-tsconfig-")) return false;
|
|
2933
|
+
const outputRelative = path6.relative(outputDir, id);
|
|
2934
|
+
if (!(outputRelative.startsWith(`..${path6.sep}`) || path6.isAbsolute(outputRelative))) return false;
|
|
2777
2935
|
return /\.(?:[cm]?[jt]sx?|vue|json)$/i.test(id);
|
|
2778
2936
|
}
|
|
2779
2937
|
function createDevTypesServer(options, hooks = {}) {
|
|
@@ -2797,9 +2955,9 @@ function createDevTypesServer(options, hooks = {}) {
|
|
|
2797
2955
|
let result;
|
|
2798
2956
|
try {
|
|
2799
2957
|
if (!incrementalDir) {
|
|
2800
|
-
const cacheRoot =
|
|
2958
|
+
const cacheRoot = path6.join(options.root, "node_modules");
|
|
2801
2959
|
fs4.mkdirSync(cacheRoot, { recursive: true });
|
|
2802
|
-
incrementalDir = fs4.mkdtempSync(
|
|
2960
|
+
incrementalDir = fs4.mkdtempSync(path6.join(cacheRoot, ".fulgurjs-types-cache-"));
|
|
2803
2961
|
}
|
|
2804
2962
|
result = await generateTypesBundle({
|
|
2805
2963
|
root: options.root,
|
|
@@ -2879,7 +3037,7 @@ ${key}`);
|
|
|
2879
3037
|
|
|
2880
3038
|
// src/dts-sync.ts
|
|
2881
3039
|
import fs6 from "fs";
|
|
2882
|
-
import
|
|
3040
|
+
import path8 from "path";
|
|
2883
3041
|
import crypto2 from "crypto";
|
|
2884
3042
|
|
|
2885
3043
|
// src/dts-ambient.ts
|
|
@@ -3040,7 +3198,7 @@ function stripAmbientModifiers(text) {
|
|
|
3040
3198
|
|
|
3041
3199
|
// src/dts-discovery.ts
|
|
3042
3200
|
import fs5 from "fs";
|
|
3043
|
-
import
|
|
3201
|
+
import path7 from "path";
|
|
3044
3202
|
function stripJsoncForConfig(text) {
|
|
3045
3203
|
let out = "";
|
|
3046
3204
|
let i = 0;
|
|
@@ -3104,24 +3262,24 @@ function effectiveCfg(cfg, depth = 0) {
|
|
|
3104
3262
|
const parentFile = resolveConfigFile(parent, cfg.file);
|
|
3105
3263
|
if (!parentFile) continue;
|
|
3106
3264
|
const parentCfg = effectiveCfg(readCfg(parentFile) ?? { file: parentFile }, depth + 1);
|
|
3107
|
-
const dirOf = (f, base) =>
|
|
3265
|
+
const dirOf = (f, base) => path7.resolve(path7.dirname(base), f);
|
|
3108
3266
|
if (parentCfg.include && !cfg.include) {
|
|
3109
|
-
merged.include = parentCfg.include.map((p) =>
|
|
3267
|
+
merged.include = parentCfg.include.map((p) => path7.relative(path7.dirname(cfg.file), dirOf(p, parentFile)) || ".");
|
|
3110
3268
|
}
|
|
3111
3269
|
if (parentCfg.files && !cfg.files) {
|
|
3112
|
-
merged.files = parentCfg.files.map((p) =>
|
|
3270
|
+
merged.files = parentCfg.files.map((p) => path7.relative(path7.dirname(cfg.file), dirOf(p, parentFile)));
|
|
3113
3271
|
}
|
|
3114
3272
|
if (parentCfg.exclude && !cfg.exclude) {
|
|
3115
|
-
merged.exclude = parentCfg.exclude.map((p) =>
|
|
3273
|
+
merged.exclude = parentCfg.exclude.map((p) => path7.relative(path7.dirname(cfg.file), dirOf(p, parentFile)));
|
|
3116
3274
|
}
|
|
3117
3275
|
}
|
|
3118
3276
|
return merged;
|
|
3119
3277
|
}
|
|
3120
3278
|
function resolveConfigFile(value, declaringFile) {
|
|
3121
|
-
let candidate =
|
|
3279
|
+
let candidate = path7.resolve(path7.dirname(declaringFile), value);
|
|
3122
3280
|
if (!candidate.endsWith(".json")) candidate += ".json";
|
|
3123
3281
|
if (fs5.existsSync(candidate)) return candidate;
|
|
3124
|
-
const asDir =
|
|
3282
|
+
const asDir = path7.join(candidate, "tsconfig.json");
|
|
3125
3283
|
return fs5.existsSync(asDir) ? asDir : null;
|
|
3126
3284
|
}
|
|
3127
3285
|
function patternCoversDir(pattern, target, cfgDir) {
|
|
@@ -3132,15 +3290,15 @@ function patternCoversDir(pattern, target, cfgDir) {
|
|
|
3132
3290
|
if (norm.includes("**")) base = norm.slice(0, norm.indexOf("**")).replace(/\/+$/, "");
|
|
3133
3291
|
else if (norm.endsWith("/*")) base = norm.slice(0, -2);
|
|
3134
3292
|
else base = norm.replace(/\/+$/, "");
|
|
3135
|
-
const abs = base === "" || base === "." ? cfgDir :
|
|
3136
|
-
return target === abs || target.startsWith(abs +
|
|
3293
|
+
const abs = base === "" || base === "." ? cfgDir : path7.resolve(cfgDir, base);
|
|
3294
|
+
return target === abs || target.startsWith(abs + path7.sep);
|
|
3137
3295
|
}
|
|
3138
3296
|
function checkTypesDiscovery(root, typesRoot) {
|
|
3139
|
-
const relTypes =
|
|
3297
|
+
const relTypes = path7.relative(root, typesRoot) || ".";
|
|
3140
3298
|
const configs = [];
|
|
3141
|
-
let primary =
|
|
3299
|
+
let primary = path7.join(root, "tsconfig.json");
|
|
3142
3300
|
if (!fs5.existsSync(primary)) {
|
|
3143
|
-
const candidates = fs5.existsSync(root) ? fs5.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f)).map((f) =>
|
|
3301
|
+
const candidates = fs5.existsSync(root) ? fs5.readdirSync(root).filter((f) => /^tsconfig[\w.-]*\.json$/i.test(f)).map((f) => path7.join(root, f)) : [];
|
|
3144
3302
|
if (candidates.length === 0) {
|
|
3145
3303
|
return {
|
|
3146
3304
|
covered: false,
|
|
@@ -3152,7 +3310,7 @@ function checkTypesDiscovery(root, typesRoot) {
|
|
|
3152
3310
|
if (candidates.length > 1) {
|
|
3153
3311
|
let covered = false;
|
|
3154
3312
|
for (const file of candidates) {
|
|
3155
|
-
configs.push(
|
|
3313
|
+
configs.push(path7.relative(root, file));
|
|
3156
3314
|
if (configCovers(file, typesRoot)) covered = true;
|
|
3157
3315
|
}
|
|
3158
3316
|
if (covered) return { covered: true, configs, fixHint: null };
|
|
@@ -3163,34 +3321,34 @@ function checkTypesDiscovery(root, typesRoot) {
|
|
|
3163
3321
|
};
|
|
3164
3322
|
}
|
|
3165
3323
|
}
|
|
3166
|
-
configs.push(
|
|
3324
|
+
configs.push(path7.relative(root, primary));
|
|
3167
3325
|
if (configCovers(primary, typesRoot)) return { covered: true, configs, fixHint: null };
|
|
3168
3326
|
return {
|
|
3169
3327
|
covered: false,
|
|
3170
3328
|
configs,
|
|
3171
|
-
fixHint: `TYP-006 \u7C7B\u578B\u76EE\u5F55 ${relTypes} \u672A\u88AB ${
|
|
3329
|
+
fixHint: `TYP-006 \u7C7B\u578B\u76EE\u5F55 ${relTypes} \u672A\u88AB ${path7.relative(root, primary)} \u7684 include/files \u8986\u76D6\uFF08exclude \u6216\u4E25\u683C files \u767D\u540D\u5355\u90FD\u4F1A\u8BA9\u751F\u6210\u58F0\u660E\u5BF9 IDE/tsc \u4E0D\u53EF\u89C1\uFF09\u3002\u6700\u5C0F\u4FEE\u6CD5\uFF1Ainclude \u52A0\u5165 "${relTypes}/**/*.d.ts"\uFF0C\u6216\u79FB\u9664\u5BF9\u5B83\u7684 exclude/files \u9650\u5236\u3002`
|
|
3172
3330
|
};
|
|
3173
3331
|
}
|
|
3174
3332
|
function configCovers(cfgFile, typesRoot) {
|
|
3175
3333
|
const raw = readCfg(cfgFile);
|
|
3176
3334
|
if (!raw) return false;
|
|
3177
3335
|
const cfg = effectiveCfg(raw);
|
|
3178
|
-
const cfgDir =
|
|
3336
|
+
const cfgDir = path7.dirname(cfgFile);
|
|
3179
3337
|
const isSolution = Array.isArray(cfg.files) && cfg.files.length === 0 && !cfg.include;
|
|
3180
3338
|
if (isSolution && cfg.references && cfg.references.length > 0) {
|
|
3181
3339
|
return cfg.references.some((ref) => {
|
|
3182
|
-
const refFile = resolveConfigFile(ref.startsWith(".") ||
|
|
3340
|
+
const refFile = resolveConfigFile(ref.startsWith(".") || path7.isAbsolute(ref) ? ref : `./${ref}`, cfgFile);
|
|
3183
3341
|
return refFile !== null && configCovers(refFile, typesRoot);
|
|
3184
3342
|
});
|
|
3185
3343
|
}
|
|
3186
3344
|
if (Array.isArray(cfg.files) && cfg.files.length > 0) {
|
|
3187
3345
|
return cfg.files.some((f) => {
|
|
3188
|
-
const abs =
|
|
3189
|
-
return abs === typesRoot || abs.startsWith(typesRoot +
|
|
3346
|
+
const abs = path7.resolve(cfgDir, f);
|
|
3347
|
+
return abs === typesRoot || abs.startsWith(typesRoot + path7.sep);
|
|
3190
3348
|
});
|
|
3191
3349
|
}
|
|
3192
3350
|
const includes = cfg.include;
|
|
3193
|
-
if (!includes) return typesRoot === cfgDir || typesRoot.startsWith(cfgDir +
|
|
3351
|
+
if (!includes) return typesRoot === cfgDir || typesRoot.startsWith(cfgDir + path7.sep);
|
|
3194
3352
|
const included = includes.some((p) => patternCoversDir(p, typesRoot, cfgDir));
|
|
3195
3353
|
if (!included) return false;
|
|
3196
3354
|
if (cfg.exclude && cfg.exclude.some((p) => patternCoversDir(p, typesRoot, cfgDir))) return false;
|
|
@@ -3234,7 +3392,7 @@ var METADATA_FILE = "metadata.json";
|
|
|
3234
3392
|
var AMBIENT_FORMAT = 2;
|
|
3235
3393
|
function readMetadata(dir) {
|
|
3236
3394
|
try {
|
|
3237
|
-
const raw = JSON.parse(fs6.readFileSync(
|
|
3395
|
+
const raw = JSON.parse(fs6.readFileSync(path8.join(dir, METADATA_FILE), "utf8"));
|
|
3238
3396
|
if (raw.generator !== "@fulgurjs/federation" || typeof raw.revision !== "string" || !Array.isArray(raw.files)) return null;
|
|
3239
3397
|
return raw;
|
|
3240
3398
|
} catch {
|
|
@@ -3244,9 +3402,9 @@ function readMetadata(dir) {
|
|
|
3244
3402
|
function cleanupOwnFiles(dir, meta) {
|
|
3245
3403
|
for (const f of meta.files) {
|
|
3246
3404
|
if (!isSafeBundlePath(f)) continue;
|
|
3247
|
-
fs6.rmSync(
|
|
3405
|
+
fs6.rmSync(path8.join(dir, f), { force: true });
|
|
3248
3406
|
}
|
|
3249
|
-
fs6.rmSync(
|
|
3407
|
+
fs6.rmSync(path8.join(dir, METADATA_FILE), { force: true });
|
|
3250
3408
|
try {
|
|
3251
3409
|
if (fs6.readdirSync(dir).length === 0) fs6.rmdirSync(dir);
|
|
3252
3410
|
} catch {
|
|
@@ -3256,7 +3414,7 @@ function sweepStaleStaging(typesRoot, alias) {
|
|
|
3256
3414
|
if (!fs6.existsSync(typesRoot)) return;
|
|
3257
3415
|
for (const name of fs6.readdirSync(typesRoot)) {
|
|
3258
3416
|
if (name.startsWith(`.fg-staging-${alias}-`) || name.startsWith(`.fg-trash-${alias}-`)) {
|
|
3259
|
-
fs6.rmSync(
|
|
3417
|
+
fs6.rmSync(path8.join(typesRoot, name), { recursive: true, force: true });
|
|
3260
3418
|
}
|
|
3261
3419
|
}
|
|
3262
3420
|
}
|
|
@@ -3265,7 +3423,7 @@ async function syncRemoteTypes(input) {
|
|
|
3265
3423
|
const fetchJsonFn = input.fetchJsonImpl ?? fetchJson;
|
|
3266
3424
|
const fetchTextFn = input.fetchTextImpl ?? fetchText;
|
|
3267
3425
|
const timeoutMs = input.timeoutMs ?? 15e3;
|
|
3268
|
-
const dir =
|
|
3426
|
+
const dir = path8.join(typesRoot, alias);
|
|
3269
3427
|
let manifest;
|
|
3270
3428
|
try {
|
|
3271
3429
|
const parsed = parseManifest(await fetchJsonFn(manifestUrl, timeoutMs));
|
|
@@ -3366,14 +3524,14 @@ async function syncRemoteTypes(input) {
|
|
|
3366
3524
|
}
|
|
3367
3525
|
const ambient = buildAmbientDeclarations({ alias, index, readFile: (rel) => indexRaw[rel] ?? "", source });
|
|
3368
3526
|
sweepStaleStaging(typesRoot, alias);
|
|
3369
|
-
const staging =
|
|
3527
|
+
const staging = path8.join(typesRoot, `.fg-staging-${alias}-${process.pid}-${Date.now()}`);
|
|
3370
3528
|
fs6.rmSync(staging, { recursive: true, force: true });
|
|
3371
3529
|
fs6.mkdirSync(staging, { recursive: true });
|
|
3372
3530
|
const written = [];
|
|
3373
3531
|
try {
|
|
3374
3532
|
for (const [name, content] of ambient.files) {
|
|
3375
|
-
const dest =
|
|
3376
|
-
fs6.mkdirSync(
|
|
3533
|
+
const dest = path8.join(staging, name);
|
|
3534
|
+
fs6.mkdirSync(path8.dirname(dest), { recursive: true });
|
|
3377
3535
|
fs6.writeFileSync(dest, content);
|
|
3378
3536
|
written.push(name);
|
|
3379
3537
|
}
|
|
@@ -3387,8 +3545,8 @@ async function syncRemoteTypes(input) {
|
|
|
3387
3545
|
externals: index.externals,
|
|
3388
3546
|
syncedAt: Date.now()
|
|
3389
3547
|
};
|
|
3390
|
-
fs6.writeFileSync(
|
|
3391
|
-
const trash =
|
|
3548
|
+
fs6.writeFileSync(path8.join(staging, METADATA_FILE), JSON.stringify(meta, null, 2));
|
|
3549
|
+
const trash = path8.join(typesRoot, `.fg-trash-${alias}-${Date.now()}`);
|
|
3392
3550
|
let swapped = false;
|
|
3393
3551
|
if (fs6.existsSync(dir)) {
|
|
3394
3552
|
fs6.renameSync(dir, trash);
|
|
@@ -3414,7 +3572,7 @@ async function syncRemoteTypes(input) {
|
|
|
3414
3572
|
};
|
|
3415
3573
|
}
|
|
3416
3574
|
function removeGeneratedTypes(typesRoot, alias) {
|
|
3417
|
-
const dir =
|
|
3575
|
+
const dir = path8.join(typesRoot, alias);
|
|
3418
3576
|
if (!fs6.existsSync(dir)) return false;
|
|
3419
3577
|
const meta = readMetadata(dir);
|
|
3420
3578
|
if (!meta) return false;
|
|
@@ -3446,6 +3604,7 @@ function startRemoteTypesSyncLoop(opts) {
|
|
|
3446
3604
|
typesRoot: opts.typesRoot,
|
|
3447
3605
|
source: devEntry
|
|
3448
3606
|
});
|
|
3607
|
+
if (result.status === "synced" && !controller.signal.aborted) opts.onSynced?.();
|
|
3449
3608
|
if (result.status === "synced" || result.status === "absent" && !announced.has(alias)) {
|
|
3450
3609
|
log(`[fulgurjs] \u7C7B\u578B\u540C\u6B65\uFF1A${result.message}`);
|
|
3451
3610
|
announced.add(alias);
|
|
@@ -3491,7 +3650,7 @@ function startRemoteTypesSyncLoop(opts) {
|
|
|
3491
3650
|
}
|
|
3492
3651
|
|
|
3493
3652
|
// src/diagnostics.ts
|
|
3494
|
-
import
|
|
3653
|
+
import path9 from "path";
|
|
3495
3654
|
function formatFulgurjsDiagnostic(input) {
|
|
3496
3655
|
const ctx = input.details ? `
|
|
3497
3656
|
\u4E0A\u4E0B\u6587\uFF1A${JSON.stringify(input.details)}` : "";
|
|
@@ -3535,8 +3694,8 @@ function debugLog(category, data) {
|
|
|
3535
3694
|
function redactModulePath(id, root) {
|
|
3536
3695
|
const clean = id.split("?")[0];
|
|
3537
3696
|
try {
|
|
3538
|
-
const rel =
|
|
3539
|
-
if (rel && !rel.startsWith("..") && !
|
|
3697
|
+
const rel = path9.relative(root, clean);
|
|
3698
|
+
if (rel && !rel.startsWith("..") && !path9.isAbsolute(rel)) return rel;
|
|
3540
3699
|
} catch {
|
|
3541
3700
|
}
|
|
3542
3701
|
return clean.split("/").pop() ?? clean;
|
|
@@ -3647,17 +3806,17 @@ function genRemoteSchemaModule(schema) {
|
|
|
3647
3806
|
|
|
3648
3807
|
// src/vite-cache.ts
|
|
3649
3808
|
import fs7 from "fs";
|
|
3650
|
-
import
|
|
3809
|
+
import path10 from "path";
|
|
3651
3810
|
function syncViteCacheMarker(root, pluginVersion, log) {
|
|
3652
|
-
const viteDir =
|
|
3653
|
-
const marker =
|
|
3811
|
+
const viteDir = path10.join(root, "node_modules", ".vite");
|
|
3812
|
+
const marker = path10.join(viteDir, "fulgurjs-version.txt");
|
|
3654
3813
|
try {
|
|
3655
3814
|
if (fs7.existsSync(viteDir)) {
|
|
3656
3815
|
const prev = fs7.existsSync(marker) ? fs7.readFileSync(marker, "utf8").trim() : "";
|
|
3657
3816
|
if (prev === pluginVersion) return;
|
|
3658
3817
|
fs7.rmSync(viteDir, { recursive: true, force: true });
|
|
3659
3818
|
log(
|
|
3660
|
-
`[fulgurjs] \u63D2\u4EF6\u7248\u672C\u53D8\u5316\uFF08${prev || "\u65E0\u8BB0\u5F55"} \u2192 ${pluginVersion}\uFF09\uFF0C\u5DF2\u81EA\u52A8\u6E05\u9664 ${
|
|
3819
|
+
`[fulgurjs] \u63D2\u4EF6\u7248\u672C\u53D8\u5316\uFF08${prev || "\u65E0\u8BB0\u5F55"} \u2192 ${pluginVersion}\uFF09\uFF0C\u5DF2\u81EA\u52A8\u6E05\u9664 ${path10.relative(root, viteDir)} \u9884\u6784\u5EFA\u7F13\u5B58\uFF08\u907F\u514D\u65E7\u95E8\u9762\u7B7E\u540D 404 / DEV-009\uFF09\u3002\u672C\u6B21\u542F\u52A8\u5C06\u91CD\u65B0\u9884\u6784\u5EFA\uFF0C\u9996\u8F6E 30~60s \u5C5E\u6682\u6001\uFF08DEV-010\uFF09\u3002`
|
|
3661
3820
|
);
|
|
3662
3821
|
}
|
|
3663
3822
|
fs7.mkdirSync(viteDir, { recursive: true });
|
|
@@ -4017,7 +4176,7 @@ function repairRolldownAsyncMarks(code, sourceName) {
|
|
|
4017
4176
|
}
|
|
4018
4177
|
|
|
4019
4178
|
// src/runtime-code.gen.ts
|
|
4020
|
-
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';
|
|
4179
|
+
var runtime_code_gen_default = 'var ke=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function C(c){let d=ke.exec(String(c).trim());return d?{major:Number(d[1]),minor:Number(d[2]??0),patch:Number(d[3]??0),pre:d[4]?d[4].split("."):[]}:null}function Oe(c,d){if(c.length===0&&d.length===0)return 0;if(c.length===0)return 1;if(d.length===0)return-1;let f=Math.max(c.length,d.length);for(let l=0;l<f;l++){let m=c[l],S=d[l];if(m===void 0)return-1;if(S===void 0)return 1;let b=/^\\d+$/.test(m),P=/^\\d+$/.test(S);if(b&&P){let A=Number(m)-Number(S);if(A!==0)return A}else{if(b!==P)return b?-1:1;if(m!==S)return m<S?-1:1}}return 0}function x(c,d){let f=C(c),l=C(d);return!f||!l?c<d?-1:c>d?1:0:f.major!==l.major?f.major-l.major:f.minor!==l.minor?f.minor-l.minor:f.patch!==l.patch?f.patch-l.patch:Oe(f.pre,l.pre)}var Me=/^[a-z]+[+:-]/i;function U(c,d){if(d===!1||d==null||d==="")return!0;let f=String(d).trim();return!f||f==="*"||f==="latest"||Me.test(f)?!0:f.split("||").some(l=>Te(c,l.trim()))}function Te(c,d){if(!d||d==="*")return!C(c)?.pre.length;let f=d.split(/\\s+-\\s+/);if(f.length===2){let S=f[0].trim(),b=f[1].trim();return!(!U(c,`>=${S}`)||!U(c,`<=${b}`))}let l=C(c);if(!l)return!1;let m=Le(d);if(m===null)return!0;for(let S of m)if(!je(l,c,S))return!1;return!(l.pre.length>0&&!m.some(S=>S.ver.pre.length>0)&&!m.some(b=>b.ver.major===l.major&&b.ver.minor===l.minor&&b.ver.patch===l.patch))}function Le(c){let d=[],f=c.trim().split(/\\s+/).filter(Boolean);if(f.length===0)return null;for(let l of f){let m=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(l);if(!m)return null;let S=m[1],b=m[2],P=Ae(S,b);if(P===null)return null;d.push(...P)}return d}function Ae(c,d){let f=xe(d);if(!f)return null;let{ver:l,partial:m}=f;switch(c){case"^":{let S=Ie(l);return S?[{op:">=",ver:l},{op:"<",ver:S}]:null}case"~":{let S=m>=2?{major:l.major,minor:l.minor+1,patch:0,pre:[]}:{major:l.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:l},{op:"<",ver:S}]}case">=":return[{op:">=",ver:l}];case">":return m===1?[{op:">=",ver:{major:l.major+1,minor:0,patch:0,pre:[]}}]:m===2?[{op:">=",ver:{major:l.major,minor:l.minor+1,patch:0,pre:[]}}]:[{op:">",ver:l}];case"<":return m===1?[{op:"<",ver:{major:l.major,minor:0,patch:0,pre:[]}}]:m===2?[{op:"<",ver:{major:l.major,minor:l.minor,patch:0,pre:[]}}]:[{op:"<",ver:l}];case"<=":return[{op:"<=",ver:l}];case"=":case void 0:return m===1?[{op:">=",ver:l},{op:"<",ver:{major:l.major+1,minor:0,patch:0,pre:[]}}]:m===2?[{op:">=",ver:l},{op:"<",ver:{major:l.major,minor:l.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:l}];default:return null}}function Ie(c){return c.major>0?{major:c.major+1,minor:0,patch:0,pre:[]}:c.minor>0?{major:0,minor:c.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:c.patch+1,pre:[]}}function xe(c){let d=c.replace(/^v/,"").trim();if(!d||d==="*"||d==="x"||d==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let f=d.split("."),l=[],m=0;for(let P of f.slice(0,3))if(/^\\d+$/.test(P))l.push(Number(P)),m++;else{if(P==="x"||P==="X"||P==="*")break;break}let S=d.split("-"),b=S.length>1?S.slice(1).join("-").split("+")[0].split("."):[];return m===0&&b.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:l[0]??0,minor:l[1]??0,patch:l[2]??0,pre:b},partial:m}}function Ue(c,d){switch(d){case">=":return c>=0;case">":return c>0;case"<":return c<0;case"<=":return c<=0;case"=":return c===0}}function je(c,d,f){let l=`${c.major}.${c.minor}.${c.patch}`+(c.pre.length?`-${c.pre.join(".")}`:"");if(f.upper)return!(!(x(l,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:""))>=0)||!(x(l,`${f.upper.major}.${f.upper.minor}.${f.upper.patch}`)<0));let m=x(l,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:"")),S=Ue(m,f.op);return f.ver.pre.length>0&&c.pre.length===0&&(f.op===">"||f.op==="<")?!1:S}function F(c){return c.replace(/(https?:\\/\\/)(?:[^\\s/@]+@)?([^\\s?#"\'<>\uFF0C\u3002\uFF1B\uFF09)\\]]+)(?:[?#][^\\s"\'<>\uFF0C\u3002\uFF1B\uFF09)\\]]*)?/g,"$1$2")}function M(c){return F(String(c?.message??c)).replace(/\\b(token|password|cookie|authorization)["\']?\\s*[:=]\\s*["\']?(?:Bearer\\s+)?[^\\s,;"\'}]+/gi,"$1=[redacted]")}var E=class extends Error{code;details;constructor(d,f,l,m){super(`[fulgurjs:${d}] ${F(f)}`,m),this.name="FgError",this.code=d,this.details=l}},R={REMOTE_LOAD_FAILED:"MFU-001",REMOTE_NAME_MISMATCH:"MFU-002",SHARE_STRICT_VERSION:"MFU-003",SHARE_NOT_AVAILABLE:"MFU-004",CONTAINER_REINIT_CONFLICT:"MFU-005",MODULE_NOT_EXPOSED:"MFU-006",PRELOAD_FAILED:"MFU-007",REMOTE_UNKNOWN:"MFU-008",EMPTY_EXPORTS:"MFU-009",SINGLETON_SKEW:"MFU-010",SETUP_INVALID_EXPORT:"MFU-011",SETUP_RUN_FAILED:"MFU-012",SETUP_SESSION_KEY_MISSING:"MFU-013",SETUP_RECURSION:"MFU-014",COMPONENT_EXPORT_INVALID:"MFU-018",VUE_RUNTIME_IDENTITY_MISMATCH:"MFU-019",REMOTE_RENDER_ERROR:"MFU-020"};function ie(c){if(typeof c!="object"||c===null)return!1;let d=globalThis,f=d.__FULGURJS_REPORTED_ERRORS__??=new WeakSet;return f.has(c)?!0:(f.add(c),!1)}var ae="6.14.4";var Ne="__fulgurjsSetup",Ce="__FULGURJS_APP_CONFIG__",J=15e3,ce=2,Fe=5,Ve=3e4,De=4e3,Ke=.2;function qe(){let c=Object.create(null),d=new Map,f=[],l=new Set,m=new Map,S=(e,r)=>JSON.stringify([r.shareScope||"default",r.shareKey||e,r.requiredVersion??null,!!r.singleton,!!r.strictVersion]),b=new Map,P=new Map,A=new WeakMap,V=new WeakMap,W=(e,r)=>{console.warn(`[fulgurjs] ${e} \\u94A9\\u5B50\\u5931\\u8D25\\uFF08\\u4E0D\\u5F71\\u54CD\\u52A0\\u8F7D\\uFF09\\uFF0C\\u8BF7\\u68C0\\u67E5\\uFF1A`,M(r))},_={},ue=()=>{for(let e of f)try{e.init?.(_)}catch(r){console.warn("[fulgurjs] \\u6269\\u5C55\\u521D\\u59CB\\u5316\\u5931\\u8D25\\uFF0C\\u8BF7\\u68C0\\u67E5\\uFF1A",e.name,M(r))}},D=new Map,K,q=e=>{let r=D.get(e);return r||D.set(e,r={}),r},z=()=>globalThis[Ce]??{};async function Y(e,r,n,o){let t=u=>{if(u instanceof E)return v({remote:e,error:u}),u;let a=new E(R.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${o} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${M(u)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${o} \\u51FD\\u6570\\u540E\\u91CD\\u65B0\\u52A0\\u8F7D\\uFF1B\\u5931\\u8D25\\u7F13\\u5B58\\u5DF2\\u6E05\\u9664\\uFF0C\\u53EF\\u4EE5\\u76F4\\u63A5\\u91CD\\u8BD5\\u3002`,{remote:e,phase:o},{cause:u});return v({remote:e,error:a}),a};K=e;let s;try{s=r(n)}catch(u){throw t(u)}finally{K=void 0}try{await s}catch(u){throw t(u)}}async function de(e,r,n,o){e.debug.setup="pending";try{if(e.manifestUrl)try{await B(`${e.name}/${n}`)}catch{}let t=await r.get(n),s=t?.default,u=t?.onSession!==void 0||t?.globalComponents!==void 0||t?.pageProviders!==void 0;if(s!==void 0&&typeof s!="function"||!s&&!u)throw new E(R.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${t==null?String(t):typeof s}\\uFF0C\\u4E14\\u6A21\\u5757\\u4E0D\\u6EE1\\u8DB3\\u521D\\u59CB\\u5316\\u58F0\\u660E\\u5951\\u7EA6\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u521D\\u59CB\\u5316\\u51FD\\u6570\\uFF0C\\u6216\\u53EA\\u58F0\\u660E onSession/globalComponents/pageProviders\\uFF1B\\u7A7A\\u6A21\\u5757\\u4E0E\\u975E\\u51FD\\u6570\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u65E0\\u6548\\u3002`,{remote:e.name,module:n});if(t.onSession!==void 0&&typeof t.onSession!="function")throw new E(R.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AonSession \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof t.onSession}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5C06 onSession \\u6539\\u4E3A\\u5177\\u540D\\u5BFC\\u51FA\\u7684\\u51FD\\u6570\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});if(o.setupExports=t,t.globalComponents!==void 0){if(typeof t.globalComponents!="object"||t.globalComponents===null||Array.isArray(t.globalComponents))throw new E(R.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AglobalComponents \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${Array.isArray(t.globalComponents)?"array":typeof t.globalComponents}\\uFF0C\\u5E94\\u4E3A\\u5BF9\\u8C61\\uFF08\\u952E=\\u7EC4\\u4EF6\\u6CE8\\u518C\\u540D\\uFF0C\\u503C=\\u7EC4\\u4EF6\\uFF09\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u6539\\u4E3A export const globalComponents = { \\u7EC4\\u4EF6\\u6CE8\\u518C\\u540D: \\u7EC4\\u4EF6 } \\u5F62\\u6001\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});o.globalComponents=t.globalComponents}if(t.pageProviders!==void 0){if(!Array.isArray(t.pageProviders))throw new E(R.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1ApageProviders \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof t.pageProviders}\\uFF0C\\u5E94\\u4E3A\\u6570\\u7EC4\\uFF08\\u6BCF\\u9879=\\u7EC4\\u4EF6\\u6216\\u96F6\\u53C2 loader\\uFF09\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u6539\\u4E3A export const pageProviders = [AppProvider] \\u6216 [() => import(\'./X\').then((m) => m.AppProvider)] \\u5F62\\u6001\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:n});o.pageProviders=t.pageProviders}s&&await Y(e.name,s,{appContext:z(),signal:(o.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(t){throw e.debug.setup="failed",t?.code&&v({remote:e.name,error:t}),o.setupExports=void 0,o.globalComponents=void 0,o.pageProviders=void 0,t}}async function fe(e,r,n){let o=z(),t=o?.sessionKey;if(typeof t!="string"||t===""){let y=new E(R.SETUP_SESSION_KEY_MISSING,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u58F0\\u660E\\u4E86 onSession\\uFF0C\\u4F46\\u5BBF\\u4E3B\\u5C1A\\u672A\\u63D0\\u4F9B\\u6709\\u6548\\u7684 AppContext.sessionKey\\u3002\n\\u539F\\u56E0\\uFF1A\\u5F53\\u524D\\u503C\\u4E3A ${t===void 0?"\\u7F3A\\u5931":JSON.stringify(t)}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5BBF\\u4E3B\\u6BCF\\u6B21\\u767B\\u5F55\\u6216\\u91CD\\u767B\\u65F6\\u751F\\u6210\\u65B0\\u7684\\u975E\\u654F\\u611F\\u767B\\u5F55\\u4EE3\\u6B21 ID\\uFF0C\\u5E76\\u5728\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u9875\\u9762\\u524D\\u8C03\\u7528 provideAppContext({ ..., sessionKey: \'\\u767B\\u5F55\\u4EE3\\u6B21 ID\' })\\uFF1B\\u4E0D\\u8981\\u4F7F\\u7528 token \\u539F\\u6587\\u3002`,{remote:e.name});throw v({remote:e.name,error:y}),y}if(r.sessionPromise&&r.sessionKey===t)return r.sessionPromise;r.controller?.abort();let s=new AbortController;r.controller=s,r.sessionKey=t;let u=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),a=(async()=>{await u,!s.signal.aborted&&await Y(e.name,n,{appContext:o,sessionKey:t,signal:s.signal},"onSession")})();return r.sessionPromise=a,a.catch(()=>{r.sessionKey===t&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),a}async function pe(e,r){let n=r?.[Ne];if(typeof n!="string"||n==="")return;let o=q(e.name);o.setupPromise||(o.setupPromise=de(e,r,n,o).catch(s=>{throw o.setupPromise=void 0,s})),await o.setupPromise;let t=o.setupExports?.onSession;typeof t=="function"&&await fe(e,o,t)}function me(){for(let e of D.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let L=e=>c[e]??=Object.create(null);function v(e){if(!ie(e.error)){try{_.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}}function ge(e="default"){return L(e),c}function H(e,r,n,o,t={}){let s=L(e||"default"),u=Object.hasOwn(s,r)?s[r]:void 0,a=u&&typeof u=="object"?u:void 0;a||(a=Object.create(null),s[r]=a),!(Object.hasOwn(a,n)&&a[n])&&(a[n]={version:n,get:o,from:t.from??"unknown",eager:!!t.eager,loaded:!!t.loaded})}function he(e){let r=(n,o,t)=>{if(n===void 0)return;if(!(typeof n=="number"&&(t?Number.isInteger(n)&&n>=0&&n<=10:Number.isFinite(n)&&n>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${o} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(n)}\\uFF0C\\u5E94\\u4E3A${t?" 0 \\u5230 10 \\u7684\\u6574\\u6570":"\\u5927\\u4E8E 0 \\u7684\\u6709\\u9650\\u6570\\u5B57"}\\u3002\\u8BF7\\u4FEE\\u6B63 registerRemote \\u914D\\u7F6E\\u3002`)};r(e.timeout,"timeout"),r(e.retries,"retries",!0),e.breaker&&(r(e.breaker.threshold,"breaker.threshold"),r(e.breaker.resetMs,"breaker.resetMs"))}function Z(e){for(let r of e){he(r);let n=d.get(r.name);d.set(r.name,{timeout:J,retries:ce,...n,...r,breakerThreshold:r.breaker?.threshold??n?.breakerThreshold??Fe,breakerResetMs:r.breaker?.resetMs??n?.breakerResetMs??Ve,state:n?.state??"idle",breakerState:n?.breakerState??{fails:0,openUntil:0},entryInflight:n?.entryInflight??new Map,entryFailCounts:n?.entryFailCounts??new Map,debug:n?.debug??{entry:j(r.entry),status:"idle",setup:"none"}})}}function ye(e){Z([e])}function Se(e){f.push(...e),m.clear(),ue()}function I(e,r,n=!1){let o=r.shareScope||"default",t=r.shareKey||e,u=L(o)[t]||{},a=Object.keys(u).filter(i=>!n||r.singleton||u[i].value!==void 0);if(n&&a.length===0)return;let y=r.requiredVersion,g=a.filter(i=>y===void 0||y===!1||U(i,y)),p;if(r.singleton&&a.length>0){let i=a.filter(h=>u[h].loaded);if(p=[...i.length?i:a].sort(x).pop(),!g.includes(p)){let h=u[p],O=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${t}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42 ${y??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${a.join("\\u3001")}\\uFF1B\\u5355\\u4F8B\\u5019\\u9009\\u4E3A ${h.from} \\u63D0\\u4F9B\\u7684 ${p}\\u3002\n`+(r.strictVersion?`\\u7ED3\\u679C\\uFF1AstrictVersion \\u5DF2\\u5F00\\u542F\\uFF0C\\u672C\\u6B21\\u52A0\\u8F7D\\u5DF2\\u62D2\\u7EDD\\uFF0C\\u672A\\u4EA4\\u4ED8\\u4E0D\\u517C\\u5BB9\\u5B9E\\u4F8B\\u3002\n`:`\\u7ED3\\u679C\\uFF1A\\u590D\\u7528\\u6B64\\u5355\\u4F8B\\uFF1B\\u8BF7\\u786E\\u8BA4\\u4E24\\u7AEF API \\u517C\\u5BB9\\u3002\n`)+"\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u6838\\u5BF9\\u540E\\u8C03\\u6574 shared.requiredVersion\\u3002";if(r.strictVersion){let T=new E(R.SHARE_STRICT_VERSION,O,{shareKey:t,requiredVersion:y});throw v({remote:h.from,error:T}),T}let $=`${o}|${t}|${y??"*"}|${p}|${a.join(",")}`;l.has($)||(l.add($),console.warn(`[fulgurjs:MFU-010] ${O}`))}}else if(p=[...g].sort(x).pop(),!p){if(r.strictVersion){let i=new E(R.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${o}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${t}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${y}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${a.join("\\u3001")||"\\u65E0"}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u4FEE\\u6B63 shared.requiredVersion\\u3002`);throw v({remote:t,error:i}),i}return}return u[p]}function Q(e,r,n){let o=r.localVersion;if(!o||n===void 0)return;let t=r.shareScope||"default",s=r.shareKey||e,u=L(t),a=Object.hasOwn(u,s)?u[s]:void 0;if(a&&Object.keys(a).length>0){try{let g=I(e,r);if(g&&g.value===void 0){if(g.version===o)g.value=n,g.loaded=!0;else if(r.singleton&&!g.pendingGet){H(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let p=u[s][o];p.value=n,p.loaded=!0}}}catch{}return}H(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let y=u[s]?.[o];y&&(y.value=n)}async function ee(e,r={}){let n=r.shareScope||"default",o=r.shareKey||e,t=L(n)[o]||{},s=S(e,r),u=_.resolveShare?m.get(s):void 0,a=u||I(e,r);if(!a){if(r.fallback){let i=await r.fallback();return Q(e,r,i),i}let p=new E(R.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${o}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u4F5C\\u7528\\u57DF "${n}" \\u4E2D\\u6CA1\\u6709\\u7B26\\u5408 ${r.requiredVersion??"\\u4EFB\\u610F\\u7248\\u672C"} \\u8981\\u6C42\\u7684\\u7248\\u672C\\uFF0C\\u4E14\\u672A\\u914D\\u7F6E\\u672C\\u5730\\u526F\\u672C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728\\u5BBF\\u4E3B\\u6216\\u8FDC\\u7A0B\\u6CE8\\u518C\\u8BE5\\u4F9D\\u8D56\\uFF0C\\u6216\\u4E3A shared \\u914D\\u7F6E\\u53EF\\u7528\\u7684\\u672C\\u5730\\u526F\\u672C\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion});throw v({remote:o,error:p}),p}if(_.resolveShare&&!u){let p=await _.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:a,available:Object.values(t)});p&&(a=p),m.set(s,a)}if(a.value!==void 0)return m.set(S(e,r),a),a.value;if(a.loaded=!0,!a.pendingGet)try{a.pendingGet=a.get()}catch(p){a.pendingGet=Promise.reject(p)}let y=a.pendingGet,g;try{g=await y}catch(p){if(a.value!==void 0)return m.set(S(e,r),a),a.value;throw a.loaded=!1,m.get(s)===a&&m.delete(s),p}finally{a.pendingGet===y&&(a.pendingGet=void 0)}return a.value===void 0&&(a.value=g),m.set(S(e,r),a),a.value}function Ee(e,r={}){return _.resolveShare?m.get(S(e,r))?.value:I(e,r,!0)?.value}function Re(e,r,n,o){Q(e,{...r,localVersion:n},o)}function we(e,r){let n=r.shareScope||"default",o=r.shareKey||e;if(_.resolveShare){let s=S(e,r),u=m.get(s);if(u&&u.value!==void 0)return{kind:"ready",value:u.value};let a=u||_.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:I(e,r),available:Object.values(L(n)[o]||{})});if(a&&typeof a.then=="function")throw Promise.resolve(a).catch(()=>{}),new E(R.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u5BF9\\u5171\\u4EAB "${o}" \\u8FD4\\u56DE\\u4E86 Promise\\uFF0C\\u4F46\\u8BE5\\u5171\\u4EAB\\u6B63\\u88AB\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u6D88\\u8D39\\uFF08Vite 8 \\u540C\\u6B65\\u534F\\u5546\\u95E8\\u9762\\uFF09\\u3002\n\\u539F\\u56E0\\uFF1A\\u6A21\\u5757\\u6C42\\u503C\\u671F\\u65E0\\u6CD5\\u7B49\\u5F85\\u5F02\\u6B65\\u51B3\\u7B56\\uFF1B\\u9759\\u6001\\u5BFC\\u5165\\u4E0D\\u80FD\\u9759\\u9ED8\\u5FFD\\u7565 hook \\u51B3\\u7B56\\u3002\n\\u4FEE\\u6CD5\\uFF1AVite 8 HTML \\u5165\\u53E3\\u4F1A\\u5148\\u5B8C\\u6210\\u5F02\\u6B65\\u534F\\u5546\\uFF1B\\u5176\\u4ED6\\u5165\\u53E3\\u8BF7\\u5148\\u52A8\\u6001 loadShare \\u5EFA\\u7ACB\\u5FEB\\u7167\\uFF0C\\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u8BA9\\u8BE5\\u952E\\u540C\\u6B65\\u8FD4\\u56DE picked\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let y=a;if(y){if(y.value!==void 0)return m.set(S(e,r),y),{kind:"ready",value:y.value};if(y.version!==void 0&&y.version===r.localVersion)return{kind:"local"};throw new E(R.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u4E3A "${o}" \\u9009\\u62E9\\u4E86\\u672A\\u5C31\\u7EEA\\u7684 ${y.version??"\\u6761\\u76EE"}\\u3002\n\\u539F\\u56E0\\uFF1A\\u540C\\u6B65\\u6D88\\u8D39\\u4E0D\\u80FD\\u7B49\\u5F85\\u52A0\\u8F7D\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5148\\u52A8\\u6001 loadShare \\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u9009\\u62E9\\u5DF2\\u5C31\\u7EEA\\u5B9E\\u4F8B/\\u672C\\u5730\\u7248\\u672C ${r.localVersion??"\\u672A\\u58F0\\u660E"}\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0})}}let t=I(e,r);if(!t)return{kind:"local"};if(t.value!==void 0)return{kind:"ready",value:t.value};if(t.version!==void 0&&t.version===r.localVersion)return{kind:"local"};if(r.singleton||r.strictVersion&&r.requiredVersion&&(!r.localVersion||!U(r.localVersion,r.requiredVersion))){if(r.strictVersion||t.pendingGet)throw new E(R.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB "${o}" \\u9009\\u4E2D\\u4E86 ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version}\\uFF08\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\uFF0C\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u65E0\\u6CD5\\u7B49\\u5F85\\u5176\\u5B9E\\u4F8B\\u5C31\\u7EEA\\u3002\n\\u539F\\u56E0\\uFF1A\\u4E0D\\u80FD\\u6539\\u7528\\u4E0D\\u517C\\u5BB9\\u7684\\u672C\\u5730\\u526F\\u672C\\u6216\\u5206\\u88C2\\u5355\\u4F8B\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9\\u8BE5\\u5171\\u4EAB\\u7684\\u9996\\u6B21\\u6D88\\u8D39\\u5148\\u7ECF\\u4E00\\u6B21\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u52A0\\u8F7D\\uFF0C\\u6216\\u5C06\\u672C\\u5E94\\u7528\\u7248\\u672C\\u4E0E\\u4F5C\\u7528\\u57DF\\u63D0\\u4F9B\\u7248\\u672C\\u5BF9\\u9F50\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let s=`${n}|${o}|${t.version}|${r.localVersion}`;return l.has(s)||(l.add(s),console.warn(`[fulgurjs:MFU-010] \\u5171\\u4EAB\\u5355\\u4F8B "${o}"\\uFF1A\\u4F5C\\u7528\\u57DF\\u4E2D ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version} \\u5C1A\\u672A\\u52A0\\u8F7D\\uFF0C\\u9996\\u4E2A\\u6D88\\u8D39\\u8005\\u4EE5\\u672C\\u5730\\u7248\\u672C ${r.localVersion??""} \\u63A5\\u7BA1\\uFF08\\u540E\\u7EED\\u6D88\\u8D39\\u8005\\u6309\\u5DF2\\u52A0\\u8F7D\\u4F18\\u5148\\u6536\\u655B\\u5230\\u8BE5\\u5B9E\\u4F8B\\uFF09\\u3002`)),{kind:"local"}}return console.warn(`[fulgurjs] \\u5171\\u4EAB "${o}"\\uFF1A\\u975E\\u5355\\u4F8B\\u540C\\u6B65\\u6D88\\u8D39\\u4F7F\\u7528\\u672C\\u5730 ${r.localVersion??""}\\uFF0C\\u8FDC\\u7A0B ${t.version} \\u5C1A\\u672A\\u5C31\\u7EEA\\u3002`),{kind:"local"}}async function be(e){if(_.resolveShare){for(let{name:r,opts:n}of e){let o=S(r,n);if(m.has(o))continue;let t=I(r,n),s=await _.resolveShare({shareKey:n.shareKey||r,shareScope:n.shareScope||"default",requiredVersion:n.requiredVersion,picked:t,available:Object.values(L(n.shareScope||"default")[n.shareKey||r]||{})})||t;s&&m.set(o,s)}for(let{name:r,opts:n}of e)await ee(r,n)}}function j(e=""){return F(e).split(/[?#]/,1)[0]}function re(e,r,n){return new Promise((o,t)=>{let s=setTimeout(()=>t(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${n}`)),r);e.then(u=>{clearTimeout(s),o(u)},u=>{clearTimeout(s),t(u)})})}let ve=e=>new Promise(r=>setTimeout(r,e)),ne=new Set;function G(e,r){if(!e||typeof e.get!="function")throw new Error(`\\u8FDC\\u7A0B\\u5E94\\u7528 "${r.name}" \\u7684 remoteEntry \\u672A\\u5BFC\\u51FA\\u5BB9\\u5668\\u63A5\\u53E3\\u3002\\u8BF7\\u786E\\u8BA4\\u5165\\u53E3\\u5BFC\\u51FA\\u4E86 get()\\uFF0C\\u5E76\\u68C0\\u67E5\\u8BE5\\u5730\\u5740\\u662F\\u5426\\u8FD4\\u56DE\\u6B63\\u786E\\u7684\\u8054\\u90A6\\u5165\\u53E3 JS\\u3002`);if(e.name&&r.name&&e.name!==r.name){let n=`\\u8FDC\\u7A0B\\u5165\\u53E3\\u81EA\\u62A5\\u540D\\u79F0 "${e.name}" \\u4E0E\\u5BBF\\u4E3B\\u914D\\u7F6E\\u540D\\u79F0 "${r.name}" \\u4E0D\\u4E00\\u81F4\\u3002\\u8BF7\\u7EDF\\u4E00\\u4E24\\u4FA7 federation({ name }) \\u4E0E remotes \\u7684\\u540D\\u79F0\\u3002`;if(r.promise){let o=`${r.name}\\u2194${e.name}`;ne.has(o)||(ne.add(o),console.warn(`[fulgurjs] ${n} \\u5F53\\u524D\\u662F\\u52A8\\u6001 Promise \\u8FDC\\u7A0B\\uFF0C\\u7EE7\\u7EED\\u52A0\\u8F7D\\u3002`))}else throw Object.assign(new Error(n),{code:R.REMOTE_NAME_MISMATCH})}}async function te(e,r){let n=r.entryFailCounts.get(e)??0,o=n>0?`${e}${e.includes("?")?"&":"?"}fulgurjs_retry=${n}`:e,t=r.entryInflight.get(e),s=t??import(o);return t||(r.entryInflight.set(e,s),s.catch(()=>{r.entryInflight.delete(e),r.entryFailCounts.set(e,(r.entryFailCounts.get(e)??0)+1)})),re(s,r.timeout??J,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${j(e)}`)}async function oe(e,r){let n=e.shareScope||"default";if(e.container){let s=V.get(e.container);if(s&&s!==n)throw new E(R.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${s}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return e.container}if(e.containerPromise)return e.containerPromise;let o=e.breakerState;if(o.openUntil>Date.now()){let s=new E(R.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u8FDE\\u7EED\\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u7194\\u65AD\\u5668\\u5DF2\\u5F00\\u542F\\uFF1B\\u5C06\\u5728 ${new Date(o.openUntil).toISOString()} \\u540E\\u5141\\u8BB8\\u91CD\\u8BD5\\u3002\\u8BF7\\u5148\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u670D\\u52A1\\u548C\\u7F51\\u7EDC\\u3002`,{remote:e.name,stage:"container"});throw v({remote:e.name,error:s}),s}e.state="loading",e.debug.status="loading";let t=(async()=>{let s=[];if(e.promise)s.push(async()=>{let i=await re(e.promise(),e.timeout??J,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),h=typeof i=="string"?await te(i,e):i;return G(h,e),h});else for(let i of[e.entry,...e.fallback??[]])s.push(async()=>{let h=await te(i,e);return G(h,e),h});let u,a,y=!1,g=r?.retries??e.retries??ce;for(let i of s){for(let h=0;h<=g;h++){let O=performance.now();try{u=await i(),e.lastLoadMs=Math.round(performance.now()-O),e.debug.lastLoadMs=e.lastLoadMs,y=!0;break}catch($){if(a=$,$?.code)throw $;h<g&&await ve(Math.min(De,200*2**h)*(1-Ke*(1-2*Math.random())))}}if(y)break}if(!y||!u){let i=j(e.entry),h=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${i}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),h.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),h.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${i}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),h.push("2. \\u68C0\\u67E5 Nginx/CDN \\u7684\\u5165\\u53E3\\u8DEF\\u5F84\\u6620\\u5C04\\uFF1B\\u8BE5\\u5730\\u5740\\u4E0D\\u80FD\\u56DE\\u9000\\u5230 index.html\\u3002")),new E(R.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${i} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${M(a)}\n\\u4FEE\\u6CD5\\uFF1A\n${h.join(`\n`)}`,{remote:e.name,stage:"container"},{cause:a})}G(u,e);let p=V.get(u);if(p&&p!==n)throw new E(R.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${p}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof u.init=="function"&&await u.init(c),V.set(u,n),e.container=u,e.state="loaded",e.debug.status="loaded",o.fails=0,u})();e.containerPromise=t;try{return await t}catch(s){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=M(s),o.fails+=1,o.fails>=e.breakerThreshold&&(o.openUntil=Date.now()+e.breakerResetMs,o.fails=0),s instanceof E)throw v({remote:e.name,error:s}),s;if(s?.code)throw v({remote:e.name,error:s}),s;let u=new E(R.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(s)}\\u3002\\u8BF7\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u3001\\u7F51\\u7EDC\\u53CA\\u5171\\u4EAB\\u4F9D\\u8D56\\u3002`,{remote:e.name,stage:"container"},{cause:s});throw v({remote:e.name,error:u}),u}}function X(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:se(e.slice(r+1))}}function se(e){return e?e.startsWith(".")?e:`./${e}`:""}async function Pe(e,r){let{remote:n,module:o}=X(e);if(o&&K===n)throw new E(R.SETUP_RECURSION,`\\u73B0\\u8C61\\uFF1A\\u52A0\\u8F7D "${e}" \\u65F6\\uFF0C\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 setup/onSession \\u53C8\\u540C\\u6B65\\u52A0\\u8F7D\\u4E86\\u81EA\\u8EAB\\u6A21\\u5757\\uFF0C\\u5F62\\u6210\\u5FAA\\u73AF\\u7B49\\u5F85\\u3002\n\\u539F\\u56E0\\uFF1A\\u521D\\u59CB\\u5316\\u5C1A\\u672A\\u5B8C\\u6210\\uFF0C\\u4E0D\\u80FD\\u7B49\\u5F85\\u81EA\\u8EAB\\u7684\\u521D\\u59CB\\u5316\\u7ED3\\u679C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u4E0D\\u8981\\u5728 setup/onSession \\u4E2D\\u52A0\\u8F7D\\u540C\\u4E00\\u8FDC\\u7A0B\\u7684\\u6A21\\u5757\\uFF1B\\u8BF7\\u5728\\u9875\\u9762\\u7EC4\\u4EF6\\u4E2D\\u52A0\\u8F7D\\uFF0C\\u6216\\u901A\\u8FC7 context \\u89E3\\u8026\\u3002`,{remote:n});try{_.beforeLoadRemote?.({remote:n,module:o})}catch(i){W("beforeLoadRemote",i)}let t=d.get(n);if(!t)throw new E(R.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5728 federation({ remotes }) \\u4E2D\\u914D\\u7F6E\\uFF0C\\u6216\\u5728\\u52A0\\u8F7D\\u524D\\u8C03\\u7528 registerRemote()\\u3002`,{remote:n});let s;try{let i=o&&t.manifestUrl?B(e):Promise.resolve();[s]=await Promise.all([oe(t,{retries:r?.retries}),i])}catch(i){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF1B\\u4F7F\\u7528\\u914D\\u7F6E\\u7684 fallbackModule\\u3002\\u6458\\u8981\\uFF1A`,M(i)),v({remote:n,error:i}),await r.fallbackModule();throw i}if(!o)return s;await pe(t,s);let u=q(n).globalComponents,a=r?.consumerApp;if(u&&a&&typeof a.component=="function")for(let i of Object.keys(u))a.component(i,u[i]);let y=q(n).pageProviders;y&&y.length>0&&typeof a?.pageProviders=="function"&&a.pageProviders(y);let g=`${n}@${t.shareScope||"default"}#${o}`;b.has(g)||b.set(g,s.get(o).catch(i=>{if(b.delete(g),i instanceof E||i?.code)throw v({remote:n,error:i}),i;let h=new E(R.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u52A0\\u8F7D\\u6A21\\u5757 "${o}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(i)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:n,module:o,stage:"expose"},{cause:i});throw v({remote:n,error:h}),h}));let p;try{p=await b.get(g)}catch(i){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF1B\\u4F7F\\u7528\\u914D\\u7F6E\\u7684 fallbackModule\\u3002\\u6458\\u8981\\uFF1A`,M(i)),v({remote:n,error:i}),await r.fallbackModule();throw i}try{_.afterLoadRemote?.({remote:n,module:o,module_ns:p})}catch(i){W("afterLoadRemote",i)}if(p&&typeof p=="object"&&Object.keys(p).length===0){let i=new E(R.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6A21\\u5757 "${o}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:n,module:o});v({remote:n,error:i}),console.error(i.message)}return p}function $e(e){let r=d.get(e);if(!r)throw new E(R.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:e});return oe(r)}async function B(e,r={}){let{remote:n,module:o}=X(e),t=d.get(n);if(!t)throw new E(R.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:n});let s=r.mode??"preload",u=(g,p)=>{if(g.sheet)return Promise.resolve();let i=A.get(g);if(i)return i;let h=new Promise(O=>{let $=()=>{g.removeEventListener("load",$),g.removeEventListener("error",T),O()},T=()=>{v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${p}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:n})}),$()};g.addEventListener("load",$,{once:!0}),g.addEventListener("error",T,{once:!0}),g.sheet&&$()});return A.set(g,h),h},a=(g,p)=>{if(typeof document>"u")return Promise.resolve();let i=document.querySelector(`link[href="${g}"]`);if(i)return p==="style"&&s==="preload"?A.get(i)??Promise.resolve():Promise.resolve();let h=document.createElement("link");h.rel=p==="style"?"stylesheet":"modulepreload",h.href=g,s==="prefetch"&&(h.fetchPriority="low");let O=p==="style"?u(h,g):Promise.resolve();return document.head.appendChild(h),p==="style"&&s==="preload"?O:Promise.resolve()},y=g=>{let p=typeof document<"u"?document.baseURI:void 0,i=new URL(t.entry,p||"http://fulgurjs.invalid/");return!i.pathname.endsWith("/")&&!i.pathname.split("/").pop().includes(".")&&(i.pathname+="/"),new URL(g,i).href};try{if(t.manifestUrl){let g=P.get(t.manifestUrl);g||(g=fetch(t.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(i=>i.ok?i.json():void 0),P.set(t.manifestUrl,g),g.then(i=>{i||P.delete(t.manifestUrl)},()=>P.delete(t.manifestUrl)));let p=await g;if(p){let i=p.schemaVersion;if(typeof i=="number"&&(!Number.isInteger(i)||i>1)){v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(i)}\\uFF0C\\u5F53\\u524D\\u4EC5\\u652F\\u6301\\u7248\\u672C 1\\u3002\\u8BF7\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u548C\\u8FDC\\u7A0B\\u7684\\u63D2\\u4EF6\\u7248\\u672C\\u3002`,{remote:n})}),await a(t.entry,"modulepreload");return}await a(t.entry,"modulepreload");let h=p.exposes,O=Array.isArray(h)?h.filter(k=>k&&typeof k=="object").map(k=>[String(k.name??""),k]):h&&typeof h=="object"?Object.entries(h):[],$=o?O.filter(([k,N])=>se(String(N?.name??k))===o):O,T=[];for(let[,k]of $)if(typeof k?.file=="string"&&await a(y(k.file),"modulepreload"),Array.isArray(k?.css))for(let N of k.css){if(typeof N!="string")continue;let _e=a(y(N),"style");s==="preload"&&T.push(_e)}await Promise.all(T);return}}await a(t.entry,"modulepreload")}catch(g){v({remote:n,error:new E(R.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${M(g)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:n})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=c,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,n]of d)e[r]={...n.debug,entry:j(n.entry)};return e},errors:[]}),{shareScopeMap:c,initSharing:ge,registerShare:H,registerRemotes:Z,registerRemote:ye,registerPlugins:Se,loadShare:ee,loadShareSync:we,prepareShares:be,getLoadedShare:Ee,pinLoadedShare:Re,loadRemote:Pe,getContainer:$e,preloadRemote:B,parseSpec:X,clearSessionState:me,reportRemoteError:e=>{v(e)}}}var le=globalThis,w=le.__FULGURJS_RUNTIME__??qe();le.__FULGURJS_RUNTIME__=w;try{Object.freeze(w)}catch{}var Ye=ae;function Ze(){return w}var Qe=w.initSharing,er=w.registerShare,rr=w.registerRemotes,nr=w.registerRemote,tr=w.registerPlugins,or=w.loadShare,sr=w.getLoadedShare,ir=w.prepareShares||(async c=>{for(let{name:d,opts:f}of c)await w.loadShare(d,f)}),ar=w.loadShareSync,cr=w.pinLoadedShare,lr=w.loadRemote,ur=w.getContainer,dr=w.preloadRemote,fr=w.parseSpec,pr=w.clearSessionState,mr=w.shareScopeMap;function gr(c){if(c&&typeof c=="object"&&"default"in c){let d=c.default;return d!==void 0?d:c}return c}var hr=w;export{pr as clearSessionState,hr as default,ur as getContainer,sr as getLoadedShare,Ze as getRuntime,Qe as initSharing,lr as loadRemote,or as loadShare,ar as loadShareSync,fr as parseSpec,cr as pinLoadedShare,dr as preloadRemote,ir as prepareShares,tr as registerPlugins,nr as registerRemote,rr as registerRemotes,er as registerShare,w as runtime,mr as shareScopeMap,gr as unwrapDefault,Ye as version};\n';
|
|
4021
4180
|
|
|
4022
4181
|
// src/index.ts
|
|
4023
4182
|
function readRuntimeCode() {
|
|
@@ -4034,7 +4193,7 @@ function enumerateCjsExports(packageName, appRoot) {
|
|
|
4034
4193
|
if (cached) return cached;
|
|
4035
4194
|
let names = [];
|
|
4036
4195
|
try {
|
|
4037
|
-
const appRequire = createRequire4(
|
|
4196
|
+
const appRequire = createRequire4(path11.join(appRoot, "package.json"));
|
|
4038
4197
|
const mod = appRequire(packageName);
|
|
4039
4198
|
names = Object.keys(mod);
|
|
4040
4199
|
} catch {
|
|
@@ -4152,7 +4311,7 @@ async function resolveSharedImportTarget(item, root) {
|
|
|
4152
4311
|
const specifier = item.import;
|
|
4153
4312
|
if (typeof specifier !== "string") return item.shareKey;
|
|
4154
4313
|
try {
|
|
4155
|
-
const resolved = await this.resolve?.(specifier,
|
|
4314
|
+
const resolved = await this.resolve?.(specifier, path11.join(root, "package.json"), { skipSelf: true });
|
|
4156
4315
|
if (resolved?.id) return resolved.id;
|
|
4157
4316
|
} catch {
|
|
4158
4317
|
}
|
|
@@ -4186,7 +4345,7 @@ function federation(options) {
|
|
|
4186
4345
|
enforce: "pre",
|
|
4187
4346
|
async config(userConfig, env) {
|
|
4188
4347
|
state.command = env.command;
|
|
4189
|
-
const root =
|
|
4348
|
+
const root = path11.resolve(userConfig.root ?? process.cwd());
|
|
4190
4349
|
const normalized = normalizeOptions(options, root, env.command);
|
|
4191
4350
|
state.normalized = normalized;
|
|
4192
4351
|
state.rolldownBuild = env.command === "build" && Number((readInstalledVersion(root, "vite") ?? "0").split(".")[0]) >= 8;
|
|
@@ -4465,7 +4624,7 @@ export { default } from ${JSON.stringify(url)};
|
|
|
4465
4624
|
},
|
|
4466
4625
|
resolveId(source, importer) {
|
|
4467
4626
|
if (state.normalized && importer && (importer.includes("virtual:fulgurjs-shared:") || importer.includes("virtual:fulgurjs-shared-ns:")) && /^\.\.?\//.test(source) && !source.startsWith("virtual:fulgurjs-")) {
|
|
4468
|
-
const resolved =
|
|
4627
|
+
const resolved = path11.resolve(state.normalized.root, source);
|
|
4469
4628
|
return resolved + (source.match(/\?[^/]*$/)?.[0] ?? "");
|
|
4470
4629
|
}
|
|
4471
4630
|
let s = source;
|
|
@@ -4559,7 +4718,7 @@ export { default } from ${JSON.stringify(url)};
|
|
|
4559
4718
|
}
|
|
4560
4719
|
let importTarget = item.import;
|
|
4561
4720
|
try {
|
|
4562
|
-
const resolvedImport = await this.resolve?.(item.import,
|
|
4721
|
+
const resolvedImport = await this.resolve?.(item.import, path11.join(state.normalized.root, "package.json"), { skipSelf: true });
|
|
4563
4722
|
if (resolvedImport?.id) importTarget = resolvedImport.id;
|
|
4564
4723
|
} catch {
|
|
4565
4724
|
}
|
|
@@ -4668,7 +4827,7 @@ ${code}`, map: null };
|
|
|
4668
4827
|
const srcRe = /src=["']([^"']+)["']/;
|
|
4669
4828
|
const entryPath = (src) => {
|
|
4670
4829
|
const file = src.startsWith("/@fs/") ? src.slice(4) : src;
|
|
4671
|
-
return
|
|
4830
|
+
return path11.isAbsolute(file) && fs8.existsSync(file) ? file : path11.resolve(state.normalized.root, src.startsWith("/") ? src.slice(1) : src);
|
|
4672
4831
|
};
|
|
4673
4832
|
for (const tag of html.match(moduleScriptRe) ?? []) {
|
|
4674
4833
|
const src = srcRe.exec(tag)?.[1];
|
|
@@ -4699,7 +4858,7 @@ ${code}`, map: null };
|
|
|
4699
4858
|
state.providerEntrySeeds = [];
|
|
4700
4859
|
providerClosureCache.clear();
|
|
4701
4860
|
providerClosureBuilt = false;
|
|
4702
|
-
const providerRequire = createRequire4(
|
|
4861
|
+
const providerRequire = createRequire4(path11.join(n.root, "package.json"));
|
|
4703
4862
|
for (const item of n.shared) {
|
|
4704
4863
|
if (item.import === false) continue;
|
|
4705
4864
|
try {
|
|
@@ -4716,7 +4875,7 @@ ${code}`, map: null };
|
|
|
4716
4875
|
{
|
|
4717
4876
|
for (const item of n.shared) {
|
|
4718
4877
|
if (item.import === false) continue;
|
|
4719
|
-
const resolved = await this.resolve(item.import,
|
|
4878
|
+
const resolved = await this.resolve(item.import, path11.join(n.root, "index.html"));
|
|
4720
4879
|
const file = resolved?.id.replace(/^\0/, "").split("?")[0];
|
|
4721
4880
|
if (!file) continue;
|
|
4722
4881
|
const marker = "/node_modules/";
|
|
@@ -4734,7 +4893,7 @@ ${code}`, map: null };
|
|
|
4734
4893
|
if (state.manualChunkSpecsPending) {
|
|
4735
4894
|
for (const [group, specifier] of state.manualChunkSpecsPending) {
|
|
4736
4895
|
try {
|
|
4737
|
-
const r = await this.resolve(specifier,
|
|
4896
|
+
const r = await this.resolve(specifier, path11.join(n.root, "index.html"));
|
|
4738
4897
|
if (r?.id) {
|
|
4739
4898
|
state.manualChunkGroups.set(r.id, group);
|
|
4740
4899
|
state.manualChunkGroups.set(r.id.split("?")[0], group);
|
|
@@ -4764,7 +4923,7 @@ ${code}`, map: null };
|
|
|
4764
4923
|
};
|
|
4765
4924
|
for (const item of n.shared) {
|
|
4766
4925
|
if (item.import === false) continue;
|
|
4767
|
-
const selfFile = await this.resolve(item.import,
|
|
4926
|
+
const selfFile = await this.resolve(item.import, path11.join(n.root, "index.html")).then(
|
|
4768
4927
|
(r) => r?.id?.split("?")[0] ?? null
|
|
4769
4928
|
).catch(() => null);
|
|
4770
4929
|
for (const alias of item.aliases) {
|
|
@@ -4779,7 +4938,7 @@ ${code}`, map: null };
|
|
|
4779
4938
|
}
|
|
4780
4939
|
}
|
|
4781
4940
|
if (!file) {
|
|
4782
|
-
file = await this.resolve(alias,
|
|
4941
|
+
file = await this.resolve(alias, path11.join(n.root, "index.html")).then(
|
|
4783
4942
|
(r) => r?.id?.split("?")[0] ?? null
|
|
4784
4943
|
).catch(() => null);
|
|
4785
4944
|
}
|
|
@@ -4802,7 +4961,7 @@ ${code}`, map: null };
|
|
|
4802
4961
|
}
|
|
4803
4962
|
if (n.exposes.length > 0) {
|
|
4804
4963
|
for (const e of n.exposes) {
|
|
4805
|
-
const resolved = await this.resolve(e.import,
|
|
4964
|
+
const resolved = await this.resolve(e.import, path11.join(n.root, "index.html"));
|
|
4806
4965
|
if (resolved) {
|
|
4807
4966
|
state.exposeAbsPaths[e.import] = resolved.id.split("?")[0];
|
|
4808
4967
|
} else {
|
|
@@ -5067,7 +5226,7 @@ ${entryChunk.code}`;
|
|
|
5067
5226
|
if (n.exposes.length > 0 && n.dts) {
|
|
5068
5227
|
typesServer = createDevTypesServer(n);
|
|
5069
5228
|
let regenTimer = null;
|
|
5070
|
-
const syncedTypesDir = typeof n.dts === "object" && n.dts.dir ?
|
|
5229
|
+
const syncedTypesDir = typeof n.dts === "object" && n.dts.dir ? path11.resolve(n.root, n.dts.dir) : path11.join(n.root, fs8.existsSync(path11.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types");
|
|
5071
5230
|
const scheduleRegen = (id) => {
|
|
5072
5231
|
if (!isTypesInputChange(n.root, id, syncedTypesDir)) return;
|
|
5073
5232
|
if (regenTimer) clearTimeout(regenTimer);
|
|
@@ -5134,9 +5293,9 @@ ${entryChunk.code}`;
|
|
|
5134
5293
|
if (n.remotes.length > 0 && n.dts && state.command === "serve") {
|
|
5135
5294
|
server.httpServer?.once("listening", () => {
|
|
5136
5295
|
const dtsOpt = n.dts === true ? true : n.dts;
|
|
5137
|
-
const typesRoot =
|
|
5296
|
+
const typesRoot = path11.join(
|
|
5138
5297
|
n.root,
|
|
5139
|
-
dtsOpt === false ? "" : (typeof dtsOpt === "object" ? dtsOpt.dir : void 0) ?? (fs8.existsSync(
|
|
5298
|
+
dtsOpt === false ? "" : (typeof dtsOpt === "object" ? dtsOpt.dir : void 0) ?? (fs8.existsSync(path11.join(n.root, "src")) ? "src/fulgurjs/types" : ".fulgurjs/types")
|
|
5140
5299
|
);
|
|
5141
5300
|
try {
|
|
5142
5301
|
if (fs8.existsSync(typesRoot)) {
|
|
@@ -5152,7 +5311,10 @@ ${entryChunk.code}`;
|
|
|
5152
5311
|
const stop = startRemoteTypesSyncLoop({
|
|
5153
5312
|
root: n.root,
|
|
5154
5313
|
typesRoot,
|
|
5155
|
-
remotes: syncable.map((r) => ({ key: r.key, devEntry: r.devEntry }))
|
|
5314
|
+
remotes: syncable.map((r) => ({ key: r.key, devEntry: r.devEntry })),
|
|
5315
|
+
// 消费/提供双角色的公开源码可能直接 import 上游具名类型。
|
|
5316
|
+
// 首轮编译早于同步时会失败;仅在新类型原子写入后重检,普通轮询不触发。
|
|
5317
|
+
onSynced: () => typesServer?.invalidate()
|
|
5156
5318
|
});
|
|
5157
5319
|
server.httpServer?.once("close", stop);
|
|
5158
5320
|
});
|
|
@@ -5192,7 +5354,7 @@ ${entryChunk.code}`;
|
|
|
5192
5354
|
async transform(code, id) {
|
|
5193
5355
|
if (!state.normalized) return null;
|
|
5194
5356
|
const clean = id.split("?")[0];
|
|
5195
|
-
const isAppSource = clean.startsWith(state.normalized.root +
|
|
5357
|
+
const isAppSource = clean.startsWith(state.normalized.root + path11.sep) && !clean.includes(`${path11.sep}node_modules${path11.sep}`) && !clean.includes(`${path11.sep}.vite${path11.sep}`);
|
|
5196
5358
|
const evidence = isAppSource && clean.endsWith(".vue") && (!id.includes("?") || /[?&]type=script(?:&|$)/.test(id)) ? tagVueRuntime(code, (source) => this.parse(source)) : null;
|
|
5197
5359
|
if (evidence) code = evidence.code;
|
|
5198
5360
|
const entryRewrite = state.command === "serve" && isAppSource ? await rewriteRuntimeEntryImports(code, isExposeTargetFile(clean, state.normalized.root, state.normalized.exposes)) : null;
|
|
@@ -5238,7 +5400,7 @@ ${entryChunk.code}`;
|
|
|
5238
5400
|
if (!n) return;
|
|
5239
5401
|
for (const s of n.shared) {
|
|
5240
5402
|
if (s.import === false) continue;
|
|
5241
|
-
void server.pluginContainer.resolveId(s.import,
|
|
5403
|
+
void server.pluginContainer.resolveId(s.import, path11.join(n.root, "index.html")).then((r) => {
|
|
5242
5404
|
if (r?.id) state.resolvedSharedPaths.set(r.id.split("?")[0], s.configKey);
|
|
5243
5405
|
}).catch(() => {
|
|
5244
5406
|
});
|