xstate 5.0.0-beta.15 → 5.0.0-beta.16
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 -3
- package/actions/dist/xstate-actions.cjs.mjs +0 -2
- package/actions/dist/xstate-actions.development.cjs.js +1 -3
- 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-6884fae8.esm.js → actions-0386b622.esm.js} +707 -742
- package/dist/{actions-d71ac253.development.cjs.js → actions-0f903c0d.development.cjs.js} +836 -874
- package/dist/{actions-81cc7f2b.cjs.js → actions-6b9073db.cjs.js} +706 -744
- package/dist/{actions-98f362b9.development.esm.js → actions-6f7fbc84.development.esm.js} +837 -872
- package/dist/declarations/src/StateMachine.d.ts +2 -4
- package/dist/declarations/src/actionTypes.d.ts +1 -1
- package/dist/declarations/src/actions/assign.d.ts +2 -2
- package/dist/declarations/src/actions/cancel.d.ts +2 -2
- package/dist/declarations/src/actions/send.d.ts +12 -22
- package/dist/declarations/src/actions/stop.d.ts +2 -2
- package/dist/declarations/src/actions.d.ts +1 -4
- package/dist/declarations/src/interpreter.d.ts +2 -2
- package/dist/declarations/src/stateUtils.d.ts +1 -1
- package/dist/declarations/src/types.d.ts +29 -49
- package/dist/xstate.cjs.js +20 -34
- package/dist/xstate.development.cjs.js +20 -34
- package/dist/xstate.development.esm.js +21 -35
- package/dist/xstate.esm.js +21 -35
- 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,7 +1,7 @@
|
|
|
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, ActorLogic, ActorMap, EventObject, InternalMachineImplementations, MachineConfig, MachineContext, MachineImplementationsSimplified, MachineTypes, NoInfer, StateConfig, StateMachineDefinition, StateValue, TransitionDefinition, PersistedMachineState, ParameterizedObject, AnyActorContext } from "./types.js";
|
|
4
|
+
import type { ActorContext, ActorLogic, ActorMap, EventObject, InternalMachineImplementations, MachineConfig, MachineContext, MachineImplementationsSimplified, MachineTypes, NoInfer, StateConfig, StateMachineDefinition, StateValue, TransitionDefinition, PersistedMachineState, ParameterizedObject, AnyActorContext, Equals } from "./types.js";
|
|
5
5
|
export declare const STATE_IDENTIFIER = "#";
|
|
6
6
|
export declare const WILDCARD = "*";
|
|
7
7
|
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,8 +9,6 @@ export declare class StateMachine<TContext extends MachineContext, TEvent extend
|
|
|
9
9
|
* The raw config used to create the machine.
|
|
10
10
|
*/
|
|
11
11
|
config: MachineConfig<TContext, TEvent, any, any, any>;
|
|
12
|
-
getContext(input?: any): TContext;
|
|
13
|
-
private getContextAndActions;
|
|
14
12
|
/**
|
|
15
13
|
* The machine's own version.
|
|
16
14
|
*/
|
|
@@ -46,7 +44,7 @@ export declare class StateMachine<TContext extends MachineContext, TEvent extend
|
|
|
46
44
|
* @param state The state to resolve
|
|
47
45
|
*/
|
|
48
46
|
resolveState(state: State<TContext, TEvent, TResolvedTypesMeta>): typeof state;
|
|
49
|
-
resolveStateValue(stateValue: StateValue): State<TContext, TEvent, TResolvedTypesMeta>;
|
|
47
|
+
resolveStateValue(stateValue: StateValue, ...[context]: Equals<TContext, MachineContext> extends true ? [] : [TContext]): State<TContext, TEvent, TResolvedTypesMeta>;
|
|
50
48
|
/**
|
|
51
49
|
* Determines the next state given the current `state` and received `event`.
|
|
52
50
|
* Calculates a full macrostep from all microsteps.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ActionTypes } from "./types.js";
|
|
2
2
|
export declare const stop = ActionTypes.Stop;
|
|
3
3
|
export declare const raise = ActionTypes.Raise;
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const sendTo = ActionTypes.SendTo;
|
|
5
5
|
export declare const cancel = ActionTypes.Cancel;
|
|
6
6
|
export declare const assign = ActionTypes.Assign;
|
|
7
7
|
export declare const after = ActionTypes.After;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Assigner, DynamicAssignAction, EventObject, LowInfer, MachineContext, PropertyAssigner } from "../types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Updates the current context of the machine.
|
|
4
4
|
*
|
|
5
5
|
* @param assignment An object that represents the partial context to update.
|
|
6
6
|
*/
|
|
7
|
-
export declare function assign<TContext extends MachineContext, TExpressionEvent extends EventObject = EventObject, TEvent extends EventObject = TExpressionEvent>(assignment: Assigner<LowInfer<TContext>, TExpressionEvent
|
|
7
|
+
export declare function assign<TContext extends MachineContext, TExpressionEvent extends EventObject = EventObject, TEvent extends EventObject = TExpressionEvent>(assignment: Assigner<LowInfer<TContext>, TExpressionEvent> | PropertyAssigner<LowInfer<TContext>, TExpressionEvent>): DynamicAssignAction<TContext, TExpressionEvent, TEvent>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventObject,
|
|
1
|
+
import { EventObject, MachineContext, UnifiedArg } from "../types.js";
|
|
2
2
|
import { BaseDynamicActionObject, CancelActionObject, DynamicCancelActionObject } from "../index.js";
|
|
3
3
|
/**
|
|
4
4
|
* Cancels an in-flight `send(...)` action. A canceled sent action will not
|
|
@@ -7,4 +7,4 @@ import { BaseDynamicActionObject, CancelActionObject, DynamicCancelActionObject
|
|
|
7
7
|
*
|
|
8
8
|
* @param sendId The `id` of the `send(...)` action to cancel.
|
|
9
9
|
*/
|
|
10
|
-
export declare function cancel<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject>(sendId: string |
|
|
10
|
+
export declare function cancel<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject>(sendId: string | ((args: UnifiedArg<TContext, TExpressionEvent>) => string)): BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, CancelActionObject, DynamicCancelActionObject<TContext, TExpressionEvent>['params']>;
|
|
@@ -1,32 +1,30 @@
|
|
|
1
|
-
import { EventObject,
|
|
2
|
-
import { AnyActorRef, BaseDynamicActionObject, Cast, EventFrom,
|
|
1
|
+
import { EventObject, SendToActionParams, SendExpr, AnyEventObject, MachineContext } from "../types.js";
|
|
2
|
+
import { ActorRef, AnyActorRef, BaseDynamicActionObject, Cast, EventFrom, InferEvent, SendToActionObject, SendToActionOptions, UnifiedArg } from "../index.js";
|
|
3
3
|
/**
|
|
4
|
-
* Sends an event
|
|
5
|
-
* send the event in the next step, after the current step is finished executing.
|
|
6
|
-
*
|
|
7
|
-
* @deprecated Use the `sendTo(...)` action creator instead.
|
|
4
|
+
* Sends an event to an actor.
|
|
8
5
|
*
|
|
9
|
-
* @param
|
|
10
|
-
* @param
|
|
6
|
+
* @param actor The `ActorRef` to send the event to.
|
|
7
|
+
* @param event The event to send, or an expression that evaluates to the event to send
|
|
8
|
+
* @param options Send action options
|
|
11
9
|
* - `id` - The unique send event identifier (used with `cancel()`).
|
|
12
10
|
* - `delay` - The number of milliseconds to delay the sending of the event.
|
|
13
|
-
* - `to` - The target of this event (by default, the machine the event was sent from).
|
|
14
11
|
*/
|
|
15
|
-
export declare function
|
|
12
|
+
export declare function sendTo<TContext extends MachineContext, TEvent extends EventObject, TActor extends AnyActorRef>(actor: TActor | string | ((args: UnifiedArg<TContext, TEvent>) => TActor | string), eventOrExpr: EventFrom<TActor> | SendExpr<TContext, TEvent, InferEvent<Cast<EventFrom<TActor>, EventObject>>>, options?: SendToActionOptions<TContext, TEvent>): BaseDynamicActionObject<TContext, TEvent, TEvent, SendToActionObject<AnyEventObject>, SendToActionParams<TContext, TEvent>>;
|
|
16
13
|
/**
|
|
17
14
|
* Sends an event to this machine's parent.
|
|
18
15
|
*
|
|
19
16
|
* @param event The event to send to the parent machine.
|
|
20
17
|
* @param options Options to pass into the send event.
|
|
21
18
|
*/
|
|
22
|
-
export declare function sendParent<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject>(event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>, options?:
|
|
19
|
+
export declare function sendParent<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject>(event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>, options?: SendToActionOptions<TContext, TEvent>): BaseDynamicActionObject<TContext, TEvent, TEvent, SendToActionObject<AnyEventObject>, SendToActionParams<TContext, TEvent, EventObject>>;
|
|
20
|
+
type Target<TContext extends MachineContext, TEvent extends EventObject> = string | ActorRef<any, any> | ((args: UnifiedArg<TContext, TEvent>) => string | ActorRef<any, any>);
|
|
23
21
|
/**
|
|
24
22
|
* Forwards (sends) an event to a specified service.
|
|
25
23
|
*
|
|
26
24
|
* @param target The target service to forward the event to.
|
|
27
25
|
* @param options Options to pass into the send action creator.
|
|
28
26
|
*/
|
|
29
|
-
export declare function forwardTo<TContext extends MachineContext, TEvent extends EventObject>(target:
|
|
27
|
+
export declare function forwardTo<TContext extends MachineContext, TEvent extends EventObject>(target: Target<TContext, TEvent>, options?: SendToActionOptions<TContext, TEvent>): BaseDynamicActionObject<TContext, TEvent, TEvent, SendToActionObject<AnyEventObject>, SendToActionParams<TContext, TEvent, EventObject>>;
|
|
30
28
|
/**
|
|
31
29
|
* Escalates an error by sending it as an event to this machine's parent.
|
|
32
30
|
*
|
|
@@ -34,13 +32,5 @@ export declare function forwardTo<TContext extends MachineContext, TEvent extend
|
|
|
34
32
|
* takes in the `context`, `event`, and `meta`, and returns the error data to send.
|
|
35
33
|
* @param options Options to pass into the send action creator.
|
|
36
34
|
*/
|
|
37
|
-
export declare function escalate<TContext extends MachineContext, TEvent extends EventObject, TErrorData = any>(errorData: TErrorData |
|
|
38
|
-
|
|
39
|
-
* Sends an event to an actor.
|
|
40
|
-
*
|
|
41
|
-
* @param actor The `ActorRef` to send the event to.
|
|
42
|
-
* @param event The event to send, or an expression that evaluates to the event to send
|
|
43
|
-
* @param options Send action options
|
|
44
|
-
* @returns An XState send action object
|
|
45
|
-
*/
|
|
46
|
-
export declare function sendTo<TContext extends MachineContext, TEvent extends EventObject, TActor extends AnyActorRef>(actor: TActor | string | ExprWithMeta<TContext, TEvent, TActor | string>, event: EventFrom<TActor> | SendExpr<TContext, TEvent, InferEvent<Cast<EventFrom<TActor>, EventObject>>>, options?: SendActionOptions<TContext, TEvent>): BaseDynamicActionObject<TContext, TEvent, TEvent, SendActionObject<AnyEventObject>, SendActionParams<TContext, TEvent, EventObject>>;
|
|
35
|
+
export declare function escalate<TContext extends MachineContext, TEvent extends EventObject, TErrorData = any>(errorData: TErrorData | ((args: UnifiedArg<TContext, TEvent>) => TErrorData), options?: SendToActionParams<TContext, TEvent>): BaseDynamicActionObject<TContext, TEvent, TEvent, SendToActionObject<AnyEventObject>, SendToActionParams<TContext, TEvent, EventObject>>;
|
|
36
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ActorRef, BaseDynamicActionObject, DynamicStopActionObject, EventObject,
|
|
1
|
+
import { ActorRef, BaseDynamicActionObject, DynamicStopActionObject, EventObject, MachineContext, StopActionObject, UnifiedArg } from "../types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Stops an actor.
|
|
4
4
|
*
|
|
5
5
|
* @param actorRef The actor to stop.
|
|
6
6
|
*/
|
|
7
|
-
export declare function stop<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject>(actorRef: string | ActorRef<any> |
|
|
7
|
+
export declare function stop<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject>(actorRef: string | ActorRef<any> | ((args: UnifiedArg<TContext, TExpressionEvent>) => ActorRef<any> | string)): BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, StopActionObject, DynamicStopActionObject<TContext, TExpressionEvent>['params']>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Action, EventObject, SingleOrArray, ActionFunction, ActionFunctionMap, ActionTypes, DoneEvent, ErrorPlatformEvent, DoneEventObject, MachineContext, BaseActionObject } from "./types.js";
|
|
2
2
|
import * as actionTypes from "./actionTypes.js";
|
|
3
|
-
export {
|
|
3
|
+
export { sendTo, sendParent, forwardTo, escalate } from "./actions/send.js";
|
|
4
4
|
export { stop } from "./actions/stop.js";
|
|
5
5
|
export { log } from "./actions/log.js";
|
|
6
6
|
export { cancel } from "./actions/cancel.js";
|
|
@@ -9,9 +9,6 @@ export { raise } from "./actions/raise.js";
|
|
|
9
9
|
export { choose } from "./actions/choose.js";
|
|
10
10
|
export { pure } from "./actions/pure.js";
|
|
11
11
|
export { actionTypes };
|
|
12
|
-
export declare const initEvent: {
|
|
13
|
-
type: ActionTypes;
|
|
14
|
-
};
|
|
15
12
|
export declare function resolveActionObject(actionObject: BaseActionObject, actionFunctionMap: ActionFunctionMap<any, any>): BaseActionObject;
|
|
16
13
|
export declare function toActionObject<TContext extends MachineContext, TEvent extends EventObject>(action: BaseActionObject | ActionFunction<TContext, TEvent> | string): BaseActionObject;
|
|
17
14
|
export declare const toActionObjects: <TContext extends MachineContext, TEvent extends EventObject>(action?: SingleOrArray<Action<TContext, TEvent>> | undefined) => BaseActionObject[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { symbolObservable } from "./symbolObservable.js";
|
|
2
2
|
import { AreAllImplementationsAssumedToBeProvided, MissingImplementationsError } from "./typegenTypes.js";
|
|
3
3
|
import type { ActorSystem, AnyActorLogic, AnyStateMachine, EventFromLogic, InterpreterFrom, PersistedStateFrom, RaiseActionObject, SnapshotFrom } from "./types.js";
|
|
4
|
-
import { ActorRef, EventObject, InteropSubscribable, InterpreterOptions, Observer,
|
|
4
|
+
import { ActorRef, EventObject, InteropSubscribable, InterpreterOptions, Observer, SendToActionObject, Subscription } from "./types.js";
|
|
5
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;
|
|
@@ -80,7 +80,7 @@ export declare class Interpreter<TLogic extends AnyActorLogic, TEvent extends Ev
|
|
|
80
80
|
* @param event The event to send
|
|
81
81
|
*/
|
|
82
82
|
send(event: TEvent): void;
|
|
83
|
-
delaySend(sendAction:
|
|
83
|
+
delaySend(sendAction: SendToActionObject | RaiseActionObject<any, any, any>): void;
|
|
84
84
|
cancel(sendId: string | number): void;
|
|
85
85
|
private attachDevTools;
|
|
86
86
|
toJSON(): {
|
|
@@ -54,7 +54,7 @@ export declare function removeConflictingTransitions(enabledTransitions: Array<A
|
|
|
54
54
|
* @param mutConfiguration
|
|
55
55
|
*/
|
|
56
56
|
export declare function microstep<TContext extends MachineContext, TEvent extends EventObject>(transitions: Array<TransitionDefinition<TContext, TEvent>>, currentState: State<TContext, TEvent, any>, actorCtx: AnyActorContext, event: TEvent, isInitial: boolean): State<TContext, TEvent, any>;
|
|
57
|
-
export declare function resolveActionsAndContext<TContext extends MachineContext, TEvent extends EventObject>(actions: BaseActionObject[], event: TEvent, currentState: State<TContext, TEvent, any>, actorCtx: AnyActorContext
|
|
57
|
+
export declare function resolveActionsAndContext<TContext extends MachineContext, TEvent extends EventObject>(actions: BaseActionObject[], event: TEvent, currentState: State<TContext, TEvent, any>, actorCtx: AnyActorContext): AnyState;
|
|
58
58
|
export declare function macrostep(state: AnyState, event: EventObject, actorCtx: AnyActorContext): {
|
|
59
59
|
state: typeof state;
|
|
60
60
|
microstates: Array<typeof state>;
|
|
@@ -54,6 +54,8 @@ export interface BuiltInActionObject extends ParameterizedObject {
|
|
|
54
54
|
export interface UnifiedArg<TContext extends MachineContext, TEvent extends EventObject> {
|
|
55
55
|
context: TContext;
|
|
56
56
|
event: TEvent;
|
|
57
|
+
self: ActorRef<TEvent>;
|
|
58
|
+
system: ActorSystem<any>;
|
|
57
59
|
}
|
|
58
60
|
export interface BaseDynamicActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TResolvedAction extends BaseActionObject, TDynamicParams extends Record<string, any>> {
|
|
59
61
|
type: `xstate.${string}`;
|
|
@@ -64,16 +66,13 @@ export interface BaseDynamicActionObject<TContext extends MachineContext, TExpre
|
|
|
64
66
|
* The original action object
|
|
65
67
|
*/
|
|
66
68
|
action: ParameterizedObject;
|
|
67
|
-
actorContext: AnyActorContext
|
|
69
|
+
actorContext: AnyActorContext;
|
|
68
70
|
}) => [AnyState, TResolvedAction];
|
|
69
71
|
/** @deprecated an internal signature that doesn't exist at runtime. Its existence helps TS to choose a better code path in the inference algorithm */
|
|
70
|
-
(args:
|
|
71
|
-
context: TContext;
|
|
72
|
-
event: TExpressionEvent;
|
|
73
|
-
} & ActionMeta<TEvent, ParameterizedObject>): void;
|
|
72
|
+
(args: ActionArgs<TContext, TExpressionEvent, ParameterizedObject>): void;
|
|
74
73
|
}
|
|
75
74
|
export type MachineContext = Record<string, any>;
|
|
76
|
-
export interface
|
|
75
|
+
export interface ActionArgs<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> extends UnifiedArg<TContext, TEvent> {
|
|
77
76
|
action: TAction;
|
|
78
77
|
}
|
|
79
78
|
export type Spawner = <T extends ActorLogic<any, any> | string>(// TODO: read string from machine logic keys
|
|
@@ -82,26 +81,23 @@ logic: T, options?: Partial<{
|
|
|
82
81
|
systemId?: string;
|
|
83
82
|
input: any;
|
|
84
83
|
}>) => T extends ActorLogic<infer TActorEvent, infer TActorEmitted, infer _, infer __, infer ___> ? ActorRef<TActorEvent, TActorEmitted> : ActorRef<any, any>;
|
|
85
|
-
export interface
|
|
84
|
+
export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject> extends ActionArgs<TContext, TExpressionEvent> {
|
|
86
85
|
action: BaseActionObject;
|
|
87
86
|
event: TExpressionEvent;
|
|
88
87
|
spawn: Spawner;
|
|
89
88
|
}
|
|
90
|
-
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject
|
|
91
|
-
context: TContext;
|
|
92
|
-
event: TExpressionEvent;
|
|
93
|
-
} & ActionMeta<TEvent, TAction>) => void;
|
|
89
|
+
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = (args: ActionArgs<TContext, TExpressionEvent, TAction>) => void;
|
|
94
90
|
export interface ChooseCondition<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> {
|
|
95
91
|
guard?: GuardConfig<TContext, TExpressionEvent>;
|
|
96
92
|
actions: Actions<TContext, TExpressionEvent, TEvent>;
|
|
97
93
|
}
|
|
98
|
-
export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = ActionType | ParameterizedObject | ActionFunction<TContext, TExpressionEvent, ParameterizedObject
|
|
94
|
+
export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = ActionType | ParameterizedObject | ActionFunction<TContext, TExpressionEvent, ParameterizedObject> | BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, any, any>;
|
|
99
95
|
/**
|
|
100
96
|
* Extracts action objects that have no extra properties.
|
|
101
97
|
*/
|
|
102
98
|
type SimpleActionsFrom<T extends ParameterizedObject> = ParameterizedObject extends T ? T : ExtractWithSimpleSupport<T>;
|
|
103
99
|
export type BaseAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TAction extends ParameterizedObject, TEvent extends EventObject> = BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, any, // TODO: at the very least this should include TAction, but probably at a covariant position or something, we really need to rethink how action objects are typed
|
|
104
|
-
any> | TAction | SimpleActionsFrom<TAction>['type'] | ActionFunction<TContext, TExpressionEvent, TAction
|
|
100
|
+
any> | TAction | SimpleActionsFrom<TAction>['type'] | ActionFunction<TContext, TExpressionEvent, TAction>;
|
|
105
101
|
export type BaseActions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject> = SingleOrArray<BaseAction<TContext, TExpressionEvent, TAction, TEvent>>;
|
|
106
102
|
export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<Action<TContext, TEvent>>;
|
|
107
103
|
export type StateKey = string | AnyState;
|
|
@@ -118,7 +114,7 @@ export type StateValue = string | StateValueMap;
|
|
|
118
114
|
export type GuardPredicate<TContext extends MachineContext, TEvent extends EventObject> = (args: {
|
|
119
115
|
context: TContext;
|
|
120
116
|
event: TEvent;
|
|
121
|
-
} &
|
|
117
|
+
} & GuardArgs<TContext, TEvent>) => boolean;
|
|
122
118
|
export interface DefaultGuardObject<TContext extends MachineContext, TEvent extends EventObject> extends ParameterizedObject {
|
|
123
119
|
/**
|
|
124
120
|
* Nested guards
|
|
@@ -127,7 +123,7 @@ export interface DefaultGuardObject<TContext extends MachineContext, TEvent exte
|
|
|
127
123
|
predicate?: GuardPredicate<TContext, TEvent>;
|
|
128
124
|
}
|
|
129
125
|
export type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, event: TEvent, state: State<TContext, TEvent>) => boolean;
|
|
130
|
-
export interface
|
|
126
|
+
export interface GuardArgs<TContext extends MachineContext, TEvent extends EventObject> {
|
|
131
127
|
state: State<TContext, TEvent, any>;
|
|
132
128
|
guard: GuardDefinition<TContext, TEvent>;
|
|
133
129
|
evaluate: GuardEvaluator<TContext, TEvent>;
|
|
@@ -218,7 +214,7 @@ export interface Delay {
|
|
|
218
214
|
delay: number;
|
|
219
215
|
}
|
|
220
216
|
export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent>>> | Array<TransitionConfig<TContext, TEvent> & {
|
|
221
|
-
delay: number | string |
|
|
217
|
+
delay: number | string | ((args: UnifiedArg<TContext, TEvent>) => number);
|
|
222
218
|
}>;
|
|
223
219
|
export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
|
|
224
220
|
export type SingleOrArray<T> = T[] | T;
|
|
@@ -381,7 +377,6 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
|
|
|
381
377
|
tags: string[];
|
|
382
378
|
}
|
|
383
379
|
export interface StateMachineDefinition<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeDefinition<TContext, TEvent> {
|
|
384
|
-
context: TContext;
|
|
385
380
|
}
|
|
386
381
|
export type AnyStateNode = StateNode<any, any>;
|
|
387
382
|
export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
|
|
@@ -425,8 +420,7 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
|
|
|
425
420
|
}
|
|
426
421
|
type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
427
422
|
[K in keyof TEventsCausingActions]?: BaseDynamicActionObject<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, any, // TODO: this should receive something like `Cast<Prop<TIndexedActions, K>, ParameterizedObject>`, but at the moment builtin actions expect Resolved*Action here and this should be simplified somehow
|
|
428
|
-
any> | ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, ParameterizedObject
|
|
429
|
-
Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>>;
|
|
423
|
+
any> | ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, ParameterizedObject>;
|
|
430
424
|
};
|
|
431
425
|
type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
432
426
|
[K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
|
|
@@ -504,7 +498,7 @@ export type Transitions<TContext extends MachineContext, TEvent extends EventObj
|
|
|
504
498
|
export declare enum ActionTypes {
|
|
505
499
|
Stop = "xstate.stop",
|
|
506
500
|
Raise = "xstate.raise",
|
|
507
|
-
|
|
501
|
+
SendTo = "xstate.sendTo",
|
|
508
502
|
Cancel = "xstate.cancel",
|
|
509
503
|
Assign = "xstate.assign",
|
|
510
504
|
After = "xstate.after",
|
|
@@ -577,7 +571,7 @@ export interface InvokeActionObject extends BaseActionObject {
|
|
|
577
571
|
export interface DynamicStopActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
578
572
|
type: ActionTypes.Stop;
|
|
579
573
|
params: {
|
|
580
|
-
actor: string | ActorRef<any> |
|
|
574
|
+
actor: string | ActorRef<any> | ((args: UnifiedArg<TContext, TExpressionEvent>) => ActorRef<any> | string);
|
|
581
575
|
};
|
|
582
576
|
}
|
|
583
577
|
export interface StopActionObject {
|
|
@@ -586,8 +580,8 @@ export interface StopActionObject {
|
|
|
586
580
|
actor: ActorRef<any>;
|
|
587
581
|
};
|
|
588
582
|
}
|
|
589
|
-
export type DelayExpr<TContext extends MachineContext, TEvent extends EventObject> =
|
|
590
|
-
export type LogExpr<TContext extends MachineContext, TEvent extends EventObject> =
|
|
583
|
+
export type DelayExpr<TContext extends MachineContext, TEvent extends EventObject> = (args: UnifiedArg<TContext, TEvent>) => number;
|
|
584
|
+
export type LogExpr<TContext extends MachineContext, TEvent extends EventObject> = (args: UnifiedArg<TContext, TEvent>) => unknown;
|
|
591
585
|
export interface DynamicLogAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, LogActionObject, {
|
|
592
586
|
label: string | undefined;
|
|
593
587
|
expr: string | LogExpr<TContext, TExpressionEvent>;
|
|
@@ -601,25 +595,21 @@ export interface LogActionObject extends BuiltInActionObject {
|
|
|
601
595
|
value: any;
|
|
602
596
|
};
|
|
603
597
|
}
|
|
604
|
-
export interface
|
|
605
|
-
type: 'xstate.
|
|
598
|
+
export interface SendToActionObject<TSentEvent extends EventObject = AnyEventObject> extends BaseActionObject {
|
|
599
|
+
type: 'xstate.sendTo';
|
|
606
600
|
params: {
|
|
607
|
-
to: ActorRef<TSentEvent
|
|
601
|
+
to: ActorRef<TSentEvent>;
|
|
608
602
|
event: TSentEvent;
|
|
609
603
|
delay?: number;
|
|
610
604
|
id: string | number;
|
|
611
|
-
internal: boolean;
|
|
612
605
|
};
|
|
613
606
|
}
|
|
614
|
-
export type
|
|
615
|
-
export type ExprWithMeta<TContext extends MachineContext, TEvent extends EventObject, T> = (args: UnifiedArg<TContext, TEvent> & StateMeta<TEvent>) => T;
|
|
616
|
-
export type SendExpr<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = ExprWithMeta<TContext, TEvent, TSentEvent>;
|
|
607
|
+
export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = (args: UnifiedArg<TContext, TExpressionEvent>) => TSentEvent;
|
|
617
608
|
export declare enum SpecialTargets {
|
|
618
609
|
Parent = "#_parent",
|
|
619
610
|
Internal = "#_internal"
|
|
620
611
|
}
|
|
621
|
-
export interface
|
|
622
|
-
to?: string | ActorRef<any, any> | ExprWithMeta<TContext, TEvent, string | ActorRef<any, any>>;
|
|
612
|
+
export interface SendToActionOptions<TContext extends MachineContext, TEvent extends EventObject> extends RaiseActionOptions<TContext, TEvent> {
|
|
623
613
|
}
|
|
624
614
|
export interface RaiseActionOptions<TContext extends MachineContext, TEvent extends EventObject> {
|
|
625
615
|
id?: string | number;
|
|
@@ -628,13 +618,13 @@ export interface RaiseActionOptions<TContext extends MachineContext, TEvent exte
|
|
|
628
618
|
export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent> {
|
|
629
619
|
event: TEvent | SendExpr<TContext, TExpressionEvent, TEvent>;
|
|
630
620
|
}
|
|
631
|
-
export interface
|
|
621
|
+
export interface SendToActionParams<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = EventObject> extends SendToActionOptions<TContext, TEvent> {
|
|
632
622
|
event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>;
|
|
633
623
|
}
|
|
634
624
|
export interface DynamicCancelActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
635
625
|
type: ActionTypes.Cancel;
|
|
636
626
|
params: {
|
|
637
|
-
sendId: string |
|
|
627
|
+
sendId: string | ((args: UnifiedArg<TContext, TExpressionEvent>) => string);
|
|
638
628
|
};
|
|
639
629
|
}
|
|
640
630
|
export interface CancelActionObject extends BaseActionObject {
|
|
@@ -643,16 +633,10 @@ export interface CancelActionObject extends BaseActionObject {
|
|
|
643
633
|
sendId: string;
|
|
644
634
|
};
|
|
645
635
|
}
|
|
646
|
-
export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TKey extends keyof TContext> = (args: {
|
|
651
|
-
context: TContext;
|
|
652
|
-
event: TExpressionEvent;
|
|
653
|
-
} & AssignMeta<TExpressionEvent, TEvent>) => TContext[TKey];
|
|
654
|
-
export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = {
|
|
655
|
-
[K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TEvent, K> | TContext[K];
|
|
636
|
+
export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject> = (args: AssignArgs<TContext, TExpressionEvent>) => Partial<TContext>;
|
|
637
|
+
export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent>) => TContext[TKey];
|
|
638
|
+
export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject> = {
|
|
639
|
+
[K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, K> | TContext[K];
|
|
656
640
|
};
|
|
657
641
|
export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = (args: {
|
|
658
642
|
context: TContext;
|
|
@@ -669,7 +653,7 @@ export interface AnyAssignAction extends BaseActionObject {
|
|
|
669
653
|
assignment: any;
|
|
670
654
|
}
|
|
671
655
|
export type DynamicAssignAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, AssignActionObject<TContext> | RaiseActionObject<TContext, TExpressionEvent>, {
|
|
672
|
-
assignment: Assigner<TContext, TExpressionEvent
|
|
656
|
+
assignment: Assigner<TContext, TExpressionEvent> | PropertyAssigner<TContext, TExpressionEvent>;
|
|
673
657
|
}>;
|
|
674
658
|
export interface AssignActionObject<TContext extends MachineContext> extends BaseActionObject {
|
|
675
659
|
type: ActionTypes.Assign;
|
|
@@ -759,10 +743,6 @@ export interface Segment<TContext extends MachineContext, TEvent extends EventOb
|
|
|
759
743
|
*/
|
|
760
744
|
event: TEvent;
|
|
761
745
|
}
|
|
762
|
-
export interface StateMeta<TEvent extends EventObject> {
|
|
763
|
-
self: ActorRef<TEvent>;
|
|
764
|
-
system: ActorSystem<any>;
|
|
765
|
-
}
|
|
766
746
|
export interface StateLike<TContext extends MachineContext> {
|
|
767
747
|
value: StateValue;
|
|
768
748
|
context: TContext;
|
package/dist/xstate.cjs.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var actors_dist_xstateActors = require('./actions-
|
|
5
|
+
var actors_dist_xstateActors = require('./actions-6b9073db.cjs.js');
|
|
6
6
|
require('../dev/dist/xstate-dev.cjs.js');
|
|
7
7
|
|
|
8
8
|
const EMPTY_OBJECT = {};
|
|
@@ -319,23 +319,6 @@ class StateNode {
|
|
|
319
319
|
|
|
320
320
|
const STATE_IDENTIFIER = '#';
|
|
321
321
|
class StateMachine {
|
|
322
|
-
// TODO: this getter should be removed
|
|
323
|
-
getContext(input) {
|
|
324
|
-
return this.getContextAndActions(undefined, input)[0];
|
|
325
|
-
}
|
|
326
|
-
getContextAndActions(actorCtx, input) {
|
|
327
|
-
const actions = [];
|
|
328
|
-
const {
|
|
329
|
-
context
|
|
330
|
-
} = this.config;
|
|
331
|
-
const resolvedContext = typeof context === 'function' ? context({
|
|
332
|
-
spawn: actors_dist_xstateActors.createSpawner(actorCtx?.self, this, undefined,
|
|
333
|
-
// TODO: this requires `| undefined` for all referenced dynamic inputs that are spawnable in the context factory,
|
|
334
|
-
actors_dist_xstateActors.createInitEvent(input), actions),
|
|
335
|
-
input
|
|
336
|
-
}) : context;
|
|
337
|
-
return [resolvedContext || {}, actions];
|
|
338
|
-
}
|
|
339
322
|
/**
|
|
340
323
|
* The machine's own version.
|
|
341
324
|
*/
|
|
@@ -432,10 +415,9 @@ class StateMachine {
|
|
|
432
415
|
done: actors_dist_xstateActors.isInFinalState(configuration)
|
|
433
416
|
});
|
|
434
417
|
}
|
|
435
|
-
resolveStateValue(stateValue) {
|
|
418
|
+
resolveStateValue(stateValue, ...[context]) {
|
|
436
419
|
const resolvedStateValue = actors_dist_xstateActors.resolveStateValue(this.root, stateValue);
|
|
437
|
-
|
|
438
|
-
return this.resolveState(actors_dist_xstateActors.State.from(resolvedStateValue, resolvedContext, this));
|
|
420
|
+
return this.resolveState(actors_dist_xstateActors.State.from(resolvedStateValue, context, this));
|
|
439
421
|
}
|
|
440
422
|
|
|
441
423
|
/**
|
|
@@ -474,20 +456,27 @@ class StateMachine {
|
|
|
474
456
|
* The initial state _before_ evaluating any microsteps.
|
|
475
457
|
* This "pre-initial" state is provided to initial actions executed in the initial state.
|
|
476
458
|
*/
|
|
477
|
-
getPreInitialState(actorCtx,
|
|
478
|
-
const
|
|
479
|
-
|
|
459
|
+
getPreInitialState(actorCtx, initEvent) {
|
|
460
|
+
const {
|
|
461
|
+
context
|
|
462
|
+
} = this.config;
|
|
480
463
|
const preInitial = this.resolveState(this.createState({
|
|
481
464
|
value: {},
|
|
482
465
|
// TODO: this is computed in state constructor
|
|
483
|
-
context,
|
|
466
|
+
context: typeof context !== 'function' && context ? context : {},
|
|
484
467
|
meta: undefined,
|
|
485
|
-
configuration:
|
|
468
|
+
configuration: actors_dist_xstateActors.getInitialConfiguration(this.root),
|
|
486
469
|
children: {}
|
|
487
470
|
}));
|
|
488
|
-
if (
|
|
489
|
-
const
|
|
490
|
-
|
|
471
|
+
if (typeof context === 'function') {
|
|
472
|
+
const assignment = ({
|
|
473
|
+
spawn,
|
|
474
|
+
event
|
|
475
|
+
}) => context({
|
|
476
|
+
spawn,
|
|
477
|
+
input: event.input
|
|
478
|
+
});
|
|
479
|
+
return actors_dist_xstateActors.resolveActionsAndContext([actors_dist_xstateActors.assign(assignment)], initEvent, preInitial, actorCtx);
|
|
491
480
|
}
|
|
492
481
|
return preInitial;
|
|
493
482
|
}
|
|
@@ -498,7 +487,7 @@ class StateMachine {
|
|
|
498
487
|
getInitialState(actorCtx, input) {
|
|
499
488
|
const initEvent = actors_dist_xstateActors.createInitEvent(input); // TODO: fix;
|
|
500
489
|
|
|
501
|
-
const preInitialState = this.getPreInitialState(actorCtx,
|
|
490
|
+
const preInitialState = this.getPreInitialState(actorCtx, initEvent);
|
|
502
491
|
const nextState = actors_dist_xstateActors.microstep([{
|
|
503
492
|
target: [...preInitialState.configuration].filter(actors_dist_xstateActors.isAtomicStateNode),
|
|
504
493
|
source: this.root,
|
|
@@ -535,10 +524,7 @@ class StateMachine {
|
|
|
535
524
|
return actors_dist_xstateActors.getStateNodeByPath(stateNode, relativePath);
|
|
536
525
|
}
|
|
537
526
|
get definition() {
|
|
538
|
-
return
|
|
539
|
-
context: this.getContext(),
|
|
540
|
-
...this.root.definition
|
|
541
|
-
};
|
|
527
|
+
return this.root.definition;
|
|
542
528
|
}
|
|
543
529
|
toJSON() {
|
|
544
530
|
return this.definition;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var actors_dist_xstateActors = require('./actions-
|
|
5
|
+
var actors_dist_xstateActors = require('./actions-0f903c0d.development.cjs.js');
|
|
6
6
|
require('../dev/dist/xstate-dev.development.cjs.js');
|
|
7
7
|
|
|
8
8
|
const EMPTY_OBJECT = {};
|
|
@@ -319,23 +319,6 @@ class StateNode {
|
|
|
319
319
|
|
|
320
320
|
const STATE_IDENTIFIER = '#';
|
|
321
321
|
class StateMachine {
|
|
322
|
-
// TODO: this getter should be removed
|
|
323
|
-
getContext(input) {
|
|
324
|
-
return this.getContextAndActions(undefined, input)[0];
|
|
325
|
-
}
|
|
326
|
-
getContextAndActions(actorCtx, input) {
|
|
327
|
-
const actions = [];
|
|
328
|
-
const {
|
|
329
|
-
context
|
|
330
|
-
} = this.config;
|
|
331
|
-
const resolvedContext = typeof context === 'function' ? context({
|
|
332
|
-
spawn: actors_dist_xstateActors.createSpawner(actorCtx?.self, this, undefined,
|
|
333
|
-
// TODO: this requires `| undefined` for all referenced dynamic inputs that are spawnable in the context factory,
|
|
334
|
-
actors_dist_xstateActors.createInitEvent(input), actions),
|
|
335
|
-
input
|
|
336
|
-
}) : context;
|
|
337
|
-
return [resolvedContext || {}, actions];
|
|
338
|
-
}
|
|
339
322
|
/**
|
|
340
323
|
* The machine's own version.
|
|
341
324
|
*/
|
|
@@ -432,10 +415,9 @@ class StateMachine {
|
|
|
432
415
|
done: actors_dist_xstateActors.isInFinalState(configuration)
|
|
433
416
|
});
|
|
434
417
|
}
|
|
435
|
-
resolveStateValue(stateValue) {
|
|
418
|
+
resolveStateValue(stateValue, ...[context]) {
|
|
436
419
|
const resolvedStateValue = actors_dist_xstateActors.resolveStateValue(this.root, stateValue);
|
|
437
|
-
|
|
438
|
-
return this.resolveState(actors_dist_xstateActors.State.from(resolvedStateValue, resolvedContext, this));
|
|
420
|
+
return this.resolveState(actors_dist_xstateActors.State.from(resolvedStateValue, context, this));
|
|
439
421
|
}
|
|
440
422
|
|
|
441
423
|
/**
|
|
@@ -474,20 +456,27 @@ class StateMachine {
|
|
|
474
456
|
* The initial state _before_ evaluating any microsteps.
|
|
475
457
|
* This "pre-initial" state is provided to initial actions executed in the initial state.
|
|
476
458
|
*/
|
|
477
|
-
getPreInitialState(actorCtx,
|
|
478
|
-
const
|
|
479
|
-
|
|
459
|
+
getPreInitialState(actorCtx, initEvent) {
|
|
460
|
+
const {
|
|
461
|
+
context
|
|
462
|
+
} = this.config;
|
|
480
463
|
const preInitial = this.resolveState(this.createState({
|
|
481
464
|
value: {},
|
|
482
465
|
// TODO: this is computed in state constructor
|
|
483
|
-
context,
|
|
466
|
+
context: typeof context !== 'function' && context ? context : {},
|
|
484
467
|
meta: undefined,
|
|
485
|
-
configuration:
|
|
468
|
+
configuration: actors_dist_xstateActors.getInitialConfiguration(this.root),
|
|
486
469
|
children: {}
|
|
487
470
|
}));
|
|
488
|
-
if (
|
|
489
|
-
const
|
|
490
|
-
|
|
471
|
+
if (typeof context === 'function') {
|
|
472
|
+
const assignment = ({
|
|
473
|
+
spawn,
|
|
474
|
+
event
|
|
475
|
+
}) => context({
|
|
476
|
+
spawn,
|
|
477
|
+
input: event.input
|
|
478
|
+
});
|
|
479
|
+
return actors_dist_xstateActors.resolveActionsAndContext([actors_dist_xstateActors.assign(assignment)], initEvent, preInitial, actorCtx);
|
|
491
480
|
}
|
|
492
481
|
return preInitial;
|
|
493
482
|
}
|
|
@@ -498,7 +487,7 @@ class StateMachine {
|
|
|
498
487
|
getInitialState(actorCtx, input) {
|
|
499
488
|
const initEvent = actors_dist_xstateActors.createInitEvent(input); // TODO: fix;
|
|
500
489
|
|
|
501
|
-
const preInitialState = this.getPreInitialState(actorCtx,
|
|
490
|
+
const preInitialState = this.getPreInitialState(actorCtx, initEvent);
|
|
502
491
|
const nextState = actors_dist_xstateActors.microstep([{
|
|
503
492
|
target: [...preInitialState.configuration].filter(actors_dist_xstateActors.isAtomicStateNode),
|
|
504
493
|
source: this.root,
|
|
@@ -535,10 +524,7 @@ class StateMachine {
|
|
|
535
524
|
return actors_dist_xstateActors.getStateNodeByPath(stateNode, relativePath);
|
|
536
525
|
}
|
|
537
526
|
get definition() {
|
|
538
|
-
return
|
|
539
|
-
context: this.getContext(),
|
|
540
|
-
...this.root.definition
|
|
541
|
-
};
|
|
527
|
+
return this.root.definition;
|
|
542
528
|
}
|
|
543
529
|
toJSON() {
|
|
544
530
|
return this.definition;
|