Skip to content

Commit

Permalink
Merge branch 'v2.2.8' of https://github.com/vuejs/language-tools
Browse files Browse the repository at this point in the history
  • Loading branch information
KazariEX committed Mar 2, 2025
2 parents 5ae4b38 + b924de9 commit 41d9288
Show file tree
Hide file tree
Showing 17 changed files with 70 additions and 94 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

> [Join the Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) for more exclusive features and updates.
## 2.2.8 <sup>official</sup>, 2.2.9 <sup>insiders</sup> (2025-03-02)

### Bug Fixes

- revert "fix(language-core): validate `v-model` variable against model type"

## 2.2.6 <sup>official</sup>, 2.2.7 <sup>insiders</sup> (2025-03-01)

### Features
Expand Down
8 changes: 4 additions & 4 deletions extensions/vscode/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"private": true,
"name": "volar",
"version": "2.2.6",
"version": "2.2.8",
"repository": {
"type": "git",
"url": "https://github.com/vuejs/language-tools.git",
Expand Down Expand Up @@ -567,9 +567,9 @@
"@types/vscode": "^1.82.0",
"@volar/vscode": "~2.4.11",
"@vscode/vsce": "^3.2.1",
"@vue/language-core": "2.2.6",
"@vue/language-server": "2.2.6",
"@vue/typescript-plugin": "2.2.6",
"@vue/language-core": "2.2.8",
"@vue/language-server": "2.2.8",
"@vue/typescript-plugin": "2.2.8",
"esbuild": "^0.25.0",
"esbuild-visualizer": "^0.7.0",
"reactive-vscode": "^0.2.9",
Expand Down
10 changes: 9 additions & 1 deletion insiders.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
{
"latest": "2.2.7",
"latest": "2.2.9",
"versions": [
{
"version": "2.2.9",
"date": "2025-03-02",
"downloads": {
"GitHub": "https://github.com/volarjs/insiders/releases/tag/v2.2.9",
"AFDIAN": "https://afdian.com/p/d78b61e8f75011ef812652540025c377"
}
},
{
"version": "2.2.7",
"date": "2025-03-01",
Expand Down
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
"packages/*",
"test-workspace"
],
"version": "2.2.6"
"version": "2.2.8"
}
6 changes: 3 additions & 3 deletions packages/component-meta/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vue-component-meta",
"version": "2.2.6",
"version": "2.2.8",
"license": "MIT",
"files": [
"**/*.js",
Expand All @@ -14,9 +14,9 @@
},
"dependencies": {
"@volar/typescript": "~2.4.11",
"@vue/language-core": "2.2.6",
"@vue/language-core": "2.2.8",
"path-browserify": "^1.0.1",
"vue-component-type-helpers": "2.2.6"
"vue-component-type-helpers": "2.2.8"
},
"peerDependencies": {
"typescript": "*"
Expand Down
2 changes: 1 addition & 1 deletion packages/component-type-helpers/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vue-component-type-helpers",
"version": "2.2.6",
"version": "2.2.8",
"license": "MIT",
"files": [
"**/*.js",
Expand Down
66 changes: 14 additions & 52 deletions packages/language-core/lib/codegen/template/elementEvents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,9 @@ export function* generateElementEvents(
for (const prop of node.props) {
if (
prop.type === CompilerDOM.NodeTypes.DIRECTIVE
&& (
prop.name === 'on' && (prop.arg?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION && prop.arg.isStatic)
|| prop.name === 'model' && (!prop.arg || prop.arg.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION && prop.arg.isStatic)
)
&& prop.name === 'on'
&& prop.arg?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION
&& prop.arg.isStatic
) {
ctx.currentComponent!.used = true;
if (!emitVar) {
Expand All @@ -38,33 +37,21 @@ export function* generateElementEvents(
yield `let ${eventsVar}!: __VLS_NormalizeEmits<typeof ${emitVar}>${endOfLine}`;
yield `let ${propsVar}!: __VLS_FunctionalComponentProps<typeof ${componentFunctionalVar}, typeof ${componentVNodeVar}>${endOfLine}`;
}

let source = prop.arg?.loc.source ?? 'model-value';
let start = prop.arg?.loc.start.offset;
let propPrefix = 'on-';
let source = prop.arg.loc.source;
let start = prop.arg.loc.start.offset;
let propPrefix = 'on';
let emitPrefix = '';
if (prop.name === 'model') {
propPrefix = 'onUpdate:';
emitPrefix = 'update:';
}
else if (source.startsWith('vue:')) {
if (source.startsWith('vue:')) {
source = source.slice('vue:'.length);
start = start! + 'vue:'.length;
propPrefix = 'onVnode-';
start = start + 'vue:'.length;
propPrefix = 'onVnode';
emitPrefix = 'vnode-';
}

yield `(): __VLS_NormalizeComponentEvent<typeof ${propsVar}, typeof ${eventsVar}, '${camelize(propPrefix + source)}', '${emitPrefix + source}', '${camelize(emitPrefix + source)}'> => ({${newLine}`;
if (prop.name === 'on') {
yield* generateEventArg(ctx, source, start!, propPrefix.slice(0, -1));
yield `: `;
yield* generateEventExpression(options, ctx, prop);
}
else {
yield `'${camelize(propPrefix + source)}': `;
yield* generateModelEventExpression(options, ctx, prop);
}
yield `})${endOfLine}`;
yield `const ${ctx.getInternalVariable()}: __VLS_NormalizeComponentEvent<typeof ${propsVar}, typeof ${eventsVar}, '${camelize(propPrefix + '-' + source)}', '${emitPrefix}${source}', '${camelize(emitPrefix + source)}'> = {${newLine}`;
yield* generateEventArg(ctx, source, start, propPrefix);
yield `: `;
yield* generateEventExpression(options, ctx, prop);
yield `}${endOfLine}`;
}
}
}
Expand Down Expand Up @@ -169,31 +156,6 @@ export function* generateEventExpression(
}
}

export function* generateModelEventExpression(
options: TemplateCodegenOptions,
ctx: TemplateCodegenContext,
prop: CompilerDOM.DirectiveNode
): Generator<Code> {
if (prop.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION) {
yield `(...[$event]) => {${newLine}`;
yield* ctx.generateConditionGuards();
yield* generateInterpolation(
options,
ctx,
'template',
ctx.codeFeatures.verification,
prop.exp.content,
prop.exp.loc.start.offset,
prop.exp.loc
);
yield ` = $event${endOfLine}`;
yield `}`;
}
else {
yield `() => {}`;
}
}

export function isCompoundExpression(ts: typeof import('typescript'), ast: ts.SourceFile) {
let result = true;
if (ast.statements.length === 0) {
Expand Down
2 changes: 1 addition & 1 deletion packages/language-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vue/language-core",
"version": "2.2.6",
"version": "2.2.8",
"license": "MIT",
"files": [
"**/*.js",
Expand Down
4 changes: 2 additions & 2 deletions packages/language-plugin-pug/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vue/language-plugin-pug",
"version": "2.2.6",
"version": "2.2.8",
"license": "MIT",
"files": [
"**/*.js",
Expand All @@ -14,7 +14,7 @@
},
"devDependencies": {
"@types/node": "^22.10.4",
"@vue/language-core": "2.2.6"
"@vue/language-core": "2.2.8"
},
"dependencies": {
"@volar/source-map": "~2.4.11",
Expand Down
8 changes: 4 additions & 4 deletions packages/language-server/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vue/language-server",
"version": "2.2.6",
"version": "2.2.8",
"license": "MIT",
"files": [
"**/*.js",
Expand All @@ -19,9 +19,9 @@
"@volar/language-core": "~2.4.11",
"@volar/language-server": "~2.4.11",
"@volar/test-utils": "~2.4.11",
"@vue/language-core": "2.2.6",
"@vue/language-service": "2.2.6",
"@vue/typescript-plugin": "2.2.6",
"@vue/language-core": "2.2.8",
"@vue/language-service": "2.2.8",
"@vue/typescript-plugin": "2.2.8",
"vscode-languageserver-protocol": "^3.17.5",
"vscode-uri": "^3.0.8"
}
Expand Down
6 changes: 3 additions & 3 deletions packages/language-service/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vue/language-service",
"version": "2.2.6",
"version": "2.2.8",
"license": "MIT",
"files": [
"data",
Expand All @@ -21,9 +21,9 @@
"@volar/language-service": "~2.4.11",
"@volar/typescript": "~2.4.11",
"@vue/compiler-dom": "^3.5.0",
"@vue/language-core": "2.2.6",
"@vue/language-core": "2.2.8",
"@vue/shared": "^3.5.0",
"@vue/typescript-plugin": "2.2.6",
"@vue/typescript-plugin": "2.2.8",
"alien-signals": "^1.0.3",
"path-browserify": "^1.0.1",
"volar-service-css": "0.0.62",
Expand Down
4 changes: 2 additions & 2 deletions packages/tsc/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vue-tsc",
"version": "2.2.6",
"version": "2.2.8",
"license": "MIT",
"files": [
"bin",
Expand All @@ -21,7 +21,7 @@
},
"dependencies": {
"@volar/typescript": "~2.4.11",
"@vue/language-core": "2.2.6"
"@vue/language-core": "2.2.8"
},
"devDependencies": {
"@types/node": "^22.10.4"
Expand Down
4 changes: 2 additions & 2 deletions packages/typescript-plugin/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@vue/typescript-plugin",
"version": "2.2.6",
"version": "2.2.8",
"license": "MIT",
"files": [
"**/*.js",
Expand All @@ -14,7 +14,7 @@
},
"dependencies": {
"@volar/typescript": "~2.4.11",
"@vue/language-core": "2.2.6",
"@vue/language-core": "2.2.8",
"@vue/shared": "^3.5.0"
},
"devDependencies": {
Expand Down
28 changes: 14 additions & 14 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions test-workspace/package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"private": true,
"version": "2.2.6",
"version": "2.2.8",
"devDependencies": {
"typescript-next": "npm:[email protected]",
"typescript-stable": "npm:typescript@~5.6.0",
"vue": "^3.5.0",
"vue-component-type-helpers": "2.2.6",
"vue-component-type-helpers": "2.2.8",
"vue2": "npm:[email protected]",
"vue3.4": "npm:[email protected]"
}
Expand Down
Loading

0 comments on commit 41d9288

Please sign in to comment.