@fulgurjs/federation 6.11.2 → 6.11.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 +12 -0
- package/dist/bridge-app-vue.cjs +19 -7
- package/dist/bridge-app-vue.js +19 -7
- package/dist/bridge-router-vue.js +19 -7
- package/dist/cli.js +111 -18
- package/dist/index.cjs +170 -68
- package/dist/index.js +170 -68
- package/dist/runtime.js +1 -1
- package/docs/en/reference/errors.md +1 -1
- package/docs/zh/reference/errors.md +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# 当前发布说明
|
|
2
2
|
|
|
3
|
+
## 6.11.4
|
|
4
|
+
|
|
5
|
+
- 修复桥接初始导航对 Vue 子应用守卫重定向的误判:守卫在首次导航中加载用户/动态路由后做同路径 `replace` 规范化,或重定向到其他位置时,不再报 `MFU-033 子应用初始路由被守卫取消`;宿主按子应用最终位置同步(与 React 初始 loader 重定向同语义),只有守卫明确拒绝且位置未变化才仍报 MFU-033。
|
|
6
|
+
- 新增 3 条真实 vue-router 回归:同路径 replace 规范化、重定向到其他路径同步宿主、守卫明确拒绝仍报错;中英文 URL 同步指南与 MFU-033 错误码表同步说明。
|
|
7
|
+
|
|
8
|
+
## 6.11.3
|
|
9
|
+
|
|
10
|
+
- 修复公开入口在应用工厂中动态导入时,SDK 与业务工厂自动合并导致的生产 TLA 等待环;SDK 保持独立分组,保留用户合法的 manualChunks。
|
|
11
|
+
- Vue 声明生成按工具链能力使用官方程序的闭包检查/输出或 dev 增量缓存,避免对运行时动态装配的全部业务页面反复进行无关检查;保持真实 props、推导结果及错误定位。
|
|
12
|
+
- 日志、截图、Markdown 等非类型输入不再触发声明重生成;服务关闭时中止编译、等待退出后清理独占缓存,取消不再误触发系统强杀重试。
|
|
13
|
+
- 修复只有 Vue SFC 的工程被配置解析误报“没有输入”的问题,临时声明配置保留原工程的继承配置。
|
|
14
|
+
|
|
3
15
|
## 6.11.2
|
|
4
16
|
|
|
5
17
|
- 声明生成单次超时上限从固定 10 分钟改为:默认堆 10 分钟、提堆重试 30 分钟;`FG_DTS_TIMEOUT_MS`(毫秒)可覆盖。大型真实闭包在 8GB 堆下可运行 10 分钟以上,旧上限会在提堆重试阶段被超时强杀并误报为编译错误。
|
package/dist/bridge-app-vue.cjs
CHANGED
|
@@ -188,16 +188,28 @@ function connectVueBridgeRouter(routing, router, options = {}) {
|
|
|
188
188
|
};
|
|
189
189
|
const sync = connectChildNavigation(routing, (loc) => ready.then(() => apply(loc)), collapseConsecutiveReports(report));
|
|
190
190
|
const init = routing.getLocation();
|
|
191
|
-
const
|
|
191
|
+
const initPath = init.pathname + init.search + init.hash;
|
|
192
|
+
const ready = push.call(router, initPath).then(async (failure) => {
|
|
192
193
|
if (disposed) return;
|
|
193
|
-
|
|
194
|
-
|
|
194
|
+
const hostNow = routing.getLocation();
|
|
195
|
+
if (hostNow.pathname + hostNow.search + hostNow.hash !== initPath) {
|
|
196
|
+
await apply(hostNow);
|
|
195
197
|
return;
|
|
196
198
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
199
|
+
const childNow = router.currentRoute.value.fullPath;
|
|
200
|
+
if (failure) {
|
|
201
|
+
if (childNow === initPath) return;
|
|
202
|
+
const matched = router.currentRoute.value.matched;
|
|
203
|
+
const childResolved = !Array.isArray(matched) || matched.length > 0;
|
|
204
|
+
if (childResolved) {
|
|
205
|
+
await routing.navigate(locationFromPath(childNow), "replace");
|
|
206
|
+
await apply(routing.getLocation());
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
throw routingSyncError(spec, "\u5B50\u5E94\u7528\u521D\u59CB\u8DEF\u7531\u88AB\u5B88\u536B\u53D6\u6D88\u3002", []);
|
|
210
|
+
}
|
|
211
|
+
if (childNow !== initPath) {
|
|
212
|
+
await routing.navigate(locationFromPath(childNow), "replace");
|
|
201
213
|
await apply(routing.getLocation());
|
|
202
214
|
}
|
|
203
215
|
}).catch((cause) => {
|
package/dist/bridge-app-vue.js
CHANGED
|
@@ -115,16 +115,28 @@ function connectVueBridgeRouter(routing, router, options = {}) {
|
|
|
115
115
|
};
|
|
116
116
|
const sync = connectChildNavigation(routing, (loc) => ready.then(() => apply(loc)), collapseConsecutiveReports(report));
|
|
117
117
|
const init = routing.getLocation();
|
|
118
|
-
const
|
|
118
|
+
const initPath = init.pathname + init.search + init.hash;
|
|
119
|
+
const ready = push.call(router, initPath).then(async (failure) => {
|
|
119
120
|
if (disposed) return;
|
|
120
|
-
|
|
121
|
-
|
|
121
|
+
const hostNow = routing.getLocation();
|
|
122
|
+
if (hostNow.pathname + hostNow.search + hostNow.hash !== initPath) {
|
|
123
|
+
await apply(hostNow);
|
|
122
124
|
return;
|
|
123
125
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
const childNow = router.currentRoute.value.fullPath;
|
|
127
|
+
if (failure) {
|
|
128
|
+
if (childNow === initPath) return;
|
|
129
|
+
const matched = router.currentRoute.value.matched;
|
|
130
|
+
const childResolved = !Array.isArray(matched) || matched.length > 0;
|
|
131
|
+
if (childResolved) {
|
|
132
|
+
await routing.navigate(locationFromPath(childNow), "replace");
|
|
133
|
+
await apply(routing.getLocation());
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
throw routingSyncError(spec, "\u5B50\u5E94\u7528\u521D\u59CB\u8DEF\u7531\u88AB\u5B88\u536B\u53D6\u6D88\u3002", []);
|
|
137
|
+
}
|
|
138
|
+
if (childNow !== initPath) {
|
|
139
|
+
await routing.navigate(locationFromPath(childNow), "replace");
|
|
128
140
|
await apply(routing.getLocation());
|
|
129
141
|
}
|
|
130
142
|
}).catch((cause) => {
|
|
@@ -180,16 +180,28 @@ function connectVueBridgeRouter(routing, router, options = {}) {
|
|
|
180
180
|
};
|
|
181
181
|
const sync = connectChildNavigation(routing, (loc) => ready.then(() => apply(loc)), collapseConsecutiveReports(report));
|
|
182
182
|
const init = routing.getLocation();
|
|
183
|
-
const
|
|
183
|
+
const initPath = init.pathname + init.search + init.hash;
|
|
184
|
+
const ready = push.call(router, initPath).then(async (failure) => {
|
|
184
185
|
if (disposed) return;
|
|
185
|
-
|
|
186
|
-
|
|
186
|
+
const hostNow = routing.getLocation();
|
|
187
|
+
if (hostNow.pathname + hostNow.search + hostNow.hash !== initPath) {
|
|
188
|
+
await apply(hostNow);
|
|
187
189
|
return;
|
|
188
190
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
const childNow = router.currentRoute.value.fullPath;
|
|
192
|
+
if (failure) {
|
|
193
|
+
if (childNow === initPath) return;
|
|
194
|
+
const matched = router.currentRoute.value.matched;
|
|
195
|
+
const childResolved = !Array.isArray(matched) || matched.length > 0;
|
|
196
|
+
if (childResolved) {
|
|
197
|
+
await routing.navigate(locationFromPath(childNow), "replace");
|
|
198
|
+
await apply(routing.getLocation());
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
throw routingSyncError(spec, "\u5B50\u5E94\u7528\u521D\u59CB\u8DEF\u7531\u88AB\u5B88\u536B\u53D6\u6D88\u3002", []);
|
|
202
|
+
}
|
|
203
|
+
if (childNow !== initPath) {
|
|
204
|
+
await routing.navigate(locationFromPath(childNow), "replace");
|
|
193
205
|
await apply(routing.getLocation());
|
|
194
206
|
}
|
|
195
207
|
}).catch((cause) => {
|
package/dist/cli.js
CHANGED
|
@@ -3139,7 +3139,7 @@ var RUNTIME_VERSION;
|
|
|
3139
3139
|
var init_version = __esm({
|
|
3140
3140
|
"src/version.ts"() {
|
|
3141
3141
|
"use strict";
|
|
3142
|
-
RUNTIME_VERSION = "6.11.
|
|
3142
|
+
RUNTIME_VERSION = "6.11.4";
|
|
3143
3143
|
}
|
|
3144
3144
|
});
|
|
3145
3145
|
|
|
@@ -3634,6 +3634,67 @@ var init_dts_diagnostics = __esm({
|
|
|
3634
3634
|
}
|
|
3635
3635
|
});
|
|
3636
3636
|
|
|
3637
|
+
// src/dts-vue-program.ts
|
|
3638
|
+
function genVueDeclarationProgram() {
|
|
3639
|
+
return String.raw`
|
|
3640
|
+
const fs = require('node:fs');
|
|
3641
|
+
const path = require('node:path');
|
|
3642
|
+
const { createRequire } = require('node:module');
|
|
3643
|
+
const req = createRequire(path.join(process.cwd(), 'package.json'));
|
|
3644
|
+
const ts = req('typescript');
|
|
3645
|
+
const vue = req('vue-tsc');
|
|
3646
|
+
const configFile = process.argv[1];
|
|
3647
|
+
const closure = new Set(JSON.parse(process.argv[2]).map(file => path.resolve(file)));
|
|
3648
|
+
const raw = ts.readConfigFile(configFile, ts.sys.readFile);
|
|
3649
|
+
const parsed = ts.parseJsonConfigFileContent(raw.config, ts.sys, path.dirname(configFile), undefined, configFile, undefined, [
|
|
3650
|
+
{ extension: '.vue', isMixedContent: true, scriptKind: ts.ScriptKind.Deferred },
|
|
3651
|
+
]);
|
|
3652
|
+
// 不把 Vue 的映射后诊断序列化到 TS buildinfo;有损的位置不能用于闭包门禁。
|
|
3653
|
+
parsed.options.incremental = false;
|
|
3654
|
+
delete parsed.options.tsBuildInfoFile;
|
|
3655
|
+
const formatHost = {
|
|
3656
|
+
getCurrentDirectory: () => process.cwd(),
|
|
3657
|
+
getCanonicalFileName: file => file,
|
|
3658
|
+
getNewLine: () => '\n',
|
|
3659
|
+
};
|
|
3660
|
+
const diagnostics = [...(raw.error ? [raw.error] : []), ...parsed.errors];
|
|
3661
|
+
if (!diagnostics.length) {
|
|
3662
|
+
const program = vue.createProgram({
|
|
3663
|
+
rootNames: parsed.fileNames,
|
|
3664
|
+
options: parsed.options,
|
|
3665
|
+
host: ts.createCompilerHost(parsed.options),
|
|
3666
|
+
});
|
|
3667
|
+
diagnostics.push(...program.getOptionsDiagnostics(), ...program.getGlobalDiagnostics());
|
|
3668
|
+
const sources = program.getSourceFiles().filter(file => {
|
|
3669
|
+
const original = file.fileName.replace(/(\.vue)\.[cm]?[jt]sx?$/, '$1');
|
|
3670
|
+
return closure.has(path.resolve(original));
|
|
3671
|
+
});
|
|
3672
|
+
for (const file of sources) {
|
|
3673
|
+
diagnostics.push(...program.getSyntacticDiagnostics(file), ...program.getSemanticDiagnostics(file));
|
|
3674
|
+
if (!file.isDeclarationFile) {
|
|
3675
|
+
// 官方 emit 保留真实 props、重载和推导结果,绝不以手写接口或 any 代替。
|
|
3676
|
+
const emitted = program.emit(file, undefined, undefined, true);
|
|
3677
|
+
diagnostics.push(...emitted.diagnostics);
|
|
3678
|
+
if (emitted.emitSkipped) diagnostics.push({
|
|
3679
|
+
category: ts.DiagnosticCategory.Error, code: 90001,
|
|
3680
|
+
messageText: '暴露模块声明 emit 被编译器跳过:' + file.fileName,
|
|
3681
|
+
});
|
|
3682
|
+
}
|
|
3683
|
+
}
|
|
3684
|
+
}
|
|
3685
|
+
const errors = diagnostics.filter(diagnostic => diagnostic.category === ts.DiagnosticCategory.Error);
|
|
3686
|
+
if (errors.length) {
|
|
3687
|
+
process.stdout.write(ts.formatDiagnostics(errors, formatHost));
|
|
3688
|
+
process.exitCode = 1;
|
|
3689
|
+
}
|
|
3690
|
+
`;
|
|
3691
|
+
}
|
|
3692
|
+
var init_dts_vue_program = __esm({
|
|
3693
|
+
"src/dts-vue-program.ts"() {
|
|
3694
|
+
"use strict";
|
|
3695
|
+
}
|
|
3696
|
+
});
|
|
3697
|
+
|
|
3637
3698
|
// src/dts-shared.ts
|
|
3638
3699
|
function isSafeBundlePath(v) {
|
|
3639
3700
|
if (typeof v !== "string" || v.length === 0) return false;
|
|
@@ -3928,7 +3989,9 @@ function loadTsContext(root, ts, diagnostics) {
|
|
|
3928
3989
|
diagnostics.push(`tsconfig \u89E3\u6790\u5931\u8D25\uFF08${tsconfigFile}\uFF09\uFF1A${ts.flattenDiagnosticMessageText(raw.error.messageText, " ")}`);
|
|
3929
3990
|
return null;
|
|
3930
3991
|
}
|
|
3931
|
-
const parsed = ts.parseJsonConfigFileContent(raw.config, ts.sys, path6.dirname(tsconfigFile)
|
|
3992
|
+
const parsed = ts.parseJsonConfigFileContent(raw.config, ts.sys, path6.dirname(tsconfigFile), void 0, void 0, void 0, [
|
|
3993
|
+
{ extension: ".vue", isMixedContent: true, scriptKind: ts.ScriptKind.Deferred }
|
|
3994
|
+
]);
|
|
3932
3995
|
const co = { ...parsed.options };
|
|
3933
3996
|
if (typeof co.baseUrl === "string" && !path6.isAbsolute(co.baseUrl)) {
|
|
3934
3997
|
co.baseUrl = path6.resolve(path6.dirname(tsconfigFile), co.baseUrl);
|
|
@@ -4016,11 +4079,17 @@ async function generateTypesBundle(input) {
|
|
|
4016
4079
|
const vueTscPkg = JSON.parse(fs6.readFileSync(path6.join(vueTscDir, "package.json"), "utf8"));
|
|
4017
4080
|
const binRel = vueTscPkg.bin?.["vue-tsc"] ?? vueTscPkg.bin?.["vue-tsc.js"] ?? "bin/vue-tsc.js";
|
|
4018
4081
|
const binPath = path6.resolve(vueTscDir, binRel);
|
|
4082
|
+
const scopedVueProgram = /^1\./.test(vueTscPkg.version);
|
|
4019
4083
|
if (!fs6.existsSync(binPath)) {
|
|
4020
4084
|
return { ok: false, diagnostics: [`vue-tsc \u5165\u53E3\u4E0D\u5B58\u5728\uFF08${binPath}\uFF09\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5 vue-tsc\u3002`] };
|
|
4021
4085
|
}
|
|
4022
|
-
const
|
|
4023
|
-
|
|
4086
|
+
const cacheDir = input.incrementalDir;
|
|
4087
|
+
if (cacheDir) fs6.mkdirSync(cacheDir, { recursive: true });
|
|
4088
|
+
const tmpCfg = path6.join(root, `.fulgurjs-types-tsconfig-${cacheDir ? path6.basename(cacheDir) : `${process.pid}-${crypto.randomUUID()}`}.json`);
|
|
4089
|
+
const outDir = cacheDir ? path6.join(cacheDir, "emit") : fs6.mkdtempSync(path6.join(root, "node_modules", ".fulgurjs-types-emit-"));
|
|
4090
|
+
const clearOutput = () => {
|
|
4091
|
+
if (!cacheDir) fs6.rmSync(outDir, { recursive: true, force: true });
|
|
4092
|
+
};
|
|
4024
4093
|
const baseCo = { ...rawOptionsWithInherited(ctx) };
|
|
4025
4094
|
delete baseCo.noEmit;
|
|
4026
4095
|
delete baseCo.incremental;
|
|
@@ -4031,6 +4100,7 @@ async function generateTypesBundle(input) {
|
|
|
4031
4100
|
delete baseCo.extends;
|
|
4032
4101
|
const resolvedTypeFiles = resolveTypesEntries(root, baseCo, diagnostics);
|
|
4033
4102
|
fs6.writeFileSync(tmpCfg, JSON.stringify({
|
|
4103
|
+
...ctx.tsconfigFile ? { extends: ctx.tsconfigFile } : {},
|
|
4034
4104
|
compilerOptions: {
|
|
4035
4105
|
...baseCo,
|
|
4036
4106
|
noEmit: false,
|
|
@@ -4042,7 +4112,8 @@ async function generateTypesBundle(input) {
|
|
|
4042
4112
|
declarationMap: false,
|
|
4043
4113
|
sourceMap: false,
|
|
4044
4114
|
outDir,
|
|
4045
|
-
rootDir
|
|
4115
|
+
rootDir,
|
|
4116
|
+
...cacheDir && !scopedVueProgram ? { incremental: true, tsBuildInfoFile: path6.join(cacheDir, "state.tsbuildinfo") } : {}
|
|
4046
4117
|
},
|
|
4047
4118
|
include: [
|
|
4048
4119
|
...entryFiles.map((f) => path6.relative(root, f)),
|
|
@@ -4061,21 +4132,42 @@ async function generateTypesBundle(input) {
|
|
|
4061
4132
|
};
|
|
4062
4133
|
try {
|
|
4063
4134
|
const attempt = (extraNodeArgs) => new Promise((resolve2) => {
|
|
4135
|
+
if (signal?.aborted) {
|
|
4136
|
+
resolve2({ err: Object.assign(new Error("\u58F0\u660E\u751F\u6210\u5DF2\u53D6\u6D88"), { code: "ABORT_ERR" }), stdout: "", stderr: "" });
|
|
4137
|
+
return;
|
|
4138
|
+
}
|
|
4064
4139
|
const child = execFile(
|
|
4065
4140
|
process.execPath,
|
|
4066
|
-
[...extraNodeArgs, binPath, "-p", tmpCfg, "--noErrorTruncation", "--pretty", "false"],
|
|
4141
|
+
[...extraNodeArgs, ...scopedVueProgram ? ["--eval", genVueDeclarationProgram(), tmpCfg, JSON.stringify([...closure])] : [binPath, "-p", tmpCfg, "--noErrorTruncation", "--pretty", "false"]],
|
|
4067
4142
|
{ cwd: root, encoding: "utf8", maxBuffer: 64 * 1024 * 1024, timeout: timeoutFor(extraNodeArgs.length > 0) },
|
|
4068
|
-
(err2, stdout2, stderr2) =>
|
|
4143
|
+
(err2, stdout2, stderr2) => {
|
|
4144
|
+
signal?.removeEventListener("abort", abort);
|
|
4145
|
+
resolve2({ err: err2 ?? null, stdout: String(stdout2 ?? ""), stderr: String(stderr2 ?? "") });
|
|
4146
|
+
}
|
|
4069
4147
|
);
|
|
4070
|
-
|
|
4148
|
+
const abort = () => {
|
|
4149
|
+
child.kill("SIGKILL");
|
|
4150
|
+
};
|
|
4151
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
4152
|
+
if (signal?.aborted) abort();
|
|
4071
4153
|
});
|
|
4072
|
-
|
|
4154
|
+
const heapMarker = cacheDir ? path6.join(cacheDir, "raised-heap") : void 0;
|
|
4155
|
+
const raisedArgs = [`--max-old-space-size=${process.env.FG_DTS_MAX_OLD_SPACE ?? "8192"}`];
|
|
4156
|
+
const initialArgs = heapMarker && fs6.existsSync(heapMarker) ? raisedArgs : [];
|
|
4157
|
+
let { err, stdout, stderr } = await attempt(initialArgs);
|
|
4158
|
+
if (signal?.aborted) {
|
|
4159
|
+
clearOutput();
|
|
4160
|
+
return { ok: false, diagnostics: ["vue-tsc \u58F0\u660E\u751F\u6210\u88AB\u4E2D\u6B62\uFF08dev server \u5173\u95ED\uFF09\u3002"] };
|
|
4161
|
+
}
|
|
4073
4162
|
if (err && isOom(stderr)) {
|
|
4074
4163
|
const raised = process.env.FG_DTS_MAX_OLD_SPACE ?? "8192";
|
|
4075
|
-
|
|
4076
|
-
|
|
4164
|
+
if (initialArgs.length === 0) {
|
|
4165
|
+
diagnostics.push(`vue-tsc \u58F0\u660E\u751F\u6210\u5728\u9ED8\u8BA4\u5806\u4E0B\u5185\u5B58\u4E0D\u8DB3\uFF08V8 OOM\uFF09\uFF0C\u4EE5 --max-old-space-size=${raised}MB \u91CD\u8BD5\u3002`);
|
|
4166
|
+
if (heapMarker) fs6.writeFileSync(heapMarker, "");
|
|
4167
|
+
({ err, stdout, stderr } = await attempt([`--max-old-space-size=${raised}`]));
|
|
4168
|
+
}
|
|
4077
4169
|
if (err && isOom(stderr)) {
|
|
4078
|
-
|
|
4170
|
+
clearOutput();
|
|
4079
4171
|
diagnostics.push(
|
|
4080
4172
|
"vue-tsc \u58F0\u660E\u751F\u6210\u5185\u5B58\u4E0D\u8DB3\uFF08\u63D0\u9AD8\u5806\u540E\u4ECD OOM\uFF09\u2014\u2014\u7C7B\u578B\u8D44\u6E90\u672A\u4EA7\u51FA\u3002",
|
|
4081
4173
|
"\u4FEE\u6CD5\uFF1A\u7528\u73AF\u5883\u53D8\u91CF FG_DTS_MAX_OLD_SPACE \u63D0\u9AD8\u751F\u6210\u5668\u5806\uFF08\u5982 16384\uFF09\uFF0C\u6216\u7F29\u5C0F\u66B4\u9732\u6A21\u5757\u7684\u9759\u6001\u4F9D\u8D56\u9762\u540E\u91CD\u8BD5\u3002"
|
|
@@ -4088,7 +4180,7 @@ async function generateTypesBundle(input) {
|
|
|
4088
4180
|
diagnostics.push(`vue-tsc \u58F0\u660E\u751F\u6210\u8D85\u8FC7\u5355\u6B21\u4E0A\u9650\uFF08${Math.round(timeoutFor(false) / 6e4)} \u5206\u949F\uFF09\u88AB\u5F3A\u6740\uFF0C\u4EE5\u63D0\u5806 + \u66F4\u957F\u4E0A\u9650\u91CD\u8BD5\u3002`);
|
|
4089
4181
|
({ err, stdout, stderr } = await attempt([`--max-old-space-size=${raised}`]));
|
|
4090
4182
|
if (err && isTimeoutKill(err) && !isOom(stderr) && !/error TS\d+/i.test(stdout + "\n" + stderr)) {
|
|
4091
|
-
|
|
4183
|
+
clearOutput();
|
|
4092
4184
|
diagnostics.push(
|
|
4093
4185
|
`vue-tsc \u58F0\u660E\u751F\u6210\u518D\u6B21\u8D85\u65F6\uFF08\u5355\u6B21\u4E0A\u9650 ${Math.round(timeoutFor(true) / 6e4)} \u5206\u949F\uFF09\u2014\u2014\u7C7B\u578B\u8D44\u6E90\u672A\u4EA7\u51FA\u3002`,
|
|
4094
4186
|
"\u4FEE\u6CD5\uFF1A\u7528\u73AF\u5883\u53D8\u91CF FG_DTS_TIMEOUT_MS \u63D0\u9AD8\u4E0A\u9650\uFF08\u6BEB\u79D2\uFF0C\u5982 3600000\uFF09\uFF0C\u6216\u7F29\u5C0F\u66B4\u9732\u6A21\u5757\u7684\u9759\u6001\u4F9D\u8D56\u9762\u3002"
|
|
@@ -4100,7 +4192,7 @@ async function generateTypesBundle(input) {
|
|
|
4100
4192
|
diagnostics.push(`vue-tsc \u58F0\u660E\u751F\u6210\u8FDB\u7A0B\u88AB\u7CFB\u7EDF\u7EC8\u6B62\uFF08signal=${err.signal ?? "Killed"}\uFF0C\u65E0 TypeScript \u8BCA\u65AD\u8F93\u51FA\uFF09\uFF0C\u91CD\u8BD5\u4E00\u6B21\u3002`);
|
|
4101
4193
|
({ err, stdout, stderr } = await attempt([]));
|
|
4102
4194
|
if (err && isSystemKilled(err, stdout, stderr) && !isTimeoutKill(err)) {
|
|
4103
|
-
|
|
4195
|
+
clearOutput();
|
|
4104
4196
|
diagnostics.push(
|
|
4105
4197
|
"vue-tsc \u58F0\u660E\u751F\u6210\u8FDB\u7A0B\u518D\u6B21\u88AB\u7CFB\u7EDF\u7EC8\u6B62\u2014\u2014\u7C7B\u578B\u8D44\u6E90\u672A\u4EA7\u51FA\u3002",
|
|
4106
4198
|
"\u5E38\u89C1\u539F\u56E0\uFF1A\u673A\u5668\u5185\u5B58\u538B\u529B\u4E0B\u88AB OS \u7EC8\u6B62\uFF08\u5982\u540C\u65F6\u8FD0\u884C\u591A\u4E2A\u5927\u578B\u58F0\u660E\u751F\u6210/\u6784\u5EFA\uFF09\uFF0C\u6216\u8FDB\u7A0B\u88AB\u5916\u90E8 kill\u3002",
|
|
@@ -4112,7 +4204,7 @@ async function generateTypesBundle(input) {
|
|
|
4112
4204
|
if (err) {
|
|
4113
4205
|
if (signal?.aborted) {
|
|
4114
4206
|
diagnostics.push("vue-tsc \u58F0\u660E\u751F\u6210\u88AB\u4E2D\u6B62\uFF08dev server \u5173\u95ED\uFF09\u3002");
|
|
4115
|
-
|
|
4207
|
+
clearOutput();
|
|
4116
4208
|
return { ok: false, diagnostics };
|
|
4117
4209
|
}
|
|
4118
4210
|
const errFiles = parseErrorFiles(stdout, root);
|
|
@@ -4122,19 +4214,19 @@ async function generateTypesBundle(input) {
|
|
|
4122
4214
|
const tail = formatDeclarationDiagnostics(stdout, stderr, err.message, root, closure);
|
|
4123
4215
|
diagnostics.push(`vue-tsc \u58F0\u660E\u751F\u6210\u5931\u8D25\uFF08\u66B4\u9732\u95ED\u5305\u5185\u5B58\u5728\u7F16\u8BD1\u9519\u8BEF\uFF09\u2014\u2014\u7C7B\u578B\u8D44\u6E90\u672A\u4EA7\u51FA\uFF1A
|
|
4124
4216
|
${tail}`);
|
|
4125
|
-
|
|
4217
|
+
clearOutput();
|
|
4126
4218
|
return { ok: false, diagnostics };
|
|
4127
4219
|
}
|
|
4128
4220
|
}
|
|
4129
4221
|
} catch {
|
|
4130
|
-
|
|
4222
|
+
clearOutput();
|
|
4131
4223
|
fs6.rmSync(tmpCfg, { force: true });
|
|
4132
4224
|
return { ok: false, diagnostics };
|
|
4133
4225
|
} finally {
|
|
4134
4226
|
fs6.rmSync(tmpCfg, { force: true });
|
|
4135
4227
|
}
|
|
4136
4228
|
collectEmitted(ts, outDir, rootDir, emitted, closure);
|
|
4137
|
-
|
|
4229
|
+
clearOutput();
|
|
4138
4230
|
} else {
|
|
4139
4231
|
const outDir = fs6.mkdtempSync(path6.join(root, "node_modules", ".fulgurjs-types-emit-"));
|
|
4140
4232
|
const program = ts.createProgram([...entryFiles, ...ctx.ambientInputs, ...resolveTypesEntries(root, ctx.rawOptions, [])], {
|
|
@@ -4359,6 +4451,7 @@ var init_dts_generate = __esm({
|
|
|
4359
4451
|
"src/dts-generate.ts"() {
|
|
4360
4452
|
"use strict";
|
|
4361
4453
|
init_dts_diagnostics();
|
|
4454
|
+
init_dts_vue_program();
|
|
4362
4455
|
init_dts_shared();
|
|
4363
4456
|
INHERITABLE_KEYS = [
|
|
4364
4457
|
"paths",
|