From d69723f2334910f2023ebed6d1a44ceebca0d40d Mon Sep 17 00:00:00 2001 From: arlo Date: Thu, 6 Jun 2024 02:38:10 +0800 Subject: [PATCH] feat: further compatibility with v6 pluign API --- .../src/components/state/ChildStateViewer.vue | 4 +- .../src/components/state/RootStateViewer.vue | 2 +- .../src/components/state/StateFieldEditor.vue | 5 +- .../src/components/state/StateFieldViewer.vue | 13 +- .../src/composables/custom-inspector.ts | 1 + .../components/state/Index.vue | 56 +++++-- .../src/components/common/SideNavItem.vue | 1 + .../client/src/components/common/TabIcon.vue | 16 +- .../src/composables/custom-inspector-tabs.ts | 1 + packages/client/src/types/tab.ts | 1 + packages/core/src/rpc/global.ts | 3 + packages/devtools-kit/src/api/v6/index.ts | 30 ++-- packages/devtools-kit/src/ctx/api.ts | 13 +- packages/devtools-kit/src/ctx/hook.ts | 1 + packages/devtools-kit/src/ctx/inspector.ts | 3 +- packages/playground/applet/package.json | 3 + packages/playground/applet/src/App.vue | 9 +- .../playground/applet/src/components/Tres.vue | 60 +++++++ packages/playground/applet/src/main.ts | 3 +- pnpm-lock.yaml | 146 +++++++++++++++++- 20 files changed, 323 insertions(+), 48 deletions(-) create mode 100644 packages/playground/applet/src/components/Tres.vue diff --git a/packages/applet/src/components/state/ChildStateViewer.vue b/packages/applet/src/components/state/ChildStateViewer.vue index db983d47..9e46718b 100644 --- a/packages/applet/src/components/state/ChildStateViewer.vue +++ b/packages/applet/src/components/state/ChildStateViewer.vue @@ -6,8 +6,10 @@ withDefaults(defineProps<{ data: CustomInspectorState[] depth: number index: string + expandedStateId?: string }>(), { depth: 0, + expandedStateId: '', }) @@ -17,7 +19,7 @@ withDefaults(defineProps<{ v-for="(item, i) in data" :key="i" > - + diff --git a/packages/applet/src/components/state/RootStateViewer.vue b/packages/applet/src/components/state/RootStateViewer.vue index 456e9dd3..cc266974 100644 --- a/packages/applet/src/components/state/RootStateViewer.vue +++ b/packages/applet/src/components/state/RootStateViewer.vue @@ -57,7 +57,7 @@ const { expanded, toggleExpanded } = useToggleExpanded(props.expandedStateId)
- +
diff --git a/packages/applet/src/components/state/StateFieldEditor.vue b/packages/applet/src/components/state/StateFieldEditor.vue index 47cf85dd..62f80799 100644 --- a/packages/applet/src/components/state/StateFieldEditor.vue +++ b/packages/applet/src/components/state/StateFieldEditor.vue @@ -44,8 +44,8 @@ const buttonClass = computed(() => ({ 'opacity-0': !props.hovering, })) -function quickEdit(v: unknown, remove: boolean = false) { - rpc.value.editInspectorState({ +async function quickEdit(v: unknown, remove: boolean = false) { + await rpc.value.editInspectorState({ path: props.data.path || [props.data.key], inspectorId: state.value.inspectorId, type: props.data.stateType!, @@ -57,6 +57,7 @@ function quickEdit(v: unknown, remove: boolean = false) { remove, }, } as unknown as DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.EDIT_COMPONENT_STATE]) + await rpc.value.sendInspectorState(state.value.inspectorId) } function quickEditNum(v: number | string, offset: 1 | -1) { diff --git a/packages/applet/src/components/state/StateFieldViewer.vue b/packages/applet/src/components/state/StateFieldViewer.vue index b44618ff..1b05a272 100644 --- a/packages/applet/src/components/state/StateFieldViewer.vue +++ b/packages/applet/src/components/state/StateFieldViewer.vue @@ -18,6 +18,7 @@ const props = defineProps<{ data: CustomInspectorState depth: number index: string + expandedStateId?: string }>() const STATE_FIELDS_LIMIT_SIZE = 30 @@ -30,7 +31,7 @@ const displayedValue = computed(() => formatInspectorStateValue(props.data.value })) const type = computed(() => getInspectorStateValueType(props.data.value)) const raw = computed(() => getRaw(props.data.value)) -const { expanded, toggleExpanded } = useToggleExpanded() +const { expanded, toggleExpanded } = useToggleExpanded(props.expandedStateId ?? '') // custom state format class const stateFormatClass = computed(() => { @@ -135,9 +136,9 @@ watch(() => editing.value, (v) => { } }) -function submit() { +async async function submit() { const data = props.data - rpc.value.editInspectorState({ + await rpc.value.editInspectorState({ path: normalizedPath.value, inspectorId: state.value.inspectorId, type: data.stateType!, @@ -148,6 +149,7 @@ function submit() { value: toSubmit(editingText.value, raw.value.customType), }, } as unknown as DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.EDIT_COMPONENT_STATE]) + await rpc.value.sendInspectorState(state.value.inspectorId) toggleEditing() } @@ -162,9 +164,9 @@ function addNewProp(type: EditorAddNewPropType) { addNewPropApi(type, raw.value.value) } -function submitDrafting() { +async function submitDrafting() { const data = props.data - rpc.value.editInspectorState({ + await rpc.value.editInspectorState({ path: [...normalizedPath.value, draftingNewProp.value.key], inspectorId: state.value.inspectorId, type: data.stateType!, @@ -175,6 +177,7 @@ function submitDrafting() { value: toSubmit(draftingNewProp.value.value), }, } as unknown as DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.EDIT_COMPONENT_STATE]) + await rpc.value.sendInspectorState(state.value.inspectorId) resetDrafting() } diff --git a/packages/applet/src/composables/custom-inspector.ts b/packages/applet/src/composables/custom-inspector.ts index a94e3ee7..134057bc 100644 --- a/packages/applet/src/composables/custom-inspector.ts +++ b/packages/applet/src/composables/custom-inspector.ts @@ -5,6 +5,7 @@ export interface CustomInspectorType { id: string label: string logo: string + icon: string packageName: string | undefined homepage: string | undefined } diff --git a/packages/applet/src/modules/custom-inspector/components/state/Index.vue b/packages/applet/src/modules/custom-inspector/components/state/Index.vue index 6955b8d5..86fc3f43 100644 --- a/packages/applet/src/modules/custom-inspector/components/state/Index.vue +++ b/packages/applet/src/modules/custom-inspector/components/state/Index.vue @@ -1,19 +1,20 @@ diff --git a/packages/client/src/composables/custom-inspector-tabs.ts b/packages/client/src/composables/custom-inspector-tabs.ts index 90efa074..d79af648 100644 --- a/packages/client/src/composables/custom-inspector-tabs.ts +++ b/packages/client/src/composables/custom-inspector-tabs.ts @@ -13,6 +13,7 @@ export function useCustomInspectorTabs() { order: index, name: inspector.id, icon: inspector.logo, + fallbackIcon: inspector.icon, title: inspector.label, path: `${CUSTOM_INSPECTOR_TAB_VIEW}/${inspector.id}`, category: 'modules', diff --git a/packages/client/src/types/tab.ts b/packages/client/src/types/tab.ts index 08634a54..0149de45 100644 --- a/packages/client/src/types/tab.ts +++ b/packages/client/src/types/tab.ts @@ -2,6 +2,7 @@ import type { MaybeRefOrGetter } from 'vue' import type { CustomTab } from '@vue/devtools-kit' export interface ModuleBuiltinTab extends Pick { + fallbackIcon?: string order?: number path: string show?: () => MaybeRefOrGetter diff --git a/packages/core/src/rpc/global.ts b/packages/core/src/rpc/global.ts index 2fcf8361..5fc87845 100644 --- a/packages/core/src/rpc/global.ts +++ b/packages/core/src/rpc/global.ts @@ -69,6 +69,9 @@ export const functions = { async editInspectorState(payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE]) { return await devtools.ctx.api.editInspectorState(payload) }, + sendInspectorState(id: string) { + return devtools.ctx.api.sendInspectorState(id) + }, inspectComponentInspector() { return devtools.ctx.api.inspectComponentInspector() }, diff --git a/packages/devtools-kit/src/api/v6/index.ts b/packages/devtools-kit/src/api/v6/index.ts index 0797689a..28dc9ffe 100644 --- a/packages/devtools-kit/src/api/v6/index.ts +++ b/packages/devtools-kit/src/api/v6/index.ts @@ -4,6 +4,7 @@ import { DevToolsContextHookKeys, DevToolsV6PluginAPIHookKeys, DevToolsV6PluginA import { devtoolsPluginBuffer } from '../../ctx/plugin' import { devtoolsHooks } from '../../hook' import { DevToolsHooks } from '../../types' +import { getActiveInspectors } from '../../ctx/inspector' export class DevToolsV6PluginAPI { private plugin: DevToolsPlugin @@ -54,18 +55,23 @@ export class DevToolsV6PluginAPI { // component inspector notifyComponentUpdate(instance?: ComponentInstance) { - if (instance) { - const args = [ - instance.appContext.app, - instance.uid, - instance.parent?.uid, - instance, - ] as const - devtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED, ...args) - } - else { - // @ts-expect-error skip type check - devtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED) + const inspector = getActiveInspectors().find(i => i.packageName === this.plugin.descriptor.packageName) + if (inspector?.id) { + // @TODO: handler + if (instance) { + const args = [ + instance.appContext.app, + instance.uid, + instance.parent?.uid, + instance, + ] as const + devtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED, ...args) + } + else { + // @ts-expect-error skip type check + devtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED) + } + this.hooks.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, { inspectorId: inspector.id, plugin: this.plugin }) } } diff --git a/packages/devtools-kit/src/ctx/api.ts b/packages/devtools-kit/src/ctx/api.ts index cf2f834e..7121f0e8 100644 --- a/packages/devtools-kit/src/ctx/api.ts +++ b/packages/devtools-kit/src/ctx/api.ts @@ -7,9 +7,9 @@ import { openInEditor } from '../core/open-in-editor' import { normalizeRouterInfo } from '../core/router' import { getComponentInspector } from '../core/component-inspector' import type { DevToolsContextHooks, DevToolsMessagingHooks, DevToolsV6PluginAPIHookPayloads } from './hook' -import { DevToolsV6PluginAPIHookKeys } from './hook' +import { DevToolsContextHookKeys, DevToolsV6PluginAPIHookKeys } from './hook' import { activeAppRecord, devtoolsAppRecords, setActiveAppRecord, setActiveAppRecordId } from './state' -import { callInspectorUpdatedHook } from './inspector' +import { callInspectorUpdatedHook, getInspector } from './inspector' export function createDevToolsApi(hooks: Hookable>) { return { @@ -60,11 +60,20 @@ export function createDevToolsApi(hooks: Hookable { callbacks.forEach(cb => cb(_payload)) }, DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE) }, + // send inspector state + sendInspectorState(inspectorId: string) { + const inspector = getInspector(inspectorId) + hooks.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, { inspectorId, plugin: { + descriptor: inspector!.descriptor, + setupFn: () => ({}), + } }) + }, // inspect component inspector inspectComponentInspector() { return inspectComponentHighLighter() diff --git a/packages/devtools-kit/src/ctx/hook.ts b/packages/devtools-kit/src/ctx/hook.ts index 710ad6a8..e1947ab6 100644 --- a/packages/devtools-kit/src/ctx/hook.ts +++ b/packages/devtools-kit/src/ctx/hook.ts @@ -189,6 +189,7 @@ export interface DevToolsMessagingHookPayloads { id: string label: string logo: string + icon: string packageName: string | undefined homepage: string | undefined }[] diff --git a/packages/devtools-kit/src/ctx/inspector.ts b/packages/devtools-kit/src/ctx/inspector.ts index 7e47beb9..14a23a66 100644 --- a/packages/devtools-kit/src/ctx/inspector.ts +++ b/packages/devtools-kit/src/ctx/inspector.ts @@ -49,7 +49,8 @@ export function getActiveInspectors() { return { id: options.id, label: options.label, - logo: `i-ic-baseline-${options.icon}`, + logo: descriptor.logo!, + icon: `i-ic-baseline-${options?.icon?.replace(/_/g, '-')}`, packageName: descriptor.packageName, homepage: descriptor.homepage, } diff --git a/packages/playground/applet/package.json b/packages/playground/applet/package.json index fcbcd087..d525a338 100644 --- a/packages/playground/applet/package.json +++ b/packages/playground/applet/package.json @@ -8,13 +8,16 @@ }, "dependencies": { "@iconify/json": "^2.2.216", + "@tresjs/core": "^4.0.2", "@vueuse/core": "^10.10.0", "pinia": "^2.1.7", + "three": "^0.165.0", "unplugin-auto-import": "^0.17.6", "vue": "^3.4.27", "vue-router": "^4.3.2" }, "devDependencies": { + "@types/three": "^0.165.0", "@vitejs/plugin-vue": "^5.0.5", "@vue/devtools-applet": "workspace:*", "@vue/devtools-core": "workspace:*", diff --git a/packages/playground/applet/src/App.vue b/packages/playground/applet/src/App.vue index 92318263..412fb66b 100644 --- a/packages/playground/applet/src/App.vue +++ b/packages/playground/applet/src/App.vue @@ -6,6 +6,7 @@ import { createRpcClient } from '@vue/devtools-kit' import { useDark } from '@vueuse/core' import { useCounterStore } from './stores' import Hello from './components/Hello.vue' +import Tres from './components/Tres.vue' const isDark = useDark() // user app @@ -37,12 +38,12 @@ function initVueDevToolsState() { } onRpcConnected(() => { - initVueDevToolsState() + // initVueDevToolsState() }) diff --git a/packages/playground/applet/src/components/Tres.vue b/packages/playground/applet/src/components/Tres.vue new file mode 100644 index 00000000..8b585b13 --- /dev/null +++ b/packages/playground/applet/src/components/Tres.vue @@ -0,0 +1,60 @@ + + + diff --git a/packages/playground/applet/src/main.ts b/packages/playground/applet/src/main.ts index 29b17cb9..699f57e2 100644 --- a/packages/playground/applet/src/main.ts +++ b/packages/playground/applet/src/main.ts @@ -1,6 +1,6 @@ import { createPinia } from 'pinia' +import Tres from '@tresjs/core' import App from './App.vue' - import './style.css' import 'uno.css' import '@vue/devtools-applet/style.css' @@ -9,4 +9,5 @@ const pinia = createPinia() const app = createApp(App) app.use(pinia) +app.use(Tres) app.mount('#app') diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cab7516d..8936755d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -118,7 +118,7 @@ importers: version: 2.0.0(sass@1.77.4)(typescript@5.4.5) unocss: specifier: ^0.60.4 - version: 0.60.4(postcss@8.4.38)(rollup@4.13.0)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0)) + version: 0.60.4(postcss@8.4.38)(rollup@3.28.1)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0)) vite: specifier: ^5.2.12 version: 5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0) @@ -489,12 +489,18 @@ importers: '@iconify/json': specifier: ^2.2.216 version: 2.2.216 + '@tresjs/core': + specifier: ^4.0.2 + version: 4.0.2(three@0.165.0)(vue@3.4.27(typescript@5.4.5)) '@vueuse/core': specifier: ^10.10.0 version: 10.10.0(vue@3.4.27(typescript@5.4.5)) pinia: specifier: ^2.1.7 version: 2.1.7(typescript@5.4.5)(vue@3.4.27(typescript@5.4.5)) + three: + specifier: ^0.165.0 + version: 0.165.0 unplugin-auto-import: specifier: ^0.17.6 version: 0.17.6(@vueuse/core@10.10.0(vue@3.4.27(typescript@5.4.5)))(rollup@4.13.0) @@ -505,6 +511,9 @@ importers: specifier: ^4.3.2 version: 4.3.2(vue@3.4.27(typescript@5.4.5)) devDependencies: + '@types/three': + specifier: ^0.165.0 + version: 0.165.0 '@vitejs/plugin-vue': specifier: ^5.0.5 version: 5.0.5(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0))(vue@3.4.27(typescript@5.4.5)) @@ -902,6 +911,9 @@ packages: '@algolia/transporter@4.22.0': resolution: {integrity: sha512-ieO1k8x2o77GNvOoC+vAkFKppydQSVfbjM3YrSjLmgywiBejPTvU1R1nEvG59JIIUvtSLrZsLGPkd6vL14zopA==} + '@alvarosabu/utils@3.2.0': + resolution: {integrity: sha512-aoGWRfaQjOo9TUwrBA6W0zwTHktgrXy69GIFNILT4gHsqscw6+X8P6uoSlZVQFr887SPm8x3aDin5EBVq8y4pw==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -2662,10 +2674,19 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} + '@tresjs/core@4.0.2': + resolution: {integrity: sha512-+Shy5ch4m9gQSHRlArZAn4nv2apaFJJv21bAvpOKRXTCtGu0BakKGUpWcTzzmDsTs9t6yndbjCWzyifggjFpQQ==} + peerDependencies: + three: '>=0.133' + vue: '>=3.4' + '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} + '@tweenjs/tween.js@23.1.2': + resolution: {integrity: sha512-kMCNaZCJugWI86xiEHaY338CU5JpD0B97p1j1IKNn/Zto8PgACjQx0UxbHjmOcLl/dDOBnItwD07KmCs75pxtQ==} + '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -2828,12 +2849,21 @@ packages: '@types/splitpanes@2.2.6': resolution: {integrity: sha512-3dV5sO1Ht74iER4jJU03mreL3f+Q2h47ZqXS6Sfbqc6hkCvsDrX1GA0NbYWRdNvZemPyTDzUoApWKeoGbALwkQ==} + '@types/stats.js@0.17.3': + resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} + + '@types/three@0.165.0': + resolution: {integrity: sha512-AJK8JZAFNBF0kBXiAIl5pggYlzAGGA8geVYQXAcPCEDRbyA+oEjkpUBcJJrtNz6IiALwzGexFJGZG2yV3WsYBw==} + '@types/unist@2.0.10': resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + '@types/webxr@0.5.16': + resolution: {integrity: sha512-0E0Cl84FECtzrB4qG19TNTqpunw0F1YF0QZZnFMF6pDw1kNKJtrlTKlVB34stGIsHbZsYQ7H0tNjPfZftkHHoA==} + '@types/ws@8.5.10': resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} @@ -3186,6 +3216,9 @@ packages: '@vue/devtools-api@6.6.1': resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} + '@vue/devtools-api@6.6.3': + resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} + '@vue/devtools-api@7.2.1': resolution: {integrity: sha512-6oNCtyFOrNdqm6GUkFujsCgFlpbsHLnZqq7edeM/+cxAbMyCWvsaCsIMUaz7AiluKLccCGEM8fhOsjaKgBvb7g==} @@ -6010,6 +6043,9 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + meshoptimizer@0.18.1: + resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} + methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} @@ -7581,6 +7617,9 @@ packages: peerDependencies: webpack: ^4.27.0 || ^5.0.0 + three@0.165.0: + resolution: {integrity: sha512-cc96IlVYGydeceu0e5xq70H8/yoVT/tXBxV/W8A/U6uOq7DXc4/s1Mkmnu6SqoYGhSRWWYFOhVwvq6V0VtbplA==} + thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} @@ -8569,6 +8608,8 @@ snapshots: '@algolia/logger-common': 4.22.0 '@algolia/requester-common': 4.22.0 + '@alvarosabu/utils@3.2.0': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -10344,8 +10385,20 @@ snapshots: '@tootallnate/once@2.0.0': {} + '@tresjs/core@4.0.2(three@0.165.0)(vue@3.4.27(typescript@5.4.5))': + dependencies: + '@alvarosabu/utils': 3.2.0 + '@vue/devtools-api': 6.6.3 + '@vueuse/core': 10.10.0(vue@3.4.27(typescript@5.4.5)) + three: 0.165.0 + vue: 3.4.27(typescript@5.4.5) + transitivePeerDependencies: + - '@vue/composition-api' + '@trysound/sax@0.2.0': {} + '@tweenjs/tween.js@23.1.2': {} + '@types/argparse@1.0.38': {} '@types/body-parser@1.19.5': @@ -10532,10 +10585,22 @@ snapshots: dependencies: vue: 2.7.15 + '@types/stats.js@0.17.3': {} + + '@types/three@0.165.0': + dependencies: + '@tweenjs/tween.js': 23.1.2 + '@types/stats.js': 0.17.3 + '@types/webxr': 0.5.16 + fflate: 0.8.2 + meshoptimizer: 0.18.1 + '@types/unist@2.0.10': {} '@types/web-bluetooth@0.0.20': {} + '@types/webxr@0.5.16': {} + '@types/ws@8.5.10': dependencies: '@types/node': 20.14.2 @@ -10628,6 +10693,16 @@ snapshots: '@ungap/structured-clone@1.2.0': {} + '@unocss/astro@0.60.4(rollup@3.28.1)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0))': + dependencies: + '@unocss/core': 0.60.4 + '@unocss/reset': 0.60.4 + '@unocss/vite': 0.60.4(rollup@3.28.1)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0)) + optionalDependencies: + vite: 5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0) + transitivePeerDependencies: + - rollup + '@unocss/astro@0.60.4(rollup@4.13.0)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0))': dependencies: '@unocss/core': 0.60.4 @@ -10638,6 +10713,24 @@ snapshots: transitivePeerDependencies: - rollup + '@unocss/cli@0.60.4(rollup@3.28.1)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@3.28.1) + '@unocss/config': 0.60.4 + '@unocss/core': 0.60.4 + '@unocss/preset-uno': 0.60.4 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.2 + magic-string: 0.30.10 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + '@unocss/cli@0.60.4(rollup@4.13.0)': dependencies: '@ampproject/remapping': 2.3.0 @@ -10783,6 +10876,22 @@ snapshots: dependencies: '@unocss/core': 0.60.4 + '@unocss/vite@0.60.4(rollup@3.28.1)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.0(rollup@3.28.1) + '@unocss/config': 0.60.4 + '@unocss/core': 0.60.4 + '@unocss/inspector': 0.60.4 + '@unocss/scope': 0.60.4 + '@unocss/transformer-directives': 0.60.4 + chokidar: 3.6.0 + fast-glob: 3.3.2 + magic-string: 0.30.10 + vite: 5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0) + transitivePeerDependencies: + - rollup + '@unocss/vite@0.60.4(rollup@4.13.0)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0))': dependencies: '@ampproject/remapping': 2.3.0 @@ -11271,6 +11380,8 @@ snapshots: '@vue/devtools-api@6.6.1': {} + '@vue/devtools-api@6.6.3': {} + '@vue/devtools-api@7.2.1(vue@3.4.27(typescript@5.4.5))': dependencies: '@vue/devtools-kit': 7.2.1(vue@3.4.27(typescript@5.4.5)) @@ -14396,6 +14507,8 @@ snapshots: merge2@1.4.1: {} + meshoptimizer@0.18.1: {} + methods@1.1.2: {} micromark@2.11.4: @@ -16006,6 +16119,8 @@ snapshots: schema-utils: 3.3.0 webpack: 5.89.0(esbuild@0.21.4) + three@0.165.0: {} + thunky@1.1.0: {} tinybench@2.5.1: {} @@ -16248,6 +16363,35 @@ snapshots: universalify@2.0.1: {} + unocss@0.60.4(postcss@8.4.38)(rollup@3.28.1)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0)): + dependencies: + '@unocss/astro': 0.60.4(rollup@3.28.1)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0)) + '@unocss/cli': 0.60.4(rollup@3.28.1) + '@unocss/core': 0.60.4 + '@unocss/extractor-arbitrary-variants': 0.60.4 + '@unocss/postcss': 0.60.4(postcss@8.4.38) + '@unocss/preset-attributify': 0.60.4 + '@unocss/preset-icons': 0.60.4 + '@unocss/preset-mini': 0.60.4 + '@unocss/preset-tagify': 0.60.4 + '@unocss/preset-typography': 0.60.4 + '@unocss/preset-uno': 0.60.4 + '@unocss/preset-web-fonts': 0.60.4 + '@unocss/preset-wind': 0.60.4 + '@unocss/reset': 0.60.4 + '@unocss/transformer-attributify-jsx': 0.60.4 + '@unocss/transformer-attributify-jsx-babel': 0.60.4 + '@unocss/transformer-compile-class': 0.60.4 + '@unocss/transformer-directives': 0.60.4 + '@unocss/transformer-variant-group': 0.60.4 + '@unocss/vite': 0.60.4(rollup@3.28.1)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0)) + optionalDependencies: + vite: 5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + unocss@0.60.4(postcss@8.4.38)(rollup@4.13.0)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0)): dependencies: '@unocss/astro': 0.60.4(rollup@4.13.0)(vite@5.2.12(@types/node@20.14.2)(sass@1.77.4)(terser@5.26.0))