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/CHANGELOG.md b/CHANGELOG.md
index 3517ef5d2f..55fb576af4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,71 @@
# Changelog
+## 2.1.0-insiders.8 (2024/5/1)
+
+Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.8), [爱发电电圈](https://afdian.net/p/f45436ca076d11ef9b7352540025c377)
+
+> [Join the Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) for more exclusive features and updates.
+
+### Other Changes
+
+- Merged [v2.0.16](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md#2016-202451).
+
+## 2.0.16 (2024/5/1)
+
+### Bug Fixes
+
+- **language-core:** virtual document language ID is not updated when changing SFC style block lang
+- **language-core:** correct logic for `defineSlots` destructuring (#4326) - Thanks @zhiyuanzmj
+- **language-core:** ObjectDirective does not work with `defineSlots` (#4327)
+- **language-service:** emmet not working in postcss style block (https://github.com/volarjs/volar.js/issues/169)
+
+### Other Changes
+
+- Upgrade to [Volar 2.2](https://github.com/volarjs/volar.js/releases/tag/v2.2.0)
+- **language-core:** export `VueEmbeddedCode` (#4265) - Thanks @zhiyuanzmj
+- **typescript-plugin:** expose `FileRegistry` to `project.program` (#3963) - Thanks @zcf0508
+- **vscode:** remove outdated formatters section (#4243) - Thanks @BBboy01
+
+## 2.1.0-insiders.7 (2024/4/30)
+
+Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.7), [爱发电电圈](https://afdian.net/p/84db515c069b11ef9eaf52540025c377)
+
+> [Join the Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) for more exclusive features and updates.
+
+### Other Changes
+
+- Merged [v2.0.15](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md#2015-2024430).
+
+## 2.0.15 (2024/4/30)
+
+### Features
+
+- Redesign additional extensions, VitePress, PetiteVue support (#4321)
+ - Fix custom file extensions not working in Hybrid Mode (#4251)
+- **vscode:** prompt when Hybrid Mode is explicitly enabled but known incompatible extensions are installed
+- **language-core:** use internal options for directly exposing user props/emits types ([vuejs/core#10801](https://github.com/vuejs/core/pull/10801))
+- **language-core:** support defineSlots destructuring (#4312) - Thanks @zhiyuanzmj
+
+### Bug Fixes
+
+- **vscode:** when enabled VitePress support, extension not activated when opening markdown files
+- **language-core:** auto-complete not working in v-bind
+
+### Performance
+
+- **language-service:** emmet completion should not be blocked by TS type evaluation (#4298)
+- **language-core:** simplify virtual code for intrinsic elements
+
+### Other Changes
+
+- Upgrade Volar from `v2.2.0-alpha.10` to `v2.2.0-alpha.12`:
+ - Avoid extension crash when workspace TSDK does not exist
+ - Fix template variables cannot be renamed at the first character in Hybrid Mode (#4297)
+ - Fix template virtual code mapping is misaligned in Windows in Hybrid Mode (#4297)
+- Add `svelte.svelte-vscode` (>=108.4.0) to Hybrid Mode compatibility whitelist ([sveltejs/language-tools#2317](https://github.com/sveltejs/language-tools/pull/2317))
+- **component-meta:** convert source code to TS
+- **language-core:** export `allCodeFeatures` (#4320) - Thanks @zhiyuanzmj
+
## 2.1.0-insiders.6 (2024/4/25)
Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.6), [爱发电电圈](https://afdian.net/p/f73a772602ab11efa33652540025c377)
diff --git a/README.md b/README.md
index 12d55b132c..2bcb0b6c9f 100644
--- a/README.md
+++ b/README.md
@@ -319,7 +319,7 @@ flowchart LR
-
+
Boot a fresh environment in milliseconds.
diff --git a/extensions/vscode/README.md b/extensions/vscode/README.md
index a9fbde6a94..c26404c94e 100644
--- a/extensions/vscode/README.md
+++ b/extensions/vscode/README.md
@@ -254,8 +254,3 @@ Finally you need to make VS Code recognize your new extension and automatically
- [angular](https://github.com/angular/angular) shows how TS server plugin working with language service.
- Syntax highlight is rewritten base on [vue-syntax-highlight](https://github.com/vuejs/vue-syntax-highlight).
- [vscode-fenced-code-block-grammar-injection-example](https://github.com/mjbvz/vscode-fenced-code-block-grammar-injection-example) shows how to inject vue syntax highlight to markdown.
-- Out of the box formatting working by (If you would like to use other formatters, checkout https://github.com/vuejs/language-tools-plugins):
- - [vscode-html-languageservice](https://github.com/microsoft/vscode-html-languageservice): html
- - [vscode-css-languageservice](https://github.com/microsoft/vscode-css-languageservice): css, less, scss, postcss
- - [pug-beautify](https://github.com/vingorius/pug-beautify): pug
- - [typescript](https://github.com/microsoft/TypeScript): js, ts, jsx, tsx
diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json
index 9566246842..1f5f100e5c 100644
--- a/extensions/vscode/package.json
+++ b/extensions/vscode/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"name": "volar",
- "version": "2.0.14",
+ "version": "2.0.16",
"repository": {
"type": "git",
"url": "https://github.com/vuejs/language-tools.git",
@@ -515,10 +515,10 @@
"devDependencies": {
"@types/semver": "^7.5.3",
"@types/vscode": "^1.82.0",
- "@volar/vscode": "2.2.0-alpha.10",
- "@vue/language-core": "2.0.14",
- "@vue/language-server": "2.0.14",
- "@vue/typescript-plugin": "2.0.14",
+ "@volar/vscode": "~2.2.0",
+ "@vue/language-core": "2.0.16",
+ "@vue/language-server": "2.0.16",
+ "@vue/typescript-plugin": "2.0.16",
"esbuild": "latest",
"esbuild-plugin-copy": "latest",
"esbuild-visualizer": "latest",
diff --git a/extensions/vscode/src/common.ts b/extensions/vscode/src/common.ts
index ffbb8312b1..b843ac0215 100644
--- a/extensions/vscode/src/common.ts
+++ b/extensions/vscode/src/common.ts
@@ -1,14 +1,14 @@
-import { DiagnosticModel, VueInitializationOptions } from '@vue/language-server';
-import * as vscode from 'vscode';
import * as lsp from '@volar/vscode';
+import { quickPick } from '@volar/vscode/lib/common';
+import type { VueInitializationOptions } from '@vue/language-server';
+import * as fs from 'fs';
+import * as path from 'path';
+import * as semver from 'semver';
+import * as vscode from 'vscode';
import { config } from './config';
import * as doctor from './features/doctor';
import * as nameCasing from './features/nameCasing';
import * as splitEditors from './features/splitEditors';
-import * as semver from 'semver';
-import * as fs from 'fs';
-import * as path from 'path';
-import { quickPick } from '@volar/vscode/lib/common';
let client: lsp.BaseLanguageClient;
@@ -437,13 +437,8 @@ async function getInitializationOptions(
hybridMode: boolean,
): Promise {
return {
- diagnosticModel: enabledHybridMode ? DiagnosticModel.Pull : DiagnosticModel.Push,
typescript: { tsdk: (await lsp.getTsdk(context)).tsdk },
maxFileSize: config.server.maxFileSize,
- semanticTokensLegend: {
- tokenTypes: [],
- tokenModifiers: [],
- },
vue: {
hybridMode,
},
diff --git a/insiders.json b/insiders.json
index 09abf085e9..e113b6e054 100644
--- a/insiders.json
+++ b/insiders.json
@@ -1,6 +1,22 @@
{
- "latest": "2.1.0-insiders.6",
+ "latest": "2.1.0-insiders.8",
"versions": [
+ {
+ "version": "2.1.0-insiders.8",
+ "date": "2024-5-1",
+ "downloads": {
+ "GitHub": "https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.8",
+ "AFDIAN": "https://afdian.net/p/f45436ca076d11ef9b7352540025c377"
+ }
+ },
+ {
+ "version": "2.1.0-insiders.7",
+ "date": "2024-4-30",
+ "downloads": {
+ "GitHub": "https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.7",
+ "AFDIAN": "https://afdian.net/p/84db515c069b11ef9eaf52540025c377"
+ }
+ },
{
"version": "2.1.0-insiders.6",
"date": "2024-4-25",
diff --git a/lerna.json b/lerna.json
index b14f8bcfde..b0d4bc020c 100644
--- a/lerna.json
+++ b/lerna.json
@@ -6,5 +6,5 @@
"packages/*",
"test-workspace"
],
- "version": "2.0.14"
+ "version": "2.0.16"
}
diff --git a/package.json b/package.json
index 544f0582b9..d4fa2a380c 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
"devDependencies": {
"@lerna-lite/cli": "latest",
"@lerna-lite/publish": "latest",
- "@volar/language-service": "2.2.0-alpha.10",
+ "@volar/language-service": "~2.2.0",
"@volar/tsl-config": "latest",
"tsl": "latest",
"typescript": "latest",
diff --git a/packages/component-meta/lib/base.ts b/packages/component-meta/lib/base.ts
index cba4b852ea..e4ec9154e9 100644
--- a/packages/component-meta/lib/base.ts
+++ b/packages/component-meta/lib/base.ts
@@ -88,18 +88,6 @@ function createCheckerWorker(
}
return scriptSnapshots.get(fileName);
},
- getLanguageId: fileName => {
- if (parsedCommandLine.vueOptions.extensions.some(ext => fileName.endsWith(ext))) {
- return 'vue';
- }
- if (parsedCommandLine.vueOptions.vitePressExtensions.some(ext => fileName.endsWith(ext))) {
- return 'markdown';
- }
- if (parsedCommandLine.vueOptions.petiteVueExtensions.some(ext => fileName.endsWith(ext))) {
- return 'html';
- }
- return vue.resolveCommonLanguageId(fileName);
- },
scriptIdToFileName: id => id,
fileNameToScriptId: id => id,
};
diff --git a/packages/component-meta/package.json b/packages/component-meta/package.json
index ab81419bca..a21e5483d0 100644
--- a/packages/component-meta/package.json
+++ b/packages/component-meta/package.json
@@ -1,6 +1,6 @@
{
"name": "vue-component-meta",
- "version": "2.0.14",
+ "version": "2.0.16",
"license": "MIT",
"files": [
"**/*.js",
@@ -12,10 +12,10 @@
"directory": "packages/component-meta"
},
"dependencies": {
- "@volar/typescript": "2.2.0-alpha.10",
- "@vue/language-core": "2.0.14",
+ "@volar/typescript": "~2.2.0",
+ "@vue/language-core": "2.0.16",
"path-browserify": "^1.0.1",
- "vue-component-type-helpers": "2.0.14"
+ "vue-component-type-helpers": "2.0.16"
},
"peerDependencies": {
"typescript": "*"
diff --git a/packages/component-type-helpers/package.json b/packages/component-type-helpers/package.json
index 7798ee34c6..5bb1c368b4 100644
--- a/packages/component-type-helpers/package.json
+++ b/packages/component-type-helpers/package.json
@@ -1,6 +1,6 @@
{
"name": "vue-component-type-helpers",
- "version": "2.0.14",
+ "version": "2.0.16",
"license": "MIT",
"files": [
"**/*.js",
diff --git a/packages/language-core/lib/codegen/script/component.ts b/packages/language-core/lib/codegen/script/component.ts
index 27b9caa457..c4d3d0095a 100644
--- a/packages/language-core/lib/codegen/script/component.ts
+++ b/packages/language-core/lib/codegen/script/component.ts
@@ -117,10 +117,10 @@ export function* generateScriptSetupOptions(
if (options.vueCompilerOptions.target >= 3.5) {
// https://github.com/vuejs/core/pull/10801
if (scriptSetupRanges.props.define?.typeArg) {
- yield `__typeProps: typeof __VLS_typeProps,${newLine}`;
+ yield `__typeProps: __VLS_typeProps,${newLine}`;
}
if (scriptSetupRanges.emits.define?.typeArg) {
- yield `__typeEmits: typeof ${scriptSetupRanges.emits.name ?? '__VLS_emit'},${newLine}`;
+ yield `__typeEmits: ${scriptSetupRanges.emits.name ?? '__VLS_emit'},${newLine}`;
}
}
}
diff --git a/packages/language-core/lib/codegen/script/scriptSetup.ts b/packages/language-core/lib/codegen/script/scriptSetup.ts
index 8be76b06ca..1a56775093 100644
--- a/packages/language-core/lib/codegen/script/scriptSetup.ts
+++ b/packages/language-core/lib/codegen/script/scriptSetup.ts
@@ -162,8 +162,16 @@ function* generateSetupFunction(
}
}
}
- if (scriptSetupRanges.slots.define && !scriptSetupRanges.slots.name) {
- setupCodeModifies.push([[`const __VLS_slots = `], scriptSetupRanges.slots.define.start, scriptSetupRanges.slots.define.start]);
+ if (scriptSetupRanges.slots.define) {
+ if (scriptSetupRanges.slots.isObjectBindingPattern) {
+ setupCodeModifies.push([
+ [`__VLS_slots;\nconst __VLS_slots = `],
+ scriptSetupRanges.slots.define.start,
+ scriptSetupRanges.slots.define.start,
+ ]);
+ } else if (!scriptSetupRanges.slots.name) {
+ setupCodeModifies.push([[`const __VLS_slots = `], scriptSetupRanges.slots.define.start, scriptSetupRanges.slots.define.start]);
+ }
}
if (scriptSetupRanges.emits.define && !scriptSetupRanges.emits.name) {
setupCodeModifies.push([[`const __VLS_emit = `], scriptSetupRanges.emits.define.start, scriptSetupRanges.emits.define.start]);
diff --git a/packages/language-core/lib/codegen/template/elementChildren.ts b/packages/language-core/lib/codegen/template/elementChildren.ts
index d931eb29fd..e7ee82c361 100644
--- a/packages/language-core/lib/codegen/template/elementChildren.ts
+++ b/packages/language-core/lib/codegen/template/elementChildren.ts
@@ -22,7 +22,8 @@ export function* generateElementChildren(
// fix https://github.com/vuejs/language-tools/issues/932
if (
- !ctx.hasSlotElements.has(node)
+ componentCtxVar
+ && !ctx.hasSlotElements.has(node)
&& node.children.length
&& node.tagType !== CompilerDOM.ElementTypes.ELEMENT
&& node.tagType !== CompilerDOM.ElementTypes.TEMPLATE
diff --git a/packages/language-core/lib/codegen/template/elementEvents.ts b/packages/language-core/lib/codegen/template/elementEvents.ts
index eafa4d9d2b..ee0644f47d 100644
--- a/packages/language-core/lib/codegen/template/elementEvents.ts
+++ b/packages/language-core/lib/codegen/template/elementEvents.ts
@@ -30,7 +30,7 @@ export function* generateElementEvents(
yield `let ${eventVar} = { '${prop.arg.loc.source}': __VLS_pickEvent(`;
yield `${eventsVar}['${prop.arg.loc.source}'], `;
yield `({} as __VLS_FunctionalComponentProps)`;
- yield* generateEventArg(options, ctx, prop.arg, true);
+ yield* generateEventArg(options, ctx, prop.arg, true, false);
yield `) }${endOfLine}`;
yield `${eventVar} = { `;
if (prop.arg.loc.source.startsWith('[') && prop.arg.loc.source.endsWith(']')) {
@@ -105,7 +105,14 @@ export function* generateEventArg(
ctx: TemplateCodegenContext,
arg: CompilerDOM.SimpleExpressionNode,
access: boolean,
+ enableHover: boolean,
): Generator {
+ const features = enableHover
+ ? {
+ ...ctx.codeFeatures.withoutHighlightAndCompletion,
+ ...eventArgFeatures,
+ }
+ : eventArgFeatures;
if (arg.loc.source.startsWith('[') && arg.loc.source.endsWith(']')) {
yield `[`;
yield* generateInterpolation(
@@ -124,7 +131,7 @@ export function* generateEventArg(
if (access) {
yield `.`;
}
- yield ['', 'template', arg.loc.start.offset, eventArgFeatures];
+ yield ['', 'template', arg.loc.start.offset, features];
yield `on`;
yield* generateCamelized(
capitalize(arg.loc.source),
@@ -139,7 +146,7 @@ export function* generateEventArg(
yield* wrapWith(
arg.loc.start.offset,
arg.loc.end.offset,
- eventArgFeatures,
+ features,
`'`,
['', 'template', arg.loc.start.offset, combineLastMapping],
'on',
diff --git a/packages/language-core/lib/codegen/template/elementProps.ts b/packages/language-core/lib/codegen/template/elementProps.ts
index e1e4ba00cc..2ed1454590 100644
--- a/packages/language-core/lib/codegen/template/elementProps.ts
+++ b/packages/language-core/lib/codegen/template/elementProps.ts
@@ -37,7 +37,25 @@ export function* generateElementProps(
classAttrNum++;
}
- if (!isIntrinsicElement) {
+ if (isIntrinsicElement) {
+ for (const prop of props) {
+ if (
+ prop.type === CompilerDOM.NodeTypes.DIRECTIVE
+ && prop.name === 'on'
+ ) {
+ if (prop.arg?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION) {
+ yield* generateEventArg(options, ctx, prop.arg, false, true);
+ yield `: `;
+ yield* generateEventExpression(options, ctx, prop);
+ yield `,${newLine}`;
+ }
+ else if (prop.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION) {
+ propsFailedExps?.push(prop.exp);
+ }
+ }
+ }
+ }
+ else {
let generatedEvent = false;
for (const prop of props) {
if (
@@ -59,20 +77,6 @@ export function* generateElementProps(
yield `}, `;
}
}
- else {
- for (const prop of props) {
- if (
- prop.type === CompilerDOM.NodeTypes.DIRECTIVE
- && prop.name === 'on'
- && prop.arg?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION
- ) {
- yield* generateEventArg(options, ctx, prop.arg, false);
- yield `: `;
- yield* generateEventExpression(options, ctx, prop);
- yield `,${newLine}`;
- }
- }
- }
for (const prop of props) {
if (
diff --git a/packages/language-core/lib/codegen/template/slotOutlet.ts b/packages/language-core/lib/codegen/template/slotOutlet.ts
index dfefcf332b..07a76905da 100644
--- a/packages/language-core/lib/codegen/template/slotOutlet.ts
+++ b/packages/language-core/lib/codegen/template/slotOutlet.ts
@@ -58,55 +58,54 @@ export function* generateSlotOutlet(
`}`,
);
yield `)${endOfLine}`;
- return;
}
else {
yield `var ${varSlot} = {${newLine}`;
yield* generateElementProps(options, ctx, node, node.props.filter(prop => prop !== nameProp), true);
yield `}${endOfLine}`;
- }
- if (
- nameProp?.type === CompilerDOM.NodeTypes.ATTRIBUTE
- && nameProp.value
- ) {
- ctx.slots.push({
- name: nameProp.value.content,
- loc: nameProp.loc.start.offset + nameProp.loc.source.indexOf(nameProp.value.content, nameProp.name.length),
- tagRange: [startTagOffset, startTagOffset + node.tag.length],
- varName: varSlot,
- nodeLoc: node.loc,
- });
- }
- else if (
- nameProp?.type === CompilerDOM.NodeTypes.DIRECTIVE
- && nameProp.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION
- ) {
- const slotExpVar = ctx.getInternalVariable();
- yield `var ${slotExpVar} = `;
- yield* generateInterpolation(
- options,
- ctx,
- nameProp.exp.content,
- nameProp.exp,
- nameProp.exp.loc.start.offset,
- ctx.codeFeatures.all,
- '(',
- ')',
- );
- yield ` as const${endOfLine}`;
- ctx.dynamicSlots.push({
- expVar: slotExpVar,
- varName: varSlot,
- });
- }
- else {
- ctx.slots.push({
- name: 'default',
- tagRange: [startTagOffset, startTagOffset + node.tag.length],
- varName: varSlot,
- nodeLoc: node.loc,
- });
+ if (
+ nameProp?.type === CompilerDOM.NodeTypes.ATTRIBUTE
+ && nameProp.value
+ ) {
+ ctx.slots.push({
+ name: nameProp.value.content,
+ loc: nameProp.loc.start.offset + nameProp.loc.source.indexOf(nameProp.value.content, nameProp.name.length),
+ tagRange: [startTagOffset, startTagOffset + node.tag.length],
+ varName: varSlot,
+ nodeLoc: node.loc,
+ });
+ }
+ else if (
+ nameProp?.type === CompilerDOM.NodeTypes.DIRECTIVE
+ && nameProp.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION
+ ) {
+ const slotExpVar = ctx.getInternalVariable();
+ yield `var ${slotExpVar} = `;
+ yield* generateInterpolation(
+ options,
+ ctx,
+ nameProp.exp.content,
+ nameProp.exp,
+ nameProp.exp.loc.start.offset,
+ ctx.codeFeatures.all,
+ '(',
+ ')',
+ );
+ yield ` as const${endOfLine}`;
+ ctx.dynamicSlots.push({
+ expVar: slotExpVar,
+ varName: varSlot,
+ });
+ }
+ else {
+ ctx.slots.push({
+ name: 'default',
+ tagRange: [startTagOffset, startTagOffset + node.tag.length],
+ varName: varSlot,
+ nodeLoc: node.loc,
+ });
+ }
}
yield* ctx.generateAutoImportCompletion();
yield* generateElementChildren(options, ctx, node, currentComponent, componentCtxVar);
diff --git a/packages/language-core/lib/languageModule.ts b/packages/language-core/lib/languageModule.ts
index 6d5c65b0e3..29b7a62d7b 100644
--- a/packages/language-core/lib/languageModule.ts
+++ b/packages/language-core/lib/languageModule.ts
@@ -51,7 +51,7 @@ function getFileRegistryKey(
return JSON.stringify(values);
}
-interface _Plugin extends LanguagePlugin {
+export interface _Plugin extends LanguagePlugin {
getCanonicalFileName: (fileName: string) => string;
pluginContext: Parameters[0];
}
@@ -93,14 +93,19 @@ export function createVueLanguagePlugin(
return {
getCanonicalFileName,
pluginContext,
+ getLanguageId(scriptId) {
+ if (vueCompilerOptions.extensions.some(ext => scriptId.endsWith(ext))) {
+ return 'vue';
+ }
+ if (vueCompilerOptions.vitePressExtensions.some(ext => scriptId.endsWith(ext))) {
+ return 'markdown';
+ }
+ if (vueCompilerOptions.petiteVueExtensions.some(ext => scriptId.endsWith(ext))) {
+ return 'html';
+ }
+ },
createVirtualCode(fileId, languageId, snapshot) {
- const isVueFile = vueCompilerOptions.extensions.some(ext => fileId.endsWith(ext))
- || (vueCompilerOptions.extensions.length && languageId === 'vue');
- const isVitePressFile = vueCompilerOptions.vitePressExtensions.some(ext => fileId.endsWith(ext))
- || (vueCompilerOptions.vitePressExtensions.length && languageId === 'markdown');
- const isPetiteVueFile = vueCompilerOptions.petiteVueExtensions.some(ext => fileId.endsWith(ext))
- || (vueCompilerOptions.petiteVueExtensions.length && languageId === 'html');
- if (isVueFile || isVitePressFile || isPetiteVueFile) {
+ if (languageId === 'vue' || languageId === 'markdown' || languageId === 'html') {
const fileName = getFileName(fileId);
const projectVersion = getProjectVersion();
if (projectVersion !== canonicalRootFileNamesVersion) {
@@ -122,9 +127,9 @@ export function createVueLanguagePlugin(
languageId,
snapshot,
vueCompilerOptions,
- isPetiteVueFile
+ languageId === 'html'
? [petiteVueSfcPlugin, ...basePlugins]
- : isVitePressFile
+ : languageId === 'markdown'
? [vitePressSfcPlugin, ...basePlugins]
: [vueSfcPlugin, ...basePlugins],
ts,
diff --git a/packages/language-core/lib/parsers/scriptSetupRanges.ts b/packages/language-core/lib/parsers/scriptSetupRanges.ts
index 8f34d3bf00..3a9c111823 100644
--- a/packages/language-core/lib/parsers/scriptSetupRanges.ts
+++ b/packages/language-core/lib/parsers/scriptSetupRanges.ts
@@ -24,6 +24,7 @@ export function parseScriptSetupRanges(
} = {};
const slots: {
name?: string;
+ isObjectBindingPattern?: boolean;
define?: ReturnType;
} = {};
const emits: {
@@ -186,7 +187,12 @@ export function parseScriptSetupRanges(
else if (vueCompilerOptions.macros.defineSlots.includes(callText)) {
slots.define = parseDefineFunction(node);
if (ts.isVariableDeclaration(parent)) {
- slots.name = getNodeText(ts, parent.name, ast);
+ if (ts.isIdentifier(parent.name)) {
+ slots.name = getNodeText(ts, parent.name, ast);
+ }
+ else {
+ slots.isObjectBindingPattern = ts.isObjectBindingPattern(parent.name);
+ }
}
}
else if (vueCompilerOptions.macros.defineEmits.includes(callText)) {
diff --git a/packages/language-core/lib/plugins.ts b/packages/language-core/lib/plugins.ts
index 6cbdaa247d..dc1b91b804 100644
--- a/packages/language-core/lib/plugins.ts
+++ b/packages/language-core/lib/plugins.ts
@@ -8,6 +8,8 @@ import useVueTemplateInlineTsPlugin from './plugins/vue-template-inline-ts';
import useVueTsx from './plugins/vue-tsx';
import { pluginVersion, type VueLanguagePlugin } from './types';
+export * from './plugins/shared'
+
export function getBasePlugins(pluginContext: Parameters[0]) {
const plugins: VueLanguagePlugin[] = [
diff --git a/packages/language-core/lib/plugins/vue-template-inline-ts.ts b/packages/language-core/lib/plugins/vue-template-inline-ts.ts
index 0501f8884e..781f4d118f 100644
--- a/packages/language-core/lib/plugins/vue-template-inline-ts.ts
+++ b/packages/language-core/lib/plugins/vue-template-inline-ts.ts
@@ -92,7 +92,7 @@ const plugin: VueLanguagePlugin = ctx => {
prop.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION
&& prop.exp.constType !== CompilerDOM.ConstantTypes.CAN_STRINGIFY // style='z-index: 2' will compile to {'z-index':'2'}
) {
- if (prop.name === 'on') {
+ if (prop.name === 'on' && prop.arg?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION) {
const ast = createTsAst(ctx.modules.typescript, prop.exp, prop.exp.content);
addFormatCodes(
prop.exp.content,
diff --git a/packages/language-core/lib/types.ts b/packages/language-core/lib/types.ts
index 1c4efd6b05..4bbac75e07 100644
--- a/packages/language-core/lib/types.ts
+++ b/packages/language-core/lib/types.ts
@@ -6,6 +6,8 @@ import type { CodeInformation, Segment } from '@volar/language-core';
export type { SFCParseResult } from '@vue/compiler-sfc';
+export { VueEmbeddedCode };
+
export type RawVueCompilerOptions = Partial> & {
target?: 'auto' | 2 | 2.7 | 3 | 3.3;
plugins?: string[];
diff --git a/packages/language-core/lib/virtualFile/computedFiles.ts b/packages/language-core/lib/virtualFile/computedFiles.ts
index ea59ec3599..5ad441ecd3 100644
--- a/packages/language-core/lib/virtualFile/computedFiles.ts
+++ b/packages/language-core/lib/virtualFile/computedFiles.ts
@@ -1,4 +1,4 @@
-import { VirtualCode, buildMappings, resolveCommonLanguageId, toString } from '@volar/language-core';
+import { VirtualCode, buildMappings, toString } from '@volar/language-core';
import { computed } from 'computeds';
import type * as ts from 'typescript';
import type { Code, Sfc, SfcBlock, VueLanguagePlugin } from '../types';
@@ -29,7 +29,7 @@ export function computedFiles(
}
return blocks;
});
- const pluginsResult = plugins.map(plugin => computedPluginFiles(plugins, plugin, fileName, sfc, nameToBlock));
+ const pluginsResult = plugins.map(plugin => computedPluginEmbeddedCodes(plugins, plugin, fileName, sfc, nameToBlock));
const flatResult = computed(() => pluginsResult.map(r => r()).flat());
const structuredResult = computed(() => {
@@ -45,20 +45,20 @@ export function computedFiles(
}
}
- for (const { file } of remain) {
- console.error('Unable to resolve embedded: ' + file.parentCodeId + ' -> ' + file.id);
+ for (const { code } of remain) {
+ console.error('Unable to resolve embedded: ' + code.parentCodeId + ' -> ' + code.id);
}
return embeddedCodes;
function consumeRemain() {
for (let i = remain.length - 1; i >= 0; i--) {
- const { file, snapshot, mappings } = remain[i];
- if (!file.parentCodeId) {
+ const { code, snapshot, mappings } = remain[i];
+ if (!code.parentCodeId) {
embeddedCodes.push({
- id: file.id,
- languageId: resolveCommonLanguageId(`/dummy.${file.lang}`),
- linkedCodeMappings: file.linkedCodeMappings,
+ id: code.id,
+ languageId: resolveCommonLanguageId(code.lang),
+ linkedCodeMappings: code.linkedCodeMappings,
snapshot,
mappings,
embeddedCodes: [],
@@ -66,13 +66,13 @@ export function computedFiles(
remain.splice(i, 1);
}
else {
- const parent = findParentStructure(file.parentCodeId, embeddedCodes);
+ const parent = findParentStructure(code.parentCodeId, embeddedCodes);
if (parent) {
parent.embeddedCodes ??= [];
parent.embeddedCodes.push({
- id: file.id,
- languageId: resolveCommonLanguageId(`/dummy.${file.lang}`),
- linkedCodeMappings: file.linkedCodeMappings,
+ id: code.id,
+ languageId: resolveCommonLanguageId(code.lang),
+ linkedCodeMappings: code.linkedCodeMappings,
snapshot,
mappings,
embeddedCodes: [],
@@ -98,42 +98,46 @@ export function computedFiles(
return structuredResult;
}
-function computedPluginFiles(
+function computedPluginEmbeddedCodes(
plugins: ReturnType[],
plugin: ReturnType,
fileName: string,
sfc: Sfc,
nameToBlock: () => Record,
) {
- const embeddedFiles: Record { file: VueEmbeddedCode; snapshot: ts.IScriptSnapshot; }> = {};
- const files = computed(() => {
+ const computeds = new Map { code: VueEmbeddedCode; snapshot: ts.IScriptSnapshot; }>();
+ const getComputedKey = (code: {
+ id: string;
+ lang: string;
+ }) => code.id + '__' + code.lang;
+ const codes = computed(() => {
try {
if (!plugin.getEmbeddedCodes) {
- return Object.values(embeddedFiles);
+ return [...computeds.values()];
}
- const fileInfos = plugin.getEmbeddedCodes(fileName, sfc);
- for (const oldId of Object.keys(embeddedFiles)) {
- if (!fileInfos.some(file => file.id === oldId)) {
- delete embeddedFiles[oldId];
+ const embeddedCodeInfos = plugin.getEmbeddedCodes(fileName, sfc);
+ for (const oldId of computeds.keys()) {
+ if (!embeddedCodeInfos.some(code => getComputedKey(code) === oldId)) {
+ computeds.delete(oldId);
}
}
- for (const fileInfo of fileInfos) {
- if (!embeddedFiles[fileInfo.id]) {
- embeddedFiles[fileInfo.id] = computed(() => {
+ for (const codeInfo of embeddedCodeInfos) {
+ if (!computeds.has(getComputedKey(codeInfo))) {
+ computeds.set(getComputedKey(codeInfo), computed(() => {
const content: Code[] = [];
- const file = new VueEmbeddedCode(fileInfo.id, fileInfo.lang, content);
+ const code = new VueEmbeddedCode(codeInfo.id, codeInfo.lang, content);
for (const plugin of plugins) {
if (!plugin.resolveEmbeddedCode) {
continue;
}
try {
- plugin.resolveEmbeddedCode(fileName, sfc, file);
+ plugin.resolveEmbeddedCode(fileName, sfc, code);
}
catch (e) {
console.error(e);
}
}
- const newText = toString(file.content);
+ const newText = toString(code.content);
const changeRanges = new Map();
const snapshot: ts.IScriptSnapshot = {
getText: (start, end) => newText.slice(start, end),
@@ -151,24 +155,24 @@ function computedPluginFiles(
},
};
return {
- file,
+ code,
snapshot,
};
- });
+ }));
}
}
}
catch (e) {
console.error(e);
}
- return Object.values(embeddedFiles);
+ return [...computeds.values()];
});
return computed(() => {
- return files().map(_file => {
+ return codes().map(_file => {
- const { file, snapshot } = _file();
- const mappings = buildMappings(file.content);
+ const { code, snapshot } = _file();
+ const mappings = buildMappings(code.content);
const newMappings: typeof mappings = [];
let lastValidMapping: typeof mappings[number] | undefined;
@@ -207,7 +211,7 @@ function computedPluginFiles(
}
return {
- file,
+ code,
snapshot,
mappings: newMappings,
};
@@ -238,3 +242,19 @@ function fullDiffTextChangeRange(oldText: string, newText: string): ts.TextChang
}
}
}
+
+export function resolveCommonLanguageId(lang: string) {
+ switch (lang) {
+ case 'js': return 'javascript';
+ case 'cjs': return 'javascript';
+ case 'mjs': return 'javascript';
+ case 'ts': return 'typescript';
+ case 'cts': return 'typescript';
+ case 'mts': return 'typescript';
+ case 'jsx': return 'javascriptreact';
+ case 'tsx': return 'typescriptreact';
+ case 'pug': return 'jade';
+ case 'md': return 'markdown';
+ }
+ return lang;
+}
diff --git a/packages/language-core/package.json b/packages/language-core/package.json
index e4789fea4b..165857aa57 100644
--- a/packages/language-core/package.json
+++ b/packages/language-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/language-core",
- "version": "2.0.14",
+ "version": "2.0.16",
"license": "MIT",
"files": [
"**/*.js",
@@ -12,7 +12,7 @@
"directory": "packages/language-core"
},
"dependencies": {
- "@volar/language-core": "2.2.0-alpha.10",
+ "@volar/language-core": "~2.2.0",
"@vue/compiler-dom": "^3.4.0",
"@vue/shared": "^3.4.0",
"computeds": "^0.0.1",
diff --git a/packages/language-plugin-pug/package.json b/packages/language-plugin-pug/package.json
index aae78e60f3..3df2a50692 100644
--- a/packages/language-plugin-pug/package.json
+++ b/packages/language-plugin-pug/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/language-plugin-pug",
- "version": "2.0.14",
+ "version": "2.0.16",
"license": "MIT",
"files": [
"**/*.js",
@@ -13,10 +13,10 @@
},
"devDependencies": {
"@types/node": "latest",
- "@vue/language-core": "2.0.14"
+ "@vue/language-core": "2.0.16"
},
"dependencies": {
- "@volar/source-map": "2.2.0-alpha.10",
- "volar-service-pug": "0.0.40"
+ "@volar/source-map": "~2.2.0",
+ "volar-service-pug": "0.0.42"
}
}
diff --git a/packages/language-server/lib/hybridModeProject.ts b/packages/language-server/lib/hybridModeProject.ts
index d4b39db977..4052c03bcc 100644
--- a/packages/language-server/lib/hybridModeProject.ts
+++ b/packages/language-server/lib/hybridModeProject.ts
@@ -1,126 +1,127 @@
-import type { LanguagePlugin, LanguageServicePlugin, ServerProject, ServerProjectProviderFactory } from '@volar/language-server';
+import type { LanguagePlugin, ProviderResult, ServerBase, ServerProject, ServerProjectProvider, TypeScriptProjectHost } from '@volar/language-server';
import { createSimpleServerProject } from '@volar/language-server/lib/project/simpleProject';
import { createServiceEnvironment, getWorkspaceFolder } from '@volar/language-server/lib/project/simpleProjectProvider';
-import type { ServerContext } from '@volar/language-server/lib/server';
import { FileMap, createLanguage } from '@vue/language-core';
-import { LanguageService, ServiceEnvironment, createLanguageService } from '@vue/language-service';
+import { Disposable, LanguageService, ServiceEnvironment, createLanguageService } from '@vue/language-service';
import { searchNamedPipeServerForFile } from '@vue/typescript-plugin/lib/utils';
import type * as ts from 'typescript';
-export function createHybridModeProjectProviderFactory(sys: ts.System): ServerProjectProviderFactory {
- return (context, servicePlugins, getLanguagePlugins) => {
- const serviceEnvs = new FileMap(sys.useCaseSensitiveFileNames);
- const tsconfigProjects = new FileMap>(sys.useCaseSensitiveFileNames);
- const simpleProjects = new FileMap>(sys.useCaseSensitiveFileNames);
- context.onDidChangeWatchedFiles(({ changes }) => {
+export type GetLanguagePlugin = (
+ serviceEnv: ServiceEnvironment,
+ configFileName?: string,
+ host?: TypeScriptProjectHost,
+ sys?: ts.System & {
+ version: number;
+ sync(): Promise;
+ } & Disposable,
+) => ProviderResult;
+
+export function createHybridModeProjectProviderFactory(
+ sys: ts.System,
+ getLanguagePlugins: GetLanguagePlugin,
+): ServerProjectProvider {
+ let initialized = false;
+
+ const serviceEnvs = new FileMap(sys.useCaseSensitiveFileNames);
+ const tsconfigProjects = new FileMap>(sys.useCaseSensitiveFileNames);
+ const simpleProjects = new FileMap>(sys.useCaseSensitiveFileNames);
+
+ return {
+ async get(uri): Promise {
+ if (!initialized) {
+ initialized = true;
+ initialize(this);
+ }
+ const workspaceFolder = getWorkspaceFolder(uri, this.workspaceFolders);
+ let serviceEnv = serviceEnvs.get(workspaceFolder);
+ if (!serviceEnv) {
+ serviceEnv = createServiceEnvironment(this, workspaceFolder);
+ serviceEnvs.set(workspaceFolder, serviceEnv);
+ }
+ const fileName = serviceEnv.typescript!.uriToFileName(uri);
+ const projectInfo = (await searchNamedPipeServerForFile(fileName))?.projectInfo;
+ if (projectInfo?.kind === 1) {
+ const tsconfig = projectInfo.name;
+ const tsconfigUri = serviceEnv.typescript!.fileNameToUri(tsconfig);
+ if (!tsconfigProjects.has(tsconfigUri)) {
+ tsconfigProjects.set(tsconfigUri, (async () => {
+ const languagePlugins = await getLanguagePlugins(serviceEnv, tsconfig, undefined, {
+ ...sys,
+ version: 0,
+ async sync() {
+ return 0;
+ },
+ dispose() { },
+ });
+ return createTSConfigProject(this, serviceEnv, languagePlugins);
+ })());
+ }
+ return await tsconfigProjects.get(tsconfigUri)!;
+ }
+ else {
+ if (!simpleProjects.has(workspaceFolder)) {
+ simpleProjects.set(workspaceFolder, (async () => {
+ const languagePlugins = await getLanguagePlugins(serviceEnv);
+ return createSimpleServerProject(this, serviceEnv, languagePlugins);
+ })());
+ }
+ return await simpleProjects.get(workspaceFolder)!;
+ }
+ },
+ async all() {
+ return Promise.all([
+ ...tsconfigProjects.values(),
+ ...simpleProjects.values(),
+ ]);
+ },
+ };
+
+ function initialize(server: ServerBase) {
+ server.onDidChangeWatchedFiles(({ changes }) => {
for (const change of changes) {
if (tsconfigProjects.has(change.uri)) {
tsconfigProjects.get(change.uri)?.then(project => project.dispose());
tsconfigProjects.delete(change.uri);
- context.reloadDiagnostics();
+ server.clearPushDiagnostics();
}
}
});
- return {
- async getProject(uri): Promise {
- const workspaceFolder = getWorkspaceFolder(uri, context.workspaceFolders);
- let serviceEnv = serviceEnvs.get(workspaceFolder);
- if (!serviceEnv) {
- serviceEnv = createServiceEnvironment(context, workspaceFolder);
- serviceEnvs.set(workspaceFolder, serviceEnv);
- }
- const fileName = serviceEnv.typescript!.uriToFileName(uri);
- const projectInfo = (await searchNamedPipeServerForFile(fileName))?.projectInfo;
- if (projectInfo?.kind === 1) {
- const tsconfig = projectInfo.name;
- const tsconfigUri = serviceEnv.typescript!.fileNameToUri(tsconfig);
- if (!tsconfigProjects.has(tsconfigUri)) {
- tsconfigProjects.set(tsconfigUri, (async () => {
- const languagePlugins = await getLanguagePlugins(serviceEnv, {
- typescript: {
- configFileName: tsconfig,
- host: {
- getScriptFileNames() {
- return [];
- },
- } as any,
- sys: {
- ...sys,
- version: 0,
- async sync() {
- return 0;
- },
- dispose() { },
- },
- },
- });
- return createTSConfigProject(context, serviceEnv, languagePlugins, servicePlugins);
- })());
- }
- return await tsconfigProjects.get(tsconfigUri)!;
- }
- else {
- if (!simpleProjects.has(workspaceFolder)) {
- simpleProjects.set(workspaceFolder, (() => {
- return createSimpleServerProject(context, serviceEnv, servicePlugins, getLanguagePlugins);
- })());
- }
- return await simpleProjects.get(workspaceFolder)!;
- }
- },
- async getProjects() {
- return Promise.all([
- ...tsconfigProjects.values(),
- ...simpleProjects.values(),
- ]);
- },
- async reloadProjects() {
- for (const project of [
- ...tsconfigProjects.values(),
- ...simpleProjects.values(),
- ]) {
- (await project).dispose();
- }
- tsconfigProjects.clear();
- },
- };
+ }
- function createTSConfigProject(
- context: ServerContext,
- serviceEnv: ServiceEnvironment,
- languagePlugins: LanguagePlugin[],
- servicePlugins: LanguageServicePlugin[],
- ): ServerProject {
+ function createTSConfigProject(
+ server: ServerBase,
+ serviceEnv: ServiceEnvironment,
+ languagePlugins: LanguagePlugin[],
+ ): ServerProject {
- let languageService: LanguageService | undefined;
+ let languageService: LanguageService | undefined;
- return {
- getLanguageService,
- getLanguageServiceDontCreate: () => languageService,
- dispose() {
- languageService?.dispose();
- },
- };
+ return {
+ getLanguageService,
+ getLanguageServiceDontCreate: () => languageService,
+ dispose() {
+ languageService?.dispose();
+ },
+ };
- function getLanguageService() {
- if (!languageService) {
- const language = createLanguage(languagePlugins, false, uri => {
- const script = context.documents.get(uri);
- if (script) {
- language.scripts.set(uri, script.languageId, script.getSnapshot());
- }
- else {
- language.scripts.delete(uri);
- }
- });
- languageService = createLanguageService(
- language,
- servicePlugins,
- serviceEnv,
- );
- }
- return languageService;
+ function getLanguageService() {
+ if (!languageService) {
+ const language = createLanguage(languagePlugins, false, uri => {
+ const document = server.documents.get(uri);
+ if (document) {
+ language.scripts.set(uri, document.getSnapshot(), document.languageId);
+ }
+ else {
+ language.scripts.delete(uri);
+ }
+ });
+ languageService = createLanguageService(
+ language,
+ server.languageServicePlugins,
+ serviceEnv,
+ );
}
+ return languageService;
}
- };
+ }
}
diff --git a/packages/language-server/node.ts b/packages/language-server/node.ts
index 3714d01032..19e0dd5dcd 100644
--- a/packages/language-server/node.ts
+++ b/packages/language-server/node.ts
@@ -1,29 +1,79 @@
import type { Connection } from '@volar/language-server';
-import { createConnection, createServer, createTypeScriptProjectProviderFactory, loadTsdkByPath } from '@volar/language-server/node';
-import { ParsedCommandLine, VueCompilerOptions, createParsedCommandLine, createVueLanguagePlugin, parse, resolveCommonLanguageId, resolveVueCompilerOptions } from '@vue/language-core';
-import { ServiceEnvironment, convertAttrName, convertTagName, createDefaultGetTsPluginClient, createVueServicePlugins, detect } from '@vue/language-service';
+import { createConnection, createServer, createTypeScriptProjectProvider, loadTsdkByPath } from '@volar/language-server/node';
+import { ParsedCommandLine, VueCompilerOptions, createParsedCommandLine, createVueLanguagePlugin, parse, resolveVueCompilerOptions } from '@vue/language-core';
+import { ServiceEnvironment, convertAttrName, convertTagName, createDefaultGetTsPluginClient, detect, getVueLanguageServicePlugins } from '@vue/language-service';
import * as tsPluginClient from '@vue/typescript-plugin/lib/client';
import { searchNamedPipeServerForFile } from '@vue/typescript-plugin/lib/utils';
-import { createHybridModeProjectProviderFactory } from './lib/hybridModeProject';
+import { GetLanguagePlugin, createHybridModeProjectProviderFactory } from './lib/hybridModeProject';
import { DetectNameCasingRequest, GetConnectedNamedPipeServerRequest, GetConvertAttrCasingEditsRequest, GetConvertTagCasingEditsRequest, ParseSFCRequest } from './lib/protocol';
import type { VueInitializationOptions } from './lib/types';
+let tsdk: ReturnType;
+let hybridMode: boolean;
+let getTsPluginClient: ReturnType;
+
+const envToVueOptions = new WeakMap();
+const watchedExtensions = new Set();
+
export const connection: Connection = createConnection();
export const server = createServer(connection);
-const envToVueOptions = new WeakMap();
+export const getLanguagePlugins: GetLanguagePlugin = async (serviceEnv, configFileName, host, sys) => {
+ const commandLine = await parseCommandLine();
+ const vueOptions = commandLine?.vueOptions ?? resolveVueCompilerOptions({});
+ const vueLanguagePlugin = createVueLanguagePlugin(
+ tsdk.typescript,
+ serviceEnv.typescript!.uriToFileName,
+ sys?.useCaseSensitiveFileNames ?? false,
+ () => host?.getProjectVersion?.() ?? '',
+ () => host?.getScriptFileNames() ?? [],
+ commandLine?.options ?? {},
+ vueOptions,
+ );
+ if (!hybridMode) {
+ const extensions = [
+ 'js', 'cjs', 'mjs', 'ts', 'cts', 'mts', 'jsx', 'tsx', 'json',
+ ...vueOptions.extensions.map(ext => ext.slice(1)),
+ ...vueOptions.vitePressExtensions.map(ext => ext.slice(1)),
+ ...vueOptions.petiteVueExtensions.map(ext => ext.slice(1)),
+ ];
+ const newExtensions = extensions.filter(ext => !watchedExtensions.has(ext));
+ if (newExtensions.length) {
+ for (const ext of newExtensions) {
+ watchedExtensions.add(ext);
+ }
+ server.watchFiles(['**/*.{' + newExtensions.join(',') + '}']);
+ }
+ }
-let tsdk: ReturnType;
-let getTsPluginClient: ReturnType;
+ envToVueOptions.set(serviceEnv, vueOptions);
-connection.listen();
+ return [vueLanguagePlugin];
-connection.onInitialize(async params => {
+ async function parseCommandLine() {
+ let commandLine: ParsedCommandLine | undefined;
+ let sysVersion: number | undefined;
+ if (sys) {
+ let newSysVersion = await sys.sync();
+ while (sysVersion !== newSysVersion) {
+ sysVersion = newSysVersion;
+ if (configFileName) {
+ commandLine = createParsedCommandLine(tsdk.typescript, sys, configFileName);
+ }
+ newSysVersion = await sys.sync();
+ }
+ }
+ return commandLine;
+ }
+};
+connection.listen();
+
+connection.onInitialize(params => {
const options: VueInitializationOptions = params.initializationOptions;
- const hybridMode = options.vue?.hybridMode ?? true;
+ hybridMode = options.vue?.hybridMode ?? true;
tsdk = loadTsdkByPath(options.typescript.tsdk, params.locale);
if (hybridMode) {
@@ -33,74 +83,25 @@ connection.onInitialize(async params => {
getTsPluginClient = createDefaultGetTsPluginClient(tsdk.typescript, env => envToVueOptions.get(env)!);
}
- const result = await server.initialize(
+ const result = server.initialize(
params,
+ getVueLanguageServicePlugins(
+ tsdk.typescript,
+ env => envToVueOptions.get(env)!,
+ getTsPluginClient,
+ hybridMode,
+ ),
hybridMode
- ? createHybridModeProjectProviderFactory(tsdk.typescript.sys)
- : createTypeScriptProjectProviderFactory(tsdk.typescript, tsdk.diagnosticMessages),
+ ? createHybridModeProjectProviderFactory(tsdk.typescript.sys, getLanguagePlugins)
+ : createTypeScriptProjectProvider(tsdk.typescript, tsdk.diagnosticMessages, (env, ctx) => getLanguagePlugins(env, ctx.configFileName, ctx.host, ctx.sys)),
{
- // TODO: Dynamically register file watcher for vue, vitepress, petitevue extensions
- watchFileExtensions: hybridMode
- ? undefined
- : ['js', 'cjs', 'mjs', 'ts', 'cts', 'mts', 'jsx', 'tsx', 'json', 'vue'],
- // TODO: remove it
- getLanguageId: resolveCommonLanguageId,
- getServicePlugins() {
- return createVueServicePlugins(
- tsdk.typescript,
- env => envToVueOptions.get(env)!,
- getTsPluginClient,
- hybridMode,
- );
- },
- async getLanguagePlugins(serviceEnv, projectContext) {
- const commandLine = await parseCommandLine();
- const vueOptions = commandLine?.vueOptions ?? resolveVueCompilerOptions({});
- const vueLanguagePlugin = createVueLanguagePlugin(
- tsdk.typescript,
- serviceEnv.typescript!.uriToFileName,
- projectContext.typescript?.sys.useCaseSensitiveFileNames ?? false,
- () => projectContext.typescript?.host.getProjectVersion?.() ?? '',
- () => projectContext.typescript?.host.getScriptFileNames() ?? [],
- commandLine?.options ?? {},
- vueOptions,
- );
-
- envToVueOptions.set(serviceEnv, vueOptions);
-
- return [vueLanguagePlugin];
-
- async function parseCommandLine() {
-
- let commandLine: ParsedCommandLine | undefined;
-
- if (projectContext.typescript) {
-
- const { sys } = projectContext.typescript;
-
- let sysVersion: number | undefined;
- let newSysVersion = await sys.sync();
-
- while (sysVersion !== newSysVersion) {
- sysVersion = newSysVersion;
- if (projectContext.typescript.configFileName) {
- commandLine = createParsedCommandLine(tsdk.typescript, sys, projectContext.typescript.configFileName);
- }
- newSysVersion = await sys.sync();
- }
- }
-
- return commandLine;
- }
- },
+ pullModelDiagnostics: hybridMode,
},
);
-
if (hybridMode) {
- // handle by tsserver + @vue/typescript-plugin
+ // provided by tsserver + @vue/typescript-plugin
result.capabilities.semanticTokensProvider = undefined;
}
-
return result;
});
@@ -145,5 +146,5 @@ connection.onRequest(GetConnectedNamedPipeServerRequest.type, async fileName =>
});
async function getService(uri: string) {
- return (await server.projects.getProject(uri)).getLanguageService();
+ return (await server.projects.get.call(server, uri)).getLanguageService();
}
diff --git a/packages/language-server/package.json b/packages/language-server/package.json
index 22009294fc..6a2b8ca501 100644
--- a/packages/language-server/package.json
+++ b/packages/language-server/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/language-server",
- "version": "2.0.14",
+ "version": "2.0.16",
"license": "MIT",
"files": [
"**/*.js",
@@ -15,11 +15,11 @@
"directory": "packages/language-server"
},
"dependencies": {
- "@volar/language-core": "2.2.0-alpha.10",
- "@volar/language-server": "2.2.0-alpha.10",
- "@vue/language-core": "2.0.14",
- "@vue/language-service": "2.0.14",
- "@vue/typescript-plugin": "2.0.14",
+ "@volar/language-core": "~2.2.0",
+ "@volar/language-server": "~2.2.0",
+ "@vue/language-core": "2.0.16",
+ "@vue/language-service": "2.0.16",
+ "@vue/typescript-plugin": "2.0.16",
"vscode-languageserver-protocol": "^3.17.5"
}
}
diff --git a/packages/language-service/data/language-blocks/ru.json b/packages/language-service/data/language-blocks/ru.json
index 48c1e1389a..60751352af 100644
--- a/packages/language-service/data/language-blocks/ru.json
+++ b/packages/language-service/data/language-blocks/ru.json
@@ -688,7 +688,7 @@
"valueSet": "v",
"description": {
"kind": "markdown",
- "value": "\nСекция `\n```\n\nПолученные классы хэшируются во избежание коллизий, что позволяет добиться того же эффекта, что и при выборе CSS с ограниченной областью действия только для текущего компонента.\n\nОбратитесь к [спецификации CSS модулей](https://github.com/css-modules/css-modules) для получения более подробной информации, такой как [глобальные исключения](https://github.com/css-modules/css-modules#exceptions) и [композиция](https://github.com/css-modules/css-modules#composition).\n\n### Внедрение пользовательского имени \n\nМожно настроить ключ свойства объекта внедряемых классов, указав значение атрибуту `module`:\n\n```vue\n\n red
\n \n\n\n```\n\n### Использование с Composition API \n\nДоступ к внедряемым классам можно получить в `setup()` и `\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/index.ts b/packages/language-service/index.ts
index 4c0edbf14f..e2183f401a 100644
--- a/packages/language-service/index.ts
+++ b/packages/language-service/index.ts
@@ -34,7 +34,7 @@ import { getImportPathForFile } from '@vue/typescript-plugin/lib/requests/getImp
import { getPropertiesAtLocation } from '@vue/typescript-plugin/lib/requests/getPropertiesAtLocation';
import { getQuickInfoAtPosition } from '@vue/typescript-plugin/lib/requests/getQuickInfoAtPosition';
-export function createVueServicePlugins(
+export function getVueLanguageServicePlugins(
ts: typeof import('typescript'),
getVueOptions: (env: ServiceEnvironment) => VueCompilerOptions,
getTsPluginClient = createDefaultGetTsPluginClient(ts, getVueOptions),
@@ -87,7 +87,12 @@ export function createVueServicePlugins(
createVueDirectiveCommentsPlugin(),
createVueExtractFilePlugin(ts, getTsPluginClient),
createVueToggleVBindPlugin(ts),
- createEmmetPlugin(),
+ createEmmetPlugin({
+ mappedModes: {
+ 'vue': 'html',
+ 'postcss': 'scss',
+ },
+ }),
);
return plugins;
}
diff --git a/packages/language-service/package.json b/packages/language-service/package.json
index b3ddac180a..8591f271c9 100644
--- a/packages/language-service/package.json
+++ b/packages/language-service/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/language-service",
- "version": "2.0.14",
+ "version": "2.0.16",
"license": "MIT",
"files": [
"data",
@@ -16,23 +16,23 @@
"update-html-data": "node ./scripts/update-html-data.js"
},
"dependencies": {
- "@volar/language-core": "2.2.0-alpha.10",
- "@volar/language-service": "2.2.0-alpha.10",
- "@volar/typescript": "2.2.0-alpha.10",
+ "@volar/language-core": "~2.2.0",
+ "@volar/language-service": "~2.2.0",
+ "@volar/typescript": "~2.2.0",
"@vue/compiler-dom": "^3.4.0",
- "@vue/language-core": "2.0.14",
+ "@vue/language-core": "2.0.16",
"@vue/shared": "^3.4.0",
- "@vue/typescript-plugin": "2.0.14",
+ "@vue/typescript-plugin": "2.0.16",
"computeds": "^0.0.1",
"path-browserify": "^1.0.1",
- "volar-service-css": "0.0.40",
- "volar-service-emmet": "0.0.40",
- "volar-service-html": "0.0.40",
- "volar-service-json": "0.0.40",
- "volar-service-pug": "0.0.40",
- "volar-service-pug-beautify": "0.0.40",
- "volar-service-typescript": "0.0.40",
- "volar-service-typescript-twoslash-queries": "0.0.40",
+ "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",
"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-alpha.10",
+ "@volar/kit": "~2.2.0",
"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/createTester.ts b/packages/language-service/tests/utils/createTester.ts
index 746c6633ff..9ba6b75b0a 100644
--- a/packages/language-service/tests/utils/createTester.ts
+++ b/packages/language-service/tests/utils/createTester.ts
@@ -1,9 +1,9 @@
-import { TypeScriptProjectHost, createLanguageService, resolveCommonLanguageId } from '@volar/language-service';
+import { TypeScriptProjectHost, createLanguageService } from '@volar/language-service';
import { createTypeScriptLanguage } from '@volar/typescript';
import * as path from 'path';
import * as ts from 'typescript';
import { URI } from 'vscode-uri';
-import { createParsedCommandLine, createVueLanguagePlugin, createVueServicePlugins } from '../..';
+import { createParsedCommandLine, createVueLanguagePlugin, getVueLanguageServicePlugins } from '../..';
import { createMockServiceEnv } from './mockEnv';
export const rootUri = URI.file(path.resolve(__dirname, '../../../../test-workspace/language-service')).toString();
@@ -25,7 +25,6 @@ function createTester(rootUri: string) {
getScriptFileNames: () => parsedCommandLine.fileNames,
getCompilationSettings: () => parsedCommandLine.options,
getScriptSnapshot,
- getLanguageId: resolveCommonLanguageId,
scriptIdToFileName: serviceEnv.typescript!.uriToFileName,
fileNameToScriptId: serviceEnv.typescript!.fileNameToUri,
};
@@ -38,7 +37,7 @@ function createTester(rootUri: string) {
parsedCommandLine.options,
parsedCommandLine.vueOptions,
);
- const vueServicePlugins = createVueServicePlugins(ts, () => parsedCommandLine.vueOptions);
+ const vueServicePlugins = getVueLanguageServicePlugins(ts, () => parsedCommandLine.vueOptions);
const defaultVSCodeSettings: any = {
'typescript.preferences.quoteStyle': 'single',
'javascript.preferences.quoteStyle': 'single',
diff --git a/packages/language-service/tests/utils/format.ts b/packages/language-service/tests/utils/format.ts
index be4d218d09..88780a5078 100644
--- a/packages/language-service/tests/utils/format.ts
+++ b/packages/language-service/tests/utils/format.ts
@@ -1,7 +1,7 @@
import * as kit from '@volar/kit';
import * as ts from 'typescript';
import { describe, expect, it } from 'vitest';
-import { createVueLanguagePlugin, createVueServicePlugins, resolveVueCompilerOptions } from '../..';
+import { createVueLanguagePlugin, getVueLanguageServicePlugins, resolveVueCompilerOptions } from '../..';
const resolvedVueOptions = resolveVueCompilerOptions({});
const vueLanguagePlugin = createVueLanguagePlugin(
@@ -13,7 +13,7 @@ const vueLanguagePlugin = createVueLanguagePlugin(
{},
resolvedVueOptions,
);
-const vueServicePLugins = createVueServicePlugins(ts, () => resolvedVueOptions);
+const vueServicePLugins = getVueLanguageServicePlugins(ts, () => resolvedVueOptions);
const formatter = kit.createFormatter([vueLanguagePlugin], vueServicePLugins);
export function defineFormatTest(options: {
diff --git a/packages/tsc/index.ts b/packages/tsc/index.ts
index 11753e2b5f..41ff9fc9af 100644
--- a/packages/tsc/index.ts
+++ b/packages/tsc/index.ts
@@ -45,12 +45,6 @@ export function run() {
throw extensionsChangedException;
}
},
- fileName => {
- if (runExtensions.some(ext => fileName.endsWith(ext))) {
- return 'vue';
- }
- return vue.resolveCommonLanguageId(fileName);
- },
);
try {
diff --git a/packages/tsc/package.json b/packages/tsc/package.json
index eef9b98771..f6b70dd4f1 100644
--- a/packages/tsc/package.json
+++ b/packages/tsc/package.json
@@ -1,6 +1,6 @@
{
"name": "vue-tsc",
- "version": "2.0.14",
+ "version": "2.0.16",
"license": "MIT",
"files": [
"bin",
@@ -16,8 +16,8 @@
"vue-tsc": "./bin/vue-tsc.js"
},
"dependencies": {
- "@volar/typescript": "2.2.0-alpha.10",
- "@vue/language-core": "2.0.14",
+ "@volar/typescript": "~2.2.0",
+ "@vue/language-core": "2.0.16",
"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 01f1312db9..67094f61fe 100644
--- a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap
+++ b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap
@@ -742,6 +742,25 @@ type __VLS_WithTemplateSlots = T & {
"
`;
+exports[`vue-tsc-dts > Input: template-slots/component-destructuring.vue, Output: template-slots/component-destructuring.vue.d.ts 1`] = `
+"declare const _default: __VLS_WithTemplateSlots>, {}, {}>, Readonly<{
+ bottom: (props: {
+ num: number;
+ }) => any[];
+}> & {
+ bottom: (props: {
+ num: number;
+ }) => any[];
+}>;
+export default _default;
+type __VLS_WithTemplateSlots = T & {
+ new (): {
+ $slots: S;
+ };
+};
+"
+`;
+
exports[`vue-tsc-dts > Input: template-slots/component-no-script.vue, Output: template-slots/component-no-script.vue.d.ts 1`] = `
"declare const _default: __VLS_WithTemplateSlots>, {}, {}>, {
"no-bind"?(_: {}): any;
diff --git a/packages/tsc/tests/dts.spec.ts b/packages/tsc/tests/dts.spec.ts
index 9aeb0d80e8..54daae201d 100644
--- a/packages/tsc/tests/dts.spec.ts
+++ b/packages/tsc/tests/dts.spec.ts
@@ -41,17 +41,6 @@ describe('vue-tsc-dts', () => {
vueOptions,
);
return [vueLanguagePlugin];
- }, fileName => {
- if (vueOptions.extensions.some(ext => fileName.endsWith(ext))) {
- return 'vue';
- }
- if (vueOptions.vitePressExtensions.some(ext => fileName.endsWith(ext))) {
- return 'markdown';
- }
- if (vueOptions.petiteVueExtensions.some(ext => fileName.endsWith(ext))) {
- return 'html';
- }
- return vue.resolveCommonLanguageId(fileName);
});
const program = createProgram(options);
diff --git a/packages/typescript-plugin/index.ts b/packages/typescript-plugin/index.ts
index 064676f27a..1bea049499 100644
--- a/packages/typescript-plugin/index.ts
+++ b/packages/typescript-plugin/index.ts
@@ -38,14 +38,21 @@ function createLanguageServicePlugin(): ts.server.PluginModuleFactory {
);
const extensions = languagePlugin.typescript?.extraFileExtensions.map(ext => '.' + ext.extension) ?? [];
const getScriptSnapshot = info.languageServiceHost.getScriptSnapshot.bind(info.languageServiceHost);
+ const getScriptVersion = info.languageServiceHost.getScriptVersion.bind(info.languageServiceHost);
+ const syncedScriptVersions = new vue.FileMap(ts.sys.useCaseSensitiveFileNames);
const language = createLanguage(
[languagePlugin],
ts.sys.useCaseSensitiveFileNames,
fileName => {
+ const version = getScriptVersion(fileName);
+ if (syncedScriptVersions.get(fileName) === version) {
+ return;
+ }
+ syncedScriptVersions.set(fileName, version);
+
const snapshot = getScriptSnapshot(fileName);
if (snapshot) {
- // @ts-expect-error
- language.scripts.set(fileName, undefined, snapshot);
+ language.scripts.set(fileName, snapshot);
}
else {
language.scripts.delete(fileName);
@@ -60,6 +67,14 @@ function createLanguageServicePlugin(): ts.server.PluginModuleFactory {
decorateLanguageServiceForVue(language, info.languageService, vueOptions, ts, true);
decorateLanguageServiceHost(ts, language, info.languageServiceHost);
startNamedPipeServer(ts, info.project.projectKind, info.project.getCurrentDirectory());
+
+ // #3963
+ const timer = setInterval(() => {
+ if (info.project['program']) {
+ clearInterval(timer);
+ (info.project['program'] as any).__vue__ = { language };
+ }
+ }, 50);
}
return info.languageService;
diff --git a/packages/typescript-plugin/package.json b/packages/typescript-plugin/package.json
index 03f232777e..802379e039 100644
--- a/packages/typescript-plugin/package.json
+++ b/packages/typescript-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/typescript-plugin",
- "version": "2.0.14",
+ "version": "2.0.16",
"license": "MIT",
"files": [
"**/*.js",
@@ -12,8 +12,8 @@
"directory": "packages/typescript-plugin"
},
"dependencies": {
- "@volar/typescript": "2.2.0-alpha.10",
- "@vue/language-core": "2.0.14",
+ "@volar/typescript": "~2.2.0",
+ "@vue/language-core": "2.0.16",
"@vue/shared": "^3.4.0"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 92f1350b6d..6d100e0c8d 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-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
'@volar/tsl-config':
specifier: latest
version: 0.0.0-20240315.2(tsl@0.0.10(typescript@5.4.5))
@@ -31,7 +31,7 @@ importers:
version: 5.2.10(@types/node@20.12.7)
vitest:
specifier: latest
- version: 1.5.0(@types/node@20.12.7)
+ version: 1.5.3(@types/node@20.12.7)
extensions/vscode:
devDependencies:
@@ -42,16 +42,16 @@ importers:
specifier: ^1.82.0
version: 1.88.0
'@volar/vscode':
- specifier: 2.2.0-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
'@vue/language-core':
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../../packages/language-core
'@vue/language-server':
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../../packages/language-server
'@vue/typescript-plugin':
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../../packages/typescript-plugin
esbuild:
specifier: latest
@@ -72,10 +72,10 @@ importers:
packages/component-meta:
dependencies:
'@volar/typescript':
- specifier: 2.2.0-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
'@vue/language-core':
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../language-core
path-browserify:
specifier: ^1.0.1
@@ -84,7 +84,7 @@ importers:
specifier: '*'
version: 5.4.5
vue-component-type-helpers:
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../component-type-helpers
devDependencies:
'@types/node':
@@ -99,14 +99,14 @@ importers:
packages/language-core:
dependencies:
'@volar/language-core':
- specifier: 2.2.0-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
'@vue/compiler-dom':
specifier: ^3.4.0
- version: 3.4.23
+ version: 3.4.26
'@vue/shared':
specifier: ^3.4.0
- version: 3.4.23
+ version: 3.4.26
computeds:
specifier: ^0.0.1
version: 0.0.1
@@ -134,40 +134,40 @@ importers:
version: 1.0.2
'@vue/compiler-sfc':
specifier: ^3.4.0
- version: 3.4.23
+ version: 3.4.26
packages/language-plugin-pug:
dependencies:
'@volar/source-map':
- specifier: 2.2.0-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
volar-service-pug:
- specifier: 0.0.40
- version: 0.0.40
+ specifier: 0.0.42
+ version: 0.0.42
devDependencies:
'@types/node':
specifier: latest
version: 20.12.7
'@vue/language-core':
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../language-core
packages/language-server:
dependencies:
'@volar/language-core':
- specifier: 2.2.0-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
'@volar/language-server':
- specifier: 2.2.0-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
'@vue/language-core':
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../language-core
'@vue/language-service':
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../language-service
'@vue/typescript-plugin':
- specifier: 2.0.14
+ specifier: 2.0.16
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-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
'@volar/language-service':
- specifier: 2.2.0-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
'@volar/typescript':
- specifier: 2.2.0-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
'@vue/compiler-dom':
specifier: ^3.4.0
- version: 3.4.23
+ version: 3.4.26
'@vue/language-core':
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../language-core
'@vue/shared':
specifier: ^3.4.0
- version: 3.4.23
+ version: 3.4.26
'@vue/typescript-plugin':
- specifier: 2.0.14
+ specifier: 2.0.16
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.40
- version: 0.0.40(@volar/language-service@2.2.0-alpha.10)
+ specifier: 0.0.42
+ version: 0.0.42(@volar/language-service@2.2.0)
volar-service-emmet:
- specifier: 0.0.40
- version: 0.0.40(@volar/language-service@2.2.0-alpha.10)
+ specifier: 0.0.42
+ version: 0.0.42(@volar/language-service@2.2.0)
volar-service-html:
- specifier: 0.0.40
- version: 0.0.40(@volar/language-service@2.2.0-alpha.10)
+ specifier: 0.0.42
+ version: 0.0.42(@volar/language-service@2.2.0)
volar-service-json:
- specifier: 0.0.40
- version: 0.0.40(@volar/language-service@2.2.0-alpha.10)
+ specifier: 0.0.42
+ version: 0.0.42(@volar/language-service@2.2.0)
volar-service-pug:
- specifier: 0.0.40
- version: 0.0.40
+ specifier: 0.0.42
+ version: 0.0.42
volar-service-pug-beautify:
- specifier: 0.0.40
- version: 0.0.40(@volar/language-service@2.2.0-alpha.10)
+ specifier: 0.0.42
+ version: 0.0.42(@volar/language-service@2.2.0)
volar-service-typescript:
- specifier: 0.0.40
- version: 0.0.40(@volar/language-service@2.2.0-alpha.10)
+ specifier: 0.0.42
+ version: 0.0.42(@volar/language-service@2.2.0)
volar-service-typescript-twoslash-queries:
- specifier: 0.0.40
- version: 0.0.40(@volar/language-service@2.2.0-alpha.10)
+ specifier: 0.0.42
+ version: 0.0.42(@volar/language-service@2.2.0)
vscode-html-languageservice:
specifier: npm:@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462
version: '@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462'
@@ -243,8 +243,8 @@ importers:
specifier: latest
version: 1.0.2
'@volar/kit':
- specifier: 2.2.0-alpha.10
- version: 2.2.0-alpha.10(typescript@5.4.5)
+ specifier: ~2.2.0
+ version: 2.2.0(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-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
'@vue/language-core':
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../language-core
semver:
specifier: ^7.5.4
@@ -271,14 +271,14 @@ importers:
packages/typescript-plugin:
dependencies:
'@volar/typescript':
- specifier: 2.2.0-alpha.10
- version: 2.2.0-alpha.10
+ specifier: ~2.2.0
+ version: 2.2.0
'@vue/language-core':
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../language-core
'@vue/shared':
specifier: ^3.4.0
- version: 3.4.23
+ version: 3.4.26
devDependencies:
'@types/node':
specifier: latest
@@ -288,9 +288,9 @@ importers:
devDependencies:
vue:
specifier: ^3.4.0
- version: 3.4.23(typescript@5.4.5)
+ version: 3.4.26(typescript@5.4.5)
vue-component-type-helpers:
- specifier: 2.0.14
+ specifier: 2.0.16
version: link:../packages/component-type-helpers
vue2:
specifier: npm:vue@2.7.16
@@ -306,21 +306,21 @@ packages:
resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
engines: {node: '>=6.9.0'}
- '@babel/helper-validator-identifier@7.22.20':
- resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+ '@babel/helper-validator-identifier@7.24.5':
+ resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
engines: {node: '>=6.9.0'}
- '@babel/highlight@7.24.2':
- resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==}
+ '@babel/highlight@7.24.5':
+ resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.24.4':
- resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==}
+ '@babel/parser@7.24.5':
+ resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==}
engines: {node: '>=6.0.0'}
hasBin: true
- '@babel/types@7.24.0':
- resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==}
+ '@babel/types@7.24.5':
+ resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==}
engines: {node: '>=6.9.0'}
'@clack/core@0.3.4':
@@ -710,8 +710,8 @@ packages:
resolution: {integrity: sha512-4x/182sKXmQkf0EtXxT26GEsaOATpD7WVtza5hrYivWZeo6QefC6xq9KAXrnjtFKBZ4rZwR7aX/zClYYXgtwLw==}
engines: {node: ^16.14.0 || >=18.0.0}
- '@npmcli/installed-package-contents@2.0.2':
- resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==}
+ '@npmcli/installed-package-contents@2.1.0':
+ resolution: {integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
hasBin: true
@@ -719,8 +719,8 @@ packages:
resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
- '@npmcli/package-json@5.0.3':
- resolution: {integrity: sha512-cgsjCvld2wMqkUqvY+SZI+1ZJ7umGBYc9IAKfqJRKJCcs7hCQYxScUgdsyrRINk3VmdCYf9TXiLBHQ6ECTxhtg==}
+ '@npmcli/package-json@5.1.0':
+ resolution: {integrity: sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ==}
engines: {node: ^16.14.0 || >=18.0.0}
'@npmcli/promise-spawn@7.0.1':
@@ -754,8 +754,8 @@ packages:
'@octokit/openapi-types@20.0.0':
resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==}
- '@octokit/openapi-types@22.1.0':
- resolution: {integrity: sha512-pGUdSP+eEPfZiQHNkZI0U01HLipxncisdJQB4G//OAmfeO8sqTQ9KRa0KF03TUPCziNsoXUrTg4B2Q1EX++T0Q==}
+ '@octokit/openapi-types@22.2.0':
+ resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
'@octokit/plugin-enterprise-rest@6.0.1':
resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==}
@@ -793,90 +793,90 @@ packages:
'@octokit/types@12.6.0':
resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==}
- '@octokit/types@13.4.1':
- resolution: {integrity: sha512-Y73oOAzRBAUzR/iRAbGULzpNkX8vaxKCqEtg6K74Ff3w9f5apFnWtE/2nade7dMWWW3bS5Kkd6DJS4HF04xreg==}
+ '@octokit/types@13.5.0':
+ resolution: {integrity: sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==}
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
- '@rollup/rollup-android-arm-eabi@4.16.1':
- resolution: {integrity: sha512-92/y0TqNLRYOTXpm6Z7mnpvKAG9P7qmK7yJeRJSdzElNCUnsgbpAsGqerUboYRIQKzgfq4pWu9xVkgpWLfmNsw==}
+ '@rollup/rollup-android-arm-eabi@4.17.1':
+ resolution: {integrity: sha512-P6Wg856Ou/DLpR+O0ZLneNmrv7QpqBg+hK4wE05ijbC/t349BRfMfx+UFj5Ha3fCFopIa6iSZlpdaB4agkWp2Q==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.16.1':
- resolution: {integrity: sha512-ttWB6ZCfRLuDIUiE0yiu5gcqOsYjA5F7kEV1ggHMj20FwLZ8A1FMeahZJFl/pnOmcnD2QL0z4AcDuo27utGU8A==}
+ '@rollup/rollup-android-arm64@4.17.1':
+ resolution: {integrity: sha512-piwZDjuW2WiHr05djVdUkrG5JbjnGbtx8BXQchYCMfib/nhjzWoiScelZ+s5IJI7lecrwSxHCzW026MWBL+oJQ==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.16.1':
- resolution: {integrity: sha512-QLDvPLetbqjHojTGFw9+nuSP3YY/iz2k1cep6crYlr97sS+ZJ0W43b8Z0zC00+lnFZj6JSNxiA4DjboNQMuh1A==}
+ '@rollup/rollup-darwin-arm64@4.17.1':
+ resolution: {integrity: sha512-LsZXXIsN5Q460cKDT4Y+bzoPDhBmO5DTr7wP80d+2EnYlxSgkwdPfE3hbE+Fk8dtya+8092N9srjBTJ0di8RIA==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.16.1':
- resolution: {integrity: sha512-TAUK/D8khRrRIa1KwRzo8JNKk3tcqaeXWdtsiLgA8zmACWwlWLjPCJ4DULGHQrMkeBjp1Cd3Yuwx04lZgFx5Vg==}
+ '@rollup/rollup-darwin-x64@4.17.1':
+ resolution: {integrity: sha512-S7TYNQpWXB9APkxu/SLmYHezWwCoZRA9QLgrDeml+SR2A1LLPD2DBUdUlvmCF7FUpRMKvbeeWky+iizQj65Etw==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-linux-arm-gnueabihf@4.16.1':
- resolution: {integrity: sha512-KO+WGZjrh6zyFTD1alIFkfdtxf8B4BC+hqd3kBZHscPLvE5FR/6QKsyuCT0JlERxxYBSUKNUQ/UHyX5uwO1x2A==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.17.1':
+ resolution: {integrity: sha512-Lq2JR5a5jsA5um2ZoLiXXEaOagnVyCpCW7xvlcqHC7y46tLwTEgUSTM3a2TfmmTMmdqv+jknUioWXlmxYxE9Yw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.16.1':
- resolution: {integrity: sha512-NqxbllzIB1WoAo4ThUXVtd21iiM5IHMTTXmXySKBLVcZvkU0HIZmatlP7hLzb5yQubcmdIeWmncd2NdsjocEiw==}
+ '@rollup/rollup-linux-arm-musleabihf@4.17.1':
+ resolution: {integrity: sha512-9BfzwyPNV0IizQoR+5HTNBGkh1KXE8BqU0DBkqMngmyFW7BfuIZyMjQ0s6igJEiPSBvT3ZcnIFohZ19OqjhDPg==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.16.1':
- resolution: {integrity: sha512-snma5NvV8y7IECQ5rq0sr0f3UUu+92NVmG/913JXJMcXo84h9ak9TA5UI9Cl2XRM9j3m37QwDBtEYnJzRkSmxA==}
+ '@rollup/rollup-linux-arm64-gnu@4.17.1':
+ resolution: {integrity: sha512-e2uWaoxo/rtzA52OifrTSXTvJhAXb0XeRkz4CdHBK2KtxrFmuU/uNd544Ogkpu938BzEfvmWs8NZ8Axhw33FDw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.16.1':
- resolution: {integrity: sha512-KOvqGprlD84ueivhCi2flvcUwDRD20mAsE3vxQNVEI2Di9tnPGAfEu6UcrSPZbM+jG2w1oSr43hrPo0RNg6GGg==}
+ '@rollup/rollup-linux-arm64-musl@4.17.1':
+ resolution: {integrity: sha512-ekggix/Bc/d/60H1Mi4YeYb/7dbal1kEDZ6sIFVAE8pUSx7PiWeEh+NWbL7bGu0X68BBIkgF3ibRJe1oFTksQQ==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.16.1':
- resolution: {integrity: sha512-/gsNwtiGLqYwN4vP+EIdUC6Q6LTlpupWqokqIndvZcjn9ig/5P01WyaYCU2wvfL/2Z82jp5kX8c1mDBOvCP3zg==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.17.1':
+ resolution: {integrity: sha512-UGV0dUo/xCv4pkr/C8KY7XLFwBNnvladt8q+VmdKrw/3RUd3rD0TptwjisvE2TTnnlENtuY4/PZuoOYRiGp8Gw==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.16.1':
- resolution: {integrity: sha512-uU8zuGkQfGqfD9w6VRJZI4IuG4JIfNxxJgEmLMAmPVHREKGsxFVfgHy5c6CexQF2vOfgjB33OsET3Vdn2lln9A==}
+ '@rollup/rollup-linux-riscv64-gnu@4.17.1':
+ resolution: {integrity: sha512-gEYmYYHaehdvX46mwXrU49vD6Euf1Bxhq9pPb82cbUU9UT2NV+RSckQ5tKWOnNXZixKsy8/cPGtiUWqzPuAcXQ==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.16.1':
- resolution: {integrity: sha512-lsjLtDgtcGFEuBP6yrXwkRN5/wKlvUZtfbKZZu0yaoNpiBL4epgnO21osAALIspVRnl4qZgyLFd8xjCYYWgwfw==}
+ '@rollup/rollup-linux-s390x-gnu@4.17.1':
+ resolution: {integrity: sha512-xeae5pMAxHFp6yX5vajInG2toST5lsCTrckSRUFwNgzYqnUjNBcQyqk1bXUxX5yhjWFl2Mnz3F8vQjl+2FRIcw==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.16.1':
- resolution: {integrity: sha512-N2ZizKhUryqqrMfdCnjhJhZRgv61C6gK+hwVtCIKC8ts8J+go+vqENnGexwg21nHIOvLN5mBM8a7DI2vlyIOPg==}
+ '@rollup/rollup-linux-x64-gnu@4.17.1':
+ resolution: {integrity: sha512-AsdnINQoDWfKpBzCPqQWxSPdAWzSgnYbrJYtn6W0H2E9It5bZss99PiLA8CgmDRfvKygt20UpZ3xkhFlIfX9zQ==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.16.1':
- resolution: {integrity: sha512-5ICeMxqg66FrOA2AbnBQ2TJVxfvZsKLxmof0ibvPLaYtbsJqnTUtJOofgWb46Gjd4uZcA4rdsp4JCxegzQPqCg==}
+ '@rollup/rollup-linux-x64-musl@4.17.1':
+ resolution: {integrity: sha512-KoB4fyKXTR+wYENkIG3fFF+5G6N4GFvzYx8Jax8BR4vmddtuqSb5oQmYu2Uu067vT/Fod7gxeQYKupm8gAcMSQ==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.16.1':
- resolution: {integrity: sha512-1vIP6Ce02L+qWD7uZYRiFiuAJo3m9kARatWmFSnss0gZnVj2Id7OPUU9gm49JPGasgcR3xMqiH3fqBJ8t00yVg==}
+ '@rollup/rollup-win32-arm64-msvc@4.17.1':
+ resolution: {integrity: sha512-J0d3NVNf7wBL9t4blCNat+d0PYqAx8wOoY+/9Q5cujnafbX7BmtYk3XvzkqLmFECaWvXGLuHmKj/wrILUinmQg==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.16.1':
- resolution: {integrity: sha512-Y3M92DcVsT6LoP+wrKpoUWPaazaP1fzbNkp0a0ZSj5Y//+pQVfVe/tQdsYQQy7dwXR30ZfALUIc9PCh9Izir6w==}
+ '@rollup/rollup-win32-ia32-msvc@4.17.1':
+ resolution: {integrity: sha512-xjgkWUwlq7IbgJSIxvl516FJ2iuC/7ttjsAxSPpC9kkI5iQQFHKyEN5BjbhvJ/IXIZ3yIBcW5QDlWAyrA+TFag==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.16.1':
- resolution: {integrity: sha512-x0fvpHMuF7fK5r8oZxSi8VYXkrVmRgubXpO/wcf15Lk3xZ4Jvvh5oG+u7Su1776A7XzVKZhD2eRc4t7H50gL3w==}
+ '@rollup/rollup-win32-x64-msvc@4.17.1':
+ resolution: {integrity: sha512-0QbCkfk6cnnVKWqqlC0cUrrUMDMfu5ffvYMTUHf+qMN2uAb3MKP31LPcwiMXBNsvoFGs/kYdFOsuLmvppCopXA==}
cpu: [x64]
os: [win32]
@@ -955,51 +955,51 @@ packages:
'@types/vscode@1.88.0':
resolution: {integrity: sha512-rWY+Bs6j/f1lvr8jqZTyp5arRMfovdxolcqGi+//+cPDOh8SBvzXH90e7BiSXct5HJ9HGW6jATchbRTpTJpEkw==}
- '@vitest/expect@1.5.0':
- resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==}
+ '@vitest/expect@1.5.3':
+ resolution: {integrity: sha512-y+waPz31pOFr3rD7vWTbwiLe5+MgsMm40jTZbQE8p8/qXyBX3CQsIXRx9XK12IbY7q/t5a5aM/ckt33b4PxK2g==}
- '@vitest/runner@1.5.0':
- resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==}
+ '@vitest/runner@1.5.3':
+ resolution: {integrity: sha512-7PlfuReN8692IKQIdCxwir1AOaP5THfNkp0Uc4BKr2na+9lALNit7ub9l3/R7MP8aV61+mHKRGiqEKRIwu6iiQ==}
- '@vitest/snapshot@1.5.0':
- resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==}
+ '@vitest/snapshot@1.5.3':
+ resolution: {integrity: sha512-K3mvIsjyKYBhNIDujMD2gfQEzddLe51nNOAf45yKRt/QFJcUIeTQd2trRvv6M6oCBHNVnZwFWbQ4yj96ibiDsA==}
- '@vitest/spy@1.5.0':
- resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==}
+ '@vitest/spy@1.5.3':
+ resolution: {integrity: sha512-Llj7Jgs6lbnL55WoshJUUacdJfjU2honvGcAJBxhra5TPEzTJH8ZuhI3p/JwqqfnTr4PmP7nDmOXP53MS7GJlg==}
- '@vitest/utils@1.5.0':
- resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==}
+ '@vitest/utils@1.5.3':
+ resolution: {integrity: sha512-rE9DTN1BRhzkzqNQO+kw8ZgfeEBCLXiHJwetk668shmNBpSagQxneT5eSqEBLP+cqSiAeecvQmbpFfdMyLcIQA==}
- '@volar/kit@2.2.0-alpha.10':
- resolution: {integrity: sha512-BzH8+ferzp05gyBvnZKr+ZlG2fCGEU5m3ZFx4JJ0ZqtXU6BM5V/sQR/VheWHYAjmSLdW3GaM8azfgP//EpmKXA==}
+ '@volar/kit@2.2.0':
+ resolution: {integrity: sha512-ZI6caoD7f7WSJC9lLOFGgp+idR8gzlK9+GzDV2urWAj4gTx0MzyB21uKZlo3hfZp72LpUmOvQBJ3n303gDE8FQ==}
peerDependencies:
typescript: '*'
- '@volar/language-core@2.2.0-alpha.10':
- resolution: {integrity: sha512-njVJLtpu0zMvDaEk7K5q4BRpOgbyEUljU++un9TfJoJNhxG0z/hWwpwgTRImO42EKvwIxF3XUzeMk+qatAFy7Q==}
+ '@volar/language-core@2.2.0':
+ resolution: {integrity: sha512-a8WG9+4OdeNDW4ywABZIM6S6UN7em8uIlM/BZ2pWQUYrVmX+m8sj/X+QadvO+Li/t/LjAqbWJQtVgxdpEWLALQ==}
- '@volar/language-server@2.2.0-alpha.10':
- resolution: {integrity: sha512-PpmgXRvgTN0R5539X5XjBY3zYt/NCoz/LPLw2dFcL8O1lBssYufVPAtSov8mogJLx0PejQFIWLBbdDpCKJT6qw==}
+ '@volar/language-server@2.2.0':
+ resolution: {integrity: sha512-JqUxv+YoCLWpGJLIsDp45WmEx8kNAWh+RsJ1sswjJZrezVFKcyjOfLPnKy/D0VV0myME5i3CUQTW6K/nnshBzg==}
- '@volar/language-service@2.2.0-alpha.10':
- resolution: {integrity: sha512-gnAEPGGfjl/DFFJGzAKV6kZ/GrG3qrVhn95eLtC1rB832ehQNwcq20rAk2F9I05yhves0VjstfDL2/2RrTNp5g==}
+ '@volar/language-service@2.2.0':
+ resolution: {integrity: sha512-hLtIFpsOcfHJ7kllUDRU2Ap1IBGEnADyE7Ea3kPwvUHM43Qn+7lvpKXxX/UL2zVcQQrvHr0348Tfi9BF1aKD5A==}
- '@volar/snapshot-document@2.2.0-alpha.10':
- resolution: {integrity: sha512-d5rK7cfRdDTJ6JA/+Oc99rV0yRCSE1j9mFn4SqDduzGwKVQFR4gmjLPNKeT8iRI17PjmUZCUMdH0PM1u89G9fA==}
+ '@volar/snapshot-document@2.2.0':
+ resolution: {integrity: sha512-CUOxMlPy3UBqzjmat0eVaCyYJqbhOEDYBZbsm1gbuQLW6kUxQs3+8eD2x6EyfaPHiZMxNuLBjSRvXfLANcYbHQ==}
- '@volar/source-map@2.2.0-alpha.10':
- resolution: {integrity: sha512-nrdWApVkP5cksAnDEyy1JD9rKdwOJsEq1B+seWO4vNXmZNcxQQCx4DULLBvKt7AzRUAQiAuw5aQkb9RBaSqdVA==}
+ '@volar/source-map@2.2.0':
+ resolution: {integrity: sha512-HQlPRlHOVqCCHK8wI76ZldHkEwKsjp7E6idUc36Ekni+KJDNrqgSqPvyHQixybXPHNU7CI9Uxd9/IkxO7LuNBw==}
'@volar/tsl-config@0.0.0-20240315.2':
resolution: {integrity: sha512-bv57xhmegLkfjW0/FZL/sberfmUch7yLAkXlRXj5KxHPYCjIU4T1ciPuLWrtVzCa+o0q7ykQ6aR+Q/z7MSMf6w==}
peerDependencies:
tsl: '*'
- '@volar/typescript@2.2.0-alpha.10':
- resolution: {integrity: sha512-GCa0vTVVdA9ULUsu2Rx7jwsIuyZQPvPVT9o3NrANTbYv+523Ao1gv3glC5vzNSDPM6bUl37r94HbCj7KINQr+g==}
+ '@volar/typescript@2.2.0':
+ resolution: {integrity: sha512-wC6l4zLiiCLxF+FGaHCbWlQYf4vMsnRxYhcI6WgvaNppOD6r1g+Ef1RKRJUApALWU46Yy/JDU/TbdV6w/X6Liw==}
- '@volar/vscode@2.2.0-alpha.10':
- resolution: {integrity: sha512-ws4GrTJira5QV3KTgF36cs+FLTrf1JbIWW2nHuO8ZeZ1av7ghG8aSYsJ+FpuRtt7sAxj654P2PrjDqUMFvFZsQ==}
+ '@volar/vscode@2.2.0':
+ resolution: {integrity: sha512-WQEnvv7tDfYN7NrHRPvtnu3fZ+Uc4IVYYt/i728gaql/0StkITMdh7K1i+43MsDlY/gSwh82XrDstaxAloTJ6Q==}
'@vscode/emmet-helper@2.9.3':
resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==}
@@ -1010,37 +1010,37 @@ packages:
'@vscode/l10n@0.0.18':
resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==}
- '@vue/compiler-core@3.4.23':
- resolution: {integrity: sha512-HAFmuVEwNqNdmk+w4VCQ2pkLk1Vw4XYiiyxEp3z/xvl14aLTUBw2OfVH3vBcx+FtGsynQLkkhK410Nah1N2yyQ==}
+ '@vue/compiler-core@3.4.26':
+ resolution: {integrity: sha512-N9Vil6Hvw7NaiyFUFBPXrAyETIGlQ8KcFMkyk6hW1Cl6NvoqvP+Y8p1Eqvx+UdqsnrnI9+HMUEJegzia3mhXmQ==}
- '@vue/compiler-dom@3.4.23':
- resolution: {integrity: sha512-t0b9WSTnCRrzsBGrDd1LNR5HGzYTr7LX3z6nNBG+KGvZLqrT0mY6NsMzOqlVMBKKXKVuusbbB5aOOFgTY+senw==}
+ '@vue/compiler-dom@3.4.26':
+ resolution: {integrity: sha512-4CWbR5vR9fMg23YqFOhr6t6WB1Fjt62d6xdFPyj8pxrYub7d+OgZaObMsoxaF9yBUHPMiPFK303v61PwAuGvZA==}
'@vue/compiler-sfc@2.7.16':
resolution: {integrity: sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==}
- '@vue/compiler-sfc@3.4.23':
- resolution: {integrity: sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw==}
+ '@vue/compiler-sfc@3.4.26':
+ resolution: {integrity: sha512-It1dp+FAOCgluYSVYlDn5DtZBxk1NCiJJfu2mlQqa/b+k8GL6NG/3/zRbJnHdhV2VhxFghaDq5L4K+1dakW6cw==}
- '@vue/compiler-ssr@3.4.23':
- resolution: {integrity: sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg==}
+ '@vue/compiler-ssr@3.4.26':
+ resolution: {integrity: sha512-FNwLfk7LlEPRY/g+nw2VqiDKcnDTVdCfBREekF8X74cPLiWHUX6oldktf/Vx28yh4STNy7t+/yuLoMBBF7YDiQ==}
- '@vue/reactivity@3.4.23':
- resolution: {integrity: sha512-GlXR9PL+23fQ3IqnbSQ8OQKLodjqCyoCrmdLKZk3BP7jN6prWheAfU7a3mrltewTkoBm+N7qMEb372VHIkQRMQ==}
+ '@vue/reactivity@3.4.26':
+ resolution: {integrity: sha512-E/ynEAu/pw0yotJeLdvZEsp5Olmxt+9/WqzvKff0gE67tw73gmbx6tRkiagE/eH0UCubzSlGRebCbidB1CpqZQ==}
- '@vue/runtime-core@3.4.23':
- resolution: {integrity: sha512-FeQ9MZEXoFzFkFiw9MQQ/FWs3srvrP+SjDKSeRIiQHIhtkzoj0X4rWQlRNHbGuSwLra6pMyjAttwixNMjc/xLw==}
+ '@vue/runtime-core@3.4.26':
+ resolution: {integrity: sha512-AFJDLpZvhT4ujUgZSIL9pdNcO23qVFh7zWCsNdGQBw8ecLNxOOnPcK9wTTIYCmBJnuPHpukOwo62a2PPivihqw==}
- '@vue/runtime-dom@3.4.23':
- resolution: {integrity: sha512-RXJFwwykZWBkMiTPSLEWU3kgVLNAfActBfWFlZd0y79FTUxexogd0PLG4HH2LfOktjRxV47Nulygh0JFXe5f9A==}
+ '@vue/runtime-dom@3.4.26':
+ resolution: {integrity: sha512-UftYA2hUXR2UOZD/Fc3IndZuCOOJgFxJsWOxDkhfVcwLbsfh2CdXE2tG4jWxBZuDAs9J9PzRTUFt1PgydEtItw==}
- '@vue/server-renderer@3.4.23':
- resolution: {integrity: sha512-LDwGHtnIzvKFNS8dPJ1SSU5Gvm36p2ck8wCZc52fc3k/IfjKcwCyrWEf0Yag/2wTFUBXrqizfhK9c/mC367dXQ==}
+ '@vue/server-renderer@3.4.26':
+ resolution: {integrity: sha512-xoGAqSjYDPGAeRWxeoYwqJFD/gw7mpgzOvSxEmjWaFO2rE6qpbD1PC172YRpvKhrihkyHJkNDADFXTfCyVGhKw==}
peerDependencies:
- vue: 3.4.23
+ vue: 3.4.26
- '@vue/shared@3.4.23':
- resolution: {integrity: sha512-wBQ0gvf+SMwsCQOyusNw/GoXPV47WGd1xB5A1Pgzy0sQ3Bi5r5xm3n+92y3gCnB3MWqnRDdvfkRGxhKtbBRNgg==}
+ '@vue/shared@3.4.26':
+ resolution: {integrity: sha512-Fg4zwR0GNnjzodMt3KRy2AWGMKQXByl56+4HjN87soxLNU9P5xcJkstAlIeEF3cU6UYOzmJl1tV0dVPGIljCnQ==}
JSONStream@1.3.5:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
@@ -1821,8 +1821,8 @@ packages:
ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
- inquirer@9.2.19:
- resolution: {integrity: sha512-WpxOT71HGsFya6/mj5PUue0sWwbpbiPfAR+332zLj/siB0QA1PZM8v3GepegFV1Op189UxHUCF6y8AySdtOMVA==}
+ inquirer@9.2.20:
+ resolution: {integrity: sha512-SFwJJPS+Ms75NV+wzFBHjirG4z3tzvis31h+9NyH1tqjIu2c7vCavlXILZ73q/nPYy8/aw4W+DNzLH5MjfYXiA==}
engines: {node: '>=18'}
ip-address@9.0.5:
@@ -1983,12 +1983,12 @@ packages:
resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
engines: {node: '>=6'}
- libnpmaccess@8.0.3:
- resolution: {integrity: sha512-0dU2ZZ8eWrI3JcPIEA5wnQ5s+OGeNtjrg0MHz1vcs06hRLDhZeXBWthuXG47jV1GO5ogClQi7RAFNAWVEjViWw==}
+ libnpmaccess@8.0.4:
+ resolution: {integrity: sha512-Q5REi1IhNAWk2vMc1x0bgltJkjC6t+bxjDpvQqfdFDzc9rl/ZwW5zgyVvt0ZrGCBqYbDnUeKopwFwxxIgAKYww==}
engines: {node: ^16.14.0 || >=18.0.0}
- libnpmpublish@9.0.5:
- resolution: {integrity: sha512-MSKHZN2NXmp8GafDMy2eH/FK6c0BjpCbuJ4vJU4xPqCguy0w805VoRnsCwxyrvzCC13MB2tU6VOAX08GioINBA==}
+ libnpmpublish@9.0.6:
+ resolution: {integrity: sha512-FoNMQGgGzFBKIrztFTlup26zAh3bUff8ZfOYkUrgNK+f08jG9TbCqDPgXOezKy0X0ZL42BldChBgf4HtmK7hsw==}
engines: {node: ^16.14.0 || >=18.0.0}
lines-and-columns@1.2.4:
@@ -2027,8 +2027,8 @@ packages:
loupe@2.3.7:
resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
- lru-cache@10.2.0:
- resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
+ lru-cache@10.2.2:
+ resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
engines: {node: 14 || >=16.14}
lru-cache@6.0.0:
@@ -2181,8 +2181,8 @@ packages:
resolution: {integrity: sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- node-abi@3.60.0:
- resolution: {integrity: sha512-zcGgwoXbzw9NczqbGzAWL/ToDYAxv1V8gL1D67ClbdkIfeeDBbY0GelZtC25ayLvVjr2q2cloHeQV1R0QAWqRQ==}
+ node-abi@3.62.0:
+ resolution: {integrity: sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g==}
engines: {node: '>=10'}
node-addon-api@4.3.0:
@@ -2509,8 +2509,8 @@ packages:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
- react-is@18.2.0:
- resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
+ react-is@18.3.1:
+ resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
read-package-json-fast@3.0.2:
resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==}
@@ -2575,8 +2575,8 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- rollup@4.16.1:
- resolution: {integrity: sha512-5CaD3MPDlPKfhqzRvWXK96G6ELJfPZNb3LHiZxTHgDdC6jvwfGz2E8nY+9g1ONk4ttHsK1WaFP19Js4PSr1E3g==}
+ rollup@4.17.1:
+ resolution: {integrity: sha512-0gG94inrUtg25sB2V/pApwiv1lUb0bQ25FPNuzO89Baa+B+c0ccaaBKM5zkZV/12pUUdH+lWCSm9wmHqyocuVQ==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -2850,8 +2850,8 @@ packages:
resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
engines: {node: '>=14.16'}
- type-fest@4.15.0:
- resolution: {integrity: sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==}
+ type-fest@4.18.0:
+ resolution: {integrity: sha512-+dbmiyliDY/2TTcjCS7NpI9yV2iEFlUDk5TKnsbkN7ZoRu5s7bT+zvYtNFhFXC2oLwURGT2frACAZvbbyNBI+w==}
engines: {node: '>=16'}
typed-rest-client@1.8.11:
@@ -2924,8 +2924,8 @@ packages:
resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
- vite-node@1.5.0:
- resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==}
+ vite-node@1.5.3:
+ resolution: {integrity: sha512-axFo00qiCpU/JLd8N1gu9iEYL3xTbMbMrbe5nDp9GL0nb6gurIdZLkkFogZXWnE8Oyy5kfSLwNVIcVsnhE7lgQ==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
@@ -2957,15 +2957,15 @@ packages:
terser:
optional: true
- vitest@1.5.0:
- resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==}
+ vitest@1.5.3:
+ resolution: {integrity: sha512-2oM7nLXylw3mQlW6GXnRriw+7YvZFk/YNV8AxIC3Z3MfFbuziLGWP9GPxxu/7nRlXhqyxBikpamr+lEEj1sUEw==}
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.0
- '@vitest/ui': 1.5.0
+ '@vitest/browser': 1.5.3
+ '@vitest/ui': 1.5.3
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
@@ -2982,61 +2982,61 @@ packages:
jsdom:
optional: true
- volar-service-css@0.0.40:
- resolution: {integrity: sha512-XDUjQacXhSt5OjF3IKkj5cCKe6xnoEVODFv6LT5AZLD2l2PGYNy2Ve6oFqP0gkemFYCkQPQj/vi7RlPVduxXsQ==}
+ volar-service-css@0.0.42:
+ resolution: {integrity: sha512-vx3kbSNiIfoyuHaygDFykI1TFkpbkIO2qJWeKNnGHlMZKy1PFLfCRmPAjkfdDvijLPnHqyKmvWwhkUht+Wiq6Q==}
peerDependencies:
- '@volar/language-service': ~2.2.0-alpha.4
+ '@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-emmet@0.0.40:
- resolution: {integrity: sha512-1OVmW1KF7rQKL37U8pMgZzPs9qC8VmPMbEepUHucg/igmAi3pyf5aPpOPLl3DXoKQuFds+m92HCErVGJXKhulw==}
+ volar-service-emmet@0.0.42:
+ resolution: {integrity: sha512-agB2XZTS14o6+oUnIQHd7nIU08i2exZ+WYY20DjKj0NFLgbYSWIFB5Uf8mSIouMHzs28JcAMGS7ClT9Amkp6RQ==}
peerDependencies:
- '@volar/language-service': ~2.2.0-alpha.4
+ '@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-html@0.0.40:
- resolution: {integrity: sha512-gSxVXDtUwQr+TRjGfc4iPSexqwlbMb0Rzcn3LWb4+mC1MyYB6+uN+to8okL8gFjVHHuYjFvNY53KWEJ2e4iHWw==}
+ volar-service-html@0.0.42:
+ resolution: {integrity: sha512-6KMjwB3VMrpQgqm4gM73tDO91xJcga09vi4oyI9zayILhlUPuQW4KPjAN3NvLK4fOkcDTn20k/4gGm335ETKVw==}
peerDependencies:
- '@volar/language-service': ~2.2.0-alpha.4
+ '@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-json@0.0.40:
- resolution: {integrity: sha512-3vrvfbU6r9fPXqMKEffE5/JseicWeWGh4qfBa1bhKy5Tsz/ibNGGUsWLmXNZV+OYqtLTlTOYloA1LI605WQ6Tg==}
+ volar-service-json@0.0.42:
+ resolution: {integrity: sha512-+wweRNbzobAG5y2UbMoI4cXRBVG5kf2J/H1Pbp6Ek+A+MOMT3xKbV+H5aKkdEoNGzKv5V2QmwpdVI2ukfOy2EQ==}
peerDependencies:
- '@volar/language-service': ~2.2.0-alpha.4
+ '@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-pug-beautify@0.0.40:
- resolution: {integrity: sha512-uuIWu7PQrXiDCDEIIPAwIEfR80w2GL/x+MJaE9cdBAx+s3xX3go25tA+GObIsevKHyT2gVYdM1T+pOBqKd8NlQ==}
+ volar-service-pug-beautify@0.0.42:
+ resolution: {integrity: sha512-XxK9Njb2E/+uIyh12wKAZVSfaLegH+piv2pCZKDyVMH5aN/prBFseUzZZofwyHCZ+vaviAxXxgIhoiH83tImsw==}
peerDependencies:
- '@volar/language-service': ~2.2.0-alpha.4
+ '@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-pug@0.0.40:
- resolution: {integrity: sha512-r22Ay+rjqH5ERAgBeckXJWwFMXIOkZlu6xdWIUY5tq8Xw0BLQ7/2Zibz1MSfvClb/tcFjVXx/y23hXjvJg/awQ==}
+ volar-service-pug@0.0.42:
+ resolution: {integrity: sha512-p+ESdsxkyHbRXjEhRitvovOypD7deYAlaiEgfQZo9so68mX1rDlQTHuWVVIkPUq9Umba8d8zTjwkp+L513G5Aw==}
- volar-service-typescript-twoslash-queries@0.0.40:
- resolution: {integrity: sha512-IGYW62FeEkbRtToJSseDgDJBIEQ1+jxNZ4n8EDgr2wttP4iD/zG4kcyk2tSL4GrkxHJSi72F2c8WMsYq2Ia3YQ==}
+ volar-service-typescript-twoslash-queries@0.0.42:
+ resolution: {integrity: sha512-aZpN9Szu3m0y1VieKZoH7UVZsB3OD2PJ+BY6EXQ+KxlshMQhkWIEAFBYxA8ixIh0mCev3Bu4qhVbgdeD2DoXWg==}
peerDependencies:
- '@volar/language-service': ~2.2.0-alpha.4
+ '@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
- volar-service-typescript@0.0.40:
- resolution: {integrity: sha512-GL9y8FpQt+wtW+mQnT1Kp5l1BJRu7gb9ioxuwe1QM+fqC0VJaXI6sl0fgk+tlycfbxh1IUU8ZjzV9GMrYlE6IQ==}
+ volar-service-typescript@0.0.42:
+ resolution: {integrity: sha512-INJHXZvIZjsbctXcEjITpj4DFJ6SCGbgpdUUo3vyJ+WwBeuAfncvUVZ4pvid3o8ZCDZhtpOVjFSO+4HYsZfyrg==}
peerDependencies:
- '@volar/language-service': ~2.2.0-alpha.4
+ '@volar/language-service': ~2.2.0
peerDependenciesMeta:
'@volar/language-service':
optional: true
@@ -3047,11 +3047,11 @@ packages:
deprecated: vsce has been renamed to @vscode/vsce. Install using @vscode/vsce instead.
hasBin: true
- vscode-css-languageservice@6.2.13:
- resolution: {integrity: sha512-2rKWXfH++Kxd9Z4QuEgd1IF7WmblWWU7DScuyf1YumoGLkY9DW6wF/OTlhOyO2rN63sWHX2dehIpKBbho4ZwvA==}
+ vscode-css-languageservice@6.2.14:
+ resolution: {integrity: sha512-5UPQ9Y1sUTnuMyaMBpO7LrBkqjhEJb5eAwdUlDp+Uez8lry+Tspnk3+3p2qWS4LlNsr4p3v9WkZxUf1ltgFpgw==}
- vscode-json-languageservice@5.3.10:
- resolution: {integrity: sha512-KlbUYaer3DAnsVyRtgg/MhXOu4TTwY8TjaZYRY7Mt80zSpmvbmd58YT4Wq2ZiqHzdioD6lAvRSxhSCL0DvVY8Q==}
+ vscode-json-languageservice@5.3.11:
+ resolution: {integrity: sha512-WYS72Ymria3dn8ZbjtBbt5K71m05wY1Q6hpXV5JxUT0q75Ts0ljLmnZJAVpx8DjPgYbFD+Z8KHpWh2laKLUCtQ==}
vscode-jsonrpc@8.2.0:
resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}
@@ -3090,8 +3090,8 @@ packages:
resolution: {integrity: sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==}
deprecated: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.
- vue@3.4.23:
- resolution: {integrity: sha512-X1y6yyGJ28LMUBJ0k/qIeKHstGd+BlWQEOT40x3auJFTmpIhpbKLgN7EFsqalnJXq1Km5ybDEsp6BhuWKciUDg==}
+ vue@3.4.26:
+ resolution: {integrity: sha512-bUIq/p+VB+0xrJubaemrfhk1/FiW9iX+pDV+62I/XJ6EkspAO9/DXEjbDFoe8pIfOZBqfk45i9BMc41ptP/uRg==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -3193,28 +3193,28 @@ snapshots:
'@babel/code-frame@7.24.2':
dependencies:
- '@babel/highlight': 7.24.2
+ '@babel/highlight': 7.24.5
picocolors: 1.0.0
'@babel/helper-string-parser@7.24.1': {}
- '@babel/helper-validator-identifier@7.22.20': {}
+ '@babel/helper-validator-identifier@7.24.5': {}
- '@babel/highlight@7.24.2':
+ '@babel/highlight@7.24.5':
dependencies:
- '@babel/helper-validator-identifier': 7.22.20
+ '@babel/helper-validator-identifier': 7.24.5
chalk: 2.4.2
js-tokens: 4.0.0
picocolors: 1.0.0
- '@babel/parser@7.24.4':
+ '@babel/parser@7.24.5':
dependencies:
- '@babel/types': 7.24.0
+ '@babel/types': 7.24.5
- '@babel/types@7.24.0':
+ '@babel/types@7.24.5':
dependencies:
'@babel/helper-string-parser': 7.24.1
- '@babel/helper-validator-identifier': 7.22.20
+ '@babel/helper-validator-identifier': 7.24.5
to-fast-properties: 2.0.0
'@clack/core@0.3.4':
@@ -3435,7 +3435,7 @@ snapshots:
fs-extra: 11.2.0
glob-parent: 6.0.2
globby: 14.0.1
- inquirer: 9.2.19
+ inquirer: 9.2.20
is-ci: 3.0.1
json5: 2.2.3
load-json-file: 7.0.1
@@ -3480,8 +3480,8 @@ snapshots:
fs-extra: 11.2.0
glob: 10.3.12
has-unicode: 2.0.1
- libnpmaccess: 8.0.3
- libnpmpublish: 9.0.5
+ libnpmaccess: 8.0.4
+ libnpmpublish: 9.0.6
normalize-path: 3.0.0
npm-package-arg: 11.0.2
npm-packlist: 5.1.3
@@ -3572,7 +3572,7 @@ snapshots:
agent-base: 7.1.1
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.4
- lru-cache: 10.2.0
+ lru-cache: 10.2.2
socks-proxy-agent: 8.0.3
transitivePeerDependencies:
- supports-color
@@ -3584,7 +3584,7 @@ snapshots:
'@npmcli/git@5.0.6':
dependencies:
'@npmcli/promise-spawn': 7.0.1
- lru-cache: 10.2.0
+ lru-cache: 10.2.2
npm-pick-manifest: 9.0.0
proc-log: 4.2.0
promise-inflight: 1.0.1
@@ -3594,14 +3594,14 @@ snapshots:
transitivePeerDependencies:
- bluebird
- '@npmcli/installed-package-contents@2.0.2':
+ '@npmcli/installed-package-contents@2.1.0':
dependencies:
npm-bundled: 3.0.0
npm-normalize-package-bin: 3.0.1
'@npmcli/node-gyp@3.0.0': {}
- '@npmcli/package-json@5.0.3':
+ '@npmcli/package-json@5.1.0':
dependencies:
'@npmcli/git': 5.0.6
glob: 10.3.12
@@ -3622,7 +3622,7 @@ snapshots:
'@npmcli/run-script@7.0.4':
dependencies:
'@npmcli/node-gyp': 3.0.0
- '@npmcli/package-json': 5.0.3
+ '@npmcli/package-json': 5.1.0
'@npmcli/promise-spawn': 7.0.1
node-gyp: 10.1.0
which: 4.0.0
@@ -3638,24 +3638,24 @@ snapshots:
'@octokit/graphql': 7.1.0
'@octokit/request': 8.4.0
'@octokit/request-error': 5.1.0
- '@octokit/types': 13.4.1
+ '@octokit/types': 13.5.0
before-after-hook: 2.2.3
universal-user-agent: 6.0.1
'@octokit/endpoint@9.0.5':
dependencies:
- '@octokit/types': 13.4.1
+ '@octokit/types': 13.5.0
universal-user-agent: 6.0.1
'@octokit/graphql@7.1.0':
dependencies:
'@octokit/request': 8.4.0
- '@octokit/types': 13.4.1
+ '@octokit/types': 13.5.0
universal-user-agent: 6.0.1
'@octokit/openapi-types@20.0.0': {}
- '@octokit/openapi-types@22.1.0': {}
+ '@octokit/openapi-types@22.2.0': {}
'@octokit/plugin-enterprise-rest@6.0.1': {}
@@ -3675,7 +3675,7 @@ snapshots:
'@octokit/request-error@5.1.0':
dependencies:
- '@octokit/types': 13.4.1
+ '@octokit/types': 13.5.0
deprecation: 2.3.1
once: 1.4.0
@@ -3683,7 +3683,7 @@ snapshots:
dependencies:
'@octokit/endpoint': 9.0.5
'@octokit/request-error': 5.1.0
- '@octokit/types': 13.4.1
+ '@octokit/types': 13.5.0
universal-user-agent: 6.0.1
'@octokit/rest@20.1.0':
@@ -3697,59 +3697,59 @@ snapshots:
dependencies:
'@octokit/openapi-types': 20.0.0
- '@octokit/types@13.4.1':
+ '@octokit/types@13.5.0':
dependencies:
- '@octokit/openapi-types': 22.1.0
+ '@octokit/openapi-types': 22.2.0
'@pkgjs/parseargs@0.11.0':
optional: true
- '@rollup/rollup-android-arm-eabi@4.16.1':
+ '@rollup/rollup-android-arm-eabi@4.17.1':
optional: true
- '@rollup/rollup-android-arm64@4.16.1':
+ '@rollup/rollup-android-arm64@4.17.1':
optional: true
- '@rollup/rollup-darwin-arm64@4.16.1':
+ '@rollup/rollup-darwin-arm64@4.17.1':
optional: true
- '@rollup/rollup-darwin-x64@4.16.1':
+ '@rollup/rollup-darwin-x64@4.17.1':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.16.1':
+ '@rollup/rollup-linux-arm-gnueabihf@4.17.1':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.16.1':
+ '@rollup/rollup-linux-arm-musleabihf@4.17.1':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.16.1':
+ '@rollup/rollup-linux-arm64-gnu@4.17.1':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.16.1':
+ '@rollup/rollup-linux-arm64-musl@4.17.1':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.16.1':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.17.1':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.16.1':
+ '@rollup/rollup-linux-riscv64-gnu@4.17.1':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.16.1':
+ '@rollup/rollup-linux-s390x-gnu@4.17.1':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.16.1':
+ '@rollup/rollup-linux-x64-gnu@4.17.1':
optional: true
- '@rollup/rollup-linux-x64-musl@4.16.1':
+ '@rollup/rollup-linux-x64-musl@4.17.1':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.16.1':
+ '@rollup/rollup-win32-arm64-msvc@4.17.1':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.16.1':
+ '@rollup/rollup-win32-ia32-msvc@4.17.1':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.16.1':
+ '@rollup/rollup-win32-x64-msvc@4.17.1':
optional: true
'@sec-ant/readable-stream@0.4.1': {}
@@ -3828,54 +3828,54 @@ snapshots:
'@types/vscode@1.88.0': {}
- '@vitest/expect@1.5.0':
+ '@vitest/expect@1.5.3':
dependencies:
- '@vitest/spy': 1.5.0
- '@vitest/utils': 1.5.0
+ '@vitest/spy': 1.5.3
+ '@vitest/utils': 1.5.3
chai: 4.4.1
- '@vitest/runner@1.5.0':
+ '@vitest/runner@1.5.3':
dependencies:
- '@vitest/utils': 1.5.0
+ '@vitest/utils': 1.5.3
p-limit: 5.0.0
pathe: 1.1.2
- '@vitest/snapshot@1.5.0':
+ '@vitest/snapshot@1.5.3':
dependencies:
magic-string: 0.30.10
pathe: 1.1.2
pretty-format: 29.7.0
- '@vitest/spy@1.5.0':
+ '@vitest/spy@1.5.3':
dependencies:
tinyspy: 2.2.1
- '@vitest/utils@1.5.0':
+ '@vitest/utils@1.5.3':
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-alpha.10(typescript@5.4.5)':
+ '@volar/kit@2.2.0(typescript@5.4.5)':
dependencies:
- '@volar/language-service': 2.2.0-alpha.10
- '@volar/typescript': 2.2.0-alpha.10
+ '@volar/language-service': 2.2.0
+ '@volar/typescript': 2.2.0
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-alpha.10':
+ '@volar/language-core@2.2.0':
dependencies:
- '@volar/source-map': 2.2.0-alpha.10
+ '@volar/source-map': 2.2.0
- '@volar/language-server@2.2.0-alpha.10':
+ '@volar/language-server@2.2.0':
dependencies:
- '@volar/language-core': 2.2.0-alpha.10
- '@volar/language-service': 2.2.0-alpha.10
- '@volar/snapshot-document': 2.2.0-alpha.10
- '@volar/typescript': 2.2.0-alpha.10
+ '@volar/language-core': 2.2.0
+ '@volar/language-service': 2.2.0
+ '@volar/snapshot-document': 2.2.0
+ '@volar/typescript': 2.2.0
'@vscode/l10n': 0.0.16
path-browserify: 1.0.1
request-light: 0.7.0
@@ -3884,19 +3884,19 @@ snapshots:
vscode-languageserver-textdocument: 1.0.11
vscode-uri: 3.0.8
- '@volar/language-service@2.2.0-alpha.10':
+ '@volar/language-service@2.2.0':
dependencies:
- '@volar/language-core': 2.2.0-alpha.10
+ '@volar/language-core': 2.2.0
vscode-languageserver-protocol: 3.17.5
vscode-languageserver-textdocument: 1.0.11
vscode-uri: 3.0.8
- '@volar/snapshot-document@2.2.0-alpha.10':
+ '@volar/snapshot-document@2.2.0':
dependencies:
vscode-languageserver-protocol: 3.17.5
vscode-languageserver-textdocument: 1.0.11
- '@volar/source-map@2.2.0-alpha.10':
+ '@volar/source-map@2.2.0':
dependencies:
muggle-string: 0.4.1
@@ -3904,14 +3904,14 @@ snapshots:
dependencies:
tsl: 0.0.10(typescript@5.4.5)
- '@volar/typescript@2.2.0-alpha.10':
+ '@volar/typescript@2.2.0':
dependencies:
- '@volar/language-core': 2.2.0-alpha.10
+ '@volar/language-core': 2.2.0
path-browserify: 1.0.1
- '@volar/vscode@2.2.0-alpha.10':
+ '@volar/vscode@2.2.0':
dependencies:
- '@volar/language-server': 2.2.0-alpha.10
+ '@volar/language-server': 2.2.0
path-browserify: 1.0.1
vscode-languageclient: 9.0.1
vscode-nls: 5.2.0
@@ -3928,66 +3928,66 @@ snapshots:
'@vscode/l10n@0.0.18': {}
- '@vue/compiler-core@3.4.23':
+ '@vue/compiler-core@3.4.26':
dependencies:
- '@babel/parser': 7.24.4
- '@vue/shared': 3.4.23
+ '@babel/parser': 7.24.5
+ '@vue/shared': 3.4.26
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.0
- '@vue/compiler-dom@3.4.23':
+ '@vue/compiler-dom@3.4.26':
dependencies:
- '@vue/compiler-core': 3.4.23
- '@vue/shared': 3.4.23
+ '@vue/compiler-core': 3.4.26
+ '@vue/shared': 3.4.26
'@vue/compiler-sfc@2.7.16':
dependencies:
- '@babel/parser': 7.24.4
+ '@babel/parser': 7.24.5
postcss: 8.4.38
source-map: 0.6.1
optionalDependencies:
prettier: 2.8.8
- '@vue/compiler-sfc@3.4.23':
+ '@vue/compiler-sfc@3.4.26':
dependencies:
- '@babel/parser': 7.24.4
- '@vue/compiler-core': 3.4.23
- '@vue/compiler-dom': 3.4.23
- '@vue/compiler-ssr': 3.4.23
- '@vue/shared': 3.4.23
+ '@babel/parser': 7.24.5
+ '@vue/compiler-core': 3.4.26
+ '@vue/compiler-dom': 3.4.26
+ '@vue/compiler-ssr': 3.4.26
+ '@vue/shared': 3.4.26
estree-walker: 2.0.2
magic-string: 0.30.10
postcss: 8.4.38
source-map-js: 1.2.0
- '@vue/compiler-ssr@3.4.23':
+ '@vue/compiler-ssr@3.4.26':
dependencies:
- '@vue/compiler-dom': 3.4.23
- '@vue/shared': 3.4.23
+ '@vue/compiler-dom': 3.4.26
+ '@vue/shared': 3.4.26
- '@vue/reactivity@3.4.23':
+ '@vue/reactivity@3.4.26':
dependencies:
- '@vue/shared': 3.4.23
+ '@vue/shared': 3.4.26
- '@vue/runtime-core@3.4.23':
+ '@vue/runtime-core@3.4.26':
dependencies:
- '@vue/reactivity': 3.4.23
- '@vue/shared': 3.4.23
+ '@vue/reactivity': 3.4.26
+ '@vue/shared': 3.4.26
- '@vue/runtime-dom@3.4.23':
+ '@vue/runtime-dom@3.4.26':
dependencies:
- '@vue/runtime-core': 3.4.23
- '@vue/shared': 3.4.23
+ '@vue/runtime-core': 3.4.26
+ '@vue/shared': 3.4.26
csstype: 3.1.3
- '@vue/server-renderer@3.4.23(vue@3.4.23(typescript@5.4.5))':
+ '@vue/server-renderer@3.4.26(vue@3.4.26(typescript@5.4.5))':
dependencies:
- '@vue/compiler-ssr': 3.4.23
- '@vue/shared': 3.4.23
- vue: 3.4.23(typescript@5.4.5)
+ '@vue/compiler-ssr': 3.4.26
+ '@vue/shared': 3.4.26
+ vue: 3.4.26(typescript@5.4.5)
- '@vue/shared@3.4.23': {}
+ '@vue/shared@3.4.26': {}
JSONStream@1.3.5:
dependencies:
@@ -4108,7 +4108,7 @@ snapshots:
'@npmcli/fs': 3.1.0
fs-minipass: 3.0.3
glob: 10.3.12
- lru-cache: 10.2.0
+ lru-cache: 10.2.2
minipass: 7.0.4
minipass-collect: 2.0.1
minipass-flush: 1.0.5
@@ -4773,7 +4773,7 @@ snapshots:
hosted-git-info@7.0.1:
dependencies:
- lru-cache: 10.2.0
+ lru-cache: 10.2.2
htmlparser2@8.0.2:
dependencies:
@@ -4846,7 +4846,7 @@ snapshots:
ini@1.3.8: {}
- inquirer@9.2.19:
+ inquirer@9.2.20:
dependencies:
'@inquirer/figures': 1.0.1
'@ljharb/through': 2.3.13
@@ -4988,20 +4988,20 @@ snapshots:
leven@3.1.0: {}
- libnpmaccess@8.0.3:
+ libnpmaccess@8.0.4:
dependencies:
npm-package-arg: 11.0.2
npm-registry-fetch: 16.2.1
transitivePeerDependencies:
- supports-color
- libnpmpublish@9.0.5:
+ libnpmpublish@9.0.6:
dependencies:
ci-info: 4.0.0
normalize-package-data: 6.0.0
npm-package-arg: 11.0.2
npm-registry-fetch: 16.2.1
- proc-log: 3.0.0
+ proc-log: 4.2.0
semver: 7.6.0
sigstore: 2.3.0
ssri: 10.0.5
@@ -5042,7 +5042,7 @@ snapshots:
dependencies:
get-func-name: 2.0.2
- lru-cache@10.2.0: {}
+ lru-cache@10.2.2: {}
lru-cache@6.0.0:
dependencies:
@@ -5188,7 +5188,7 @@ snapshots:
dependencies:
type-fest: 2.19.0
- node-abi@3.60.0:
+ node-abi@3.62.0:
dependencies:
semver: 7.6.0
@@ -5377,7 +5377,7 @@ snapshots:
pacote@17.0.7:
dependencies:
'@npmcli/git': 5.0.6
- '@npmcli/installed-package-contents': 2.0.2
+ '@npmcli/installed-package-contents': 2.1.0
'@npmcli/promise-spawn': 7.0.1
'@npmcli/run-script': 7.0.4
cacache: 18.0.2
@@ -5421,7 +5421,7 @@ snapshots:
dependencies:
'@babel/code-frame': 7.24.2
index-to-position: 0.1.2
- type-fest: 4.15.0
+ type-fest: 4.18.0
parse-path@7.0.0:
dependencies:
@@ -5458,7 +5458,7 @@ snapshots:
path-scurry@1.10.2:
dependencies:
- lru-cache: 10.2.0
+ lru-cache: 10.2.2
minipass: 7.0.4
path-type@4.0.0: {}
@@ -5501,7 +5501,7 @@ snapshots:
minimist: 1.2.8
mkdirp-classic: 0.5.3
napi-build-utils: 1.0.2
- node-abi: 3.60.0
+ node-abi: 3.62.0
pump: 3.0.0
rc: 1.2.8
simple-get: 4.0.1
@@ -5515,7 +5515,7 @@ snapshots:
dependencies:
'@jest/schemas': 29.6.3
ansi-styles: 5.2.0
- react-is: 18.2.0
+ react-is: 18.3.1
proc-log@3.0.0: {}
@@ -5563,7 +5563,7 @@ snapshots:
minimist: 1.2.8
strip-json-comments: 2.0.1
- react-is@18.2.0: {}
+ react-is@18.3.1: {}
read-package-json-fast@3.0.2:
dependencies:
@@ -5581,21 +5581,21 @@ snapshots:
dependencies:
find-up: 6.3.0
read-pkg: 8.1.0
- type-fest: 4.15.0
+ type-fest: 4.18.0
read-pkg@8.1.0:
dependencies:
'@types/normalize-package-data': 2.4.4
normalize-package-data: 6.0.0
parse-json: 7.1.1
- type-fest: 4.15.0
+ type-fest: 4.18.0
read-pkg@9.0.1:
dependencies:
'@types/normalize-package-data': 2.4.4
normalize-package-data: 6.0.0
parse-json: 8.1.0
- type-fest: 4.15.0
+ type-fest: 4.18.0
unicorn-magic: 0.1.0
read@1.0.7:
@@ -5633,26 +5633,26 @@ snapshots:
reusify@1.0.4: {}
- rollup@4.16.1:
+ rollup@4.17.1:
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.16.1
- '@rollup/rollup-android-arm64': 4.16.1
- '@rollup/rollup-darwin-arm64': 4.16.1
- '@rollup/rollup-darwin-x64': 4.16.1
- '@rollup/rollup-linux-arm-gnueabihf': 4.16.1
- '@rollup/rollup-linux-arm-musleabihf': 4.16.1
- '@rollup/rollup-linux-arm64-gnu': 4.16.1
- '@rollup/rollup-linux-arm64-musl': 4.16.1
- '@rollup/rollup-linux-powerpc64le-gnu': 4.16.1
- '@rollup/rollup-linux-riscv64-gnu': 4.16.1
- '@rollup/rollup-linux-s390x-gnu': 4.16.1
- '@rollup/rollup-linux-x64-gnu': 4.16.1
- '@rollup/rollup-linux-x64-musl': 4.16.1
- '@rollup/rollup-win32-arm64-msvc': 4.16.1
- '@rollup/rollup-win32-ia32-msvc': 4.16.1
- '@rollup/rollup-win32-x64-msvc': 4.16.1
+ '@rollup/rollup-android-arm-eabi': 4.17.1
+ '@rollup/rollup-android-arm64': 4.17.1
+ '@rollup/rollup-darwin-arm64': 4.17.1
+ '@rollup/rollup-darwin-x64': 4.17.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.17.1
+ '@rollup/rollup-linux-arm-musleabihf': 4.17.1
+ '@rollup/rollup-linux-arm64-gnu': 4.17.1
+ '@rollup/rollup-linux-arm64-musl': 4.17.1
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.17.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.17.1
+ '@rollup/rollup-linux-s390x-gnu': 4.17.1
+ '@rollup/rollup-linux-x64-gnu': 4.17.1
+ '@rollup/rollup-linux-x64-musl': 4.17.1
+ '@rollup/rollup-win32-arm64-msvc': 4.17.1
+ '@rollup/rollup-win32-ia32-msvc': 4.17.1
+ '@rollup/rollup-win32-x64-msvc': 4.17.1
fsevents: 2.3.3
run-async@3.0.0: {}
@@ -5920,7 +5920,7 @@ snapshots:
type-fest@3.13.1: {}
- type-fest@4.15.0: {}
+ type-fest@4.18.0: {}
typed-rest-client@1.8.11:
dependencies:
@@ -5980,7 +5980,7 @@ snapshots:
dependencies:
builtins: 5.1.0
- vite-node@1.5.0(@types/node@20.12.7):
+ vite-node@1.5.3(@types/node@20.12.7):
dependencies:
cac: 6.7.14
debug: 4.3.4
@@ -6001,18 +6001,18 @@ snapshots:
dependencies:
esbuild: 0.20.2
postcss: 8.4.38
- rollup: 4.16.1
+ rollup: 4.17.1
optionalDependencies:
'@types/node': 20.12.7
fsevents: 2.3.3
- vitest@1.5.0(@types/node@20.12.7):
+ vitest@1.5.3(@types/node@20.12.7):
dependencies:
- '@vitest/expect': 1.5.0
- '@vitest/runner': 1.5.0
- '@vitest/snapshot': 1.5.0
- '@vitest/spy': 1.5.0
- '@vitest/utils': 1.5.0
+ '@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
acorn-walk: 8.3.2
chai: 4.4.1
debug: 4.3.4
@@ -6026,7 +6026,7 @@ snapshots:
tinybench: 2.8.0
tinypool: 0.8.4
vite: 5.2.10(@types/node@20.12.7)
- vite-node: 1.5.0(@types/node@20.12.7)
+ vite-node: 1.5.3(@types/node@20.12.7)
why-is-node-running: 2.2.2
optionalDependencies:
'@types/node': 20.12.7
@@ -6039,56 +6039,56 @@ snapshots:
- supports-color
- terser
- volar-service-css@0.0.40(@volar/language-service@2.2.0-alpha.10):
+ volar-service-css@0.0.42(@volar/language-service@2.2.0):
dependencies:
- vscode-css-languageservice: 6.2.13
+ vscode-css-languageservice: 6.2.14
vscode-languageserver-textdocument: 1.0.11
vscode-uri: 3.0.8
optionalDependencies:
- '@volar/language-service': 2.2.0-alpha.10
+ '@volar/language-service': 2.2.0
- volar-service-emmet@0.0.40(@volar/language-service@2.2.0-alpha.10):
+ volar-service-emmet@0.0.42(@volar/language-service@2.2.0):
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-alpha.10
+ '@volar/language-service': 2.2.0
- volar-service-html@0.0.40(@volar/language-service@2.2.0-alpha.10):
+ volar-service-html@0.0.42(@volar/language-service@2.2.0):
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-alpha.10
+ '@volar/language-service': 2.2.0
- volar-service-json@0.0.40(@volar/language-service@2.2.0-alpha.10):
+ volar-service-json@0.0.42(@volar/language-service@2.2.0):
dependencies:
- vscode-json-languageservice: 5.3.10
+ vscode-json-languageservice: 5.3.11
vscode-uri: 3.0.8
optionalDependencies:
- '@volar/language-service': 2.2.0-alpha.10
+ '@volar/language-service': 2.2.0
- volar-service-pug-beautify@0.0.40(@volar/language-service@2.2.0-alpha.10):
+ volar-service-pug-beautify@0.0.42(@volar/language-service@2.2.0):
dependencies:
'@johnsoncodehk/pug-beautify': 0.2.2
optionalDependencies:
- '@volar/language-service': 2.2.0-alpha.10
+ '@volar/language-service': 2.2.0
- volar-service-pug@0.0.40:
+ volar-service-pug@0.0.42:
dependencies:
- '@volar/language-service': 2.2.0-alpha.10
+ '@volar/language-service': 2.2.0
pug-lexer: 5.0.1
pug-parser: 6.0.0
- volar-service-html: 0.0.40(@volar/language-service@2.2.0-alpha.10)
+ volar-service-html: 0.0.42(@volar/language-service@2.2.0)
vscode-html-languageservice: '@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462'
vscode-languageserver-textdocument: 1.0.11
- volar-service-typescript-twoslash-queries@0.0.40(@volar/language-service@2.2.0-alpha.10):
+ volar-service-typescript-twoslash-queries@0.0.42(@volar/language-service@2.2.0):
optionalDependencies:
- '@volar/language-service': 2.2.0-alpha.10
+ '@volar/language-service': 2.2.0
- volar-service-typescript@0.0.40(@volar/language-service@2.2.0-alpha.10):
+ volar-service-typescript@0.0.42(@volar/language-service@2.2.0):
dependencies:
path-browserify: 1.0.1
semver: 7.6.0
@@ -6096,7 +6096,7 @@ snapshots:
vscode-languageserver-textdocument: 1.0.11
vscode-nls: 5.2.0
optionalDependencies:
- '@volar/language-service': 2.2.0-alpha.10
+ '@volar/language-service': 2.2.0
vsce@2.15.0:
dependencies:
@@ -6121,14 +6121,14 @@ snapshots:
yauzl: 2.10.0
yazl: 2.5.1
- vscode-css-languageservice@6.2.13:
+ vscode-css-languageservice@6.2.14:
dependencies:
'@vscode/l10n': 0.0.18
vscode-languageserver-textdocument: 1.0.11
vscode-languageserver-types: 3.17.5
vscode-uri: 3.0.8
- vscode-json-languageservice@5.3.10:
+ vscode-json-languageservice@5.3.11:
dependencies:
'@vscode/l10n': 0.0.18
jsonc-parser: 3.2.1
@@ -6173,13 +6173,13 @@ snapshots:
'@vue/compiler-sfc': 2.7.16
csstype: 3.1.3
- vue@3.4.23(typescript@5.4.5):
+ vue@3.4.26(typescript@5.4.5):
dependencies:
- '@vue/compiler-dom': 3.4.23
- '@vue/compiler-sfc': 3.4.23
- '@vue/runtime-dom': 3.4.23
- '@vue/server-renderer': 3.4.23(vue@3.4.23(typescript@5.4.5))
- '@vue/shared': 3.4.23
+ '@vue/compiler-dom': 3.4.26
+ '@vue/compiler-sfc': 3.4.26
+ '@vue/runtime-dom': 3.4.26
+ '@vue/server-renderer': 3.4.26(vue@3.4.26(typescript@5.4.5))
+ '@vue/shared': 3.4.26
optionalDependencies:
typescript: 5.4.5
@@ -6252,7 +6252,7 @@ snapshots:
deepmerge-ts: 5.1.0
read-pkg: 9.0.1
sort-keys: 5.0.0
- type-fest: 4.15.0
+ type-fest: 4.18.0
write-json-file: 5.0.0
xml2js@0.4.23:
diff --git a/test-workspace/component-meta/template-slots/component-destructuring.vue b/test-workspace/component-meta/template-slots/component-destructuring.vue
new file mode 100644
index 0000000000..5f5c360109
--- /dev/null
+++ b/test-workspace/component-meta/template-slots/component-destructuring.vue
@@ -0,0 +1,13 @@
+
+
+ {{ num }}
+
+
+
+
+
+
diff --git a/test-workspace/package.json b/test-workspace/package.json
index 9d6e6091e5..0e2483a50a 100644
--- a/test-workspace/package.json
+++ b/test-workspace/package.json
@@ -1,9 +1,9 @@
{
"private": true,
- "version": "2.0.14",
+ "version": "2.0.16",
"devDependencies": {
"vue": "^3.4.0",
- "vue-component-type-helpers": "2.0.14",
+ "vue-component-type-helpers": "2.0.16",
"vue2": "npm:vue@2.7.16"
}
}
diff --git a/test-workspace/tsc/vue2/tsconfig.json b/test-workspace/tsc/vue2/tsconfig.json
index b5c07b027b..58dd2edb4c 100644
--- a/test-workspace/tsc/vue2/tsconfig.json
+++ b/test-workspace/tsc/vue2/tsconfig.json
@@ -17,6 +17,7 @@
"../vue3/#3615",
"../vue3/#3656",
"../vue3/#3672",
+ "../vue3/#4327",
"../vue3/components",
"../vue3/defineEmits",
"../vue3/defineModel",
diff --git a/test-workspace/tsc/vue3/#4326/main.vue b/test-workspace/tsc/vue3/#4326/main.vue
new file mode 100644
index 0000000000..9a921fc2b0
--- /dev/null
+++ b/test-workspace/tsc/vue3/#4326/main.vue
@@ -0,0 +1,11 @@
+
diff --git a/test-workspace/tsc/vue3/#4327/main.vue b/test-workspace/tsc/vue3/#4327/main.vue
new file mode 100644
index 0000000000..f1d57d40b5
--- /dev/null
+++ b/test-workspace/tsc/vue3/#4327/main.vue
@@ -0,0 +1,17 @@
+
+
+
+
+ Default slot content
+
+
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 @@
+
+
+
+
+