xstate 4.27.0-pr2674-2021926101023 → 4.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/CHANGELOG.md +210 -94
  2. package/README.md +5 -5
  3. package/dist/xstate.interpreter.js +1 -1
  4. package/dist/xstate.js +1 -1
  5. package/dist/xstate.web.js +2 -2
  6. package/es/Actor.js +5 -5
  7. package/es/Machine.d.ts +4 -4
  8. package/es/State.d.ts +9 -6
  9. package/es/State.js +10 -3
  10. package/es/StateNode.d.ts +12 -11
  11. package/es/StateNode.js +61 -71
  12. package/es/_virtual/_tslib.js +8 -4
  13. package/es/actions.d.ts +18 -2
  14. package/es/actions.js +22 -8
  15. package/es/devTools.d.ts +4 -6
  16. package/es/devTools.js +4 -0
  17. package/es/index.d.ts +9 -3
  18. package/es/index.js +3 -2
  19. package/es/interpreter.d.ts +6 -10
  20. package/es/interpreter.js +40 -27
  21. package/es/model.types.d.ts +3 -3
  22. package/es/registry.js +1 -1
  23. package/es/schema.d.ts +1 -0
  24. package/es/schema.js +2 -1
  25. package/es/scxml.d.ts +1 -1
  26. package/es/stateUtils.d.ts +4 -4
  27. package/es/stateUtils.js +1 -1
  28. package/es/typegenTypes.d.ts +66 -37
  29. package/es/types.d.ts +42 -41
  30. package/es/utils.d.ts +6 -1
  31. package/es/utils.js +17 -10
  32. package/lib/Actor.js +4 -4
  33. package/lib/Machine.d.ts +4 -4
  34. package/lib/SimulatedClock.js +9 -5
  35. package/lib/State.d.ts +9 -6
  36. package/lib/State.js +10 -3
  37. package/lib/StateNode.d.ts +12 -11
  38. package/lib/StateNode.js +59 -69
  39. package/lib/_virtual/_tslib.js +8 -4
  40. package/lib/actions.d.ts +18 -2
  41. package/lib/actions.js +22 -7
  42. package/lib/devTools.d.ts +4 -6
  43. package/lib/devTools.js +4 -0
  44. package/lib/index.d.ts +9 -3
  45. package/lib/index.js +2 -0
  46. package/lib/interpreter.d.ts +6 -10
  47. package/lib/interpreter.js +38 -25
  48. package/lib/json.js +7 -7
  49. package/lib/model.js +14 -10
  50. package/lib/model.types.d.ts +3 -3
  51. package/lib/patterns.js +2 -2
  52. package/lib/registry.js +1 -1
  53. package/lib/schema.d.ts +1 -0
  54. package/lib/schema.js +2 -0
  55. package/lib/scxml.d.ts +1 -1
  56. package/lib/scxml.js +29 -25
  57. package/lib/stateUtils.d.ts +4 -4
  58. package/lib/stateUtils.js +1 -1
  59. package/lib/typegenTypes.d.ts +66 -37
  60. package/lib/types.d.ts +42 -41
  61. package/lib/utils.d.ts +6 -1
  62. package/lib/utils.js +18 -9
  63. package/package.json +7 -11
  64. package/dist/xstate.cjs.d.ts +0 -11
  65. package/dist/xstate.cjs.js +0 -16
package/es/types.d.ts CHANGED
@@ -2,11 +2,10 @@ import { Clock, Interpreter } from './interpreter';
2
2
  import { Model } from './model.types';
3
3
  import { State } from './State';
4
4
  import { StateNode } from './StateNode';
5
- import { MarkAllImplementationsAsProvided, TypegenDisabled, ResolveTypegenMeta, TypegenConstraint } from './typegenTypes';
5
+ import { MarkAllImplementationsAsProvided, TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, AreAllImplementationsAssumedToBeProvided } from './typegenTypes';
6
6
  export declare type AnyFunction = (...args: any[]) => any;
7
7
  declare type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
8
8
  export declare type IsNever<T> = [T] extends [never] ? true : false;
9
- export declare type Cast<T extends any, TCastType extends any> = T extends TCastType ? T : TCastType;
10
9
  export declare type Compute<A extends any> = {
11
10
  [K in keyof A]: A[K];
12
11
  } & unknown;
@@ -20,6 +19,9 @@ export declare type IndexByType<T extends {
20
19
  type: K;
21
20
  }>;
22
21
  };
22
+ export declare type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1 ? true : false ? true : false;
23
+ export declare type IsAny<T> = Equals<T, any>;
24
+ export declare type Cast<A, B> = A extends B ? A : B;
23
25
  export declare type EventType = string;
24
26
  export declare type ActionType = string;
25
27
  export declare type MetaObject = Record<string, any>;
@@ -50,7 +52,7 @@ export interface ActionObject<TContext, TEvent extends EventObject> extends Base
50
52
  /**
51
53
  * The implementation for executing the action.
52
54
  */
53
- exec?: ActionFunction<TContext, TEvent>;
55
+ exec?: ActionFunction<TContext, TEvent> | undefined;
54
56
  }
55
57
  export declare type DefaultContext = Record<string, any> | undefined;
56
58
  export declare type EventData = Record<string, any> & {
@@ -99,14 +101,6 @@ export interface StateValueMap {
99
101
  * - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
100
102
  */
101
103
  export declare type StateValue = string | StateValueMap;
102
- declare type KeysWithStates<TStates extends Record<string, StateSchema> | undefined> = TStates extends object ? {
103
- [K in keyof TStates]-?: TStates[K] extends {
104
- states: object;
105
- } ? K : never;
106
- }[keyof TStates] : never;
107
- export declare type ExtractStateValue<TSchema extends Required<Pick<StateSchema<any>, 'states'>>> = keyof TSchema['states'] | (KeysWithStates<TSchema['states']> extends never ? never : {
108
- [K in KeysWithStates<TSchema['states']>]?: ExtractStateValue<TSchema['states'][K]>;
109
- });
110
104
  export interface HistoryValue {
111
105
  states: Record<string, HistoryValue | undefined>;
112
106
  current: StateValue | undefined;
@@ -132,7 +126,7 @@ export interface TransitionConfig<TContext, TEvent extends EventObject> {
132
126
  actions?: Actions<TContext, TEvent>;
133
127
  in?: StateValue;
134
128
  internal?: boolean;
135
- target?: TransitionTarget<TContext, TEvent>;
129
+ target?: TransitionTarget<TContext, TEvent> | undefined;
136
130
  meta?: Record<string, any>;
137
131
  description?: string;
138
132
  }
@@ -171,7 +165,9 @@ export interface PayloadSender<TEvent extends EventObject> {
171
165
  */
172
166
  <K extends TEvent['type']>(eventType: K, payload: NeverIfEmpty<ExtractExtraParameters<TEvent, K>>): void;
173
167
  }
174
- export declare type Receiver<TEvent extends EventObject> = (listener: (event: TEvent) => void) => void;
168
+ export declare type Receiver<TEvent extends EventObject> = (listener: {
169
+ bivarianceHack(event: TEvent): void;
170
+ }['bivarianceHack']) => void;
175
171
  export declare type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (callback: Sender<TSentEvent>, onReceive: Receiver<TEvent>) => (() => void) | Promise<any> | void;
176
172
  export interface InvokeMeta {
177
173
  data: any;
@@ -191,7 +187,8 @@ export interface InvokeMeta {
191
187
  * @param context The current machine `context`
192
188
  * @param event The event that invoked the service
193
189
  */
194
- export declare type InvokeCreator<TContext, TEvent extends EventObject, TFinalContext = any> = (context: TContext, event: TEvent, meta: InvokeMeta) => PromiseLike<TFinalContext> | StateMachine<TFinalContext, any, any> | Subscribable<EventObject> | InvokeCallback<any, TEvent> | Behavior<any>;
190
+ export declare type InvokeCreator<TContext, TSourceEvent extends EventObject, TFinalContext = any, TInputEvent extends EventObject = any, // keeping a slot for it here, but it's actually not used right now to ensure that the communication contract between actors is satisfied
191
+ TOutputEvent extends EventObject = TSourceEvent> = (context: TContext, event: TSourceEvent, meta: InvokeMeta) => PromiseLike<TFinalContext> | StateMachine<TFinalContext, any, any, any, any, any, any> | Subscribable<EventObject> | InvokeCallback<TInputEvent, TOutputEvent> | Behavior<any>;
195
192
  export interface InvokeDefinition<TContext, TEvent extends EventObject> extends ActivityDefinition<TContext, TEvent> {
196
193
  /**
197
194
  * The source of the machine to be invoked, or the machine itself.
@@ -371,7 +368,7 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
371
368
  *
372
369
  * This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
373
370
  */
374
- onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject>>;
371
+ onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject>> | undefined;
375
372
  /**
376
373
  * The mapping (or array) of delays (in milliseconds) to their potential transition(s).
377
374
  * The delayed transitions are taken after the specified delay in an interpreter.
@@ -498,7 +495,7 @@ declare type MachineOptionsGuards<TContext, TResolvedTypesMeta, TEventsCausingGu
498
495
  [K in keyof TEventsCausingGuards]?: ConditionPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
499
496
  };
500
497
  declare type MachineOptionsServices<TContext, TResolvedTypesMeta, TEventsCausingServices = Prop<TResolvedTypesMeta, 'eventsCausingServices'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>, TInvokeSrcNameMap = Prop<TResolvedTypesMeta, 'invokeSrcNameMap'>> = {
501
- [K in keyof TEventsCausingServices]?: StateMachine<any, any, any> | InvokeCreator<TContext, Cast<Prop<TIndexedEvents, TEventsCausingServices[K]>, EventObject>, Prop<Prop<TIndexedEvents, Prop<TInvokeSrcNameMap, K>>, 'data'>>;
498
+ [K in keyof TEventsCausingServices]?: StateMachine<any, any, any, any, any, any, any> | InvokeCreator<TContext, Cast<Prop<TIndexedEvents, TEventsCausingServices[K]>, EventObject>, Prop<Prop<TIndexedEvents, Prop<TInvokeSrcNameMap, K>>, 'data'>, EventObject, Cast<TIndexedEvents[keyof TIndexedEvents], EventObject>>;
502
499
  };
503
500
  declare type MakeKeysRequired<T extends string> = {
504
501
  [K in T]: unknown;
@@ -524,8 +521,8 @@ export declare type InternalMachineOptions<TContext, TEvent extends EventObject,
524
521
  */
525
522
  activities?: Record<string, ActivityConfig<TContext, TEvent>>;
526
523
  };
527
- export declare type MachineOptions<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction>>;
528
- export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TTypesMeta = TypegenDisabled> extends StateNodeConfig<TContext, TStateSchema, TEvent, TAction> {
524
+ export declare type MachineOptions<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TServiceMap>>;
525
+ export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<TContext, TStateSchema, TEvent, TAction> {
529
526
  /**
530
527
  * The initial context (extended state)
531
528
  */
@@ -534,10 +531,13 @@ export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEven
534
531
  * The machine's own version.
535
532
  */
536
533
  version?: string;
537
- schema?: MachineSchema<TContext, TEvent>;
538
- tsTypes?: TTypesMeta | true;
534
+ schema?: MachineSchema<TContext, TEvent, TServiceMap>;
535
+ tsTypes?: TTypesMeta;
539
536
  }
540
- export interface MachineSchema<TContext, TEvent extends EventObject> {
537
+ export declare type ServiceMap = Record<string, {
538
+ data: any;
539
+ }>;
540
+ export interface MachineSchema<TContext, TEvent extends EventObject, TServiceMap extends ServiceMap = ServiceMap> {
541
541
  context?: TContext;
542
542
  events?: TEvent;
543
543
  actions?: {
@@ -548,10 +548,7 @@ export interface MachineSchema<TContext, TEvent extends EventObject> {
548
548
  type: string;
549
549
  [key: string]: any;
550
550
  };
551
- services?: {
552
- type: string;
553
- [key: string]: any;
554
- };
551
+ services?: TServiceMap;
555
552
  }
556
553
  export interface StandardMachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> extends StateNodeConfig<TContext, TStateSchema, TEvent> {
557
554
  }
@@ -570,19 +567,20 @@ export interface HistoryStateNode<TContext> extends StateNode<TContext> {
570
567
  export interface StateMachine<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TTypestate extends Typestate<TContext> = {
571
568
  value: any;
572
569
  context: TContext;
573
- }, TAction extends BaseActionObject = BaseActionObject, TResolvedTypesMeta = TypegenDisabled> extends StateNode<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> {
570
+ }, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TResolvedTypesMeta = TypegenDisabled> extends StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta> {
574
571
  id: string;
575
- states: StateNode<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta>['states'];
576
- withConfig(options: InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, true>, context?: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, MarkAllImplementationsAsProvided<TResolvedTypesMeta>>;
577
- withContext(context: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, any, TResolvedTypesMeta>;
572
+ states: StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>['states'];
573
+ withConfig(options: InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, true>, context?: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>;
574
+ withContext(context: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, TResolvedTypesMeta>;
578
575
  __TContext: TContext;
579
576
  __TStateSchema: TStateSchema;
580
577
  __TEvent: TEvent;
581
578
  __TTypestate: TTypestate;
582
579
  __TAction: TAction;
580
+ __TServiceMap: TServiceMap;
583
581
  __TResolvedTypesMeta: TResolvedTypesMeta;
584
582
  }
585
- export declare type StateFrom<T extends StateMachine<any, any, any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any, any, any>)> = T extends StateMachine<any, any, any, any, any, any> ? ReturnType<T['transition']> : T extends (...args: any[]) => StateMachine<any, any, any, any, any, any> ? ReturnType<ReturnType<T>['transition']> : never;
583
+ export declare type StateFrom<T extends StateMachine<any, any, any, any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any, any, any, any>)> = T extends StateMachine<any, any, any, any, any, any, any> ? ReturnType<T['transition']> : T extends (...args: any[]) => StateMachine<any, any, any, any, any, any, any> ? ReturnType<ReturnType<T>['transition']> : never;
586
584
  export interface ActionMap<TContext, TEvent extends EventObject> {
587
585
  onEntry: Array<Action<TContext, TEvent>>;
588
586
  actions: Array<Action<TContext, TEvent>>;
@@ -601,9 +599,9 @@ export interface ActivityMap {
601
599
  }
602
600
  export interface StateTransition<TContext, TEvent extends EventObject> {
603
601
  transitions: Array<TransitionDefinition<TContext, TEvent>>;
604
- configuration: Array<StateNode<TContext, any, TEvent, any, any>>;
605
- entrySet: Array<StateNode<TContext, any, TEvent, any, any>>;
606
- exitSet: Array<StateNode<TContext, any, TEvent, any, any>>;
602
+ configuration: Array<StateNode<TContext, any, TEvent, any, any, any>>;
603
+ entrySet: Array<StateNode<TContext, any, TEvent, any, any, any>>;
604
+ exitSet: Array<StateNode<TContext, any, TEvent, any, any, any>>;
607
605
  /**
608
606
  * The source state that preceded the transition.
609
607
  */
@@ -860,7 +858,7 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
860
858
  children: Record<string, ActorRef<any>>;
861
859
  done?: boolean;
862
860
  tags?: Set<string>;
863
- machine?: StateMachine<TContext, any, TEvent, any, any, any>;
861
+ machine?: StateMachine<TContext, any, TEvent, any, any, any, any>;
864
862
  }
865
863
  export interface StateSchema<TC = any> {
866
864
  meta?: any;
@@ -966,18 +964,21 @@ export interface Observer<T> {
966
964
  export interface Subscription {
967
965
  unsubscribe(): void;
968
966
  }
967
+ export interface InteropObservable<T> {
968
+ [Symbol.observable]: () => Subscribable<T>;
969
+ }
969
970
  export interface Subscribable<T> {
970
971
  subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
971
972
  subscribe(observer: Observer<T>): Subscription;
972
973
  }
973
- export declare type Spawnable = StateMachine<any, any, any> | PromiseLike<any> | InvokeCallback | Subscribable<any> | Behavior<any>;
974
+ export declare type Spawnable = StateMachine<any, any, any> | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
974
975
  export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends {
975
976
  type: TEventType;
976
977
  } ? TEvent : never;
977
978
  export interface BaseActorRef<TEvent extends EventObject> {
978
979
  send: (event: TEvent) => void;
979
980
  }
980
- export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Subscribable<TEmitted> {
981
+ export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Subscribable<TEmitted>, InteropObservable<TEmitted> {
981
982
  send: Sender<TEvent>;
982
983
  id: string;
983
984
  getSnapshot: () => TEmitted | undefined;
@@ -994,11 +995,11 @@ export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventOb
994
995
  */
995
996
  state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>;
996
997
  };
997
- export declare type ActorRefFrom<T> = T extends StateMachine<infer TContext, any, infer TEvent, infer TTypestate> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate> : T extends (...args: any[]) => StateMachine<infer TContext, any, infer TEvent, infer TTypestate, any, infer TResolvedTypesMeta> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate, TResolvedTypesMeta> : T extends Promise<infer U> ? ActorRef<never, U> : T extends Behavior<infer TEvent1, infer TEmitted> ? ActorRef<TEvent1, TEmitted> : T extends (...args: any[]) => Behavior<infer TEvent1, infer TEmitted> ? ActorRef<TEvent1, TEmitted> : never;
998
+ export declare type ActorRefFrom<T> = T extends StateMachine<infer TContext, any, infer TEvent, infer TTypestate, any, any, any> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate> : T extends (...args: any[]) => StateMachine<infer TContext, any, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate, TResolvedTypesMeta> : T extends Promise<infer U> ? ActorRef<never, U> : T extends Behavior<infer TEvent1, infer TEmitted> ? ActorRef<TEvent1, TEmitted> : T extends (...args: any[]) => Behavior<infer TEvent1, infer TEmitted> ? ActorRef<TEvent1, TEmitted> : never;
998
999
  export declare type AnyInterpreter = Interpreter<any, any, any, any, any>;
999
- export declare type InterpreterFrom<T extends StateMachine<any, any, any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any, any, any>)> = T extends StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> : T extends (...args: any[]) => StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> : never;
1000
- export declare type MachineOptionsFrom<T extends StateMachine<any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any>), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, any, infer TEvent, any, any, infer TResolvedTypesMeta> ? InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
1001
- export declare type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
1000
+ export declare type InterpreterFrom<T extends StateMachine<any, any, any, any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any, any, any, any>)> = T extends StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> : T extends (...args: any[]) => StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> : never;
1001
+ export declare type MachineOptionsFrom<T extends StateMachine<any, any, any, any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any, any, any, any>), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, any, infer TEvent, any, any, any, infer TResolvedTypesMeta> ? InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
1002
+ export declare type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
1002
1003
  export interface ActorContext<TEvent extends EventObject, TEmitted> {
1003
1004
  parent?: ActorRef<any, any>;
1004
1005
  self: ActorRef<TEvent, TEmitted>;
@@ -1011,7 +1012,7 @@ export interface Behavior<TEvent extends EventObject, TEmitted = any> {
1011
1012
  start?: (actorCtx: ActorContext<TEvent, TEmitted>) => TEmitted;
1012
1013
  }
1013
1014
  export declare type EmittedFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TEmitted> ? TEmitted : R extends Behavior<infer _, infer TEmitted> ? TEmitted : R extends ActorContext<infer _, infer TEmitted> ? TEmitted : never : never;
1014
- declare type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer __, infer TEvent, infer ____> ? TEvent : R extends Model<infer _, infer TEvent, infer ___, infer ____> ? TEvent : R extends State<infer _, infer TEvent, infer ___, infer ____> ? TEvent : R extends Interpreter<infer _, infer __, infer TEvent, infer ____> ? TEvent : never : never;
1015
+ declare type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer __, infer TEvent, infer ____> ? TEvent : R extends Model<infer _, infer TEvent, infer ___, infer ____> ? TEvent : R extends State<infer _, infer TEvent, infer ___, infer ____> ? TEvent : R extends Interpreter<infer _, infer __, infer TEvent, infer ____> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
1015
1016
  export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : Extract<TEvent, {
1016
1017
  type: K;
1017
1018
  }>;
package/es/utils.d.ts CHANGED
@@ -52,7 +52,11 @@ export declare function isFunction(value: any): value is Function;
52
52
  export declare function isString(value: any): value is string;
53
53
  export declare function toGuard<TContext, TEvent extends EventObject>(condition?: Condition<TContext, TEvent>, guardMap?: Record<string, ConditionPredicate<TContext, TEvent>>): Guard<TContext, TEvent> | undefined;
54
54
  export declare function isObservable<T>(value: any): value is Subscribable<T>;
55
- export declare const symbolObservable: any;
55
+ export declare const symbolObservable: string | typeof Symbol.observable;
56
+ export declare const interopSymbols: {
57
+ [x: string]: () => any;
58
+ [Symbol.observable]: () => any;
59
+ };
56
60
  export declare function isMachine(value: any): value is StateMachine<any, any, any>;
57
61
  export declare function isActor(value: any): value is Actor;
58
62
  export declare const uniqueId: () => string;
@@ -66,4 +70,5 @@ export declare function reportUnhandledExceptionOnInvocation(originalError: any,
66
70
  export declare function evaluateGuard<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent, any, any>, guard: Guard<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>): boolean;
67
71
  export declare function toInvokeSource(src: string | InvokeSourceDefinition): InvokeSourceDefinition;
68
72
  export declare function toObserver<T>(nextHandler: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
73
+ export declare function createInvokeId(stateNodeId: string, index: number): string;
69
74
  //# sourceMappingURL=utils.d.ts.map
package/es/utils.js CHANGED
@@ -2,6 +2,7 @@ import { __spreadArray, __read, __values, __assign } from './_virtual/_tslib.js'
2
2
  import { DEFAULT_GUARD_TYPE, TARGETLESS_KEY, STATE_DELIMITER } from './constants.js';
3
3
  import { IS_PRODUCTION } from './environment.js';
4
4
 
5
+ var _a;
5
6
  function keys(value) {
6
7
  return Object.keys(value);
7
8
  }
@@ -36,7 +37,7 @@ function matchesState(parentStateId, childStateId, delimiter) {
36
37
  }
37
38
  function getEventType(event) {
38
39
  try {
39
- return isString(event) || typeof event === 'number' ? "" + event : event.type;
40
+ return isString(event) || typeof event === 'number' ? "".concat(event) : event.type;
40
41
  } catch (e) {
41
42
  throw new Error('Events must be strings or objects with a string event.type property.');
42
43
  }
@@ -49,7 +50,7 @@ function toStatePath(stateId, delimiter) {
49
50
 
50
51
  return stateId.toString().split(delimiter);
51
52
  } catch (e) {
52
- throw new Error("'" + stateId + "' is not a valid state path.");
53
+ throw new Error("'".concat(stateId, "' is not a valid state path."));
53
54
  }
54
55
  }
55
56
  function isStateLike(state) {
@@ -218,7 +219,7 @@ function toStatePaths(stateValue) {
218
219
  function flatten(array) {
219
220
  var _a;
220
221
 
221
- return (_a = []).concat.apply(_a, __spreadArray([], __read(array)));
222
+ return (_a = []).concat.apply(_a, __spreadArray([], __read(array), false));
222
223
  }
223
224
  function toArrayStrict(value) {
224
225
  if (isArray(value)) {
@@ -395,7 +396,7 @@ if (!IS_PRODUCTION) {
395
396
  }
396
397
 
397
398
  if (console !== undefined) {
398
- var args = ["Warning: " + message];
399
+ var args = ["Warning: ".concat(message)];
399
400
 
400
401
  if (error) {
401
402
  args.push(error);
@@ -460,6 +461,9 @@ function isObservable(value) {
460
461
  var symbolObservable = /*#__PURE__*/function () {
461
462
  return typeof Symbol === 'function' && Symbol.observable || '@@observable';
462
463
  }();
464
+ var interopSymbols = (_a = {}, _a[symbolObservable] = function () {
465
+ return this;
466
+ }, _a);
463
467
  function isMachine(value) {
464
468
  try {
465
469
  return '__xstatenode' in value;
@@ -524,15 +528,15 @@ function normalizeTarget(target) {
524
528
  }
525
529
  function reportUnhandledExceptionOnInvocation(originalError, currentError, id) {
526
530
  if (!IS_PRODUCTION) {
527
- var originalStackTrace = originalError.stack ? " Stacktrace was '" + originalError.stack + "'" : '';
531
+ var originalStackTrace = originalError.stack ? " Stacktrace was '".concat(originalError.stack, "'") : '';
528
532
 
529
533
  if (originalError === currentError) {
530
534
  // tslint:disable-next-line:no-console
531
- console.error("Missing onError handler for invocation '" + id + "', error was '" + originalError + "'." + originalStackTrace);
535
+ console.error("Missing onError handler for invocation '".concat(id, "', error was '").concat(originalError, "'.").concat(originalStackTrace));
532
536
  } else {
533
- var stackTrace = currentError.stack ? " Stacktrace was '" + currentError.stack + "'" : ''; // tslint:disable-next-line:no-console
537
+ var stackTrace = currentError.stack ? " Stacktrace was '".concat(currentError.stack, "'") : ''; // tslint:disable-next-line:no-console
534
538
 
535
- console.error("Missing onError handler and/or unhandled exception/promise rejection for invocation '" + id + "'. " + ("Original error: '" + originalError + "'. " + originalStackTrace + " Current error is '" + currentError + "'." + stackTrace));
539
+ console.error("Missing onError handler and/or unhandled exception/promise rejection for invocation '".concat(id, "'. ") + "Original error: '".concat(originalError, "'. ").concat(originalStackTrace, " Current error is '").concat(currentError, "'.").concat(stackTrace));
536
540
  }
537
541
  }
538
542
  }
@@ -551,7 +555,7 @@ function evaluateGuard(machine, guard, context, _event, state) {
551
555
  var condFn = guards === null || guards === void 0 ? void 0 : guards[guard.type];
552
556
 
553
557
  if (!condFn) {
554
- throw new Error("Guard '" + guard.type + "' is not implemented on machine '" + machine.id + "'.");
558
+ throw new Error("Guard '".concat(guard.type, "' is not implemented on machine '").concat(machine.id, "'."));
555
559
  }
556
560
 
557
561
  return condFn(context, _event.data, guardMeta);
@@ -580,5 +584,8 @@ function toObserver(nextHandler, errorHandler, completionHandler) {
580
584
  complete: completionHandler || noop
581
585
  };
582
586
  }
587
+ function createInvokeId(stateNodeId, index) {
588
+ return "".concat(stateNodeId, ":invocation[").concat(index, "]");
589
+ }
583
590
 
584
- export { evaluateGuard, flatten, getEventType, isActor, isArray, isBehavior, isBuiltInEvent, isFunction, isMachine, isObservable, isPromiseLike, isStateLike, isString, keys, mapContext, mapFilterValues, mapValues, matchesState, nestedPath, normalizeTarget, partition, path, pathToStateValue, reportUnhandledExceptionOnInvocation, symbolObservable, toArray, toArrayStrict, toEventObject, toGuard, toInvokeSource, toObserver, toSCXMLEvent, toStatePath, toStatePaths, toStateValue, toTransitionConfigArray, uniqueId, updateContext, updateHistoryStates, updateHistoryValue, warn };
591
+ export { createInvokeId, evaluateGuard, flatten, getEventType, interopSymbols, isActor, isArray, isBehavior, isBuiltInEvent, isFunction, isMachine, isObservable, isPromiseLike, isStateLike, isString, keys, mapContext, mapFilterValues, mapValues, matchesState, nestedPath, normalizeTarget, partition, path, pathToStateValue, reportUnhandledExceptionOnInvocation, symbolObservable, toArray, toArrayStrict, toEventObject, toGuard, toInvokeSource, toObserver, toSCXMLEvent, toStatePath, toStatePaths, toStateValue, toTransitionConfigArray, uniqueId, updateContext, updateHistoryStates, updateHistoryValue, warn };
package/lib/Actor.js CHANGED
@@ -7,7 +7,7 @@ var utils = require('./utils.js');
7
7
  var serviceScope = require('./serviceScope.js');
8
8
 
9
9
  function createNullActor(id) {
10
- return {
10
+ return _tslib.__assign({
11
11
  id: id,
12
12
  send: function () {
13
13
  return void 0;
@@ -27,7 +27,7 @@ function createNullActor(id) {
27
27
  id: id
28
28
  };
29
29
  }
30
- };
30
+ }, utils.interopSymbols);
31
31
  }
32
32
  /**
33
33
  * Creates a deferred actor that is able to be invoked given the provided
@@ -76,7 +76,7 @@ function isSpawnedActor(item) {
76
76
  return isActor(item) && 'id' in item;
77
77
  }
78
78
  function toActorRef(actorRefLike) {
79
- return _tslib.__assign({
79
+ return _tslib.__assign(_tslib.__assign({
80
80
  subscribe: function () {
81
81
  return {
82
82
  unsubscribe: function () {
@@ -88,7 +88,7 @@ function toActorRef(actorRefLike) {
88
88
  getSnapshot: function () {
89
89
  return undefined;
90
90
  }
91
- }, actorRefLike);
91
+ }, utils.interopSymbols), actorRefLike);
92
92
  }
93
93
 
94
94
  exports.createDeferredActor = createDeferredActor;
package/lib/Machine.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  import { Model } from './model.types';
2
- import { AnyEventObject, BaseActionObject, DefaultContext, EventObject, MachineConfig, MachineOptions, InternalMachineOptions, StateMachine, StateSchema, Typestate } from './types';
2
+ import { AnyEventObject, BaseActionObject, DefaultContext, EventObject, MachineConfig, InternalMachineOptions, StateMachine, StateSchema, Typestate, ServiceMap } from './types';
3
3
  import { TypegenConstraint, TypegenDisabled, ResolveTypegenMeta } from './typegenTypes';
4
4
  /**
5
5
  * @deprecated Use `createMachine(...)` instead.
6
6
  */
7
- export declare function Machine<TContext = any, TEvent extends EventObject = AnyEventObject>(config: MachineConfig<TContext, any, TEvent>, options?: MachineOptions<TContext, TEvent>, initialContext?: TContext): StateMachine<TContext, any, TEvent>;
8
- export declare function Machine<TContext = DefaultContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = AnyEventObject>(config: MachineConfig<TContext, TStateSchema, TEvent>, options?: MachineOptions<TContext, TEvent>, initialContext?: TContext): StateMachine<TContext, TStateSchema, TEvent>;
7
+ export declare function Machine<TContext = any, TEvent extends EventObject = AnyEventObject>(config: MachineConfig<TContext, any, TEvent>, options?: InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TypegenDisabled, TEvent, BaseActionObject, ServiceMap>>, initialContext?: TContext): StateMachine<TContext, any, TEvent, any, BaseActionObject, ServiceMap, ResolveTypegenMeta<TypegenDisabled, TEvent, BaseActionObject, ServiceMap>>;
8
+ export declare function Machine<TContext = DefaultContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = AnyEventObject>(config: MachineConfig<TContext, TStateSchema, TEvent>, options?: InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TypegenDisabled, TEvent, BaseActionObject, ServiceMap>>, initialContext?: TContext): StateMachine<TContext, TStateSchema, TEvent, any, BaseActionObject, ServiceMap, ResolveTypegenMeta<TypegenDisabled, TEvent, BaseActionObject, ServiceMap>>;
9
9
  export declare function createMachine<TContext, TEvent extends EventObject = AnyEventObject, TTypestate extends Typestate<TContext> = {
10
10
  value: any;
11
11
  context: TContext;
12
- }, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: TContext extends Model<any, any, any, any> ? 'Model type no longer supported as generic type. Please use `model.createMachine(...)` instead.' : MachineConfig<TContext, any, TEvent, BaseActionObject, TTypesMeta>, options?: InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject>>): StateMachine<TContext, any, TEvent, any, BaseActionObject, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject>>;
12
+ }, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: TContext extends Model<any, any, any, any> ? 'Model type no longer supported as generic type. Please use `model.createMachine(...)` instead.' : MachineConfig<TContext, any, TEvent, BaseActionObject, TServiceMap, TTypesMeta>, options?: InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject, TServiceMap>>): StateMachine<TContext, any, TEvent, any, BaseActionObject, TServiceMap, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject, TServiceMap>>;
13
13
  //# sourceMappingURL=Machine.d.ts.map
@@ -15,10 +15,14 @@ var __read = (this && this.__read) || function (o, n) {
15
15
  }
16
16
  return ar;
17
17
  };
18
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
19
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
20
- to[j] = from[i];
21
- return to;
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
22
26
  };
23
27
  Object.defineProperty(exports, "__esModule", { value: true });
24
28
  exports.SimulatedClock = void 0;
@@ -55,7 +59,7 @@ var SimulatedClock = /** @class */ (function () {
55
59
  };
56
60
  SimulatedClock.prototype.flushTimeouts = function () {
57
61
  var _this = this;
58
- __spreadArray([], __read(this.timeouts)).sort(function (_a, _b) {
62
+ __spreadArray([], __read(this.timeouts), false).sort(function (_a, _b) {
59
63
  var _c = __read(_a, 2), _idA = _c[0], timeoutA = _c[1];
60
64
  var _d = __read(_b, 2), _idB = _d[0], timeoutB = _d[1];
61
65
  var endA = timeoutA.start + timeoutA.timeout;
package/lib/State.d.ts CHANGED
@@ -39,7 +39,7 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
39
39
  /**
40
40
  * The enabled state nodes representative of the state value.
41
41
  */
42
- configuration: Array<StateNode<TContext, any, TEvent, any>>;
42
+ configuration: Array<StateNode<TContext, any, TEvent, any, any>>;
43
43
  /**
44
44
  * The next events that will cause a transition from the current state.
45
45
  */
@@ -53,7 +53,7 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
53
53
  */
54
54
  children: Record<string, ActorRef<any>>;
55
55
  tags: Set<string>;
56
- machine: StateMachine<TContext, any, TEvent, TTypestate, BaseActionObject, TResolvedTypesMeta> | undefined;
56
+ machine: StateMachine<TContext, any, TEvent, TTypestate, BaseActionObject, any, TResolvedTypesMeta> | undefined;
57
57
  /**
58
58
  * Creates a new State instance for the given `stateValue` and `context`.
59
59
  * @param stateValue
@@ -64,7 +64,7 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
64
64
  * Creates a new State instance for the given `config`.
65
65
  * @param config The state config
66
66
  */
67
- static create<TC, TE extends EventObject = EventObject>(config: StateConfig<TC, TE>): State<TC, TE>;
67
+ static create<TC, TE extends EventObject = EventObject>(config: StateConfig<TC, TE>): State<TC, TE, any, any, any>;
68
68
  /**
69
69
  * Creates a new `State` instance for the given `stateValue` and `context` with no actions (side-effects).
70
70
  * @param stateValue
@@ -90,14 +90,14 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
90
90
  * @param delimiter The character(s) that separate each subpath in the string state node path.
91
91
  */
92
92
  toStrings(stateValue?: StateValue, delimiter?: string): string[];
93
- toJSON(): Omit<this, "configuration" | "transitions" | "tags" | "machine"> & {
93
+ toJSON(): Omit<this, "machine" | "tags" | "transitions" | "configuration"> & {
94
94
  tags: string[];
95
95
  };
96
96
  /**
97
97
  * Whether the current state value is a subset of the given parent state value.
98
98
  * @param parentStateValue
99
99
  */
100
- matches<TSV extends TTypestate['value']>(parentStateValue: TResolvedTypesMeta extends TypegenEnabled ? Prop<TResolvedTypesMeta, 'matchesStates'> : TSV): this is State<(TTypestate extends any ? {
100
+ matches<TSV extends TResolvedTypesMeta extends TypegenEnabled ? Prop<TResolvedTypesMeta, 'matchesStates'> : TTypestate['value']>(parentStateValue: TSV): this is State<(TTypestate extends any ? {
101
101
  value: TSV;
102
102
  context: any;
103
103
  } extends TTypestate ? TTypestate : never : never)['context'], TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> & {
@@ -109,7 +109,10 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
109
109
  */
110
110
  hasTag(tag: TResolvedTypesMeta extends TypegenEnabled ? Prop<TResolvedTypesMeta, 'tags'> : string): boolean;
111
111
  /**
112
- * Determines whether sending the `event` will cause a transition.
112
+ * Determines whether sending the `event` will cause a non-forbidden transition
113
+ * to be selected, even if the transitions have no actions nor
114
+ * change the state value.
115
+ *
113
116
  * @param event The event to test
114
117
  * @returns Whether the event will cause a transition
115
118
  */
package/lib/State.js CHANGED
@@ -215,7 +215,7 @@ function () {
215
215
  return _this.toStrings(stateValue[key], delimiter).map(function (s) {
216
216
  return key + delimiter + s;
217
217
  });
218
- }))));
218
+ })), false));
219
219
  };
220
220
 
221
221
  State.prototype.toJSON = function () {
@@ -249,7 +249,10 @@ function () {
249
249
  return this.tags.has(tag);
250
250
  };
251
251
  /**
252
- * Determines whether sending the `event` will cause a transition.
252
+ * Determines whether sending the `event` will cause a non-forbidden transition
253
+ * to be selected, even if the transitions have no actions nor
254
+ * change the state value.
255
+ *
253
256
  * @param event The event to test
254
257
  * @returns Whether the event will cause a transition
255
258
  */
@@ -262,7 +265,11 @@ function () {
262
265
  utils.warn(!!this.machine, "state.can(...) used outside of a machine-created State object; this will always return false.");
263
266
  }
264
267
 
265
- return !!((_a = this.machine) === null || _a === void 0 ? void 0 : _a.transition(this, event).changed);
268
+ var transitionData = (_a = this.machine) === null || _a === void 0 ? void 0 : _a.getTransitionData(this, event);
269
+ return !!(transitionData === null || transitionData === void 0 ? void 0 : transitionData.transitions.length) && // Check that at least one transition is not forbidden
270
+ transitionData.transitions.some(function (t) {
271
+ return t.target !== undefined || t.actions.length;
272
+ });
266
273
  };
267
274
 
268
275
  return State;
@@ -1,10 +1,10 @@
1
- import { Event, StateValue, MachineOptions, EventObject, HistoryValue, StateNodeDefinition, TransitionDefinition, DelayedTransitionDefinition, ActivityDefinition, StateNodeConfig, StateSchema, StateNodesConfig, InvokeDefinition, ActionObject, Mapper, PropertyMapper, SCXML, Typestate, TransitionDefinitionMap, MachineSchema, InternalMachineOptions } from './types';
1
+ import { Event, StateValue, StateTransition, MachineOptions, EventObject, HistoryValue, StateNodeDefinition, TransitionDefinition, DelayedTransitionDefinition, ActivityDefinition, StateNodeConfig, StateSchema, StateNodesConfig, InvokeDefinition, ActionObject, Mapper, PropertyMapper, SCXML, Typestate, TransitionDefinitionMap, MachineSchema, InternalMachineOptions, ServiceMap } from './types';
2
2
  import { State } from './State';
3
3
  import { TypegenDisabled } from './typegenTypes';
4
4
  declare class StateNode<TContext = any, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
5
5
  value: any;
6
6
  context: TContext;
7
- }, TResolvedTypesMeta = TypegenDisabled> {
7
+ }, TServiceMap extends ServiceMap = ServiceMap, TResolvedTypesMeta = TypegenDisabled> {
8
8
  /**
9
9
  * The raw config used to create the machine.
10
10
  */
@@ -82,7 +82,7 @@ declare class StateNode<TContext = any, TStateSchema extends StateSchema = any,
82
82
  /**
83
83
  * The parent state node.
84
84
  */
85
- parent?: StateNode<TContext, any, TEvent, any>;
85
+ parent?: StateNode<TContext, any, TEvent, any, any, any>;
86
86
  /**
87
87
  * The root machine node.
88
88
  */
@@ -126,7 +126,7 @@ declare class StateNode<TContext = any, TStateSchema extends StateSchema = any,
126
126
  */
127
127
  _context?: Readonly<TContext> | (() => Readonly<TContext>), // TODO: this is unsafe, but we're removing it in v5 anyway
128
128
  _stateInfo?: {
129
- parent: StateNode<any, any, any, any, any>;
129
+ parent: StateNode<any, any, any, any, any, any>;
130
130
  key: string;
131
131
  });
132
132
  private _init;
@@ -136,7 +136,7 @@ declare class StateNode<TContext = any, TStateSchema extends StateSchema = any,
136
136
  * @param options Options (actions, guards, activities, services) to recursively merge with the existing options.
137
137
  * @param context Custom context (will override predefined context)
138
138
  */
139
- withConfig(options: InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, true>, context?: TContext | (() => TContext)): StateNode<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta>;
139
+ withConfig(options: InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, true>, context?: TContext | (() => TContext)): StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>;
140
140
  /**
141
141
  * Clones this state machine with custom context.
142
142
  *
@@ -168,7 +168,7 @@ declare class StateNode<TContext = any, TStateSchema extends StateSchema = any,
168
168
  *
169
169
  * @param state The state value or State instance
170
170
  */
171
- getStateNodes(state: StateValue | State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>): Array<StateNode<TContext, any, TEvent, TTypestate, TResolvedTypesMeta>>;
171
+ getStateNodes(state: StateValue | State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>): Array<StateNode<TContext, any, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>>;
172
172
  /**
173
173
  * Returns `true` if this state node explicitly handles the given event.
174
174
  *
@@ -187,6 +187,7 @@ declare class StateNode<TContext = any, TStateSchema extends StateSchema = any,
187
187
  private transitionCompoundNode;
188
188
  private transitionParallelNode;
189
189
  private _transition;
190
+ getTransitionData(state: State<TContext, TEvent, any, any, any>, event: Event<TEvent> | SCXML.Event<TEvent>): StateTransition<TContext, TEvent> | undefined;
190
191
  private next;
191
192
  private nodesFromChild;
192
193
  /**
@@ -208,19 +209,19 @@ declare class StateNode<TContext = any, TStateSchema extends StateSchema = any,
208
209
  /**
209
210
  * Returns the child state node from its relative `stateKey`, or throws.
210
211
  */
211
- getStateNode(stateKey: string): StateNode<TContext, any, TEvent, TTypestate, TResolvedTypesMeta>;
212
+ getStateNode(stateKey: string): StateNode<TContext, any, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>;
212
213
  /**
213
214
  * Returns the state node with the given `stateId`, or throws.
214
215
  *
215
216
  * @param stateId The state ID. The prefix "#" is removed.
216
217
  */
217
- getStateNodeById(stateId: string): StateNode<TContext, any, TEvent, any, TResolvedTypesMeta>;
218
+ getStateNodeById(stateId: string): StateNode<TContext, any, TEvent, any, TServiceMap, TResolvedTypesMeta>;
218
219
  /**
219
220
  * Returns the relative state node from the given `statePath`, or throws.
220
221
  *
221
222
  * @param statePath The string or string array relative path to the state node.
222
223
  */
223
- getStateNodeByPath(statePath: string | string[]): StateNode<TContext, any, TEvent, any, any>;
224
+ getStateNodeByPath(statePath: string | string[]): StateNode<TContext, any, TEvent, any, any, any>;
224
225
  /**
225
226
  * Resolves a partial state value with its full representation in this machine.
226
227
  *
@@ -248,14 +249,14 @@ declare class StateNode<TContext = any, TStateSchema extends StateSchema = any,
248
249
  * @param resolve Whether state nodes should resolve to initial child state nodes
249
250
  */
250
251
  getRelativeStateNodes(relativeStateId: StateNode<TContext, any, TEvent>, historyValue?: HistoryValue, resolve?: boolean): Array<StateNode<TContext, any, TEvent>>;
251
- get initialStateNodes(): Array<StateNode<TContext, any, TEvent, any, any>>;
252
+ get initialStateNodes(): Array<StateNode<TContext, any, TEvent, any, any, any>>;
252
253
  /**
253
254
  * Retrieves state nodes from a relative path to this state node.
254
255
  *
255
256
  * @param relativePath The relative path from this state node
256
257
  * @param historyValue
257
258
  */
258
- getFromRelativePath(relativePath: string[]): Array<StateNode<TContext, any, TEvent, any, any>>;
259
+ getFromRelativePath(relativePath: string[]): Array<StateNode<TContext, any, TEvent, any, any, any>>;
259
260
  private historyValue;
260
261
  /**
261
262
  * Resolves to the historical value(s) of the parent state node,