Skip to content

Commit f054129

Browse files
committed
Merge remote-tracking branch 'upstream/master' into refactor/reactive-vscode
2 parents 15fd06e + ae1d696 commit f054129

File tree

20 files changed

+158
-128
lines changed

20 files changed

+158
-128
lines changed

extensions/vscode/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@
551551
"devDependencies": {
552552
"@types/semver": "^7.5.3",
553553
"@types/vscode": "^1.82.0",
554-
"@volar/vscode": "~2.4.7",
554+
"@volar/vscode": "~2.4.8",
555555
"@vscode/vsce": "latest",
556556
"@vue/language-core": "2.1.6",
557557
"@vue/language-server": "2.1.6",

packages/component-meta/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"directory": "packages/component-meta"
1414
},
1515
"dependencies": {
16-
"@volar/typescript": "~2.4.7",
16+
"@volar/typescript": "~2.4.8",
1717
"@vue/language-core": "2.1.6",
1818
"path-browserify": "^1.0.1",
1919
"vue-component-type-helpers": "2.1.6"

packages/language-core/lib/codegen/globalTypes.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,11 @@ export function generateGlobalTypes(lib: string, target: number, strictTemplates
9292
function __VLS_getVForSourceType(source: number): [number, number, number][];
9393
function __VLS_getVForSourceType(source: string): [string, number, number][];
9494
function __VLS_getVForSourceType<T extends any[]>(source: T): [
95-
item: T[number],
95+
item: ${(
96+
target >= 3 ? `import('${lib}').Reactive<T[number]>` :
97+
target >= 2.7 ? `import('${lib}').UnwrapNestedRefs<T[number]>` :
98+
`T[number]`
99+
)},
96100
key: number,
97101
index: number,
98102
][];

packages/language-core/lib/codegen/script/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ export function* generateScript(options: ScriptCodegenOptions): Generator<Code,
124124
yield `__VLS_template = () => {${newLine}`;
125125
const templateCodegenCtx = yield* generateTemplate(options, ctx);
126126
yield* generateComponentSelf(options, ctx, templateCodegenCtx);
127-
yield `},${newLine}`;
127+
yield `}${endOfLine}`;
128128
yield generateSfcBlockSection(options.sfc.script, classBlockEnd, options.sfc.script.content.length, codeFeatures.all);
129129
}
130130
}

packages/language-core/lib/codegen/script/scriptSetup.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ function* generateModelEmit(
464464
yield `type __VLS_ModelEmit = {${newLine}`;
465465
for (const defineModel of defineModels) {
466466
const [propName, localName] = getPropAndLocalName(scriptSetup, defineModel);
467-
yield `'update:${propName}': [${propName}:`;
467+
yield `'update:${propName}': [value:`;
468468
yield* generateDefinePropType(scriptSetup, propName, localName, defineModel);
469469
yield `]${endOfLine}`;
470470
}

packages/language-core/lib/codegen/template/element.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,8 @@ export function* generateElement(
293293
ctx: TemplateCodegenContext,
294294
node: CompilerDOM.ElementNode,
295295
currentComponent: CompilerDOM.ElementNode | undefined,
296-
componentCtxVar: string | undefined
296+
componentCtxVar: string | undefined,
297+
isVForChild: boolean
297298
): Generator<Code> {
298299
const startTagOffset = node.loc.start.offset + options.template.content.substring(node.loc.start.offset).indexOf(node.tag);
299300
const endTagOffset = !node.isSelfClosing && options.template.lang === 'html'
@@ -350,7 +351,11 @@ export function* generateElement(
350351

351352
const [refName, offset] = yield* generateVScope(options, ctx, node, node.props);
352353
if (refName) {
353-
ctx.templateRefs.set(refName, [`__VLS_nativeElements['${node.tag}']`, offset!]);
354+
let refValue = `__VLS_nativeElements['${node.tag}']`;
355+
if (isVForChild) {
356+
refValue = `[${refValue}]`;
357+
}
358+
ctx.templateRefs.set(refName, [refValue, offset!]);
354359
}
355360
if (ctx.singleRootNode === node) {
356361
ctx.singleRootElType = `typeof __VLS_nativeElements['${node.tag}']`;

packages/language-core/lib/codegen/template/templateChild.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ export function* generateTemplateChild(
3131
node: CompilerDOM.RootNode | CompilerDOM.TemplateChildNode | CompilerDOM.SimpleExpressionNode,
3232
currentComponent: CompilerDOM.ElementNode | undefined,
3333
prevNode: CompilerDOM.TemplateChildNode | undefined,
34-
componentCtxVar: string | undefined
34+
componentCtxVar: string | undefined,
35+
isVForChild: boolean = false
3536
): Generator<Code> {
3637
if (prevNode?.type === CompilerDOM.NodeTypes.COMMENT) {
3738
const commentText = prevNode.content.trim().split(' ')[0];
@@ -82,7 +83,7 @@ export function* generateTemplateChild(
8283
node.tagType === CompilerDOM.ElementTypes.ELEMENT
8384
|| node.tagType === CompilerDOM.ElementTypes.TEMPLATE
8485
) {
85-
yield* generateElement(options, ctx, node, currentComponent, componentCtxVar);
86+
yield* generateElement(options, ctx, node, currentComponent, componentCtxVar, isVForChild);
8687
}
8788
else {
8889
yield* generateComponent(options, ctx, node, currentComponent);

packages/language-core/lib/codegen/template/vFor.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export function* generateVFor(
8686
}
8787
let prev: CompilerDOM.TemplateChildNode | undefined;
8888
for (const childNode of node.children) {
89-
yield* generateTemplateChild(options, ctx, childNode, currentComponent, prev, componentCtxVar);
89+
yield* generateTemplateChild(options, ctx, childNode, currentComponent, prev, componentCtxVar, true);
9090
prev = childNode;
9191
}
9292
for (const varName of forBlockVars) {

packages/language-core/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"directory": "packages/language-core"
1414
},
1515
"dependencies": {
16-
"@volar/language-core": "~2.4.7",
16+
"@volar/language-core": "~2.4.8",
1717
"@vue/compiler-dom": "^3.5.0",
1818
"@vue/compiler-vue2": "^2.7.16",
1919
"@vue/shared": "^3.5.0",
@@ -26,7 +26,7 @@
2626
"@types/minimatch": "^5.1.2",
2727
"@types/node": "latest",
2828
"@types/path-browserify": "^1.0.1",
29-
"@volar/typescript": "~2.4.7",
29+
"@volar/typescript": "~2.4.8",
3030
"@vue/compiler-sfc": "^3.5.0"
3131
},
3232
"peerDependencies": {

packages/language-plugin-pug/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"@vue/language-core": "2.1.6"
1818
},
1919
"dependencies": {
20-
"@volar/source-map": "~2.4.7",
20+
"@volar/source-map": "~2.4.8",
2121
"volar-service-pug": "0.0.62"
2222
}
2323
}

packages/language-server/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
"directory": "packages/language-server"
1717
},
1818
"dependencies": {
19-
"@volar/language-core": "~2.4.7",
20-
"@volar/language-server": "~2.4.7",
21-
"@volar/test-utils": "~2.4.7",
19+
"@volar/language-core": "~2.4.8",
20+
"@volar/language-server": "~2.4.8",
21+
"@volar/test-utils": "~2.4.8",
2222
"@vue/language-core": "2.1.6",
2323
"@vue/language-service": "2.1.6",
2424
"@vue/typescript-plugin": "2.1.6",

packages/language-service/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
"update-html-data": "node ./scripts/update-html-data.js"
1818
},
1919
"dependencies": {
20-
"@volar/language-core": "~2.4.7",
21-
"@volar/language-service": "~2.4.7",
22-
"@volar/typescript": "~2.4.7",
20+
"@volar/language-core": "~2.4.8",
21+
"@volar/language-service": "~2.4.8",
22+
"@volar/typescript": "~2.4.8",
2323
"@vue/compiler-dom": "^3.5.0",
2424
"@vue/language-core": "2.1.6",
2525
"@vue/shared": "^3.5.0",
@@ -41,7 +41,7 @@
4141
"devDependencies": {
4242
"@types/node": "latest",
4343
"@types/path-browserify": "latest",
44-
"@volar/kit": "~2.4.7",
44+
"@volar/kit": "~2.4.8",
4545
"vscode-languageserver-protocol": "^3.17.5"
4646
}
4747
}

packages/tsc/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"vue-tsc": "./bin/vue-tsc.js"
1818
},
1919
"dependencies": {
20-
"@volar/typescript": "~2.4.7",
20+
"@volar/typescript": "~2.4.8",
2121
"@vue/language-core": "2.1.6",
2222
"semver": "^7.5.4"
2323
},

packages/tsc/tests/__snapshots__/dts.spec.ts.snap

+11-11
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ declare const _default: <Row extends BaseRow>(__VLS_props: NonNullable<Awaited<t
1313
attrs: any;
1414
slots: {
1515
default?(_: {
16-
row: Row;
16+
row: import("vue").Reactive<Row>;
1717
}): any;
1818
};
1919
emit: {};
@@ -91,7 +91,7 @@ type __VLS_PrettifyLocal<T> = {
9191
exports[`vue-tsc-dts > Input: generic/component.vue, Output: generic/component.vue.d.ts 1`] = `
9292
"declare const _default: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
9393
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
94-
readonly "onUpdate:title"?: (title: string) => any;
94+
readonly "onUpdate:title"?: (value: string) => any;
9595
readonly onBar?: (data: number) => any;
9696
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:title" | "onBar"> & Partial<{}> & ({
9797
title?: string;
@@ -111,7 +111,7 @@ exports[`vue-tsc-dts > Input: generic/component.vue, Output: generic/component.v
111111
foo: number;
112112
}): any;
113113
};
114-
emit: ((e: "bar", data: number) => void) & ((evt: "update:title", title: string) => void);
114+
emit: ((e: "bar", data: number) => void) & ((evt: "update:title", value: string) => void);
115115
}>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
116116
[key: string]: any;
117117
}> & {
@@ -127,7 +127,7 @@ type __VLS_PrettifyLocal<T> = {
127127
exports[`vue-tsc-dts > Input: generic/custom-extension-component.cext, Output: generic/custom-extension-component.cext.d.ts 1`] = `
128128
"declare const _default: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
129129
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
130-
readonly "onUpdate:title"?: (title: string) => any;
130+
readonly "onUpdate:title"?: (value: string) => any;
131131
readonly onBar?: (data: number) => any;
132132
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:title" | "onBar"> & Partial<{}> & ({
133133
title?: string;
@@ -147,7 +147,7 @@ exports[`vue-tsc-dts > Input: generic/custom-extension-component.cext, Output: g
147147
foo: number;
148148
}): any;
149149
};
150-
emit: ((e: "bar", data: number) => void) & ((evt: "update:title", title: string) => void);
150+
emit: ((e: "bar", data: number) => void) & ((evt: "update:title", value: string) => void);
151151
}>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
152152
[key: string]: any;
153153
}> & {
@@ -321,13 +321,13 @@ exports[`vue-tsc-dts > Input: reference-type-model/component.vue, Output: refere
321321
quxModifiers?: Record<'lazy' | 'trim', true>;
322322
};
323323
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<__VLS_PublicProps>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
324-
"update:foo": (foo: number) => void;
325-
"update:bar": (bar: string[]) => void;
326-
"update:qux": (qux: string) => void;
324+
"update:foo": (value: number) => void;
325+
"update:bar": (value: string[]) => void;
326+
"update:qux": (value: string) => void;
327327
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<__VLS_PublicProps>>> & Readonly<{
328-
"onUpdate:foo"?: (foo: number) => any;
329-
"onUpdate:bar"?: (bar: string[]) => any;
330-
"onUpdate:qux"?: (qux: string) => any;
328+
"onUpdate:foo"?: (value: number) => any;
329+
"onUpdate:bar"?: (value: string[]) => any;
330+
"onUpdate:qux"?: (value: string) => any;
331331
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
332332
export default _default;
333333
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;

packages/typescript-plugin/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"directory": "packages/typescript-plugin"
1414
},
1515
"dependencies": {
16-
"@volar/typescript": "~2.4.7",
16+
"@volar/typescript": "~2.4.8",
1717
"@vue/language-core": "2.1.6",
1818
"@vue/shared": "^3.5.0"
1919
},

0 commit comments

Comments
 (0)