xstate 5.0.0-beta.13 → 5.0.0-beta.14
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 +1 -1
- package/actions/dist/xstate-actions.development.cjs.js +1 -1
- package/actions/dist/xstate-actions.development.esm.js +1 -1
- package/actions/dist/xstate-actions.esm.js +1 -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 +1 -1
- package/actors/dist/xstate-actors.development.cjs.js +1 -1
- package/actors/dist/xstate-actors.development.esm.js +1 -1
- package/actors/dist/xstate-actors.esm.js +1 -1
- package/actors/dist/xstate-actors.umd.min.js +1 -1
- package/actors/dist/xstate-actors.umd.min.js.map +1 -1
- package/dist/{actions-e4c704f3.cjs.js → actions-17c3bcfa.cjs.js} +803 -853
- package/dist/{actions-b34f6ce7.esm.js → actions-444a17c3.esm.js} +804 -854
- package/dist/{actions-c8b9504d.development.esm.js → actions-60622c0c.development.esm.js} +829 -879
- package/dist/{actions-d9c19f35.development.cjs.js → actions-73b8d456.development.cjs.js} +828 -878
- package/dist/declarations/src/State.d.ts +2 -8
- package/dist/declarations/src/StateMachine.d.ts +5 -10
- package/dist/declarations/src/StateNode.d.ts +1 -1
- package/dist/declarations/src/actors/callback.d.ts +2 -2
- package/dist/declarations/src/actors/index.d.ts +1 -1
- package/dist/declarations/src/actors/observable.d.ts +8 -6
- package/dist/declarations/src/actors/promise.d.ts +4 -3
- package/dist/declarations/src/actors/transition.d.ts +4 -4
- package/dist/declarations/src/interpreter.d.ts +15 -15
- package/dist/declarations/src/stateUtils.d.ts +4 -6
- package/dist/declarations/src/types.d.ts +23 -33
- package/dist/declarations/src/utils.d.ts +7 -7
- package/dist/xstate.cjs.js +13 -37
- package/dist/xstate.development.cjs.js +13 -37
- package/dist/xstate.development.esm.js +14 -38
- package/dist/xstate.esm.js +14 -38
- package/dist/xstate.umd.min.js +1 -1
- package/dist/xstate.umd.min.js.map +1 -1
- package/guards/dist/xstate-guards.cjs.js +1 -1
- package/guards/dist/xstate-guards.development.cjs.js +1 -1
- package/guards/dist/xstate-guards.development.esm.js +1 -1
- package/guards/dist/xstate-guards.esm.js +1 -1
- package/guards/dist/xstate-guards.umd.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { StateNode } from "./StateNode.js";
|
|
2
2
|
import { TypegenDisabled, TypegenEnabled } from "./typegenTypes.js";
|
|
3
|
-
import type { ActorRef, AnyState, AnyStateMachine,
|
|
3
|
+
import type { ActorRef, AnyState, AnyStateMachine, EventObject, HistoryValue, MachineContext, PersistedMachineState, Prop, StateConfig, StateValue } from "./types.js";
|
|
4
4
|
export declare function isStateConfig<TContext extends MachineContext, TEvent extends EventObject>(state: any): state is StateConfig<TContext, TEvent>;
|
|
5
5
|
/**
|
|
6
6
|
* @deprecated Use `isStateConfig(object)` or `state instanceof State` instead.
|
|
@@ -20,8 +20,6 @@ export declare class State<TContext extends MachineContext, TEvent extends Event
|
|
|
20
20
|
output: any;
|
|
21
21
|
context: TContext;
|
|
22
22
|
historyValue: Readonly<HistoryValue<TContext, TEvent>>;
|
|
23
|
-
actions: BaseActionObject[];
|
|
24
|
-
event: TEvent;
|
|
25
23
|
_internalQueue: Array<TEvent>;
|
|
26
24
|
_initial: boolean;
|
|
27
25
|
/**
|
|
@@ -37,10 +35,6 @@ export declare class State<TContext extends MachineContext, TEvent extends Event
|
|
|
37
35
|
* The enabled state nodes representative of the state value.
|
|
38
36
|
*/
|
|
39
37
|
configuration: Array<StateNode<TContext, TEvent>>;
|
|
40
|
-
/**
|
|
41
|
-
* The transition definitions that resulted in this state.
|
|
42
|
-
*/
|
|
43
|
-
transitions: Array<TransitionDefinition<TContext, TEvent>>;
|
|
44
38
|
/**
|
|
45
39
|
* An object mapping actor names to spawned/invoked actors.
|
|
46
40
|
*/
|
|
@@ -63,7 +57,7 @@ export declare class State<TContext extends MachineContext, TEvent extends Event
|
|
|
63
57
|
* @param delimiter The character(s) that separate each subpath in the string state node path.
|
|
64
58
|
*/
|
|
65
59
|
toStrings(stateValue?: StateValue, delimiter?: string): string[];
|
|
66
|
-
toJSON(): Omit<this, "meta" | "toJSON" | "configuration" | "
|
|
60
|
+
toJSON(): Omit<this, "meta" | "toJSON" | "configuration" | "tags" | "machine" | "toStrings" | "matches" | "hasTag" | "can" | "nextEvents"> & {
|
|
67
61
|
tags: string[];
|
|
68
62
|
meta: Record<string, any>;
|
|
69
63
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { State } from "./State.js";
|
|
2
2
|
import { StateNode } from "./StateNode.js";
|
|
3
3
|
import type { AreAllImplementationsAssumedToBeProvided, MarkAllImplementationsAsProvided, ResolveTypegenMeta, TypegenDisabled } from "./typegenTypes.js";
|
|
4
|
-
import type { ActorContext,
|
|
4
|
+
import type { ActorContext, ActorLogic, ActorMap, EventObject, InternalMachineImplementations, MachineConfig, MachineContext, MachineImplementationsSimplified, MachineTypes, NoInfer, StateConfig, StateMachineDefinition, StateValue, TransitionDefinition, PersistedMachineState, ParameterizedObject, AnyActorContext } from "./types.js";
|
|
5
5
|
export declare const NULL_EVENT = "";
|
|
6
6
|
export declare const STATE_IDENTIFIER = "#";
|
|
7
7
|
export declare const WILDCARD = "*";
|
|
8
|
-
export declare class StateMachine<TContext extends MachineContext, TEvent extends EventObject = EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActorMap extends ActorMap = ActorMap, TResolvedTypesMeta = ResolveTypegenMeta<TypegenDisabled, NoInfer<TEvent>, TAction, TActorMap>> implements
|
|
8
|
+
export declare class StateMachine<TContext extends MachineContext, TEvent extends EventObject = EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActorMap extends ActorMap = ActorMap, TResolvedTypesMeta = ResolveTypegenMeta<TypegenDisabled, NoInfer<TEvent>, TAction, TActorMap>> implements ActorLogic<TEvent, State<TContext, TEvent, TResolvedTypesMeta>, State<TContext, TEvent, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TResolvedTypesMeta>>> {
|
|
9
9
|
/**
|
|
10
10
|
* The raw config used to create the machine.
|
|
11
11
|
*/
|
|
@@ -59,7 +59,7 @@ export declare class StateMachine<TContext extends MachineContext, TEvent extend
|
|
|
59
59
|
* @param state The current State instance or state value
|
|
60
60
|
* @param event The received event
|
|
61
61
|
*/
|
|
62
|
-
transition(state:
|
|
62
|
+
transition(state: State<TContext, TEvent, TResolvedTypesMeta>, event: TEvent, actorCtx: ActorContext<TEvent, State<TContext, TEvent, any>>): State<TContext, TEvent, TResolvedTypesMeta>;
|
|
63
63
|
/**
|
|
64
64
|
* Determines the next state given the current `state` and `event`.
|
|
65
65
|
* Calculates a microstep.
|
|
@@ -67,22 +67,17 @@ export declare class StateMachine<TContext extends MachineContext, TEvent extend
|
|
|
67
67
|
* @param state The current state
|
|
68
68
|
* @param event The received event
|
|
69
69
|
*/
|
|
70
|
-
microstep(state: State<TContext, TEvent, TResolvedTypesMeta
|
|
70
|
+
microstep(state: State<TContext, TEvent, TResolvedTypesMeta>, event: TEvent, actorCtx: AnyActorContext): Array<State<TContext, TEvent, TResolvedTypesMeta>>;
|
|
71
71
|
getTransitionData(state: State<TContext, TEvent, TResolvedTypesMeta>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>>;
|
|
72
72
|
/**
|
|
73
73
|
* The initial state _before_ evaluating any microsteps.
|
|
74
74
|
* This "pre-initial" state is provided to initial actions executed in the initial state.
|
|
75
75
|
*/
|
|
76
76
|
private getPreInitialState;
|
|
77
|
-
/**
|
|
78
|
-
* The initial State instance, which includes all actions to be executed from
|
|
79
|
-
* entering the initial state.
|
|
80
|
-
*/
|
|
81
|
-
get initialState(): State<TContext, TEvent, TResolvedTypesMeta>;
|
|
82
77
|
/**
|
|
83
78
|
* Returns the initial `State` instance, with reference to `self` as an `ActorRef`.
|
|
84
79
|
*/
|
|
85
|
-
getInitialState(actorCtx
|
|
80
|
+
getInitialState(actorCtx: ActorContext<TEvent, State<TContext, TEvent, TResolvedTypesMeta>>, input?: any): State<TContext, TEvent, TResolvedTypesMeta>;
|
|
86
81
|
start(state: State<TContext, TEvent, TResolvedTypesMeta>, actorCtx: ActorContext<TEvent, State<TContext, TEvent, TResolvedTypesMeta>>): void;
|
|
87
82
|
getStateNodeById(stateId: string): StateNode<TContext, TEvent>;
|
|
88
83
|
get definition(): StateMachineDefinition<TContext, TEvent>;
|
|
@@ -88,7 +88,7 @@ export declare class StateNode<TContext extends MachineContext = MachineContext,
|
|
|
88
88
|
get definition(): StateNodeDefinition<TContext, TEvent>;
|
|
89
89
|
toJSON(): StateNodeDefinition<TContext, TEvent>;
|
|
90
90
|
/**
|
|
91
|
-
* The
|
|
91
|
+
* The logic invoked as actors by this state node.
|
|
92
92
|
*/
|
|
93
93
|
get invoke(): Array<InvokeDefinition<TContext, TEvent>>;
|
|
94
94
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { InvokeCallback,
|
|
1
|
+
import { InvokeCallback, ActorLogic, EventObject } from "../types.js";
|
|
2
2
|
export interface CallbackInternalState {
|
|
3
3
|
canceled: boolean;
|
|
4
4
|
receivers: Set<(e: EventObject) => void>;
|
|
5
5
|
dispose: void | (() => void) | Promise<any>;
|
|
6
6
|
input?: any;
|
|
7
7
|
}
|
|
8
|
-
export declare function fromCallback<TEvent extends EventObject>(invokeCallback: InvokeCallback):
|
|
8
|
+
export declare function fromCallback<TEvent extends EventObject>(invokeCallback: InvokeCallback): ActorLogic<TEvent, undefined, CallbackInternalState>;
|
|
@@ -16,7 +16,7 @@ export interface StopSignal {
|
|
|
16
16
|
export type LifecycleSignal = StartSignal | StopSignal;
|
|
17
17
|
export type LifecycleSignalType = typeof startSignalType | typeof stopSignalType;
|
|
18
18
|
/**
|
|
19
|
-
* An object that expresses the
|
|
19
|
+
* An object that expresses the actor logic in reaction to received events,
|
|
20
20
|
* as well as an optionally emitted stream of values.
|
|
21
21
|
*
|
|
22
22
|
* @template TReceived The received event
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Subscribable,
|
|
1
|
+
import { Subscribable, ActorLogic, EventObject, Subscription, AnyActorSystem } from "../types.js";
|
|
2
2
|
export interface ObservableInternalState<T> {
|
|
3
3
|
subscription: Subscription | undefined;
|
|
4
4
|
status: 'active' | 'done' | 'error' | 'canceled';
|
|
@@ -6,17 +6,19 @@ export interface ObservableInternalState<T> {
|
|
|
6
6
|
input?: any;
|
|
7
7
|
}
|
|
8
8
|
export type ObservablePersistedState<T> = Omit<ObservableInternalState<T>, 'subscription'>;
|
|
9
|
-
export declare function fromObservable<T, TEvent extends EventObject>(observableCreator: ({ input }: {
|
|
9
|
+
export declare function fromObservable<T, TEvent extends EventObject>(observableCreator: ({ input, system }: {
|
|
10
10
|
input: any;
|
|
11
|
-
|
|
11
|
+
system: AnyActorSystem;
|
|
12
|
+
}) => Subscribable<T>): ActorLogic<TEvent, T | undefined, ObservableInternalState<T>, ObservablePersistedState<T>>;
|
|
12
13
|
/**
|
|
13
|
-
* Creates
|
|
14
|
+
* Creates event observable logic that listens to an observable
|
|
14
15
|
* that delivers event objects.
|
|
15
16
|
*
|
|
16
17
|
*
|
|
17
18
|
* @param lazyObservable A function that creates an observable
|
|
18
|
-
* @returns
|
|
19
|
+
* @returns Event observable logic
|
|
19
20
|
*/
|
|
20
21
|
export declare function fromEventObservable<T extends EventObject>(lazyObservable: ({ input }: {
|
|
21
22
|
input: any;
|
|
22
|
-
|
|
23
|
+
system: AnyActorSystem;
|
|
24
|
+
}) => Subscribable<T>): ActorLogic<EventObject, T | undefined, ObservableInternalState<T>, ObservablePersistedState<T>>;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ActorLogic, AnyActorSystem } from "../types.js";
|
|
2
2
|
export interface PromiseInternalState<T> {
|
|
3
3
|
status: 'active' | 'error' | 'done' | 'canceled';
|
|
4
4
|
data: T | undefined;
|
|
5
5
|
input?: any;
|
|
6
6
|
}
|
|
7
|
-
export declare function fromPromise<T>(promiseCreator: ({ input }: {
|
|
7
|
+
export declare function fromPromise<T>(promiseCreator: ({ input, system }: {
|
|
8
8
|
input: any;
|
|
9
|
-
|
|
9
|
+
system: AnyActorSystem;
|
|
10
|
+
}) => PromiseLike<T>): ActorLogic<{
|
|
10
11
|
type: string;
|
|
11
12
|
}, T | undefined, PromiseInternalState<T>>;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ActorLogic, ActorContext, ActorSystem, EventObject } from "../types.js";
|
|
2
2
|
/**
|
|
3
|
-
* Returns
|
|
3
|
+
* Returns actor logic from a transition function and its initial state.
|
|
4
4
|
*
|
|
5
5
|
* A transition function is a function that takes the current state and an event and returns the next state.
|
|
6
6
|
*
|
|
7
7
|
* @param transition The transition function that returns the next state given the current state and event.
|
|
8
8
|
* @param initialState The initial state of the transition function.
|
|
9
|
-
* @returns
|
|
9
|
+
* @returns Actor logic
|
|
10
10
|
*/
|
|
11
11
|
export declare function fromTransition<TState, TEvent extends EventObject, TSystem extends ActorSystem<any>>(transition: (state: TState, event: TEvent, actorContext: ActorContext<TEvent, TState, TSystem>) => TState, initialState: TState | (({ input }: {
|
|
12
12
|
input: any;
|
|
13
|
-
}) => TState)):
|
|
13
|
+
}) => TState)): ActorLogic<TEvent, TState, TState>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { symbolObservable } from "./symbolObservable.js";
|
|
2
2
|
import { AreAllImplementationsAssumedToBeProvided, MissingImplementationsError } from "./typegenTypes.js";
|
|
3
|
-
import type { ActorSystem,
|
|
3
|
+
import type { ActorSystem, AnyActorLogic, AnyStateMachine, EventFromLogic, InterpreterFrom, PersistedStateFrom, RaiseActionObject, SnapshotFrom } from "./types.js";
|
|
4
4
|
import { ActorRef, EventObject, InteropSubscribable, InterpreterOptions, Observer, SendActionObject, Subscription } from "./types.js";
|
|
5
|
-
export type SnapshotListener<
|
|
5
|
+
export type SnapshotListener<TLogic extends AnyActorLogic> = (state: SnapshotFrom<TLogic>) => void;
|
|
6
6
|
export type EventListener<TEvent extends EventObject = EventObject> = (event: TEvent) => void;
|
|
7
7
|
export type Listener = () => void;
|
|
8
8
|
export type ErrorListener = (error: any) => void;
|
|
@@ -15,17 +15,17 @@ export declare enum ActorStatus {
|
|
|
15
15
|
Running = 1,
|
|
16
16
|
Stopped = 2
|
|
17
17
|
}
|
|
18
|
-
export declare class Interpreter<
|
|
19
|
-
|
|
18
|
+
export declare class Interpreter<TLogic extends AnyActorLogic, TEvent extends EventObject = EventFromLogic<TLogic>> implements ActorRef<TEvent, SnapshotFrom<TLogic>> {
|
|
19
|
+
logic: TLogic;
|
|
20
20
|
/**
|
|
21
|
-
* The current state of the interpreted
|
|
21
|
+
* The current state of the interpreted logic.
|
|
22
22
|
*/
|
|
23
23
|
private _state;
|
|
24
24
|
/**
|
|
25
25
|
* The clock that is responsible for setting and clearing timeouts, such as delayed events and transitions.
|
|
26
26
|
*/
|
|
27
27
|
clock: Clock;
|
|
28
|
-
options: Readonly<InterpreterOptions<
|
|
28
|
+
options: Readonly<InterpreterOptions<TLogic>>;
|
|
29
29
|
/**
|
|
30
30
|
* The unique identifier for this actor relative to its parent.
|
|
31
31
|
*/
|
|
@@ -50,17 +50,17 @@ export declare class Interpreter<TBehavior extends AnyActorBehavior, TEvent exte
|
|
|
50
50
|
private _doneEvent?;
|
|
51
51
|
src?: string;
|
|
52
52
|
/**
|
|
53
|
-
* Creates a new Interpreter instance (i.e., service) for the given
|
|
53
|
+
* Creates a new Interpreter instance (i.e., service) for the given logic with the provided options, if any.
|
|
54
54
|
*
|
|
55
|
-
* @param
|
|
55
|
+
* @param logic The logic to be interpreted
|
|
56
56
|
* @param options Interpreter options
|
|
57
57
|
*/
|
|
58
|
-
constructor(
|
|
58
|
+
constructor(logic: TLogic, options?: InterpreterOptions<TLogic>);
|
|
59
59
|
private _initState;
|
|
60
60
|
private _deferred;
|
|
61
61
|
private update;
|
|
62
|
-
subscribe(observer: Observer<SnapshotFrom<
|
|
63
|
-
subscribe(nextListener?: (state: SnapshotFrom<
|
|
62
|
+
subscribe(observer: Observer<SnapshotFrom<TLogic>>): Subscription;
|
|
63
|
+
subscribe(nextListener?: (state: SnapshotFrom<TLogic>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
|
|
64
64
|
/**
|
|
65
65
|
* Starts the interpreter from the initial state
|
|
66
66
|
*/
|
|
@@ -86,9 +86,9 @@ export declare class Interpreter<TBehavior extends AnyActorBehavior, TEvent exte
|
|
|
86
86
|
toJSON(): {
|
|
87
87
|
id: string;
|
|
88
88
|
};
|
|
89
|
-
getPersistedState(): PersistedStateFrom<
|
|
90
|
-
[Symbol.observable](): InteropSubscribable<SnapshotFrom<
|
|
91
|
-
getSnapshot(): SnapshotFrom<
|
|
89
|
+
getPersistedState(): PersistedStateFrom<TLogic> | undefined;
|
|
90
|
+
[Symbol.observable](): InteropSubscribable<SnapshotFrom<TLogic>>;
|
|
91
|
+
getSnapshot(): SnapshotFrom<TLogic>;
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
94
94
|
* Creates a new Interpreter instance for the given machine with the provided options, if any.
|
|
@@ -97,4 +97,4 @@ export declare class Interpreter<TBehavior extends AnyActorBehavior, TEvent exte
|
|
|
97
97
|
* @param options Interpreter options
|
|
98
98
|
*/
|
|
99
99
|
export declare function interpret<TMachine extends AnyStateMachine>(machine: AreAllImplementationsAssumedToBeProvided<TMachine['__TResolvedTypesMeta']> extends true ? TMachine : MissingImplementationsError<TMachine['__TResolvedTypesMeta']>, options?: InterpreterOptions<TMachine>): InterpreterFrom<TMachine>;
|
|
100
|
-
export declare function interpret<
|
|
100
|
+
export declare function interpret<TLogic extends AnyActorLogic>(logic: TLogic, options?: InterpreterOptions<TLogic>): Interpreter<TLogic>;
|
|
@@ -2,7 +2,7 @@ import { BaseActionObject, EventObject, StateValue, TransitionConfig, Transition
|
|
|
2
2
|
import { State } from "./State.js";
|
|
3
3
|
import { NULL_EVENT } from "./constants.js";
|
|
4
4
|
import type { StateNode } from "./StateNode.js";
|
|
5
|
-
import { AnyActorContext, AnyHistoryValue, AnyState,
|
|
5
|
+
import { AnyActorContext, AnyHistoryValue, AnyState, AnyStateNode, AnyTransitionDefinition, DelayedTransitionDefinition, InitialTransitionDefinition } from "./index.js";
|
|
6
6
|
type Configuration<TContext extends MachineContext, TE extends EventObject> = Iterable<StateNode<TContext, TE>>;
|
|
7
7
|
type AnyConfiguration = Configuration<any, any>;
|
|
8
8
|
type AdjList = Map<AnyStateNode, Array<AnyStateNode>>;
|
|
@@ -52,11 +52,9 @@ export declare function removeConflictingTransitions(enabledTransitions: Array<A
|
|
|
52
52
|
* @param currentState
|
|
53
53
|
* @param mutConfiguration
|
|
54
54
|
*/
|
|
55
|
-
export declare function microstep<TContext extends MachineContext, TEvent extends EventObject>(transitions: Array<TransitionDefinition<TContext, TEvent>>, currentState: State<TContext, TEvent, any>, actorCtx: AnyActorContext
|
|
56
|
-
export declare function resolveActionsAndContext<TContext extends MachineContext, TEvent extends EventObject>(actions: BaseActionObject[], event: TEvent, currentState: State<TContext, TEvent, any>, actorCtx: AnyActorContext | undefined):
|
|
57
|
-
|
|
58
|
-
};
|
|
59
|
-
export declare function macrostep<TMachine extends AnyStateMachine>(state: StateFromMachine<TMachine>, event: TMachine['__TEvent'], actorCtx: AnyActorContext | undefined): {
|
|
55
|
+
export declare function microstep<TContext extends MachineContext, TEvent extends EventObject>(transitions: Array<TransitionDefinition<TContext, TEvent>>, currentState: State<TContext, TEvent, any>, actorCtx: AnyActorContext, event: TEvent): State<TContext, TEvent, any>;
|
|
56
|
+
export declare function resolveActionsAndContext<TContext extends MachineContext, TEvent extends EventObject>(actions: BaseActionObject[], event: TEvent, currentState: State<TContext, TEvent, any>, actorCtx: AnyActorContext | undefined): [AnyState, BaseActionObject[]];
|
|
57
|
+
export declare function macrostep(state: AnyState, event: EventObject, actorCtx: AnyActorContext): {
|
|
60
58
|
state: typeof state;
|
|
61
59
|
microstates: Array<typeof state>;
|
|
62
60
|
};
|
|
@@ -76,12 +76,12 @@ export type MachineContext = Record<string, any>;
|
|
|
76
76
|
export interface ActionMeta<TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> extends StateMeta<TEvent> {
|
|
77
77
|
action: TAction;
|
|
78
78
|
}
|
|
79
|
-
export type Spawner = <T extends
|
|
80
|
-
|
|
79
|
+
export type Spawner = <T extends ActorLogic<any, any> | string>(// TODO: read string from machine logic keys
|
|
80
|
+
logic: T, options?: Partial<{
|
|
81
81
|
id: string;
|
|
82
82
|
systemId?: string;
|
|
83
83
|
input: any;
|
|
84
|
-
}>) => T extends
|
|
84
|
+
}>) => T extends ActorLogic<infer TActorEvent, infer TActorEmitted, infer _, infer __, infer ___> ? ActorRef<TActorEvent, TActorEmitted> : ActorRef<any, any>;
|
|
85
85
|
export interface AssignMeta<TExpressionEvent extends EventObject, _TEvent extends EventObject> extends StateMeta<TExpressionEvent> {
|
|
86
86
|
action: BaseActionObject;
|
|
87
87
|
event: TExpressionEvent;
|
|
@@ -182,17 +182,10 @@ type ExtractWithSimpleSupport<T extends {
|
|
|
182
182
|
export type Receiver<TEvent extends EventObject> = (listener: {
|
|
183
183
|
bivarianceHack(event: TEvent): void;
|
|
184
184
|
}['bivarianceHack']) => void;
|
|
185
|
-
export type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (sendBack: (event: TSentEvent) => void, onReceive: Receiver<TEvent>, { input }: {
|
|
185
|
+
export type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (sendBack: (event: TSentEvent) => void, onReceive: Receiver<TEvent>, { input, system }: {
|
|
186
186
|
input: any;
|
|
187
|
+
system: AnyActorSystem;
|
|
187
188
|
}) => (() => void) | Promise<any> | void;
|
|
188
|
-
export type ActorBehaviorCreator<TContext extends MachineContext, TEvent extends EventObject, TActorBehavior extends AnyActorBehavior = AnyActorBehavior> = (context: TContext, event: TEvent, meta: {
|
|
189
|
-
id: string;
|
|
190
|
-
data?: any;
|
|
191
|
-
src: string;
|
|
192
|
-
event: TEvent;
|
|
193
|
-
meta: MetaObject | undefined;
|
|
194
|
-
input: any;
|
|
195
|
-
}) => TActorBehavior;
|
|
196
189
|
export interface InvokeMeta {
|
|
197
190
|
src: string;
|
|
198
191
|
meta: MetaObject | undefined;
|
|
@@ -201,7 +194,7 @@ export interface InvokeDefinition<TContext extends MachineContext, TEvent extend
|
|
|
201
194
|
id: string;
|
|
202
195
|
systemId: string | undefined;
|
|
203
196
|
/**
|
|
204
|
-
* The source of the actor
|
|
197
|
+
* The source of the actor logic to be invoked
|
|
205
198
|
*/
|
|
206
199
|
src: string;
|
|
207
200
|
input?: Mapper<TContext, TEvent, any> | any;
|
|
@@ -259,7 +252,7 @@ export interface InvokeConfig<TContext extends MachineContext, TEvent extends Ev
|
|
|
259
252
|
/**
|
|
260
253
|
* The source of the machine to be invoked, or the machine itself.
|
|
261
254
|
*/
|
|
262
|
-
src: string |
|
|
255
|
+
src: string | ActorLogic<any, any>;
|
|
263
256
|
input?: Mapper<TContext, TEvent, any> | any;
|
|
264
257
|
/**
|
|
265
258
|
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
@@ -428,8 +421,8 @@ export type DelayConfig<TContext extends MachineContext, TEvent extends EventObj
|
|
|
428
421
|
export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> {
|
|
429
422
|
guards: Record<string, GuardPredicate<TContext, TEvent>>;
|
|
430
423
|
actions: ActionFunctionMap<TContext, TEvent, TAction>;
|
|
431
|
-
actors: Record<string,
|
|
432
|
-
src:
|
|
424
|
+
actors: Record<string, AnyActorLogic | {
|
|
425
|
+
src: AnyActorLogic;
|
|
433
426
|
input: Mapper<TContext, TEvent, any> | any;
|
|
434
427
|
}>;
|
|
435
428
|
delays: DelayFunctionMap<TContext, TEvent>;
|
|
@@ -446,8 +439,8 @@ type MachineImplementationsGuards<TContext extends MachineContext, TResolvedType
|
|
|
446
439
|
[K in keyof TEventsCausingGuards]?: GuardPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
|
|
447
440
|
};
|
|
448
441
|
type MachineImplementationsActors<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActors'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
|
|
449
|
-
[K in keyof TEventsCausingActors]?:
|
|
450
|
-
src:
|
|
442
|
+
[K in keyof TEventsCausingActors]?: AnyActorLogic | {
|
|
443
|
+
src: AnyActorLogic;
|
|
451
444
|
input: Mapper<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActors[K]>, EventObject>, any> | any;
|
|
452
445
|
};
|
|
453
446
|
};
|
|
@@ -782,9 +775,7 @@ export interface StateLike<TContext extends MachineContext> {
|
|
|
782
775
|
export interface StateConfig<TContext extends MachineContext, TEvent extends EventObject> {
|
|
783
776
|
value: StateValue;
|
|
784
777
|
context: TContext;
|
|
785
|
-
event: TEvent;
|
|
786
778
|
historyValue?: HistoryValue<TContext, TEvent>;
|
|
787
|
-
actions?: BaseActionObject[];
|
|
788
779
|
meta?: any;
|
|
789
780
|
configuration?: Array<StateNode<TContext, TEvent>>;
|
|
790
781
|
transitions?: Array<TransitionDefinition<TContext, TEvent>>;
|
|
@@ -795,7 +786,7 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
|
|
|
795
786
|
machine?: StateMachine<TContext, TEvent, any, any, any>;
|
|
796
787
|
_internalQueue?: Array<TEvent>;
|
|
797
788
|
}
|
|
798
|
-
export interface InterpreterOptions<
|
|
789
|
+
export interface InterpreterOptions<_TActorLogic extends AnyActorLogic> {
|
|
799
790
|
/**
|
|
800
791
|
* Whether state actions should be executed immediately upon transition. Defaults to `true`.
|
|
801
792
|
*/
|
|
@@ -855,7 +846,6 @@ export interface Subscribable<T> extends InteropSubscribable<T> {
|
|
|
855
846
|
subscribe(observer: Observer<T>): Subscription;
|
|
856
847
|
subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
|
|
857
848
|
}
|
|
858
|
-
export type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | ActorBehavior<any, any>;
|
|
859
849
|
export type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends any ? TEventType extends TEvent['type'] ? TEvent : never : never;
|
|
860
850
|
export interface BaseActorRef<TEvent extends EventObject> {
|
|
861
851
|
send: (event: TEvent) => void;
|
|
@@ -883,9 +873,9 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
|
|
|
883
873
|
export type AnyActorRef = ActorRef<any, any>;
|
|
884
874
|
export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? ActorRef<TEvent, State<TContext, TEvent, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRef<{
|
|
885
875
|
type: string;
|
|
886
|
-
}, U | undefined> : R extends
|
|
876
|
+
}, U | undefined> : R extends ActorLogic<infer TEvent, infer TSnapshot> ? ActorRef<TEvent, TSnapshot> : never : never;
|
|
887
877
|
export type DevToolsAdapter = (service: AnyInterpreter) => void;
|
|
888
|
-
export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? Interpreter<
|
|
878
|
+
export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? Interpreter<ActorLogic<TEvent, State<TContext, TEvent, TResolvedTypesMeta>, State<TContext, TEvent, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TResolvedTypesMeta>>>> : never;
|
|
889
879
|
export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
|
|
890
880
|
export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
|
891
881
|
export type EventOfMachine<TMachine extends AnyStateMachine> = TMachine extends StateMachine<any, infer E, any, any, any> ? E : never;
|
|
@@ -899,7 +889,7 @@ export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem ext
|
|
|
899
889
|
stopChild: (child: AnyActorRef) => void;
|
|
900
890
|
}
|
|
901
891
|
export type AnyActorContext = ActorContext<any, any, any>;
|
|
902
|
-
export interface
|
|
892
|
+
export interface ActorLogic<TEvent extends EventObject, TSnapshot = any, TInternalState = TSnapshot,
|
|
903
893
|
/**
|
|
904
894
|
* Serialized internal state used for persistence & restoration
|
|
905
895
|
*/
|
|
@@ -919,14 +909,14 @@ TPersisted = TInternalState, TSystem extends ActorSystem<any> = ActorSystem<any>
|
|
|
919
909
|
*/
|
|
920
910
|
getPersistedState?: (state: TInternalState) => TPersisted;
|
|
921
911
|
}
|
|
922
|
-
export type
|
|
923
|
-
export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Interpreter<infer
|
|
924
|
-
export type
|
|
925
|
-
export type PersistedStateFrom<
|
|
926
|
-
export type InternalStateFrom<
|
|
912
|
+
export type AnyActorLogic = ActorLogic<any, any, any, any>;
|
|
913
|
+
export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Interpreter<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _, infer __, infer ___, infer ____, infer _____> ? StateFrom<R> : R extends ActorLogic<infer _, infer TSnapshot, infer __, infer ___, infer ____> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
|
|
914
|
+
export type EventFromLogic<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer TEvent, infer _, infer __, infer ___, infer ____> ? TEvent : never;
|
|
915
|
+
export type PersistedStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer TPersisted> ? TPersisted : never;
|
|
916
|
+
export type InternalStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer TInternalState, infer _TPersisted> ? TInternalState : never;
|
|
927
917
|
type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends State<infer _, infer TEvent, infer __> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
|
|
928
918
|
export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
|
929
|
-
export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends State<infer TContext, infer _, infer __> ? TContext : R extends Interpreter<infer
|
|
919
|
+
export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends State<infer TContext, infer _, infer __> ? TContext : R extends Interpreter<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _> ? TContext : never : never : never;
|
|
930
920
|
export type InferEvent<E extends EventObject> = {
|
|
931
921
|
[T in E['type']]: {
|
|
932
922
|
type: T;
|
|
@@ -937,7 +927,6 @@ export type InferEvent<E extends EventObject> = {
|
|
|
937
927
|
export type TODO = any;
|
|
938
928
|
export type StateValueFrom<TMachine extends AnyStateMachine> = Parameters<StateFrom<TMachine>['matches']>[0];
|
|
939
929
|
export type TagsFrom<TMachine extends AnyStateMachine> = Parameters<StateFrom<TMachine>['hasTag']>[0];
|
|
940
|
-
export type StateFromMachine<TMachine extends AnyStateMachine> = TMachine['initialState'];
|
|
941
930
|
export interface ActorSystemInfo {
|
|
942
931
|
actors: Record<string, AnyActorRef>;
|
|
943
932
|
}
|
|
@@ -948,7 +937,8 @@ export interface ActorSystem<T extends ActorSystemInfo> {
|
|
|
948
937
|
_set: <K extends keyof T['actors']>(key: K, actorRef: T['actors'][K]) => void;
|
|
949
938
|
get: <K extends keyof T['actors']>(key: K) => T['actors'][K] | undefined;
|
|
950
939
|
}
|
|
951
|
-
export type
|
|
940
|
+
export type AnyActorSystem = ActorSystem<any>;
|
|
941
|
+
export type PersistedMachineState<TState extends AnyState> = Pick<TState, 'value' | 'output' | 'context' | 'done' | 'historyValue'> & {
|
|
952
942
|
children: {
|
|
953
943
|
[K in keyof TState['children']]: {
|
|
954
944
|
state: any;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AnyActorLogic, AnyState } from "./index.js";
|
|
2
2
|
import { NULL_EVENT } from "./constants.js";
|
|
3
3
|
import type { StateNode } from "./StateNode.js";
|
|
4
|
-
import type {
|
|
4
|
+
import type { ActorLogic, AnyEventObject, EventObject, EventType, InvokeConfig, MachineContext, Mapper, Observer, PropertyMapper, ErrorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfig, TransitionConfigTarget } from "./types.js";
|
|
5
5
|
export declare function keys<T extends object>(value: T): Array<keyof T & string>;
|
|
6
6
|
export declare function matchesState(parentStateId: StateValue, childStateId: StateValue, delimiter?: string): boolean;
|
|
7
7
|
export declare function toStatePath(stateId: string | string[], delimiter: string): string[];
|
|
@@ -30,7 +30,7 @@ export declare function toArray<T>(value: T[] | T | undefined): T[];
|
|
|
30
30
|
export declare function mapContext<TContext extends MachineContext, TEvent extends EventObject>(mapper: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>, context: TContext, event: TEvent): any;
|
|
31
31
|
export declare function isBuiltInEvent(eventType: EventType): boolean;
|
|
32
32
|
export declare function isPromiseLike(value: any): value is PromiseLike<any>;
|
|
33
|
-
export declare function
|
|
33
|
+
export declare function isActorLogic(value: any): value is ActorLogic<any, any>;
|
|
34
34
|
export declare function partition<T, A extends T, B extends T>(items: T[], predicate: (item: T) => item is A): [A[], B[]];
|
|
35
35
|
export declare function isArray(value: any): value is any[];
|
|
36
36
|
export declare function isFunction(value: any): value is Function;
|
|
@@ -43,13 +43,13 @@ export declare function toTransitionConfigArray<TContext extends MachineContext,
|
|
|
43
43
|
}>;
|
|
44
44
|
export declare function normalizeTarget<TContext extends MachineContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, TEvent>> | undefined): Array<string | StateNode<TContext, TEvent>> | undefined;
|
|
45
45
|
export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
|
|
46
|
-
export declare function toInvokeConfig<TContext extends MachineContext, TEvent extends EventObject>(invocable: InvokeConfig<TContext, TEvent> | string |
|
|
46
|
+
export declare function toInvokeConfig<TContext extends MachineContext, TEvent extends EventObject>(invocable: InvokeConfig<TContext, TEvent> | string | ActorLogic<any, any>, id: string): InvokeConfig<TContext, TEvent>;
|
|
47
47
|
export declare function toObserver<T>(nextHandler?: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
|
|
48
48
|
export declare function createInvokeId(stateNodeId: string, index: number): string;
|
|
49
|
-
export declare function resolveReferencedActor(referenced:
|
|
50
|
-
src:
|
|
49
|
+
export declare function resolveReferencedActor(referenced: AnyActorLogic | {
|
|
50
|
+
src: AnyActorLogic;
|
|
51
51
|
input: Mapper<any, any, any> | any;
|
|
52
52
|
} | undefined): {
|
|
53
|
-
src:
|
|
53
|
+
src: AnyActorLogic;
|
|
54
54
|
input: Mapper<any, any, any> | any;
|
|
55
55
|
} | undefined;
|