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