Skip to content

Commit df02fec

Browse files
committed
refactor: remove duplicated code
1 parent 11e9c83 commit df02fec

File tree

2 files changed

+13
-33
lines changed

2 files changed

+13
-33
lines changed

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

Lines changed: 10 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ export function createParsedCommandLineByJson(
3939
resolvedVueOptions.__setupedGlobalTypes = true;
4040
}
4141
else {
42-
resolvedVueOptions.__setupedGlobalTypes = setupGlobalTypes(rootDir, resolvedVueOptions, parseConfigHost);
43-
resolvedVueOptions.__setupedGlobalTypesAbsolutePath = getSetupedGlobalTypesAbsolutePath(rootDir, resolvedVueOptions, parseConfigHost);
42+
const setupResult = setupGlobalTypes(rootDir, resolvedVueOptions, parseConfigHost);
43+
resolvedVueOptions.__setupedGlobalTypes = setupResult.done;
44+
resolvedVueOptions.__setupedGlobalTypesAbsolutePath = setupResult.absolutePath;
4445
}
4546
const parsed = ts.parseJsonConfigFileContent(
4647
json,
@@ -95,8 +96,9 @@ export function createParsedCommandLine(
9596
resolvedVueOptions.__setupedGlobalTypes = true;
9697
}
9798
else {
98-
resolvedVueOptions.__setupedGlobalTypes = setupGlobalTypes(path.dirname(tsConfigPath), resolvedVueOptions, parseConfigHost);
99-
resolvedVueOptions.__setupedGlobalTypesAbsolutePath = getSetupedGlobalTypesAbsolutePath(path.dirname(tsConfigPath), resolvedVueOptions, parseConfigHost);
99+
const setupResult = setupGlobalTypes(path.dirname(tsConfigPath), resolvedVueOptions, parseConfigHost);
100+
resolvedVueOptions.__setupedGlobalTypes = setupResult.done;
101+
resolvedVueOptions.__setupedGlobalTypesAbsolutePath = setupResult.absolutePath;
100102
}
101103
const parsed = ts.parseJsonSourceFileConfigFileContent(
102104
config,
@@ -283,9 +285,9 @@ export function resolveVueCompilerOptions(vueOptions: Partial<VueCompilerOptions
283285
export function setupGlobalTypes(rootDir: string, vueOptions: VueCompilerOptions, host: {
284286
fileExists(path: string): boolean;
285287
writeFile?(path: string, data: string): void;
286-
}) {
288+
}): { done: boolean; absolutePath?: string; } {
287289
if (!host.writeFile) {
288-
return false;
290+
return { done: false };
289291
}
290292
try {
291293
let dir = rootDir;
@@ -299,32 +301,8 @@ export function setupGlobalTypes(rootDir: string, vueOptions: VueCompilerOptions
299301
const globalTypesPath = path.join(dir, 'node_modules', '.vue-global-types', `${vueOptions.lib}_${vueOptions.target}_${vueOptions.strictTemplates}.d.ts`);
300302
const globalTypesContents = `// @ts-nocheck\nexport {};\n` + generateGlobalTypes(vueOptions.lib, vueOptions.target, vueOptions.strictTemplates);
301303
host.writeFile(globalTypesPath, globalTypesContents);
302-
return true;
304+
return { done: true, absolutePath: globalTypesPath };
303305
} catch {
304-
return false;
305-
}
306-
}
307-
308-
function getSetupedGlobalTypesAbsolutePath(rootDir: string, vueOptions: VueCompilerOptions, host: {
309-
fileExists(path: string): boolean;
310-
writeFile?(path: string, data: string): void;
311-
}) {
312-
try {
313-
let dir = rootDir;
314-
315-
while (!host.fileExists(path.posix.join(dir, 'node_modules', vueOptions.lib, 'package.json'))) {
316-
317-
const parentDir = path.posix.dirname(dir);
318-
if (dir === parentDir) {
319-
throw 0;
320-
}
321-
dir = parentDir;
322-
}
323-
const globalTypesPath = path.posix.join(dir, 'node_modules', '.vue-global-types', `${vueOptions.lib}_${vueOptions.target}_${vueOptions.strictTemplates}.d.ts`);
324-
325-
return globalTypesPath;
326-
}
327-
catch {
328-
return '';
306+
return { done: false };
329307
}
330308
}

packages/tsc/tests/dts.spec.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ describe('vue-tsc-dts', () => {
3333
}
3434
else {
3535
vueOptions = vue.resolveVueCompilerOptions({ extensions: ['.vue', '.cext'] });
36-
vueOptions.__setupedGlobalTypes = vue.setupGlobalTypes(workspace.replace(windowsPathReg, '/'), vueOptions, ts.sys);
36+
const globalTypesInfo = vue.setupGlobalTypes(workspace.replace(windowsPathReg, '/'), vueOptions, ts.sys);
37+
vueOptions.__setupedGlobalTypes = globalTypesInfo.done;
38+
vueOptions.__setupedGlobalTypesAbsolutePath = globalTypesInfo.absolutePath;
3739
}
3840
const vueLanguagePlugin = vue.createVueLanguagePlugin<string>(
3941
ts,

0 commit comments

Comments
 (0)