xstate 5.0.0-beta.27 → 5.0.0-beta.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -7
- package/actions/dist/xstate-actions.cjs.js +11 -17
- package/actions/dist/xstate-actions.cjs.mjs +0 -8
- package/actions/dist/xstate-actions.development.cjs.js +11 -17
- package/actions/dist/xstate-actions.development.cjs.mjs +0 -8
- package/actions/dist/xstate-actions.development.esm.js +3 -1
- package/actions/dist/xstate-actions.esm.js +3 -1
- package/actions/dist/xstate-actions.umd.min.js +1 -1
- package/actions/dist/xstate-actions.umd.min.js.map +1 -1
- package/actors/dist/xstate-actors.cjs.js +413 -11
- package/actors/dist/xstate-actors.development.cjs.js +413 -11
- package/actors/dist/xstate-actors.development.esm.js +405 -4
- package/actors/dist/xstate-actors.esm.js +405 -4
- 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/StateNode.d.ts +3 -3
- package/dist/declarations/src/actions/assign.d.ts +8 -3
- package/dist/declarations/src/actions/choose.d.ts +4 -3
- package/dist/declarations/src/actions/pure.d.ts +5 -4
- package/dist/declarations/src/actions.d.ts +8 -44
- package/dist/declarations/src/actors/index.d.ts +2 -2
- package/dist/declarations/src/constants.d.ts +1 -0
- package/dist/declarations/src/index.d.ts +9 -16
- package/dist/declarations/src/spawn.d.ts +25 -0
- package/dist/declarations/src/stateUtils.d.ts +1 -1
- package/dist/declarations/src/typegenTypes.d.ts +4 -4
- package/dist/declarations/src/types.d.ts +72 -94
- package/dist/declarations/src/utils.d.ts +2 -2
- package/dist/interpreter-672794ae.cjs.js +792 -0
- package/dist/interpreter-a1432c7d.development.cjs.js +800 -0
- package/dist/interpreter-a77bb0ec.development.esm.js +765 -0
- package/dist/interpreter-b5203bcb.esm.js +757 -0
- package/dist/{actions-9754d2ca.development.esm.js → raise-436a57a2.cjs.js} +130 -1307
- package/dist/{actions-ca622922.development.cjs.js → raise-74b72ca5.development.cjs.js} +101 -1306
- package/dist/{actions-020463e9.esm.js → raise-a60c9290.development.esm.js} +109 -1203
- package/dist/{actions-d1dba4ac.cjs.js → raise-b9c9a234.esm.js} +65 -1267
- package/dist/send-35e1a689.cjs.js +349 -0
- package/dist/send-4192e7bc.esm.js +339 -0
- package/dist/send-e63b7b83.development.esm.js +364 -0
- package/dist/send-e8b55d00.development.cjs.js +374 -0
- package/dist/xstate.cjs.js +110 -106
- package/dist/xstate.cjs.mjs +4 -2
- package/dist/xstate.development.cjs.js +110 -106
- package/dist/xstate.development.cjs.mjs +4 -2
- package/dist/xstate.development.esm.js +72 -68
- package/dist/xstate.esm.js +72 -68
- 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 -1
- package/guards/dist/xstate-guards.development.cjs.js +2 -1
- package/guards/dist/xstate-guards.development.esm.js +2 -1
- package/guards/dist/xstate-guards.esm.js +2 -1
- package/guards/dist/xstate-guards.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/dist/declarations/src/constantPrefixes.d.ts +0 -6
- package/dist/promise-2ad94e3b.development.esm.js +0 -406
- package/dist/promise-3b7e3357.development.cjs.js +0 -412
- package/dist/promise-5b07c38e.esm.js +0 -406
- package/dist/promise-7a8c1768.cjs.js +0 -412
|
@@ -1,44 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export { choose } from "./actions/choose.js";
|
|
10
|
-
export { pure } from "./actions/pure.js";
|
|
11
|
-
export { constantPrefixes };
|
|
12
|
-
/**
|
|
13
|
-
* Returns an event type that represents an implicit event that
|
|
14
|
-
* is sent after the specified `delay`.
|
|
15
|
-
*
|
|
16
|
-
* @param delayRef The delay in milliseconds
|
|
17
|
-
* @param id The state node ID where this event is handled
|
|
18
|
-
*/
|
|
19
|
-
export declare function after(delayRef: number | string, id?: string): string;
|
|
20
|
-
/**
|
|
21
|
-
* Returns an event that represents that a final state node
|
|
22
|
-
* has been reached in the parent state node.
|
|
23
|
-
*
|
|
24
|
-
* @param id The final state node's parent state node `id`
|
|
25
|
-
* @param output The data to pass into the event
|
|
26
|
-
*/
|
|
27
|
-
export declare function done(id: string, output?: any): DoneEventObject;
|
|
28
|
-
export declare function doneInvokeEventType<T extends string = string>(invokeId: T): `done.invoke.${T}`;
|
|
29
|
-
/**
|
|
30
|
-
* Returns an event that represents that an invoked service has terminated.
|
|
31
|
-
*
|
|
32
|
-
* An invoked service is terminated when it has reached a top-level final state node,
|
|
33
|
-
* but not when it is canceled.
|
|
34
|
-
*
|
|
35
|
-
* @param invokeId The invoked service ID
|
|
36
|
-
* @param output The data to pass into the event
|
|
37
|
-
*/
|
|
38
|
-
export declare function doneInvoke(invokeId: string, output?: any): DoneEvent;
|
|
39
|
-
export declare function errorEventType<T extends string = string>(id: T): `error.platform.${T}`;
|
|
40
|
-
export declare function error(id: string, data?: any): ErrorPlatformEvent & string;
|
|
41
|
-
export declare function createInitEvent(input: unknown): {
|
|
42
|
-
readonly type: "xstate.init";
|
|
43
|
-
readonly input: unknown;
|
|
44
|
-
};
|
|
1
|
+
export { assign, type AssignAction, type AssignArgs } from "./actions/assign.js";
|
|
2
|
+
export { cancel, type CancelAction } from "./actions/cancel.js";
|
|
3
|
+
export { choose, type ChooseAction } from "./actions/choose.js";
|
|
4
|
+
export { log, type LogAction } from "./actions/log.js";
|
|
5
|
+
export { pure, type PureAction } from "./actions/pure.js";
|
|
6
|
+
export { raise, type RaiseAction } from "./actions/raise.js";
|
|
7
|
+
export { escalate, forwardTo, sendParent, sendTo, type SendToAction } from "./actions/send.js";
|
|
8
|
+
export { stop, type StopAction } from "./actions/stop.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ActorRef, AnyEventObject, BaseActorRef, EventObject } from "../types.js";
|
|
2
2
|
export { fromCallback, type CallbackActorLogic } from "./callback.js";
|
|
3
|
-
export { fromEventObservable, fromObservable } from "./observable.js";
|
|
3
|
+
export { fromEventObservable, fromObservable, type ObservableActorLogic } from "./observable.js";
|
|
4
4
|
export { fromPromise, type PromiseActorLogic } from "./promise.js";
|
|
5
|
-
export { fromTransition } from "./transition.js";
|
|
5
|
+
export { fromTransition, type TransitionActorLogic } from "./transition.js";
|
|
6
6
|
export declare function isActorRef(item: any): item is ActorRef<any>;
|
|
7
7
|
export declare function toActorRef<TEvent extends EventObject, TSnapshot = any, TActorRefLike extends BaseActorRef<TEvent> = BaseActorRef<TEvent>>(actorRefLike: TActorRefLike): ActorRef<TEvent, TSnapshot> & Omit<TActorRefLike, keyof ActorRef<any, any>>;
|
|
8
8
|
export declare function createEmptyActor(): ActorRef<AnyEventObject, undefined>;
|
|
@@ -4,4 +4,5 @@ export declare const NULL_EVENT = "";
|
|
|
4
4
|
export declare const STATE_IDENTIFIER = "#";
|
|
5
5
|
export declare const WILDCARD = "*";
|
|
6
6
|
export declare const XSTATE_INIT = "xstate.init";
|
|
7
|
+
export declare const XSTATE_ERROR = "xstate.error";
|
|
7
8
|
export declare const XSTATE_STOP = "xstate.stop";
|
|
@@ -1,26 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { createMachine } from "./Machine.js";
|
|
4
|
-
import { mapState } from "./mapState.js";
|
|
5
|
-
import { State } from "./State.js";
|
|
6
|
-
import { StateNode } from "./StateNode.js";
|
|
7
|
-
export { assign, type AssignAction } from "./actions/assign.js";
|
|
8
|
-
export { cancel, type CancelAction } from "./actions/cancel.js";
|
|
9
|
-
export { choose, type ChooseAction } from "./actions/choose.js";
|
|
10
|
-
export { log, type LogAction } from "./actions/log.js";
|
|
11
|
-
export { pure, type PureAction } from "./actions/pure.js";
|
|
12
|
-
export { raise, type RaiseAction } from "./actions/raise.js";
|
|
13
|
-
export { forwardTo, sendParent, sendTo, type SendToAction } from "./actions/send.js";
|
|
14
|
-
export { stop, type StopAction } from "./actions/stop.js";
|
|
1
|
+
export * from "./actions.js";
|
|
2
|
+
export * from "./actors/index.js";
|
|
15
3
|
export { SimulatedClock } from "./SimulatedClock.js";
|
|
4
|
+
export { type Spawner } from "./spawn.js";
|
|
16
5
|
export { StateMachine } from "./StateMachine.js";
|
|
17
6
|
export { getStateNodes } from "./stateUtils.js";
|
|
18
7
|
export * from "./typegenTypes.js";
|
|
19
8
|
export * from "./types.js";
|
|
20
9
|
export { waitFor } from "./waitFor.js";
|
|
21
|
-
|
|
10
|
+
import { Actor, ActorStatus, createActor, interpret, Interpreter, InterpreterStatus } from "./interpreter.js";
|
|
11
|
+
import { createMachine } from "./Machine.js";
|
|
12
|
+
import { mapState } from "./mapState.js";
|
|
13
|
+
import { State } from "./State.js";
|
|
14
|
+
import { StateNode } from "./StateNode.js";
|
|
22
15
|
export { matchesState, pathToStateValue, toObserver } from "./utils.js";
|
|
23
|
-
export { Actor, ActorStatus, createActor, createMachine,
|
|
16
|
+
export { Actor, ActorStatus, createActor, createMachine, interpret, InterpreterStatus, mapState, State, StateNode, type Interpreter };
|
|
24
17
|
export { and, not, or, stateIn } from "./guards.js";
|
|
25
18
|
declare global {
|
|
26
19
|
interface SymbolConstructor {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ActorRefFrom, AnyActorContext, AnyActorLogic, AnyActorRef, AnyEventObject, AnyState, InputFrom, IsLiteralString, ProvidedActor } from "./types.js";
|
|
2
|
+
type SpawnOptions<TActor extends ProvidedActor, TSrc extends TActor['src']> = TActor extends {
|
|
3
|
+
src: TSrc;
|
|
4
|
+
} ? 'id' extends keyof TActor ? [
|
|
5
|
+
options: {
|
|
6
|
+
id: TActor['id'];
|
|
7
|
+
systemId?: string;
|
|
8
|
+
input?: InputFrom<TActor['logic']>;
|
|
9
|
+
}
|
|
10
|
+
] : [
|
|
11
|
+
options?: {
|
|
12
|
+
id?: string;
|
|
13
|
+
systemId?: string;
|
|
14
|
+
input?: InputFrom<TActor['logic']>;
|
|
15
|
+
}
|
|
16
|
+
] : never;
|
|
17
|
+
export type Spawner<TActor extends ProvidedActor> = IsLiteralString<TActor['src']> extends true ? <TSrc extends TActor['src']>(logic: TSrc, ...[options]: SpawnOptions<TActor, TSrc>) => ActorRefFrom<(TActor & {
|
|
18
|
+
src: TSrc;
|
|
19
|
+
})['logic']> : <TLogic extends AnyActorLogic | string>(src: TLogic, options?: {
|
|
20
|
+
id?: string;
|
|
21
|
+
systemId?: string;
|
|
22
|
+
input?: unknown;
|
|
23
|
+
}) => TLogic extends string ? AnyActorRef : ActorRefFrom<TLogic>;
|
|
24
|
+
export declare function createSpawner(actorContext: AnyActorContext, { machine, context }: AnyState, event: AnyEventObject, spawnedChildren: Record<string, AnyActorRef>): Spawner<any>;
|
|
25
|
+
export {};
|
|
@@ -17,7 +17,7 @@ export declare function getCandidates<TEvent extends EventObject>(stateNode: Sta
|
|
|
17
17
|
export declare function getDelayedTransitions(stateNode: AnyStateNode): Array<DelayedTransitionDefinition<MachineContext, EventObject>>;
|
|
18
18
|
export declare function formatTransition<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, descriptor: string, transitionConfig: AnyTransitionConfig): AnyTransitionDefinition;
|
|
19
19
|
export declare function formatTransitions<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode): Map<string, TransitionDefinition<TContext, TEvent>[]>;
|
|
20
|
-
export declare function formatInitialTransition<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, _target: SingleOrArray<string> | InitialTransitionConfig<TContext, TEvent, TODO, TODO, TODO>): InitialTransitionDefinition<TContext, TEvent>;
|
|
20
|
+
export declare function formatInitialTransition<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, _target: SingleOrArray<string> | InitialTransitionConfig<TContext, TEvent, TODO, TODO, TODO, TODO>): InitialTransitionDefinition<TContext, TEvent>;
|
|
21
21
|
export declare function resolveTarget(stateNode: AnyStateNode, targets: ReadonlyArray<string | AnyStateNode> | undefined): ReadonlyArray<AnyStateNode> | undefined;
|
|
22
22
|
export declare function getInitialStateNodes(stateNode: AnyStateNode): Array<AnyStateNode>;
|
|
23
23
|
/**
|
|
@@ -27,9 +27,9 @@ export interface TypegenMeta extends TypegenEnabled {
|
|
|
27
27
|
/**
|
|
28
28
|
* A map for the internal events of the machine.
|
|
29
29
|
*
|
|
30
|
-
* key: 'done.
|
|
30
|
+
* key: 'xstate.done.actor.myActor'
|
|
31
31
|
* value: {
|
|
32
|
-
* type: 'done.
|
|
32
|
+
* type: 'xstate.done.actor.myActor';
|
|
33
33
|
* data: unknown;
|
|
34
34
|
* __tip: 'Declare the type in event types!';
|
|
35
35
|
* }
|
|
@@ -39,7 +39,7 @@ export interface TypegenMeta extends TypegenEnabled {
|
|
|
39
39
|
* Maps the src of the invoked actor to the event type that includes its known id
|
|
40
40
|
*
|
|
41
41
|
* key: 'invokeSrc'
|
|
42
|
-
* value: 'done.
|
|
42
|
+
* value: 'xstate.done.actor.invokeName'
|
|
43
43
|
*/
|
|
44
44
|
invokeSrcNameMap: Record<string, string>;
|
|
45
45
|
/**
|
|
@@ -107,7 +107,7 @@ export interface MarkAllImplementationsAsProvided<TResolvedTypesMeta> {
|
|
|
107
107
|
resolved: Prop<TResolvedTypesMeta, 'resolved'> & AllImplementationsProvided;
|
|
108
108
|
}
|
|
109
109
|
type GenerateActorEvents<TActor extends ProvidedActor, TInvokeSrcNameMap> = string extends TActor['src'] ? never : TActor extends any ? {
|
|
110
|
-
type: TActor['id'] extends string ? `done.
|
|
110
|
+
type: TActor['id'] extends string ? `xstate.done.actor.${TActor['id']}` : TActor['src'] extends keyof TInvokeSrcNameMap ? `xstate.done.actor.${TInvokeSrcNameMap[TActor['src']] & string}` : `xstate.done.actor.${string}`;
|
|
111
111
|
output: OutputFrom<TActor['logic']>;
|
|
112
112
|
} : never;
|
|
113
113
|
type MergeWithInternalEvents<TIndexedEvents, TInternalEvents> = TIndexedEvents & Pick<TInternalEvents, Exclude<keyof TInternalEvents, keyof TIndexedEvents>>;
|
|
@@ -5,6 +5,8 @@ import type { StateMachine } from "./StateMachine.js";
|
|
|
5
5
|
import { TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, MarkAllImplementationsAsProvided, AreAllImplementationsAssumedToBeProvided } from "./typegenTypes.js";
|
|
6
6
|
import { PromiseActorLogic } from "./actors/promise.js";
|
|
7
7
|
import { Guard, GuardPredicate, UnknownGuard } from "./guards.js";
|
|
8
|
+
import { Spawner } from "./spawn.js";
|
|
9
|
+
import { AssignArgs } from "./actions/assign.js";
|
|
8
10
|
/**
|
|
9
11
|
* `T | unknown` reduces to `unknown` and that can be problematic when it comes to contextual typing.
|
|
10
12
|
* It especially is a problem when the union has a function member, like here:
|
|
@@ -68,25 +70,17 @@ export interface ActionArgs<TContext extends MachineContext, TEvent extends Even
|
|
|
68
70
|
}
|
|
69
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 _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer TInput> ? TInput : never;
|
|
70
72
|
export type OutputFrom<T extends AnyActorLogic> = T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer _TInput, infer TOutput> ? TOutput : never;
|
|
71
|
-
export type
|
|
72
|
-
logic: T, options?: Partial<{
|
|
73
|
-
id: string;
|
|
74
|
-
systemId?: string;
|
|
75
|
-
input: T extends AnyActorLogic ? InputFrom<T> : any;
|
|
76
|
-
}>) => ActorRefFrom<T>;
|
|
77
|
-
export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> extends ActionArgs<TContext, TExpressionEvent, TExpressionAction> {
|
|
78
|
-
spawn: Spawner;
|
|
79
|
-
}
|
|
80
|
-
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
|
73
|
+
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> = {
|
|
81
74
|
(args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>): void;
|
|
82
75
|
_out_TEvent?: TEvent;
|
|
76
|
+
_out_TActor?: TActor;
|
|
83
77
|
_out_TAction?: TAction;
|
|
84
78
|
_out_TGuard?: TGuard;
|
|
85
79
|
_out_TDelay?: TDelay;
|
|
86
80
|
};
|
|
87
|
-
export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> {
|
|
81
|
+
export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> {
|
|
88
82
|
guard?: Guard<TContext, TExpressionEvent, undefined, TGuard>;
|
|
89
|
-
actions: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction, TGuard, TDelay>;
|
|
83
|
+
actions: Actions<TContext, TExpressionEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay>;
|
|
90
84
|
}
|
|
91
85
|
export type NoRequiredParams<T extends ParameterizedObject> = T extends any ? {
|
|
92
86
|
type: T['type'];
|
|
@@ -99,9 +93,9 @@ export type WithDynamicParams<TContext extends MachineContext, TExpressionEvent
|
|
|
99
93
|
event: TExpressionEvent;
|
|
100
94
|
}) => T['params']);
|
|
101
95
|
}, undefined extends T['params'] ? false : true> : never;
|
|
102
|
-
export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = NoRequiredParams<TAction> | WithDynamicParams<TContext, TExpressionEvent, TAction> | ActionFunction<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction, TGuard, TDelay>;
|
|
103
|
-
export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject | undefined, ParameterizedObject, ParameterizedObject, string>;
|
|
104
|
-
export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction, TGuard, TDelay>>;
|
|
96
|
+
export type Action<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> = NoRequiredParams<TAction> | WithDynamicParams<TContext, TExpressionEvent, TAction> | ActionFunction<TContext, TExpressionEvent, TEvent, TExpressionAction, TActor, TAction, TGuard, TDelay>;
|
|
97
|
+
export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject | undefined, ProvidedActor, ParameterizedObject, ParameterizedObject, string>;
|
|
98
|
+
export type Actions<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> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent, TExpressionAction, TActor, TAction, TGuard, TDelay>>;
|
|
105
99
|
export type StateKey = string | AnyState;
|
|
106
100
|
export interface StateValueMap {
|
|
107
101
|
[key: string]: StateValue;
|
|
@@ -114,19 +108,19 @@ export interface StateValueMap {
|
|
|
114
108
|
*/
|
|
115
109
|
export type StateValue = string | StateValueMap;
|
|
116
110
|
export type TransitionTarget = SingleOrArray<string>;
|
|
117
|
-
export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
|
|
111
|
+
export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
|
|
118
112
|
guard?: Guard<TContext, TExpressionEvent, undefined, TGuard>;
|
|
119
|
-
actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction, TGuard, TDelay>;
|
|
113
|
+
actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay>;
|
|
120
114
|
reenter?: boolean;
|
|
121
115
|
target?: TransitionTarget | undefined;
|
|
122
116
|
meta?: Record<string, any>;
|
|
123
117
|
description?: string;
|
|
124
118
|
}
|
|
125
|
-
export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> extends TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay> {
|
|
119
|
+
export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> extends TransitionConfig<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay> {
|
|
126
120
|
target: TransitionTarget;
|
|
127
121
|
}
|
|
128
|
-
export type AnyTransitionConfig = TransitionConfig<any, any, any, any, any, any>;
|
|
129
|
-
export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
|
|
122
|
+
export type AnyTransitionConfig = TransitionConfig<any, any, any, any, any, any, any>;
|
|
123
|
+
export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
|
|
130
124
|
id: string;
|
|
131
125
|
systemId: string | undefined;
|
|
132
126
|
/**
|
|
@@ -137,18 +131,18 @@ export interface InvokeDefinition<TContext extends MachineContext, TEvent extend
|
|
|
137
131
|
/**
|
|
138
132
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
139
133
|
*/
|
|
140
|
-
onDone?: string | SingleOrArray<TransitionConfig<TContext,
|
|
134
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneActorEvent<unknown>, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
141
135
|
/**
|
|
142
136
|
* The transition to take upon the invoked child machine sending an error event.
|
|
143
137
|
*/
|
|
144
|
-
onError?: string | SingleOrArray<TransitionConfig<TContext,
|
|
145
|
-
onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<
|
|
146
|
-
toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TAction, TGuard, TDelay>, 'onDone' | 'onError' | 'toJSON'>;
|
|
138
|
+
onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
139
|
+
onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<unknown>, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
140
|
+
toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TActor, TAction, TGuard, TDelay>, 'onDone' | 'onError' | 'toJSON'>;
|
|
147
141
|
}
|
|
148
142
|
type Delay<TDelay extends string> = TDelay | number;
|
|
149
|
-
export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
|
150
|
-
[K in Delay<TDelay>]?: string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay>>;
|
|
151
|
-
} | Array<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay> & {
|
|
143
|
+
export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
|
144
|
+
[K in Delay<TDelay>]?: string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
145
|
+
} | Array<TransitionConfig<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay> & {
|
|
152
146
|
delay: Delay<TDelay> | ((args: UnifiedArg<TContext, TEvent>) => Delay<TDelay>);
|
|
153
147
|
}>;
|
|
154
148
|
export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
|
|
@@ -163,15 +157,15 @@ export type StatesDefinition<TContext extends MachineContext, TEvent extends Eve
|
|
|
163
157
|
[K in string]: StateNodeDefinition<TContext, TEvent>;
|
|
164
158
|
};
|
|
165
159
|
export type TransitionConfigTarget = string | undefined;
|
|
166
|
-
export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TAction, TGuard, TDelay>>;
|
|
167
|
-
export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
|
168
|
-
[K in EventDescriptor<TEvent>]?: TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TAction, TGuard, TDelay>;
|
|
160
|
+
export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
161
|
+
export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
|
162
|
+
[K in EventDescriptor<TEvent>]?: TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TActor, TAction, TGuard, TDelay>;
|
|
169
163
|
};
|
|
170
164
|
type PartialEventDescriptor<TEventType extends string> = TEventType extends `${infer TLeading}.${infer TTail}` ? `${TLeading}.*` | `${TLeading}.${PartialEventDescriptor<TTail>}` : never;
|
|
171
165
|
export type EventDescriptor<TEvent extends EventObject> = TEvent['type'] | PartialEventDescriptor<TEvent['type']> | '*';
|
|
172
166
|
type NormalizeDescriptor<TDescriptor extends string> = TDescriptor extends '*' ? string : TDescriptor extends `${infer TLeading}.*` ? `${TLeading}.${string}` : TDescriptor;
|
|
173
|
-
type IsLiteralString<T extends string> = string extends T ? false : true;
|
|
174
|
-
type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> =
|
|
167
|
+
export type IsLiteralString<T extends string> = string extends T ? false : true;
|
|
168
|
+
type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TSpecificActor extends ProvidedActor> = TSpecificActor extends {
|
|
175
169
|
src: infer TSrc;
|
|
176
170
|
} ? Compute<{
|
|
177
171
|
systemId?: string;
|
|
@@ -179,22 +173,22 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
|
|
|
179
173
|
* The source of the machine to be invoked, or the machine itself.
|
|
180
174
|
*/
|
|
181
175
|
src: TSrc;
|
|
182
|
-
input?: Mapper<TContext, TEvent, InputFrom<
|
|
176
|
+
input?: Mapper<TContext, TEvent, InputFrom<TSpecificActor['logic']>> | InputFrom<TSpecificActor['logic']>;
|
|
183
177
|
/**
|
|
184
178
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
185
179
|
*/
|
|
186
|
-
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext,
|
|
180
|
+
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneActorEvent<OutputFrom<TSpecificActor['logic']>>, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
187
181
|
/**
|
|
188
182
|
* The transition to take upon the invoked child machine sending an error event.
|
|
189
183
|
*/
|
|
190
|
-
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext,
|
|
191
|
-
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<
|
|
192
|
-
} & (
|
|
184
|
+
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
185
|
+
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<SnapshotFrom<TSpecificActor['logic']>>, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
186
|
+
} & (TSpecificActor['id'] extends string ? {
|
|
193
187
|
/**
|
|
194
188
|
* The unique identifier for the invoked machine. If not specified, this
|
|
195
189
|
* will be the machine's own `id`, or the URL (from `src`).
|
|
196
190
|
*/
|
|
197
|
-
id:
|
|
191
|
+
id: TSpecificActor['id'];
|
|
198
192
|
} : {
|
|
199
193
|
/**
|
|
200
194
|
* The unique identifier for the invoked machine. If not specified, this
|
|
@@ -202,7 +196,7 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
|
|
|
202
196
|
*/
|
|
203
197
|
id?: string;
|
|
204
198
|
})> : never;
|
|
205
|
-
export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor, TAction, TGuard, TDelay> : {
|
|
199
|
+
export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor, TAction, TGuard, TDelay, TActor> : {
|
|
206
200
|
/**
|
|
207
201
|
* The unique identifier for the invoked machine. If not specified, this
|
|
208
202
|
* will be the machine's own `id`, or the URL (from `src`).
|
|
@@ -217,19 +211,21 @@ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventOb
|
|
|
217
211
|
/**
|
|
218
212
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
219
213
|
*/
|
|
220
|
-
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext,
|
|
214
|
+
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneActorEvent<any>, // TODO: consider replacing with `unknown`
|
|
215
|
+
TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
221
216
|
/**
|
|
222
217
|
* The transition to take upon the invoked child machine sending an error event.
|
|
223
218
|
*/
|
|
224
|
-
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext,
|
|
225
|
-
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>,
|
|
219
|
+
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
220
|
+
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, // TODO: consider replacing with `unknown`
|
|
221
|
+
TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
226
222
|
};
|
|
227
223
|
export type AnyInvokeConfig = InvokeConfig<any, any, any, any, any, any>;
|
|
228
224
|
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> {
|
|
229
225
|
/**
|
|
230
226
|
* The initial state transition.
|
|
231
227
|
*/
|
|
232
|
-
initial?: InitialTransitionConfig<TContext, TEvent, TAction, TGuard, TDelay> | SingleOrArray<string> | undefined;
|
|
228
|
+
initial?: InitialTransitionConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay> | SingleOrArray<string> | undefined;
|
|
233
229
|
/**
|
|
234
230
|
* The type of this state node:
|
|
235
231
|
*
|
|
@@ -257,30 +253,30 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
257
253
|
/**
|
|
258
254
|
* The mapping of event types to their potential transition(s).
|
|
259
255
|
*/
|
|
260
|
-
on?: TransitionsConfig<TContext, TEvent, TAction, TGuard, TDelay>;
|
|
256
|
+
on?: TransitionsConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay>;
|
|
261
257
|
/**
|
|
262
258
|
* The action(s) to be executed upon entering the state node.
|
|
263
259
|
*/
|
|
264
|
-
entry?: Actions<TContext, TEvent, TEvent, undefined, TAction, TGuard, TDelay>;
|
|
260
|
+
entry?: Actions<TContext, TEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay>;
|
|
265
261
|
/**
|
|
266
262
|
* The action(s) to be executed upon exiting the state node.
|
|
267
263
|
*/
|
|
268
|
-
exit?: Actions<TContext, TEvent, TEvent, undefined, TAction, TGuard, TDelay>;
|
|
264
|
+
exit?: Actions<TContext, TEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay>;
|
|
269
265
|
/**
|
|
270
266
|
* The potential transition(s) to be taken upon reaching a final child state node.
|
|
271
267
|
*
|
|
272
268
|
* This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
|
|
273
269
|
*/
|
|
274
|
-
onDone?: string | SingleOrArray<TransitionConfig<TContext,
|
|
270
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneStateEvent, TEvent, TActor, TAction, TGuard, TDelay>> | undefined;
|
|
275
271
|
/**
|
|
276
272
|
* The mapping (or array) of delays (in milliseconds) to their potential transition(s).
|
|
277
273
|
* The delayed transitions are taken after the specified delay in an interpreter.
|
|
278
274
|
*/
|
|
279
|
-
after?: DelayedTransitions<TContext, TEvent, TAction, TGuard, TDelay>;
|
|
275
|
+
after?: DelayedTransitions<TContext, TEvent, TActor, TAction, TGuard, TDelay>;
|
|
280
276
|
/**
|
|
281
277
|
* An eventless transition that is always taken when this state node is active.
|
|
282
278
|
*/
|
|
283
|
-
always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction, TGuard, TDelay>;
|
|
279
|
+
always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay>;
|
|
284
280
|
/**
|
|
285
281
|
* @private
|
|
286
282
|
*/
|
|
@@ -290,7 +286,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
290
286
|
*/
|
|
291
287
|
meta?: any;
|
|
292
288
|
/**
|
|
293
|
-
* The output data sent with the "done.state._id_" event if this is a final state node.
|
|
289
|
+
* The output data sent with the "xstate.done.state._id_" event if this is a final state node.
|
|
294
290
|
*
|
|
295
291
|
* The output data will be evaluated with the current `context` and placed on the `.data` property
|
|
296
292
|
* of the event.
|
|
@@ -334,7 +330,7 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
|
|
|
334
330
|
meta: any;
|
|
335
331
|
order: number;
|
|
336
332
|
output?: FinalStateNodeConfig<TContext, TEvent>['output'];
|
|
337
|
-
invoke: Array<InvokeDefinition<TContext, TEvent, TODO, TODO, TODO>>;
|
|
333
|
+
invoke: Array<InvokeDefinition<TContext, TEvent, TODO, TODO, TODO, TODO>>;
|
|
338
334
|
description?: string;
|
|
339
335
|
tags: string[];
|
|
340
336
|
}
|
|
@@ -360,16 +356,16 @@ export interface HistoryStateNodeConfig<TContext extends MachineContext, TEvent
|
|
|
360
356
|
export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends AtomicStateNodeConfig<TContext, TEvent> {
|
|
361
357
|
type: 'final';
|
|
362
358
|
/**
|
|
363
|
-
* The data to be sent with the "done.state.<id>" event. The data can be
|
|
359
|
+
* The data to be sent with the "xstate.done.state.<id>" event. The data can be
|
|
364
360
|
* static or dynamic (based on assigners).
|
|
365
361
|
*/
|
|
366
362
|
output?: Mapper<TContext, TEvent, any>;
|
|
367
363
|
}
|
|
368
364
|
export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO, TODO, TODO>;
|
|
369
|
-
export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> = {
|
|
365
|
+
export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> = {
|
|
370
366
|
[K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
|
|
371
367
|
type: K;
|
|
372
|
-
} ? TAction : never, TAction, TGuard, TDelay>;
|
|
368
|
+
} ? TAction : never, TActor, TAction, TGuard, TDelay>;
|
|
373
369
|
};
|
|
374
370
|
type GuardMap<TContext extends MachineContext, TEvent extends EventObject, TGuard extends ParameterizedObject> = {
|
|
375
371
|
[K in TGuard['type']]?: GuardPredicate<TContext, TEvent, TGuard extends {
|
|
@@ -378,9 +374,9 @@ type GuardMap<TContext extends MachineContext, TEvent extends EventObject, TGuar
|
|
|
378
374
|
};
|
|
379
375
|
export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string, DelayConfig<TContext, TEvent, TAction>>;
|
|
380
376
|
export type DelayConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = number | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
|
|
381
|
-
export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject> {
|
|
377
|
+
export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject> {
|
|
382
378
|
guards: GuardMap<TContext, TEvent, TGuard>;
|
|
383
|
-
actions: ActionFunctionMap<TContext, TEvent, TAction>;
|
|
379
|
+
actions: ActionFunctionMap<TContext, TEvent, TActor, TAction>;
|
|
384
380
|
actors: Record<string, AnyActorLogic | {
|
|
385
381
|
src: AnyActorLogic;
|
|
386
382
|
input: Mapper<TContext, TEvent, any> | any;
|
|
@@ -388,8 +384,8 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
|
|
|
388
384
|
delays: DelayFunctionMap<TContext, TEvent, TAction>;
|
|
389
385
|
}
|
|
390
386
|
type MaybeNarrowedEvent<TIndexedEvents, TCausingLookup, K> = Cast<Prop<TIndexedEvents, K extends keyof TCausingLookup ? TCausingLookup[K] : TIndexedEvents[keyof TIndexedEvents]>, EventObject>;
|
|
391
|
-
type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
|
|
392
|
-
[K in keyof TIndexedActions]?: ActionFunction<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActions, K>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, Cast<TIndexedActions[K], ParameterizedObject>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>, Cast<Prop<TIndexedDelays, keyof TIndexedDelays>, ParameterizedObject>['type']>;
|
|
387
|
+
type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActors'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
|
|
388
|
+
[K in keyof TIndexedActions]?: ActionFunction<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActions, K>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, Cast<TIndexedActions[K], ParameterizedObject>, Cast<Prop<TIndexedActors, keyof TIndexedActors>, ProvidedActor>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>, Cast<Prop<TIndexedDelays, keyof TIndexedDelays>, ParameterizedObject>['type']>;
|
|
393
389
|
};
|
|
394
390
|
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'>> = {
|
|
395
391
|
[K in keyof TIndexedActors]?: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic> | {
|
|
@@ -423,9 +419,9 @@ type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolve
|
|
|
423
419
|
}>;
|
|
424
420
|
export type InternalMachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TDelay extends string, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = Compute<GenerateActionsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateActorsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations>>;
|
|
425
421
|
export type MachineImplementations<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, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, TEvent, TActor, TAction, TDelay, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag>>;
|
|
426
|
-
type InitialContext<TContext extends MachineContext, TInput> = TContext | ContextFactory<TContext, TInput>;
|
|
427
|
-
export type ContextFactory<TContext extends MachineContext, TInput> = ({ spawn, input }: {
|
|
428
|
-
spawn: Spawner
|
|
422
|
+
type InitialContext<TContext extends MachineContext, TActor extends ProvidedActor, TInput> = TContext | ContextFactory<TContext, TActor, TInput>;
|
|
423
|
+
export type ContextFactory<TContext extends MachineContext, TActor extends ProvidedActor, TInput> = ({ spawn, input }: {
|
|
424
|
+
spawn: Spawner<TActor>;
|
|
429
425
|
input: TInput;
|
|
430
426
|
}) => TContext;
|
|
431
427
|
type RootStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput> = Omit<StateNodeConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TOutput>, 'states'> & {
|
|
@@ -441,9 +437,9 @@ export type MachineConfig<TContext extends MachineContext, TEvent extends EventO
|
|
|
441
437
|
version?: string;
|
|
442
438
|
types?: MachineTypes<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TInput, TOutput, TTypesMeta>;
|
|
443
439
|
}) & (Equals<TContext, MachineContext> extends true ? {
|
|
444
|
-
context?: InitialContext<LowInfer<TContext>, TInput>;
|
|
440
|
+
context?: InitialContext<LowInfer<TContext>, TActor, TInput>;
|
|
445
441
|
} : {
|
|
446
|
-
context: InitialContext<LowInfer<TContext>, TInput>;
|
|
442
|
+
context: InitialContext<LowInfer<TContext>, TActor, TInput>;
|
|
447
443
|
});
|
|
448
444
|
export interface ProvidedActor {
|
|
449
445
|
src: string;
|
|
@@ -470,40 +466,22 @@ export type HistoryValue<TContext extends MachineContext, TEvent extends EventOb
|
|
|
470
466
|
export type AnyHistoryValue = HistoryValue<any, any>;
|
|
471
467
|
export type StateFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = T extends AnyStateMachine ? ReturnType<T['transition']> : T extends (...args: any[]) => AnyStateMachine ? ReturnType<ReturnType<T>['transition']> : never;
|
|
472
468
|
export type Transitions<TContext extends MachineContext, TEvent extends EventObject> = Array<TransitionDefinition<TContext, TEvent>>;
|
|
473
|
-
export
|
|
474
|
-
|
|
475
|
-
DoneState = "done.state",
|
|
476
|
-
DoneInvoke = "done.invoke",
|
|
477
|
-
ErrorExecution = "error.execution",
|
|
478
|
-
ErrorCommunication = "error.communication",
|
|
479
|
-
ErrorPlatform = "error.platform",
|
|
480
|
-
ErrorCustom = "xstate.error"
|
|
481
|
-
}
|
|
482
|
-
export interface DoneInvokeEvent<TOutput> {
|
|
483
|
-
type: `done.invoke.${string}`;
|
|
469
|
+
export interface DoneActorEvent<TOutput = unknown> {
|
|
470
|
+
type: `xstate.done.actor.${string}`;
|
|
484
471
|
output: TOutput;
|
|
485
472
|
}
|
|
486
|
-
export interface
|
|
487
|
-
type: `error.${string}`;
|
|
473
|
+
export interface ErrorActorEvent<TErrorData = unknown> extends EventObject {
|
|
474
|
+
type: `xstate.error.actor.${string}`;
|
|
488
475
|
data: TErrorData;
|
|
489
476
|
}
|
|
490
|
-
export interface SnapshotEvent<TData> {
|
|
477
|
+
export interface SnapshotEvent<TData = unknown> extends EventObject {
|
|
491
478
|
type: `xstate.snapshot.${string}`;
|
|
492
479
|
data: TData;
|
|
493
480
|
}
|
|
494
|
-
export interface
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
data: any;
|
|
498
|
-
}
|
|
499
|
-
export interface ErrorPlatformEvent extends EventObject {
|
|
500
|
-
data: any;
|
|
501
|
-
}
|
|
502
|
-
export interface DoneEventObject extends EventObject {
|
|
503
|
-
output?: any;
|
|
504
|
-
toString(): string;
|
|
481
|
+
export interface DoneStateEvent<TOutput = unknown> extends EventObject {
|
|
482
|
+
type: `xstate.done.state.${string}`;
|
|
483
|
+
output: TOutput;
|
|
505
484
|
}
|
|
506
|
-
export type DoneEvent = DoneEventObject & string;
|
|
507
485
|
export type DelayExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => number;
|
|
508
486
|
export type LogExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => unknown;
|
|
509
487
|
export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => TSentEvent;
|
|
@@ -523,10 +501,10 @@ export interface RaiseActionParams<TContext extends MachineContext, TExpressionE
|
|
|
523
501
|
export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject, TDelay extends string> extends SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay> {
|
|
524
502
|
event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent>;
|
|
525
503
|
}
|
|
526
|
-
export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction>) => Partial<TContext>;
|
|
527
|
-
export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction>) => TContext[TKey];
|
|
528
|
-
export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = {
|
|
529
|
-
[K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TExpressionAction, K> | TContext[K];
|
|
504
|
+
export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TActor extends ProvidedActor> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction, TActor>) => Partial<TContext>;
|
|
505
|
+
export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TActor extends ProvidedActor, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction, TActor>) => TContext[TKey];
|
|
506
|
+
export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TActor extends ProvidedActor> = {
|
|
507
|
+
[K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TExpressionAction, TActor, K> | TContext[K];
|
|
530
508
|
};
|
|
531
509
|
export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TResult> = (args: {
|
|
532
510
|
context: TContext;
|
|
@@ -536,7 +514,7 @@ export type Mapper<TContext extends MachineContext, TEvent extends EventObject,
|
|
|
536
514
|
export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
|
|
537
515
|
[K in keyof TParams]?: Mapper<TContext, TEvent, TParams[K]> | TParams[K];
|
|
538
516
|
};
|
|
539
|
-
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO, TODO, TODO>, 'target' | 'guard'> {
|
|
517
|
+
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO, TODO, TODO, TODO>, 'target' | 'guard'> {
|
|
540
518
|
target: ReadonlyArray<StateNode<TContext, TEvent>> | undefined;
|
|
541
519
|
source: StateNode<TContext, TEvent>;
|
|
542
520
|
actions: readonly UnknownAction[];
|
|
@@ -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,
|
|
3
|
+
import type { ActorLogic, AnyEventObject, EventObject, MachineContext, Mapper, Observer, ErrorActorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfigTarget, AnyActorRef, AnyTransitionConfig } 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[];
|
|
@@ -34,7 +34,7 @@ export declare function partition<T, A extends T, B extends T>(items: T[], predi
|
|
|
34
34
|
export declare function isArray(value: any): value is readonly any[];
|
|
35
35
|
export declare function isObservable<T>(value: any): value is Subscribable<T>;
|
|
36
36
|
export declare const uniqueId: () => string;
|
|
37
|
-
export declare function
|
|
37
|
+
export declare function isErrorActorEvent(event: AnyEventObject): event is ErrorActorEvent;
|
|
38
38
|
export declare function toTransitionConfigArray<TContext extends MachineContext, TEvent extends EventObject>(configLike: SingleOrArray<AnyTransitionConfig | TransitionConfigTarget>): Array<AnyTransitionConfig>;
|
|
39
39
|
export declare function normalizeTarget<TContext extends MachineContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, TEvent>> | undefined): ReadonlyArray<string | StateNode<TContext, TEvent>> | undefined;
|
|
40
40
|
export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
|