Skip to content

Commit 6a84b9f

Browse files
committed
combine __setupedGlobalTypes, __setupedGlobalTypesAbsolutePath
1 parent df02fec commit 6a84b9f

File tree

4 files changed

+26
-22
lines changed

4 files changed

+26
-22
lines changed

packages/language-core/lib/codegen/script/index.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,11 @@ export function* generateScript(options: ScriptCodegenOptions): Generator<Code,
5656
const ctx = createScriptCodegenContext(options);
5757

5858
if (options.vueCompilerOptions.__setupedGlobalTypes) {
59-
if (options.vueCompilerOptions.__setupedGlobalTypesAbsolutePath) {
60-
yield `/// <reference types="${options.vueCompilerOptions.__setupedGlobalTypesAbsolutePath}" />${newLine}`;
61-
} else {
59+
const { absolutePath } = options.vueCompilerOptions.__setupedGlobalTypes;
60+
if (absolutePath) {
61+
yield `/// <reference types="${absolutePath}" />${newLine}`;
62+
}
63+
else {
6264
yield `/// <reference types=".vue-global-types/${options.vueCompilerOptions.lib}_${options.vueCompilerOptions.target}_${options.vueCompilerOptions.strictTemplates}.d.ts" />${newLine}`;
6365
}
6466
}

packages/language-core/lib/types.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,9 @@ export interface VueCompilerOptions {
5555
experimentalModelPropName: Record<string, Record<string, boolean | Record<string, string> | Record<string, string>[]>>;
5656

5757
// internal
58-
__setupedGlobalTypes?: boolean;
59-
__setupedGlobalTypesAbsolutePath?: string;
58+
__setupedGlobalTypes?: {
59+
absolutePath?: string;
60+
};
6061
__test?: boolean;
6162
}
6263

packages/language-core/lib/utils/ts.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,13 @@ export function createParsedCommandLineByJson(
3636

3737
const resolvedVueOptions = resolveVueCompilerOptions(vueOptions);
3838
if (skipGlobalTypesSetup) {
39-
resolvedVueOptions.__setupedGlobalTypes = true;
39+
resolvedVueOptions.__setupedGlobalTypes = {};
4040
}
4141
else {
42-
const setupResult = setupGlobalTypes(rootDir, resolvedVueOptions, parseConfigHost);
43-
resolvedVueOptions.__setupedGlobalTypes = setupResult.done;
44-
resolvedVueOptions.__setupedGlobalTypesAbsolutePath = setupResult.absolutePath;
42+
const absolutePath = setupGlobalTypes(rootDir, resolvedVueOptions, parseConfigHost);
43+
if (absolutePath) {
44+
resolvedVueOptions.__setupedGlobalTypes = { absolutePath };
45+
}
4546
}
4647
const parsed = ts.parseJsonConfigFileContent(
4748
json,
@@ -93,12 +94,13 @@ export function createParsedCommandLine(
9394

9495
const resolvedVueOptions = resolveVueCompilerOptions(vueOptions);
9596
if (skipGlobalTypesSetup) {
96-
resolvedVueOptions.__setupedGlobalTypes = true;
97+
resolvedVueOptions.__setupedGlobalTypes = {};
9798
}
9899
else {
99-
const setupResult = setupGlobalTypes(path.dirname(tsConfigPath), resolvedVueOptions, parseConfigHost);
100-
resolvedVueOptions.__setupedGlobalTypes = setupResult.done;
101-
resolvedVueOptions.__setupedGlobalTypesAbsolutePath = setupResult.absolutePath;
100+
const absolutePath = setupGlobalTypes(path.dirname(tsConfigPath), resolvedVueOptions, parseConfigHost);
101+
if (absolutePath) {
102+
resolvedVueOptions.__setupedGlobalTypes = { absolutePath };
103+
}
102104
}
103105
const parsed = ts.parseJsonSourceFileConfigFileContent(
104106
config,
@@ -285,9 +287,9 @@ export function resolveVueCompilerOptions(vueOptions: Partial<VueCompilerOptions
285287
export function setupGlobalTypes(rootDir: string, vueOptions: VueCompilerOptions, host: {
286288
fileExists(path: string): boolean;
287289
writeFile?(path: string, data: string): void;
288-
}): { done: boolean; absolutePath?: string; } {
290+
}) {
289291
if (!host.writeFile) {
290-
return { done: false };
292+
return;
291293
}
292294
try {
293295
let dir = rootDir;
@@ -301,8 +303,6 @@ export function setupGlobalTypes(rootDir: string, vueOptions: VueCompilerOptions
301303
const globalTypesPath = path.join(dir, 'node_modules', '.vue-global-types', `${vueOptions.lib}_${vueOptions.target}_${vueOptions.strictTemplates}.d.ts`);
302304
const globalTypesContents = `// @ts-nocheck\nexport {};\n` + generateGlobalTypes(vueOptions.lib, vueOptions.target, vueOptions.strictTemplates);
303305
host.writeFile(globalTypesPath, globalTypesContents);
304-
return { done: true, absolutePath: globalTypesPath };
305-
} catch {
306-
return { done: false };
307-
}
306+
return globalTypesPath;
307+
} catch { }
308308
}

packages/tsc/tests/dts.spec.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ describe('vue-tsc-dts', () => {
3333
}
3434
else {
3535
vueOptions = vue.resolveVueCompilerOptions({ extensions: ['.vue', '.cext'] });
36-
const globalTypesInfo = vue.setupGlobalTypes(workspace.replace(windowsPathReg, '/'), vueOptions, ts.sys);
37-
vueOptions.__setupedGlobalTypes = globalTypesInfo.done;
38-
vueOptions.__setupedGlobalTypesAbsolutePath = globalTypesInfo.absolutePath;
36+
const absolutePath = vue.setupGlobalTypes(workspace.replace(windowsPathReg, '/'), vueOptions, ts.sys);
37+
if (absolutePath) {
38+
vueOptions.__setupedGlobalTypes = { absolutePath };
39+
}
3940
}
4041
const vueLanguagePlugin = vue.createVueLanguagePlugin<string>(
4142
ts,

0 commit comments

Comments
 (0)