diff --git a/eslint.config.js b/eslint.config.js index 490078186..da8e26cce 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -12,3 +12,6 @@ export default antfu({ 'no-console': 'off', }, }) + .removeRules( + 'vue/no-template-shadow', + ) diff --git a/package.json b/package.json index 5e280c799..cbb1b4691 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "@types/ws": "catalog:types", "@typescript-eslint/utils": "catalog:devtools", "@unocss/eslint-config": "catalog:devtools", + "@vueuse/core": "catalog:frontend", "ansis": "catalog:deps", "bumpp": "catalog:devtools", "esbuild": "catalog:build", diff --git a/packages/core/package.json b/packages/core/package.json index d454f697e..738de3204 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -62,11 +62,11 @@ "debug": "catalog:deps", "launch-editor": "catalog:deps", "mlly": "catalog:deps", - "nanoevents": "catalog:deps", "open": "catalog:deps", "pathe": "catalog:deps", "perfect-debounce": "catalog:deps", "sirv": "catalog:deps", + "tinyexec": "catalog:deps", "ws": "catalog:deps" }, "devDependencies": { diff --git a/packages/core/src/client/webcomponents/state/dock.ts b/packages/core/src/client/webcomponents/state/dock.ts index 1cfb9eb61..aebc4e9fe 100644 --- a/packages/core/src/client/webcomponents/state/dock.ts +++ b/packages/core/src/client/webcomponents/state/dock.ts @@ -1,7 +1,7 @@ import type { DevToolsDockEntry } from '@vitejs/devtools-kit' import type { ClientRpcReturn, DockEntryState, DockEntryStateEvents, DockPanelStorage, DocksContext } from '@vitejs/devtools-kit/client' import type { Ref, ShallowRef } from 'vue' -import { createNanoEvents } from 'nanoevents' +import { createEventEmitter } from '@vitejs/devtools-kit/utils/events' import { computed, markRaw, reactive, ref, shallowRef, watch, watchEffect } from 'vue' export function DEFAULT_DOCK_PANEL_STORE(): DockPanelStorage { @@ -20,7 +20,7 @@ function createDockEntryState( entry: DevToolsDockEntry, selected: Ref, ): DockEntryState { - const events = createNanoEvents() + const events = createEventEmitter() const state: DockEntryState = reactive({ entryMeta: entry, get isActive() { diff --git a/packages/core/src/node/context.ts b/packages/core/src/node/context.ts index d65c64c3f..92189a131 100644 --- a/packages/core/src/node/context.ts +++ b/packages/core/src/node/context.ts @@ -1,9 +1,11 @@ import type { DevToolsNodeContext } from '@vitejs/devtools-kit' import type { ResolvedConfig, ViteDevServer } from 'vite' import Debug from 'debug' +import { debounce } from 'perfect-debounce' import { ContextUtils } from './context-utils' import { DevToolsDockHost } from './host-docks' import { RpcFunctionsHost } from './host-functions' +import { DevToolsTerminalHost } from './host-terminals' import { DevToolsViewHost } from './host-views' import { builtinRpcFunctions } from './rpc' @@ -24,19 +26,27 @@ export async function createDevToolsContext( docks: undefined!, views: undefined!, utils: ContextUtils, + terminals: undefined!, } const rpcHost = new RpcFunctionsHost(context) const docksHost = new DevToolsDockHost(context) const viewsHost = new DevToolsViewHost(context) + const terminalsHost = new DevToolsTerminalHost(context) context.rpc = rpcHost context.docks = docksHost context.views = viewsHost + context.terminals = terminalsHost // Build-in function to list all RPC functions for (const fn of builtinRpcFunctions) { rpcHost.register(fn) } + // Register hosts side effects + docksHost.events.on('dock:entry:updated', debounce(() => { + rpcHost.boardcast.$callOptional('vite:core:list-dock-entries:updated') + }, 10)) + // Register plugins const plugins = viteConfig.plugins.filter(plugin => 'devtools' in plugin) diff --git a/packages/core/src/node/host-docks.ts b/packages/core/src/node/host-docks.ts index 12654dbbe..6a3281ff5 100644 --- a/packages/core/src/node/host-docks.ts +++ b/packages/core/src/node/host-docks.ts @@ -1,16 +1,13 @@ import type { DevToolsDockEntry, DevToolsDockHost as DevToolsDockHostType, DevToolsNodeContext } from '@vitejs/devtools-kit' -import { debounce } from 'perfect-debounce' +import { createEventEmitter } from '@vitejs/devtools-kit/utils/events' export class DevToolsDockHost implements DevToolsDockHostType { - public readonly views: Map = new Map() - private _sendOnChange: (() => void) + public readonly views: DevToolsDockHostType['views'] = new Map() + public readonly events: DevToolsDockHostType['events'] = createEventEmitter() constructor( public readonly context: DevToolsNodeContext, ) { - this._sendOnChange = debounce(() => { - context.rpc?.boardcast?.$callOptional('vite:core:list-dock-entries:updated') - }, 10) } values(): DevToolsDockEntry[] { @@ -22,7 +19,7 @@ export class DevToolsDockHost implements DevToolsDockHostType { throw new Error(`Dock with id "${view.id}" is already registered`) } this.views.set(view.id, view) - this._sendOnChange() + this.events.emit('dock:entry:updated', view) } update(view: DevToolsDockEntry): void { @@ -30,6 +27,6 @@ export class DevToolsDockHost implements DevToolsDockHostType { throw new Error(`Dock with id "${view.id}" is not registered. Use register() to add new docks.`) } this.views.set(view.id, view) - this._sendOnChange() + this.events.emit('dock:entry:updated', view) } } diff --git a/packages/core/src/node/host-terminals.ts b/packages/core/src/node/host-terminals.ts new file mode 100644 index 000000000..e5cee3d67 --- /dev/null +++ b/packages/core/src/node/host-terminals.ts @@ -0,0 +1,107 @@ +import type { DevToolsChildProcessTerminalOptions, DevToolsChildProcessTerminalSession, DevToolsNodeContext, DevToolsTerminalHost as DevToolsTerminalHostType, DevToolsTerminalSession, DevToolsTerminalSessionSerializable } from '@vitejs/devtools-kit' +import type { Result as TinyExecResult } from 'tinyexec' +import process from 'node:process' + +export class DevToolsTerminalHost implements DevToolsTerminalHostType { + constructor( + public readonly context: DevToolsNodeContext, + ) { + } + + readonly sessions: Map = new Map() + + serialize(session: DevToolsTerminalSession): DevToolsTerminalSessionSerializable { + return { + id: session.id, + title: session.title, + description: session.description, + status: session.status, + buffer: session.buffer ?? [], + } + } + + register(session: DevToolsTerminalSession): DevToolsTerminalSession { + if (this.sessions.has(session.id)) { + throw new Error(`Terminal session with id "${session.id}" already registered`) + } + this.sessions.set(session.id, session) + return session + } + + update(session: DevToolsTerminalSession): void { + if (!this.sessions.has(session.id)) { + throw new Error(`Terminal session with id "${session.id}" not registered`) + } + this.sessions.set(session.id, session) + } + + async startChildProcess(options: DevToolsChildProcessTerminalOptions): Promise { + if (this.sessions.has(options.id)) { + throw new Error(`Terminal session with id "${options.id}" already registered`) + } + const { exec } = await import('tinyexec') + + let controller: ReadableStreamDefaultController | undefined + const buffer = new ReadableStream({ + async start(_controller) { + controller = _controller + }, + }) + const writer = new WritableStream({ + write(chunk) { + controller?.enqueue(chunk) + }, + }) + + function createChildProcess() { + const cp = exec( + options.command, + options.args || [], + { + nodeOptions: { + env: { + COLORS: 'true', + FORCE_COLOR: 'true', + ...(options.env || {}), + }, + cwd: options.cwd ?? process.cwd(), + stdio: 'pipe', + }, + }, + ) + + const stream = new ReadableStream({ + async start(controller) { + for await (const chunk of cp) { + controller.enqueue(chunk) + } + }, + }) + stream.pipeTo(writer) + return cp + } + + let cp: TinyExecResult | undefined = createChildProcess() + + const restart = async () => { + cp?.kill() + cp = createChildProcess() + } + const terminate = async () => { + cp?.kill() + cp = undefined + } + + const session: DevToolsChildProcessTerminalSession = { + ...options, + status: 'running', + stream: buffer, + getChildProcess: () => cp?.process, + terminate, + restart, + } + this.sessions.set(session.id, session) + + return Promise.resolve(session) + } +} diff --git a/packages/core/src/node/rpc/list-terminals.ts b/packages/core/src/node/rpc/list-terminals.ts new file mode 100644 index 000000000..a6b3c56a3 --- /dev/null +++ b/packages/core/src/node/rpc/list-terminals.ts @@ -0,0 +1,13 @@ +import { defineRpcFunction } from '@vitejs/devtools-kit' + +export const listTerminals = defineRpcFunction({ + name: 'vite:core:list-terminals', + type: 'action', + setup: (context) => { + return { + async handler() { + return Array.from(context.terminals.sessions.values()) + }, + } + }, +}) diff --git a/packages/kit/package.json b/packages/kit/package.json index 391f95ec7..c1bea50c0 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -21,6 +21,7 @@ "exports": { ".": "./dist/index.mjs", "./client": "./dist/client.mjs", + "./utils/events": "./dist/utils/events.mjs", "./package.json": "./package.json" }, "main": "./dist/index.mjs", @@ -40,8 +41,7 @@ "dependencies": { "@vitejs/devtools-rpc": "workspace:*", "birpc": "catalog:deps", - "birpc-x": "catalog:deps", - "nanoevents": "catalog:deps" + "birpc-x": "catalog:deps" }, "devDependencies": { "tsdown": "catalog:build", diff --git a/packages/kit/src/client/docks.ts b/packages/kit/src/client/docks.ts index 65fee4ef1..5b85a633f 100644 --- a/packages/kit/src/client/docks.ts +++ b/packages/kit/src/client/docks.ts @@ -1,7 +1,6 @@ import type { RpcFunctionsCollector } from 'birpc-x' -import type { Emitter as EventsEmitter } from 'nanoevents' import type { Raw } from 'vue' -import type { DevToolsDockEntry, DevToolsRpcClientFunctions } from '../types' +import type { DevToolsDockEntry, DevToolsRpcClientFunctions, EventEmitter } from '../types' import type { DevToolsRpcClient } from './rpc' export interface DockPanelStorage { @@ -78,7 +77,7 @@ export interface DockEntryState { iframe?: HTMLIFrameElement | null panel?: HTMLDivElement | null } - events: Raw> + events: Raw> } export interface DockEntryStateEvents { diff --git a/packages/kit/src/index.ts b/packages/kit/src/index.ts index 4688a4ad4..4007eccc8 100644 --- a/packages/kit/src/index.ts +++ b/packages/kit/src/index.ts @@ -1,2 +1,2 @@ export type * from './types' -export * from './utils/rpc' +export * from './utils/define' diff --git a/packages/kit/src/types/docks.ts b/packages/kit/src/types/docks.ts index 3491f036c..aea455085 100644 --- a/packages/kit/src/types/docks.ts +++ b/packages/kit/src/types/docks.ts @@ -1,12 +1,17 @@ -// TODO: refine categories more clearly +import type { EventEmitter } from './events' export interface DevToolsDockHost { views: Map + events: EventEmitter<{ + 'dock:entry:updated': (entry: DevToolsDockEntry) => void + }> + register: (entry: DevToolsDockEntry) => void update: (entry: DevToolsDockEntry) => void values: () => DevToolsDockEntry[] } +// TODO: refine categories more clearly export type DevToolsDockEntryCategory = 'app' | 'framework' | 'web' | 'advanced' | 'default' export type DevToolsDockEntryIcon = string | { light: string, dark: string } diff --git a/packages/kit/src/types/events.ts b/packages/kit/src/types/events.ts new file mode 100644 index 000000000..d62142137 --- /dev/null +++ b/packages/kit/src/types/events.ts @@ -0,0 +1,51 @@ +export interface EventsMap { + [event: string]: any +} + +export interface EventUnsubscribe { + (): void +} + +export interface EventEmitter { + /** + * Calls each of the listeners registered for a given event. + * + * ```js + * ee.emit('tick', tickType, tickDuration) + * ``` + * + * @param event The event name. + * @param args The arguments for listeners. + */ + emit: ( + this: this, + event: K, + ...args: Parameters + ) => void + + /** + * Event names in keys and arrays with listeners in values. + * + * @internal + */ + _listeners: Partial<{ [E in keyof Events]: Events[E][] }> + + /** + * Add a listener for a given event. + * + * ```js + * const unbind = ee.on('tick', (tickType, tickDuration) => { + * count += 1 + * }) + * + * disable () { + * unbind() + * } + * ``` + * + * @param event The event name. + * @param cb The listener function. + * @returns Unbind listener from event. + */ + on: (this: this, event: K, cb: Events[K]) => EventUnsubscribe +} diff --git a/packages/kit/src/types/index.ts b/packages/kit/src/types/index.ts index 95671903b..3c19b231b 100644 --- a/packages/kit/src/types/index.ts +++ b/packages/kit/src/types/index.ts @@ -1,6 +1,8 @@ export * from './docks' +export * from './events' export * from './rpc' export * from './rpc-augments' +export * from './terminals' export * from './utils' export * from './views' export * from './vite-augment' diff --git a/packages/kit/src/types/terminals.ts b/packages/kit/src/types/terminals.ts new file mode 100644 index 000000000..fdb546f77 --- /dev/null +++ b/packages/kit/src/types/terminals.ts @@ -0,0 +1,42 @@ +import type { ChildProcess } from 'node:child_process' + +export interface DevToolsTerminalHost { + readonly sessions: Map + + register: (session: DevToolsTerminalSession) => DevToolsTerminalSession + update: (session: DevToolsTerminalSession) => void + + serialize: (session: DevToolsTerminalSession) => DevToolsTerminalSessionSerializable + + startChildProcess: (options: DevToolsChildProcessTerminalOptions) => Promise +} + +export type DevToolsTerminalStatus = 'running' | 'stopped' | 'error' + +export interface DevToolsTerminalSessionBase { + id: string + title: string + description?: string +} + +export interface DevToolsTerminalSessionSerializable extends DevToolsTerminalSessionBase { + status: DevToolsTerminalStatus + buffer?: string[] +} + +export interface DevToolsTerminalSession extends DevToolsTerminalSessionSerializable { + stream?: ReadableStream +} + +export interface DevToolsChildProcessTerminalOptions extends DevToolsTerminalSessionBase { + command: string + args: string[] + cwd?: string + env?: Record +} + +export interface DevToolsChildProcessTerminalSession extends DevToolsTerminalSession { + getChildProcess: () => ChildProcess | undefined + terminate: () => Promise + restart: () => Promise +} diff --git a/packages/kit/src/types/vite-plugin.ts b/packages/kit/src/types/vite-plugin.ts index 666f883f4..7d6182bba 100644 --- a/packages/kit/src/types/vite-plugin.ts +++ b/packages/kit/src/types/vite-plugin.ts @@ -2,6 +2,7 @@ import type { ResolvedConfig, ViteDevServer } from 'vite' import type { DockClientScriptContext } from '../client' import type { ClientScriptEntry, DevToolsDockHost } from './docks' import type { RpcFunctionsHost } from './rpc' +import type { DevToolsTerminalHost } from './terminals' import type { DevToolsViewHost } from './views' export interface DevToolsCapabilities { @@ -26,6 +27,7 @@ export interface DevToolsNodeContext { docks: DevToolsDockHost views: DevToolsViewHost utils: DevToolsNodeUtils + terminals: DevToolsTerminalHost } export interface DevToolsNodeUtils { diff --git a/packages/kit/src/utils/rpc.ts b/packages/kit/src/utils/define.ts similarity index 100% rename from packages/kit/src/utils/rpc.ts rename to packages/kit/src/utils/define.ts diff --git a/packages/kit/src/utils/events.ts b/packages/kit/src/utils/events.ts new file mode 100644 index 000000000..203e97f33 --- /dev/null +++ b/packages/kit/src/utils/events.ts @@ -0,0 +1,36 @@ +import type { EventEmitter, EventsMap, EventUnsubscribe } from '../types/events' + +/** + * Create event emitter. + */ +export function createEventEmitter< + Events extends EventsMap, +>(): EventEmitter { + const _listeners: Partial<{ [E in keyof Events]: Events[E][] }> = {} + + return { + emit( + this: EventEmitter, + event: K, + ...args: Parameters + ) { + const callbacks = _listeners[event] || [] + for (let i = 0, length = callbacks.length; i < length; i++) { + const callback = callbacks[i] + if (callback) + callback(...args) + } + }, + _listeners, + on( + this: EventEmitter, + event: K, + cb: Events[K], + ): EventUnsubscribe { + ;(_listeners[event] ||= [] as Events[K][]).push(cb) + return () => { + _listeners[event] = _listeners[event]?.filter(i => cb !== i) as Events[K][] | undefined + } + }, + } +} diff --git a/packages/kit/tsdown.config.ts b/packages/kit/tsdown.config.ts index 70555737c..06749f779 100644 --- a/packages/kit/tsdown.config.ts +++ b/packages/kit/tsdown.config.ts @@ -2,8 +2,9 @@ import { defineConfig } from 'tsdown' export default defineConfig({ entry: { - index: 'src/index.ts', - client: 'src/client/index.ts', + 'index': 'src/index.ts', + 'utils/events': 'src/utils/events.ts', + 'client': 'src/client/index.ts', }, exports: true, clean: true, diff --git a/packages/vite/package.json b/packages/vite/package.json index 64d6954fd..e36047b1f 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -70,6 +70,7 @@ "@types/stream-json": "catalog:types", "@unocss/nuxt": "catalog:build", "@vueuse/components": "catalog:frontend", + "@vueuse/core": "catalog:frontend", "@vueuse/nuxt": "catalog:build", "@vueuse/router": "catalog:frontend", "codemirror": "catalog:frontend", diff --git a/packages/vite/src/nuxt.config.ts b/packages/vite/src/nuxt.config.ts index 0dc16e07f..87ec3a522 100644 --- a/packages/vite/src/nuxt.config.ts +++ b/packages/vite/src/nuxt.config.ts @@ -31,6 +31,7 @@ export default defineNuxtConfig({ alias: { '@vitejs/devtools-rpc': pkgPath('rpc/src'), '@vitejs/devtools-kit/client': pkgPath('kit/src/client/index.ts'), + '@vitejs/devtools-kit/utils/events': pkgPath('kit/src/utils/events.ts'), '@vitejs/devtools-kit': pkgPath('kit/src/index.ts'), '@vitejs/devtools-vite': pkgPath('vite/src/index.ts'), '@vitejs/devtools/client/inject': pkgPath('core/src/client/inject/index.ts'), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ec6f4502f..2b8265a45 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -70,9 +70,6 @@ catalogs: mrmime: specifier: ^2.0.1 version: 2.0.1 - nanoevents: - specifier: ^9.1.0 - version: 9.1.0 ohash: specifier: ^2.0.11 version: 2.0.11 @@ -100,6 +97,9 @@ catalogs: structured-clone-es: specifier: ^1.0.0 version: 1.0.0 + tinyexec: + specifier: ^1.0.2 + version: 1.0.2 tinyglobby: specifier: ^0.2.15 version: 0.2.15 @@ -169,6 +169,9 @@ catalogs: '@vueuse/components': specifier: ^14.0.0 version: 14.0.0 + '@vueuse/core': + specifier: ^14.0.0 + version: 14.0.0 '@vueuse/router': specifier: ^14.0.0 version: 14.0.0 @@ -387,6 +390,9 @@ importers: '@unocss/eslint-config': specifier: catalog:devtools version: 66.5.6(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@vueuse/core': + specifier: catalog:frontend + version: 14.0.0(vue@3.5.24(typescript@5.9.3)) ansis: specifier: catalog:deps version: 4.2.0 @@ -492,9 +498,6 @@ importers: mlly: specifier: catalog:deps version: 1.8.0 - nanoevents: - specifier: catalog:deps - version: 9.1.0 open: specifier: catalog:deps version: 11.0.0 @@ -507,6 +510,9 @@ importers: sirv: specifier: catalog:deps version: 3.0.2 + tinyexec: + specifier: catalog:deps + version: 1.0.2 vite: specifier: npm:rolldown-vite@^7.2.2 version: rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1) @@ -547,16 +553,13 @@ importers: birpc-x: specifier: catalog:deps version: 0.0.5 - nanoevents: - specifier: catalog:deps - version: 9.1.0 vite: specifier: npm:rolldown-vite@^7.2.2 version: rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1) devDependencies: tsdown: specifier: catalog:build - version: 0.16.1(@vitejs/devtools@0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)) + version: 0.16.1(@vitejs/devtools@0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)) packages/rpc: dependencies: @@ -569,7 +572,7 @@ importers: devDependencies: tsdown: specifier: catalog:build - version: 0.16.1(@vitejs/devtools@0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)) + version: 0.16.1(@vitejs/devtools@0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)) ws: specifier: catalog:deps version: 8.18.3 @@ -673,6 +676,9 @@ importers: '@vueuse/components': specifier: catalog:frontend version: 14.0.0(vue@3.5.24(typescript@5.9.3)) + '@vueuse/core': + specifier: catalog:frontend + version: 14.0.0(vue@3.5.24(typescript@5.9.3)) '@vueuse/nuxt': specifier: catalog:build version: 14.0.0(magicast@0.3.5)(nuxt@4.2.1(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@24.0.7)(@vue/compiler-sfc@3.5.24)(db0@0.3.4)(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-beta.47)(rollup@4.52.5)(terser@5.43.1)(tsx@4.20.6)(typescript@5.9.3)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue-tsc@3.1.4(typescript@5.9.3))(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) @@ -720,7 +726,7 @@ importers: version: 1.0.0 tsdown: specifier: catalog:build - version: 0.16.1(@vitejs/devtools@0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)) + version: 0.16.1(@vitejs/devtools@0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)) vite-hot-client: specifier: catalog:frontend version: 2.1.0(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1)) @@ -733,7 +739,7 @@ importers: devDependencies: tsdown: specifier: catalog:build - version: 0.16.1(@vitejs/devtools@0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)) + version: 0.16.1(@vitejs/devtools@0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)) tsx: specifier: catalog:build version: 4.20.6 @@ -1881,12 +1887,6 @@ packages: peerDependencies: '@pnpm/logger': '>=1001.0.0 <1002.0.0' - '@pnpm/read-project-manifest@1001.1.4': - resolution: {integrity: sha512-9MjtBhrMqUJRbUuCWT5SgE9esvIbnh5H6KbS+YDjFW7NDQ9kXbVULjM8IheuMris27bgF84pzfQkCBPBtqftqg==} - engines: {node: '>=18.12'} - peerDependencies: - '@pnpm/logger': '>=1001.0.0 <1002.0.0' - '@pnpm/read-project-manifest@1001.2.0': resolution: {integrity: sha512-01y/BcwNsPMPdIsauYN85V1svYEkPXK0NWbh6S8fdE1fC3EEiuuOk11nfyflmRhwz2OWkTgStZ4O+I0wxm7EHA==} engines: {node: '>=18.12'} @@ -1897,18 +1897,10 @@ packages: resolution: {integrity: sha512-ivv/esrETOq9uMiKOC0ddVZ1BktEGsfsMQ9RWmrDpwPiqFSqWsIspnquxTBmm5GflC5N06fbqjGOpulZVYo3vQ==} engines: {node: '>=18.12'} - '@pnpm/types@1000.9.0': - resolution: {integrity: sha512-UvDTCxnbyqkTg2X0dBOuZ4IdFJ8g4UFu0Ybv/5/cZAxCWVhNl1hC/Xc9hR4tZrlBL0NRFePLRhO/iw9LmA1lbw==} - engines: {node: '>=18.12'} - '@pnpm/types@1001.0.0': resolution: {integrity: sha512-9P7I8Zv8hvAO81+D5KVmwveH4nmxhBNFEEeb77YYPV72bkyqzKTR6I8OGEs7TNZ6gPHufF+lIyBVEqO6SMFpJA==} engines: {node: '>=18.12'} - '@pnpm/write-project-manifest@1000.0.11': - resolution: {integrity: sha512-UbOsTIW9lVqR6nXQzvYOvTJg8uGaXorlU7V4zIBPFsGff/PfCakQRIL6Y8klvGBPwarjjqLaZ5SHdm55G4I4wA==} - engines: {node: '>=18.12'} - '@pnpm/write-project-manifest@1000.0.12': resolution: {integrity: sha512-UbJeiLQtQQMbnYjp1ivqvhdmKzN/G5hBD1wCcOQWBSyqj9TU27IUbkDqaz3wSye0ZpbrtrJIhQXyVKyUHpqDXg==} engines: {node: '>=18.12'} @@ -2789,24 +2781,24 @@ packages: engines: {node: '>=18'} hasBin: true - '@vitejs/devtools-kit@0.0.0-alpha.17': - resolution: {integrity: sha512-/MCjCc9bqFcKg2p2jqFj3CLgSThJF1aPin0x9RcYa+qoWvlvctERFT2Y1lGtXHP41ppaOgiff4n7d5wkuSD+CQ==} + '@vitejs/devtools-kit@0.0.0-alpha.18': + resolution: {integrity: sha512-ddo3NiGDCgo+sjqfARUhn1H7sj2AmQoId+dEu0nzewEpwlMqNwKeRbO7NRCexI26ljwzUuKxVNm4B7wPChcxmg==} peerDependencies: vite: '*' - '@vitejs/devtools-rpc@0.0.0-alpha.17': - resolution: {integrity: sha512-L8b2en9zjwAQWrq+efv6hSIPmtrgC7gmqFCfVOa9wXzwarsT9oTA7W7PzJKIohaDp1yXkirYNczDPTb9KTof5A==} + '@vitejs/devtools-rpc@0.0.0-alpha.18': + resolution: {integrity: sha512-sbjJED7iprX9qrXFLXvvMZDV4L1QvViik7b6tO/ssOLsmvjUlha+UcTxbhdewCYjNUS3K9jwzwx3Ad2jmZ1YrQ==} peerDependencies: ws: '*' peerDependenciesMeta: ws: optional: true - '@vitejs/devtools-vite@0.0.0-alpha.17': - resolution: {integrity: sha512-hQMKu3vktHipNPtMC3FJ2t+Q/bWUGlD3/kj9k54ZDbdY8yzhf8kp/mtKMMTBhw9VrlScMXJS/svuIw8BAP5/aA==} + '@vitejs/devtools-vite@0.0.0-alpha.18': + resolution: {integrity: sha512-WP2TZ2ALrbFJSYywdEDEWE3X3NUP1EIKxom9nR9Hm46JJRA3s9KNSfQ48gLJXVeQVQ8EjBnJSjHAsAGL1rcvwQ==} - '@vitejs/devtools@0.0.0-alpha.17': - resolution: {integrity: sha512-swF7zLlANdVodTkL3+7zD9Gn6HJqTSwl16VbQqzDM/hHbv3jRZbkmhg2P4Ux3oqHcu/iwcego0xWi7PtZ6WMFA==} + '@vitejs/devtools@0.0.0-alpha.18': + resolution: {integrity: sha512-H7eRBVmrj6p9URe0w17RYuPlGl4v4FVTe77P1BfaJS6z7RxPpt6bkBrbM6AUSSzMtV0LgFS0XtgM8HyYbQjzZA==} hasBin: true peerDependencies: vite: '*' @@ -6514,9 +6506,6 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.1: - resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} - tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -6659,9 +6648,6 @@ packages: unconfig-core@7.4.1: resolution: {integrity: sha512-Bp/bPZjV2Vl/fofoA2OYLSnw1Z0MOhCX7zHnVCYrazpfZvseBbGhwcNQMxsg185Mqh7VZQqK3C8hFG/Dyng+yA==} - unconfig@7.4.0: - resolution: {integrity: sha512-KM0SrvIvwQXJnbiSzur1Y+5jHSLVPhS31H5qzgjDQxGqS3PWrH6X7TxYX/JTuTlItarHkZ9ePK9t01Q6wu1c4Q==} - unconfig@7.4.1: resolution: {integrity: sha512-uyQ7LElcGizrOGZyIq9KU+xkuEjcRf9IpmDTkCSYv5mEeZzrXSj6rb51C0L+WTedsmAoVxW9WKrLWhSwebIM9Q==} @@ -7317,14 +7303,14 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.5.0 - tinyexec: 1.0.1 + tinyexec: 1.0.2 '@antfu/ni@27.0.1': dependencies: ansis: 4.2.0 fzf: 0.5.2 package-manager-detector: 1.5.0 - tinyexec: 1.0.1 + tinyexec: 1.0.2 tinyglobby: 0.2.15 '@antfu/utils@9.3.0': {} @@ -8044,7 +8030,7 @@ snapshots: semver: 7.7.3 srvx: 0.9.5 std-env: 3.10.0 - tinyexec: 1.0.1 + tinyexec: 1.0.2 ufo: 1.6.1 youch: 4.1.0-beta.12 transitivePeerDependencies: @@ -8073,7 +8059,7 @@ snapshots: semver: 7.7.3 srvx: 0.9.5 std-env: 3.10.0 - tinyexec: 1.0.1 + tinyexec: 1.0.2 ufo: 1.6.1 youch: 4.1.0-beta.12 transitivePeerDependencies: @@ -8869,23 +8855,6 @@ snapshots: '@pnpm/logger': 1001.0.0 '@pnpm/types': 1001.0.0 - '@pnpm/read-project-manifest@1001.1.4(@pnpm/logger@1001.0.0)': - dependencies: - '@gwhitney/detect-indent': 7.0.1 - '@pnpm/error': 1000.0.5 - '@pnpm/graceful-fs': 1000.0.1 - '@pnpm/logger': 1001.0.0 - '@pnpm/text.comments-parser': 1000.0.0 - '@pnpm/types': 1000.9.0 - '@pnpm/write-project-manifest': 1000.0.11 - fast-deep-equal: 3.1.3 - is-windows: 1.0.2 - json5: 2.2.3 - parse-json: 5.2.0 - read-yaml-file: 2.1.0 - strip-bom: 4.0.0 - optional: true - '@pnpm/read-project-manifest@1001.2.0(@pnpm/logger@1001.0.0)': dependencies: '@gwhitney/detect-indent': 7.0.1 @@ -8907,20 +8876,8 @@ snapshots: dependencies: strip-comments-strings: 1.2.0 - '@pnpm/types@1000.9.0': - optional: true - '@pnpm/types@1001.0.0': {} - '@pnpm/write-project-manifest@1000.0.11': - dependencies: - '@pnpm/text.comments-parser': 1000.0.0 - '@pnpm/types': 1000.9.0 - json5: 2.2.3 - write-file-atomic: 5.0.1 - write-yaml-file: 5.0.0 - optional: true - '@pnpm/write-project-manifest@1000.0.12': dependencies: '@pnpm/text.comments-parser': 1000.0.0 @@ -9908,9 +9865,9 @@ snapshots: - rollup - supports-color - '@vitejs/devtools-kit@0.0.0-alpha.17(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3)': + '@vitejs/devtools-kit@0.0.0-alpha.18(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3)': dependencies: - '@vitejs/devtools-rpc': 0.0.0-alpha.17(ws@8.18.3) + '@vitejs/devtools-rpc': 0.0.0-alpha.18(ws@8.18.3) birpc: 2.8.0 birpc-x: 0.0.5 nanoevents: 9.1.0 @@ -9919,9 +9876,9 @@ snapshots: - ws optional: true - '@vitejs/devtools-kit@0.0.0-alpha.17(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3)': + '@vitejs/devtools-kit@0.0.0-alpha.18(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3)': dependencies: - '@vitejs/devtools-rpc': 0.0.0-alpha.17(ws@8.18.3) + '@vitejs/devtools-rpc': 0.0.0-alpha.18(ws@8.18.3) birpc: 2.8.0 birpc-x: 0.0.5 nanoevents: 9.1.0 @@ -9930,7 +9887,7 @@ snapshots: - ws optional: true - '@vitejs/devtools-rpc@0.0.0-alpha.17(ws@8.18.3)': + '@vitejs/devtools-rpc@0.0.0-alpha.18(ws@8.18.3)': dependencies: birpc: 2.8.0 structured-clone-es: 1.0.0 @@ -9938,13 +9895,13 @@ snapshots: ws: 8.18.3 optional: true - '@vitejs/devtools-vite@0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': + '@vitejs/devtools-vite@0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': dependencies: '@floating-ui/dom': 1.7.4 - '@pnpm/read-project-manifest': 1001.1.4(@pnpm/logger@1001.0.0) + '@pnpm/read-project-manifest': 1001.2.0(@pnpm/logger@1001.0.0) '@rolldown/debug': 1.0.0-beta.50 - '@vitejs/devtools-kit': 0.0.0-alpha.17(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3) - '@vitejs/devtools-rpc': 0.0.0-alpha.17(ws@8.18.3) + '@vitejs/devtools-kit': 0.0.0-alpha.18(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3) + '@vitejs/devtools-rpc': 0.0.0-alpha.18(ws@8.18.3) ansis: 4.2.0 birpc: 2.8.0 cac: 6.7.14 @@ -9962,7 +9919,7 @@ snapshots: split2: 4.2.0 structured-clone-es: 1.0.0 tinyglobby: 0.2.15 - unconfig: 7.4.0 + unconfig: 7.4.1 unstorage: 1.17.2(@netlify/blobs@9.1.2)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2) vue-virtual-scroller: 2.0.0-beta.8(vue@3.5.24(typescript@5.9.3)) ws: 8.18.3 @@ -9993,13 +9950,13 @@ snapshots: - vue optional: true - '@vitejs/devtools-vite@0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': + '@vitejs/devtools-vite@0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': dependencies: '@floating-ui/dom': 1.7.4 - '@pnpm/read-project-manifest': 1001.1.4(@pnpm/logger@1001.0.0) + '@pnpm/read-project-manifest': 1001.2.0(@pnpm/logger@1001.0.0) '@rolldown/debug': 1.0.0-beta.50 - '@vitejs/devtools-kit': 0.0.0-alpha.17(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3) - '@vitejs/devtools-rpc': 0.0.0-alpha.17(ws@8.18.3) + '@vitejs/devtools-kit': 0.0.0-alpha.18(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3) + '@vitejs/devtools-rpc': 0.0.0-alpha.18(ws@8.18.3) ansis: 4.2.0 birpc: 2.8.0 cac: 6.7.14 @@ -10017,7 +9974,7 @@ snapshots: split2: 4.2.0 structured-clone-es: 1.0.0 tinyglobby: 0.2.15 - unconfig: 7.4.0 + unconfig: 7.4.1 unstorage: 1.17.2(@netlify/blobs@9.1.2)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2) vue-virtual-scroller: 2.0.0-beta.8(vue@3.5.24(typescript@5.9.3)) ws: 8.18.3 @@ -10048,11 +10005,11 @@ snapshots: - vue optional: true - '@vitejs/devtools@0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': + '@vitejs/devtools@0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': dependencies: - '@vitejs/devtools-kit': 0.0.0-alpha.17(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3) - '@vitejs/devtools-rpc': 0.0.0-alpha.17(ws@8.18.3) - '@vitejs/devtools-vite': 0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) + '@vitejs/devtools-kit': 0.0.0-alpha.18(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3) + '@vitejs/devtools-rpc': 0.0.0-alpha.18(ws@8.18.3) + '@vitejs/devtools-vite': 0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) birpc: 2.8.0 birpc-x: 0.0.5 cac: 6.7.14 @@ -10060,7 +10017,7 @@ snapshots: launch-editor: 2.12.0 mlly: 1.8.0 nanoevents: 9.1.0 - open: 10.2.0 + open: 11.0.0 pathe: 2.0.3 perfect-debounce: 2.0.0 sirv: 3.0.2 @@ -10093,11 +10050,11 @@ snapshots: - vue optional: true - '@vitejs/devtools@0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': + '@vitejs/devtools@0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': dependencies: - '@vitejs/devtools-kit': 0.0.0-alpha.17(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3) - '@vitejs/devtools-rpc': 0.0.0-alpha.17(ws@8.18.3) - '@vitejs/devtools-vite': 0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) + '@vitejs/devtools-kit': 0.0.0-alpha.18(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(ws@8.18.3) + '@vitejs/devtools-rpc': 0.0.0-alpha.18(ws@8.18.3) + '@vitejs/devtools-vite': 0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) birpc: 2.8.0 birpc-x: 0.0.5 cac: 6.7.14 @@ -10105,7 +10062,7 @@ snapshots: launch-editor: 2.12.0 mlly: 1.8.0 nanoevents: 9.1.0 - open: 10.2.0 + open: 11.0.0 pathe: 2.0.3 perfect-debounce: 2.0.0 sirv: 3.0.2 @@ -10787,7 +10744,7 @@ snapshots: jsonc-parser: 3.3.1 package-manager-detector: 1.5.0 semver: 7.7.3 - tinyexec: 1.0.1 + tinyexec: 1.0.2 tinyglobby: 0.2.15 yaml: 2.8.1 transitivePeerDependencies: @@ -13037,7 +12994,8 @@ snapshots: nanoevents@6.0.2: {} - nanoevents@9.1.0: {} + nanoevents@9.1.0: + optional: true nanoid@3.3.11: {} @@ -13498,7 +13456,7 @@ snapshots: consola: 3.4.2 pathe: 2.0.3 pkg-types: 2.3.0 - tinyexec: 1.0.1 + tinyexec: 1.0.2 object-assign@4.1.1: {} @@ -14579,8 +14537,6 @@ snapshots: tinyexec@0.3.2: {} - tinyexec@1.0.1: {} - tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -14622,7 +14578,7 @@ snapshots: picomatch: 4.0.3 typescript: 5.9.3 - tsdown@0.16.1(@vitejs/devtools@0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)): + tsdown@0.16.1(@vitejs/devtools@0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)): dependencies: ansis: 4.2.0 cac: 6.7.14 @@ -14640,7 +14596,7 @@ snapshots: unconfig-core: 7.4.0 unrun: 0.2.6(synckit@0.11.11) optionalDependencies: - '@vitejs/devtools': 0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) + '@vitejs/devtools': 0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(rolldown-vite@7.2.2(@types/node@24.0.7)(esbuild@0.27.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) publint: 0.3.15 typescript: 5.9.3 transitivePeerDependencies: @@ -14651,7 +14607,7 @@ snapshots: - synckit - vue-tsc - tsdown@0.16.1(@vitejs/devtools@0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)): + tsdown@0.16.1(@vitejs/devtools@0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)))(publint@0.3.15)(synckit@0.11.11)(typescript@5.9.3)(vue-tsc@3.1.4(typescript@5.9.3)): dependencies: ansis: 4.2.0 cac: 6.7.14 @@ -14669,7 +14625,7 @@ snapshots: unconfig-core: 7.4.0 unrun: 0.2.6(synckit@0.11.11) optionalDependencies: - '@vitejs/devtools': 0.0.0-alpha.17(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) + '@vitejs/devtools': 0.0.0-alpha.18(@netlify/blobs@9.1.2)(@pnpm/logger@1001.0.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.8.2)(vite@7.2.2(@types/node@24.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) publint: 0.3.15 typescript: 5.9.3 transitivePeerDependencies: @@ -14777,15 +14733,6 @@ snapshots: '@quansync/fs': 0.1.5 quansync: 0.2.11 - unconfig@7.4.0: - dependencies: - '@quansync/fs': 0.1.5 - defu: 6.1.4 - jiti: 2.6.1 - quansync: 0.2.11 - unconfig-core: 7.4.0 - optional: true - unconfig@7.4.1: dependencies: '@quansync/fs': 0.1.5 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f6a82a654..fff2e9e22 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -37,7 +37,6 @@ catalogs: launch-editor: ^2.12.0 mlly: ^1.8.0 mrmime: ^2.0.1 - nanoevents: ^9.1.0 ohash: ^2.0.11 open: ^11.0.0 p-limit: ^7.2.0 @@ -47,6 +46,7 @@ catalogs: sirv: ^3.0.2 split2: ^4.2.0 structured-clone-es: ^1.0.0 + tinyexec: ^1.0.2 tinyglobby: ^0.2.15 unconfig: ^7.4.1 unstorage: ^1.17.2 @@ -73,6 +73,7 @@ catalogs: frontend: '@floating-ui/dom': ^1.7.4 '@vueuse/components': ^14.0.0 + '@vueuse/core': ^14.0.0 '@vueuse/router': ^14.0.0 codemirror: ^5.65.20 codemirror-theme-vars: ^0.1.2