['length'] ? [any] : [];
diff --git a/packages/language-core/lib/codegen/localTypes.ts b/packages/language-core/lib/codegen/localTypes.ts
index 9f0b0009f8..509f707898 100644
--- a/packages/language-core/lib/codegen/localTypes.ts
+++ b/packages/language-core/lib/codegen/localTypes.ts
@@ -1,5 +1,4 @@
import type { VueCompilerOptions } from '../types';
-import { getSlotsPropertyName } from '../utils/shared';
import { endOfLine } from './utils';
export function getLocalTypesGenerator(vueCompilerOptions: VueCompilerOptions) {
@@ -32,7 +31,7 @@ type __VLS_WithDefaults = {
() => `
type __VLS_WithSlots = T & {
new(): {
- ${getSlotsPropertyName(vueCompilerOptions.target)}: S;
+ $slots: S;
${vueCompilerOptions.jsxSlots ? `$props: ${PropsChildren.name};` : ''}
}
};
diff --git a/packages/language-core/lib/codegen/script/scriptSetup.ts b/packages/language-core/lib/codegen/script/scriptSetup.ts
index d886f8ee5d..072cd70a02 100644
--- a/packages/language-core/lib/codegen/script/scriptSetup.ts
+++ b/packages/language-core/lib/codegen/script/scriptSetup.ts
@@ -433,11 +433,9 @@ function* generateComponentProps(
yield `type __VLS_BuiltInPublicProps = ${options.vueCompilerOptions.target >= 3.4
? `import('${options.vueCompilerOptions.lib}').PublicProps`
- : options.vueCompilerOptions.target >= 3.0
- ? `import('${options.vueCompilerOptions.lib}').VNodeProps`
- + ` & import('${options.vueCompilerOptions.lib}').AllowedComponentProps`
- + ` & import('${options.vueCompilerOptions.lib}').ComponentCustomProps`
- : `globalThis.JSX.IntrinsicAttributes`
+ : `import('${options.vueCompilerOptions.lib}').VNodeProps`
+ + ` & import('${options.vueCompilerOptions.lib}').AllowedComponentProps`
+ + ` & import('${options.vueCompilerOptions.lib}').ComponentCustomProps`
}`;
yield endOfLine;
diff --git a/packages/language-core/lib/codegen/template/element.ts b/packages/language-core/lib/codegen/template/element.ts
index 511a6a5f57..fe4d7670ab 100644
--- a/packages/language-core/lib/codegen/template/element.ts
+++ b/packages/language-core/lib/codegen/template/element.ts
@@ -1,7 +1,7 @@
import * as CompilerDOM from '@vue/compiler-dom';
import { camelize, capitalize } from '@vue/shared';
import type { Code, VueCodeInformation } from '../../types';
-import { getSlotsPropertyName, hyphenateTag } from '../../utils/shared';
+import { hyphenateTag } from '../../utils/shared';
import { codeFeatures } from '../codeFeatures';
import { createVBindShorthandInlayHintInfo } from '../inlayHints';
import { endOfLine, identifierRegex, newLine, normalizeAttributeValue } from '../utils';
@@ -143,9 +143,7 @@ export function* generateComponent(
else if (!isComponentTag) {
yield `const ${componentOriginalVar} = ({} as __VLS_WithComponent<'${getCanonicalComponentName(node.tag)}', __VLS_LocalComponents, `;
if (options.selfComponentName && possibleOriginalNames.includes(options.selfComponentName)) {
- yield `typeof __VLS_self & (new () => { `
- + getSlotsPropertyName(options.vueCompilerOptions.target)
- + `: __VLS_Slots }), `;
+ yield `typeof __VLS_self & (new () => { $slots: __VLS_Slots }), `;
}
else {
yield `void, `;
diff --git a/packages/language-core/lib/codegen/template/elementProps.ts b/packages/language-core/lib/codegen/template/elementProps.ts
index f02ff0f46a..8d9c559e2d 100644
--- a/packages/language-core/lib/codegen/template/elementProps.ts
+++ b/packages/language-core/lib/codegen/template/elementProps.ts
@@ -187,15 +187,7 @@ export function* generateElementProps(
}
}
else if (prop.type === CompilerDOM.NodeTypes.ATTRIBUTE) {
- if (
- options.vueCompilerOptions.dataAttributes.some(pattern => minimatch(prop.name, pattern))
- // Vue 2 Transition doesn't support "persisted" property but `@vue/compiler-dom` always adds it (#3881)
- || (
- options.vueCompilerOptions.target < 3
- && prop.name === 'persisted'
- && node.tag.toLowerCase() === 'transition'
- )
- ) {
+ if (options.vueCompilerOptions.dataAttributes.some(pattern => minimatch(prop.name, pattern))) {
continue;
}
@@ -436,5 +428,5 @@ function getModelPropName(node: CompilerDOM.ElementNode, vueCompilerOptions: Vue
}
}
- return vueCompilerOptions.target < 3 ? 'value' : 'modelValue';
+ return 'modelValue';
}
diff --git a/packages/language-core/lib/codegen/template/index.ts b/packages/language-core/lib/codegen/template/index.ts
index b0d674cf5c..138d2e6cc1 100644
--- a/packages/language-core/lib/codegen/template/index.ts
+++ b/packages/language-core/lib/codegen/template/index.ts
@@ -1,7 +1,6 @@
import * as CompilerDOM from '@vue/compiler-dom';
import type * as ts from 'typescript';
import type { Code, Sfc, VueCompilerOptions } from '../../types';
-import { getSlotsPropertyName } from '../../utils/shared';
import { endOfLine, newLine } from '../utils';
import { wrapWith } from '../utils/wrapWith';
import { createTemplateCodegenContext, type TemplateCodegenContext } from './context';
@@ -35,9 +34,8 @@ export function* generateTemplate(options: TemplateCodegenOptions): Generator(
): LanguagePlugin {
const pluginContext: Parameters[0] = {
modules: {
- '@vue/compiler-dom': vueCompilerOptions.target < 3
- ? {
- ...CompilerDOM,
- compile: CompilerVue2.compile,
- }
- : CompilerDOM,
+ '@vue/compiler-dom': CompilerDOM,
typescript: ts,
},
compilerOptions,
diff --git a/packages/language-core/lib/types.ts b/packages/language-core/lib/types.ts
index dd9f0772a7..103c080db7 100644
--- a/packages/language-core/lib/types.ts
+++ b/packages/language-core/lib/types.ts
@@ -11,7 +11,7 @@ export { VueEmbeddedCode };
export type RawVueCompilerOptions = Partial> & {
strictTemplates?: boolean;
- target?: 'auto' | 2 | 2.7 | 3 | 3.3 | 3.5 | 3.6 | 99 | number;
+ target?: 'auto' | 3 | 3.3 | 3.5 | 3.6 | 99 | number;
plugins?: string[];
};
diff --git a/packages/language-core/lib/utils/shared.ts b/packages/language-core/lib/utils/shared.ts
index 1ced2a618c..0450c77126 100644
--- a/packages/language-core/lib/utils/shared.ts
+++ b/packages/language-core/lib/utils/shared.ts
@@ -13,10 +13,6 @@ export function hyphenateAttr(str: string) {
return hyphencase;
}
-export function getSlotsPropertyName(vueVersion: number) {
- return vueVersion < 3 ? '$scopedSlots' : '$slots';
-}
-
export function getStartEnd(
ts: typeof import('typescript'),
node: ts.Node,
diff --git a/packages/language-core/lib/utils/ts.ts b/packages/language-core/lib/utils/ts.ts
index 1b279fd26b..51bcb50420 100644
--- a/packages/language-core/lib/utils/ts.ts
+++ b/packages/language-core/lib/utils/ts.ts
@@ -289,9 +289,7 @@ export function getDefaultCompilerOptions(target = 99, lib = 'vue', strictTempla
],
dataAttributes: [],
htmlAttributes: ['aria-*'],
- optionsWrapper: target >= 2.7
- ? [`(await import('${lib}')).defineComponent(`, `)`]
- : [`(await import('${lib}')).default.extend(`, `)`],
+ optionsWrapper: [`(await import('${lib}')).defineComponent(`, `)`],
macros: {
defineProps: ['defineProps'],
defineSlots: ['defineSlots'],
diff --git a/packages/language-core/lib/utils/vue2TemplateCompiler.ts b/packages/language-core/lib/utils/vue2TemplateCompiler.ts
deleted file mode 100644
index de91efce02..0000000000
--- a/packages/language-core/lib/utils/vue2TemplateCompiler.ts
+++ /dev/null
@@ -1,119 +0,0 @@
-import * as CompilerDOM from '@vue/compiler-dom';
-
-const Vue2TemplateCompiler: typeof import('@vue/compiler-vue2') = require('@vue/compiler-vue2/build');
-
-export const compile: typeof CompilerDOM.compile = (template, options = {}) => {
-
- if (typeof template !== 'string') {
- throw new Error(`[@vue/language-core] compile() first argument must be string.`);
- }
-
- const onError = options.onError;
- const onWarn = options.onWarn;
-
- options.onError = error => {
- if (
- error.code === 33 satisfies CompilerDOM.ErrorCodes.X_V_FOR_TEMPLATE_KEY_PLACEMENT // :key binding allowed in v-for template child in vue 2
- || error.code === 29 satisfies CompilerDOM.ErrorCodes.X_V_IF_SAME_KEY // fix https://github.com/vuejs/language-tools/issues/1638
- ) {
- return;
- }
- if (onError) {
- onError(error);
- }
- else {
- throw error;
- }
- };
-
- const vue2Result = Vue2TemplateCompiler.compile(template, { outputSourceRange: true });
-
- for (const error of vue2Result.errors) {
- onError?.({
- code: 'vue-template-compiler',
- name: '',
- message: error.msg,
- loc: {
- source: '',
- start: { column: -1, line: -1, offset: error.start },
- end: { column: -1, line: -1, offset: error.end ?? error.start },
- },
- });
- }
- for (const error of vue2Result.tips) {
- onWarn?.({
- code: 'vue-template-compiler',
- name: '',
- message: error.msg,
- loc: {
- source: '',
- start: { column: -1, line: -1, offset: error.start },
- end: { column: -1, line: -1, offset: error.end ?? error.start },
- },
- });
- }
-
- return baseCompile(
- template,
- Object.assign({}, CompilerDOM.parserOptions, options, {
- nodeTransforms: [
- ...CompilerDOM.DOMNodeTransforms,
- ...(options.nodeTransforms || [])
- ],
- directiveTransforms: Object.assign(
- {},
- CompilerDOM.DOMDirectiveTransforms,
- options.directiveTransforms || {}
- ),
- })
- );
-};
-
-function baseCompile(
- template: string,
- options: CompilerDOM.CompilerOptions = {}
-) {
-
- const onError = options.onError || (error => { throw error; });
- const isModuleMode = options.mode === 'module';
-
- const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode;
- if (!prefixIdentifiers && options.cacheHandlers) {
- onError(CompilerDOM.createCompilerError(49 satisfies CompilerDOM.ErrorCodes.X_CACHE_HANDLER_NOT_SUPPORTED));
- }
- if (options.scopeId && !isModuleMode) {
- onError(CompilerDOM.createCompilerError(50 satisfies CompilerDOM.ErrorCodes.X_SCOPE_ID_NOT_SUPPORTED));
- }
-
- const ast = CompilerDOM.baseParse(template, options);
- const [nodeTransforms, directiveTransforms] = CompilerDOM.getBaseTransformPreset(prefixIdentifiers);
-
- // v-for > v-if in vue 2
- const transformIf = nodeTransforms[1];
- const transformFor = nodeTransforms[3];
- nodeTransforms[1] = transformFor;
- nodeTransforms[3] = transformIf;
-
- CompilerDOM.transform(
- ast,
- Object.assign({}, options, {
- prefixIdentifiers,
- nodeTransforms: [
- ...nodeTransforms,
- ...(options.nodeTransforms || []) // user transforms
- ],
- directiveTransforms: Object.assign(
- {},
- directiveTransforms,
- options.directiveTransforms || {} // user transforms
- )
- })
- );
-
- return CompilerDOM.generate(
- ast,
- Object.assign({}, options, {
- prefixIdentifiers
- })
- );
-}
diff --git a/packages/language-core/package.json b/packages/language-core/package.json
index 3a44c87b70..cd12a7cccd 100644
--- a/packages/language-core/package.json
+++ b/packages/language-core/package.json
@@ -15,7 +15,6 @@
"dependencies": {
"@volar/language-core": "2.4.13",
"@vue/compiler-dom": "^3.5.0",
- "@vue/compiler-vue2": "^2.7.16",
"@vue/shared": "^3.5.0",
"alien-signals": "^2.0.5",
"minimatch": "^10.0.1",
diff --git a/packages/language-core/schemas/vue-tsconfig.schema.json b/packages/language-core/schemas/vue-tsconfig.schema.json
index 08e6c97288..85f50f8545 100644
--- a/packages/language-core/schemas/vue-tsconfig.schema.json
+++ b/packages/language-core/schemas/vue-tsconfig.schema.json
@@ -8,8 +8,6 @@
"default": "auto",
"enum": [
"auto",
- 2,
- 2.7,
3,
3.3,
3.5,
@@ -143,7 +141,7 @@
"(await import('vue')).defineComponent(",
")"
],
- "markdownDescription": "How to wrap option of `export default { ... }`? Default: `[\"(await import('vue')).default.extend(\", \")\"]` for target < 2.7, `[\"(await import('vue')).defineComponent(\", \")\"]` for target >= 2.7."
+ "markdownDescription": "How to wrap option of `export default { ... }`. Default: `[\"(await import('vue')).defineComponent(\", \")\"]`."
},
"macros": {
"type": "object",
diff --git a/packages/language-service/lib/plugins/vue-missing-props-hints.ts b/packages/language-service/lib/plugins/vue-missing-props-hints.ts
index 549596ff27..bb67b7611f 100644
--- a/packages/language-service/lib/plugins/vue-missing-props-hints.ts
+++ b/packages/language-service/lib/plugins/vue-missing-props-hints.ts
@@ -30,7 +30,6 @@ export function create(
if (!context.project.vue) {
return;
}
- const vueCompilerOptions = context.project.vue.compilerOptions;
const enabled = await context.env.getConfiguration?.('vue.inlayHints.missingProps') ?? false;
if (!enabled) {
@@ -126,7 +125,7 @@ export function create(
attrText = attrText.slice('v-model:'.length);
}
else if (attrText === 'v-model') {
- attrText = vueCompilerOptions.target >= 3 ? 'modelValue' : 'value'; // TODO: support for experimentalModelPropName?
+ attrText = 'modelValue'; // TODO: support for experimentalModelPropName?
}
else if (attrText.startsWith('v-on:')) {
attrText = 'on-' + hyphenateAttr(attrText.slice('v-on:'.length));
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0f4adc2d86..83bb53ac0e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -110,9 +110,6 @@ importers:
'@vue/compiler-dom':
specifier: ^3.5.0
version: 3.5.13
- '@vue/compiler-vue2':
- specifier: ^2.7.16
- version: 2.7.16
'@vue/shared':
specifier: ^3.5.0
version: 3.5.13
@@ -326,9 +323,6 @@ importers:
vue-component-type-helpers:
specifier: 3.0.0-alpha.6
version: link:../packages/component-type-helpers
- vue2:
- specifier: npm:vue@2.7.16
- version: vue@2.7.16
vue3.4:
specifier: npm:vue@3.4.38
version: vue@3.4.38(typescript@5.8.3)
@@ -1499,9 +1493,6 @@ packages:
resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/compiler-dom@e1bc0eb02e22bc0c236e1471c11d96a368764b72}
version: 3.5.13
- '@vue/compiler-sfc@2.7.16':
- resolution: {integrity: sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==}
-
'@vue/compiler-sfc@3.4.38':
resolution: {integrity: sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==}
@@ -1522,9 +1513,6 @@ packages:
resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/compiler-ssr@e1bc0eb02e22bc0c236e1471c11d96a368764b72}
version: 3.5.13
- '@vue/compiler-vue2@2.7.16':
- resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
-
'@vue/reactivity@3.4.38':
resolution: {integrity: sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==}
@@ -1930,9 +1918,6 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
- de-indent@1.0.2:
- resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
-
debug@4.4.0:
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
engines: {node: '>=6.0'}
@@ -2369,10 +2354,6 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
- he@1.2.0:
- resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
- hasBin: true
-
hosted-git-info@4.1.0:
resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
engines: {node: '>=10'}
@@ -3083,11 +3064,6 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
- prettier@2.8.8:
- resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
- engines: {node: '>=10.13.0'}
- hasBin: true
-
pretty-ms@9.2.0:
resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==}
engines: {node: '>=18'}
@@ -3761,10 +3737,6 @@ packages:
vscode-uri@3.1.0:
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
- vue@2.7.16:
- resolution: {integrity: sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==}
- deprecated: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.
-
vue@3.4.38:
resolution: {integrity: sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==}
peerDependencies:
@@ -5214,14 +5186,6 @@ snapshots:
'@vue/compiler-core': https://pkg.pr.new/vuejs/core/@vue/compiler-core@e1bc0eb02e22bc0c236e1471c11d96a368764b72
'@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@e1bc0eb02e22bc0c236e1471c11d96a368764b72
- '@vue/compiler-sfc@2.7.16':
- dependencies:
- '@babel/parser': 7.27.0
- postcss: 8.5.3
- source-map: 0.6.1
- optionalDependencies:
- prettier: 2.8.8
-
'@vue/compiler-sfc@3.4.38':
dependencies:
'@babel/parser': 7.27.0
@@ -5273,11 +5237,6 @@ snapshots:
'@vue/compiler-dom': https://pkg.pr.new/vuejs/core/@vue/compiler-dom@e1bc0eb02e22bc0c236e1471c11d96a368764b72
'@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@e1bc0eb02e22bc0c236e1471c11d96a368764b72
- '@vue/compiler-vue2@2.7.16':
- dependencies:
- de-indent: 1.0.2
- he: 1.2.0
-
'@vue/reactivity@3.4.38':
dependencies:
'@vue/shared': 3.4.38
@@ -5697,8 +5656,6 @@ snapshots:
csstype@3.1.3: {}
- de-indent@1.0.2: {}
-
debug@4.4.0:
dependencies:
ms: 2.1.3
@@ -6200,8 +6157,6 @@ snapshots:
dependencies:
function-bind: 1.1.2
- he@1.2.0: {}
-
hosted-git-info@4.1.0:
dependencies:
lru-cache: 6.0.0
@@ -6932,9 +6887,6 @@ snapshots:
prelude-ls@1.2.1: {}
- prettier@2.8.8:
- optional: true
-
pretty-ms@9.2.0:
dependencies:
parse-ms: 4.0.0
@@ -7631,11 +7583,6 @@ snapshots:
vscode-uri@3.1.0: {}
- vue@2.7.16:
- dependencies:
- '@vue/compiler-sfc': 2.7.16
- csstype: 3.1.3
-
vue@3.4.38(typescript@5.8.3):
dependencies:
'@vue/compiler-dom': 3.4.38
diff --git a/test-workspace/package.json b/test-workspace/package.json
index 1f40b51a4f..523eec0149 100644
--- a/test-workspace/package.json
+++ b/test-workspace/package.json
@@ -6,7 +6,6 @@
"typescript-stable": "npm:typescript@latest",
"vue": "https://pkg.pr.new/vue@e1bc0eb02e22bc0c236e1471c11d96a368764b72",
"vue-component-type-helpers": "3.0.0-alpha.6",
- "vue2": "npm:vue@2.7.16",
"vue3.4": "npm:vue@3.4.38"
}
}
diff --git a/test-workspace/tsc/passedFixtures/vue2/#4789/main.vue b/test-workspace/tsc/passedFixtures/vue2/#4789/main.vue
deleted file mode 100644
index 74dcfc5371..0000000000
--- a/test-workspace/tsc/passedFixtures/vue2/#4789/main.vue
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
diff --git a/test-workspace/tsc/passedFixtures/vue2/env.d.ts b/test-workspace/tsc/passedFixtures/vue2/env.d.ts
deleted file mode 100644
index 8e207f7bdd..0000000000
--- a/test-workspace/tsc/passedFixtures/vue2/env.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare module 'vue' {
- export * from 'vue2';
-}
diff --git a/test-workspace/tsc/passedFixtures/vue2/tsconfig.json b/test-workspace/tsc/passedFixtures/vue2/tsconfig.json
deleted file mode 100644
index 8deef3dc20..0000000000
--- a/test-workspace/tsc/passedFixtures/vue2/tsconfig.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "extends": "../../../tsconfig.base.json",
- "vueCompilerOptions": {
- "target": 2.7,
- },
- "include": [
- "**/*",
- "../vue3",
- ],
- "exclude": [
- "../vue3/#2700",
- "../vue3/#3123",
- "../vue3/#3289",
- "../vue3/#3476",
- "../vue3/#3518",
- "../vue3/#3561",
- "../vue3/#3615",
- "../vue3/#3656",
- "../vue3/#3672",
- "../vue3/#3782",
- "../vue3/#3820",
- "../vue3/#4327",
- "../vue3/#4512",
- "../vue3/#4540",
- "../vue3/#4646",
- "../vue3/#4649",
- "../vue3/#4777",
- "../vue3/#4820",
- "../vue3/#4822",
- "../vue3/#4826",
- "../vue3/#4828",
- "../vue3/attrs",
- "../vue3/components",
- "../vue3/defineEmits",
- "../vue3/defineModel",
- "../vue3/defineProp_B",
- "../vue3/directives/arg-modifiers.vue",
- "../vue3/directives/option.vue",
- "../vue3/events",
- "../vue3/no-script-block",
- "../vue3/rootEl",
- "../vue3/slot-children",
- "../vue3/slots",
- "../vue3/templateRef",
- "../vue3/templateRef_native",
- "../vue3/v-generic"
- ]
-}
diff --git a/test-workspace/tsc/passedFixtures/vue2_strictTemplate/#3881/main.vue b/test-workspace/tsc/passedFixtures/vue2_strictTemplate/#3881/main.vue
deleted file mode 100644
index 9837e390c3..0000000000
--- a/test-workspace/tsc/passedFixtures/vue2_strictTemplate/#3881/main.vue
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- foo
-
-
- foo
-
-
-
diff --git a/test-workspace/tsc/passedFixtures/vue2_strictTemplate/tsconfig.json b/test-workspace/tsc/passedFixtures/vue2_strictTemplate/tsconfig.json
deleted file mode 100644
index b5c5385102..0000000000
--- a/test-workspace/tsc/passedFixtures/vue2_strictTemplate/tsconfig.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "extends": "../vue3_strictTemplate/tsconfig.json",
- "vueCompilerOptions": {
- "target": 2.7,
- },
- "include": [
- "**/*",
- "../vue2/env.d.ts",
- "../vue3_strictTemplate",
- ],
- "exclude": [
- "../vue3_strictTemplate/#3140",
- "../vue3_strictTemplate/#3718",
- "../vue3_strictTemplate/defineModel",
- "../vue3_strictTemplate/intrinsicProps",
- ]
-}
diff --git a/test-workspace/tsc/tsconfig.json b/test-workspace/tsc/tsconfig.json
index 2e2ecffc35..7fa29cc312 100644
--- a/test-workspace/tsc/tsconfig.json
+++ b/test-workspace/tsc/tsconfig.json
@@ -20,8 +20,6 @@
{ "path": "./passedFixtures/noPropertyAccessFromIndexSignature" },
// { "path": "./passedFixtures/petite-vue" },
{ "path": "./passedFixtures/pug" },
- { "path": "./passedFixtures/vue2" },
- { "path": "./passedFixtures/vue2_strictTemplate" },
{ "path": "./passedFixtures/vue3" },
{ "path": "./passedFixtures/vue3_strictTemplate" },
{ "path": "./passedFixtures/vue3.4" },
From c025ad2c780e9c5d9fb7990e4363284d321ad4bb Mon Sep 17 00:00:00 2001
From: KazariEX <1364035137@qq.com>
Date: Fri, 16 May 2025 16:04:07 +0800
Subject: [PATCH 3/4] refactor: drop class component support
---
packages/component-meta/lib/base.ts | 1 -
.../language-core/lib/codegen/script/index.ts | 17 ++---------------
.../language-core/lib/parsers/scriptRanges.ts | 18 ++++--------------
packages/language-core/lib/plugins/vue-tsx.ts | 2 +-
.../tsc/passedFixtures/vue3/#4841/main.vue | 7 -------
.../tsc/passedFixtures/vue3/#997/main.vue | 9 ---------
.../vue3/class-component/main.vue | 9 ---------
7 files changed, 7 insertions(+), 56 deletions(-)
delete mode 100644 test-workspace/tsc/passedFixtures/vue3/#4841/main.vue
delete mode 100644 test-workspace/tsc/passedFixtures/vue3/#997/main.vue
delete mode 100644 test-workspace/tsc/passedFixtures/vue3/class-component/main.vue
diff --git a/packages/component-meta/lib/base.ts b/packages/component-meta/lib/base.ts
index a077e102eb..ad2f04c567 100644
--- a/packages/component-meta/lib/base.ts
+++ b/packages/component-meta/lib/base.ts
@@ -893,7 +893,6 @@ function readTsComponentDefaultProps(
return component;
}
// export default defineComponent({ ... })
- // export default Vue.extend({ ... })
else if (ts.isCallExpression(component)) {
if (component.arguments.length) {
const arg = component.arguments[0];
diff --git a/packages/language-core/lib/codegen/script/index.ts b/packages/language-core/lib/codegen/script/index.ts
index 4dda5763be..b19bac8f2d 100644
--- a/packages/language-core/lib/codegen/script/index.ts
+++ b/packages/language-core/lib/codegen/script/index.ts
@@ -6,7 +6,7 @@ import type { Code, Sfc, VueCompilerOptions } from '../../types';
import { codeFeatures } from '../codeFeatures';
import { generateGlobalTypes, getGlobalTypesFileName } from '../globalTypes';
import type { TemplateCodegenContext } from '../template/context';
-import { endOfLine, generateSfcBlockSection, newLine } from '../utils';
+import { generateSfcBlockSection, newLine } from '../utils';
import { generateComponentSelf } from './componentSelf';
import { createScriptCodegenContext, type ScriptCodegenContext } from './context';
import { generateScriptSetup, generateScriptSetupImports } from './scriptSetup';
@@ -55,7 +55,7 @@ export function* generateScript(options: ScriptCodegenOptions): Generator {${newLine}`;
- const templateCodegenCtx = yield* generateTemplate(options, ctx);
- yield* generateComponentSelf(options, ctx, templateCodegenCtx);
- yield `}${endOfLine}`;
- yield generateSfcBlockSection(options.sfc.script, classBlockEnd, options.sfc.script.content.length, codeFeatures.all);
- }
- }
else {
yield generateSfcBlockSection(options.sfc.script, 0, options.sfc.script.content.length, codeFeatures.all);
yield* generateScriptSectionPartiallyEnding(options.sfc.script.name, options.sfc.script.content.length, '#3632/script.vue');
diff --git a/packages/language-core/lib/parsers/scriptRanges.ts b/packages/language-core/lib/parsers/scriptRanges.ts
index adf5379a3f..d9dae48fd7 100644
--- a/packages/language-core/lib/parsers/scriptRanges.ts
+++ b/packages/language-core/lib/parsers/scriptRanges.ts
@@ -5,19 +5,18 @@ import { parseBindingRanges } from './scriptSetupRanges';
export interface ScriptRanges extends ReturnType { }
-export function parseScriptRanges(ts: typeof import('typescript'), ast: ts.SourceFile, hasScriptSetup: boolean, withNode: boolean) {
+export function parseScriptRanges(ts: typeof import('typescript'), ast: ts.SourceFile, hasScriptSetup: boolean) {
let exportDefault: (TextRange & {
expression: TextRange,
args: TextRange,
- argsNode: ts.ObjectLiteralExpression | undefined,
+ argsNode: ts.ObjectLiteralExpression,
componentsOption: TextRange | undefined,
componentsOptionNode: ts.ObjectLiteralExpression | undefined,
directivesOption: TextRange | undefined,
nameOption: TextRange | undefined,
inheritAttrsOption: string | undefined,
}) | undefined;
- let classBlockEnd: number | undefined;
const bindings = hasScriptSetup ? parseBindingRanges(ts, ast) : [];
@@ -66,28 +65,19 @@ export function parseScriptRanges(ts: typeof import('typescript'), ast: ts.Sourc
..._getStartEnd(raw),
expression: _getStartEnd(node.expression),
args: _getStartEnd(obj),
- argsNode: withNode ? obj : undefined,
+ argsNode: obj,
componentsOption: componentsOptionNode ? _getStartEnd(componentsOptionNode) : undefined,
- componentsOptionNode: withNode ? componentsOptionNode : undefined,
+ componentsOptionNode: componentsOptionNode,
directivesOption: directivesOptionNode ? _getStartEnd(directivesOptionNode) : undefined,
nameOption: nameOptionNode ? _getStartEnd(nameOptionNode) : undefined,
inheritAttrsOption,
};
}
}
-
- if (
- ts.isClassDeclaration(raw)
- && raw.modifiers?.some(mod => mod.kind === ts.SyntaxKind.ExportKeyword)
- && raw.modifiers?.some(mod => mod.kind === ts.SyntaxKind.DefaultKeyword)
- ) {
- classBlockEnd = raw.end - 1;
- }
});
return {
exportDefault,
- classBlockEnd,
bindings,
};
diff --git a/packages/language-core/lib/plugins/vue-tsx.ts b/packages/language-core/lib/plugins/vue-tsx.ts
index 7a3fb5d44d..8f80b016f7 100644
--- a/packages/language-core/lib/plugins/vue-tsx.ts
+++ b/packages/language-core/lib/plugins/vue-tsx.ts
@@ -101,7 +101,7 @@ function createTsx(
const getScriptRanges = computed(() =>
sfc.script && validLangs.has(sfc.script.lang)
- ? parseScriptRanges(ts, sfc.script.ast, !!sfc.scriptSetup, false)
+ ? parseScriptRanges(ts, sfc.script.ast, !!sfc.scriptSetup)
: undefined
);
diff --git a/test-workspace/tsc/passedFixtures/vue3/#4841/main.vue b/test-workspace/tsc/passedFixtures/vue3/#4841/main.vue
deleted file mode 100644
index cb81b183f7..0000000000
--- a/test-workspace/tsc/passedFixtures/vue3/#4841/main.vue
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/test-workspace/tsc/passedFixtures/vue3/#997/main.vue b/test-workspace/tsc/passedFixtures/vue3/#997/main.vue
deleted file mode 100644
index 0dd0c9b3a9..0000000000
--- a/test-workspace/tsc/passedFixtures/vue3/#997/main.vue
+++ /dev/null
@@ -1,9 +0,0 @@
-
- {{ count }}
-
-
-
diff --git a/test-workspace/tsc/passedFixtures/vue3/class-component/main.vue b/test-workspace/tsc/passedFixtures/vue3/class-component/main.vue
deleted file mode 100644
index e5e550dd34..0000000000
--- a/test-workspace/tsc/passedFixtures/vue3/class-component/main.vue
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- {{ data }}
-
From 6c3babfc6c78490e9a358e5eff37e78d3c87c5da Mon Sep 17 00:00:00 2001
From: KazariEX <1364035137@qq.com>
Date: Fri, 16 May 2025 16:06:16 +0800
Subject: [PATCH 4/4] chore: lint
---
packages/language-core/lib/parsers/scriptRanges.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/language-core/lib/parsers/scriptRanges.ts b/packages/language-core/lib/parsers/scriptRanges.ts
index d9dae48fd7..87285ce978 100644
--- a/packages/language-core/lib/parsers/scriptRanges.ts
+++ b/packages/language-core/lib/parsers/scriptRanges.ts
@@ -67,7 +67,7 @@ export function parseScriptRanges(ts: typeof import('typescript'), ast: ts.Sourc
args: _getStartEnd(obj),
argsNode: obj,
componentsOption: componentsOptionNode ? _getStartEnd(componentsOptionNode) : undefined,
- componentsOptionNode: componentsOptionNode,
+ componentsOptionNode,
directivesOption: directivesOptionNode ? _getStartEnd(directivesOptionNode) : undefined,
nameOption: nameOptionNode ? _getStartEnd(nameOptionNode) : undefined,
inheritAttrsOption,