Skip to content

Commit c7f699f

Browse files
committed
refactor!: Change the message structure from {name, details} to {kind, data}
1 parent d9822d2 commit c7f699f

18 files changed

Lines changed: 141 additions & 150 deletions

File tree

.changeset/fair-dryers-repair.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"@solid-devtools/debugger": minor
3+
"@solid-devtools/frontend": minor
4+
"@solid-devtools/overlay": minor
5+
"@solid-devtools/shared": minor
6+
"@solid-devtools/extension": minor
7+
---
8+
9+
Change the message structure from {name, details} to {kind, data}

extension/src/background.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -245,9 +245,9 @@ function on_message(port: Port, e: Message) {
245245
assert(content)
246246

247247
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
248-
switch (e.name) {
248+
switch (e.kind) {
249249
case 'Detected': {
250-
content.detection = e.details
250+
content.detection = e.data
251251

252252
if (popup) {
253253
port_post_message_obj(popup.port, e)
@@ -258,7 +258,7 @@ function on_message(port: Port, e: Message) {
258258
break
259259
}
260260
case 'Versions': {
261-
content.versions = e.details
261+
content.versions = e.data
262262

263263
if (popup) {
264264
port_post_message_obj(popup.port, e)
@@ -297,7 +297,7 @@ function on_message(port: Port, e: Message) {
297297
if (content) {
298298
port_post_message_obj(content.port, e)
299299
} else {
300-
error(`Cannot forward ${Place_Name.Panel} -> ${Place_Name.Content} - ${e.name}:`, e.details)
300+
error(`Cannot forward ${Place_Name.Panel} -> ${Place_Name.Content} - ${e.kind}:`, e.data)
301301
}
302302

303303
break

extension/src/content.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ let devtools_opened = false
7373
/* From Background */
7474
port_on_message(port, e => {
7575
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
76-
switch (e.name) {
76+
switch (e.kind) {
7777
case 'DevtoolsOpened':
78-
devtools_opened = e.details
78+
devtools_opened = e.data
7979
window_post_message_obj(e)
8080
break
8181
default:
@@ -87,7 +87,7 @@ port_on_message(port, e => {
8787
/* From Client / Detector_Real_World */
8888
window_on_message(e => {
8989
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
90-
switch (e.name) {
90+
switch (e.kind) {
9191
case 'Debugger_Connected': {
9292

9393
// eslint-disable-next-line no-console
@@ -98,9 +98,9 @@ window_on_message(e => {
9898
)
9999

100100
port_post_message(port, 'Versions', {
101-
client: e.details.client,
102-
solid: e.details.solid,
103-
extension: extension_version,
101+
client: e.data.client,
102+
solid: e.data.solid,
103+
extension: extension_version,
104104
client_expected: import.meta.env.EXPECTED_CLIENT,
105105
})
106106

extension/src/devtools.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ let panel: Panel | undefined
3131
port_on_message(port, e => {
3232

3333
// "Versions" mean that devtools client is on the page
34-
if (e.name === 'Versions' && e.details && !panel_creating && !panel) {
34+
if (e.kind === 'Versions' && e.data && !panel_creating && !panel) {
3535
panel_creating = true
3636

3737
log('Debugger connected -> Creating Devtools_Panel...')

extension/src/panel.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ function App() {
5050
const port = chrome.runtime.connect({name: ConnectionName.Panel})
5151
port_on_message(port, e => {
5252
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
53-
switch (e.name) {
53+
switch (e.kind) {
5454
case 'Versions':
55-
setVersions(e.details ?? empty_versions)
55+
setVersions(e.data ?? empty_versions)
5656
break
5757
default:
5858
/* Client -> Devtools */
@@ -65,14 +65,14 @@ function App() {
6565

6666
devtools.output.listen(e => {
6767
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
68-
switch (e.name) {
68+
switch (e.kind) {
6969
case 'ConsoleInspectValue': {
7070
/*
7171
`chrome.devtools.inspectedWindow.eval` runs in a devtools console
7272
so the value can be additionally inspected with `inspect()`
7373
*/
7474
let get_value = `window[${JSON.stringify(debug.GLOBAL_GET_VALUE)}]`
75-
let value_id = JSON.stringify(e.details)
75+
let value_id = JSON.stringify(e.data)
7676

7777
chrome.devtools.inspectedWindow.eval(
7878
/*js*/`typeof ${get_value} === 'function' && (() => {

extension/src/popup.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ const [detectionState, setDetectionState] = s.createSignal(empty_detection_state
2626

2727
port_on_message(port, e => {
2828
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
29-
switch (e.name) {
29+
switch (e.kind) {
3030
case 'Detected':
31-
setDetectionState(e.details ?? empty_detection_state)
31+
setDetectionState(e.data ?? empty_detection_state)
3232
break
3333
case 'Versions':
34-
setVersions(e.details)
34+
setVersions(e.data)
3535
break
3636
}
3737
})

extension/src/real_world.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,13 @@ async function attach_debugger() {
9797
/* From Content */
9898
window_on_message(e => {
9999
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
100-
switch (e.name) {
100+
switch (e.kind) {
101101
case 'DevtoolsOpened':
102-
instance.toggleEnabled(e.details)
102+
instance.toggleEnabled(e.data)
103103
break
104104
default:
105105
/* Content -> Debugger */
106-
instance.emit(e.name as any, e.details)
106+
instance.emit(e as any)
107107
}
108108
})
109109

extension/src/shared.ts

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ File for utilities, constants and types related to the communication between the
55
*/
66

77
import * as debug from '@solid-devtools/debugger/types'
8+
import {type Union} from '@solid-devtools/shared/utils'
89

910

1011
export const ICON_SOLID_BLUE_16 = 'solid-normal-16.png'
@@ -54,9 +55,9 @@ export const enum ConnectionName {
5455
}
5556

5657
export type DetectionState = {
57-
solid: boolean
58+
solid: boolean
5859
solid_dev: boolean
59-
setup: boolean
60+
setup: boolean
6061
}
6162

6263
export type Versions = {
@@ -87,15 +88,10 @@ export type Channels = debug.InputChannels
8788
& debug.OutputChannels
8889
& GeneralChannels
8990

90-
export type Message = {
91-
[K in keyof Channels]: {
92-
name: K,
93-
details: Channels[K],
94-
}
95-
}[keyof Channels]
91+
export type Message = Union<Channels>
9692

9793
export function to_message(e: any): Message | null {
98-
return e && typeof e === 'object' && typeof e['name'] === 'string'
94+
return e && typeof e === 'object' && typeof e['kind'] === 'string'
9995
? e
10096
: null
10197
}
@@ -110,9 +106,9 @@ export function port_on_message(port: Port, cb: (e: Message) => void) {
110106
}
111107

112108
export function port_post_message<K extends keyof Channels>(
113-
port: Port, name: K, details: Channels[K],
109+
port: Port, kind: K, data: Channels[K],
114110
) {
115-
port.postMessage({name, details})
111+
port.postMessage({kind, data})
116112
}
117113
export function port_post_message_obj(port: Port, e: Message) {
118114
port.postMessage(e)
@@ -126,9 +122,9 @@ export function window_on_message(cb: (e: Message) => void) {
126122
}
127123

128124
export function window_post_message<K extends keyof Channels>(
129-
name: K, details: Channels[K],
125+
kind: K, data: Channels[K],
130126
) {
131-
postMessage({name, details})
127+
postMessage({kind, data})
132128
}
133129
export function window_post_message_obj(e: Message) {
134130
postMessage(e)

packages/debugger/src/dependency/index.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
import * as s from 'solid-js'
12
import {throttle} from '@solid-primitives/scheduled'
23
import {defer} from '@solid-primitives/utils'
3-
import {type Accessor, createEffect, createMemo} from 'solid-js'
4+
import {msg} from '@solid-devtools/shared/utils'
45
import {DevtoolsMainView, NodeType} from '../main/constants.ts'
56
import {ObjectType, getObjectById} from '../main/id.ts'
67
import {type NodeID, type Solid} from '../main/types.ts'
@@ -13,8 +14,8 @@ export {type SerializedDGraph} from './collect.ts'
1314
export type DGraphUpdate = SerializedDGraph.Graph | null
1415

1516
export function createDependencyGraph(props: {
16-
enabled: Accessor<boolean>
17-
inspectedState: Accessor<InspectedState>
17+
enabled: s.Accessor<boolean>
18+
inspectedState: s.Accessor<InspectedState>
1819
onNodeUpdate: (nodeId: NodeID) => void
1920
emit: OutputEmit
2021
}) {
@@ -30,7 +31,7 @@ export function createDependencyGraph(props: {
3031
})
3132
}
3233

33-
const inspectedNode = createMemo(() => {
34+
const inspectedNode = s.createMemo(() => {
3435
const state = props.inspectedState()
3536

3637
if (state.signalId) {
@@ -57,19 +58,19 @@ export function createDependencyGraph(props: {
5758
type === NodeType.Context
5859
) {
5960
clearListeners = null
60-
props.emit('DgraphUpdate', null)
61+
props.emit(msg('DgraphUpdate', null))
6162
return
6263
}
6364

6465
const dgraph = collectDependencyGraph(node as Solid.Computation | Solid.Signal, {
6566
onNodeUpdate,
6667
})
6768
clearListeners = dgraph.clearListeners
68-
props.emit('DgraphUpdate', dgraph.graph)
69+
props.emit(msg('DgraphUpdate', dgraph.graph))
6970
}
7071
const triggerInspect = throttle(inspectDGraph, 200)
7172

72-
createEffect(
73+
s.createEffect(
7374
defer([props.enabled, inspectedNode], () => {
7475
queueMicrotask(inspectDGraph)
7576
}),

packages/debugger/src/inspector/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {warn} from '@solid-devtools/shared/utils'
1+
import {msg, warn} from '@solid-devtools/shared/utils'
22
import {scheduleIdle, throttle} from '@solid-primitives/scheduled'
33
import {type Accessor, createEffect, onCleanup} from 'solid-js'
44
import {type OutputEmit} from '../main/index.ts'
@@ -99,7 +99,7 @@ export function createInspector(props: {
9999

100100
// Emit updates
101101
if (batchedUpdates.length) {
102-
props.emit('InspectorUpdate', batchedUpdates)
102+
props.emit(msg('InspectorUpdate', batchedUpdates))
103103
}
104104
})
105105

@@ -164,7 +164,7 @@ export function createInspector(props: {
164164
observedPropsMap: propsMap,
165165
})
166166

167-
props.emit('InspectedNodeDetails', result.details)
167+
props.emit(msg('InspectedNodeDetails', result.details))
168168

169169
valueMap = result.valueMap
170170
lastDetails = result.details

0 commit comments

Comments
 (0)