xstate 5.0.0-beta.23 → 5.0.0-beta.25
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-0fcd4d15.development.cjs.js → actions-0971b43d.development.cjs.js} +88 -133
- package/dist/{actions-e83129c5.cjs.js → actions-319cefe7.cjs.js} +84 -137
- package/dist/{actions-bf7f6679.esm.js → actions-5943a9db.esm.js} +85 -137
- package/dist/{actions-f6b5002d.development.esm.js → actions-cf69419d.development.esm.js} +89 -133
- package/dist/declarations/src/Machine.d.ts +2 -2
- package/dist/declarations/src/State.d.ts +7 -3
- package/dist/declarations/src/StateMachine.d.ts +23 -17
- package/dist/declarations/src/StateNode.d.ts +23 -7
- package/dist/declarations/src/actions/choose.d.ts +4 -2
- package/dist/declarations/src/actions/pure.d.ts +6 -3
- package/dist/declarations/src/actions/raise.d.ts +2 -1
- package/dist/declarations/src/actions/send.d.ts +11 -55
- package/dist/declarations/src/guards.d.ts +20 -8
- package/dist/declarations/src/stateUtils.d.ts +10 -9
- package/dist/declarations/src/typegenTypes.d.ts +14 -2
- package/dist/declarations/src/types.d.ts +117 -142
- package/dist/declarations/src/utils.d.ts +3 -3
- package/dist/xstate.cjs.js +7 -3
- package/dist/xstate.development.cjs.js +7 -3
- package/dist/xstate.development.esm.js +8 -4
- package/dist/xstate.esm.js +8 -4
- 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:
|
|
@@ -55,17 +56,17 @@ export interface ParameterizedObject {
|
|
|
55
56
|
type: string;
|
|
56
57
|
params?: Record<string, unknown>;
|
|
57
58
|
}
|
|
58
|
-
export interface UnifiedArg<TContext extends MachineContext,
|
|
59
|
+
export interface UnifiedArg<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
59
60
|
context: TContext;
|
|
60
|
-
event:
|
|
61
|
-
self: ActorRef<
|
|
61
|
+
event: TExpressionEvent;
|
|
62
|
+
self: ActorRef<TExpressionEvent>;
|
|
62
63
|
system: ActorSystem<any>;
|
|
63
64
|
}
|
|
64
65
|
export type MachineContext = Record<string, any>;
|
|
65
66
|
export interface ActionArgs<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject | undefined> extends UnifiedArg<TContext, TEvent> {
|
|
66
67
|
action: TAction;
|
|
67
68
|
}
|
|
68
|
-
export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TAction, infer
|
|
69
|
+
export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer TInput> ? TInput : never;
|
|
69
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;
|
|
70
71
|
export type Spawner = <T extends AnyActorLogic | string>(// TODO: read string from machine logic keys
|
|
71
72
|
logic: T, options?: Partial<{
|
|
@@ -76,21 +77,23 @@ logic: T, options?: Partial<{
|
|
|
76
77
|
export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> extends ActionArgs<TContext, TExpressionEvent, TExpressionAction> {
|
|
77
78
|
spawn: Spawner;
|
|
78
79
|
}
|
|
79
|
-
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject> = {
|
|
80
|
+
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
|
80
81
|
(args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>): void;
|
|
81
82
|
_out_TEvent?: TEvent;
|
|
82
83
|
_out_TAction?: TAction;
|
|
84
|
+
_out_TGuard?: TGuard;
|
|
85
|
+
_out_TDelay?: TDelay;
|
|
83
86
|
};
|
|
84
|
-
export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject> {
|
|
85
|
-
guard?:
|
|
86
|
-
actions: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction>;
|
|
87
|
+
export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> {
|
|
88
|
+
guard?: Guard<TContext, TExpressionEvent, undefined, TGuard>;
|
|
89
|
+
actions: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction, TGuard, TDelay>;
|
|
87
90
|
}
|
|
88
|
-
type NoRequiredParams<T extends ParameterizedObject> = T extends any ? {
|
|
91
|
+
export type NoRequiredParams<T extends ParameterizedObject> = T extends any ? {
|
|
89
92
|
type: T['type'];
|
|
90
93
|
} extends T ? T['type'] : never : never;
|
|
91
|
-
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>;
|
|
92
|
-
export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject | undefined, ParameterizedObject>;
|
|
93
|
-
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>>;
|
|
94
|
+
export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = NoRequiredParams<TAction> | TAction | ActionFunction<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction, TGuard, TDelay>;
|
|
95
|
+
export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject | undefined, ParameterizedObject, ParameterizedObject, string>;
|
|
96
|
+
export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction, TGuard, TDelay>>;
|
|
94
97
|
export type StateKey = string | AnyState;
|
|
95
98
|
export interface StateValueMap {
|
|
96
99
|
[key: string]: StateValue;
|
|
@@ -102,65 +105,24 @@ export interface StateValueMap {
|
|
|
102
105
|
* - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
|
|
103
106
|
*/
|
|
104
107
|
export type StateValue = string | StateValueMap;
|
|
105
|
-
export type GuardPredicate<TContext extends MachineContext, TEvent extends EventObject> = (args: {
|
|
106
|
-
context: TContext;
|
|
107
|
-
event: TEvent;
|
|
108
|
-
} & GuardArgs<TContext, TEvent>) => boolean;
|
|
109
|
-
export interface DefaultGuardObject<TContext extends MachineContext, TEvent extends EventObject> extends ParameterizedObject {
|
|
110
|
-
/**
|
|
111
|
-
* Nested guards
|
|
112
|
-
*/
|
|
113
|
-
children?: Array<GuardObject<TContext, TEvent>>;
|
|
114
|
-
predicate?: GuardPredicate<TContext, TEvent>;
|
|
115
|
-
}
|
|
116
|
-
export type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, event: TEvent, state: State<TContext, TEvent, TODO, TODO>) => boolean;
|
|
117
|
-
export interface GuardArgs<TContext extends MachineContext, TEvent extends EventObject> {
|
|
118
|
-
state: State<TContext, TEvent, TODO, TODO>;
|
|
119
|
-
guard: GuardDefinition<TContext, TEvent>;
|
|
120
|
-
evaluate: GuardEvaluator<TContext, TEvent>;
|
|
121
|
-
}
|
|
122
|
-
export type GuardConfig<TContext extends MachineContext, TEvent extends EventObject> = string | GuardPredicate<TContext, TEvent> | GuardObject<TContext, TEvent>;
|
|
123
|
-
export type GuardObject<TContext extends MachineContext, TEvent extends EventObject> = BooleanGuardObject<TContext, TEvent> | DefaultGuardObject<TContext, TEvent>;
|
|
124
|
-
export interface GuardDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
125
|
-
type: string;
|
|
126
|
-
children?: Array<GuardDefinition<TContext, TEvent>>;
|
|
127
|
-
predicate?: GuardPredicate<TContext, TEvent>;
|
|
128
|
-
params: {
|
|
129
|
-
[key: string]: any;
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
export interface BooleanGuardObject<TContext extends MachineContext, TEvent extends EventObject> extends ParameterizedObject {
|
|
133
|
-
type: 'xstate.boolean';
|
|
134
|
-
children: Array<GuardConfig<TContext, TEvent>>;
|
|
135
|
-
params: {
|
|
136
|
-
op: 'and' | 'or' | 'not';
|
|
137
|
-
};
|
|
138
|
-
predicate: undefined;
|
|
139
|
-
}
|
|
140
|
-
export interface BooleanGuardDefinition<TContext extends MachineContext, TEvent extends EventObject> extends GuardDefinition<TContext, TEvent> {
|
|
141
|
-
type: 'xstate.boolean';
|
|
142
|
-
params: {
|
|
143
|
-
op: 'and' | 'or' | 'not';
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
108
|
export type TransitionTarget = SingleOrArray<string>;
|
|
147
|
-
export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject> {
|
|
148
|
-
guard?:
|
|
149
|
-
actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction>;
|
|
109
|
+
export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
|
|
110
|
+
guard?: Guard<TContext, TExpressionEvent, undefined, TGuard>;
|
|
111
|
+
actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction, TGuard, TDelay>;
|
|
150
112
|
reenter?: boolean;
|
|
151
113
|
target?: TransitionTarget | undefined;
|
|
152
114
|
meta?: Record<string, any>;
|
|
153
115
|
description?: string;
|
|
154
116
|
}
|
|
155
|
-
export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> extends TransitionConfig<TContext, TEvent, TEvent, TAction> {
|
|
156
|
-
guard?: never;
|
|
117
|
+
export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> extends TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay> {
|
|
157
118
|
target: TransitionTarget;
|
|
158
119
|
}
|
|
120
|
+
export type AnyTransitionConfig = TransitionConfig<any, any, any, any, any, any>;
|
|
159
121
|
export interface InvokeMeta {
|
|
160
122
|
src: string;
|
|
161
123
|
meta: MetaObject | undefined;
|
|
162
124
|
}
|
|
163
|
-
export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> {
|
|
125
|
+
export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
|
|
164
126
|
id: string;
|
|
165
127
|
systemId: string | undefined;
|
|
166
128
|
/**
|
|
@@ -171,43 +133,39 @@ export interface InvokeDefinition<TContext extends MachineContext, TEvent extend
|
|
|
171
133
|
/**
|
|
172
134
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
173
135
|
*/
|
|
174
|
-
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>, DoneInvokeEvent<any>, TAction>>;
|
|
136
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>, DoneInvokeEvent<any>, TAction, TGuard, TDelay>>;
|
|
175
137
|
/**
|
|
176
138
|
* The transition to take upon the invoked child machine sending an error event.
|
|
177
139
|
*/
|
|
178
|
-
onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorEvent<any>, ErrorEvent<any>, TAction>>;
|
|
179
|
-
onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>, SnapshotEvent<any>, TAction>>;
|
|
180
|
-
toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TAction>, 'onDone' | 'onError' | 'toJSON'>;
|
|
140
|
+
onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorEvent<any>, ErrorEvent<any>, TAction, TGuard, TDelay>>;
|
|
141
|
+
onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>, SnapshotEvent<any>, TAction, TGuard, TDelay>>;
|
|
142
|
+
toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TAction, TGuard, TDelay>, 'onDone' | 'onError' | 'toJSON'>;
|
|
181
143
|
meta: MetaObject | undefined;
|
|
182
144
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
delay: number;
|
|
189
|
-
}
|
|
190
|
-
export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TAction>>> | Array<TransitionConfig<TContext, TEvent, TEvent, TAction> & {
|
|
191
|
-
delay: number | string | ((args: UnifiedArg<TContext, TEvent>) => number);
|
|
145
|
+
type Delay<TDelay extends string> = TDelay | number;
|
|
146
|
+
export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
|
147
|
+
[K in Delay<TDelay>]?: string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay>>;
|
|
148
|
+
} | Array<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay> & {
|
|
149
|
+
delay: Delay<TDelay> | ((args: UnifiedArg<TContext, TEvent>) => Delay<TDelay>);
|
|
192
150
|
}>;
|
|
193
151
|
export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
|
|
194
152
|
export type SingleOrArray<T> = readonly T[] | T;
|
|
195
153
|
export type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
196
154
|
[K in string]: StateNode<TContext, TEvent>;
|
|
197
155
|
};
|
|
198
|
-
export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject,
|
|
199
|
-
[K in string]: StateNodeConfig<TContext, TEvent, TAction,
|
|
156
|
+
export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput> = {
|
|
157
|
+
[K in string]: StateNodeConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TOutput>;
|
|
200
158
|
};
|
|
201
159
|
export type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
202
160
|
[K in string]: StateNodeDefinition<TContext, TEvent>;
|
|
203
161
|
};
|
|
204
162
|
export type TransitionConfigTarget = string | undefined;
|
|
205
|
-
export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TAction>>;
|
|
206
|
-
export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = {
|
|
207
|
-
[K in TEvent['type'] | '*']?: K extends '*' ? TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TAction>;
|
|
163
|
+
export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TAction, TGuard, TDelay>>;
|
|
164
|
+
export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
|
165
|
+
[K in TEvent['type'] | '*']?: K extends '*' ? TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction, TGuard, TDelay> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TAction, TGuard, TDelay>;
|
|
208
166
|
};
|
|
209
167
|
type IsLiteralString<T extends string> = string extends T ? false : true;
|
|
210
|
-
type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject> = TActor extends {
|
|
168
|
+
type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = TActor extends {
|
|
211
169
|
src: infer TSrc;
|
|
212
170
|
} ? Compute<{
|
|
213
171
|
systemId?: string;
|
|
@@ -219,12 +177,12 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
|
|
|
219
177
|
/**
|
|
220
178
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
221
179
|
*/
|
|
222
|
-
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent, TAction>>;
|
|
180
|
+
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent, TAction, TGuard, TDelay>>;
|
|
223
181
|
/**
|
|
224
182
|
* The transition to take upon the invoked child machine sending an error event.
|
|
225
183
|
*/
|
|
226
|
-
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction>>;
|
|
227
|
-
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction>>;
|
|
184
|
+
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard, TDelay>>;
|
|
185
|
+
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard, TDelay>>;
|
|
228
186
|
/**
|
|
229
187
|
* Meta data related to this invocation
|
|
230
188
|
*/
|
|
@@ -242,7 +200,7 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
|
|
|
242
200
|
*/
|
|
243
201
|
id?: string;
|
|
244
202
|
})> : never;
|
|
245
|
-
export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor, TAction> : {
|
|
203
|
+
export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor, TAction, TGuard, TDelay> : {
|
|
246
204
|
/**
|
|
247
205
|
* The unique identifier for the invoked machine. If not specified, this
|
|
248
206
|
* will be the machine's own `id`, or the URL (from `src`).
|
|
@@ -257,22 +215,23 @@ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventOb
|
|
|
257
215
|
/**
|
|
258
216
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
259
217
|
*/
|
|
260
|
-
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent, TAction>>;
|
|
218
|
+
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent, TAction, TGuard, TDelay>>;
|
|
261
219
|
/**
|
|
262
220
|
* The transition to take upon the invoked child machine sending an error event.
|
|
263
221
|
*/
|
|
264
|
-
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction>>;
|
|
265
|
-
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction>>;
|
|
222
|
+
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard, TDelay>>;
|
|
223
|
+
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard, TDelay>>;
|
|
266
224
|
/**
|
|
267
225
|
* Meta data related to this invocation
|
|
268
226
|
*/
|
|
269
227
|
meta?: MetaObject;
|
|
270
228
|
};
|
|
271
|
-
export
|
|
229
|
+
export type AnyInvokeConfig = InvokeConfig<any, any, any, any, any, any>;
|
|
230
|
+
export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput> {
|
|
272
231
|
/**
|
|
273
232
|
* The initial state transition.
|
|
274
233
|
*/
|
|
275
|
-
initial?: InitialTransitionConfig<TContext, TEvent, TAction> | SingleOrArray<string> | undefined;
|
|
234
|
+
initial?: InitialTransitionConfig<TContext, TEvent, TAction, TGuard, TDelay> | SingleOrArray<string> | undefined;
|
|
276
235
|
/**
|
|
277
236
|
* The type of this state node:
|
|
278
237
|
*
|
|
@@ -292,38 +251,38 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
292
251
|
/**
|
|
293
252
|
* The mapping of state node keys to their state node configurations (recursive).
|
|
294
253
|
*/
|
|
295
|
-
states?: StatesConfig<TContext, TEvent, TAction,
|
|
254
|
+
states?: StatesConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, NonReducibleUnknown> | undefined;
|
|
296
255
|
/**
|
|
297
256
|
* The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
|
|
298
257
|
*/
|
|
299
|
-
invoke?: SingleOrArray<TActor['src'] | InvokeConfig<TContext, TEvent, TActor, TAction>>;
|
|
258
|
+
invoke?: SingleOrArray<TActor['src'] | InvokeConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
300
259
|
/**
|
|
301
260
|
* The mapping of event types to their potential transition(s).
|
|
302
261
|
*/
|
|
303
|
-
on?: TransitionsConfig<TContext, TEvent, TAction>;
|
|
262
|
+
on?: TransitionsConfig<TContext, TEvent, TAction, TGuard, TDelay>;
|
|
304
263
|
/**
|
|
305
264
|
* The action(s) to be executed upon entering the state node.
|
|
306
265
|
*/
|
|
307
|
-
entry?: Actions<TContext, TEvent, TEvent, undefined, TAction>;
|
|
266
|
+
entry?: Actions<TContext, TEvent, TEvent, undefined, TAction, TGuard, TDelay>;
|
|
308
267
|
/**
|
|
309
268
|
* The action(s) to be executed upon exiting the state node.
|
|
310
269
|
*/
|
|
311
|
-
exit?: Actions<TContext, TEvent, TEvent, undefined, TAction>;
|
|
270
|
+
exit?: Actions<TContext, TEvent, TEvent, undefined, TAction, TGuard, TDelay>;
|
|
312
271
|
/**
|
|
313
272
|
* The potential transition(s) to be taken upon reaching a final child state node.
|
|
314
273
|
*
|
|
315
274
|
* This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
|
|
316
275
|
*/
|
|
317
|
-
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject, DoneEventObject, TAction>> | undefined;
|
|
276
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject, DoneEventObject, TAction, TGuard, TDelay>> | undefined;
|
|
318
277
|
/**
|
|
319
278
|
* The mapping (or array) of delays (in milliseconds) to their potential transition(s).
|
|
320
279
|
* The delayed transitions are taken after the specified delay in an interpreter.
|
|
321
280
|
*/
|
|
322
|
-
after?: DelayedTransitions<TContext, TEvent, TAction>;
|
|
281
|
+
after?: DelayedTransitions<TContext, TEvent, TAction, TGuard, TDelay>;
|
|
323
282
|
/**
|
|
324
283
|
* An eventless transition that is always taken when this state node is active.
|
|
325
284
|
*/
|
|
326
|
-
always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction>;
|
|
285
|
+
always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction, TGuard, TDelay>;
|
|
327
286
|
/**
|
|
328
287
|
* @private
|
|
329
288
|
*/
|
|
@@ -351,7 +310,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
351
310
|
/**
|
|
352
311
|
* The tags for this state node, which are accumulated into the `state.tags` property.
|
|
353
312
|
*/
|
|
354
|
-
tags?: SingleOrArray<
|
|
313
|
+
tags?: SingleOrArray<TTag>;
|
|
355
314
|
/**
|
|
356
315
|
* A text description of the state node
|
|
357
316
|
*/
|
|
@@ -361,6 +320,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
361
320
|
*/
|
|
362
321
|
target?: string;
|
|
363
322
|
}
|
|
323
|
+
export type AnyStateNodeConfig = StateNodeConfig<any, any, any, any, any, any, any, any>;
|
|
364
324
|
export interface StateNodeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
365
325
|
id: string;
|
|
366
326
|
version?: string | undefined;
|
|
@@ -376,7 +336,7 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
|
|
|
376
336
|
meta: any;
|
|
377
337
|
order: number;
|
|
378
338
|
output?: FinalStateNodeConfig<TContext, TEvent>['output'];
|
|
379
|
-
invoke: Array<InvokeDefinition<TContext, TEvent, TODO>>;
|
|
339
|
+
invoke: Array<InvokeDefinition<TContext, TEvent, TODO, TODO, TODO>>;
|
|
380
340
|
description?: string;
|
|
381
341
|
tags: string[];
|
|
382
342
|
}
|
|
@@ -384,10 +344,12 @@ export interface StateMachineDefinition<TContext extends MachineContext, TEvent
|
|
|
384
344
|
}
|
|
385
345
|
export type AnyStateNode = StateNode<any, any>;
|
|
386
346
|
export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
|
|
387
|
-
export type AnyState = State<any, any, any, any, any
|
|
388
|
-
|
|
347
|
+
export type AnyState = State<any, any, any, any, any, // delays
|
|
348
|
+
any>;
|
|
349
|
+
export type AnyStateMachine = StateMachine<any, any, any, any, any, any, any, any, any, // delays
|
|
350
|
+
any>;
|
|
389
351
|
export type AnyStateConfig = StateConfig<any, AnyEventObject>;
|
|
390
|
-
export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent, TODO, TODO, TODO> {
|
|
352
|
+
export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO, TODO, TODO> {
|
|
391
353
|
initial?: undefined;
|
|
392
354
|
parallel?: false | undefined;
|
|
393
355
|
states?: undefined;
|
|
@@ -405,16 +367,21 @@ export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent ex
|
|
|
405
367
|
*/
|
|
406
368
|
output?: Mapper<TContext, TEvent, any>;
|
|
407
369
|
}
|
|
408
|
-
export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO>;
|
|
409
|
-
export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
|
|
370
|
+
export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO, TODO, TODO>;
|
|
371
|
+
export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> = {
|
|
410
372
|
[K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
|
|
411
373
|
type: K;
|
|
412
|
-
} ? TAction : never, TAction>;
|
|
374
|
+
} ? TAction : never, TAction, TGuard, TDelay>;
|
|
375
|
+
};
|
|
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>;
|
|
413
380
|
};
|
|
414
381
|
export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string, DelayConfig<TContext, TEvent, TAction>>;
|
|
415
382
|
export type DelayConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = number | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
|
|
416
|
-
export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> {
|
|
417
|
-
guards:
|
|
383
|
+
export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject> {
|
|
384
|
+
guards: GuardMap<TContext, TEvent, TGuard>;
|
|
418
385
|
actions: ActionFunctionMap<TContext, TEvent, TAction>;
|
|
419
386
|
actors: Record<string, AnyActorLogic | {
|
|
420
387
|
src: AnyActorLogic;
|
|
@@ -423,8 +390,8 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
|
|
|
423
390
|
delays: DelayFunctionMap<TContext, TEvent, TAction>;
|
|
424
391
|
}
|
|
425
392
|
type MaybeNarrowedEvent<TIndexedEvents, TCausingLookup, K> = Cast<Prop<TIndexedEvents, K extends keyof TCausingLookup ? TCausingLookup[K] : TIndexedEvents[keyof TIndexedEvents]>, EventObject>;
|
|
426
|
-
type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>> = {
|
|
427
|
-
[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
|
|
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'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
|
|
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>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>, Cast<Prop<TIndexedDelays, keyof TIndexedDelays>, ParameterizedObject>['type']>;
|
|
428
395
|
};
|
|
429
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'>> = {
|
|
430
397
|
[K in keyof TIndexedActors]?: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic> | {
|
|
@@ -432,11 +399,11 @@ type MachineImplementationsActors<TContext extends MachineContext, TResolvedType
|
|
|
432
399
|
input: Mapper<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActors, K>, InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>> | InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>;
|
|
433
400
|
};
|
|
434
401
|
};
|
|
435
|
-
type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
436
|
-
[K in keyof
|
|
402
|
+
type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
|
|
403
|
+
[K in keyof TIndexedDelays]?: DelayConfig<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingDelays, K>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject> | undefined>;
|
|
437
404
|
};
|
|
438
|
-
type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
439
|
-
[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>>;
|
|
440
407
|
};
|
|
441
408
|
type MakeKeysRequired<T extends string> = {
|
|
442
409
|
[K in T]: unknown;
|
|
@@ -456,17 +423,17 @@ type GenerateDelaysImplementationsPart<TContext extends MachineContext, TResolve
|
|
|
456
423
|
type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
|
|
457
424
|
guards?: MachineImplementationsGuards<TContext, TResolvedTypesMeta>;
|
|
458
425
|
}>;
|
|
459
|
-
export type InternalMachineImplementations<TContext extends MachineContext, TEvent extends EventObject,
|
|
460
|
-
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, TDelay extends string, 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, TDelay extends string = string, TTag extends string = string, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, TEvent, TActor, TAction, TDelay, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag>>;
|
|
461
428
|
type InitialContext<TContext extends MachineContext, TInput> = TContext | ContextFactory<TContext, TInput>;
|
|
462
429
|
export type ContextFactory<TContext extends MachineContext, TInput> = ({ spawn, input }: {
|
|
463
430
|
spawn: Spawner;
|
|
464
431
|
input: TInput;
|
|
465
432
|
}) => TContext;
|
|
466
|
-
type RootStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject,
|
|
467
|
-
states?: StatesConfig<TContext, TEvent, TAction,
|
|
433
|
+
type RootStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput> = Omit<StateNodeConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TOutput>, 'states'> & {
|
|
434
|
+
states?: StatesConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TOutput> | undefined;
|
|
468
435
|
};
|
|
469
|
-
export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject,
|
|
436
|
+
export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TInput = any, TOutput = unknown, TTypesMeta = TypegenDisabled> = (RootStateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, NoInfer<TActor>, NoInfer<TAction>, NoInfer<TGuard>, NoInfer<TDelay>, NoInfer<TTag>, NoInfer<TOutput>> & {
|
|
470
437
|
/**
|
|
471
438
|
* The initial context (extended state)
|
|
472
439
|
*/
|
|
@@ -474,7 +441,7 @@ export type MachineConfig<TContext extends MachineContext, TEvent extends EventO
|
|
|
474
441
|
* The machine's own version.
|
|
475
442
|
*/
|
|
476
443
|
version?: string;
|
|
477
|
-
types?: MachineTypes<TContext, TEvent, TAction,
|
|
444
|
+
types?: MachineTypes<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TInput, TOutput, TTypesMeta>;
|
|
478
445
|
}) & (Equals<TContext, MachineContext> extends true ? {
|
|
479
446
|
context?: InitialContext<LowInfer<TContext>, TInput>;
|
|
480
447
|
} : {
|
|
@@ -485,18 +452,17 @@ export interface ProvidedActor {
|
|
|
485
452
|
logic: AnyActorLogic;
|
|
486
453
|
id?: string;
|
|
487
454
|
}
|
|
488
|
-
export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject,
|
|
455
|
+
export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TInput, TOutput, TTypesMeta = TypegenDisabled> {
|
|
489
456
|
context?: TContext;
|
|
490
|
-
actions?: TAction;
|
|
491
|
-
actors?: TActor;
|
|
492
457
|
events?: TEvent;
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
458
|
+
actors?: TActor;
|
|
459
|
+
actions?: TAction;
|
|
460
|
+
guards?: TGuard;
|
|
461
|
+
delays?: TDelay;
|
|
462
|
+
tags?: TTag;
|
|
498
463
|
input?: TInput;
|
|
499
464
|
output?: TOutput;
|
|
465
|
+
typegen?: TTypesMeta;
|
|
500
466
|
}
|
|
501
467
|
export interface HistoryStateNode<TContext extends MachineContext> extends StateNode<TContext> {
|
|
502
468
|
history: 'shallow' | 'deep';
|
|
@@ -547,16 +513,16 @@ export declare enum SpecialTargets {
|
|
|
547
513
|
Parent = "#_parent",
|
|
548
514
|
Internal = "#_internal"
|
|
549
515
|
}
|
|
550
|
-
export interface SendToActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction> {
|
|
516
|
+
export interface SendToActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay> {
|
|
551
517
|
}
|
|
552
|
-
export interface RaiseActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> {
|
|
518
|
+
export interface RaiseActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TDelay extends string> {
|
|
553
519
|
id?: string;
|
|
554
|
-
delay?:
|
|
520
|
+
delay?: Delay<TDelay> | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
|
|
555
521
|
}
|
|
556
|
-
export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction> {
|
|
522
|
+
export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay> {
|
|
557
523
|
event: TEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TEvent>;
|
|
558
524
|
}
|
|
559
|
-
export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject> extends SendToActionOptions<TContext, TExpressionEvent, TExpressionAction> {
|
|
525
|
+
export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject, TDelay extends string> extends SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay> {
|
|
560
526
|
event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent>;
|
|
561
527
|
}
|
|
562
528
|
export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction>) => Partial<TContext>;
|
|
@@ -572,18 +538,18 @@ export type Mapper<TContext extends MachineContext, TEvent extends EventObject,
|
|
|
572
538
|
export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
|
|
573
539
|
[K in keyof TParams]?: Mapper<TContext, TEvent, TParams[K]> | TParams[K];
|
|
574
540
|
};
|
|
575
|
-
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO>, 'target'> {
|
|
541
|
+
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO, TODO, TODO>, 'target' | 'guard'> {
|
|
576
542
|
target: ReadonlyArray<StateNode<TContext, TEvent>> | undefined;
|
|
577
543
|
source: StateNode<TContext, TEvent>;
|
|
578
544
|
actions: readonly UnknownAction[];
|
|
579
545
|
reenter: boolean;
|
|
580
|
-
guard?:
|
|
546
|
+
guard?: UnknownGuard;
|
|
581
547
|
eventType: TEvent['type'] | '*';
|
|
582
548
|
toJSON: () => {
|
|
583
549
|
target: string[] | undefined;
|
|
584
550
|
source: string;
|
|
585
551
|
actions: readonly UnknownAction[];
|
|
586
|
-
guard?:
|
|
552
|
+
guard?: UnknownGuard;
|
|
587
553
|
eventType: TEvent['type'] | '*';
|
|
588
554
|
meta?: Record<string, any>;
|
|
589
555
|
};
|
|
@@ -617,7 +583,7 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
|
|
|
617
583
|
output?: any;
|
|
618
584
|
error?: unknown;
|
|
619
585
|
tags?: Set<string>;
|
|
620
|
-
machine?: StateMachine<TContext, TEvent, any, any, any, any>;
|
|
586
|
+
machine?: StateMachine<TContext, TEvent, any, any, any, any, any, any, any>;
|
|
621
587
|
_internalQueue?: Array<TEvent>;
|
|
622
588
|
}
|
|
623
589
|
export interface ActorOptions<TLogic extends AnyActorLogic> {
|
|
@@ -709,15 +675,24 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
|
|
|
709
675
|
src?: string;
|
|
710
676
|
}
|
|
711
677
|
export type AnyActorRef = ActorRef<any, any>;
|
|
712
|
-
export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
|
|
713
|
-
export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer _TAction, infer
|
|
678
|
+
export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
|
|
679
|
+
export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer _TInput, infer TOutput, infer TResolvedTypesMeta> ? ActorRef<TEvent, State<TContext, TEvent, TActor, TTag, 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;
|
|
714
680
|
export type DevToolsAdapter = (service: AnyActor) => void;
|
|
715
681
|
/**
|
|
716
682
|
* @deprecated Use `Actor<T>` instead.
|
|
717
683
|
*/
|
|
718
|
-
export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer _TAction, infer
|
|
719
|
-
export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TAction, infer
|
|
720
|
-
export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any,
|
|
684
|
+
export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer TInput, infer TOutput, infer TResolvedTypesMeta> ? Actor<ActorLogic<TEvent, State<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, State<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>>, ActorSystem<any>, TInput>> : never;
|
|
685
|
+
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 TDelay, infer _TTag, infer _TInput, infer _TOutput, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TActor, TAction, TDelay, TResolvedTypesMeta, TRequireMissingImplementations> : never;
|
|
686
|
+
export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, // context
|
|
687
|
+
any, // event
|
|
688
|
+
any, // actor
|
|
689
|
+
any, // action
|
|
690
|
+
any, // guard
|
|
691
|
+
any, // delay
|
|
692
|
+
any, // tag
|
|
693
|
+
any, // input
|
|
694
|
+
any, // output
|
|
695
|
+
infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
|
721
696
|
export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
|
|
722
697
|
self: ActorRef<TEvent, TSnapshot>;
|
|
723
698
|
id: string;
|
|
@@ -756,13 +731,13 @@ any, // persisted state
|
|
|
756
731
|
any, // system
|
|
757
732
|
any, // input
|
|
758
733
|
any>;
|
|
759
|
-
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
|
|
734
|
+
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 _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? StateFrom<R> : R extends ActorLogic<infer _, infer TSnapshot, infer __, infer ___, infer ____> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
|
|
760
735
|
export type EventFromLogic<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer TEvent, infer _, infer __, infer ___, infer ____> ? TEvent : never;
|
|
761
736
|
export type PersistedStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer TPersisted> ? TPersisted : never;
|
|
762
737
|
export type InternalStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer TInternalState, infer _TPersisted> ? TInternalState : never;
|
|
763
|
-
type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TAction, infer
|
|
738
|
+
type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, 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;
|
|
764
739
|
export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
|
765
|
-
export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer
|
|
740
|
+
export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? 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 _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : never : never : never;
|
|
766
741
|
export type InferEvent<E extends EventObject> = {
|
|
767
742
|
[T in E['type']]: {
|
|
768
743
|
type: T;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AnyActorLogic, AnyState } from "./index.js";
|
|
2
2
|
import type { StateNode } from "./StateNode.js";
|
|
3
|
-
import type { ActorLogic, AnyEventObject, EventObject,
|
|
3
|
+
import type { ActorLogic, AnyEventObject, EventObject, MachineContext, Mapper, Observer, ErrorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfigTarget, AnyActorRef, AnyTransitionConfig, AnyInvokeConfig } from "./types.js";
|
|
4
4
|
export declare function keys<T extends object>(value: T): Array<keyof T & string>;
|
|
5
5
|
export declare function matchesState(parentStateId: StateValue, childStateId: StateValue): boolean;
|
|
6
6
|
export declare function toStatePath(stateId: string | string[]): string[];
|
|
@@ -35,10 +35,10 @@ export declare function isArray(value: any): value is readonly any[];
|
|
|
35
35
|
export declare function isObservable<T>(value: any): value is Subscribable<T>;
|
|
36
36
|
export declare const uniqueId: () => string;
|
|
37
37
|
export declare function isErrorEvent(event: AnyEventObject): event is ErrorEvent<any>;
|
|
38
|
-
export declare function toTransitionConfigArray<TContext extends MachineContext, TEvent extends EventObject>(configLike: SingleOrArray<
|
|
38
|
+
export declare function toTransitionConfigArray<TContext extends MachineContext, TEvent extends EventObject>(configLike: SingleOrArray<AnyTransitionConfig | TransitionConfigTarget>): Array<AnyTransitionConfig>;
|
|
39
39
|
export declare function normalizeTarget<TContext extends MachineContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, TEvent>> | undefined): ReadonlyArray<string | StateNode<TContext, TEvent>> | undefined;
|
|
40
40
|
export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
|
|
41
|
-
export declare function toInvokeConfig<TContext extends MachineContext, TEvent extends EventObject>(invocable:
|
|
41
|
+
export declare function toInvokeConfig<TContext extends MachineContext, TEvent extends EventObject>(invocable: AnyInvokeConfig | string | AnyActorLogic, id: string): AnyInvokeConfig;
|
|
42
42
|
export declare function toObserver<T>(nextHandler?: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
|
|
43
43
|
export declare function createInvokeId(stateNodeId: string, index: number): string;
|
|
44
44
|
export declare function resolveReferencedActor(referenced: AnyActorLogic | {
|