xstate 5.32.2 → 6.0.0-alpha.10

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 (121) hide show
  1. package/README.md +25 -24
  2. package/dist/StateMachine-0aa98f54.development.esm.js +746 -0
  3. package/dist/StateMachine-aef700df.cjs.js +732 -0
  4. package/dist/StateMachine-d4931336.esm.js +729 -0
  5. package/dist/StateMachine-da872dde.development.cjs.js +749 -0
  6. package/dist/declarations/src/State.d.ts +11 -13
  7. package/dist/declarations/src/StateMachine.d.ts +40 -26
  8. package/dist/declarations/src/StateNode.d.ts +18 -54
  9. package/dist/declarations/src/actions.d.ts +14 -9
  10. package/dist/declarations/src/actors/callback.d.ts +42 -16
  11. package/dist/declarations/src/actors/index.d.ts +9 -6
  12. package/dist/declarations/src/actors/listener.d.ts +18 -0
  13. package/dist/declarations/src/actors/logic.d.ts +105 -0
  14. package/dist/declarations/src/actors/observable.d.ts +72 -27
  15. package/dist/declarations/src/actors/promise.d.ts +133 -48
  16. package/dist/declarations/src/actors/subscription.d.ts +22 -0
  17. package/dist/declarations/src/createActor.d.ts +33 -34
  18. package/dist/declarations/src/createMachine.d.ts +38 -7
  19. package/dist/declarations/src/createMachineFromConfig.d.ts +177 -0
  20. package/dist/declarations/src/graph/graph.d.ts +6 -4
  21. package/dist/declarations/src/graph/shortestPaths.d.ts +2 -2
  22. package/dist/declarations/src/graph/simplePaths.d.ts +2 -2
  23. package/dist/declarations/src/index.d.ts +13 -9
  24. package/dist/declarations/src/inspection.d.ts +84 -30
  25. package/dist/declarations/src/mapState.d.ts +4 -2
  26. package/dist/declarations/src/schema.types.d.ts +90 -0
  27. package/dist/declarations/src/serialize.d.ts +50 -0
  28. package/dist/declarations/src/setup.d.ts +396 -136
  29. package/dist/declarations/src/spawn.d.ts +7 -32
  30. package/dist/declarations/src/stateUtils.d.ts +22 -19
  31. package/dist/declarations/src/system.d.ts +8 -7
  32. package/dist/declarations/src/transition.d.ts +8 -5
  33. package/dist/declarations/src/transitionActions.d.ts +4 -0
  34. package/dist/declarations/src/types.d.ts +494 -429
  35. package/dist/declarations/src/types.v6.d.ts +423 -0
  36. package/dist/declarations/src/utils.d.ts +5 -3
  37. package/dist/index-219cb621.development.cjs.js +4476 -0
  38. package/dist/index-2f2fbd9b.development.esm.js +4421 -0
  39. package/dist/index-559ceab3.cjs.js +4437 -0
  40. package/dist/index-8828376f.esm.js +4382 -0
  41. package/dist/xstate-actors.cjs.js +12 -838
  42. package/dist/xstate-actors.cjs.mjs +10 -5
  43. package/dist/xstate-actors.development.cjs.js +12 -838
  44. package/dist/xstate-actors.development.cjs.mjs +10 -5
  45. package/dist/xstate-actors.development.esm.js +1 -836
  46. package/dist/xstate-actors.esm.js +1 -836
  47. package/dist/xstate-actors.umd.min.js +1 -1
  48. package/dist/xstate-actors.umd.min.js.map +1 -1
  49. package/dist/xstate-graph.cjs.js +18 -29
  50. package/dist/xstate-graph.development.cjs.js +18 -29
  51. package/dist/xstate-graph.development.esm.js +15 -26
  52. package/dist/xstate-graph.esm.js +15 -26
  53. package/dist/xstate-graph.umd.min.js +1 -1
  54. package/dist/xstate-graph.umd.min.js.map +1 -1
  55. package/dist/xstate.cjs.js +1477 -122
  56. package/dist/xstate.cjs.mjs +19 -22
  57. package/dist/xstate.development.cjs.js +1477 -122
  58. package/dist/xstate.development.cjs.mjs +19 -22
  59. package/dist/xstate.development.esm.js +1442 -86
  60. package/dist/xstate.esm.js +1442 -86
  61. package/dist/xstate.umd.min.js +1 -1
  62. package/dist/xstate.umd.min.js.map +1 -1
  63. package/package.json +3 -47
  64. package/dist/StateMachine-23c204bb.development.esm.js +0 -566
  65. package/dist/StateMachine-67a0f463.development.cjs.js +0 -569
  66. package/dist/StateMachine-94d215e3.cjs.js +0 -563
  67. package/dist/StateMachine-d1d80308.esm.js +0 -560
  68. package/dist/assign-43b1b558.development.esm.js +0 -133
  69. package/dist/assign-54b312bc.esm.js +0 -127
  70. package/dist/assign-b5bc78f7.cjs.js +0 -129
  71. package/dist/assign-f8f66278.development.cjs.js +0 -135
  72. package/dist/declarations/src/actions/assign.d.ts +0 -45
  73. package/dist/declarations/src/actions/cancel.d.ts +0 -39
  74. package/dist/declarations/src/actions/emit.d.ts +0 -44
  75. package/dist/declarations/src/actions/enqueueActions.d.ts +0 -57
  76. package/dist/declarations/src/actions/log.d.ts +0 -16
  77. package/dist/declarations/src/actions/raise.d.ts +0 -21
  78. package/dist/declarations/src/actions/send.d.ts +0 -42
  79. package/dist/declarations/src/actions/spawnChild.d.ts +0 -34
  80. package/dist/declarations/src/actions/stopChild.d.ts +0 -19
  81. package/dist/declarations/src/actors/transition.d.ts +0 -143
  82. package/dist/declarations/src/dev/index.d.ts +0 -14
  83. package/dist/declarations/src/guards.d.ts +0 -128
  84. package/dist/log-9b02c355.esm.js +0 -401
  85. package/dist/log-c94995c7.cjs.js +0 -409
  86. package/dist/log-d9f3f459.development.cjs.js +0 -437
  87. package/dist/log-db444cad.development.esm.js +0 -429
  88. package/dist/raise-235108c6.esm.js +0 -2762
  89. package/dist/raise-45f11c00.development.esm.js +0 -2824
  90. package/dist/raise-c445379d.cjs.js +0 -2817
  91. package/dist/raise-eca73993.development.cjs.js +0 -2879
  92. package/dist/xstate-actions.cjs.d.mts +0 -2
  93. package/dist/xstate-actions.cjs.d.ts +0 -2
  94. package/dist/xstate-actions.cjs.js +0 -23
  95. package/dist/xstate-actions.cjs.mjs +0 -14
  96. package/dist/xstate-actions.development.cjs.js +0 -23
  97. package/dist/xstate-actions.development.cjs.mjs +0 -14
  98. package/dist/xstate-actions.development.esm.js +0 -4
  99. package/dist/xstate-actions.esm.js +0 -4
  100. package/dist/xstate-actions.umd.min.js +0 -2
  101. package/dist/xstate-actions.umd.min.js.map +0 -1
  102. package/dist/xstate-dev.cjs.d.mts +0 -2
  103. package/dist/xstate-dev.cjs.d.ts +0 -2
  104. package/dist/xstate-dev.cjs.js +0 -48
  105. package/dist/xstate-dev.cjs.mjs +0 -5
  106. package/dist/xstate-dev.development.cjs.js +0 -51
  107. package/dist/xstate-dev.development.cjs.mjs +0 -5
  108. package/dist/xstate-dev.development.esm.js +0 -45
  109. package/dist/xstate-dev.esm.js +0 -42
  110. package/dist/xstate-dev.umd.min.js +0 -2
  111. package/dist/xstate-dev.umd.min.js.map +0 -1
  112. package/dist/xstate-guards.cjs.d.mts +0 -2
  113. package/dist/xstate-guards.cjs.d.ts +0 -2
  114. package/dist/xstate-guards.cjs.js +0 -14
  115. package/dist/xstate-guards.cjs.mjs +0 -7
  116. package/dist/xstate-guards.development.cjs.js +0 -14
  117. package/dist/xstate-guards.development.cjs.mjs +0 -7
  118. package/dist/xstate-guards.development.esm.js +0 -2
  119. package/dist/xstate-guards.esm.js +0 -2
  120. package/dist/xstate-guards.umd.min.js +0 -2
  121. package/dist/xstate-guards.umd.min.js.map +0 -1
@@ -0,0 +1,423 @@
1
+ import { StandardSchemaV1 } from "./schema.types.js";
2
+ import { MachineSnapshot } from "./State.js";
3
+ import { Action, ActorLogic, ActorRef, ActorRefFromLogic, ActorSelf, AnyActorLogic, AnyActorRef, Compute, DoneActorEvent, DoNotInfer, EventDescriptor, EventObject, ExtractEvent, InitialContext, InputFrom, IsNever, MetaObject, NonReducibleUnknown, OutputFrom, SingleOrArray, SnapshotEvent, StateValue, TODO, TransitionConfigFunction, Values, AnyStateNode, SystemRegistry } from "./types.js";
4
+ import { MachineContext, Mapper } from "./types.js";
5
+ import { LowInfer } from "./types.js";
6
+ import { DoneStateEvent } from "./types.js";
7
+ export type InferOutput<T extends StandardSchemaV1, U> = Compute<StandardSchemaV1.InferOutput<T> extends U ? StandardSchemaV1.InferOutput<T> : never>;
8
+ /**
9
+ * Event payloads from schemas (e.g. Zod) are often inferred as optional in
10
+ * output types. Wrapping in Required<> ensures properties defined in the schema
11
+ * are required on the event.
12
+ */
13
+ export type InferEvents<TEventSchemaMap extends Record<string, StandardSchemaV1>> = Values<{
14
+ [K in keyof TEventSchemaMap & string]: StandardSchemaV1.InferOutput<TEventSchemaMap[K]> extends infer O ? unknown extends O ? O & {
15
+ type: K;
16
+ } : string extends keyof O ? [O[string]] extends [never] ? {
17
+ type: K;
18
+ } : Required<O> & {
19
+ type: K;
20
+ } : Required<O> & {
21
+ type: K;
22
+ } : never;
23
+ }>;
24
+ export type InferChildren<TChildrenSchemaMap extends Record<string, StandardSchemaV1>> = string extends keyof TChildrenSchemaMap ? {} : {
25
+ [K in keyof TChildrenSchemaMap & string]?: StandardSchemaV1.InferOutput<TChildrenSchemaMap[K]> extends AnyActorRef ? NormalizeActorRef<StandardSchemaV1.InferOutput<TChildrenSchemaMap[K]>> : never;
26
+ };
27
+ type NormalizeActorRef<TActorRef> = TActorRef extends ActorRef<infer TSnapshot, infer TEvent, infer TEmitted, infer TSendEvent> ? ActorRef<TSnapshot, TEvent, TEmitted, TSendEvent> : never;
28
+ type DistributiveOmit<T, K extends keyof any> = T extends any ? Omit<T, K> : never;
29
+ type InternalEventDescriptorFor<TEvent extends EventObject> = [TEvent] extends [
30
+ never
31
+ ] ? string : EventDescriptor<TEvent>;
32
+ /**
33
+ * Runtime options for state machine execution.
34
+ *
35
+ * @example
36
+ *
37
+ * ```ts
38
+ * const machine = createMachine({
39
+ * // ... machine config
40
+ * options: {
41
+ * maxIterations: 5000
42
+ * // other runtime options can be added here
43
+ * }
44
+ * });
45
+ * ```
46
+ */
47
+ export interface MachineOptions {
48
+ /**
49
+ * Maximum number of microsteps allowed before throwing an infinite loop
50
+ * error. Defaults to `Infinity` (no limit). Set to a finite number to enable
51
+ * infinite loop detection.
52
+ *
53
+ * @default Infinity
54
+ */
55
+ maxIterations?: number;
56
+ }
57
+ type MachineSchemas<TContextSchema extends StandardSchemaV1, TEventSchemaMap extends Record<string, StandardSchemaV1>, TEmittedSchemaMap extends Record<string, StandardSchemaV1>, TInputSchema extends StandardSchemaV1, TOutputSchema extends StandardSchemaV1, TMetaSchema extends StandardSchemaV1, TTagSchema extends StandardSchemaV1, TChildrenSchemaMap extends Record<string, StandardSchemaV1>> = {
58
+ events?: TEventSchemaMap;
59
+ context?: TContextSchema;
60
+ emitted?: TEmittedSchemaMap;
61
+ input?: TInputSchema;
62
+ output?: TOutputSchema;
63
+ meta?: TMetaSchema;
64
+ tags?: TTagSchema;
65
+ children?: TChildrenSchemaMap;
66
+ };
67
+ export type AnyMachineSchemas = MachineSchemas<StandardSchemaV1, Record<string, StandardSchemaV1>, Record<string, StandardSchemaV1>, StandardSchemaV1, StandardSchemaV1, StandardSchemaV1, StandardSchemaV1, Record<string, StandardSchemaV1>>;
68
+ export type Next_MachineConfig<TContextSchema extends StandardSchemaV1, TEventSchemaMap extends Record<string, StandardSchemaV1>, TEmittedSchemaMap extends Record<string, StandardSchemaV1>, TInputSchema extends StandardSchemaV1, TOutputSchema extends StandardSchemaV1, TMetaSchema extends StandardSchemaV1, TTagSchema extends StandardSchemaV1, TChildrenSchemaMap extends Record<string, StandardSchemaV1>, TContext extends MachineContext = InferOutput<TContextSchema, MachineContext>, TEvent extends EventObject = InferEvents<TEventSchemaMap>, TChildren extends Record<string, AnyActorRef | undefined> = InferChildren<TChildrenSchemaMap>, TDelays extends string = string, _TTag extends string = string, TActionMap extends Implementations['actions'] = Implementations['actions'], TActorMap extends Implementations['actorSources'] = Implementations['actorSources'], TGuardMap extends Implementations['guards'] = Implementations['guards'], TDelayMap extends Implementations['delays'] = Implementations['delays'], TContextRequired extends boolean = IsNever<TContext> extends true ? false : true, TSystemRegistry extends SystemRegistry = SystemRegistry> = (DistributiveOmit<Next_StateNodeConfig<TContext, DoNotInfer<InferEvents<TEventSchemaMap>>, DoNotInfer<TDelays>, DoNotInfer<StandardSchemaV1.InferOutput<TTagSchema> & string>, DoNotInfer<StandardSchemaV1.InferOutput<TOutputSchema>>, DoNotInfer<InferEvents<TEmittedSchemaMap>>, DoNotInfer<InferOutput<TMetaSchema, MetaObject>>, DoNotInfer<TChildren>, DoNotInfer<TActionMap>, DoNotInfer<TActorMap>, DoNotInfer<TGuardMap>, DoNotInfer<TDelayMap>, Record<string, unknown> | undefined, Record<string, unknown>, DoNotInfer<TSystemRegistry>>, 'output'> & {
69
+ internalEvents?: readonly InternalEventDescriptorFor<InferEvents<TEventSchemaMap>>[];
70
+ schemas?: MachineSchemas<TContextSchema, TEventSchemaMap, TEmittedSchemaMap, TInputSchema, TOutputSchema, TMetaSchema, TTagSchema, TChildrenSchemaMap>;
71
+ actions?: TActionMap;
72
+ guards?: TGuardMap;
73
+ actorSources?: TActorMap;
74
+ /** The machine's own version. */
75
+ version?: string;
76
+ /**
77
+ * Migrates a persisted snapshot created by a different version of this
78
+ * machine to the current `version`. Called during restore when the persisted
79
+ * snapshot's `version` does not match the machine's `version` (`fromVersion`
80
+ * is the persisted version, possibly `undefined`). Restoring a
81
+ * version-mismatched snapshot without a `migrate` function throws.
82
+ */
83
+ migrate?: (persistedSnapshot: any, fromVersion: string | undefined) => unknown;
84
+ output?: Mapper<TContext, DoneStateEvent, InferOutput<TOutputSchema, unknown>, TEvent> | InferOutput<TOutputSchema, unknown>;
85
+ delays?: {
86
+ [K in TDelays | number]?: number | (({ context, event, stateNode }: {
87
+ context: TContext;
88
+ event: TEvent;
89
+ stateNode: AnyStateNode;
90
+ }) => number);
91
+ };
92
+ options?: MachineOptions;
93
+ }) & (TContextRequired extends false ? {
94
+ context?: InitialContext<LowInfer<TContext>, TActorMap, InferOutput<TInputSchema, unknown>, TEvent>;
95
+ } : {
96
+ context: InitialContext<LowInfer<TContext>, TActorMap, InferOutput<TInputSchema, unknown>, TEvent>;
97
+ });
98
+ /**
99
+ * Recursively widens literal types and strips `readonly`. Used to widen context
100
+ * inferred from a literal initial value (e.g. `{ count: 0 }` becomes `{ count:
101
+ * number }`), since `createMachine`'s `const` state-schema inference would
102
+ * otherwise freeze context at its initial literal type and make every context
103
+ * update a type error.
104
+ */
105
+ export type WidenLiterals<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T extends bigint ? bigint : T extends (...args: any[]) => any ? T : T extends readonly (infer U)[] ? WidenLiterals<U>[] : T extends object ? {
106
+ -readonly [K in keyof T]: WidenLiterals<T[K]>;
107
+ } : T;
108
+ type InvokeSrcArgs<TContext extends MachineContext, TEvent extends EventObject, TActorMap extends Implementations['actorSources']> = {
109
+ actorSources: TActorMap;
110
+ context: TContext;
111
+ event: TEvent;
112
+ self: AnyActorRef;
113
+ };
114
+ type InvokeInputArgs<TContext extends MachineContext, TEvent extends EventObject, TEmitted extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>> = {
115
+ context: TContext;
116
+ event: TEvent;
117
+ self: ActorSelf<MachineSnapshot<TContext, TEvent, TChildren, StateValue, string, unknown, TODO, TODO>, TEvent, TEmitted>;
118
+ };
119
+ type HasExplicitChildren<TChildren extends Record<string, AnyActorRef | undefined>> = string extends keyof TChildren ? false : [keyof TChildren] extends [never] ? false : true;
120
+ type ChildIdForLogic<TLogic extends AnyActorLogic, TChildren extends Record<string, AnyActorRef | undefined>> = HasExplicitChildren<TChildren> extends true ? Values<{
121
+ [K in keyof TChildren & string]: ActorRefFromLogic<TLogic> extends NonNullable<TChildren[K]> ? K : never;
122
+ }> : string;
123
+ type LogicForChildRef<TActorRef> = NonNullable<TActorRef> extends ActorRef<infer TSnapshot, infer TEvent, infer TEmitted, any> ? ActorLogic<TSnapshot, TEvent, any, any, TEmitted> : never;
124
+ type InlineChildInvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TEmitted extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TMeta extends MetaObject, TSystemRegistry extends SystemRegistry> = Values<{
125
+ [K in keyof TChildren & string]: Next_InvokeConfigBase<TContext, TEvent, TEmitted, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta, TSystemRegistry> & {
126
+ id: K;
127
+ src: LogicForChildRef<TChildren[K]>;
128
+ input?: ((args: InvokeInputArgs<TContext, TEvent, TEmitted, TChildren>) => unknown) | NonReducibleUnknown;
129
+ };
130
+ }>;
131
+ type InlineInvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TEmitted extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TMeta extends MetaObject, TSystemRegistry extends SystemRegistry> = HasExplicitChildren<TChildren> extends true ? InlineChildInvokeConfig<TContext, TEvent, TEmitted, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta, TSystemRegistry> : Next_InvokeConfigBase<TContext, TEvent, TEmitted, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta, TSystemRegistry> & {
132
+ src: AnyActorLogic;
133
+ input?: ((args: InvokeInputArgs<TContext, TEvent, TEmitted, TChildren>) => unknown) | NonReducibleUnknown;
134
+ };
135
+ /**
136
+ * Invoke config. A union of:
137
+ *
138
+ * - One branch per registered actor source (distributed over the `actorSources`
139
+ * map), where `src` — a key, the logic itself, or a resolver function
140
+ * returning either — is correlated with `input`, so static and mapped inputs
141
+ * typecheck against that logic's input type.
142
+ * - A branch for inline (unregistered) actor logic values, whose `input` cannot
143
+ * be correlated (the config is not generic over inline logic).
144
+ */
145
+ export type Next_InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TEmitted extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TMeta extends MetaObject, TSystemRegistry extends SystemRegistry = SystemRegistry> = string extends keyof TActorMap ? HasExplicitChildren<TChildren> extends true ? InlineInvokeConfig<TContext, TEvent, TEmitted, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta, TSystemRegistry> : Next_InvokeConfigBase<TContext, TEvent, TEmitted, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta, TSystemRegistry> & {
146
+ src: string | AnyActorLogic | ((args: InvokeSrcArgs<TContext, TEvent, TActorMap>) => string | AnyActorLogic);
147
+ input?: ((args: InvokeInputArgs<TContext, TEvent, TEmitted, TChildren>) => unknown) | NonReducibleUnknown;
148
+ } : {
149
+ [K in keyof TActorMap & string]: Next_InvokeConfigBase<TContext, TEvent, TEmitted, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta, TSystemRegistry, DoneActorEvent<OutputFrom<TActorMap[K]>>> & {
150
+ id?: ChildIdForLogic<TActorMap[K], TChildren>;
151
+ input?: ((args: InvokeInputArgs<TContext, TEvent, TEmitted, TChildren>) => InputFrom<TActorMap[K]>) | InputFrom<TActorMap[K]>;
152
+ } & ({
153
+ src: K;
154
+ } | {
155
+ src: TActorMap[K];
156
+ } | {
157
+ src: (args: InvokeSrcArgs<TContext, TEvent, TActorMap>) => K | TActorMap[K];
158
+ });
159
+ }[keyof TActorMap & string] | InlineInvokeConfig<TContext, TEvent, TEmitted, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta, TSystemRegistry>;
160
+ interface Next_InvokeConfigBase<TContext extends MachineContext, TEvent extends EventObject, TEmitted extends EventObject, _TChildren extends Record<string, AnyActorRef | undefined>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TMeta extends MetaObject, TSystemRegistry extends SystemRegistry, TDoneEvent extends EventObject = [keyof TActorMap & string] extends [never] ? DoneActorEvent<any> : DoneActorEvent<OutputFrom<TActorMap[keyof TActorMap & string]>>> {
161
+ id?: string;
162
+ registryKey?: keyof TSystemRegistry & string;
163
+ onDone?: Next_TransitionConfigOrTarget<TContext, TDoneEvent, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
164
+ onError?: Next_TransitionConfigOrTarget<TContext, ErrorEvent, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
165
+ onSnapshot?: Next_TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
166
+ /**
167
+ * The duration (in ms) after which this invocation will time out if it has
168
+ * not completed. "This task is taking too long."
169
+ *
170
+ * When the timeout expires, the `onTimeout` transition is taken. If the
171
+ * invoke completes first, the timeout is cancelled.
172
+ */
173
+ timeout?: number | ((args: {
174
+ context: TContext;
175
+ event: TEvent;
176
+ }) => number);
177
+ /**
178
+ * Transition taken when the invoke-level `timeout` expires. Required when
179
+ * `timeout` is set on an invoke.
180
+ */
181
+ onTimeout?: Next_TransitionConfigOrTarget<TContext, TEvent, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
182
+ }
183
+ /** Lookup state input type from an input map, with fallback to undefined */
184
+ type LookupInput<TInputMap extends Record<string, unknown>, K extends string> = K extends keyof TInputMap ? TInputMap[K] : undefined;
185
+ type StateAction<TContext extends MachineContext, TEvent extends EventObject, TEmittedEvent extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TInput = Record<string, unknown> | undefined> = (_: Omit<Parameters<Action<TContext, TEvent, TEmittedEvent, TActionMap, TActorMap, TGuardMap, TDelayMap, never>>[0], 'params'> & {
186
+ input: TInput;
187
+ }, enqueue: Parameters<Action<TContext, TEvent, TEmittedEvent, TActionMap, TActorMap, TGuardMap, TDelayMap, never>>[1]) => ReturnType<Action<TContext, TEvent, TEmittedEvent, TActionMap, TActorMap, TGuardMap, TDelayMap, never>>;
188
+ type Next_ChoiceTarget<TMeta extends MetaObject> = {
189
+ target: string | string[];
190
+ description?: string;
191
+ reenter?: boolean;
192
+ meta?: TMeta;
193
+ input?: Record<string, unknown> | ((args: {
194
+ context: any;
195
+ event: any;
196
+ }) => Record<string, unknown>);
197
+ };
198
+ type Next_ChoiceArgs<TContext extends MachineContext, TCurrentEvent extends EventObject, TEvent extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], _TCtx = [TContext] extends [never] ? any : TContext> = Parameters<TransitionConfigFunction<TContext, TCurrentEvent, TEvent, EventObject, TActionMap, TActorMap, TGuardMap, TDelayMap, MetaObject, _TCtx>>[0];
199
+ /**
200
+ * Route config: either a static config object, or a transition-style function
201
+ * that acts as the route's guard and resolver — returning `undefined`/`false`
202
+ * blocks the route; returning `true` or a config object allows it (optionally
203
+ * updating `context` and providing `input`/`reenter`/`meta`).
204
+ *
205
+ * Guard objects/strings on routes are only produced by the JSON layer
206
+ * (`createMachineFromConfig`) — authoring uses the function form.
207
+ */
208
+ type Next_RouteConfig<TContext extends MachineContext, TEvent extends EventObject, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays']> = {
209
+ description?: string;
210
+ reenter?: boolean;
211
+ meta?: TMeta;
212
+ input?: Record<string, unknown> | ((args: {
213
+ context: any;
214
+ event: any;
215
+ }) => Record<string, unknown>);
216
+ } | ((args: Next_ChoiceArgs<TContext, TEvent, TEvent, TActionMap, TActorMap, TGuardMap, TDelayMap>) => boolean | void | {
217
+ context?: TContext;
218
+ reenter?: boolean;
219
+ meta?: TMeta;
220
+ input?: Record<string, unknown> | ((args: {
221
+ context: any;
222
+ event: any;
223
+ }) => Record<string, unknown>);
224
+ });
225
+ type Next_ChoiceConfigFunction<TContext extends MachineContext, TCurrentEvent extends EventObject, TEvent extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TMeta extends MetaObject, _TCtx = [TContext] extends [never] ? any : TContext> = (args: Next_ChoiceArgs<TContext, TCurrentEvent, TEvent, TActionMap, TActorMap, TGuardMap, TDelayMap, _TCtx>) => Next_ChoiceTarget<TMeta>;
226
+ export type Next_StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TDelays extends string, TTag extends string, _TOutput, TEmitted extends EventObject, TMeta extends MetaObject, TChildren extends Record<string, AnyActorRef | undefined>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TInput = Record<string, unknown> | undefined, TInputMap extends Record<string, unknown> = Record<string, unknown>, TSystemRegistry extends SystemRegistry = SystemRegistry> = Next_RegularStateNodeConfig<TContext, TEvent, TDelays, TTag, _TOutput, TEmitted, TMeta, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TInput, TInputMap, TSystemRegistry> | Next_ChoiceStateNodeConfig<TContext, TEvent, TTag, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap>;
227
+ interface Next_ChoiceStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TTag extends string, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays']> {
228
+ contextSchema?: StandardSchemaV1;
229
+ type: 'choice';
230
+ /** Function that resolves this choice state to a target. */
231
+ choice: Next_ChoiceConfigFunction<TContext, TEvent, TEvent, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
232
+ id?: string | undefined;
233
+ order?: number;
234
+ tags?: TTag[];
235
+ description?: string;
236
+ meta?: TMeta;
237
+ route?: Next_RouteConfig<TContext, TEvent, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap> | undefined;
238
+ initial?: never;
239
+ history?: never;
240
+ states?: never;
241
+ invoke?: never;
242
+ on?: never;
243
+ entry?: never;
244
+ exit?: never;
245
+ onDone?: never;
246
+ after?: never;
247
+ timeout?: never;
248
+ onTimeout?: never;
249
+ always?: never;
250
+ output?: never;
251
+ target?: never;
252
+ }
253
+ interface Next_RegularStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TDelays extends string, TTag extends string, _TOutput, TEmitted extends EventObject, TMeta extends MetaObject, TChildren extends Record<string, AnyActorRef | undefined>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TInput = Record<string, unknown> | undefined, TInputMap extends Record<string, unknown> = Record<string, unknown>, TSystemRegistry extends SystemRegistry = SystemRegistry> {
254
+ contextSchema?: StandardSchemaV1;
255
+ /** The initial state transition. */
256
+ initial?: string | {
257
+ target: string;
258
+ input?: Record<string, unknown> | ((args: {
259
+ context: TContext;
260
+ event: TEvent;
261
+ }) => Record<string, unknown>);
262
+ } | undefined;
263
+ /**
264
+ * The type of this state node:
265
+ *
266
+ * - `'atomic'` - no child state nodes
267
+ * - `'compound'` - nested child state nodes (XOR)
268
+ * - `'parallel'` - orthogonal nested child state nodes (AND)
269
+ * - `'history'` - history state node
270
+ * - `'final'` - final state node
271
+ */
272
+ type?: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
273
+ /**
274
+ * Indicates whether the state node is a history state node, and what type of
275
+ * history: shallow, deep, true (shallow), false (none), undefined (none)
276
+ */
277
+ history?: 'shallow' | 'deep' | boolean | undefined;
278
+ /**
279
+ * The mapping of state node keys to their state node configurations
280
+ * (recursive).
281
+ */
282
+ states?: {
283
+ [K in string]: Next_StateNodeConfig<TContext, TEvent, TDelays, TTag, any, // TOutput,
284
+ TEmitted, TMeta, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, LookupInput<TInputMap, K>, TInputMap, TSystemRegistry>;
285
+ };
286
+ /**
287
+ * The services to invoke upon entering this state node. These services will
288
+ * be stopped upon exiting this state node.
289
+ */
290
+ invoke?: SingleOrArray<Next_InvokeConfig<TContext, TEvent, TEmitted, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta, TSystemRegistry>>;
291
+ /** The mapping of event types to their potential transition(s). */
292
+ on?: {
293
+ [K in EventDescriptor<TEvent>]?: Next_TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
294
+ };
295
+ /**
296
+ * Enables routing to this state via `{ type: 'xstate.route', to: '#id' }`.
297
+ * Requires this state node to have an explicit `id`.
298
+ */
299
+ route?: Next_RouteConfig<TContext, TEvent, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap> | undefined;
300
+ entry?: StateAction<TContext, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TInput>;
301
+ exit?: StateAction<TContext, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TInput>;
302
+ /**
303
+ * The potential transition(s) to be taken upon reaching a final child state
304
+ * node.
305
+ *
306
+ * This is equivalent to defining a `[done(id)]` transition on this state
307
+ * node's `on` property.
308
+ */
309
+ onDone?: Next_TransitionConfigOrTarget<TContext, DoneStateEvent, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
310
+ /**
311
+ * The mapping (or array) of delays (in milliseconds) to their potential
312
+ * transition(s). The delayed transitions are taken after the specified delay
313
+ * in an interpreter.
314
+ */
315
+ after?: {
316
+ [K in NoInfer<TDelays> | number]?: {
317
+ target: string;
318
+ } | TransitionConfigFunction<TContext, TEvent, TEvent, TODO, // TEmitted
319
+ TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
320
+ };
321
+ /**
322
+ * The duration (in ms) after which this state will transition via `onTimeout`
323
+ * if still active. "We've been in this state too long."
324
+ *
325
+ * Independent of `after` - both can coexist on the same state. Both cancel on
326
+ * state exit.
327
+ *
328
+ * Can be a static number, a delay reference string, or a dynamic function.
329
+ */
330
+ timeout?: number | NoInfer<TDelays> | ((args: {
331
+ context: TContext;
332
+ event: TEvent;
333
+ stateNode: AnyStateNode;
334
+ }) => number);
335
+ /** Transition taken when `timeout` expires. Required when `timeout` is set. */
336
+ onTimeout?: Next_TransitionConfigOrTarget<TContext, TEvent, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
337
+ /**
338
+ * An eventless transition that is always taken when this state node is
339
+ * active.
340
+ */
341
+ always?: Next_TransitionConfigOrTarget<TContext, TEvent, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
342
+ choice?: never;
343
+ /**
344
+ * The meta data associated with this state node, which will be returned in
345
+ * State instances.
346
+ */
347
+ meta?: TMeta;
348
+ /**
349
+ * The output data sent with the "xstate.done.state._id_" event if this is a
350
+ * final state node.
351
+ *
352
+ * The output data will be evaluated with the current `context` and placed on
353
+ * the `.data` property of the event.
354
+ */
355
+ output?: Mapper<TContext, TEvent, unknown, TEvent> | NonReducibleUnknown;
356
+ /**
357
+ * The unique ID of the state node, which can be referenced as a transition
358
+ * target via the `#id` syntax.
359
+ */
360
+ id?: string | undefined;
361
+ /**
362
+ * The order this state node appears. Corresponds to the implicit document
363
+ * order.
364
+ */
365
+ order?: number;
366
+ /**
367
+ * The tags for this state node, which are accumulated into the `state.tags`
368
+ * property.
369
+ */
370
+ tags?: TTag[];
371
+ /** A text description of the state node */
372
+ description?: string;
373
+ /** A default target for a history state */
374
+ target?: string | undefined;
375
+ }
376
+ export type Next_TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TEmitted extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TMeta extends MetaObject> = undefined | {
377
+ target?: string | string[];
378
+ context?: Partial<TContext>;
379
+ description?: string;
380
+ reenter?: boolean;
381
+ meta?: TMeta;
382
+ input?: Record<string, unknown> | ((args: {
383
+ context: any;
384
+ event: any;
385
+ }) => Record<string, unknown>);
386
+ } | {
387
+ to?: TransitionConfigFunction<TContext, TExpressionEvent, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
388
+ context?: Partial<TContext>;
389
+ description?: string;
390
+ reenter?: boolean;
391
+ meta?: TMeta;
392
+ input?: Record<string, unknown> | ((args: {
393
+ context: any;
394
+ event: any;
395
+ }) => Record<string, unknown>);
396
+ } | TransitionConfigFunction<TContext, TExpressionEvent, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
397
+ export type WithDefault<T, Default> = IsNever<T> extends true ? Default : T;
398
+ export interface Implementations {
399
+ actions: Record<string, (...args: any[]) => void | {
400
+ context?: any;
401
+ children?: any;
402
+ }>;
403
+ guards: Record<string, (...args: any[]) => boolean>;
404
+ delays: Record<string, number | ((...args: any[]) => number)>;
405
+ actorSources: Record<string, AnyActorLogic>;
406
+ }
407
+ export type DelayMapFromNames<TDelays extends string, _TDelayMap extends Implementations['delays']> = string extends TDelays ? Implementations['delays'] : {
408
+ [K in TDelays]: Implementations['delays'][string];
409
+ };
410
+ type DelayNamesFromConfig<TConfig> = TConfig extends {
411
+ delays: infer TDelays;
412
+ } ? Extract<keyof TDelays, string> : string;
413
+ type InvalidDelayReferences<TConfig, TDelays extends string> = (TConfig extends {
414
+ after: infer TAfter;
415
+ } ? Exclude<Extract<keyof TAfter, string>, TDelays> : never) | (TConfig extends {
416
+ timeout: infer TTimeout;
417
+ } ? TTimeout extends string ? TTimeout extends TDelays ? never : TTimeout : never : never) | (TConfig extends {
418
+ states: infer TStates;
419
+ } ? TStates extends Record<string, unknown> ? {
420
+ [K in keyof TStates]: InvalidDelayReferences<TStates[K], TDelays>;
421
+ }[keyof TStates] : never : never);
422
+ export type ValidateDelayReferences<TConfig> = string extends DelayNamesFromConfig<TConfig> ? unknown : InvalidDelayReferences<TConfig, DelayNamesFromConfig<TConfig>> extends never ? unknown : never;
423
+ export {};
@@ -1,15 +1,17 @@
1
1
  import type { StateNode } from "./StateNode.js";
2
- import type { AnyActorRef, AnyEventObject, AnyMachineSnapshot, AnyStateMachine, AnyTransitionConfig, ErrorActorEvent, EventObject, MachineContext, Mapper, NonReducibleUnknown, Observer, SingleOrArray, StateValue, TransitionConfigTarget } from "./types.js";
2
+ import type { AnyActor, AnyEventObject, AnyMachineSnapshot, AnyStateMachine, AnyTransitionConfig, AnyTransitionConfigFunction, ErrorActorEvent, EventObject, MachineContext, Mapper, NonReducibleUnknown, Observer, OutputArg, SingleOrArray, StateValue, TransitionConfigTarget } from "./types.js";
3
3
  export declare function matchesState(parentStateId: StateValue, childStateId: StateValue): boolean;
4
+ export declare function checkStateIn(snapshot: AnyMachineSnapshot, stateValue: StateValue): boolean;
4
5
  export declare function toStatePath(stateId: string | string[]): string[];
5
6
  export declare function pathToStateValue(statePath: string[]): StateValue;
6
7
  export declare function mapValues<P, O extends Record<string, unknown>>(collection: O, iteratee: (item: O[keyof O], key: keyof O, collection: O, i: number) => P): {
7
8
  [key in keyof O]: P;
8
9
  };
9
10
  export declare function toArray<T>(value: readonly T[] | T | undefined): readonly T[];
10
- export declare function resolveOutput<TContext extends MachineContext, TExpressionEvent extends EventObject>(mapper: Mapper<TContext, TExpressionEvent, unknown, EventObject> | NonReducibleUnknown, context: TContext, event: TExpressionEvent, self: AnyActorRef): unknown;
11
+ export declare function resolveOutput<TContext extends MachineContext, TExpressionEvent extends EventObject>(mapper: Mapper<TContext, TExpressionEvent, unknown, EventObject> | NonReducibleUnknown, context: TContext, event: TExpressionEvent, self: AnyActor): unknown;
12
+ export declare function getEventOutput<TEvent extends EventObject>(event: TEvent): OutputArg<TEvent>['output'];
11
13
  export declare function isErrorActorEvent(event: AnyEventObject): event is ErrorActorEvent;
12
- export declare function toTransitionConfigArray(configLike: SingleOrArray<AnyTransitionConfig | TransitionConfigTarget>): Array<AnyTransitionConfig>;
14
+ export declare function toTransitionConfigArray(configLike: SingleOrArray<AnyTransitionConfig | TransitionConfigTarget | AnyTransitionConfigFunction>): Array<AnyTransitionConfig>;
13
15
  export declare function normalizeTarget<TContext extends MachineContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, TEvent>> | undefined): ReadonlyArray<string | StateNode<TContext, TEvent>> | undefined;
14
16
  export declare function toObserver<T>(nextHandler?: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
15
17
  export declare function createInvokeId(stateNodeId: string, index: number): string;