From 5eac5f3bf24d330e73b261c62dca2839aab54f97 Mon Sep 17 00:00:00 2001
From: KazariEX <1364035137@qq.com>
Date: Thu, 5 Sep 2024 16:18:29 +0800
Subject: [PATCH 01/10] temp: use pkg-pr-new version
---
packages/language-core/package.json | 2 +-
pnpm-lock.yaml | 139 +++++++++++++++++++++-------
test-workspace/package.json | 2 +-
3 files changed, 105 insertions(+), 38 deletions(-)
diff --git a/packages/language-core/package.json b/packages/language-core/package.json
index 455de4c700..71ab373ffb 100644
--- a/packages/language-core/package.json
+++ b/packages/language-core/package.json
@@ -13,7 +13,7 @@
},
"dependencies": {
"@volar/language-core": "~2.4.1",
- "@vue/compiler-dom": "^3.4.0",
+ "@vue/compiler-dom": "https://pkg.pr.new/@vue/compiler-dom@11819",
"@vue/compiler-vue2": "^2.7.16",
"@vue/shared": "^3.4.0",
"computeds": "^0.0.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6304555f1d..074369df4b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -108,8 +108,8 @@ importers:
specifier: ~2.4.1
version: 2.4.1
'@vue/compiler-dom':
- specifier: ^3.4.0
- version: 3.5.1
+ specifier: https://pkg.pr.new/@vue/compiler-dom@11819
+ version: https://pkg.pr.new/@vue/compiler-dom@11819
'@vue/compiler-vue2':
specifier: ^2.7.16
version: 2.7.16
@@ -311,8 +311,8 @@ importers:
specifier: npm:typescript@latest
version: typescript@5.5.4
vue:
- specifier: ~3.5.1
- version: 3.5.1(typescript@5.5.4)
+ specifier: https://pkg.pr.new/vue@11819
+ version: https://pkg.pr.new/vue@11819(typescript@5.5.4)
vue-component-type-helpers:
specifier: 2.1.6
version: link:../packages/component-type-helpers
@@ -1213,12 +1213,24 @@ packages:
'@vue/compiler-core@3.5.1':
resolution: {integrity: sha512-WdjF+NSgFYdWttHevHw5uaJFtKPalhmxhlu2uREj8cLP0uyKKIR60/JvSZNTp0x+NSd63iTiORQTx3+tt55NWQ==}
+ '@vue/compiler-core@https://pkg.pr.new/vuejs/core/@vue/compiler-core@d40e385':
+ resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/compiler-core@d40e385}
+ version: 3.5.1
+
'@vue/compiler-dom@3.4.38':
resolution: {integrity: sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==}
'@vue/compiler-dom@3.5.1':
resolution: {integrity: sha512-Ao23fB1lINo18HLCbJVApvzd9OQe8MgmQSgyY5+umbWj2w92w9KykVmJ4Iv2US5nak3ixc2B+7Km7JTNhQ8kSQ==}
+ '@vue/compiler-dom@https://pkg.pr.new/@vue/compiler-dom@11819':
+ resolution: {tarball: https://pkg.pr.new/@vue/compiler-dom@11819}
+ version: 3.5.1
+
+ '@vue/compiler-dom@https://pkg.pr.new/vuejs/core/@vue/compiler-dom@d40e385':
+ resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/compiler-dom@d40e385}
+ version: 3.5.1
+
'@vue/compiler-sfc@2.7.16':
resolution: {integrity: sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==}
@@ -1228,40 +1240,53 @@ packages:
'@vue/compiler-sfc@3.5.1':
resolution: {integrity: sha512-DFizMNH8eDglLhlfwJ0+ciBsztaYe3fY/zcZjrqL1ljXvUw/UpC84M1d7HpBTCW68SNqZyIxrs1XWmf+73Y65w==}
+ '@vue/compiler-sfc@https://pkg.pr.new/vuejs/core/@vue/compiler-sfc@d40e385':
+ resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/compiler-sfc@d40e385}
+ version: 3.5.1
+
'@vue/compiler-ssr@3.4.38':
resolution: {integrity: sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==}
'@vue/compiler-ssr@3.5.1':
resolution: {integrity: sha512-C1hpSHQgRM8bg+5XWWD7CkFaVpSn9wZHCLRd10AmxqrH17d4EMP6+XcZpwBOM7H1jeStU5naEapZZWX0kso1tQ==}
+ '@vue/compiler-ssr@https://pkg.pr.new/vuejs/core/@vue/compiler-ssr@d40e385':
+ resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/compiler-ssr@d40e385}
+ version: 3.5.1
+
'@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
'@vue/reactivity@3.4.38':
resolution: {integrity: sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==}
- '@vue/reactivity@3.5.1':
- resolution: {integrity: sha512-aFE1nMDfbG7V+U5vdOk/NXxH/WX78XuAfX59vWmCM7Ao4lieoc83RkzOAWun61sQXlzNZ4IgROovFBHg+Iz1+Q==}
+ '@vue/reactivity@https://pkg.pr.new/vuejs/core/@vue/reactivity@d40e385':
+ resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/reactivity@d40e385}
+ version: 3.5.1
'@vue/runtime-core@3.4.38':
resolution: {integrity: sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==}
- '@vue/runtime-core@3.5.1':
- resolution: {integrity: sha512-Ce92CCholNRHR3ZtzpRp/7CDGIPFxQ7ElXt9iH91ilK5eOrUv3Z582NWJesuM3aYX71BujVG5/4ypUxigGNxjA==}
+ '@vue/runtime-core@https://pkg.pr.new/vuejs/core/@vue/runtime-core@d40e385':
+ resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/runtime-core@d40e385}
+ version: 3.5.1
'@vue/runtime-dom@3.4.38':
resolution: {integrity: sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==}
- '@vue/runtime-dom@3.5.1':
- resolution: {integrity: sha512-B/fUJfBLp5PwE0EWNfBYnA4JUea8Yufb3wN8fN0/HzaqBdkiRHh4sFHOjWqIY8GS75gj//8VqeEqhcU6yUjIkA==}
+ '@vue/runtime-dom@https://pkg.pr.new/vuejs/core/@vue/runtime-dom@d40e385':
+ resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/runtime-dom@d40e385}
+ version: 3.5.1
'@vue/server-renderer@3.4.38':
resolution: {integrity: sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==}
+ version: 3.4.38
peerDependencies:
vue: 3.4.38
- '@vue/server-renderer@3.5.1':
- resolution: {integrity: sha512-C5V/fjQTitgVaRNH5wCoHynaWysjZ+VH68drNsAvQYg4ArHsZUQNz0nHoEWRj41nzqkVn2RUlnWaEOTl2o1Ppg==}
+ '@vue/server-renderer@https://pkg.pr.new/vuejs/core/@vue/server-renderer@d40e385':
+ resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/server-renderer@d40e385}
+ version: 3.5.1
peerDependencies:
vue: 3.5.1
@@ -1271,6 +1296,10 @@ packages:
'@vue/shared@3.5.1':
resolution: {integrity: sha512-NdcTRoO4KuW2RSFgpE2c+E/R/ZHaRzWPxAGxhmxZaaqLh6nYCXx7lc9a88ioqOCxCaV2SFJmujkxbUScW7dNsQ==}
+ '@vue/shared@https://pkg.pr.new/vuejs/core/@vue/shared@d40e385':
+ resolution: {tarball: https://pkg.pr.new/vuejs/core/@vue/shared@d40e385}
+ version: 3.5.1
+
JSONStream@1.3.5:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
hasBin: true
@@ -3334,8 +3363,9 @@ packages:
typescript:
optional: true
- vue@3.5.1:
- resolution: {integrity: sha512-k4UNnbPOEskodSxMtv+B9GljdB0C9ubZDOmW6vnXVGIfMqmEsY2+ohasjGguhGkMkrcP/oOrbH0dSD41x5JQFw==}
+ vue@https://pkg.pr.new/vue@11819:
+ resolution: {tarball: https://pkg.pr.new/vue@11819}
+ version: 3.5.1
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -4497,6 +4527,14 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.2.0
+ '@vue/compiler-core@https://pkg.pr.new/vuejs/core/@vue/compiler-core@d40e385':
+ dependencies:
+ '@babel/parser': 7.25.6
+ '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@d40e385
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.0
+
'@vue/compiler-dom@3.4.38':
dependencies:
'@vue/compiler-core': 3.4.38
@@ -4507,6 +4545,16 @@ snapshots:
'@vue/compiler-core': 3.5.1
'@vue/shared': 3.5.1
+ '@vue/compiler-dom@https://pkg.pr.new/@vue/compiler-dom@11819':
+ dependencies:
+ '@vue/compiler-core': https://pkg.pr.new/vuejs/core/@vue/compiler-core@d40e385
+ '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@d40e385
+
+ '@vue/compiler-dom@https://pkg.pr.new/vuejs/core/@vue/compiler-dom@d40e385':
+ dependencies:
+ '@vue/compiler-core': https://pkg.pr.new/vuejs/core/@vue/compiler-core@d40e385
+ '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@d40e385
+
'@vue/compiler-sfc@2.7.16':
dependencies:
'@babel/parser': 7.25.6
@@ -4539,6 +4587,18 @@ snapshots:
postcss: 8.4.45
source-map-js: 1.2.0
+ '@vue/compiler-sfc@https://pkg.pr.new/vuejs/core/@vue/compiler-sfc@d40e385':
+ dependencies:
+ '@babel/parser': 7.25.6
+ '@vue/compiler-core': https://pkg.pr.new/vuejs/core/@vue/compiler-core@d40e385
+ '@vue/compiler-dom': https://pkg.pr.new/vuejs/core/@vue/compiler-dom@d40e385
+ '@vue/compiler-ssr': https://pkg.pr.new/vuejs/core/@vue/compiler-ssr@d40e385
+ '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@d40e385
+ estree-walker: 2.0.2
+ magic-string: 0.30.11
+ postcss: 8.4.45
+ source-map-js: 1.2.0
+
'@vue/compiler-ssr@3.4.38':
dependencies:
'@vue/compiler-dom': 3.4.38
@@ -4549,6 +4609,11 @@ snapshots:
'@vue/compiler-dom': 3.5.1
'@vue/shared': 3.5.1
+ '@vue/compiler-ssr@https://pkg.pr.new/vuejs/core/@vue/compiler-ssr@d40e385':
+ dependencies:
+ '@vue/compiler-dom': https://pkg.pr.new/vuejs/core/@vue/compiler-dom@d40e385
+ '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@d40e385
+
'@vue/compiler-vue2@2.7.16':
dependencies:
de-indent: 1.0.2
@@ -4558,19 +4623,19 @@ snapshots:
dependencies:
'@vue/shared': 3.4.38
- '@vue/reactivity@3.5.1':
+ '@vue/reactivity@https://pkg.pr.new/vuejs/core/@vue/reactivity@d40e385':
dependencies:
- '@vue/shared': 3.5.1
+ '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@d40e385
'@vue/runtime-core@3.4.38':
dependencies:
'@vue/reactivity': 3.4.38
'@vue/shared': 3.4.38
- '@vue/runtime-core@3.5.1':
+ '@vue/runtime-core@https://pkg.pr.new/vuejs/core/@vue/runtime-core@d40e385':
dependencies:
- '@vue/reactivity': 3.5.1
- '@vue/shared': 3.5.1
+ '@vue/reactivity': https://pkg.pr.new/vuejs/core/@vue/reactivity@d40e385
+ '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@d40e385
'@vue/runtime-dom@3.4.38':
dependencies:
@@ -4579,29 +4644,31 @@ snapshots:
'@vue/shared': 3.4.38
csstype: 3.1.3
- '@vue/runtime-dom@3.5.1':
+ '@vue/runtime-dom@https://pkg.pr.new/vuejs/core/@vue/runtime-dom@d40e385':
dependencies:
- '@vue/reactivity': 3.5.1
- '@vue/runtime-core': 3.5.1
- '@vue/shared': 3.5.1
+ '@vue/reactivity': https://pkg.pr.new/vuejs/core/@vue/reactivity@d40e385
+ '@vue/runtime-core': https://pkg.pr.new/vuejs/core/@vue/runtime-core@d40e385
+ '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@d40e385
csstype: 3.1.3
- '@vue/server-renderer@3.4.38(vue@3.5.1(typescript@5.5.4))':
+ '@vue/server-renderer@3.4.38(vue@https://pkg.pr.new/vue@11819(typescript@5.5.4))':
dependencies:
'@vue/compiler-ssr': 3.4.38
'@vue/shared': 3.4.38
- vue: 3.5.1(typescript@5.5.4)
+ vue: https://pkg.pr.new/vue@11819(typescript@5.5.4)
- '@vue/server-renderer@3.5.1(vue@3.5.1(typescript@5.5.4))':
+ '@vue/server-renderer@https://pkg.pr.new/vuejs/core/@vue/server-renderer@d40e385(vue@https://pkg.pr.new/vue@11819(typescript@5.5.4))':
dependencies:
- '@vue/compiler-ssr': 3.5.1
- '@vue/shared': 3.5.1
- vue: 3.5.1(typescript@5.5.4)
+ '@vue/compiler-ssr': https://pkg.pr.new/vuejs/core/@vue/compiler-ssr@d40e385
+ '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@d40e385
+ vue: https://pkg.pr.new/vue@11819(typescript@5.5.4)
'@vue/shared@3.4.38': {}
'@vue/shared@3.5.1': {}
+ '@vue/shared@https://pkg.pr.new/vuejs/core/@vue/shared@d40e385': {}
+
JSONStream@1.3.5:
dependencies:
jsonparse: 1.3.1
@@ -6760,18 +6827,18 @@ snapshots:
'@vue/compiler-dom': 3.4.38
'@vue/compiler-sfc': 3.4.38
'@vue/runtime-dom': 3.4.38
- '@vue/server-renderer': 3.4.38(vue@3.5.1(typescript@5.5.4))
+ '@vue/server-renderer': 3.4.38(vue@https://pkg.pr.new/vue@11819(typescript@5.5.4))
'@vue/shared': 3.4.38
optionalDependencies:
typescript: 5.5.4
- vue@3.5.1(typescript@5.5.4):
+ vue@https://pkg.pr.new/vue@11819(typescript@5.5.4):
dependencies:
- '@vue/compiler-dom': 3.5.1
- '@vue/compiler-sfc': 3.5.1
- '@vue/runtime-dom': 3.5.1
- '@vue/server-renderer': 3.5.1(vue@3.5.1(typescript@5.5.4))
- '@vue/shared': 3.5.1
+ '@vue/compiler-dom': https://pkg.pr.new/vuejs/core/@vue/compiler-dom@d40e385
+ '@vue/compiler-sfc': https://pkg.pr.new/vuejs/core/@vue/compiler-sfc@d40e385
+ '@vue/runtime-dom': https://pkg.pr.new/vuejs/core/@vue/runtime-dom@d40e385
+ '@vue/server-renderer': https://pkg.pr.new/vuejs/core/@vue/server-renderer@d40e385(vue@https://pkg.pr.new/vue@11819(typescript@5.5.4))
+ '@vue/shared': https://pkg.pr.new/vuejs/core/@vue/shared@d40e385
optionalDependencies:
typescript: 5.5.4
diff --git a/test-workspace/package.json b/test-workspace/package.json
index f530335046..2c6ff317e4 100644
--- a/test-workspace/package.json
+++ b/test-workspace/package.json
@@ -4,7 +4,7 @@
"devDependencies": {
"typescript-next": "npm:typescript@next",
"typescript-stable": "npm:typescript@latest",
- "vue": "~3.5.1",
+ "vue": "https://pkg.pr.new/vue@11819",
"vue-component-type-helpers": "2.1.6",
"vue2": "npm:vue@2.7.16",
"vue3.4": "npm:vue@3.4.38"
From a1e32282d8d1f5e5277336f45c9ce775ffd2baec Mon Sep 17 00:00:00 2001
From: KazariEX <1364035137@qq.com>
Date: Thu, 5 Sep 2024 16:20:54 +0800
Subject: [PATCH 02/10] feat: modifier completion
---
.../lib/codegen/template/elementDirectives.ts | 19 +++++++++++++++++
.../lib/codegen/template/elementProps.ts | 7 ++++++-
.../language-server/tests/completions.spec.ts | 21 +++++++++++++++++++
.../passedFixtures/vue3/directives/main.vue | 8 +++----
.../passedFixtures/vue3/directives/option.vue | 4 ++--
5 files changed, 52 insertions(+), 7 deletions(-)
diff --git a/packages/language-core/lib/codegen/template/elementDirectives.ts b/packages/language-core/lib/codegen/template/elementDirectives.ts
index 06869d0392..b82a034fee 100644
--- a/packages/language-core/lib/codegen/template/elementDirectives.ts
+++ b/packages/language-core/lib/codegen/template/elementDirectives.ts
@@ -7,6 +7,7 @@ import { generateCamelized } from './camelized';
import type { TemplateCodegenContext } from './context';
import type { TemplateCodegenOptions } from './index';
import { generateInterpolation } from './interpolation';
+import { generateObjectProperty } from './objectProperty';
export function* generateElementDirectives(
options: TemplateCodegenOptions,
@@ -61,6 +62,24 @@ export function* generateElementDirectives(
}
),
`)(null!, { ...__VLS_directiveBindingRestFields, `,
+ ...(
+ options.vueCompilerOptions.target >= 3.5
+ ? [
+ 'modifiers: { ',
+ ...prop.modifiers.map(mod => [
+ ...generateObjectProperty(
+ options,
+ ctx,
+ mod.content,
+ mod.loc.start.offset,
+ ctx.codeFeatures.navigationAndCompletion
+ ),
+ ': true, ',
+ ]).flat(1),
+ '}, '
+ ]
+ : []
+ ),
...(
prop.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION
? [
diff --git a/packages/language-core/lib/codegen/template/elementProps.ts b/packages/language-core/lib/codegen/template/elementProps.ts
index ed6ff05454..f9fcf51f1c 100644
--- a/packages/language-core/lib/codegen/template/elementProps.ts
+++ b/packages/language-core/lib/codegen/template/elementProps.ts
@@ -96,7 +96,12 @@ export function* generateElementProps(
continue;
}
- if (prop.modifiers.some(m => m === 'prop' || m === 'attr')) {
+ // https://github.com/vuejs/core/pull/11819
+ const modifiers = options.vueCompilerOptions.target >= 3.5
+ ? prop.modifiers.map(mod => mod.content)
+ : prop.modifiers;
+
+ if (modifiers.some(m => m === 'prop' || m === 'attr')) {
propName = propName.substring(1);
}
diff --git a/packages/language-server/tests/completions.spec.ts b/packages/language-server/tests/completions.spec.ts
index c8fa995d49..bdfc7431c0 100644
--- a/packages/language-server/tests/completions.spec.ts
+++ b/packages/language-server/tests/completions.spec.ts
@@ -200,6 +200,27 @@ describe('Completions', async () => {
await requestCompletionItem('fixture.vue', 'vue', ``, 'v-pre');
});
+ it('Directive Modifiers', async () => {
+ expect(
+ (await requestCompletionList('fixture.vue', 'vue', `
+
+
+
+
+
+ `)).items.map(item => item.label)
+ ).toMatchInlineSnapshot(`
+ [
+ "attr",
+ "prop"
+ ]
+ `);
+ });
+
it('$event argument', async () => {
await requestCompletionItem('fixture.vue', 'vue', ``, 'event');
});
diff --git a/test-workspace/tsc/passedFixtures/vue3/directives/main.vue b/test-workspace/tsc/passedFixtures/vue3/directives/main.vue
index 05bf31f895..8d0724068a 100644
--- a/test-workspace/tsc/passedFixtures/vue3/directives/main.vue
+++ b/test-workspace/tsc/passedFixtures/vue3/directives/main.vue
@@ -4,16 +4,16 @@ import { exactType } from '../../shared';
declare module 'vue' {
interface GlobalDirectives {
- vFoo: FunctionDirective void>;
+ vGlobal: FunctionDirective void>;
}
}
let Comp!: (_: { foo?: string; }) => void;
-let vBar!: FunctionDirective void>;
+let vLocal!: FunctionDirective void>;
-
-
+
+
diff --git a/test-workspace/tsc/passedFixtures/vue3/directives/option.vue b/test-workspace/tsc/passedFixtures/vue3/directives/option.vue
index 10878f25f9..3f71c7b239 100644
--- a/test-workspace/tsc/passedFixtures/vue3/directives/option.vue
+++ b/test-workspace/tsc/passedFixtures/vue3/directives/option.vue
@@ -6,7 +6,7 @@ let Comp!: (_: { foo?: string; }) => void;
export default {
directives: {
- vBaz: {} as FunctionDirective void>
+ vBar: {} as FunctionDirective void>
}
};
@@ -15,5 +15,5 @@ export default {
-
+
From b08396e06490f7d594202fea7aefcfe2047c3e65 Mon Sep 17 00:00:00 2001
From: KazariEX <1364035137@qq.com>
Date: Thu, 5 Sep 2024 19:12:45 +0800
Subject: [PATCH 03/10] feat: arg support
---
.../language-core/lib/codegen/globalTypes.ts | 9 +-
.../lib/codegen/template/elementDirectives.ts | 242 +++++++++++-------
.../language-server/tests/completions.spec.ts | 2 +-
.../vue3/directives/arg-modifiers.vue | 19 ++
.../passedFixtures/vue3/directives/main.vue | 2 +-
.../passedFixtures/vue3/directives/option.vue | 2 +-
6 files changed, 178 insertions(+), 98 deletions(-)
create mode 100644 test-workspace/tsc/passedFixtures/vue3/directives/arg-modifiers.vue
diff --git a/packages/language-core/lib/codegen/globalTypes.ts b/packages/language-core/lib/codegen/globalTypes.ts
index 0c704a71d3..9ccd35460e 100644
--- a/packages/language-core/lib/codegen/globalTypes.ts
+++ b/packages/language-core/lib/codegen/globalTypes.ts
@@ -40,6 +40,12 @@ export function generateGlobalTypes(lib: string, target: number, strictTemplates
type __VLS_IsAny = 0 extends 1 & T ? true : false;
type __VLS_PickNotAny = __VLS_IsAny extends true ? B : A;
type __VLS_unknownDirective = (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown) => void;
+ type __VLS_FunctionalDirective = T extends import('vue').ObjectDirective
+ ? NonNullable
+ : T extends (...args: any) => any
+ ? T
+ : __VLS_unknownDirective;
+ type __VLS_DirectiveOptions = Partial>[1]>;
type __VLS_WithComponent =
N1 extends keyof LocalComponents ? N1 extends N0 ? Pick : { [K in N0]: LocalComponents[N1] } :
N2 extends keyof LocalComponents ? N2 extends N0 ? Pick : { [K in N0]: LocalComponents[N2] } :
@@ -111,9 +117,6 @@ export function generateGlobalTypes(lib: string, target: number, strictTemplates
function __VLS_getSlotParams(slot: T): Parameters<__VLS_PickNotAny, (...args: any[]) => any>>;
// @ts-ignore
function __VLS_getSlotParam(slot: T): Parameters<__VLS_PickNotAny, (...args: any[]) => any>>[0];
- function __VLS_directiveAsFunction(dir: T): T extends (...args: any) => any
- ? T | __VLS_unknownDirective
- : NonNullable<(T & Record)['created' | 'beforeMount' | 'mounted' | 'beforeUpdate' | 'updated' | 'beforeUnmount' | 'unmounted']>;
function __VLS_withScope(ctx: T, scope: K): ctx is T & K;
function __VLS_makeOptional(t: T): { [K in keyof T]?: T[K] };
function __VLS_nonNullable(t: T): T extends null | undefined ? never : T;
diff --git a/packages/language-core/lib/codegen/template/elementDirectives.ts b/packages/language-core/lib/codegen/template/elementDirectives.ts
index b82a034fee..7b037abdfe 100644
--- a/packages/language-core/lib/codegen/template/elementDirectives.ts
+++ b/packages/language-core/lib/codegen/template/elementDirectives.ts
@@ -8,6 +8,7 @@ import type { TemplateCodegenContext } from './context';
import type { TemplateCodegenOptions } from './index';
import { generateInterpolation } from './interpolation';
import { generateObjectProperty } from './objectProperty';
+import { generateStringLiteralKey } from './stringLiteralKey';
export function* generateElementDirectives(
options: TemplateCodegenOptions,
@@ -16,103 +17,160 @@ export function* generateElementDirectives(
): Generator {
for (const prop of node.props) {
if (
- prop.type === CompilerDOM.NodeTypes.DIRECTIVE
- && prop.name !== 'slot'
- && prop.name !== 'on'
- && prop.name !== 'model'
- && prop.name !== 'bind'
- && prop.name !== 'scope'
- && prop.name !== 'data'
+ prop.type !== CompilerDOM.NodeTypes.DIRECTIVE
+ || prop.name === 'slot'
+ || prop.name === 'on'
+ || prop.name === 'model'
+ || prop.name === 'bind'
+ || prop.name === 'scope'
+ || prop.name === 'data'
) {
- ctx.accessExternalVariable(camelize('v-' + prop.name), prop.loc.start.offset);
+ continue;
+ }
+ ctx.accessExternalVariable(camelize('v-' + prop.name), prop.loc.start.offset);
+
+ const dirVar = ctx.getInternalVariable();
+
+ yield* wrapWith(
+ prop.loc.start.offset,
+ prop.loc.end.offset,
+ ctx.codeFeatures.verification,
+ `const ${dirVar}: __VLS_DirectiveOptions = { `,
+ ...generateArg(options, ctx, prop),
+ ...generateModifiers(options, ctx, prop),
+ ...generateValue(options, ctx, prop),
+ `}`
+ );
+ yield endOfLine;
+ }
+}
- if (prop.arg?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION && !prop.arg.isStatic) {
- yield* generateInterpolation(
- options,
- ctx,
- prop.arg.content,
- prop.arg.loc,
- prop.arg.loc.start.offset + prop.arg.loc.source.indexOf(prop.arg.content),
- ctx.codeFeatures.all,
- '(',
- ')'
- );
- yield endOfLine;
+function* generateIdentifier(
+ ctx: TemplateCodegenContext,
+ prop: CompilerDOM.DirectiveNode
+): Generator {
+ const rawName = 'v-' + prop.name;
+ yield* wrapWith(
+ prop.loc.start.offset,
+ prop.loc.start.offset + rawName.length,
+ ctx.codeFeatures.verification,
+ `__VLS_directives.`,
+ ...generateCamelized(
+ rawName,
+ prop.loc.start.offset,
+ {
+ ...ctx.codeFeatures.all,
+ verification: false,
+ completion: {
+ // fix https://github.com/vuejs/language-tools/issues/1905
+ isAdditional: true,
+ },
+ navigation: {
+ resolveRenameNewName: camelize,
+ resolveRenameEditText: getPropRenameApply(prop.name),
+ },
}
+ )
+ );
+}
- yield* wrapWith(
- prop.loc.start.offset,
- prop.loc.end.offset,
- ctx.codeFeatures.verification,
- `__VLS_directiveAsFunction(__VLS_directives.`,
- ...generateCamelized(
- 'v-' + prop.name,
- prop.loc.start.offset,
- {
- ...ctx.codeFeatures.all,
- verification: false,
- completion: {
- // fix https://github.com/vuejs/language-tools/issues/1905
- isAdditional: true,
- },
- navigation: {
- resolveRenameNewName: camelize,
- resolveRenameEditText: getPropRenameApply(prop.name),
- },
- }
- ),
- `)(null!, { ...__VLS_directiveBindingRestFields, `,
- ...(
- options.vueCompilerOptions.target >= 3.5
- ? [
- 'modifiers: { ',
- ...prop.modifiers.map(mod => [
- ...generateObjectProperty(
- options,
- ctx,
- mod.content,
- mod.loc.start.offset,
- ctx.codeFeatures.navigationAndCompletion
- ),
- ': true, ',
- ]).flat(1),
- '}, '
- ]
- : []
- ),
- ...(
- prop.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION
- ? [
- ...wrapWith(
- prop.exp.loc.start.offset,
- prop.exp.loc.end.offset,
- ctx.codeFeatures.verification,
- 'value'
- ),
- ': ',
- ...wrapWith(
- prop.exp.loc.start.offset,
- prop.exp.loc.end.offset,
- ctx.codeFeatures.verification,
- ...generateInterpolation(
- options,
- ctx,
- prop.exp.content,
- prop.exp.loc,
- prop.exp.loc.start.offset,
- ctx.codeFeatures.all,
- '(',
- ')'
- )
- )
- ]
- : [`undefined`]
- ),
- `}, null!, null!)`
- );
- yield endOfLine;
- }
+function* generateArg(
+ options: TemplateCodegenOptions,
+ ctx: TemplateCodegenContext,
+ prop: CompilerDOM.DirectiveNode
+): Generator {
+ const { arg } = prop;
+ if (arg?.type !== CompilerDOM.NodeTypes.SIMPLE_EXPRESSION) {
+ return;
+ }
+
+ const startOffset = arg.loc.start.offset + arg.loc.source.indexOf(arg.content);
+
+ yield* wrapWith(
+ startOffset,
+ startOffset + arg.content.length,
+ ctx.codeFeatures.verification,
+ 'arg'
+ );
+ yield ': ';
+ if (arg.isStatic) {
+ yield* generateStringLiteralKey(
+ arg.content,
+ startOffset,
+ ctx.codeFeatures.withoutHighlight
+ );
+ }
+ else {
+ yield* generateInterpolation(
+ options,
+ ctx,
+ arg.content,
+ arg.loc,
+ startOffset,
+ ctx.codeFeatures.all,
+ '(',
+ ')'
+ );
}
+ yield ', ';
+}
+
+function* generateModifiers(
+ options: TemplateCodegenOptions,
+ ctx: TemplateCodegenContext,
+ prop: CompilerDOM.DirectiveNode
+): Generator {
+ if (options.vueCompilerOptions.target < 3.5) {
+ return;
+ }
+
+ yield 'modifiers: { ';
+ for (const mod of prop.modifiers) {
+ yield* generateObjectProperty(
+ options,
+ ctx,
+ mod.content,
+ mod.loc.start.offset,
+ ctx.codeFeatures.withoutHighlight
+ );
+ yield ': true, ';
+ }
+ yield '}, ';
+}
+
+function* generateValue(
+ options: TemplateCodegenOptions,
+ ctx: TemplateCodegenContext,
+ prop: CompilerDOM.DirectiveNode
+): Generator {
+ if (prop.exp?.type !== CompilerDOM.NodeTypes.SIMPLE_EXPRESSION) {
+ return;
+ }
+
+ yield* wrapWith(
+ prop.exp.loc.start.offset,
+ prop.exp.loc.end.offset,
+ ctx.codeFeatures.verification,
+ 'value'
+ );
+ yield ': ';
+ yield* wrapWith(
+ prop.exp.loc.start.offset,
+ prop.exp.loc.end.offset,
+ ctx.codeFeatures.verification,
+ ...generateInterpolation(
+ options,
+ ctx,
+ prop.exp.content,
+ prop.exp.loc,
+ prop.exp.loc.start.offset,
+ ctx.codeFeatures.all,
+ '(',
+ ')'
+ )
+ );
}
function getPropRenameApply(oldName: string) {
diff --git a/packages/language-server/tests/completions.spec.ts b/packages/language-server/tests/completions.spec.ts
index bdfc7431c0..b3e02205b3 100644
--- a/packages/language-server/tests/completions.spec.ts
+++ b/packages/language-server/tests/completions.spec.ts
@@ -208,7 +208,7 @@ describe('Completions', async () => {
diff --git a/test-workspace/tsc/passedFixtures/vue3/directives/arg-modifiers.vue b/test-workspace/tsc/passedFixtures/vue3/directives/arg-modifiers.vue
new file mode 100644
index 0000000000..e6e59fbcf7
--- /dev/null
+++ b/test-workspace/tsc/passedFixtures/vue3/directives/arg-modifiers.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test-workspace/tsc/passedFixtures/vue3/directives/main.vue b/test-workspace/tsc/passedFixtures/vue3/directives/main.vue
index 8d0724068a..29f5ff6ea4 100644
--- a/test-workspace/tsc/passedFixtures/vue3/directives/main.vue
+++ b/test-workspace/tsc/passedFixtures/vue3/directives/main.vue
@@ -1,5 +1,5 @@
- `)).items.map(item => item.label)
- ).toMatchInlineSnapshot(`
- [
- "attr",
- "prop"
- ]
- `);
- });
-
it('$event argument', async () => {
await requestCompletionItem('fixture.vue', 'vue', ``, 'event');
});
diff --git a/test-workspace/tsc/passedFixtures/vue2/tsconfig.json b/test-workspace/tsc/passedFixtures/vue2/tsconfig.json
index 1ff36d1175..53f3b6aa7a 100644
--- a/test-workspace/tsc/passedFixtures/vue2/tsconfig.json
+++ b/test-workspace/tsc/passedFixtures/vue2/tsconfig.json
@@ -29,6 +29,7 @@
"../vue3/defineEmits",
"../vue3/defineModel",
"../vue3/defineProp_B",
+ "../vue3/directives/arg-modifiers.vue",
"../vue3/directives/option.vue",
"../vue3/events",
"../vue3/no-script-block",
diff --git a/test-workspace/tsc/passedFixtures/vue3.4/tsconfig.json b/test-workspace/tsc/passedFixtures/vue3.4/tsconfig.json
index 795db51b7f..f20b71dcbb 100644
--- a/test-workspace/tsc/passedFixtures/vue3.4/tsconfig.json
+++ b/test-workspace/tsc/passedFixtures/vue3.4/tsconfig.json
@@ -16,5 +16,6 @@
"../vue3/components",
"../vue3/defineModel",
"../vue3/defineProp_B",
+ "../vue3/directives/arg-modifiers.vue",
],
}
From 99c5a820207409f3156b0e8dc24b6278da92d526 Mon Sep 17 00:00:00 2001
From: KazariEX <1364035137@qq.com>
Date: Thu, 5 Sep 2024 20:42:36 +0800
Subject: [PATCH 06/10] test: revert failed case and skip
---
.../language-server/tests/completions.spec.ts | 22 +++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/packages/language-server/tests/completions.spec.ts b/packages/language-server/tests/completions.spec.ts
index c8fa995d49..751aa29dda 100644
--- a/packages/language-server/tests/completions.spec.ts
+++ b/packages/language-server/tests/completions.spec.ts
@@ -200,6 +200,28 @@ describe('Completions', async () => {
await requestCompletionItem('fixture.vue', 'vue', ``, 'v-pre');
});
+ // FIXME:
+ it.skip('Directive Modifiers', async () => {
+ expect(
+ (await requestCompletionList('fixture.vue', 'vue', `
+
+
+
+
+
+ `)).items.map(item => item.label)
+ ).toMatchInlineSnapshot(`
+ [
+ "attr",
+ "prop"
+ ]
+ `);
+ });
+
it('$event argument', async () => {
await requestCompletionItem('fixture.vue', 'vue', ``, 'event');
});
From d990760751f60c97206e776e60b1cbda2eefe6b5 Mon Sep 17 00:00:00 2001
From: KazariEX <1364035137@qq.com>
Date: Thu, 5 Sep 2024 22:18:49 +0800
Subject: [PATCH 07/10] fix: update `@vue/compiler-dom`
---
packages/language-service/package.json | 2 +-
pnpm-lock.yaml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/packages/language-service/package.json b/packages/language-service/package.json
index cb0d3f62e2..3f806afd49 100644
--- a/packages/language-service/package.json
+++ b/packages/language-service/package.json
@@ -19,7 +19,7 @@
"@volar/language-core": "~2.4.1",
"@volar/language-service": "~2.4.1",
"@volar/typescript": "~2.4.1",
- "@vue/compiler-dom": "^3.4.0",
+ "@vue/compiler-dom": "^3.5.2",
"@vue/language-core": "2.1.6",
"@vue/shared": "^3.4.0",
"@vue/typescript-plugin": "2.1.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d7eee20db6..64ca83750b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -203,8 +203,8 @@ importers:
specifier: ~2.4.1
version: 2.4.1
'@vue/compiler-dom':
- specifier: ^3.4.0
- version: 3.5.1
+ specifier: ^3.5.2
+ version: 3.5.2
'@vue/language-core':
specifier: 2.1.6
version: link:../language-core
From dc4dc6cc47bba2d0a12925fd3826c28b63e82086 Mon Sep 17 00:00:00 2001
From: KazariEX <1364035137@qq.com>
Date: Wed, 18 Sep 2024 16:00:59 +0800
Subject: [PATCH 08/10] fix: use lib
---
packages/language-core/lib/codegen/globalTypes.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/language-core/lib/codegen/globalTypes.ts b/packages/language-core/lib/codegen/globalTypes.ts
index 168266b022..2e8f91c23e 100644
--- a/packages/language-core/lib/codegen/globalTypes.ts
+++ b/packages/language-core/lib/codegen/globalTypes.ts
@@ -115,7 +115,7 @@ export function generateGlobalTypes(lib: string, target: number, strictTemplates
function __VLS_getSlotParams(slot: T): Parameters<__VLS_PickNotAny, (...args: any[]) => any>>;
// @ts-ignore
function __VLS_getSlotParam(slot: T): Parameters<__VLS_PickNotAny, (...args: any[]) => any>>[0];
- function __VLS_asFunctionalDirective(dir: T): T extends import('vue').ObjectDirective
+ function __VLS_asFunctionalDirective(dir: T): T extends import('${lib}').ObjectDirective
? NonNullable
: T extends (...args: any) => any
? T
From 83c45a7baf3c068f5b86920bcdb8381cd2dc30cd Mon Sep 17 00:00:00 2001
From: KazariEX <1364035137@qq.com>
Date: Wed, 18 Sep 2024 16:02:41 +0800
Subject: [PATCH 09/10] test: modify
---
test-workspace/tsc/passedFixtures/vue3/directives/option.vue | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/test-workspace/tsc/passedFixtures/vue3/directives/option.vue b/test-workspace/tsc/passedFixtures/vue3/directives/option.vue
index 86570b2a14..25c12e16df 100644
--- a/test-workspace/tsc/passedFixtures/vue3/directives/option.vue
+++ b/test-workspace/tsc/passedFixtures/vue3/directives/option.vue
@@ -6,7 +6,7 @@ let Comp!: (_: { foo?: string; }) => void;
export default {
directives: {
- vBar: {} as FunctionDirective void>
+ vFoo: {} as FunctionDirective void>
}
};
@@ -15,5 +15,5 @@ export default {
-
+
From 08b446bc6d5f0c64d110e27e9f3f66e307b86115 Mon Sep 17 00:00:00 2001
From: Johnson Chu
Date: Wed, 23 Oct 2024 18:50:48 +0800
Subject: [PATCH 10/10] sync vue version
---
packages/language-core/package.json | 6 +-
packages/language-service/package.json | 4 +-
packages/typescript-plugin/package.json | 2 +-
pnpm-lock.yaml | 77 +++++--------------------
test-workspace/package.json | 2 +-
5 files changed, 22 insertions(+), 69 deletions(-)
diff --git a/packages/language-core/package.json b/packages/language-core/package.json
index 41a82e1ee4..ad5828e53e 100644
--- a/packages/language-core/package.json
+++ b/packages/language-core/package.json
@@ -14,9 +14,9 @@
},
"dependencies": {
"@volar/language-core": "~2.4.1",
- "@vue/compiler-dom": "^3.5.2",
+ "@vue/compiler-dom": "^3.5.0",
"@vue/compiler-vue2": "^2.7.16",
- "@vue/shared": "^3.5.2",
+ "@vue/shared": "^3.5.0",
"alien-signals": "^0.2.0",
"minimatch": "^9.0.3",
"muggle-string": "^0.4.1",
@@ -27,7 +27,7 @@
"@types/node": "latest",
"@types/path-browserify": "^1.0.1",
"@volar/typescript": "~2.4.1",
- "@vue/compiler-sfc": "^3.5.2"
+ "@vue/compiler-sfc": "^3.5.0"
},
"peerDependencies": {
"typescript": "*"
diff --git a/packages/language-service/package.json b/packages/language-service/package.json
index f787813ad7..f1821c1dd6 100644
--- a/packages/language-service/package.json
+++ b/packages/language-service/package.json
@@ -20,9 +20,9 @@
"@volar/language-core": "~2.4.1",
"@volar/language-service": "~2.4.1",
"@volar/typescript": "~2.4.1",
- "@vue/compiler-dom": "^3.5.2",
+ "@vue/compiler-dom": "^3.5.0",
"@vue/language-core": "2.1.6",
- "@vue/shared": "^3.4.0",
+ "@vue/shared": "^3.5.0",
"@vue/typescript-plugin": "2.1.6",
"alien-signals": "^0.2.0",
"path-browserify": "^1.0.1",
diff --git a/packages/typescript-plugin/package.json b/packages/typescript-plugin/package.json
index 4d0b4f7bb3..56128f016d 100644
--- a/packages/typescript-plugin/package.json
+++ b/packages/typescript-plugin/package.json
@@ -15,7 +15,7 @@
"dependencies": {
"@volar/typescript": "~2.4.1",
"@vue/language-core": "2.1.6",
- "@vue/shared": "^3.4.0"
+ "@vue/shared": "^3.5.0"
},
"devDependencies": {
"@types/node": "latest"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 823149172d..c452282607 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -105,14 +105,14 @@ importers:
specifier: ~2.4.1
version: 2.4.2
'@vue/compiler-dom':
- specifier: ^3.5.2
- version: 3.5.3
+ specifier: ^3.5.0
+ version: 3.5.12
'@vue/compiler-vue2':
specifier: ^2.7.16
version: 2.7.16
'@vue/shared':
- specifier: ^3.5.2
- version: 3.5.3
+ specifier: ^3.5.0
+ version: 3.5.12
alien-signals:
specifier: ^0.2.0
version: 0.2.0
@@ -142,8 +142,8 @@ importers:
specifier: ~2.4.1
version: 2.4.2
'@vue/compiler-sfc':
- specifier: ^3.5.2
- version: 3.5.3
+ specifier: ^3.5.0
+ version: 3.5.12
packages/language-plugin-pug:
dependencies:
@@ -200,14 +200,14 @@ importers:
specifier: ~2.4.1
version: 2.4.2
'@vue/compiler-dom':
- specifier: ^3.5.2
- version: 3.5.3
+ specifier: ^3.5.0
+ version: 3.5.12
'@vue/language-core':
specifier: 2.1.6
version: link:../language-core
'@vue/shared':
- specifier: ^3.4.0
- version: 3.5.3
+ specifier: ^3.5.0
+ version: 3.5.12
'@vue/typescript-plugin':
specifier: 2.1.6
version: link:../typescript-plugin
@@ -292,8 +292,8 @@ importers:
specifier: 2.1.6
version: link:../language-core
'@vue/shared':
- specifier: ^3.4.0
- version: 3.5.3
+ specifier: ^3.5.0
+ version: 3.5.12
devDependencies:
'@types/node':
specifier: latest
@@ -308,7 +308,7 @@ importers:
specifier: npm:typescript@latest
version: typescript@5.5.4
vue:
- specifier: ^3.5.12
+ specifier: ^3.5.0
version: 3.5.12(typescript@5.5.4)
vue-component-type-helpers:
specifier: 2.1.6
@@ -1210,18 +1210,12 @@ packages:
'@vue/compiler-core@3.5.12':
resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==}
- '@vue/compiler-core@3.5.3':
- resolution: {integrity: sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA==}
-
'@vue/compiler-dom@3.4.38':
resolution: {integrity: sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==}
'@vue/compiler-dom@3.5.12':
resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==}
- '@vue/compiler-dom@3.5.3':
- resolution: {integrity: sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA==}
-
'@vue/compiler-sfc@2.7.16':
resolution: {integrity: sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==}
@@ -1231,18 +1225,12 @@ packages:
'@vue/compiler-sfc@3.5.12':
resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==}
- '@vue/compiler-sfc@3.5.3':
- resolution: {integrity: sha512-P3uATLny2tfyvMB04OQFe7Sczteno7SLFxwrOA/dw01pBWQHB5HL15a8PosoNX2aG/EAMGqnXTu+1LnmzFhpTQ==}
-
'@vue/compiler-ssr@3.4.38':
resolution: {integrity: sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==}
'@vue/compiler-ssr@3.5.12':
resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==}
- '@vue/compiler-ssr@3.5.3':
- resolution: {integrity: sha512-F/5f+r2WzL/2YAPl7UlKcJWHrvoZN8XwEBLnT7S4BXwncH25iDOabhO2M2DWioyTguJAGavDOawejkFXj8EM1w==}
-
'@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
@@ -1280,9 +1268,6 @@ packages:
'@vue/shared@3.5.12':
resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==}
- '@vue/shared@3.5.3':
- resolution: {integrity: sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA==}
-
JSONStream@1.3.5:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
hasBin: true
@@ -4513,15 +4498,7 @@ snapshots:
'@vue/shared': 3.5.12
entities: 4.5.0
estree-walker: 2.0.2
- source-map-js: 1.2.0
-
- '@vue/compiler-core@3.5.3':
- dependencies:
- '@babel/parser': 7.25.6
- '@vue/shared': 3.5.3
- entities: 4.5.0
- estree-walker: 2.0.2
- source-map-js: 1.2.0
+ source-map-js: 1.2.1
'@vue/compiler-dom@3.4.38':
dependencies:
@@ -4533,11 +4510,6 @@ snapshots:
'@vue/compiler-core': 3.5.12
'@vue/shared': 3.5.12
- '@vue/compiler-dom@3.5.3':
- dependencies:
- '@vue/compiler-core': 3.5.3
- '@vue/shared': 3.5.3
-
'@vue/compiler-sfc@2.7.16':
dependencies:
'@babel/parser': 7.25.6
@@ -4568,19 +4540,7 @@ snapshots:
estree-walker: 2.0.2
magic-string: 0.30.11
postcss: 8.4.47
- source-map-js: 1.2.0
-
- '@vue/compiler-sfc@3.5.3':
- dependencies:
- '@babel/parser': 7.25.6
- '@vue/compiler-core': 3.5.3
- '@vue/compiler-dom': 3.5.3
- '@vue/compiler-ssr': 3.5.3
- '@vue/shared': 3.5.3
- estree-walker: 2.0.2
- magic-string: 0.30.11
- postcss: 8.4.45
- source-map-js: 1.2.0
+ source-map-js: 1.2.1
'@vue/compiler-ssr@3.4.38':
dependencies:
@@ -4592,11 +4552,6 @@ snapshots:
'@vue/compiler-dom': 3.5.12
'@vue/shared': 3.5.12
- '@vue/compiler-ssr@3.5.3':
- dependencies:
- '@vue/compiler-dom': 3.5.3
- '@vue/shared': 3.5.3
-
'@vue/compiler-vue2@2.7.16':
dependencies:
de-indent: 1.0.2
@@ -4650,8 +4605,6 @@ snapshots:
'@vue/shared@3.5.12': {}
- '@vue/shared@3.5.3': {}
-
JSONStream@1.3.5:
dependencies:
jsonparse: 1.3.1
diff --git a/test-workspace/package.json b/test-workspace/package.json
index 74c638bb35..31dbb567f1 100644
--- a/test-workspace/package.json
+++ b/test-workspace/package.json
@@ -4,7 +4,7 @@
"devDependencies": {
"typescript-next": "npm:typescript@next",
"typescript-stable": "npm:typescript@latest",
- "vue": "^3.5.12",
+ "vue": "^3.5.0",
"vue-component-type-helpers": "2.1.6",
"vue2": "npm:vue@2.7.16",
"vue3.4": "npm:vue@3.4.38"