xstate 5.0.0-beta.23 → 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-f6b5002d.development.esm.js → actions-194e6dcc.development.esm.js} +91 -134
- package/dist/{actions-0fcd4d15.development.cjs.js → actions-43f7d40e.development.cjs.js} +90 -134
- package/dist/{actions-e83129c5.cjs.js → actions-6a8cda73.cjs.js} +86 -138
- package/dist/{actions-bf7f6679.esm.js → actions-7b182232.esm.js} +87 -138
- package/dist/declarations/src/Machine.d.ts +1 -1
- package/dist/declarations/src/StateMachine.d.ts +8 -6
- package/dist/declarations/src/StateNode.d.ts +6 -6
- package/dist/declarations/src/actions/choose.d.ts +2 -2
- package/dist/declarations/src/actions/pure.d.ts +3 -2
- package/dist/declarations/src/actions/send.d.ts +1 -1
- package/dist/declarations/src/guards.d.ts +17 -8
- package/dist/declarations/src/stateUtils.d.ts +4 -4
- package/dist/declarations/src/typegenTypes.d.ts +6 -2
- package/dist/declarations/src/types.d.ts +77 -113
- package/dist/declarations/src/utils.d.ts +3 -3
- package/dist/xstate.cjs.js +5 -3
- package/dist/xstate.development.cjs.js +5 -3
- package/dist/xstate.development.esm.js +6 -4
- package/dist/xstate.esm.js +6 -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 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<{
|
|
@@ -81,11 +82,11 @@ export type ActionFunction<TContext extends MachineContext, TExpressionEvent ext
|
|
|
81
82
|
_out_TEvent?: TEvent;
|
|
82
83
|
_out_TAction?: TAction;
|
|
83
84
|
};
|
|
84
|
-
export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject> {
|
|
85
|
-
guard?:
|
|
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>;
|
|
86
87
|
actions: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction>;
|
|
87
88
|
}
|
|
88
|
-
type NoRequiredParams<T extends ParameterizedObject> = T extends any ? {
|
|
89
|
+
export type NoRequiredParams<T extends ParameterizedObject> = T extends any ? {
|
|
89
90
|
type: T['type'];
|
|
90
91
|
} extends T ? T['type'] : never : never;
|
|
91
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>;
|
|
@@ -102,65 +103,24 @@ export interface StateValueMap {
|
|
|
102
103
|
* - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
|
|
103
104
|
*/
|
|
104
105
|
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
106
|
export type TransitionTarget = SingleOrArray<string>;
|
|
147
|
-
export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject> {
|
|
148
|
-
guard?:
|
|
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>;
|
|
149
109
|
actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction>;
|
|
150
110
|
reenter?: boolean;
|
|
151
111
|
target?: TransitionTarget | undefined;
|
|
152
112
|
meta?: Record<string, any>;
|
|
153
113
|
description?: string;
|
|
154
114
|
}
|
|
155
|
-
export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> extends TransitionConfig<TContext, TEvent, TEvent, TAction> {
|
|
156
|
-
guard?: never;
|
|
115
|
+
export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> extends TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard> {
|
|
157
116
|
target: TransitionTarget;
|
|
158
117
|
}
|
|
118
|
+
export type AnyTransitionConfig = TransitionConfig<any, any, any, any, any>;
|
|
159
119
|
export interface InvokeMeta {
|
|
160
120
|
src: string;
|
|
161
121
|
meta: MetaObject | undefined;
|
|
162
122
|
}
|
|
163
|
-
export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> {
|
|
123
|
+
export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> {
|
|
164
124
|
id: string;
|
|
165
125
|
systemId: string | undefined;
|
|
166
126
|
/**
|
|
@@ -171,13 +131,13 @@ export interface InvokeDefinition<TContext extends MachineContext, TEvent extend
|
|
|
171
131
|
/**
|
|
172
132
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
173
133
|
*/
|
|
174
|
-
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>, DoneInvokeEvent<any>, TAction>>;
|
|
134
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>, DoneInvokeEvent<any>, TAction, TGuard>>;
|
|
175
135
|
/**
|
|
176
136
|
* The transition to take upon the invoked child machine sending an error event.
|
|
177
137
|
*/
|
|
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'>;
|
|
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'>;
|
|
181
141
|
meta: MetaObject | undefined;
|
|
182
142
|
}
|
|
183
143
|
export interface Delay {
|
|
@@ -187,7 +147,7 @@ export interface Delay {
|
|
|
187
147
|
*/
|
|
188
148
|
delay: number;
|
|
189
149
|
}
|
|
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> & {
|
|
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> & {
|
|
191
151
|
delay: number | string | ((args: UnifiedArg<TContext, TEvent>) => number);
|
|
192
152
|
}>;
|
|
193
153
|
export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
|
|
@@ -195,19 +155,19 @@ export type SingleOrArray<T> = readonly T[] | T;
|
|
|
195
155
|
export type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
196
156
|
[K in string]: StateNode<TContext, TEvent>;
|
|
197
157
|
};
|
|
198
|
-
export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TActor extends ProvidedActor, TOutput> = {
|
|
199
|
-
[K in string]: StateNodeConfig<TContext, TEvent, TAction, TActor, TOutput>;
|
|
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>;
|
|
200
160
|
};
|
|
201
161
|
export type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
202
162
|
[K in string]: StateNodeDefinition<TContext, TEvent>;
|
|
203
163
|
};
|
|
204
164
|
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>;
|
|
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>;
|
|
208
168
|
};
|
|
209
169
|
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 {
|
|
170
|
+
type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject> = TActor extends {
|
|
211
171
|
src: infer TSrc;
|
|
212
172
|
} ? Compute<{
|
|
213
173
|
systemId?: string;
|
|
@@ -219,12 +179,12 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
|
|
|
219
179
|
/**
|
|
220
180
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
221
181
|
*/
|
|
222
|
-
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent, TAction>>;
|
|
182
|
+
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent, TAction, TGuard>>;
|
|
223
183
|
/**
|
|
224
184
|
* The transition to take upon the invoked child machine sending an error event.
|
|
225
185
|
*/
|
|
226
|
-
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction>>;
|
|
227
|
-
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction>>;
|
|
186
|
+
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard>>;
|
|
187
|
+
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard>>;
|
|
228
188
|
/**
|
|
229
189
|
* Meta data related to this invocation
|
|
230
190
|
*/
|
|
@@ -242,7 +202,7 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
|
|
|
242
202
|
*/
|
|
243
203
|
id?: string;
|
|
244
204
|
})> : 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> : {
|
|
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> : {
|
|
246
206
|
/**
|
|
247
207
|
* The unique identifier for the invoked machine. If not specified, this
|
|
248
208
|
* will be the machine's own `id`, or the URL (from `src`).
|
|
@@ -257,22 +217,23 @@ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventOb
|
|
|
257
217
|
/**
|
|
258
218
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
259
219
|
*/
|
|
260
|
-
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent, TAction>>;
|
|
220
|
+
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent, TAction, TGuard>>;
|
|
261
221
|
/**
|
|
262
222
|
* The transition to take upon the invoked child machine sending an error event.
|
|
263
223
|
*/
|
|
264
|
-
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction>>;
|
|
265
|
-
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction>>;
|
|
224
|
+
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard>>;
|
|
225
|
+
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard>>;
|
|
266
226
|
/**
|
|
267
227
|
* Meta data related to this invocation
|
|
268
228
|
*/
|
|
269
229
|
meta?: MetaObject;
|
|
270
230
|
};
|
|
271
|
-
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> {
|
|
272
233
|
/**
|
|
273
234
|
* The initial state transition.
|
|
274
235
|
*/
|
|
275
|
-
initial?: InitialTransitionConfig<TContext, TEvent, TAction> | SingleOrArray<string> | undefined;
|
|
236
|
+
initial?: InitialTransitionConfig<TContext, TEvent, TAction, TGuard> | SingleOrArray<string> | undefined;
|
|
276
237
|
/**
|
|
277
238
|
* The type of this state node:
|
|
278
239
|
*
|
|
@@ -292,15 +253,15 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
292
253
|
/**
|
|
293
254
|
* The mapping of state node keys to their state node configurations (recursive).
|
|
294
255
|
*/
|
|
295
|
-
states?: StatesConfig<TContext, TEvent, TAction, TActor, NonReducibleUnknown> | undefined;
|
|
256
|
+
states?: StatesConfig<TContext, TEvent, TAction, TGuard, TActor, NonReducibleUnknown> | undefined;
|
|
296
257
|
/**
|
|
297
258
|
* The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
|
|
298
259
|
*/
|
|
299
|
-
invoke?: SingleOrArray<TActor['src'] | InvokeConfig<TContext, TEvent, TActor, TAction>>;
|
|
260
|
+
invoke?: SingleOrArray<TActor['src'] | InvokeConfig<TContext, TEvent, TActor, TAction, TGuard>>;
|
|
300
261
|
/**
|
|
301
262
|
* The mapping of event types to their potential transition(s).
|
|
302
263
|
*/
|
|
303
|
-
on?: TransitionsConfig<TContext, TEvent, TAction>;
|
|
264
|
+
on?: TransitionsConfig<TContext, TEvent, TAction, TGuard>;
|
|
304
265
|
/**
|
|
305
266
|
* The action(s) to be executed upon entering the state node.
|
|
306
267
|
*/
|
|
@@ -314,16 +275,16 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
314
275
|
*
|
|
315
276
|
* This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
|
|
316
277
|
*/
|
|
317
|
-
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject, DoneEventObject, TAction>> | undefined;
|
|
278
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject, DoneEventObject, TAction, TGuard>> | undefined;
|
|
318
279
|
/**
|
|
319
280
|
* The mapping (or array) of delays (in milliseconds) to their potential transition(s).
|
|
320
281
|
* The delayed transitions are taken after the specified delay in an interpreter.
|
|
321
282
|
*/
|
|
322
|
-
after?: DelayedTransitions<TContext, TEvent, TAction>;
|
|
283
|
+
after?: DelayedTransitions<TContext, TEvent, TAction, TGuard>;
|
|
323
284
|
/**
|
|
324
285
|
* An eventless transition that is always taken when this state node is active.
|
|
325
286
|
*/
|
|
326
|
-
always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction>;
|
|
287
|
+
always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction, TGuard>;
|
|
327
288
|
/**
|
|
328
289
|
* @private
|
|
329
290
|
*/
|
|
@@ -361,6 +322,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
361
322
|
*/
|
|
362
323
|
target?: string;
|
|
363
324
|
}
|
|
325
|
+
export type AnyStateNodeConfig = StateNodeConfig<any, any, any, any, any, any>;
|
|
364
326
|
export interface StateNodeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
365
327
|
id: string;
|
|
366
328
|
version?: string | undefined;
|
|
@@ -376,7 +338,7 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
|
|
|
376
338
|
meta: any;
|
|
377
339
|
order: number;
|
|
378
340
|
output?: FinalStateNodeConfig<TContext, TEvent>['output'];
|
|
379
|
-
invoke: Array<InvokeDefinition<TContext, TEvent, TODO>>;
|
|
341
|
+
invoke: Array<InvokeDefinition<TContext, TEvent, TODO, TODO>>;
|
|
380
342
|
description?: string;
|
|
381
343
|
tags: string[];
|
|
382
344
|
}
|
|
@@ -385,9 +347,9 @@ export interface StateMachineDefinition<TContext extends MachineContext, TEvent
|
|
|
385
347
|
export type AnyStateNode = StateNode<any, any>;
|
|
386
348
|
export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
|
|
387
349
|
export type AnyState = State<any, any, any, any, any>;
|
|
388
|
-
export type AnyStateMachine = StateMachine<any, any, any, any, any, any, any>;
|
|
350
|
+
export type AnyStateMachine = StateMachine<any, any, any, any, any, any, any, 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> {
|
|
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>;
|
|
370
|
+
export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO>;
|
|
409
371
|
export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
|
|
410
372
|
[K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
|
|
411
373
|
type: K;
|
|
412
374
|
} ? TAction : never, TAction>;
|
|
413
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>;
|
|
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;
|
|
@@ -435,8 +402,8 @@ type MachineImplementationsActors<TContext extends MachineContext, TResolvedType
|
|
|
435
402
|
type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
436
403
|
[K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>, 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, 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>>;
|
|
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, TActor extends ProvidedActor, TOutput> = Omit<StateNodeConfig<TContext, TEvent, TAction, TActor, TOutput>, 'states'> & {
|
|
467
|
-
states?: StatesConfig<TContext, TEvent, TAction, TActor, TOutput> | undefined;
|
|
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;
|
|
468
435
|
};
|
|
469
|
-
export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActor extends ProvidedActor = ProvidedActor, TInput = any, TOutput = unknown, TTypesMeta = TypegenDisabled> = (RootStateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, NoInfer<TAction>, NoInfer<TActor>, NoInfer<TOutput>> & {
|
|
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>> & {
|
|
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, TActor, TInput, TOutput, TTypesMeta>;
|
|
444
|
+
types?: MachineTypes<TContext, TEvent, TAction, TGuard, TActor, TInput, TOutput, TTypesMeta>;
|
|
478
445
|
}) & (Equals<TContext, MachineContext> extends true ? {
|
|
479
446
|
context?: InitialContext<LowInfer<TContext>, TInput>;
|
|
480
447
|
} : {
|
|
@@ -485,18 +452,15 @@ 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, TActor extends ProvidedActor, TInput, TOutput, 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> {
|
|
489
456
|
context?: TContext;
|
|
490
|
-
actions?: TAction;
|
|
491
|
-
actors?: TActor;
|
|
492
457
|
events?: TEvent;
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
};
|
|
497
|
-
typegen?: TTypesMeta;
|
|
458
|
+
actors?: TActor;
|
|
459
|
+
actions?: TAction;
|
|
460
|
+
guards?: TGuard;
|
|
498
461
|
input?: TInput;
|
|
499
462
|
output?: TOutput;
|
|
463
|
+
typegen?: TTypesMeta;
|
|
500
464
|
}
|
|
501
465
|
export interface HistoryStateNode<TContext extends MachineContext> extends StateNode<TContext> {
|
|
502
466
|
history: 'shallow' | 'deep';
|
|
@@ -572,18 +536,18 @@ export type Mapper<TContext extends MachineContext, TEvent extends EventObject,
|
|
|
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, TEvent, TODO>, 'target'> {
|
|
539
|
+
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO, TODO>, 'target' | 'guard'> {
|
|
576
540
|
target: ReadonlyArray<StateNode<TContext, TEvent>> | undefined;
|
|
577
541
|
source: StateNode<TContext, TEvent>;
|
|
578
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
549
|
actions: readonly UnknownAction[];
|
|
586
|
-
guard?:
|
|
550
|
+
guard?: UnknownGuard;
|
|
587
551
|
eventType: TEvent['type'] | '*';
|
|
588
552
|
meta?: Record<string, any>;
|
|
589
553
|
};
|
|
@@ -617,7 +581,7 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
|
|
|
617
581
|
output?: any;
|
|
618
582
|
error?: unknown;
|
|
619
583
|
tags?: Set<string>;
|
|
620
|
-
machine?: StateMachine<TContext, TEvent, any, any, any, any>;
|
|
584
|
+
machine?: StateMachine<TContext, TEvent, any, any, any, any, any, any>;
|
|
621
585
|
_internalQueue?: Array<TEvent>;
|
|
622
586
|
}
|
|
623
587
|
export interface ActorOptions<TLogic extends AnyActorLogic> {
|
|
@@ -709,15 +673,15 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
|
|
|
709
673
|
src?: string;
|
|
710
674
|
}
|
|
711
675
|
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
|
|
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;
|
|
714
678
|
export type DevToolsAdapter = (service: AnyActor) => void;
|
|
715
679
|
/**
|
|
716
680
|
* @deprecated Use `Actor<T>` instead.
|
|
717
681
|
*/
|
|
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, any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : 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;
|
|
721
685
|
export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
|
|
722
686
|
self: ActorRef<TEvent, TSnapshot>;
|
|
723
687
|
id: string;
|
|
@@ -756,13 +720,13 @@ any, // persisted state
|
|
|
756
720
|
any, // system
|
|
757
721
|
any, // input
|
|
758
722
|
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 _, 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;
|
|
760
724
|
export type EventFromLogic<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer TEvent, infer _, infer __, infer ___, infer ____> ? TEvent : never;
|
|
761
725
|
export type PersistedStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer TPersisted> ? TPersisted : never;
|
|
762
726
|
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
|
|
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;
|
|
764
728
|
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 _, 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 _TAction, 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;
|
|
766
730
|
export type InferEvent<E extends EventObject> = {
|
|
767
731
|
[T in E['type']]: {
|
|
768
732
|
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 | {
|
package/dist/xstate.cjs.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var actors_dist_xstateActors = require('./actions-
|
|
5
|
+
var actors_dist_xstateActors = require('./actions-6a8cda73.cjs.js');
|
|
6
6
|
require('../dev/dist/xstate-dev.cjs.js');
|
|
7
7
|
|
|
8
8
|
const EMPTY_OBJECT = {};
|
|
@@ -270,7 +270,8 @@ class StateNode {
|
|
|
270
270
|
try {
|
|
271
271
|
guardPassed = !guard || actors_dist_xstateActors.evaluateGuard(guard, resolvedContext, event, state);
|
|
272
272
|
} catch (err) {
|
|
273
|
-
|
|
273
|
+
const guardType = typeof guard === 'string' ? guard : typeof guard === 'object' ? guard.type : undefined;
|
|
274
|
+
throw new Error(`Unable to evaluate guard ${guardType ? `'${guardType}' ` : ''}in transition for event '${eventType}' in state node '${this.id}':\n${err.message}`);
|
|
274
275
|
}
|
|
275
276
|
if (guardPassed) {
|
|
276
277
|
actions.push(...candidate.actions);
|
|
@@ -362,8 +363,9 @@ class StateMachine {
|
|
|
362
363
|
this.events = void 0;
|
|
363
364
|
this.__TContext = void 0;
|
|
364
365
|
this.__TEvent = void 0;
|
|
365
|
-
this.__TAction = void 0;
|
|
366
366
|
this.__TActor = void 0;
|
|
367
|
+
this.__TAction = void 0;
|
|
368
|
+
this.__TGuard = void 0;
|
|
367
369
|
this.__TInput = void 0;
|
|
368
370
|
this.__TOutput = void 0;
|
|
369
371
|
this.__TResolvedTypesMeta = void 0;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var actors_dist_xstateActors = require('./actions-
|
|
5
|
+
var actors_dist_xstateActors = require('./actions-43f7d40e.development.cjs.js');
|
|
6
6
|
require('../dev/dist/xstate-dev.development.cjs.js');
|
|
7
7
|
|
|
8
8
|
const EMPTY_OBJECT = {};
|
|
@@ -270,7 +270,8 @@ class StateNode {
|
|
|
270
270
|
try {
|
|
271
271
|
guardPassed = !guard || actors_dist_xstateActors.evaluateGuard(guard, resolvedContext, event, state);
|
|
272
272
|
} catch (err) {
|
|
273
|
-
|
|
273
|
+
const guardType = typeof guard === 'string' ? guard : typeof guard === 'object' ? guard.type : undefined;
|
|
274
|
+
throw new Error(`Unable to evaluate guard ${guardType ? `'${guardType}' ` : ''}in transition for event '${eventType}' in state node '${this.id}':\n${err.message}`);
|
|
274
275
|
}
|
|
275
276
|
if (guardPassed) {
|
|
276
277
|
actions.push(...candidate.actions);
|
|
@@ -362,8 +363,9 @@ class StateMachine {
|
|
|
362
363
|
this.events = void 0;
|
|
363
364
|
this.__TContext = void 0;
|
|
364
365
|
this.__TEvent = void 0;
|
|
365
|
-
this.__TAction = void 0;
|
|
366
366
|
this.__TActor = void 0;
|
|
367
|
+
this.__TAction = void 0;
|
|
368
|
+
this.__TGuard = void 0;
|
|
367
369
|
this.__TInput = void 0;
|
|
368
370
|
this.__TOutput = void 0;
|
|
369
371
|
this.__TResolvedTypesMeta = void 0;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, c as memo, e as evaluateGuard, d as flatten, g as createInvokeId, h as getDelayedTransitions, i as formatInitialTransition, j as getCandidates, k as toInvokeConfig, l as getConfiguration, n as getStateNodes, r as resolveStateValue, o as isInFinalState, p as State, q as isErrorEvent, s as cloneState, u as macrostep, v as transitionNode, w as getInitialConfiguration, x as resolveActionsAndContext, y as assign, z as createInitEvent, A as microstep, B as isAtomicStateNode, C as isStateId, D as getStateNodeByPath, E as getPersistedState, F as resolveReferencedActor, G as createActor, H as matchesState } from './actions-
|
|
2
|
-
export { M as Actor, O as ActorStatus, a7 as ConstantPrefix, P as InterpreterStatus, a8 as SpecialTargets, p as State, a5 as and, y as assign, R as cancel, T as choose, G as createActor, Q as doneInvoke, K as forwardTo, a0 as fromCallback, a1 as fromEventObservable, $ as fromObservable, _ as fromPromise, a2 as fromTransition, n as getStateNodes, L as interpret, U as log, H as matchesState, a4 as not, a6 as or, Y as pathToStateValue, V as pure, W as raise, J as sendParent, I as sendTo, a3 as stateIn, X as stop, Z as toObserver } from './actions-
|
|
1
|
+
import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, c as memo, e as evaluateGuard, d as flatten, g as createInvokeId, h as getDelayedTransitions, i as formatInitialTransition, j as getCandidates, k as toInvokeConfig, l as getConfiguration, n as getStateNodes, r as resolveStateValue, o as isInFinalState, p as State, q as isErrorEvent, s as cloneState, u as macrostep, v as transitionNode, w as getInitialConfiguration, x as resolveActionsAndContext, y as assign, z as createInitEvent, A as microstep, B as isAtomicStateNode, C as isStateId, D as getStateNodeByPath, E as getPersistedState, F as resolveReferencedActor, G as createActor, H as matchesState } from './actions-194e6dcc.development.esm.js';
|
|
2
|
+
export { M as Actor, O as ActorStatus, a7 as ConstantPrefix, P as InterpreterStatus, a8 as SpecialTargets, p as State, a5 as and, y as assign, R as cancel, T as choose, G as createActor, Q as doneInvoke, K as forwardTo, a0 as fromCallback, a1 as fromEventObservable, $ as fromObservable, _ as fromPromise, a2 as fromTransition, n as getStateNodes, L as interpret, U as log, H as matchesState, a4 as not, a6 as or, Y as pathToStateValue, V as pure, W as raise, J as sendParent, I as sendTo, a3 as stateIn, X as stop, Z as toObserver } from './actions-194e6dcc.development.esm.js';
|
|
3
3
|
import '../dev/dist/xstate-dev.development.esm.js';
|
|
4
4
|
|
|
5
5
|
const EMPTY_OBJECT = {};
|
|
@@ -267,7 +267,8 @@ class StateNode {
|
|
|
267
267
|
try {
|
|
268
268
|
guardPassed = !guard || evaluateGuard(guard, resolvedContext, event, state);
|
|
269
269
|
} catch (err) {
|
|
270
|
-
|
|
270
|
+
const guardType = typeof guard === 'string' ? guard : typeof guard === 'object' ? guard.type : undefined;
|
|
271
|
+
throw new Error(`Unable to evaluate guard ${guardType ? `'${guardType}' ` : ''}in transition for event '${eventType}' in state node '${this.id}':\n${err.message}`);
|
|
271
272
|
}
|
|
272
273
|
if (guardPassed) {
|
|
273
274
|
actions.push(...candidate.actions);
|
|
@@ -359,8 +360,9 @@ class StateMachine {
|
|
|
359
360
|
this.events = void 0;
|
|
360
361
|
this.__TContext = void 0;
|
|
361
362
|
this.__TEvent = void 0;
|
|
362
|
-
this.__TAction = void 0;
|
|
363
363
|
this.__TActor = void 0;
|
|
364
|
+
this.__TAction = void 0;
|
|
365
|
+
this.__TGuard = void 0;
|
|
364
366
|
this.__TInput = void 0;
|
|
365
367
|
this.__TOutput = void 0;
|
|
366
368
|
this.__TResolvedTypesMeta = void 0;
|
package/dist/xstate.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, c as memo, e as evaluateGuard, d as flatten, g as createInvokeId, h as getDelayedTransitions, i as formatInitialTransition, j as getCandidates, k as toInvokeConfig, l as getConfiguration, n as getStateNodes, r as resolveStateValue, o as isInFinalState, p as State, q as isErrorEvent, s as cloneState, u as macrostep, v as transitionNode, w as getInitialConfiguration, x as resolveActionsAndContext, y as assign, z as createInitEvent, A as microstep, B as isAtomicStateNode, C as isStateId, D as getStateNodeByPath, E as getPersistedState, F as resolveReferencedActor, G as createActor, H as matchesState } from './actions-
|
|
2
|
-
export { M as Actor, O as ActorStatus, a7 as ConstantPrefix, P as InterpreterStatus, a8 as SpecialTargets, p as State, a5 as and, y as assign, R as cancel, T as choose, G as createActor, Q as doneInvoke, K as forwardTo, a0 as fromCallback, a1 as fromEventObservable, $ as fromObservable, _ as fromPromise, a2 as fromTransition, n as getStateNodes, L as interpret, U as log, H as matchesState, a4 as not, a6 as or, Y as pathToStateValue, V as pure, W as raise, J as sendParent, I as sendTo, a3 as stateIn, X as stop, Z as toObserver } from './actions-
|
|
1
|
+
import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, c as memo, e as evaluateGuard, d as flatten, g as createInvokeId, h as getDelayedTransitions, i as formatInitialTransition, j as getCandidates, k as toInvokeConfig, l as getConfiguration, n as getStateNodes, r as resolveStateValue, o as isInFinalState, p as State, q as isErrorEvent, s as cloneState, u as macrostep, v as transitionNode, w as getInitialConfiguration, x as resolveActionsAndContext, y as assign, z as createInitEvent, A as microstep, B as isAtomicStateNode, C as isStateId, D as getStateNodeByPath, E as getPersistedState, F as resolveReferencedActor, G as createActor, H as matchesState } from './actions-7b182232.esm.js';
|
|
2
|
+
export { M as Actor, O as ActorStatus, a7 as ConstantPrefix, P as InterpreterStatus, a8 as SpecialTargets, p as State, a5 as and, y as assign, R as cancel, T as choose, G as createActor, Q as doneInvoke, K as forwardTo, a0 as fromCallback, a1 as fromEventObservable, $ as fromObservable, _ as fromPromise, a2 as fromTransition, n as getStateNodes, L as interpret, U as log, H as matchesState, a4 as not, a6 as or, Y as pathToStateValue, V as pure, W as raise, J as sendParent, I as sendTo, a3 as stateIn, X as stop, Z as toObserver } from './actions-7b182232.esm.js';
|
|
3
3
|
import '../dev/dist/xstate-dev.esm.js';
|
|
4
4
|
|
|
5
5
|
const EMPTY_OBJECT = {};
|
|
@@ -267,7 +267,8 @@ class StateNode {
|
|
|
267
267
|
try {
|
|
268
268
|
guardPassed = !guard || evaluateGuard(guard, resolvedContext, event, state);
|
|
269
269
|
} catch (err) {
|
|
270
|
-
|
|
270
|
+
const guardType = typeof guard === 'string' ? guard : typeof guard === 'object' ? guard.type : undefined;
|
|
271
|
+
throw new Error(`Unable to evaluate guard ${guardType ? `'${guardType}' ` : ''}in transition for event '${eventType}' in state node '${this.id}':\n${err.message}`);
|
|
271
272
|
}
|
|
272
273
|
if (guardPassed) {
|
|
273
274
|
actions.push(...candidate.actions);
|
|
@@ -359,8 +360,9 @@ class StateMachine {
|
|
|
359
360
|
this.events = void 0;
|
|
360
361
|
this.__TContext = void 0;
|
|
361
362
|
this.__TEvent = void 0;
|
|
362
|
-
this.__TAction = void 0;
|
|
363
363
|
this.__TActor = void 0;
|
|
364
|
+
this.__TAction = void 0;
|
|
365
|
+
this.__TGuard = void 0;
|
|
364
366
|
this.__TInput = void 0;
|
|
365
367
|
this.__TOutput = void 0;
|
|
366
368
|
this.__TResolvedTypesMeta = void 0;
|