Skip to content

Commit c37a3fe

Browse files
authored
fix(client,kit): message passing parse error (#277)
1 parent 8c7315b commit c37a3fe

File tree

9 files changed

+36
-45
lines changed

9 files changed

+36
-45
lines changed

packages/client/src/pages/components.vue

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ function normalizeComponentState(data: { state?: InspectorState[] }) {
211211
212212
function getComponentState(id: string) {
213213
getInspectorState({ inspectorId: 'components', nodeId: id }).then((data) => {
214-
activeComponentState.value = normalizeComponentState(parse(data))
214+
activeComponentState.value = normalizeComponentState(parse(data!))
215215
})
216216
}
217217
@@ -226,8 +226,7 @@ onDevToolsClientConnected(() => {
226226
getComponentTree().then(() => {
227227
loaded.value = true
228228
})
229-
onInspectorTreeUpdated((_data) => {
230-
const data = parse(_data)
229+
onInspectorTreeUpdated((data) => {
231230
if (!data?.data.length || data.inspectorId !== inspectorId)
232231
return
233232
@@ -240,8 +239,7 @@ onDevToolsClientConnected(() => {
240239
})
241240
242241
// state
243-
onInspectorStateUpdated((_data) => {
244-
const data = parse(_data)
242+
onInspectorStateUpdated((data) => {
245243
if (data.inspectorId !== inspectorId)
246244
return
247245

packages/client/src/pages/i18n.vue

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,22 +49,18 @@ onDevToolsClientConnected(() => {
4949
}
5050
})
5151
52-
onInspectorTreeUpdated((_data) => {
53-
const data = parse(_data)
54-
52+
onInspectorTreeUpdated((data) => {
5553
if (!data?.data.length)
5654
return
57-
tree.value = data.data
55+
tree.value = data.data as unknown as { id: string, label: string, tags: InspectorNodeTag[] }[]
5856
if (!selected.value && data.data.length) {
5957
selected.value = data.data[0].id
6058
getI18nState(data.data[0].id)
6159
}
6260
})
6361
64-
onInspectorStateUpdated((_data) => {
65-
const data = parse(_data)
66-
67-
if (!data || !data.state.length || data.inspectorId !== INSPECTOR_ID)
62+
onInspectorStateUpdated((data) => {
63+
if (!data || !data?.state?.length || data.inspectorId !== INSPECTOR_ID)
6864
return
6965
7066
state.value = {

packages/client/src/pages/overview.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ onDevToolsClientConnected(() => {
3636
const data = parse(_data!)
3737
componentCount.value = normalizeComponentCount(data)
3838
})
39-
onInspectorTreeUpdated((_data) => {
40-
const data = parse(_data)
39+
onInspectorTreeUpdated((data) => {
4140
if (!data?.data?.length || data.inspectorId !== 'components')
4241
return
4342
componentCount.value = normalizeComponentCount(data.data)

packages/client/src/pages/pinia.vue

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,25 +42,23 @@ onDevToolsClientConnected(() => {
4242
}
4343
})
4444
45-
onInspectorTreeUpdated((_data) => {
46-
const data = parse(_data)
45+
onInspectorTreeUpdated((data) => {
4746
if (!data?.data.length || data.inspectorId !== inspectorId)
4847
return
49-
tree.value = data.data
48+
tree.value = data.data as unknown as { id: string, label: string, tags: InspectorNodeTag[] }[]
5049
if (!selected.value && data.data.length) {
5150
selected.value = data.data[0].id
5251
getPiniaState(data.data[0].id)
5352
}
5453
})
5554
56-
onInspectorStateUpdated((_data) => {
57-
const data = parse(_data)
55+
onInspectorStateUpdated((data) => {
5856
if (!data || !data?.state?.length || data.inspectorId !== inspectorId)
5957
return
6058
6159
state.value = {
6260
state: data.state,
63-
getters: data.getters,
61+
getters: data.getters!,
6462
}
6563
})
6664
})

packages/client/src/pages/router.vue

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,17 @@ onDevToolsClientConnected(() => {
4343
}
4444
})
4545
46-
onInspectorTreeUpdated((_data) => {
47-
const data = parse(_data)
48-
49-
if (!data?.data?.length || data.inspectorId !== inspectorId)
46+
onInspectorTreeUpdated((data) => {
47+
if (!data?.data?.length || data.inspectorId !== inspectorId.value)
5048
return
51-
tree.value = data.data
49+
tree.value = data.data as unknown as { id: string, label: string }[]
5250
if (!selected.value && data.data.length) {
5351
selected.value = data.data[0].id
5452
getRouterState(data.data[0].id)
5553
}
5654
})
5755
58-
onInspectorStateUpdated((_data) => {
59-
const data = parse(_data)
60-
56+
onInspectorStateUpdated((data) => {
6157
if (!data || !data.state || data.inspectorId !== inspectorId.value)
6258
return
6359

packages/core/src/bridge-events/devtools-actions.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { InspectorStateEditorPayload } from '@vue/devtools-kit'
2+
import { stringify } from '@vue/devtools-kit'
23
import { defineDevToolsAction } from '../bridge'
34

45
export const checkVueInspectorDetected = defineDevToolsAction<boolean>('devtools:check-vue-inspector-detected', async (devtools) => {
@@ -23,8 +24,9 @@ export const openInEditor = defineDevToolsAction('devtools:open-in-editor', (dev
2324
devtools.api.openInEditor({ file })
2425
})
2526

26-
export const getInspectorTree = defineDevToolsAction('devtools:inspector-tree', (devtools, payload) => {
27-
return devtools.api.getInspectorTree(payload)
27+
export const getInspectorTree = defineDevToolsAction('devtools:inspector-tree', async (devtools, payload) => {
28+
const res = await devtools.api.getInspectorTree(payload)
29+
return stringify(res) as string
2830
})
2931

3032
export const getComponentBoundingRect = defineDevToolsAction('devtools:get-component-bounding-rect', (devtools, payload) => {
@@ -43,8 +45,9 @@ export const scrollToComponent = defineDevToolsAction('devtools:scroll-to-compon
4345
return devtools.api.scrollToComponent(payload)
4446
})
4547

46-
export const getInspectorState = defineDevToolsAction('devtools:inspector-state', (devtools, payload) => {
47-
return devtools.api.getInspectorState(payload)
48+
export const getInspectorState = defineDevToolsAction('devtools:inspector-state', async (devtools, payload) => {
49+
const res = await devtools.api.getInspectorState(payload)
50+
return stringify(res) as string
4851
})
4952

5053
export const updateInspectorTreeId = defineDevToolsAction('devtools:update-inspector-tree-id', (devtools, payload) => {

packages/core/src/bridge-events/devtools-listeners.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { CustomCommand, CustomTab, DevToolsState, RouterInfo, TimelineEvent } from '@vue/devtools-kit'
1+
import type { ComponentTreeNode, CustomCommand, CustomTab, DevToolsState, InspectorState, RouterInfo, TimelineEvent } from '@vue/devtools-kit'
22
import { defineDevToolsListener } from '../bridge'
33

44
export const onDevToolsStateUpdated = defineDevToolsListener<DevToolsState & { vueVersion: string }>('devtools:on-state-updated', (devtools, callback) => {
@@ -52,13 +52,13 @@ export const onCustomCommandsUpdated = defineDevToolsListener<CustomCommand[]>('
5252
})
5353
})
5454

55-
export const onInspectorTreeUpdated = defineDevToolsListener<string>('devtools:on-inspector-tree-updated', (devtools, callback) => {
55+
export const onInspectorTreeUpdated = defineDevToolsListener<{ inspectorId: string, data: ComponentTreeNode[] }>('devtools:on-inspector-tree-updated', (devtools, callback) => {
5656
devtools.api.on.sendInspectorTree((payload) => {
5757
callback(payload)
5858
})
5959
})
6060

61-
export const onInspectorStateUpdated = defineDevToolsListener<string>('devtools:on-inspector-state-updated', (devtools, callback) => {
61+
export const onInspectorStateUpdated = defineDevToolsListener<{ inspectorId: string, state?: InspectorState[], getters?: InspectorState[] }>('devtools:on-inspector-state-updated', (devtools, callback) => {
6262
devtools.api.on.sendInspectorState((payload) => {
6363
callback(payload)
6464
})

packages/devtools-kit/src/api/api.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { toggleActiveAppRecord } from '../core/app-record'
44
import type { VueAppInstance } from '../types'
55
import { highlight as highlightElement, inspectComponentHighLighter, scrollToComponent, toggleComponentHighLighter, unhighlight as unhighlightElement } from '../core/component-highlighter'
66
import { devtoolsContext } from '../state'
7-
import { now as nowFn, parse, stringify } from '../shared'
7+
import { now as nowFn, stringify } from '../shared'
88
import { StateEditor } from '../core/component/state/editor'
9-
import type { InspectorStateEditorPayload } from '../core/component/types'
9+
import type { ComponentTreeNode, InspectorStateEditorPayload } from '../core/component/types'
1010
import { addCustomTab } from '../core/custom-tab'
1111
import type { CustomTab } from '../core/custom-tab/types'
1212
import { addCustomCommand, removeCustomCommand } from '../core/custom-command'
@@ -82,7 +82,7 @@ export class DevToolsPluginApi {
8282
}, DevToolsEvents.GET_INSPECTOR_TREE)
8383
})
8484

85-
return stringify(_payload.rootNodes) as string
85+
return _payload.rootNodes as ComponentTreeNode[]
8686
}
8787

8888
getInspectorState(payload: { inspectorId?: string, nodeId?: string } = {}) {
@@ -105,7 +105,7 @@ export class DevToolsPluginApi {
105105
const state = _payload.state
106106

107107
delete state.instance
108-
return stringify(state) as string
108+
return state
109109
}
110110

111111
async editInspectorState(payload: InspectorStateEditorPayload) {
@@ -125,10 +125,11 @@ export class DevToolsPluginApi {
125125
const res = await this.getInspectorTree({
126126
inspectorId,
127127
})
128-
apiHooks.callHook(DevToolsEvents.SEND_INSPECTOR_TREE, stringify({
128+
129+
apiHooks.callHook(DevToolsEvents.SEND_INSPECTOR_TREE, {
129130
inspectorId,
130-
data: parse(res),
131-
}) as string)
131+
data: res,
132+
})
132133
}
133134
}
134135

@@ -139,7 +140,7 @@ export class DevToolsPluginApi {
139140
inspectorId,
140141
nodeId: inspector.nodeId,
141142
})
142-
apiHooks.callHook(DevToolsEvents.SEND_INSPECTOR_STATE, stringify({ ...parse(res), inspectorId }) as string)
143+
apiHooks.callHook(DevToolsEvents.SEND_INSPECTOR_STATE, { ...res, inspectorId })
143144
}
144145
}
145146

packages/devtools-kit/src/api/hook.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export interface DevToolsEvent {
4747
instanceData: InspectorStateApiPayload['state']
4848
}) => void
4949
[DevToolsEvents.GET_INSPECTOR_TREE]: (payload: InspectorTreeApiPayload) => void
50-
[DevToolsEvents.SEND_INSPECTOR_TREE]: (payload: string) => void
50+
[DevToolsEvents.SEND_INSPECTOR_TREE]: (payload: { inspectorId: string, data: InspectorTreeApiPayload['rootNodes'] }) => void
5151
[DevToolsEvents.GET_INSPECTOR_STATE]: (payload: InspectorStateApiPayload) => void
5252
[DevToolsEvents.EDIT_INSPECTOR_STATE]: (payload: InspectorStateEditorPayload) => void
5353
[DevToolsEvents.SEND_INSPECTOR_STATE]: (payload: string) => void

0 commit comments

Comments
 (0)