xstate 4.28.1 → 4.30.2

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 (59) hide show
  1. package/CHANGELOG.md +218 -91
  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.d.ts +2 -3
  7. package/es/Actor.js +15 -6
  8. package/es/Machine.d.ts +5 -4
  9. package/es/State.d.ts +19 -15
  10. package/es/State.js +4 -9
  11. package/es/StateNode.d.ts +22 -17
  12. package/es/StateNode.js +14 -13
  13. package/es/actions.d.ts +3 -4
  14. package/es/actions.js +8 -3
  15. package/es/behaviors.d.ts +1 -1
  16. package/es/devTools.d.ts +3 -4
  17. package/es/each.d.ts +1 -1
  18. package/es/index.d.ts +6 -23
  19. package/es/index.js +12 -23
  20. package/es/interpreter.d.ts +35 -27
  21. package/es/interpreter.js +31 -21
  22. package/es/model.d.ts +2 -2
  23. package/es/model.types.d.ts +8 -9
  24. package/es/schema.d.ts +1 -0
  25. package/es/schema.js +2 -1
  26. package/es/scxml.d.ts +2 -2
  27. package/es/stateUtils.d.ts +6 -5
  28. package/es/typegenTypes.d.ts +121 -0
  29. package/es/types.d.ts +128 -64
  30. package/es/utils.d.ts +5 -5
  31. package/es/utils.js +5 -2
  32. package/lib/Actor.d.ts +2 -3
  33. package/lib/Actor.js +14 -5
  34. package/lib/Machine.d.ts +5 -4
  35. package/lib/State.d.ts +19 -15
  36. package/lib/State.js +4 -9
  37. package/lib/StateNode.d.ts +22 -17
  38. package/lib/StateNode.js +14 -13
  39. package/lib/actions.d.ts +3 -4
  40. package/lib/actions.js +5 -0
  41. package/lib/behaviors.d.ts +1 -1
  42. package/lib/devTools.d.ts +3 -4
  43. package/lib/each.d.ts +1 -1
  44. package/lib/index.d.ts +6 -23
  45. package/lib/index.js +17 -27
  46. package/lib/interpreter.d.ts +35 -27
  47. package/lib/interpreter.js +29 -19
  48. package/lib/model.d.ts +2 -2
  49. package/lib/model.types.d.ts +8 -9
  50. package/lib/schema.d.ts +1 -0
  51. package/lib/schema.js +2 -0
  52. package/lib/scxml.d.ts +2 -2
  53. package/lib/stateUtils.d.ts +6 -5
  54. package/lib/typegenTypes.d.ts +121 -0
  55. package/lib/typegenTypes.js +2 -0
  56. package/lib/types.d.ts +128 -64
  57. package/lib/utils.d.ts +5 -5
  58. package/lib/utils.js +5 -2
  59. package/package.json +5 -5
@@ -1,15 +1,16 @@
1
- import { EventObject, StateNode, StateValue } from '.';
1
+ import { EventObject, StateValue } from './types';
2
+ import { StateNode } from './StateNode';
2
3
  declare type Configuration<TC, TE extends EventObject> = Iterable<StateNode<TC, any, TE>>;
3
4
  declare type AdjList<TC, TE extends EventObject> = Map<StateNode<TC, any, TE>, Array<StateNode<TC, any, TE>>>;
4
- export declare const isLeafNode: (stateNode: StateNode<any, any, any, any>) => boolean;
5
+ export declare const isLeafNode: (stateNode: StateNode<any, any, any, any, any, any>) => boolean;
5
6
  export declare function getChildren<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE>): Array<StateNode<TC, any, TE>>;
6
- export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE, any>): Array<StateNode<TC, any, TE, any>>;
7
- export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any>>): Set<StateNode<TC, any, TE, any>>;
7
+ export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE, any, any, any>): Array<StateNode<TC, any, TE, any, any, any>>;
8
+ export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any, any, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any, any, any>>): Set<StateNode<TC, any, TE, any, any, any>>;
8
9
  export declare function getAdjList<TC, TE extends EventObject>(configuration: Configuration<TC, TE>): AdjList<TC, TE>;
9
10
  export declare function getValue<TC, TE extends EventObject>(rootNode: StateNode<TC, any, TE, any>, configuration: Configuration<TC, TE>): StateValue;
10
11
  export declare function has<T>(iterable: Iterable<T>, item: T): boolean;
11
12
  export declare function nextEvents<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE>>): Array<TE['type']>;
12
- export declare function isInFinalState<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE, any>>, stateNode: StateNode<TC, any, TE, any>): boolean;
13
+ export declare function isInFinalState<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE, any, any, any>>, stateNode: StateNode<TC, any, TE, any, any, any>): boolean;
13
14
  export declare function getMeta(configuration?: StateNode[]): Record<string, any>;
14
15
  export declare function getTagsFromConfiguration(configuration: StateNode<any, any, any, any>[]): Set<string>;
15
16
  export {};
@@ -0,0 +1,121 @@
1
+ import { BaseActionObject, EventObject, IndexByType, IsNever, Prop, Values, IsAny, ServiceMap, Cast } from './types';
2
+ export interface TypegenDisabled {
3
+ '@@xstate/typegen': false;
4
+ }
5
+ export interface TypegenEnabled {
6
+ '@@xstate/typegen': true;
7
+ }
8
+ export interface TypegenMeta extends TypegenEnabled {
9
+ /**
10
+ * Allows you to specify all the results of state.matches
11
+ */
12
+ matchesStates: string | {};
13
+ /**
14
+ * Allows you to specify all tags used by the machine
15
+ */
16
+ tags: string;
17
+ /**
18
+ * Allows you to specify all the missing implementations
19
+ * of the machine
20
+ */
21
+ missingImplementations: {
22
+ actions: string;
23
+ delays: string;
24
+ guards: string;
25
+ services: string;
26
+ };
27
+ /**
28
+ * A map for the internal events of the machine.
29
+ *
30
+ * key: 'done.invoke.myService'
31
+ * value: {
32
+ * type: 'done.invoke.myService';
33
+ * data: unknown;
34
+ * __tip: 'Declare the type in event types!';
35
+ * }
36
+ */
37
+ internalEvents: {};
38
+ /**
39
+ * Maps the name of the service to the event type
40
+ * of the done.invoke action
41
+ *
42
+ * key: 'invokeSrc'
43
+ * value: 'done.invoke.invokeName'
44
+ */
45
+ invokeSrcNameMap: Record<string, string>;
46
+ /**
47
+ * Keeps track of which events lead to which
48
+ * actions.
49
+ *
50
+ * Key: 'EVENT_NAME'
51
+ * Value: 'actionName' | 'otherActionName'
52
+ */
53
+ eventsCausingActions: Record<string, string>;
54
+ /**
55
+ * Keeps track of which events lead to which
56
+ * delays.
57
+ *
58
+ * Key: 'EVENT_NAME'
59
+ * Value: 'delayName' | 'otherDelayName'
60
+ */
61
+ eventsCausingDelays: Record<string, string>;
62
+ /**
63
+ * Keeps track of which events lead to which
64
+ * guards.
65
+ *
66
+ * Key: 'EVENT_NAME'
67
+ * Value: 'guardName' | 'otherGuardName'
68
+ */
69
+ eventsCausingGuards: Record<string, string>;
70
+ /**
71
+ * Keeps track of which events lead to which
72
+ * services.
73
+ *
74
+ * Key: 'EVENT_NAME'
75
+ * Value: 'serviceName' | 'otherServiceName'
76
+ */
77
+ eventsCausingServices: Record<string, string>;
78
+ }
79
+ export interface ResolvedTypegenMeta extends TypegenMeta {
80
+ indexedActions: Record<string, BaseActionObject>;
81
+ indexedEvents: Record<string, EventObject>;
82
+ }
83
+ export declare type TypegenConstraint = TypegenEnabled | TypegenDisabled;
84
+ export declare type AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta, TMissingImplementations = Prop<TResolvedTypesMeta, 'missingImplementations'>> = IsAny<TResolvedTypesMeta> extends true ? true : TResolvedTypesMeta extends TypegenEnabled ? IsNever<Values<{
85
+ [K in keyof TMissingImplementations]: TMissingImplementations[K];
86
+ }>> extends true ? true : false : true;
87
+ export declare type MarkAllImplementationsAsProvided<TResolvedTypesMeta> = TResolvedTypesMeta & {
88
+ missingImplementations: {
89
+ actions: never;
90
+ delays: never;
91
+ guards: never;
92
+ services: never;
93
+ };
94
+ };
95
+ declare type GenerateServiceEvent<TServiceName, TEventType, TServiceMap extends ServiceMap> = TEventType extends any ? {
96
+ type: TEventType;
97
+ } & Prop<TServiceMap, TServiceName> : never;
98
+ declare type GenerateServiceEvents<TServiceMap extends ServiceMap, TInvokeSrcNameMap> = string extends keyof TServiceMap ? never : Cast<{
99
+ [K in keyof TInvokeSrcNameMap]: GenerateServiceEvent<K, TInvokeSrcNameMap[K], TServiceMap>;
100
+ }[keyof TInvokeSrcNameMap], EventObject>;
101
+ declare type MergeWithInternalEvents<TIndexedEvents, TInternalEvents> = TIndexedEvents & Pick<TInternalEvents, Exclude<keyof TInternalEvents, keyof TIndexedEvents>>;
102
+ declare type AllowAllEvents = {
103
+ eventsCausingActions: Record<string, string>;
104
+ eventsCausingDelays: Record<string, string>;
105
+ eventsCausingGuards: Record<string, string>;
106
+ eventsCausingServices: Record<string, string>;
107
+ };
108
+ export declare type ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TAction extends BaseActionObject, TServiceMap extends ServiceMap> = TTypesMeta extends TypegenEnabled ? TTypesMeta & {
109
+ indexedActions: IndexByType<TAction>;
110
+ indexedEvents: MergeWithInternalEvents<IndexByType<(string extends TEvent['type'] ? never : TEvent) | GenerateServiceEvents<TServiceMap, Prop<TTypesMeta, 'invokeSrcNameMap'>>>, Prop<TTypesMeta, 'internalEvents'>>;
111
+ } : MarkAllImplementationsAsProvided<TypegenDisabled> & AllowAllEvents & {
112
+ indexedActions: IndexByType<TAction>;
113
+ indexedEvents: Record<string, TEvent> & {
114
+ __XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__: {
115
+ data: any;
116
+ };
117
+ };
118
+ invokeSrcNameMap: Record<string, '__XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__'>;
119
+ };
120
+ export {};
121
+ //# sourceMappingURL=typegenTypes.d.ts.map
package/es/types.d.ts CHANGED
@@ -1,9 +1,26 @@
1
- import { StateNode } from './StateNode';
1
+ import { Clock, Interpreter } from './interpreter';
2
+ import { Model } from './model.types';
2
3
  import { State } from './State';
3
- import { Interpreter, Clock } from './interpreter';
4
- import { IsNever, Model, Prop } from './model.types';
5
- declare type AnyFunction = (...args: any[]) => any;
4
+ import { StateNode } from './StateNode';
5
+ import { MarkAllImplementationsAsProvided, TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, AreAllImplementationsAssumedToBeProvided } 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 Compute<A extends any> = {
10
+ [K in keyof A]: A[K];
11
+ } & unknown;
12
+ export declare type Prop<T, K> = K extends keyof T ? T[K] : never;
13
+ export declare type Values<T> = T[keyof T];
14
+ export declare type Merge<M, N> = Omit<M, keyof N> & N;
15
+ export declare type IndexByType<T extends {
16
+ type: string;
17
+ }> = {
18
+ [K in T['type']]: Extract<T, {
19
+ type: K;
20
+ }>;
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>;
7
24
  export declare type Cast<A, B> = A extends B ? A : B;
8
25
  export declare type EventType = string;
9
26
  export declare type ActionType = string;
@@ -45,7 +62,7 @@ export declare type EventData = Record<string, any> & {
45
62
  * The specified string event types or the specified event objects.
46
63
  */
47
64
  export declare type Event<TEvent extends EventObject> = TEvent['type'] | TEvent;
48
- export interface ActionMeta<TContext, TEvent extends EventObject, TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> extends StateMeta<TContext, TEvent> {
65
+ export interface ActionMeta<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> extends StateMeta<TContext, TEvent> {
49
66
  action: TAction;
50
67
  _event: SCXML.Event<TEvent>;
51
68
  }
@@ -54,7 +71,9 @@ export interface AssignMeta<TContext, TEvent extends EventObject> {
54
71
  action: AssignAction<TContext, TEvent>;
55
72
  _event: SCXML.Event<TEvent>;
56
73
  }
57
- 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;
74
+ export declare type ActionFunction<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
75
+ bivarianceHack(context: TContext, event: TEvent, meta: ActionMeta<TContext, TEvent, TAction>): void;
76
+ }['bivarianceHack'];
58
77
  export interface ChooseCondition<TContext, TEvent extends EventObject> {
59
78
  cond?: Condition<TContext, TEvent>;
60
79
  actions: Actions<TContext, TEvent>;
@@ -71,7 +90,7 @@ export declare type SimpleEventsOf<TEvent extends EventObject> = ExtractWithSimp
71
90
  export declare type BaseAction<TContext, TEvent extends EventObject, TAction extends BaseActionObject> = SimpleActionsOf<TAction>['type'] | TAction | RaiseAction<any> | SendAction<TContext, TEvent, any> | AssignAction<TContext, TEvent> | LogAction<TContext, TEvent> | CancelAction | StopAction<TContext, TEvent> | ChooseAction<TContext, TEvent> | ActionFunction<TContext, TEvent>;
72
91
  export declare type BaseActions<TContext, TEvent extends EventObject, TAction extends BaseActionObject> = SingleOrArray<BaseAction<TContext, TEvent, TAction>>;
73
92
  export declare type Actions<TContext, TEvent extends EventObject> = SingleOrArray<Action<TContext, TEvent>>;
74
- export declare type StateKey = string | State<any>;
93
+ export declare type StateKey = string | AnyState;
75
94
  export interface StateValueMap {
76
95
  [key: string]: StateValue;
77
96
  }
@@ -146,7 +165,9 @@ export interface PayloadSender<TEvent extends EventObject> {
146
165
  */
147
166
  <K extends TEvent['type']>(eventType: K, payload: NeverIfEmpty<ExtractExtraParameters<TEvent, K>>): void;
148
167
  }
149
- 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;
150
171
  export declare type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (callback: Sender<TSentEvent>, onReceive: Receiver<TEvent>) => (() => void) | Promise<any> | void;
151
172
  export interface InvokeMeta {
152
173
  data: any;
@@ -166,7 +187,8 @@ export interface InvokeMeta {
166
187
  * @param context The current machine `context`
167
188
  * @param event The event that invoked the service
168
189
  */
169
- 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>;
170
192
  export interface InvokeDefinition<TContext, TEvent extends EventObject> extends ActivityDefinition<TContext, TEvent> {
171
193
  /**
172
194
  * The source of the machine to be invoked, or the machine itself.
@@ -246,7 +268,7 @@ export interface InvokeConfig<TContext, TEvent extends EventObject> {
246
268
  /**
247
269
  * The source of the machine to be invoked, or the machine itself.
248
270
  */
249
- src: string | InvokeSourceDefinition | StateMachine<any, any, any> | InvokeCreator<TContext, TEvent, any>;
271
+ src: string | InvokeSourceDefinition | AnyStateMachine | InvokeCreator<TContext, TEvent, any>;
250
272
  /**
251
273
  * If `true`, events sent to the parent service will be forwarded to the invoked service.
252
274
  *
@@ -316,7 +338,7 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
316
338
  /**
317
339
  * The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
318
340
  */
319
- invoke?: SingleOrArray<InvokeConfig<TContext, TEvent> | StateMachine<any, any, any>>;
341
+ invoke?: SingleOrArray<InvokeConfig<TContext, TEvent> | AnyStateMachine>;
320
342
  /**
321
343
  * The mapping of event types to their potential transition(s).
322
344
  */
@@ -436,6 +458,8 @@ export interface StateNodeDefinition<TContext, TStateSchema extends StateSchema,
436
458
  tags: string[];
437
459
  }
438
460
  export declare type AnyStateNodeDefinition = StateNodeDefinition<any, any, any>;
461
+ export declare type AnyState = State<any, any, any, any, any>;
462
+ export declare type AnyStateMachine = StateMachine<any, any, any, any, any, any, any>;
439
463
  export interface AtomicStateNodeConfig<TContext, TEvent extends EventObject> extends StateNodeConfig<TContext, StateSchema, TEvent> {
440
464
  initial?: undefined;
441
465
  parallel?: false | undefined;
@@ -455,33 +479,52 @@ export interface FinalStateNodeConfig<TContext, TEvent extends EventObject> exte
455
479
  data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
456
480
  }
457
481
  export declare type SimpleOrStateNodeConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TStateSchema, TEvent>;
458
- export declare type ActionFunctionMap<TContext, TEvent extends EventObject, TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> = {
482
+ export declare type ActionFunctionMap<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
459
483
  [K in TAction['type']]?: ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent, TAction extends {
460
484
  type: K;
461
485
  } ? TAction : never>;
462
486
  };
463
487
  export declare type DelayFunctionMap<TContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
464
- export declare type ServiceConfig<TContext, TEvent extends EventObject = AnyEventObject> = string | StateMachine<any, any, any> | InvokeCreator<TContext, TEvent>;
488
+ export declare type ServiceConfig<TContext, TEvent extends EventObject = AnyEventObject> = string | AnyStateMachine | InvokeCreator<TContext, TEvent>;
465
489
  export declare type DelayConfig<TContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
466
- export interface MachineOptions<TContext, TEvent extends EventObject, TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> {
467
- guards: Record<string, ConditionPredicate<TContext, TEvent>>;
468
- actions: ActionFunctionMap<TContext, TEvent, TAction>;
490
+ declare type MachineOptionsActions<TContext, TResolvedTypesMeta, TEventsCausingActions = Prop<TResolvedTypesMeta, 'eventsCausingActions'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>, TIndexedActions = Prop<TResolvedTypesMeta, 'indexedActions'>> = {
491
+ [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>>;
492
+ };
493
+ declare type MachineOptionsDelays<TContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<TResolvedTypesMeta, 'eventsCausingDelays'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>> = {
494
+ [K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
495
+ };
496
+ declare type MachineOptionsGuards<TContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<TResolvedTypesMeta, 'eventsCausingGuards'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>> = {
497
+ [K in keyof TEventsCausingGuards]?: ConditionPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
498
+ };
499
+ declare type MachineOptionsServices<TContext, TResolvedTypesMeta, TEventsCausingServices = Prop<TResolvedTypesMeta, 'eventsCausingServices'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>, TInvokeSrcNameMap = Prop<TResolvedTypesMeta, 'invokeSrcNameMap'>> = {
500
+ [K in keyof TEventsCausingServices]?: AnyStateMachine | InvokeCreator<TContext, Cast<Prop<TIndexedEvents, TEventsCausingServices[K]>, EventObject>, Prop<Prop<TIndexedEvents, Prop<TInvokeSrcNameMap, K>>, 'data'>, EventObject, Cast<TIndexedEvents[keyof TIndexedEvents], EventObject>>;
501
+ };
502
+ declare type MakeKeysRequired<T extends string> = {
503
+ [K in T]: unknown;
504
+ };
505
+ declare type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
506
+ [K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
507
+ } : {};
508
+ declare type GenerateActionsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
509
+ actions?: MachineOptionsActions<TContext, TResolvedTypesMeta>;
510
+ };
511
+ declare type GenerateDelaysConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
512
+ delays?: MachineOptionsDelays<TContext, TResolvedTypesMeta>;
513
+ };
514
+ declare type GenerateGuardsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
515
+ guards?: MachineOptionsGuards<TContext, TResolvedTypesMeta>;
516
+ };
517
+ declare type GenerateServicesConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'services', Prop<TMissingImplementations, 'services'>, TRequireMissingImplementations> & {
518
+ services?: MachineOptionsServices<TContext, TResolvedTypesMeta>;
519
+ };
520
+ 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> & {
469
521
  /**
470
522
  * @deprecated Use `services` instead.
471
523
  */
472
- activities: Record<string, ActivityConfig<TContext, TEvent>>;
473
- services: Record<string, ServiceConfig<TContext, TEvent>>;
474
- delays: DelayFunctionMap<TContext, TEvent>;
475
- /**
476
- * @private
477
- */
478
- _parent?: StateNode<TContext, any, TEvent, any>;
479
- /**
480
- * @private
481
- */
482
- _key?: string;
483
- }
484
- export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = ActionObject<TContext, TEvent>> extends StateNodeConfig<TContext, TStateSchema, TEvent, TAction> {
524
+ activities?: Record<string, ActivityConfig<TContext, TEvent>>;
525
+ };
526
+ 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>>;
527
+ 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> {
485
528
  /**
486
529
  * The initial context (extended state)
487
530
  */
@@ -490,9 +533,13 @@ export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEven
490
533
  * The machine's own version.
491
534
  */
492
535
  version?: string;
493
- schema?: MachineSchema<TContext, TEvent>;
536
+ schema?: MachineSchema<TContext, TEvent, TServiceMap>;
537
+ tsTypes?: TTypesMeta;
494
538
  }
495
- export interface MachineSchema<TContext, TEvent extends EventObject> {
539
+ export declare type ServiceMap = Record<string, {
540
+ data: any;
541
+ }>;
542
+ export interface MachineSchema<TContext, TEvent extends EventObject, TServiceMap extends ServiceMap = ServiceMap> {
496
543
  context?: TContext;
497
544
  events?: TEvent;
498
545
  actions?: {
@@ -503,10 +550,7 @@ export interface MachineSchema<TContext, TEvent extends EventObject> {
503
550
  type: string;
504
551
  [key: string]: any;
505
552
  };
506
- services?: {
507
- type: string;
508
- [key: string]: any;
509
- };
553
+ services?: TServiceMap;
510
554
  }
511
555
  export interface StandardMachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> extends StateNodeConfig<TContext, TStateSchema, TEvent> {
512
556
  }
@@ -522,16 +566,31 @@ export interface HistoryStateNode<TContext> extends StateNode<TContext> {
522
566
  history: 'shallow' | 'deep';
523
567
  target: StateValue | undefined;
524
568
  }
569
+ /** @ts-ignore TS complains about withConfig & withContext not being compatible here when extending StateNode */
525
570
  export interface StateMachine<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TTypestate extends Typestate<TContext> = {
526
571
  value: any;
527
572
  context: TContext;
528
- }, _TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> extends StateNode<TContext, TStateSchema, TEvent, TTypestate> {
573
+ }, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TResolvedTypesMeta = ResolveTypegenMeta<TypegenDisabled, TEvent, TAction, TServiceMap>> extends StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta> {
529
574
  id: string;
530
- states: StateNode<TContext, TStateSchema, TEvent>['states'];
531
- withConfig(options: Partial<MachineOptions<TContext, TEvent>>, context?: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
532
- withContext(context: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
533
- }
534
- 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, TServiceMap, TResolvedTypesMeta>['states'];
576
+ withConfig(options: InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, true>, context?: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>;
577
+ withContext(context: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, TResolvedTypesMeta>;
578
+ /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
579
+ __TContext: TContext;
580
+ /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
581
+ __TStateSchema: TStateSchema;
582
+ /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
583
+ __TEvent: TEvent;
584
+ /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
585
+ __TTypestate: TTypestate;
586
+ /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
587
+ __TAction: TAction;
588
+ /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
589
+ __TServiceMap: TServiceMap;
590
+ /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
591
+ __TResolvedTypesMeta: TResolvedTypesMeta;
592
+ }
593
+ export declare type StateFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = T extends AnyStateMachine ? ReturnType<T['transition']> : T extends (...args: any[]) => AnyStateMachine ? ReturnType<ReturnType<T>['transition']> : never;
535
594
  export interface ActionMap<TContext, TEvent extends EventObject> {
536
595
  onEntry: Array<Action<TContext, TEvent>>;
537
596
  actions: Array<Action<TContext, TEvent>>;
@@ -550,13 +609,13 @@ export interface ActivityMap {
550
609
  }
551
610
  export interface StateTransition<TContext, TEvent extends EventObject> {
552
611
  transitions: Array<TransitionDefinition<TContext, TEvent>>;
553
- configuration: Array<StateNode<TContext, any, TEvent, any>>;
554
- entrySet: Array<StateNode<TContext, any, TEvent, any>>;
555
- exitSet: Array<StateNode<TContext, any, TEvent, any>>;
612
+ configuration: Array<StateNode<TContext, any, TEvent, any, any, any>>;
613
+ entrySet: Array<StateNode<TContext, any, TEvent, any, any, any>>;
614
+ exitSet: Array<StateNode<TContext, any, TEvent, any, any, any>>;
556
615
  /**
557
616
  * The source state that preceded the transition.
558
617
  */
559
- source: State<TContext, any, any, any> | undefined;
618
+ source: State<TContext, any, any, any, any> | undefined;
560
619
  actions: Array<ActionObject<TContext, TEvent>>;
561
620
  }
562
621
  export interface TransitionData<TContext, TEvent extends EventObject> {
@@ -611,7 +670,7 @@ export interface DoneEventObject extends EventObject {
611
670
  }
612
671
  export interface UpdateObject extends EventObject {
613
672
  id: string | number;
614
- state: State<any, any>;
673
+ state: AnyState;
615
674
  }
616
675
  export declare type DoneEvent = DoneEventObject & string;
617
676
  export interface NullEvent {
@@ -777,7 +836,7 @@ export interface SCXMLEventMeta<TEvent extends EventObject> {
777
836
  _event: SCXML.Event<TEvent>;
778
837
  }
779
838
  export interface StateMeta<TContext, TEvent extends EventObject> {
780
- state: State<TContext, TEvent, any, any>;
839
+ state: State<TContext, TEvent, any, any, any>;
781
840
  _event: SCXML.Event<TEvent>;
782
841
  }
783
842
  export interface Typestate<TContext> {
@@ -796,7 +855,7 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
796
855
  _event: SCXML.Event<TEvent>;
797
856
  _sessionid: string | null;
798
857
  historyValue?: HistoryValue | undefined;
799
- history?: State<TContext, TEvent>;
858
+ history?: State<TContext, TEvent, any, any, any>;
800
859
  actions?: Array<ActionObject<TContext, TEvent>>;
801
860
  /**
802
861
  * @deprecated
@@ -809,8 +868,9 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
809
868
  children: Record<string, ActorRef<any>>;
810
869
  done?: boolean;
811
870
  tags?: Set<string>;
812
- machine?: StateMachine<TContext, any, TEvent, any>;
871
+ machine?: StateMachine<TContext, any, TEvent, any, any, any, any>;
813
872
  }
873
+ export declare type AnyStateConfig = StateConfig<any, AnyEventObject>;
814
874
  export interface StateSchema<TC = any> {
815
875
  meta?: any;
816
876
  context?: Partial<TC>;
@@ -822,9 +882,9 @@ export interface InterpreterOptions {
822
882
  /**
823
883
  * Whether state actions should be executed immediately upon transition. Defaults to `true`.
824
884
  */
825
- execute: boolean;
826
- clock: Clock;
827
- logger: (...args: any[]) => void;
885
+ execute?: boolean;
886
+ clock?: Clock;
887
+ logger?: (...args: any[]) => void;
828
888
  parent?: AnyInterpreter;
829
889
  /**
830
890
  * If `true`, defers processing of sent events until the service
@@ -833,7 +893,7 @@ export interface InterpreterOptions {
833
893
  *
834
894
  * Default: `true`
835
895
  */
836
- deferEvents: boolean;
896
+ deferEvents?: boolean;
837
897
  /**
838
898
  * The custom `id` for referencing this service.
839
899
  */
@@ -843,8 +903,7 @@ export interface InterpreterOptions {
843
903
  *
844
904
  * Default: `false`
845
905
  */
846
- devTools: boolean | object;
847
- [option: string]: any;
906
+ devTools?: boolean | object;
848
907
  }
849
908
  export declare namespace SCXML {
850
909
  interface Event<TEvent extends EventObject> {
@@ -917,13 +976,16 @@ export interface Subscription {
917
976
  unsubscribe(): void;
918
977
  }
919
978
  export interface InteropObservable<T> {
920
- [Symbol.observable]: () => Subscribable<T>;
979
+ [Symbol.observable]: () => InteropSubscribable<T>;
921
980
  }
922
- export interface Subscribable<T> {
923
- subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
981
+ export interface InteropSubscribable<T> {
982
+ subscribe(observer: Observer<T>): Subscription;
983
+ }
984
+ export interface Subscribable<T> extends InteropSubscribable<T> {
924
985
  subscribe(observer: Observer<T>): Subscription;
986
+ subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
925
987
  }
926
- export declare type Spawnable = StateMachine<any, any, any> | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
988
+ export declare type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
927
989
  export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends {
928
990
  type: TEventType;
929
991
  } ? TEvent : never;
@@ -941,15 +1003,17 @@ export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Su
941
1003
  * @deprecated Use `ActorRef` instead.
942
1004
  */
943
1005
  export declare type SpawnedActorRef<TEvent extends EventObject, TEmitted = any> = ActorRef<TEvent, TEmitted>;
944
- export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext>> = ActorRef<TEvent, State<TContext, TEvent, any, TTypestate>> & {
1006
+ export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext>, TResolvedTypesMeta = TypegenDisabled> = ActorRef<TEvent, State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>> & {
945
1007
  /**
946
1008
  * @deprecated Use `.getSnapshot()` instead.
947
1009
  */
948
- state: State<TContext, TEvent, any, TTypestate>;
1010
+ state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>;
949
1011
  };
950
- 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;
951
- export declare type AnyInterpreter = Interpreter<any, any, any, any>;
952
- 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;
1012
+ 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;
1013
+ export declare type AnyInterpreter = Interpreter<any, any, any, any, any>;
1014
+ export declare type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = 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;
1015
+ export declare type MachineOptionsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, any, infer TEvent, any, any, any, infer TResolvedTypesMeta> ? InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
1016
+ export declare type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
953
1017
  export interface ActorContext<TEvent extends EventObject, TEmitted> {
954
1018
  parent?: ActorRef<any, any>;
955
1019
  self: ActorRef<TEvent, TEmitted>;
package/es/utils.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import { Event, StateValue, ActionType, Action, EventObject, PropertyMapper, Mapper, EventType, HistoryValue, AssignAction, Condition, Subscribable, StateMachine, ConditionPredicate, SCXML, StateLike, EventData, TransitionConfig, TransitionConfigTarget, NullEvent, SingleOrArray, Guard, InvokeSourceDefinition, Observer, Behavior } from './types';
1
+ import { Event, StateValue, ActionType, Action, EventObject, PropertyMapper, Mapper, EventType, HistoryValue, AssignAction, Condition, Subscribable, ConditionPredicate, SCXML, StateLike, EventData, TransitionConfig, TransitionConfigTarget, NullEvent, SingleOrArray, Guard, InvokeSourceDefinition, Observer, Behavior } from './types';
2
2
  import { StateNode } from './StateNode';
3
3
  import { State } from './State';
4
4
  import { Actor } from './Actor';
5
+ import { AnyStateMachine } from '.';
5
6
  export declare function keys<T extends object>(value: T): Array<keyof T & string>;
6
7
  export declare function matchesState(parentStateId: StateValue, childStateId: StateValue, delimiter?: string): boolean;
7
8
  export declare function getEventType<TEvent extends EventObject = EventObject>(event: Event<TEvent>): TEvent['type'];
@@ -52,12 +53,11 @@ export declare function isFunction(value: any): value is Function;
52
53
  export declare function isString(value: any): value is string;
53
54
  export declare function toGuard<TContext, TEvent extends EventObject>(condition?: Condition<TContext, TEvent>, guardMap?: Record<string, ConditionPredicate<TContext, TEvent>>): Guard<TContext, TEvent> | undefined;
54
55
  export declare function isObservable<T>(value: any): value is Subscribable<T>;
55
- export declare const symbolObservable: string | typeof Symbol.observable;
56
+ export declare const symbolObservable: typeof Symbol.observable;
56
57
  export declare const interopSymbols: {
57
- [x: string]: () => any;
58
58
  [Symbol.observable]: () => any;
59
59
  };
60
- export declare function isMachine(value: any): value is StateMachine<any, any, any>;
60
+ export declare function isMachine(value: any): value is AnyStateMachine;
61
61
  export declare function isActor(value: any): value is Actor;
62
62
  export declare const uniqueId: () => string;
63
63
  export declare function toEventObject<TEvent extends EventObject>(event: Event<TEvent>, payload?: EventData): TEvent;
@@ -67,7 +67,7 @@ export declare function toTransitionConfigArray<TContext, TEvent extends EventOb
67
67
  }>;
68
68
  export declare function normalizeTarget<TContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, any, TEvent>> | undefined): Array<string | StateNode<TContext, any, TEvent>> | undefined;
69
69
  export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
70
- 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;
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;
71
71
  export declare function toInvokeSource(src: string | InvokeSourceDefinition): InvokeSourceDefinition;
72
72
  export declare function toObserver<T>(nextHandler: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
73
73
  export declare function createInvokeId(stateNodeId: string, index: number): string;
package/es/utils.js CHANGED
@@ -460,9 +460,12 @@ function isObservable(value) {
460
460
  }
461
461
  var symbolObservable = /*#__PURE__*/function () {
462
462
  return typeof Symbol === 'function' && Symbol.observable || '@@observable';
463
- }();
463
+ }(); // TODO: to be removed in v5, left it out just to minimize the scope of the change and maintain compatibility with older versions of integration paackages
464
+
464
465
  var interopSymbols = (_a = {}, _a[symbolObservable] = function () {
465
466
  return this;
467
+ }, _a[Symbol.observable] = function () {
468
+ return this;
466
469
  }, _a);
467
470
  function isMachine(value) {
468
471
  try {
@@ -552,7 +555,7 @@ function evaluateGuard(machine, guard, context, _event, state) {
552
555
  return ((guards === null || guards === void 0 ? void 0 : guards[guard.name]) || guard.predicate)(context, _event.data, guardMeta);
553
556
  }
554
557
 
555
- var condFn = guards[guard.type];
558
+ var condFn = guards === null || guards === void 0 ? void 0 : guards[guard.type];
556
559
 
557
560
  if (!condFn) {
558
561
  throw new Error("Guard '".concat(guard.type, "' is not implemented on machine '").concat(machine.id, "'."));
package/lib/Actor.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { EventObject, Subscribable, InvokeDefinition, AnyEventObject, StateMachine, Spawnable, SCXML } from './types';
2
- import { ActorRef, BaseActorRef } from '.';
1
+ import { EventObject, Subscribable, InvokeDefinition, AnyEventObject, StateMachine, Spawnable, SCXML, ActorRef, BaseActorRef } from './types';
3
2
  export interface Actor<TContext = any, TEvent extends EventObject = AnyEventObject> extends Subscribable<TContext> {
4
3
  id: string;
5
4
  send: (event: TEvent) => any;
@@ -22,5 +21,5 @@ export declare function createInvocableActor<TC, TE extends EventObject>(invokeD
22
21
  export declare function createDeferredActor(entity: Spawnable, id: string, data?: any): ActorRef<any, undefined>;
23
22
  export declare function isActor(item: any): item is ActorRef<any>;
24
23
  export declare function isSpawnedActor(item: any): item is ActorRef<any>;
25
- export declare function toActorRef<TEvent extends EventObject, TEmitted = any, TActorRefLike extends BaseActorRef<TEvent> = BaseActorRef<TEvent>>(actorRefLike: TActorRefLike): ActorRef<TEvent, TEmitted>;
24
+ export declare function toActorRef<TEvent extends EventObject, TEmitted = any, TActorRefLike extends BaseActorRef<TEvent> = BaseActorRef<TEvent>>(actorRefLike: TActorRefLike): ActorRef<TEvent, TEmitted> & Omit<TActorRefLike, keyof ActorRef<any, any>>;
26
25
  //# sourceMappingURL=Actor.d.ts.map