11import { SECOND } from '@solid-primitives/date'
2- import { type EventBus , createEventBus , createEventHub } from '@solid-primitives/event-bus'
2+ import { createEventBus } from '@solid-primitives/event-bus'
33import { debounce } from '@solid-primitives/scheduled'
44import { defer } from '@solid-primitives/utils'
55import { type Debugger , DebuggerModule , DevtoolsMainView , type NodeID } from '@solid-devtools/debugger/types'
@@ -10,41 +10,50 @@ import createInspector from './inspector.tsx'
1010import { type Structure } from './structure.tsx'
1111import * as ui from './ui/index.ts'
1212
13- // TODO: add to solid-primitives/event-bus
14- type ToEventBusChannels < T extends Record < string , any > > = {
15- [ K in keyof T ] : EventBus < T [ K ] >
16- }
17-
18- export type InputMessage = {
13+ export type Input_Message = {
1914 [ K in keyof Debugger . OutputChannels ] : {
2015 name : K ,
2116 details : Debugger . OutputChannels [ K ] ,
2217 }
2318} [ keyof Debugger . OutputChannels ]
24- export type InputListener = ( e : InputMessage ) => void
19+ export type Input_Listener = ( e : Input_Message ) => void
20+
21+ export type Output_Message = {
22+ [ K in keyof Debugger . InputChannels ] : {
23+ name : K ,
24+ details : Debugger . InputChannels [ K ] ,
25+ }
26+ } [ keyof Debugger . InputChannels ]
27+ export type Output_Listener = ( e : Output_Message ) => void
2528
2629function createDebuggerBridge ( ) {
2730
28- const output = createEventHub < ToEventBusChannels < Debugger . InputChannels > > ( $ => ( {
29- ResetState : $ ( ) ,
30- InspectNode : $ ( ) ,
31- InspectValue : $ ( ) ,
32- HighlightElementChange : $ ( ) ,
33- OpenLocation : $ ( ) ,
34- TreeViewModeChange : $ ( ) ,
35- ViewChange : $ ( ) ,
36- ToggleModule : $ ( ) ,
37- } ) )
31+ let output_listeners : Output_Listener [ ] = [ ]
32+ const output = {
33+ listen ( listener : Output_Listener ) {
34+ output_listeners . push ( listener )
35+ s . onCleanup ( ( ) => {
36+ mutate_remove ( output_listeners , listener )
37+ } )
38+ } ,
39+ emit ( e : Output_Message ) {
40+ s . batch ( ( ) => {
41+ for ( let fn of output_listeners ) {
42+ fn ( e )
43+ }
44+ } )
45+ } ,
46+ }
3847
39- let input_listeners : InputListener [ ] = [ ]
48+ let input_listeners : Input_Listener [ ] = [ ]
4049 const input = {
41- listen ( listener : InputListener ) {
50+ listen ( listener : Input_Listener ) {
4251 input_listeners . push ( listener )
4352 s . onCleanup ( ( ) => {
4453 mutate_remove ( input_listeners , listener )
4554 } )
4655 } ,
47- emit ( e : InputMessage ) {
56+ emit ( e : Input_Message ) {
4857 s . batch ( ( ) => {
4958 for ( let fn of input_listeners ) {
5059 fn ( e )
@@ -163,9 +172,12 @@ function createController(bridge: DebuggerBridge, options: DevtoolsOptions) {
163172 const locatorEnabled = ( ) => devtoolsLocatorEnabled ( ) || clientLocatorEnabled ( )
164173
165174 // send devtools locator state
166- s . createEffect ( defer ( devtoolsLocatorEnabled , enabled =>
167- bridge . output . ToggleModule . emit ( { module : DebuggerModule . Locator , enabled} ) ,
168- ) )
175+ s . createEffect ( defer ( devtoolsLocatorEnabled , enabled => {
176+ bridge . output . emit ( {
177+ name : 'ToggleModule' ,
178+ details : { module : DebuggerModule . Locator , enabled}
179+ } )
180+ } ) )
169181
170182 function setClientLocatorState ( enabled : boolean ) {
171183 s . batch ( ( ) => {
@@ -184,7 +196,12 @@ function createController(bridge: DebuggerBridge, options: DevtoolsOptions) {
184196 } | null > ( null , { equals : ( a , b ) => a ?. id === b ?. id } )
185197
186198 // highlight hovered element
187- s . createEffect ( defer ( extHoveredNode , bridge . output . HighlightElementChange . emit ) )
199+ s . createEffect ( defer ( extHoveredNode , node => {
200+ bridge . output . emit ( {
201+ name : 'HighlightElementChange' ,
202+ details : node ,
203+ } )
204+ } ) )
188205
189206 const hoveredId = s . createMemo ( ( ) => {
190207 const extNode = extHoveredNode ( )
@@ -213,7 +230,9 @@ function createController(bridge: DebuggerBridge, options: DevtoolsOptions) {
213230 setOpenedView ( view )
214231 }
215232
216- s . createEffect ( defer ( openedView , bridge . output . ViewChange . emit ) )
233+ s . createEffect ( defer ( openedView , view => {
234+ bridge . output . emit ( { name : 'ViewChange' , details : view } )
235+ } ) )
217236
218237 //
219238 // Node updates - signals and computations updating
0 commit comments