xstate 5.0.0-beta.27 → 5.0.0-beta.28

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 (59) hide show
  1. package/README.md +9 -7
  2. package/actions/dist/xstate-actions.cjs.js +11 -17
  3. package/actions/dist/xstate-actions.cjs.mjs +0 -8
  4. package/actions/dist/xstate-actions.development.cjs.js +11 -17
  5. package/actions/dist/xstate-actions.development.cjs.mjs +0 -8
  6. package/actions/dist/xstate-actions.development.esm.js +3 -1
  7. package/actions/dist/xstate-actions.esm.js +3 -1
  8. package/actions/dist/xstate-actions.umd.min.js +1 -1
  9. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  10. package/actors/dist/xstate-actors.cjs.js +413 -11
  11. package/actors/dist/xstate-actors.development.cjs.js +413 -11
  12. package/actors/dist/xstate-actors.development.esm.js +405 -4
  13. package/actors/dist/xstate-actors.esm.js +405 -4
  14. package/actors/dist/xstate-actors.umd.min.js +1 -1
  15. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  16. package/dist/declarations/src/StateNode.d.ts +3 -3
  17. package/dist/declarations/src/actions/assign.d.ts +8 -3
  18. package/dist/declarations/src/actions/choose.d.ts +4 -3
  19. package/dist/declarations/src/actions/pure.d.ts +5 -4
  20. package/dist/declarations/src/actions.d.ts +8 -44
  21. package/dist/declarations/src/actors/index.d.ts +2 -2
  22. package/dist/declarations/src/constants.d.ts +1 -0
  23. package/dist/declarations/src/index.d.ts +9 -16
  24. package/dist/declarations/src/spawn.d.ts +25 -0
  25. package/dist/declarations/src/stateUtils.d.ts +1 -1
  26. package/dist/declarations/src/typegenTypes.d.ts +4 -4
  27. package/dist/declarations/src/types.d.ts +72 -94
  28. package/dist/declarations/src/utils.d.ts +2 -2
  29. package/dist/interpreter-672794ae.cjs.js +792 -0
  30. package/dist/interpreter-a1432c7d.development.cjs.js +800 -0
  31. package/dist/interpreter-a77bb0ec.development.esm.js +765 -0
  32. package/dist/interpreter-b5203bcb.esm.js +757 -0
  33. package/dist/{actions-9754d2ca.development.esm.js → raise-436a57a2.cjs.js} +130 -1307
  34. package/dist/{actions-ca622922.development.cjs.js → raise-74b72ca5.development.cjs.js} +101 -1306
  35. package/dist/{actions-020463e9.esm.js → raise-a60c9290.development.esm.js} +109 -1203
  36. package/dist/{actions-d1dba4ac.cjs.js → raise-b9c9a234.esm.js} +65 -1267
  37. package/dist/send-35e1a689.cjs.js +349 -0
  38. package/dist/send-4192e7bc.esm.js +339 -0
  39. package/dist/send-e63b7b83.development.esm.js +364 -0
  40. package/dist/send-e8b55d00.development.cjs.js +374 -0
  41. package/dist/xstate.cjs.js +110 -106
  42. package/dist/xstate.cjs.mjs +4 -2
  43. package/dist/xstate.development.cjs.js +110 -106
  44. package/dist/xstate.development.cjs.mjs +4 -2
  45. package/dist/xstate.development.esm.js +72 -68
  46. package/dist/xstate.esm.js +72 -68
  47. package/dist/xstate.umd.min.js +1 -1
  48. package/dist/xstate.umd.min.js.map +1 -1
  49. package/guards/dist/xstate-guards.cjs.js +2 -1
  50. package/guards/dist/xstate-guards.development.cjs.js +2 -1
  51. package/guards/dist/xstate-guards.development.esm.js +2 -1
  52. package/guards/dist/xstate-guards.esm.js +2 -1
  53. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  54. package/package.json +1 -1
  55. package/dist/declarations/src/constantPrefixes.d.ts +0 -6
  56. package/dist/promise-2ad94e3b.development.esm.js +0 -406
  57. package/dist/promise-3b7e3357.development.cjs.js +0 -412
  58. package/dist/promise-5b07c38e.esm.js +0 -406
  59. package/dist/promise-7a8c1768.cjs.js +0 -412
@@ -1,44 +1,8 @@
1
- import { DoneEvent, ErrorPlatformEvent, DoneEventObject } from "./types.js";
2
- import * as constantPrefixes from "./constantPrefixes.js";
3
- export { sendTo, sendParent, forwardTo, escalate } from "./actions/send.js";
4
- export { stop } from "./actions/stop.js";
5
- export { log } from "./actions/log.js";
6
- export { cancel } from "./actions/cancel.js";
7
- export { assign } from "./actions/assign.js";
8
- export { raise } from "./actions/raise.js";
9
- export { choose } from "./actions/choose.js";
10
- export { pure } from "./actions/pure.js";
11
- export { constantPrefixes };
12
- /**
13
- * Returns an event type that represents an implicit event that
14
- * is sent after the specified `delay`.
15
- *
16
- * @param delayRef The delay in milliseconds
17
- * @param id The state node ID where this event is handled
18
- */
19
- export declare function after(delayRef: number | string, id?: string): string;
20
- /**
21
- * Returns an event that represents that a final state node
22
- * has been reached in the parent state node.
23
- *
24
- * @param id The final state node's parent state node `id`
25
- * @param output The data to pass into the event
26
- */
27
- export declare function done(id: string, output?: any): DoneEventObject;
28
- export declare function doneInvokeEventType<T extends string = string>(invokeId: T): `done.invoke.${T}`;
29
- /**
30
- * Returns an event that represents that an invoked service has terminated.
31
- *
32
- * An invoked service is terminated when it has reached a top-level final state node,
33
- * but not when it is canceled.
34
- *
35
- * @param invokeId The invoked service ID
36
- * @param output The data to pass into the event
37
- */
38
- export declare function doneInvoke(invokeId: string, output?: any): DoneEvent;
39
- export declare function errorEventType<T extends string = string>(id: T): `error.platform.${T}`;
40
- export declare function error(id: string, data?: any): ErrorPlatformEvent & string;
41
- export declare function createInitEvent(input: unknown): {
42
- readonly type: "xstate.init";
43
- readonly input: unknown;
44
- };
1
+ export { assign, type AssignAction, type AssignArgs } from "./actions/assign.js";
2
+ export { cancel, type CancelAction } from "./actions/cancel.js";
3
+ export { choose, type ChooseAction } from "./actions/choose.js";
4
+ export { log, type LogAction } from "./actions/log.js";
5
+ export { pure, type PureAction } from "./actions/pure.js";
6
+ export { raise, type RaiseAction } from "./actions/raise.js";
7
+ export { escalate, forwardTo, sendParent, sendTo, type SendToAction } from "./actions/send.js";
8
+ export { stop, type StopAction } from "./actions/stop.js";
@@ -1,8 +1,8 @@
1
1
  import type { ActorRef, AnyEventObject, BaseActorRef, EventObject } from "../types.js";
2
2
  export { fromCallback, type CallbackActorLogic } from "./callback.js";
3
- export { fromEventObservable, fromObservable } from "./observable.js";
3
+ export { fromEventObservable, fromObservable, type ObservableActorLogic } from "./observable.js";
4
4
  export { fromPromise, type PromiseActorLogic } from "./promise.js";
5
- export { fromTransition } from "./transition.js";
5
+ export { fromTransition, type TransitionActorLogic } from "./transition.js";
6
6
  export declare function isActorRef(item: any): item is ActorRef<any>;
7
7
  export declare function toActorRef<TEvent extends EventObject, TSnapshot = any, TActorRefLike extends BaseActorRef<TEvent> = BaseActorRef<TEvent>>(actorRefLike: TActorRefLike): ActorRef<TEvent, TSnapshot> & Omit<TActorRefLike, keyof ActorRef<any, any>>;
8
8
  export declare function createEmptyActor(): ActorRef<AnyEventObject, undefined>;
@@ -4,4 +4,5 @@ export declare const NULL_EVENT = "";
4
4
  export declare const STATE_IDENTIFIER = "#";
5
5
  export declare const WILDCARD = "*";
6
6
  export declare const XSTATE_INIT = "xstate.init";
7
+ export declare const XSTATE_ERROR = "xstate.error";
7
8
  export declare const XSTATE_STOP = "xstate.stop";
@@ -1,26 +1,19 @@
1
- import { doneInvoke } from "./actions.js";
2
- import { Actor, ActorStatus, createActor, interpret, Interpreter, InterpreterStatus } from "./interpreter.js";
3
- import { createMachine } from "./Machine.js";
4
- import { mapState } from "./mapState.js";
5
- import { State } from "./State.js";
6
- import { StateNode } from "./StateNode.js";
7
- export { assign, type AssignAction } from "./actions/assign.js";
8
- export { cancel, type CancelAction } from "./actions/cancel.js";
9
- export { choose, type ChooseAction } from "./actions/choose.js";
10
- export { log, type LogAction } from "./actions/log.js";
11
- export { pure, type PureAction } from "./actions/pure.js";
12
- export { raise, type RaiseAction } from "./actions/raise.js";
13
- export { forwardTo, sendParent, sendTo, type SendToAction } from "./actions/send.js";
14
- export { stop, type StopAction } from "./actions/stop.js";
1
+ export * from "./actions.js";
2
+ export * from "./actors/index.js";
15
3
  export { SimulatedClock } from "./SimulatedClock.js";
4
+ export { type Spawner } from "./spawn.js";
16
5
  export { StateMachine } from "./StateMachine.js";
17
6
  export { getStateNodes } from "./stateUtils.js";
18
7
  export * from "./typegenTypes.js";
19
8
  export * from "./types.js";
20
9
  export { waitFor } from "./waitFor.js";
21
- export { fromCallback, fromEventObservable, fromObservable, fromPromise, fromTransition } from "./actors/index.js";
10
+ import { Actor, ActorStatus, createActor, interpret, Interpreter, InterpreterStatus } from "./interpreter.js";
11
+ import { createMachine } from "./Machine.js";
12
+ import { mapState } from "./mapState.js";
13
+ import { State } from "./State.js";
14
+ import { StateNode } from "./StateNode.js";
22
15
  export { matchesState, pathToStateValue, toObserver } from "./utils.js";
23
- export { Actor, ActorStatus, createActor, createMachine, doneInvoke, interpret, InterpreterStatus, mapState, State, StateNode, type Interpreter };
16
+ export { Actor, ActorStatus, createActor, createMachine, interpret, InterpreterStatus, mapState, State, StateNode, type Interpreter };
24
17
  export { and, not, or, stateIn } from "./guards.js";
25
18
  declare global {
26
19
  interface SymbolConstructor {
@@ -0,0 +1,25 @@
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 {
3
+ src: TSrc;
4
+ } ? 'id' extends keyof TActor ? [
5
+ options: {
6
+ id: TActor['id'];
7
+ systemId?: string;
8
+ input?: InputFrom<TActor['logic']>;
9
+ }
10
+ ] : [
11
+ options?: {
12
+ id?: string;
13
+ systemId?: string;
14
+ input?: InputFrom<TActor['logic']>;
15
+ }
16
+ ] : never;
17
+ export type Spawner<TActor extends ProvidedActor> = IsLiteralString<TActor['src']> extends true ? <TSrc extends TActor['src']>(logic: TSrc, ...[options]: SpawnOptions<TActor, TSrc>) => ActorRefFrom<(TActor & {
18
+ src: TSrc;
19
+ })['logic']> : <TLogic extends AnyActorLogic | string>(src: TLogic, options?: {
20
+ id?: string;
21
+ systemId?: string;
22
+ input?: unknown;
23
+ }) => TLogic extends string ? AnyActorRef : ActorRefFrom<TLogic>;
24
+ export declare function createSpawner(actorContext: AnyActorContext, { machine, context }: AnyState, event: AnyEventObject, spawnedChildren: Record<string, AnyActorRef>): Spawner<any>;
25
+ export {};
@@ -17,7 +17,7 @@ export declare function getCandidates<TEvent extends EventObject>(stateNode: Sta
17
17
  export declare function getDelayedTransitions(stateNode: AnyStateNode): Array<DelayedTransitionDefinition<MachineContext, EventObject>>;
18
18
  export declare function formatTransition<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, descriptor: string, transitionConfig: AnyTransitionConfig): AnyTransitionDefinition;
19
19
  export declare function formatTransitions<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode): Map<string, TransitionDefinition<TContext, TEvent>[]>;
20
- export declare function formatInitialTransition<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, _target: SingleOrArray<string> | InitialTransitionConfig<TContext, TEvent, TODO, TODO, TODO>): InitialTransitionDefinition<TContext, TEvent>;
20
+ export declare function formatInitialTransition<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, _target: SingleOrArray<string> | InitialTransitionConfig<TContext, TEvent, TODO, TODO, TODO, TODO>): InitialTransitionDefinition<TContext, TEvent>;
21
21
  export declare function resolveTarget(stateNode: AnyStateNode, targets: ReadonlyArray<string | AnyStateNode> | undefined): ReadonlyArray<AnyStateNode> | undefined;
22
22
  export declare function getInitialStateNodes(stateNode: AnyStateNode): Array<AnyStateNode>;
23
23
  /**
@@ -27,9 +27,9 @@ export interface TypegenMeta extends TypegenEnabled {
27
27
  /**
28
28
  * A map for the internal events of the machine.
29
29
  *
30
- * key: 'done.invoke.myActor'
30
+ * key: 'xstate.done.actor.myActor'
31
31
  * value: {
32
- * type: 'done.invoke.myActor';
32
+ * type: 'xstate.done.actor.myActor';
33
33
  * data: unknown;
34
34
  * __tip: 'Declare the type in event types!';
35
35
  * }
@@ -39,7 +39,7 @@ export interface TypegenMeta extends TypegenEnabled {
39
39
  * Maps the src of the invoked actor to the event type that includes its known id
40
40
  *
41
41
  * key: 'invokeSrc'
42
- * value: 'done.invoke.invokeName'
42
+ * value: 'xstate.done.actor.invokeName'
43
43
  */
44
44
  invokeSrcNameMap: Record<string, string>;
45
45
  /**
@@ -107,7 +107,7 @@ export interface MarkAllImplementationsAsProvided<TResolvedTypesMeta> {
107
107
  resolved: Prop<TResolvedTypesMeta, 'resolved'> & AllImplementationsProvided;
108
108
  }
109
109
  type GenerateActorEvents<TActor extends ProvidedActor, TInvokeSrcNameMap> = string extends TActor['src'] ? never : TActor extends any ? {
110
- type: TActor['id'] extends string ? `done.invoke.${TActor['id']}` : TActor['src'] extends keyof TInvokeSrcNameMap ? `done.invoke.${TInvokeSrcNameMap[TActor['src']] & string}` : `done.invoke.${string}`;
110
+ type: TActor['id'] extends string ? `xstate.done.actor.${TActor['id']}` : TActor['src'] extends keyof TInvokeSrcNameMap ? `xstate.done.actor.${TInvokeSrcNameMap[TActor['src']] & string}` : `xstate.done.actor.${string}`;
111
111
  output: OutputFrom<TActor['logic']>;
112
112
  } : never;
113
113
  type MergeWithInternalEvents<TIndexedEvents, TInternalEvents> = TIndexedEvents & Pick<TInternalEvents, Exclude<keyof TInternalEvents, keyof TIndexedEvents>>;
@@ -5,6 +5,8 @@ import type { StateMachine } from "./StateMachine.js";
5
5
  import { TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, MarkAllImplementationsAsProvided, AreAllImplementationsAssumedToBeProvided } from "./typegenTypes.js";
6
6
  import { PromiseActorLogic } from "./actors/promise.js";
7
7
  import { Guard, GuardPredicate, UnknownGuard } from "./guards.js";
8
+ import { Spawner } from "./spawn.js";
9
+ import { AssignArgs } from "./actions/assign.js";
8
10
  /**
9
11
  * `T | unknown` reduces to `unknown` and that can be problematic when it comes to contextual typing.
10
12
  * It especially is a problem when the union has a function member, like here:
@@ -68,25 +70,17 @@ export interface ActionArgs<TContext extends MachineContext, TEvent extends Even
68
70
  }
69
71
  export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer TInput> ? TInput : never;
70
72
  export type OutputFrom<T extends AnyActorLogic> = T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer _TInput, infer TOutput> ? TOutput : never;
71
- export type Spawner = <T extends AnyActorLogic | string>(// TODO: read string from machine logic keys
72
- logic: T, options?: Partial<{
73
- id: string;
74
- systemId?: string;
75
- input: T extends AnyActorLogic ? InputFrom<T> : any;
76
- }>) => ActorRefFrom<T>;
77
- export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> extends ActionArgs<TContext, TExpressionEvent, TExpressionAction> {
78
- spawn: Spawner;
79
- }
80
- export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
73
+ 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> = {
81
74
  (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>): void;
82
75
  _out_TEvent?: TEvent;
76
+ _out_TActor?: TActor;
83
77
  _out_TAction?: TAction;
84
78
  _out_TGuard?: TGuard;
85
79
  _out_TDelay?: TDelay;
86
80
  };
87
- export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> {
81
+ export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> {
88
82
  guard?: Guard<TContext, TExpressionEvent, undefined, TGuard>;
89
- actions: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction, TGuard, TDelay>;
83
+ actions: Actions<TContext, TExpressionEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay>;
90
84
  }
91
85
  export type NoRequiredParams<T extends ParameterizedObject> = T extends any ? {
92
86
  type: T['type'];
@@ -99,9 +93,9 @@ export type WithDynamicParams<TContext extends MachineContext, TExpressionEvent
99
93
  event: TExpressionEvent;
100
94
  }) => T['params']);
101
95
  }, undefined extends T['params'] ? false : true> : never;
102
- export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = NoRequiredParams<TAction> | WithDynamicParams<TContext, TExpressionEvent, TAction> | ActionFunction<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction, TGuard, TDelay>;
103
- export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject | undefined, ParameterizedObject, ParameterizedObject, string>;
104
- export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent, TExpressionAction, TAction, TGuard, TDelay>>;
96
+ 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>;
97
+ export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject | undefined, ProvidedActor, ParameterizedObject, ParameterizedObject, string>;
98
+ 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>>;
105
99
  export type StateKey = string | AnyState;
106
100
  export interface StateValueMap {
107
101
  [key: string]: StateValue;
@@ -114,19 +108,19 @@ export interface StateValueMap {
114
108
  */
115
109
  export type StateValue = string | StateValueMap;
116
110
  export type TransitionTarget = SingleOrArray<string>;
117
- export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
111
+ export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
118
112
  guard?: Guard<TContext, TExpressionEvent, undefined, TGuard>;
119
- actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TAction, TGuard, TDelay>;
113
+ actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay>;
120
114
  reenter?: boolean;
121
115
  target?: TransitionTarget | undefined;
122
116
  meta?: Record<string, any>;
123
117
  description?: string;
124
118
  }
125
- export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> extends TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay> {
119
+ export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> extends TransitionConfig<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay> {
126
120
  target: TransitionTarget;
127
121
  }
128
- export type AnyTransitionConfig = TransitionConfig<any, any, any, any, any, any>;
129
- export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
122
+ export type AnyTransitionConfig = TransitionConfig<any, any, any, any, any, any, any>;
123
+ export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
130
124
  id: string;
131
125
  systemId: string | undefined;
132
126
  /**
@@ -137,18 +131,18 @@ export interface InvokeDefinition<TContext extends MachineContext, TEvent extend
137
131
  /**
138
132
  * The transition to take upon the invoked child machine reaching its final top-level state.
139
133
  */
140
- onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>, DoneInvokeEvent<any>, TAction, TGuard, TDelay>>;
134
+ onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneActorEvent<unknown>, TEvent, TActor, TAction, TGuard, TDelay>>;
141
135
  /**
142
136
  * The transition to take upon the invoked child machine sending an error event.
143
137
  */
144
- onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorEvent<any>, ErrorEvent<any>, TAction, TGuard, TDelay>>;
145
- onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>, SnapshotEvent<any>, TAction, TGuard, TDelay>>;
146
- toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TAction, TGuard, TDelay>, 'onDone' | 'onError' | 'toJSON'>;
138
+ onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
139
+ onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<unknown>, TEvent, TActor, TAction, TGuard, TDelay>>;
140
+ toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TActor, TAction, TGuard, TDelay>, 'onDone' | 'onError' | 'toJSON'>;
147
141
  }
148
142
  type Delay<TDelay extends string> = TDelay | number;
149
- export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
150
- [K in Delay<TDelay>]?: string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay>>;
151
- } | Array<TransitionConfig<TContext, TEvent, TEvent, TAction, TGuard, TDelay> & {
143
+ export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
144
+ [K in Delay<TDelay>]?: string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
145
+ } | Array<TransitionConfig<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay> & {
152
146
  delay: Delay<TDelay> | ((args: UnifiedArg<TContext, TEvent>) => Delay<TDelay>);
153
147
  }>;
154
148
  export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
@@ -163,15 +157,15 @@ export type StatesDefinition<TContext extends MachineContext, TEvent extends Eve
163
157
  [K in string]: StateNodeDefinition<TContext, TEvent>;
164
158
  };
165
159
  export type TransitionConfigTarget = string | undefined;
166
- export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TAction, TGuard, TDelay>>;
167
- export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
168
- [K in EventDescriptor<TEvent>]?: TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TAction, TGuard, TDelay>;
160
+ export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
161
+ export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
162
+ [K in EventDescriptor<TEvent>]?: TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TActor, TAction, TGuard, TDelay>;
169
163
  };
170
164
  type PartialEventDescriptor<TEventType extends string> = TEventType extends `${infer TLeading}.${infer TTail}` ? `${TLeading}.*` | `${TLeading}.${PartialEventDescriptor<TTail>}` : never;
171
165
  export type EventDescriptor<TEvent extends EventObject> = TEvent['type'] | PartialEventDescriptor<TEvent['type']> | '*';
172
166
  type NormalizeDescriptor<TDescriptor extends string> = TDescriptor extends '*' ? string : TDescriptor extends `${infer TLeading}.*` ? `${TLeading}.${string}` : TDescriptor;
173
- type IsLiteralString<T extends string> = string extends T ? false : true;
174
- type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = TActor extends {
167
+ export type IsLiteralString<T extends string> = string extends T ? false : true;
168
+ type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TSpecificActor extends ProvidedActor> = TSpecificActor extends {
175
169
  src: infer TSrc;
176
170
  } ? Compute<{
177
171
  systemId?: string;
@@ -179,22 +173,22 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
179
173
  * The source of the machine to be invoked, or the machine itself.
180
174
  */
181
175
  src: TSrc;
182
- input?: Mapper<TContext, TEvent, InputFrom<TActor['logic']>> | InputFrom<TActor['logic']>;
176
+ input?: Mapper<TContext, TEvent, InputFrom<TSpecificActor['logic']>> | InputFrom<TSpecificActor['logic']>;
183
177
  /**
184
178
  * The transition to take upon the invoked child machine reaching its final top-level state.
185
179
  */
186
- onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent, TAction, TGuard, TDelay>>;
180
+ onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneActorEvent<OutputFrom<TSpecificActor['logic']>>, TEvent, TActor, TAction, TGuard, TDelay>>;
187
181
  /**
188
182
  * The transition to take upon the invoked child machine sending an error event.
189
183
  */
190
- onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard, TDelay>>;
191
- onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard, TDelay>>;
192
- } & (TActor['id'] extends string ? {
184
+ onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
185
+ onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<SnapshotFrom<TSpecificActor['logic']>>, TEvent, TActor, TAction, TGuard, TDelay>>;
186
+ } & (TSpecificActor['id'] extends string ? {
193
187
  /**
194
188
  * The unique identifier for the invoked machine. If not specified, this
195
189
  * will be the machine's own `id`, or the URL (from `src`).
196
190
  */
197
- id: TActor['id'];
191
+ id: TSpecificActor['id'];
198
192
  } : {
199
193
  /**
200
194
  * The unique identifier for the invoked machine. If not specified, this
@@ -202,7 +196,7 @@ type DistributeActors<TContext extends MachineContext, TEvent extends EventObjec
202
196
  */
203
197
  id?: string;
204
198
  })> : never;
205
- export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor, TAction, TGuard, TDelay> : {
199
+ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor, TAction, TGuard, TDelay, TActor> : {
206
200
  /**
207
201
  * The unique identifier for the invoked machine. If not specified, this
208
202
  * will be the machine's own `id`, or the URL (from `src`).
@@ -217,19 +211,21 @@ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventOb
217
211
  /**
218
212
  * The transition to take upon the invoked child machine reaching its final top-level state.
219
213
  */
220
- onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent, TAction, TGuard, TDelay>>;
214
+ onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneActorEvent<any>, // TODO: consider replacing with `unknown`
215
+ TEvent, TActor, TAction, TGuard, TDelay>>;
221
216
  /**
222
217
  * The transition to take upon the invoked child machine sending an error event.
223
218
  */
224
- onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent, TAction, TGuard, TDelay>>;
225
- onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TAction, TGuard, TDelay>>;
219
+ onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
220
+ onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, // TODO: consider replacing with `unknown`
221
+ TEvent, TActor, TAction, TGuard, TDelay>>;
226
222
  };
227
223
  export type AnyInvokeConfig = InvokeConfig<any, any, any, any, any, any>;
228
224
  export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput> {
229
225
  /**
230
226
  * The initial state transition.
231
227
  */
232
- initial?: InitialTransitionConfig<TContext, TEvent, TAction, TGuard, TDelay> | SingleOrArray<string> | undefined;
228
+ initial?: InitialTransitionConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay> | SingleOrArray<string> | undefined;
233
229
  /**
234
230
  * The type of this state node:
235
231
  *
@@ -257,30 +253,30 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
257
253
  /**
258
254
  * The mapping of event types to their potential transition(s).
259
255
  */
260
- on?: TransitionsConfig<TContext, TEvent, TAction, TGuard, TDelay>;
256
+ on?: TransitionsConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay>;
261
257
  /**
262
258
  * The action(s) to be executed upon entering the state node.
263
259
  */
264
- entry?: Actions<TContext, TEvent, TEvent, undefined, TAction, TGuard, TDelay>;
260
+ entry?: Actions<TContext, TEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay>;
265
261
  /**
266
262
  * The action(s) to be executed upon exiting the state node.
267
263
  */
268
- exit?: Actions<TContext, TEvent, TEvent, undefined, TAction, TGuard, TDelay>;
264
+ exit?: Actions<TContext, TEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay>;
269
265
  /**
270
266
  * The potential transition(s) to be taken upon reaching a final child state node.
271
267
  *
272
268
  * This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
273
269
  */
274
- onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject, DoneEventObject, TAction, TGuard, TDelay>> | undefined;
270
+ onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneStateEvent, TEvent, TActor, TAction, TGuard, TDelay>> | undefined;
275
271
  /**
276
272
  * The mapping (or array) of delays (in milliseconds) to their potential transition(s).
277
273
  * The delayed transitions are taken after the specified delay in an interpreter.
278
274
  */
279
- after?: DelayedTransitions<TContext, TEvent, TAction, TGuard, TDelay>;
275
+ after?: DelayedTransitions<TContext, TEvent, TActor, TAction, TGuard, TDelay>;
280
276
  /**
281
277
  * An eventless transition that is always taken when this state node is active.
282
278
  */
283
- always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction, TGuard, TDelay>;
279
+ always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay>;
284
280
  /**
285
281
  * @private
286
282
  */
@@ -290,7 +286,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
290
286
  */
291
287
  meta?: any;
292
288
  /**
293
- * The output data sent with the "done.state._id_" event if this is a final state node.
289
+ * The output data sent with the "xstate.done.state._id_" event if this is a final state node.
294
290
  *
295
291
  * The output data will be evaluated with the current `context` and placed on the `.data` property
296
292
  * of the event.
@@ -334,7 +330,7 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
334
330
  meta: any;
335
331
  order: number;
336
332
  output?: FinalStateNodeConfig<TContext, TEvent>['output'];
337
- invoke: Array<InvokeDefinition<TContext, TEvent, TODO, TODO, TODO>>;
333
+ invoke: Array<InvokeDefinition<TContext, TEvent, TODO, TODO, TODO, TODO>>;
338
334
  description?: string;
339
335
  tags: string[];
340
336
  }
@@ -360,16 +356,16 @@ export interface HistoryStateNodeConfig<TContext extends MachineContext, TEvent
360
356
  export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends AtomicStateNodeConfig<TContext, TEvent> {
361
357
  type: 'final';
362
358
  /**
363
- * The data to be sent with the "done.state.<id>" event. The data can be
359
+ * The data to be sent with the "xstate.done.state.<id>" event. The data can be
364
360
  * static or dynamic (based on assigners).
365
361
  */
366
362
  output?: Mapper<TContext, TEvent, any>;
367
363
  }
368
364
  export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO, TODO, TODO>;
369
- export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> = {
365
+ export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string> = {
370
366
  [K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
371
367
  type: K;
372
- } ? TAction : never, TAction, TGuard, TDelay>;
368
+ } ? TAction : never, TActor, TAction, TGuard, TDelay>;
373
369
  };
374
370
  type GuardMap<TContext extends MachineContext, TEvent extends EventObject, TGuard extends ParameterizedObject> = {
375
371
  [K in TGuard['type']]?: GuardPredicate<TContext, TEvent, TGuard extends {
@@ -378,9 +374,9 @@ type GuardMap<TContext extends MachineContext, TEvent extends EventObject, TGuar
378
374
  };
379
375
  export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string, DelayConfig<TContext, TEvent, TAction>>;
380
376
  export type DelayConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = number | DelayExpr<TContext, TExpressionEvent, TExpressionAction>;
381
- export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject> {
377
+ export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject> {
382
378
  guards: GuardMap<TContext, TEvent, TGuard>;
383
- actions: ActionFunctionMap<TContext, TEvent, TAction>;
379
+ actions: ActionFunctionMap<TContext, TEvent, TActor, TAction>;
384
380
  actors: Record<string, AnyActorLogic | {
385
381
  src: AnyActorLogic;
386
382
  input: Mapper<TContext, TEvent, any> | any;
@@ -388,8 +384,8 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
388
384
  delays: DelayFunctionMap<TContext, TEvent, TAction>;
389
385
  }
390
386
  type MaybeNarrowedEvent<TIndexedEvents, TCausingLookup, K> = Cast<Prop<TIndexedEvents, K extends keyof TCausingLookup ? TCausingLookup[K] : TIndexedEvents[keyof TIndexedEvents]>, EventObject>;
391
- type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
392
- [K in keyof TIndexedActions]?: ActionFunction<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActions, K>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, Cast<TIndexedActions[K], ParameterizedObject>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>, Cast<Prop<TIndexedDelays, keyof TIndexedDelays>, ParameterizedObject>['type']>;
387
+ 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'>> = {
388
+ [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']>;
393
389
  };
394
390
  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'>> = {
395
391
  [K in keyof TIndexedActors]?: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic> | {
@@ -423,9 +419,9 @@ type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolve
423
419
  }>;
424
420
  export type InternalMachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TDelay extends string, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = Compute<GenerateActionsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateActorsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations>>;
425
421
  export type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, TEvent, TActor, TAction, TDelay, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag>>;
426
- type InitialContext<TContext extends MachineContext, TInput> = TContext | ContextFactory<TContext, TInput>;
427
- export type ContextFactory<TContext extends MachineContext, TInput> = ({ spawn, input }: {
428
- spawn: Spawner;
422
+ type InitialContext<TContext extends MachineContext, TActor extends ProvidedActor, TInput> = TContext | ContextFactory<TContext, TActor, TInput>;
423
+ export type ContextFactory<TContext extends MachineContext, TActor extends ProvidedActor, TInput> = ({ spawn, input }: {
424
+ spawn: Spawner<TActor>;
429
425
  input: TInput;
430
426
  }) => TContext;
431
427
  type RootStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput> = Omit<StateNodeConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TOutput>, 'states'> & {
@@ -441,9 +437,9 @@ export type MachineConfig<TContext extends MachineContext, TEvent extends EventO
441
437
  version?: string;
442
438
  types?: MachineTypes<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TInput, TOutput, TTypesMeta>;
443
439
  }) & (Equals<TContext, MachineContext> extends true ? {
444
- context?: InitialContext<LowInfer<TContext>, TInput>;
440
+ context?: InitialContext<LowInfer<TContext>, TActor, TInput>;
445
441
  } : {
446
- context: InitialContext<LowInfer<TContext>, TInput>;
442
+ context: InitialContext<LowInfer<TContext>, TActor, TInput>;
447
443
  });
448
444
  export interface ProvidedActor {
449
445
  src: string;
@@ -470,40 +466,22 @@ export type HistoryValue<TContext extends MachineContext, TEvent extends EventOb
470
466
  export type AnyHistoryValue = HistoryValue<any, any>;
471
467
  export type StateFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = T extends AnyStateMachine ? ReturnType<T['transition']> : T extends (...args: any[]) => AnyStateMachine ? ReturnType<ReturnType<T>['transition']> : never;
472
468
  export type Transitions<TContext extends MachineContext, TEvent extends EventObject> = Array<TransitionDefinition<TContext, TEvent>>;
473
- export declare enum ConstantPrefix {
474
- After = "xstate.after",
475
- DoneState = "done.state",
476
- DoneInvoke = "done.invoke",
477
- ErrorExecution = "error.execution",
478
- ErrorCommunication = "error.communication",
479
- ErrorPlatform = "error.platform",
480
- ErrorCustom = "xstate.error"
481
- }
482
- export interface DoneInvokeEvent<TOutput> {
483
- type: `done.invoke.${string}`;
469
+ export interface DoneActorEvent<TOutput = unknown> {
470
+ type: `xstate.done.actor.${string}`;
484
471
  output: TOutput;
485
472
  }
486
- export interface ErrorEvent<TErrorData> {
487
- type: `error.${string}`;
473
+ export interface ErrorActorEvent<TErrorData = unknown> extends EventObject {
474
+ type: `xstate.error.actor.${string}`;
488
475
  data: TErrorData;
489
476
  }
490
- export interface SnapshotEvent<TData> {
477
+ export interface SnapshotEvent<TData = unknown> extends EventObject {
491
478
  type: `xstate.snapshot.${string}`;
492
479
  data: TData;
493
480
  }
494
- export interface ErrorExecutionEvent extends EventObject {
495
- src: string;
496
- type: ConstantPrefix.ErrorExecution;
497
- data: any;
498
- }
499
- export interface ErrorPlatformEvent extends EventObject {
500
- data: any;
501
- }
502
- export interface DoneEventObject extends EventObject {
503
- output?: any;
504
- toString(): string;
481
+ export interface DoneStateEvent<TOutput = unknown> extends EventObject {
482
+ type: `xstate.done.state.${string}`;
483
+ output: TOutput;
505
484
  }
506
- export type DoneEvent = DoneEventObject & string;
507
485
  export type DelayExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => number;
508
486
  export type LogExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => unknown;
509
487
  export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TExpressionAction>) => TSentEvent;
@@ -523,10 +501,10 @@ export interface RaiseActionParams<TContext extends MachineContext, TExpressionE
523
501
  export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TSentEvent extends EventObject, TDelay extends string> extends SendToActionOptions<TContext, TExpressionEvent, TExpressionAction, TDelay> {
524
502
  event: TSentEvent | SendExpr<TContext, TExpressionEvent, TExpressionAction, TSentEvent>;
525
503
  }
526
- export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction>) => Partial<TContext>;
527
- export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction>) => TContext[TKey];
528
- export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined> = {
529
- [K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TExpressionAction, K> | TContext[K];
504
+ export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TActor extends ProvidedActor> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction, TActor>) => Partial<TContext>;
505
+ export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TActor extends ProvidedActor, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent, TExpressionAction, TActor>) => TContext[TKey];
506
+ export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TExpressionAction extends ParameterizedObject | undefined, TActor extends ProvidedActor> = {
507
+ [K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TExpressionAction, TActor, K> | TContext[K];
530
508
  };
531
509
  export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TResult> = (args: {
532
510
  context: TContext;
@@ -536,7 +514,7 @@ export type Mapper<TContext extends MachineContext, TEvent extends EventObject,
536
514
  export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
537
515
  [K in keyof TParams]?: Mapper<TContext, TEvent, TParams[K]> | TParams[K];
538
516
  };
539
- export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO, TODO, TODO>, 'target' | 'guard'> {
517
+ export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO, TODO, TODO, TODO>, 'target' | 'guard'> {
540
518
  target: ReadonlyArray<StateNode<TContext, TEvent>> | undefined;
541
519
  source: StateNode<TContext, TEvent>;
542
520
  actions: readonly UnknownAction[];
@@ -1,6 +1,6 @@
1
1
  import { AnyActorLogic, AnyState } from "./index.js";
2
2
  import type { StateNode } from "./StateNode.js";
3
- import type { ActorLogic, AnyEventObject, EventObject, MachineContext, Mapper, Observer, ErrorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfigTarget, AnyActorRef, AnyTransitionConfig } from "./types.js";
3
+ import type { ActorLogic, AnyEventObject, EventObject, MachineContext, Mapper, Observer, ErrorActorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfigTarget, AnyActorRef, AnyTransitionConfig } from "./types.js";
4
4
  export declare function keys<T extends object>(value: T): Array<keyof T & string>;
5
5
  export declare function matchesState(parentStateId: StateValue, childStateId: StateValue): boolean;
6
6
  export declare function toStatePath(stateId: string | string[]): string[];
@@ -34,7 +34,7 @@ export declare function partition<T, A extends T, B extends T>(items: T[], predi
34
34
  export declare function isArray(value: any): value is readonly any[];
35
35
  export declare function isObservable<T>(value: any): value is Subscribable<T>;
36
36
  export declare const uniqueId: () => string;
37
- export declare function isErrorEvent(event: AnyEventObject): event is ErrorEvent<any>;
37
+ export declare function isErrorActorEvent(event: AnyEventObject): event is ErrorActorEvent;
38
38
  export declare function toTransitionConfigArray<TContext extends MachineContext, TEvent extends EventObject>(configLike: SingleOrArray<AnyTransitionConfig | TransitionConfigTarget>): Array<AnyTransitionConfig>;
39
39
  export declare function normalizeTarget<TContext extends MachineContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, TEvent>> | undefined): ReadonlyArray<string | StateNode<TContext, TEvent>> | undefined;
40
40
  export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;