xstate 5.0.0-alpha.1 → 5.0.0-alpha.2
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-b08d0da8.cjs.dev.js → actions-1e9778c2.cjs.dev.js} +1049 -1467
- package/dist/{actions-b673cb13.esm.js → actions-9778f6fb.esm.js} +1052 -1466
- package/dist/{actions-7ea9280f.cjs.prod.js → actions-acb29ffe.cjs.prod.js} +1044 -1456
- 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 +2 -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 +272 -265
- 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 +139 -217
- package/dist/xstate.cjs.prod.js +138 -216
- package/dist/xstate.esm.js +137 -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,63 @@ 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 BaseDynamicActionObject<TContext extends MachineContext, TEvent extends EventObject, TResolvedAction extends BaseActionObject, TDynamicParams extends Record<string, any>> {
|
|
54
|
+
export interface BaseDynamicActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TResolvedAction extends BaseActionObject, TDynamicParams extends Record<string, any>> {
|
|
53
55
|
type: `xstate.${string}`;
|
|
54
56
|
params: TDynamicParams;
|
|
55
|
-
resolve: (_event: SCXML.Event<
|
|
57
|
+
resolve: (_event: SCXML.Event<TExpressionEvent>, extra: {
|
|
56
58
|
state: State<TContext, TEvent>;
|
|
57
59
|
/**
|
|
58
60
|
* The original action object
|
|
59
61
|
*/
|
|
60
|
-
action:
|
|
61
|
-
actorContext:
|
|
62
|
+
action: ParameterizedObject;
|
|
63
|
+
actorContext: AnyActorContext | undefined;
|
|
62
64
|
}) => [AnyState, TResolvedAction];
|
|
65
|
+
/** @deprecated an internal signature that doesn't exist at runtime. Its existence helps TS to choose a better code path in the inference algorithm */
|
|
66
|
+
(arg: TContext, ev: TExpressionEvent, meta: ActionMeta<TContext, TEvent, ParameterizedObject>): void;
|
|
63
67
|
}
|
|
64
|
-
export
|
|
65
|
-
export interface ActionMeta<TContext extends MachineContext, TEvent extends EventObject, TAction extends
|
|
68
|
+
export type MachineContext = Record<string, any>;
|
|
69
|
+
export interface ActionMeta<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> extends StateMeta<TContext, TEvent> {
|
|
66
70
|
action: TAction;
|
|
67
71
|
_event: SCXML.Event<TEvent>;
|
|
68
72
|
}
|
|
69
|
-
export
|
|
70
|
-
behavior: T,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
export type Spawner = <T extends ActorBehavior<any, any> | string>(// TODO: read string from machine behavior keys
|
|
74
|
+
behavior: T, options?: Partial<{
|
|
75
|
+
id: string;
|
|
76
|
+
input: any;
|
|
77
|
+
}>) => T extends ActorBehavior<infer TActorEvent, infer TActorEmitted> ? ActorRef<TActorEvent, TActorEmitted> : ActorRef<any, any>;
|
|
78
|
+
export interface AssignMeta<TContext extends MachineContext, TExpressionEvent extends EventObject, _TEvent extends EventObject> extends StateMeta<TContext, TExpressionEvent> {
|
|
73
79
|
action: BaseActionObject;
|
|
74
|
-
_event: SCXML.Event<
|
|
80
|
+
_event: SCXML.Event<TExpressionEvent>;
|
|
75
81
|
spawn: Spawner;
|
|
76
82
|
}
|
|
77
|
-
export
|
|
78
|
-
bivarianceHack(context: TContext, event:
|
|
83
|
+
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TEvent extends EventObject = TExpressionEvent> = {
|
|
84
|
+
bivarianceHack(context: TContext, event: TExpressionEvent, meta: ActionMeta<TContext, TEvent, TAction>): void;
|
|
79
85
|
}['bivarianceHack'];
|
|
80
|
-
export interface ChooseCondition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
86
|
+
export interface ChooseCondition<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> {
|
|
81
87
|
guard?: GuardConfig<TContext, TEvent>;
|
|
82
|
-
actions: Actions<TContext, TEvent>;
|
|
88
|
+
actions: Actions<TContext, TExpressionEvent, TEvent>;
|
|
83
89
|
}
|
|
84
|
-
export
|
|
90
|
+
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
91
|
/**
|
|
86
92
|
* Extracts action objects that have no extra properties.
|
|
87
93
|
*/
|
|
88
|
-
|
|
89
|
-
export
|
|
90
|
-
any> | TAction | SimpleActionsFrom<TAction>['type'] | ActionFunction<TContext, TEvent>;
|
|
91
|
-
export
|
|
92
|
-
export
|
|
93
|
-
export
|
|
94
|
+
type SimpleActionsFrom<T extends ParameterizedObject> = ParameterizedObject extends T ? T : ExtractWithSimpleSupport<T>;
|
|
95
|
+
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
|
|
96
|
+
any> | TAction | SimpleActionsFrom<TAction>['type'] | ActionFunction<TContext, TExpressionEvent, TAction, TEvent>;
|
|
97
|
+
export type BaseActions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject> = SingleOrArray<BaseAction<TContext, TExpressionEvent, TAction, TEvent>>;
|
|
98
|
+
export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<Action<TContext, TEvent>>;
|
|
99
|
+
export type StateKey = string | AnyState;
|
|
94
100
|
export interface StateValueMap {
|
|
95
101
|
[key: string]: StateValue;
|
|
96
102
|
}
|
|
@@ -100,26 +106,24 @@ export interface StateValueMap {
|
|
|
100
106
|
* - For a child atomic state node, this is a string, e.g., `"pending"`.
|
|
101
107
|
* - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
|
|
102
108
|
*/
|
|
103
|
-
export
|
|
104
|
-
export
|
|
105
|
-
export interface DefaultGuardObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
106
|
-
type: string;
|
|
107
|
-
params?: {
|
|
108
|
-
[key: string]: any;
|
|
109
|
-
};
|
|
109
|
+
export type StateValue = string | StateValueMap;
|
|
110
|
+
export type GuardPredicate<TContext extends MachineContext, TEvent extends EventObject> = (context: TContext, event: TEvent, meta: GuardMeta<TContext, TEvent>) => boolean;
|
|
111
|
+
export interface DefaultGuardObject<TContext extends MachineContext, TEvent extends EventObject> extends ParameterizedObject {
|
|
110
112
|
/**
|
|
111
113
|
* Nested guards
|
|
112
114
|
*/
|
|
113
115
|
children?: Array<GuardObject<TContext, TEvent>>;
|
|
114
116
|
predicate?: GuardPredicate<TContext, TEvent>;
|
|
115
117
|
}
|
|
116
|
-
export
|
|
117
|
-
export interface GuardMeta<TContext extends MachineContext, TEvent extends EventObject>
|
|
118
|
+
export type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>) => boolean;
|
|
119
|
+
export interface GuardMeta<TContext extends MachineContext, TEvent extends EventObject> {
|
|
120
|
+
state: State<TContext, TEvent, any>;
|
|
121
|
+
_event: SCXML.Event<TEvent>;
|
|
118
122
|
guard: GuardDefinition<TContext, TEvent>;
|
|
119
123
|
evaluate: GuardEvaluator<TContext, TEvent>;
|
|
120
124
|
}
|
|
121
|
-
export
|
|
122
|
-
export
|
|
125
|
+
export type GuardConfig<TContext extends MachineContext, TEvent extends EventObject> = string | GuardPredicate<TContext, TEvent> | GuardObject<TContext, TEvent>;
|
|
126
|
+
export type GuardObject<TContext extends MachineContext, TEvent extends EventObject> = BooleanGuardObject<TContext, TEvent> | DefaultGuardObject<TContext, TEvent>;
|
|
123
127
|
export interface GuardDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
124
128
|
type: string;
|
|
125
129
|
children?: Array<GuardDefinition<TContext, TEvent>>;
|
|
@@ -128,7 +132,7 @@ export interface GuardDefinition<TContext extends MachineContext, TEvent extends
|
|
|
128
132
|
[key: string]: any;
|
|
129
133
|
};
|
|
130
134
|
}
|
|
131
|
-
export interface BooleanGuardObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
135
|
+
export interface BooleanGuardObject<TContext extends MachineContext, TEvent extends EventObject> extends ParameterizedObject {
|
|
132
136
|
type: 'xstate.boolean';
|
|
133
137
|
children: Array<GuardConfig<TContext, TEvent>>;
|
|
134
138
|
params: {
|
|
@@ -142,65 +146,55 @@ export interface BooleanGuardDefinition<TContext extends MachineContext, TEvent
|
|
|
142
146
|
op: 'and' | 'or' | 'not';
|
|
143
147
|
};
|
|
144
148
|
}
|
|
145
|
-
export
|
|
146
|
-
export
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
target?: TransitionTarget<TContext, TEvent> | undefined;
|
|
149
|
+
export type TransitionTarget = SingleOrArray<string>;
|
|
150
|
+
export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject> {
|
|
151
|
+
guard?: GuardConfig<TContext, TExpressionEvent>;
|
|
152
|
+
actions?: BaseActions<TContext, TExpressionEvent, TEvent, TAction>;
|
|
153
|
+
external?: boolean;
|
|
154
|
+
target?: TransitionTarget | undefined;
|
|
152
155
|
meta?: Record<string, any>;
|
|
153
156
|
description?: string;
|
|
154
157
|
}
|
|
155
158
|
export interface TargetTransitionConfig<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
|
|
156
|
-
target: TransitionTarget
|
|
159
|
+
target: TransitionTarget;
|
|
157
160
|
}
|
|
158
|
-
export
|
|
161
|
+
export type ConditionalTransitionConfig<TContext extends MachineContext, TEvent extends EventObject = EventObject> = Array<TransitionConfig<TContext, TEvent>>;
|
|
159
162
|
export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
|
|
160
163
|
guard?: never;
|
|
161
|
-
target: TransitionTarget
|
|
164
|
+
target: TransitionTarget;
|
|
162
165
|
}
|
|
163
|
-
export
|
|
164
|
-
|
|
166
|
+
export type Transition<TContext extends MachineContext, TEvent extends EventObject = EventObject> = string | TransitionConfig<TContext, TEvent> | ConditionalTransitionConfig<TContext, TEvent>;
|
|
167
|
+
type ExtractWithSimpleSupport<T extends {
|
|
165
168
|
type: string;
|
|
166
169
|
}> = T extends any ? {
|
|
167
170
|
type: T['type'];
|
|
168
171
|
} extends T ? T : never : never;
|
|
169
|
-
export
|
|
172
|
+
export type Receiver<TEvent extends EventObject> = (listener: {
|
|
170
173
|
bivarianceHack(event: TEvent): void;
|
|
171
174
|
}['bivarianceHack']) => void;
|
|
172
|
-
export
|
|
173
|
-
|
|
175
|
+
export type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (sendBack: (event: TSentEvent) => void, onReceive: Receiver<TEvent>, { input }: {
|
|
176
|
+
input: any;
|
|
177
|
+
}) => (() => void) | Promise<any> | void;
|
|
178
|
+
export type ActorBehaviorCreator<TContext extends MachineContext, TEvent extends EventObject, TActorBehavior extends AnyActorBehavior = AnyActorBehavior> = (context: TContext, event: TEvent, meta: {
|
|
174
179
|
id: string;
|
|
175
180
|
data?: any;
|
|
176
|
-
src:
|
|
181
|
+
src: string;
|
|
177
182
|
_event: SCXML.Event<TEvent>;
|
|
178
183
|
meta: MetaObject | undefined;
|
|
179
|
-
|
|
184
|
+
input: any;
|
|
185
|
+
}) => TActorBehavior;
|
|
180
186
|
export interface InvokeMeta {
|
|
181
|
-
|
|
182
|
-
src: InvokeSourceDefinition;
|
|
187
|
+
src: string;
|
|
183
188
|
meta: MetaObject | undefined;
|
|
184
189
|
}
|
|
185
190
|
export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
186
191
|
id: string;
|
|
192
|
+
systemId: string | undefined;
|
|
187
193
|
/**
|
|
188
194
|
* The source of the actor's behavior to be invoked
|
|
189
195
|
*/
|
|
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>;
|
|
196
|
+
src: string;
|
|
197
|
+
input?: Mapper<TContext, TEvent, any> | any;
|
|
204
198
|
/**
|
|
205
199
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
206
200
|
*/
|
|
@@ -220,73 +214,58 @@ export interface Delay {
|
|
|
220
214
|
*/
|
|
221
215
|
delay: number;
|
|
222
216
|
}
|
|
223
|
-
export
|
|
217
|
+
export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent>>> | Array<TransitionConfig<TContext, TEvent> & {
|
|
224
218
|
delay: number | string | Expr<TContext, TEvent, number>;
|
|
225
219
|
}>;
|
|
226
|
-
export
|
|
227
|
-
export
|
|
228
|
-
export
|
|
220
|
+
export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
|
|
221
|
+
export type SingleOrArray<T> = T[] | T;
|
|
222
|
+
export type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
229
223
|
[K in string]: StateNode<TContext, TEvent>;
|
|
230
224
|
};
|
|
231
|
-
export
|
|
225
|
+
export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
|
|
232
226
|
[K in string]: StateNodeConfig<TContext, TEvent, TAction>;
|
|
233
227
|
};
|
|
234
|
-
export
|
|
228
|
+
export type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
235
229
|
[K in string]: StateNodeDefinition<TContext, TEvent>;
|
|
236
230
|
};
|
|
237
|
-
export
|
|
238
|
-
export
|
|
239
|
-
export
|
|
240
|
-
[K in TEvent['type'] | '' | '*']?: K extends '' | '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K
|
|
231
|
+
export type TransitionConfigTarget = string | undefined;
|
|
232
|
+
export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent>>;
|
|
233
|
+
export type TransitionsConfigMap<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
234
|
+
[K in TEvent['type'] | '' | '*']?: K extends '' | '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent>;
|
|
241
235
|
};
|
|
242
|
-
|
|
236
|
+
type TransitionsConfigArray<TContext extends MachineContext, TEvent extends EventObject> = Array<(TEvent extends EventObject ? TransitionConfig<TContext, TEvent> & {
|
|
243
237
|
event: TEvent['type'];
|
|
244
238
|
} : never) | (TransitionConfig<TContext, TEvent> & {
|
|
245
239
|
event: '*';
|
|
246
240
|
})>;
|
|
247
|
-
export
|
|
248
|
-
export interface InvokeSourceDefinition {
|
|
249
|
-
[key: string]: any;
|
|
250
|
-
type: string;
|
|
251
|
-
}
|
|
241
|
+
export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = TransitionsConfigMap<TContext, TEvent> | TransitionsConfigArray<TContext, TEvent>;
|
|
252
242
|
export interface InvokeConfig<TContext extends MachineContext, TEvent extends EventObject> {
|
|
253
243
|
/**
|
|
254
244
|
* The unique identifier for the invoked machine. If not specified, this
|
|
255
245
|
* will be the machine's own `id`, or the URL (from `src`).
|
|
256
246
|
*/
|
|
257
247
|
id?: string;
|
|
248
|
+
systemId?: string;
|
|
258
249
|
/**
|
|
259
250
|
* The source of the machine to be invoked, or the machine itself.
|
|
260
251
|
*/
|
|
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>;
|
|
252
|
+
src: string | ActorBehavior<any, any>;
|
|
253
|
+
input?: Mapper<TContext, TEvent, any> | any;
|
|
275
254
|
/**
|
|
276
255
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
277
256
|
*/
|
|
278
|
-
onDone?: string | SingleOrArray<
|
|
257
|
+
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent>>;
|
|
279
258
|
/**
|
|
280
259
|
* The transition to take upon the invoked child machine sending an error event.
|
|
281
260
|
*/
|
|
282
|
-
onError?: string | SingleOrArray<
|
|
283
|
-
onSnapshot?: string | SingleOrArray<
|
|
261
|
+
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent>>;
|
|
262
|
+
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent>>;
|
|
284
263
|
/**
|
|
285
264
|
* Meta data related to this invocation
|
|
286
265
|
*/
|
|
287
266
|
meta?: MetaObject;
|
|
288
267
|
}
|
|
289
|
-
export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends
|
|
268
|
+
export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> {
|
|
290
269
|
/**
|
|
291
270
|
* The initial state transition.
|
|
292
271
|
*/
|
|
@@ -314,7 +293,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
314
293
|
/**
|
|
315
294
|
* The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
|
|
316
295
|
*/
|
|
317
|
-
invoke?: SingleOrArray<string |
|
|
296
|
+
invoke?: SingleOrArray<string | InvokeConfig<TContext, TEvent>>;
|
|
318
297
|
/**
|
|
319
298
|
* The mapping of event types to their potential transition(s).
|
|
320
299
|
*/
|
|
@@ -322,11 +301,11 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
322
301
|
/**
|
|
323
302
|
* The action(s) to be executed upon entering the state node.
|
|
324
303
|
*/
|
|
325
|
-
entry?: BaseActions<TContext, TEvent, TAction>;
|
|
304
|
+
entry?: BaseActions<TContext, TEvent, TEvent, TAction>;
|
|
326
305
|
/**
|
|
327
306
|
* The action(s) to be executed upon exiting the state node.
|
|
328
307
|
*/
|
|
329
|
-
exit?: BaseActions<TContext, TEvent, TAction>;
|
|
308
|
+
exit?: BaseActions<TContext, TEvent, TEvent, TAction>;
|
|
330
309
|
/**
|
|
331
310
|
* The potential transition(s) to be taken upon reaching a final child state node.
|
|
332
311
|
*
|
|
@@ -406,11 +385,11 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
|
|
|
406
385
|
export interface StateMachineDefinition<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeDefinition<TContext, TEvent> {
|
|
407
386
|
context: TContext;
|
|
408
387
|
}
|
|
409
|
-
export
|
|
410
|
-
export
|
|
411
|
-
export
|
|
412
|
-
export
|
|
413
|
-
export
|
|
388
|
+
export type AnyStateNode = StateNode<any, any>;
|
|
389
|
+
export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
|
|
390
|
+
export type AnyState = State<any, any, any>;
|
|
391
|
+
export type AnyStateMachine = StateMachine<any, any, any, any, any>;
|
|
392
|
+
export type AnyStateConfig = StateConfig<any, AnyEventObject>;
|
|
414
393
|
export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent> {
|
|
415
394
|
initial?: undefined;
|
|
416
395
|
parallel?: false | undefined;
|
|
@@ -429,59 +408,66 @@ export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent ex
|
|
|
429
408
|
*/
|
|
430
409
|
data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
|
|
431
410
|
}
|
|
432
|
-
export
|
|
433
|
-
export
|
|
434
|
-
[K in TAction['type']]?: BaseDynamicActionObject<TContext, TEvent, TAction, any> | ActionFunction<TContext, TEvent, TAction extends {
|
|
411
|
+
export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent>;
|
|
412
|
+
export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
|
|
413
|
+
[K in TAction['type']]?: BaseDynamicActionObject<TContext, TEvent, TEvent, TAction, any> | ActionFunction<TContext, TEvent, TAction extends {
|
|
435
414
|
type: K;
|
|
436
415
|
} ? TAction : never>;
|
|
437
416
|
};
|
|
438
|
-
export
|
|
439
|
-
export
|
|
440
|
-
export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends
|
|
417
|
+
export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
|
|
418
|
+
export type DelayConfig<TContext extends MachineContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
|
|
419
|
+
export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> {
|
|
441
420
|
guards: Record<string, GuardPredicate<TContext, TEvent>>;
|
|
442
421
|
actions: ActionFunctionMap<TContext, TEvent, TAction>;
|
|
443
|
-
actors: Record<string,
|
|
422
|
+
actors: Record<string, AnyActorBehavior | {
|
|
423
|
+
src: AnyActorBehavior;
|
|
424
|
+
input: Mapper<TContext, TEvent, any> | any;
|
|
425
|
+
}>;
|
|
444
426
|
delays: DelayFunctionMap<TContext, TEvent>;
|
|
445
|
-
context: Partial<TContext> | ContextFactory<Partial<TContext>>;
|
|
446
427
|
}
|
|
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>,
|
|
428
|
+
type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
429
|
+
[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
|
|
430
|
+
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`
|
|
431
|
+
Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>>;
|
|
450
432
|
};
|
|
451
|
-
|
|
433
|
+
type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
452
434
|
[K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
|
|
453
435
|
};
|
|
454
|
-
|
|
436
|
+
type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
455
437
|
[K in keyof TEventsCausingGuards]?: GuardPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
|
|
456
438
|
};
|
|
457
|
-
|
|
458
|
-
[K in keyof TEventsCausingActors]?:
|
|
439
|
+
type MachineImplementationsActors<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActors'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
|
|
440
|
+
[K in keyof TEventsCausingActors]?: AnyActorBehavior | {
|
|
441
|
+
src: AnyActorBehavior;
|
|
442
|
+
input: Mapper<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActors[K]>, EventObject>, any> | any;
|
|
443
|
+
};
|
|
459
444
|
};
|
|
460
|
-
|
|
445
|
+
type MakeKeysRequired<T extends string> = {
|
|
461
446
|
[K in T]: unknown;
|
|
462
447
|
};
|
|
463
|
-
|
|
448
|
+
type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
|
|
464
449
|
[K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
|
|
465
450
|
} : {};
|
|
466
|
-
|
|
451
|
+
type GenerateActionsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
|
|
467
452
|
actions?: MachineImplementationsActions<TContext, TResolvedTypesMeta>;
|
|
468
453
|
};
|
|
469
|
-
|
|
454
|
+
type GenerateDelaysImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
|
|
470
455
|
delays?: MachineImplementationsDelays<TContext, TResolvedTypesMeta>;
|
|
471
456
|
};
|
|
472
|
-
|
|
457
|
+
type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
|
|
473
458
|
guards?: MachineImplementationsGuards<TContext, TResolvedTypesMeta>;
|
|
474
459
|
};
|
|
475
|
-
|
|
460
|
+
type GenerateActorsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actors', Prop<TMissingImplementations, 'actors'>, TRequireMissingImplementations> & {
|
|
476
461
|
actors?: MachineImplementationsActors<TContext, TResolvedTypesMeta>;
|
|
477
462
|
};
|
|
478
|
-
export
|
|
479
|
-
export
|
|
480
|
-
|
|
481
|
-
export
|
|
463
|
+
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>;
|
|
464
|
+
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>>;
|
|
465
|
+
type InitialContext<TContext extends MachineContext> = TContext | ContextFactory<TContext>;
|
|
466
|
+
export type ContextFactory<TContext extends MachineContext> = ({ spawn, input }: {
|
|
482
467
|
spawn: Spawner;
|
|
468
|
+
input: any;
|
|
483
469
|
}) => TContext;
|
|
484
|
-
export interface MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends
|
|
470
|
+
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
471
|
/**
|
|
486
472
|
* The initial context (extended state)
|
|
487
473
|
*/
|
|
@@ -497,7 +483,7 @@ export interface MachineConfig<TContext extends MachineContext, TEvent extends E
|
|
|
497
483
|
schema?: MachineSchema<TContext, TEvent, TActorMap>;
|
|
498
484
|
tsTypes?: TTypesMeta;
|
|
499
485
|
}
|
|
500
|
-
export
|
|
486
|
+
export type ActorMap = Record<string, {
|
|
501
487
|
data: any;
|
|
502
488
|
}>;
|
|
503
489
|
export interface MachineSchema<TContext extends MachineContext, TEvent extends EventObject, TActorMap extends ActorMap = ActorMap> {
|
|
@@ -517,10 +503,10 @@ export interface HistoryStateNode<TContext extends MachineContext> extends State
|
|
|
517
503
|
history: 'shallow' | 'deep';
|
|
518
504
|
target: string | undefined;
|
|
519
505
|
}
|
|
520
|
-
export
|
|
521
|
-
export
|
|
522
|
-
export
|
|
523
|
-
export
|
|
506
|
+
export type HistoryValue<TContext extends MachineContext, TEvent extends EventObject> = Record<string, Array<StateNode<TContext, TEvent>>>;
|
|
507
|
+
export type AnyHistoryValue = HistoryValue<any, any>;
|
|
508
|
+
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;
|
|
509
|
+
export type Transitions<TContext extends MachineContext, TEvent extends EventObject> = Array<TransitionDefinition<TContext, TEvent>>;
|
|
524
510
|
export declare enum ActionTypes {
|
|
525
511
|
Stop = "xstate.stop",
|
|
526
512
|
Raise = "xstate.raise",
|
|
@@ -540,10 +526,13 @@ export declare enum ActionTypes {
|
|
|
540
526
|
Pure = "xstate.pure",
|
|
541
527
|
Choose = "xstate.choose"
|
|
542
528
|
}
|
|
543
|
-
export interface RaiseActionObject<TEvent extends EventObject> extends
|
|
529
|
+
export interface RaiseActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> extends BaseActionObject {
|
|
544
530
|
type: ActionTypes.Raise;
|
|
545
531
|
params: {
|
|
532
|
+
event: TEvent;
|
|
546
533
|
_event: SCXML.Event<TEvent>;
|
|
534
|
+
delay: RaiseActionOptions<TContext, TExpressionEvent>['delay'];
|
|
535
|
+
id: string | number;
|
|
547
536
|
};
|
|
548
537
|
}
|
|
549
538
|
export interface DoneInvokeEvent<TData> extends EventObject {
|
|
@@ -574,13 +563,11 @@ export interface DoneEventObject extends EventObject {
|
|
|
574
563
|
data?: any;
|
|
575
564
|
toString(): string;
|
|
576
565
|
}
|
|
577
|
-
export
|
|
566
|
+
export type DoneEvent = DoneEventObject & string;
|
|
578
567
|
export interface InvokeAction {
|
|
579
568
|
type: ActionTypes.Invoke;
|
|
580
|
-
src:
|
|
569
|
+
src: string | ActorRef<any>;
|
|
581
570
|
id: string;
|
|
582
|
-
autoForward?: boolean;
|
|
583
|
-
data?: any;
|
|
584
571
|
exec?: undefined;
|
|
585
572
|
meta: MetaObject | undefined;
|
|
586
573
|
}
|
|
@@ -591,19 +578,17 @@ export interface DynamicInvokeActionObject<TContext extends MachineContext, TEve
|
|
|
591
578
|
export interface InvokeActionObject extends BaseActionObject {
|
|
592
579
|
type: ActionTypes.Invoke;
|
|
593
580
|
params: {
|
|
594
|
-
src:
|
|
581
|
+
src: string | ActorRef<any>;
|
|
595
582
|
id: string;
|
|
596
|
-
autoForward?: boolean;
|
|
597
|
-
data?: any;
|
|
598
583
|
exec?: undefined;
|
|
599
584
|
ref?: ActorRef<any>;
|
|
600
585
|
meta: MetaObject | undefined;
|
|
601
586
|
};
|
|
602
587
|
}
|
|
603
|
-
export interface DynamicStopActionObject<TContext extends MachineContext,
|
|
588
|
+
export interface DynamicStopActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
604
589
|
type: ActionTypes.Stop;
|
|
605
590
|
params: {
|
|
606
|
-
actor: string | ActorRef<any> | Expr<TContext,
|
|
591
|
+
actor: string | ActorRef<any> | Expr<TContext, TExpressionEvent, ActorRef<any> | string>;
|
|
607
592
|
};
|
|
608
593
|
}
|
|
609
594
|
export interface StopActionObject {
|
|
@@ -612,11 +597,11 @@ export interface StopActionObject {
|
|
|
612
597
|
actor: ActorRef<any>;
|
|
613
598
|
};
|
|
614
599
|
}
|
|
615
|
-
export
|
|
616
|
-
export
|
|
617
|
-
export interface DynamicLogAction<TContext extends MachineContext, TEvent extends EventObject> extends BaseDynamicActionObject<TContext, TEvent, LogActionObject, {
|
|
600
|
+
export type DelayExpr<TContext extends MachineContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, number>;
|
|
601
|
+
export type LogExpr<TContext extends MachineContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, any>;
|
|
602
|
+
export interface DynamicLogAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, LogActionObject, {
|
|
618
603
|
label: string | undefined;
|
|
619
|
-
expr: string | LogExpr<TContext,
|
|
604
|
+
expr: string | LogExpr<TContext, TExpressionEvent>;
|
|
620
605
|
}> {
|
|
621
606
|
type: ActionTypes.Log;
|
|
622
607
|
}
|
|
@@ -638,25 +623,30 @@ export interface SendActionObject<TSentEvent extends EventObject = AnyEventObjec
|
|
|
638
623
|
internal: boolean;
|
|
639
624
|
};
|
|
640
625
|
}
|
|
641
|
-
export
|
|
642
|
-
export
|
|
643
|
-
export
|
|
626
|
+
export type Expr<TContext extends MachineContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent) => T;
|
|
627
|
+
export type ExprWithMeta<TContext extends MachineContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent, meta: StateMeta<TContext, TEvent>) => T;
|
|
628
|
+
export type SendExpr<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = ExprWithMeta<TContext, TEvent, TSentEvent>;
|
|
644
629
|
export declare enum SpecialTargets {
|
|
645
630
|
Parent = "#_parent",
|
|
646
631
|
Internal = "#_internal"
|
|
647
632
|
}
|
|
648
|
-
export interface SendActionOptions<TContext extends MachineContext, TEvent extends EventObject> {
|
|
633
|
+
export interface SendActionOptions<TContext extends MachineContext, TEvent extends EventObject> extends RaiseActionOptions<TContext, TEvent> {
|
|
634
|
+
to?: string | ActorRef<any, any> | ExprWithMeta<TContext, TEvent, string | ActorRef<any, any>>;
|
|
635
|
+
}
|
|
636
|
+
export interface RaiseActionOptions<TContext extends MachineContext, TEvent extends EventObject> {
|
|
649
637
|
id?: string | number;
|
|
650
638
|
delay?: number | string | DelayExpr<TContext, TEvent>;
|
|
651
|
-
|
|
639
|
+
}
|
|
640
|
+
export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent> {
|
|
641
|
+
event: TEvent | SendExpr<TContext, TExpressionEvent, TEvent>;
|
|
652
642
|
}
|
|
653
643
|
export interface SendActionParams<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = EventObject> extends SendActionOptions<TContext, TEvent> {
|
|
654
644
|
event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>;
|
|
655
645
|
}
|
|
656
|
-
export interface DynamicCancelActionObject<TContext extends MachineContext,
|
|
646
|
+
export interface DynamicCancelActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
657
647
|
type: ActionTypes.Cancel;
|
|
658
648
|
params: {
|
|
659
|
-
sendId: string | ExprWithMeta<TContext,
|
|
649
|
+
sendId: string | ExprWithMeta<TContext, TExpressionEvent, string>;
|
|
660
650
|
};
|
|
661
651
|
}
|
|
662
652
|
export interface CancelActionObject extends BaseActionObject {
|
|
@@ -665,21 +655,21 @@ export interface CancelActionObject extends BaseActionObject {
|
|
|
665
655
|
sendId: string;
|
|
666
656
|
};
|
|
667
657
|
}
|
|
668
|
-
export
|
|
669
|
-
export
|
|
670
|
-
export
|
|
671
|
-
[K in keyof TContext]?: PartialAssigner<TContext, TEvent, K> | TContext[K];
|
|
658
|
+
export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = (context: TContext, event: TExpressionEvent, meta: AssignMeta<TContext, TExpressionEvent, TEvent>) => Partial<TContext>;
|
|
659
|
+
export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TKey extends keyof TContext> = (context: TContext, event: TExpressionEvent, meta: AssignMeta<TContext, TExpressionEvent, TEvent>) => TContext[TKey];
|
|
660
|
+
export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = {
|
|
661
|
+
[K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TEvent, K> | TContext[K];
|
|
672
662
|
};
|
|
673
|
-
export
|
|
674
|
-
export
|
|
663
|
+
export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = (context: TContext, event: TEvent) => TParams;
|
|
664
|
+
export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
|
|
675
665
|
[K in keyof TParams]?: ((context: TContext, event: TEvent) => TParams[K]) | TParams[K];
|
|
676
666
|
};
|
|
677
667
|
export interface AnyAssignAction extends BaseActionObject {
|
|
678
668
|
type: ActionTypes.Assign;
|
|
679
669
|
assignment: any;
|
|
680
670
|
}
|
|
681
|
-
export
|
|
682
|
-
assignment: Assigner<TContext, TEvent> | PropertyAssigner<TContext, TEvent>;
|
|
671
|
+
export type DynamicAssignAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, AssignActionObject<TContext> | RaiseActionObject<TContext, TExpressionEvent>, {
|
|
672
|
+
assignment: Assigner<TContext, TExpressionEvent, TEvent> | PropertyAssigner<TContext, TExpressionEvent, TEvent>;
|
|
683
673
|
}>;
|
|
684
674
|
export interface AssignActionObject<TContext extends MachineContext> extends BaseActionObject {
|
|
685
675
|
type: ActionTypes.Assign;
|
|
@@ -691,7 +681,7 @@ export interface AssignActionObject<TContext extends MachineContext> extends Bas
|
|
|
691
681
|
export interface DynamicPureActionObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
692
682
|
type: ActionTypes.Pure;
|
|
693
683
|
params: {
|
|
694
|
-
get: (context: TContext, event: TEvent) => SingleOrArray<BaseActionObject> | undefined;
|
|
684
|
+
get: (context: TContext, event: TEvent) => SingleOrArray<BaseActionObject | BaseActionObject['type']> | undefined;
|
|
695
685
|
};
|
|
696
686
|
}
|
|
697
687
|
export interface PureActionObject extends BaseActionObject {
|
|
@@ -712,10 +702,11 @@ export interface ResolvedChooseAction extends BaseActionObject {
|
|
|
712
702
|
actions: BaseActionObject[];
|
|
713
703
|
};
|
|
714
704
|
}
|
|
715
|
-
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
|
|
705
|
+
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent>, 'target'> {
|
|
716
706
|
target: Array<StateNode<TContext, TEvent>> | undefined;
|
|
717
707
|
source: StateNode<TContext, TEvent>;
|
|
718
708
|
actions: BaseActionObject[];
|
|
709
|
+
external: boolean;
|
|
719
710
|
guard?: GuardDefinition<TContext, TEvent>;
|
|
720
711
|
eventType: TEvent['type'] | '*';
|
|
721
712
|
toJSON: () => {
|
|
@@ -727,12 +718,12 @@ export interface TransitionDefinition<TContext extends MachineContext, TEvent ex
|
|
|
727
718
|
meta?: Record<string, any>;
|
|
728
719
|
};
|
|
729
720
|
}
|
|
730
|
-
export
|
|
721
|
+
export type AnyTransitionDefinition = TransitionDefinition<any, any>;
|
|
731
722
|
export interface InitialTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
|
|
732
723
|
target: Array<StateNode<TContext, TEvent>>;
|
|
733
724
|
guard?: never;
|
|
734
725
|
}
|
|
735
|
-
export
|
|
726
|
+
export type TransitionDefinitionMap<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
736
727
|
[K in TEvent['type'] | '*']: Array<TransitionDefinition<TContext, K extends TEvent['type'] ? Extract<TEvent, {
|
|
737
728
|
type: K;
|
|
738
729
|
}> : EventObject>>;
|
|
@@ -765,36 +756,11 @@ export interface Segment<TContext extends MachineContext, TEvent extends EventOb
|
|
|
765
756
|
*/
|
|
766
757
|
event: TEvent;
|
|
767
758
|
}
|
|
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
759
|
export interface StateMeta<TContext extends MachineContext, TEvent extends EventObject> {
|
|
796
760
|
state: State<TContext, TEvent, any>;
|
|
797
761
|
_event: SCXML.Event<TEvent>;
|
|
762
|
+
self: ActorRef<TEvent>;
|
|
763
|
+
system: ActorSystem<any>;
|
|
798
764
|
}
|
|
799
765
|
export interface StateLike<TContext extends MachineContext> {
|
|
800
766
|
value: StateValue;
|
|
@@ -806,12 +772,11 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
|
|
|
806
772
|
value: StateValue;
|
|
807
773
|
context: TContext;
|
|
808
774
|
_event: SCXML.Event<TEvent>;
|
|
809
|
-
_sessionid: string | undefined;
|
|
810
775
|
historyValue?: HistoryValue<TContext, TEvent>;
|
|
811
776
|
actions?: BaseActionObject[];
|
|
812
777
|
meta?: any;
|
|
813
778
|
configuration?: Array<StateNode<TContext, TEvent>>;
|
|
814
|
-
transitions
|
|
779
|
+
transitions?: Array<TransitionDefinition<TContext, TEvent>>;
|
|
815
780
|
children: Record<string, ActorRef<any>>;
|
|
816
781
|
done?: boolean;
|
|
817
782
|
output?: any;
|
|
@@ -819,7 +784,7 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
|
|
|
819
784
|
machine?: StateMachine<TContext, TEvent, any, any, any>;
|
|
820
785
|
_internalQueue?: Array<SCXML.Event<TEvent>>;
|
|
821
786
|
}
|
|
822
|
-
export interface InterpreterOptions {
|
|
787
|
+
export interface InterpreterOptions<_TActorBehavior extends AnyActorBehavior> {
|
|
823
788
|
/**
|
|
824
789
|
* Whether state actions should be executed immediately upon transition. Defaults to `true`.
|
|
825
790
|
*/
|
|
@@ -845,15 +810,22 @@ export interface InterpreterOptions {
|
|
|
845
810
|
* Default: `false`
|
|
846
811
|
*/
|
|
847
812
|
devTools?: boolean | DevToolsAdapter;
|
|
813
|
+
sync?: boolean;
|
|
848
814
|
/**
|
|
849
|
-
*
|
|
850
|
-
*
|
|
851
|
-
* Default: `false`
|
|
815
|
+
* The system ID to register this actor under
|
|
852
816
|
*/
|
|
853
|
-
|
|
854
|
-
|
|
817
|
+
systemId?: string;
|
|
818
|
+
/**
|
|
819
|
+
* The input data to pass to the actor.
|
|
820
|
+
*/
|
|
821
|
+
input?: any;
|
|
822
|
+
state?: any;
|
|
823
|
+
/**
|
|
824
|
+
* The source definition.
|
|
825
|
+
*/
|
|
826
|
+
src?: string;
|
|
855
827
|
}
|
|
856
|
-
export
|
|
828
|
+
export type AnyInterpreter = Interpreter<any>;
|
|
857
829
|
export declare namespace SCXML {
|
|
858
830
|
interface Event<TEvent extends EventObject> {
|
|
859
831
|
/**
|
|
@@ -916,7 +888,7 @@ export declare namespace SCXML {
|
|
|
916
888
|
$$type: 'scxml';
|
|
917
889
|
}
|
|
918
890
|
}
|
|
919
|
-
export
|
|
891
|
+
export type Observer<T> = {
|
|
920
892
|
next?: (value: T) => void;
|
|
921
893
|
error?: (err: any) => void;
|
|
922
894
|
complete?: () => void;
|
|
@@ -934,8 +906,8 @@ export interface Subscribable<T> extends InteropSubscribable<T> {
|
|
|
934
906
|
subscribe(observer: Observer<T>): Subscription;
|
|
935
907
|
subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
|
|
936
908
|
}
|
|
937
|
-
export
|
|
938
|
-
export
|
|
909
|
+
export type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | ActorBehavior<any, any>;
|
|
910
|
+
export type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends any ? TEventType extends TEvent['type'] ? TEvent : never : never;
|
|
939
911
|
export interface BaseActorRef<TEvent extends EventObject> {
|
|
940
912
|
send: (event: TEvent) => void;
|
|
941
913
|
}
|
|
@@ -947,55 +919,90 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
|
|
|
947
919
|
* The unique identifier for this actor relative to its parent.
|
|
948
920
|
*/
|
|
949
921
|
id: string;
|
|
922
|
+
sessionId: string;
|
|
950
923
|
send: (event: TEvent) => void;
|
|
951
924
|
start?: () => void;
|
|
952
925
|
getSnapshot: () => TSnapshot | undefined;
|
|
953
|
-
|
|
926
|
+
getPersistedState?: () => any;
|
|
927
|
+
stop: () => void;
|
|
954
928
|
toJSON?: () => any;
|
|
955
929
|
_parent?: ActorRef<any, any>;
|
|
930
|
+
system?: ActorSystem<any>;
|
|
956
931
|
status: ActorStatus;
|
|
932
|
+
src?: string;
|
|
957
933
|
}
|
|
958
|
-
export
|
|
959
|
-
export
|
|
934
|
+
export type AnyActorRef = ActorRef<any, any>;
|
|
935
|
+
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
936
|
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> {
|
|
937
|
+
}, U | undefined> : R extends ActorBehavior<infer TEvent, infer TSnapshot> ? ActorRef<TEvent, TSnapshot> : never : never;
|
|
938
|
+
export type DevToolsAdapter = (service: AnyInterpreter) => void;
|
|
939
|
+
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;
|
|
940
|
+
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;
|
|
941
|
+
export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
|
942
|
+
export type EventOfMachine<TMachine extends AnyStateMachine> = TMachine extends StateMachine<any, infer E, any, any, any> ? E : never;
|
|
943
|
+
export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
|
|
968
944
|
self: ActorRef<TEvent, TSnapshot>;
|
|
969
945
|
id: string;
|
|
970
946
|
sessionId: string;
|
|
971
947
|
logger: (...args: any[]) => void;
|
|
972
948
|
defer: (fn: () => void) => void;
|
|
949
|
+
system: TSystem;
|
|
950
|
+
stopChild: (child: AnyActorRef) => void;
|
|
973
951
|
}
|
|
974
|
-
export
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
952
|
+
export type AnyActorContext = ActorContext<any, any, any>;
|
|
953
|
+
export interface ActorBehavior<TEvent extends EventObject, TSnapshot = any, TInternalState = any,
|
|
954
|
+
/**
|
|
955
|
+
* Serialized internal state used for persistence & restoration
|
|
956
|
+
*/
|
|
957
|
+
TPersisted = TInternalState, TSystem extends ActorSystem<any> = ActorSystem<any>> {
|
|
958
|
+
transition: (state: TInternalState, message: TEvent | LifecycleSignal, ctx: ActorContext<TEvent, TSnapshot, TSystem>) => TInternalState;
|
|
959
|
+
getInitialState: (actorCtx: ActorContext<TEvent, TSnapshot, any>, input: any) => TInternalState;
|
|
960
|
+
restoreState?: (persistedState: TPersisted, actorCtx: ActorContext<TEvent, TSnapshot>) => TInternalState;
|
|
978
961
|
getSnapshot?: (state: TInternalState) => TSnapshot;
|
|
979
962
|
getStatus?: (state: TInternalState) => {
|
|
980
963
|
status: string;
|
|
981
964
|
data?: any;
|
|
982
965
|
};
|
|
983
|
-
start?: (state: TInternalState, actorCtx: ActorContext<TEvent, TSnapshot>) =>
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
export
|
|
990
|
-
export
|
|
991
|
-
export
|
|
966
|
+
start?: (state: TInternalState, actorCtx: ActorContext<TEvent, TSnapshot>) => void;
|
|
967
|
+
/**
|
|
968
|
+
* @returns Persisted state
|
|
969
|
+
*/
|
|
970
|
+
getPersistedState?: (state: TInternalState) => TPersisted;
|
|
971
|
+
}
|
|
972
|
+
export type AnyActorBehavior = ActorBehavior<any, any, any, any>;
|
|
973
|
+
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;
|
|
974
|
+
export type EventFromBehavior<TBehavior extends ActorBehavior<any, any>> = TBehavior extends ActorBehavior<infer TEvent, infer _> ? TEvent : never;
|
|
975
|
+
export type PersistedStateFrom<TBehavior extends ActorBehavior<any, any>> = TBehavior extends ActorBehavior<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer TPersisted> ? TPersisted : never;
|
|
976
|
+
export type InternalStateFrom<TBehavior extends ActorBehavior<any, any>> = TBehavior extends ActorBehavior<infer _TEvent, infer _TSnapshot, infer TInternalState, infer _TPersisted> ? TInternalState : never;
|
|
977
|
+
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;
|
|
978
|
+
export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
|
979
|
+
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;
|
|
980
|
+
export type InferEvent<E extends EventObject> = {
|
|
992
981
|
[T in E['type']]: {
|
|
993
982
|
type: T;
|
|
994
983
|
} & Extract<E, {
|
|
995
984
|
type: T;
|
|
996
985
|
}>;
|
|
997
986
|
}[E['type']];
|
|
998
|
-
export
|
|
999
|
-
export
|
|
1000
|
-
export
|
|
987
|
+
export type TODO = any;
|
|
988
|
+
export type StateValueFrom<TMachine extends AnyStateMachine> = Parameters<StateFrom<TMachine>['matches']>[0];
|
|
989
|
+
export type StateFromMachine<TMachine extends AnyStateMachine> = TMachine['initialState'];
|
|
990
|
+
export interface ActorSystemInfo {
|
|
991
|
+
actors: Record<string, AnyActorRef>;
|
|
992
|
+
}
|
|
993
|
+
export interface ActorSystem<T extends ActorSystemInfo> {
|
|
994
|
+
_bookId: () => string;
|
|
995
|
+
_register: (sessionId: string, actorRef: AnyActorRef) => string;
|
|
996
|
+
_unregister: (actorRef: AnyActorRef) => void;
|
|
997
|
+
_set: <K extends keyof T['actors']>(key: K, actorRef: T['actors'][K]) => void;
|
|
998
|
+
get: <K extends keyof T['actors']>(key: K) => T['actors'][K] | undefined;
|
|
999
|
+
}
|
|
1000
|
+
export type PersistedMachineState<TState extends AnyState> = Pick<TState, 'value' | 'output' | 'context' | '_event' | 'done' | 'historyValue'> & {
|
|
1001
|
+
children: {
|
|
1002
|
+
[K in keyof TState['children']]: {
|
|
1003
|
+
state: any;
|
|
1004
|
+
src?: string;
|
|
1005
|
+
};
|
|
1006
|
+
};
|
|
1007
|
+
};
|
|
1001
1008
|
export {};
|