diff --git a/.changeset/gold-readers-create.md b/.changeset/gold-readers-create.md
new file mode 100644
index 00000000..58021320
--- /dev/null
+++ b/.changeset/gold-readers-create.md
@@ -0,0 +1,6 @@
+---
+'@tanstack/vue-devtools': minor
+'@tanstack/devtools': patch
+---
+
+feat: vue devtools
diff --git a/examples/vue/basic/.gitignore b/examples/vue/basic/.gitignore
new file mode 100644
index 00000000..449e8098
--- /dev/null
+++ b/examples/vue/basic/.gitignore
@@ -0,0 +1,9 @@
+node_modules
+.DS_Store
+dist
+dist-ssr
+*.local
+
+package-lock.json
+yarn.lock
+pnpm-lock.yaml
diff --git a/examples/vue/basic/README.md b/examples/vue/basic/README.md
new file mode 100644
index 00000000..a9aad379
--- /dev/null
+++ b/examples/vue/basic/README.md
@@ -0,0 +1,6 @@
+# Basic example
+
+To run this example:
+
+- `npm install` or `yarn` or `pnpm i` or `bun i`
+- `npm run dev` or `yarn dev` or `pnpm dev` or `bun dev`
diff --git a/examples/vue/basic/eslint.config.js b/examples/vue/basic/eslint.config.js
new file mode 100644
index 00000000..798ef69f
--- /dev/null
+++ b/examples/vue/basic/eslint.config.js
@@ -0,0 +1,17 @@
+// @ts-check
+
+import pluginVue from 'eslint-plugin-vue'
+import rootConfig from '../../eslint.config.js'
+
+export default [
+ ...rootConfig,
+ ...pluginVue.configs['flat/recommended'],
+ {
+ files: ['*.vue', '**/*.vue'],
+ languageOptions: {
+ parserOptions: {
+ parser: '@typescript-eslint/parser',
+ },
+ },
+ },
+]
diff --git a/examples/vue/basic/index.html b/examples/vue/basic/index.html
new file mode 100644
index 00000000..ed941ab1
--- /dev/null
+++ b/examples/vue/basic/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+ Vue Query Example
+
+
+
+
+
+
diff --git a/examples/vue/basic/package.json b/examples/vue/basic/package.json
new file mode 100644
index 00000000..c1fd2ba0
--- /dev/null
+++ b/examples/vue/basic/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "@tanstack/query-example-vue-basic",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@tanstack/devtools": "^0.6.22",
+ "@tanstack/vue-devtools": "^0.1.0",
+ "@tanstack/vue-query": "^5.90.5",
+ "@tanstack/vue-query-devtools": "^6.1.0",
+ "vue": "^3.5.22"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^6.0.1",
+ "typescript": "~5.9.2",
+ "vite": "^7.1.7"
+ }
+}
diff --git a/examples/vue/basic/src/App.vue b/examples/vue/basic/src/App.vue
new file mode 100644
index 00000000..6db82508
--- /dev/null
+++ b/examples/vue/basic/src/App.vue
@@ -0,0 +1,60 @@
+
+
+
+ Vue Query - Basic
+
+ As you visit the posts below, you will notice them in a loading state the
+ first time you load them. However, after you return to this list and click
+ on any posts you have already visited again, you will see them load
+ instantly and background refresh right before your eyes!
+
+ (You may need to throttle your network speed to simulate longer loading
+ sequences)
+
+
+
+
+
+
diff --git a/examples/vue/basic/src/Post.vue b/examples/vue/basic/src/Post.vue
new file mode 100644
index 00000000..003cf2a6
--- /dev/null
+++ b/examples/vue/basic/src/Post.vue
@@ -0,0 +1,51 @@
+
+
+
+ Post {{ postId }}
+ Back
+ Loading...
+ An error has occurred: {{ error }}
+
+
{{ data.title }}
+
+
Background Updating...
+
+
+
+
diff --git a/examples/vue/basic/src/Posts.vue b/examples/vue/basic/src/Posts.vue
new file mode 100644
index 00000000..be192a10
--- /dev/null
+++ b/examples/vue/basic/src/Posts.vue
@@ -0,0 +1,55 @@
+
+
+
+ Posts
+ Loading...
+ An error has occurred: {{ error }}
+
+
+
+
diff --git a/examples/vue/basic/src/main.ts b/examples/vue/basic/src/main.ts
new file mode 100644
index 00000000..e8ac89a8
--- /dev/null
+++ b/examples/vue/basic/src/main.ts
@@ -0,0 +1,6 @@
+import { createApp } from 'vue'
+import { VueQueryPlugin } from '@tanstack/vue-query'
+
+import App from './App.vue'
+
+createApp(App).use(VueQueryPlugin).mount('#app')
diff --git a/examples/vue/basic/src/shims-vue.d.ts b/examples/vue/basic/src/shims-vue.d.ts
new file mode 100644
index 00000000..b07a0596
--- /dev/null
+++ b/examples/vue/basic/src/shims-vue.d.ts
@@ -0,0 +1,6 @@
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue'
+
+ const component: DefineComponent<{}, {}, any>
+ export default component
+}
diff --git a/examples/vue/basic/src/types.d.ts b/examples/vue/basic/src/types.d.ts
new file mode 100644
index 00000000..4851e810
--- /dev/null
+++ b/examples/vue/basic/src/types.d.ts
@@ -0,0 +1,6 @@
+export interface Post {
+ userId: number
+ id: number
+ title: string
+ body: string
+}
diff --git a/examples/vue/basic/tsconfig.json b/examples/vue/basic/tsconfig.json
new file mode 100644
index 00000000..62eb2b16
--- /dev/null
+++ b/examples/vue/basic/tsconfig.json
@@ -0,0 +1,24 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "Bundler",
+ "allowImportingTsExtensions": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "preserve",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.vue"]
+}
diff --git a/examples/vue/basic/vite.config.ts b/examples/vue/basic/vite.config.ts
new file mode 100644
index 00000000..b5974119
--- /dev/null
+++ b/examples/vue/basic/vite.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+
+export default defineConfig({
+ plugins: [vue()],
+ optimizeDeps: {
+ exclude: ['@tanstack/vue-query', 'vue-demi'],
+ },
+})
diff --git a/package.json b/package.json
index bc949e0d..c74510b7 100644
--- a/package.json
+++ b/package.json
@@ -72,7 +72,7 @@
"prettier": "^3.6.2",
"prettier-plugin-svelte": "^3.4.0",
"publint": "^0.3.13",
- "sherif": "^1.6.1",
+ "sherif": "^1.7.0",
"size-limit": "^11.2.0",
"tinyglobby": "^0.2.15",
"typescript": "~5.9.2",
diff --git a/packages/devtools-utils/package.json b/packages/devtools-utils/package.json
index ef29abbb..668b22cc 100644
--- a/packages/devtools-utils/package.json
+++ b/packages/devtools-utils/package.json
@@ -53,7 +53,8 @@
"peerDependencies": {
"@types/react": ">=19.0.0",
"react": ">=19.0.0",
- "solid-js": ">=1.9.7"
+ "solid-js": ">=1.9.7",
+ "vue": ">=3.2.0"
},
"peerDependenciesMeta": {
"react": {
@@ -64,6 +65,9 @@
},
"solid-js": {
"optional": true
+ },
+ "vue": {
+ "optional": true
}
},
"files": [
diff --git a/packages/devtools-utils/src/vue/index.ts b/packages/devtools-utils/src/vue/index.ts
new file mode 100644
index 00000000..37bc5ffd
--- /dev/null
+++ b/packages/devtools-utils/src/vue/index.ts
@@ -0,0 +1,2 @@
+export * from './panel'
+export * from './plugin'
diff --git a/packages/devtools-utils/src/vue/panel.ts b/packages/devtools-utils/src/vue/panel.ts
new file mode 100644
index 00000000..b8dfbe19
--- /dev/null
+++ b/packages/devtools-utils/src/vue/panel.ts
@@ -0,0 +1,71 @@
+import { defineComponent, h, onMounted, onUnmounted, ref } from 'vue'
+import type { DefineComponent } from 'vue'
+
+export interface DevtoolsPanelProps {
+ theme?: 'dark' | 'light' | 'system'
+}
+
+export function createVuePanel<
+ TComponentProps extends DevtoolsPanelProps,
+ TCoreDevtoolsClass extends {
+ mount: (el: HTMLElement, theme?: DevtoolsPanelProps['theme']) => void
+ unmount: () => void
+ },
+>(CoreClass: new (props: TComponentProps) => TCoreDevtoolsClass) {
+ const props = {
+ theme: {
+ type: String as () => DevtoolsPanelProps['theme'],
+ },
+ devtoolsProps: {
+ type: Object as () => TComponentProps,
+ },
+ }
+
+ const Panel = defineComponent({
+ props,
+ setup(config) {
+ const devToolRef = ref(null)
+ const devtools = ref(null)
+
+ onMounted(() => {
+ const instance = new CoreClass(config.devtoolsProps as TComponentProps)
+ devtools.value = instance
+
+ if (devToolRef.value) {
+ instance.mount(devToolRef.value, config.theme)
+ }
+ })
+
+ onUnmounted(() => {
+ if (devToolRef.value && devtools.value) {
+ devtools.value.unmount()
+ }
+ })
+
+ return () => {
+ return h('div', {
+ style: { height: '100%' },
+ ref: devToolRef,
+ })
+ }
+ },
+ })
+
+ const NoOpPanel = defineComponent({
+ props,
+ setup() {
+ return () => null
+ },
+ })
+
+ return [Panel, NoOpPanel] as unknown as [
+ DefineComponent<{
+ theme?: DevtoolsPanelProps['theme']
+ devtoolsProps: TComponentProps
+ }>,
+ DefineComponent<{
+ theme?: DevtoolsPanelProps['theme']
+ devtoolsProps: TComponentProps
+ }>,
+ ]
+}
diff --git a/packages/devtools-utils/src/vue/plugin.ts b/packages/devtools-utils/src/vue/plugin.ts
new file mode 100644
index 00000000..a2c20586
--- /dev/null
+++ b/packages/devtools-utils/src/vue/plugin.ts
@@ -0,0 +1,23 @@
+import { Fragment } from 'vue'
+import type { DefineComponent } from 'vue'
+
+export function createVuePlugin>(
+ name: string,
+ component: DefineComponent,
+) {
+ function Plugin(props: TComponentProps) {
+ return {
+ name,
+ component,
+ props,
+ }
+ }
+ function NoOpPlugin(props: TComponentProps) {
+ return {
+ name,
+ component: Fragment,
+ props,
+ }
+ }
+ return [Plugin, NoOpPlugin] as const
+}
diff --git a/packages/devtools/src/context/devtools-context.tsx b/packages/devtools/src/context/devtools-context.tsx
index fff9a3ac..d92855df 100644
--- a/packages/devtools/src/context/devtools-context.tsx
+++ b/packages/devtools/src/context/devtools-context.tsx
@@ -73,6 +73,8 @@ export interface TanStackDevtoolsPlugin {
el: HTMLDivElement,
theme: DevtoolsStore['settings']['theme'],
) => void
+
+ destroy?: (pluginId: string) => void
}
export const DevtoolsContext = createContext<{
store: DevtoolsStore
diff --git a/packages/devtools/src/context/use-devtools-context.ts b/packages/devtools/src/context/use-devtools-context.ts
index 217c3d6b..a8b94786 100644
--- a/packages/devtools/src/context/use-devtools-context.ts
+++ b/packages/devtools/src/context/use-devtools-context.ts
@@ -48,6 +48,14 @@ export const usePlugins = () => {
setStore((prev) => {
const isActive = prev.state.activePlugins.includes(pluginId)
+ const currentPlugin = store.plugins?.find(
+ (plugin) => plugin.id === pluginId,
+ )
+
+ if (currentPlugin?.destroy && isActive) {
+ currentPlugin.destroy(pluginId)
+ }
+
const updatedPlugins = isActive
? prev.state.activePlugins.filter((id) => id !== pluginId)
: [...prev.state.activePlugins, pluginId]
diff --git a/packages/vue-devtools/CHANGELOG.md b/packages/vue-devtools/CHANGELOG.md
new file mode 100644
index 00000000..911e8117
--- /dev/null
+++ b/packages/vue-devtools/CHANGELOG.md
@@ -0,0 +1,7 @@
+# @tanstack/vue-devtools
+
+## 0.1.0
+
+### Minor Changes
+
+- Initial release of @tanstack/vue-devtools
diff --git a/packages/vue-devtools/README.md b/packages/vue-devtools/README.md
new file mode 100644
index 00000000..32aa525a
--- /dev/null
+++ b/packages/vue-devtools/README.md
@@ -0,0 +1,46 @@
+# @tanstack/vue-devtools
+
+This package is still under active development and might have breaking changes in the future. Please use it with caution.
+
+## Usage
+
+```vue
+
+
+
+
+
+```
+
+## Creating plugins
+
+In order to create a plugin for TanStack Devtools, you can use the `plugins` prop of the `TanStackDevtools` component. Here's an example of how to create a simple plugin:
+
+```vue
+
+
+
+
+
+```
diff --git a/packages/vue-devtools/eslint.config.js b/packages/vue-devtools/eslint.config.js
new file mode 100644
index 00000000..798ef69f
--- /dev/null
+++ b/packages/vue-devtools/eslint.config.js
@@ -0,0 +1,17 @@
+// @ts-check
+
+import pluginVue from 'eslint-plugin-vue'
+import rootConfig from '../../eslint.config.js'
+
+export default [
+ ...rootConfig,
+ ...pluginVue.configs['flat/recommended'],
+ {
+ files: ['*.vue', '**/*.vue'],
+ languageOptions: {
+ parserOptions: {
+ parser: '@typescript-eslint/parser',
+ },
+ },
+ },
+]
diff --git a/packages/vue-devtools/package.json b/packages/vue-devtools/package.json
new file mode 100644
index 00000000..cd205631
--- /dev/null
+++ b/packages/vue-devtools/package.json
@@ -0,0 +1,58 @@
+{
+ "name": "@tanstack/vue-devtools",
+ "version": "0.0.1",
+ "description": "TanStack Devtools is a set of tools for building advanced devtools for your Vue application.",
+ "author": "Damian Osipiuk",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/TanStack/devtools.git",
+ "directory": "packages/vue-devtools"
+ },
+ "homepage": "https://tanstack.com/devtools",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "keywords": [
+ "vue",
+ "devtools"
+ ],
+ "type": "module",
+ "types": "dist/esm/index.d.ts",
+ "module": "dist/esm/index.js",
+ "exports": {
+ ".": {
+ "import": {
+ "types": "./dist/esm/index.d.ts",
+ "default": "./dist/esm/index.js"
+ }
+ },
+ "./package.json": "./package.json"
+ },
+ "sideEffects": false,
+ "engines": {
+ "node": ">=18"
+ },
+ "files": [
+ "dist",
+ "src"
+ ],
+ "scripts": {
+ "clean": "premove ./build ./dist",
+ "test:eslint": "eslint ./src",
+ "test:lib": "vitest --passWithNoTests",
+ "test:lib:dev": "pnpm test:lib --watch",
+ "test:types": "tsc",
+ "test:build": "publint --strict",
+ "build": "vite build"
+ },
+ "dependencies": {
+ "@tanstack/devtools": "workspace:*"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^6.0.1",
+ "eslint-plugin-vue": "^10.5.1",
+ "vue": "^3.5.22"
+ }
+}
diff --git a/packages/vue-devtools/src/index.ts b/packages/vue-devtools/src/index.ts
new file mode 100644
index 00000000..9f26f747
--- /dev/null
+++ b/packages/vue-devtools/src/index.ts
@@ -0,0 +1,8 @@
+import Devtools from './vue-devtools.vue'
+
+export const TanStackDevtools = Devtools
+
+export type {
+ TanStackDevtoolsVuePlugin,
+ TanStackDevtoolsVueInit,
+} from './types'
diff --git a/packages/vue-devtools/src/shims-vue.d.ts b/packages/vue-devtools/src/shims-vue.d.ts
new file mode 100644
index 00000000..b07a0596
--- /dev/null
+++ b/packages/vue-devtools/src/shims-vue.d.ts
@@ -0,0 +1,6 @@
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue'
+
+ const component: DefineComponent<{}, {}, any>
+ export default component
+}
diff --git a/packages/vue-devtools/src/types.ts b/packages/vue-devtools/src/types.ts
new file mode 100644
index 00000000..68c4bf73
--- /dev/null
+++ b/packages/vue-devtools/src/types.ts
@@ -0,0 +1,53 @@
+import type { Component } from 'vue'
+import type {
+ ClientEventBusConfig,
+ TanStackDevtoolsConfig,
+} from '@tanstack/devtools'
+
+export type TanStackDevtoolsVuePlugin = {
+ id?: string
+ component: Component
+ name: string | Component
+ props?: Record
+}
+
+export interface TanStackDevtoolsVueInit {
+ /**
+ * Array of plugins to be used in the devtools.
+ * Each plugin should have a `render` prop that returns a Vue component
+ *
+ * Example:
+ * ```vue
+ *
+ *
+ *
+ *
+ *
+ * ```
+ */
+ plugins?: Array
+ /**
+ * Configuration for the devtools shell. These configuration options are used to set the
+ * initial state of the devtools when it is started for the first time. Afterwards,
+ * the settings are persisted in local storage and changed through the settings panel.
+ */
+ config?: Partial
+ /**
+ * Configuration for the TanStack Devtools client event bus.
+ */
+ eventBusConfig?: ClientEventBusConfig
+}
+
+export type RenderArray = Array<{
+ id: string
+ component: Component
+ props: Record
+}>
diff --git a/packages/vue-devtools/src/vue-devtools.vue b/packages/vue-devtools/src/vue-devtools.vue
new file mode 100644
index 00000000..64714a27
--- /dev/null
+++ b/packages/vue-devtools/src/vue-devtools.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/vue-devtools/tsconfig.docs.json b/packages/vue-devtools/tsconfig.docs.json
new file mode 100644
index 00000000..0a7802de
--- /dev/null
+++ b/packages/vue-devtools/tsconfig.docs.json
@@ -0,0 +1,9 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "paths": {
+ "@tanstack/devtools": ["../devtools/src"]
+ }
+ },
+ "include": ["src"]
+}
diff --git a/packages/vue-devtools/tsconfig.json b/packages/vue-devtools/tsconfig.json
new file mode 100644
index 00000000..3acd44a0
--- /dev/null
+++ b/packages/vue-devtools/tsconfig.json
@@ -0,0 +1,5 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {},
+ "include": ["src", "eslint.config.js", "vite.config.ts", "tests"]
+}
diff --git a/packages/vue-devtools/vite.config.ts b/packages/vue-devtools/vite.config.ts
new file mode 100644
index 00000000..dae5da82
--- /dev/null
+++ b/packages/vue-devtools/vite.config.ts
@@ -0,0 +1,26 @@
+import { defineConfig, mergeConfig } from 'vitest/config'
+import { tanstackViteConfig } from '@tanstack/config/vite'
+import vue from '@vitejs/plugin-vue'
+import packageJson from './package.json'
+
+const config = defineConfig({
+ plugins: [vue()],
+ test: {
+ name: packageJson.name,
+ dir: './tests',
+ watch: false,
+ environment: 'jsdom',
+ // setupFiles: ['./tests/test-setup.ts'],
+ globals: true,
+ },
+})
+
+export default mergeConfig(
+ config,
+ tanstackViteConfig({
+ entry: ['./src/index.ts'],
+ srcDir: './src',
+ externalDeps: ['vue'],
+ cjs: false,
+ }),
+)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 57373ee6..acd20e12 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -57,7 +57,7 @@ importers:
specifier: ^0.3.13
version: 0.3.15
sherif:
- specifier: ^1.6.1
+ specifier: ^1.7.0
version: 1.8.0
size-limit:
specifier: ^11.2.0
@@ -483,6 +483,34 @@ importers:
specifier: ^0.5.8
version: 0.5.8(@netlify/blobs@9.1.2)(@types/node@22.15.2)(db0@0.3.2(drizzle-orm@0.44.7(@opentelemetry/api@1.9.0)(@prisma/client@6.18.0(prisma@6.18.0(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3))(pg@8.16.3)(prisma@6.18.0(magicast@0.3.5)(typescript@5.9.3))))(drizzle-orm@0.44.7(@opentelemetry/api@1.9.0)(@prisma/client@6.18.0(prisma@6.18.0(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3))(pg@8.16.3)(prisma@6.18.0(magicast@0.3.5)(typescript@5.9.3)))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.30.2)(rolldown@1.0.0-beta.32)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
+ examples/vue/basic:
+ dependencies:
+ '@tanstack/devtools':
+ specifier: ^0.6.22
+ version: 0.6.24(csstype@3.1.3)(solid-js@1.9.10)
+ '@tanstack/vue-devtools':
+ specifier: ^0.1.0
+ version: link:../../../packages/vue-devtools
+ '@tanstack/vue-query':
+ specifier: ^5.90.5
+ version: 5.91.2(vue@3.5.25(typescript@5.9.3))
+ '@tanstack/vue-query-devtools':
+ specifier: ^6.1.0
+ version: 6.1.1(@tanstack/vue-query@5.91.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))
+ vue:
+ specifier: ^3.5.22
+ version: 3.5.25(typescript@5.9.3)
+ devDependencies:
+ '@vitejs/plugin-vue':
+ specifier: ^6.0.1
+ version: 6.0.2(vite@7.1.12(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))
+ typescript:
+ specifier: ~5.9.2
+ version: 5.9.3
+ vite:
+ specifier: ^7.1.7
+ version: 7.1.12(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
+
packages/devtools:
dependencies:
'@solid-primitives/event-listener':
@@ -559,6 +587,9 @@ importers:
solid-js:
specifier: '>=1.9.7'
version: 1.9.10
+ vue:
+ specifier: '>=3.2.0'
+ version: 3.5.25(typescript@5.9.3)
devDependencies:
tsup:
specifier: ^8.5.0
@@ -685,6 +716,22 @@ importers:
specifier: ^2.11.8
version: 2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.1.12(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))
+ packages/vue-devtools:
+ dependencies:
+ '@tanstack/devtools':
+ specifier: workspace:*
+ version: link:../devtools
+ devDependencies:
+ '@vitejs/plugin-vue':
+ specifier: ^6.0.1
+ version: 6.0.2(vite@7.1.12(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))
+ eslint-plugin-vue:
+ specifier: ^10.5.1
+ version: 10.6.0(@stylistic/eslint-plugin@5.4.0(eslint@9.39.0(jiti@2.6.1)))(@typescript-eslint/parser@8.44.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.0(jiti@2.6.1)))
+ vue:
+ specifier: ^3.5.22
+ version: 3.5.25(typescript@5.9.3)
+
packages:
'@acemir/cssom@0.9.19':
@@ -2306,6 +2353,9 @@ packages:
'@rolldown/pluginutils@1.0.0-beta.40':
resolution: {integrity: sha512-s3GeJKSQOwBlzdUrj4ISjJj5SfSh+aqn0wjOar4Bx95iV1ETI7F6S/5hLcfAxZ9kXDcyrAkxPlqmd1ZITttf+w==}
+ '@rolldown/pluginutils@1.0.0-beta.50':
+ resolution: {integrity: sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA==}
+
'@rollup/plugin-alias@5.1.1':
resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==}
engines: {node: '>=14.0.0'}
@@ -2744,16 +2794,34 @@ packages:
resolution: {integrity: sha512-CWVv5kK7QdfnrAyvUo31spmqZjn+zpxKRqsyJDhGY7I4QweJeCbRJrlhzH3trv18ZyW3thRvtiHWfX1MdUr2VA==}
engines: {node: '>=18'}
+ '@tanstack/devtools-client@0.0.3':
+ resolution: {integrity: sha512-kl0r6N5iIL3t9gGDRAv55VRM3UIyMKVH83esRGq7xBjYsRLe/BeCIN2HqrlJkObUXQMKhy7i8ejuGOn+bDqDBw==}
+ engines: {node: '>=18'}
+
+ '@tanstack/devtools-event-bus@0.3.3':
+ resolution: {integrity: sha512-lWl88uLAz7ZhwNdLH6A3tBOSEuBCrvnY9Fzr5JPdzJRFdM5ZFdyNWz1Bf5l/F3GU57VodrN0KCFi9OA26H5Kpg==}
+ engines: {node: '>=18'}
+
'@tanstack/devtools-event-client@0.3.4':
resolution: {integrity: sha512-eq+PpuutUyubXu+ycC1GIiVwBs86NF/8yYJJAKSpPcJLWl6R/761F1H4F/9ziX6zKezltFUH1ah3Cz8Ah+KJrw==}
engines: {node: '>=18'}
+ '@tanstack/devtools-event-client@0.3.5':
+ resolution: {integrity: sha512-RL1f5ZlfZMpghrCIdzl6mLOFLTuhqmPNblZgBaeKfdtk5rfbjykurv+VfYydOFXj0vxVIoA2d/zT7xfD7Ph8fw==}
+ engines: {node: '>=18'}
+
'@tanstack/devtools-ui@0.4.4':
resolution: {integrity: sha512-5xHXFyX3nom0UaNfiOM92o6ziaHjGo3mcSGe2HD5Xs8dWRZNpdZ0Smd0B9ddEhy0oB+gXyMzZgUJb9DmrZV0Mg==}
engines: {node: '>=18'}
peerDependencies:
solid-js: '>=1.9.7'
+ '@tanstack/devtools@0.6.24':
+ resolution: {integrity: sha512-z3J7k1EQ8yoUuUiEP3PtOcGBMz4bl16vFjoDIQ2izicu1yF332qVzth4wswzp7q91mj+RLetKglak7DZGi5ZKw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ solid-js: '>=1.9.7'
+
'@tanstack/directive-functions-plugin@1.121.21':
resolution: {integrity: sha512-B9z/HbF7gJBaRHieyX7f2uQ4LpLLAVAEutBZipH6w+CYD6RHRJvSVPzECGHF7icFhNWTiJQL2QR6K07s59yzEw==}
engines: {node: '>=12'}
@@ -2792,6 +2860,10 @@ packages:
resolution: {integrity: sha512-B7+x7eP2FFvi3fgd3rNH9o/Eixt+pp0zCIdGhnQbAJjFrlwIKGjGnwyJjhWJ5fMQlGks/E2LdDTqEV4W9Plx7g==}
engines: {node: '>=12'}
+ '@tanstack/match-sorter-utils@8.19.4':
+ resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==}
+ engines: {node: '>=12'}
+
'@tanstack/pacer@0.15.4':
resolution: {integrity: sha512-vGY+CWsFZeac3dELgB6UZ4c7OacwsLb8hvL2gLS6hTgy8Fl0Bm/aLokHaeDIP+q9F9HUZTnp360z9uv78eg8pg==}
engines: {node: '>=18'}
@@ -2800,12 +2872,18 @@ packages:
resolution: {integrity: sha512-URVXmXwlZXL75AFyvyOORef1tv2f16dEaFntwLYnBHoKLQMxyWYRzQrnXooxO1xf+GidJuDSZSC6Rc9UX1aK7g==}
engines: {node: '>=18'}
+ '@tanstack/query-core@5.90.10':
+ resolution: {integrity: sha512-EhZVFu9rl7GfRNuJLJ3Y7wtbTnENsvzp+YpcAV7kCYiXni1v8qZh++lpw4ch4rrwC0u/EZRnBHIehzCGzwXDSQ==}
+
'@tanstack/query-core@5.90.5':
resolution: {integrity: sha512-wLamYp7FaDq6ZnNehypKI5fNvxHPfTYylE0m/ZpuuzJfJqhR5Pxg9gvGBHZx4n7J+V5Rg5mZxHHTlv25Zt5u+w==}
'@tanstack/query-devtools@5.90.1':
resolution: {integrity: sha512-GtINOPjPUH0OegJExZ70UahT9ykmAhmtNVcmtdnOZbxLwT7R5OmRztR5Ahe3/Cu7LArEmR6/588tAycuaWb1xQ==}
+ '@tanstack/query-devtools@5.91.1':
+ resolution: {integrity: sha512-l8bxjk6BMsCaVQH6NzQEE/bEgFy1hAs5qbgXl0xhzezlaQbPk6Mgz9BqEg2vTLPOHD8N4k+w/gdgCbEzecGyNg==}
+
'@tanstack/react-form-devtools@0.1.8':
resolution: {integrity: sha512-FwXYLzLIGpqhHcg3sv81ioBBP+3+d2DPS8F+srXBZHuaJAHh6yhwDPAjhe5FlCK8X8+RlVtEbbD+4JXyWao8EQ==}
peerDependencies:
@@ -3096,6 +3174,21 @@ packages:
resolution: {integrity: sha512-werDRwJSqzY28fbOBQ+wP7pQ6jl6Y+EJ8mA/dABOJEq2iBbGLXAzGPywRji7x4zULhjBDS3chQrR3nE7NVcoDw==}
engines: {node: '>=18'}
+ '@tanstack/vue-query-devtools@6.1.1':
+ resolution: {integrity: sha512-ePyOqih9ngE/bLuug70j27ckw8dczjgJR3hmIj2NuNLCOBtd8BM0MT0/0w2FeW62+neh239ksv/qP9aR8pJnpQ==}
+ peerDependencies:
+ '@tanstack/vue-query': ^5.91.2
+ vue: ^3.3.0
+
+ '@tanstack/vue-query@5.91.2':
+ resolution: {integrity: sha512-ReppmGrVLtiWhwHnhmGJftBbVMf0BrLWtfOk6rQs0qWrhgCei1oUiLsqTCyES/zeZVqaUTmAuUpBrLwQ4DmQTQ==}
+ peerDependencies:
+ '@vue/composition-api': ^1.1.2
+ vue: ^2.6.0 || ^3.3.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+
'@testing-library/dom@10.4.1':
resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==}
engines: {node: '>=18'}
@@ -3420,6 +3513,13 @@ packages:
peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
+ '@vitejs/plugin-vue@6.0.2':
+ resolution: {integrity: sha512-iHmwV3QcVGGvSC1BG5bZ4z6iwa1SOpAPWmnjOErd4Ske+lZua5K9TtAVdx0gMBClJ28DViCbSmZitjWZsWO3LA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ peerDependencies:
+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0
+ vue: ^3.2.25
+
'@vitest/expect@3.2.4':
resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
@@ -3461,18 +3561,33 @@ packages:
'@vue/compiler-core@3.5.18':
resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==}
+ '@vue/compiler-core@3.5.25':
+ resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==}
+
'@vue/compiler-dom@3.5.18':
resolution: {integrity: sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==}
+ '@vue/compiler-dom@3.5.25':
+ resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==}
+
'@vue/compiler-sfc@3.5.18':
resolution: {integrity: sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==}
+ '@vue/compiler-sfc@3.5.25':
+ resolution: {integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==}
+
'@vue/compiler-ssr@3.5.18':
resolution: {integrity: sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==}
+ '@vue/compiler-ssr@3.5.25':
+ resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==}
+
'@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
+ '@vue/devtools-api@6.6.4':
+ resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
+
'@vue/language-core@2.1.6':
resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==}
peerDependencies:
@@ -3481,9 +3596,26 @@ packages:
typescript:
optional: true
+ '@vue/reactivity@3.5.25':
+ resolution: {integrity: sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==}
+
+ '@vue/runtime-core@3.5.25':
+ resolution: {integrity: sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==}
+
+ '@vue/runtime-dom@3.5.25':
+ resolution: {integrity: sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==}
+
+ '@vue/server-renderer@3.5.25':
+ resolution: {integrity: sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==}
+ peerDependencies:
+ vue: 3.5.25
+
'@vue/shared@3.5.18':
resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==}
+ '@vue/shared@3.5.25':
+ resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==}
+
'@whatwg-node/disposablestack@0.0.6':
resolution: {integrity: sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==}
engines: {node: '>=18.0.0'}
@@ -4087,6 +4219,11 @@ packages:
css.escape@1.5.1:
resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
+ cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
cssstyle@5.3.2:
resolution: {integrity: sha512-zDMqXh8Vs1CdRYZQ2M633m/SFgcjlu8RB8b/1h82i+6vpArF507NSYIWJHGlJaTWoS+imcnctmEz43txhbVkOw==}
engines: {node: '>=20'}
@@ -4727,6 +4864,20 @@ packages:
'@typescript-eslint/eslint-plugin':
optional: true
+ eslint-plugin-vue@10.6.0:
+ resolution: {integrity: sha512-TsoFluWxOpsJlE/l2jJygLQLWBPJ3Qdkesv7tBIunICbTcG0dS1/NBw/Ol4tJw5kHWlAVds4lUmC29/vlPUcEQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
+ '@typescript-eslint/parser': ^7.0.0 || ^8.0.0
+ eslint: ^8.57.0 || ^9.0.0
+ vue-eslint-parser: ^10.0.0
+ peerDependenciesMeta:
+ '@stylistic/eslint-plugin':
+ optional: true
+ '@typescript-eslint/parser':
+ optional: true
+
eslint-scope@8.4.0:
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -5712,6 +5863,9 @@ packages:
magic-string@0.30.19:
resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==}
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+
magicast@0.2.11:
resolution: {integrity: sha512-6saXbRDA1HMkqbsvHOU6HBjCVgZT460qheRkLhJQHWAbhXoWESI3Kn/dGGXyKs15FFKR85jsUqFx2sMK0wy/5g==}
@@ -6293,6 +6447,10 @@ packages:
yaml:
optional: true
+ postcss-selector-parser@7.1.0:
+ resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==}
+ engines: {node: '>=4'}
+
postcss-values-parser@6.0.2:
resolution: {integrity: sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==}
engines: {node: '>=10'}
@@ -6528,6 +6686,9 @@ packages:
regex@5.1.1:
resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==}
+ remove-accents@0.5.0:
+ resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==}
+
remove-trailing-separator@1.1.0:
resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==}
@@ -7651,12 +7812,31 @@ packages:
vscode-uri@3.1.0:
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
+ vue-demi@0.14.10:
+ resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
+ engines: {node: '>=12'}
+ hasBin: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+
vue-eslint-parser@10.2.0:
resolution: {integrity: sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
+ vue@3.5.25:
+ resolution: {integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
w3c-xmlserializer@5.0.0:
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
engines: {node: '>=18'}
@@ -7776,6 +7956,10 @@ packages:
resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==}
engines: {node: '>=18'}
+ xml-name-validator@4.0.0:
+ resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
+ engines: {node: '>=12'}
+
xml-name-validator@5.0.0:
resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
engines: {node: '>=18'}
@@ -9536,6 +9720,8 @@ snapshots:
'@rolldown/pluginutils@1.0.0-beta.40':
optional: true
+ '@rolldown/pluginutils@1.0.0-beta.50': {}
+
'@rollup/plugin-alias@5.1.1(rollup@4.46.2)':
optionalDependencies:
rollup: 4.46.2
@@ -9986,8 +10172,21 @@ snapshots:
- typescript
- vite
+ '@tanstack/devtools-client@0.0.3':
+ dependencies:
+ '@tanstack/devtools-event-client': 0.3.5
+
+ '@tanstack/devtools-event-bus@0.3.3':
+ dependencies:
+ ws: 8.18.3
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
'@tanstack/devtools-event-client@0.3.4': {}
+ '@tanstack/devtools-event-client@0.3.5': {}
+
'@tanstack/devtools-ui@0.4.4(csstype@3.1.3)(solid-js@1.9.10)':
dependencies:
clsx: 2.1.1
@@ -9996,6 +10195,22 @@ snapshots:
transitivePeerDependencies:
- csstype
+ '@tanstack/devtools@0.6.24(csstype@3.1.3)(solid-js@1.9.10)':
+ dependencies:
+ '@solid-primitives/event-listener': 2.4.3(solid-js@1.9.10)
+ '@solid-primitives/keyboard': 1.3.3(solid-js@1.9.10)
+ '@solid-primitives/resize-observer': 2.1.3(solid-js@1.9.10)
+ '@tanstack/devtools-client': 0.0.3
+ '@tanstack/devtools-event-bus': 0.3.3
+ '@tanstack/devtools-ui': 0.4.4(csstype@3.1.3)(solid-js@1.9.10)
+ clsx: 2.1.1
+ goober: 2.1.18(csstype@3.1.3)
+ solid-js: 1.9.10
+ transitivePeerDependencies:
+ - bufferutil
+ - csstype
+ - utf-8-validate
+
'@tanstack/directive-functions-plugin@1.121.21(vite@7.1.12(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))':
dependencies:
'@babel/code-frame': 7.26.2
@@ -10074,6 +10289,10 @@ snapshots:
'@tanstack/history@1.133.28': {}
+ '@tanstack/match-sorter-utils@8.19.4':
+ dependencies:
+ remove-accents: 0.5.0
+
'@tanstack/pacer@0.15.4':
dependencies:
'@tanstack/devtools-event-client': 0.3.4
@@ -10088,10 +10307,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@tanstack/query-core@5.90.10': {}
+
'@tanstack/query-core@5.90.5': {}
'@tanstack/query-devtools@5.90.1': {}
+ '@tanstack/query-devtools@5.91.1': {}
+
'@tanstack/react-form-devtools@0.1.8(csstype@3.1.3)(react@19.1.1)(solid-js@1.9.10)':
dependencies:
'@tanstack/form-devtools': 0.1.8(csstype@3.1.3)(solid-js@1.9.10)
@@ -10664,6 +10887,20 @@ snapshots:
- typescript
- vite
+ '@tanstack/vue-query-devtools@6.1.1(@tanstack/vue-query@5.91.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))':
+ dependencies:
+ '@tanstack/query-devtools': 5.91.1
+ '@tanstack/vue-query': 5.91.2(vue@3.5.25(typescript@5.9.3))
+ vue: 3.5.25(typescript@5.9.3)
+
+ '@tanstack/vue-query@5.91.2(vue@3.5.25(typescript@5.9.3))':
+ dependencies:
+ '@tanstack/match-sorter-utils': 8.19.4
+ '@tanstack/query-core': 5.90.10
+ '@vue/devtools-api': 6.6.4
+ vue: 3.5.25(typescript@5.9.3)
+ vue-demi: 0.14.10(vue@3.5.25(typescript@5.9.3))
+
'@testing-library/dom@10.4.1':
dependencies:
'@babel/code-frame': 7.27.1
@@ -11049,6 +11286,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@vitejs/plugin-vue@6.0.2(vite@7.1.12(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))':
+ dependencies:
+ '@rolldown/pluginutils': 1.0.0-beta.50
+ vite: 7.1.12(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
+ vue: 3.5.25(typescript@5.9.3)
+
'@vitest/expect@3.2.4':
dependencies:
'@types/chai': 5.2.2
@@ -11111,11 +11354,24 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.2.1
+ '@vue/compiler-core@3.5.25':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@vue/shared': 3.5.25
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
+
'@vue/compiler-dom@3.5.18':
dependencies:
'@vue/compiler-core': 3.5.18
'@vue/shared': 3.5.18
+ '@vue/compiler-dom@3.5.25':
+ dependencies:
+ '@vue/compiler-core': 3.5.25
+ '@vue/shared': 3.5.25
+
'@vue/compiler-sfc@3.5.18':
dependencies:
'@babel/parser': 7.28.5
@@ -11128,16 +11384,35 @@ snapshots:
postcss: 8.5.6
source-map-js: 1.2.1
+ '@vue/compiler-sfc@3.5.25':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@vue/compiler-core': 3.5.25
+ '@vue/compiler-dom': 3.5.25
+ '@vue/compiler-ssr': 3.5.25
+ '@vue/shared': 3.5.25
+ estree-walker: 2.0.2
+ magic-string: 0.30.21
+ postcss: 8.5.6
+ source-map-js: 1.2.1
+
'@vue/compiler-ssr@3.5.18':
dependencies:
'@vue/compiler-dom': 3.5.18
'@vue/shared': 3.5.18
+ '@vue/compiler-ssr@3.5.25':
+ dependencies:
+ '@vue/compiler-dom': 3.5.25
+ '@vue/shared': 3.5.25
+
'@vue/compiler-vue2@2.7.16':
dependencies:
de-indent: 1.0.2
he: 1.2.0
+ '@vue/devtools-api@6.6.4': {}
+
'@vue/language-core@2.1.6(typescript@5.9.3)':
dependencies:
'@volar/language-core': 2.4.13
@@ -11151,8 +11426,32 @@ snapshots:
optionalDependencies:
typescript: 5.9.3
+ '@vue/reactivity@3.5.25':
+ dependencies:
+ '@vue/shared': 3.5.25
+
+ '@vue/runtime-core@3.5.25':
+ dependencies:
+ '@vue/reactivity': 3.5.25
+ '@vue/shared': 3.5.25
+
+ '@vue/runtime-dom@3.5.25':
+ dependencies:
+ '@vue/reactivity': 3.5.25
+ '@vue/runtime-core': 3.5.25
+ '@vue/shared': 3.5.25
+ csstype: 3.1.3
+
+ '@vue/server-renderer@3.5.25(vue@3.5.25(typescript@5.9.3))':
+ dependencies:
+ '@vue/compiler-ssr': 3.5.25
+ '@vue/shared': 3.5.25
+ vue: 3.5.25(typescript@5.9.3)
+
'@vue/shared@3.5.18': {}
+ '@vue/shared@3.5.25': {}
+
'@whatwg-node/disposablestack@0.0.6':
dependencies:
'@whatwg-node/promise-helpers': 1.3.2
@@ -11787,6 +12086,8 @@ snapshots:
css.escape@1.5.1: {}
+ cssesc@3.0.0: {}
+
cssstyle@5.3.2(postcss@8.5.6):
dependencies:
'@asamuzakjp/css-color': 4.0.4
@@ -12430,6 +12731,20 @@ snapshots:
optionalDependencies:
'@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-vue@10.6.0(@stylistic/eslint-plugin@5.4.0(eslint@9.39.0(jiti@2.6.1)))(@typescript-eslint/parser@8.44.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.0(jiti@2.6.1))):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1))
+ eslint: 9.39.0(jiti@2.6.1)
+ natural-compare: 1.4.0
+ nth-check: 2.1.1
+ postcss-selector-parser: 7.1.0
+ semver: 7.7.2
+ vue-eslint-parser: 10.2.0(eslint@9.39.0(jiti@2.6.1))
+ xml-name-validator: 4.0.0
+ optionalDependencies:
+ '@stylistic/eslint-plugin': 5.4.0(eslint@9.39.0(jiti@2.6.1))
+ '@typescript-eslint/parser': 8.44.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)
+
eslint-scope@8.4.0:
dependencies:
esrecurse: 4.3.0
@@ -13419,6 +13734,10 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
magicast@0.2.11:
dependencies:
'@babel/parser': 7.28.5
@@ -14108,6 +14427,11 @@ snapshots:
tsx: 4.20.3
yaml: 2.8.1
+ postcss-selector-parser@7.1.0:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
postcss-values-parser@6.0.2(postcss@8.5.6):
dependencies:
color-name: 1.1.4
@@ -14357,6 +14681,8 @@ snapshots:
dependencies:
regex-utilities: 2.3.0
+ remove-accents@0.5.0: {}
+
remove-trailing-separator@1.1.0: {}
require-directory@2.1.1: {}
@@ -14886,7 +15212,7 @@ snapshots:
esrap: 1.4.6
is-reference: 3.0.3
locate-character: 3.0.0
- magic-string: 0.30.19
+ magic-string: 0.30.21
zimmerframe: 1.1.2
swr@2.3.6(react@19.1.1):
@@ -15619,6 +15945,10 @@ snapshots:
vscode-uri@3.1.0: {}
+ vue-demi@0.14.10(vue@3.5.25(typescript@5.9.3)):
+ dependencies:
+ vue: 3.5.25(typescript@5.9.3)
+
vue-eslint-parser@10.2.0(eslint@9.39.0(jiti@2.6.1)):
dependencies:
debug: 4.4.3
@@ -15631,6 +15961,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ vue@3.5.25(typescript@5.9.3):
+ dependencies:
+ '@vue/compiler-dom': 3.5.25
+ '@vue/compiler-sfc': 3.5.25
+ '@vue/runtime-dom': 3.5.25
+ '@vue/server-renderer': 3.5.25(vue@3.5.25(typescript@5.9.3))
+ '@vue/shared': 3.5.25
+ optionalDependencies:
+ typescript: 5.9.3
+
w3c-xmlserializer@5.0.0:
dependencies:
xml-name-validator: 5.0.0
@@ -15747,6 +16087,8 @@ snapshots:
dependencies:
is-wsl: 3.1.0
+ xml-name-validator@4.0.0: {}
+
xml-name-validator@5.0.0: {}
xmlbuilder2@3.1.1: