xstate 4.25.0 → 4.27.0-pr2674-2021926101023

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 (50) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/dist/xstate.cjs.d.ts +11 -0
  3. package/dist/xstate.cjs.js +16 -0
  4. package/dist/xstate.interpreter.js +1 -1
  5. package/dist/xstate.js +1 -1
  6. package/dist/xstate.web.js +2 -2
  7. package/es/Actor.d.ts +1 -2
  8. package/es/Machine.d.ts +5 -4
  9. package/es/State.d.ts +11 -9
  10. package/es/StateNode.d.ts +21 -15
  11. package/es/StateNode.js +15 -13
  12. package/es/actions.d.ts +4 -5
  13. package/es/behaviors.d.ts +1 -1
  14. package/es/devTools.d.ts +1 -1
  15. package/es/each.d.ts +1 -1
  16. package/es/index.d.ts +1 -0
  17. package/es/interpreter.d.ts +35 -25
  18. package/es/interpreter.js +2 -1
  19. package/es/model.d.ts +2 -2
  20. package/es/model.types.d.ts +8 -9
  21. package/es/scxml.d.ts +2 -2
  22. package/es/stateUtils.d.ts +7 -5
  23. package/es/stateUtils.js +7 -2
  24. package/es/typegenTypes.d.ts +92 -0
  25. package/es/types.d.ts +111 -50
  26. package/es/utils.d.ts +1 -1
  27. package/es/utils.js +1 -1
  28. package/lib/Actor.d.ts +1 -2
  29. package/lib/Machine.d.ts +5 -4
  30. package/lib/State.d.ts +11 -9
  31. package/lib/StateNode.d.ts +21 -15
  32. package/lib/StateNode.js +14 -12
  33. package/lib/actions.d.ts +4 -5
  34. package/lib/behaviors.d.ts +1 -1
  35. package/lib/devTools.d.ts +1 -1
  36. package/lib/each.d.ts +1 -1
  37. package/lib/index.d.ts +1 -0
  38. package/lib/interpreter.d.ts +35 -25
  39. package/lib/interpreter.js +2 -1
  40. package/lib/model.d.ts +2 -2
  41. package/lib/model.types.d.ts +8 -9
  42. package/lib/scxml.d.ts +2 -2
  43. package/lib/stateUtils.d.ts +7 -5
  44. package/lib/stateUtils.js +6 -0
  45. package/lib/typegenTypes.d.ts +92 -0
  46. package/lib/typegenTypes.js +2 -0
  47. package/lib/types.d.ts +111 -50
  48. package/lib/utils.d.ts +1 -1
  49. package/lib/utils.js +1 -1
  50. package/package.json +1 -1
package/lib/types.d.ts CHANGED
@@ -1,9 +1,25 @@
1
- import { StateNode } from './StateNode';
2
- import { State } from './State';
3
- import { Interpreter, Clock } from './interpreter';
1
+ import { Clock, Interpreter } from './interpreter';
4
2
  import { Model } from './model.types';
5
- declare type AnyFunction = (...args: any[]) => any;
3
+ import { State } from './State';
4
+ import { StateNode } from './StateNode';
5
+ import { MarkAllImplementationsAsProvided, TypegenDisabled, ResolveTypegenMeta, TypegenConstraint } from './typegenTypes';
6
+ export declare type AnyFunction = (...args: any[]) => any;
6
7
  declare type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
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
+ export declare type Compute<A extends any> = {
11
+ [K in keyof A]: A[K];
12
+ } & unknown;
13
+ export declare type Prop<T, K> = K extends keyof T ? T[K] : never;
14
+ export declare type Values<T> = T[keyof T];
15
+ export declare type Merge<M, N> = Omit<M, keyof N> & N;
16
+ export declare type IndexByType<T extends {
17
+ type: string;
18
+ }> = {
19
+ [K in T['type']]: Extract<T, {
20
+ type: K;
21
+ }>;
22
+ };
7
23
  export declare type EventType = string;
8
24
  export declare type ActionType = string;
9
25
  export declare type MetaObject = Record<string, any>;
@@ -44,7 +60,7 @@ export declare type EventData = Record<string, any> & {
44
60
  * The specified string event types or the specified event objects.
45
61
  */
46
62
  export declare type Event<TEvent extends EventObject> = TEvent['type'] | TEvent;
47
- export interface ActionMeta<TContext, TEvent extends EventObject, TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> extends StateMeta<TContext, TEvent> {
63
+ export interface ActionMeta<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> extends StateMeta<TContext, TEvent> {
48
64
  action: TAction;
49
65
  _event: SCXML.Event<TEvent>;
50
66
  }
@@ -53,8 +69,10 @@ export interface AssignMeta<TContext, TEvent extends EventObject> {
53
69
  action: AssignAction<TContext, TEvent>;
54
70
  _event: SCXML.Event<TEvent>;
55
71
  }
56
- export declare type ActionFunction<TContext, TEvent extends EventObject, TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> = (context: TContext, event: TEvent, meta: ActionMeta<TContext, TEvent, TAction>) => void;
57
- export interface ChooseConditon<TContext, TEvent extends EventObject> {
72
+ export declare type ActionFunction<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
73
+ bivarianceHack(context: TContext, event: TEvent, meta: ActionMeta<TContext, TEvent, TAction>): void;
74
+ }['bivarianceHack'];
75
+ export interface ChooseCondition<TContext, TEvent extends EventObject> {
58
76
  cond?: Condition<TContext, TEvent>;
59
77
  actions: Actions<TContext, TEvent>;
60
78
  }
@@ -116,6 +134,7 @@ export interface TransitionConfig<TContext, TEvent extends EventObject> {
116
134
  internal?: boolean;
117
135
  target?: TransitionTarget<TContext, TEvent>;
118
136
  meta?: Record<string, any>;
137
+ description?: string;
119
138
  }
120
139
  export interface TargetTransitionConfig<TContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
121
140
  target: TransitionTarget<TContext, TEvent>;
@@ -157,6 +176,7 @@ export declare type InvokeCallback<TEvent extends EventObject = AnyEventObject,
157
176
  export interface InvokeMeta {
158
177
  data: any;
159
178
  src: InvokeSourceDefinition;
179
+ meta?: MetaObject;
160
180
  }
161
181
  /**
162
182
  * Returns either a Promises or a callback handler (for streams of events) given the
@@ -196,6 +216,7 @@ export interface InvokeDefinition<TContext, TEvent extends EventObject> extends
196
216
  * Data should be mapped to match the child machine's context shape.
197
217
  */
198
218
  data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
219
+ meta?: MetaObject;
199
220
  }
200
221
  export interface Delay {
201
222
  id: string;
@@ -278,6 +299,10 @@ export interface InvokeConfig<TContext, TEvent extends EventObject> {
278
299
  * The transition to take upon the invoked child machine sending an error event.
279
300
  */
280
301
  onError?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
302
+ /**
303
+ * Meta data related to this invocation
304
+ */
305
+ meta?: MetaObject;
281
306
  }
282
307
  export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> {
283
308
  /**
@@ -406,6 +431,10 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
406
431
  * @default false
407
432
  */
408
433
  preserveActionOrder?: boolean;
434
+ /**
435
+ * A text description of the state node
436
+ */
437
+ description?: string;
409
438
  }
410
439
  export interface StateNodeDefinition<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> {
411
440
  id: string;
@@ -428,6 +457,8 @@ export interface StateNodeDefinition<TContext, TStateSchema extends StateSchema,
428
457
  order: number;
429
458
  data?: FinalStateNodeConfig<TContext, TEvent>['data'];
430
459
  invoke: Array<InvokeDefinition<TContext, TEvent>>;
460
+ description?: string;
461
+ tags: string[];
431
462
  }
432
463
  export declare type AnyStateNodeDefinition = StateNodeDefinition<any, any, any>;
433
464
  export interface AtomicStateNodeConfig<TContext, TEvent extends EventObject> extends StateNodeConfig<TContext, StateSchema, TEvent> {
@@ -449,7 +480,7 @@ export interface FinalStateNodeConfig<TContext, TEvent extends EventObject> exte
449
480
  data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
450
481
  }
451
482
  export declare type SimpleOrStateNodeConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TStateSchema, TEvent>;
452
- export declare type ActionFunctionMap<TContext, TEvent extends EventObject, TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> = {
483
+ export declare type ActionFunctionMap<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
453
484
  [K in TAction['type']]?: ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent, TAction extends {
454
485
  type: K;
455
486
  } ? TAction : never>;
@@ -457,25 +488,44 @@ export declare type ActionFunctionMap<TContext, TEvent extends EventObject, TAct
457
488
  export declare type DelayFunctionMap<TContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
458
489
  export declare type ServiceConfig<TContext, TEvent extends EventObject = AnyEventObject> = string | StateMachine<any, any, any> | InvokeCreator<TContext, TEvent>;
459
490
  export declare type DelayConfig<TContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
460
- export interface MachineOptions<TContext, TEvent extends EventObject, TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> {
461
- guards: Record<string, ConditionPredicate<TContext, TEvent>>;
462
- actions: ActionFunctionMap<TContext, TEvent, TAction>;
491
+ declare type MachineOptionsActions<TContext, TResolvedTypesMeta, TEventsCausingActions = Prop<TResolvedTypesMeta, 'eventsCausingActions'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>, TIndexedActions = Prop<TResolvedTypesMeta, 'indexedActions'>> = {
492
+ [K in keyof TEventsCausingActions]?: ActionObject<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>> | ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedActions, K>, BaseActionObject>>;
493
+ };
494
+ declare type MachineOptionsDelays<TContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<TResolvedTypesMeta, 'eventsCausingDelays'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>> = {
495
+ [K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
496
+ };
497
+ declare type MachineOptionsGuards<TContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<TResolvedTypesMeta, 'eventsCausingGuards'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>> = {
498
+ [K in keyof TEventsCausingGuards]?: ConditionPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
499
+ };
500
+ 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'>>;
502
+ };
503
+ declare type MakeKeysRequired<T extends string> = {
504
+ [K in T]: unknown;
505
+ };
506
+ declare type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
507
+ [K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
508
+ } : {};
509
+ declare type GenerateActionsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
510
+ actions?: MachineOptionsActions<TContext, TResolvedTypesMeta>;
511
+ };
512
+ declare type GenerateDelaysConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
513
+ delays?: MachineOptionsDelays<TContext, TResolvedTypesMeta>;
514
+ };
515
+ declare type GenerateGuardsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
516
+ guards?: MachineOptionsGuards<TContext, TResolvedTypesMeta>;
517
+ };
518
+ declare type GenerateServicesConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'services', Prop<TMissingImplementations, 'services'>, TRequireMissingImplementations> & {
519
+ services?: MachineOptionsServices<TContext, TResolvedTypesMeta>;
520
+ };
521
+ export declare type InternalMachineOptions<TContext, TEvent extends EventObject, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<TResolvedTypesMeta, 'missingImplementations'>> = GenerateActionsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateServicesConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & {
463
522
  /**
464
523
  * @deprecated Use `services` instead.
465
524
  */
466
- activities: Record<string, ActivityConfig<TContext, TEvent>>;
467
- services: Record<string, ServiceConfig<TContext, TEvent>>;
468
- delays: DelayFunctionMap<TContext, TEvent>;
469
- /**
470
- * @private
471
- */
472
- _parent?: StateNode<TContext, any, TEvent, any>;
473
- /**
474
- * @private
475
- */
476
- _key?: string;
477
- }
478
- export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = ActionObject<TContext, TEvent>> extends StateNodeConfig<TContext, TStateSchema, TEvent, TAction> {
525
+ activities?: Record<string, ActivityConfig<TContext, TEvent>>;
526
+ };
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> {
479
529
  /**
480
530
  * The initial context (extended state)
481
531
  */
@@ -485,6 +535,7 @@ export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEven
485
535
  */
486
536
  version?: string;
487
537
  schema?: MachineSchema<TContext, TEvent>;
538
+ tsTypes?: TTypesMeta | true;
488
539
  }
489
540
  export interface MachineSchema<TContext, TEvent extends EventObject> {
490
541
  context?: TContext;
@@ -519,13 +570,19 @@ export interface HistoryStateNode<TContext> extends StateNode<TContext> {
519
570
  export interface StateMachine<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TTypestate extends Typestate<TContext> = {
520
571
  value: any;
521
572
  context: TContext;
522
- }, _TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> extends StateNode<TContext, TStateSchema, TEvent, TTypestate> {
573
+ }, TAction extends BaseActionObject = BaseActionObject, TResolvedTypesMeta = TypegenDisabled> extends StateNode<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> {
523
574
  id: string;
524
- states: StateNode<TContext, TStateSchema, TEvent>['states'];
525
- withConfig(options: Partial<MachineOptions<TContext, TEvent>>, context?: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
526
- withContext(context: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
527
- }
528
- export declare type StateFrom<T extends StateMachine<any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any>)> = T extends StateMachine<any, any, any> ? ReturnType<T['transition']> : T extends (...args: any[]) => StateMachine<any, any, any> ? ReturnType<ReturnType<T>['transition']> : never;
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>;
578
+ __TContext: TContext;
579
+ __TStateSchema: TStateSchema;
580
+ __TEvent: TEvent;
581
+ __TTypestate: TTypestate;
582
+ __TAction: TAction;
583
+ __TResolvedTypesMeta: TResolvedTypesMeta;
584
+ }
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;
529
586
  export interface ActionMap<TContext, TEvent extends EventObject> {
530
587
  onEntry: Array<Action<TContext, TEvent>>;
531
588
  actions: Array<Action<TContext, TEvent>>;
@@ -544,13 +601,13 @@ export interface ActivityMap {
544
601
  }
545
602
  export interface StateTransition<TContext, TEvent extends EventObject> {
546
603
  transitions: Array<TransitionDefinition<TContext, TEvent>>;
547
- configuration: Array<StateNode<TContext, any, TEvent, any>>;
548
- entrySet: Array<StateNode<TContext, any, TEvent, any>>;
549
- exitSet: Array<StateNode<TContext, any, TEvent, any>>;
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>>;
550
607
  /**
551
608
  * The source state that preceded the transition.
552
609
  */
553
- source: State<TContext, any, any, any> | undefined;
610
+ source: State<TContext, any, any, any, any> | undefined;
554
611
  actions: Array<ActionObject<TContext, TEvent>>;
555
612
  }
556
613
  export interface TransitionData<TContext, TEvent extends EventObject> {
@@ -693,7 +750,7 @@ export interface PureAction<TContext, TEvent extends EventObject> extends Action
693
750
  }
694
751
  export interface ChooseAction<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
695
752
  type: ActionTypes.Choose;
696
- conds: Array<ChooseConditon<TContext, TEvent>>;
753
+ conds: Array<ChooseCondition<TContext, TEvent>>;
697
754
  }
698
755
  export interface TransitionDefinition<TContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
699
756
  target: Array<StateNode<TContext, any, TEvent>> | undefined;
@@ -771,7 +828,7 @@ export interface SCXMLEventMeta<TEvent extends EventObject> {
771
828
  _event: SCXML.Event<TEvent>;
772
829
  }
773
830
  export interface StateMeta<TContext, TEvent extends EventObject> {
774
- state: State<TContext, TEvent, any, any>;
831
+ state: State<TContext, TEvent, any, any, any>;
775
832
  _event: SCXML.Event<TEvent>;
776
833
  }
777
834
  export interface Typestate<TContext> {
@@ -790,7 +847,7 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
790
847
  _event: SCXML.Event<TEvent>;
791
848
  _sessionid: string | null;
792
849
  historyValue?: HistoryValue | undefined;
793
- history?: State<TContext, TEvent>;
850
+ history?: State<TContext, TEvent, any, any, any>;
794
851
  actions?: Array<ActionObject<TContext, TEvent>>;
795
852
  /**
796
853
  * @deprecated
@@ -803,7 +860,7 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
803
860
  children: Record<string, ActorRef<any>>;
804
861
  done?: boolean;
805
862
  tags?: Set<string>;
806
- machine?: StateMachine<TContext, any, TEvent, any>;
863
+ machine?: StateMachine<TContext, any, TEvent, any, any, any>;
807
864
  }
808
865
  export interface StateSchema<TC = any> {
809
866
  meta?: any;
@@ -816,9 +873,9 @@ export interface InterpreterOptions {
816
873
  /**
817
874
  * Whether state actions should be executed immediately upon transition. Defaults to `true`.
818
875
  */
819
- execute: boolean;
820
- clock: Clock;
821
- logger: (...args: any[]) => void;
876
+ execute?: boolean;
877
+ clock?: Clock;
878
+ logger?: (...args: any[]) => void;
822
879
  parent?: AnyInterpreter;
823
880
  /**
824
881
  * If `true`, defers processing of sent events until the service
@@ -827,7 +884,7 @@ export interface InterpreterOptions {
827
884
  *
828
885
  * Default: `true`
829
886
  */
830
- deferEvents: boolean;
887
+ deferEvents?: boolean;
831
888
  /**
832
889
  * The custom `id` for referencing this service.
833
890
  */
@@ -837,8 +894,7 @@ export interface InterpreterOptions {
837
894
  *
838
895
  * Default: `false`
839
896
  */
840
- devTools: boolean | object;
841
- [option: string]: any;
897
+ devTools?: boolean | object;
842
898
  }
843
899
  export declare namespace SCXML {
844
900
  interface Event<TEvent extends EventObject> {
@@ -932,15 +988,17 @@ export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Su
932
988
  * @deprecated Use `ActorRef` instead.
933
989
  */
934
990
  export declare type SpawnedActorRef<TEvent extends EventObject, TEmitted = any> = ActorRef<TEvent, TEmitted>;
935
- export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext>> = ActorRef<TEvent, State<TContext, TEvent, any, TTypestate>> & {
991
+ export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext>, TResolvedTypesMeta = TypegenDisabled> = ActorRef<TEvent, State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>> & {
936
992
  /**
937
993
  * @deprecated Use `.getSnapshot()` instead.
938
994
  */
939
- state: State<TContext, TEvent, any, TTypestate>;
995
+ state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>;
940
996
  };
941
- 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> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate> : 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;
942
- export declare type AnyInterpreter = Interpreter<any, any, any, any>;
943
- export declare type InterpreterFrom<T extends StateMachine<any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any>)> = T extends StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate> : T extends (...args: any[]) => StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate> : never;
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 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;
944
1002
  export interface ActorContext<TEvent extends EventObject, TEmitted> {
945
1003
  parent?: ActorRef<any, any>;
946
1004
  self: ActorRef<TEvent, TEmitted>;
@@ -953,7 +1011,10 @@ export interface Behavior<TEvent extends EventObject, TEmitted = any> {
953
1011
  start?: (actorCtx: ActorContext<TEvent, TEmitted>) => TEmitted;
954
1012
  }
955
1013
  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;
956
- export declare type EventFrom<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;
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
+ export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : Extract<TEvent, {
1016
+ type: K;
1017
+ }>;
957
1018
  export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___> ? TContext : R extends Model<infer TContext, infer _, infer __, infer ___> ? TContext : R extends State<infer TContext, infer _, infer __, infer ___> ? TContext : R extends Interpreter<infer TContext, infer _, infer __, infer ___> ? TContext : never : never;
958
1019
  export {};
959
1020
  //# sourceMappingURL=types.d.ts.map
package/lib/utils.d.ts CHANGED
@@ -63,7 +63,7 @@ export declare function toTransitionConfigArray<TContext, TEvent extends EventOb
63
63
  }>;
64
64
  export declare function normalizeTarget<TContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, any, TEvent>> | undefined): Array<string | StateNode<TContext, any, TEvent>> | undefined;
65
65
  export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
66
- export declare function evaluateGuard<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent, any>, guard: Guard<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>): boolean;
66
+ 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
67
  export declare function toInvokeSource(src: string | InvokeSourceDefinition): InvokeSourceDefinition;
68
68
  export declare function toObserver<T>(nextHandler: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
69
69
  //# sourceMappingURL=utils.d.ts.map
package/lib/utils.js CHANGED
@@ -552,7 +552,7 @@ function evaluateGuard(machine, guard, context, _event, state) {
552
552
  return ((guards === null || guards === void 0 ? void 0 : guards[guard.name]) || guard.predicate)(context, _event.data, guardMeta);
553
553
  }
554
554
 
555
- var condFn = guards[guard.type];
555
+ var condFn = guards === null || guards === void 0 ? void 0 : guards[guard.type];
556
556
 
557
557
  if (!condFn) {
558
558
  throw new Error("Guard '" + guard.type + "' is not implemented on machine '" + machine.id + "'.");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xstate",
3
- "version": "4.25.0",
3
+ "version": "4.27.0-pr2674-2021926101023",
4
4
  "description": "Finite State Machines and Statecharts for the Modern Web.",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",