Skip to content

Commit

Permalink
Merge branch 'master' into volar-1.12
Browse files Browse the repository at this point in the history
  • Loading branch information
johnsoncodehk committed Dec 5, 2023
2 parents b003402 + 6f8ca45 commit d61d074
Show file tree
Hide file tree
Showing 26 changed files with 392 additions and 703 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@
</tbody>
</table>

## 1.8.25 (2023/12/6)

- fix(component-type-helpers): correct type inference for FunctionalComponent ([#3766](https://github.com/vuejs/language-tools/issues/3766)) - thanks @pinguet62
- fix(language-core): camelize props for dynamic component ([#3774](https://github.com/vuejs/language-tools/issues/3774)) - thanks @so1ve

## 1.8.24 (2023/11/29)

- refactor(component-type-helpers): vue 2 types now move to `vue-component-type-helpers/vue2` ([#3404](https://github.com/vuejs/language-tools/issues/3404))
Expand Down
4 changes: 2 additions & 2 deletions extensions/vscode-typescript-plugin/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"private": true,
"name": "vscode-typescript-vue-plugin",
"version": "1.8.24",
"version": "1.8.25",
"repository": {
"type": "git",
"url": "https://github.com/vuejs/language-tools.git",
Expand Down Expand Up @@ -37,7 +37,7 @@
},
"devDependencies": {
"esbuild": "latest",
"typescript-vue-plugin": "1.8.24",
"typescript-vue-plugin": "1.8.25",
"vsce": "latest"
}
}
6 changes: 3 additions & 3 deletions extensions/vscode/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"private": true,
"name": "volar",
"version": "1.8.24",
"version": "1.8.25",
"repository": {
"type": "git",
"url": "https://github.com/vuejs/language-tools.git",
Expand Down Expand Up @@ -738,8 +738,8 @@
"@types/semver": "^7.5.3",
"@types/vscode": "^1.82.0",
"@volar/vscode": "~1.11.1",
"@vue/language-core": "1.8.24",
"@vue/language-server": "1.8.24",
"@vue/language-core": "1.8.25",
"@vue/language-server": "1.8.25",
"esbuild": "latest",
"esbuild-plugin-copy": "latest",
"esbuild-visualizer": "latest",
Expand Down
2 changes: 1 addition & 1 deletion extensions/vscode/src/middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export const middleware: lsp.Middleware = {
return 'pascal';
}
}
if (item.section === 'vue.complete.casing.props') {
else if (item.section === 'vue.complete.casing.props') {
const attrCase = attrNameCasings.get(item.scopeUri);
if (attrCase === AttrNameCasing.Kebab) {
return 'kebab';
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": "1.8.24"
"version": "1.8.25"
}
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": "1.8.24",
"version": "1.8.25",
"main": "out/index.js",
"license": "MIT",
"files": [
Expand All @@ -14,9 +14,9 @@
},
"dependencies": {
"@volar/typescript": "~1.11.1",
"@vue/language-core": "1.8.24",
"@vue/language-core": "1.8.25",
"path-browserify": "^1.0.1",
"vue-component-type-helpers": "1.8.24"
"vue-component-type-helpers": "1.8.25"
},
"peerDependencies": {
"typescript": "*"
Expand Down
25 changes: 25 additions & 0 deletions packages/component-meta/tests/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,19 @@ const worker = (checker: ComponentMetaChecker, withTsconfig: boolean) => describ
expect(onBaz?.schema).toEqual([]);
});

test('reference-type-events for generic', () => {
const componentPath = path.resolve(__dirname, '../../../test-workspace/component-meta/generic/component.vue');
const meta = checker.getComponentMeta(componentPath);

expect(meta.type).toEqual(TypeMeta.Function);

const onBar = meta.events.find(event => event.name === 'bar');

expect(onBar).toBeDefined();
expect(onBar?.type).toEqual('number');
expect(onBar?.signature).toEqual('(e: "bar", data: number): void');
});

test('template-slots', () => {
const componentPath = path.resolve(__dirname, '../../../test-workspace/component-meta/template-slots/component.vue');
const meta = checker.getComponentMeta(componentPath);
Expand Down Expand Up @@ -563,6 +576,18 @@ const worker = (checker: ComponentMetaChecker, withTsconfig: boolean) => describ
expect(d).toBeDefined();
});

test('template-slots for generic', () => {
const componentPath = path.resolve(__dirname, '../../../test-workspace/component-meta/generic/component.vue');
const meta = checker.getComponentMeta(componentPath);

expect(meta.type).toEqual(TypeMeta.Function);

expect(meta.slots.find(slot =>
slot.name === 'default'
&& slot.type === '{ foo: number; }'
)).toBeDefined();
});

test('template-slots without a script block', () => {
const componentPath = path.resolve(__dirname, '../../../test-workspace/component-meta/template-slots/component-no-script.vue');
const meta = checker.getComponentMeta(componentPath);
Expand Down
4 changes: 2 additions & 2 deletions packages/component-type-helpers/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ export type ComponentProps<T> =

export type ComponentSlots<T> =
T extends new () => { $slots: infer S; } ? NonNullable<S> :
T extends (props: any, ctx: { slots: infer S; }, ...args: any) => any ? NonNullable<S> :
T extends (props: any, ctx: { slots: infer S; attrs: any; emit: any; }, ...args: any) => any ? NonNullable<S> :
{};

export type ComponentEmit<T> =
T extends new () => { $emit: infer E; } ? NonNullable<E> :
T extends (props: any, ctx: { emit: infer E; }, ...args: any) => any ? NonNullable<E> :
T extends (props: any, ctx: { slots: any; attrs: any; emit: infer E; }, ...args: any) => any ? NonNullable<E> :
{};

export type ComponentExposed<T> =
Expand Down
13 changes: 2 additions & 11 deletions packages/component-type-helpers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,18 @@ export type ComponentProps<T> =
export type ComponentSlots<T> =
T extends new () => { $slots: infer S; } ? NonNullable<S> :
T extends (props: any, ctx: { slots: infer S; }, ...args: any) => any ? NonNullable<S> :
T extends (props: any, ctx: { slots: infer S; attrs: any; emit: any; }, ...args: any) => any ? NonNullable<S> :
{};
export type ComponentEmit<T> =
T extends new () => { $emit: infer E; } ? NonNullable<E> :
T extends (props: any, ctx: { emit: infer E; }, ...args: any) => any ? NonNullable<E> :
T extends (props: any, ctx: { slots: any; attrs: any; emit: infer E; }, ...args: any) => any ? NonNullable<E> :
{};
export type ComponentExposed<T> =
T extends new () => infer E ? E :
T extends (props: any, ctx: { expose(exposed: infer E): any; }, ...args: any) => any ? NonNullable<E> :
{};
/**
* Vue 2.x
*/
export type Vue2ComponentSlots<T> =
T extends new () => { $scopedSlots: infer S; } ? NonNullable<S> :
T extends (props: any, ctx: { slots: infer S; }, ...args: any) => any ? NonNullable<S> :
{};
`.trim();

exports.code = code;
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": "1.8.24",
"version": "1.8.25",
"license": "MIT",
"files": [
"*.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/component-type-helpers/vue2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ export {

export type ComponentSlots<T> =
T extends new () => { $scopedSlots: infer S; } ? NonNullable<S> :
T extends (props: any, ctx: { slots: infer S; }, ...args: any) => any ? NonNullable<S> :
T extends (props: any, ctx: { slots: infer S; attrs: any; emit: any; }, ...args: any) => any ? NonNullable<S> :
{};
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": "1.8.24",
"version": "1.8.25",
"main": "out/index.js",
"license": "MIT",
"files": [
Expand Down
8 changes: 6 additions & 2 deletions packages/language-core/src/generators/template.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1292,6 +1292,8 @@ export function generate(
}
codes.push(`}, `);

const canCamelize = !nativeTags.has(node.tag) || node.tagType === CompilerDOM.ElementTypes.COMPONENT;

for (const prop of props) {
if (
prop.type === CompilerDOM.NodeTypes.DIRECTIVE
Expand Down Expand Up @@ -1324,7 +1326,8 @@ export function generate(
continue;
}

const shouldCamelize = (!prop.arg || (prop.arg.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION && prop.arg.isStatic)) // isStatic
const shouldCamelize = canCamelize
&& (!prop.arg || (prop.arg.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION && prop.arg.isStatic)) // isStatic
&& !nativeTags.has(node.tag)
&& hyphenateAttr(propName) === propName
&& !vueCompilerOptions.htmlAttributes.some(pattern => minimatch(propName!, pattern));
Expand Down Expand Up @@ -1394,7 +1397,8 @@ export function generate(
|| (prop.name === 'name' && node.tag === 'slot') // #2308
) continue;

const shouldCamelize = hyphenateAttr(prop.name) === prop.name
const shouldCamelize = canCamelize
&& hyphenateAttr(prop.name) === prop.name
&& !nativeTags.has(node.tag)
&& !vueCompilerOptions.htmlAttributes.some(pattern => minimatch(prop.name, pattern));

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": "1.8.24",
"version": "1.8.25",
"main": "out/index.js",
"license": "MIT",
"files": [
Expand All @@ -14,7 +14,7 @@
},
"devDependencies": {
"@types/node": "latest",
"@vue/language-core": "1.8.24"
"@vue/language-core": "1.8.25"
},
"dependencies": {
"@volar/source-map": "~1.11.1",
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": "1.8.24",
"version": "1.8.25",
"main": "out/index.js",
"license": "MIT",
"files": [
Expand All @@ -19,9 +19,9 @@
"@volar/language-core": "~1.11.1",
"@volar/language-server": "~1.11.1",
"@volar/typescript": "~1.11.1",
"@vue/language-core": "1.8.24",
"@vue/language-service": "1.8.24",
"@vue/language-core": "1.8.25",
"@vue/language-service": "1.8.25",
"vscode-languageserver-protocol": "^3.17.5",
"vue-component-meta": "1.8.24"
"vue-component-meta": "1.8.25"
}
}
4 changes: 2 additions & 2 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": "1.8.24",
"version": "1.8.25",
"main": "out/index.js",
"license": "MIT",
"files": [
Expand All @@ -21,7 +21,7 @@
"@volar/language-service": "~1.11.1",
"@volar/typescript": "~1.11.1",
"@vue/compiler-dom": "^3.3.0",
"@vue/language-core": "1.8.24",
"@vue/language-core": "1.8.25",
"@vue/shared": "^3.3.0",
"computeds": "^0.0.1",
"path-browserify": "^1.0.1",
Expand Down
4 changes: 2 additions & 2 deletions packages/tsc-eslint-hook/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vue-tsc-eslint-hook",
"version": "1.8.24",
"version": "1.8.25",
"main": "out/index.js",
"license": "MIT",
"files": [
Expand All @@ -15,7 +15,7 @@
},
"devDependencies": {
"@types/eslint": "latest",
"vue-tsc": "1.8.24"
"vue-tsc": "1.8.25"
},
"peerDependencies": {
"eslint": "*"
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": "1.8.24",
"version": "1.8.25",
"main": "out/index.js",
"license": "MIT",
"files": [
Expand All @@ -18,7 +18,7 @@
},
"dependencies": {
"@volar/typescript": "~1.11.1",
"@vue/language-core": "1.8.24",
"@vue/language-core": "1.8.25",
"semver": "^7.5.4"
},
"peerDependencies": {
Expand Down
Loading

0 comments on commit d61d074

Please sign in to comment.