xstate 5.0.0-beta.22 → 5.0.0-beta.24
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.
- package/actions/dist/xstate-actions.cjs.js +1 -1
- package/actions/dist/xstate-actions.development.cjs.js +1 -1
- package/actions/dist/xstate-actions.development.esm.js +1 -1
- package/actions/dist/xstate-actions.esm.js +1 -1
- package/actions/dist/xstate-actions.umd.min.js +1 -1
- package/actions/dist/xstate-actions.umd.min.js.map +1 -1
- package/actors/dist/xstate-actors.cjs.js +1 -1
- package/actors/dist/xstate-actors.development.cjs.js +1 -1
- package/actors/dist/xstate-actors.development.esm.js +1 -1
- package/actors/dist/xstate-actors.esm.js +1 -1
- package/actors/dist/xstate-actors.umd.min.js.map +1 -1
- package/dist/{actions-d4305983.development.esm.js → actions-194e6dcc.development.esm.js} +100 -144
- package/dist/{actions-4b70fc8d.development.cjs.js → actions-43f7d40e.development.cjs.js} +99 -144
- package/dist/{actions-8f2e997e.cjs.js → actions-6a8cda73.cjs.js} +95 -148
- package/dist/{actions-fb7384f8.esm.js → actions-7b182232.esm.js} +96 -148
- package/dist/declarations/src/Machine.d.ts +2 -2
- package/dist/declarations/src/State.d.ts +5 -5
- package/dist/declarations/src/StateMachine.d.ts +27 -19
- package/dist/declarations/src/StateNode.d.ts +9 -9
- package/dist/declarations/src/actions/assign.d.ts +6 -6
- package/dist/declarations/src/actions/cancel.d.ts +7 -7
- package/dist/declarations/src/actions/choose.d.ts +4 -10
- package/dist/declarations/src/actions/log.d.ts +7 -7
- package/dist/declarations/src/actions/pure.d.ts +6 -17
- package/dist/declarations/src/actions/raise.d.ts +3 -3
- package/dist/declarations/src/actions/send.d.ts +22 -22
- package/dist/declarations/src/actions/stop.d.ts +7 -7
- package/dist/declarations/src/guards.d.ts +17 -8
- package/dist/declarations/src/interpreter.d.ts +1 -1
- package/dist/declarations/src/stateUtils.d.ts +12 -12
- package/dist/declarations/src/typegenTypes.d.ts +6 -2
- package/dist/declarations/src/types.d.ts +130 -192
- package/dist/declarations/src/utils.d.ts +8 -8
- package/dist/xstate.cjs.js +10 -7
- package/dist/xstate.development.cjs.js +10 -7
- package/dist/xstate.development.esm.js +11 -8
- package/dist/xstate.esm.js +11 -8
- package/dist/xstate.umd.min.js +1 -1
- package/dist/xstate.umd.min.js.map +1 -1
- package/guards/dist/xstate-guards.cjs.js +1 -2
- package/guards/dist/xstate-guards.cjs.mjs +1 -2
- package/guards/dist/xstate-guards.development.cjs.js +1 -2
- package/guards/dist/xstate-guards.development.cjs.mjs +1 -2
- package/guards/dist/xstate-guards.development.esm.js +1 -1
- package/guards/dist/xstate-guards.esm.js +1 -1
- package/guards/dist/xstate-guards.umd.min.js +1 -1
- package/guards/dist/xstate-guards.umd.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ import type { ActorStatus, Clock, Actor } from "./interpreter.js";
|
|
|
4
4
|
import type { StateMachine } from "./StateMachine.js";
|
|
5
5
|
import { TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, MarkAllImplementationsAsProvided, AreAllImplementationsAssumedToBeProvided } from "./typegenTypes.js";
|
|
6
6
|
import { PromiseActorLogic } from "./actors/promise.js";
|
|
7
|
+
import { Guard, GuardPredicate, UnknownGuard } from "./guards.js";
|
|
7
8
|
/**
|
|
8
9
|
* `T | unknown` reduces to `unknown` and that can be problematic when it comes to contextual typing.
|
|
9
10
|
* It especially is a problem when the union has a function member, like here:
|
|
@@ -36,8 +37,6 @@ export type IsAny<T> = Equals<T, any>;
|
|
|
36
37
|
export type Cast<A, B> = A extends B ? A : B;
|
|
37
38
|
export type NoInfer<T> = [T][T extends any ? 0 : any];
|
|
38
39
|
export type LowInfer<T> = T & {};
|
|
39
|
-
export type EventType = string;
|
|
40
|
-
export type ActionType = string;
|
|
41
40
|
export type MetaObject = Record<string, any>;
|
|
42
41
|
export type Lazy<T> = () => T;
|
|
43
42
|
export type MaybeLazy<T> = T | Lazy<T>;
|
|
@@ -55,19 +54,19 @@ export interface AnyEventObject extends EventObject {
|
|
|
55
54
|
}
|
|
56
55
|
export interface ParameterizedObject {
|
|
57
56
|
type: string;
|
|
58
|
-
params?: Record<string,
|
|
57
|
+
params?: Record<string, unknown>;
|
|
59
58
|
}
|
|
60
|
-
export interface UnifiedArg<TContext extends MachineContext,
|
|
59
|
+
export interface UnifiedArg<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
61
60
|
context: TContext;
|
|
62
|
-
event:
|
|
63
|
-
self: ActorRef<
|
|
61
|
+
event: TExpressionEvent;
|
|
62
|
+
self: ActorRef<TExpressionEvent>;
|
|
64
63
|
system: ActorSystem<any>;
|
|
65
64
|
}
|
|
66
65
|
export type MachineContext = Record<string, any>;
|
|
67
|
-
export interface ActionArgs<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject
|
|
66
|
+
export interface ActionArgs<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject | undefined> extends UnifiedArg<TContext, TEvent> {
|
|
68
67
|
action: TAction;
|
|
69
68
|
}
|
|
70
|
-
export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer
|
|
69
|
+
export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer TInput> ? TInput : never;
|
|
71
70
|
export type OutputFrom<T extends AnyActorLogic> = T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer _TInput, infer TOutput> ? TOutput : never;
|
|
72
71
|
export type Spawner = <T extends AnyActorLogic | string>(// TODO: read string from machine logic keys
|
|
73
72
|
logic: T, options?: Partial<{
|
|
@@ -75,19 +74,24 @@ logic: T, options?: Partial<{
|
|
|
75
74
|
systemId?: string;
|
|
76
75
|
input: T extends AnyActorLogic ? InputFrom<T> : any;
|
|
77
76
|
}>) => ActorRefFrom<T>;
|
|
78
|
-
export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject> extends ActionArgs<TContext, TExpressionEvent> {
|
|
77
|
+
export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> extends ActionArgs<TContext, TExpressionEvent, TExpressionAction> {
|
|
79
78
|
spawn: Spawner;
|
|
80
79
|
}
|
|
81
|
-
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject,
|
|
82
|
-
(args: ActionArgs<TContext, TExpressionEvent,
|
|
80
|
+
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject> = {
|
|
81
|
+
(args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>): void;
|
|
83
82
|
_out_TEvent?: TEvent;
|
|
83
|
+
_out_TAction?: TAction;
|
|
84
84
|
};
|
|
85
|
-
export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> {
|
|
86
|
-
guard?:
|
|
87
|
-
actions: Actions<TContext, TExpressionEvent, TEvent>;
|
|
88
|
-
}
|
|
89
|
-
export type
|
|
90
|
-
|
|
85
|
+
export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject, TExpressionGuard extends ParameterizedObject | undefined = ParameterizedObject | undefined, TGuard extends ParameterizedObject = ParameterizedObject> {
|
|
86
|
+
guard?: Guard<TContext, TExpressionEvent, TExpressionGuard, TGuard>;
|
|
87
|
+
actions: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction>;
|
|
88
|
+
}
|
|
89
|
+
export type NoRequiredParams<T extends ParameterizedObject> = T extends any ? {
|
|
90
|
+
type: T['type'];
|
|
91
|
+
} extends T ? T['type'] : never : never;
|
|
92
|
+
export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject> = NoRequiredParams<TAction> | TAction | ActionFunction<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction>;
|
|
93
|
+
export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject | undefined, ParameterizedObject>;
|
|
94
|
+
export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction>>;
|
|
91
95
|
export type StateKey = string | AnyState;
|
|
92
96
|
export interface StateValueMap {
|
|
93
97
|
[key: string]: StateValue;
|
|
@@ -99,70 +103,24 @@ export interface StateValueMap {
|
|
|
99
103
|
* - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
|
|
100
104
|
*/
|
|
101
105
|
export type StateValue = string | StateValueMap;
|
|
102
|
-
export type GuardPredicate<TContext extends MachineContext, TEvent extends EventObject> = (args: {
|
|
103
|
-
context: TContext;
|
|
104
|
-
event: TEvent;
|
|
105
|
-
} & GuardArgs<TContext, TEvent>) => boolean;
|
|
106
|
-
export interface DefaultGuardObject<TContext extends MachineContext, TEvent extends EventObject> extends ParameterizedObject {
|
|
107
|
-
/**
|
|
108
|
-
* Nested guards
|
|
109
|
-
*/
|
|
110
|
-
children?: Array<GuardObject<TContext, TEvent>>;
|
|
111
|
-
predicate?: GuardPredicate<TContext, TEvent>;
|
|
112
|
-
}
|
|
113
|
-
export type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, event: TEvent, state: State<TContext, TEvent, TODO>) => boolean;
|
|
114
|
-
export interface GuardArgs<TContext extends MachineContext, TEvent extends EventObject> {
|
|
115
|
-
state: State<TContext, TEvent, TODO>;
|
|
116
|
-
guard: GuardDefinition<TContext, TEvent>;
|
|
117
|
-
evaluate: GuardEvaluator<TContext, TEvent>;
|
|
118
|
-
}
|
|
119
|
-
export type GuardConfig<TContext extends MachineContext, TEvent extends EventObject> = string | GuardPredicate<TContext, TEvent> | GuardObject<TContext, TEvent>;
|
|
120
|
-
export type GuardObject<TContext extends MachineContext, TEvent extends EventObject> = BooleanGuardObject<TContext, TEvent> | DefaultGuardObject<TContext, TEvent>;
|
|
121
|
-
export interface GuardDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
122
|
-
type: string;
|
|
123
|
-
children?: Array<GuardDefinition<TContext, TEvent>>;
|
|
124
|
-
predicate?: GuardPredicate<TContext, TEvent>;
|
|
125
|
-
params: {
|
|
126
|
-
[key: string]: any;
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
export interface BooleanGuardObject<TContext extends MachineContext, TEvent extends EventObject> extends ParameterizedObject {
|
|
130
|
-
type: 'xstate.boolean';
|
|
131
|
-
children: Array<GuardConfig<TContext, TEvent>>;
|
|
132
|
-
params: {
|
|
133
|
-
op: 'and' | 'or' | 'not';
|
|
134
|
-
};
|
|
135
|
-
predicate: undefined;
|
|
136
|
-
}
|
|
137
|
-
export interface BooleanGuardDefinition<TContext extends MachineContext, TEvent extends EventObject> extends GuardDefinition<TContext, TEvent> {
|
|
138
|
-
type: 'xstate.boolean';
|
|
139
|
-
params: {
|
|
140
|
-
op: 'and' | 'or' | 'not';
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
106
|
export type TransitionTarget = SingleOrArray<string>;
|
|
144
|
-
export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject
|
|
145
|
-
guard?:
|
|
146
|
-
actions?: Actions<TContext, TExpressionEvent, TEvent>;
|
|
107
|
+
export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> {
|
|
108
|
+
guard?: Guard<TContext, TExpressionEvent, undefined, TGuard>;
|
|
109
|
+
actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction>;
|
|
147
110
|
reenter?: boolean;
|
|
148
111
|
target?: TransitionTarget | undefined;
|
|
149
112
|
meta?: Record<string, any>;
|
|
150
113
|
description?: string;
|
|
151
114
|
}
|
|
152
|
-
export interface
|
|
115
|
+
export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> extends TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard> {
|
|
153
116
|
target: TransitionTarget;
|
|
154
117
|
}
|
|
155
|
-
export type
|
|
156
|
-
export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
|
|
157
|
-
guard?: never;
|
|
158
|
-
target: TransitionTarget;
|
|
159
|
-
}
|
|
160
|
-
export type Transition<TContext extends MachineContext, TEvent extends EventObject = EventObject> = string | TransitionConfig<TContext, TEvent> | ConditionalTransitionConfig<TContext, TEvent>;
|
|
118
|
+
export type AnyTransitionConfig = TransitionConfig<any, any, any, any, any>;
|
|
161
119
|
export interface InvokeMeta {
|
|
162
120
|
src: string;
|
|
163
121
|
meta: MetaObject | undefined;
|
|
164
122
|
}
|
|
165
|
-
export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
123
|
+
export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> {
|
|
166
124
|
id: string;
|
|
167
125
|
systemId: string | undefined;
|
|
168
126
|
/**
|
|
@@ -173,13 +131,13 @@ export interface InvokeDefinition<TContext extends MachineContext, TEvent extend
|
|
|
173
131
|
/**
|
|
174
132
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
175
133
|
*/
|
|
176
|
-
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any
|
|
134
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>, DoneInvokeEvent<any>, TAction, TGuard>>;
|
|
177
135
|
/**
|
|
178
136
|
* The transition to take upon the invoked child machine sending an error event.
|
|
179
137
|
*/
|
|
180
|
-
onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorEvent<any
|
|
181
|
-
onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any
|
|
182
|
-
toJSON: () => Omit<InvokeDefinition<TContext, TEvent>, 'onDone' | 'onError' | 'toJSON'>;
|
|
138
|
+
onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorEvent<any>, ErrorEvent<any>, TAction, TGuard>>;
|
|
139
|
+
onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>, SnapshotEvent<any>, TAction, TGuard>>;
|
|
140
|
+
toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TAction, TGuard>, 'onDone' | 'onError' | 'toJSON'>;
|
|
183
141
|
meta: MetaObject | undefined;
|
|
184
142
|
}
|
|
185
143
|
export interface Delay {
|
|
@@ -189,27 +147,27 @@ export interface Delay {
|
|
|
189
147
|
*/
|
|
190
148
|
delay: number;
|
|
191
149
|
}
|
|
192
|
-
export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent>>> | Array<TransitionConfig<TContext, TEvent> & {
|
|
150
|
+
export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard>>> | Array<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard> & {
|
|
193
151
|
delay: number | string | ((args: UnifiedArg<TContext, TEvent>) => number);
|
|
194
152
|
}>;
|
|
195
153
|
export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
|
|
196
|
-
export type SingleOrArray<T> = T[] | T;
|
|
154
|
+
export type SingleOrArray<T> = readonly T[] | T;
|
|
197
155
|
export type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
198
156
|
[K in string]: StateNode<TContext, TEvent>;
|
|
199
157
|
};
|
|
200
|
-
export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TActor extends ProvidedActor> = {
|
|
201
|
-
[K in string]: StateNodeConfig<TContext, TEvent, TAction, TActor>;
|
|
158
|
+
export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TActor extends ProvidedActor, TOutput> = {
|
|
159
|
+
[K in string]: StateNodeConfig<TContext, TEvent, TAction, TGuard, TActor, TOutput>;
|
|
202
160
|
};
|
|
203
161
|
export type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
204
162
|
[K in string]: StateNodeDefinition<TContext, TEvent>;
|
|
205
163
|
};
|
|
206
164
|
export type TransitionConfigTarget = string | undefined;
|
|
207
|
-
export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject
|
|
208
|
-
export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
209
|
-
[K in TEvent['type'] | '*']?: K extends '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent>;
|
|
165
|
+
export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TAction, TGuard>>;
|
|
166
|
+
export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> = {
|
|
167
|
+
[K in TEvent['type'] | '*']?: K extends '*' ? TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction, TGuard> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TAction, TGuard>;
|
|
210
168
|
};
|
|
211
169
|
type IsLiteralString<T extends string> = string extends T ? false : true;
|
|
212
|
-
type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor> = TActor extends {
|
|
170
|
+
type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> = TActor extends {
|
|
213
171
|
src: infer TSrc;
|
|
214
172
|
} ? Compute<{
|
|
215
173
|
systemId?: string;
|
|
@@ -221,12 +179,12 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
|
|
|
221
179
|
/**
|
|
222
180
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
223
181
|
*/
|
|
224
|
-
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent>>;
|
|
182
|
+
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent, TAction, TGuard>>;
|
|
225
183
|
/**
|
|
226
184
|
* The transition to take upon the invoked child machine sending an error event.
|
|
227
185
|
*/
|
|
228
|
-
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent>>;
|
|
229
|
-
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent>>;
|
|
186
|
+
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard>>;
|
|
187
|
+
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard>>;
|
|
230
188
|
/**
|
|
231
189
|
* Meta data related to this invocation
|
|
232
190
|
*/
|
|
@@ -244,7 +202,7 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
|
|
|
244
202
|
*/
|
|
245
203
|
id?: string;
|
|
246
204
|
})> : never;
|
|
247
|
-
export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor> : {
|
|
205
|
+
export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor, TAction, TGuard> : {
|
|
248
206
|
/**
|
|
249
207
|
* The unique identifier for the invoked machine. If not specified, this
|
|
250
208
|
* will be the machine's own `id`, or the URL (from `src`).
|
|
@@ -259,22 +217,23 @@ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventOb
|
|
|
259
217
|
/**
|
|
260
218
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
261
219
|
*/
|
|
262
|
-
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent>>;
|
|
220
|
+
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent, TAction, TGuard>>;
|
|
263
221
|
/**
|
|
264
222
|
* The transition to take upon the invoked child machine sending an error event.
|
|
265
223
|
*/
|
|
266
|
-
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent>>;
|
|
267
|
-
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent>>;
|
|
224
|
+
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard>>;
|
|
225
|
+
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard>>;
|
|
268
226
|
/**
|
|
269
227
|
* Meta data related to this invocation
|
|
270
228
|
*/
|
|
271
229
|
meta?: MetaObject;
|
|
272
230
|
};
|
|
273
|
-
export
|
|
231
|
+
export type AnyInvokeConfig = InvokeConfig<any, any, any, any, any>;
|
|
232
|
+
export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TActor extends ProvidedActor, TOutput> {
|
|
274
233
|
/**
|
|
275
234
|
* The initial state transition.
|
|
276
235
|
*/
|
|
277
|
-
initial?: InitialTransitionConfig<TContext, TEvent> | SingleOrArray<string> | undefined;
|
|
236
|
+
initial?: InitialTransitionConfig<TContext, TEvent, TAction, TGuard> | SingleOrArray<string> | undefined;
|
|
278
237
|
/**
|
|
279
238
|
* The type of this state node:
|
|
280
239
|
*
|
|
@@ -294,38 +253,38 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
294
253
|
/**
|
|
295
254
|
* The mapping of state node keys to their state node configurations (recursive).
|
|
296
255
|
*/
|
|
297
|
-
states?: StatesConfig<TContext, TEvent, TAction, TActor> | undefined;
|
|
256
|
+
states?: StatesConfig<TContext, TEvent, TAction, TGuard, TActor, NonReducibleUnknown> | undefined;
|
|
298
257
|
/**
|
|
299
258
|
* The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
|
|
300
259
|
*/
|
|
301
|
-
invoke?: SingleOrArray<TActor['src'] | InvokeConfig<TContext, TEvent, TActor>>;
|
|
260
|
+
invoke?: SingleOrArray<TActor['src'] | InvokeConfig<TContext, TEvent, TActor, TAction, TGuard>>;
|
|
302
261
|
/**
|
|
303
262
|
* The mapping of event types to their potential transition(s).
|
|
304
263
|
*/
|
|
305
|
-
on?: TransitionsConfig<TContext, TEvent>;
|
|
264
|
+
on?: TransitionsConfig<TContext, TEvent, TAction, TGuard>;
|
|
306
265
|
/**
|
|
307
266
|
* The action(s) to be executed upon entering the state node.
|
|
308
267
|
*/
|
|
309
|
-
entry?: Actions<TContext, TEvent, TEvent>;
|
|
268
|
+
entry?: Actions<TContext, TEvent, TEvent, undefined, TAction>;
|
|
310
269
|
/**
|
|
311
270
|
* The action(s) to be executed upon exiting the state node.
|
|
312
271
|
*/
|
|
313
|
-
exit?: Actions<TContext, TEvent, TEvent>;
|
|
272
|
+
exit?: Actions<TContext, TEvent, TEvent, undefined, TAction>;
|
|
314
273
|
/**
|
|
315
274
|
* The potential transition(s) to be taken upon reaching a final child state node.
|
|
316
275
|
*
|
|
317
276
|
* This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
|
|
318
277
|
*/
|
|
319
|
-
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject>> | undefined;
|
|
278
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject, DoneEventObject, TAction, TGuard>> | undefined;
|
|
320
279
|
/**
|
|
321
280
|
* The mapping (or array) of delays (in milliseconds) to their potential transition(s).
|
|
322
281
|
* The delayed transitions are taken after the specified delay in an interpreter.
|
|
323
282
|
*/
|
|
324
|
-
after?: DelayedTransitions<TContext, TEvent>;
|
|
283
|
+
after?: DelayedTransitions<TContext, TEvent, TAction, TGuard>;
|
|
325
284
|
/**
|
|
326
285
|
* An eventless transition that is always taken when this state node is active.
|
|
327
286
|
*/
|
|
328
|
-
always?: TransitionConfigOrTarget<TContext, TEvent>;
|
|
287
|
+
always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction, TGuard>;
|
|
329
288
|
/**
|
|
330
289
|
* @private
|
|
331
290
|
*/
|
|
@@ -340,7 +299,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
340
299
|
* The output data will be evaluated with the current `context` and placed on the `.data` property
|
|
341
300
|
* of the event.
|
|
342
301
|
*/
|
|
343
|
-
output?: Mapper<TContext, TEvent,
|
|
302
|
+
output?: Mapper<TContext, TEvent, TOutput> | TOutput;
|
|
344
303
|
/**
|
|
345
304
|
* The unique ID of the state node, which can be referenced as a transition target via the
|
|
346
305
|
* `#id` syntax.
|
|
@@ -363,6 +322,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
363
322
|
*/
|
|
364
323
|
target?: string;
|
|
365
324
|
}
|
|
325
|
+
export type AnyStateNodeConfig = StateNodeConfig<any, any, any, any, any, any>;
|
|
366
326
|
export interface StateNodeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
367
327
|
id: string;
|
|
368
328
|
version?: string | undefined;
|
|
@@ -373,12 +333,12 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
|
|
|
373
333
|
states: StatesDefinition<TContext, TEvent>;
|
|
374
334
|
on: TransitionDefinitionMap<TContext, TEvent>;
|
|
375
335
|
transitions: Array<TransitionDefinition<TContext, TEvent>>;
|
|
376
|
-
entry:
|
|
377
|
-
exit:
|
|
336
|
+
entry: UnknownAction[];
|
|
337
|
+
exit: UnknownAction[];
|
|
378
338
|
meta: any;
|
|
379
339
|
order: number;
|
|
380
340
|
output?: FinalStateNodeConfig<TContext, TEvent>['output'];
|
|
381
|
-
invoke: Array<InvokeDefinition<TContext, TEvent>>;
|
|
341
|
+
invoke: Array<InvokeDefinition<TContext, TEvent, TODO, TODO>>;
|
|
382
342
|
description?: string;
|
|
383
343
|
tags: string[];
|
|
384
344
|
}
|
|
@@ -386,10 +346,10 @@ export interface StateMachineDefinition<TContext extends MachineContext, TEvent
|
|
|
386
346
|
}
|
|
387
347
|
export type AnyStateNode = StateNode<any, any>;
|
|
388
348
|
export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
|
|
389
|
-
export type AnyState = State<any, any, any, any>;
|
|
390
|
-
export type AnyStateMachine = StateMachine<any, any, any, any, any, any>;
|
|
349
|
+
export type AnyState = State<any, any, any, any, any>;
|
|
350
|
+
export type AnyStateMachine = StateMachine<any, any, any, any, any, any, any, any>;
|
|
391
351
|
export type AnyStateConfig = StateConfig<any, AnyEventObject>;
|
|
392
|
-
export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent, TODO, TODO> {
|
|
352
|
+
export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO> {
|
|
393
353
|
initial?: undefined;
|
|
394
354
|
parallel?: false | undefined;
|
|
395
355
|
states?: undefined;
|
|
@@ -407,37 +367,43 @@ export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent ex
|
|
|
407
367
|
*/
|
|
408
368
|
output?: Mapper<TContext, TEvent, any>;
|
|
409
369
|
}
|
|
410
|
-
export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO>;
|
|
370
|
+
export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO>;
|
|
411
371
|
export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
|
|
412
372
|
[K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
|
|
413
373
|
type: K;
|
|
414
|
-
} ? TAction : never>;
|
|
374
|
+
} ? TAction : never, TAction>;
|
|
415
375
|
};
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
376
|
+
type GuardMap<TContext extends MachineContext, TEvent extends EventObject, TGuard extends ParameterizedObject> = {
|
|
377
|
+
[K in TGuard['type']]?: GuardPredicate<TContext, TEvent, TGuard extends {
|
|
378
|
+
type: K;
|
|
379
|
+
} ? TGuard : never, TGuard>;
|
|
380
|
+
};
|
|
381
|
+
export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string, DelayConfig<TContext, TEvent, TAction>>;
|
|
382
|
+
export type DelayConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = number | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
|
|
383
|
+
export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject> {
|
|
384
|
+
guards: GuardMap<TContext, TEvent, TGuard>;
|
|
420
385
|
actions: ActionFunctionMap<TContext, TEvent, TAction>;
|
|
421
386
|
actors: Record<string, AnyActorLogic | {
|
|
422
387
|
src: AnyActorLogic;
|
|
423
388
|
input: Mapper<TContext, TEvent, any> | any;
|
|
424
389
|
}>;
|
|
425
|
-
delays: DelayFunctionMap<TContext, TEvent>;
|
|
390
|
+
delays: DelayFunctionMap<TContext, TEvent, TAction>;
|
|
426
391
|
}
|
|
427
|
-
type
|
|
428
|
-
|
|
392
|
+
type MaybeNarrowedEvent<TIndexedEvents, TCausingLookup, K> = Cast<Prop<TIndexedEvents, K extends keyof TCausingLookup ? TCausingLookup[K] : TIndexedEvents[keyof TIndexedEvents]>, EventObject>;
|
|
393
|
+
type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>> = {
|
|
394
|
+
[K in keyof TIndexedActions]?: ActionFunction<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActions, K>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, Cast<TIndexedActions[K], ParameterizedObject>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject>>;
|
|
429
395
|
};
|
|
430
396
|
type MachineImplementationsActors<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActors'>, TIndexedActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActors'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
|
|
431
397
|
[K in keyof TIndexedActors]?: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic> | {
|
|
432
398
|
src: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>;
|
|
433
|
-
input: Mapper<TContext,
|
|
399
|
+
input: Mapper<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActors, K>, InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>> | InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>;
|
|
434
400
|
};
|
|
435
401
|
};
|
|
436
402
|
type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
437
|
-
[K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject
|
|
403
|
+
[K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>, ParameterizedObject | undefined>;
|
|
438
404
|
};
|
|
439
|
-
type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
440
|
-
[K in keyof
|
|
405
|
+
type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>> = {
|
|
406
|
+
[K in keyof TIndexedGuards]?: Guard<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingGuards, K>, Cast<TIndexedGuards[K], ParameterizedObject>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>>;
|
|
441
407
|
};
|
|
442
408
|
type MakeKeysRequired<T extends string> = {
|
|
443
409
|
[K in T]: unknown;
|
|
@@ -457,14 +423,17 @@ type GenerateDelaysImplementationsPart<TContext extends MachineContext, TResolve
|
|
|
457
423
|
type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
|
|
458
424
|
guards?: MachineImplementationsGuards<TContext, TResolvedTypesMeta>;
|
|
459
425
|
}>;
|
|
460
|
-
export type InternalMachineImplementations<TContext extends MachineContext, TEvent extends EventObject,
|
|
461
|
-
export type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject,
|
|
426
|
+
export type InternalMachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = Compute<GenerateActionsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateActorsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations>>;
|
|
427
|
+
export type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, TEvent, TActor, TAction, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard>>;
|
|
462
428
|
type InitialContext<TContext extends MachineContext, TInput> = TContext | ContextFactory<TContext, TInput>;
|
|
463
429
|
export type ContextFactory<TContext extends MachineContext, TInput> = ({ spawn, input }: {
|
|
464
430
|
spawn: Spawner;
|
|
465
431
|
input: TInput;
|
|
466
432
|
}) => TContext;
|
|
467
|
-
|
|
433
|
+
type RootStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TActor extends ProvidedActor, TOutput> = Omit<StateNodeConfig<TContext, TEvent, TAction, TGuard, TActor, TOutput>, 'states'> & {
|
|
434
|
+
states?: StatesConfig<TContext, TEvent, TAction, TGuard, TActor, TOutput> | undefined;
|
|
435
|
+
};
|
|
436
|
+
export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TActor extends ProvidedActor = ProvidedActor, TInput = any, TOutput = unknown, TTypesMeta = TypegenDisabled> = (RootStateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, NoInfer<TAction>, NoInfer<TGuard>, NoInfer<TActor>, NoInfer<TOutput>> & {
|
|
468
437
|
/**
|
|
469
438
|
* The initial context (extended state)
|
|
470
439
|
*/
|
|
@@ -472,7 +441,7 @@ export type MachineConfig<TContext extends MachineContext, TEvent extends EventO
|
|
|
472
441
|
* The machine's own version.
|
|
473
442
|
*/
|
|
474
443
|
version?: string;
|
|
475
|
-
types?: MachineTypes<TContext, TEvent, TActor, TInput, TTypesMeta>;
|
|
444
|
+
types?: MachineTypes<TContext, TEvent, TAction, TGuard, TActor, TInput, TOutput, TTypesMeta>;
|
|
476
445
|
}) & (Equals<TContext, MachineContext> extends true ? {
|
|
477
446
|
context?: InitialContext<LowInfer<TContext>, TInput>;
|
|
478
447
|
} : {
|
|
@@ -483,20 +452,15 @@ export interface ProvidedActor {
|
|
|
483
452
|
logic: AnyActorLogic;
|
|
484
453
|
id?: string;
|
|
485
454
|
}
|
|
486
|
-
export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TInput, TTypesMeta = TypegenDisabled> {
|
|
455
|
+
export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TActor extends ProvidedActor, TInput, TOutput, TTypesMeta = TypegenDisabled> {
|
|
487
456
|
context?: TContext;
|
|
488
|
-
actions?: {
|
|
489
|
-
type: string;
|
|
490
|
-
[key: string]: any;
|
|
491
|
-
};
|
|
492
|
-
actors?: TActor;
|
|
493
457
|
events?: TEvent;
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
};
|
|
498
|
-
typegen?: TTypesMeta;
|
|
458
|
+
actors?: TActor;
|
|
459
|
+
actions?: TAction;
|
|
460
|
+
guards?: TGuard;
|
|
499
461
|
input?: TInput;
|
|
462
|
+
output?: TOutput;
|
|
463
|
+
typegen?: TTypesMeta;
|
|
500
464
|
}
|
|
501
465
|
export interface HistoryStateNode<TContext extends MachineContext> extends StateNode<TContext> {
|
|
502
466
|
history: 'shallow' | 'deep';
|
|
@@ -540,57 +504,57 @@ export interface DoneEventObject extends EventObject {
|
|
|
540
504
|
toString(): string;
|
|
541
505
|
}
|
|
542
506
|
export type DoneEvent = DoneEventObject & string;
|
|
543
|
-
export type DelayExpr<TContext extends MachineContext,
|
|
544
|
-
export type LogExpr<TContext extends MachineContext,
|
|
545
|
-
export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TSentEvent extends EventObject
|
|
507
|
+
export type DelayExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => number;
|
|
508
|
+
export type LogExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => unknown;
|
|
509
|
+
export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => TSentEvent;
|
|
546
510
|
export declare enum SpecialTargets {
|
|
547
511
|
Parent = "#_parent",
|
|
548
512
|
Internal = "#_internal"
|
|
549
513
|
}
|
|
550
|
-
export interface SendToActionOptions<TContext extends MachineContext,
|
|
514
|
+
export interface SendToActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction> {
|
|
551
515
|
}
|
|
552
|
-
export interface RaiseActionOptions<TContext extends MachineContext,
|
|
516
|
+
export interface RaiseActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> {
|
|
553
517
|
id?: string;
|
|
554
|
-
delay?: number | string | DelayExpr<TContext,
|
|
518
|
+
delay?: number | string | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
|
|
555
519
|
}
|
|
556
|
-
export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent> {
|
|
557
|
-
event: TEvent | SendExpr<TContext, TExpressionEvent, TEvent>;
|
|
520
|
+
export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction> {
|
|
521
|
+
event: TEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TEvent>;
|
|
558
522
|
}
|
|
559
|
-
export interface SendToActionParams<TContext extends MachineContext,
|
|
560
|
-
event: TSentEvent | SendExpr<TContext,
|
|
523
|
+
export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject> extends SendToActionOptions<TContext, TExpressionEvent, TExpressionAction> {
|
|
524
|
+
event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent>;
|
|
561
525
|
}
|
|
562
|
-
export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject> = (args: AssignArgs<TContext, TExpressionEvent>) => Partial<TContext>;
|
|
563
|
-
export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent>) => TContext[TKey];
|
|
564
|
-
export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject> = {
|
|
565
|
-
[K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, K> | TContext[K];
|
|
526
|
+
export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction>) => Partial<TContext>;
|
|
527
|
+
export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction>) => TContext[TKey];
|
|
528
|
+
export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = {
|
|
529
|
+
[K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TExpressionAction, K> | TContext[K];
|
|
566
530
|
};
|
|
567
|
-
export type Mapper<TContext extends MachineContext, TEvent extends EventObject,
|
|
531
|
+
export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TResult> = (args: {
|
|
568
532
|
context: TContext;
|
|
569
533
|
event: TEvent;
|
|
570
534
|
self: ActorRef<TEvent>;
|
|
571
|
-
}) =>
|
|
535
|
+
}) => TResult;
|
|
572
536
|
export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
|
|
573
537
|
[K in keyof TParams]?: Mapper<TContext, TEvent, TParams[K]> | TParams[K];
|
|
574
538
|
};
|
|
575
|
-
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent>, 'target'> {
|
|
576
|
-
target:
|
|
539
|
+
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO, TODO>, 'target' | 'guard'> {
|
|
540
|
+
target: ReadonlyArray<StateNode<TContext, TEvent>> | undefined;
|
|
577
541
|
source: StateNode<TContext, TEvent>;
|
|
578
|
-
actions:
|
|
542
|
+
actions: readonly UnknownAction[];
|
|
579
543
|
reenter: boolean;
|
|
580
|
-
guard?:
|
|
544
|
+
guard?: UnknownGuard;
|
|
581
545
|
eventType: TEvent['type'] | '*';
|
|
582
546
|
toJSON: () => {
|
|
583
547
|
target: string[] | undefined;
|
|
584
548
|
source: string;
|
|
585
|
-
actions:
|
|
586
|
-
guard?:
|
|
549
|
+
actions: readonly UnknownAction[];
|
|
550
|
+
guard?: UnknownGuard;
|
|
587
551
|
eventType: TEvent['type'] | '*';
|
|
588
552
|
meta?: Record<string, any>;
|
|
589
553
|
};
|
|
590
554
|
}
|
|
591
555
|
export type AnyTransitionDefinition = TransitionDefinition<any, any>;
|
|
592
556
|
export interface InitialTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
|
|
593
|
-
target:
|
|
557
|
+
target: ReadonlyArray<StateNode<TContext, TEvent>>;
|
|
594
558
|
guard?: never;
|
|
595
559
|
}
|
|
596
560
|
export type TransitionDefinitionMap<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
@@ -599,32 +563,7 @@ export type TransitionDefinitionMap<TContext extends MachineContext, TEvent exte
|
|
|
599
563
|
}> : EventObject>>;
|
|
600
564
|
};
|
|
601
565
|
export interface DelayedTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
|
|
602
|
-
delay: number | string | DelayExpr<TContext, TEvent>;
|
|
603
|
-
}
|
|
604
|
-
export interface Edge<TContext extends MachineContext, TEvent extends EventObject, TEventType extends TEvent['type'] = string> {
|
|
605
|
-
event: TEventType;
|
|
606
|
-
source: StateNode<TContext, TEvent>;
|
|
607
|
-
target: StateNode<TContext, TEvent>;
|
|
608
|
-
cond?: GuardConfig<TContext, TEvent & {
|
|
609
|
-
type: TEventType;
|
|
610
|
-
}>;
|
|
611
|
-
actions: Array<Action<TContext, TEvent>>;
|
|
612
|
-
meta?: MetaObject;
|
|
613
|
-
transition: TransitionDefinition<TContext, TEvent>;
|
|
614
|
-
}
|
|
615
|
-
export interface NodesAndEdges<TContext extends MachineContext, TEvent extends EventObject> {
|
|
616
|
-
nodes: StateNode[];
|
|
617
|
-
edges: Array<Edge<TContext, TEvent, TEvent['type']>>;
|
|
618
|
-
}
|
|
619
|
-
export interface Segment<TContext extends MachineContext, TEvent extends EventObject> {
|
|
620
|
-
/**
|
|
621
|
-
* From state.
|
|
622
|
-
*/
|
|
623
|
-
state: State<TContext, TEvent, TODO>;
|
|
624
|
-
/**
|
|
625
|
-
* Event from state.
|
|
626
|
-
*/
|
|
627
|
-
event: TEvent;
|
|
566
|
+
delay: number | string | DelayExpr<TContext, TEvent, undefined>;
|
|
628
567
|
}
|
|
629
568
|
export interface StateLike<TContext extends MachineContext> {
|
|
630
569
|
value: StateValue;
|
|
@@ -642,7 +581,7 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
|
|
|
642
581
|
output?: any;
|
|
643
582
|
error?: unknown;
|
|
644
583
|
tags?: Set<string>;
|
|
645
|
-
machine?: StateMachine<TContext, TEvent, any, any, any, any>;
|
|
584
|
+
machine?: StateMachine<TContext, TEvent, any, any, any, any, any, any>;
|
|
646
585
|
_internalQueue?: Array<TEvent>;
|
|
647
586
|
}
|
|
648
587
|
export interface ActorOptions<TLogic extends AnyActorLogic> {
|
|
@@ -734,16 +673,15 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
|
|
|
734
673
|
src?: string;
|
|
735
674
|
}
|
|
736
675
|
export type AnyActorRef = ActorRef<any, any>;
|
|
737
|
-
export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
|
|
738
|
-
export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent,
|
|
676
|
+
export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
|
|
677
|
+
export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _Tinput, infer TOutput, infer TResolvedTypesMeta> ? ActorRef<TEvent, State<TContext, TEvent, TActor, TOutput, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TEvent, infer TSnapshot, infer _, infer __, infer ___, infer ____, infer _____> ? ActorRef<TEvent, TSnapshot> : never : never;
|
|
739
678
|
export type DevToolsAdapter = (service: AnyActor) => void;
|
|
740
679
|
/**
|
|
741
680
|
* @deprecated Use `Actor<T>` instead.
|
|
742
681
|
*/
|
|
743
|
-
export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer _TAction, infer
|
|
744
|
-
export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TAction, infer
|
|
745
|
-
export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
|
746
|
-
export type EventOfMachine<TMachine extends AnyStateMachine> = TMachine extends StateMachine<any, infer E, any, any, any, any> ? E : never;
|
|
682
|
+
export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer TInput, infer TOutput, infer TResolvedTypesMeta> ? Actor<ActorLogic<TEvent, State<TContext, TEvent, TActor, TOutput, TResolvedTypesMeta>, State<TContext, TEvent, TActor, TOutput, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TActor, TOutput, TResolvedTypesMeta>>, ActorSystem<any>, TInput>> : never;
|
|
683
|
+
export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer TAction, infer _TGuard, infer _TInput, infer _TOutput, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TActor, TAction, TResolvedTypesMeta, TRequireMissingImplementations> : never;
|
|
684
|
+
export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
|
747
685
|
export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
|
|
748
686
|
self: ActorRef<TEvent, TSnapshot>;
|
|
749
687
|
id: string;
|
|
@@ -782,13 +720,13 @@ any, // persisted state
|
|
|
782
720
|
any, // system
|
|
783
721
|
any, // input
|
|
784
722
|
any>;
|
|
785
|
-
export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _, infer __, infer ___, infer ____, infer _____, infer ______> ? StateFrom<R> : R extends ActorLogic<infer _, infer TSnapshot, infer __, infer ___, infer ____> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
|
|
723
|
+
export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _, infer __, infer ___, infer ____, infer _____, infer ______, infer _______, infer ________> ? StateFrom<R> : R extends ActorLogic<infer _, infer TSnapshot, infer __, infer ___, infer ____> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
|
|
786
724
|
export type EventFromLogic<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer TEvent, infer _, infer __, infer ___, infer ____> ? TEvent : never;
|
|
787
725
|
export type PersistedStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer TPersisted> ? TPersisted : never;
|
|
788
726
|
export type InternalStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer TInternalState, infer _TPersisted> ? TInternalState : never;
|
|
789
|
-
type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer
|
|
727
|
+
type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends State<infer _TContext, infer TEvent, infer _TActor, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
|
|
790
728
|
export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
|
791
|
-
export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____, infer _____> ? TContext : R extends State<infer TContext, infer _TEvent, infer
|
|
729
|
+
export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____, infer _____, infer ______, infer _______> ? TContext : R extends State<infer TContext, infer _TEvent, infer _TActor, infer _TOutput, infer _TResolvedTypesMeta> ? TContext : R extends Actor<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : never : never : never;
|
|
792
730
|
export type InferEvent<E extends EventObject> = {
|
|
793
731
|
[T in E['type']]: {
|
|
794
732
|
type: T;
|