xstate 5.0.0-alpha.1 → 5.0.0-alpha.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 (67) hide show
  1. package/README.md +3 -2
  2. package/actions/dist/xstate-actions.cjs.dev.js +3 -2
  3. package/actions/dist/xstate-actions.cjs.prod.js +2 -1
  4. package/actions/dist/xstate-actions.esm.js +2 -2
  5. package/actions/dist/xstate-actions.umd.min.js +1 -1
  6. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  7. package/actions/dynamicAction.ts +11 -3
  8. package/actors/dist/xstate-actors.cjs.d.ts +1 -1
  9. package/actors/dist/xstate-actors.cjs.dev.js +4 -3
  10. package/actors/dist/xstate-actors.cjs.prod.js +3 -2
  11. package/actors/dist/xstate-actors.esm.js +2 -2
  12. package/actors/dist/xstate-actors.umd.min.js +1 -1
  13. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  14. package/dev/dist/xstate-dev.cjs.dev.js +1 -1
  15. package/dev/dist/xstate-dev.cjs.prod.js +0 -11
  16. package/dev/dist/xstate-dev.esm.js +1 -1
  17. package/dev/dist/xstate-dev.umd.min.js.map +1 -1
  18. package/dist/{actions-b08d0da8.cjs.dev.js → actions-1e9778c2.cjs.dev.js} +1049 -1467
  19. package/dist/{actions-b673cb13.esm.js → actions-9778f6fb.esm.js} +1052 -1466
  20. package/dist/{actions-7ea9280f.cjs.prod.js → actions-acb29ffe.cjs.prod.js} +1044 -1456
  21. package/dist/declarations/actions/dynamicAction.d.ts +3 -3
  22. package/dist/declarations/src/Machine.d.ts +4 -4
  23. package/dist/declarations/src/SimulatedClock.d.ts +1 -1
  24. package/dist/declarations/src/State.d.ts +6 -6
  25. package/dist/declarations/src/StateMachine.d.ts +12 -22
  26. package/dist/declarations/src/StateNode.d.ts +3 -3
  27. package/dist/declarations/src/actionTypes.d.ts +1 -1
  28. package/dist/declarations/src/actions/assign.d.ts +2 -2
  29. package/dist/declarations/src/actions/cancel.d.ts +3 -3
  30. package/dist/declarations/src/actions/choose.d.ts +3 -3
  31. package/dist/declarations/src/actions/invoke.d.ts +3 -3
  32. package/dist/declarations/src/actions/log.d.ts +3 -3
  33. package/dist/declarations/src/actions/pure.d.ts +2 -2
  34. package/dist/declarations/src/actions/raise.d.ts +2 -3
  35. package/dist/declarations/src/actions/send.d.ts +11 -9
  36. package/dist/declarations/src/actions/stop.d.ts +2 -2
  37. package/dist/declarations/src/actions.d.ts +14 -10
  38. package/dist/declarations/src/actors/callback.d.ts +8 -0
  39. package/dist/declarations/src/actors/index.d.ts +27 -0
  40. package/dist/declarations/src/actors/observable.d.ts +23 -0
  41. package/dist/declarations/src/actors/promise.d.ts +12 -0
  42. package/dist/declarations/src/actors/transition.d.ts +13 -0
  43. package/dist/declarations/src/dev/index.d.ts +2 -2
  44. package/dist/declarations/src/guards.d.ts +2 -2
  45. package/dist/declarations/src/index.d.ts +22 -22
  46. package/dist/declarations/src/interpreter.d.ts +26 -30
  47. package/dist/declarations/src/spawn.d.ts +2 -2
  48. package/dist/declarations/src/stateUtils.d.ts +11 -11
  49. package/dist/declarations/src/system.d.ts +2 -0
  50. package/dist/declarations/src/typegenTypes.d.ts +9 -9
  51. package/dist/declarations/src/types.d.ts +272 -265
  52. package/dist/declarations/src/utils.d.ts +14 -10
  53. package/dist/{index-20b364c4.esm.js → index-50bd0aff.esm.js} +0 -12
  54. package/dist/{index-2a564d03.cjs.dev.js → index-ebaab3c9.cjs.dev.js} +0 -12
  55. package/dist/xstate.cjs.dev.js +139 -217
  56. package/dist/xstate.cjs.prod.js +138 -216
  57. package/dist/xstate.esm.js +137 -216
  58. package/dist/xstate.umd.min.js +1 -1
  59. package/dist/xstate.umd.min.js.map +1 -1
  60. package/guards/dist/xstate-guards.cjs.dev.js +2 -2
  61. package/guards/dist/xstate-guards.cjs.prod.js +1 -1
  62. package/guards/dist/xstate-guards.esm.js +2 -2
  63. package/guards/dist/xstate-guards.umd.min.js +1 -1
  64. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  65. package/package.json +8 -9
  66. package/dist/declarations/src/actors.d.ts +0 -37
  67. package/dist/declarations/src/registry.d.ts +0 -8
@@ -1,33 +1,33 @@
1
- import type { StateNode } from './StateNode';
2
- import type { State } from './State';
3
- import type { ActorStatus, Clock, Interpreter } from './interpreter';
4
- import type { StateMachine } from './StateMachine';
5
- import type { LifecycleSignal } from './actors';
6
- import { TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, MarkAllImplementationsAsProvided, AreAllImplementationsAssumedToBeProvided } from './typegenTypes';
7
- export declare type AnyFunction = (...args: any[]) => any;
8
- declare type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
9
- export declare type IsNever<T> = [T] extends [never] ? true : false;
10
- export declare type Compute<A extends any> = {
1
+ import type { StateNode } from './StateNode.js';
2
+ import type { State } from './State.js';
3
+ import type { ActorStatus, Clock, Interpreter } from './interpreter.js';
4
+ import type { StateMachine } from './StateMachine.js';
5
+ import type { LifecycleSignal } from './actors/index.js';
6
+ import { TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, MarkAllImplementationsAsProvided, AreAllImplementationsAssumedToBeProvided } from './typegenTypes.js';
7
+ export type AnyFunction = (...args: any[]) => any;
8
+ type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
9
+ export type IsNever<T> = [T] extends [never] ? true : false;
10
+ export type Compute<A extends any> = {
11
11
  [K in keyof A]: A[K];
12
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 {
13
+ export type Prop<T, K> = K extends keyof T ? T[K] : never;
14
+ export type Values<T> = T[keyof T];
15
+ export type Merge<M, N> = Omit<M, keyof N> & N;
16
+ export type IndexByType<T extends {
17
17
  type: string;
18
18
  }> = {
19
19
  [K in T['type']]: T extends any ? (K extends T['type'] ? T : never) : never;
20
20
  };
21
- 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;
22
- export declare type IsAny<T> = Equals<T, any>;
23
- export declare type Cast<A, B> = A extends B ? A : B;
24
- export declare type NoInfer<T> = [T][T extends any ? 0 : any];
25
- export declare type LowInfer<T> = T & {};
26
- export declare type EventType = string;
27
- export declare type ActionType = string;
28
- export declare type MetaObject = Record<string, any>;
29
- export declare type Lazy<T> = () => T;
30
- export declare type MaybeLazy<T> = T | Lazy<T>;
21
+ export type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1 ? true : false ? true : false;
22
+ export type IsAny<T> = Equals<T, any>;
23
+ export type Cast<A, B> = A extends B ? A : B;
24
+ export type NoInfer<T> = [T][T extends any ? 0 : any];
25
+ export type LowInfer<T> = T & {};
26
+ export type EventType = string;
27
+ export type ActionType = string;
28
+ export type MetaObject = Record<string, any>;
29
+ export type Lazy<T> = () => T;
30
+ export type MaybeLazy<T> = T | Lazy<T>;
31
31
  /**
32
32
  * The full definition of an event, with a string `type`.
33
33
  */
@@ -40,57 +40,63 @@ export interface EventObject {
40
40
  export interface AnyEventObject extends EventObject {
41
41
  [key: string]: any;
42
42
  }
43
- export interface BaseActionObject {
43
+ export interface ParameterizedObject {
44
44
  type: string;
45
45
  params?: Record<string, any>;
46
- execute?: (actorCtx: ActorContext<any, any>) => void;
47
46
  }
48
- export interface BuiltInActionObject {
47
+ export interface BaseActionObject extends ParameterizedObject {
48
+ execute?: (actorCtx: AnyActorContext) => void;
49
+ }
50
+ export interface BuiltInActionObject extends ParameterizedObject {
49
51
  type: `xstate.${string}`;
50
52
  params: Record<string, any>;
51
53
  }
52
- export interface BaseDynamicActionObject<TContext extends MachineContext, TEvent extends EventObject, TResolvedAction extends BaseActionObject, TDynamicParams extends Record<string, any>> {
54
+ export interface BaseDynamicActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TResolvedAction extends BaseActionObject, TDynamicParams extends Record<string, any>> {
53
55
  type: `xstate.${string}`;
54
56
  params: TDynamicParams;
55
- resolve: (_event: SCXML.Event<TEvent>, extra: {
57
+ resolve: (_event: SCXML.Event<TExpressionEvent>, extra: {
56
58
  state: State<TContext, TEvent>;
57
59
  /**
58
60
  * The original action object
59
61
  */
60
- action: BaseActionObject;
61
- actorContext: ActorContext<any, any> | undefined;
62
+ action: ParameterizedObject;
63
+ actorContext: AnyActorContext | undefined;
62
64
  }) => [AnyState, TResolvedAction];
65
+ /** @deprecated an internal signature that doesn't exist at runtime. Its existence helps TS to choose a better code path in the inference algorithm */
66
+ (arg: TContext, ev: TExpressionEvent, meta: ActionMeta<TContext, TEvent, ParameterizedObject>): void;
63
67
  }
64
- export declare type MachineContext = Record<string, any>;
65
- export interface ActionMeta<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> extends StateMeta<TContext, TEvent> {
68
+ export type MachineContext = Record<string, any>;
69
+ export interface ActionMeta<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> extends StateMeta<TContext, TEvent> {
66
70
  action: TAction;
67
71
  _event: SCXML.Event<TEvent>;
68
72
  }
69
- export declare type Spawner = <T extends Behavior<any, any> | string>(// TODO: read string from machine behavior keys
70
- behavior: T, name?: string) => T extends Behavior<infer TActorEvent, infer TActorEmitted> ? ActorRef<TActorEvent, TActorEmitted> : ActorRef<any, any>;
71
- export interface AssignMeta<TContext extends MachineContext, TEvent extends EventObject> {
72
- state: State<TContext, TEvent>;
73
+ export type Spawner = <T extends ActorBehavior<any, any> | string>(// TODO: read string from machine behavior keys
74
+ behavior: T, options?: Partial<{
75
+ id: string;
76
+ input: any;
77
+ }>) => T extends ActorBehavior<infer TActorEvent, infer TActorEmitted> ? ActorRef<TActorEvent, TActorEmitted> : ActorRef<any, any>;
78
+ export interface AssignMeta<TContext extends MachineContext, TExpressionEvent extends EventObject, _TEvent extends EventObject> extends StateMeta<TContext, TExpressionEvent> {
73
79
  action: BaseActionObject;
74
- _event: SCXML.Event<TEvent>;
80
+ _event: SCXML.Event<TExpressionEvent>;
75
81
  spawn: Spawner;
76
82
  }
77
- export declare type ActionFunction<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
78
- bivarianceHack(context: TContext, event: TEvent, meta: ActionMeta<TContext, TEvent, TAction>): void;
83
+ export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TEvent extends EventObject = TExpressionEvent> = {
84
+ bivarianceHack(context: TContext, event: TExpressionEvent, meta: ActionMeta<TContext, TEvent, TAction>): void;
79
85
  }['bivarianceHack'];
80
- export interface ChooseCondition<TContext extends MachineContext, TEvent extends EventObject> {
86
+ export interface ChooseCondition<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> {
81
87
  guard?: GuardConfig<TContext, TEvent>;
82
- actions: Actions<TContext, TEvent>;
88
+ actions: Actions<TContext, TExpressionEvent, TEvent>;
83
89
  }
84
- export declare type Action<TContext extends MachineContext, TEvent extends EventObject> = ActionType | BaseActionObject | ActionFunction<TContext, TEvent> | BaseDynamicActionObject<TContext, TEvent, any, any>;
90
+ export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = ActionType | ParameterizedObject | ActionFunction<TContext, TExpressionEvent, ParameterizedObject, TEvent> | BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, any, any>;
85
91
  /**
86
92
  * Extracts action objects that have no extra properties.
87
93
  */
88
- declare type SimpleActionsFrom<T extends BaseActionObject> = BaseActionObject extends T ? T : ExtractWithSimpleSupport<T>;
89
- export declare type BaseAction<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject> = BaseDynamicActionObject<TContext, TEvent, any, // TODO: at the very least this should include TAction, but probably at a covariant position or something, we really need to rethink how action objects are typed
90
- any> | TAction | SimpleActionsFrom<TAction>['type'] | ActionFunction<TContext, TEvent>;
91
- export declare type BaseActions<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject> = SingleOrArray<BaseAction<TContext, TEvent, TAction>>;
92
- export declare type Actions<TContext extends MachineContext, TEvent extends EventObject> = SingleOrArray<Action<TContext, TEvent>>;
93
- export declare type StateKey = string | AnyState;
94
+ type SimpleActionsFrom<T extends ParameterizedObject> = ParameterizedObject extends T ? T : ExtractWithSimpleSupport<T>;
95
+ export type BaseAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TAction extends ParameterizedObject, TEvent extends EventObject> = BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, any, // TODO: at the very least this should include TAction, but probably at a covariant position or something, we really need to rethink how action objects are typed
96
+ any> | TAction | SimpleActionsFrom<TAction>['type'] | ActionFunction<TContext, TExpressionEvent, TAction, TEvent>;
97
+ export type BaseActions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject> = SingleOrArray<BaseAction<TContext, TExpressionEvent, TAction, TEvent>>;
98
+ export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<Action<TContext, TEvent>>;
99
+ export type StateKey = string | AnyState;
94
100
  export interface StateValueMap {
95
101
  [key: string]: StateValue;
96
102
  }
@@ -100,26 +106,24 @@ export interface StateValueMap {
100
106
  * - For a child atomic state node, this is a string, e.g., `"pending"`.
101
107
  * - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
102
108
  */
103
- export declare type StateValue = string | StateValueMap;
104
- export declare type GuardPredicate<TContext extends MachineContext, TEvent extends EventObject> = (context: TContext, event: TEvent, meta: GuardMeta<TContext, TEvent>) => boolean;
105
- export interface DefaultGuardObject<TContext extends MachineContext, TEvent extends EventObject> {
106
- type: string;
107
- params?: {
108
- [key: string]: any;
109
- };
109
+ export type StateValue = string | StateValueMap;
110
+ export type GuardPredicate<TContext extends MachineContext, TEvent extends EventObject> = (context: TContext, event: TEvent, meta: GuardMeta<TContext, TEvent>) => boolean;
111
+ export interface DefaultGuardObject<TContext extends MachineContext, TEvent extends EventObject> extends ParameterizedObject {
110
112
  /**
111
113
  * Nested guards
112
114
  */
113
115
  children?: Array<GuardObject<TContext, TEvent>>;
114
116
  predicate?: GuardPredicate<TContext, TEvent>;
115
117
  }
116
- export declare type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>, machine: StateMachine<TContext, TEvent>) => boolean;
117
- export interface GuardMeta<TContext extends MachineContext, TEvent extends EventObject> extends StateMeta<TContext, TEvent> {
118
+ export type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>) => boolean;
119
+ export interface GuardMeta<TContext extends MachineContext, TEvent extends EventObject> {
120
+ state: State<TContext, TEvent, any>;
121
+ _event: SCXML.Event<TEvent>;
118
122
  guard: GuardDefinition<TContext, TEvent>;
119
123
  evaluate: GuardEvaluator<TContext, TEvent>;
120
124
  }
121
- export declare type GuardConfig<TContext extends MachineContext, TEvent extends EventObject> = string | GuardPredicate<TContext, TEvent> | GuardObject<TContext, TEvent>;
122
- export declare type GuardObject<TContext extends MachineContext, TEvent extends EventObject> = BooleanGuardObject<TContext, TEvent> | DefaultGuardObject<TContext, TEvent>;
125
+ export type GuardConfig<TContext extends MachineContext, TEvent extends EventObject> = string | GuardPredicate<TContext, TEvent> | GuardObject<TContext, TEvent>;
126
+ export type GuardObject<TContext extends MachineContext, TEvent extends EventObject> = BooleanGuardObject<TContext, TEvent> | DefaultGuardObject<TContext, TEvent>;
123
127
  export interface GuardDefinition<TContext extends MachineContext, TEvent extends EventObject> {
124
128
  type: string;
125
129
  children?: Array<GuardDefinition<TContext, TEvent>>;
@@ -128,7 +132,7 @@ export interface GuardDefinition<TContext extends MachineContext, TEvent extends
128
132
  [key: string]: any;
129
133
  };
130
134
  }
131
- export interface BooleanGuardObject<TContext extends MachineContext, TEvent extends EventObject> {
135
+ export interface BooleanGuardObject<TContext extends MachineContext, TEvent extends EventObject> extends ParameterizedObject {
132
136
  type: 'xstate.boolean';
133
137
  children: Array<GuardConfig<TContext, TEvent>>;
134
138
  params: {
@@ -142,65 +146,55 @@ export interface BooleanGuardDefinition<TContext extends MachineContext, TEvent
142
146
  op: 'and' | 'or' | 'not';
143
147
  };
144
148
  }
145
- export declare type TransitionTarget<TContext extends MachineContext, TEvent extends EventObject> = SingleOrArray<string | StateNode<TContext, TEvent>>;
146
- export declare type TransitionTargets<TContext extends MachineContext> = Array<string | StateNode<TContext, any>>;
147
- export interface TransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> {
148
- guard?: GuardConfig<TContext, TEvent>;
149
- actions?: BaseActions<TContext, TEvent, TAction>;
150
- internal?: boolean;
151
- target?: TransitionTarget<TContext, TEvent> | undefined;
149
+ export type TransitionTarget = SingleOrArray<string>;
150
+ export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject> {
151
+ guard?: GuardConfig<TContext, TExpressionEvent>;
152
+ actions?: BaseActions<TContext, TExpressionEvent, TEvent, TAction>;
153
+ external?: boolean;
154
+ target?: TransitionTarget | undefined;
152
155
  meta?: Record<string, any>;
153
156
  description?: string;
154
157
  }
155
158
  export interface TargetTransitionConfig<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
156
- target: TransitionTarget<TContext, TEvent>;
159
+ target: TransitionTarget;
157
160
  }
158
- export declare type ConditionalTransitionConfig<TContext extends MachineContext, TEvent extends EventObject = EventObject> = Array<TransitionConfig<TContext, TEvent>>;
161
+ export type ConditionalTransitionConfig<TContext extends MachineContext, TEvent extends EventObject = EventObject> = Array<TransitionConfig<TContext, TEvent>>;
159
162
  export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
160
163
  guard?: never;
161
- target: TransitionTarget<TContext, TEvent>;
164
+ target: TransitionTarget;
162
165
  }
163
- export declare type Transition<TContext extends MachineContext, TEvent extends EventObject = EventObject> = string | TransitionConfig<TContext, TEvent> | ConditionalTransitionConfig<TContext, TEvent>;
164
- declare type ExtractWithSimpleSupport<T extends {
166
+ export type Transition<TContext extends MachineContext, TEvent extends EventObject = EventObject> = string | TransitionConfig<TContext, TEvent> | ConditionalTransitionConfig<TContext, TEvent>;
167
+ type ExtractWithSimpleSupport<T extends {
165
168
  type: string;
166
169
  }> = T extends any ? {
167
170
  type: T['type'];
168
171
  } extends T ? T : never : never;
169
- export declare type Receiver<TEvent extends EventObject> = (listener: {
172
+ export type Receiver<TEvent extends EventObject> = (listener: {
170
173
  bivarianceHack(event: TEvent): void;
171
174
  }['bivarianceHack']) => void;
172
- export declare type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (callback: (event: TSentEvent) => void, onReceive: Receiver<TEvent>) => (() => void) | Promise<any> | void;
173
- export declare type BehaviorCreator<TContext extends MachineContext, TEvent extends EventObject, TSnapshot = any> = (context: TContext, event: TEvent, meta: {
175
+ export type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (sendBack: (event: TSentEvent) => void, onReceive: Receiver<TEvent>, { input }: {
176
+ input: any;
177
+ }) => (() => void) | Promise<any> | void;
178
+ export type ActorBehaviorCreator<TContext extends MachineContext, TEvent extends EventObject, TActorBehavior extends AnyActorBehavior = AnyActorBehavior> = (context: TContext, event: TEvent, meta: {
174
179
  id: string;
175
180
  data?: any;
176
- src: InvokeSourceDefinition;
181
+ src: string;
177
182
  _event: SCXML.Event<TEvent>;
178
183
  meta: MetaObject | undefined;
179
- }) => Behavior<any, TSnapshot>;
184
+ input: any;
185
+ }) => TActorBehavior;
180
186
  export interface InvokeMeta {
181
- data: any;
182
- src: InvokeSourceDefinition;
187
+ src: string;
183
188
  meta: MetaObject | undefined;
184
189
  }
185
190
  export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
186
191
  id: string;
192
+ systemId: string | undefined;
187
193
  /**
188
194
  * The source of the actor's behavior to be invoked
189
195
  */
190
- src: InvokeSourceDefinition;
191
- /**
192
- * If `true`, events sent to the parent service will be forwarded to the invoked service.
193
- *
194
- * Default: `false`
195
- */
196
- autoForward?: boolean;
197
- /**
198
- * Data from the parent machine's context to set as the (partial or full) context
199
- * for the invoked child machine.
200
- *
201
- * Data should be mapped to match the child machine's context shape.
202
- */
203
- data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
196
+ src: string;
197
+ input?: Mapper<TContext, TEvent, any> | any;
204
198
  /**
205
199
  * The transition to take upon the invoked child machine reaching its final top-level state.
206
200
  */
@@ -220,73 +214,58 @@ export interface Delay {
220
214
  */
221
215
  delay: number;
222
216
  }
223
- export declare type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent>>> | Array<TransitionConfig<TContext, TEvent> & {
217
+ export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent>>> | Array<TransitionConfig<TContext, TEvent> & {
224
218
  delay: number | string | Expr<TContext, TEvent, number>;
225
219
  }>;
226
- export declare type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
227
- export declare type SingleOrArray<T> = T[] | T;
228
- export declare type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
220
+ export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
221
+ export type SingleOrArray<T> = T[] | T;
222
+ export type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
229
223
  [K in string]: StateNode<TContext, TEvent>;
230
224
  };
231
- export declare type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
225
+ export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
232
226
  [K in string]: StateNodeConfig<TContext, TEvent, TAction>;
233
227
  };
234
- export declare type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
228
+ export type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
235
229
  [K in string]: StateNodeDefinition<TContext, TEvent>;
236
230
  };
237
- export declare type TransitionConfigTarget<TContext extends MachineContext, TEvent extends EventObject> = string | undefined | StateNode<TContext, TEvent>;
238
- export declare type TransitionConfigOrTarget<TContext extends MachineContext, TEvent extends EventObject> = SingleOrArray<TransitionConfigTarget<TContext, TEvent> | TransitionConfig<TContext, TEvent>>;
239
- export declare type TransitionsConfigMap<TContext extends MachineContext, TEvent extends EventObject> = {
240
- [K in TEvent['type'] | '' | '*']?: K extends '' | '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>>;
231
+ export type TransitionConfigTarget = string | undefined;
232
+ export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent>>;
233
+ export type TransitionsConfigMap<TContext extends MachineContext, TEvent extends EventObject> = {
234
+ [K in TEvent['type'] | '' | '*']?: K extends '' | '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent>;
241
235
  };
242
- declare type TransitionsConfigArray<TContext extends MachineContext, TEvent extends EventObject> = Array<(TEvent extends EventObject ? TransitionConfig<TContext, TEvent> & {
236
+ type TransitionsConfigArray<TContext extends MachineContext, TEvent extends EventObject> = Array<(TEvent extends EventObject ? TransitionConfig<TContext, TEvent> & {
243
237
  event: TEvent['type'];
244
238
  } : never) | (TransitionConfig<TContext, TEvent> & {
245
239
  event: '*';
246
240
  })>;
247
- export declare type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = TransitionsConfigMap<TContext, TEvent> | TransitionsConfigArray<TContext, TEvent>;
248
- export interface InvokeSourceDefinition {
249
- [key: string]: any;
250
- type: string;
251
- }
241
+ export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = TransitionsConfigMap<TContext, TEvent> | TransitionsConfigArray<TContext, TEvent>;
252
242
  export interface InvokeConfig<TContext extends MachineContext, TEvent extends EventObject> {
253
243
  /**
254
244
  * The unique identifier for the invoked machine. If not specified, this
255
245
  * will be the machine's own `id`, or the URL (from `src`).
256
246
  */
257
247
  id?: string;
248
+ systemId?: string;
258
249
  /**
259
250
  * The source of the machine to be invoked, or the machine itself.
260
251
  */
261
- src: string | InvokeSourceDefinition | BehaviorCreator<TContext, TEvent> | Behavior<any, any>;
262
- /**
263
- * If `true`, events sent to the parent service will be forwarded to the invoked service.
264
- *
265
- * Default: `false`
266
- */
267
- autoForward?: boolean;
268
- /**
269
- * Data from the parent machine's context to set as the (partial or full) context
270
- * for the invoked child machine.
271
- *
272
- * Data should be mapped to match the child machine's context shape.
273
- */
274
- data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
252
+ src: string | ActorBehavior<any, any>;
253
+ input?: Mapper<TContext, TEvent, any> | any;
275
254
  /**
276
255
  * The transition to take upon the invoked child machine reaching its final top-level state.
277
256
  */
278
- onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
257
+ onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent>>;
279
258
  /**
280
259
  * The transition to take upon the invoked child machine sending an error event.
281
260
  */
282
- onError?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
283
- onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>>>;
261
+ onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent>>;
262
+ onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent>>;
284
263
  /**
285
264
  * Meta data related to this invocation
286
265
  */
287
266
  meta?: MetaObject;
288
267
  }
289
- export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> {
268
+ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> {
290
269
  /**
291
270
  * The initial state transition.
292
271
  */
@@ -314,7 +293,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
314
293
  /**
315
294
  * The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
316
295
  */
317
- invoke?: SingleOrArray<string | BehaviorCreator<TContext, TEvent> | InvokeConfig<TContext, TEvent>>;
296
+ invoke?: SingleOrArray<string | InvokeConfig<TContext, TEvent>>;
318
297
  /**
319
298
  * The mapping of event types to their potential transition(s).
320
299
  */
@@ -322,11 +301,11 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
322
301
  /**
323
302
  * The action(s) to be executed upon entering the state node.
324
303
  */
325
- entry?: BaseActions<TContext, TEvent, TAction>;
304
+ entry?: BaseActions<TContext, TEvent, TEvent, TAction>;
326
305
  /**
327
306
  * The action(s) to be executed upon exiting the state node.
328
307
  */
329
- exit?: BaseActions<TContext, TEvent, TAction>;
308
+ exit?: BaseActions<TContext, TEvent, TEvent, TAction>;
330
309
  /**
331
310
  * The potential transition(s) to be taken upon reaching a final child state node.
332
311
  *
@@ -406,11 +385,11 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
406
385
  export interface StateMachineDefinition<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeDefinition<TContext, TEvent> {
407
386
  context: TContext;
408
387
  }
409
- export declare type AnyStateNode = StateNode<any, any>;
410
- export declare type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
411
- export declare type AnyState = State<any, any, any>;
412
- export declare type AnyStateMachine = StateMachine<any, any, any, any, any>;
413
- export declare type AnyStateConfig = StateConfig<any, AnyEventObject>;
388
+ export type AnyStateNode = StateNode<any, any>;
389
+ export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
390
+ export type AnyState = State<any, any, any>;
391
+ export type AnyStateMachine = StateMachine<any, any, any, any, any>;
392
+ export type AnyStateConfig = StateConfig<any, AnyEventObject>;
414
393
  export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent> {
415
394
  initial?: undefined;
416
395
  parallel?: false | undefined;
@@ -429,59 +408,66 @@ export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent ex
429
408
  */
430
409
  data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
431
410
  }
432
- export declare type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent>;
433
- export declare type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
434
- [K in TAction['type']]?: BaseDynamicActionObject<TContext, TEvent, TAction, any> | ActionFunction<TContext, TEvent, TAction extends {
411
+ export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent>;
412
+ export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
413
+ [K in TAction['type']]?: BaseDynamicActionObject<TContext, TEvent, TEvent, TAction, any> | ActionFunction<TContext, TEvent, TAction extends {
435
414
  type: K;
436
415
  } ? TAction : never>;
437
416
  };
438
- export declare type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
439
- export declare type DelayConfig<TContext extends MachineContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
440
- export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> {
417
+ export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
418
+ export type DelayConfig<TContext extends MachineContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
419
+ export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> {
441
420
  guards: Record<string, GuardPredicate<TContext, TEvent>>;
442
421
  actions: ActionFunctionMap<TContext, TEvent, TAction>;
443
- actors: Record<string, BehaviorCreator<TContext, TEvent> | AnyBehavior>;
422
+ actors: Record<string, AnyActorBehavior | {
423
+ src: AnyActorBehavior;
424
+ input: Mapper<TContext, TEvent, any> | any;
425
+ }>;
444
426
  delays: DelayFunctionMap<TContext, TEvent>;
445
- context: Partial<TContext> | ContextFactory<Partial<TContext>>;
446
427
  }
447
- declare type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>> = {
448
- [K in keyof TEventsCausingActions]?: BaseDynamicActionObject<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, any, // TODO: this should receive something like `Cast<Prop<TIndexedActions, K>, BaseActionObject>`, but at the moment builtin actions expect Resolved*Action here and this should be simplified somehow
449
- any> | ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedActions, K>, BaseActionObject>>;
428
+ type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
429
+ [K in keyof TEventsCausingActions]?: BaseDynamicActionObject<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, any, // TODO: this should receive something like `Cast<Prop<TIndexedActions, K>, ParameterizedObject>`, but at the moment builtin actions expect Resolved*Action here and this should be simplified somehow
430
+ any> | ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, ParameterizedObject, // TODO: when bringing back parametrized actions this should accept something like `Cast<Prop<TIndexedActions, K>, ParameterizedObject>`. At the moment we need to keep this type argument consistent with what is provided to the fake callable signature within `BaseDynamicActionObject`
431
+ Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>>;
450
432
  };
451
- declare type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
433
+ type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
452
434
  [K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
453
435
  };
454
- declare type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
436
+ type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
455
437
  [K in keyof TEventsCausingGuards]?: GuardPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
456
438
  };
457
- declare type MachineImplementationsActors<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActors'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
458
- [K in keyof TEventsCausingActors]?: BehaviorCreator<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActors[K]>, EventObject>> | AnyBehavior;
439
+ type MachineImplementationsActors<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActors'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
440
+ [K in keyof TEventsCausingActors]?: AnyActorBehavior | {
441
+ src: AnyActorBehavior;
442
+ input: Mapper<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActors[K]>, EventObject>, any> | any;
443
+ };
459
444
  };
460
- declare type MakeKeysRequired<T extends string> = {
445
+ type MakeKeysRequired<T extends string> = {
461
446
  [K in T]: unknown;
462
447
  };
463
- declare type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
448
+ type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
464
449
  [K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
465
450
  } : {};
466
- declare type GenerateActionsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
451
+ type GenerateActionsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
467
452
  actions?: MachineImplementationsActions<TContext, TResolvedTypesMeta>;
468
453
  };
469
- declare type GenerateDelaysImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
454
+ type GenerateDelaysImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
470
455
  delays?: MachineImplementationsDelays<TContext, TResolvedTypesMeta>;
471
456
  };
472
- declare type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
457
+ type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
473
458
  guards?: MachineImplementationsGuards<TContext, TResolvedTypesMeta>;
474
459
  };
475
- declare type GenerateActorsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actors', Prop<TMissingImplementations, 'actors'>, TRequireMissingImplementations> & {
460
+ type GenerateActorsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actors', Prop<TMissingImplementations, 'actors'>, TRequireMissingImplementations> & {
476
461
  actors?: MachineImplementationsActors<TContext, TResolvedTypesMeta>;
477
462
  };
478
- export declare type InternalMachineImplementations<TContext extends MachineContext, _TEvent extends EventObject, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = GenerateActionsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateActorsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations>;
479
- export declare type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TActorMap extends ActorMap = ActorMap, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TActorMap>>;
480
- declare type InitialContext<TContext extends MachineContext> = TContext | ContextFactory<TContext>;
481
- export declare type ContextFactory<TContext extends MachineContext> = (stuff: {
463
+ export type InternalMachineImplementations<TContext extends MachineContext, _TEvent extends EventObject, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = GenerateActionsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateActorsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations>;
464
+ export type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActorMap extends ActorMap = ActorMap, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TActorMap>>;
465
+ type InitialContext<TContext extends MachineContext> = TContext | ContextFactory<TContext>;
466
+ export type ContextFactory<TContext extends MachineContext> = ({ spawn, input }: {
482
467
  spawn: Spawner;
468
+ input: any;
483
469
  }) => TContext;
484
- export interface MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TActorMap extends ActorMap = ActorMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, TAction> {
470
+ export interface MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActorMap extends ActorMap = ActorMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, TAction> {
485
471
  /**
486
472
  * The initial context (extended state)
487
473
  */
@@ -497,7 +483,7 @@ export interface MachineConfig<TContext extends MachineContext, TEvent extends E
497
483
  schema?: MachineSchema<TContext, TEvent, TActorMap>;
498
484
  tsTypes?: TTypesMeta;
499
485
  }
500
- export declare type ActorMap = Record<string, {
486
+ export type ActorMap = Record<string, {
501
487
  data: any;
502
488
  }>;
503
489
  export interface MachineSchema<TContext extends MachineContext, TEvent extends EventObject, TActorMap extends ActorMap = ActorMap> {
@@ -517,10 +503,10 @@ export interface HistoryStateNode<TContext extends MachineContext> extends State
517
503
  history: 'shallow' | 'deep';
518
504
  target: string | undefined;
519
505
  }
520
- export declare type HistoryValue<TContext extends MachineContext, TEvent extends EventObject> = Record<string, Array<StateNode<TContext, TEvent>>>;
521
- export declare type AnyHistoryValue = HistoryValue<any, any>;
522
- 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;
523
- export declare type Transitions<TContext extends MachineContext, TEvent extends EventObject> = Array<TransitionDefinition<TContext, TEvent>>;
506
+ export type HistoryValue<TContext extends MachineContext, TEvent extends EventObject> = Record<string, Array<StateNode<TContext, TEvent>>>;
507
+ export type AnyHistoryValue = HistoryValue<any, any>;
508
+ export type StateFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = T extends AnyStateMachine ? ReturnType<T['transition']> : T extends (...args: any[]) => AnyStateMachine ? ReturnType<ReturnType<T>['transition']> : never;
509
+ export type Transitions<TContext extends MachineContext, TEvent extends EventObject> = Array<TransitionDefinition<TContext, TEvent>>;
524
510
  export declare enum ActionTypes {
525
511
  Stop = "xstate.stop",
526
512
  Raise = "xstate.raise",
@@ -540,10 +526,13 @@ export declare enum ActionTypes {
540
526
  Pure = "xstate.pure",
541
527
  Choose = "xstate.choose"
542
528
  }
543
- export interface RaiseActionObject<TEvent extends EventObject> extends BuiltInActionObject {
529
+ export interface RaiseActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> extends BaseActionObject {
544
530
  type: ActionTypes.Raise;
545
531
  params: {
532
+ event: TEvent;
546
533
  _event: SCXML.Event<TEvent>;
534
+ delay: RaiseActionOptions<TContext, TExpressionEvent>['delay'];
535
+ id: string | number;
547
536
  };
548
537
  }
549
538
  export interface DoneInvokeEvent<TData> extends EventObject {
@@ -574,13 +563,11 @@ export interface DoneEventObject extends EventObject {
574
563
  data?: any;
575
564
  toString(): string;
576
565
  }
577
- export declare type DoneEvent = DoneEventObject & string;
566
+ export type DoneEvent = DoneEventObject & string;
578
567
  export interface InvokeAction {
579
568
  type: ActionTypes.Invoke;
580
- src: InvokeSourceDefinition | ActorRef<any>;
569
+ src: string | ActorRef<any>;
581
570
  id: string;
582
- autoForward?: boolean;
583
- data?: any;
584
571
  exec?: undefined;
585
572
  meta: MetaObject | undefined;
586
573
  }
@@ -591,19 +578,17 @@ export interface DynamicInvokeActionObject<TContext extends MachineContext, TEve
591
578
  export interface InvokeActionObject extends BaseActionObject {
592
579
  type: ActionTypes.Invoke;
593
580
  params: {
594
- src: InvokeSourceDefinition | ActorRef<any>;
581
+ src: string | ActorRef<any>;
595
582
  id: string;
596
- autoForward?: boolean;
597
- data?: any;
598
583
  exec?: undefined;
599
584
  ref?: ActorRef<any>;
600
585
  meta: MetaObject | undefined;
601
586
  };
602
587
  }
603
- export interface DynamicStopActionObject<TContext extends MachineContext, TEvent extends EventObject> {
588
+ export interface DynamicStopActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
604
589
  type: ActionTypes.Stop;
605
590
  params: {
606
- actor: string | ActorRef<any> | Expr<TContext, TEvent, ActorRef<any> | string>;
591
+ actor: string | ActorRef<any> | Expr<TContext, TExpressionEvent, ActorRef<any> | string>;
607
592
  };
608
593
  }
609
594
  export interface StopActionObject {
@@ -612,11 +597,11 @@ export interface StopActionObject {
612
597
  actor: ActorRef<any>;
613
598
  };
614
599
  }
615
- export declare type DelayExpr<TContext extends MachineContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, number>;
616
- export declare type LogExpr<TContext extends MachineContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, any>;
617
- export interface DynamicLogAction<TContext extends MachineContext, TEvent extends EventObject> extends BaseDynamicActionObject<TContext, TEvent, LogActionObject, {
600
+ export type DelayExpr<TContext extends MachineContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, number>;
601
+ export type LogExpr<TContext extends MachineContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, any>;
602
+ export interface DynamicLogAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, LogActionObject, {
618
603
  label: string | undefined;
619
- expr: string | LogExpr<TContext, TEvent>;
604
+ expr: string | LogExpr<TContext, TExpressionEvent>;
620
605
  }> {
621
606
  type: ActionTypes.Log;
622
607
  }
@@ -638,25 +623,30 @@ export interface SendActionObject<TSentEvent extends EventObject = AnyEventObjec
638
623
  internal: boolean;
639
624
  };
640
625
  }
641
- export declare type Expr<TContext extends MachineContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent) => T;
642
- export declare type ExprWithMeta<TContext extends MachineContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent, meta: SCXMLEventMeta<TEvent>) => T;
643
- export declare type SendExpr<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = ExprWithMeta<TContext, TEvent, TSentEvent>;
626
+ export type Expr<TContext extends MachineContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent) => T;
627
+ export type ExprWithMeta<TContext extends MachineContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent, meta: StateMeta<TContext, TEvent>) => T;
628
+ export type SendExpr<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = ExprWithMeta<TContext, TEvent, TSentEvent>;
644
629
  export declare enum SpecialTargets {
645
630
  Parent = "#_parent",
646
631
  Internal = "#_internal"
647
632
  }
648
- export interface SendActionOptions<TContext extends MachineContext, TEvent extends EventObject> {
633
+ export interface SendActionOptions<TContext extends MachineContext, TEvent extends EventObject> extends RaiseActionOptions<TContext, TEvent> {
634
+ to?: string | ActorRef<any, any> | ExprWithMeta<TContext, TEvent, string | ActorRef<any, any>>;
635
+ }
636
+ export interface RaiseActionOptions<TContext extends MachineContext, TEvent extends EventObject> {
649
637
  id?: string | number;
650
638
  delay?: number | string | DelayExpr<TContext, TEvent>;
651
- to?: string | ExprWithMeta<TContext, TEvent, string | ActorRef<any> | undefined> | undefined;
639
+ }
640
+ export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent> {
641
+ event: TEvent | SendExpr<TContext, TExpressionEvent, TEvent>;
652
642
  }
653
643
  export interface SendActionParams<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = EventObject> extends SendActionOptions<TContext, TEvent> {
654
644
  event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>;
655
645
  }
656
- export interface DynamicCancelActionObject<TContext extends MachineContext, TEvent extends EventObject> {
646
+ export interface DynamicCancelActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
657
647
  type: ActionTypes.Cancel;
658
648
  params: {
659
- sendId: string | ExprWithMeta<TContext, TEvent, string>;
649
+ sendId: string | ExprWithMeta<TContext, TExpressionEvent, string>;
660
650
  };
661
651
  }
662
652
  export interface CancelActionObject extends BaseActionObject {
@@ -665,21 +655,21 @@ export interface CancelActionObject extends BaseActionObject {
665
655
  sendId: string;
666
656
  };
667
657
  }
668
- export declare type Assigner<TContext extends MachineContext, TEvent extends EventObject> = (context: TContext, event: TEvent, meta: AssignMeta<TContext, TEvent>) => Partial<TContext>;
669
- export declare type PartialAssigner<TContext extends MachineContext, TEvent extends EventObject, TKey extends keyof TContext> = (context: TContext, event: TEvent, meta: AssignMeta<TContext, TEvent>) => TContext[TKey];
670
- export declare type PropertyAssigner<TContext extends MachineContext, TEvent extends EventObject> = {
671
- [K in keyof TContext]?: PartialAssigner<TContext, TEvent, K> | TContext[K];
658
+ export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = (context: TContext, event: TExpressionEvent, meta: AssignMeta<TContext, TExpressionEvent, TEvent>) => Partial<TContext>;
659
+ export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TKey extends keyof TContext> = (context: TContext, event: TExpressionEvent, meta: AssignMeta<TContext, TExpressionEvent, TEvent>) => TContext[TKey];
660
+ export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = {
661
+ [K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TEvent, K> | TContext[K];
672
662
  };
673
- export declare type Mapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = (context: TContext, event: TEvent) => TParams;
674
- export declare type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
663
+ export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = (context: TContext, event: TEvent) => TParams;
664
+ export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
675
665
  [K in keyof TParams]?: ((context: TContext, event: TEvent) => TParams[K]) | TParams[K];
676
666
  };
677
667
  export interface AnyAssignAction extends BaseActionObject {
678
668
  type: ActionTypes.Assign;
679
669
  assignment: any;
680
670
  }
681
- export declare type DynamicAssignAction<TContext extends MachineContext, TEvent extends EventObject> = BaseDynamicActionObject<TContext, TEvent, AssignActionObject<TContext> | RaiseActionObject<TEvent>, {
682
- assignment: Assigner<TContext, TEvent> | PropertyAssigner<TContext, TEvent>;
671
+ export type DynamicAssignAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, AssignActionObject<TContext> | RaiseActionObject<TContext, TExpressionEvent>, {
672
+ assignment: Assigner<TContext, TExpressionEvent, TEvent> | PropertyAssigner<TContext, TExpressionEvent, TEvent>;
683
673
  }>;
684
674
  export interface AssignActionObject<TContext extends MachineContext> extends BaseActionObject {
685
675
  type: ActionTypes.Assign;
@@ -691,7 +681,7 @@ export interface AssignActionObject<TContext extends MachineContext> extends Bas
691
681
  export interface DynamicPureActionObject<TContext extends MachineContext, TEvent extends EventObject> {
692
682
  type: ActionTypes.Pure;
693
683
  params: {
694
- get: (context: TContext, event: TEvent) => SingleOrArray<BaseActionObject> | undefined;
684
+ get: (context: TContext, event: TEvent) => SingleOrArray<BaseActionObject | BaseActionObject['type']> | undefined;
695
685
  };
696
686
  }
697
687
  export interface PureActionObject extends BaseActionObject {
@@ -712,10 +702,11 @@ export interface ResolvedChooseAction extends BaseActionObject {
712
702
  actions: BaseActionObject[];
713
703
  };
714
704
  }
715
- export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
705
+ export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent>, 'target'> {
716
706
  target: Array<StateNode<TContext, TEvent>> | undefined;
717
707
  source: StateNode<TContext, TEvent>;
718
708
  actions: BaseActionObject[];
709
+ external: boolean;
719
710
  guard?: GuardDefinition<TContext, TEvent>;
720
711
  eventType: TEvent['type'] | '*';
721
712
  toJSON: () => {
@@ -727,12 +718,12 @@ export interface TransitionDefinition<TContext extends MachineContext, TEvent ex
727
718
  meta?: Record<string, any>;
728
719
  };
729
720
  }
730
- export declare type AnyTransitionDefinition = TransitionDefinition<any, any>;
721
+ export type AnyTransitionDefinition = TransitionDefinition<any, any>;
731
722
  export interface InitialTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
732
723
  target: Array<StateNode<TContext, TEvent>>;
733
724
  guard?: never;
734
725
  }
735
- export declare type TransitionDefinitionMap<TContext extends MachineContext, TEvent extends EventObject> = {
726
+ export type TransitionDefinitionMap<TContext extends MachineContext, TEvent extends EventObject> = {
736
727
  [K in TEvent['type'] | '*']: Array<TransitionDefinition<TContext, K extends TEvent['type'] ? Extract<TEvent, {
737
728
  type: K;
738
729
  }> : EventObject>>;
@@ -765,36 +756,11 @@ export interface Segment<TContext extends MachineContext, TEvent extends EventOb
765
756
  */
766
757
  event: TEvent;
767
758
  }
768
- export interface PathItem<TContext extends MachineContext, TEvent extends EventObject> {
769
- state: State<TContext, TEvent>;
770
- path: Array<Segment<TContext, TEvent>>;
771
- weight?: number;
772
- }
773
- export interface PathMap<TContext extends MachineContext, TEvent extends EventObject> {
774
- [key: string]: PathItem<TContext, TEvent>;
775
- }
776
- export interface PathsItem<TContext extends MachineContext, TEvent extends EventObject> {
777
- state: State<TContext, TEvent>;
778
- paths: Array<Array<Segment<TContext, TEvent>>>;
779
- }
780
- export interface PathsMap<TContext extends MachineContext, TEvent extends EventObject> {
781
- [key: string]: PathsItem<TContext, TEvent>;
782
- }
783
- export interface TransitionMap {
784
- state: StateValue | undefined;
785
- }
786
- export interface AdjacencyMap {
787
- [stateId: string]: Record<string, TransitionMap>;
788
- }
789
- export interface ValueAdjacencyMap<TContext extends MachineContext, TEvent extends EventObject> {
790
- [stateId: string]: Record<string, State<TContext, TEvent>>;
791
- }
792
- export interface SCXMLEventMeta<TEvent extends EventObject> {
793
- _event: SCXML.Event<TEvent>;
794
- }
795
759
  export interface StateMeta<TContext extends MachineContext, TEvent extends EventObject> {
796
760
  state: State<TContext, TEvent, any>;
797
761
  _event: SCXML.Event<TEvent>;
762
+ self: ActorRef<TEvent>;
763
+ system: ActorSystem<any>;
798
764
  }
799
765
  export interface StateLike<TContext extends MachineContext> {
800
766
  value: StateValue;
@@ -806,12 +772,11 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
806
772
  value: StateValue;
807
773
  context: TContext;
808
774
  _event: SCXML.Event<TEvent>;
809
- _sessionid: string | undefined;
810
775
  historyValue?: HistoryValue<TContext, TEvent>;
811
776
  actions?: BaseActionObject[];
812
777
  meta?: any;
813
778
  configuration?: Array<StateNode<TContext, TEvent>>;
814
- transitions: Array<TransitionDefinition<TContext, TEvent>>;
779
+ transitions?: Array<TransitionDefinition<TContext, TEvent>>;
815
780
  children: Record<string, ActorRef<any>>;
816
781
  done?: boolean;
817
782
  output?: any;
@@ -819,7 +784,7 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
819
784
  machine?: StateMachine<TContext, TEvent, any, any, any>;
820
785
  _internalQueue?: Array<SCXML.Event<TEvent>>;
821
786
  }
822
- export interface InterpreterOptions {
787
+ export interface InterpreterOptions<_TActorBehavior extends AnyActorBehavior> {
823
788
  /**
824
789
  * Whether state actions should be executed immediately upon transition. Defaults to `true`.
825
790
  */
@@ -845,15 +810,22 @@ export interface InterpreterOptions {
845
810
  * Default: `false`
846
811
  */
847
812
  devTools?: boolean | DevToolsAdapter;
813
+ sync?: boolean;
848
814
  /**
849
- * If `true`, events from the parent will be sent to this interpreter.
850
- *
851
- * Default: `false`
815
+ * The system ID to register this actor under
852
816
  */
853
- autoForward?: boolean;
854
- sync?: boolean;
817
+ systemId?: string;
818
+ /**
819
+ * The input data to pass to the actor.
820
+ */
821
+ input?: any;
822
+ state?: any;
823
+ /**
824
+ * The source definition.
825
+ */
826
+ src?: string;
855
827
  }
856
- export declare type AnyInterpreter = Interpreter<any>;
828
+ export type AnyInterpreter = Interpreter<any>;
857
829
  export declare namespace SCXML {
858
830
  interface Event<TEvent extends EventObject> {
859
831
  /**
@@ -916,7 +888,7 @@ export declare namespace SCXML {
916
888
  $$type: 'scxml';
917
889
  }
918
890
  }
919
- export declare type Observer<T> = {
891
+ export type Observer<T> = {
920
892
  next?: (value: T) => void;
921
893
  error?: (err: any) => void;
922
894
  complete?: () => void;
@@ -934,8 +906,8 @@ export interface Subscribable<T> extends InteropSubscribable<T> {
934
906
  subscribe(observer: Observer<T>): Subscription;
935
907
  subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
936
908
  }
937
- export declare type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any, any>;
938
- export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends any ? TEventType extends TEvent['type'] ? TEvent : never : never;
909
+ export type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | ActorBehavior<any, any>;
910
+ export type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends any ? TEventType extends TEvent['type'] ? TEvent : never : never;
939
911
  export interface BaseActorRef<TEvent extends EventObject> {
940
912
  send: (event: TEvent) => void;
941
913
  }
@@ -947,55 +919,90 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
947
919
  * The unique identifier for this actor relative to its parent.
948
920
  */
949
921
  id: string;
922
+ sessionId: string;
950
923
  send: (event: TEvent) => void;
951
924
  start?: () => void;
952
925
  getSnapshot: () => TSnapshot | undefined;
953
- stop?: () => void;
926
+ getPersistedState?: () => any;
927
+ stop: () => void;
954
928
  toJSON?: () => any;
955
929
  _parent?: ActorRef<any, any>;
930
+ system?: ActorSystem<any>;
956
931
  status: ActorStatus;
932
+ src?: string;
957
933
  }
958
- export declare type AnyActorRef = ActorRef<any, any>;
959
- export declare type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? ActorRef<TEvent, State<TContext, TEvent, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRef<{
934
+ export type AnyActorRef = ActorRef<any, any>;
935
+ export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? ActorRef<TEvent, State<TContext, TEvent, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRef<{
960
936
  type: string;
961
- }, U | undefined> : R extends Behavior<infer TEvent, infer TSnapshot> ? ActorRef<TEvent, TSnapshot> : never : never;
962
- export declare type DevToolsAdapter = (service: AnyInterpreter) => void;
963
- export declare type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? Interpreter<Behavior<TEvent, State<TContext, TEvent, TResolvedTypesMeta>, State<TContext, TEvent, TResolvedTypesMeta>>> : never;
964
- export declare type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
965
- export declare type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
966
- export declare type EventOfMachine<TMachine extends AnyStateMachine> = TMachine extends StateMachine<any, infer E, any, any, any> ? E : never;
967
- export interface ActorContext<TEvent extends EventObject, TSnapshot> {
937
+ }, U | undefined> : R extends ActorBehavior<infer TEvent, infer TSnapshot> ? ActorRef<TEvent, TSnapshot> : never : never;
938
+ export type DevToolsAdapter = (service: AnyInterpreter) => void;
939
+ export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? Interpreter<ActorBehavior<TEvent, State<TContext, TEvent, TResolvedTypesMeta>, State<TContext, TEvent, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TResolvedTypesMeta>>>> : never;
940
+ export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
941
+ export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
942
+ export type EventOfMachine<TMachine extends AnyStateMachine> = TMachine extends StateMachine<any, infer E, any, any, any> ? E : never;
943
+ export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
968
944
  self: ActorRef<TEvent, TSnapshot>;
969
945
  id: string;
970
946
  sessionId: string;
971
947
  logger: (...args: any[]) => void;
972
948
  defer: (fn: () => void) => void;
949
+ system: TSystem;
950
+ stopChild: (child: AnyActorRef) => void;
973
951
  }
974
- export interface Behavior<TEvent extends EventObject, TSnapshot = any, TInternalState = any> {
975
- transition: (state: TInternalState, message: TEvent | LifecycleSignal, ctx: ActorContext<TEvent, TSnapshot>) => TInternalState;
976
- getInitialState: (actorCtx: ActorContext<TEvent, TSnapshot>) => TInternalState;
977
- restoreState?: (restoredState: any, actorCtx: ActorContext<TEvent, TSnapshot>) => TInternalState;
952
+ export type AnyActorContext = ActorContext<any, any, any>;
953
+ export interface ActorBehavior<TEvent extends EventObject, TSnapshot = any, TInternalState = any,
954
+ /**
955
+ * Serialized internal state used for persistence & restoration
956
+ */
957
+ TPersisted = TInternalState, TSystem extends ActorSystem<any> = ActorSystem<any>> {
958
+ transition: (state: TInternalState, message: TEvent | LifecycleSignal, ctx: ActorContext<TEvent, TSnapshot, TSystem>) => TInternalState;
959
+ getInitialState: (actorCtx: ActorContext<TEvent, TSnapshot, any>, input: any) => TInternalState;
960
+ restoreState?: (persistedState: TPersisted, actorCtx: ActorContext<TEvent, TSnapshot>) => TInternalState;
978
961
  getSnapshot?: (state: TInternalState) => TSnapshot;
979
962
  getStatus?: (state: TInternalState) => {
980
963
  status: string;
981
964
  data?: any;
982
965
  };
983
- start?: (state: TInternalState, actorCtx: ActorContext<TEvent, TSnapshot>) => TInternalState;
984
- }
985
- export declare type AnyBehavior = Behavior<any, any, any>;
986
- export declare type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Interpreter<infer TBehavior> ? SnapshotFrom<TBehavior> : R extends Behavior<infer _, infer TSnapshot> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot> ? TSnapshot : never : never;
987
- export declare type EventFromBehavior<TBehavior extends Behavior<any, any>> = TBehavior extends Behavior<infer TEvent, infer _> ? TEvent : never;
988
- declare type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends State<infer _, infer TEvent, infer __> ? TEvent : R extends Interpreter<infer _, infer TEvent> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
989
- export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
990
- export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends State<infer TContext, infer _, infer __> ? TContext : R extends Interpreter<infer TBehavior> ? TBehavior extends StateMachine<infer TContext, infer _> ? TContext : never : never : never;
991
- export declare type InferEvent<E extends EventObject> = {
966
+ start?: (state: TInternalState, actorCtx: ActorContext<TEvent, TSnapshot>) => void;
967
+ /**
968
+ * @returns Persisted state
969
+ */
970
+ getPersistedState?: (state: TInternalState) => TPersisted;
971
+ }
972
+ export type AnyActorBehavior = ActorBehavior<any, any, any, any>;
973
+ export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Interpreter<infer TBehavior> ? SnapshotFrom<TBehavior> : R extends ActorBehavior<infer _, infer TSnapshot> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
974
+ export type EventFromBehavior<TBehavior extends ActorBehavior<any, any>> = TBehavior extends ActorBehavior<infer TEvent, infer _> ? TEvent : never;
975
+ export type PersistedStateFrom<TBehavior extends ActorBehavior<any, any>> = TBehavior extends ActorBehavior<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer TPersisted> ? TPersisted : never;
976
+ export type InternalStateFrom<TBehavior extends ActorBehavior<any, any>> = TBehavior extends ActorBehavior<infer _TEvent, infer _TSnapshot, infer TInternalState, infer _TPersisted> ? TInternalState : never;
977
+ type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends State<infer _, infer TEvent, infer __> ? TEvent : R extends Interpreter<infer _, infer TEvent> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
978
+ export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
979
+ export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends State<infer TContext, infer _, infer __> ? TContext : R extends Interpreter<infer TBehavior> ? TBehavior extends StateMachine<infer TContext, infer _> ? TContext : never : never : never;
980
+ export type InferEvent<E extends EventObject> = {
992
981
  [T in E['type']]: {
993
982
  type: T;
994
983
  } & Extract<E, {
995
984
  type: T;
996
985
  }>;
997
986
  }[E['type']];
998
- export declare type TODO = any;
999
- export declare type StateValueFrom<TMachine extends AnyStateMachine> = Parameters<StateFrom<TMachine>['matches']>[0];
1000
- export declare type StateFromMachine<TMachine extends AnyStateMachine> = TMachine['initialState'];
987
+ export type TODO = any;
988
+ export type StateValueFrom<TMachine extends AnyStateMachine> = Parameters<StateFrom<TMachine>['matches']>[0];
989
+ export type StateFromMachine<TMachine extends AnyStateMachine> = TMachine['initialState'];
990
+ export interface ActorSystemInfo {
991
+ actors: Record<string, AnyActorRef>;
992
+ }
993
+ export interface ActorSystem<T extends ActorSystemInfo> {
994
+ _bookId: () => string;
995
+ _register: (sessionId: string, actorRef: AnyActorRef) => string;
996
+ _unregister: (actorRef: AnyActorRef) => void;
997
+ _set: <K extends keyof T['actors']>(key: K, actorRef: T['actors'][K]) => void;
998
+ get: <K extends keyof T['actors']>(key: K) => T['actors'][K] | undefined;
999
+ }
1000
+ export type PersistedMachineState<TState extends AnyState> = Pick<TState, 'value' | 'output' | 'context' | '_event' | 'done' | 'historyValue'> & {
1001
+ children: {
1002
+ [K in keyof TState['children']]: {
1003
+ state: any;
1004
+ src?: string;
1005
+ };
1006
+ };
1007
+ };
1001
1008
  export {};