xstate 5.0.0-beta.28 → 5.0.0-beta.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/actions/dist/xstate-actions.cjs.js +3 -3
- package/actions/dist/xstate-actions.development.cjs.js +3 -3
- package/actions/dist/xstate-actions.development.esm.js +3 -3
- package/actions/dist/xstate-actions.esm.js +3 -3
- package/actions/dist/xstate-actions.umd.min.js +1 -1
- package/actions/dist/xstate-actions.umd.min.js.map +1 -1
- package/actors/dist/xstate-actors.cjs.js +104 -139
- package/actors/dist/xstate-actors.cjs.mjs +1 -3
- package/actors/dist/xstate-actors.development.cjs.js +104 -139
- package/actors/dist/xstate-actors.development.cjs.mjs +1 -3
- package/actors/dist/xstate-actors.development.esm.js +105 -138
- package/actors/dist/xstate-actors.esm.js +105 -138
- 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/State.d.ts +4 -6
- package/dist/declarations/src/StateMachine.d.ts +28 -21
- package/dist/declarations/src/StateNode.d.ts +1 -1
- package/dist/declarations/src/actions/assign.d.ts +4 -4
- package/dist/declarations/src/actions/cancel.d.ts +4 -4
- package/dist/declarations/src/actions/choose.d.ts +3 -3
- package/dist/declarations/src/actions/log.d.ts +4 -4
- package/dist/declarations/src/actions/pure.d.ts +1 -1
- package/dist/declarations/src/actions/raise.d.ts +2 -2
- package/dist/declarations/src/actions/send.d.ts +7 -7
- package/dist/declarations/src/actions/stop.d.ts +4 -4
- package/dist/declarations/src/actors/callback.d.ts +8 -8
- package/dist/declarations/src/actors/index.d.ts +3 -5
- package/dist/declarations/src/actors/observable.d.ts +12 -13
- package/dist/declarations/src/actors/promise.d.ts +11 -14
- package/dist/declarations/src/actors/transition.d.ts +10 -7
- package/dist/declarations/src/index.d.ts +1 -1
- package/dist/declarations/src/interpreter.d.ts +4 -4
- package/dist/declarations/src/stateUtils.d.ts +5 -6
- package/dist/declarations/src/types.d.ts +92 -70
- package/dist/{interpreter-a1432c7d.development.cjs.js → interpreter-7f1dc557.development.cjs.js} +9 -30
- package/dist/{interpreter-a77bb0ec.development.esm.js → interpreter-945c4b96.development.esm.js} +10 -28
- package/dist/{interpreter-672794ae.cjs.js → interpreter-a2c1e529.cjs.js} +9 -30
- package/dist/{interpreter-b5203bcb.esm.js → interpreter-b8f53c4b.esm.js} +10 -28
- package/dist/{raise-b9c9a234.esm.js → raise-0b7dde8b.esm.js} +13 -11
- package/dist/{raise-a60c9290.development.esm.js → raise-6e4f5cf7.development.esm.js} +13 -11
- package/dist/{raise-74b72ca5.development.cjs.js → raise-7cae872b.development.cjs.js} +13 -11
- package/dist/{raise-436a57a2.cjs.js → raise-e79b1f86.cjs.js} +13 -11
- package/dist/{send-e8b55d00.development.cjs.js → send-19a256f0.development.cjs.js} +2 -2
- package/dist/{send-e63b7b83.development.esm.js → send-a1d772da.development.esm.js} +2 -2
- package/dist/{send-35e1a689.cjs.js → send-e7063201.cjs.js} +2 -2
- package/dist/{send-4192e7bc.esm.js → send-f4fb3ba5.esm.js} +2 -2
- package/dist/xstate.cjs.js +20 -31
- package/dist/xstate.cjs.mjs +0 -2
- package/dist/xstate.development.cjs.js +20 -31
- package/dist/xstate.development.cjs.mjs +0 -2
- package/dist/xstate.development.esm.js +24 -33
- package/dist/xstate.esm.js +24 -33
- package/dist/xstate.umd.min.js +1 -1
- package/dist/xstate.umd.min.js.map +1 -1
- package/guards/dist/xstate-guards.cjs.js +2 -2
- package/guards/dist/xstate-guards.development.cjs.js +2 -2
- package/guards/dist/xstate-guards.development.esm.js +2 -2
- package/guards/dist/xstate-guards.esm.js +2 -2
- package/guards/dist/xstate-guards.umd.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ActionArgs, ActorRef, AnyActorRef, AnyEventObject, Cast, EventFrom, EventObject, InferEvent, MachineContext, SendExpr, SendToActionOptions, SendToActionParams, UnifiedArg, ParameterizedObject, NoInfer } from "../types.js";
|
|
2
|
-
export interface SendToAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TDelay extends string> {
|
|
3
|
-
(_: ActionArgs<TContext, TExpressionEvent, TExpressionAction>): void;
|
|
2
|
+
export interface SendToAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> {
|
|
3
|
+
(_: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>): void;
|
|
4
4
|
_out_TDelay?: TDelay;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
@@ -12,22 +12,22 @@ export interface SendToAction<TContext extends MachineContext, TExpressionEvent
|
|
|
12
12
|
* - `id` - The unique send event identifier (used with `cancel()`).
|
|
13
13
|
* - `delay` - The number of milliseconds to delay the sending of the event.
|
|
14
14
|
*/
|
|
15
|
-
export declare function sendTo<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined,
|
|
15
|
+
export declare function sendTo<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TTargetActor extends AnyActorRef, TEvent extends EventObject, TDelay extends string>(to: TTargetActor | string | ((args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => TTargetActor | string), eventOrExpr: EventFrom<TTargetActor> | SendExpr<TContext, TExpressionEvent, TExpressionAction, InferEvent<Cast<EventFrom<TTargetActor>, EventObject>>, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, NoInfer<TEvent>, NoInfer<TDelay>>): SendToAction<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay>;
|
|
16
16
|
/**
|
|
17
17
|
* Sends an event to this machine's parent.
|
|
18
18
|
*
|
|
19
19
|
* @param event The event to send to the parent machine.
|
|
20
20
|
* @param options Options to pass into the send event.
|
|
21
21
|
*/
|
|
22
|
-
export declare function sendParent<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject = AnyEventObject, TDelay extends string = string>(event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay>): SendToAction<TContext, TExpressionEvent, TExpressionAction, TDelay>;
|
|
23
|
-
type Target<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = string | ActorRef<any, any> | ((args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => string | ActorRef<any, any>);
|
|
22
|
+
export declare function sendParent<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject = AnyEventObject, TEvent extends EventObject = AnyEventObject, TDelay extends string = string>(event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay>): SendToAction<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay>;
|
|
23
|
+
type Target<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> = string | ActorRef<any, any> | ((args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => string | ActorRef<any, any>);
|
|
24
24
|
/**
|
|
25
25
|
* Forwards (sends) an event to a specified service.
|
|
26
26
|
*
|
|
27
27
|
* @param target The target service to forward the event to.
|
|
28
28
|
* @param options Options to pass into the send action creator.
|
|
29
29
|
*/
|
|
30
|
-
export declare function forwardTo<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TDelay extends string>(target: Target<TContext, TExpressionEvent, TExpressionAction>, options?: SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay>):
|
|
30
|
+
export declare function forwardTo<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string>(target: Target<TContext, TExpressionEvent, TExpressionAction, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay>): SendToAction<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay>;
|
|
31
31
|
/**
|
|
32
32
|
* Escalates an error by sending it as an event to this machine's parent.
|
|
33
33
|
*
|
|
@@ -35,5 +35,5 @@ export declare function forwardTo<TContext extends MachineContext, TExpressionEv
|
|
|
35
35
|
* takes in the `context`, `event`, and `meta`, and returns the error data to send.
|
|
36
36
|
* @param options Options to pass into the send action creator.
|
|
37
37
|
*/
|
|
38
|
-
export declare function escalate<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TErrorData = any>(errorData: TErrorData | ((args: UnifiedArg<TContext, TExpressionEvent>) => TErrorData), options?: SendToActionParams<TContext, TExpressionEvent, TExpressionAction, EventObject, string>): SendToAction<TContext, TExpressionEvent, TExpressionAction, string>;
|
|
38
|
+
export declare function escalate<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TErrorData = any, TEvent extends EventObject = AnyEventObject>(errorData: TErrorData | ((args: UnifiedArg<TContext, TExpressionEvent, TEvent>) => TErrorData), options?: SendToActionParams<TContext, TExpressionEvent, TExpressionAction, EventObject, TEvent, string>): SendToAction<TContext, TExpressionEvent, TExpressionAction, TEvent, string>;
|
|
39
39
|
export {};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ActionArgs, ActorRef, EventObject, MachineContext, ParameterizedObject } from "../types.js";
|
|
2
|
-
type ResolvableActorRef<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = string | ActorRef<any> | ((args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => ActorRef<any> | string);
|
|
3
|
-
export interface StopAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> {
|
|
4
|
-
(_: ActionArgs<TContext, TExpressionEvent, TExpressionAction>): void;
|
|
2
|
+
type ResolvableActorRef<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> = string | ActorRef<any, any> | ((args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => ActorRef<any, any> | string);
|
|
3
|
+
export interface StopAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> {
|
|
4
|
+
(_: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>): void;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
7
|
* Stops an actor.
|
|
8
8
|
*
|
|
9
9
|
* @param actorRef The actor to stop.
|
|
10
10
|
*/
|
|
11
|
-
export declare function stop<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined>(actorRef: ResolvableActorRef<TContext, TExpressionEvent, TExpressionAction>): StopAction<TContext, TExpressionEvent, TExpressionAction>;
|
|
11
|
+
export declare function stop<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject>(actorRef: ResolvableActorRef<TContext, TExpressionEvent, TExpressionAction, TEvent>): StopAction<TContext, TExpressionEvent, TExpressionAction, TEvent>;
|
|
12
12
|
export {};
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { ActorLogic, EventObject, AnyActorSystem, AnyEventObject, ActorSystem, ActorRefFrom } from "../types.js";
|
|
2
|
-
|
|
3
|
-
canceled: boolean;
|
|
4
|
-
receivers: Set<(e: TEvent) => void>;
|
|
5
|
-
dispose: void | (() => void) | Promise<any>;
|
|
1
|
+
import { ActorLogic, EventObject, AnyActorSystem, AnyEventObject, ActorSystem, ActorRefFrom, Snapshot, HomomorphicOmit } from "../types.js";
|
|
2
|
+
type CallbackSnapshot<TInput, TEvent> = Snapshot<undefined> & {
|
|
6
3
|
input: TInput;
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
_receivers: Set<(e: TEvent) => void>;
|
|
5
|
+
_dispose: (() => void) | void;
|
|
6
|
+
};
|
|
7
|
+
export type CallbackActorLogic<TEvent extends EventObject, TInput = unknown> = ActorLogic<CallbackSnapshot<TInput, TEvent>, TEvent, TInput, HomomorphicOmit<CallbackSnapshot<TInput, TEvent>, '_receivers' | '_dispose'>, ActorSystem<any>>;
|
|
9
8
|
export type CallbackActorRef<TEvent extends EventObject, TInput = unknown> = ActorRefFrom<CallbackActorLogic<TEvent, TInput>>;
|
|
10
9
|
export type Receiver<TEvent extends EventObject> = (listener: {
|
|
11
10
|
bivarianceHack(event: TEvent): void;
|
|
@@ -16,5 +15,6 @@ export type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEve
|
|
|
16
15
|
self: CallbackActorRef<TEvent>;
|
|
17
16
|
sendBack: (event: TSentEvent) => void;
|
|
18
17
|
receive: Receiver<TEvent>;
|
|
19
|
-
}) => (() => void) |
|
|
18
|
+
}) => (() => void) | void;
|
|
20
19
|
export declare function fromCallback<TEvent extends EventObject, TInput>(invokeCallback: InvokeCallback<TEvent, AnyEventObject, TInput>): CallbackActorLogic<TEvent, TInput>;
|
|
20
|
+
export {};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import type { ActorRef, AnyEventObject,
|
|
1
|
+
import type { ActorRef, AnyEventObject, Snapshot } from "../types.js";
|
|
2
2
|
export { fromCallback, type CallbackActorLogic } from "./callback.js";
|
|
3
3
|
export { fromEventObservable, fromObservable, type ObservableActorLogic } from "./observable.js";
|
|
4
4
|
export { fromPromise, type PromiseActorLogic } from "./promise.js";
|
|
5
|
-
export { fromTransition, type TransitionActorLogic } from "./transition.js";
|
|
6
|
-
export declare function
|
|
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
|
-
export declare function createEmptyActor(): ActorRef<AnyEventObject, undefined>;
|
|
5
|
+
export { fromTransition, type TransitionActorLogic, type TransitionSnapshot } from "./transition.js";
|
|
6
|
+
export declare function createEmptyActor(): ActorRef<AnyEventObject, Snapshot<undefined>>;
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
import { Subscribable, ActorLogic, EventObject, Subscription, AnyActorSystem, ActorRefFrom } from "../types.js";
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
status: 'active' | 'done' | 'error' | 'canceled';
|
|
5
|
-
data: T | undefined;
|
|
1
|
+
import { Subscribable, ActorLogic, EventObject, Subscription, AnyActorSystem, ActorRefFrom, Snapshot, HomomorphicOmit } from "../types.js";
|
|
2
|
+
export type ObservableSnapshot<TContext, TInput> = Snapshot<undefined> & {
|
|
3
|
+
context: TContext | undefined;
|
|
6
4
|
input: TInput | undefined;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export type
|
|
5
|
+
_subscription: Subscription | undefined;
|
|
6
|
+
};
|
|
7
|
+
export type ObservablePersistedState<TContext, TInput> = HomomorphicOmit<ObservableSnapshot<TContext, TInput>, '_subscription'>;
|
|
8
|
+
export type ObservableActorLogic<TContext, TInput> = ActorLogic<ObservableSnapshot<TContext, TInput>, {
|
|
10
9
|
type: string;
|
|
11
10
|
[k: string]: unknown;
|
|
12
|
-
},
|
|
13
|
-
export type ObservableActorRef<
|
|
14
|
-
export declare function fromObservable<
|
|
11
|
+
}, TInput, ObservablePersistedState<TContext, TInput>, AnyActorSystem>;
|
|
12
|
+
export type ObservableActorRef<TContext> = ActorRefFrom<ObservableActorLogic<TContext, any>>;
|
|
13
|
+
export declare function fromObservable<TContext, TInput>(observableCreator: ({ input, system }: {
|
|
15
14
|
input: TInput;
|
|
16
15
|
system: AnyActorSystem;
|
|
17
|
-
self: ObservableActorRef<
|
|
18
|
-
}) => Subscribable<
|
|
16
|
+
self: ObservableActorRef<TContext>;
|
|
17
|
+
}) => Subscribable<TContext>): ObservableActorLogic<TContext, TInput>;
|
|
19
18
|
/**
|
|
20
19
|
* Creates event observable logic that listens to an observable
|
|
21
20
|
* that delivers event objects.
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { ActorLogic, ActorRefFrom, ActorSystem, AnyActorSystem } from "../types.js";
|
|
1
|
+
import { ActorLogic, ActorRefFrom, ActorSystem, AnyActorSystem, Snapshot } from "../types.js";
|
|
2
2
|
import { XSTATE_STOP } from "../constants.js";
|
|
3
|
-
export
|
|
4
|
-
status: 'active' | 'error' | 'done' | 'canceled';
|
|
5
|
-
data: T | undefined;
|
|
3
|
+
export type PromiseSnapshot<TOutput, TInput> = Snapshot<TOutput> & {
|
|
6
4
|
input: TInput | undefined;
|
|
7
|
-
}
|
|
5
|
+
};
|
|
8
6
|
declare const resolveEventType = "$$xstate.resolve";
|
|
9
7
|
declare const rejectEventType = "$$xstate.reject";
|
|
10
8
|
export type PromiseActorEvents<T> = {
|
|
@@ -16,17 +14,16 @@ export type PromiseActorEvents<T> = {
|
|
|
16
14
|
} | {
|
|
17
15
|
type: typeof XSTATE_STOP;
|
|
18
16
|
};
|
|
19
|
-
export type PromiseActorLogic<
|
|
17
|
+
export type PromiseActorLogic<TOutput, TInput = unknown> = ActorLogic<PromiseSnapshot<TOutput, TInput>, {
|
|
20
18
|
type: string;
|
|
21
19
|
[k: string]: unknown;
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
ActorSystem<any
|
|
25
|
-
|
|
26
|
-
export
|
|
27
|
-
export declare function fromPromise<T, TInput>(promiseCreator: ({ input, system }: {
|
|
20
|
+
}, TInput, // input
|
|
21
|
+
PromiseSnapshot<TOutput, TInput>, // persisted state
|
|
22
|
+
ActorSystem<any>>;
|
|
23
|
+
export type PromiseActorRef<TOutput> = ActorRefFrom<PromiseActorLogic<TOutput, unknown>>;
|
|
24
|
+
export declare function fromPromise<TOutput, TInput = unknown>(promiseCreator: ({ input, system }: {
|
|
28
25
|
input: TInput;
|
|
29
26
|
system: AnyActorSystem;
|
|
30
|
-
self: PromiseActorRef<
|
|
31
|
-
}) => PromiseLike<
|
|
27
|
+
self: PromiseActorRef<TOutput>;
|
|
28
|
+
}) => PromiseLike<TOutput>): PromiseActorLogic<TOutput, TInput>;
|
|
32
29
|
export {};
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import { ActorLogic, ActorContext, ActorSystem, EventObject, ActorRefFrom, AnyActorSystem } from "../types.js";
|
|
2
|
-
export type
|
|
3
|
-
|
|
1
|
+
import { ActorLogic, ActorContext, ActorSystem, EventObject, ActorRefFrom, AnyActorSystem, Snapshot } from "../types.js";
|
|
2
|
+
export type TransitionSnapshot<TContext> = Snapshot<undefined> & {
|
|
3
|
+
context: TContext;
|
|
4
|
+
};
|
|
5
|
+
export type TransitionActorLogic<TContext, TEvent extends EventObject, TInput> = ActorLogic<TransitionSnapshot<TContext>, TEvent, TInput, TransitionSnapshot<TContext>, AnyActorSystem>;
|
|
6
|
+
export type TransitionActorRef<TContext, TEvent extends EventObject> = ActorRefFrom<TransitionActorLogic<TransitionSnapshot<TContext>, TEvent, unknown>>;
|
|
4
7
|
/**
|
|
5
8
|
* Returns actor logic from a transition function and its initial state.
|
|
6
9
|
*
|
|
7
10
|
* A transition function is a function that takes the current state and an event and returns the next state.
|
|
8
11
|
*
|
|
9
12
|
* @param transition The transition function that returns the next state given the current state and event.
|
|
10
|
-
* @param
|
|
13
|
+
* @param initialContext The initial state of the transition function.
|
|
11
14
|
* @returns Actor logic
|
|
12
15
|
*/
|
|
13
|
-
export declare function fromTransition<
|
|
16
|
+
export declare function fromTransition<TContext, TEvent extends EventObject, TSystem extends ActorSystem<any>, TInput>(transition: (state: TContext, event: TEvent, actorContext: ActorContext<TransitionSnapshot<TContext>, TEvent, TSystem>) => TContext, initialContext: TContext | (({ input, self }: {
|
|
14
17
|
input: TInput;
|
|
15
|
-
self: TransitionActorRef<
|
|
16
|
-
}) =>
|
|
18
|
+
self: TransitionActorRef<TContext, TEvent>;
|
|
19
|
+
}) => TContext)): TransitionActorLogic<TContext, TEvent, TInput>;
|
|
@@ -2,7 +2,7 @@ export * from "./actions.js";
|
|
|
2
2
|
export * from "./actors/index.js";
|
|
3
3
|
export { SimulatedClock } from "./SimulatedClock.js";
|
|
4
4
|
export { type Spawner } from "./spawn.js";
|
|
5
|
-
export { StateMachine } from "./StateMachine.js";
|
|
5
|
+
export { StateMachine, type MachineSnapshot } from "./StateMachine.js";
|
|
6
6
|
export { getStateNodes } from "./stateUtils.js";
|
|
7
7
|
export * from "./typegenTypes.js";
|
|
8
8
|
export * from "./types.js";
|
|
@@ -19,7 +19,7 @@ export declare enum ActorStatus {
|
|
|
19
19
|
* @deprecated Use `ActorStatus` instead.
|
|
20
20
|
*/
|
|
21
21
|
export declare const InterpreterStatus: typeof ActorStatus;
|
|
22
|
-
export declare class Actor<TLogic extends AnyActorLogic
|
|
22
|
+
export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<EventFromLogic<TLogic>, SnapshotFrom<TLogic>> {
|
|
23
23
|
logic: TLogic;
|
|
24
24
|
/**
|
|
25
25
|
* The current internal state of the actor.
|
|
@@ -42,8 +42,8 @@ export declare class Actor<TLogic extends AnyActorLogic, TEvent extends EventObj
|
|
|
42
42
|
* Whether the service is started.
|
|
43
43
|
*/
|
|
44
44
|
status: ActorStatus;
|
|
45
|
-
_parent?: ActorRef<any>;
|
|
46
|
-
ref: ActorRef<
|
|
45
|
+
_parent?: ActorRef<any, any>;
|
|
46
|
+
ref: ActorRef<EventFromLogic<TLogic>, SnapshotFrom<TLogic>>;
|
|
47
47
|
private _actorContext;
|
|
48
48
|
private _systemId;
|
|
49
49
|
/**
|
|
@@ -83,7 +83,7 @@ export declare class Actor<TLogic extends AnyActorLogic, TEvent extends EventObj
|
|
|
83
83
|
*
|
|
84
84
|
* @param event The event to send
|
|
85
85
|
*/
|
|
86
|
-
send(event:
|
|
86
|
+
send(event: EventFromLogic<TLogic>): void;
|
|
87
87
|
delaySend({ event, id, delay, to }: {
|
|
88
88
|
event: EventObject;
|
|
89
89
|
id: string | undefined;
|
|
@@ -35,12 +35,11 @@ export declare function getStateNodeByPath(stateNode: AnyStateNode, statePath: s
|
|
|
35
35
|
*
|
|
36
36
|
* @param state The state value or State instance
|
|
37
37
|
*/
|
|
38
|
-
export declare function getStateNodes<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, state: StateValue | State<TContext, TEvent, TODO, TODO, TODO
|
|
39
|
-
export declare function transitionAtomicNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: string, state: State<TContext, TEvent, TODO, TODO, TODO
|
|
40
|
-
export declare function transitionCompoundNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, state: State<TContext, TEvent, TODO, TODO, TODO
|
|
41
|
-
export declare function transitionParallelNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, state: State<TContext, TEvent, TODO, TODO, TODO
|
|
42
|
-
export declare function transitionNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValue, state: State<TContext, TEvent, TODO, TODO, TODO,
|
|
43
|
-
TODO>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
|
|
38
|
+
export declare function getStateNodes<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, state: StateValue | State<TContext, TEvent, TODO, TODO, TODO>): Array<AnyStateNode>;
|
|
39
|
+
export declare function transitionAtomicNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: string, state: State<TContext, TEvent, TODO, TODO, TODO>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
|
|
40
|
+
export declare function transitionCompoundNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, state: State<TContext, TEvent, TODO, TODO, TODO>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
|
|
41
|
+
export declare function transitionParallelNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, state: State<TContext, TEvent, TODO, TODO, TODO>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
|
|
42
|
+
export declare function transitionNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValue, state: State<TContext, TEvent, TODO, TODO, TODO>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
|
|
44
43
|
export declare function removeConflictingTransitions(enabledTransitions: Array<AnyTransitionDefinition>, configuration: Set<AnyStateNode>, historyValue: AnyHistoryValue): Array<AnyTransitionDefinition>;
|
|
45
44
|
/**
|
|
46
45
|
* https://www.w3.org/TR/scxml/#microstepProcedure
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import type { StateNode } from "./StateNode.js";
|
|
2
2
|
import type { State } from "./State.js";
|
|
3
3
|
import type { ActorStatus, Clock, Actor } from "./interpreter.js";
|
|
4
|
-
import type { StateMachine } from "./StateMachine.js";
|
|
4
|
+
import type { MachineSnapshot, StateMachine } from "./StateMachine.js";
|
|
5
5
|
import { TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, MarkAllImplementationsAsProvided, AreAllImplementationsAssumedToBeProvided } from "./typegenTypes.js";
|
|
6
6
|
import { PromiseActorLogic } from "./actors/promise.js";
|
|
7
7
|
import { Guard, GuardPredicate, UnknownGuard } from "./guards.js";
|
|
8
8
|
import { Spawner } from "./spawn.js";
|
|
9
9
|
import { AssignArgs } from "./actions/assign.js";
|
|
10
|
+
export type HomomorphicPick<T, K extends keyof any> = {
|
|
11
|
+
[P in keyof T as P & K]: T[P];
|
|
12
|
+
};
|
|
13
|
+
export type HomomorphicOmit<T, K extends keyof any> = {
|
|
14
|
+
[P in keyof T as Exclude<P, K>]: T[P];
|
|
15
|
+
};
|
|
10
16
|
/**
|
|
11
17
|
* `T | unknown` reduces to `unknown` and that can be problematic when it comes to contextual typing.
|
|
12
18
|
* It especially is a problem when the union has a function member, like here:
|
|
@@ -58,20 +64,22 @@ export interface ParameterizedObject {
|
|
|
58
64
|
type: string;
|
|
59
65
|
params?: Record<string, unknown>;
|
|
60
66
|
}
|
|
61
|
-
export interface UnifiedArg<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
67
|
+
export interface UnifiedArg<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> {
|
|
62
68
|
context: TContext;
|
|
63
69
|
event: TExpressionEvent;
|
|
64
|
-
self: ActorRef<
|
|
70
|
+
self: ActorRef<TEvent, MachineSnapshot<TContext, TEvent, ProvidedActor, string, unknown>>;
|
|
65
71
|
system: ActorSystem<any>;
|
|
66
72
|
}
|
|
67
73
|
export type MachineContext = Record<string, any>;
|
|
68
|
-
export interface ActionArgs<TContext extends MachineContext,
|
|
69
|
-
action:
|
|
74
|
+
export interface ActionArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> extends UnifiedArg<TContext, TExpressionEvent, TEvent> {
|
|
75
|
+
action: TExpressionAction;
|
|
70
76
|
}
|
|
71
|
-
export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer
|
|
72
|
-
export type OutputFrom<T extends AnyActorLogic> = T extends ActorLogic<infer
|
|
77
|
+
export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TSnapshot, infer _TEvent, infer TInput, infer _TPersisted, infer _TSystem> ? TInput : never;
|
|
78
|
+
export type OutputFrom<T extends AnyActorLogic> = T extends ActorLogic<infer TSnapshot, infer _TEvent, infer _TInput, infer _TPersisted, infer _TSystem> ? (TSnapshot & {
|
|
79
|
+
status: 'done';
|
|
80
|
+
})['output'] : never;
|
|
73
81
|
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
|
74
|
-
(args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>): void;
|
|
82
|
+
(args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>): void;
|
|
75
83
|
_out_TEvent?: TEvent;
|
|
76
84
|
_out_TActor?: TActor;
|
|
77
85
|
_out_TAction?: TAction;
|
|
@@ -143,7 +151,7 @@ type Delay<TDelay extends string> = TDelay | number;
|
|
|
143
151
|
export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
|
144
152
|
[K in Delay<TDelay>]?: string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
|
145
153
|
} | Array<TransitionConfig<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay> & {
|
|
146
|
-
delay: Delay<TDelay> | ((args: UnifiedArg<TContext, TEvent>) => Delay<TDelay>);
|
|
154
|
+
delay: Delay<TDelay> | ((args: UnifiedArg<TContext, TEvent, TEvent>) => Delay<TDelay>);
|
|
147
155
|
}>;
|
|
148
156
|
export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
|
|
149
157
|
export type SingleOrArray<T> = readonly T[] | T;
|
|
@@ -338,7 +346,10 @@ export interface StateMachineDefinition<TContext extends MachineContext, TEvent
|
|
|
338
346
|
}
|
|
339
347
|
export type AnyStateNode = StateNode<any, any>;
|
|
340
348
|
export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
|
|
341
|
-
export type AnyState = State<any,
|
|
349
|
+
export type AnyState = State<any, // context
|
|
350
|
+
any, // event
|
|
351
|
+
any, // actor
|
|
352
|
+
any, // tags
|
|
342
353
|
any>;
|
|
343
354
|
export type AnyStateMachine = StateMachine<any, any, any, any, any, any, any, any, any, // delays
|
|
344
355
|
any>;
|
|
@@ -372,8 +383,8 @@ type GuardMap<TContext extends MachineContext, TEvent extends EventObject, TGuar
|
|
|
372
383
|
type: K;
|
|
373
384
|
} ? TGuard : never, TGuard>;
|
|
374
385
|
};
|
|
375
|
-
export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string, DelayConfig<TContext, TEvent, TAction>>;
|
|
376
|
-
export type DelayConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = number | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
|
|
386
|
+
export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string, DelayConfig<TContext, TEvent, TAction, TEvent>>;
|
|
387
|
+
export type DelayConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> = number | DelayExpr<TContext, TExpressionEvent, TExpressionAction, TEvent>;
|
|
377
388
|
export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject> {
|
|
378
389
|
guards: GuardMap<TContext, TEvent, TGuard>;
|
|
379
390
|
actions: ActionFunctionMap<TContext, TEvent, TActor, TAction>;
|
|
@@ -394,7 +405,7 @@ type MachineImplementationsActors<TContext extends MachineContext, TResolvedType
|
|
|
394
405
|
};
|
|
395
406
|
};
|
|
396
407
|
type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
|
|
397
|
-
[K in keyof TIndexedDelays]?: DelayConfig<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingDelays, K>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject> | undefined
|
|
408
|
+
[K in keyof TIndexedDelays]?: DelayConfig<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingDelays, K>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject> | undefined, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>>;
|
|
398
409
|
};
|
|
399
410
|
type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>> = {
|
|
400
411
|
[K in keyof TIndexedGuards]?: Guard<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingGuards, K>, Cast<TIndexedGuards[K], ParameterizedObject>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>>;
|
|
@@ -482,34 +493,34 @@ export interface DoneStateEvent<TOutput = unknown> extends EventObject {
|
|
|
482
493
|
type: `xstate.done.state.${string}`;
|
|
483
494
|
output: TOutput;
|
|
484
495
|
}
|
|
485
|
-
export type DelayExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => number;
|
|
486
|
-
export type LogExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => unknown;
|
|
487
|
-
export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => TSentEvent;
|
|
496
|
+
export type DelayExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => number;
|
|
497
|
+
export type LogExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => unknown;
|
|
498
|
+
export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => TSentEvent;
|
|
488
499
|
export declare enum SpecialTargets {
|
|
489
500
|
Parent = "#_parent",
|
|
490
501
|
Internal = "#_internal"
|
|
491
502
|
}
|
|
492
|
-
export interface SendToActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay> {
|
|
503
|
+
export interface SendToActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay> {
|
|
493
504
|
}
|
|
494
|
-
export interface RaiseActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TDelay extends string> {
|
|
505
|
+
export interface RaiseActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> {
|
|
495
506
|
id?: string;
|
|
496
|
-
delay?: Delay<TDelay> | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
|
|
507
|
+
delay?: Delay<TDelay> | DelayExpr<TContext, TExpressionEvent, TExpressionAction, TEvent>;
|
|
497
508
|
}
|
|
498
|
-
export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay> {
|
|
499
|
-
event: TEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TEvent>;
|
|
509
|
+
export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay> {
|
|
510
|
+
event: TEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TEvent, TEvent>;
|
|
500
511
|
}
|
|
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> {
|
|
502
|
-
event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent>;
|
|
512
|
+
export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject, TEvent extends EventObject, TDelay extends string> extends SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay> {
|
|
513
|
+
event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent, TEvent>;
|
|
503
514
|
}
|
|
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];
|
|
515
|
+
export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TActor extends ProvidedActor> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction, TEvent, TActor>) => Partial<TContext>;
|
|
516
|
+
export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TActor extends ProvidedActor, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction, TEvent, TActor>) => TContext[TKey];
|
|
517
|
+
export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TActor extends ProvidedActor> = {
|
|
518
|
+
[K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TExpressionAction, TEvent, TActor, K> | TContext[K];
|
|
508
519
|
};
|
|
509
520
|
export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TResult> = (args: {
|
|
510
521
|
context: TContext;
|
|
511
522
|
event: TEvent;
|
|
512
|
-
self: ActorRef<TEvent>;
|
|
523
|
+
self: ActorRef<TEvent, any>;
|
|
513
524
|
}) => TResult;
|
|
514
525
|
export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
|
|
515
526
|
[K in keyof TParams]?: Mapper<TContext, TEvent, TParams[K]> | TParams[K];
|
|
@@ -539,7 +550,7 @@ export type TransitionDefinitionMap<TContext extends MachineContext, TEvent exte
|
|
|
539
550
|
[K in EventDescriptor<TEvent>]: Array<TransitionDefinition<TContext, ExtractEvent<TEvent, K>>>;
|
|
540
551
|
};
|
|
541
552
|
export interface DelayedTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
|
|
542
|
-
delay: number | string | DelayExpr<TContext, TEvent, undefined>;
|
|
553
|
+
delay: number | string | DelayExpr<TContext, TEvent, undefined, TEvent>;
|
|
543
554
|
}
|
|
544
555
|
export interface StateLike<TContext extends MachineContext> {
|
|
545
556
|
value: StateValue;
|
|
@@ -552,8 +563,8 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
|
|
|
552
563
|
historyValue?: HistoryValue<TContext, TEvent>;
|
|
553
564
|
meta?: any;
|
|
554
565
|
configuration?: Array<StateNode<TContext, TEvent>>;
|
|
555
|
-
children: Record<string, ActorRef<any>>;
|
|
556
|
-
done
|
|
566
|
+
children: Record<string, ActorRef<any, any>>;
|
|
567
|
+
status: 'active' | 'done' | 'error' | 'stopped';
|
|
557
568
|
output?: any;
|
|
558
569
|
error?: unknown;
|
|
559
570
|
tags?: Set<string>;
|
|
@@ -567,15 +578,7 @@ export interface ActorOptions<TLogic extends AnyActorLogic> {
|
|
|
567
578
|
execute?: boolean;
|
|
568
579
|
clock?: Clock;
|
|
569
580
|
logger?: (...args: any[]) => void;
|
|
570
|
-
parent?: ActorRef<any>;
|
|
571
|
-
/**
|
|
572
|
-
* If `true`, defers processing of sent events until the service
|
|
573
|
-
* is initialized (`.start()`). Otherwise, an error will be thrown
|
|
574
|
-
* for events sent to an uninitialized service.
|
|
575
|
-
*
|
|
576
|
-
* Default: `true`
|
|
577
|
-
*/
|
|
578
|
-
deferEvents?: boolean;
|
|
581
|
+
parent?: ActorRef<any, any>;
|
|
579
582
|
/**
|
|
580
583
|
* The custom `id` for referencing this service.
|
|
581
584
|
*/
|
|
@@ -601,14 +604,14 @@ export interface ActorOptions<TLogic extends AnyActorLogic> {
|
|
|
601
604
|
*/
|
|
602
605
|
src?: string;
|
|
603
606
|
}
|
|
604
|
-
export type AnyActor = Actor<any
|
|
607
|
+
export type AnyActor = Actor<any>;
|
|
605
608
|
/**
|
|
606
609
|
* @deprecated Use `AnyActor` instead.
|
|
607
610
|
*/
|
|
608
611
|
export type AnyInterpreter = AnyActor;
|
|
609
612
|
export type Observer<T> = {
|
|
610
613
|
next?: (value: T) => void;
|
|
611
|
-
error?: (err:
|
|
614
|
+
error?: (err: unknown) => void;
|
|
612
615
|
complete?: () => void;
|
|
613
616
|
};
|
|
614
617
|
export interface Subscription {
|
|
@@ -631,7 +634,7 @@ export interface BaseActorRef<TEvent extends EventObject> {
|
|
|
631
634
|
export interface ActorLike<TCurrent, TEvent extends EventObject> extends Subscribable<TCurrent> {
|
|
632
635
|
send: (event: TEvent) => void;
|
|
633
636
|
}
|
|
634
|
-
export interface ActorRef<TEvent extends EventObject, TSnapshot
|
|
637
|
+
export interface ActorRef<TEvent extends EventObject, TSnapshot extends Snapshot<unknown>> extends Subscribable<TSnapshot>, InteropObservable<TSnapshot> {
|
|
635
638
|
/**
|
|
636
639
|
* The unique identifier for this actor relative to its parent.
|
|
637
640
|
*/
|
|
@@ -650,12 +653,12 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
|
|
|
650
653
|
}
|
|
651
654
|
export type AnyActorRef = ActorRef<any, any>;
|
|
652
655
|
export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
|
|
653
|
-
export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer _TInput, infer TOutput, infer TResolvedTypesMeta> ? ActorRef<TEvent,
|
|
656
|
+
export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer _TInput, infer TOutput, infer TResolvedTypesMeta> ? ActorRef<TEvent, MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TSnapshot, infer TEvent, infer _TInput, infer _TPersisted, infer _TSystem> ? ActorRef<TEvent, TSnapshot> : never : never;
|
|
654
657
|
export type DevToolsAdapter = (service: AnyActor) => void;
|
|
655
658
|
/**
|
|
656
659
|
* @deprecated Use `Actor<T>` instead.
|
|
657
660
|
*/
|
|
658
|
-
export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer TInput, infer TOutput, infer TResolvedTypesMeta> ? Actor<ActorLogic<
|
|
661
|
+
export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer TInput, infer TOutput, infer TResolvedTypesMeta> ? Actor<ActorLogic<MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, TEvent, TInput, PersistedMachineState<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, ActorSystem<any>>> : never;
|
|
659
662
|
export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer TAction, infer _TGuard, infer TDelay, infer _TTag, infer _TInput, infer _TOutput, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TActor, TAction, TDelay, TResolvedTypesMeta, TRequireMissingImplementations> : never;
|
|
660
663
|
export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, // context
|
|
661
664
|
any, // event
|
|
@@ -667,7 +670,7 @@ any, // tag
|
|
|
667
670
|
any, // input
|
|
668
671
|
any, // output
|
|
669
672
|
infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
|
670
|
-
export interface ActorContext<TEvent extends EventObject,
|
|
673
|
+
export interface ActorContext<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TSystem extends ActorSystem<any> = ActorSystem<any>> {
|
|
671
674
|
self: ActorRef<TEvent, TSnapshot>;
|
|
672
675
|
id: string;
|
|
673
676
|
sessionId: string;
|
|
@@ -677,38 +680,57 @@ export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem ext
|
|
|
677
680
|
stopChild: (child: AnyActorRef) => void;
|
|
678
681
|
}
|
|
679
682
|
export type AnyActorContext = ActorContext<any, any, any>;
|
|
680
|
-
export
|
|
683
|
+
export type ActorStatusObject<TOutput> = {
|
|
684
|
+
status: 'done';
|
|
685
|
+
output: TOutput;
|
|
686
|
+
} | {
|
|
687
|
+
status: 'error';
|
|
688
|
+
error: unknown;
|
|
689
|
+
} | {
|
|
690
|
+
status: 'stopped';
|
|
691
|
+
} | {
|
|
692
|
+
status: 'active';
|
|
693
|
+
};
|
|
694
|
+
export type Snapshot<TOutput> = {
|
|
695
|
+
status: 'active';
|
|
696
|
+
output: undefined;
|
|
697
|
+
error: undefined;
|
|
698
|
+
} | {
|
|
699
|
+
status: 'done';
|
|
700
|
+
output: TOutput;
|
|
701
|
+
error: undefined;
|
|
702
|
+
} | {
|
|
703
|
+
status: 'error';
|
|
704
|
+
output: undefined;
|
|
705
|
+
error: unknown;
|
|
706
|
+
} | {
|
|
707
|
+
status: 'stopped';
|
|
708
|
+
output: undefined;
|
|
709
|
+
error: undefined;
|
|
710
|
+
};
|
|
711
|
+
export interface ActorLogic<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TInput = unknown,
|
|
681
712
|
/**
|
|
682
713
|
* Serialized internal state used for persistence & restoration
|
|
683
714
|
*/
|
|
684
|
-
TPersisted =
|
|
715
|
+
TPersisted = TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
|
|
685
716
|
config?: unknown;
|
|
686
|
-
transition: (state:
|
|
687
|
-
getInitialState: (actorCtx: ActorContext<
|
|
688
|
-
restoreState?: (persistedState: TPersisted, actorCtx: ActorContext<
|
|
689
|
-
|
|
690
|
-
getStatus?: (state: TInternalState) => {
|
|
691
|
-
status: string;
|
|
692
|
-
data?: any;
|
|
693
|
-
};
|
|
694
|
-
start?: (state: TInternalState, actorCtx: ActorContext<TEvent, TSnapshot>) => void;
|
|
717
|
+
transition: (state: TSnapshot, message: TEvent, ctx: ActorContext<TSnapshot, TEvent, TSystem>) => TSnapshot;
|
|
718
|
+
getInitialState: (actorCtx: ActorContext<TSnapshot, TEvent, TSystem>, input: TInput) => TSnapshot;
|
|
719
|
+
restoreState?: (persistedState: TPersisted, actorCtx: ActorContext<TSnapshot, TEvent>) => TSnapshot;
|
|
720
|
+
start?: (state: TSnapshot, actorCtx: ActorContext<TSnapshot, TEvent>) => void;
|
|
695
721
|
/**
|
|
696
722
|
* @returns Persisted state
|
|
697
723
|
*/
|
|
698
|
-
getPersistedState?: (state:
|
|
699
|
-
_out_TOutput?: TOutput;
|
|
724
|
+
getPersistedState?: (state: TSnapshot) => TPersisted;
|
|
700
725
|
}
|
|
701
|
-
export type AnyActorLogic = ActorLogic<any, //
|
|
702
|
-
any, //
|
|
703
|
-
any, // internal state
|
|
704
|
-
any, // persisted state
|
|
705
|
-
any, // system
|
|
726
|
+
export type AnyActorLogic = ActorLogic<any, // snapshot
|
|
727
|
+
any, // event
|
|
706
728
|
any, // input
|
|
729
|
+
any, // persisted state
|
|
707
730
|
any>;
|
|
708
|
-
export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? StateFrom<R> : R extends ActorLogic<
|
|
709
|
-
export type EventFromLogic<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer
|
|
710
|
-
export type PersistedStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer
|
|
711
|
-
export type InternalStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer TInternalState, infer _TPersisted> ? TInternalState : never;
|
|
731
|
+
export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? StateFrom<R> : R extends ActorLogic<any, any, any, any, any> ? ReturnType<R['transition']> : R extends ActorContext<infer TSnapshot, infer _, infer __> ? TSnapshot : never : never;
|
|
732
|
+
export type EventFromLogic<TLogic extends ActorLogic<any, any, any, any, any>> = TLogic extends ActorLogic<infer _, infer TEvent, infer __, infer _____, infer ______> ? TEvent : never;
|
|
733
|
+
export type PersistedStateFrom<TLogic extends ActorLogic<any, any, any, any, any>> = TLogic extends ActorLogic<infer _TSnapshot, infer _TEvent, infer _TInput, infer TPersisted, infer _TSystem> ? TPersisted : never;
|
|
712
734
|
type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends State<infer _TContext, infer TEvent, infer _TActor, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
|
|
713
735
|
export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
|
714
736
|
export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : R extends State<infer TContext, infer _TEvent, infer _TActor, infer _TOutput, infer _TResolvedTypesMeta> ? TContext : R extends Actor<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : never : never : never;
|
|
@@ -733,9 +755,9 @@ export interface ActorSystem<T extends ActorSystemInfo> {
|
|
|
733
755
|
get: <K extends keyof T['actors']>(key: K) => T['actors'][K] | undefined;
|
|
734
756
|
}
|
|
735
757
|
export type AnyActorSystem = ActorSystem<any>;
|
|
736
|
-
export type PersistedMachineState<
|
|
758
|
+
export type PersistedMachineState<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TTag extends string, TOutput, TResolvedTypesMeta = TypegenDisabled> = HomomorphicPick<MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, 'value' | 'output' | 'error' | 'context' | 'status' | 'historyValue'> & {
|
|
737
759
|
children: {
|
|
738
|
-
[K in keyof
|
|
760
|
+
[K in keyof MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>['children']]: {
|
|
739
761
|
state: any;
|
|
740
762
|
src?: string;
|
|
741
763
|
};
|