@@ -22,6 +22,7 @@ export class APIClient {
2222 private closed = false ;
2323 private _running = false ;
2424 private _lastNanos = 0 ;
25+ private readonly apiEvents = new EventTarget ( ) ;
2526 private readonly pendingCommands = new Map <
2627 string ,
2728 [ ( result : any ) => void , ( error : Error ) => void ]
@@ -30,7 +31,6 @@ export class APIClient {
3031 readonly connected ;
3132
3233 onConnected ?: ( helloMessage : APIHello ) => void ;
33- onEvent ?: ( event : APIEvent ) => void ;
3434 onError ?: ( error : APIError ) => void ;
3535
3636 constructor (
@@ -139,9 +139,9 @@ export class APIClient {
139139 return await this . sendCommand ( 'sim:pause' ) ;
140140 }
141141
142- async simResume ( pauseAfter ?: number ) {
142+ async simResume ( pauseAfter ?: number , { waitForBytes } : { waitForBytes ?: number [ ] } = { } ) {
143143 this . _running = true ;
144- return await this . sendCommand ( 'sim:resume' , { pauseAfter } ) ;
144+ return await this . sendCommand ( 'sim:resume' , { pauseAfter, waitForBytes } ) ;
145145 }
146146
147147 async simRestart ( { pause } : { pause ?: boolean } = { } ) {
@@ -253,7 +253,21 @@ export class APIClient {
253253 this . _running = false ;
254254 }
255255 this . _lastNanos = message . nanos ;
256- this . onEvent ?.( message ) ;
256+ this . apiEvents . dispatchEvent ( new CustomEvent < APIEvent > ( message . event , { detail : message } ) ) ;
257+ }
258+
259+ listen ( event : string , listener : ( event : APIEvent ) => void , options ?: AddEventListenerOptions ) {
260+ const callback = ( e : CustomEventInit < APIEvent > ) => {
261+ if ( e . detail == null ) {
262+ return ;
263+ }
264+ listener ( e . detail ) ;
265+ } ;
266+
267+ this . apiEvents . addEventListener ( event , callback , options ) ;
268+ return ( ) => {
269+ this . apiEvents . removeEventListener ( event , callback , options ) ;
270+ } ;
257271 }
258272
259273 processResponse ( message : APIResponse ) {
0 commit comments