xstate 4.31.0 → 5.0.0-alpha.0
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/CHANGELOG.md +526 -0
- package/actions/ExecutableAction.ts +58 -0
- package/actions/dist/xstate-actions.cjs.d.ts +1 -0
- package/actions/dist/xstate-actions.cjs.dev.js +32 -0
- package/actions/dist/xstate-actions.cjs.js +7 -0
- package/actions/dist/xstate-actions.cjs.prod.js +32 -0
- package/actions/dist/xstate-actions.esm.js +2 -0
- package/actions/dynamicAction.ts +34 -0
- package/actions/package.json +4 -0
- package/actors/dist/xstate-actors.cjs.d.ts +1 -0
- package/actors/dist/xstate-actors.cjs.dev.js +21 -0
- package/actors/dist/xstate-actors.cjs.js +7 -0
- package/actors/dist/xstate-actors.cjs.prod.js +21 -0
- package/actors/dist/xstate-actors.esm.js +2 -0
- package/actors/package.json +4 -0
- package/dev/dist/xstate-dev.cjs.d.ts +1 -0
- package/dev/dist/xstate-dev.cjs.dev.js +11 -0
- package/dev/dist/xstate-dev.cjs.js +7 -0
- package/{lib/devTools.js → dev/dist/xstate-dev.cjs.prod.js} +17 -10
- package/dev/dist/xstate-dev.esm.js +1 -0
- package/dev/package.json +4 -0
- package/dist/Machine-9ce74c11.cjs.dev.js +755 -0
- package/dist/Machine-dca041dc.cjs.prod.js +749 -0
- package/dist/Machine-fb2f47f5.esm.js +751 -0
- package/dist/actions-6b86876d.cjs.dev.js +4815 -0
- package/dist/actions-70094c93.cjs.prod.js +4765 -0
- package/dist/actions-ff512f16.esm.js +4757 -0
- package/dist/declarations/actions/ExecutableAction.d.ts +23 -0
- package/dist/declarations/actions/dynamicAction.d.ts +3 -0
- package/dist/declarations/src/Machine.d.ts +4 -0
- package/dist/declarations/src/Mailbox.d.ts +12 -0
- package/dist/declarations/src/ObservableActorRef.d.ts +25 -0
- package/{lib → dist/declarations/src}/SimulatedClock.d.ts +0 -1
- package/dist/declarations/src/State.d.ts +104 -0
- package/dist/declarations/src/StateMachine.d.ts +112 -0
- package/dist/declarations/src/StateNode.d.ts +127 -0
- package/{es → dist/declarations/src}/actionTypes.d.ts +0 -3
- package/dist/declarations/src/actions/assign.d.ts +7 -0
- package/dist/declarations/src/actions/cancel.d.ts +10 -0
- package/dist/declarations/src/actions/choose.d.ts +3 -0
- package/dist/declarations/src/actions/invoke.d.ts +3 -0
- package/dist/declarations/src/actions/log.d.ts +11 -0
- package/dist/declarations/src/actions/pure.d.ts +3 -0
- package/dist/declarations/src/actions/raise.d.ts +9 -0
- package/dist/declarations/src/actions/send.d.ts +55 -0
- package/dist/declarations/src/actions/stop.d.ts +8 -0
- package/dist/declarations/src/actions.d.ts +44 -0
- package/dist/declarations/src/actors.d.ts +38 -0
- package/dist/declarations/src/constants.d.ts +5 -0
- package/{lib/devTools.d.ts → dist/declarations/src/dev/index.d.ts} +2 -2
- package/{es → dist/declarations/src}/environment.d.ts +0 -1
- package/dist/declarations/src/guards.d.ts +9 -0
- package/dist/declarations/src/index.d.ts +47 -0
- package/dist/declarations/src/interpreter.d.ts +147 -0
- package/{es → dist/declarations/src}/mapState.d.ts +0 -1
- package/dist/declarations/src/match.d.ts +5 -0
- package/dist/declarations/src/memo.d.ts +1 -0
- package/dist/declarations/src/model.d.ts +5 -0
- package/{lib → dist/declarations/src}/model.types.d.ts +10 -9
- package/dist/declarations/src/registry.d.ts +8 -0
- package/{es → dist/declarations/src}/schema.d.ts +0 -1
- package/dist/declarations/src/spawn.d.ts +2 -0
- package/dist/declarations/src/stateUtils.d.ts +85 -0
- package/{lib → dist/declarations/src}/typegenTypes.d.ts +28 -26
- package/dist/declarations/src/types.d.ts +1026 -0
- package/dist/declarations/src/utils.d.ts +56 -0
- package/{es/devTools.js → dist/index-20b364c4.esm.js} +18 -6
- package/dist/index-2a564d03.cjs.dev.js +64 -0
- package/dist/xstate.cjs.d.ts +1 -0
- package/dist/xstate.cjs.dev.js +217 -0
- package/dist/xstate.cjs.js +7 -0
- package/dist/xstate.cjs.prod.js +217 -0
- package/dist/xstate.esm.js +172 -0
- package/guards/dist/xstate-guards.cjs.d.ts +1 -0
- package/guards/dist/xstate-guards.cjs.dev.js +15 -0
- package/guards/dist/xstate-guards.cjs.js +7 -0
- package/guards/dist/xstate-guards.cjs.prod.js +15 -0
- package/guards/dist/xstate-guards.esm.js +2 -0
- package/guards/package.json +4 -0
- package/invoke/package.json +4 -0
- package/model/dist/xstate-model.cjs.d.ts +1 -0
- package/model/dist/xstate-model.cjs.dev.js +41 -0
- package/model/dist/xstate-model.cjs.js +7 -0
- package/model/dist/xstate-model.cjs.prod.js +41 -0
- package/model/dist/xstate-model.esm.js +37 -0
- package/model/package.json +4 -0
- package/package.json +21 -30
- package/dist/xstate.interpreter.js +0 -15
- package/dist/xstate.js +0 -15
- package/dist/xstate.web.js +0 -15
- package/es/Actor.d.ts +0 -25
- package/es/Actor.js +0 -99
- package/es/Machine.d.ts +0 -12
- package/es/Machine.js +0 -14
- package/es/SimulatedClock.d.ts +0 -17
- package/es/SimulatedClock.js +0 -81
- package/es/State.d.ts +0 -123
- package/es/State.js +0 -274
- package/es/StateNode.d.ts +0 -287
- package/es/StateNode.js +0 -1566
- package/es/_virtual/_tslib.js +0 -78
- package/es/actionTypes.js +0 -22
- package/es/actions.d.ts +0 -154
- package/es/actions.js +0 -520
- package/es/behaviors.d.ts +0 -37
- package/es/behaviors.js +0 -131
- package/es/constants.d.ts +0 -6
- package/es/constants.js +0 -6
- package/es/devTools.d.ts +0 -14
- package/es/each.d.ts +0 -4
- package/es/each.js +0 -13
- package/es/environment.js +0 -3
- package/es/index.d.ts +0 -22
- package/es/index.js +0 -23
- package/es/interpreter.d.ts +0 -209
- package/es/interpreter.js +0 -1402
- package/es/invoke.d.ts +0 -11
- package/es/invokeUtils.d.ts +0 -7
- package/es/invokeUtils.js +0 -40
- package/es/json.d.ts +0 -31
- package/es/json.js +0 -86
- package/es/mapState.js +0 -32
- package/es/match.d.ts +0 -9
- package/es/match.js +0 -34
- package/es/model.d.ts +0 -5
- package/es/model.js +0 -50
- package/es/model.types.d.ts +0 -52
- package/es/patterns.d.ts +0 -14
- package/es/patterns.js +0 -48
- package/es/registry.d.ts +0 -9
- package/es/registry.js +0 -19
- package/es/scheduler.d.ts +0 -17
- package/es/scheduler.js +0 -79
- package/es/schema.js +0 -6
- package/es/scxml.d.ts +0 -6
- package/es/serviceScope.d.ts +0 -4
- package/es/serviceScope.js +0 -16
- package/es/stateUtils.d.ts +0 -17
- package/es/stateUtils.js +0 -259
- package/es/typegenTypes.d.ts +0 -130
- package/es/types.d.ts +0 -1037
- package/es/types.js +0 -33
- package/es/utils.d.ts +0 -72
- package/es/utils.js +0 -626
- package/es/waitFor.d.ts +0 -32
- package/es/waitFor.js +0 -66
- package/lib/Actor.d.ts +0 -25
- package/lib/Actor.js +0 -108
- package/lib/Machine.d.ts +0 -12
- package/lib/Machine.js +0 -19
- package/lib/SimulatedClock.js +0 -85
- package/lib/State.d.ts +0 -123
- package/lib/State.js +0 -282
- package/lib/StateNode.d.ts +0 -287
- package/lib/StateNode.js +0 -1570
- package/lib/_virtual/_tslib.js +0 -85
- package/lib/actionTypes.d.ts +0 -20
- package/lib/actionTypes.js +0 -43
- package/lib/actions.d.ts +0 -154
- package/lib/actions.js +0 -552
- package/lib/behaviors.d.ts +0 -37
- package/lib/behaviors.js +0 -137
- package/lib/constants.d.ts +0 -6
- package/lib/constants.js +0 -13
- package/lib/each.d.ts +0 -4
- package/lib/each.js +0 -17
- package/lib/environment.d.ts +0 -2
- package/lib/environment.js +0 -7
- package/lib/index.d.ts +0 -22
- package/lib/index.js +0 -60
- package/lib/interpreter.d.ts +0 -209
- package/lib/interpreter.js +0 -1408
- package/lib/invoke.d.ts +0 -11
- package/lib/invoke.js +0 -20
- package/lib/invokeUtils.d.ts +0 -7
- package/lib/invokeUtils.js +0 -45
- package/lib/json.d.ts +0 -31
- package/lib/json.js +0 -94
- package/lib/mapState.d.ts +0 -4
- package/lib/mapState.js +0 -36
- package/lib/match.d.ts +0 -9
- package/lib/match.js +0 -38
- package/lib/model.d.ts +0 -5
- package/lib/model.js +0 -54
- package/lib/model.types.js +0 -2
- package/lib/patterns.d.ts +0 -14
- package/lib/patterns.js +0 -53
- package/lib/registry.d.ts +0 -9
- package/lib/registry.js +0 -23
- package/lib/scheduler.d.ts +0 -17
- package/lib/scheduler.js +0 -83
- package/lib/schema.d.ts +0 -3
- package/lib/schema.js +0 -11
- package/lib/scxml.d.ts +0 -6
- package/lib/scxml.js +0 -350
- package/lib/serviceScope.d.ts +0 -4
- package/lib/serviceScope.js +0 -21
- package/lib/stateUtils.d.ts +0 -17
- package/lib/stateUtils.js +0 -273
- package/lib/typegenTypes.js +0 -2
- package/lib/types.d.ts +0 -1037
- package/lib/types.js +0 -35
- package/lib/utils.d.ts +0 -72
- package/lib/utils.js +0 -673
- package/lib/waitFor.d.ts +0 -32
- package/lib/waitFor.js +0 -70
|
@@ -0,0 +1,1026 @@
|
|
|
1
|
+
import type { StateNode } from './StateNode';
|
|
2
|
+
import type { State } from './State';
|
|
3
|
+
import type { Clock, Interpreter } from './interpreter';
|
|
4
|
+
import type { StateMachine } from './StateMachine';
|
|
5
|
+
import type { LifecycleSignal } from './actors';
|
|
6
|
+
import type { Model } from './model.types';
|
|
7
|
+
import { TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, MarkAllImplementationsAsProvided, AreAllImplementationsAssumedToBeProvided } from './typegenTypes';
|
|
8
|
+
export declare type AnyFunction = (...args: any[]) => any;
|
|
9
|
+
declare type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
|
|
10
|
+
export declare type IsNever<T> = [T] extends [never] ? true : false;
|
|
11
|
+
export declare type Compute<A extends any> = {
|
|
12
|
+
[K in keyof A]: A[K];
|
|
13
|
+
} & unknown;
|
|
14
|
+
export declare type Prop<T, K> = K extends keyof T ? T[K] : never;
|
|
15
|
+
export declare type Values<T> = T[keyof T];
|
|
16
|
+
export declare type Merge<M, N> = Omit<M, keyof N> & N;
|
|
17
|
+
export declare type IndexByType<T extends {
|
|
18
|
+
type: string;
|
|
19
|
+
}> = {
|
|
20
|
+
[K in T['type']]: T extends any ? (K extends T['type'] ? T : never) : never;
|
|
21
|
+
};
|
|
22
|
+
export declare type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1 ? true : false ? true : false;
|
|
23
|
+
export declare type IsAny<T> = Equals<T, any>;
|
|
24
|
+
export declare type Cast<A, B> = A extends B ? A : B;
|
|
25
|
+
export declare type NoInfer<T> = [T][T extends any ? 0 : any];
|
|
26
|
+
export declare type LowInfer<T> = T & {};
|
|
27
|
+
export declare type EventType = string;
|
|
28
|
+
export declare type ActionType = string;
|
|
29
|
+
export declare type MetaObject = Record<string, any>;
|
|
30
|
+
export declare type Lazy<T> = () => T;
|
|
31
|
+
export declare type MaybeLazy<T> = T | Lazy<T>;
|
|
32
|
+
/**
|
|
33
|
+
* The full definition of an event, with a string `type`.
|
|
34
|
+
*/
|
|
35
|
+
export interface EventObject {
|
|
36
|
+
/**
|
|
37
|
+
* The type of event that is sent.
|
|
38
|
+
*/
|
|
39
|
+
type: string;
|
|
40
|
+
}
|
|
41
|
+
export interface AnyEventObject extends EventObject {
|
|
42
|
+
[key: string]: any;
|
|
43
|
+
}
|
|
44
|
+
export interface BaseActionObject {
|
|
45
|
+
type: string;
|
|
46
|
+
params?: Record<string, any>;
|
|
47
|
+
}
|
|
48
|
+
export interface BuiltInActionObject {
|
|
49
|
+
type: `xstate.${string}`;
|
|
50
|
+
params: Record<string, any>;
|
|
51
|
+
}
|
|
52
|
+
export interface BaseDynamicActionObject<TContext extends MachineContext, TEvent extends EventObject, TResolvedAction extends BaseActionObject, TDynamicParams extends Record<string, any>> {
|
|
53
|
+
type: `xstate.${string}`;
|
|
54
|
+
params: TDynamicParams;
|
|
55
|
+
resolve: (dynamicAction: BaseDynamicActionObject<TContext, TEvent, TResolvedAction, TDynamicParams>, context: TContext, _event: SCXML.Event<TEvent>, extra: {
|
|
56
|
+
machine: StateMachine<TContext, TEvent>;
|
|
57
|
+
state: State<TContext, TEvent>;
|
|
58
|
+
/**
|
|
59
|
+
* The original action object
|
|
60
|
+
*/
|
|
61
|
+
action: BaseActionObject;
|
|
62
|
+
}) => TResolvedAction;
|
|
63
|
+
}
|
|
64
|
+
export declare type MachineContext = Record<string, any>;
|
|
65
|
+
/**
|
|
66
|
+
* The specified string event types or the specified event objects.
|
|
67
|
+
*/
|
|
68
|
+
export declare type Event<TEvent extends EventObject> = TEvent['type'] | TEvent;
|
|
69
|
+
export interface ActionMeta<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> extends StateMeta<TContext, TEvent> {
|
|
70
|
+
action: TAction;
|
|
71
|
+
_event: SCXML.Event<TEvent>;
|
|
72
|
+
}
|
|
73
|
+
export declare type Spawner = <T extends Behavior<any, any> | string>(// TODO: read string from machine behavior keys
|
|
74
|
+
behavior: T, name?: string) => T extends Behavior<infer TActorEvent, infer TActorEmitted> ? ActorRef<TActorEvent, TActorEmitted> : ActorRef<any, any>;
|
|
75
|
+
export interface AssignMeta<TContext extends MachineContext, TEvent extends EventObject> {
|
|
76
|
+
state: State<TContext, TEvent>;
|
|
77
|
+
action: BaseActionObject;
|
|
78
|
+
_event: SCXML.Event<TEvent>;
|
|
79
|
+
spawn: Spawner;
|
|
80
|
+
}
|
|
81
|
+
export declare type ActionFunction<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
|
|
82
|
+
bivarianceHack(context: TContext, event: TEvent, meta: ActionMeta<TContext, TEvent, TAction>): void;
|
|
83
|
+
}['bivarianceHack'];
|
|
84
|
+
export interface ChooseCondition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
85
|
+
guard?: GuardConfig<TContext, TEvent>;
|
|
86
|
+
actions: Actions<TContext, TEvent>;
|
|
87
|
+
}
|
|
88
|
+
export declare type Action<TContext extends MachineContext, TEvent extends EventObject> = ActionType | BaseActionObject | ActionFunction<TContext, TEvent> | BaseDynamicActionObject<TContext, TEvent, any, any>;
|
|
89
|
+
/**
|
|
90
|
+
* Extracts action objects that have no extra properties.
|
|
91
|
+
*/
|
|
92
|
+
declare type SimpleActionsFrom<T extends BaseActionObject> = BaseActionObject extends T ? T : ExtractWithSimpleSupport<T>;
|
|
93
|
+
export declare type BaseAction<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject> = BaseDynamicActionObject<TContext, 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
|
|
94
|
+
any> | TAction | SimpleActionsFrom<TAction>['type'] | ActionFunction<TContext, TEvent>;
|
|
95
|
+
export declare type BaseActions<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject> = SingleOrArray<BaseAction<TContext, TEvent, TAction>>;
|
|
96
|
+
export declare type Actions<TContext extends MachineContext, TEvent extends EventObject> = SingleOrArray<Action<TContext, TEvent>>;
|
|
97
|
+
export declare type StateKey = string | AnyState;
|
|
98
|
+
export interface StateValueMap {
|
|
99
|
+
[key: string]: StateValue;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The string or object representing the state value relative to the parent state node.
|
|
103
|
+
*
|
|
104
|
+
* - For a child atomic state node, this is a string, e.g., `"pending"`.
|
|
105
|
+
* - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
|
|
106
|
+
*/
|
|
107
|
+
export declare type StateValue = string | StateValueMap;
|
|
108
|
+
export declare type GuardPredicate<TContext extends MachineContext, TEvent extends EventObject> = (context: TContext, event: TEvent, meta: GuardMeta<TContext, TEvent>) => boolean;
|
|
109
|
+
export interface DefaultGuardObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
110
|
+
type: string;
|
|
111
|
+
params?: {
|
|
112
|
+
[key: string]: any;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Nested guards
|
|
116
|
+
*/
|
|
117
|
+
children?: Array<GuardObject<TContext, TEvent>>;
|
|
118
|
+
predicate?: GuardPredicate<TContext, TEvent>;
|
|
119
|
+
}
|
|
120
|
+
export declare type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>, machine: StateMachine<TContext, TEvent>) => boolean;
|
|
121
|
+
export interface GuardMeta<TContext extends MachineContext, TEvent extends EventObject> extends StateMeta<TContext, TEvent> {
|
|
122
|
+
guard: GuardDefinition<TContext, TEvent>;
|
|
123
|
+
evaluate: GuardEvaluator<TContext, TEvent>;
|
|
124
|
+
}
|
|
125
|
+
export declare type GuardConfig<TContext extends MachineContext, TEvent extends EventObject> = string | GuardPredicate<TContext, TEvent> | GuardObject<TContext, TEvent>;
|
|
126
|
+
export declare type GuardObject<TContext extends MachineContext, TEvent extends EventObject> = BooleanGuardObject<TContext, TEvent> | DefaultGuardObject<TContext, TEvent>;
|
|
127
|
+
export interface GuardDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
128
|
+
type: string;
|
|
129
|
+
children?: Array<GuardDefinition<TContext, TEvent>>;
|
|
130
|
+
predicate?: GuardPredicate<TContext, TEvent>;
|
|
131
|
+
params: {
|
|
132
|
+
[key: string]: any;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
export interface BooleanGuardObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
136
|
+
type: 'xstate.boolean';
|
|
137
|
+
children: Array<GuardConfig<TContext, TEvent>>;
|
|
138
|
+
params: {
|
|
139
|
+
op: 'and' | 'or' | 'not';
|
|
140
|
+
};
|
|
141
|
+
predicate: undefined;
|
|
142
|
+
}
|
|
143
|
+
export interface BooleanGuardDefinition<TContext extends MachineContext, TEvent extends EventObject> extends GuardDefinition<TContext, TEvent> {
|
|
144
|
+
type: 'xstate.boolean';
|
|
145
|
+
params: {
|
|
146
|
+
op: 'and' | 'or' | 'not';
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export declare type TransitionTarget<TContext extends MachineContext, TEvent extends EventObject> = SingleOrArray<string | StateNode<TContext, TEvent>>;
|
|
150
|
+
export declare type TransitionTargets<TContext extends MachineContext> = Array<string | StateNode<TContext, any>>;
|
|
151
|
+
export interface TransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> {
|
|
152
|
+
guard?: GuardConfig<TContext, TEvent>;
|
|
153
|
+
actions?: BaseActions<TContext, TEvent, TAction>;
|
|
154
|
+
internal?: boolean;
|
|
155
|
+
target?: TransitionTarget<TContext, TEvent> | undefined;
|
|
156
|
+
meta?: Record<string, any>;
|
|
157
|
+
description?: string;
|
|
158
|
+
}
|
|
159
|
+
export interface TargetTransitionConfig<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
|
|
160
|
+
target: TransitionTarget<TContext, TEvent>;
|
|
161
|
+
}
|
|
162
|
+
export declare type ConditionalTransitionConfig<TContext extends MachineContext, TEvent extends EventObject = EventObject> = Array<TransitionConfig<TContext, TEvent>>;
|
|
163
|
+
export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
|
|
164
|
+
guard?: never;
|
|
165
|
+
target: TransitionTarget<TContext, TEvent>;
|
|
166
|
+
}
|
|
167
|
+
export declare type Transition<TContext extends MachineContext, TEvent extends EventObject = EventObject> = string | TransitionConfig<TContext, TEvent> | ConditionalTransitionConfig<TContext, TEvent>;
|
|
168
|
+
declare type ExcludeType<A> = {
|
|
169
|
+
[K in Exclude<keyof A, 'type'>]: A[K];
|
|
170
|
+
};
|
|
171
|
+
declare type ExtractExtraParameters<A, T> = A extends {
|
|
172
|
+
type: T;
|
|
173
|
+
} ? ExcludeType<A> : never;
|
|
174
|
+
declare type ExtractWithSimpleSupport<T extends {
|
|
175
|
+
type: string;
|
|
176
|
+
}> = T extends any ? {
|
|
177
|
+
type: T['type'];
|
|
178
|
+
} extends T ? T : never : never;
|
|
179
|
+
declare type NeverIfEmpty<T> = {} extends T ? never : T;
|
|
180
|
+
export interface PayloadSender<TEvent extends EventObject> {
|
|
181
|
+
/**
|
|
182
|
+
* Send an event object or just the event type, if the event has no other payload
|
|
183
|
+
*/
|
|
184
|
+
(event: SCXML.Event<TEvent> | TEvent | ExtractWithSimpleSupport<TEvent>['type']): void;
|
|
185
|
+
/**
|
|
186
|
+
* Send an event type and its payload
|
|
187
|
+
*/
|
|
188
|
+
<K extends TEvent['type']>(eventType: K, payload: NeverIfEmpty<ExtractExtraParameters<TEvent, K>>): void;
|
|
189
|
+
}
|
|
190
|
+
export declare type Receiver<TEvent extends EventObject> = (listener: {
|
|
191
|
+
bivarianceHack(event: TEvent): void;
|
|
192
|
+
}['bivarianceHack']) => void;
|
|
193
|
+
export declare type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (callback: Sender<TSentEvent>, onReceive: Receiver<TEvent>) => (() => void) | Promise<any> | void;
|
|
194
|
+
export declare type BehaviorCreator<TContext extends MachineContext, TEvent extends EventObject, TSnapshot = any> = (context: TContext, event: TEvent, meta: {
|
|
195
|
+
id: string;
|
|
196
|
+
data?: any;
|
|
197
|
+
src: InvokeSourceDefinition;
|
|
198
|
+
_event: SCXML.Event<TEvent>;
|
|
199
|
+
meta: MetaObject | undefined;
|
|
200
|
+
}) => Behavior<any, TSnapshot>;
|
|
201
|
+
export interface InvokeMeta {
|
|
202
|
+
data: any;
|
|
203
|
+
src: InvokeSourceDefinition;
|
|
204
|
+
meta: MetaObject | undefined;
|
|
205
|
+
}
|
|
206
|
+
export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
207
|
+
id: string;
|
|
208
|
+
/**
|
|
209
|
+
* The source of the actor's behavior to be invoked
|
|
210
|
+
*/
|
|
211
|
+
src: InvokeSourceDefinition;
|
|
212
|
+
/**
|
|
213
|
+
* If `true`, events sent to the parent service will be forwarded to the invoked service.
|
|
214
|
+
*
|
|
215
|
+
* Default: `false`
|
|
216
|
+
*/
|
|
217
|
+
autoForward?: boolean;
|
|
218
|
+
/**
|
|
219
|
+
* Data from the parent machine's context to set as the (partial or full) context
|
|
220
|
+
* for the invoked child machine.
|
|
221
|
+
*
|
|
222
|
+
* Data should be mapped to match the child machine's context shape.
|
|
223
|
+
*/
|
|
224
|
+
data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
|
|
225
|
+
/**
|
|
226
|
+
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
227
|
+
*/
|
|
228
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
|
|
229
|
+
/**
|
|
230
|
+
* The transition to take upon the invoked child machine sending an error event.
|
|
231
|
+
*/
|
|
232
|
+
onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorEvent<any>>>;
|
|
233
|
+
onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>>>;
|
|
234
|
+
toJSON: () => Omit<InvokeDefinition<TContext, TEvent>, 'onDone' | 'onError' | 'toJSON'>;
|
|
235
|
+
meta: MetaObject | undefined;
|
|
236
|
+
}
|
|
237
|
+
export interface Delay {
|
|
238
|
+
id: string;
|
|
239
|
+
/**
|
|
240
|
+
* The time to delay the event, in milliseconds.
|
|
241
|
+
*/
|
|
242
|
+
delay: number;
|
|
243
|
+
}
|
|
244
|
+
export declare type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent>>> | Array<TransitionConfig<TContext, TEvent> & {
|
|
245
|
+
delay: number | string | Expr<TContext, TEvent, number>;
|
|
246
|
+
}>;
|
|
247
|
+
export declare type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
|
|
248
|
+
export declare type SingleOrArray<T> = T[] | T;
|
|
249
|
+
export declare type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
250
|
+
[K in string]: StateNode<TContext, TEvent>;
|
|
251
|
+
};
|
|
252
|
+
export declare type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
|
|
253
|
+
[K in string]: StateNodeConfig<TContext, TEvent, TAction>;
|
|
254
|
+
};
|
|
255
|
+
export declare type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
256
|
+
[K in string]: StateNodeDefinition<TContext, TEvent>;
|
|
257
|
+
};
|
|
258
|
+
export declare type TransitionConfigTarget<TContext extends MachineContext, TEvent extends EventObject> = string | undefined | StateNode<TContext, TEvent>;
|
|
259
|
+
export declare type TransitionConfigOrTarget<TContext extends MachineContext, TEvent extends EventObject> = SingleOrArray<TransitionConfigTarget<TContext, TEvent> | TransitionConfig<TContext, TEvent>>;
|
|
260
|
+
export declare type TransitionsConfigMap<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
261
|
+
[K in TEvent['type'] | '' | '*']?: K extends '' | '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>>;
|
|
262
|
+
};
|
|
263
|
+
declare type TransitionsConfigArray<TContext extends MachineContext, TEvent extends EventObject> = Array<(TEvent extends EventObject ? TransitionConfig<TContext, TEvent> & {
|
|
264
|
+
event: TEvent['type'];
|
|
265
|
+
} : never) | (TransitionConfig<TContext, TEvent> & {
|
|
266
|
+
event: '*';
|
|
267
|
+
})>;
|
|
268
|
+
export declare type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = TransitionsConfigMap<TContext, TEvent> | TransitionsConfigArray<TContext, TEvent>;
|
|
269
|
+
export interface InvokeSourceDefinition {
|
|
270
|
+
[key: string]: any;
|
|
271
|
+
type: string;
|
|
272
|
+
}
|
|
273
|
+
export interface InvokeConfig<TContext extends MachineContext, TEvent extends EventObject> {
|
|
274
|
+
/**
|
|
275
|
+
* The unique identifier for the invoked machine. If not specified, this
|
|
276
|
+
* will be the machine's own `id`, or the URL (from `src`).
|
|
277
|
+
*/
|
|
278
|
+
id?: string;
|
|
279
|
+
/**
|
|
280
|
+
* The source of the machine to be invoked, or the machine itself.
|
|
281
|
+
*/
|
|
282
|
+
src: string | InvokeSourceDefinition | BehaviorCreator<TContext, TEvent> | Behavior<any, any>;
|
|
283
|
+
/**
|
|
284
|
+
* If `true`, events sent to the parent service will be forwarded to the invoked service.
|
|
285
|
+
*
|
|
286
|
+
* Default: `false`
|
|
287
|
+
*/
|
|
288
|
+
autoForward?: boolean;
|
|
289
|
+
/**
|
|
290
|
+
* Data from the parent machine's context to set as the (partial or full) context
|
|
291
|
+
* for the invoked child machine.
|
|
292
|
+
*
|
|
293
|
+
* Data should be mapped to match the child machine's context shape.
|
|
294
|
+
*/
|
|
295
|
+
data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
|
|
296
|
+
/**
|
|
297
|
+
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
298
|
+
*/
|
|
299
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
|
|
300
|
+
/**
|
|
301
|
+
* The transition to take upon the invoked child machine sending an error event.
|
|
302
|
+
*/
|
|
303
|
+
onError?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
|
|
304
|
+
onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>>>;
|
|
305
|
+
/**
|
|
306
|
+
* Meta data related to this invocation
|
|
307
|
+
*/
|
|
308
|
+
meta?: MetaObject;
|
|
309
|
+
}
|
|
310
|
+
export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> {
|
|
311
|
+
/**
|
|
312
|
+
* The relative key of the state node, which represents its location in the overall state value.
|
|
313
|
+
* This is automatically determined by the configuration shape via the key where it was defined.
|
|
314
|
+
*/
|
|
315
|
+
key?: string;
|
|
316
|
+
/**
|
|
317
|
+
* The initial state transition.
|
|
318
|
+
*/
|
|
319
|
+
initial?: InitialTransitionConfig<TContext, TEvent> | SingleOrArray<string> | undefined;
|
|
320
|
+
/**
|
|
321
|
+
* The type of this state node:
|
|
322
|
+
*
|
|
323
|
+
* - `'atomic'` - no child state nodes
|
|
324
|
+
* - `'compound'` - nested child state nodes (XOR)
|
|
325
|
+
* - `'parallel'` - orthogonal nested child state nodes (AND)
|
|
326
|
+
* - `'history'` - history state node
|
|
327
|
+
* - `'final'` - final state node
|
|
328
|
+
*/
|
|
329
|
+
type?: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
|
|
330
|
+
/**
|
|
331
|
+
* Indicates whether the state node is a history state node, and what
|
|
332
|
+
* type of history:
|
|
333
|
+
* shallow, deep, true (shallow), false (none), undefined (none)
|
|
334
|
+
*/
|
|
335
|
+
history?: 'shallow' | 'deep' | boolean | undefined;
|
|
336
|
+
/**
|
|
337
|
+
* The mapping of state node keys to their state node configurations (recursive).
|
|
338
|
+
*/
|
|
339
|
+
states?: StatesConfig<TContext, TEvent, TAction> | undefined;
|
|
340
|
+
/**
|
|
341
|
+
* The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
|
|
342
|
+
*/
|
|
343
|
+
invoke?: SingleOrArray<string | BehaviorCreator<TContext, TEvent> | InvokeConfig<TContext, TEvent>>;
|
|
344
|
+
/**
|
|
345
|
+
* The mapping of event types to their potential transition(s).
|
|
346
|
+
*/
|
|
347
|
+
on?: TransitionsConfig<TContext, TEvent>;
|
|
348
|
+
/**
|
|
349
|
+
* The action(s) to be executed upon entering the state node.
|
|
350
|
+
*/
|
|
351
|
+
entry?: BaseActions<TContext, TEvent, TAction>;
|
|
352
|
+
/**
|
|
353
|
+
* The action(s) to be executed upon exiting the state node.
|
|
354
|
+
*/
|
|
355
|
+
exit?: BaseActions<TContext, TEvent, TAction>;
|
|
356
|
+
/**
|
|
357
|
+
* The potential transition(s) to be taken upon reaching a final child state node.
|
|
358
|
+
*
|
|
359
|
+
* This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
|
|
360
|
+
*/
|
|
361
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject>> | undefined;
|
|
362
|
+
/**
|
|
363
|
+
* The mapping (or array) of delays (in milliseconds) to their potential transition(s).
|
|
364
|
+
* The delayed transitions are taken after the specified delay in an interpreter.
|
|
365
|
+
*/
|
|
366
|
+
after?: DelayedTransitions<TContext, TEvent>;
|
|
367
|
+
/**
|
|
368
|
+
* An eventless transition that is always taken when this state node is active.
|
|
369
|
+
*/
|
|
370
|
+
always?: TransitionConfigOrTarget<TContext, TEvent>;
|
|
371
|
+
/**
|
|
372
|
+
* @private
|
|
373
|
+
*/
|
|
374
|
+
parent?: StateNode<TContext, TEvent>;
|
|
375
|
+
strict?: boolean | undefined;
|
|
376
|
+
/**
|
|
377
|
+
* The meta data associated with this state node, which will be returned in State instances.
|
|
378
|
+
*/
|
|
379
|
+
meta?: any;
|
|
380
|
+
/**
|
|
381
|
+
* The data sent with the "done.state._id_" event if this is a final state node.
|
|
382
|
+
*
|
|
383
|
+
* The data will be evaluated with the current `context` and placed on the `.data` property
|
|
384
|
+
* of the event.
|
|
385
|
+
*/
|
|
386
|
+
data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
|
|
387
|
+
/**
|
|
388
|
+
* The unique ID of the state node, which can be referenced as a transition target via the
|
|
389
|
+
* `#id` syntax.
|
|
390
|
+
*/
|
|
391
|
+
id?: string | undefined;
|
|
392
|
+
/**
|
|
393
|
+
* The string delimiter for serializing the path to a string. The default is "."
|
|
394
|
+
*/
|
|
395
|
+
delimiter?: string;
|
|
396
|
+
/**
|
|
397
|
+
* The order this state node appears. Corresponds to the implicit SCXML document order.
|
|
398
|
+
*/
|
|
399
|
+
order?: number;
|
|
400
|
+
/**
|
|
401
|
+
* The tags for this state node, which are accumulated into the `state.tags` property.
|
|
402
|
+
*/
|
|
403
|
+
tags?: SingleOrArray<string>;
|
|
404
|
+
/**
|
|
405
|
+
* Whether actions should be called in order.
|
|
406
|
+
* When `false` (default), `assign(...)` actions are prioritized before other actions.
|
|
407
|
+
*
|
|
408
|
+
* @default false
|
|
409
|
+
*/
|
|
410
|
+
preserveActionOrder?: boolean;
|
|
411
|
+
/**
|
|
412
|
+
* A text description of the state node
|
|
413
|
+
*/
|
|
414
|
+
description?: string;
|
|
415
|
+
}
|
|
416
|
+
export interface StateNodeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
417
|
+
id: string;
|
|
418
|
+
version?: string | undefined;
|
|
419
|
+
key: string;
|
|
420
|
+
context: TContext;
|
|
421
|
+
type: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
|
|
422
|
+
initial: InitialTransitionDefinition<TContext, TEvent> | undefined;
|
|
423
|
+
history: boolean | 'shallow' | 'deep' | undefined;
|
|
424
|
+
states: StatesDefinition<TContext, TEvent>;
|
|
425
|
+
on: TransitionDefinitionMap<TContext, TEvent>;
|
|
426
|
+
transitions: Array<TransitionDefinition<TContext, TEvent>>;
|
|
427
|
+
entry: BaseActionObject[];
|
|
428
|
+
exit: BaseActionObject[];
|
|
429
|
+
meta: any;
|
|
430
|
+
order: number;
|
|
431
|
+
data?: FinalStateNodeConfig<TContext, TEvent>['data'];
|
|
432
|
+
invoke: Array<InvokeDefinition<TContext, TEvent>>;
|
|
433
|
+
description?: string;
|
|
434
|
+
tags: string[];
|
|
435
|
+
}
|
|
436
|
+
export declare type AnyStateNode = StateNode<any, any>;
|
|
437
|
+
export declare type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
|
|
438
|
+
export declare type AnyState = State<any, any, any>;
|
|
439
|
+
export declare type AnyStateMachine = StateMachine<any, any, any, any, any>;
|
|
440
|
+
export declare type AnyStateConfig = StateConfig<any, AnyEventObject>;
|
|
441
|
+
export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent> {
|
|
442
|
+
initial?: undefined;
|
|
443
|
+
parallel?: false | undefined;
|
|
444
|
+
states?: undefined;
|
|
445
|
+
onDone?: undefined;
|
|
446
|
+
}
|
|
447
|
+
export interface HistoryStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends AtomicStateNodeConfig<TContext, TEvent> {
|
|
448
|
+
history: 'shallow' | 'deep' | true;
|
|
449
|
+
target: string | undefined;
|
|
450
|
+
}
|
|
451
|
+
export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends AtomicStateNodeConfig<TContext, TEvent> {
|
|
452
|
+
type: 'final';
|
|
453
|
+
/**
|
|
454
|
+
* The data to be sent with the "done.state.<id>" event. The data can be
|
|
455
|
+
* static or dynamic (based on assigners).
|
|
456
|
+
*/
|
|
457
|
+
data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
|
|
458
|
+
}
|
|
459
|
+
export declare type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent>;
|
|
460
|
+
export declare type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
|
|
461
|
+
[K in TAction['type']]?: BaseDynamicActionObject<TContext, TEvent, TAction, any> | ActionFunction<TContext, TEvent, TAction extends {
|
|
462
|
+
type: K;
|
|
463
|
+
} ? TAction : never>;
|
|
464
|
+
};
|
|
465
|
+
export declare type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
|
|
466
|
+
export declare type DelayConfig<TContext extends MachineContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
|
|
467
|
+
export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> {
|
|
468
|
+
guards: Record<string, GuardPredicate<TContext, TEvent>>;
|
|
469
|
+
actions: ActionFunctionMap<TContext, TEvent, TAction>;
|
|
470
|
+
actors: Record<string, BehaviorCreator<TContext, TEvent>>;
|
|
471
|
+
delays: DelayFunctionMap<TContext, TEvent>;
|
|
472
|
+
context: Partial<TContext> | ContextFactory<Partial<TContext>>;
|
|
473
|
+
}
|
|
474
|
+
declare type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>> = {
|
|
475
|
+
[K in keyof TEventsCausingActions]?: BaseDynamicActionObject<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, any, // TODO: this should receive something like `Cast<Prop<TIndexedActions, K>, BaseActionObject>`, but at the moment builtin actions expect Resolved*Action here and this should be simplified somehow
|
|
476
|
+
any> | ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedActions, K>, BaseActionObject>>;
|
|
477
|
+
};
|
|
478
|
+
declare type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
479
|
+
[K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
|
|
480
|
+
};
|
|
481
|
+
declare type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
482
|
+
[K in keyof TEventsCausingGuards]?: GuardPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
|
|
483
|
+
};
|
|
484
|
+
declare type MachineImplementationsActors<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActors'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
|
|
485
|
+
[K in keyof TEventsCausingActors]?: BehaviorCreator<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActors[K]>, EventObject>>;
|
|
486
|
+
};
|
|
487
|
+
declare type MakeKeysRequired<T extends string> = {
|
|
488
|
+
[K in T]: unknown;
|
|
489
|
+
};
|
|
490
|
+
declare type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
|
|
491
|
+
[K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
|
|
492
|
+
} : {};
|
|
493
|
+
declare type GenerateActionsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
|
|
494
|
+
actions?: MachineImplementationsActions<TContext, TResolvedTypesMeta>;
|
|
495
|
+
};
|
|
496
|
+
declare type GenerateDelaysImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
|
|
497
|
+
delays?: MachineImplementationsDelays<TContext, TResolvedTypesMeta>;
|
|
498
|
+
};
|
|
499
|
+
declare type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
|
|
500
|
+
guards?: MachineImplementationsGuards<TContext, TResolvedTypesMeta>;
|
|
501
|
+
};
|
|
502
|
+
declare type GenerateActorsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actors', Prop<TMissingImplementations, 'actors'>, TRequireMissingImplementations> & {
|
|
503
|
+
actors?: MachineImplementationsActors<TContext, TResolvedTypesMeta>;
|
|
504
|
+
};
|
|
505
|
+
export declare 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>;
|
|
506
|
+
export declare type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TActorMap extends ActorMap = ActorMap, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TActorMap>>;
|
|
507
|
+
declare type InitialContext<TContext extends MachineContext> = TContext | ContextFactory<TContext>;
|
|
508
|
+
export declare type ContextFactory<TContext extends MachineContext> = (stuff: {
|
|
509
|
+
spawn: Spawner;
|
|
510
|
+
}) => TContext;
|
|
511
|
+
export interface MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TActorMap extends ActorMap = ActorMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, TAction> {
|
|
512
|
+
/**
|
|
513
|
+
* The initial context (extended state)
|
|
514
|
+
*/
|
|
515
|
+
context?: InitialContext<LowInfer<TContext>>;
|
|
516
|
+
/**
|
|
517
|
+
* The machine's own version.
|
|
518
|
+
*/
|
|
519
|
+
version?: string;
|
|
520
|
+
/**
|
|
521
|
+
* If `true`, will use SCXML semantics, such as event token matching.
|
|
522
|
+
*/
|
|
523
|
+
scxml?: boolean;
|
|
524
|
+
schema?: MachineSchema<TContext, TEvent, TActorMap>;
|
|
525
|
+
tsTypes?: TTypesMeta;
|
|
526
|
+
}
|
|
527
|
+
export declare type ActorMap = Record<string, {
|
|
528
|
+
data: any;
|
|
529
|
+
}>;
|
|
530
|
+
export interface MachineSchema<TContext extends MachineContext, TEvent extends EventObject, TActorMap extends ActorMap = ActorMap> {
|
|
531
|
+
context?: TContext;
|
|
532
|
+
actions?: {
|
|
533
|
+
type: string;
|
|
534
|
+
[key: string]: any;
|
|
535
|
+
};
|
|
536
|
+
actors?: TActorMap;
|
|
537
|
+
events?: TEvent;
|
|
538
|
+
guards?: {
|
|
539
|
+
type: string;
|
|
540
|
+
[key: string]: any;
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
export interface HistoryStateNode<TContext extends MachineContext> extends StateNode<TContext> {
|
|
544
|
+
history: 'shallow' | 'deep';
|
|
545
|
+
target: string | undefined;
|
|
546
|
+
}
|
|
547
|
+
export declare type HistoryValue<TContext extends MachineContext, TEvent extends EventObject> = Record<string, Array<StateNode<TContext, TEvent>>>;
|
|
548
|
+
export declare type StateFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = T extends AnyStateMachine ? ReturnType<T['transition']> : T extends (...args: any[]) => AnyStateMachine ? ReturnType<ReturnType<T>['transition']> : never;
|
|
549
|
+
export declare type Transitions<TContext extends MachineContext, TEvent extends EventObject> = Array<TransitionDefinition<TContext, TEvent>>;
|
|
550
|
+
export declare enum ActionTypes {
|
|
551
|
+
Stop = "xstate.stop",
|
|
552
|
+
Raise = "xstate.raise",
|
|
553
|
+
Send = "xstate.send",
|
|
554
|
+
Cancel = "xstate.cancel",
|
|
555
|
+
Assign = "xstate.assign",
|
|
556
|
+
After = "xstate.after",
|
|
557
|
+
DoneState = "done.state",
|
|
558
|
+
DoneInvoke = "done.invoke",
|
|
559
|
+
Log = "xstate.log",
|
|
560
|
+
Init = "xstate.init",
|
|
561
|
+
Invoke = "xstate.invoke",
|
|
562
|
+
ErrorExecution = "error.execution",
|
|
563
|
+
ErrorCommunication = "error.communication",
|
|
564
|
+
ErrorPlatform = "error.platform",
|
|
565
|
+
ErrorCustom = "xstate.error",
|
|
566
|
+
Update = "xstate.update",
|
|
567
|
+
Pure = "xstate.pure",
|
|
568
|
+
Choose = "xstate.choose"
|
|
569
|
+
}
|
|
570
|
+
export interface RaiseActionObject<TEvent extends EventObject> extends BuiltInActionObject {
|
|
571
|
+
type: ActionTypes.Raise;
|
|
572
|
+
params: {
|
|
573
|
+
_event: SCXML.Event<TEvent>;
|
|
574
|
+
};
|
|
575
|
+
}
|
|
576
|
+
export interface DoneInvokeEvent<TData> extends EventObject {
|
|
577
|
+
type: `done.invoke.${string}`;
|
|
578
|
+
data: TData;
|
|
579
|
+
}
|
|
580
|
+
export interface ErrorEvent<TErrorData> {
|
|
581
|
+
type: `error.${string}`;
|
|
582
|
+
data: TErrorData;
|
|
583
|
+
}
|
|
584
|
+
export interface SnapshotEvent<TData> {
|
|
585
|
+
type: `xstate.snapshot.${string}`;
|
|
586
|
+
data: TData;
|
|
587
|
+
}
|
|
588
|
+
export interface ErrorExecutionEvent extends EventObject {
|
|
589
|
+
src: string;
|
|
590
|
+
type: ActionTypes.ErrorExecution;
|
|
591
|
+
data: any;
|
|
592
|
+
}
|
|
593
|
+
export interface ErrorPlatformEvent extends EventObject {
|
|
594
|
+
data: any;
|
|
595
|
+
}
|
|
596
|
+
export interface SCXMLErrorEvent extends SCXML.Event<any> {
|
|
597
|
+
name: ActionTypes.ErrorExecution | ActionTypes.ErrorPlatform | ActionTypes.ErrorCommunication;
|
|
598
|
+
data: any;
|
|
599
|
+
}
|
|
600
|
+
export interface DoneEventObject extends EventObject {
|
|
601
|
+
data?: any;
|
|
602
|
+
toString(): string;
|
|
603
|
+
}
|
|
604
|
+
export interface UpdateObject extends EventObject {
|
|
605
|
+
id: string | number;
|
|
606
|
+
state: AnyState;
|
|
607
|
+
}
|
|
608
|
+
export declare type DoneEvent = DoneEventObject & string;
|
|
609
|
+
export interface InvokeAction {
|
|
610
|
+
type: ActionTypes.Invoke;
|
|
611
|
+
src: InvokeSourceDefinition | ActorRef<any>;
|
|
612
|
+
id: string;
|
|
613
|
+
autoForward?: boolean;
|
|
614
|
+
data?: any;
|
|
615
|
+
exec?: undefined;
|
|
616
|
+
meta: MetaObject | undefined;
|
|
617
|
+
}
|
|
618
|
+
export interface DynamicInvokeActionObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
619
|
+
type: ActionTypes.Invoke;
|
|
620
|
+
params: InvokeDefinition<TContext, TEvent>;
|
|
621
|
+
}
|
|
622
|
+
export interface InvokeActionObject extends BaseActionObject {
|
|
623
|
+
type: ActionTypes.Invoke;
|
|
624
|
+
params: {
|
|
625
|
+
src: InvokeSourceDefinition | ActorRef<any>;
|
|
626
|
+
id: string;
|
|
627
|
+
autoForward?: boolean;
|
|
628
|
+
data?: any;
|
|
629
|
+
exec?: undefined;
|
|
630
|
+
ref?: ActorRef<any>;
|
|
631
|
+
meta: MetaObject | undefined;
|
|
632
|
+
};
|
|
633
|
+
}
|
|
634
|
+
export interface DynamicStopActionObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
635
|
+
type: ActionTypes.Stop;
|
|
636
|
+
params: {
|
|
637
|
+
actor: string | Expr<TContext, TEvent, ActorRef<any>>;
|
|
638
|
+
};
|
|
639
|
+
}
|
|
640
|
+
export interface StopActionObject {
|
|
641
|
+
type: ActionTypes.Stop;
|
|
642
|
+
params: {
|
|
643
|
+
actor: string | ActorRef<any>;
|
|
644
|
+
};
|
|
645
|
+
}
|
|
646
|
+
export declare type DelayExpr<TContext extends MachineContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, number>;
|
|
647
|
+
export declare type LogExpr<TContext extends MachineContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, any>;
|
|
648
|
+
export interface DynamicLogAction<TContext extends MachineContext, TEvent extends EventObject> extends BaseDynamicActionObject<TContext, TEvent, LogActionObject, {
|
|
649
|
+
label: string | undefined;
|
|
650
|
+
expr: string | LogExpr<TContext, TEvent>;
|
|
651
|
+
}> {
|
|
652
|
+
type: ActionTypes.Log;
|
|
653
|
+
}
|
|
654
|
+
export interface LogActionObject extends BuiltInActionObject {
|
|
655
|
+
type: ActionTypes.Log;
|
|
656
|
+
params: {
|
|
657
|
+
label: string | undefined;
|
|
658
|
+
value: any;
|
|
659
|
+
};
|
|
660
|
+
}
|
|
661
|
+
export interface SendActionObject<TSentEvent extends EventObject = AnyEventObject> extends BaseActionObject {
|
|
662
|
+
type: 'xstate.send';
|
|
663
|
+
params: {
|
|
664
|
+
to: string | ActorRef<TSentEvent> | undefined;
|
|
665
|
+
_event: SCXML.Event<TSentEvent>;
|
|
666
|
+
event: TSentEvent;
|
|
667
|
+
delay?: number;
|
|
668
|
+
id: string | number;
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
export declare type Expr<TContext extends MachineContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent) => T;
|
|
672
|
+
export declare type ExprWithMeta<TContext extends MachineContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent, meta: SCXMLEventMeta<TEvent>) => T;
|
|
673
|
+
export declare type SendExpr<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = ExprWithMeta<TContext, TEvent, TSentEvent>;
|
|
674
|
+
export declare enum SpecialTargets {
|
|
675
|
+
Parent = "#_parent",
|
|
676
|
+
Internal = "#_internal"
|
|
677
|
+
}
|
|
678
|
+
export interface SendActionOptions<TContext extends MachineContext, TEvent extends EventObject> {
|
|
679
|
+
id?: string | number;
|
|
680
|
+
delay?: number | string | DelayExpr<TContext, TEvent>;
|
|
681
|
+
to?: string | ExprWithMeta<TContext, TEvent, string | ActorRef<any> | undefined> | undefined;
|
|
682
|
+
}
|
|
683
|
+
export interface SendActionParams<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = EventObject> extends SendActionOptions<TContext, TEvent> {
|
|
684
|
+
event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>;
|
|
685
|
+
}
|
|
686
|
+
export interface DynamicCancelActionObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
687
|
+
type: ActionTypes.Cancel;
|
|
688
|
+
params: {
|
|
689
|
+
sendId: string | ExprWithMeta<TContext, TEvent, string>;
|
|
690
|
+
};
|
|
691
|
+
}
|
|
692
|
+
export interface CancelActionObject extends BaseActionObject {
|
|
693
|
+
type: ActionTypes.Cancel;
|
|
694
|
+
params: {
|
|
695
|
+
sendId: string;
|
|
696
|
+
};
|
|
697
|
+
}
|
|
698
|
+
export declare type Assigner<TContext extends MachineContext, TEvent extends EventObject> = (context: TContext, event: TEvent, meta: AssignMeta<TContext, TEvent>) => Partial<TContext>;
|
|
699
|
+
export declare type PartialAssigner<TContext extends MachineContext, TEvent extends EventObject, TKey extends keyof TContext> = (context: TContext, event: TEvent, meta: AssignMeta<TContext, TEvent>) => TContext[TKey];
|
|
700
|
+
export declare type PropertyAssigner<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
701
|
+
[K in keyof TContext]?: PartialAssigner<TContext, TEvent, K> | TContext[K];
|
|
702
|
+
};
|
|
703
|
+
export declare type Mapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = (context: TContext, event: TEvent) => TParams;
|
|
704
|
+
export declare type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
|
|
705
|
+
[K in keyof TParams]?: ((context: TContext, event: TEvent) => TParams[K]) | TParams[K];
|
|
706
|
+
};
|
|
707
|
+
export interface AnyAssignAction extends BaseActionObject {
|
|
708
|
+
type: ActionTypes.Assign;
|
|
709
|
+
assignment: any;
|
|
710
|
+
}
|
|
711
|
+
export declare type DynamicAssignAction<TContext extends MachineContext, TEvent extends EventObject> = BaseDynamicActionObject<TContext, TEvent, AssignActionObject<TContext> | RaiseActionObject<TEvent>, {
|
|
712
|
+
assignment: Assigner<TContext, TEvent> | PropertyAssigner<TContext, TEvent>;
|
|
713
|
+
}>;
|
|
714
|
+
export interface AssignActionObject<TContext extends MachineContext> extends BaseActionObject {
|
|
715
|
+
type: ActionTypes.Assign;
|
|
716
|
+
params: {
|
|
717
|
+
context: TContext;
|
|
718
|
+
actions: BaseActionObject[];
|
|
719
|
+
};
|
|
720
|
+
}
|
|
721
|
+
export interface DynamicPureActionObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
722
|
+
type: ActionTypes.Pure;
|
|
723
|
+
params: {
|
|
724
|
+
get: (context: TContext, event: TEvent) => SingleOrArray<BaseActionObject> | undefined;
|
|
725
|
+
};
|
|
726
|
+
}
|
|
727
|
+
export interface PureActionObject extends BaseActionObject {
|
|
728
|
+
type: ActionTypes.Pure;
|
|
729
|
+
params: {
|
|
730
|
+
actions: BaseActionObject[];
|
|
731
|
+
};
|
|
732
|
+
}
|
|
733
|
+
export interface ChooseAction<TContext extends MachineContext, TEvent extends EventObject> extends BaseActionObject {
|
|
734
|
+
type: ActionTypes.Choose;
|
|
735
|
+
params: {
|
|
736
|
+
guards: Array<ChooseCondition<TContext, TEvent>>;
|
|
737
|
+
};
|
|
738
|
+
}
|
|
739
|
+
export interface ResolvedChooseAction extends BaseActionObject {
|
|
740
|
+
type: ActionTypes.Choose;
|
|
741
|
+
params: {
|
|
742
|
+
actions: BaseActionObject[];
|
|
743
|
+
};
|
|
744
|
+
}
|
|
745
|
+
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
|
|
746
|
+
target: Array<StateNode<TContext, TEvent>> | undefined;
|
|
747
|
+
source: StateNode<TContext, TEvent>;
|
|
748
|
+
actions: BaseActionObject[];
|
|
749
|
+
guard?: GuardDefinition<TContext, TEvent>;
|
|
750
|
+
eventType: TEvent['type'] | '*';
|
|
751
|
+
toJSON: () => {
|
|
752
|
+
target: string[] | undefined;
|
|
753
|
+
source: string;
|
|
754
|
+
actions: BaseActionObject[];
|
|
755
|
+
guard?: GuardDefinition<TContext, TEvent>;
|
|
756
|
+
eventType: TEvent['type'] | '*';
|
|
757
|
+
meta?: Record<string, any>;
|
|
758
|
+
};
|
|
759
|
+
}
|
|
760
|
+
export interface InitialTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
|
|
761
|
+
target: Array<StateNode<TContext, TEvent>>;
|
|
762
|
+
guard?: never;
|
|
763
|
+
}
|
|
764
|
+
export declare type TransitionDefinitionMap<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
765
|
+
[K in TEvent['type'] | '*']: Array<TransitionDefinition<TContext, K extends TEvent['type'] ? Extract<TEvent, {
|
|
766
|
+
type: K;
|
|
767
|
+
}> : EventObject>>;
|
|
768
|
+
};
|
|
769
|
+
export interface DelayedTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
|
|
770
|
+
delay: number | string | DelayExpr<TContext, TEvent>;
|
|
771
|
+
}
|
|
772
|
+
export interface Edge<TContext extends MachineContext, TEvent extends EventObject, TEventType extends TEvent['type'] = string> {
|
|
773
|
+
event: TEventType;
|
|
774
|
+
source: StateNode<TContext, TEvent>;
|
|
775
|
+
target: StateNode<TContext, TEvent>;
|
|
776
|
+
cond?: GuardConfig<TContext, TEvent & {
|
|
777
|
+
type: TEventType;
|
|
778
|
+
}>;
|
|
779
|
+
actions: Array<Action<TContext, TEvent>>;
|
|
780
|
+
meta?: MetaObject;
|
|
781
|
+
transition: TransitionDefinition<TContext, TEvent>;
|
|
782
|
+
}
|
|
783
|
+
export interface NodesAndEdges<TContext extends MachineContext, TEvent extends EventObject> {
|
|
784
|
+
nodes: StateNode[];
|
|
785
|
+
edges: Array<Edge<TContext, TEvent, TEvent['type']>>;
|
|
786
|
+
}
|
|
787
|
+
export interface Segment<TContext extends MachineContext, TEvent extends EventObject> {
|
|
788
|
+
/**
|
|
789
|
+
* From state.
|
|
790
|
+
*/
|
|
791
|
+
state: State<TContext, TEvent>;
|
|
792
|
+
/**
|
|
793
|
+
* Event from state.
|
|
794
|
+
*/
|
|
795
|
+
event: TEvent;
|
|
796
|
+
}
|
|
797
|
+
export interface PathItem<TContext extends MachineContext, TEvent extends EventObject> {
|
|
798
|
+
state: State<TContext, TEvent>;
|
|
799
|
+
path: Array<Segment<TContext, TEvent>>;
|
|
800
|
+
weight?: number;
|
|
801
|
+
}
|
|
802
|
+
export interface PathMap<TContext extends MachineContext, TEvent extends EventObject> {
|
|
803
|
+
[key: string]: PathItem<TContext, TEvent>;
|
|
804
|
+
}
|
|
805
|
+
export interface PathsItem<TContext extends MachineContext, TEvent extends EventObject> {
|
|
806
|
+
state: State<TContext, TEvent>;
|
|
807
|
+
paths: Array<Array<Segment<TContext, TEvent>>>;
|
|
808
|
+
}
|
|
809
|
+
export interface PathsMap<TContext extends MachineContext, TEvent extends EventObject> {
|
|
810
|
+
[key: string]: PathsItem<TContext, TEvent>;
|
|
811
|
+
}
|
|
812
|
+
export interface TransitionMap {
|
|
813
|
+
state: StateValue | undefined;
|
|
814
|
+
}
|
|
815
|
+
export interface AdjacencyMap {
|
|
816
|
+
[stateId: string]: Record<string, TransitionMap>;
|
|
817
|
+
}
|
|
818
|
+
export interface ValueAdjacencyMap<TContext extends MachineContext, TEvent extends EventObject> {
|
|
819
|
+
[stateId: string]: Record<string, State<TContext, TEvent>>;
|
|
820
|
+
}
|
|
821
|
+
export interface SCXMLEventMeta<TEvent extends EventObject> {
|
|
822
|
+
_event: SCXML.Event<TEvent>;
|
|
823
|
+
}
|
|
824
|
+
export interface StateMeta<TContext extends MachineContext, TEvent extends EventObject> {
|
|
825
|
+
state: State<TContext, TEvent, any>;
|
|
826
|
+
_event: SCXML.Event<TEvent>;
|
|
827
|
+
}
|
|
828
|
+
export interface StateLike<TContext extends MachineContext> {
|
|
829
|
+
value: StateValue;
|
|
830
|
+
context: TContext;
|
|
831
|
+
event: EventObject;
|
|
832
|
+
_event: SCXML.Event<EventObject>;
|
|
833
|
+
}
|
|
834
|
+
export interface StateConfig<TContext extends MachineContext, TEvent extends EventObject> {
|
|
835
|
+
value: StateValue;
|
|
836
|
+
context: TContext;
|
|
837
|
+
_event: SCXML.Event<TEvent>;
|
|
838
|
+
_sessionid: string | null;
|
|
839
|
+
historyValue?: HistoryValue<TContext, TEvent>;
|
|
840
|
+
actions?: BaseActionObject[];
|
|
841
|
+
meta?: any;
|
|
842
|
+
configuration: Array<StateNode<TContext, TEvent>>;
|
|
843
|
+
transitions: Array<TransitionDefinition<TContext, TEvent>>;
|
|
844
|
+
children: Record<string, ActorRef<any>>;
|
|
845
|
+
done?: boolean;
|
|
846
|
+
tags?: Set<string>;
|
|
847
|
+
machine?: StateMachine<TContext, TEvent, any, any, any>;
|
|
848
|
+
}
|
|
849
|
+
export interface InterpreterOptions {
|
|
850
|
+
/**
|
|
851
|
+
* Whether state actions should be executed immediately upon transition. Defaults to `true`.
|
|
852
|
+
*/
|
|
853
|
+
execute?: boolean;
|
|
854
|
+
clock?: Clock;
|
|
855
|
+
logger?: (...args: any[]) => void;
|
|
856
|
+
parent?: ActorRef<any>;
|
|
857
|
+
/**
|
|
858
|
+
* If `true`, defers processing of sent events until the service
|
|
859
|
+
* is initialized (`.start()`). Otherwise, an error will be thrown
|
|
860
|
+
* for events sent to an uninitialized service.
|
|
861
|
+
*
|
|
862
|
+
* Default: `true`
|
|
863
|
+
*/
|
|
864
|
+
deferEvents?: boolean;
|
|
865
|
+
/**
|
|
866
|
+
* The custom `id` for referencing this service.
|
|
867
|
+
*/
|
|
868
|
+
id?: string;
|
|
869
|
+
/**
|
|
870
|
+
* If `true`, states and events will be logged to Redux DevTools.
|
|
871
|
+
*
|
|
872
|
+
* Default: `false`
|
|
873
|
+
*/
|
|
874
|
+
devTools?: boolean | DevToolsAdapter;
|
|
875
|
+
/**
|
|
876
|
+
* If `true`, events from the parent will be sent to this interpreter.
|
|
877
|
+
*
|
|
878
|
+
* Default: `false`
|
|
879
|
+
*/
|
|
880
|
+
autoForward?: boolean;
|
|
881
|
+
sync?: boolean;
|
|
882
|
+
}
|
|
883
|
+
export declare type AnyInterpreter = Interpreter<any, any, any>;
|
|
884
|
+
export declare namespace SCXML {
|
|
885
|
+
interface Event<TEvent extends EventObject> {
|
|
886
|
+
/**
|
|
887
|
+
* This is a character string giving the name of the event.
|
|
888
|
+
* The SCXML Processor must set the name field to the name of this event.
|
|
889
|
+
* It is what is matched against the 'event' attribute of <transition>.
|
|
890
|
+
* Note that transitions can do additional tests by using the value of this field
|
|
891
|
+
* inside boolean expressions in the 'cond' attribute.
|
|
892
|
+
*/
|
|
893
|
+
name: string;
|
|
894
|
+
/**
|
|
895
|
+
* This field describes the event type.
|
|
896
|
+
* The SCXML Processor must set it to: "platform" (for events raised by the platform itself, such as error events),
|
|
897
|
+
* "internal" (for events raised by <raise> and <send> with target '_internal')
|
|
898
|
+
* or "external" (for all other events).
|
|
899
|
+
*/
|
|
900
|
+
type: 'platform' | 'internal' | 'external';
|
|
901
|
+
/**
|
|
902
|
+
* If the sending entity has specified a value for this, the Processor must set this field to that value
|
|
903
|
+
* (see C Event I/O Processors for details).
|
|
904
|
+
* Otherwise, in the case of error events triggered by a failed attempt to send an event,
|
|
905
|
+
* the Processor must set this field to the send id of the triggering <send> element.
|
|
906
|
+
* Otherwise it must leave it blank.
|
|
907
|
+
*/
|
|
908
|
+
sendid?: string;
|
|
909
|
+
/**
|
|
910
|
+
* This is a URI, equivalent to the 'target' attribute on the <send> element.
|
|
911
|
+
* For external events, the SCXML Processor should set this field to a value which,
|
|
912
|
+
* when used as the value of 'target', will allow the receiver of the event to <send>
|
|
913
|
+
* a response back to the originating entity via the Event I/O Processor specified in 'origintype'.
|
|
914
|
+
* For internal and platform events, the Processor must leave this field blank.
|
|
915
|
+
*/
|
|
916
|
+
origin?: ActorRef<any>;
|
|
917
|
+
/**
|
|
918
|
+
* This is equivalent to the 'type' field on the <send> element.
|
|
919
|
+
* For external events, the SCXML Processor should set this field to a value which,
|
|
920
|
+
* when used as the value of 'type', will allow the receiver of the event to <send>
|
|
921
|
+
* a response back to the originating entity at the URI specified by 'origin'.
|
|
922
|
+
* For internal and platform events, the Processor must leave this field blank.
|
|
923
|
+
*/
|
|
924
|
+
origintype?: string;
|
|
925
|
+
/**
|
|
926
|
+
* If this event is generated from an invoked child process, the SCXML Processor
|
|
927
|
+
* must set this field to the invoke id of the invocation that triggered the child process.
|
|
928
|
+
* Otherwise it must leave it blank.
|
|
929
|
+
*/
|
|
930
|
+
invokeid?: string;
|
|
931
|
+
/**
|
|
932
|
+
* This field contains whatever data the sending entity chose to include in this event.
|
|
933
|
+
* The receiving SCXML Processor should reformat this data to match its data model,
|
|
934
|
+
* but must not otherwise modify it.
|
|
935
|
+
*
|
|
936
|
+
* If the conversion is not possible, the Processor must leave the field blank
|
|
937
|
+
* and must place an error 'error.execution' in the internal event queue.
|
|
938
|
+
*/
|
|
939
|
+
data: TEvent;
|
|
940
|
+
/**
|
|
941
|
+
* @private
|
|
942
|
+
*/
|
|
943
|
+
$$type: 'scxml';
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
export declare type Observer<T> = {
|
|
947
|
+
next: (value: T) => void;
|
|
948
|
+
error?: (err: any) => void;
|
|
949
|
+
complete?: () => void;
|
|
950
|
+
} | {
|
|
951
|
+
next?: (value: T) => void;
|
|
952
|
+
error: (err: any) => void;
|
|
953
|
+
complete?: () => void;
|
|
954
|
+
} | {
|
|
955
|
+
next?: (value: T) => void;
|
|
956
|
+
error?: (err: any) => void;
|
|
957
|
+
complete: () => void;
|
|
958
|
+
};
|
|
959
|
+
export interface Subscription {
|
|
960
|
+
unsubscribe(): void;
|
|
961
|
+
}
|
|
962
|
+
export interface InteropObservable<T> {
|
|
963
|
+
[Symbol.observable]: () => InteropSubscribable<T>;
|
|
964
|
+
}
|
|
965
|
+
export interface InteropSubscribable<T> {
|
|
966
|
+
subscribe(observer: Observer<T>): Subscription;
|
|
967
|
+
}
|
|
968
|
+
export interface Subscribable<T> extends InteropSubscribable<T> {
|
|
969
|
+
subscribe(observer: Observer<T>): Subscription;
|
|
970
|
+
subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
|
|
971
|
+
}
|
|
972
|
+
export declare type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any, any>;
|
|
973
|
+
export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends any ? TEventType extends TEvent['type'] ? TEvent : never : never;
|
|
974
|
+
export interface BaseActorRef<TEvent extends EventObject> {
|
|
975
|
+
send: (event: TEvent) => void;
|
|
976
|
+
}
|
|
977
|
+
export interface ActorLike<TCurrent, TEvent extends EventObject> extends Subscribable<TCurrent> {
|
|
978
|
+
send: Sender<TEvent>;
|
|
979
|
+
}
|
|
980
|
+
export declare type Sender<TEvent extends EventObject> = (event: TEvent) => void;
|
|
981
|
+
export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends Subscribable<TSnapshot>, InteropObservable<TSnapshot> {
|
|
982
|
+
name: string;
|
|
983
|
+
send: (event: TEvent) => void;
|
|
984
|
+
start?: () => void;
|
|
985
|
+
getSnapshot: () => TSnapshot | undefined;
|
|
986
|
+
stop?: () => void;
|
|
987
|
+
toJSON?: () => any;
|
|
988
|
+
_parent?: ActorRef<any, any>;
|
|
989
|
+
}
|
|
990
|
+
export declare type AnyActorRef = ActorRef<any, any>;
|
|
991
|
+
export declare 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<{
|
|
992
|
+
type: string;
|
|
993
|
+
}, U | undefined> : R extends Behavior<infer TEvent, infer TSnapshot> ? ActorRef<TEvent, TSnapshot> : never : never;
|
|
994
|
+
export declare type DevToolsAdapter = (service: AnyInterpreter) => void;
|
|
995
|
+
export declare type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TEvent, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta> : never;
|
|
996
|
+
export declare 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;
|
|
997
|
+
export declare type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
|
998
|
+
export declare type EventOfMachine<TMachine extends AnyStateMachine> = TMachine extends StateMachine<any, infer E, any, any, any> ? E : never;
|
|
999
|
+
export interface ActorContext<TEvent extends EventObject, TSnapshot> {
|
|
1000
|
+
self: ActorRef<TEvent, TSnapshot>;
|
|
1001
|
+
name: string;
|
|
1002
|
+
_event: SCXML.Event<TEvent> | LifecycleSignal;
|
|
1003
|
+
}
|
|
1004
|
+
export interface Behavior<TEvent extends EventObject, TSnapshot = any> {
|
|
1005
|
+
transition: (state: TSnapshot, message: TEvent | LifecycleSignal, ctx: ActorContext<TEvent, TSnapshot>) => TSnapshot;
|
|
1006
|
+
initialState: TSnapshot;
|
|
1007
|
+
start?: (actorCtx: ActorContext<TEvent, TSnapshot>) => TSnapshot;
|
|
1008
|
+
}
|
|
1009
|
+
export declare type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends Interpreter<infer _, infer __, infer ___> ? R['initialState'] : R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Behavior<infer _, infer TSnapshot> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot> ? TSnapshot : never : never;
|
|
1010
|
+
declare type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends Model<infer _, infer TEvent, infer __, infer ___> ? TEvent : R extends State<infer _, infer TEvent, infer __> ? TEvent : R extends Interpreter<infer _, infer TEvent, infer __> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
|
|
1011
|
+
export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
|
1012
|
+
/**
|
|
1013
|
+
* Events that do not require payload
|
|
1014
|
+
*/
|
|
1015
|
+
export declare type SimpleEventsOf<TEvent extends EventObject> = ExtractWithSimpleSupport<TEvent>;
|
|
1016
|
+
export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends Model<infer TContext, infer _, infer __, infer ___> ? TContext : R extends State<infer TContext, infer _, infer __> ? TContext : R extends Interpreter<infer TContext, infer _, infer __> ? TContext : never : never;
|
|
1017
|
+
export declare type InferEvent<E extends EventObject> = {
|
|
1018
|
+
[T in E['type']]: {
|
|
1019
|
+
type: T;
|
|
1020
|
+
} & Extract<E, {
|
|
1021
|
+
type: T;
|
|
1022
|
+
}>;
|
|
1023
|
+
}[E['type']];
|
|
1024
|
+
export declare type TODO = any;
|
|
1025
|
+
export declare type StateValueFrom<TMachine extends AnyStateMachine> = Parameters<StateFrom<TMachine>['matches']>[0];
|
|
1026
|
+
export {};
|