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.
Files changed (39) hide show
  1. package/actions/dist/xstate-actions.cjs.js +1 -3
  2. package/actions/dist/xstate-actions.cjs.mjs +0 -2
  3. package/actions/dist/xstate-actions.development.cjs.js +1 -3
  4. package/actions/dist/xstate-actions.development.esm.js +1 -1
  5. package/actions/dist/xstate-actions.esm.js +1 -1
  6. package/actions/dist/xstate-actions.umd.min.js +1 -1
  7. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  8. package/actors/dist/xstate-actors.cjs.js +1 -1
  9. package/actors/dist/xstate-actors.development.cjs.js +1 -1
  10. package/actors/dist/xstate-actors.development.esm.js +1 -1
  11. package/actors/dist/xstate-actors.esm.js +1 -1
  12. package/actors/dist/xstate-actors.umd.min.js +1 -1
  13. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  14. package/dist/{actions-6884fae8.esm.js → actions-0386b622.esm.js} +707 -742
  15. package/dist/{actions-d71ac253.development.cjs.js → actions-0f903c0d.development.cjs.js} +836 -874
  16. package/dist/{actions-81cc7f2b.cjs.js → actions-6b9073db.cjs.js} +706 -744
  17. package/dist/{actions-98f362b9.development.esm.js → actions-6f7fbc84.development.esm.js} +837 -872
  18. package/dist/declarations/src/StateMachine.d.ts +2 -4
  19. package/dist/declarations/src/actionTypes.d.ts +1 -1
  20. package/dist/declarations/src/actions/assign.d.ts +2 -2
  21. package/dist/declarations/src/actions/cancel.d.ts +2 -2
  22. package/dist/declarations/src/actions/send.d.ts +12 -22
  23. package/dist/declarations/src/actions/stop.d.ts +2 -2
  24. package/dist/declarations/src/actions.d.ts +1 -4
  25. package/dist/declarations/src/interpreter.d.ts +2 -2
  26. package/dist/declarations/src/stateUtils.d.ts +1 -1
  27. package/dist/declarations/src/types.d.ts +29 -49
  28. package/dist/xstate.cjs.js +20 -34
  29. package/dist/xstate.development.cjs.js +20 -34
  30. package/dist/xstate.development.esm.js +21 -35
  31. package/dist/xstate.esm.js +21 -35
  32. package/dist/xstate.umd.min.js +1 -1
  33. package/dist/xstate.umd.min.js.map +1 -1
  34. package/guards/dist/xstate-guards.cjs.js +1 -1
  35. package/guards/dist/xstate-guards.development.cjs.js +1 -1
  36. package/guards/dist/xstate-guards.development.esm.js +1 -1
  37. package/guards/dist/xstate-guards.esm.js +1 -1
  38. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  39. 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 send = ActionTypes.Send;
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 { EventObject, Assigner, PropertyAssigner, MachineContext, DynamicAssignAction, LowInfer } from "../types.js";
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, TEvent> | PropertyAssigner<LowInfer<TContext>, TExpressionEvent, TEvent>): DynamicAssignAction<TContext, TExpressionEvent, TEvent>;
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, ExprWithMeta, MachineContext } from "../types.js";
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 | ExprWithMeta<TContext, TExpressionEvent, string>): BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, CancelActionObject, DynamicCancelActionObject<TContext, TExpressionEvent>['params']>;
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, SendActionParams, SendExpr, AnyEventObject, MachineContext } from "../types.js";
2
- import { AnyActorRef, BaseDynamicActionObject, Cast, EventFrom, ExprWithMeta, InferEvent, SendActionObject, SendActionOptions } from "../index.js";
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. This returns an action that will be read by an interpreter to
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 eventOrExpr The event to send.
10
- * @param options Options to pass into the send event:
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 send<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject>(eventOrExpr: TSentEvent | SendExpr<TContext, TEvent, AnyEventObject>, options?: SendActionOptions<TContext, TEvent>): BaseDynamicActionObject<TContext, TEvent, TEvent, SendActionObject<AnyEventObject>, SendActionParams<TContext, TEvent>>;
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?: SendActionOptions<TContext, TEvent>): BaseDynamicActionObject<TContext, TEvent, TEvent, SendActionObject<AnyEventObject>, SendActionParams<TContext, TEvent, EventObject>>;
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: Required<SendActionParams<TContext, TEvent>>['to'], options?: SendActionOptions<TContext, TEvent>): BaseDynamicActionObject<TContext, TEvent, TEvent, SendActionObject<AnyEventObject>, SendActionParams<TContext, TEvent, EventObject>>;
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 | ExprWithMeta<TContext, TEvent, TErrorData>, options?: SendActionParams<TContext, TEvent>): BaseDynamicActionObject<TContext, TEvent, TEvent, SendActionObject<AnyEventObject>, SendActionParams<TContext, TEvent, EventObject>>;
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, Expr, MachineContext, StopActionObject } from "../types.js";
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> | Expr<TContext, TExpressionEvent, ActorRef<any> | string>): BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, StopActionObject, DynamicStopActionObject<TContext, TExpressionEvent>['params']>;
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 { send, sendTo, sendParent, forwardTo, escalate } from "./actions/send.js";
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, SendActionObject, Subscription } from "./types.js";
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: SendActionObject | RaiseActionObject<any, any, any>): void;
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 | undefined): AnyState;
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 | undefined;
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 ActionMeta<TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> extends StateMeta<TEvent> {
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 AssignMeta<TExpressionEvent extends EventObject, _TEvent extends EventObject> extends StateMeta<TExpressionEvent> {
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, TEvent extends EventObject = TExpressionEvent> = (args: {
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, TEvent> | BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, any, any>;
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, TEvent>;
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
- } & GuardMeta<TContext, TEvent>) => boolean;
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 GuardMeta<TContext extends MachineContext, TEvent extends EventObject> {
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 | Expr<TContext, TEvent, number>;
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, // TODO: when bringing back parametrized actions this should accept something like `Cast<Prop<TIndexedActions, K>, ParameterizedObject>`. At the moment we need to keep this type argument consistent with what is provided to the fake callable signature within `BaseDynamicActionObject`
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
- Send = "xstate.send",
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> | Expr<TContext, TExpressionEvent, ActorRef<any> | string>;
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> = ExprWithMeta<TContext, TEvent, number>;
590
- export type LogExpr<TContext extends MachineContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, any>;
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 SendActionObject<TSentEvent extends EventObject = AnyEventObject> extends BaseActionObject {
605
- type: 'xstate.send';
598
+ export interface SendToActionObject<TSentEvent extends EventObject = AnyEventObject> extends BaseActionObject {
599
+ type: 'xstate.sendTo';
606
600
  params: {
607
- to: ActorRef<TSentEvent> | undefined;
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 Expr<TContext extends MachineContext, TEvent extends EventObject, T> = (arg: UnifiedArg<TContext, TEvent>) => T;
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 SendActionOptions<TContext extends MachineContext, TEvent extends EventObject> extends RaiseActionOptions<TContext, TEvent> {
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 SendActionParams<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = EventObject> extends SendActionOptions<TContext, TEvent> {
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 | ExprWithMeta<TContext, TExpressionEvent, 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, TEvent extends EventObject = TExpressionEvent> = (args: {
647
- context: TContext;
648
- event: TExpressionEvent;
649
- } & AssignMeta<TExpressionEvent, TEvent>) => Partial<TContext>;
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, TEvent> | PropertyAssigner<TContext, TExpressionEvent, TEvent>;
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;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var actors_dist_xstateActors = require('./actions-81cc7f2b.cjs.js');
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
- const resolvedContext = this.getContext();
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, input) {
478
- const [context, actions] = this.getContextAndActions(actorCtx, input);
479
- const config = actors_dist_xstateActors.getInitialConfiguration(this.root);
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: config,
468
+ configuration: actors_dist_xstateActors.getInitialConfiguration(this.root),
486
469
  children: {}
487
470
  }));
488
- if (actorCtx) {
489
- const nextState = actors_dist_xstateActors.resolveActionsAndContext(actions, actors_dist_xstateActors.initEvent, preInitial, actorCtx);
490
- preInitial.children = nextState.children;
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, input);
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-d71ac253.development.cjs.js');
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
- const resolvedContext = this.getContext();
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, input) {
478
- const [context, actions] = this.getContextAndActions(actorCtx, input);
479
- const config = actors_dist_xstateActors.getInitialConfiguration(this.root);
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: config,
468
+ configuration: actors_dist_xstateActors.getInitialConfiguration(this.root),
486
469
  children: {}
487
470
  }));
488
- if (actorCtx) {
489
- const nextState = actors_dist_xstateActors.resolveActionsAndContext(actions, actors_dist_xstateActors.initEvent, preInitial, actorCtx);
490
- preInitial.children = nextState.children;
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, input);
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;