diff --git a/README.md b/README.md
index b21dd8557a..adda5cef9e 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,15 @@
💬 **#language-tools** on our [Discord Server](https://discord.gg/vue)
+## Example Projects
+
+- [Basic Example](./examples/basic/) \
+*A basic example project that highlights some aspects of the Vue language tools. This example is a good starting point for new users.*
+- [[Todo] nvim](./examples/with-nvim/) \
+*If you are using Neovim, feel free to contribute an example project to help others.*
+- [[Todo] Vue2](./examples/with-vue2/) \
+*If you are using Vue 2, feel free to contribute an example project to help others.*
+
## Packages
- [Vue Language Features](https://github.com/vuejs/language-tools/tree/master/extensions/vscode) \
@@ -69,10 +78,11 @@ For more information see [#4119](https://github.com/vuejs/language-tools/pull/41
*Make sure you have typescript installed globally or pass the location to volar*
Use volar for all `.{vue,js,ts,tsx,jsx}` files.
+
```lua
local lspconfig = require('lspconfig')
--- lspconfig.tsserver.setup {}
+-- lspconfig.tsserver.setup {}
lspconfig.volar.setup {
filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' },
init_options = {
@@ -84,6 +94,7 @@ lspconfig.volar.setup {
```
Use `volar` for only `.vue` files and `tsserver` for `.ts` and `.js` files.
+
```lua
local lspconfig = require('lspconfig')
diff --git a/examples/basic/.gitignore b/examples/basic/.gitignore
new file mode 100644
index 0000000000..a547bf36d8
--- /dev/null
+++ b/examples/basic/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/examples/basic/.prettierrc b/examples/basic/.prettierrc
new file mode 100644
index 0000000000..2a538aaabe
--- /dev/null
+++ b/examples/basic/.prettierrc
@@ -0,0 +1,9 @@
+{
+ "printWidth": 100,
+ "semi": false,
+ "tabWidth": 2,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "arrowParens": "avoid",
+ "trailingComma": "all"
+}
diff --git a/examples/basic/README.md b/examples/basic/README.md
new file mode 100644
index 0000000000..7c2ded90f8
--- /dev/null
+++ b/examples/basic/README.md
@@ -0,0 +1,24 @@
+# Vue language tools - Basic example
+
+This is an official example of using the Vue language tools in a VSCode project.
+
+## What's inside?
+
+### Monorepo setup
+
+In this example, we use a monorepo consisting of a component library and a Vue 3 app. We use `pnpm` to manage the dependencies.
+
+### Library bundling and type declarations
+
+[packages/ui](./packages/ui/src/components/generic-select/) A component library that can be imported in other projects. Note how the `package.json` is configured to expose the bundled components as well as the type declarations.
+
+### Generic components
+
+[packages/ui/components/generic-select](./packages/ui/src/components/generic-select/) A select input component that can handle generic model and option values.
+
+## Getting started
+
+1. [Install the `Vue - Official` VScode extension](https://marketplace.visualstudio.com/items?itemName=Vue.volar)
+2. Download this example project and open it in VSCode.
+3. Run `pnpm install` to install the dependencies.
+4. Start exploring
diff --git a/examples/basic/apps/showcase/.gitignore b/examples/basic/apps/showcase/.gitignore
new file mode 100644
index 0000000000..a547bf36d8
--- /dev/null
+++ b/examples/basic/apps/showcase/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/examples/basic/apps/showcase/index.html b/examples/basic/apps/showcase/index.html
new file mode 100644
index 0000000000..dde16aaf36
--- /dev/null
+++ b/examples/basic/apps/showcase/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Vite + Vue + TS
+
+
+
+
+
+
diff --git a/examples/basic/apps/showcase/package.json b/examples/basic/apps/showcase/package.json
new file mode 100644
index 0000000000..e9a5409c0f
--- /dev/null
+++ b/examples/basic/apps/showcase/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "@examples/app",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vue-tsc -b && vite build",
+ "type-check": "vue-tsc -b --force",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "vue": "^3.4.35",
+ "@examples/ui": "workspace:*"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^5.1.2",
+ "typescript": "^5.5.4",
+ "vite": "^5.3.5",
+ "vue-tsc": "^2.0.29"
+ }
+}
diff --git a/examples/basic/apps/showcase/public/vite.svg b/examples/basic/apps/showcase/public/vite.svg
new file mode 100644
index 0000000000..e7b8dfb1b2
--- /dev/null
+++ b/examples/basic/apps/showcase/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/basic/apps/showcase/src/App.vue b/examples/basic/apps/showcase/src/App.vue
new file mode 100644
index 0000000000..d2fc21edf8
--- /dev/null
+++ b/examples/basic/apps/showcase/src/App.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
Showcase
+
+
+
diff --git a/examples/basic/apps/showcase/src/main.ts b/examples/basic/apps/showcase/src/main.ts
new file mode 100644
index 0000000000..5d69521943
--- /dev/null
+++ b/examples/basic/apps/showcase/src/main.ts
@@ -0,0 +1,4 @@
+import {createApp} from 'vue';
+import App from './App.vue';
+
+createApp(App).mount('#app')
diff --git a/examples/basic/apps/showcase/src/vite-env.d.ts b/examples/basic/apps/showcase/src/vite-env.d.ts
new file mode 100644
index 0000000000..11f02fe2a0
--- /dev/null
+++ b/examples/basic/apps/showcase/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/examples/basic/apps/showcase/tsconfig.app.json b/examples/basic/apps/showcase/tsconfig.app.json
new file mode 100644
index 0000000000..b8e9723f5f
--- /dev/null
+++ b/examples/basic/apps/showcase/tsconfig.app.json
@@ -0,0 +1,27 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+ "jsx": "preserve",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
+}
diff --git a/examples/basic/apps/showcase/tsconfig.json b/examples/basic/apps/showcase/tsconfig.json
new file mode 100644
index 0000000000..ea9d0cd825
--- /dev/null
+++ b/examples/basic/apps/showcase/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "files": [],
+ "references": [
+ {
+ "path": "./tsconfig.app.json"
+ },
+ {
+ "path": "./tsconfig.node.json"
+ }
+ ]
+}
diff --git a/examples/basic/apps/showcase/tsconfig.node.json b/examples/basic/apps/showcase/tsconfig.node.json
new file mode 100644
index 0000000000..3afdd6e384
--- /dev/null
+++ b/examples/basic/apps/showcase/tsconfig.node.json
@@ -0,0 +1,13 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+ "skipLibCheck": true,
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "noEmit": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/examples/basic/apps/showcase/vite.config.ts b/examples/basic/apps/showcase/vite.config.ts
new file mode 100644
index 0000000000..05c17402a4
--- /dev/null
+++ b/examples/basic/apps/showcase/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [vue()],
+})
diff --git a/examples/basic/package.json b/examples/basic/package.json
new file mode 100644
index 0000000000..204a5d3550
--- /dev/null
+++ b/examples/basic/package.json
@@ -0,0 +1,13 @@
+{
+ "name": "vue3-vscode",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "build": "pnpm build:ui && pnpm build:app",
+ "build:ui": "pnpm --filter \"@examples/ui\" build",
+ "build:app": "pnpm --filter \"@examples/app\" build"
+ },
+ "dependencies": { },
+ "devDependencies": { }
+}
diff --git a/examples/basic/packages/ui/.gitignore b/examples/basic/packages/ui/.gitignore
new file mode 100644
index 0000000000..a547bf36d8
--- /dev/null
+++ b/examples/basic/packages/ui/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/examples/basic/packages/ui/package.json b/examples/basic/packages/ui/package.json
new file mode 100644
index 0000000000..3edc5a6d9d
--- /dev/null
+++ b/examples/basic/packages/ui/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "@examples/ui",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "module": "dist/ui.lib.es.js",
+ "main": "dist/ui.lib.cjs.js",
+ "types": "dist/types/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist/types/index.d.ts",
+ "import": "./dist/ui.lib.es.js",
+ "require": "./dist/ui.lib.cjs.js"
+ }
+ },
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build && vue-tsc -b --force",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "vue": "3.4.35"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^5.1.2",
+ "@vue/runtime-core": "^3.4.35",
+ "@vue/shared": "^3.4.35",
+ "typescript": "^5.5.4",
+ "vite": "^5.3.5",
+ "vue-tsc": "^2.0.29"
+ }
+}
diff --git a/examples/basic/packages/ui/src/components/generic-select/GenericSelect.vue b/examples/basic/packages/ui/src/components/generic-select/GenericSelect.vue
new file mode 100644
index 0000000000..04a3657137
--- /dev/null
+++ b/examples/basic/packages/ui/src/components/generic-select/GenericSelect.vue
@@ -0,0 +1,25 @@
+
+
+
+ {{ option.label }}
+
+
+
+
+
+
+
+
diff --git a/examples/basic/packages/ui/src/components/generic-select/index.ts b/examples/basic/packages/ui/src/components/generic-select/index.ts
new file mode 100644
index 0000000000..ebbd0c6a55
--- /dev/null
+++ b/examples/basic/packages/ui/src/components/generic-select/index.ts
@@ -0,0 +1,6 @@
+export {default as GenericSelect} from './GenericSelect.vue'
+
+export interface SelectOption {
+ label: string
+ value: T
+}
diff --git a/examples/basic/packages/ui/src/index.ts b/examples/basic/packages/ui/src/index.ts
new file mode 100644
index 0000000000..8c3ba0e031
--- /dev/null
+++ b/examples/basic/packages/ui/src/index.ts
@@ -0,0 +1,2 @@
+export * from './components/generic-select';
+
diff --git a/examples/basic/packages/ui/src/vite-env.d.ts b/examples/basic/packages/ui/src/vite-env.d.ts
new file mode 100644
index 0000000000..11f02fe2a0
--- /dev/null
+++ b/examples/basic/packages/ui/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/examples/basic/packages/ui/tsconfig.json b/examples/basic/packages/ui/tsconfig.json
new file mode 100644
index 0000000000..0e3110e8f0
--- /dev/null
+++ b/examples/basic/packages/ui/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "files": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ },
+ {
+ "path": "./tsconfig.node.json"
+ }
+ ]
+}
diff --git a/examples/basic/packages/ui/tsconfig.lib.json b/examples/basic/packages/ui/tsconfig.lib.json
new file mode 100644
index 0000000000..f1429c926d
--- /dev/null
+++ b/examples/basic/packages/ui/tsconfig.lib.json
@@ -0,0 +1,34 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.lib.tsbuildinfo",
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "lib": [ "ES2020", "DOM", "DOM.Iterable" ],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "moduleDetection": "force",
+ "noEmit": false,
+ "jsx": "preserve",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+
+ /* Type checking */
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "declarationDir": "./dist/types",
+ "rootDir": "./src",
+ "baseUrl": "."
+ },
+ "include": [ "src/**/*.ts", "src/**/*.tsx", "src/**/*.vue" ]
+}
diff --git a/examples/basic/packages/ui/tsconfig.node.json b/examples/basic/packages/ui/tsconfig.node.json
new file mode 100644
index 0000000000..3afdd6e384
--- /dev/null
+++ b/examples/basic/packages/ui/tsconfig.node.json
@@ -0,0 +1,13 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+ "skipLibCheck": true,
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "noEmit": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/examples/basic/packages/ui/vite.config.ts b/examples/basic/packages/ui/vite.config.ts
new file mode 100644
index 0000000000..d79a9a0b46
--- /dev/null
+++ b/examples/basic/packages/ui/vite.config.ts
@@ -0,0 +1,14 @@
+import vue from '@vitejs/plugin-vue';
+import {defineConfig} from 'vite';
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [vue()],
+ build: {
+ lib: {
+ entry: 'src/index.ts',
+ name: 'Example UI Library',
+ fileName: format => `ui.lib.${format}.js`,
+ },
+ },
+})
diff --git a/examples/basic/pnpm-lock.yaml b/examples/basic/pnpm-lock.yaml
new file mode 100644
index 0000000000..499143933e
--- /dev/null
+++ b/examples/basic/pnpm-lock.yaml
@@ -0,0 +1,836 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .: {}
+
+ apps/showcase:
+ dependencies:
+ '@examples/ui':
+ specifier: workspace:*
+ version: link:../../packages/ui
+ vue:
+ specifier: ^3.4.35
+ version: 3.4.35(typescript@5.5.4)
+ devDependencies:
+ '@vitejs/plugin-vue':
+ specifier: ^5.1.2
+ version: 5.1.2(vite@5.3.5)(vue@3.4.35(typescript@5.5.4))
+ typescript:
+ specifier: ^5.5.4
+ version: 5.5.4
+ vite:
+ specifier: ^5.3.5
+ version: 5.3.5
+ vue-tsc:
+ specifier: ^2.0.29
+ version: 2.0.29(typescript@5.5.4)
+
+ packages/ui:
+ dependencies:
+ vue:
+ specifier: 3.4.35
+ version: 3.4.35(typescript@5.5.4)
+ devDependencies:
+ '@vitejs/plugin-vue':
+ specifier: ^5.1.2
+ version: 5.1.2(vite@5.3.5)(vue@3.4.35(typescript@5.5.4))
+ '@vue/runtime-core':
+ specifier: ^3.4.35
+ version: 3.4.35
+ '@vue/shared':
+ specifier: ^3.4.35
+ version: 3.4.35
+ typescript:
+ specifier: ^5.5.4
+ version: 5.5.4
+ vite:
+ specifier: ^5.3.5
+ version: 5.3.5
+ vue-tsc:
+ specifier: ^2.0.29
+ version: 2.0.29(typescript@5.5.4)
+
+packages:
+
+ '@babel/helper-string-parser@7.24.8':
+ resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.24.7':
+ resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.25.3':
+ resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/types@7.25.2':
+ resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@esbuild/aix-ppc64@0.21.5':
+ resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.21.5':
+ resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.21.5':
+ resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.21.5':
+ resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.21.5':
+ resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.21.5':
+ resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.21.5':
+ resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.21.5':
+ resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.21.5':
+ resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.21.5':
+ resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.21.5':
+ resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.21.5':
+ resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.21.5':
+ resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.21.5':
+ resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.21.5':
+ resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.21.5':
+ resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-x64@0.21.5':
+ resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-x64@0.21.5':
+ resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/sunos-x64@0.21.5':
+ resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.21.5':
+ resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.21.5':
+ resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.21.5':
+ resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
+ '@rollup/rollup-android-arm-eabi@4.20.0':
+ resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.20.0':
+ resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.20.0':
+ resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.20.0':
+ resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.20.0':
+ resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.20.0':
+ resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.20.0':
+ resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.20.0':
+ resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
+ resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.20.0':
+ resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-s390x-gnu@4.20.0':
+ resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.20.0':
+ resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.20.0':
+ resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-win32-arm64-msvc@4.20.0':
+ resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.20.0':
+ resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.20.0':
+ resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==}
+ cpu: [x64]
+ os: [win32]
+
+ '@types/estree@1.0.5':
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+
+ '@vitejs/plugin-vue@5.1.2':
+ resolution: {integrity: sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ peerDependencies:
+ vite: ^5.0.0
+ vue: ^3.2.25
+
+ '@volar/language-core@2.4.0-alpha.18':
+ resolution: {integrity: sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==}
+
+ '@volar/source-map@2.4.0-alpha.18':
+ resolution: {integrity: sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==}
+
+ '@volar/typescript@2.4.0-alpha.18':
+ resolution: {integrity: sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==}
+
+ '@vue/compiler-core@3.4.35':
+ resolution: {integrity: sha512-gKp0zGoLnMYtw4uS/SJRRO7rsVggLjvot3mcctlMXunYNsX+aRJDqqw/lV5/gHK91nvaAAlWFgdVl020AW1Prg==}
+
+ '@vue/compiler-dom@3.4.35':
+ resolution: {integrity: sha512-pWIZRL76/oE/VMhdv/ovZfmuooEni6JPG1BFe7oLk5DZRo/ImydXijoZl/4kh2406boRQ7lxTYzbZEEXEhj9NQ==}
+
+ '@vue/compiler-sfc@3.4.35':
+ resolution: {integrity: sha512-xacnRS/h/FCsjsMfxBkzjoNxyxEyKyZfBch/P4vkLRvYJwe5ChXmZZrj8Dsed/752H2Q3JE8kYu9Uyha9J6PgA==}
+
+ '@vue/compiler-ssr@3.4.35':
+ resolution: {integrity: sha512-7iynB+0KB1AAJKk/biENTV5cRGHRdbdaD7Mx3nWcm1W8bVD6QmnH3B4AHhQQ1qZHhqFwzEzMwiytXm3PX1e60A==}
+
+ '@vue/compiler-vue2@2.7.16':
+ resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
+
+ '@vue/language-core@2.0.29':
+ resolution: {integrity: sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@vue/reactivity@3.4.35':
+ resolution: {integrity: sha512-Ggtz7ZZHakriKioveJtPlStYardwQH6VCs9V13/4qjHSQb/teE30LVJNrbBVs4+aoYGtTQKJbTe4CWGxVZrvEw==}
+
+ '@vue/runtime-core@3.4.35':
+ resolution: {integrity: sha512-D+BAjFoWwT5wtITpSxwqfWZiBClhBbR+bm0VQlWYFOadUUXFo+5wbe9ErXhLvwguPiLZdEF13QAWi2vP3ZD5tA==}
+
+ '@vue/runtime-dom@3.4.35':
+ resolution: {integrity: sha512-yGOlbos+MVhlS5NWBF2HDNgblG8e2MY3+GigHEyR/dREAluvI5tuUUgie3/9XeqhPE4LF0i2wjlduh5thnfOqw==}
+
+ '@vue/server-renderer@3.4.35':
+ resolution: {integrity: sha512-iZ0e/u9mRE4T8tNhlo0tbA+gzVkgv8r5BX6s1kRbOZqfpq14qoIvCZ5gIgraOmYkMYrSEZgkkojFPr+Nyq/Mnw==}
+ peerDependencies:
+ vue: 3.4.35
+
+ '@vue/shared@3.4.35':
+ resolution: {integrity: sha512-hvuhBYYDe+b1G8KHxsQ0diDqDMA8D9laxWZhNAjE83VZb5UDaXl9Xnz7cGdDSyiHM90qqI/CyGMcpBpiDy6VVQ==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+
+ computeds@0.0.1:
+ resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
+
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+ de-indent@1.0.2:
+ resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ esbuild@0.21.5:
+ resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
+ magic-string@0.30.11:
+ resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
+
+ minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ muggle-string@0.4.1:
+ resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
+
+ nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
+ picocolors@1.0.1:
+ resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
+
+ postcss@8.4.40:
+ resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ rollup@4.20.0:
+ resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ semver@7.6.3:
+ resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ source-map-js@1.2.0:
+ resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
+ engines: {node: '>=0.10.0'}
+
+ to-fast-properties@2.0.0:
+ resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+ engines: {node: '>=4'}
+
+ typescript@5.5.4:
+ resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ vite@5.3.5:
+ resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
+ vscode-uri@3.0.8:
+ resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
+
+ vue-tsc@2.0.29:
+ resolution: {integrity: sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=5.0.0'
+
+ vue@3.4.35:
+ resolution: {integrity: sha512-+fl/GLmI4GPileHftVlCdB7fUL4aziPcqTudpTGXCT8s+iZWuOCeNEB5haX6Uz2IpRrbEXOgIFbe+XciCuGbNQ==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+snapshots:
+
+ '@babel/helper-string-parser@7.24.8': {}
+
+ '@babel/helper-validator-identifier@7.24.7': {}
+
+ '@babel/parser@7.25.3':
+ dependencies:
+ '@babel/types': 7.25.2
+
+ '@babel/types@7.25.2':
+ dependencies:
+ '@babel/helper-string-parser': 7.24.8
+ '@babel/helper-validator-identifier': 7.24.7
+ to-fast-properties: 2.0.0
+
+ '@esbuild/aix-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm@0.21.5':
+ optional: true
+
+ '@esbuild/android-x64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-x64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/linux-loong64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-s390x@0.21.5':
+ optional: true
+
+ '@esbuild/linux-x64@0.21.5':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/sunos-x64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/win32-x64@0.21.5':
+ optional: true
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@rollup/rollup-android-arm-eabi@4.20.0':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.20.0':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.20.0':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.20.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.20.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.20.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.20.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.20.0':
+ optional: true
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.20.0':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.20.0':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.20.0':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.20.0':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.20.0':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.20.0':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.20.0':
+ optional: true
+
+ '@types/estree@1.0.5': {}
+
+ '@vitejs/plugin-vue@5.1.2(vite@5.3.5)(vue@3.4.35(typescript@5.5.4))':
+ dependencies:
+ vite: 5.3.5
+ vue: 3.4.35(typescript@5.5.4)
+
+ '@volar/language-core@2.4.0-alpha.18':
+ dependencies:
+ '@volar/source-map': 2.4.0-alpha.18
+
+ '@volar/source-map@2.4.0-alpha.18': {}
+
+ '@volar/typescript@2.4.0-alpha.18':
+ dependencies:
+ '@volar/language-core': 2.4.0-alpha.18
+ path-browserify: 1.0.1
+ vscode-uri: 3.0.8
+
+ '@vue/compiler-core@3.4.35':
+ dependencies:
+ '@babel/parser': 7.25.3
+ '@vue/shared': 3.4.35
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.0
+
+ '@vue/compiler-dom@3.4.35':
+ dependencies:
+ '@vue/compiler-core': 3.4.35
+ '@vue/shared': 3.4.35
+
+ '@vue/compiler-sfc@3.4.35':
+ dependencies:
+ '@babel/parser': 7.25.3
+ '@vue/compiler-core': 3.4.35
+ '@vue/compiler-dom': 3.4.35
+ '@vue/compiler-ssr': 3.4.35
+ '@vue/shared': 3.4.35
+ estree-walker: 2.0.2
+ magic-string: 0.30.11
+ postcss: 8.4.40
+ source-map-js: 1.2.0
+
+ '@vue/compiler-ssr@3.4.35':
+ dependencies:
+ '@vue/compiler-dom': 3.4.35
+ '@vue/shared': 3.4.35
+
+ '@vue/compiler-vue2@2.7.16':
+ dependencies:
+ de-indent: 1.0.2
+ he: 1.2.0
+
+ '@vue/language-core@2.0.29(typescript@5.5.4)':
+ dependencies:
+ '@volar/language-core': 2.4.0-alpha.18
+ '@vue/compiler-dom': 3.4.35
+ '@vue/compiler-vue2': 2.7.16
+ '@vue/shared': 3.4.35
+ computeds: 0.0.1
+ minimatch: 9.0.5
+ muggle-string: 0.4.1
+ path-browserify: 1.0.1
+ optionalDependencies:
+ typescript: 5.5.4
+
+ '@vue/reactivity@3.4.35':
+ dependencies:
+ '@vue/shared': 3.4.35
+
+ '@vue/runtime-core@3.4.35':
+ dependencies:
+ '@vue/reactivity': 3.4.35
+ '@vue/shared': 3.4.35
+
+ '@vue/runtime-dom@3.4.35':
+ dependencies:
+ '@vue/reactivity': 3.4.35
+ '@vue/runtime-core': 3.4.35
+ '@vue/shared': 3.4.35
+ csstype: 3.1.3
+
+ '@vue/server-renderer@3.4.35(vue@3.4.35(typescript@5.5.4))':
+ dependencies:
+ '@vue/compiler-ssr': 3.4.35
+ '@vue/shared': 3.4.35
+ vue: 3.4.35(typescript@5.5.4)
+
+ '@vue/shared@3.4.35': {}
+
+ balanced-match@1.0.2: {}
+
+ brace-expansion@2.0.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ computeds@0.0.1: {}
+
+ csstype@3.1.3: {}
+
+ de-indent@1.0.2: {}
+
+ entities@4.5.0: {}
+
+ esbuild@0.21.5:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.21.5
+ '@esbuild/android-arm': 0.21.5
+ '@esbuild/android-arm64': 0.21.5
+ '@esbuild/android-x64': 0.21.5
+ '@esbuild/darwin-arm64': 0.21.5
+ '@esbuild/darwin-x64': 0.21.5
+ '@esbuild/freebsd-arm64': 0.21.5
+ '@esbuild/freebsd-x64': 0.21.5
+ '@esbuild/linux-arm': 0.21.5
+ '@esbuild/linux-arm64': 0.21.5
+ '@esbuild/linux-ia32': 0.21.5
+ '@esbuild/linux-loong64': 0.21.5
+ '@esbuild/linux-mips64el': 0.21.5
+ '@esbuild/linux-ppc64': 0.21.5
+ '@esbuild/linux-riscv64': 0.21.5
+ '@esbuild/linux-s390x': 0.21.5
+ '@esbuild/linux-x64': 0.21.5
+ '@esbuild/netbsd-x64': 0.21.5
+ '@esbuild/openbsd-x64': 0.21.5
+ '@esbuild/sunos-x64': 0.21.5
+ '@esbuild/win32-arm64': 0.21.5
+ '@esbuild/win32-ia32': 0.21.5
+ '@esbuild/win32-x64': 0.21.5
+
+ estree-walker@2.0.2: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ he@1.2.0: {}
+
+ magic-string@0.30.11:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ muggle-string@0.4.1: {}
+
+ nanoid@3.3.7: {}
+
+ path-browserify@1.0.1: {}
+
+ picocolors@1.0.1: {}
+
+ postcss@8.4.40:
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.0.1
+ source-map-js: 1.2.0
+
+ rollup@4.20.0:
+ dependencies:
+ '@types/estree': 1.0.5
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.20.0
+ '@rollup/rollup-android-arm64': 4.20.0
+ '@rollup/rollup-darwin-arm64': 4.20.0
+ '@rollup/rollup-darwin-x64': 4.20.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.20.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.20.0
+ '@rollup/rollup-linux-arm64-gnu': 4.20.0
+ '@rollup/rollup-linux-arm64-musl': 4.20.0
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.20.0
+ '@rollup/rollup-linux-s390x-gnu': 4.20.0
+ '@rollup/rollup-linux-x64-gnu': 4.20.0
+ '@rollup/rollup-linux-x64-musl': 4.20.0
+ '@rollup/rollup-win32-arm64-msvc': 4.20.0
+ '@rollup/rollup-win32-ia32-msvc': 4.20.0
+ '@rollup/rollup-win32-x64-msvc': 4.20.0
+ fsevents: 2.3.3
+
+ semver@7.6.3: {}
+
+ source-map-js@1.2.0: {}
+
+ to-fast-properties@2.0.0: {}
+
+ typescript@5.5.4: {}
+
+ vite@5.3.5:
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.4.40
+ rollup: 4.20.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ vscode-uri@3.0.8: {}
+
+ vue-tsc@2.0.29(typescript@5.5.4):
+ dependencies:
+ '@volar/typescript': 2.4.0-alpha.18
+ '@vue/language-core': 2.0.29(typescript@5.5.4)
+ semver: 7.6.3
+ typescript: 5.5.4
+
+ vue@3.4.35(typescript@5.5.4):
+ dependencies:
+ '@vue/compiler-dom': 3.4.35
+ '@vue/compiler-sfc': 3.4.35
+ '@vue/runtime-dom': 3.4.35
+ '@vue/server-renderer': 3.4.35(vue@3.4.35(typescript@5.5.4))
+ '@vue/shared': 3.4.35
+ optionalDependencies:
+ typescript: 5.5.4
diff --git a/examples/basic/pnpm-workspace.yaml b/examples/basic/pnpm-workspace.yaml
new file mode 100644
index 0000000000..4e708bd3c5
--- /dev/null
+++ b/examples/basic/pnpm-workspace.yaml
@@ -0,0 +1,3 @@
+packages:
+ - 'packages/*'
+ - 'apps/*'
diff --git a/examples/with-nvim/README.md b/examples/with-nvim/README.md
new file mode 100644
index 0000000000..6d94a460c8
--- /dev/null
+++ b/examples/with-nvim/README.md
@@ -0,0 +1,3 @@
+# TODO: Vue language tools with Neovim
+
+If you're using nvim, please consider making a PR with an example project to help others.
diff --git a/examples/with-vue2/README.md b/examples/with-vue2/README.md
new file mode 100644
index 0000000000..f9071d758b
--- /dev/null
+++ b/examples/with-vue2/README.md
@@ -0,0 +1,3 @@
+# TODO: Vue language tools with Vue 2
+
+Please consider making a PR with an example project to help others.