xstate 5.0.0-beta.29 → 5.0.0-beta.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/actions/dist/xstate-actions.cjs.js +3 -3
- package/actions/dist/xstate-actions.development.cjs.js +3 -3
- package/actions/dist/xstate-actions.development.esm.js +3 -3
- package/actions/dist/xstate-actions.esm.js +3 -3
- package/actions/dist/xstate-actions.umd.min.js +1 -1
- package/actions/dist/xstate-actions.umd.min.js.map +1 -1
- package/actors/dist/xstate-actors.cjs.js +100 -104
- package/actors/dist/xstate-actors.development.cjs.js +100 -104
- package/actors/dist/xstate-actors.development.esm.js +100 -104
- package/actors/dist/xstate-actors.esm.js +100 -104
- package/actors/dist/xstate-actors.umd.min.js +1 -1
- package/actors/dist/xstate-actors.umd.min.js.map +1 -1
- package/dist/declarations/src/Machine.d.ts +2 -2
- package/dist/declarations/src/State.d.ts +4 -6
- package/dist/declarations/src/StateMachine.d.ts +28 -21
- package/dist/declarations/src/StateNode.d.ts +3 -3
- package/dist/declarations/src/actions/stop.d.ts +1 -1
- package/dist/declarations/src/actors/callback.d.ts +8 -8
- package/dist/declarations/src/actors/index.d.ts +3 -3
- package/dist/declarations/src/actors/observable.d.ts +12 -13
- package/dist/declarations/src/actors/promise.d.ts +11 -14
- package/dist/declarations/src/actors/transition.d.ts +10 -7
- package/dist/declarations/src/index.d.ts +1 -1
- package/dist/declarations/src/interpreter.d.ts +4 -4
- package/dist/declarations/src/spawn.d.ts +3 -0
- package/dist/declarations/src/stateUtils.d.ts +5 -6
- package/dist/declarations/src/types.d.ts +74 -69
- package/dist/declarations/src/utils.d.ts +4 -4
- package/dist/{interpreter-c357bc50.cjs.js → interpreter-05e11c15.cjs.js} +11 -13
- package/dist/{interpreter-e2c6a579.development.cjs.js → interpreter-a2236840.development.cjs.js} +12 -14
- package/dist/{interpreter-498891b2.esm.js → interpreter-d5fa7ce0.esm.js} +11 -13
- package/dist/{interpreter-6e7909c8.development.esm.js → interpreter-e4d2487f.development.esm.js} +12 -14
- package/dist/{raise-59f2c242.esm.js → raise-6a68d0cc.esm.js} +61 -32
- package/dist/{raise-e778a828.development.esm.js → raise-6fbd4513.development.esm.js} +61 -32
- package/dist/{raise-03e57569.cjs.js → raise-90808d65.cjs.js} +61 -32
- package/dist/{raise-f751dfac.development.cjs.js → raise-b4bfe138.development.cjs.js} +61 -32
- package/dist/{send-f53778f6.development.cjs.js → send-4163d2af.development.cjs.js} +52 -20
- package/dist/{send-51717e53.cjs.js → send-72e85cc6.cjs.js} +52 -20
- package/dist/{send-42c83fb2.development.esm.js → send-7baeedcb.development.esm.js} +52 -20
- package/dist/{send-fff224db.esm.js → send-e5f0f3f6.esm.js} +52 -20
- package/dist/xstate.cjs.js +15 -24
- package/dist/xstate.development.cjs.js +18 -24
- package/dist/xstate.development.esm.js +21 -27
- package/dist/xstate.esm.js +18 -27
- package/dist/xstate.umd.min.js +1 -1
- package/dist/xstate.umd.min.js.map +1 -1
- package/guards/dist/xstate-guards.cjs.js +2 -2
- package/guards/dist/xstate-guards.development.cjs.js +2 -2
- package/guards/dist/xstate-guards.development.esm.js +2 -2
- package/guards/dist/xstate-guards.esm.js +2 -2
- package/guards/dist/xstate-guards.umd.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { ActorLogic, ActorRefFrom, ActorSystem, AnyActorSystem } from "../types.js";
|
|
1
|
+
import { ActorLogic, ActorRefFrom, ActorSystem, AnyActorSystem, Snapshot } from "../types.js";
|
|
2
2
|
import { XSTATE_STOP } from "../constants.js";
|
|
3
|
-
export
|
|
4
|
-
status: 'active' | 'error' | 'done' | 'canceled';
|
|
5
|
-
data: T | undefined;
|
|
3
|
+
export type PromiseSnapshot<TOutput, TInput> = Snapshot<TOutput> & {
|
|
6
4
|
input: TInput | undefined;
|
|
7
|
-
}
|
|
5
|
+
};
|
|
8
6
|
declare const resolveEventType = "$$xstate.resolve";
|
|
9
7
|
declare const rejectEventType = "$$xstate.reject";
|
|
10
8
|
export type PromiseActorEvents<T> = {
|
|
@@ -16,17 +14,16 @@ export type PromiseActorEvents<T> = {
|
|
|
16
14
|
} | {
|
|
17
15
|
type: typeof XSTATE_STOP;
|
|
18
16
|
};
|
|
19
|
-
export type PromiseActorLogic<
|
|
17
|
+
export type PromiseActorLogic<TOutput, TInput = unknown> = ActorLogic<PromiseSnapshot<TOutput, TInput>, {
|
|
20
18
|
type: string;
|
|
21
19
|
[k: string]: unknown;
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
ActorSystem<any
|
|
25
|
-
|
|
26
|
-
export
|
|
27
|
-
export declare function fromPromise<T, TInput>(promiseCreator: ({ input, system }: {
|
|
20
|
+
}, TInput, // input
|
|
21
|
+
PromiseSnapshot<TOutput, TInput>, // persisted state
|
|
22
|
+
ActorSystem<any>>;
|
|
23
|
+
export type PromiseActorRef<TOutput> = ActorRefFrom<PromiseActorLogic<TOutput, unknown>>;
|
|
24
|
+
export declare function fromPromise<TOutput, TInput = unknown>(promiseCreator: ({ input, system }: {
|
|
28
25
|
input: TInput;
|
|
29
26
|
system: AnyActorSystem;
|
|
30
|
-
self: PromiseActorRef<
|
|
31
|
-
}) => PromiseLike<
|
|
27
|
+
self: PromiseActorRef<TOutput>;
|
|
28
|
+
}) => PromiseLike<TOutput>): PromiseActorLogic<TOutput, TInput>;
|
|
32
29
|
export {};
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import { ActorLogic, ActorContext, ActorSystem, EventObject, ActorRefFrom, AnyActorSystem } from "../types.js";
|
|
2
|
-
export type
|
|
3
|
-
|
|
1
|
+
import { ActorLogic, ActorContext, ActorSystem, EventObject, ActorRefFrom, AnyActorSystem, Snapshot } from "../types.js";
|
|
2
|
+
export type TransitionSnapshot<TContext> = Snapshot<undefined> & {
|
|
3
|
+
context: TContext;
|
|
4
|
+
};
|
|
5
|
+
export type TransitionActorLogic<TContext, TEvent extends EventObject, TInput> = ActorLogic<TransitionSnapshot<TContext>, TEvent, TInput, TransitionSnapshot<TContext>, AnyActorSystem>;
|
|
6
|
+
export type TransitionActorRef<TContext, TEvent extends EventObject> = ActorRefFrom<TransitionActorLogic<TransitionSnapshot<TContext>, TEvent, unknown>>;
|
|
4
7
|
/**
|
|
5
8
|
* Returns actor logic from a transition function and its initial state.
|
|
6
9
|
*
|
|
7
10
|
* A transition function is a function that takes the current state and an event and returns the next state.
|
|
8
11
|
*
|
|
9
12
|
* @param transition The transition function that returns the next state given the current state and event.
|
|
10
|
-
* @param
|
|
13
|
+
* @param initialContext The initial state of the transition function.
|
|
11
14
|
* @returns Actor logic
|
|
12
15
|
*/
|
|
13
|
-
export declare function fromTransition<
|
|
16
|
+
export declare function fromTransition<TContext, TEvent extends EventObject, TSystem extends ActorSystem<any>, TInput>(transition: (state: TContext, event: TEvent, actorContext: ActorContext<TransitionSnapshot<TContext>, TEvent, TSystem>) => TContext, initialContext: TContext | (({ input, self }: {
|
|
14
17
|
input: TInput;
|
|
15
|
-
self: TransitionActorRef<
|
|
16
|
-
}) =>
|
|
18
|
+
self: TransitionActorRef<TContext, TEvent>;
|
|
19
|
+
}) => TContext)): TransitionActorLogic<TContext, TEvent, TInput>;
|
|
@@ -2,7 +2,7 @@ export * from "./actions.js";
|
|
|
2
2
|
export * from "./actors/index.js";
|
|
3
3
|
export { SimulatedClock } from "./SimulatedClock.js";
|
|
4
4
|
export { type Spawner } from "./spawn.js";
|
|
5
|
-
export { StateMachine } from "./StateMachine.js";
|
|
5
|
+
export { StateMachine, type MachineSnapshot } from "./StateMachine.js";
|
|
6
6
|
export { getStateNodes } from "./stateUtils.js";
|
|
7
7
|
export * from "./typegenTypes.js";
|
|
8
8
|
export * from "./types.js";
|
|
@@ -19,7 +19,7 @@ export declare enum ActorStatus {
|
|
|
19
19
|
* @deprecated Use `ActorStatus` instead.
|
|
20
20
|
*/
|
|
21
21
|
export declare const InterpreterStatus: typeof ActorStatus;
|
|
22
|
-
export declare class Actor<TLogic extends AnyActorLogic
|
|
22
|
+
export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<EventFromLogic<TLogic>, SnapshotFrom<TLogic>> {
|
|
23
23
|
logic: TLogic;
|
|
24
24
|
/**
|
|
25
25
|
* The current internal state of the actor.
|
|
@@ -42,8 +42,8 @@ export declare class Actor<TLogic extends AnyActorLogic, TEvent extends EventObj
|
|
|
42
42
|
* Whether the service is started.
|
|
43
43
|
*/
|
|
44
44
|
status: ActorStatus;
|
|
45
|
-
_parent?: ActorRef<any>;
|
|
46
|
-
ref: ActorRef<
|
|
45
|
+
_parent?: ActorRef<any, any>;
|
|
46
|
+
ref: ActorRef<EventFromLogic<TLogic>, SnapshotFrom<TLogic>>;
|
|
47
47
|
private _actorContext;
|
|
48
48
|
private _systemId;
|
|
49
49
|
/**
|
|
@@ -83,7 +83,7 @@ export declare class Actor<TLogic extends AnyActorLogic, TEvent extends EventObj
|
|
|
83
83
|
*
|
|
84
84
|
* @param event The event to send
|
|
85
85
|
*/
|
|
86
|
-
send(event:
|
|
86
|
+
send(event: EventFromLogic<TLogic>): void;
|
|
87
87
|
delaySend({ event, id, delay, to }: {
|
|
88
88
|
event: EventObject;
|
|
89
89
|
id: string | undefined;
|
|
@@ -6,12 +6,14 @@ type SpawnOptions<TActor extends ProvidedActor, TSrc extends TActor['src']> = TA
|
|
|
6
6
|
id: TActor['id'];
|
|
7
7
|
systemId?: string;
|
|
8
8
|
input?: InputFrom<TActor['logic']>;
|
|
9
|
+
syncSnapshot?: boolean;
|
|
9
10
|
}
|
|
10
11
|
] : [
|
|
11
12
|
options?: {
|
|
12
13
|
id?: string;
|
|
13
14
|
systemId?: string;
|
|
14
15
|
input?: InputFrom<TActor['logic']>;
|
|
16
|
+
syncSnapshot?: boolean;
|
|
15
17
|
}
|
|
16
18
|
] : never;
|
|
17
19
|
export type Spawner<TActor extends ProvidedActor> = IsLiteralString<TActor['src']> extends true ? <TSrc extends TActor['src']>(logic: TSrc, ...[options]: SpawnOptions<TActor, TSrc>) => ActorRefFrom<(TActor & {
|
|
@@ -20,6 +22,7 @@ export type Spawner<TActor extends ProvidedActor> = IsLiteralString<TActor['src'
|
|
|
20
22
|
id?: string;
|
|
21
23
|
systemId?: string;
|
|
22
24
|
input?: unknown;
|
|
25
|
+
syncSnapshot?: boolean;
|
|
23
26
|
}) => TLogic extends string ? AnyActorRef : ActorRefFrom<TLogic>;
|
|
24
27
|
export declare function createSpawner(actorContext: AnyActorContext, { machine, context }: AnyState, event: AnyEventObject, spawnedChildren: Record<string, AnyActorRef>): Spawner<any>;
|
|
25
28
|
export {};
|
|
@@ -35,12 +35,11 @@ export declare function getStateNodeByPath(stateNode: AnyStateNode, statePath: s
|
|
|
35
35
|
*
|
|
36
36
|
* @param state The state value or State instance
|
|
37
37
|
*/
|
|
38
|
-
export declare function getStateNodes<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, state: StateValue | State<TContext, TEvent, TODO, TODO, TODO
|
|
39
|
-
export declare function transitionAtomicNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: string, state: State<TContext, TEvent, TODO, TODO, TODO
|
|
40
|
-
export declare function transitionCompoundNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, state: State<TContext, TEvent, TODO, TODO, TODO
|
|
41
|
-
export declare function transitionParallelNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, state: State<TContext, TEvent, TODO, TODO, TODO
|
|
42
|
-
export declare function transitionNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValue, state: State<TContext, TEvent, TODO, TODO, TODO,
|
|
43
|
-
TODO>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
|
|
38
|
+
export declare function getStateNodes<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, state: StateValue | State<TContext, TEvent, TODO, TODO, TODO>): Array<AnyStateNode>;
|
|
39
|
+
export declare function transitionAtomicNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: string, state: State<TContext, TEvent, TODO, TODO, TODO>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
|
|
40
|
+
export declare function transitionCompoundNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, state: State<TContext, TEvent, TODO, TODO, TODO>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
|
|
41
|
+
export declare function transitionParallelNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, state: State<TContext, TEvent, TODO, TODO, TODO>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
|
|
42
|
+
export declare function transitionNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValue, state: State<TContext, TEvent, TODO, TODO, TODO>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
|
|
44
43
|
export declare function removeConflictingTransitions(enabledTransitions: Array<AnyTransitionDefinition>, configuration: Set<AnyStateNode>, historyValue: AnyHistoryValue): Array<AnyTransitionDefinition>;
|
|
45
44
|
/**
|
|
46
45
|
* https://www.w3.org/TR/scxml/#microstepProcedure
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import type { StateNode } from "./StateNode.js";
|
|
2
2
|
import type { State } from "./State.js";
|
|
3
3
|
import type { ActorStatus, Clock, Actor } from "./interpreter.js";
|
|
4
|
-
import type { StateMachine } from "./StateMachine.js";
|
|
4
|
+
import type { MachineSnapshot, StateMachine } from "./StateMachine.js";
|
|
5
5
|
import { TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, MarkAllImplementationsAsProvided, AreAllImplementationsAssumedToBeProvided } from "./typegenTypes.js";
|
|
6
6
|
import { PromiseActorLogic } from "./actors/promise.js";
|
|
7
7
|
import { Guard, GuardPredicate, UnknownGuard } from "./guards.js";
|
|
8
8
|
import { Spawner } from "./spawn.js";
|
|
9
9
|
import { AssignArgs } from "./actions/assign.js";
|
|
10
|
+
export type HomomorphicPick<T, K extends keyof any> = {
|
|
11
|
+
[P in keyof T as P & K]: T[P];
|
|
12
|
+
};
|
|
13
|
+
export type HomomorphicOmit<T, K extends keyof any> = {
|
|
14
|
+
[P in keyof T as Exclude<P, K>]: T[P];
|
|
15
|
+
};
|
|
10
16
|
/**
|
|
11
17
|
* `T | unknown` reduces to `unknown` and that can be problematic when it comes to contextual typing.
|
|
12
18
|
* It especially is a problem when the union has a function member, like here:
|
|
@@ -61,15 +67,17 @@ export interface ParameterizedObject {
|
|
|
61
67
|
export interface UnifiedArg<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> {
|
|
62
68
|
context: TContext;
|
|
63
69
|
event: TExpressionEvent;
|
|
64
|
-
self: ActorRef<TEvent, TContext
|
|
70
|
+
self: ActorRef<TEvent, MachineSnapshot<TContext, TEvent, ProvidedActor, string, unknown>>;
|
|
65
71
|
system: ActorSystem<any>;
|
|
66
72
|
}
|
|
67
73
|
export type MachineContext = Record<string, any>;
|
|
68
74
|
export interface ActionArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> extends UnifiedArg<TContext, TExpressionEvent, TEvent> {
|
|
69
75
|
action: TExpressionAction;
|
|
70
76
|
}
|
|
71
|
-
export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer
|
|
72
|
-
export type OutputFrom<T extends AnyActorLogic> = T extends ActorLogic<infer
|
|
77
|
+
export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TSnapshot, infer _TEvent, infer TInput, infer _TPersisted, infer _TSystem> ? TInput : never;
|
|
78
|
+
export type OutputFrom<T extends AnyActorLogic> = T extends ActorLogic<infer TSnapshot, infer _TEvent, infer _TInput, infer _TPersisted, infer _TSystem> ? (TSnapshot & {
|
|
79
|
+
status: 'done';
|
|
80
|
+
})['output'] : never;
|
|
73
81
|
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
|
74
82
|
(args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>): void;
|
|
75
83
|
_out_TEvent?: TEvent;
|
|
@@ -127,7 +135,7 @@ export interface InvokeDefinition<TContext extends MachineContext, TEvent extend
|
|
|
127
135
|
* The source of the actor logic to be invoked
|
|
128
136
|
*/
|
|
129
137
|
src: string;
|
|
130
|
-
input?: Mapper<TContext, TEvent, NonReducibleUnknown> | NonReducibleUnknown;
|
|
138
|
+
input?: Mapper<TContext, TEvent, NonReducibleUnknown, TEvent> | NonReducibleUnknown;
|
|
131
139
|
/**
|
|
132
140
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
133
141
|
*/
|
|
@@ -136,7 +144,7 @@ export interface InvokeDefinition<TContext extends MachineContext, TEvent extend
|
|
|
136
144
|
* The transition to take upon the invoked child machine sending an error event.
|
|
137
145
|
*/
|
|
138
146
|
onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
139
|
-
onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent
|
|
147
|
+
onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
140
148
|
toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TActor, TAction, TGuard, TDelay>, 'onDone' | 'onError' | 'toJSON'>;
|
|
141
149
|
}
|
|
142
150
|
type Delay<TDelay extends string> = TDelay | number;
|
|
@@ -173,7 +181,7 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
|
|
|
173
181
|
* The source of the machine to be invoked, or the machine itself.
|
|
174
182
|
*/
|
|
175
183
|
src: TSrc;
|
|
176
|
-
input?: Mapper<TContext, TEvent, InputFrom<TSpecificActor['logic']
|
|
184
|
+
input?: Mapper<TContext, TEvent, InputFrom<TSpecificActor['logic']>, TEvent> | InputFrom<TSpecificActor['logic']>;
|
|
177
185
|
/**
|
|
178
186
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
179
187
|
*/
|
|
@@ -207,7 +215,7 @@ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventOb
|
|
|
207
215
|
* The source of the machine to be invoked, or the machine itself.
|
|
208
216
|
*/
|
|
209
217
|
src: AnyActorLogic | string;
|
|
210
|
-
input?: Mapper<TContext, TEvent, NonReducibleUnknown> | NonReducibleUnknown;
|
|
218
|
+
input?: Mapper<TContext, TEvent, NonReducibleUnknown, TEvent> | NonReducibleUnknown;
|
|
211
219
|
/**
|
|
212
220
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
213
221
|
*/
|
|
@@ -217,8 +225,7 @@ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventOb
|
|
|
217
225
|
* The transition to take upon the invoked child machine sending an error event.
|
|
218
226
|
*/
|
|
219
227
|
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
220
|
-
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent
|
|
221
|
-
TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
228
|
+
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
222
229
|
};
|
|
223
230
|
export type AnyInvokeConfig = InvokeConfig<any, any, any, any, any, any>;
|
|
224
231
|
export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput> {
|
|
@@ -291,7 +298,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
291
298
|
* The output data will be evaluated with the current `context` and placed on the `.data` property
|
|
292
299
|
* of the event.
|
|
293
300
|
*/
|
|
294
|
-
output?: Mapper<TContext, TEvent,
|
|
301
|
+
output?: Mapper<TContext, TEvent, unknown, TEvent> | NonReducibleUnknown;
|
|
295
302
|
/**
|
|
296
303
|
* The unique ID of the state node, which can be referenced as a transition target via the
|
|
297
304
|
* `#id` syntax.
|
|
@@ -329,7 +336,7 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
|
|
|
329
336
|
exit: UnknownAction[];
|
|
330
337
|
meta: any;
|
|
331
338
|
order: number;
|
|
332
|
-
output?:
|
|
339
|
+
output?: StateNodeConfig<TContext, TEvent, ProvidedActor, ParameterizedObject, ParameterizedObject, string, string, unknown>['output'];
|
|
333
340
|
invoke: Array<InvokeDefinition<TContext, TEvent, TODO, TODO, TODO, TODO>>;
|
|
334
341
|
description?: string;
|
|
335
342
|
tags: string[];
|
|
@@ -338,7 +345,10 @@ export interface StateMachineDefinition<TContext extends MachineContext, TEvent
|
|
|
338
345
|
}
|
|
339
346
|
export type AnyStateNode = StateNode<any, any>;
|
|
340
347
|
export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
|
|
341
|
-
export type AnyState = State<any,
|
|
348
|
+
export type AnyState = State<any, // context
|
|
349
|
+
any, // event
|
|
350
|
+
any, // actor
|
|
351
|
+
any, // tags
|
|
342
352
|
any>;
|
|
343
353
|
export type AnyStateMachine = StateMachine<any, any, any, any, any, any, any, any, any, // delays
|
|
344
354
|
any>;
|
|
@@ -353,14 +363,6 @@ export interface HistoryStateNodeConfig<TContext extends MachineContext, TEvent
|
|
|
353
363
|
history: 'shallow' | 'deep' | true;
|
|
354
364
|
target: string | undefined;
|
|
355
365
|
}
|
|
356
|
-
export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends AtomicStateNodeConfig<TContext, TEvent> {
|
|
357
|
-
type: 'final';
|
|
358
|
-
/**
|
|
359
|
-
* The data to be sent with the "xstate.done.state.<id>" event. The data can be
|
|
360
|
-
* static or dynamic (based on assigners).
|
|
361
|
-
*/
|
|
362
|
-
output?: Mapper<TContext, TEvent, any>;
|
|
363
|
-
}
|
|
364
366
|
export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO, TODO, TODO>;
|
|
365
367
|
export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> = {
|
|
366
368
|
[K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
|
|
@@ -379,7 +381,7 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
|
|
|
379
381
|
actions: ActionFunctionMap<TContext, TEvent, TActor, TAction>;
|
|
380
382
|
actors: Record<string, AnyActorLogic | {
|
|
381
383
|
src: AnyActorLogic;
|
|
382
|
-
input: Mapper<TContext, TEvent,
|
|
384
|
+
input: Mapper<TContext, TEvent, unknown, TEvent> | NonReducibleUnknown;
|
|
383
385
|
}>;
|
|
384
386
|
delays: DelayFunctionMap<TContext, TEvent, TAction>;
|
|
385
387
|
}
|
|
@@ -390,7 +392,7 @@ type MachineImplementationsActions<TContext extends MachineContext, TResolvedTyp
|
|
|
390
392
|
type MachineImplementationsActors<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActors'>, TIndexedActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActors'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
|
|
391
393
|
[K in keyof TIndexedActors]?: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic> | {
|
|
392
394
|
src: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>;
|
|
393
|
-
input: Mapper<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActors, K>, InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic
|
|
395
|
+
input: Mapper<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActors, K>, InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>> | InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>;
|
|
394
396
|
};
|
|
395
397
|
};
|
|
396
398
|
type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
|
|
@@ -424,10 +426,7 @@ export type ContextFactory<TContext extends MachineContext, TActor extends Provi
|
|
|
424
426
|
spawn: Spawner<TActor>;
|
|
425
427
|
input: TInput;
|
|
426
428
|
}) => TContext;
|
|
427
|
-
type
|
|
428
|
-
states?: StatesConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TOutput> | undefined;
|
|
429
|
-
};
|
|
430
|
-
export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TInput = any, TOutput = unknown, TTypesMeta = TypegenDisabled> = (RootStateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, NoInfer<TActor>, NoInfer<TAction>, NoInfer<TGuard>, NoInfer<TDelay>, NoInfer<TTag>, NoInfer<TOutput>> & {
|
|
429
|
+
export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TInput = any, TOutput = unknown, TTypesMeta = TypegenDisabled> = (Omit<StateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, NoInfer<TActor>, NoInfer<TAction>, NoInfer<TGuard>, NoInfer<TDelay>, NoInfer<TTag>, NoInfer<TOutput>>, 'output'> & {
|
|
431
430
|
/**
|
|
432
431
|
* The initial context (extended state)
|
|
433
432
|
*/
|
|
@@ -436,7 +435,8 @@ export type MachineConfig<TContext extends MachineContext, TEvent extends EventO
|
|
|
436
435
|
*/
|
|
437
436
|
version?: string;
|
|
438
437
|
types?: MachineTypes<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TInput, TOutput, TTypesMeta>;
|
|
439
|
-
|
|
438
|
+
output?: Mapper<TContext, DoneStateEvent, TOutput, TEvent> | TOutput;
|
|
439
|
+
}) & (MachineContext extends TContext ? {
|
|
440
440
|
context?: InitialContext<LowInfer<TContext>, TActor, TInput>;
|
|
441
441
|
} : {
|
|
442
442
|
context: InitialContext<LowInfer<TContext>, TActor, TInput>;
|
|
@@ -474,9 +474,9 @@ export interface ErrorActorEvent<TErrorData = unknown> extends EventObject {
|
|
|
474
474
|
type: `xstate.error.actor.${string}`;
|
|
475
475
|
data: TErrorData;
|
|
476
476
|
}
|
|
477
|
-
export interface SnapshotEvent<
|
|
477
|
+
export interface SnapshotEvent<TSnapshot extends Snapshot<unknown> = Snapshot<unknown>> extends EventObject {
|
|
478
478
|
type: `xstate.snapshot.${string}`;
|
|
479
|
-
|
|
479
|
+
snapshot: TSnapshot;
|
|
480
480
|
}
|
|
481
481
|
export interface DoneStateEvent<TOutput = unknown> extends EventObject {
|
|
482
482
|
type: `xstate.done.state.${string}`;
|
|
@@ -506,14 +506,11 @@ export type PartialAssigner<TContext extends MachineContext, TExpressionEvent ex
|
|
|
506
506
|
export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TActor extends ProvidedActor> = {
|
|
507
507
|
[K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TExpressionAction, TEvent, TActor, K> | TContext[K];
|
|
508
508
|
};
|
|
509
|
-
export type Mapper<TContext extends MachineContext,
|
|
509
|
+
export type Mapper<TContext extends MachineContext, TExpressionEvent extends EventObject, TResult, TEvent extends EventObject> = (args: {
|
|
510
510
|
context: TContext;
|
|
511
|
-
event:
|
|
512
|
-
self: ActorRef<TEvent
|
|
511
|
+
event: TExpressionEvent;
|
|
512
|
+
self: ActorRef<TEvent, MachineSnapshot<TContext, TEvent, ProvidedActor, string, unknown>>;
|
|
513
513
|
}) => TResult;
|
|
514
|
-
export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
|
|
515
|
-
[K in keyof TParams]?: Mapper<TContext, TEvent, TParams[K]> | TParams[K];
|
|
516
|
-
};
|
|
517
514
|
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO, TODO, TODO, TODO>, 'target' | 'guard'> {
|
|
518
515
|
target: ReadonlyArray<StateNode<TContext, TEvent>> | undefined;
|
|
519
516
|
source: StateNode<TContext, TEvent>;
|
|
@@ -552,8 +549,8 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
|
|
|
552
549
|
historyValue?: HistoryValue<TContext, TEvent>;
|
|
553
550
|
meta?: any;
|
|
554
551
|
configuration?: Array<StateNode<TContext, TEvent>>;
|
|
555
|
-
children: Record<string, ActorRef<any>>;
|
|
556
|
-
done
|
|
552
|
+
children: Record<string, ActorRef<any, any>>;
|
|
553
|
+
status: 'active' | 'done' | 'error' | 'stopped';
|
|
557
554
|
output?: any;
|
|
558
555
|
error?: unknown;
|
|
559
556
|
tags?: Set<string>;
|
|
@@ -567,7 +564,7 @@ export interface ActorOptions<TLogic extends AnyActorLogic> {
|
|
|
567
564
|
execute?: boolean;
|
|
568
565
|
clock?: Clock;
|
|
569
566
|
logger?: (...args: any[]) => void;
|
|
570
|
-
parent?: ActorRef<any>;
|
|
567
|
+
parent?: ActorRef<any, any>;
|
|
571
568
|
/**
|
|
572
569
|
* The custom `id` for referencing this service.
|
|
573
570
|
*/
|
|
@@ -593,14 +590,14 @@ export interface ActorOptions<TLogic extends AnyActorLogic> {
|
|
|
593
590
|
*/
|
|
594
591
|
src?: string;
|
|
595
592
|
}
|
|
596
|
-
export type AnyActor = Actor<any
|
|
593
|
+
export type AnyActor = Actor<any>;
|
|
597
594
|
/**
|
|
598
595
|
* @deprecated Use `AnyActor` instead.
|
|
599
596
|
*/
|
|
600
597
|
export type AnyInterpreter = AnyActor;
|
|
601
598
|
export type Observer<T> = {
|
|
602
599
|
next?: (value: T) => void;
|
|
603
|
-
error?: (err:
|
|
600
|
+
error?: (err: unknown) => void;
|
|
604
601
|
complete?: () => void;
|
|
605
602
|
};
|
|
606
603
|
export interface Subscription {
|
|
@@ -623,7 +620,7 @@ export interface BaseActorRef<TEvent extends EventObject> {
|
|
|
623
620
|
export interface ActorLike<TCurrent, TEvent extends EventObject> extends Subscribable<TCurrent> {
|
|
624
621
|
send: (event: TEvent) => void;
|
|
625
622
|
}
|
|
626
|
-
export interface ActorRef<TEvent extends EventObject, TSnapshot
|
|
623
|
+
export interface ActorRef<TEvent extends EventObject, TSnapshot extends Snapshot<unknown>> extends Subscribable<TSnapshot>, InteropObservable<TSnapshot> {
|
|
627
624
|
/**
|
|
628
625
|
* The unique identifier for this actor relative to its parent.
|
|
629
626
|
*/
|
|
@@ -642,12 +639,12 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
|
|
|
642
639
|
}
|
|
643
640
|
export type AnyActorRef = ActorRef<any, any>;
|
|
644
641
|
export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
|
|
645
|
-
export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer _TInput, infer TOutput, infer TResolvedTypesMeta> ? ActorRef<TEvent,
|
|
642
|
+
export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer _TInput, infer TOutput, infer TResolvedTypesMeta> ? ActorRef<TEvent, MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TSnapshot, infer TEvent, infer _TInput, infer _TPersisted, infer _TSystem> ? ActorRef<TEvent, TSnapshot> : never : never;
|
|
646
643
|
export type DevToolsAdapter = (service: AnyActor) => void;
|
|
647
644
|
/**
|
|
648
645
|
* @deprecated Use `Actor<T>` instead.
|
|
649
646
|
*/
|
|
650
|
-
export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer TInput, infer TOutput, infer TResolvedTypesMeta> ? Actor<ActorLogic<
|
|
647
|
+
export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer TInput, infer TOutput, infer TResolvedTypesMeta> ? Actor<ActorLogic<MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, TEvent, TInput, PersistedMachineState<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, ActorSystem<any>>> : never;
|
|
651
648
|
export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer TAction, infer _TGuard, infer TDelay, infer _TTag, infer _TInput, infer _TOutput, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TActor, TAction, TDelay, TResolvedTypesMeta, TRequireMissingImplementations> : never;
|
|
652
649
|
export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, // context
|
|
653
650
|
any, // event
|
|
@@ -659,7 +656,7 @@ any, // tag
|
|
|
659
656
|
any, // input
|
|
660
657
|
any, // output
|
|
661
658
|
infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
|
662
|
-
export interface ActorContext<TEvent extends EventObject,
|
|
659
|
+
export interface ActorContext<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TSystem extends ActorSystem<any> = ActorSystem<any>> {
|
|
663
660
|
self: ActorRef<TEvent, TSnapshot>;
|
|
664
661
|
id: string;
|
|
665
662
|
sessionId: string;
|
|
@@ -669,38 +666,46 @@ export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem ext
|
|
|
669
666
|
stopChild: (child: AnyActorRef) => void;
|
|
670
667
|
}
|
|
671
668
|
export type AnyActorContext = ActorContext<any, any, any>;
|
|
672
|
-
export
|
|
669
|
+
export type Snapshot<TOutput> = {
|
|
670
|
+
status: 'active';
|
|
671
|
+
output: undefined;
|
|
672
|
+
error: undefined;
|
|
673
|
+
} | {
|
|
674
|
+
status: 'done';
|
|
675
|
+
output: TOutput;
|
|
676
|
+
error: undefined;
|
|
677
|
+
} | {
|
|
678
|
+
status: 'error';
|
|
679
|
+
output: undefined;
|
|
680
|
+
error: unknown;
|
|
681
|
+
} | {
|
|
682
|
+
status: 'stopped';
|
|
683
|
+
output: undefined;
|
|
684
|
+
error: undefined;
|
|
685
|
+
};
|
|
686
|
+
export interface ActorLogic<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TInput = unknown,
|
|
673
687
|
/**
|
|
674
688
|
* Serialized internal state used for persistence & restoration
|
|
675
689
|
*/
|
|
676
|
-
TPersisted =
|
|
690
|
+
TPersisted = TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
|
|
677
691
|
config?: unknown;
|
|
678
|
-
transition: (state:
|
|
679
|
-
getInitialState: (actorCtx: ActorContext<
|
|
680
|
-
restoreState?: (persistedState: TPersisted, actorCtx: ActorContext<
|
|
681
|
-
|
|
682
|
-
getStatus?: (state: TInternalState) => {
|
|
683
|
-
status: string;
|
|
684
|
-
data?: any;
|
|
685
|
-
};
|
|
686
|
-
start?: (state: TInternalState, actorCtx: ActorContext<TEvent, TSnapshot>) => void;
|
|
692
|
+
transition: (state: TSnapshot, message: TEvent, ctx: ActorContext<TSnapshot, TEvent, TSystem>) => TSnapshot;
|
|
693
|
+
getInitialState: (actorCtx: ActorContext<TSnapshot, TEvent, TSystem>, input: TInput) => TSnapshot;
|
|
694
|
+
restoreState?: (persistedState: TPersisted, actorCtx: ActorContext<TSnapshot, TEvent>) => TSnapshot;
|
|
695
|
+
start?: (state: TSnapshot, actorCtx: ActorContext<TSnapshot, TEvent>) => void;
|
|
687
696
|
/**
|
|
688
697
|
* @returns Persisted state
|
|
689
698
|
*/
|
|
690
|
-
getPersistedState?: (state:
|
|
691
|
-
_out_TOutput?: TOutput;
|
|
699
|
+
getPersistedState?: (state: TSnapshot) => TPersisted;
|
|
692
700
|
}
|
|
693
|
-
export type AnyActorLogic = ActorLogic<any, //
|
|
694
|
-
any, //
|
|
695
|
-
any, // internal state
|
|
696
|
-
any, // persisted state
|
|
697
|
-
any, // system
|
|
701
|
+
export type AnyActorLogic = ActorLogic<any, // snapshot
|
|
702
|
+
any, // event
|
|
698
703
|
any, // input
|
|
704
|
+
any, // persisted state
|
|
699
705
|
any>;
|
|
700
|
-
export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? StateFrom<R> : R extends ActorLogic<
|
|
701
|
-
export type EventFromLogic<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer
|
|
702
|
-
export type PersistedStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer
|
|
703
|
-
export type InternalStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer TInternalState, infer _TPersisted> ? TInternalState : never;
|
|
706
|
+
export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? StateFrom<R> : R extends ActorLogic<any, any, any, any, any> ? ReturnType<R['transition']> : R extends ActorContext<infer TSnapshot, infer _, infer __> ? TSnapshot : never : never;
|
|
707
|
+
export type EventFromLogic<TLogic extends ActorLogic<any, any, any, any, any>> = TLogic extends ActorLogic<infer _, infer TEvent, infer __, infer _____, infer ______> ? TEvent : never;
|
|
708
|
+
export type PersistedStateFrom<TLogic extends ActorLogic<any, any, any, any, any>> = TLogic extends ActorLogic<infer _TSnapshot, infer _TEvent, infer _TInput, infer TPersisted, infer _TSystem> ? TPersisted : never;
|
|
704
709
|
type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends State<infer _TContext, infer TEvent, infer _TActor, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
|
|
705
710
|
export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
|
706
711
|
export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : R extends State<infer TContext, infer _TEvent, infer _TActor, infer _TOutput, infer _TResolvedTypesMeta> ? TContext : R extends Actor<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : never : never : never;
|
|
@@ -725,9 +730,9 @@ export interface ActorSystem<T extends ActorSystemInfo> {
|
|
|
725
730
|
get: <K extends keyof T['actors']>(key: K) => T['actors'][K] | undefined;
|
|
726
731
|
}
|
|
727
732
|
export type AnyActorSystem = ActorSystem<any>;
|
|
728
|
-
export type PersistedMachineState<
|
|
733
|
+
export type PersistedMachineState<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TTag extends string, TOutput, TResolvedTypesMeta = TypegenDisabled> = HomomorphicPick<MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, 'value' | 'output' | 'error' | 'context' | 'status' | 'historyValue'> & {
|
|
729
734
|
children: {
|
|
730
|
-
[K in keyof
|
|
735
|
+
[K in keyof MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>['children']]: {
|
|
731
736
|
state: any;
|
|
732
737
|
src?: string;
|
|
733
738
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AnyActorLogic, AnyState } from "./index.js";
|
|
2
2
|
import type { StateNode } from "./StateNode.js";
|
|
3
|
-
import type { ActorLogic, AnyEventObject, EventObject, MachineContext, Mapper, Observer, ErrorActorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfigTarget, AnyActorRef, AnyTransitionConfig } from "./types.js";
|
|
3
|
+
import type { ActorLogic, AnyEventObject, EventObject, MachineContext, Mapper, Observer, ErrorActorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfigTarget, AnyActorRef, AnyTransitionConfig, NonReducibleUnknown } from "./types.js";
|
|
4
4
|
export declare function keys<T extends object>(value: T): Array<keyof T & string>;
|
|
5
5
|
export declare function matchesState(parentStateId: StateValue, childStateId: StateValue): boolean;
|
|
6
6
|
export declare function toStatePath(stateId: string | string[]): string[];
|
|
@@ -26,7 +26,7 @@ export declare function toStatePaths(stateValue: StateValue | undefined): string
|
|
|
26
26
|
export declare function flatten<T>(array: Array<T | T[]>): T[];
|
|
27
27
|
export declare function toArrayStrict<T>(value: readonly T[] | T): readonly T[];
|
|
28
28
|
export declare function toArray<T>(value: readonly T[] | T | undefined): readonly T[];
|
|
29
|
-
export declare function
|
|
29
|
+
export declare function resolveOutput<TContext extends MachineContext, TExpressionEvent extends EventObject>(mapper: Mapper<TContext, TExpressionEvent, unknown, EventObject> | NonReducibleUnknown, context: TContext, event: TExpressionEvent, self: AnyActorRef): unknown;
|
|
30
30
|
export declare function isBuiltInEvent(eventType: string): boolean;
|
|
31
31
|
export declare function isPromiseLike(value: any): value is PromiseLike<any>;
|
|
32
32
|
export declare function isActorLogic(value: any): value is ActorLogic<any, any>;
|
|
@@ -42,8 +42,8 @@ export declare function toObserver<T>(nextHandler?: Observer<T> | ((value: T) =>
|
|
|
42
42
|
export declare function createInvokeId(stateNodeId: string, index: number): string;
|
|
43
43
|
export declare function resolveReferencedActor(referenced: AnyActorLogic | {
|
|
44
44
|
src: AnyActorLogic;
|
|
45
|
-
input: Mapper<
|
|
45
|
+
input: Mapper<MachineContext, EventObject, unknown, EventObject> | NonReducibleUnknown;
|
|
46
46
|
} | undefined): {
|
|
47
47
|
src: AnyActorLogic;
|
|
48
|
-
input: Mapper<
|
|
48
|
+
input: Mapper<MachineContext, EventObject, unknown, EventObject> | NonReducibleUnknown;
|
|
49
49
|
} | undefined;
|
|
@@ -271,7 +271,7 @@ function toArray(value) {
|
|
|
271
271
|
}
|
|
272
272
|
return toArrayStrict(value);
|
|
273
273
|
}
|
|
274
|
-
function
|
|
274
|
+
function resolveOutput(mapper, context, event, self) {
|
|
275
275
|
if (typeof mapper === 'function') {
|
|
276
276
|
return mapper({
|
|
277
277
|
context,
|
|
@@ -449,10 +449,9 @@ class Actor {
|
|
|
449
449
|
|
|
450
450
|
// array of functions to defer
|
|
451
451
|
|
|
452
|
-
update(
|
|
452
|
+
update(snapshot) {
|
|
453
453
|
// Update state
|
|
454
|
-
this._state =
|
|
455
|
-
const snapshot = this.getSnapshot();
|
|
454
|
+
this._state = snapshot;
|
|
456
455
|
|
|
457
456
|
// Execute deferred effects
|
|
458
457
|
let deferredFn;
|
|
@@ -467,18 +466,17 @@ class Actor {
|
|
|
467
466
|
reportUnhandledError(err);
|
|
468
467
|
}
|
|
469
468
|
}
|
|
470
|
-
|
|
471
|
-
switch (status?.status) {
|
|
469
|
+
switch (this._state.status) {
|
|
472
470
|
case 'done':
|
|
473
471
|
this._stopProcedure();
|
|
474
472
|
this._complete();
|
|
475
|
-
this._doneEvent = createDoneActorEvent(this.id,
|
|
473
|
+
this._doneEvent = createDoneActorEvent(this.id, this._state.output);
|
|
476
474
|
this._parent?.send(this._doneEvent);
|
|
477
475
|
break;
|
|
478
476
|
case 'error':
|
|
479
477
|
this._stopProcedure();
|
|
480
|
-
this._error(
|
|
481
|
-
this._parent?.send(createErrorActorEvent(this.id,
|
|
478
|
+
this._error(this._state.error);
|
|
479
|
+
this._parent?.send(createErrorActorEvent(this.id, this._state.error));
|
|
482
480
|
break;
|
|
483
481
|
}
|
|
484
482
|
}
|
|
@@ -513,8 +511,8 @@ class Actor {
|
|
|
513
511
|
this.system._set(this._systemId, this);
|
|
514
512
|
}
|
|
515
513
|
this.status = ActorStatus.Running;
|
|
516
|
-
const status = this.
|
|
517
|
-
switch (status
|
|
514
|
+
const status = this._state.status;
|
|
515
|
+
switch (status) {
|
|
518
516
|
case 'done':
|
|
519
517
|
// a state machine can be "done" upon intialization (it could reach a final state using initial microsteps)
|
|
520
518
|
// we still need to complete observers, flush deferreds etc
|
|
@@ -713,7 +711,7 @@ class Actor {
|
|
|
713
711
|
return this;
|
|
714
712
|
}
|
|
715
713
|
getSnapshot() {
|
|
716
|
-
return this.
|
|
714
|
+
return this._state;
|
|
717
715
|
}
|
|
718
716
|
}
|
|
719
717
|
|
|
@@ -760,11 +758,11 @@ exports.flatten = flatten;
|
|
|
760
758
|
exports.interpret = interpret;
|
|
761
759
|
exports.isArray = isArray;
|
|
762
760
|
exports.isErrorActorEvent = isErrorActorEvent;
|
|
763
|
-
exports.mapContext = mapContext;
|
|
764
761
|
exports.mapValues = mapValues;
|
|
765
762
|
exports.matchesState = matchesState;
|
|
766
763
|
exports.normalizeTarget = normalizeTarget;
|
|
767
764
|
exports.pathToStateValue = pathToStateValue;
|
|
765
|
+
exports.resolveOutput = resolveOutput;
|
|
768
766
|
exports.resolveReferencedActor = resolveReferencedActor;
|
|
769
767
|
exports.toArray = toArray;
|
|
770
768
|
exports.toObserver = toObserver;
|