xstate 5.0.0-beta.37 → 5.0.0-beta.39
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 +4 -3
- package/actions/dist/xstate-actions.cjs.mjs +1 -0
- package/actions/dist/xstate-actions.development.cjs.js +4 -3
- package/actions/dist/xstate-actions.development.cjs.mjs +1 -0
- 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 +60 -3
- package/actors/dist/xstate-actors.development.cjs.js +60 -3
- package/actors/dist/xstate-actors.development.esm.js +60 -3
- package/actors/dist/xstate-actors.esm.js +60 -3
- 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 +2 -2
- package/dist/declarations/src/StateMachine.d.ts +7 -7
- 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 +4 -4
- package/dist/declarations/src/actions/raise.d.ts +3 -3
- package/dist/declarations/src/actions/send.d.ts +7 -7
- package/dist/declarations/src/actions/spawn.d.ts +34 -0
- package/dist/declarations/src/actions/stop.d.ts +4 -4
- package/dist/declarations/src/actions.d.ts +1 -0
- package/dist/declarations/src/actors/callback.d.ts +76 -2
- package/dist/declarations/src/actors/observable.d.ts +2 -3
- package/dist/declarations/src/actors/promise.d.ts +0 -1
- package/dist/declarations/src/actors/transition.d.ts +3 -3
- package/dist/declarations/src/guards.d.ts +9 -10
- package/dist/declarations/src/interpreter.d.ts +71 -10
- package/dist/declarations/src/spawn.d.ts +3 -4
- package/dist/declarations/src/stateUtils.d.ts +4 -9
- package/dist/declarations/src/types.d.ts +51 -62
- package/dist/{interpreter-e58ca48d.development.cjs.js → interpreter-03a5c3f5.development.cjs.js} +91 -12
- package/dist/{interpreter-8def682e.esm.js → interpreter-1e8c1c0c.esm.js} +91 -12
- package/dist/{interpreter-97aff8d2.cjs.js → interpreter-5dfcd203.cjs.js} +91 -12
- package/dist/{interpreter-1c52b23c.development.esm.js → interpreter-70cd9217.development.esm.js} +91 -12
- package/dist/{raise-1fd59c65.development.cjs.js → raise-17cb3d9d.development.cjs.js} +145 -152
- package/dist/{raise-800296d7.cjs.js → raise-291d2181.cjs.js} +145 -152
- package/dist/{raise-21c417c1.esm.js → raise-62de3670.esm.js} +145 -153
- package/dist/{raise-e342a840.development.esm.js → raise-e044f460.development.esm.js} +145 -153
- package/dist/{send-92854675.esm.js → send-1249d4ac.esm.js} +45 -44
- package/dist/{send-b309ef4e.development.cjs.js → send-33433787.development.cjs.js} +45 -44
- package/dist/{send-4cc29786.cjs.js → send-af152aca.cjs.js} +45 -44
- package/dist/{send-83ccc98b.development.esm.js → send-f1a2a827.development.esm.js} +45 -44
- package/dist/xstate.cjs.js +23 -20
- package/dist/xstate.cjs.mjs +1 -0
- package/dist/xstate.development.cjs.js +23 -20
- package/dist/xstate.development.cjs.mjs +1 -0
- package/dist/xstate.development.esm.js +25 -23
- package/dist/xstate.esm.js +25 -23
- 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 +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 { 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,
|
|
3
|
-
(
|
|
2
|
+
export interface SendToAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TDelay extends string> {
|
|
3
|
+
(args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams): 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,
|
|
15
|
+
export declare function sendTo<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TTargetActor extends AnyActorRef, TEvent extends EventObject, TDelay extends string>(to: TTargetActor | string | ((args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => TTargetActor | string), eventOrExpr: EventFrom<TTargetActor> | SendExpr<TContext, TExpressionEvent, TParams, InferEvent<Cast<EventFrom<TTargetActor>, EventObject>>, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TParams, NoInfer<TEvent>, NoInfer<TDelay>>): SendToAction<TContext, TExpressionEvent, TParams, 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,
|
|
23
|
-
type Target<TContext extends MachineContext, TExpressionEvent extends EventObject,
|
|
22
|
+
export declare function sendParent<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TSentEvent extends EventObject = AnyEventObject, TEvent extends EventObject = AnyEventObject, TDelay extends string = string>(event: TSentEvent | SendExpr<TContext, TExpressionEvent, TParams, TSentEvent, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TParams, TEvent, TDelay>): SendToAction<TContext, TExpressionEvent, TParams, TEvent, TDelay>;
|
|
23
|
+
type Target<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = string | ActorRef<any, any> | ((args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => 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,
|
|
30
|
+
export declare function forwardTo<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TDelay extends string>(target: Target<TContext, TExpressionEvent, TParams, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TParams, TEvent, TDelay>): SendToAction<TContext, TExpressionEvent, TParams, 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,
|
|
38
|
+
export declare function escalate<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TErrorData = any, TEvent extends EventObject = AnyEventObject>(errorData: TErrorData | ((args: UnifiedArg<TContext, TExpressionEvent, TEvent>) => TErrorData), options?: SendToActionParams<TContext, TExpressionEvent, TParams, EventObject, TEvent, string>): SendToAction<TContext, TExpressionEvent, TParams, TEvent, string>;
|
|
39
39
|
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ActionArgs, EventObject, MachineContext, ParameterizedObject, AnyActorLogic, ProvidedActor, IsLiteralString, InputFrom, UnifiedArg } from "../types.js";
|
|
2
|
+
type ResolvableActorId<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TId extends string | undefined> = TId | ((args: UnifiedArg<TContext, TExpressionEvent, TEvent>) => TId);
|
|
3
|
+
export interface SpawnAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor> {
|
|
4
|
+
(args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams): void;
|
|
5
|
+
_out_TActor?: TActor;
|
|
6
|
+
}
|
|
7
|
+
type DistributeActors<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor> = TActor extends any ? 'id' extends keyof TActor ? [
|
|
8
|
+
src: TActor['src'],
|
|
9
|
+
options: {
|
|
10
|
+
id: ResolvableActorId<TContext, TExpressionEvent, TEvent, TActor['id']>;
|
|
11
|
+
systemId?: string;
|
|
12
|
+
input?: InputFrom<TActor['logic']>;
|
|
13
|
+
syncSnapshot?: boolean;
|
|
14
|
+
}
|
|
15
|
+
] : [
|
|
16
|
+
src: TActor['src'],
|
|
17
|
+
options?: {
|
|
18
|
+
id?: ResolvableActorId<TContext, TExpressionEvent, TEvent, string>;
|
|
19
|
+
systemId?: string;
|
|
20
|
+
input?: InputFrom<TActor['logic']>;
|
|
21
|
+
syncSnapshot?: boolean;
|
|
22
|
+
}
|
|
23
|
+
] : never;
|
|
24
|
+
type SpawnArguments<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TExpressionEvent, TEvent, TActor> : [
|
|
25
|
+
src: string | AnyActorLogic,
|
|
26
|
+
options?: {
|
|
27
|
+
id?: ResolvableActorId<TContext, TExpressionEvent, TEvent, string>;
|
|
28
|
+
systemId?: string;
|
|
29
|
+
input?: unknown;
|
|
30
|
+
syncSnapshot?: boolean;
|
|
31
|
+
}
|
|
32
|
+
];
|
|
33
|
+
export declare function spawn<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor>(...[src, { id, systemId, input, syncSnapshot }]: SpawnArguments<TContext, TExpressionEvent, TEvent, TActor>): SpawnAction<TContext, TExpressionEvent, TParams, TEvent, TActor>;
|
|
34
|
+
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,
|
|
3
|
-
export interface StopAction<TContext extends MachineContext, TExpressionEvent extends EventObject,
|
|
4
|
-
(
|
|
2
|
+
type ResolvableActorRef<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = string | ActorRef<any, any> | ((args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => ActorRef<any, any> | string);
|
|
3
|
+
export interface StopAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> {
|
|
4
|
+
(args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams): 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,
|
|
11
|
+
export declare function stop<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject>(actorRef: ResolvableActorRef<TContext, TExpressionEvent, TParams, TEvent>): StopAction<TContext, TExpressionEvent, TParams, TEvent>;
|
|
12
12
|
export {};
|
|
@@ -6,3 +6,4 @@ export { pure, type PureAction } from "./actions/pure.js";
|
|
|
6
6
|
export { raise, type RaiseAction } from "./actions/raise.js";
|
|
7
7
|
export { escalate, forwardTo, sendParent, sendTo, type SendToAction } from "./actions/send.js";
|
|
8
8
|
export { stop, type StopAction } from "./actions/stop.js";
|
|
9
|
+
export { spawn, type SpawnAction } from "./actions/spawn.js";
|
|
@@ -1,20 +1,94 @@
|
|
|
1
|
-
import { ActorLogic, EventObject, AnyActorSystem, AnyEventObject, ActorSystem, ActorRefFrom, Snapshot
|
|
1
|
+
import { ActorLogic, EventObject, AnyActorSystem, AnyEventObject, ActorSystem, ActorRefFrom, Snapshot } from "../types.js";
|
|
2
2
|
type CallbackSnapshot<TInput, TEvent> = Snapshot<undefined> & {
|
|
3
3
|
input: TInput;
|
|
4
4
|
_receivers: Set<(e: TEvent) => void>;
|
|
5
5
|
_dispose: (() => void) | void;
|
|
6
6
|
};
|
|
7
|
-
export type CallbackActorLogic<TEvent extends EventObject, TInput = unknown> = ActorLogic<CallbackSnapshot<TInput, TEvent>, TEvent, TInput,
|
|
7
|
+
export type CallbackActorLogic<TEvent extends EventObject, TInput = unknown> = ActorLogic<CallbackSnapshot<TInput, TEvent>, TEvent, TInput, ActorSystem<any>>;
|
|
8
8
|
export type CallbackActorRef<TEvent extends EventObject, TInput = unknown> = ActorRefFrom<CallbackActorLogic<TEvent, TInput>>;
|
|
9
9
|
export type Receiver<TEvent extends EventObject> = (listener: {
|
|
10
10
|
bivarianceHack(event: TEvent): void;
|
|
11
11
|
}['bivarianceHack']) => void;
|
|
12
12
|
export type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject, TInput = unknown> = ({ input, system, self, sendBack, receive }: {
|
|
13
|
+
/**
|
|
14
|
+
* Data that was provided to the callback actor
|
|
15
|
+
* @see {@link https://stately.ai/docs/input | Input docs}
|
|
16
|
+
*/
|
|
13
17
|
input: TInput;
|
|
18
|
+
/**
|
|
19
|
+
* The actor system to which the callback actor belongs
|
|
20
|
+
*/
|
|
14
21
|
system: AnyActorSystem;
|
|
22
|
+
/**
|
|
23
|
+
* The parent actor of the callback actor
|
|
24
|
+
*/
|
|
15
25
|
self: CallbackActorRef<TEvent>;
|
|
26
|
+
/**
|
|
27
|
+
* A function that can send events back to the parent actor
|
|
28
|
+
*/
|
|
16
29
|
sendBack: (event: TSentEvent) => void;
|
|
30
|
+
/**
|
|
31
|
+
* A function that can be called with a listener function argument;
|
|
32
|
+
* the listener is then called whenever events are received by the callback actor
|
|
33
|
+
*/
|
|
17
34
|
receive: Receiver<TEvent>;
|
|
18
35
|
}) => (() => void) | void;
|
|
36
|
+
/**
|
|
37
|
+
* An actor logic creator which returns callback logic as defined by a callback function.
|
|
38
|
+
*
|
|
39
|
+
* @remarks
|
|
40
|
+
* Useful for subscription-based or other free-form logic that can send events back to the parent actor.
|
|
41
|
+
*
|
|
42
|
+
* Actors created from callback logic (“callback actors”) can:
|
|
43
|
+
* - Receive events via the `receive` function
|
|
44
|
+
* - Send events to the parent actor via the `sendBack` function
|
|
45
|
+
*
|
|
46
|
+
* Callback actors are a bit different from other actors in that they:
|
|
47
|
+
* - Do not work with `onDone` or `onError`
|
|
48
|
+
* - Do not produce a snapshot using `.getSnapshot()`
|
|
49
|
+
* - Do not emit values when used with `.subscribe()`
|
|
50
|
+
* - Can not be stopped with `.stop()`
|
|
51
|
+
*
|
|
52
|
+
* @param invokeCallback - The callback function used to describe the callback logic
|
|
53
|
+
* The callback function is passed an object with the following properties:
|
|
54
|
+
* - `receive` - A function that can send events back to the parent actor; the listener is then called whenever events are received by the callback actor
|
|
55
|
+
* - `sendBack` - A function that can send events back to the parent actor
|
|
56
|
+
* - `input` - Data that was provided to the callback actor
|
|
57
|
+
* - `self` - The parent actor of the callback actor
|
|
58
|
+
* - `system` - The actor system to which the callback actor belongs
|
|
59
|
+
* The callback function can (optionally) return a cleanup function, which is called when the actor is stopped.
|
|
60
|
+
* @see {@link InvokeCallback} for more information about the callback function and its object argument
|
|
61
|
+
* @see {@link https://stately.ai/docs/input | Input docs} for more information about how input is passed
|
|
62
|
+
|
|
63
|
+
* @returns Callback logic
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const callbackLogic = fromCallback(({ sendBack, receive }) => {
|
|
68
|
+
* let lockStatus = 'unlocked';
|
|
69
|
+
*
|
|
70
|
+
* const handler = (event) => {
|
|
71
|
+
* if (lockStatus === 'locked') {
|
|
72
|
+
* return;
|
|
73
|
+
* }
|
|
74
|
+
* sendBack(event);
|
|
75
|
+
* };
|
|
76
|
+
*
|
|
77
|
+
* receive((event) => {
|
|
78
|
+
* if (event.type === 'lock') {
|
|
79
|
+
* lockStatus = 'locked';
|
|
80
|
+
* } else if (event.type === 'unlock') {
|
|
81
|
+
* lockStatus = 'unlocked';
|
|
82
|
+
* }
|
|
83
|
+
* });
|
|
84
|
+
*
|
|
85
|
+
* document.body.addEventListener('click', handler);
|
|
86
|
+
*
|
|
87
|
+
* return () => {
|
|
88
|
+
* document.body.removeEventListener('click', handler);
|
|
89
|
+
* };
|
|
90
|
+
* });
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
19
93
|
export declare function fromCallback<TEvent extends EventObject, TInput = unknown>(invokeCallback: InvokeCallback<TEvent, AnyEventObject, TInput>): CallbackActorLogic<TEvent, TInput>;
|
|
20
94
|
export {};
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { Subscribable, ActorLogic, EventObject, Subscription, AnyActorSystem, ActorRefFrom, Snapshot
|
|
1
|
+
import { Subscribable, ActorLogic, EventObject, Subscription, AnyActorSystem, ActorRefFrom, Snapshot } from "../types.js";
|
|
2
2
|
export type ObservableSnapshot<TContext, TInput> = Snapshot<undefined> & {
|
|
3
3
|
context: TContext | undefined;
|
|
4
4
|
input: TInput | undefined;
|
|
5
5
|
_subscription: Subscription | undefined;
|
|
6
6
|
};
|
|
7
|
-
export type ObservablePersistedState<TContext, TInput> = HomomorphicOmit<ObservableSnapshot<TContext, TInput>, '_subscription'>;
|
|
8
7
|
export type ObservableActorLogic<TContext, TInput> = ActorLogic<ObservableSnapshot<TContext, TInput>, {
|
|
9
8
|
type: string;
|
|
10
9
|
[k: string]: unknown;
|
|
11
|
-
}, TInput,
|
|
10
|
+
}, TInput, AnyActorSystem>;
|
|
12
11
|
export type ObservableActorRef<TContext> = ActorRefFrom<ObservableActorLogic<TContext, any>>;
|
|
13
12
|
export declare function fromObservable<TContext, TInput>(observableCreator: ({ input, system }: {
|
|
14
13
|
input: TInput;
|
|
@@ -18,7 +18,6 @@ export type PromiseActorLogic<TOutput, TInput = unknown> = ActorLogic<PromiseSna
|
|
|
18
18
|
type: string;
|
|
19
19
|
[k: string]: unknown;
|
|
20
20
|
}, TInput, // input
|
|
21
|
-
PromiseSnapshot<TOutput, TInput>, // persisted state
|
|
22
21
|
ActorSystem<any>>;
|
|
23
22
|
export type PromiseActorRef<TOutput> = ActorRefFrom<PromiseActorLogic<TOutput, unknown>>;
|
|
24
23
|
export declare function fromPromise<TOutput, TInput = unknown>(promiseCreator: ({ input, system }: {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ActorLogic,
|
|
1
|
+
import { ActorLogic, ActorScope, ActorSystem, EventObject, ActorRefFrom, AnyActorSystem, Snapshot } from "../types.js";
|
|
2
2
|
export type TransitionSnapshot<TContext> = Snapshot<undefined> & {
|
|
3
3
|
context: TContext;
|
|
4
4
|
};
|
|
5
|
-
export type TransitionActorLogic<TContext, TEvent extends EventObject, TInput> = ActorLogic<TransitionSnapshot<TContext>, TEvent, TInput,
|
|
5
|
+
export type TransitionActorLogic<TContext, TEvent extends EventObject, TInput> = ActorLogic<TransitionSnapshot<TContext>, TEvent, TInput, AnyActorSystem>;
|
|
6
6
|
export type TransitionActorRef<TContext, TEvent extends EventObject> = ActorRefFrom<TransitionActorLogic<TransitionSnapshot<TContext>, TEvent, unknown>>;
|
|
7
7
|
/**
|
|
8
8
|
* Returns actor logic from a transition function and its initial state.
|
|
@@ -13,7 +13,7 @@ export type TransitionActorRef<TContext, TEvent extends EventObject> = ActorRefF
|
|
|
13
13
|
* @param initialContext The initial state of the transition function.
|
|
14
14
|
* @returns Actor logic
|
|
15
15
|
*/
|
|
16
|
-
export declare function fromTransition<TContext, TEvent extends EventObject, TSystem extends ActorSystem<any>, TInput>(transition: (state: TContext, event: TEvent,
|
|
16
|
+
export declare function fromTransition<TContext, TEvent extends EventObject, TSystem extends ActorSystem<any>, TInput>(transition: (state: TContext, event: TEvent, actorScope: ActorScope<TransitionSnapshot<TContext>, TEvent, TSystem>) => TContext, initialContext: TContext | (({ input, self }: {
|
|
17
17
|
input: TInput;
|
|
18
18
|
self: TransitionActorRef<TContext, TEvent>;
|
|
19
19
|
}) => TContext)): TransitionActorLogic<TContext, TEvent, TInput>;
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import type { EventObject, StateValue, MachineContext, ParameterizedObject, AnyState, NoRequiredParams, NoInfer, WithDynamicParams } from "./types.js";
|
|
2
|
-
export type GuardPredicate<TContext extends MachineContext, TExpressionEvent extends EventObject,
|
|
3
|
-
(args: GuardArgs<TContext, TExpressionEvent
|
|
2
|
+
export type GuardPredicate<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TGuard extends ParameterizedObject> = {
|
|
3
|
+
(args: GuardArgs<TContext, TExpressionEvent>, params: TParams): boolean;
|
|
4
4
|
_out_TGuard?: TGuard;
|
|
5
5
|
};
|
|
6
|
-
export interface GuardArgs<TContext extends MachineContext, TExpressionEvent extends EventObject
|
|
6
|
+
export interface GuardArgs<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
7
7
|
context: TContext;
|
|
8
8
|
event: TExpressionEvent;
|
|
9
|
-
guard: TExpressionGuard;
|
|
10
9
|
}
|
|
11
|
-
export type Guard<TContext extends MachineContext, TExpressionEvent extends EventObject,
|
|
10
|
+
export type Guard<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TGuard extends ParameterizedObject> = NoRequiredParams<TGuard> | WithDynamicParams<TContext, TExpressionEvent, TGuard> | GuardPredicate<TContext, TExpressionEvent, TParams, TGuard>;
|
|
12
11
|
export type UnknownGuard = UnknownReferencedGuard | UnknownInlineGuard;
|
|
13
|
-
type UnknownReferencedGuard = Guard<MachineContext, EventObject, ParameterizedObject, ParameterizedObject>;
|
|
12
|
+
type UnknownReferencedGuard = Guard<MachineContext, EventObject, ParameterizedObject['params'], ParameterizedObject>;
|
|
14
13
|
type UnknownInlineGuard = Guard<MachineContext, EventObject, undefined, ParameterizedObject>;
|
|
15
|
-
export declare function stateIn<TContext extends MachineContext, TExpressionEvent extends EventObject,
|
|
16
|
-
export declare function not<TContext extends MachineContext, TExpressionEvent extends EventObject,
|
|
17
|
-
export declare function and<TContext extends MachineContext, TExpressionEvent extends EventObject,
|
|
18
|
-
export declare function or<TContext extends MachineContext, TExpressionEvent extends EventObject,
|
|
14
|
+
export declare function stateIn<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined>(stateValue: StateValue): GuardPredicate<TContext, TExpressionEvent, TParams, any>;
|
|
15
|
+
export declare function not<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TGuard extends ParameterizedObject>(guard: Guard<TContext, TExpressionEvent, TParams, NoInfer<TGuard>>): GuardPredicate<TContext, TExpressionEvent, TParams, TGuard>;
|
|
16
|
+
export declare function and<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TGuard extends ParameterizedObject>(guards: ReadonlyArray<Guard<TContext, TExpressionEvent, TParams, NoInfer<TGuard>>>): GuardPredicate<TContext, TExpressionEvent, TParams, TGuard>;
|
|
17
|
+
export declare function or<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TGuard extends ParameterizedObject>(guards: ReadonlyArray<Guard<TContext, TExpressionEvent, TParams, NoInfer<TGuard>>>): GuardPredicate<TContext, TExpressionEvent, TParams, TGuard>;
|
|
19
18
|
export declare function evaluateGuard<TContext extends MachineContext, TExpressionEvent extends EventObject>(guard: UnknownGuard | UnknownInlineGuard, context: TContext, event: TExpressionEvent, state: AnyState): boolean;
|
|
20
19
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { symbolObservable } from "./symbolObservable.js";
|
|
2
2
|
import { AreAllImplementationsAssumedToBeProvided, MissingImplementationsError } from "./typegenTypes.js";
|
|
3
|
-
import type { ActorSystem, AnyActorLogic, AnyStateMachine, EventFromLogic,
|
|
3
|
+
import type { ActorSystem, AnyActorLogic, AnyStateMachine, EventFromLogic, SnapshotFrom, Snapshot } from "./types.js";
|
|
4
4
|
import { ActorRef, EventObject, InteropSubscribable, ActorOptions, Observer, Subscription } from "./types.js";
|
|
5
5
|
export declare const $$ACTOR_TYPE = 1;
|
|
6
6
|
export type SnapshotListener<TLogic extends AnyActorLogic> = (state: SnapshotFrom<TLogic>) => void;
|
|
@@ -20,6 +20,9 @@ export declare enum ActorStatus {
|
|
|
20
20
|
* @deprecated Use `ActorStatus` instead.
|
|
21
21
|
*/
|
|
22
22
|
export declare const InterpreterStatus: typeof ActorStatus;
|
|
23
|
+
/**
|
|
24
|
+
* An Actor is a running process that can receive events, send events and change its behavior based on the events it receives, which can cause effects outside of the actor. When you run a state machine, it becomes an actor.
|
|
25
|
+
*/
|
|
23
26
|
export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<EventFromLogic<TLogic>, SnapshotFrom<TLogic>> {
|
|
24
27
|
logic: TLogic;
|
|
25
28
|
/**
|
|
@@ -45,12 +48,15 @@ export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<Eve
|
|
|
45
48
|
status: ActorStatus;
|
|
46
49
|
_parent?: ActorRef<any, any>;
|
|
47
50
|
ref: ActorRef<EventFromLogic<TLogic>, SnapshotFrom<TLogic>>;
|
|
48
|
-
private
|
|
51
|
+
private _actorScope;
|
|
49
52
|
private _systemId;
|
|
50
53
|
/**
|
|
51
54
|
* The globally unique process ID for this invocation.
|
|
52
55
|
*/
|
|
53
56
|
sessionId: string;
|
|
57
|
+
/**
|
|
58
|
+
* The system to which this actor belongs.
|
|
59
|
+
*/
|
|
54
60
|
system: ActorSystem<any>;
|
|
55
61
|
private _doneEvent?;
|
|
56
62
|
src?: string;
|
|
@@ -64,6 +70,54 @@ export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<Eve
|
|
|
64
70
|
private _initState;
|
|
65
71
|
private _deferred;
|
|
66
72
|
private update;
|
|
73
|
+
/**
|
|
74
|
+
* Subscribe an observer to an actor’s snapshot values.
|
|
75
|
+
*
|
|
76
|
+
* @remarks
|
|
77
|
+
* The observer will receive the actor’s snapshot value when it is emitted. The observer can be:
|
|
78
|
+
* - A plain function that receives the latest snapshot, or
|
|
79
|
+
* - An observer object whose `.next(snapshot)` method receives the latest snapshot
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* // Observer as a plain function
|
|
84
|
+
* const subscription = actor.subscribe((snapshot) => {
|
|
85
|
+
* console.log(snapshot);
|
|
86
|
+
* });
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```ts
|
|
91
|
+
* // Observer as an object
|
|
92
|
+
* const subscription = actor.subscribe({
|
|
93
|
+
* next(snapshot) {
|
|
94
|
+
* console.log(snapshot);
|
|
95
|
+
* },
|
|
96
|
+
* error(err) {
|
|
97
|
+
* // ...
|
|
98
|
+
* },
|
|
99
|
+
* complete() {
|
|
100
|
+
* // ...
|
|
101
|
+
* },
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* The return value of `actor.subscribe(observer)` is a subscription object that has an `.unsubscribe()` method. You can call `subscription.unsubscribe()` to unsubscribe the observer:
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```ts
|
|
109
|
+
* const subscription = actor.subscribe((snapshot) => {
|
|
110
|
+
* // ...
|
|
111
|
+
* });
|
|
112
|
+
*
|
|
113
|
+
* // Unsubscribe the observer
|
|
114
|
+
* subscription.unsubscribe();
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* When the actor is stopped, all of its observers will automatically be unsubscribed.
|
|
118
|
+
*
|
|
119
|
+
* @param observer - Either a plain function that receives the latest snapshot, or an observer object whose `.next(snapshot)` method receives the latest snapshot
|
|
120
|
+
*/
|
|
67
121
|
subscribe(observer: Observer<SnapshotFrom<TLogic>>): Subscription;
|
|
68
122
|
subscribe(nextListener?: (state: SnapshotFrom<TLogic>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
|
|
69
123
|
/**
|
|
@@ -85,20 +139,27 @@ export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<Eve
|
|
|
85
139
|
* @param event The event to send
|
|
86
140
|
*/
|
|
87
141
|
send(event: EventFromLogic<TLogic>): void;
|
|
88
|
-
delaySend(params: {
|
|
89
|
-
event: EventObject;
|
|
90
|
-
id: string | undefined;
|
|
91
|
-
delay: number;
|
|
92
|
-
to?: AnyActorRef;
|
|
93
|
-
}): void;
|
|
94
|
-
cancel(sendId: string | number): void;
|
|
95
142
|
private attachDevTools;
|
|
96
143
|
toJSON(): {
|
|
97
144
|
xstate$$type: number;
|
|
98
145
|
id: string;
|
|
99
146
|
};
|
|
100
|
-
getPersistedState():
|
|
147
|
+
getPersistedState(): Snapshot<unknown>;
|
|
101
148
|
[symbolObservable](): InteropSubscribable<SnapshotFrom<TLogic>>;
|
|
149
|
+
/**
|
|
150
|
+
* Read an actor’s snapshot synchronously.
|
|
151
|
+
*
|
|
152
|
+
* @remarks
|
|
153
|
+
* The snapshot represent an actor's last emitted value.
|
|
154
|
+
*
|
|
155
|
+
* When an actor receives an event, its internal state may change.
|
|
156
|
+
* An actor may emit a snapshot when a state transition occurs.
|
|
157
|
+
*
|
|
158
|
+
* Note that some actors, such as callback actors generated with `fromCallback`, will not emit snapshots.
|
|
159
|
+
*
|
|
160
|
+
* @see {@link Actor.subscribe} to subscribe to an actor’s snapshot values.
|
|
161
|
+
* @see {@link Actor.getPersistedState} to persist the internal state of an actor (which is more than just a snapshot).
|
|
162
|
+
*/
|
|
102
163
|
getSnapshot(): SnapshotFrom<TLogic>;
|
|
103
164
|
}
|
|
104
165
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ActorRefFrom,
|
|
2
|
-
type SpawnOptions<TActor extends ProvidedActor, TSrc extends TActor['src']> = TActor extends {
|
|
1
|
+
import { ActorRefFrom, AnyActorScope, AnyActorLogic, AnyActorRef, AnyEventObject, AnyState, InputFrom, IsLiteralString, ProvidedActor } from "./types.js";
|
|
2
|
+
export type SpawnOptions<TActor extends ProvidedActor, TSrc extends TActor['src']> = TActor extends {
|
|
3
3
|
src: TSrc;
|
|
4
4
|
} ? 'id' extends keyof TActor ? [
|
|
5
5
|
options: {
|
|
@@ -24,5 +24,4 @@ export type Spawner<TActor extends ProvidedActor> = IsLiteralString<TActor['src'
|
|
|
24
24
|
input?: unknown;
|
|
25
25
|
syncSnapshot?: boolean;
|
|
26
26
|
}) => TLogic extends string ? AnyActorRef : ActorRefFrom<TLogic>;
|
|
27
|
-
export declare function createSpawner(
|
|
28
|
-
export {};
|
|
27
|
+
export declare function createSpawner(actorScope: AnyActorScope, { machine, context }: AnyState, event: AnyEventObject, spawnedChildren: Record<string, AnyActorRef>): Spawner<any>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { State } from "./State.js";
|
|
2
2
|
import type { StateNode } from "./StateNode.js";
|
|
3
|
-
import {
|
|
3
|
+
import { AnyEventObject, AnyHistoryValue, AnyState, AnyStateNode, AnyTransitionDefinition, DelayedTransitionDefinition, EventObject, InitialTransitionConfig, InitialTransitionDefinition, MachineContext, StateValue, StateValueMap, TransitionDefinition, TODO, UnknownAction, AnyTransitionConfig, AnyActorScope } from "./types.js";
|
|
4
4
|
type Configuration<TContext extends MachineContext, TE extends EventObject> = Iterable<StateNode<TContext, TE>>;
|
|
5
5
|
type AnyConfiguration = Configuration<any, any>;
|
|
6
6
|
type AdjList = Map<AnyStateNode, Array<AnyStateNode>>;
|
|
@@ -44,15 +44,10 @@ export declare function transitionNode<TContext extends MachineContext, TEvent e
|
|
|
44
44
|
export declare function removeConflictingTransitions(enabledTransitions: Array<AnyTransitionDefinition>, configuration: Set<AnyStateNode>, historyValue: AnyHistoryValue): Array<AnyTransitionDefinition>;
|
|
45
45
|
/**
|
|
46
46
|
* https://www.w3.org/TR/scxml/#microstepProcedure
|
|
47
|
-
*
|
|
48
|
-
* @private
|
|
49
|
-
* @param transitions
|
|
50
|
-
* @param currentState
|
|
51
|
-
* @param mutConfiguration
|
|
52
47
|
*/
|
|
53
|
-
export declare function microstep<TContext extends MachineContext, TEvent extends EventObject>(transitions: Array<AnyTransitionDefinition>, currentState: AnyState,
|
|
54
|
-
export declare function resolveActionsAndContext(currentState: AnyState, event: AnyEventObject,
|
|
55
|
-
export declare function macrostep(state: AnyState, event: EventObject,
|
|
48
|
+
export declare function microstep<TContext extends MachineContext, TEvent extends EventObject>(transitions: Array<AnyTransitionDefinition>, currentState: AnyState, actorScope: AnyActorScope, event: AnyEventObject, isInitial: boolean, internalQueue: Array<AnyEventObject>): AnyState;
|
|
49
|
+
export declare function resolveActionsAndContext(currentState: AnyState, event: AnyEventObject, actorScope: AnyActorScope, actions: UnknownAction[], internalQueue: AnyEventObject[], deferredActorIds?: string[]): AnyState;
|
|
50
|
+
export declare function macrostep(state: AnyState, event: EventObject, actorScope: AnyActorScope, internalQueue?: AnyEventObject[]): {
|
|
56
51
|
state: typeof state;
|
|
57
52
|
microstates: Array<typeof state>;
|
|
58
53
|
};
|