diff --git a/packages/client/src/pages/graph.vue b/packages/client/src/pages/graph.vue index 873c002e..a8fdf027 100644 --- a/packages/client/src/pages/graph.vue +++ b/packages/client/src/pages/graph.vue @@ -4,11 +4,20 @@ import { Network } from 'vis-network' const bridgeRpc = useDevToolsBridgeRpc() -onDevToolsClientConnected(async () => { +async function fetchGraph() { const root = await bridgeRpc.root() bridgeRpc.getGraph().then((res) => { parseGraphRawData(res, root) }) +} + +let cleanupModuleUpdatedEffect: Function + +onDevToolsClientConnected(() => { + fetchGraph() + cleanupModuleUpdatedEffect = bridgeRpc.graphModuleUpdated(() => { + fetchGraph() + }) }) const container = ref() @@ -45,6 +54,7 @@ onMounted(() => { onUnmounted(() => { cleanupGraphRelatedStates() networkRef.value?.destroy() + cleanupModuleUpdatedEffect?.() }) const navbarRef = ref() diff --git a/packages/core/package.json b/packages/core/package.json index 52d1359d..74535170 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -35,9 +35,10 @@ "image-meta": "^0.2.0", "mitt": "^3.0.1", "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", "vite-dev-rpc": "^0.1.4", "vite-hot-client": "^0.2.3", - "vite-plugin-inspect": "^0.8.2" + "vite-plugin-inspect": "^0.8.3" }, "devDependencies": { "vue": "^3.4.15" diff --git a/packages/core/src/bridge/devtools.ts b/packages/core/src/bridge/devtools.ts index 74493680..8e58ee6d 100644 --- a/packages/core/src/bridge/devtools.ts +++ b/packages/core/src/bridge/devtools.ts @@ -12,6 +12,12 @@ const devtoolsBridge: { viteRpc: { enabled: boolean api: ReturnType + on: { + moduleUpdated: (fn: Function) => void + } + off: { + moduleUpdated: () => void + } } rpc: InstanceType } = { @@ -19,6 +25,12 @@ const devtoolsBridge: { viteRpc: { enabled: false, api: null!, + on: { + moduleUpdated() {}, + }, + off: { + moduleUpdated() {}, + }, }, rpc: null!, } @@ -28,13 +40,30 @@ export interface BridgeRpcOptions { bridge: BridgeInstanceType } export function registerBridgeRpc(options: BridgeRpcOptions) { - const rpc = setupViteRPCClient(options.viteRPCContext) devtoolsBridge.value = options.bridge devtoolsBridge.rpc = new BridgeRpcCore(options.bridge) + + const moduleUpdatedFn: Function[] = [] + const rpc = setupViteRPCClient(options.viteRPCContext, { + moduleUpdated: () => { + moduleUpdatedFn.forEach(fn => fn()) + }, + }) + if (rpc) { devtoolsBridge.viteRpc = { enabled: true, api: rpc, + on: { + moduleUpdated(fn: Function) { + moduleUpdatedFn.push(fn) + }, + }, + off: { + moduleUpdated() { + moduleUpdatedFn.length = 0 + }, + }, } } } @@ -176,4 +205,10 @@ export class BridgeRpc { static getGraph() { return devtoolsBridge.viteRpc!.api!.getGraph() } + + // graph module udpated + static graphModuleUpdated(fn: Function) { + devtoolsBridge.viteRpc!.on.moduleUpdated(fn) + return () => devtoolsBridge.viteRpc!.off.moduleUpdated() + } } diff --git a/packages/core/src/vite-rpc/client.ts b/packages/core/src/vite-rpc/client.ts index 40cd7f9d..169b6234 100644 --- a/packages/core/src/vite-rpc/client.ts +++ b/packages/core/src/vite-rpc/client.ts @@ -3,9 +3,18 @@ import { createRPCClient } from 'vite-dev-rpc' import type { BirpcReturn } from 'birpc' import type { ViteRPCFunctions } from './types' -export function setupViteRPCClient(ctx: ViteHotContext | undefined): BirpcReturn { +export interface SetupViteRPCClientOptions { + moduleUpdated?: () => void +} +export function setupViteRPCClient(ctx: ViteHotContext | undefined, options: SetupViteRPCClientOptions = {}): BirpcReturn { if (!ctx) return null! - const rpcClient = createRPCClient('vite-plugin-vue-devtools', ctx, {}) + + const { moduleUpdated = () => {} } = options + const rpcClient = createRPCClient('vite-plugin-vue-devtools', ctx, { + moduleUpdated, + }, { + timeout: -1, + }) return rpcClient } diff --git a/packages/core/src/vite-rpc/graph.ts b/packages/core/src/vite-rpc/graph.ts index eb49826e..391e7638 100644 --- a/packages/core/src/vite-rpc/graph.ts +++ b/packages/core/src/vite-rpc/graph.ts @@ -1,11 +1,25 @@ import type { ViteInspectAPI } from 'vite-plugin-inspect' -import type { ModuleInfo } from './types' +import { debounce } from 'perfect-debounce' +import type { BirpcGroupReturn } from 'birpc' +import type { ModuleInfo, ViteRPCFunctions } from './types' export interface SetupGraphOptions { rpc: ViteInspectAPI['rpc'] + server: any + getRpcServer: () => BirpcGroupReturn } export function setupGraphRPC(options: SetupGraphOptions) { - const { rpc } = options + const { rpc, server, getRpcServer } = options + + const debouncedModuleUpdated = debounce(() => { + getRpcServer().moduleUpdated() + }, 100) + + server.middlewares.use((req, res, next) => { + debouncedModuleUpdated() + next() + }) + return { async getGraph(): Promise { const list = await rpc.list() @@ -13,5 +27,6 @@ export function setupGraphRPC(options: SetupGraphOptions) { return modules }, + moduleUpdated: () => {}, } } diff --git a/packages/core/src/vite-rpc/server.ts b/packages/core/src/vite-rpc/server.ts index 07e6bfb2..ffd7f150 100644 --- a/packages/core/src/vite-rpc/server.ts +++ b/packages/core/src/vite-rpc/server.ts @@ -3,7 +3,9 @@ import type { BirpcGroupReturn } from 'birpc' import { createRPCServer } from 'vite-dev-rpc' import type { ViteRPCFunctions } from './types' -export async function setupViteRPCServer(ws: WebSocketServer, functions: ViteRPCFunctions): Promise> { - const rpcServer = createRPCServer('vite-plugin-vue-devtools', ws, functions) +export function setupViteRPCServer(ws: WebSocketServer, functions: ViteRPCFunctions): BirpcGroupReturn { + const rpcServer = createRPCServer('vite-plugin-vue-devtools', ws, functions, { + timeout: -1, + }) return rpcServer } diff --git a/packages/core/src/vite-rpc/types.ts b/packages/core/src/vite-rpc/types.ts index bcf4aa36..57391eb1 100644 --- a/packages/core/src/vite-rpc/types.ts +++ b/packages/core/src/vite-rpc/types.ts @@ -44,4 +44,5 @@ export interface ViteRPCFunctions { getStaticAssets(): Promise getImageMeta(filepath: string): Promise getTextAssetContent(filepath: string, limit?: number): Promise + moduleUpdated: () => void } diff --git a/packages/playground/package.json b/packages/playground/package.json index 511854a0..e27b6b63 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -25,7 +25,7 @@ "serve": "^14.2.1", "typescript": "^5.3.3", "vite": "^5.0.12", - "vite-plugin-inspect": "^0.8.2", + "vite-plugin-inspect": "^0.8.3", "vite-plugin-vue-devtools": "workspace:*" } } diff --git a/packages/playground/src/main.ts b/packages/playground/src/main.ts index dc5a3ecd..b50f105c 100644 --- a/packages/playground/src/main.ts +++ b/packages/playground/src/main.ts @@ -8,7 +8,8 @@ import { addCustomCommand, addCustomTab } from '@vue/devtools-api' import App2 from './App.vue' import App from './App.preview.vue' import Home from './pages/Home.vue' -import Hello from './pages/Hello.vue' + +// import Hello from './pages/Hello.vue' import Hey from './pages/Hey.vue' import './style.css' @@ -33,7 +34,8 @@ const routes: RouteRecordRaw[] = [ }, { path: '/hello', - component: Hello, + // component: Hello, + component: () => import('./pages/Hello.vue'), name: 'hello', }, { diff --git a/packages/vite/package.json b/packages/vite/package.json index 9894bcb4..4654ec5c 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -55,7 +55,7 @@ "birpc": "^0.2.14", "execa": "^8.0.1", "sirv": "^2.0.4", - "vite-plugin-inspect": "^0.8.2", + "vite-plugin-inspect": "^0.8.3", "vite-plugin-vue-inspector": "^4.0.2" }, "devDependencies": { diff --git a/packages/vite/src/vite.ts b/packages/vite/src/vite.ts index 78dc2e57..a2fef99d 100644 --- a/packages/vite/src/vite.ts +++ b/packages/vite/src/vite.ts @@ -78,7 +78,7 @@ export default function VitePluginVueDevTools(options?: VitePluginVueDevToolsOpt single: true, dev: true, })) - setupViteRPCServer(server.ws, { + const rpcServer = setupViteRPCServer(server.ws, { root: () => config.root, ...setupAssetsRPC({ root: config.root, @@ -86,6 +86,8 @@ export default function VitePluginVueDevTools(options?: VitePluginVueDevToolsOpt }), ...setupGraphRPC({ rpc: inspect.api.rpc, + server, + getRpcServer: () => rpcServer, }), }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a02ea052..70975dea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -234,7 +234,7 @@ importers: version: 1.1.3 pinia: specifier: ^2.1.7 - version: 2.1.7(typescript@5.3.3)(vue@3.4.15) + version: 2.1.7(vue@3.4.15) sass: specifier: ^1.70.0 version: 1.70.0 @@ -243,22 +243,22 @@ importers: version: 2.9.0 unocss: specifier: ^0.58.3 - version: 0.58.3(postcss@8.4.33)(rollup@3.28.1)(vite@5.0.12) + version: 0.58.3(postcss@8.4.33)(vite@5.0.12) unplugin: specifier: ^1.6.0 version: 1.6.0 unplugin-auto-import: specifier: ^0.17.4 - version: 0.17.4(@vueuse/core@10.7.2)(rollup@3.28.1) + version: 0.17.4(@vueuse/core@10.7.2) unplugin-vue-components: specifier: ^0.26.0 - version: 0.26.0(rollup@3.28.1)(vue@3.4.15) + version: 0.26.0(vue@3.4.15) vite: specifier: ^5.0.12 version: 5.0.12(@types/node@20.11.6)(sass@1.70.0) vue: specifier: ^3.4.15 - version: 3.4.15(typescript@5.3.3) + version: 3.4.15 packages/core: dependencies: @@ -286,6 +286,9 @@ importers: pathe: specifier: ^1.1.2 version: 1.1.2 + perfect-debounce: + specifier: ^1.0.0 + version: 1.0.0 vite-dev-rpc: specifier: ^0.1.4 version: 0.1.4(vite@5.0.12) @@ -293,8 +296,8 @@ importers: specifier: ^0.2.3 version: 0.2.3(vite@5.0.12) vite-plugin-inspect: - specifier: ^0.8.2 - version: 0.8.2(rollup@3.28.1)(vite@5.0.12) + specifier: ^0.8.3 + version: 0.8.3(rollup@3.28.1)(vite@5.0.12) devDependencies: vue: specifier: ^3.4.15 @@ -466,8 +469,8 @@ importers: specifier: ^5.0.12 version: 5.0.12(@types/node@20.11.6)(sass@1.70.0) vite-plugin-inspect: - specifier: ^0.8.2 - version: 0.8.2(rollup@3.28.1)(vite@5.0.12) + specifier: ^0.8.3 + version: 0.8.3(rollup@3.28.1)(vite@5.0.12) vite-plugin-vue-devtools: specifier: workspace:* version: link:../vite @@ -585,8 +588,8 @@ importers: specifier: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 version: 5.0.10(@types/node@20.11.6) vite-plugin-inspect: - specifier: ^0.8.2 - version: 0.8.2(rollup@3.28.1)(vite@5.0.10) + specifier: ^0.8.3 + version: 0.8.3(rollup@3.28.1)(vite@5.0.10) vite-plugin-vue-inspector: specifier: ^4.0.2 version: 4.0.2(vite@5.0.10) @@ -3528,6 +3531,20 @@ packages: rollup: 3.28.1 dev: true + /@rollup/pluginutils@5.1.0: + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + /@rollup/pluginutils@5.1.0(rollup@3.28.1): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -4381,6 +4398,44 @@ packages: transitivePeerDependencies: - rollup + /@unocss/astro@0.58.3(vite@5.0.12): + resolution: {integrity: sha512-qJL+XkWYJhEIX4AmOtbfb2Zu4holTDpRscfvVci4T+2VWjyE3mgtsyNzi9ZChe/hdEPRa7g26gSpNQeMhjh/Kw==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + '@unocss/core': 0.58.3 + '@unocss/reset': 0.58.3 + '@unocss/vite': 0.58.3(vite@5.0.12) + vite: 5.0.12(@types/node@20.11.6)(sass@1.70.0) + transitivePeerDependencies: + - rollup + dev: true + + /@unocss/cli@0.58.3: + resolution: {integrity: sha512-veGdHhwm7GRvruXCMdqoFu3wVozr7ELEVWsFB6GpqWdGYIJ1i72M18l72UHDA2+TuDillZONnAQ5AvX9x/sYAw==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@ampproject/remapping': 2.2.1 + '@rollup/pluginutils': 5.1.0 + '@unocss/config': 0.58.3 + '@unocss/core': 0.58.3 + '@unocss/preset-uno': 0.58.3 + cac: 6.7.14 + chokidar: 3.5.3 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.2 + magic-string: 0.30.5 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + dev: true + /@unocss/cli@0.58.3(rollup@3.28.1): resolution: {integrity: sha512-veGdHhwm7GRvruXCMdqoFu3wVozr7ELEVWsFB6GpqWdGYIJ1i72M18l72UHDA2+TuDillZONnAQ5AvX9x/sYAw==} engines: {node: '>=14'} @@ -4579,6 +4634,26 @@ packages: transitivePeerDependencies: - rollup + /@unocss/vite@0.58.3(vite@5.0.12): + resolution: {integrity: sha512-gmB2//z7lDEK7Bw5HbHTSQ3abOM0iveAY/W3L3FFXpvduoxMQyuI5dDk0hOCtzhAWeJoynnVN4MBGVmXM4Y/Mg==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + dependencies: + '@ampproject/remapping': 2.2.1 + '@rollup/pluginutils': 5.1.0 + '@unocss/config': 0.58.3 + '@unocss/core': 0.58.3 + '@unocss/inspector': 0.58.3 + '@unocss/scope': 0.58.3 + '@unocss/transformer-directives': 0.58.3 + chokidar: 3.5.3 + fast-glob: 3.3.2 + magic-string: 0.30.5 + vite: 5.0.12(@types/node@20.11.6)(sass@1.70.0) + transitivePeerDependencies: + - rollup + dev: true + /@vitejs/plugin-vue-jsx@3.1.0(vite@5.0.12)(vue@3.4.15): resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} engines: {node: ^14.18.0 || >=16.0.0} @@ -4590,7 +4665,7 @@ packages: '@babel/plugin-transform-typescript': 7.23.5(@babel/core@7.23.6) '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.6) vite: 5.0.12(@types/node@20.11.6)(sass@1.70.0) - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.15 transitivePeerDependencies: - supports-color dev: true @@ -4625,7 +4700,7 @@ packages: vue: ^3.2.25 dependencies: vite: 5.0.12(@types/node@20.11.6)(sass@1.70.0) - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.15 dev: true /@vitest/expect@1.2.1: @@ -5404,7 +5479,7 @@ packages: dependencies: '@vue/compiler-ssr': 3.4.15 '@vue/shared': 3.4.15 - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.15 /@vue/shared@3.4.0: resolution: {integrity: sha512-Nhh3ed3G1R6HDAWiG6YYFt0Zmq/To6u5vjzwa9TIquGheCXPY6nEdIAO8ZdlwXsWqC2yNLj700FOvShpYt5CEA==} @@ -9129,7 +9204,7 @@ packages: optional: true dependencies: '@floating-ui/dom': 1.1.1 - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.15 vue-resize: 2.0.0-alpha.1(vue@3.4.15) dev: true @@ -10771,9 +10846,6 @@ packages: dependencies: p-locate: 5.0.0 - /lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true @@ -12051,6 +12123,24 @@ packages: typescript: 5.3.3 vue: 3.4.15(typescript@5.3.3) vue-demi: 0.14.6(vue@3.4.15) + dev: false + + /pinia@2.1.7(vue@3.4.15): + resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + dependencies: + '@vue/devtools-api': 6.5.1 + vue: 3.4.15 + vue-demi: 0.14.6(vue@3.4.15) + dev: true /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} @@ -14678,6 +14768,26 @@ packages: engines: {node: '>=4'} dev: true + /unimport@3.7.1: + resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} + dependencies: + '@rollup/pluginutils': 5.1.0 + acorn: 8.11.2 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.5 + mlly: 1.4.2 + pathe: 1.1.2 + pkg-types: 1.0.3 + scule: 1.1.1 + strip-literal: 1.3.0 + unplugin: 1.6.0 + transitivePeerDependencies: + - rollup + dev: true + /unimport@3.7.1(rollup@3.28.1): resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} dependencies: @@ -14802,11 +14912,75 @@ packages: - rollup - supports-color + /unocss@0.58.3(postcss@8.4.33)(vite@5.0.12): + resolution: {integrity: sha512-2rnvghfiIDRQ2cOrmN4P7J7xV2p3yBK+bPAt1aoUxCXcszkLczAnQzh9c7IZ+p70kSVstK45cJTYV6TMzOLF7Q==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.58.3 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + dependencies: + '@unocss/astro': 0.58.3(vite@5.0.12) + '@unocss/cli': 0.58.3 + '@unocss/core': 0.58.3 + '@unocss/extractor-arbitrary-variants': 0.58.3 + '@unocss/postcss': 0.58.3(postcss@8.4.33) + '@unocss/preset-attributify': 0.58.3 + '@unocss/preset-icons': 0.58.3 + '@unocss/preset-mini': 0.58.3 + '@unocss/preset-tagify': 0.58.3 + '@unocss/preset-typography': 0.58.3 + '@unocss/preset-uno': 0.58.3 + '@unocss/preset-web-fonts': 0.58.3 + '@unocss/preset-wind': 0.58.3 + '@unocss/reset': 0.58.3 + '@unocss/transformer-attributify-jsx': 0.58.3 + '@unocss/transformer-attributify-jsx-babel': 0.58.3 + '@unocss/transformer-compile-class': 0.58.3 + '@unocss/transformer-directives': 0.58.3 + '@unocss/transformer-variant-group': 0.58.3 + '@unocss/vite': 0.58.3(vite@5.0.12) + vite: 5.0.12(@types/node@20.11.6)(sass@1.70.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + dev: true + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: true + /unplugin-auto-import@0.17.4(@vueuse/core@10.7.2): + resolution: {integrity: sha512-sInr7+UOeFMtiRCr7lYZXouTnVqXNUJtN5yN5GDzg6Sr2rwY5ZWZmqf4yvItYCm8mq1PdzPw3oojYHgZAJnTRQ==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + dependencies: + '@antfu/utils': 0.7.7 + '@rollup/pluginutils': 5.1.0 + '@vueuse/core': 10.7.2(vue@3.4.15) + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.5 + minimatch: 9.0.3 + unimport: 3.7.1 + unplugin: 1.6.0 + transitivePeerDependencies: + - rollup + dev: true + /unplugin-auto-import@0.17.4(@vueuse/core@10.7.2)(rollup@3.28.1): resolution: {integrity: sha512-sInr7+UOeFMtiRCr7lYZXouTnVqXNUJtN5yN5GDzg6Sr2rwY5ZWZmqf4yvItYCm8mq1PdzPw3oojYHgZAJnTRQ==} engines: {node: '>=14'} @@ -14861,6 +15035,35 @@ packages: - supports-color dev: true + /unplugin-vue-components@0.26.0(vue@3.4.15): + resolution: {integrity: sha512-s7IdPDlnOvPamjunVxw8kNgKNK8A5KM1YpK5j/p97jEKTjlPNrA0nZBiSfAKKlK1gWZuyWXlKL5dk3EDw874LQ==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + '@nuxt/kit': ^3.2.2 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + '@nuxt/kit': + optional: true + dependencies: + '@antfu/utils': 0.7.7 + '@rollup/pluginutils': 5.1.0 + chokidar: 3.5.3 + debug: 4.3.4 + fast-glob: 3.3.2 + local-pkg: 0.4.3 + magic-string: 0.30.5 + minimatch: 9.0.3 + resolve: 1.22.8 + unplugin: 1.6.0 + vue: 3.4.15 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + /unplugin@1.6.0: resolution: {integrity: sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ==} dependencies: @@ -15138,8 +15341,8 @@ packages: - supports-color dev: true - /vite-plugin-inspect@0.8.2(rollup@3.28.1)(vite@5.0.10): - resolution: {integrity: sha512-lMqPHkh1UNev0CwuO1g2naDfUanHRM7aorjx52SGrcVmAnhNxnbWzIuFNI3nCOXsSiOUeff4ZJSmR9tMAyMaSg==} + /vite-plugin-inspect@0.8.3(rollup@3.28.1)(vite@5.0.10): + resolution: {integrity: sha512-SBVzOIdP/kwe6hjkt7LSW4D0+REqqe58AumcnCfRNw4Kt3mbS9pEBkch+nupu2PBxv2tQi69EQHQ1ZA1vgB/Og==} engines: {node: '>=14'} peerDependencies: '@nuxt/kit': '*' @@ -15153,8 +15356,8 @@ packages: debug: 4.3.4 error-stack-parser-es: 0.1.1 fs-extra: 11.2.0 - lodash-es: 4.17.21 open: 10.0.3 + perfect-debounce: 1.0.0 picocolors: 1.0.0 sirv: 2.0.4 vite: 5.0.10(@types/node@20.11.6) @@ -15163,8 +15366,8 @@ packages: - supports-color dev: false - /vite-plugin-inspect@0.8.2(rollup@3.28.1)(vite@5.0.12): - resolution: {integrity: sha512-lMqPHkh1UNev0CwuO1g2naDfUanHRM7aorjx52SGrcVmAnhNxnbWzIuFNI3nCOXsSiOUeff4ZJSmR9tMAyMaSg==} + /vite-plugin-inspect@0.8.3(rollup@3.28.1)(vite@5.0.12): + resolution: {integrity: sha512-SBVzOIdP/kwe6hjkt7LSW4D0+REqqe58AumcnCfRNw4Kt3mbS9pEBkch+nupu2PBxv2tQi69EQHQ1ZA1vgB/Og==} engines: {node: '>=14'} peerDependencies: '@nuxt/kit': '*' @@ -15178,8 +15381,8 @@ packages: debug: 4.3.4 error-stack-parser-es: 0.1.1 fs-extra: 11.2.0 - lodash-es: 4.17.21 open: 10.0.3 + perfect-debounce: 1.0.0 picocolors: 1.0.0 sirv: 2.0.4 vite: 5.0.12(@types/node@20.11.6)(sass@1.70.0) @@ -15503,7 +15706,7 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.15 /vue-eslint-parser@9.3.2(eslint-ts-patch@8.55.0-1): resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==} @@ -15682,7 +15885,7 @@ packages: peerDependencies: vue: ^3.0.0 dependencies: - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.15 dev: false /vue-resize@2.0.0-alpha.1(vue@3.4.0): @@ -15698,7 +15901,7 @@ packages: peerDependencies: vue: ^3.0.0 dependencies: - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.15 /vue-router@4.2.5(vue@3.4.15): resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==} @@ -15706,7 +15909,7 @@ packages: vue: ^3.2.0 dependencies: '@vue/devtools-api': 6.5.1 - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.15 /vue-style-loader@4.1.3: resolution: {integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==} @@ -15769,7 +15972,7 @@ packages: vue: ^3.2.0 dependencies: mitt: 2.1.0 - vue: 3.4.15(typescript@5.3.3) + vue: 3.4.15 vue-observe-visibility: 2.0.0-alpha.1(vue@3.4.15) vue-resize: 2.0.0-alpha.1(vue@3.4.15) dev: false @@ -15797,6 +16000,20 @@ packages: '@vue/shared': 3.4.0 typescript: 5.3.3 + /vue@3.4.15: + resolution: {integrity: sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.4.15 + '@vue/compiler-sfc': 3.4.15 + '@vue/runtime-dom': 3.4.15 + '@vue/server-renderer': 3.4.15(vue@3.4.15) + '@vue/shared': 3.4.15 + /vue@3.4.15(typescript@5.3.3): resolution: {integrity: sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==} peerDependencies: