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"