diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index effb552e4d..c7fb7857f9 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,2 +1 @@
github: johnsoncodehk
-open_collective: volarjs
diff --git a/.github/sponsors/365talents.png b/.github/sponsors/365talents.png
deleted file mode 100644
index 296e2f552a..0000000000
Binary files a/.github/sponsors/365talents.png and /dev/null differ
diff --git a/.github/sponsors/StackBlitz.png b/.github/sponsors/StackBlitz.png
deleted file mode 100644
index aaf7200669..0000000000
Binary files a/.github/sponsors/StackBlitz.png and /dev/null differ
diff --git a/.github/sponsors/nuxt.svg b/.github/sponsors/nuxt.svg
deleted file mode 100644
index 8e6541e777..0000000000
--- a/.github/sponsors/nuxt.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/.github/sponsors/prefect.svg b/.github/sponsors/prefect.svg
deleted file mode 100644
index f60f88c40e..0000000000
--- a/.github/sponsors/prefect.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.github/sponsors/volta.svg b/.github/sponsors/volta.svg
deleted file mode 100644
index c3a5182226..0000000000
--- a/.github/sponsors/volta.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/.github/sponsors/vue.png b/.github/sponsors/vue.png
deleted file mode 100644
index 60e17006ad..0000000000
Binary files a/.github/sponsors/vue.png and /dev/null differ
diff --git a/.github/workflows/auto-fix.yml b/.github/workflows/auto-fix.yml
index cd8ad9f5cd..d1577f6bbd 100644
--- a/.github/workflows/auto-fix.yml
+++ b/.github/workflows/auto-fix.yml
@@ -12,8 +12,6 @@ jobs:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- with:
- version: latest
- uses: actions/setup-node@v4
with:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 25bac53823..7c873bbd2d 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -13,8 +13,6 @@ jobs:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- with:
- version: latest
- uses: actions/setup-node@v4
with:
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 34f325a278..0dd74156bd 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -15,8 +15,6 @@ jobs:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- with:
- version: latest
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
diff --git a/.github/workflows/update-html-data.yml b/.github/workflows/update-html-data.yml
index d763590f8c..edb3b03aa4 100644
--- a/.github/workflows/update-html-data.yml
+++ b/.github/workflows/update-html-data.yml
@@ -12,8 +12,6 @@ jobs:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- with:
- version: latest
- uses: actions/setup-node@v4
with:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 901d81fb4b..3db4bf45a4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,59 @@
# Changelog
+## 2.0.17 (2024/5/10)
+
+### Features
+
+- **language-core:** add JSDod support for component (#2377)
+- **language-core:** add JSDoc support for script setup binding variables (#3409)
+- **language-core:** add class component support (#4354)
+- **language-service:** re-support scoped class links in template (#4357)
+- **typescript-plugin:** create script setup block when auto import if needed
+- **typescript-plugin:** add JSDoc support for events in template (#4365)
+- **component-meta:** add JSDoc tags support for events
+- **language-core:** support defineOptions (#4362) - Thanks @zhiyuanzmj
+
+### Bug Fixes
+
+- **language-core:** hover not working for intrinsic element event name
+- **language-core:** showing false _declared but not used_ errors for functions used in `v-on="{}"` (#4333)
+- **language-core:** fix nameless event expression formatting
+- **language-core:** types imported in the `\n\n \n Привет
\n \n ```\n\n При использовании на обычном DOM-элементе ссылка будет указывать на этот элемент; при использовании на дочернем компоненте ссылка будет указывать на экземпляр дочернего компонента.\n\n В качестве альтернативы `ref` может принимать функцию, что даёт полный контроль над тем, где хранить ссылку:\n\n ```html\n child = el\" />\n ```\n\n Важное замечание о времени регистрации ref-ссылок: поскольку эти ссылки создаются render-функцией, нужно подождать, пока компонент будет смонтирован, прежде чем обращаться к ним.\n\n Так же свойство `this.$refs` не реактивно, поэтому не следует использовать его в шаблонах для привязки данных.\n\n- **См. также**\n - [Руководство — Ссылки на элементы шаблона](https://ru.vuejs.org/guide/essentials/template-refs.html)\n - [Guide - Typing Template Refs](https://ru.vuejs.org/guide/typescript/composition-api.html#typing-template-refs) \n - [Guide - Typing Component Template Refs](https://ru.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs) \n"
+ "value": "\nОзначает [ссылку на элементы шаблона](https://ru.vuejs.org/guide/essentials/template-refs.html).\n\n- **Ожидает** `string | Function`\n\n- **Подробности**\n\n Атрибут `ref` используется для регистрации ссылки на элемент или дочерний компонент.\n\n В Options API, ссылка будет зарегистрирована в объекте компонента `this.$refs`:\n\n ```html\n \n hello
\n ```\n\n В Composition API, ссылка будет храниться в ref с соответствующим именем:\n\n ```vue\n \n\n \n Привет
\n \n ```\n\n При использовании на обычном DOM-элементе ссылка будет указывать на этот элемент; при использовании на дочернем компоненте ссылка будет указывать на экземпляр дочернего компонента.\n\n В качестве альтернативы `ref` может принимать функцию, что даёт полный контроль над тем, где хранить ссылку:\n\n ```html\n child = el\" />\n ```\n\n Важное замечание о времени регистрации ref-ссылок: поскольку эти ссылки создаются render-функцией, нужно подождать, пока компонент будет смонтирован, прежде чем обращаться к ним.\n\n Так же свойство `this.$refs` не реактивно, поэтому не следует использовать его в шаблонах для привязки данных.\n\n- **См. также**\n - [Руководство — Ссылки на элементы шаблона](https://ru.vuejs.org/guide/essentials/template-refs.html)\n - [Руководство - Типизация ссылок на шаблоны](https://ru.vuejs.org/guide/typescript/composition-api.html#typing-template-refs) \n - [Руководство - Типизация ссылок на шаблоны компонентов](https://ru.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs) \n"
},
"references": [
{
diff --git a/packages/language-service/data/template/zh-cn.json b/packages/language-service/data/template/zh-cn.json
index e0a9e04bdf..eac0a18393 100644
--- a/packages/language-service/data/template/zh-cn.json
+++ b/packages/language-service/data/template/zh-cn.json
@@ -237,7 +237,7 @@
"name": "Suspense",
"description": {
"kind": "markdown",
- "value": "\n用于协调对组件树中嵌套的异步依赖的处理。\n\n- **Props**\n\n ```ts\n interface SuspenseProps {\n timeout?: string | number\n }\n ```\n\n- **事件**\n\n - `@resolve`\n - `@pending`\n - `@fallback`\n\n- **详细信息**\n\n `` 接受两个插槽:`#default` 和 `#fallback`。它将在内存中渲染默认插槽的同时展示后备插槽内容。\n\n 如果在渲染时遇到异步依赖项 ([异步组件](https://cn.vuejs.org/guide/components/async.html)和具有 [`async setup()`](https://cn.vuejs.org/guide/built-ins/suspense.html#async-setup) 的组件),它将等到所有异步依赖项解析完成时再显示默认插槽。\n\n- **参考**[指南 - Suspense](https://cn.vuejs.org/guide/built-ins/suspense.html)\n"
+ "value": "\n用于协调对组件树中嵌套的异步依赖的处理。\n\n- **Props**\n\n ```ts\n interface SuspenseProps {\n timeout?: string | number\n suspensible?: boolean\n }\n ```\n\n- **事件**\n\n - `@resolve`\n - `@pending`\n - `@fallback`\n\n- **详细信息**\n\n `` 接受两个插槽:`#default` 和 `#fallback`。它将在内存中渲染默认插槽的同时展示后备插槽内容。\n\n 如果在渲染时遇到异步依赖项 ([异步组件](https://cn.vuejs.org/guide/components/async.html)和具有 [`async setup()`](https://cn.vuejs.org/guide/built-ins/suspense.html#async-setup) 的组件),它将等到所有异步依赖项解析完成时再显示默认插槽。\n\n 通过将 Suspense 设置为 `suspensible`,所有的异步依赖将由父级 Suspense 处理。请参阅[实现细节](https://github.com/vuejs/core/pull/6736)\n\n- **参考**[指南 - Suspense](https://cn.vuejs.org/guide/built-ins/suspense.html)\n"
},
"attributes": [],
"references": [
@@ -1156,7 +1156,7 @@
"name": "v-once",
"description": {
"kind": "markdown",
- "value": "\n仅渲染元素和组件一次,并跳过之后的更新。\n\n- **无需传入**\n\n- **详细信息**\n\n 在随后的重新渲染,元素/组件及其所有子项将被当作静态内容并跳过渲染。这可以用来优化更新时的性能。\n\n ```html\n \n This will never change: {{msg}} \n \n \n \n \n \n \n ```\n\n 从 3.2 起,你也可以搭配 [`v-memo`](#v-memo) 的无效条件来缓存部分模板。\n\n- **参考**\n - [数据绑定语法 - 插值](https://cn.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n - [v-memo](#v-memo)\n"
+ "value": "\n仅渲染元素和组件一次,并跳过之后的更新。\n\n- **无需传入**\n\n- **详细信息**\n\n 在随后的重新渲染,元素/组件及其所有子项将被当作静态内容并跳过渲染。这可以用来优化更新时的性能。\n\n ```html\n \n This will never change: {{msg}} \n \n \n \n \n \n \n ```\n\n 从 3.2 起,你也可以搭配 [`v-memo`](#v-memo) 的无效条件来缓存部分模板。\n\n- **参考**\n - [数据绑定语法 - 插值](https://cn.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n - [v-memo](#v-memo)\n"
},
"references": [
{
diff --git a/packages/language-service/index.ts b/packages/language-service/index.ts
index e2183f401a..f1d89fd69f 100644
--- a/packages/language-service/index.ts
+++ b/packages/language-service/index.ts
@@ -3,7 +3,7 @@ export * from '@vue/language-core';
export * from './lib/ideFeatures/nameCasing';
export * from './lib/types';
-import type { ServiceContext, ServiceEnvironment, LanguageServicePlugin } from '@volar/language-service';
+import type { LanguageServicePlugin, ServiceContext, ServiceEnvironment } from '@volar/language-service';
import type { VueCompilerOptions } from './lib/types';
import { create as createEmmetPlugin } from 'volar-service-emmet';
@@ -17,9 +17,9 @@ import { create as createCssPlugin } from './lib/plugins/css';
import { create as createVueAutoDotValuePlugin } from './lib/plugins/vue-autoinsert-dotvalue';
import { create as createVueAutoWrapParenthesesPlugin } from './lib/plugins/vue-autoinsert-parentheses';
import { create as createVueAutoAddSpacePlugin } from './lib/plugins/vue-autoinsert-space';
-import { create as createVueReferencesCodeLensPlugin } from './lib/plugins/vue-codelens-references';
import { create as createVueDirectiveCommentsPlugin } from './lib/plugins/vue-directive-comments';
import { create as createVueDocumentDropPlugin } from './lib/plugins/vue-document-drop';
+import { create as createVueDocumentLinksPlugin } from './lib/plugins/vue-document-links';
import { create as createVueExtractFilePlugin } from './lib/plugins/vue-extract-file';
import { create as createVueSfcPlugin } from './lib/plugins/vue-sfc';
import { create as createVueTemplatePlugin } from './lib/plugins/vue-template';
@@ -55,7 +55,7 @@ export function getVueLanguageServicePlugins(
}
const languageService = (created.provide as import('volar-service-typescript').Provide)['typescript/languageService']();
const vueOptions = getVueOptions(context.env);
- decorateLanguageServiceForVue(context.language, languageService, vueOptions, ts, false);
+ decorateLanguageServiceForVue(context.language, languageService, vueOptions, ts, false, fileName => context.env.typescript!.fileNameToUri(fileName));
return created;
},
};
@@ -78,8 +78,8 @@ export function getVueLanguageServicePlugins(
createVueTemplatePlugin('pug', ts, getVueOptions, getTsPluginClient),
createVueSfcPlugin(),
createVueTwoslashQueriesPlugin(ts, getTsPluginClient),
- createVueReferencesCodeLensPlugin(),
- createVueDocumentDropPlugin(ts, getTsPluginClient),
+ createVueDocumentLinksPlugin(),
+ createVueDocumentDropPlugin(ts, getVueOptions, getTsPluginClient),
createVueAutoDotValuePlugin(ts, getTsPluginClient),
createVueAutoWrapParenthesesPlugin(ts),
createVueAutoAddSpacePlugin(),
diff --git a/packages/language-service/lib/plugins/vue-codelens-references.ts b/packages/language-service/lib/plugins/vue-codelens-references.ts
deleted file mode 100644
index 14ad82a0a3..0000000000
--- a/packages/language-service/lib/plugins/vue-codelens-references.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import type { LanguageServicePlugin, LanguageServicePluginInstance } from '@volar/language-service';
-import { SourceScript, VirtualCode, VueCodeInformation, VueVirtualCode } from '@vue/language-core';
-import type * as vscode from 'vscode-languageserver-protocol';
-
-export function create(): LanguageServicePlugin {
- return {
- name: 'vue-codelens-references',
- create(context): LanguageServicePluginInstance {
- return {
- provideReferencesCodeLensRanges(document) {
-
- return worker(document.uri, virtualCode => {
-
- const result: vscode.Range[] = [];
-
- for (const map of context.documents.getMaps(virtualCode) ?? []) {
- for (const mapping of map.map.mappings) {
-
- if (!(mapping.data as VueCodeInformation).__referencesCodeLens) {
- continue;
- }
-
- result.push({
- start: document.positionAt(mapping.generatedOffsets[0]),
- end: document.positionAt(
- mapping.generatedOffsets[mapping.generatedOffsets.length - 1]
- + mapping.lengths[mapping.lengths.length - 1]
- ),
- });
- }
- }
-
- return result;
- });
- },
- };
-
- function worker(uri: string, callback: (vueFile: VirtualCode, sourceScript: SourceScript) => T) {
-
- const decoded = context.decodeEmbeddedDocumentUri(uri);
- const sourceScript = decoded && context.language.scripts.get(decoded[0]);
- const virtualCode = decoded && sourceScript?.generated?.embeddedCodes.get(decoded[1]);
- if (!virtualCode || !(sourceScript?.generated?.root instanceof VueVirtualCode) || !sourceScript) {
- return;
- }
-
- return callback(virtualCode, sourceScript);
- }
- },
- };
-}
diff --git a/packages/language-service/lib/plugins/vue-document-drop.ts b/packages/language-service/lib/plugins/vue-document-drop.ts
index eaeb32a0e6..1c6f720a9f 100644
--- a/packages/language-service/lib/plugins/vue-document-drop.ts
+++ b/packages/language-service/lib/plugins/vue-document-drop.ts
@@ -1,13 +1,14 @@
-import { VueVirtualCode, forEachEmbeddedCode } from '@vue/language-core';
+import { VueCompilerOptions, VueVirtualCode, forEachEmbeddedCode } from '@vue/language-core';
import { camelize, capitalize, hyphenate } from '@vue/shared';
import * as path from 'path-browserify';
import type * as vscode from 'vscode-languageserver-protocol';
import { createAddComponentToOptionEdit, getLastImportNode } from '../plugins/vue-extract-file';
-import { LanguageServicePlugin, LanguageServicePluginInstance, ServiceContext, TagNameCasing } from '../types';
+import { LanguageServicePlugin, LanguageServicePluginInstance, ServiceContext, ServiceEnvironment, TagNameCasing } from '../types';
import { getUserPreferences } from 'volar-service-typescript/lib/configs/getUserPreferences';
export function create(
ts: typeof import('typescript'),
+ getVueOptions: (env: ServiceEnvironment) => VueCompilerOptions,
getTsPluginClient?: (context: ServiceContext) => typeof import('@vue/typescript-plugin/lib/client') | undefined,
): LanguageServicePlugin {
return {
@@ -17,6 +18,7 @@ export function create(
let casing = TagNameCasing.Pascal as TagNameCasing; // TODO
const tsPluginClient = getTsPluginClient?.(context);
+ const vueCompilerOptions = getVueOptions(context.env);
return {
async provideDocumentDropEdits(document, _position, dataTransfer) {
@@ -39,7 +41,7 @@ export function create(
importUri = item.value as string;
}
}
- if (!importUri?.endsWith('.vue')) {
+ if (!importUri || !vueCompilerOptions.extensions.some(ext => importUri.endsWith(ext))) {
return;
}
diff --git a/packages/language-service/lib/plugins/vue-document-links.ts b/packages/language-service/lib/plugins/vue-document-links.ts
new file mode 100644
index 0000000000..2bbe224bdd
--- /dev/null
+++ b/packages/language-service/lib/plugins/vue-document-links.ts
@@ -0,0 +1,74 @@
+import type { LanguageServicePlugin, LanguageServicePluginInstance } from '@volar/language-service';
+import { Sfc, VueVirtualCode } from '@vue/language-core';
+import { tsCodegen } from '@vue/language-core/lib/plugins/vue-tsx';
+import type * as vscode from 'vscode-languageserver-protocol';
+
+export function create(): LanguageServicePlugin {
+ return {
+ name: 'vue-document-links',
+ create(context): LanguageServicePluginInstance {
+ return {
+ provideDocumentLinks(document) {
+
+ const decoded = context.decodeEmbeddedDocumentUri(document.uri);
+ const sourceScript = decoded && context.language.scripts.get(decoded[0]);
+ const virtualCode = decoded && sourceScript?.generated?.embeddedCodes.get(decoded[1]);
+
+ if (sourceScript?.generated?.root instanceof VueVirtualCode && virtualCode?.id === 'template') {
+
+ const result: vscode.DocumentLink[] = [];
+ const codegen = tsCodegen.get(sourceScript.generated.root.sfc);
+ const scopedClasses = codegen?.generatedTemplate()?.scopedClasses ?? [];
+ const styleClasses = new Map();
+ const option = sourceScript.generated.root.vueCompilerOptions.experimentalResolveStyleCssClasses;
+
+ for (let i = 0; i < sourceScript.generated.root.sfc.styles.length; i++) {
+ const style = sourceScript.generated.root.sfc.styles[i];
+ if (option === 'always' || (option === 'scoped' && style.scoped)) {
+ for (const className of style.classNames) {
+ if (!styleClasses.has(className.text.substring(1))) {
+ styleClasses.set(className.text.substring(1), []);
+ }
+ styleClasses.get(className.text.substring(1))!.push({
+ index: i,
+ style,
+ classOffset: className.offset,
+ });
+ }
+ }
+ }
+
+ for (const { className, offset } of scopedClasses) {
+ const styles = styleClasses.get(className);
+ if (styles) {
+ for (const style of styles) {
+ const styleDocumentUri = context.encodeEmbeddedDocumentUri(decoded![0], 'style_' + style.index);
+ const styleVirtualCode = sourceScript.generated.embeddedCodes.get('style_' + style.index);
+ if (!styleVirtualCode) {
+ continue;
+ }
+ const styleDocument = context.documents.get(styleDocumentUri, styleVirtualCode.languageId, styleVirtualCode.snapshot);
+ const start = styleDocument.positionAt(style.classOffset);
+ const end = styleDocument.positionAt(style.classOffset + className.length + 1);
+ result.push({
+ range: {
+ start: document.positionAt(offset),
+ end: document.positionAt(offset + className.length),
+ },
+ target: context.encodeEmbeddedDocumentUri(decoded![0], 'style_' + style.index) + `#L${start.line + 1},${start.character + 1}-L${end.line + 1},${end.character + 1}`,
+ });
+ }
+ }
+ }
+
+ return result;
+ }
+ },
+ };
+ },
+ };
+}
diff --git a/packages/language-service/lib/plugins/vue-sfc.ts b/packages/language-service/lib/plugins/vue-sfc.ts
index 3fe001d4a6..831af9c965 100644
--- a/packages/language-service/lib/plugins/vue-sfc.ts
+++ b/packages/language-service/lib/plugins/vue-sfc.ts
@@ -1,4 +1,4 @@
-import type { LanguageServicePlugin, LanguageServicePluginInstance } from '@volar/language-service';
+import type { LanguageServicePlugin, LanguageServicePluginInstance, ServiceContext } from '@volar/language-service';
import * as vue from '@vue/language-core';
import { create as createHtmlService } from 'volar-service-html';
import * as html from 'vscode-html-languageservice';
@@ -13,52 +13,56 @@ export interface Provide {
}
export function create(): LanguageServicePlugin {
- return {
- name: 'vue-sfc',
- create(context): LanguageServicePluginInstance {
- const htmlPlugin = createHtmlService({
- documentSelector: ['vue'],
- useDefaultDataProvider: false,
- getCustomData(context) {
- sfcDataProvider ??= html.newHTMLDataProvider('vue', loadLanguageBlocks(context.env.locale ?? 'en'));
- return [sfcDataProvider];
- },
- async getFormattingOptions(document, options, context) {
- return await worker(document, async vueCode => {
+ const htmlPlugin = createHtmlService({
+ documentSelector: ['vue'],
+ useDefaultDataProvider: false,
+ getCustomData(context) {
+ sfcDataProvider ??= html.newHTMLDataProvider('vue', loadLanguageBlocks(context.env.locale ?? 'en'));
+ return [sfcDataProvider];
+ },
+ async getFormattingOptions(document, options, context) {
+ return await worker(document, context, async vueCode => {
- const formatSettings = await context.env.getConfiguration?.('html.format') ?? {};
- const blockTypes = ['template', 'script', 'style'];
+ const formatSettings = await context.env.getConfiguration?.('html.format') ?? {};
+ const blockTypes = ['template', 'script', 'style'];
- for (const customBlock of vueCode.sfc.customBlocks) {
- blockTypes.push(customBlock.type);
- }
+ for (const customBlock of vueCode.sfc.customBlocks) {
+ blockTypes.push(customBlock.type);
+ }
- return {
- ...options,
- ...formatSettings,
- wrapAttributes: await context.env.getConfiguration?.('vue.format.wrapAttributes') ?? 'auto',
- unformatted: '',
- contentUnformatted: blockTypes.join(','),
- endWithNewline: options.insertFinalNewline ? true
- : options.trimFinalNewlines ? false
- : document.getText().endsWith('\n'),
- };
- }) ?? {};
- },
- }).create(context);
+ return {
+ ...options,
+ ...formatSettings,
+ wrapAttributes: await context.env.getConfiguration?.('vue.format.wrapAttributes') ?? 'auto',
+ unformatted: '',
+ contentUnformatted: blockTypes.join(','),
+ endWithNewline: options.insertFinalNewline ? true
+ : options.trimFinalNewlines ? false
+ : document.getText().endsWith('\n'),
+ };
+ }) ?? {};
+ },
+ });
+ return {
+ ...htmlPlugin,
+ name: 'vue-sfc',
+ create(context): LanguageServicePluginInstance {
+ const htmlPluginInstance = htmlPlugin.create(context);
return {
- ...htmlPlugin,
+ ...htmlPluginInstance,
provide: {
'vue/vueFile': document => {
- return worker(document, vueFile => {
+ return worker(document, context, vueFile => {
return vueFile;
});
},
},
+ provideDocumentLinks: undefined,
+
async resolveEmbeddedCodeFormattingOptions(sourceScript, virtualCode, options) {
if (sourceScript.generated?.root instanceof vue.VueVirtualCode) {
if (virtualCode.id === 'scriptFormat' || virtualCode.id === 'scriptSetupFormat') {
@@ -80,10 +84,8 @@ export function create(): LanguageServicePlugin {
return options;
},
- provideDocumentLinks: undefined,
-
provideDocumentSymbols(document) {
- return worker(document, vueSourceFile => {
+ return worker(document, context, vueSourceFile => {
const result: vscode.DocumentSymbol[] = [];
const descriptor = vueSourceFile.sfc;
@@ -170,15 +172,15 @@ export function create(): LanguageServicePlugin {
});
},
};
-
- function worker(document: TextDocument, callback: (vueSourceFile: vue.VueVirtualCode) => T) {
- const decoded = context.decodeEmbeddedDocumentUri(document.uri);
- const sourceScript = decoded && context.language.scripts.get(decoded[0]);
- const virtualCode = decoded && sourceScript?.generated?.embeddedCodes.get(decoded[1]);
- if (virtualCode instanceof vue.VueVirtualCode) {
- return callback(virtualCode);
- }
- }
},
};
+
+ function worker(document: TextDocument, context: ServiceContext, callback: (vueSourceFile: vue.VueVirtualCode) => T) {
+ const decoded = context.decodeEmbeddedDocumentUri(document.uri);
+ const sourceScript = decoded && context.language.scripts.get(decoded[0]);
+ const virtualCode = decoded && sourceScript?.generated?.embeddedCodes.get(decoded[1]);
+ if (virtualCode instanceof vue.VueVirtualCode) {
+ return callback(virtualCode);
+ }
+ }
}
diff --git a/packages/language-service/package.json b/packages/language-service/package.json
index 8591f271c9..133f9664fd 100644
--- a/packages/language-service/package.json
+++ b/packages/language-service/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/language-service",
- "version": "2.0.16",
+ "version": "2.0.17",
"license": "MIT",
"files": [
"data",
@@ -16,23 +16,23 @@
"update-html-data": "node ./scripts/update-html-data.js"
},
"dependencies": {
- "@volar/language-core": "~2.2.0",
- "@volar/language-service": "~2.2.0",
- "@volar/typescript": "~2.2.0",
+ "@volar/language-core": "~2.2.2",
+ "@volar/language-service": "~2.2.2",
+ "@volar/typescript": "~2.2.2",
"@vue/compiler-dom": "^3.4.0",
- "@vue/language-core": "2.0.16",
+ "@vue/language-core": "2.0.17",
"@vue/shared": "^3.4.0",
- "@vue/typescript-plugin": "2.0.16",
+ "@vue/typescript-plugin": "2.0.17",
"computeds": "^0.0.1",
"path-browserify": "^1.0.1",
- "volar-service-css": "0.0.42",
- "volar-service-emmet": "0.0.42",
- "volar-service-html": "0.0.42",
- "volar-service-json": "0.0.42",
- "volar-service-pug": "0.0.42",
- "volar-service-pug-beautify": "0.0.42",
- "volar-service-typescript": "0.0.42",
- "volar-service-typescript-twoslash-queries": "0.0.42",
+ "volar-service-css": "0.0.44",
+ "volar-service-emmet": "0.0.44",
+ "volar-service-html": "0.0.44",
+ "volar-service-json": "0.0.44",
+ "volar-service-pug": "0.0.44",
+ "volar-service-pug-beautify": "0.0.44",
+ "volar-service-typescript": "0.0.44",
+ "volar-service-typescript-twoslash-queries": "0.0.44",
"vscode-html-languageservice": "npm:@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462",
"vscode-languageserver-textdocument": "^1.0.11",
"vscode-uri": "^3.0.8"
@@ -40,7 +40,7 @@
"devDependencies": {
"@types/node": "latest",
"@types/path-browserify": "latest",
- "@volar/kit": "~2.2.0",
+ "@volar/kit": "~2.2.2",
"vscode-languageserver-protocol": "^3.17.5"
}
}
diff --git a/packages/language-service/tests/format/4333.spec.ts b/packages/language-service/tests/format/4333.spec.ts
new file mode 100644
index 0000000000..03b8a21eb1
--- /dev/null
+++ b/packages/language-service/tests/format/4333.spec.ts
@@ -0,0 +1,14 @@
+import { defineFormatTest } from '../utils/format';
+
+defineFormatTest({
+ title: '#' + __filename.split('.')[0],
+ languageId: 'vue',
+ input: `
+
+
+
+ `.trim(),
+ settings: {
+ 'typescript.format.semicolons': 'insert',
+ }
+});
diff --git a/packages/language-service/tests/utils/format.ts b/packages/language-service/tests/utils/format.ts
index 88780a5078..f12f066cc1 100644
--- a/packages/language-service/tests/utils/format.ts
+++ b/packages/language-service/tests/utils/format.ts
@@ -6,7 +6,7 @@ import { createVueLanguagePlugin, getVueLanguageServicePlugins, resolveVueCompil
const resolvedVueOptions = resolveVueCompilerOptions({});
const vueLanguagePlugin = createVueLanguagePlugin(
ts,
- fileId => formatter.env.typescript!.uriToFileName(fileId),
+ scriptId => formatter.env.typescript!.uriToFileName(scriptId),
false,
() => '',
() => [],
diff --git a/packages/tsc/package.json b/packages/tsc/package.json
index f6b70dd4f1..e62eb926a0 100644
--- a/packages/tsc/package.json
+++ b/packages/tsc/package.json
@@ -1,6 +1,6 @@
{
"name": "vue-tsc",
- "version": "2.0.16",
+ "version": "2.0.17",
"license": "MIT",
"files": [
"bin",
@@ -16,8 +16,8 @@
"vue-tsc": "./bin/vue-tsc.js"
},
"dependencies": {
- "@volar/typescript": "~2.2.0",
- "@vue/language-core": "2.0.16",
+ "@volar/typescript": "~2.2.2",
+ "@vue/language-core": "2.0.17",
"semver": "^7.5.4"
},
"peerDependencies": {
diff --git a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap
index 67094f61fe..d9c9f94ec2 100644
--- a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap
+++ b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap
@@ -75,7 +75,9 @@ type __VLS_Prettify = {
exports[`vue-tsc-dts > Input: generic/component.vue, Output: generic/component.vue.d.ts 1`] = `
"declare const _default: (__VLS_props: {
+ "onUpdate:title"?: (title: string) => any;
onBar?: (data: number) => any;
+ title?: string;
foo: number;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, __VLS_ctx?: {
slots: Readonly<{
@@ -88,12 +90,14 @@ exports[`vue-tsc-dts > Input: generic/component.vue, Output: generic/component.v
}): any;
};
attrs: any;
- emit: (e: 'bar', data: number) => void;
+ emit: ((e: 'bar', data: number) => void) & ((evt: "update:title", title: string) => void);
}, __VLS_expose?: (exposed: import("vue").ShallowUnwrapRef<{
baz: number;
}>) => void, __VLS_setup?: Promise<{
props: {
+ "onUpdate:title"?: (title: string) => any;
onBar?: (data: number) => any;
+ title?: string;
foo: number;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
expose(exposed: import("vue").ShallowUnwrapRef<{
@@ -109,13 +113,15 @@ exports[`vue-tsc-dts > Input: generic/component.vue, Output: generic/component.v
foo: number;
}): any;
};
- emit: (e: 'bar', data: number) => void;
+ emit: ((e: 'bar', data: number) => void) & ((evt: "update:title", title: string) => void);
}>) => import("vue").VNode & {
__ctx?: {
props: {
+ "onUpdate:title"?: (title: string) => any;
onBar?: (data: number) => any;
+ title?: string;
foo: number;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
expose(exposed: import("vue").ShallowUnwrapRef<{
@@ -131,7 +137,7 @@ exports[`vue-tsc-dts > Input: generic/component.vue, Output: generic/component.v
foo: number;
}): any;
};
- emit: (e: 'bar', data: number) => void;
+ emit: ((e: 'bar', data: number) => void) & ((evt: "update:title", title: string) => void);
};
};
export default _default;
@@ -143,7 +149,9 @@ type __VLS_Prettify = {
exports[`vue-tsc-dts > Input: generic/custom-extension-component.cext, Output: generic/custom-extension-component.cext.d.ts 1`] = `
"declare const _default: (__VLS_props: {
+ "onUpdate:title"?: (title: string) => any;
onBar?: (data: number) => any;
+ title?: string;
foo: number;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, __VLS_ctx?: {
slots: Readonly<{
@@ -156,12 +164,14 @@ exports[`vue-tsc-dts > Input: generic/custom-extension-component.cext, Output: g
}): any;
};
attrs: any;
- emit: (e: 'bar', data: number) => void;
+ emit: ((e: 'bar', data: number) => void) & ((evt: "update:title", title: string) => void);
}, __VLS_expose?: (exposed: import("vue").ShallowUnwrapRef<{
baz: number;
}>) => void, __VLS_setup?: Promise<{
props: {
+ "onUpdate:title"?: (title: string) => any;
onBar?: (data: number) => any;
+ title?: string;
foo: number;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
expose(exposed: import("vue").ShallowUnwrapRef<{
@@ -177,13 +187,15 @@ exports[`vue-tsc-dts > Input: generic/custom-extension-component.cext, Output: g
foo: number;
}): any;
};
- emit: (e: 'bar', data: number) => void;
+ emit: ((e: 'bar', data: number) => void) & ((evt: "update:title", title: string) => void);
}>) => import("vue").VNode & {
__ctx?: {
props: {
+ "onUpdate:title"?: (title: string) => any;
onBar?: (data: number) => any;
+ title?: string;
foo: number;
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
expose(exposed: import("vue").ShallowUnwrapRef<{
@@ -199,7 +211,7 @@ exports[`vue-tsc-dts > Input: generic/custom-extension-component.cext, Output: g
foo: number;
}): any;
};
- emit: (e: 'bar', data: number) => void;
+ emit: ((e: 'bar', data: number) => void) & ((evt: "update:title", title: string) => void);
};
};
export default _default;
@@ -209,6 +221,12 @@ type __VLS_Prettify = {
"
`;
+exports[`vue-tsc-dts > Input: generic/main.vue, Output: generic/main.vue.d.ts 1`] = `
+"declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly>, {}, {}>;
+export default _default;
+"
+`;
+
exports[`vue-tsc-dts > Input: non-component/component.ts, Output: non-component/component.d.ts 1`] = `
"declare const _default: {};
export default _default;
diff --git a/packages/typescript-plugin/index.ts b/packages/typescript-plugin/index.ts
index 1bea049499..6bdf407992 100644
--- a/packages/typescript-plugin/index.ts
+++ b/packages/typescript-plugin/index.ts
@@ -64,7 +64,7 @@ function createLanguageServicePlugin(): ts.server.PluginModuleFactory {
projects.set(info.project, { info, language, vueOptions });
decorateLanguageService(language, info.languageService);
- decorateLanguageServiceForVue(language, info.languageService, vueOptions, ts, true);
+ decorateLanguageServiceForVue(language, info.languageService, vueOptions, ts, true, fileName => fileName);
decorateLanguageServiceHost(ts, language, info.languageServiceHost);
startNamedPipeServer(ts, info.project.projectKind, info.project.getCurrentDirectory());
diff --git a/packages/typescript-plugin/lib/common.ts b/packages/typescript-plugin/lib/common.ts
index 8b2f83f0b5..b66dbecf4a 100644
--- a/packages/typescript-plugin/lib/common.ts
+++ b/packages/typescript-plugin/lib/common.ts
@@ -9,12 +9,14 @@ export function decorateLanguageServiceForVue(
vueOptions: vue.VueCompilerOptions,
ts: typeof import('typescript'),
isTsPlugin: boolean,
+ getScriptId: (fileName: string) => string,
) {
const {
getCompletionsAtPosition,
getCompletionEntryDetails,
getCodeFixesAtPosition,
getEncodedSemanticClassifications,
+ getQuickInfoAtPosition,
} = languageService;
languageService.getCompletionsAtPosition = (fileName, position, options, formattingSettings) => {
@@ -49,6 +51,12 @@ export function decorateLanguageServiceForVue(
break;
}
}
+ if (item.data) {
+ // @ts-expect-error
+ item.data.__isAutoImport = {
+ fileName,
+ };
+ }
}
}
}
@@ -69,6 +77,27 @@ export function decorateLanguageServiceForVue(
}
}
}
+ // @ts-expect-error
+ if (args[6]?.__isAutoImport) {
+ // @ts-expect-error
+ const { fileName } = args[6]?.__isAutoImport;
+ const sourceScript = language.scripts.get(getScriptId(fileName));
+ if (sourceScript?.generated?.root instanceof vue.VueVirtualCode) {
+ const sfc = sourceScript.generated.root.getVueSfc();
+ if (!sfc?.descriptor.script && !sfc?.descriptor.scriptSetup) {
+ for (const codeAction of details?.codeActions ?? []) {
+ for (const change of codeAction.changes) {
+ for (const textChange of change.textChanges) {
+ textChange.newText = `\n\n`;
+ break;
+ }
+ break;
+ }
+ break;
+ }
+ }
+ }
+ }
return details;
};
languageService.getCodeFixesAtPosition = (...args) => {
@@ -77,10 +106,50 @@ export function decorateLanguageServiceForVue(
result = result.filter(entry => entry.description.indexOf('__VLS_') === -1);
return result;
};
+ languageService.getQuickInfoAtPosition = (...args) => {
+ const result = getQuickInfoAtPosition(...args);
+ if (result && result.documentation?.length === 1 && result.documentation[0].text.startsWith('__VLS_emit,')) {
+ const [_, emitVarName, eventName] = result.documentation[0].text.split(',');
+ const program = languageService.getProgram()!;
+ const typeChecker = program.getTypeChecker();
+ const sourceFile = program.getSourceFile(args[0]);
+
+ result.documentation = undefined;
+
+ let symbolNode: ts.Identifier | undefined;
+
+ sourceFile?.forEachChild(function visit(node) {
+ if (ts.isIdentifier(node) && node.text === emitVarName) {
+ symbolNode = node;
+ }
+ if (symbolNode) {
+ return;
+ }
+ ts.forEachChild(node, visit);
+ });
+
+ if (symbolNode) {
+ const emitSymbol = typeChecker.getSymbolAtLocation(symbolNode);
+ if (emitSymbol) {
+ const type = typeChecker.getTypeOfSymbolAtLocation(emitSymbol, symbolNode);
+ const calls = type.getCallSignatures();
+ for (const call of calls) {
+ const callEventName = (typeChecker.getTypeOfSymbolAtLocation(call.parameters[0], symbolNode) as ts.StringLiteralType).value;
+ call.getJsDocTags();
+ if (callEventName === eventName) {
+ result.documentation = call.getDocumentationComment(typeChecker);
+ result.tags = call.getJsDocTags();
+ }
+ }
+ }
+ }
+ }
+ return result;
+ };
if (isTsPlugin) {
languageService.getEncodedSemanticClassifications = (fileName, span, format) => {
const result = getEncodedSemanticClassifications(fileName, span, format);
- const file = language.scripts.get(fileName);
+ const file = language.scripts.get(getScriptId(fileName));
if (file?.generated?.root instanceof vue.VueVirtualCode) {
const { template } = file.generated.root.sfc;
if (template) {
diff --git a/packages/typescript-plugin/lib/requests/collectExtractProps.ts b/packages/typescript-plugin/lib/requests/collectExtractProps.ts
index 0ebdf05a89..c90b4544d3 100644
--- a/packages/typescript-plugin/lib/requests/collectExtractProps.ts
+++ b/packages/typescript-plugin/lib/requests/collectExtractProps.ts
@@ -1,14 +1,9 @@
-import { Language, VueVirtualCode, isSemanticTokensEnabled } from '@vue/language-core';
+import { VueVirtualCode, isSemanticTokensEnabled } from '@vue/language-core';
import type * as ts from 'typescript';
+import type { RequestContext } from './types';
export function collectExtractProps(
- this: {
- typescript: typeof import('typescript');
- languageService: ts.LanguageService;
- language: Language;
- isTsPlugin: boolean,
- getFileId: (fileName: string) => string,
- },
+ this: RequestContext,
fileName: string,
templateCodeRange: [number, number],
) {
diff --git a/packages/typescript-plugin/lib/requests/componentInfos.ts b/packages/typescript-plugin/lib/requests/componentInfos.ts
index c216ed8694..24155a9f0a 100644
--- a/packages/typescript-plugin/lib/requests/componentInfos.ts
+++ b/packages/typescript-plugin/lib/requests/componentInfos.ts
@@ -1,14 +1,10 @@
import * as vue from '@vue/language-core';
import { camelize, capitalize } from '@vue/shared';
import type * as ts from 'typescript';
+import type { RequestContext } from './types';
export function getComponentProps(
- this: {
- typescript: typeof import('typescript');
- languageService: ts.LanguageService;
- language: vue.Language;
- getFileId: (fileName: string) => string,
- },
+ this: RequestContext,
fileName: string,
tag: string,
requiredOnly = false,
diff --git a/packages/typescript-plugin/lib/requests/getImportPathForFile.ts b/packages/typescript-plugin/lib/requests/getImportPathForFile.ts
index d88909f2a5..00c7afa428 100644
--- a/packages/typescript-plugin/lib/requests/getImportPathForFile.ts
+++ b/packages/typescript-plugin/lib/requests/getImportPathForFile.ts
@@ -1,11 +1,8 @@
import type * as ts from 'typescript';
+import type { RequestContext } from './types';
export function getImportPathForFile(
- this: {
- typescript: typeof import('typescript');
- languageService: ts.LanguageService;
- languageServiceHost: ts.LanguageServiceHost;
- },
+ this: RequestContext,
fileName: string,
incomingFileName: string,
preferences: ts.UserPreferences,
diff --git a/packages/typescript-plugin/lib/requests/getPropertiesAtLocation.ts b/packages/typescript-plugin/lib/requests/getPropertiesAtLocation.ts
index 33ea95488f..952bf0fbd8 100644
--- a/packages/typescript-plugin/lib/requests/getPropertiesAtLocation.ts
+++ b/packages/typescript-plugin/lib/requests/getPropertiesAtLocation.ts
@@ -1,14 +1,9 @@
-import { Language, isCompletionEnabled } from '@vue/language-core';
+import { isCompletionEnabled } from '@vue/language-core';
import type * as ts from 'typescript';
+import type { RequestContext } from './types';
export function getPropertiesAtLocation(
- this: {
- typescript: typeof import('typescript');
- languageService: ts.LanguageService;
- language: Language;
- isTsPlugin: boolean,
- getFileId: (fileName: string) => string,
- },
+ this: RequestContext,
fileName: string,
position: number,
) {
diff --git a/packages/typescript-plugin/lib/requests/getQuickInfoAtPosition.ts b/packages/typescript-plugin/lib/requests/getQuickInfoAtPosition.ts
index d4c3162bbc..1583551e45 100644
--- a/packages/typescript-plugin/lib/requests/getQuickInfoAtPosition.ts
+++ b/packages/typescript-plugin/lib/requests/getQuickInfoAtPosition.ts
@@ -1,8 +1,7 @@
-import type * as ts from 'typescript';
+import type { RequestContext } from './types';
+
export function getQuickInfoAtPosition(
- this: {
- languageService: ts.LanguageService;
- },
+ this: RequestContext,
fileName: string,
position: number,
) {
diff --git a/packages/typescript-plugin/lib/requests/types.ts b/packages/typescript-plugin/lib/requests/types.ts
new file mode 100644
index 0000000000..b29478b4b2
--- /dev/null
+++ b/packages/typescript-plugin/lib/requests/types.ts
@@ -0,0 +1,11 @@
+import type { Language } from '@vue/language-core';
+import type * as ts from 'typescript';
+
+export interface RequestContext {
+ typescript: typeof import('typescript');
+ languageService: ts.LanguageService;
+ languageServiceHost: ts.LanguageServiceHost;
+ language: Language;
+ isTsPlugin: boolean;
+ getFileId: (fileName: string) => string;
+}
diff --git a/packages/typescript-plugin/lib/server.ts b/packages/typescript-plugin/lib/server.ts
index d8fc0983b1..632d7ec658 100644
--- a/packages/typescript-plugin/lib/server.ts
+++ b/packages/typescript-plugin/lib/server.ts
@@ -1,3 +1,4 @@
+import type { Language, VueCompilerOptions } from '@vue/language-core';
import * as fs from 'fs';
import * as net from 'net';
import type * as ts from 'typescript';
@@ -6,8 +7,8 @@ import { getComponentEvents, getComponentNames, getComponentProps, getElementAtt
import { getImportPathForFile } from './requests/getImportPathForFile';
import { getPropertiesAtLocation } from './requests/getPropertiesAtLocation';
import { getQuickInfoAtPosition } from './requests/getQuickInfoAtPosition';
+import type { RequestContext } from './requests/types';
import { NamedPipeServer, connect, readPipeTable, updatePipeTable } from './utils';
-import type { Language, VueCompilerOptions } from '@vue/language-core';
export interface Request {
type: 'projectInfoForFile'
@@ -58,12 +59,11 @@ export function startNamedPipeServer(
);
}
else if (project) {
- const requestContext = {
+ const requestContext: RequestContext = {
typescript: ts,
languageService: project.info.languageService,
languageServiceHost: project.info.languageServiceHost,
language: project.language,
- vueOptions: project.vueOptions,
isTsPlugin: true,
getFileId: (fileName: string) => fileName,
};
diff --git a/packages/typescript-plugin/package.json b/packages/typescript-plugin/package.json
index 802379e039..3a8b4ae5df 100644
--- a/packages/typescript-plugin/package.json
+++ b/packages/typescript-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/typescript-plugin",
- "version": "2.0.16",
+ "version": "2.0.17",
"license": "MIT",
"files": [
"**/*.js",
@@ -12,8 +12,8 @@
"directory": "packages/typescript-plugin"
},
"dependencies": {
- "@volar/typescript": "~2.2.0",
- "@vue/language-core": "2.0.16",
+ "@volar/typescript": "~2.2.2",
+ "@vue/language-core": "2.0.17",
"@vue/shared": "^3.4.0"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6d100e0c8d..3f14132949 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -15,8 +15,8 @@ importers:
specifier: latest
version: 3.3.3(typescript@5.4.5)
'@volar/language-service':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
'@volar/tsl-config':
specifier: latest
version: 0.0.0-20240315.2(tsl@0.0.10(typescript@5.4.5))
@@ -28,10 +28,10 @@ importers:
version: 5.4.5
vite:
specifier: latest
- version: 5.2.10(@types/node@20.12.7)
+ version: 5.2.11(@types/node@20.12.11)
vitest:
specifier: latest
- version: 1.5.3(@types/node@20.12.7)
+ version: 1.6.0(@types/node@20.12.11)
extensions/vscode:
devDependencies:
@@ -42,23 +42,23 @@ importers:
specifier: ^1.82.0
version: 1.88.0
'@volar/vscode':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
'@vue/language-core':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../../packages/language-core
'@vue/language-server':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../../packages/language-server
'@vue/typescript-plugin':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../../packages/typescript-plugin
esbuild:
specifier: latest
- version: 0.20.2
+ version: 0.21.1
esbuild-plugin-copy:
specifier: latest
- version: 2.1.1(esbuild@0.20.2)
+ version: 2.1.1(esbuild@0.21.1)
esbuild-visualizer:
specifier: latest
version: 0.6.0
@@ -72,10 +72,10 @@ importers:
packages/component-meta:
dependencies:
'@volar/typescript':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
'@vue/language-core':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../language-core
path-browserify:
specifier: ^1.0.1
@@ -84,12 +84,12 @@ importers:
specifier: '*'
version: 5.4.5
vue-component-type-helpers:
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../component-type-helpers
devDependencies:
'@types/node':
specifier: latest
- version: 20.12.7
+ version: 20.12.11
'@types/path-browserify':
specifier: latest
version: 1.0.2
@@ -99,8 +99,8 @@ importers:
packages/language-core:
dependencies:
'@volar/language-core':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
'@vue/compiler-dom':
specifier: ^3.4.0
version: 3.4.26
@@ -128,7 +128,7 @@ importers:
version: 5.1.2
'@types/node':
specifier: latest
- version: 20.12.7
+ version: 20.12.11
'@types/path-browserify':
specifier: ^1.0.1
version: 1.0.2
@@ -139,35 +139,35 @@ importers:
packages/language-plugin-pug:
dependencies:
'@volar/source-map':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
volar-service-pug:
- specifier: 0.0.42
- version: 0.0.42
+ specifier: 0.0.44
+ version: 0.0.44
devDependencies:
'@types/node':
specifier: latest
- version: 20.12.7
+ version: 20.12.11
'@vue/language-core':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../language-core
packages/language-server:
dependencies:
'@volar/language-core':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
'@volar/language-server':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
'@vue/language-core':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../language-core
'@vue/language-service':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../language-service
'@vue/typescript-plugin':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../typescript-plugin
vscode-languageserver-protocol:
specifier: ^3.17.5
@@ -176,25 +176,25 @@ importers:
packages/language-service:
dependencies:
'@volar/language-core':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
'@volar/language-service':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
'@volar/typescript':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
'@vue/compiler-dom':
specifier: ^3.4.0
version: 3.4.26
'@vue/language-core':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../language-core
'@vue/shared':
specifier: ^3.4.0
version: 3.4.26
'@vue/typescript-plugin':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../typescript-plugin
computeds:
specifier: ^0.0.1
@@ -203,29 +203,29 @@ importers:
specifier: ^1.0.1
version: 1.0.1
volar-service-css:
- specifier: 0.0.42
- version: 0.0.42(@volar/language-service@2.2.0)
+ specifier: 0.0.44
+ version: 0.0.44(@volar/language-service@2.2.2)
volar-service-emmet:
- specifier: 0.0.42
- version: 0.0.42(@volar/language-service@2.2.0)
+ specifier: 0.0.44
+ version: 0.0.44(@volar/language-service@2.2.2)
volar-service-html:
- specifier: 0.0.42
- version: 0.0.42(@volar/language-service@2.2.0)
+ specifier: 0.0.44
+ version: 0.0.44(@volar/language-service@2.2.2)
volar-service-json:
- specifier: 0.0.42
- version: 0.0.42(@volar/language-service@2.2.0)
+ specifier: 0.0.44
+ version: 0.0.44(@volar/language-service@2.2.2)
volar-service-pug:
- specifier: 0.0.42
- version: 0.0.42
+ specifier: 0.0.44
+ version: 0.0.44
volar-service-pug-beautify:
- specifier: 0.0.42
- version: 0.0.42(@volar/language-service@2.2.0)
+ specifier: 0.0.44
+ version: 0.0.44(@volar/language-service@2.2.2)
volar-service-typescript:
- specifier: 0.0.42
- version: 0.0.42(@volar/language-service@2.2.0)
+ specifier: 0.0.44
+ version: 0.0.44(@volar/language-service@2.2.2)
volar-service-typescript-twoslash-queries:
- specifier: 0.0.42
- version: 0.0.42(@volar/language-service@2.2.0)
+ specifier: 0.0.44
+ version: 0.0.44(@volar/language-service@2.2.2)
vscode-html-languageservice:
specifier: npm:@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462
version: '@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462'
@@ -238,13 +238,13 @@ importers:
devDependencies:
'@types/node':
specifier: latest
- version: 20.12.7
+ version: 20.12.11
'@types/path-browserify':
specifier: latest
version: 1.0.2
'@volar/kit':
- specifier: ~2.2.0
- version: 2.2.0(typescript@5.4.5)
+ specifier: ~2.2.2
+ version: 2.2.2(typescript@5.4.5)
vscode-languageserver-protocol:
specifier: ^3.17.5
version: 3.17.5
@@ -252,10 +252,10 @@ importers:
packages/tsc:
dependencies:
'@volar/typescript':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
'@vue/language-core':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../language-core
semver:
specifier: ^7.5.4
@@ -266,15 +266,15 @@ importers:
devDependencies:
'@types/node':
specifier: latest
- version: 20.12.7
+ version: 20.12.11
packages/typescript-plugin:
dependencies:
'@volar/typescript':
- specifier: ~2.2.0
- version: 2.2.0
+ specifier: ~2.2.2
+ version: 2.2.2
'@vue/language-core':
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../language-core
'@vue/shared':
specifier: ^3.4.0
@@ -282,7 +282,7 @@ importers:
devDependencies:
'@types/node':
specifier: latest
- version: 20.12.7
+ version: 20.12.11
test-workspace:
devDependencies:
@@ -290,7 +290,7 @@ importers:
specifier: ^3.4.0
version: 3.4.26(typescript@5.4.5)
vue-component-type-helpers:
- specifier: 2.0.16
+ specifier: 2.0.17
version: link:../packages/component-type-helpers
vue2:
specifier: npm:vue@2.7.16
@@ -352,6 +352,12 @@ packages:
cpu: [ppc64]
os: [aix]
+ '@esbuild/aix-ppc64@0.21.1':
+ resolution: {integrity: sha512-O7yppwipkXvnEPjzkSXJRk2g4bS8sUx9p9oXHq9MU/U7lxUzZVsnFZMDTmeeX9bfQxrFcvOacl/ENgOh0WP9pA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/android-arm64@0.19.12':
resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
engines: {node: '>=12'}
@@ -364,6 +370,12 @@ packages:
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm64@0.21.1':
+ resolution: {integrity: sha512-jXhccq6es+onw7x8MxoFnm820mz7sGa9J14kLADclmiEUH4fyj+FjR6t0M93RgtlI/awHWhtF0Wgfhqgf9gDZA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm@0.19.12':
resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
engines: {node: '>=12'}
@@ -376,6 +388,12 @@ packages:
cpu: [arm]
os: [android]
+ '@esbuild/android-arm@0.21.1':
+ resolution: {integrity: sha512-hh3jKWikdnTtHCglDAeVO3Oyh8MaH8xZUaWMiCCvJ9/c3NtPqZq+CACOlGTxhddypXhl+8B45SeceYBfB/e8Ow==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-x64@0.19.12':
resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
engines: {node: '>=12'}
@@ -388,6 +406,12 @@ packages:
cpu: [x64]
os: [android]
+ '@esbuild/android-x64@0.21.1':
+ resolution: {integrity: sha512-NPObtlBh4jQHE01gJeucqEhdoD/4ya2owSIS8lZYS58aR0x7oZo9lB2lVFxgTANSa5MGCBeoQtr+yA9oKCGPvA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/darwin-arm64@0.19.12':
resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
engines: {node: '>=12'}
@@ -400,6 +424,12 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-arm64@0.21.1':
+ resolution: {integrity: sha512-BLT7TDzqsVlQRmJfO/FirzKlzmDpBWwmCUlyggfzUwg1cAxVxeA4O6b1XkMInlxISdfPAOunV9zXjvh5x99Heg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.19.12':
resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
engines: {node: '>=12'}
@@ -412,6 +442,12 @@ packages:
cpu: [x64]
os: [darwin]
+ '@esbuild/darwin-x64@0.21.1':
+ resolution: {integrity: sha512-D3h3wBQmeS/vp93O4B+SWsXB8HvRDwMyhTNhBd8yMbh5wN/2pPWRW5o/hM3EKgk9bdKd9594lMGoTCTiglQGRQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/freebsd-arm64@0.19.12':
resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
engines: {node: '>=12'}
@@ -424,6 +460,12 @@ packages:
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-arm64@0.21.1':
+ resolution: {integrity: sha512-/uVdqqpNKXIxT6TyS/oSK4XE4xWOqp6fh4B5tgAwozkyWdylcX+W4YF2v6SKsL4wCQ5h1bnaSNjWPXG/2hp8AQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.19.12':
resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
engines: {node: '>=12'}
@@ -436,6 +478,12 @@ packages:
cpu: [x64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.21.1':
+ resolution: {integrity: sha512-paAkKN1n1jJitw+dAoR27TdCzxRl1FOEITx3h201R6NoXUojpMzgMLdkXVgCvaCSCqwYkeGLoe9UVNRDKSvQgw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/linux-arm64@0.19.12':
resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
engines: {node: '>=12'}
@@ -448,6 +496,12 @@ packages:
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm64@0.21.1':
+ resolution: {integrity: sha512-G65d08YoH00TL7Xg4LaL3gLV21bpoAhQ+r31NUu013YB7KK0fyXIt05VbsJtpqh/6wWxoLJZOvQHYnodRrnbUQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm@0.19.12':
resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
engines: {node: '>=12'}
@@ -460,6 +514,12 @@ packages:
cpu: [arm]
os: [linux]
+ '@esbuild/linux-arm@0.21.1':
+ resolution: {integrity: sha512-tRHnxWJnvNnDpNVnsyDhr1DIQZUfCXlHSCDohbXFqmg9W4kKR7g8LmA3kzcwbuxbRMKeit8ladnCabU5f2traA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-ia32@0.19.12':
resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
engines: {node: '>=12'}
@@ -472,6 +532,12 @@ packages:
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-ia32@0.21.1':
+ resolution: {integrity: sha512-tt/54LqNNAqCz++QhxoqB9+XqdsaZOtFD/srEhHYwBd3ZUOepmR1Eeot8bS+Q7BiEvy9vvKbtpHf+r6q8hF5UA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-loong64@0.19.12':
resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
engines: {node: '>=12'}
@@ -484,6 +550,12 @@ packages:
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-loong64@0.21.1':
+ resolution: {integrity: sha512-MhNalK6r0nZD0q8VzUBPwheHzXPr9wronqmZrewLfP7ui9Fv1tdPmg6e7A8lmg0ziQCziSDHxh3cyRt4YMhGnQ==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.19.12':
resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
engines: {node: '>=12'}
@@ -496,6 +568,12 @@ packages:
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-mips64el@0.21.1':
+ resolution: {integrity: sha512-YCKVY7Zen5rwZV+nZczOhFmHaeIxR4Zn3jcmNH53LbgF6IKRwmrMywqDrg4SiSNApEefkAbPSIzN39FC8VsxPg==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.19.12':
resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
engines: {node: '>=12'}
@@ -508,6 +586,12 @@ packages:
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-ppc64@0.21.1':
+ resolution: {integrity: sha512-bw7bcQ+270IOzDV4mcsKAnDtAFqKO0jVv3IgRSd8iM0ac3L8amvCrujRVt1ajBTJcpDaFhIX+lCNRKteoDSLig==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.19.12':
resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
engines: {node: '>=12'}
@@ -520,6 +604,12 @@ packages:
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-riscv64@0.21.1':
+ resolution: {integrity: sha512-ARmDRNkcOGOm1AqUBSwRVDfDeD9hGYRfkudP2QdoonBz1ucWVnfBPfy7H4JPI14eYtZruRSczJxyu7SRYDVOcg==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-s390x@0.19.12':
resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
engines: {node: '>=12'}
@@ -532,6 +622,12 @@ packages:
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-s390x@0.21.1':
+ resolution: {integrity: sha512-o73TcUNMuoTZlhwFdsgr8SfQtmMV58sbgq6gQq9G1xUiYnHMTmJbwq65RzMx89l0iya69lR4bxBgtWiiOyDQZA==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-x64@0.19.12':
resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
engines: {node: '>=12'}
@@ -544,6 +640,12 @@ packages:
cpu: [x64]
os: [linux]
+ '@esbuild/linux-x64@0.21.1':
+ resolution: {integrity: sha512-da4/1mBJwwgJkbj4fMH7SOXq2zapgTo0LKXX1VUZ0Dxr+e8N0WbS80nSZ5+zf3lvpf8qxrkZdqkOqFfm57gXwA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/netbsd-x64@0.19.12':
resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
engines: {node: '>=12'}
@@ -556,6 +658,12 @@ packages:
cpu: [x64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.21.1':
+ resolution: {integrity: sha512-CPWs0HTFe5woTJN5eKPvgraUoRHrCtzlYIAv9wBC+FAyagBSaf+UdZrjwYyTGnwPGkThV4OCI7XibZOnPvONVw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/openbsd-x64@0.19.12':
resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
engines: {node: '>=12'}
@@ -568,6 +676,12 @@ packages:
cpu: [x64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.21.1':
+ resolution: {integrity: sha512-xxhTm5QtzNLc24R0hEkcH+zCx/o49AsdFZ0Cy5zSd/5tOj4X2g3/2AJB625NoadUuc4A8B3TenLJoYdWYOYCew==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
'@esbuild/sunos-x64@0.19.12':
resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
engines: {node: '>=12'}
@@ -580,6 +694,12 @@ packages:
cpu: [x64]
os: [sunos]
+ '@esbuild/sunos-x64@0.21.1':
+ resolution: {integrity: sha512-CWibXszpWys1pYmbr9UiKAkX6x+Sxw8HWtw1dRESK1dLW5fFJ6rMDVw0o8MbadusvVQx1a8xuOxnHXT941Hp1A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/win32-arm64@0.19.12':
resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
engines: {node: '>=12'}
@@ -592,6 +712,12 @@ packages:
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-arm64@0.21.1':
+ resolution: {integrity: sha512-jb5B4k+xkytGbGUS4T+Z89cQJ9DJ4lozGRSV+hhfmCPpfJ3880O31Q1srPCimm+V6UCbnigqD10EgDNgjvjerQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-ia32@0.19.12':
resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
engines: {node: '>=12'}
@@ -604,6 +730,12 @@ packages:
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-ia32@0.21.1':
+ resolution: {integrity: sha512-PgyFvjJhXqHn1uxPhyN1wZ6dIomKjiLUQh1LjFvjiV1JmnkZ/oMPrfeEAZg5R/1ftz4LZWZr02kefNIQ5SKREQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-x64@0.19.12':
resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
engines: {node: '>=12'}
@@ -616,6 +748,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@esbuild/win32-x64@0.21.1':
+ resolution: {integrity: sha512-W9NttRZQR5ehAiqHGDnvfDaGmQOm6Fi4vSlce8mjM75x//XKuVAByohlEX6N17yZnVXxQFuh4fDRunP8ca6bfA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
'@hutson/parse-repository-url@5.0.0':
resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==}
engines: {node: '>=10.13.0'}
@@ -940,8 +1078,8 @@ packages:
'@types/minimatch@5.1.2':
resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
- '@types/node@20.12.7':
- resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==}
+ '@types/node@20.12.11':
+ resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==}
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
@@ -955,51 +1093,51 @@ packages:
'@types/vscode@1.88.0':
resolution: {integrity: sha512-rWY+Bs6j/f1lvr8jqZTyp5arRMfovdxolcqGi+//+cPDOh8SBvzXH90e7BiSXct5HJ9HGW6jATchbRTpTJpEkw==}
- '@vitest/expect@1.5.3':
- resolution: {integrity: sha512-y+waPz31pOFr3rD7vWTbwiLe5+MgsMm40jTZbQE8p8/qXyBX3CQsIXRx9XK12IbY7q/t5a5aM/ckt33b4PxK2g==}
+ '@vitest/expect@1.6.0':
+ resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==}
- '@vitest/runner@1.5.3':
- resolution: {integrity: sha512-7PlfuReN8692IKQIdCxwir1AOaP5THfNkp0Uc4BKr2na+9lALNit7ub9l3/R7MP8aV61+mHKRGiqEKRIwu6iiQ==}
+ '@vitest/runner@1.6.0':
+ resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==}
- '@vitest/snapshot@1.5.3':
- resolution: {integrity: sha512-K3mvIsjyKYBhNIDujMD2gfQEzddLe51nNOAf45yKRt/QFJcUIeTQd2trRvv6M6oCBHNVnZwFWbQ4yj96ibiDsA==}
+ '@vitest/snapshot@1.6.0':
+ resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==}
- '@vitest/spy@1.5.3':
- resolution: {integrity: sha512-Llj7Jgs6lbnL55WoshJUUacdJfjU2honvGcAJBxhra5TPEzTJH8ZuhI3p/JwqqfnTr4PmP7nDmOXP53MS7GJlg==}
+ '@vitest/spy@1.6.0':
+ resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==}
- '@vitest/utils@1.5.3':
- resolution: {integrity: sha512-rE9DTN1BRhzkzqNQO+kw8ZgfeEBCLXiHJwetk668shmNBpSagQxneT5eSqEBLP+cqSiAeecvQmbpFfdMyLcIQA==}
+ '@vitest/utils@1.6.0':
+ resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==}
- '@volar/kit@2.2.0':
- resolution: {integrity: sha512-ZI6caoD7f7WSJC9lLOFGgp+idR8gzlK9+GzDV2urWAj4gTx0MzyB21uKZlo3hfZp72LpUmOvQBJ3n303gDE8FQ==}
+ '@volar/kit@2.2.2':
+ resolution: {integrity: sha512-mIPWV7sjuJPNL+TLnpQwFD6hW+D5tF4Axg+nv0wHjdxrik+ilWT5DnBomMftoekUF4+SxUqxMjU8kd7caOuT5Q==}
peerDependencies:
typescript: '*'
- '@volar/language-core@2.2.0':
- resolution: {integrity: sha512-a8WG9+4OdeNDW4ywABZIM6S6UN7em8uIlM/BZ2pWQUYrVmX+m8sj/X+QadvO+Li/t/LjAqbWJQtVgxdpEWLALQ==}
+ '@volar/language-core@2.2.2':
+ resolution: {integrity: sha512-GuvEL4JdxbnLVhPLICncCGT+tVW4cIz9GxXNeDofNnJ4iNTKhr5suGVsA1GLOne9PbraSjn8PlLt+pvLxuRVeQ==}
- '@volar/language-server@2.2.0':
- resolution: {integrity: sha512-JqUxv+YoCLWpGJLIsDp45WmEx8kNAWh+RsJ1sswjJZrezVFKcyjOfLPnKy/D0VV0myME5i3CUQTW6K/nnshBzg==}
+ '@volar/language-server@2.2.2':
+ resolution: {integrity: sha512-9KwlCDNeFCoxTIhYOJNtpQA7M0JP0DHvvwXrqN8qNNEMJT1Oe0cic0C2tUCa/poCgkiXDbUxRldwamyuTZ6ZQg==}
- '@volar/language-service@2.2.0':
- resolution: {integrity: sha512-hLtIFpsOcfHJ7kllUDRU2Ap1IBGEnADyE7Ea3kPwvUHM43Qn+7lvpKXxX/UL2zVcQQrvHr0348Tfi9BF1aKD5A==}
+ '@volar/language-service@2.2.2':
+ resolution: {integrity: sha512-uxooJqRhtESXaPAGs+YFJGAtZQuRO1KLG4LPPGrHHO1ZTkx0TfQPym6WNnBfVCcBXwnSlyFVv+IbAndR5oKz1w==}
- '@volar/snapshot-document@2.2.0':
- resolution: {integrity: sha512-CUOxMlPy3UBqzjmat0eVaCyYJqbhOEDYBZbsm1gbuQLW6kUxQs3+8eD2x6EyfaPHiZMxNuLBjSRvXfLANcYbHQ==}
+ '@volar/snapshot-document@2.2.2':
+ resolution: {integrity: sha512-JKj3aRpfoJZ84EeFN62PFw3jwKo2WTQnaemhWu/S4QNlw7q+IoDI1jNcgxZwblfBl0X5YGlRI1zYbwr8WidBTA==}
- '@volar/source-map@2.2.0':
- resolution: {integrity: sha512-HQlPRlHOVqCCHK8wI76ZldHkEwKsjp7E6idUc36Ekni+KJDNrqgSqPvyHQixybXPHNU7CI9Uxd9/IkxO7LuNBw==}
+ '@volar/source-map@2.2.2':
+ resolution: {integrity: sha512-vUwvZuSW6iN4JI9QRinh9EjFasx1TUtnaWMKwgWx08xz1PyYuNkLlWlrZXBZ5GGBhML0u230M/7X+AHY2h9yKg==}
'@volar/tsl-config@0.0.0-20240315.2':
resolution: {integrity: sha512-bv57xhmegLkfjW0/FZL/sberfmUch7yLAkXlRXj5KxHPYCjIU4T1ciPuLWrtVzCa+o0q7ykQ6aR+Q/z7MSMf6w==}
peerDependencies:
tsl: '*'
- '@volar/typescript@2.2.0':
- resolution: {integrity: sha512-wC6l4zLiiCLxF+FGaHCbWlQYf4vMsnRxYhcI6WgvaNppOD6r1g+Ef1RKRJUApALWU46Yy/JDU/TbdV6w/X6Liw==}
+ '@volar/typescript@2.2.2':
+ resolution: {integrity: sha512-WcwOREz7+uOrpjUrKhOMaOKKmyPdtqF95HWX7SE0d9hhBB1KkfahxhaAex5U9Bn43LfINHlycLoYCNEtfeKm0g==}
- '@volar/vscode@2.2.0':
- resolution: {integrity: sha512-WQEnvv7tDfYN7NrHRPvtnu3fZ+Uc4IVYYt/i728gaql/0StkITMdh7K1i+43MsDlY/gSwh82XrDstaxAloTJ6Q==}
+ '@volar/vscode@2.2.2':
+ resolution: {integrity: sha512-PwacgTed2Jh7bDjnScB2QBkHcAKP5FExsqmdK022lY72mTiDQVPStD6BbjcncYtfciS8I8R+6+TVRJN1uZifbA==}
'@vscode/emmet-helper@2.9.3':
resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==}
@@ -1531,6 +1669,11 @@ packages:
engines: {node: '>=12'}
hasBin: true
+ esbuild@0.21.1:
+ resolution: {integrity: sha512-GPqx+FX7mdqulCeQ4TsGZQ3djBJkx5k7zBGtqt9ycVlWNg8llJ4RO9n2vciu8BN2zAEs6lPbPl0asZsAh7oWzg==}
+ engines: {node: '>=12'}
+ hasBin: true
+
escalade@3.1.2:
resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
engines: {node: '>=6'}
@@ -2924,13 +3067,13 @@ packages:
resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
- vite-node@1.5.3:
- resolution: {integrity: sha512-axFo00qiCpU/JLd8N1gu9iEYL3xTbMbMrbe5nDp9GL0nb6gurIdZLkkFogZXWnE8Oyy5kfSLwNVIcVsnhE7lgQ==}
+ vite-node@1.6.0:
+ resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
- vite@5.2.10:
- resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==}
+ vite@5.2.11:
+ resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -2957,15 +3100,15 @@ packages:
terser:
optional: true
- vitest@1.5.3:
- resolution: {integrity: sha512-2oM7nLXylw3mQlW6GXnRriw+7YvZFk/YNV8AxIC3Z3MfFbuziLGWP9GPxxu/7nRlXhqyxBikpamr+lEEj1sUEw==}
+ vitest@1.6.0:
+ resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@types/node': ^18.0.0 || >=20.0.0
- '@vitest/browser': 1.5.3
- '@vitest/ui': 1.5.3
+ '@vitest/browser': 1.6.0
+ '@vitest/ui': 1.6.0
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
@@ -2982,59 +3125,59 @@ packages:
jsdom:
optional: true
- volar-service-css@0.0.42:
- resolution: {integrity: sha512-vx3kbSNiIfoyuHaygDFykI1TFkpbkIO2qJWeKNnGHlMZKy1PFLfCRmPAjkfdDvijLPnHqyKmvWwhkUht+Wiq6Q==}
+ volar-service-css@0.0.44:
+ resolution: {integrity: sha512-M3yQMlwEvtaL0F5nQj9g2qqHKeqK6fAtDS79YCDBpbxADrpG3q9I4OnbtGTw0m5W8eTn9NOVm4KkAh0OyFwp6Q==}
peerDependencies:
'@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-emmet@0.0.42:
- resolution: {integrity: sha512-agB2XZTS14o6+oUnIQHd7nIU08i2exZ+WYY20DjKj0NFLgbYSWIFB5Uf8mSIouMHzs28JcAMGS7ClT9Amkp6RQ==}
+ volar-service-emmet@0.0.44:
+ resolution: {integrity: sha512-qDwhfRRg9hgZF8DpWblWYV2FvY1wzhozbiiFRghQK8hEUY977G51rkQvBWRMK9BKDSUEOa7P8r9i75vgL1A2Ww==}
peerDependencies:
'@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-html@0.0.42:
- resolution: {integrity: sha512-6KMjwB3VMrpQgqm4gM73tDO91xJcga09vi4oyI9zayILhlUPuQW4KPjAN3NvLK4fOkcDTn20k/4gGm335ETKVw==}
+ volar-service-html@0.0.44:
+ resolution: {integrity: sha512-I6xSeixpZG0xbt1+EvuyDSLvEt8yM4B5S/oYgJo9lFa3wVVJN9Vjty5G1GFZav+FaYzUBe4VynvOPiYRwHlFUQ==}
peerDependencies:
'@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-json@0.0.42:
- resolution: {integrity: sha512-+wweRNbzobAG5y2UbMoI4cXRBVG5kf2J/H1Pbp6Ek+A+MOMT3xKbV+H5aKkdEoNGzKv5V2QmwpdVI2ukfOy2EQ==}
+ volar-service-json@0.0.44:
+ resolution: {integrity: sha512-CY8ARpENPdMNqovm+aCWhN3m8z+rZ2dL6kCUl7SCOebtnZ0niym1AYtWT+QQbYM8PoPXtlTZxuJ5G9CUly2Iuw==}
peerDependencies:
'@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-pug-beautify@0.0.42:
- resolution: {integrity: sha512-XxK9Njb2E/+uIyh12wKAZVSfaLegH+piv2pCZKDyVMH5aN/prBFseUzZZofwyHCZ+vaviAxXxgIhoiH83tImsw==}
+ volar-service-pug-beautify@0.0.44:
+ resolution: {integrity: sha512-TjJfrkqUQyoQAOkgU6nXjZ3te8lmZeUO7ZOqozF2Nk60+gYoHCUYxGqAtGEsWNn8riu8To6xULGwVPZW25KR9g==}
peerDependencies:
'@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-pug@0.0.42:
- resolution: {integrity: sha512-p+ESdsxkyHbRXjEhRitvovOypD7deYAlaiEgfQZo9so68mX1rDlQTHuWVVIkPUq9Umba8d8zTjwkp+L513G5Aw==}
+ volar-service-pug@0.0.44:
+ resolution: {integrity: sha512-iawFuax+vUfd8msZ0dvQKjw2A5pLNvf/Mq9umXe7Aoz1cuuIfYQX8hFQYFdwEagPjWha6QBeQnwxrAfSXNeZaA==}
- volar-service-typescript-twoslash-queries@0.0.42:
- resolution: {integrity: sha512-aZpN9Szu3m0y1VieKZoH7UVZsB3OD2PJ+BY6EXQ+KxlshMQhkWIEAFBYxA8ixIh0mCev3Bu4qhVbgdeD2DoXWg==}
+ volar-service-typescript-twoslash-queries@0.0.44:
+ resolution: {integrity: sha512-O2gbDMsK9yEtIz+w0CPgkece5/au+eSRf5ssx7AsVbyyZjyNogNfs30yeVDFSb4xlOIR1hnq2N1PZqUPFWZgAg==}
peerDependencies:
'@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-typescript@0.0.42:
- resolution: {integrity: sha512-INJHXZvIZjsbctXcEjITpj4DFJ6SCGbgpdUUo3vyJ+WwBeuAfncvUVZ4pvid3o8ZCDZhtpOVjFSO+4HYsZfyrg==}
+ volar-service-typescript@0.0.44:
+ resolution: {integrity: sha512-7aD43TXt7ou7boK2ytBYdleLRKKH9tQ4WFKWfMfxDjYZ+MNAg8Obx41ysCdHj00H2VkthXLaEH3czr2FLTm8YA==}
peerDependencies:
'@volar/language-service': ~2.2.0
peerDependenciesMeta:
@@ -3244,138 +3387,207 @@ snapshots:
'@esbuild/aix-ppc64@0.20.2':
optional: true
+ '@esbuild/aix-ppc64@0.21.1':
+ optional: true
+
'@esbuild/android-arm64@0.19.12':
optional: true
'@esbuild/android-arm64@0.20.2':
optional: true
+ '@esbuild/android-arm64@0.21.1':
+ optional: true
+
'@esbuild/android-arm@0.19.12':
optional: true
'@esbuild/android-arm@0.20.2':
optional: true
+ '@esbuild/android-arm@0.21.1':
+ optional: true
+
'@esbuild/android-x64@0.19.12':
optional: true
'@esbuild/android-x64@0.20.2':
optional: true
+ '@esbuild/android-x64@0.21.1':
+ optional: true
+
'@esbuild/darwin-arm64@0.19.12':
optional: true
'@esbuild/darwin-arm64@0.20.2':
optional: true
+ '@esbuild/darwin-arm64@0.21.1':
+ optional: true
+
'@esbuild/darwin-x64@0.19.12':
optional: true
'@esbuild/darwin-x64@0.20.2':
optional: true
+ '@esbuild/darwin-x64@0.21.1':
+ optional: true
+
'@esbuild/freebsd-arm64@0.19.12':
optional: true
'@esbuild/freebsd-arm64@0.20.2':
optional: true
+ '@esbuild/freebsd-arm64@0.21.1':
+ optional: true
+
'@esbuild/freebsd-x64@0.19.12':
optional: true
'@esbuild/freebsd-x64@0.20.2':
optional: true
+ '@esbuild/freebsd-x64@0.21.1':
+ optional: true
+
'@esbuild/linux-arm64@0.19.12':
optional: true
'@esbuild/linux-arm64@0.20.2':
optional: true
+ '@esbuild/linux-arm64@0.21.1':
+ optional: true
+
'@esbuild/linux-arm@0.19.12':
optional: true
'@esbuild/linux-arm@0.20.2':
optional: true
+ '@esbuild/linux-arm@0.21.1':
+ optional: true
+
'@esbuild/linux-ia32@0.19.12':
optional: true
'@esbuild/linux-ia32@0.20.2':
optional: true
+ '@esbuild/linux-ia32@0.21.1':
+ optional: true
+
'@esbuild/linux-loong64@0.19.12':
optional: true
'@esbuild/linux-loong64@0.20.2':
optional: true
+ '@esbuild/linux-loong64@0.21.1':
+ optional: true
+
'@esbuild/linux-mips64el@0.19.12':
optional: true
'@esbuild/linux-mips64el@0.20.2':
optional: true
+ '@esbuild/linux-mips64el@0.21.1':
+ optional: true
+
'@esbuild/linux-ppc64@0.19.12':
optional: true
'@esbuild/linux-ppc64@0.20.2':
optional: true
+ '@esbuild/linux-ppc64@0.21.1':
+ optional: true
+
'@esbuild/linux-riscv64@0.19.12':
optional: true
'@esbuild/linux-riscv64@0.20.2':
optional: true
+ '@esbuild/linux-riscv64@0.21.1':
+ optional: true
+
'@esbuild/linux-s390x@0.19.12':
optional: true
'@esbuild/linux-s390x@0.20.2':
optional: true
+ '@esbuild/linux-s390x@0.21.1':
+ optional: true
+
'@esbuild/linux-x64@0.19.12':
optional: true
'@esbuild/linux-x64@0.20.2':
optional: true
+ '@esbuild/linux-x64@0.21.1':
+ optional: true
+
'@esbuild/netbsd-x64@0.19.12':
optional: true
'@esbuild/netbsd-x64@0.20.2':
optional: true
+ '@esbuild/netbsd-x64@0.21.1':
+ optional: true
+
'@esbuild/openbsd-x64@0.19.12':
optional: true
'@esbuild/openbsd-x64@0.20.2':
optional: true
+ '@esbuild/openbsd-x64@0.21.1':
+ optional: true
+
'@esbuild/sunos-x64@0.19.12':
optional: true
'@esbuild/sunos-x64@0.20.2':
optional: true
+ '@esbuild/sunos-x64@0.21.1':
+ optional: true
+
'@esbuild/win32-arm64@0.19.12':
optional: true
'@esbuild/win32-arm64@0.20.2':
optional: true
+ '@esbuild/win32-arm64@0.21.1':
+ optional: true
+
'@esbuild/win32-ia32@0.19.12':
optional: true
'@esbuild/win32-ia32@0.20.2':
optional: true
+ '@esbuild/win32-ia32@0.21.1':
+ optional: true
+
'@esbuild/win32-x64@0.19.12':
optional: true
'@esbuild/win32-x64@0.20.2':
optional: true
+ '@esbuild/win32-x64@0.21.1':
+ optional: true
+
'@hutson/parse-repository-url@5.0.0': {}
'@inquirer/figures@1.0.1': {}
@@ -3816,7 +4028,7 @@ snapshots:
'@types/minimatch@5.1.2': {}
- '@types/node@20.12.7':
+ '@types/node@20.12.11':
dependencies:
undici-types: 5.26.5
@@ -3828,54 +4040,54 @@ snapshots:
'@types/vscode@1.88.0': {}
- '@vitest/expect@1.5.3':
+ '@vitest/expect@1.6.0':
dependencies:
- '@vitest/spy': 1.5.3
- '@vitest/utils': 1.5.3
+ '@vitest/spy': 1.6.0
+ '@vitest/utils': 1.6.0
chai: 4.4.1
- '@vitest/runner@1.5.3':
+ '@vitest/runner@1.6.0':
dependencies:
- '@vitest/utils': 1.5.3
+ '@vitest/utils': 1.6.0
p-limit: 5.0.0
pathe: 1.1.2
- '@vitest/snapshot@1.5.3':
+ '@vitest/snapshot@1.6.0':
dependencies:
magic-string: 0.30.10
pathe: 1.1.2
pretty-format: 29.7.0
- '@vitest/spy@1.5.3':
+ '@vitest/spy@1.6.0':
dependencies:
tinyspy: 2.2.1
- '@vitest/utils@1.5.3':
+ '@vitest/utils@1.6.0':
dependencies:
diff-sequences: 29.6.3
estree-walker: 3.0.3
loupe: 2.3.7
pretty-format: 29.7.0
- '@volar/kit@2.2.0(typescript@5.4.5)':
+ '@volar/kit@2.2.2(typescript@5.4.5)':
dependencies:
- '@volar/language-service': 2.2.0
- '@volar/typescript': 2.2.0
+ '@volar/language-service': 2.2.2
+ '@volar/typescript': 2.2.2
typesafe-path: 0.2.2
typescript: 5.4.5
vscode-languageserver-textdocument: 1.0.11
vscode-uri: 3.0.8
- '@volar/language-core@2.2.0':
+ '@volar/language-core@2.2.2':
dependencies:
- '@volar/source-map': 2.2.0
+ '@volar/source-map': 2.2.2
- '@volar/language-server@2.2.0':
+ '@volar/language-server@2.2.2':
dependencies:
- '@volar/language-core': 2.2.0
- '@volar/language-service': 2.2.0
- '@volar/snapshot-document': 2.2.0
- '@volar/typescript': 2.2.0
+ '@volar/language-core': 2.2.2
+ '@volar/language-service': 2.2.2
+ '@volar/snapshot-document': 2.2.2
+ '@volar/typescript': 2.2.2
'@vscode/l10n': 0.0.16
path-browserify: 1.0.1
request-light: 0.7.0
@@ -3884,19 +4096,19 @@ snapshots:
vscode-languageserver-textdocument: 1.0.11
vscode-uri: 3.0.8
- '@volar/language-service@2.2.0':
+ '@volar/language-service@2.2.2':
dependencies:
- '@volar/language-core': 2.2.0
+ '@volar/language-core': 2.2.2
vscode-languageserver-protocol: 3.17.5
vscode-languageserver-textdocument: 1.0.11
vscode-uri: 3.0.8
- '@volar/snapshot-document@2.2.0':
+ '@volar/snapshot-document@2.2.2':
dependencies:
vscode-languageserver-protocol: 3.17.5
vscode-languageserver-textdocument: 1.0.11
- '@volar/source-map@2.2.0':
+ '@volar/source-map@2.2.2':
dependencies:
muggle-string: 0.4.1
@@ -3904,14 +4116,14 @@ snapshots:
dependencies:
tsl: 0.0.10(typescript@5.4.5)
- '@volar/typescript@2.2.0':
+ '@volar/typescript@2.2.2':
dependencies:
- '@volar/language-core': 2.2.0
+ '@volar/language-core': 2.2.2
path-browserify: 1.0.1
- '@volar/vscode@2.2.0':
+ '@volar/vscode@2.2.2':
dependencies:
- '@volar/language-server': 2.2.0
+ '@volar/language-server': 2.2.2
path-browserify: 1.0.1
vscode-languageclient: 9.0.1
vscode-nls: 5.2.0
@@ -4452,11 +4664,11 @@ snapshots:
es-errors@1.3.0: {}
- esbuild-plugin-copy@2.1.1(esbuild@0.20.2):
+ esbuild-plugin-copy@2.1.1(esbuild@0.21.1):
dependencies:
chalk: 4.1.2
chokidar: 3.6.0
- esbuild: 0.20.2
+ esbuild: 0.21.1
fs-extra: 10.1.0
globby: 11.1.0
@@ -4518,6 +4730,32 @@ snapshots:
'@esbuild/win32-ia32': 0.20.2
'@esbuild/win32-x64': 0.20.2
+ esbuild@0.21.1:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.21.1
+ '@esbuild/android-arm': 0.21.1
+ '@esbuild/android-arm64': 0.21.1
+ '@esbuild/android-x64': 0.21.1
+ '@esbuild/darwin-arm64': 0.21.1
+ '@esbuild/darwin-x64': 0.21.1
+ '@esbuild/freebsd-arm64': 0.21.1
+ '@esbuild/freebsd-x64': 0.21.1
+ '@esbuild/linux-arm': 0.21.1
+ '@esbuild/linux-arm64': 0.21.1
+ '@esbuild/linux-ia32': 0.21.1
+ '@esbuild/linux-loong64': 0.21.1
+ '@esbuild/linux-mips64el': 0.21.1
+ '@esbuild/linux-ppc64': 0.21.1
+ '@esbuild/linux-riscv64': 0.21.1
+ '@esbuild/linux-s390x': 0.21.1
+ '@esbuild/linux-x64': 0.21.1
+ '@esbuild/netbsd-x64': 0.21.1
+ '@esbuild/openbsd-x64': 0.21.1
+ '@esbuild/sunos-x64': 0.21.1
+ '@esbuild/win32-arm64': 0.21.1
+ '@esbuild/win32-ia32': 0.21.1
+ '@esbuild/win32-x64': 0.21.1
+
escalade@3.1.2: {}
escape-string-regexp@1.0.5: {}
@@ -5980,13 +6218,13 @@ snapshots:
dependencies:
builtins: 5.1.0
- vite-node@1.5.3(@types/node@20.12.7):
+ vite-node@1.6.0(@types/node@20.12.11):
dependencies:
cac: 6.7.14
debug: 4.3.4
pathe: 1.1.2
picocolors: 1.0.0
- vite: 5.2.10(@types/node@20.12.7)
+ vite: 5.2.11(@types/node@20.12.11)
transitivePeerDependencies:
- '@types/node'
- less
@@ -5997,22 +6235,22 @@ snapshots:
- supports-color
- terser
- vite@5.2.10(@types/node@20.12.7):
+ vite@5.2.11(@types/node@20.12.11):
dependencies:
esbuild: 0.20.2
postcss: 8.4.38
rollup: 4.17.1
optionalDependencies:
- '@types/node': 20.12.7
+ '@types/node': 20.12.11
fsevents: 2.3.3
- vitest@1.5.3(@types/node@20.12.7):
+ vitest@1.6.0(@types/node@20.12.11):
dependencies:
- '@vitest/expect': 1.5.3
- '@vitest/runner': 1.5.3
- '@vitest/snapshot': 1.5.3
- '@vitest/spy': 1.5.3
- '@vitest/utils': 1.5.3
+ '@vitest/expect': 1.6.0
+ '@vitest/runner': 1.6.0
+ '@vitest/snapshot': 1.6.0
+ '@vitest/spy': 1.6.0
+ '@vitest/utils': 1.6.0
acorn-walk: 8.3.2
chai: 4.4.1
debug: 4.3.4
@@ -6025,11 +6263,11 @@ snapshots:
strip-literal: 2.1.0
tinybench: 2.8.0
tinypool: 0.8.4
- vite: 5.2.10(@types/node@20.12.7)
- vite-node: 1.5.3(@types/node@20.12.7)
+ vite: 5.2.11(@types/node@20.12.11)
+ vite-node: 1.6.0(@types/node@20.12.11)
why-is-node-running: 2.2.2
optionalDependencies:
- '@types/node': 20.12.7
+ '@types/node': 20.12.11
transitivePeerDependencies:
- less
- lightningcss
@@ -6039,56 +6277,56 @@ snapshots:
- supports-color
- terser
- volar-service-css@0.0.42(@volar/language-service@2.2.0):
+ volar-service-css@0.0.44(@volar/language-service@2.2.2):
dependencies:
vscode-css-languageservice: 6.2.14
vscode-languageserver-textdocument: 1.0.11
vscode-uri: 3.0.8
optionalDependencies:
- '@volar/language-service': 2.2.0
+ '@volar/language-service': 2.2.2
- volar-service-emmet@0.0.42(@volar/language-service@2.2.0):
+ volar-service-emmet@0.0.44(@volar/language-service@2.2.2):
dependencies:
'@vscode/emmet-helper': 2.9.3
vscode-html-languageservice: '@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462'
optionalDependencies:
- '@volar/language-service': 2.2.0
+ '@volar/language-service': 2.2.2
- volar-service-html@0.0.42(@volar/language-service@2.2.0):
+ volar-service-html@0.0.44(@volar/language-service@2.2.2):
dependencies:
vscode-html-languageservice: '@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462'
vscode-languageserver-textdocument: 1.0.11
vscode-uri: 3.0.8
optionalDependencies:
- '@volar/language-service': 2.2.0
+ '@volar/language-service': 2.2.2
- volar-service-json@0.0.42(@volar/language-service@2.2.0):
+ volar-service-json@0.0.44(@volar/language-service@2.2.2):
dependencies:
vscode-json-languageservice: 5.3.11
vscode-uri: 3.0.8
optionalDependencies:
- '@volar/language-service': 2.2.0
+ '@volar/language-service': 2.2.2
- volar-service-pug-beautify@0.0.42(@volar/language-service@2.2.0):
+ volar-service-pug-beautify@0.0.44(@volar/language-service@2.2.2):
dependencies:
'@johnsoncodehk/pug-beautify': 0.2.2
optionalDependencies:
- '@volar/language-service': 2.2.0
+ '@volar/language-service': 2.2.2
- volar-service-pug@0.0.42:
+ volar-service-pug@0.0.44:
dependencies:
- '@volar/language-service': 2.2.0
+ '@volar/language-service': 2.2.2
pug-lexer: 5.0.1
pug-parser: 6.0.0
- volar-service-html: 0.0.42(@volar/language-service@2.2.0)
+ volar-service-html: 0.0.44(@volar/language-service@2.2.2)
vscode-html-languageservice: '@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462'
vscode-languageserver-textdocument: 1.0.11
- volar-service-typescript-twoslash-queries@0.0.42(@volar/language-service@2.2.0):
+ volar-service-typescript-twoslash-queries@0.0.44(@volar/language-service@2.2.2):
optionalDependencies:
- '@volar/language-service': 2.2.0
+ '@volar/language-service': 2.2.2
- volar-service-typescript@0.0.42(@volar/language-service@2.2.0):
+ volar-service-typescript@0.0.44(@volar/language-service@2.2.2):
dependencies:
path-browserify: 1.0.1
semver: 7.6.0
@@ -6096,7 +6334,7 @@ snapshots:
vscode-languageserver-textdocument: 1.0.11
vscode-nls: 5.2.0
optionalDependencies:
- '@volar/language-service': 2.2.0
+ '@volar/language-service': 2.2.2
vsce@2.15.0:
dependencies:
diff --git a/test-workspace/component-meta/generic/component.vue b/test-workspace/component-meta/generic/component.vue
index 39664c35ac..d5b2eebe11 100644
--- a/test-workspace/component-meta/generic/component.vue
+++ b/test-workspace/component-meta/generic/component.vue
@@ -3,4 +3,5 @@ defineProps<{ foo: number }>();
defineEmits<{ (e: 'bar', data: number): void }>();
defineExpose({ baz: {} as number });
defineSlots<{ default?(data: { foo: number }): any }>();
+defineModel('title');
diff --git a/test-workspace/component-meta/generic/custom-extension-component.cext b/test-workspace/component-meta/generic/custom-extension-component.cext
index 39664c35ac..d5b2eebe11 100644
--- a/test-workspace/component-meta/generic/custom-extension-component.cext
+++ b/test-workspace/component-meta/generic/custom-extension-component.cext
@@ -3,4 +3,5 @@ defineProps<{ foo: number }>();
defineEmits<{ (e: 'bar', data: number): void }>();
defineExpose({ baz: {} as number });
defineSlots<{ default?(data: { foo: number }): any }>();
+defineModel('title');
diff --git a/test-workspace/component-meta/generic/main.vue b/test-workspace/component-meta/generic/main.vue
new file mode 100644
index 0000000000..3da133f0d5
--- /dev/null
+++ b/test-workspace/component-meta/generic/main.vue
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/test-workspace/package.json b/test-workspace/package.json
index 0e2483a50a..7c6b1d300a 100644
--- a/test-workspace/package.json
+++ b/test-workspace/package.json
@@ -1,9 +1,9 @@
{
"private": true,
- "version": "2.0.16",
+ "version": "2.0.17",
"devDependencies": {
"vue": "^3.4.0",
- "vue-component-type-helpers": "2.0.16",
+ "vue-component-type-helpers": "2.0.17",
"vue2": "npm:vue@2.7.16"
}
}
diff --git a/test-workspace/tsc/#4353/main.vue b/test-workspace/tsc/#4353/main.vue
new file mode 100644
index 0000000000..48998976fa
--- /dev/null
+++ b/test-workspace/tsc/#4353/main.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/test-workspace/tsc/vue3/#4333/main.vue b/test-workspace/tsc/vue3/#4333/main.vue
new file mode 100644
index 0000000000..a9b63be066
--- /dev/null
+++ b/test-workspace/tsc/vue3/#4333/main.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/test-workspace/tsc/vue3/#997/main.vue b/test-workspace/tsc/vue3/#997/main.vue
new file mode 100644
index 0000000000..0dd0c9b3a9
--- /dev/null
+++ b/test-workspace/tsc/vue3/#997/main.vue
@@ -0,0 +1,9 @@
+
+ {{ count }}
+
+
+
diff --git a/test-workspace/tsc/vue3/defineOptions/child.vue b/test-workspace/tsc/vue3/defineOptions/child.vue
new file mode 100644
index 0000000000..b76bef2528
--- /dev/null
+++ b/test-workspace/tsc/vue3/defineOptions/child.vue
@@ -0,0 +1,17 @@
+
+
+
+
+ {{ exactType(foo, 0) }}
+
+
diff --git a/test-workspace/tsc/vue3/defineProp_B/main.vue b/test-workspace/tsc/vue3/defineProp_B/main.vue
index 5f8b0e80ca..9f2733aa2a 100644
--- a/test-workspace/tsc/vue3/defineProp_B/main.vue
+++ b/test-workspace/tsc/vue3/defineProp_B/main.vue
@@ -31,7 +31,7 @@ declare const ScriptSetupGenericExact: (
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps,
attrs: any,
slots: {},
- emit: any,
+ emit: {},
expose(_exposed: {}): void,
}>
) => import('vue').VNode & { __ctx?: Awaited; };