@@ -9,38 +9,43 @@ export class TanstackDevtoolsClientEventBus {
99 #socket: WebSocket | null
1010 #eventSource: EventSource | null
1111 #eventTarget: EventTarget
12+ #debug: boolean
1213 #dispatcher = ( e : Event ) => {
13- const event = ( e as CustomEvent ) . detail as TanStackDevtoolsEvent <
14- string ,
15- any
16- >
14+ const event = ( e as CustomEvent ) . detail
1715 this . emitToServer ( event )
1816 this . emitToClients ( event )
1917 }
20- constructor ( { port = 42069 } = { } ) {
18+ constructor ( { port = 42069 , debug = false } = { } ) {
19+ this . #debug = debug
2120 this . #eventSource = null
2221 this . #port = port
2322 this . #socket = null
2423 this . #eventTarget = this . getGlobalTarget ( )
24+ this . debugLog ( 'Initializing client event bus' )
2525 }
2626
2727 private emitToClients ( event : TanStackDevtoolsEvent < string > ) {
28- console . log ( '🌴 [tanstack-devtools] Emitting event from client bus' , event )
29- this . #eventTarget. dispatchEvent (
30- new CustomEvent ( event . type , { detail : event } ) ,
31- )
32- this . #eventTarget. dispatchEvent (
33- new CustomEvent ( 'tanstack-devtools-global' , { detail : event } ) ,
34- )
28+ this . debugLog ( 'Emitting event from client bus' , event )
29+ const specificEvent = new CustomEvent ( event . type , { detail : event } )
30+ this . debugLog ( 'Emitting event to specific client listeners' , specificEvent )
31+ this . #eventTarget. dispatchEvent ( specificEvent )
32+ const globalEvent = new CustomEvent ( 'tanstack-devtools-global' , {
33+ detail : event ,
34+ } )
35+ this . debugLog ( 'Emitting event to global client listeners' , globalEvent )
36+ this . #eventTarget. dispatchEvent ( globalEvent )
3537 }
3638
3739 private emitToServer ( event : TanStackDevtoolsEvent < string , any > ) {
3840 const json = JSON . stringify ( event )
3941 // try to emit it to the event bus first
4042 if ( this . #socket && this . #socket. readyState === WebSocket . OPEN ) {
43+ this . debugLog ( 'Emitting event to server via WS' , event )
4144 this . #socket. send ( json )
4245 // try to emit to SSE if WebSocket is not available (this will only happen on the client side)
4346 } else if ( this . #eventSource) {
47+ this . debugLog ( 'Emitting event to server via SSE' , event )
48+
4449 fetch ( `http://localhost:${ this . #port} /__devtools/send` , {
4550 method : 'POST' ,
4651 headers : { 'Content-Type' : 'application/json' } ,
@@ -49,7 +54,7 @@ export class TanstackDevtoolsClientEventBus {
4954 }
5055 }
5156 start ( hasServer ?: boolean ) {
52- console . log ( '🌴 [tanstack-devtools] Starting client event bus')
57+ this . debugLog ( ' Starting client event bus')
5358 if ( typeof window === 'undefined' ) {
5459 return
5560 }
@@ -63,6 +68,7 @@ export class TanstackDevtoolsClientEventBus {
6368 )
6469 }
6570 stop ( ) {
71+ this . debugLog ( 'Stopping client event bus' )
6672 if ( typeof window === 'undefined' ) {
6773 return
6874 }
@@ -82,21 +88,36 @@ export class TanstackDevtoolsClientEventBus {
8288
8389 return new EventTarget ( )
8490 }
91+ private debugLog ( ...messages : Array < any > ) {
92+ if ( this . #debug) {
93+ console . log ( '🌴 [tanstack-devtools:client-bus]' , ...messages )
94+ }
95+ }
8596 private connectSSE ( ) {
97+ this . debugLog ( 'Connecting to SSE server' )
8698 this . #eventSource = new EventSource (
8799 `http://localhost:${ this . #port} /__devtools/sse` ,
88100 )
89- this . #eventSource. onmessage = ( e ) => this . handleEventReceived ( e . data )
101+ this . #eventSource. onmessage = ( e ) => {
102+ this . debugLog ( 'Received message from SSE server' , e . data )
103+ this . handleEventReceived ( e . data )
104+ }
90105 }
91106
92107 private connectWebSocket ( ) {
108+ this . debugLog ( 'Connecting to WebSocket server' )
109+
93110 this . #socket = new WebSocket ( `ws://localhost:${ this . #port} /__devtools/ws` )
94- this . #socket. onmessage = ( e ) => this . handleEventReceived ( e . data )
111+ this . #socket. onmessage = ( e ) => {
112+ this . debugLog ( 'Received message from server' , e . data )
113+ this . handleEventReceived ( e . data )
114+ }
95115 this . #socket. onclose = ( ) => {
116+ this . debugLog ( 'WebSocket connection closed' )
96117 this . #socket = null
97118 }
98119 this . #socket. onerror = ( ) => {
99- // Prevent default error logging
120+ this . debugLog ( 'WebSocket connection error' )
100121 }
101122 }
102123
0 commit comments