Skip to content

Commit 79e6d35

Browse files
webfansplzantfu
andauthoredJun 21, 2024··
feat: migrate vue-devtools to v7.3 (#675)
Co-authored-by: Anthony Fu <github@antfu.me>
1 parent 0ac6511 commit 79e6d35

File tree

9 files changed

+614
-195
lines changed

9 files changed

+614
-195
lines changed
 

‎packages/devtools/client/composables/vue-devtools.ts

-22
This file was deleted.

‎packages/devtools/client/pages/modules/components-tree.vue

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script setup lang="ts">
22
import { Components as VueComponents } from '@vue/devtools-applet'
3+
import { useDevToolsState as useVueDevToolsState } from '@vue/devtools-core'
34
45
const { connected } = useVueDevToolsState()
56
const client = useClient()

‎packages/devtools/client/pages/modules/pinia.vue

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script setup lang="ts">
22
import { Pinia } from '@vue/devtools-applet'
3+
import { useDevToolsState as useVueDevToolsState } from '@vue/devtools-core'
34
45
const { connected } = useVueDevToolsState()
56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { VueDevToolsVuePlugin } from '@vue/devtools-core'
2+
3+
export default defineNuxtPlugin((nuxtApp) => {
4+
nuxtApp.vueApp.use(VueDevToolsVuePlugin())
5+
})
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,5 @@
1-
import { HandShakeServer, getDevToolsState, initDevToolsSeparateWindow, initDevToolsSeparateWindowBridge, onDevToolsStateUpdated, setupDevToolsBridge } from '@vue/devtools-core'
2-
import type { AppRecord } from '@vue/devtools-kit'
3-
import { toggleHighPerfMode } from '@vue/devtools-kit'
4-
5-
export type DevtoolsBridgeAppRecord = Pick<AppRecord, 'name' | 'id' | 'version' | 'routerId' | 'moduleDetectives'>
6-
7-
const appConnected = ref(false)
8-
const clientConnected = ref(false)
9-
const appRecords = ref<Array<DevtoolsBridgeAppRecord>>([])
10-
const activeAppRecordId = ref<string | null>(null)
11-
export const connected = computed(() => appConnected.value && clientConnected.value)
12-
export const activeAppRecord = computed(() => appRecords.value.find(r => r.id === activeAppRecordId.value))
13-
14-
export function initVueDevToolsState() {
15-
getDevToolsState().then((data) => {
16-
if (!data)
17-
return
18-
appConnected.value = data.connected
19-
clientConnected.value = data.clientConnected
20-
appRecords.value = data.appRecords
21-
activeAppRecordId.value = data.activeAppRecordId
22-
})
23-
24-
onDevToolsStateUpdated((data) => {
25-
if (!data)
26-
return
27-
appConnected.value = data.connected
28-
clientConnected.value = data.clientConnected
29-
appRecords.value = data.appRecords
30-
activeAppRecordId.value = data.activeAppRecordId
31-
})
32-
33-
return {
34-
appRecords,
35-
activeAppRecord,
36-
}
37-
}
1+
import { functions, onRpcConnected, rpc } from '@vue/devtools-core'
2+
import { createRpcClient, toggleHighPerfMode } from '@vue/devtools-kit'
383

394
export function setupVueDevTools() {
405
const state = useDevToolsFrameState()
@@ -48,18 +13,10 @@ export function setupVueDevTools() {
4813
toggleHighPerfMode(!state.value?.open)
4914
})
5015

51-
initDevToolsSeparateWindow({
52-
onConnected(channel) {
53-
const bridge = initDevToolsSeparateWindowBridge(channel)
54-
setupDevToolsBridge(bridge)
55-
new HandShakeServer(bridge).onnConnect().then(() => {
56-
bridge.emit('devtools:client-ready')
57-
initVueDevToolsState()
58-
})
59-
bridge.on('disconnect', () => {
60-
channel.close()
61-
initDevToolsSeparateWindow()
62-
})
63-
},
16+
createRpcClient(functions, {
17+
preset: 'iframe',
18+
})
19+
onRpcConnected(() => {
20+
rpc.value.initDevToolsServerListener()
6421
})
6522
}

‎packages/devtools/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
"@nuxt/devtools-kit": "workspace:*",
4747
"@nuxt/devtools-wizard": "workspace:*",
4848
"@nuxt/kit": "^3.12.2",
49+
"@vue/devtools-core": "7.3.3",
50+
"@vue/devtools-kit": "7.3.3",
4951
"birpc": "^0.2.17",
5052
"consola": "^3.2.3",
5153
"cronstrue": "^2.50.0",
@@ -96,9 +98,7 @@
9698
"@unocss/preset-uno": "^0.61.0",
9799
"@unocss/runtime": "^0.61.0",
98100
"@vitest/ui": "^1.6.0",
99-
"@vue/devtools-applet": "7.1.3",
100-
"@vue/devtools-core": "7.1.3",
101-
"@vue/devtools-kit": "7.1.3",
101+
"@vue/devtools-applet": "7.3.3",
102102
"@vueuse/nuxt": "^10.11.0",
103103
"esno": "^4.7.0",
104104
"floating-vue": "5.0.2",

‎packages/devtools/src/runtime/plugins/view/client.ts

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { createHooks } from 'hookable'
44
import { debounce } from 'perfect-debounce'
55
import type { Router } from 'vue-router'
66
import type { $Fetch } from 'ofetch'
7+
import { setIframeServerContext } from '@vue/devtools-kit'
78
import type { NuxtDevtoolsHostClient, TimelineEventRoute, TimelineMetrics } from '../../../types'
89
import { initTimelineMetrics } from '../../function-metrics-helpers'
910
import Main from './Main.vue'
@@ -133,6 +134,7 @@ export async function setupDevToolsClient({
133134
iframe.src = initialUrl
134135
iframe.onload = async () => {
135136
try {
137+
setIframeServerContext(iframe!)
136138
await waitForClientInjection()
137139
client.syncClient()
138140
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
import { devtools } from '@vue/devtools-kit'
2-
import { initAppSeparateWindow } from '@vue/devtools-core'
1+
import { createRpcServer, devtools } from '@vue/devtools-kit'
2+
import { functions } from '@vue/devtools-core'
33

44
devtools.init()
55

6-
initAppSeparateWindow()
6+
createRpcServer(functions, {
7+
preset: 'iframe',
8+
})

‎pnpm-lock.yaml

+590-117
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
Please sign in to comment.