From a66ee3629d240ca6b9b64b45fd0c6bb01bb7b6e6 Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Sun, 18 Dec 2022 09:23:10 +0800 Subject: [PATCH] refactor(vue-tsc): experimentalTscProgramCallbacks -> hooks --- .../vue-language-core/schemas/vue-tsconfig.schema.json | 2 +- vue-language-tools/vue-language-core/src/types.ts | 1 + vue-language-tools/vue-language-core/src/utils/ts.ts | 1 + vue-language-tools/vue-tsc/bin/vue-tsc.js | 2 +- vue-language-tools/vue-tsc/src/index.ts | 8 ++++---- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/vue-language-tools/vue-language-core/schemas/vue-tsconfig.schema.json b/vue-language-tools/vue-language-core/schemas/vue-tsconfig.schema.json index 3fe6bc6ef..fcda48dbc 100644 --- a/vue-language-tools/vue-language-core/schemas/vue-tsconfig.schema.json +++ b/vue-language-tools/vue-language-core/schemas/vue-tsconfig.schema.json @@ -107,7 +107,7 @@ }, "markdownDescription": "https://github.com/johnsoncodehk/volar/issues/1969" }, - "experimentalTscProgramCallbacks": { + "hooks": { "type": "array", "markdownDescription": "https://github.com/johnsoncodehk/volar/pull/2217" } diff --git a/vue-language-tools/vue-language-core/src/types.ts b/vue-language-tools/vue-language-core/src/types.ts index c3d994f4f..acc7ad3ed 100644 --- a/vue-language-tools/vue-language-core/src/types.ts +++ b/vue-language-tools/vue-language-core/src/types.ts @@ -24,6 +24,7 @@ export interface ResolvedVueCompilerOptions { htmlAttributes: string[]; optionsWrapper: [string, string] | []; plugins: string[]; + hooks: string[]; narrowingTypesInInlineHandlers: boolean; // experimental diff --git a/vue-language-tools/vue-language-core/src/utils/ts.ts b/vue-language-tools/vue-language-core/src/utils/ts.ts index 404bc3ac8..4eaefeb14 100644 --- a/vue-language-tools/vue-language-core/src/utils/ts.ts +++ b/vue-language-tools/vue-language-core/src/utils/ts.ts @@ -135,6 +135,7 @@ export function resolveVueCompilerOptions(vueOptions: VueCompilerOptions): Resol ), narrowingTypesInInlineHandlers: vueOptions.narrowingTypesInInlineHandlers ?? false, plugins: vueOptions.plugins ?? [], + hooks: vueOptions.hooks ?? [], // experimental experimentalResolveStyleCssClasses: vueOptions.experimentalResolveStyleCssClasses ?? 'scoped', diff --git a/vue-language-tools/vue-tsc/bin/vue-tsc.js b/vue-language-tools/vue-tsc/bin/vue-tsc.js index 5c213232f..96acc1f2e 100755 --- a/vue-language-tools/vue-tsc/bin/vue-tsc.js +++ b/vue-language-tools/vue-tsc/bin/vue-tsc.js @@ -39,7 +39,7 @@ fs.readFileSync = (...args) => { require(tscPath); } catch (err) { - if (err === 'tscProgramCallback') { + if (err === 'hook') { state.lastTscProgramCallback.worker.then(main); } else { diff --git a/vue-language-tools/vue-tsc/src/index.ts b/vue-language-tools/vue-tsc/src/index.ts index 4dd0282ec..c38b7efc2 100644 --- a/vue-language-tools/vue-tsc/src/index.ts +++ b/vue-language-tools/vue-tsc/src/index.ts @@ -135,10 +135,10 @@ export function createProgram( } const vueCompilerOptions = program.__vue.languageServiceHost.getVueCompilationSettings(); - if (vueCompilerOptions.experimentalTscProgramCallbacks) { + if (vueCompilerOptions.hooks) { const index = (state.lastTscProgramCallback?.index ?? -1) + 1; - if (index < vueCompilerOptions.experimentalTscProgramCallbacks.length) { - const cbPath = vueCompilerOptions.experimentalTscProgramCallbacks[index]; + if (index < vueCompilerOptions.hooks.length) { + const cbPath = vueCompilerOptions.hooks[index]; const dir = program.__vue.languageServiceHost.getCurrentDirectory(); const cb = require(require.resolve(cbPath, { paths: [dir] })); state.lastTscProgramCallback = { @@ -146,7 +146,7 @@ export function createProgram( index, worker: (async () => await cb(program))(), }; - throw 'tscProgramCallback'; + throw 'hook'; } }