xstate 4.32.1 → 5.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/CHANGELOG.md +483 -0
  2. package/actions/ExecutableAction.ts +58 -0
  3. package/actions/dist/xstate-actions.cjs.d.ts +1 -0
  4. package/actions/dist/xstate-actions.cjs.dev.js +32 -0
  5. package/actions/dist/xstate-actions.cjs.js +7 -0
  6. package/actions/dist/xstate-actions.cjs.prod.js +32 -0
  7. package/actions/dist/xstate-actions.esm.js +2 -0
  8. package/actions/dynamicAction.ts +34 -0
  9. package/actions/package.json +4 -0
  10. package/actors/dist/xstate-actors.cjs.d.ts +1 -0
  11. package/actors/dist/xstate-actors.cjs.dev.js +21 -0
  12. package/actors/dist/xstate-actors.cjs.js +7 -0
  13. package/actors/dist/xstate-actors.cjs.prod.js +21 -0
  14. package/actors/dist/xstate-actors.esm.js +2 -0
  15. package/actors/package.json +4 -0
  16. package/dev/dist/xstate-dev.cjs.d.ts +1 -0
  17. package/dev/dist/xstate-dev.cjs.dev.js +11 -0
  18. package/dev/dist/xstate-dev.cjs.js +7 -0
  19. package/{lib/devTools.js → dev/dist/xstate-dev.cjs.prod.js} +17 -10
  20. package/dev/dist/xstate-dev.esm.js +1 -0
  21. package/dev/package.json +4 -0
  22. package/dist/Machine-9ce74c11.cjs.dev.js +755 -0
  23. package/dist/Machine-dca041dc.cjs.prod.js +749 -0
  24. package/dist/Machine-fb2f47f5.esm.js +751 -0
  25. package/dist/actions-6b86876d.cjs.dev.js +4815 -0
  26. package/dist/actions-70094c93.cjs.prod.js +4765 -0
  27. package/dist/actions-ff512f16.esm.js +4757 -0
  28. package/dist/declarations/actions/ExecutableAction.d.ts +23 -0
  29. package/dist/declarations/actions/dynamicAction.d.ts +3 -0
  30. package/dist/declarations/src/Machine.d.ts +4 -0
  31. package/dist/declarations/src/Mailbox.d.ts +12 -0
  32. package/dist/declarations/src/ObservableActorRef.d.ts +25 -0
  33. package/{lib → dist/declarations/src}/SimulatedClock.d.ts +0 -1
  34. package/dist/declarations/src/State.d.ts +104 -0
  35. package/dist/declarations/src/StateMachine.d.ts +112 -0
  36. package/dist/declarations/src/StateNode.d.ts +127 -0
  37. package/{es → dist/declarations/src}/actionTypes.d.ts +0 -3
  38. package/dist/declarations/src/actions/assign.d.ts +7 -0
  39. package/dist/declarations/src/actions/cancel.d.ts +10 -0
  40. package/dist/declarations/src/actions/choose.d.ts +3 -0
  41. package/dist/declarations/src/actions/invoke.d.ts +3 -0
  42. package/dist/declarations/src/actions/log.d.ts +11 -0
  43. package/dist/declarations/src/actions/pure.d.ts +3 -0
  44. package/dist/declarations/src/actions/raise.d.ts +9 -0
  45. package/dist/declarations/src/actions/send.d.ts +55 -0
  46. package/dist/declarations/src/actions/stop.d.ts +8 -0
  47. package/dist/declarations/src/actions.d.ts +44 -0
  48. package/dist/declarations/src/actors.d.ts +38 -0
  49. package/dist/declarations/src/constants.d.ts +5 -0
  50. package/{lib/devTools.d.ts → dist/declarations/src/dev/index.d.ts} +2 -2
  51. package/{es → dist/declarations/src}/environment.d.ts +0 -1
  52. package/dist/declarations/src/guards.d.ts +9 -0
  53. package/dist/declarations/src/index.d.ts +47 -0
  54. package/dist/declarations/src/interpreter.d.ts +147 -0
  55. package/{es → dist/declarations/src}/mapState.d.ts +0 -1
  56. package/dist/declarations/src/match.d.ts +5 -0
  57. package/dist/declarations/src/memo.d.ts +1 -0
  58. package/dist/declarations/src/model.d.ts +5 -0
  59. package/{lib → dist/declarations/src}/model.types.d.ts +6 -9
  60. package/dist/declarations/src/registry.d.ts +8 -0
  61. package/{es → dist/declarations/src}/schema.d.ts +0 -1
  62. package/dist/declarations/src/spawn.d.ts +2 -0
  63. package/dist/declarations/src/stateUtils.d.ts +85 -0
  64. package/{lib → dist/declarations/src}/typegenTypes.d.ts +16 -17
  65. package/dist/declarations/src/types.d.ts +1026 -0
  66. package/dist/declarations/src/utils.d.ts +56 -0
  67. package/{es/devTools.js → dist/index-20b364c4.esm.js} +18 -6
  68. package/dist/index-2a564d03.cjs.dev.js +64 -0
  69. package/dist/xstate.cjs.d.ts +1 -0
  70. package/dist/xstate.cjs.dev.js +217 -0
  71. package/dist/xstate.cjs.js +7 -0
  72. package/dist/xstate.cjs.prod.js +217 -0
  73. package/dist/xstate.esm.js +172 -0
  74. package/guards/dist/xstate-guards.cjs.d.ts +1 -0
  75. package/guards/dist/xstate-guards.cjs.dev.js +15 -0
  76. package/guards/dist/xstate-guards.cjs.js +7 -0
  77. package/guards/dist/xstate-guards.cjs.prod.js +15 -0
  78. package/guards/dist/xstate-guards.esm.js +2 -0
  79. package/guards/package.json +4 -0
  80. package/invoke/package.json +4 -0
  81. package/model/dist/xstate-model.cjs.d.ts +1 -0
  82. package/model/dist/xstate-model.cjs.dev.js +41 -0
  83. package/model/dist/xstate-model.cjs.js +7 -0
  84. package/model/dist/xstate-model.cjs.prod.js +41 -0
  85. package/model/dist/xstate-model.esm.js +37 -0
  86. package/model/package.json +4 -0
  87. package/package.json +21 -30
  88. package/dist/xstate.interpreter.js +0 -15
  89. package/dist/xstate.js +0 -15
  90. package/dist/xstate.web.js +0 -15
  91. package/es/Actor.d.ts +0 -25
  92. package/es/Actor.js +0 -99
  93. package/es/Machine.d.ts +0 -12
  94. package/es/Machine.js +0 -14
  95. package/es/SimulatedClock.d.ts +0 -17
  96. package/es/SimulatedClock.js +0 -81
  97. package/es/State.d.ts +0 -123
  98. package/es/State.js +0 -274
  99. package/es/StateNode.d.ts +0 -287
  100. package/es/StateNode.js +0 -1566
  101. package/es/_virtual/_tslib.js +0 -78
  102. package/es/actionTypes.js +0 -22
  103. package/es/actions.d.ts +0 -154
  104. package/es/actions.js +0 -520
  105. package/es/behaviors.d.ts +0 -37
  106. package/es/behaviors.js +0 -131
  107. package/es/constants.d.ts +0 -6
  108. package/es/constants.js +0 -6
  109. package/es/devTools.d.ts +0 -14
  110. package/es/each.d.ts +0 -4
  111. package/es/each.js +0 -13
  112. package/es/environment.js +0 -3
  113. package/es/index.d.ts +0 -22
  114. package/es/index.js +0 -23
  115. package/es/interpreter.d.ts +0 -209
  116. package/es/interpreter.js +0 -1402
  117. package/es/invoke.d.ts +0 -11
  118. package/es/invokeUtils.d.ts +0 -7
  119. package/es/invokeUtils.js +0 -40
  120. package/es/json.d.ts +0 -31
  121. package/es/json.js +0 -86
  122. package/es/mapState.js +0 -32
  123. package/es/match.d.ts +0 -9
  124. package/es/match.js +0 -34
  125. package/es/model.d.ts +0 -5
  126. package/es/model.js +0 -50
  127. package/es/model.types.d.ts +0 -56
  128. package/es/patterns.d.ts +0 -14
  129. package/es/patterns.js +0 -48
  130. package/es/registry.d.ts +0 -9
  131. package/es/registry.js +0 -19
  132. package/es/scheduler.d.ts +0 -17
  133. package/es/scheduler.js +0 -79
  134. package/es/schema.js +0 -6
  135. package/es/scxml.d.ts +0 -6
  136. package/es/serviceScope.d.ts +0 -4
  137. package/es/serviceScope.js +0 -16
  138. package/es/stateUtils.d.ts +0 -17
  139. package/es/stateUtils.js +0 -259
  140. package/es/typegenTypes.d.ts +0 -133
  141. package/es/types.d.ts +0 -1031
  142. package/es/types.js +0 -33
  143. package/es/utils.d.ts +0 -72
  144. package/es/utils.js +0 -626
  145. package/es/waitFor.d.ts +0 -32
  146. package/es/waitFor.js +0 -71
  147. package/lib/Actor.d.ts +0 -25
  148. package/lib/Actor.js +0 -108
  149. package/lib/Machine.d.ts +0 -12
  150. package/lib/Machine.js +0 -19
  151. package/lib/SimulatedClock.js +0 -85
  152. package/lib/State.d.ts +0 -123
  153. package/lib/State.js +0 -282
  154. package/lib/StateNode.d.ts +0 -287
  155. package/lib/StateNode.js +0 -1570
  156. package/lib/_virtual/_tslib.js +0 -85
  157. package/lib/actionTypes.d.ts +0 -20
  158. package/lib/actionTypes.js +0 -43
  159. package/lib/actions.d.ts +0 -154
  160. package/lib/actions.js +0 -552
  161. package/lib/behaviors.d.ts +0 -37
  162. package/lib/behaviors.js +0 -137
  163. package/lib/constants.d.ts +0 -6
  164. package/lib/constants.js +0 -13
  165. package/lib/each.d.ts +0 -4
  166. package/lib/each.js +0 -17
  167. package/lib/environment.d.ts +0 -2
  168. package/lib/environment.js +0 -7
  169. package/lib/index.d.ts +0 -22
  170. package/lib/index.js +0 -60
  171. package/lib/interpreter.d.ts +0 -209
  172. package/lib/interpreter.js +0 -1408
  173. package/lib/invoke.d.ts +0 -11
  174. package/lib/invoke.js +0 -20
  175. package/lib/invokeUtils.d.ts +0 -7
  176. package/lib/invokeUtils.js +0 -45
  177. package/lib/json.d.ts +0 -31
  178. package/lib/json.js +0 -94
  179. package/lib/mapState.d.ts +0 -4
  180. package/lib/mapState.js +0 -36
  181. package/lib/match.d.ts +0 -9
  182. package/lib/match.js +0 -38
  183. package/lib/model.d.ts +0 -5
  184. package/lib/model.js +0 -54
  185. package/lib/model.types.js +0 -2
  186. package/lib/patterns.d.ts +0 -14
  187. package/lib/patterns.js +0 -53
  188. package/lib/registry.d.ts +0 -9
  189. package/lib/registry.js +0 -23
  190. package/lib/scheduler.d.ts +0 -17
  191. package/lib/scheduler.js +0 -83
  192. package/lib/schema.d.ts +0 -3
  193. package/lib/schema.js +0 -11
  194. package/lib/scxml.d.ts +0 -6
  195. package/lib/scxml.js +0 -350
  196. package/lib/serviceScope.d.ts +0 -4
  197. package/lib/serviceScope.js +0 -21
  198. package/lib/stateUtils.d.ts +0 -17
  199. package/lib/stateUtils.js +0 -273
  200. package/lib/typegenTypes.js +0 -2
  201. package/lib/types.d.ts +0 -1031
  202. package/lib/types.js +0 -35
  203. package/lib/utils.d.ts +0 -72
  204. package/lib/utils.js +0 -673
  205. package/lib/waitFor.d.ts +0 -32
  206. package/lib/waitFor.js +0 -75
package/es/types.d.ts DELETED
@@ -1,1031 +0,0 @@
1
- import { Clock, Interpreter } from './interpreter';
2
- import { Model } from './model.types';
3
- import { State } from './State';
4
- import { StateNode } from './StateNode';
5
- import { MarkAllImplementationsAsProvided, TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, AreAllImplementationsAssumedToBeProvided, TypegenEnabled } from './typegenTypes';
6
- export declare type AnyFunction = (...args: any[]) => any;
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']]: T extends any ? (K extends T['type'] ? T : never) : never;
19
- };
20
- 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;
21
- export declare type IsAny<T> = Equals<T, any>;
22
- export declare type Cast<A, B> = A extends B ? A : B;
23
- export declare type NoInfer<T> = [T][T extends any ? 0 : any];
24
- export declare type LowInfer<T> = T & {};
25
- export declare type EventType = string;
26
- export declare type ActionType = string;
27
- export declare type MetaObject = Record<string, any>;
28
- /**
29
- * The full definition of an event, with a string `type`.
30
- */
31
- export interface EventObject {
32
- /**
33
- * The type of event that is sent.
34
- */
35
- type: string;
36
- }
37
- export interface AnyEventObject extends EventObject {
38
- [key: string]: any;
39
- }
40
- export interface BaseActionObject {
41
- /**
42
- * The type of action that is executed.
43
- */
44
- type: string;
45
- [other: string]: any;
46
- }
47
- /**
48
- * The full definition of an action, with a string `type` and an
49
- * `exec` implementation function.
50
- */
51
- export interface ActionObject<TContext, TEvent extends EventObject> extends BaseActionObject {
52
- /**
53
- * The implementation for executing the action.
54
- */
55
- exec?: ActionFunction<TContext, TEvent> | undefined;
56
- }
57
- export declare type DefaultContext = Record<string, any> | undefined;
58
- export declare type EventData = Record<string, any> & {
59
- type?: never;
60
- };
61
- /**
62
- * The specified string event types or the specified event objects.
63
- */
64
- export declare type Event<TEvent extends EventObject> = TEvent['type'] | TEvent;
65
- export interface ActionMeta<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> extends StateMeta<TContext, TEvent> {
66
- action: TAction;
67
- _event: SCXML.Event<TEvent>;
68
- }
69
- export interface AssignMeta<TContext, TEvent extends EventObject> {
70
- state?: State<TContext, TEvent>;
71
- action: AssignAction<TContext, TEvent>;
72
- _event: SCXML.Event<TEvent>;
73
- }
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'];
77
- export interface ChooseCondition<TContext, TEvent extends EventObject> {
78
- cond?: Condition<TContext, TEvent>;
79
- actions: Actions<TContext, TEvent>;
80
- }
81
- export declare type Action<TContext, TEvent extends EventObject> = ActionType | ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent>;
82
- /**
83
- * Extracts action objects that have no extra properties.
84
- */
85
- declare type SimpleActionsOf<T extends BaseActionObject> = ActionObject<any, any> extends T ? T : ExtractWithSimpleSupport<T>;
86
- /**
87
- * Events that do not require payload
88
- */
89
- export declare type SimpleEventsOf<TEvent extends EventObject> = ExtractWithSimpleSupport<TEvent>;
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>;
91
- export declare type BaseActions<TContext, TEvent extends EventObject, TAction extends BaseActionObject> = SingleOrArray<BaseAction<TContext, TEvent, TAction>>;
92
- export declare type Actions<TContext, TEvent extends EventObject> = SingleOrArray<Action<TContext, TEvent>>;
93
- export declare type StateKey = string | AnyState;
94
- export interface StateValueMap {
95
- [key: string]: StateValue;
96
- }
97
- /**
98
- * The string or object representing the state value relative to the parent state node.
99
- *
100
- * - For a child atomic state node, this is a string, e.g., `"pending"`.
101
- * - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
102
- */
103
- export declare type StateValue = string | StateValueMap;
104
- export interface HistoryValue {
105
- states: Record<string, HistoryValue | undefined>;
106
- current: StateValue | undefined;
107
- }
108
- export declare type ConditionPredicate<TContext, TEvent extends EventObject> = (context: TContext, event: TEvent, meta: GuardMeta<TContext, TEvent>) => boolean;
109
- export declare type DefaultGuardType = 'xstate.guard';
110
- export interface GuardPredicate<TContext, TEvent extends EventObject> {
111
- type: DefaultGuardType;
112
- name: string | undefined;
113
- predicate: ConditionPredicate<TContext, TEvent>;
114
- }
115
- export declare type Guard<TContext, TEvent extends EventObject> = GuardPredicate<TContext, TEvent> | (Record<string, any> & {
116
- type: string;
117
- });
118
- export interface GuardMeta<TContext, TEvent extends EventObject> extends StateMeta<TContext, TEvent> {
119
- cond: Guard<TContext, TEvent>;
120
- }
121
- export declare type Condition<TContext, TEvent extends EventObject> = string | ConditionPredicate<TContext, TEvent> | Guard<TContext, TEvent>;
122
- export declare type TransitionTarget<TContext, TEvent extends EventObject> = SingleOrArray<string | StateNode<TContext, any, TEvent>>;
123
- export declare type TransitionTargets<TContext> = Array<string | StateNode<TContext, any>>;
124
- export interface TransitionConfig<TContext, TEvent extends EventObject> {
125
- cond?: Condition<TContext, TEvent>;
126
- actions?: Actions<TContext, TEvent>;
127
- in?: StateValue;
128
- internal?: boolean;
129
- target?: TransitionTarget<TContext, TEvent> | undefined;
130
- meta?: Record<string, any>;
131
- description?: string;
132
- }
133
- export interface TargetTransitionConfig<TContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
134
- target: TransitionTarget<TContext, TEvent>;
135
- }
136
- export declare type ConditionalTransitionConfig<TContext, TEvent extends EventObject = EventObject> = Array<TransitionConfig<TContext, TEvent>>;
137
- export declare type Transition<TContext, TEvent extends EventObject = EventObject> = string | TransitionConfig<TContext, TEvent> | ConditionalTransitionConfig<TContext, TEvent>;
138
- export declare type DisposeActivityFunction = () => void;
139
- export declare type ActivityConfig<TContext, TEvent extends EventObject> = (ctx: TContext, activity: ActivityDefinition<TContext, TEvent>) => DisposeActivityFunction | void;
140
- export declare type Activity<TContext, TEvent extends EventObject> = string | ActivityDefinition<TContext, TEvent>;
141
- export interface ActivityDefinition<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
142
- id: string;
143
- type: string;
144
- }
145
- export declare type Sender<TEvent extends EventObject> = (event: Event<TEvent>) => void;
146
- declare type ExcludeType<A> = {
147
- [K in Exclude<keyof A, 'type'>]: A[K];
148
- };
149
- declare type ExtractExtraParameters<A, T> = A extends {
150
- type: T;
151
- } ? ExcludeType<A> : never;
152
- declare type ExtractWithSimpleSupport<T extends {
153
- type: string;
154
- }> = T extends any ? {
155
- type: T['type'];
156
- } extends T ? T : never : never;
157
- declare type NeverIfEmpty<T> = {} extends T ? never : T;
158
- export interface PayloadSender<TEvent extends EventObject> {
159
- /**
160
- * Send an event object or just the event type, if the event has no other payload
161
- */
162
- (event: TEvent | ExtractWithSimpleSupport<TEvent>['type']): void;
163
- /**
164
- * Send an event type and its payload
165
- */
166
- <K extends TEvent['type']>(eventType: K, payload: NeverIfEmpty<ExtractExtraParameters<TEvent, K>>): void;
167
- }
168
- export declare type Receiver<TEvent extends EventObject> = (listener: {
169
- bivarianceHack(event: TEvent): void;
170
- }['bivarianceHack']) => void;
171
- export declare type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (callback: Sender<TSentEvent>, onReceive: Receiver<TEvent>) => (() => void) | Promise<any> | void;
172
- export interface InvokeMeta {
173
- data: any;
174
- src: InvokeSourceDefinition;
175
- meta?: MetaObject;
176
- }
177
- /**
178
- * Returns either a Promises or a callback handler (for streams of events) given the
179
- * machine's current `context` and `event` that invoked the service.
180
- *
181
- * For Promises, the only events emitted to the parent will be:
182
- * - `done.invoke.<id>` with the `data` containing the resolved payload when the promise resolves, or:
183
- * - `error.platform.<id>` with the `data` containing the caught error, and `src` containing the service `id`.
184
- *
185
- * For callback handlers, the `callback` will be provided, which will send events to the parent service.
186
- *
187
- * @param context The current machine `context`
188
- * @param event The event that invoked the service
189
- */
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>;
192
- export interface InvokeDefinition<TContext, TEvent extends EventObject> extends ActivityDefinition<TContext, TEvent> {
193
- /**
194
- * The source of the machine to be invoked, or the machine itself.
195
- */
196
- src: string | InvokeSourceDefinition;
197
- /**
198
- * If `true`, events sent to the parent service will be forwarded to the invoked service.
199
- *
200
- * Default: `false`
201
- */
202
- autoForward?: boolean;
203
- /**
204
- * @deprecated
205
- *
206
- * Use `autoForward` property instead of `forward`. Support for `forward` will get removed in the future.
207
- */
208
- forward?: boolean;
209
- /**
210
- * Data from the parent machine's context to set as the (partial or full) context
211
- * for the invoked child machine.
212
- *
213
- * Data should be mapped to match the child machine's context shape.
214
- */
215
- data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
216
- meta?: MetaObject;
217
- }
218
- export interface Delay {
219
- id: string;
220
- /**
221
- * The time to delay the event, in milliseconds.
222
- */
223
- delay: number;
224
- }
225
- export declare type DelayedTransitions<TContext, TEvent extends EventObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent>>> | Array<TransitionConfig<TContext, TEvent> & {
226
- delay: number | string | Expr<TContext, TEvent, number>;
227
- }>;
228
- export declare type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
229
- export declare type SingleOrArray<T> = T[] | T;
230
- export declare type StateNodesConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> = {
231
- [K in keyof TStateSchema['states']]: StateNode<TContext, TStateSchema['states'][K], TEvent>;
232
- };
233
- export declare type StatesConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
234
- [K in keyof TStateSchema['states']]: StateNodeConfig<TContext, TStateSchema['states'][K], TEvent, TAction>;
235
- };
236
- export declare type StatesDefinition<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> = {
237
- [K in keyof TStateSchema['states']]: StateNodeDefinition<TContext, TStateSchema['states'][K], TEvent>;
238
- };
239
- export declare type TransitionConfigTarget<TContext, TEvent extends EventObject> = string | undefined | StateNode<TContext, any, TEvent>;
240
- export declare type TransitionConfigOrTarget<TContext, TEvent extends EventObject> = SingleOrArray<TransitionConfigTarget<TContext, TEvent> | TransitionConfig<TContext, TEvent>>;
241
- export declare type TransitionsConfigMap<TContext, TEvent extends EventObject> = {
242
- [K in TEvent['type'] | '' | '*']?: K extends '' | '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>>;
243
- };
244
- declare type TransitionsConfigArray<TContext, TEvent extends EventObject> = Array<(TEvent extends EventObject ? TransitionConfig<TContext, TEvent> & {
245
- event: TEvent['type'];
246
- } : never) | (TransitionConfig<TContext, TEvent> & {
247
- event: '';
248
- }) | (TransitionConfig<TContext, TEvent> & {
249
- event: '*';
250
- })>;
251
- export declare type TransitionsConfig<TContext, TEvent extends EventObject> = TransitionsConfigMap<TContext, TEvent> | TransitionsConfigArray<TContext, TEvent>;
252
- export interface InvokeSourceDefinition {
253
- [key: string]: any;
254
- type: string;
255
- }
256
- export interface InvokeConfig<TContext, TEvent extends EventObject> {
257
- /**
258
- * The unique identifier for the invoked machine. If not specified, this
259
- * will be the machine's own `id`, or the URL (from `src`).
260
- */
261
- id?: string;
262
- /**
263
- * The source of the machine to be invoked, or the machine itself.
264
- */
265
- src: string | InvokeSourceDefinition | AnyStateMachine | InvokeCreator<TContext, TEvent, any>;
266
- /**
267
- * If `true`, events sent to the parent service will be forwarded to the invoked service.
268
- *
269
- * Default: `false`
270
- */
271
- autoForward?: boolean;
272
- /**
273
- * @deprecated
274
- *
275
- * Use `autoForward` property instead of `forward`. Support for `forward` will get removed in the future.
276
- */
277
- forward?: boolean;
278
- /**
279
- * Data from the parent machine's context to set as the (partial or full) context
280
- * for the invoked child machine.
281
- *
282
- * Data should be mapped to match the child machine's context shape.
283
- */
284
- data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
285
- /**
286
- * The transition to take upon the invoked child machine reaching its final top-level state.
287
- */
288
- onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
289
- /**
290
- * The transition to take upon the invoked child machine sending an error event.
291
- */
292
- onError?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
293
- /**
294
- * Meta data related to this invocation
295
- */
296
- meta?: MetaObject;
297
- }
298
- export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> {
299
- /**
300
- * The relative key of the state node, which represents its location in the overall state value.
301
- * This is automatically determined by the configuration shape via the key where it was defined.
302
- */
303
- key?: string;
304
- /**
305
- * The initial state node key.
306
- */
307
- initial?: keyof TStateSchema['states'] | undefined;
308
- /**
309
- * @deprecated
310
- */
311
- parallel?: boolean | undefined;
312
- /**
313
- * The type of this state node:
314
- *
315
- * - `'atomic'` - no child state nodes
316
- * - `'compound'` - nested child state nodes (XOR)
317
- * - `'parallel'` - orthogonal nested child state nodes (AND)
318
- * - `'history'` - history state node
319
- * - `'final'` - final state node
320
- */
321
- type?: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
322
- /**
323
- * Indicates whether the state node is a history state node, and what
324
- * type of history:
325
- * shallow, deep, true (shallow), false (none), undefined (none)
326
- */
327
- history?: 'shallow' | 'deep' | boolean | undefined;
328
- /**
329
- * The mapping of state node keys to their state node configurations (recursive).
330
- */
331
- states?: StatesConfig<TContext, TStateSchema, TEvent, TAction> | undefined;
332
- /**
333
- * The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
334
- */
335
- invoke?: SingleOrArray<InvokeConfig<TContext, TEvent> | AnyStateMachine>;
336
- /**
337
- * The mapping of event types to their potential transition(s).
338
- */
339
- on?: TransitionsConfig<TContext, TEvent>;
340
- /**
341
- * The action(s) to be executed upon entering the state node.
342
- *
343
- * @deprecated Use `entry` instead.
344
- */
345
- onEntry?: Actions<TContext, TEvent>;
346
- /**
347
- * The action(s) to be executed upon entering the state node.
348
- */
349
- entry?: BaseActions<TContext, TEvent, TAction>;
350
- /**
351
- * The action(s) to be executed upon exiting the state node.
352
- *
353
- * @deprecated Use `exit` instead.
354
- */
355
- onExit?: Actions<TContext, TEvent>;
356
- /**
357
- * The action(s) to be executed upon exiting the state node.
358
- */
359
- exit?: BaseActions<TContext, TEvent, TAction>;
360
- /**
361
- * The potential transition(s) to be taken upon reaching a final child state node.
362
- *
363
- * This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
364
- */
365
- onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject>> | undefined;
366
- /**
367
- * The mapping (or array) of delays (in milliseconds) to their potential transition(s).
368
- * The delayed transitions are taken after the specified delay in an interpreter.
369
- */
370
- after?: DelayedTransitions<TContext, TEvent>;
371
- /**
372
- * An eventless transition that is always taken when this state node is active.
373
- * Equivalent to a transition specified as an empty `''`' string in the `on` property.
374
- */
375
- always?: TransitionConfigOrTarget<TContext, TEvent>;
376
- /**
377
- * The activities to be started upon entering the state node,
378
- * and stopped upon exiting the state node.
379
- *
380
- * @deprecated Use `invoke` instead.
381
- */
382
- activities?: SingleOrArray<Activity<TContext, TEvent>>;
383
- /**
384
- * @private
385
- */
386
- parent?: StateNode<TContext, any, TEvent>;
387
- strict?: boolean | undefined;
388
- /**
389
- * The meta data associated with this state node, which will be returned in State instances.
390
- */
391
- meta?: TStateSchema extends {
392
- meta: infer D;
393
- } ? D : any;
394
- /**
395
- * The data sent with the "done.state._id_" event if this is a final state node.
396
- *
397
- * The data will be evaluated with the current `context` and placed on the `.data` property
398
- * of the event.
399
- */
400
- data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
401
- /**
402
- * The unique ID of the state node, which can be referenced as a transition target via the
403
- * `#id` syntax.
404
- */
405
- id?: string | undefined;
406
- /**
407
- * The string delimiter for serializing the path to a string. The default is "."
408
- */
409
- delimiter?: string;
410
- /**
411
- * The order this state node appears. Corresponds to the implicit SCXML document order.
412
- */
413
- order?: number;
414
- /**
415
- * The tags for this state node, which are accumulated into the `state.tags` property.
416
- */
417
- tags?: SingleOrArray<string>;
418
- /**
419
- * Whether actions should be called in order.
420
- * When `false` (default), `assign(...)` actions are prioritized before other actions.
421
- *
422
- * @default false
423
- */
424
- preserveActionOrder?: boolean;
425
- /**
426
- * A text description of the state node
427
- */
428
- description?: string;
429
- }
430
- export interface StateNodeDefinition<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> {
431
- id: string;
432
- version: string | undefined;
433
- key: string;
434
- context: TContext;
435
- type: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
436
- initial: StateNodeConfig<TContext, TStateSchema, TEvent>['initial'];
437
- history: boolean | 'shallow' | 'deep' | undefined;
438
- states: StatesDefinition<TContext, TStateSchema, TEvent>;
439
- on: TransitionDefinitionMap<TContext, TEvent>;
440
- transitions: Array<TransitionDefinition<TContext, TEvent>>;
441
- entry: Array<ActionObject<TContext, TEvent>>;
442
- exit: Array<ActionObject<TContext, TEvent>>;
443
- /**
444
- * @deprecated
445
- */
446
- activities: Array<ActivityDefinition<TContext, TEvent>>;
447
- meta: any;
448
- order: number;
449
- data?: FinalStateNodeConfig<TContext, TEvent>['data'];
450
- invoke: Array<InvokeDefinition<TContext, TEvent>>;
451
- description?: string;
452
- tags: string[];
453
- }
454
- export declare type AnyStateNodeDefinition = StateNodeDefinition<any, any, any>;
455
- export declare type AnyState = State<any, any, any, any, any>;
456
- export declare type AnyStateMachine = StateMachine<any, any, any, any, any, any, any>;
457
- export interface AtomicStateNodeConfig<TContext, TEvent extends EventObject> extends StateNodeConfig<TContext, StateSchema, TEvent> {
458
- initial?: undefined;
459
- parallel?: false | undefined;
460
- states?: undefined;
461
- onDone?: undefined;
462
- }
463
- export interface HistoryStateNodeConfig<TContext, TEvent extends EventObject> extends AtomicStateNodeConfig<TContext, TEvent> {
464
- history: 'shallow' | 'deep' | true;
465
- target: StateValue | undefined;
466
- }
467
- export interface FinalStateNodeConfig<TContext, TEvent extends EventObject> extends AtomicStateNodeConfig<TContext, TEvent> {
468
- type: 'final';
469
- /**
470
- * The data to be sent with the "done.state.<id>" event. The data can be
471
- * static or dynamic (based on assigners).
472
- */
473
- data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
474
- }
475
- export declare type SimpleOrStateNodeConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TStateSchema, TEvent>;
476
- export declare type ActionFunctionMap<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
477
- [K in TAction['type']]?: ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent, TAction extends {
478
- type: K;
479
- } ? TAction : never>;
480
- };
481
- export declare type DelayFunctionMap<TContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
482
- export declare type ServiceConfig<TContext, TEvent extends EventObject = AnyEventObject> = string | AnyStateMachine | InvokeCreator<TContext, TEvent>;
483
- export declare type DelayConfig<TContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
484
- declare type MachineOptionsActions<TContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>> = {
485
- [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>>;
486
- };
487
- declare type MachineOptionsDelays<TContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
488
- [K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
489
- };
490
- declare type MachineOptionsGuards<TContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
491
- [K in keyof TEventsCausingGuards]?: ConditionPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
492
- };
493
- declare type MachineOptionsServices<TContext, TResolvedTypesMeta, TEventsCausingServices = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingServices'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
494
- [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>>;
495
- };
496
- declare type MakeKeysRequired<T extends string> = {
497
- [K in T]: unknown;
498
- };
499
- declare type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
500
- [K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
501
- } : {};
502
- declare type GenerateActionsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
503
- actions?: MachineOptionsActions<TContext, TResolvedTypesMeta>;
504
- };
505
- declare type GenerateDelaysConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
506
- delays?: MachineOptionsDelays<TContext, TResolvedTypesMeta>;
507
- };
508
- declare type GenerateGuardsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
509
- guards?: MachineOptionsGuards<TContext, TResolvedTypesMeta>;
510
- };
511
- declare type GenerateServicesConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'services', Prop<TMissingImplementations, 'services'>, TRequireMissingImplementations> & {
512
- services?: MachineOptionsServices<TContext, TResolvedTypesMeta>;
513
- };
514
- export declare type InternalMachineOptions<TContext, TEvent extends EventObject, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = GenerateActionsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateServicesConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & {
515
- /**
516
- * @deprecated Use `services` instead.
517
- */
518
- activities?: Record<string, ActivityConfig<TContext, TEvent>>;
519
- };
520
- 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>>;
521
- export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<NoInfer<TContext>, TStateSchema, NoInfer<TEvent>, TAction> {
522
- /**
523
- * The initial context (extended state)
524
- */
525
- context?: LowInfer<TContext | (() => TContext)>;
526
- /**
527
- * The machine's own version.
528
- */
529
- version?: string;
530
- schema?: MachineSchema<TContext, TEvent, TServiceMap>;
531
- tsTypes?: TTypesMeta;
532
- }
533
- export declare type ServiceMap = Record<string, {
534
- data: any;
535
- }>;
536
- export interface MachineSchema<TContext, TEvent extends EventObject, TServiceMap extends ServiceMap = ServiceMap> {
537
- context?: TContext;
538
- events?: TEvent;
539
- actions?: {
540
- type: string;
541
- [key: string]: any;
542
- };
543
- guards?: {
544
- type: string;
545
- [key: string]: any;
546
- };
547
- services?: TServiceMap;
548
- }
549
- export interface StandardMachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> extends StateNodeConfig<TContext, TStateSchema, TEvent> {
550
- }
551
- export interface ParallelMachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> extends StateNodeConfig<TContext, TStateSchema, TEvent> {
552
- initial?: undefined;
553
- type?: 'parallel';
554
- }
555
- export interface EntryExitEffectMap<TContext, TEvent extends EventObject> {
556
- entry: Array<ActionObject<TContext, TEvent>>;
557
- exit: Array<ActionObject<TContext, TEvent>>;
558
- }
559
- export interface HistoryStateNode<TContext> extends StateNode<TContext> {
560
- history: 'shallow' | 'deep';
561
- target: StateValue | undefined;
562
- }
563
- /** @ts-ignore TS complains about withConfig & withContext not being compatible here when extending StateNode */
564
- export interface StateMachine<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TTypestate extends Typestate<TContext> = {
565
- value: any;
566
- context: TContext;
567
- }, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TResolvedTypesMeta = ResolveTypegenMeta<TypegenDisabled, NoInfer<TEvent>, TAction, TServiceMap>> extends StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta> {
568
- id: string;
569
- states: StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>['states'];
570
- withConfig(options: InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, true>, context?: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>;
571
- withContext(context: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, TResolvedTypesMeta>;
572
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
573
- __TContext: TContext;
574
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
575
- __TStateSchema: TStateSchema;
576
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
577
- __TEvent: TEvent;
578
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
579
- __TTypestate: TTypestate;
580
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
581
- __TAction: TAction;
582
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
583
- __TServiceMap: TServiceMap;
584
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
585
- __TResolvedTypesMeta: TResolvedTypesMeta;
586
- }
587
- 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;
588
- export interface ActionMap<TContext, TEvent extends EventObject> {
589
- onEntry: Array<Action<TContext, TEvent>>;
590
- actions: Array<Action<TContext, TEvent>>;
591
- onExit: Array<Action<TContext, TEvent>>;
592
- }
593
- export interface EntryExitStates<TContext> {
594
- entry: Set<StateNode<TContext>>;
595
- exit: Set<StateNode<TContext>>;
596
- }
597
- export interface EntryExitStateArrays<TContext> {
598
- entry: Array<StateNode<TContext>>;
599
- exit: Array<StateNode<TContext>>;
600
- }
601
- export interface ActivityMap {
602
- [activityKey: string]: ActivityDefinition<any, any> | false;
603
- }
604
- export interface StateTransition<TContext, TEvent extends EventObject> {
605
- transitions: Array<TransitionDefinition<TContext, TEvent>>;
606
- configuration: Array<StateNode<TContext, any, TEvent, any, any, any>>;
607
- entrySet: Array<StateNode<TContext, any, TEvent, any, any, any>>;
608
- exitSet: Array<StateNode<TContext, any, TEvent, any, any, any>>;
609
- /**
610
- * The source state that preceded the transition.
611
- */
612
- source: State<TContext, any, any, any, any> | undefined;
613
- actions: Array<ActionObject<TContext, TEvent>>;
614
- }
615
- export interface TransitionData<TContext, TEvent extends EventObject> {
616
- value: StateValue | undefined;
617
- actions: ActionMap<TContext, TEvent>;
618
- activities?: ActivityMap;
619
- }
620
- export declare enum ActionTypes {
621
- Start = "xstate.start",
622
- Stop = "xstate.stop",
623
- Raise = "xstate.raise",
624
- Send = "xstate.send",
625
- Cancel = "xstate.cancel",
626
- NullEvent = "",
627
- Assign = "xstate.assign",
628
- After = "xstate.after",
629
- DoneState = "done.state",
630
- DoneInvoke = "done.invoke",
631
- Log = "xstate.log",
632
- Init = "xstate.init",
633
- Invoke = "xstate.invoke",
634
- ErrorExecution = "error.execution",
635
- ErrorCommunication = "error.communication",
636
- ErrorPlatform = "error.platform",
637
- ErrorCustom = "xstate.error",
638
- Update = "xstate.update",
639
- Pure = "xstate.pure",
640
- Choose = "xstate.choose"
641
- }
642
- export interface RaiseAction<TEvent extends EventObject> {
643
- type: ActionTypes.Raise;
644
- event: TEvent['type'];
645
- }
646
- export interface RaiseActionObject<TEvent extends EventObject> {
647
- type: ActionTypes.Raise;
648
- _event: SCXML.Event<TEvent>;
649
- }
650
- export interface DoneInvokeEvent<TData> extends EventObject {
651
- data: TData;
652
- }
653
- export interface ErrorExecutionEvent extends EventObject {
654
- src: string;
655
- type: ActionTypes.ErrorExecution;
656
- data: any;
657
- }
658
- export interface ErrorPlatformEvent extends EventObject {
659
- data: any;
660
- }
661
- export interface DoneEventObject extends EventObject {
662
- data?: any;
663
- toString(): string;
664
- }
665
- export interface UpdateObject extends EventObject {
666
- id: string | number;
667
- state: AnyState;
668
- }
669
- export declare type DoneEvent = DoneEventObject & string;
670
- export interface NullEvent {
671
- type: ActionTypes.NullEvent;
672
- }
673
- export interface ActivityActionObject<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
674
- type: ActionTypes.Start | ActionTypes.Stop;
675
- activity: ActivityDefinition<TContext, TEvent> | undefined;
676
- exec: ActionFunction<TContext, TEvent> | undefined;
677
- }
678
- export interface InvokeActionObject<TContext, TEvent extends EventObject> extends ActivityActionObject<TContext, TEvent> {
679
- activity: InvokeDefinition<TContext, TEvent>;
680
- }
681
- export declare type DelayExpr<TContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, number>;
682
- export declare type LogExpr<TContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, any>;
683
- export interface LogAction<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
684
- label: string | undefined;
685
- expr: string | LogExpr<TContext, TEvent>;
686
- }
687
- export interface LogActionObject<TContext, TEvent extends EventObject> extends LogAction<TContext, TEvent> {
688
- value: any;
689
- }
690
- export interface SendAction<TContext, TEvent extends EventObject, TSentEvent extends EventObject> extends ActionObject<TContext, TEvent> {
691
- to: string | number | ActorRef<any> | ExprWithMeta<TContext, TEvent, string | number | ActorRef<any>> | undefined;
692
- event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>;
693
- delay?: number | string | DelayExpr<TContext, TEvent>;
694
- id: string | number;
695
- }
696
- export interface SendActionObject<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> extends SendAction<TContext, TEvent, TSentEvent> {
697
- to: string | number | ActorRef<any> | undefined;
698
- _event: SCXML.Event<TSentEvent>;
699
- event: TSentEvent;
700
- delay?: number;
701
- id: string | number;
702
- }
703
- export interface StopAction<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
704
- type: ActionTypes.Stop;
705
- activity: string | {
706
- id: string;
707
- } | Expr<TContext, TEvent, string | {
708
- id: string;
709
- }>;
710
- }
711
- export interface StopActionObject {
712
- type: ActionTypes.Stop;
713
- activity: {
714
- id: string;
715
- };
716
- }
717
- export declare type Expr<TContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent) => T;
718
- export declare type ExprWithMeta<TContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent, meta: SCXMLEventMeta<TEvent>) => T;
719
- export declare type SendExpr<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = ExprWithMeta<TContext, TEvent, TSentEvent>;
720
- export declare enum SpecialTargets {
721
- Parent = "#_parent",
722
- Internal = "#_internal"
723
- }
724
- export interface SendActionOptions<TContext, TEvent extends EventObject> {
725
- id?: string | number;
726
- delay?: number | string | DelayExpr<TContext, TEvent>;
727
- to?: string | ExprWithMeta<TContext, TEvent, string | number | ActorRef<any>>;
728
- }
729
- export interface CancelAction extends ActionObject<any, any> {
730
- sendId: string | number;
731
- }
732
- export declare type Assigner<TContext, TEvent extends EventObject> = (context: TContext, event: TEvent, meta: AssignMeta<TContext, TEvent>) => Partial<TContext>;
733
- export declare type PartialAssigner<TContext, TEvent extends EventObject, TKey extends keyof TContext> = (context: TContext, event: TEvent, meta: AssignMeta<TContext, TEvent>) => TContext[TKey];
734
- export declare type PropertyAssigner<TContext, TEvent extends EventObject> = {
735
- [K in keyof TContext]?: PartialAssigner<TContext, TEvent, K> | TContext[K];
736
- };
737
- export declare type Mapper<TContext, TEvent extends EventObject, TParams extends {}> = (context: TContext, event: TEvent) => TParams;
738
- export declare type PropertyMapper<TContext, TEvent extends EventObject, TParams extends {}> = {
739
- [K in keyof TParams]?: ((context: TContext, event: TEvent) => TParams[K]) | TParams[K];
740
- };
741
- export interface AnyAssignAction<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
742
- type: ActionTypes.Assign;
743
- assignment: any;
744
- }
745
- export interface AssignAction<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
746
- type: ActionTypes.Assign;
747
- assignment: Assigner<TContext, TEvent> | PropertyAssigner<TContext, TEvent>;
748
- }
749
- export interface PureAction<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
750
- type: ActionTypes.Pure;
751
- get: (context: TContext, event: TEvent) => SingleOrArray<ActionObject<TContext, TEvent>> | undefined;
752
- }
753
- export interface ChooseAction<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
754
- type: ActionTypes.Choose;
755
- conds: Array<ChooseCondition<TContext, TEvent>>;
756
- }
757
- export interface TransitionDefinition<TContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
758
- target: Array<StateNode<TContext, any, TEvent>> | undefined;
759
- source: StateNode<TContext, any, TEvent>;
760
- actions: Array<ActionObject<TContext, TEvent>>;
761
- cond?: Guard<TContext, TEvent>;
762
- eventType: TEvent['type'] | NullEvent['type'] | '*';
763
- toJSON: () => {
764
- target: string[] | undefined;
765
- source: string;
766
- actions: Array<ActionObject<TContext, TEvent>>;
767
- cond?: Guard<TContext, TEvent>;
768
- eventType: TEvent['type'] | NullEvent['type'] | '*';
769
- meta?: Record<string, any>;
770
- };
771
- }
772
- export declare type TransitionDefinitionMap<TContext, TEvent extends EventObject> = {
773
- [K in TEvent['type'] | NullEvent['type'] | '*']: Array<TransitionDefinition<TContext, K extends TEvent['type'] ? Extract<TEvent, {
774
- type: K;
775
- }> : EventObject>>;
776
- };
777
- export interface DelayedTransitionDefinition<TContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
778
- delay: number | string | DelayExpr<TContext, TEvent>;
779
- }
780
- export interface Edge<TContext, TEvent extends EventObject, TEventType extends TEvent['type'] = string> {
781
- event: TEventType;
782
- source: StateNode<TContext, any, TEvent>;
783
- target: StateNode<TContext, any, TEvent>;
784
- cond?: Condition<TContext, TEvent & {
785
- type: TEventType;
786
- }>;
787
- actions: Array<Action<TContext, TEvent>>;
788
- meta?: MetaObject;
789
- transition: TransitionDefinition<TContext, TEvent>;
790
- }
791
- export interface NodesAndEdges<TContext, TEvent extends EventObject> {
792
- nodes: StateNode[];
793
- edges: Array<Edge<TContext, TEvent, TEvent['type']>>;
794
- }
795
- export interface Segment<TContext, TEvent extends EventObject> {
796
- /**
797
- * From state.
798
- */
799
- state: State<TContext, TEvent>;
800
- /**
801
- * Event from state.
802
- */
803
- event: TEvent;
804
- }
805
- export interface PathItem<TContext, TEvent extends EventObject> {
806
- state: State<TContext, TEvent>;
807
- path: Array<Segment<TContext, TEvent>>;
808
- weight?: number;
809
- }
810
- export interface PathMap<TContext, TEvent extends EventObject> {
811
- [key: string]: PathItem<TContext, TEvent>;
812
- }
813
- export interface PathsItem<TContext, TEvent extends EventObject> {
814
- state: State<TContext, TEvent>;
815
- paths: Array<Array<Segment<TContext, TEvent>>>;
816
- }
817
- export interface PathsMap<TContext, TEvent extends EventObject> {
818
- [key: string]: PathsItem<TContext, TEvent>;
819
- }
820
- export interface TransitionMap {
821
- state: StateValue | undefined;
822
- }
823
- export interface AdjacencyMap {
824
- [stateId: string]: Record<string, TransitionMap>;
825
- }
826
- export interface ValueAdjacencyMap<TContext, TEvent extends EventObject> {
827
- [stateId: string]: Record<string, State<TContext, TEvent>>;
828
- }
829
- export interface SCXMLEventMeta<TEvent extends EventObject> {
830
- _event: SCXML.Event<TEvent>;
831
- }
832
- export interface StateMeta<TContext, TEvent extends EventObject> {
833
- state: State<TContext, TEvent, any, any, any>;
834
- _event: SCXML.Event<TEvent>;
835
- }
836
- export interface Typestate<TContext> {
837
- value: StateValue;
838
- context: TContext;
839
- }
840
- export interface StateLike<TContext> {
841
- value: StateValue;
842
- context: TContext;
843
- event: EventObject;
844
- _event: SCXML.Event<EventObject>;
845
- }
846
- export interface StateConfig<TContext, TEvent extends EventObject> {
847
- value: StateValue;
848
- context: TContext;
849
- _event: SCXML.Event<TEvent>;
850
- _sessionid: string | null;
851
- historyValue?: HistoryValue | undefined;
852
- history?: State<TContext, TEvent, any, any, any>;
853
- actions?: Array<ActionObject<TContext, TEvent>>;
854
- /**
855
- * @deprecated
856
- */
857
- activities?: ActivityMap;
858
- meta?: any;
859
- events?: TEvent[];
860
- configuration: Array<StateNode<TContext, any, TEvent>>;
861
- transitions: Array<TransitionDefinition<TContext, TEvent>>;
862
- children: Record<string, ActorRef<any>>;
863
- done?: boolean;
864
- tags?: Set<string>;
865
- machine?: StateMachine<TContext, any, TEvent, any, any, any, any>;
866
- }
867
- export declare type AnyStateConfig = StateConfig<any, AnyEventObject>;
868
- export interface StateSchema<TC = any> {
869
- meta?: any;
870
- context?: Partial<TC>;
871
- states?: {
872
- [key: string]: StateSchema<TC>;
873
- };
874
- }
875
- export interface InterpreterOptions {
876
- /**
877
- * Whether state actions should be executed immediately upon transition. Defaults to `true`.
878
- */
879
- execute?: boolean;
880
- clock?: Clock;
881
- logger?: (...args: any[]) => void;
882
- parent?: AnyInterpreter;
883
- /**
884
- * If `true`, defers processing of sent events until the service
885
- * is initialized (`.start()`). Otherwise, an error will be thrown
886
- * for events sent to an uninitialized service.
887
- *
888
- * Default: `true`
889
- */
890
- deferEvents?: boolean;
891
- /**
892
- * The custom `id` for referencing this service.
893
- */
894
- id?: string;
895
- /**
896
- * If `true`, states and events will be logged to Redux DevTools.
897
- *
898
- * Default: `false`
899
- */
900
- devTools?: boolean | object;
901
- }
902
- export declare namespace SCXML {
903
- interface Event<TEvent extends EventObject> {
904
- /**
905
- * This is a character string giving the name of the event.
906
- * The SCXML Processor must set the name field to the name of this event.
907
- * It is what is matched against the 'event' attribute of <transition>.
908
- * Note that transitions can do additional tests by using the value of this field
909
- * inside boolean expressions in the 'cond' attribute.
910
- */
911
- name: string;
912
- /**
913
- * This field describes the event type.
914
- * The SCXML Processor must set it to: "platform" (for events raised by the platform itself, such as error events),
915
- * "internal" (for events raised by <raise> and <send> with target '_internal')
916
- * or "external" (for all other events).
917
- */
918
- type: 'platform' | 'internal' | 'external';
919
- /**
920
- * If the sending entity has specified a value for this, the Processor must set this field to that value
921
- * (see C Event I/O Processors for details).
922
- * Otherwise, in the case of error events triggered by a failed attempt to send an event,
923
- * the Processor must set this field to the send id of the triggering <send> element.
924
- * Otherwise it must leave it blank.
925
- */
926
- sendid?: string;
927
- /**
928
- * This is a URI, equivalent to the 'target' attribute on the <send> element.
929
- * For external events, the SCXML Processor should set this field to a value which,
930
- * when used as the value of 'target', will allow the receiver of the event to <send>
931
- * a response back to the originating entity via the Event I/O Processor specified in 'origintype'.
932
- * For internal and platform events, the Processor must leave this field blank.
933
- */
934
- origin?: string;
935
- /**
936
- * This is equivalent to the 'type' field on the <send> element.
937
- * For external events, the SCXML Processor should set this field to a value which,
938
- * when used as the value of 'type', will allow the receiver of the event to <send>
939
- * a response back to the originating entity at the URI specified by 'origin'.
940
- * For internal and platform events, the Processor must leave this field blank.
941
- */
942
- origintype?: string;
943
- /**
944
- * If this event is generated from an invoked child process, the SCXML Processor
945
- * must set this field to the invoke id of the invocation that triggered the child process.
946
- * Otherwise it must leave it blank.
947
- */
948
- invokeid?: string;
949
- /**
950
- * This field contains whatever data the sending entity chose to include in this event.
951
- * The receiving SCXML Processor should reformat this data to match its data model,
952
- * but must not otherwise modify it.
953
- *
954
- * If the conversion is not possible, the Processor must leave the field blank
955
- * and must place an error 'error.execution' in the internal event queue.
956
- */
957
- data: TEvent;
958
- /**
959
- * @private
960
- */
961
- $$type: 'scxml';
962
- }
963
- }
964
- export interface Observer<T> {
965
- next: (value: T) => void;
966
- error: (err: any) => void;
967
- complete: () => void;
968
- }
969
- export interface Subscription {
970
- unsubscribe(): void;
971
- }
972
- export interface InteropObservable<T> {
973
- [Symbol.observable]: () => InteropSubscribable<T>;
974
- }
975
- export interface InteropSubscribable<T> {
976
- subscribe(observer: Observer<T>): Subscription;
977
- }
978
- export interface Subscribable<T> extends InteropSubscribable<T> {
979
- subscribe(observer: Observer<T>): Subscription;
980
- subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
981
- }
982
- export declare type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
983
- export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends any ? TEventType extends TEvent['type'] ? TEvent : never : never;
984
- export interface BaseActorRef<TEvent extends EventObject> {
985
- send: (event: TEvent) => void;
986
- }
987
- export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Subscribable<TEmitted>, InteropObservable<TEmitted> {
988
- send: Sender<TEvent>;
989
- id: string;
990
- getSnapshot: () => TEmitted | undefined;
991
- stop?: () => void;
992
- toJSON?: () => any;
993
- }
994
- export declare type AnyActorRef = ActorRef<any, any>;
995
- /**
996
- * @deprecated Use `ActorRef` instead.
997
- */
998
- export declare type SpawnedActorRef<TEvent extends EventObject, TEmitted = any> = ActorRef<TEvent, TEmitted>;
999
- export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext>, TResolvedTypesMeta = TypegenDisabled> = ActorRef<TEvent, State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>> & {
1000
- /**
1001
- * @deprecated Use `.getSnapshot()` instead.
1002
- */
1003
- state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>;
1004
- };
1005
- export declare type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, any, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta> : R extends Promise<infer U> ? ActorRef<never, U> : R extends Behavior<infer TEvent, infer TEmitted> ? ActorRef<TEvent, TEmitted> : never : never;
1006
- export declare type AnyInterpreter = Interpreter<any, any, any, any, any>;
1007
- export declare type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta> : never;
1008
- 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;
1009
- export declare type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
1010
- export interface ActorContext<TEvent extends EventObject, TEmitted> {
1011
- parent?: ActorRef<any, any>;
1012
- self: ActorRef<TEvent, TEmitted>;
1013
- id: string;
1014
- observers: Set<Observer<TEmitted>>;
1015
- }
1016
- export interface Behavior<TEvent extends EventObject, TEmitted = any> {
1017
- transition: (state: TEmitted, event: TEvent, actorCtx: ActorContext<TEvent, TEmitted>) => TEmitted;
1018
- initialState: TEmitted;
1019
- start?: (actorCtx: ActorContext<TEvent, TEmitted>) => TEmitted;
1020
- }
1021
- export declare type EmittedFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends Interpreter<infer _, infer __, infer ___, infer ____, infer _____> ? R['initialState'] : R extends ActorRef<infer _, infer TEmitted> ? TEmitted : R extends Behavior<infer _, infer TEmitted> ? TEmitted : R extends ActorContext<infer _, infer TEmitted> ? TEmitted : never : never;
1022
- declare type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer __, infer TEvent, infer ___, infer ____, infer _____, infer ______> ? TEvent : R extends Model<infer _, infer TEvent, infer __, infer ___> ? TEvent : R extends State<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends Interpreter<infer _, infer __, infer TEvent, infer ___, infer ____> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
1023
- export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
1024
- export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____, infer _____, infer ______> ? TContext : R extends Model<infer TContext, infer _, infer __, infer ___> ? TContext : R extends State<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends Interpreter<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : never : never;
1025
- declare type Matches<TypegenEnabledArg, TypegenDisabledArg> = {
1026
- (stateValue: TypegenEnabledArg): any;
1027
- (stateValue: TypegenDisabledArg): any;
1028
- };
1029
- export declare type StateValueFrom<TMachine extends AnyStateMachine> = StateFrom<TMachine>['matches'] extends Matches<infer TypegenEnabledArg, infer TypegenDisabledArg> ? TMachine['__TResolvedTypesMeta'] extends TypegenEnabled ? TypegenEnabledArg : TypegenDisabledArg : never;
1030
- export {};
1031
- //# sourceMappingURL=types.d.ts.map