@@ -248,7 +248,7 @@ class InternalInstance {
248248 private globalHandlers = new Handlers ( )
249249 private resolved = null as Promise < Record < string , any > > | null
250250 private accumulations : Map < symbol | string , Array < symbol | string | Event > > = new Map ( ) ;
251- private eventAborter = new AbortController ( ) ;
251+ private eventAborter = typeof AbortController !== 'undefined' ? new AbortController ( ) : undefined ;
252252 child : null | InternalInstance = null
253253
254254 constructor (
@@ -334,14 +334,14 @@ class InternalInstance {
334334 // Not sure if we still need this if we have abort signals, and for what versions of Node/browsers?
335335 target . removeEventListener ( event , this ) ;
336336 }
337- this . eventAborter . abort ( ) ;
337+ this . eventAborter ? .abort ( ) ;
338338
339339 this . globalHandlers . reset ( ) ;
340340 }
341341
342342 consume ( stateGenerator : ( ( ) => StateDefinition ) | ( ( ) => Generator < Yielded , StateDefinition , never > ) ) {
343343 this . cleanup ( ) ;
344- this . eventAborter = new AbortController ( ) ;
344+ this . eventAborter = typeof AbortController !== 'undefined' ? new AbortController ( ) : undefined ;
345345
346346 this . willEnter ( ) ;
347347
@@ -374,7 +374,7 @@ class InternalInstance {
374374 }
375375
376376 for ( const [ event , target ] of this . globalHandlers . eventsToListenTo ) {
377- target . addEventListener ( event , this , { signal : this . eventAborter . signal } as AddEventListenerOptions ) ;
377+ target . addEventListener ( event , this , { signal : this . eventAborter ? .signal } as AddEventListenerOptions ) ;
378378 }
379379
380380 } else if ( typeof initialReturn === 'function' ) {
@@ -474,7 +474,15 @@ class InternalInstance {
474474 }
475475}
476476
477- class MachineStateChangedEvent extends Event {
477+ const FallbackEvent = class Event {
478+ public readonly type : string ;
479+ constructor ( type : string , eventInitDict ?: EventInit | undefined ) {
480+ this . type = type ;
481+ }
482+ } as typeof Event ;
483+ const BaseEvent = typeof Event !== 'undefined' ? Event : FallbackEvent
484+
485+ class MachineStateChangedEvent extends BaseEvent {
478486 readonly value : string ;
479487
480488 constructor ( type : string , value : string ) {
@@ -517,7 +525,7 @@ export function start(
517525 _aborter ?. signal . dispatchEvent ( new MachineStateChangedEvent ( 'StateChanged' , getCurrent ( ) as string ) ) ;
518526 } ,
519527 didChangeAccumulations ( ) {
520- _aborter ?. signal . dispatchEvent ( new Event ( 'AccumulationsChanged' ) ) ;
528+ _aborter ?. signal . dispatchEvent ( new BaseEvent ( 'AccumulationsChanged' ) ) ;
521529 } ,
522530 sendEvent ( event , snapshotCount ) {
523531 if ( typeof snapshotCount === "number" && snapshotCount !== _changeCount ) {
0 commit comments