xstate 5.0.0-beta.37 → 5.0.0-beta.38

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 (62) hide show
  1. package/actions/dist/xstate-actions.cjs.js +4 -3
  2. package/actions/dist/xstate-actions.cjs.mjs +1 -0
  3. package/actions/dist/xstate-actions.development.cjs.js +4 -3
  4. package/actions/dist/xstate-actions.development.cjs.mjs +1 -0
  5. package/actions/dist/xstate-actions.development.esm.js +3 -3
  6. package/actions/dist/xstate-actions.esm.js +3 -3
  7. package/actions/dist/xstate-actions.umd.min.js +1 -1
  8. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  9. package/actors/dist/xstate-actors.cjs.js +1 -1
  10. package/actors/dist/xstate-actors.development.cjs.js +1 -1
  11. package/actors/dist/xstate-actors.development.esm.js +1 -1
  12. package/actors/dist/xstate-actors.esm.js +1 -1
  13. package/actors/dist/xstate-actors.umd.min.js +1 -1
  14. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  15. package/dist/declarations/src/State.d.ts +2 -2
  16. package/dist/declarations/src/StateMachine.d.ts +4 -4
  17. package/dist/declarations/src/actions/assign.d.ts +4 -4
  18. package/dist/declarations/src/actions/cancel.d.ts +4 -4
  19. package/dist/declarations/src/actions/choose.d.ts +3 -3
  20. package/dist/declarations/src/actions/log.d.ts +4 -4
  21. package/dist/declarations/src/actions/pure.d.ts +4 -4
  22. package/dist/declarations/src/actions/raise.d.ts +3 -3
  23. package/dist/declarations/src/actions/send.d.ts +7 -7
  24. package/dist/declarations/src/actions/spawn.d.ts +34 -0
  25. package/dist/declarations/src/actions/stop.d.ts +4 -4
  26. package/dist/declarations/src/actions.d.ts +1 -0
  27. package/dist/declarations/src/actors/callback.d.ts +2 -2
  28. package/dist/declarations/src/actors/observable.d.ts +2 -3
  29. package/dist/declarations/src/actors/promise.d.ts +0 -1
  30. package/dist/declarations/src/actors/transition.d.ts +1 -1
  31. package/dist/declarations/src/guards.d.ts +9 -10
  32. package/dist/declarations/src/interpreter.d.ts +2 -2
  33. package/dist/declarations/src/spawn.d.ts +1 -2
  34. package/dist/declarations/src/stateUtils.d.ts +0 -5
  35. package/dist/declarations/src/types.d.ts +46 -57
  36. package/dist/{interpreter-1c52b23c.development.esm.js → interpreter-4005eb36.development.esm.js} +1 -1
  37. package/dist/{interpreter-97aff8d2.cjs.js → interpreter-b6f22ee2.cjs.js} +1 -1
  38. package/dist/{interpreter-8def682e.esm.js → interpreter-c80ce92e.esm.js} +1 -1
  39. package/dist/{interpreter-e58ca48d.development.cjs.js → interpreter-ed3f81f7.development.cjs.js} +1 -1
  40. package/dist/{raise-e342a840.development.esm.js → raise-42073973.development.esm.js} +68 -79
  41. package/dist/{raise-800296d7.cjs.js → raise-7faa9b3b.cjs.js} +69 -79
  42. package/dist/{raise-1fd59c65.development.cjs.js → raise-b69a3d16.development.cjs.js} +68 -78
  43. package/dist/{raise-21c417c1.esm.js → raise-c989c7fb.esm.js} +69 -80
  44. package/dist/{send-4cc29786.cjs.js → send-34160163.cjs.js} +27 -26
  45. package/dist/{send-92854675.esm.js → send-4b616da9.esm.js} +27 -26
  46. package/dist/{send-b309ef4e.development.cjs.js → send-58725522.development.cjs.js} +27 -26
  47. package/dist/{send-83ccc98b.development.esm.js → send-bff8c910.development.esm.js} +27 -26
  48. package/dist/xstate.cjs.js +9 -6
  49. package/dist/xstate.cjs.mjs +1 -0
  50. package/dist/xstate.development.cjs.js +9 -6
  51. package/dist/xstate.development.cjs.mjs +1 -0
  52. package/dist/xstate.development.esm.js +11 -9
  53. package/dist/xstate.esm.js +11 -9
  54. package/dist/xstate.umd.min.js +1 -1
  55. package/dist/xstate.umd.min.js.map +1 -1
  56. package/guards/dist/xstate-guards.cjs.js +2 -2
  57. package/guards/dist/xstate-guards.development.cjs.js +2 -2
  58. package/guards/dist/xstate-guards.development.esm.js +2 -2
  59. package/guards/dist/xstate-guards.esm.js +2 -2
  60. package/guards/dist/xstate-guards.umd.min.js +1 -1
  61. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  62. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { ActionArgs, EventObject, MachineContext, NoInfer, RaiseActionOptions, SendExpr, ParameterizedObject } from "../types.js";
2
- export interface RaiseAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> {
3
- (_: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>): void;
2
+ export interface RaiseAction<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_TEvent?: TEvent;
5
5
  _out_TDelay?: TDelay;
6
6
  }
@@ -10,4 +10,4 @@ export interface RaiseAction<TContext extends MachineContext, TExpressionEvent e
10
10
  *
11
11
  * @param eventType The event to raise.
12
12
  */
13
- export declare function raise<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TExpressionAction extends ParameterizedObject | undefined = ParameterizedObject | undefined, TDelay extends string = string>(eventOrExpr: NoInfer<TEvent> | SendExpr<TContext, TExpressionEvent, TExpressionAction, NoInfer<TEvent>, TEvent>, options?: RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction, NoInfer<TEvent>, NoInfer<TDelay>>): RaiseAction<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay>;
13
+ export declare function raise<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TParams extends ParameterizedObject['params'] | undefined = ParameterizedObject['params'] | undefined, TDelay extends string = string>(eventOrExpr: NoInfer<TEvent> | SendExpr<TContext, TExpressionEvent, TParams, NoInfer<TEvent>, TEvent>, options?: RaiseActionOptions<TContext, TExpressionEvent, TParams, NoInfer<TEvent>, NoInfer<TDelay>>): RaiseAction<TContext, TExpressionEvent, TParams, TEvent, TDelay>;
@@ -1,6 +1,6 @@
1
1
  import { ActionArgs, ActorRef, AnyActorRef, AnyEventObject, Cast, EventFrom, EventObject, InferEvent, MachineContext, SendExpr, SendToActionOptions, SendToActionParams, UnifiedArg, ParameterizedObject, NoInfer } from "../types.js";
2
- export interface SendToAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> {
3
- (_: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>): void;
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, TExpressionAction extends ParameterizedObject | undefined, TTargetActor extends AnyActorRef, TEvent extends EventObject, TDelay extends string>(to: TTargetActor | string | ((args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => TTargetActor | string), eventOrExpr: EventFrom<TTargetActor> | SendExpr<TContext, TExpressionEvent, TExpressionAction, InferEvent<Cast<EventFrom<TTargetActor>, EventObject>>, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, NoInfer<TEvent>, NoInfer<TDelay>>): SendToAction<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay>;
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, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject = AnyEventObject, TEvent extends EventObject = AnyEventObject, TDelay extends string = string>(event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay>): SendToAction<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay>;
23
- type Target<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> = string | ActorRef<any, any> | ((args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => string | ActorRef<any, any>);
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, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string>(target: Target<TContext, TExpressionEvent, TExpressionAction, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay>): SendToAction<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay>;
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, TExpressionAction extends ParameterizedObject | undefined, TErrorData = any, TEvent extends EventObject = AnyEventObject>(errorData: TErrorData | ((args: UnifiedArg<TContext, TExpressionEvent, TEvent>) => TErrorData), options?: SendToActionParams<TContext, TExpressionEvent, TExpressionAction, EventObject, TEvent, string>): SendToAction<TContext, TExpressionEvent, TExpressionAction, TEvent, string>;
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, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> = string | ActorRef<any, any> | ((args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => ActorRef<any, any> | string);
3
- export interface StopAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> {
4
- (_: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>): void;
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, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject>(actorRef: ResolvableActorRef<TContext, TExpressionEvent, TExpressionAction, TEvent>): StopAction<TContext, TExpressionEvent, TExpressionAction, TEvent>;
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,10 +1,10 @@
1
- import { ActorLogic, EventObject, AnyActorSystem, AnyEventObject, ActorSystem, ActorRefFrom, Snapshot, HomomorphicOmit } from "../types.js";
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, HomomorphicOmit<CallbackSnapshot<TInput, TEvent>, '_receivers' | '_dispose'>, ActorSystem<any>>;
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;
@@ -1,14 +1,13 @@
1
- import { Subscribable, ActorLogic, EventObject, Subscription, AnyActorSystem, ActorRefFrom, Snapshot, HomomorphicOmit } from "../types.js";
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, ObservablePersistedState<TContext, TInput>, AnyActorSystem>;
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 }: {
@@ -2,7 +2,7 @@ import { ActorLogic, ActorContext, ActorSystem, EventObject, ActorRefFrom, AnyAc
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, TransitionSnapshot<TContext>, AnyActorSystem>;
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.
@@ -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, TExpressionGuard extends ParameterizedObject | undefined, TGuard extends ParameterizedObject> = {
3
- (args: GuardArgs<TContext, TExpressionEvent, TExpressionGuard>): boolean;
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, TExpressionGuard extends ParameterizedObject | undefined> {
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, TExpressionGuard extends ParameterizedObject | undefined, TGuard extends ParameterizedObject> = NoRequiredParams<TGuard> | WithDynamicParams<TContext, TExpressionEvent, TGuard> | GuardPredicate<TContext, TExpressionEvent, TExpressionGuard, TGuard>;
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, TExpressionGuard extends ParameterizedObject | undefined>(stateValue: StateValue): GuardPredicate<TContext, TExpressionEvent, TExpressionGuard, any>;
16
- export declare function not<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionGuard extends ParameterizedObject | undefined, TGuard extends ParameterizedObject>(guard: Guard<TContext, TExpressionEvent, TExpressionGuard, NoInfer<TGuard>>): GuardPredicate<TContext, TExpressionEvent, TExpressionGuard, TGuard>;
17
- export declare function and<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionGuard extends ParameterizedObject | undefined, TGuard extends ParameterizedObject>(guards: ReadonlyArray<Guard<TContext, TExpressionEvent, TExpressionGuard, NoInfer<TGuard>>>): GuardPredicate<TContext, TExpressionEvent, TExpressionGuard, TGuard>;
18
- export declare function or<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionGuard extends ParameterizedObject | undefined, TGuard extends ParameterizedObject>(guards: ReadonlyArray<Guard<TContext, TExpressionEvent, TExpressionGuard, NoInfer<TGuard>>>): GuardPredicate<TContext, TExpressionEvent, TExpressionGuard, TGuard>;
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, PersistedStateFrom, SnapshotFrom, AnyActorRef } from "./types.js";
3
+ import type { ActorSystem, AnyActorLogic, AnyStateMachine, EventFromLogic, SnapshotFrom, AnyActorRef, 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;
@@ -97,7 +97,7 @@ export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<Eve
97
97
  xstate$$type: number;
98
98
  id: string;
99
99
  };
100
- getPersistedState(): PersistedStateFrom<TLogic> | undefined;
100
+ getPersistedState(): Snapshot<unknown>;
101
101
  [symbolObservable](): InteropSubscribable<SnapshotFrom<TLogic>>;
102
102
  getSnapshot(): SnapshotFrom<TLogic>;
103
103
  }
@@ -1,5 +1,5 @@
1
1
  import { ActorRefFrom, AnyActorContext, AnyActorLogic, AnyActorRef, AnyEventObject, AnyState, InputFrom, IsLiteralString, ProvidedActor } from "./types.js";
2
- type SpawnOptions<TActor extends ProvidedActor, TSrc extends TActor['src']> = TActor extends {
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: {
@@ -25,4 +25,3 @@ export type Spawner<TActor extends ProvidedActor> = IsLiteralString<TActor['src'
25
25
  syncSnapshot?: boolean;
26
26
  }) => TLogic extends string ? AnyActorRef : ActorRefFrom<TLogic>;
27
27
  export declare function createSpawner(actorContext: AnyActorContext, { machine, context }: AnyState, event: AnyEventObject, spawnedChildren: Record<string, AnyActorRef>): Spawner<any>;
28
- export {};
@@ -44,11 +44,6 @@ 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
48
  export declare function microstep<TContext extends MachineContext, TEvent extends EventObject>(transitions: Array<AnyTransitionDefinition>, currentState: AnyState, actorCtx: AnyActorContext, event: AnyEventObject, isInitial: boolean, internalQueue: Array<AnyEventObject>): AnyState;
54
49
  export declare function resolveActionsAndContext(currentState: AnyState, event: AnyEventObject, actorCtx: AnyActorContext, actions: UnknownAction[], internalQueue: AnyEventObject[], deferredActorIds?: string[]): AnyState;
@@ -14,7 +14,11 @@ export type HomomorphicPick<T, K extends keyof any> = {
14
14
  export type HomomorphicOmit<T, K extends keyof any> = {
15
15
  [P in keyof T as Exclude<P, K>]: T[P];
16
16
  };
17
+ export type GetParameterizedParams<T extends ParameterizedObject | undefined> = T extends any ? ('params' extends keyof T ? T['params'] : undefined) : never;
17
18
  /**
19
+ *
20
+ * @remarks
21
+ *
18
22
  * `T | unknown` reduces to `unknown` and that can be problematic when it comes to contextual typing.
19
23
  * It especially is a problem when the union has a function member, like here:
20
24
  *
@@ -72,15 +76,14 @@ export interface UnifiedArg<TContext extends MachineContext, TExpressionEvent ex
72
76
  system: ActorSystem<any>;
73
77
  }
74
78
  export type MachineContext = Record<string, any>;
75
- export interface ActionArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> extends UnifiedArg<TContext, TExpressionEvent, TEvent> {
76
- action: TExpressionAction;
79
+ export interface ActionArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends UnifiedArg<TContext, TExpressionEvent, TEvent> {
77
80
  }
78
- export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TSnapshot, infer _TEvent, infer TInput, infer _TPersisted, infer _TSystem> ? TInput : never;
79
- export type OutputFrom<T extends AnyActorLogic> = T extends ActorLogic<infer TSnapshot, infer _TEvent, infer _TInput, infer _TPersisted, infer _TSystem> ? (TSnapshot & {
81
+ export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TSnapshot, infer _TEvent, infer TInput, infer _TSystem> ? TInput : never;
82
+ export type OutputFrom<T extends AnyActorLogic> = T extends ActorLogic<infer TSnapshot, infer _TEvent, infer _TInput, infer _TSystem> ? (TSnapshot & {
80
83
  status: 'done';
81
84
  })['output'] : never;
82
- export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
83
- (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>): void;
85
+ export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
86
+ (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams): void;
84
87
  _out_TEvent?: TEvent;
85
88
  _out_TActor?: TActor;
86
89
  _out_TAction?: TAction;
@@ -102,9 +105,9 @@ export type WithDynamicParams<TContext extends MachineContext, TExpressionEvent
102
105
  event: TExpressionEvent;
103
106
  }) => T['params']);
104
107
  }, undefined extends T['params'] ? false : true> : never;
105
- export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = NoRequiredParams<TAction> | WithDynamicParams<TContext, TExpressionEvent, TAction> | ActionFunction<TContext, TExpressionEvent, TEvent, TExpressionAction, TActor, TAction, TGuard, TDelay>;
106
- export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject | undefined, ProvidedActor, ParameterizedObject, ParameterizedObject, string>;
107
- export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent, TExpressionAction, TActor, TAction, TGuard, TDelay>>;
108
+ export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = NoRequiredParams<TAction> | WithDynamicParams<TContext, TExpressionEvent, TAction> | ActionFunction<TContext, TExpressionEvent, TEvent, TParams, TActor, TAction, TGuard, TDelay>;
109
+ export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject['params'] | undefined, ProvidedActor, ParameterizedObject, ParameterizedObject, string>;
110
+ export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent, TParams, TActor, TAction, TGuard, TDelay>>;
108
111
  export type StateKey = string | AnyState;
109
112
  export interface StateValueMap {
110
113
  [key: string]: StateValue;
@@ -112,7 +115,10 @@ export interface StateValueMap {
112
115
  /**
113
116
  * The string or object representing the state value relative to the parent state node.
114
117
  *
118
+ * @remarks
119
+ *
115
120
  * - For a child atomic state node, this is a string, e.g., `"pending"`.
121
+ *
116
122
  * - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
117
123
  */
118
124
  export type StateValue = string | StateValueMap;
@@ -283,9 +289,6 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
283
289
  * An eventless transition that is always taken when this state node is active.
284
290
  */
285
291
  always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay>;
286
- /**
287
- * @private
288
- */
289
292
  parent?: StateNode<TContext, TEvent>;
290
293
  /**
291
294
  * The meta data associated with this state node, which will be returned in State instances.
@@ -364,17 +367,17 @@ export interface HistoryStateNodeConfig<TContext extends MachineContext, TEvent
364
367
  }
365
368
  export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO, TODO, TODO>;
366
369
  export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> = {
367
- [K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
370
+ [K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, GetParameterizedParams<TAction extends {
368
371
  type: K;
369
- } ? TAction : never, TActor, TAction, TGuard, TDelay>;
372
+ } ? TAction : never>, TActor, TAction, TGuard, TDelay>;
370
373
  };
371
374
  type GuardMap<TContext extends MachineContext, TEvent extends EventObject, TGuard extends ParameterizedObject> = {
372
- [K in TGuard['type']]?: GuardPredicate<TContext, TEvent, TGuard extends {
375
+ [K in TGuard['type']]?: GuardPredicate<TContext, TEvent, GetParameterizedParams<TGuard extends {
373
376
  type: K;
374
- } ? TGuard : never, TGuard>;
377
+ } ? TGuard : never>, TGuard>;
375
378
  };
376
- export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string, DelayConfig<TContext, TEvent, TAction, TEvent>>;
377
- export type DelayConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> = number | DelayExpr<TContext, TExpressionEvent, TExpressionAction, TEvent>;
379
+ export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string, DelayConfig<TContext, TEvent, TAction['params'], TEvent>>;
380
+ export type DelayConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = number | DelayExpr<TContext, TExpressionEvent, TParams, TEvent>;
378
381
  export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject> {
379
382
  guards: GuardMap<TContext, TEvent, TGuard>;
380
383
  actions: ActionFunctionMap<TContext, TEvent, TActor, TAction>;
@@ -386,7 +389,7 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
386
389
  }
387
390
  type MaybeNarrowedEvent<TIndexedEvents, TCausingLookup, K> = Cast<Prop<TIndexedEvents, K extends keyof TCausingLookup ? TCausingLookup[K] : TIndexedEvents[keyof TIndexedEvents]>, EventObject>;
388
391
  type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActors'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
389
- [K in keyof TIndexedActions]?: ActionFunction<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActions, K>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, Cast<TIndexedActions[K], ParameterizedObject>, Cast<Prop<TIndexedActors, keyof TIndexedActors>, ProvidedActor>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>, Cast<Prop<TIndexedDelays, keyof TIndexedDelays>, ParameterizedObject>['type']>;
392
+ [K in keyof TIndexedActions]?: ActionFunction<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActions, K>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, GetParameterizedParams<Cast<TIndexedActions[K], ParameterizedObject>>, Cast<Prop<TIndexedActors, keyof TIndexedActors>, ProvidedActor>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>, Cast<Prop<TIndexedDelays, keyof TIndexedDelays>, ParameterizedObject>['type']>;
390
393
  };
391
394
  type MachineImplementationsActors<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActors'>, TIndexedActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActors'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
392
395
  [K in keyof TIndexedActors]?: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic> | {
@@ -395,10 +398,10 @@ type MachineImplementationsActors<TContext extends MachineContext, TResolvedType
395
398
  };
396
399
  };
397
400
  type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
398
- [K in keyof TIndexedDelays]?: DelayConfig<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingDelays, K>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject> | undefined, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>>;
401
+ [K in keyof TIndexedDelays]?: DelayConfig<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingDelays, K>, Cast<Prop<Prop<TIndexedActions, keyof TIndexedActions>, 'params'>, ParameterizedObject['params'] | undefined> | undefined, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>>;
399
402
  };
400
403
  type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>> = {
401
- [K in keyof TIndexedGuards]?: Guard<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingGuards, K>, Cast<TIndexedGuards[K], ParameterizedObject>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>>;
404
+ [K in keyof TIndexedGuards]?: Guard<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingGuards, K>, GetParameterizedParams<Cast<TIndexedGuards[K], ParameterizedObject | undefined>>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>>;
402
405
  };
403
406
  type MakeKeysRequired<T extends string> = {
404
407
  [K in T]: unknown;
@@ -481,29 +484,29 @@ export interface DoneStateEvent<TOutput = unknown> extends EventObject {
481
484
  type: `xstate.done.state.${string}`;
482
485
  output: TOutput;
483
486
  }
484
- export type DelayExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => number;
485
- export type LogExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => unknown;
486
- export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction, TEvent>) => TSentEvent;
487
+ export type DelayExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => number;
488
+ export type LogExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => unknown;
489
+ export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TSentEvent extends EventObject, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => TSentEvent;
487
490
  export declare enum SpecialTargets {
488
491
  Parent = "#_parent",
489
492
  Internal = "#_internal"
490
493
  }
491
- export interface SendToActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay> {
494
+ export interface SendToActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TParams, TEvent, TDelay> {
492
495
  }
493
- export interface RaiseActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> {
496
+ export interface RaiseActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TDelay extends string> {
494
497
  id?: string;
495
- delay?: Delay<TDelay> | DelayExpr<TContext, TExpressionEvent, TExpressionAction, TEvent>;
498
+ delay?: Delay<TDelay> | DelayExpr<TContext, TExpressionEvent, TParams, TEvent>;
496
499
  }
497
- export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay> {
498
- event: TEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TEvent, TEvent>;
500
+ export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TParams, TEvent, TDelay> {
501
+ event: TEvent | SendExpr<TContext, TExpressionEvent, TParams, TEvent, TEvent>;
499
502
  }
500
- export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject, TEvent extends EventObject, TDelay extends string> extends SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TEvent, TDelay> {
501
- event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent, TEvent>;
503
+ export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TSentEvent extends EventObject, TEvent extends EventObject, TDelay extends string> extends SendToActionOptions<TContext, TExpressionEvent, TParams, TEvent, TDelay> {
504
+ event: TSentEvent | SendExpr<TContext, TExpressionEvent, TParams, TSentEvent, TEvent>;
502
505
  }
503
- export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TActor extends ProvidedActor> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction, TEvent, TActor>) => Partial<TContext>;
504
- export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TActor extends ProvidedActor, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction, TEvent, TActor>) => TContext[TKey];
505
- export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TEvent extends EventObject, TActor extends ProvidedActor> = {
506
- [K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TExpressionAction, TEvent, TActor, K> | TContext[K];
506
+ export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor> = (args: AssignArgs<TContext, TExpressionEvent, TEvent, TActor>, params: TParams) => Partial<TContext>;
507
+ export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent, TEvent, TActor>, params: TParams) => TContext[TKey];
508
+ export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor> = {
509
+ [K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TParams, TEvent, TActor, K> | TContext[K];
507
510
  };
508
511
  export type Mapper<TContext extends MachineContext, TExpressionEvent extends EventObject, TResult, TEvent extends EventObject> = (args: {
509
512
  context: TContext;
@@ -628,7 +631,7 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot extends Snapshot
628
631
  send: (event: TEvent) => void;
629
632
  start?: () => void;
630
633
  getSnapshot: () => TSnapshot;
631
- getPersistedState?: () => any;
634
+ getPersistedState: () => Snapshot<unknown>;
632
635
  stop: () => void;
633
636
  toJSON?: () => any;
634
637
  _parent?: ActorRef<any, any>;
@@ -638,12 +641,12 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot extends Snapshot
638
641
  }
639
642
  export type AnyActorRef = ActorRef<any, any>;
640
643
  export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
641
- export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer _TInput, infer TOutput, infer TResolvedTypesMeta> ? ActorRef<TEvent, MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TSnapshot, infer TEvent, infer _TInput, infer _TPersisted, infer _TSystem> ? ActorRef<TEvent, TSnapshot> : never : never;
644
+ export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer _TInput, infer TOutput, infer TResolvedTypesMeta> ? ActorRef<TEvent, MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TSnapshot, infer TEvent, infer _TInput, infer _TSystem> ? ActorRef<TEvent, TSnapshot> : never : never;
642
645
  export type DevToolsAdapter = (service: AnyActor) => void;
643
646
  /**
644
647
  * @deprecated Use `Actor<T>` instead.
645
648
  */
646
- export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer TInput, infer TOutput, infer TResolvedTypesMeta> ? Actor<ActorLogic<MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, TEvent, TInput, PersistedMachineState<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, ActorSystem<any>>> : never;
649
+ export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TTag, infer TInput, infer TOutput, infer TResolvedTypesMeta> ? Actor<ActorLogic<MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, TEvent, TInput, ActorSystem<any>>> : never;
647
650
  export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TActor, infer TAction, infer _TGuard, infer TDelay, infer _TTag, infer _TInput, infer _TOutput, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TActor, TAction, TDelay, TResolvedTypesMeta, TRequireMissingImplementations> : never;
648
651
  export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, // context
649
652
  any, // event
@@ -682,29 +685,23 @@ export type Snapshot<TOutput> = {
682
685
  output: undefined;
683
686
  error: undefined;
684
687
  };
685
- export interface ActorLogic<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TInput = unknown,
686
- /**
687
- * Serialized internal state used for persistence & restoration
688
- */
689
- TPersisted = TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
688
+ export interface ActorLogic<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TInput = unknown, TSystem extends ActorSystem<any> = ActorSystem<any>> {
690
689
  config?: unknown;
691
690
  transition: (state: TSnapshot, message: TEvent, ctx: ActorContext<TSnapshot, TEvent, TSystem>) => TSnapshot;
692
691
  getInitialState: (actorCtx: ActorContext<TSnapshot, TEvent, TSystem>, input: TInput) => TSnapshot;
693
- restoreState?: (persistedState: TPersisted, actorCtx: ActorContext<TSnapshot, TEvent>) => TSnapshot;
692
+ restoreState?: (persistedState: Snapshot<unknown>, actorCtx: ActorContext<TSnapshot, TEvent>) => TSnapshot;
694
693
  start?: (state: TSnapshot, actorCtx: ActorContext<TSnapshot, TEvent>) => void;
695
694
  /**
696
695
  * @returns Persisted state
697
696
  */
698
- getPersistedState?: (state: TSnapshot) => TPersisted;
697
+ getPersistedState: (state: TSnapshot) => Snapshot<unknown>;
699
698
  }
700
699
  export type AnyActorLogic = ActorLogic<any, // snapshot
701
700
  any, // event
702
701
  any, // input
703
- any, // persisted state
704
702
  any>;
705
- export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? StateFrom<R> : R extends ActorLogic<any, any, any, any, any> ? ReturnType<R['transition']> : R extends ActorContext<infer TSnapshot, infer _, infer __> ? TSnapshot : never : never;
706
- export type EventFromLogic<TLogic extends ActorLogic<any, any, any, any, any>> = TLogic extends ActorLogic<infer _, infer TEvent, infer __, infer _____, infer ______> ? TEvent : never;
707
- export type PersistedStateFrom<TLogic extends ActorLogic<any, any, any, any, any>> = TLogic extends ActorLogic<infer _TSnapshot, infer _TEvent, infer _TInput, infer TPersisted, infer _TSystem> ? TPersisted : never;
703
+ export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? StateFrom<R> : R extends ActorLogic<any, any, any, any> ? ReturnType<R['transition']> : R extends ActorContext<infer TSnapshot, infer _, infer __> ? TSnapshot : never : never;
704
+ export type EventFromLogic<TLogic extends ActorLogic<any, any, any, any>> = TLogic extends ActorLogic<infer _, infer TEvent, infer __, infer _____> ? TEvent : never;
708
705
  type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends State<infer _TContext, infer TEvent, infer _TActor, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
709
706
  export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
710
707
  export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : R extends State<infer TContext, infer _TEvent, infer _TActor, infer _TOutput, infer _TResolvedTypesMeta> ? TContext : R extends Actor<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : never : never : never;
@@ -726,12 +723,4 @@ export interface ActorSystem<T extends ActorSystemInfo> {
726
723
  inspect: (observer: Observer<InspectionEvent>) => void;
727
724
  }
728
725
  export type AnyActorSystem = ActorSystem<any>;
729
- export type PersistedMachineState<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TTag extends string, TOutput, TResolvedTypesMeta = TypegenDisabled> = HomomorphicPick<MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>, 'value' | 'output' | 'error' | 'context' | 'status' | 'historyValue'> & {
730
- children: {
731
- [K in keyof MachineSnapshot<TContext, TEvent, TActor, TTag, TOutput, TResolvedTypesMeta>['children']]: {
732
- state: any;
733
- src?: string;
734
- };
735
- };
736
- };
737
726
  export {};
@@ -751,7 +751,7 @@ class Actor {
751
751
  };
752
752
  }
753
753
  getPersistedState() {
754
- return this.logic.getPersistedState?.(this._state);
754
+ return this.logic.getPersistedState(this._state);
755
755
  }
756
756
  [symbolObservable]() {
757
757
  return this;
@@ -742,7 +742,7 @@ class Actor {
742
742
  };
743
743
  }
744
744
  getPersistedState() {
745
- return this.logic.getPersistedState?.(this._state);
745
+ return this.logic.getPersistedState(this._state);
746
746
  }
747
747
  [symbolObservable]() {
748
748
  return this;
@@ -740,7 +740,7 @@ class Actor {
740
740
  };
741
741
  }
742
742
  getPersistedState() {
743
- return this.logic.getPersistedState?.(this._state);
743
+ return this.logic.getPersistedState(this._state);
744
744
  }
745
745
  [symbolObservable]() {
746
746
  return this;
@@ -753,7 +753,7 @@ class Actor {
753
753
  };
754
754
  }
755
755
  getPersistedState() {
756
- return this.logic.getPersistedState?.(this._state);
756
+ return this.logic.getPersistedState(this._state);
757
757
  }
758
758
  [symbolObservable]() {
759
759
  return this;