xstate 5.0.0-beta.19 → 5.0.0-beta.21

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 (44) hide show
  1. package/actions/dist/xstate-actions.cjs.js +1 -1
  2. package/actions/dist/xstate-actions.development.cjs.js +1 -1
  3. package/actions/dist/xstate-actions.development.esm.js +1 -1
  4. package/actions/dist/xstate-actions.esm.js +1 -1
  5. package/actions/dist/xstate-actions.umd.min.js +1 -1
  6. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  7. package/actors/dist/xstate-actors.cjs.js +1 -1
  8. package/actors/dist/xstate-actors.development.cjs.js +1 -1
  9. package/actors/dist/xstate-actors.development.esm.js +1 -1
  10. package/actors/dist/xstate-actors.esm.js +1 -1
  11. package/actors/dist/xstate-actors.umd.min.js +1 -1
  12. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  13. package/dist/{actions-72105f77.development.esm.js → actions-49f0501e.development.esm.js} +421 -352
  14. package/dist/{actions-3b74fb92.esm.js → actions-5039c951.esm.js} +489 -423
  15. package/dist/{actions-bce11b97.development.cjs.js → actions-a95d2e66.development.cjs.js} +421 -351
  16. package/dist/{actions-2d912781.cjs.js → actions-c619a105.cjs.js} +489 -422
  17. package/dist/declarations/src/Machine.d.ts +2 -2
  18. package/dist/declarations/src/State.d.ts +12 -4
  19. package/dist/declarations/src/StateMachine.d.ts +17 -16
  20. package/dist/declarations/src/StateNode.d.ts +6 -6
  21. package/dist/declarations/src/actions/send.d.ts +1 -1
  22. package/dist/declarations/src/actions.d.ts +2 -2
  23. package/dist/declarations/src/actors/callback.d.ts +16 -6
  24. package/dist/declarations/src/actors/index.d.ts +4 -4
  25. package/dist/declarations/src/actors/observable.d.ts +14 -11
  26. package/dist/declarations/src/actors/promise.d.ts +14 -8
  27. package/dist/declarations/src/actors/transition.d.ts +6 -6
  28. package/dist/declarations/src/guards.d.ts +2 -2
  29. package/dist/declarations/src/stateUtils.d.ts +8 -8
  30. package/dist/declarations/src/typegenTypes.d.ts +15 -17
  31. package/dist/declarations/src/types.d.ts +131 -79
  32. package/dist/declarations/src/utils.d.ts +3 -3
  33. package/dist/xstate.cjs.js +12 -12
  34. package/dist/xstate.development.cjs.js +12 -12
  35. package/dist/xstate.development.esm.js +13 -13
  36. package/dist/xstate.esm.js +13 -13
  37. package/dist/xstate.umd.min.js +1 -1
  38. package/dist/xstate.umd.min.js.map +1 -1
  39. package/guards/dist/xstate-guards.cjs.js +1 -1
  40. package/guards/dist/xstate-guards.development.cjs.js +1 -1
  41. package/guards/dist/xstate-guards.development.esm.js +1 -1
  42. package/guards/dist/xstate-guards.esm.js +1 -1
  43. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  44. package/package.json +1 -1
@@ -3,8 +3,19 @@ import type { State } from "./State.js";
3
3
  import type { ActorStatus, Clock, Interpreter } from "./interpreter.js";
4
4
  import type { StateMachine } from "./StateMachine.js";
5
5
  import { TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, MarkAllImplementationsAsProvided, AreAllImplementationsAssumedToBeProvided } from "./typegenTypes.js";
6
- import { PromiseEvent } from "./actors/promise.js";
7
- import { CallbackActorRef } from "./actors/callback.js";
6
+ import { PromiseActorLogic } from "./actors/promise.js";
7
+ /**
8
+ * `T | unknown` reduces to `unknown` and that can be problematic when it comes to contextual typing.
9
+ * It especially is a problem when the union has a function member, like here:
10
+ *
11
+ * ```ts
12
+ * declare function test(cbOrVal: ((arg: number) => unknown) | unknown): void;
13
+ * test((arg) => {}) // oops, implicit any
14
+ * ```
15
+ *
16
+ * This type can be used to avoid this problem. This union represents the same value space as `unknown`.
17
+ */
18
+ export type NonReducibleUnknown = {} | null | undefined;
8
19
  export type AnyFunction = (...args: any[]) => any;
9
20
  type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
10
21
  export type IsNever<T> = [T] extends [never] ? true : false;
@@ -14,11 +25,12 @@ export type Compute<A extends any> = {
14
25
  export type Prop<T, K> = K extends keyof T ? T[K] : never;
15
26
  export type Values<T> = T[keyof T];
16
27
  export type Merge<M, N> = Omit<M, keyof N> & N;
28
+ export type IndexByProp<T extends Record<P, string>, P extends keyof T> = {
29
+ [E in T as E[P]]: E;
30
+ };
17
31
  export type IndexByType<T extends {
18
32
  type: string;
19
- }> = {
20
- [K in T['type']]: T extends any ? (K extends T['type'] ? T : never) : never;
21
- };
33
+ }> = IndexByProp<T, 'type'>;
22
34
  export type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1 ? true : false ? true : false;
23
35
  export type IsAny<T> = Equals<T, any>;
24
36
  export type Cast<A, B> = A extends B ? A : B;
@@ -55,12 +67,14 @@ export type MachineContext = Record<string, any>;
55
67
  export interface ActionArgs<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> extends UnifiedArg<TContext, TEvent> {
56
68
  action: TAction;
57
69
  }
58
- export type Spawner = <T extends ActorLogic<any, any> | string>(// TODO: read string from machine logic keys
70
+ export type InputFrom<T extends AnyActorLogic> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TActions, infer _TActors, infer TInput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer _TPersisted, infer _TSystem, infer TInput> ? TInput : never;
71
+ 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;
72
+ export type Spawner = <T extends AnyActorLogic | string>(// TODO: read string from machine logic keys
59
73
  logic: T, options?: Partial<{
60
74
  id: string;
61
75
  systemId?: string;
62
- input: any;
63
- }>) => T extends ActorLogic<infer TActorEvent, infer TActorEmitted, infer _, infer __, infer ___> ? ActorRef<TActorEvent, TActorEmitted> : ActorRef<any, any>;
76
+ input: T extends AnyActorLogic ? InputFrom<T> : any;
77
+ }>) => ActorRefFrom<T>;
64
78
  export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject> extends ActionArgs<TContext, TExpressionEvent> {
65
79
  spawn: Spawner;
66
80
  }
@@ -96,9 +110,9 @@ export interface DefaultGuardObject<TContext extends MachineContext, TEvent exte
96
110
  children?: Array<GuardObject<TContext, TEvent>>;
97
111
  predicate?: GuardPredicate<TContext, TEvent>;
98
112
  }
99
- export type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, event: TEvent, state: State<TContext, TEvent>) => boolean;
113
+ export type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, event: TEvent, state: State<TContext, TEvent, TODO>) => boolean;
100
114
  export interface GuardArgs<TContext extends MachineContext, TEvent extends EventObject> {
101
- state: State<TContext, TEvent, any>;
115
+ state: State<TContext, TEvent, TODO>;
102
116
  guard: GuardDefinition<TContext, TEvent>;
103
117
  evaluate: GuardEvaluator<TContext, TEvent>;
104
118
  }
@@ -144,14 +158,6 @@ export interface InitialTransitionConfig<TContext extends MachineContext, TEvent
144
158
  target: TransitionTarget;
145
159
  }
146
160
  export type Transition<TContext extends MachineContext, TEvent extends EventObject = EventObject> = string | TransitionConfig<TContext, TEvent> | ConditionalTransitionConfig<TContext, TEvent>;
147
- export type Receiver<TEvent extends EventObject> = (listener: {
148
- bivarianceHack(event: TEvent): void;
149
- }['bivarianceHack']) => void;
150
- export type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (sendBack: (event: TSentEvent) => void, onReceive: Receiver<TEvent>, { input, system, self }: {
151
- input: any;
152
- system: AnyActorSystem;
153
- self: CallbackActorRef<TEvent>;
154
- }) => (() => void) | Promise<any> | void;
155
161
  export interface InvokeMeta {
156
162
  src: string;
157
163
  meta: MetaObject | undefined;
@@ -163,7 +169,7 @@ export interface InvokeDefinition<TContext extends MachineContext, TEvent extend
163
169
  * The source of the actor logic to be invoked
164
170
  */
165
171
  src: string;
166
- input?: Mapper<TContext, TEvent, any> | any;
172
+ input?: Mapper<TContext, TEvent, NonReducibleUnknown> | NonReducibleUnknown;
167
173
  /**
168
174
  * The transition to take upon the invoked child machine reaching its final top-level state.
169
175
  */
@@ -191,8 +197,8 @@ export type SingleOrArray<T> = T[] | T;
191
197
  export type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
192
198
  [K in string]: StateNode<TContext, TEvent>;
193
199
  };
194
- export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
195
- [K in string]: StateNodeConfig<TContext, TEvent, TAction>;
200
+ export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TActor extends ProvidedActor> = {
201
+ [K in string]: StateNodeConfig<TContext, TEvent, TAction, TActor>;
196
202
  };
197
203
  export type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
198
204
  [K in string]: StateNodeDefinition<TContext, TEvent>;
@@ -202,7 +208,43 @@ export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressio
202
208
  export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = {
203
209
  [K in TEvent['type'] | '*']?: K extends '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent>;
204
210
  };
205
- export interface InvokeConfig<TContext extends MachineContext, TEvent extends EventObject> {
211
+ type IsLiteralString<T extends string> = string extends T ? false : true;
212
+ type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor> = TActor extends {
213
+ src: infer TSrc;
214
+ } ? Compute<{
215
+ systemId?: string;
216
+ /**
217
+ * The source of the machine to be invoked, or the machine itself.
218
+ */
219
+ src: TSrc;
220
+ input?: Mapper<TContext, TEvent, InputFrom<TActor['logic']>> | InputFrom<TActor['logic']>;
221
+ /**
222
+ * The transition to take upon the invoked child machine reaching its final top-level state.
223
+ */
224
+ onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<OutputFrom<TActor['logic']>>, TEvent>>;
225
+ /**
226
+ * The transition to take upon the invoked child machine sending an error event.
227
+ */
228
+ onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorEvent<any>, TEvent>>;
229
+ onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent>>;
230
+ /**
231
+ * Meta data related to this invocation
232
+ */
233
+ meta?: MetaObject;
234
+ } & (TActor['id'] extends string ? {
235
+ /**
236
+ * The unique identifier for the invoked machine. If not specified, this
237
+ * will be the machine's own `id`, or the URL (from `src`).
238
+ */
239
+ id: TActor['id'];
240
+ } : {
241
+ /**
242
+ * The unique identifier for the invoked machine. If not specified, this
243
+ * will be the machine's own `id`, or the URL (from `src`).
244
+ */
245
+ id?: string;
246
+ })> : never;
247
+ export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor> : {
206
248
  /**
207
249
  * The unique identifier for the invoked machine. If not specified, this
208
250
  * will be the machine's own `id`, or the URL (from `src`).
@@ -212,8 +254,8 @@ export interface InvokeConfig<TContext extends MachineContext, TEvent extends Ev
212
254
  /**
213
255
  * The source of the machine to be invoked, or the machine itself.
214
256
  */
215
- src: string | ActorLogic<any, any>;
216
- input?: Mapper<TContext, TEvent, any> | any;
257
+ src: AnyActorLogic | string;
258
+ input?: Mapper<TContext, TEvent, NonReducibleUnknown> | NonReducibleUnknown;
217
259
  /**
218
260
  * The transition to take upon the invoked child machine reaching its final top-level state.
219
261
  */
@@ -227,8 +269,8 @@ export interface InvokeConfig<TContext extends MachineContext, TEvent extends Ev
227
269
  * Meta data related to this invocation
228
270
  */
229
271
  meta?: MetaObject;
230
- }
231
- export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> {
272
+ };
273
+ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TActor extends ProvidedActor> {
232
274
  /**
233
275
  * The initial state transition.
234
276
  */
@@ -252,11 +294,11 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
252
294
  /**
253
295
  * The mapping of state node keys to their state node configurations (recursive).
254
296
  */
255
- states?: StatesConfig<TContext, TEvent, TAction> | undefined;
297
+ states?: StatesConfig<TContext, TEvent, TAction, TActor> | undefined;
256
298
  /**
257
299
  * The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
258
300
  */
259
- invoke?: SingleOrArray<string | InvokeConfig<TContext, TEvent>>;
301
+ invoke?: SingleOrArray<TActor['src'] | InvokeConfig<TContext, TEvent, TActor>>;
260
302
  /**
261
303
  * The mapping of event types to their potential transition(s).
262
304
  */
@@ -298,7 +340,7 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
298
340
  * The output data will be evaluated with the current `context` and placed on the `.data` property
299
341
  * of the event.
300
342
  */
301
- output?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
343
+ output?: Mapper<TContext, TEvent, any> | NonReducibleUnknown;
302
344
  /**
303
345
  * The unique ID of the state node, which can be referenced as a transition target via the
304
346
  * `#id` syntax.
@@ -344,10 +386,10 @@ export interface StateMachineDefinition<TContext extends MachineContext, TEvent
344
386
  }
345
387
  export type AnyStateNode = StateNode<any, any>;
346
388
  export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
347
- export type AnyState = State<any, any, any>;
348
- export type AnyStateMachine = StateMachine<any, any, any, any, any>;
389
+ export type AnyState = State<any, any, any, any>;
390
+ export type AnyStateMachine = StateMachine<any, any, any, any, any, any>;
349
391
  export type AnyStateConfig = StateConfig<any, AnyEventObject>;
350
- export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent> {
392
+ export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent, TODO, TODO> {
351
393
  initial?: undefined;
352
394
  parallel?: false | undefined;
353
395
  states?: undefined;
@@ -363,9 +405,9 @@ export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent ex
363
405
  * The data to be sent with the "done.state.<id>" event. The data can be
364
406
  * static or dynamic (based on assigners).
365
407
  */
366
- output?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
408
+ output?: Mapper<TContext, TEvent, any>;
367
409
  }
368
- export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent>;
410
+ export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO>;
369
411
  export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
370
412
  [K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
371
413
  type: K;
@@ -385,18 +427,18 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
385
427
  type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
386
428
  [K in keyof TEventsCausingActions]?: ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, ParameterizedObject>;
387
429
  };
430
+ 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'>> = {
431
+ [K in keyof TIndexedActors]?: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic> | {
432
+ src: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>;
433
+ input: Mapper<TContext, Cast<Prop<TIndexedEvents, K extends keyof TEventsCausingActors ? TEventsCausingActors[K] : TIndexedEvents[keyof TIndexedEvents]>, EventObject>, InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>> | InputFrom<Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>>;
434
+ };
435
+ };
388
436
  type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
389
437
  [K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
390
438
  };
391
439
  type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
392
440
  [K in keyof TEventsCausingGuards]?: GuardPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>> | GuardConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
393
441
  };
394
- type MachineImplementationsActors<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActors'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
395
- [K in keyof TEventsCausingActors]?: AnyActorLogic | {
396
- src: AnyActorLogic;
397
- input: Mapper<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActors[K]>, EventObject>, any> | any;
398
- };
399
- };
400
442
  type MakeKeysRequired<T extends string> = {
401
443
  [K in T]: unknown;
402
444
  };
@@ -415,14 +457,14 @@ type GenerateDelaysImplementationsPart<TContext extends MachineContext, TResolve
415
457
  type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
416
458
  guards?: MachineImplementationsGuards<TContext, TResolvedTypesMeta>;
417
459
  }>;
418
- export type InternalMachineImplementations<TContext extends MachineContext, _TEvent extends EventObject, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = GenerateActionsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateActorsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations>;
419
- export type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActorMap extends ActorMap = ActorMap, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TActorMap>>;
420
- type InitialContext<TContext extends MachineContext> = TContext | ContextFactory<TContext>;
421
- export type ContextFactory<TContext extends MachineContext> = ({ spawn, input }: {
460
+ export type InternalMachineImplementations<TContext extends MachineContext, TEvent extends EventObject, _TAction extends ParameterizedObject, TActor extends ProvidedActor, 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>>;
461
+ export type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActor extends ProvidedActor = ProvidedActor, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, TEvent, TAction, TActor, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TActor>>;
462
+ type InitialContext<TContext extends MachineContext, TInput> = TContext | ContextFactory<TContext, TInput>;
463
+ export type ContextFactory<TContext extends MachineContext, TInput> = ({ spawn, input }: {
422
464
  spawn: Spawner;
423
- input: any;
465
+ input: TInput;
424
466
  }) => TContext;
425
- export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActorMap extends ActorMap = ActorMap, TTypesMeta = TypegenDisabled> = (StateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, TAction> & {
467
+ export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActor extends ProvidedActor = ProvidedActor, TInput = any, TTypesMeta = TypegenDisabled> = (StateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, NoInfer<TAction>, NoInfer<TActor>> & {
426
468
  /**
427
469
  * The initial context (extended state)
428
470
  */
@@ -430,28 +472,31 @@ export type MachineConfig<TContext extends MachineContext, TEvent extends EventO
430
472
  * The machine's own version.
431
473
  */
432
474
  version?: string;
433
- types?: MachineTypes<TContext, TEvent, TActorMap, TTypesMeta>;
475
+ types?: MachineTypes<TContext, TEvent, TActor, TInput, TTypesMeta>;
434
476
  }) & (Equals<TContext, MachineContext> extends true ? {
435
- context?: InitialContext<LowInfer<TContext>>;
477
+ context?: InitialContext<LowInfer<TContext>, TInput>;
436
478
  } : {
437
- context: InitialContext<LowInfer<TContext>>;
479
+ context: InitialContext<LowInfer<TContext>, TInput>;
438
480
  });
439
- export type ActorMap = Record<string, {
440
- output: any;
441
- }>;
442
- export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TActorMap extends ActorMap = ActorMap, TTypesMeta = TypegenDisabled> {
481
+ export interface ProvidedActor {
482
+ src: string;
483
+ logic: AnyActorLogic;
484
+ id?: string;
485
+ }
486
+ export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TInput, TTypesMeta = TypegenDisabled> {
443
487
  context?: TContext;
444
488
  actions?: {
445
489
  type: string;
446
490
  [key: string]: any;
447
491
  };
448
- actors?: TActorMap;
492
+ actors?: TActor;
449
493
  events?: TEvent;
450
494
  guards?: {
451
495
  type: string;
452
496
  [key: string]: any;
453
497
  };
454
498
  typegen?: TTypesMeta;
499
+ input?: TInput;
455
500
  }
456
501
  export interface HistoryStateNode<TContext extends MachineContext> extends StateNode<TContext> {
457
502
  history: 'shallow' | 'deep';
@@ -470,9 +515,9 @@ export declare enum ConstantPrefix {
470
515
  ErrorPlatform = "error.platform",
471
516
  ErrorCustom = "xstate.error"
472
517
  }
473
- export interface DoneInvokeEvent<TData> extends EventObject {
518
+ export interface DoneInvokeEvent<TOutput> {
474
519
  type: `done.invoke.${string}`;
475
- output: TData;
520
+ output: TOutput;
476
521
  }
477
522
  export interface ErrorEvent<TErrorData> {
478
523
  type: `error.${string}`;
@@ -519,15 +564,13 @@ export type PartialAssigner<TContext extends MachineContext, TExpressionEvent ex
519
564
  export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject> = {
520
565
  [K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, K> | TContext[K];
521
566
  };
522
- export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = (args: {
567
+ export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TParams> = (args: {
523
568
  context: TContext;
524
569
  event: TEvent;
570
+ self: ActorRef<TEvent>;
525
571
  }) => TParams;
526
572
  export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
527
- [K in keyof TParams]?: ((args: {
528
- context: TContext;
529
- event: TEvent;
530
- }) => TParams[K]) | TParams[K];
573
+ [K in keyof TParams]?: Mapper<TContext, TEvent, TParams[K]> | TParams[K];
531
574
  };
532
575
  export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent>, 'target'> {
533
576
  target: Array<StateNode<TContext, TEvent>> | undefined;
@@ -577,7 +620,7 @@ export interface Segment<TContext extends MachineContext, TEvent extends EventOb
577
620
  /**
578
621
  * From state.
579
622
  */
580
- state: State<TContext, TEvent>;
623
+ state: State<TContext, TEvent, TODO>;
581
624
  /**
582
625
  * Event from state.
583
626
  */
@@ -597,11 +640,12 @@ export interface StateConfig<TContext extends MachineContext, TEvent extends Eve
597
640
  children: Record<string, ActorRef<any>>;
598
641
  done?: boolean;
599
642
  output?: any;
643
+ error?: unknown;
600
644
  tags?: Set<string>;
601
- machine?: StateMachine<TContext, TEvent, any, any, any>;
645
+ machine?: StateMachine<TContext, TEvent, any, any, any, any>;
602
646
  _internalQueue?: Array<TEvent>;
603
647
  }
604
- export interface InterpreterOptions<_TActorLogic extends AnyActorLogic> {
648
+ export interface InterpreterOptions<TLogic extends AnyActorLogic> {
605
649
  /**
606
650
  * Whether state actions should be executed immediately upon transition. Defaults to `true`.
607
651
  */
@@ -635,7 +679,7 @@ export interface InterpreterOptions<_TActorLogic extends AnyActorLogic> {
635
679
  /**
636
680
  * The input data to pass to the actor.
637
681
  */
638
- input?: any;
682
+ input?: InputFrom<TLogic>;
639
683
  state?: any;
640
684
  /**
641
685
  * The source definition.
@@ -676,7 +720,7 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
676
720
  sessionId: string;
677
721
  send: (event: TEvent) => void;
678
722
  start?: () => void;
679
- getSnapshot: () => TSnapshot | undefined;
723
+ getSnapshot: () => TSnapshot;
680
724
  getPersistedState?: () => any;
681
725
  stop: () => void;
682
726
  toJSON?: () => any;
@@ -686,12 +730,13 @@ export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends S
686
730
  src?: string;
687
731
  }
688
732
  export type AnyActorRef = ActorRef<any, any>;
689
- export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? ActorRef<TEvent, State<TContext, TEvent, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRef<PromiseEvent<U>, U | undefined> : R extends ActorLogic<infer TEvent, infer TSnapshot, infer _, infer __, infer ___> ? ActorRef<TEvent, TSnapshot> : never : never;
733
+ export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
734
+ export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, any, any, any, infer TResolvedTypesMeta> ? ActorRef<TEvent, State<TContext, TEvent, TODO, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TEvent, infer TSnapshot, infer _, infer __, infer ___, infer ____, infer _____> ? ActorRef<TEvent, TSnapshot> : never : never;
690
735
  export type DevToolsAdapter = (service: AnyInterpreter) => void;
691
- export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? Interpreter<ActorLogic<TEvent, State<TContext, TEvent, TResolvedTypesMeta>, State<TContext, TEvent, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TResolvedTypesMeta>>>> : never;
692
- export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
693
- export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
694
- export type EventOfMachine<TMachine extends AnyStateMachine> = TMachine extends StateMachine<any, infer E, any, any, any> ? E : never;
736
+ export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer _TAction, infer TActor, infer TInput, infer TResolvedTypesMeta> ? Interpreter<ActorLogic<TEvent, State<TContext, TEvent, TActor, TResolvedTypesMeta>, State<TContext, TEvent, TActor, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TActor, TResolvedTypesMeta>>, ActorSystem<any>, TInput>> : never;
737
+ export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TAction, infer TActor, infer _TInput, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TAction, TActor, TResolvedTypesMeta, TRequireMissingImplementations> : never;
738
+ export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
739
+ export type EventOfMachine<TMachine extends AnyStateMachine> = TMachine extends StateMachine<any, infer E, any, any, any, any> ? E : never;
695
740
  export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
696
741
  self: ActorRef<TEvent, TSnapshot>;
697
742
  id: string;
@@ -706,10 +751,10 @@ export interface ActorLogic<TEvent extends EventObject, TSnapshot = any, TIntern
706
751
  /**
707
752
  * Serialized internal state used for persistence & restoration
708
753
  */
709
- TPersisted = TInternalState, TSystem extends ActorSystem<any> = ActorSystem<any>> {
754
+ TPersisted = TInternalState, TSystem extends ActorSystem<any> = ActorSystem<any>, TInput = any, TOutput = unknown> {
710
755
  config?: unknown;
711
756
  transition: (state: TInternalState, message: TEvent, ctx: ActorContext<TEvent, TSnapshot, TSystem>) => TInternalState;
712
- getInitialState: (actorCtx: ActorContext<TEvent, TSnapshot, any>, input: any) => TInternalState;
757
+ getInitialState: (actorCtx: ActorContext<TEvent, TSnapshot, TSystem>, input: TInput) => TInternalState;
713
758
  restoreState?: (persistedState: TPersisted, actorCtx: ActorContext<TEvent, TSnapshot>) => TInternalState;
714
759
  getSnapshot?: (state: TInternalState) => TSnapshot;
715
760
  getStatus?: (state: TInternalState) => {
@@ -721,15 +766,22 @@ TPersisted = TInternalState, TSystem extends ActorSystem<any> = ActorSystem<any>
721
766
  * @returns Persisted state
722
767
  */
723
768
  getPersistedState?: (state: TInternalState) => TPersisted;
724
- }
725
- export type AnyActorLogic = ActorLogic<any, any, any, any>;
726
- export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Interpreter<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _, infer __, infer ___, infer ____, infer _____> ? StateFrom<R> : R extends ActorLogic<infer _, infer TSnapshot, infer __, infer ___, infer ____> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
769
+ _out_TOutput?: TOutput;
770
+ }
771
+ export type AnyActorLogic = ActorLogic<any, // event
772
+ any, // snapshot
773
+ any, // internal state
774
+ any, // persisted state
775
+ any, // system
776
+ any, // input
777
+ any>;
778
+ export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Interpreter<infer TLogic> ? SnapshotFrom<TLogic> : R extends StateMachine<infer _, infer __, infer ___, infer ____, infer _____, infer ______> ? StateFrom<R> : R extends ActorLogic<infer _, infer TSnapshot, infer __, infer ___, infer ____> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
727
779
  export type EventFromLogic<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer TEvent, infer _, infer __, infer ___, infer ____> ? TEvent : never;
728
780
  export type PersistedStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer TPersisted> ? TPersisted : never;
729
781
  export type InternalStateFrom<TLogic extends ActorLogic<any, any>> = TLogic extends ActorLogic<infer _TEvent, infer _TSnapshot, infer TInternalState, infer _TPersisted> ? TInternalState : never;
730
- type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends State<infer _, infer TEvent, infer __> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
782
+ type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer TEvent, infer __, infer ___, infer ____, infer _____> ? TEvent : R extends State<infer _TContext, infer TEvent, infer _TAction, infer _TActor> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
731
783
  export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
732
- export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends State<infer TContext, infer _, infer __> ? TContext : R extends Interpreter<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _> ? TContext : never : never : never;
784
+ export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____, infer _____> ? TContext : R extends State<infer TContext, infer _TEvent, infer _TAction, infer _TActor> ? TContext : R extends Interpreter<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TActions, infer _TActors, infer _TInput, infer _TTypesMeta> ? TContext : never : never : never;
733
785
  export type InferEvent<E extends EventObject> = {
734
786
  [T in E['type']]: {
735
787
  type: T;
@@ -751,7 +803,7 @@ export interface ActorSystem<T extends ActorSystemInfo> {
751
803
  get: <K extends keyof T['actors']>(key: K) => T['actors'][K] | undefined;
752
804
  }
753
805
  export type AnyActorSystem = ActorSystem<any>;
754
- export type PersistedMachineState<TState extends AnyState> = Pick<TState, 'value' | 'output' | 'context' | 'done' | 'historyValue'> & {
806
+ export type PersistedMachineState<TState extends AnyState> = Pick<TState, 'value' | 'output' | 'error' | 'context' | 'done' | 'historyValue'> & {
755
807
  children: {
756
808
  [K in keyof TState['children']]: {
757
809
  state: any;
@@ -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, EventType, InvokeConfig, MachineContext, Mapper, Observer, PropertyMapper, ErrorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfig, TransitionConfigTarget } from "./types.js";
3
+ import type { ActorLogic, AnyEventObject, EventObject, EventType, InvokeConfig, MachineContext, Mapper, Observer, ErrorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfig, TransitionConfigTarget, TODO, AnyActorRef } 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[];
@@ -26,7 +26,7 @@ export declare function toStatePaths(stateValue: StateValue | undefined): string
26
26
  export declare function flatten<T>(array: Array<T | T[]>): T[];
27
27
  export declare function toArrayStrict<T>(value: T[] | T): T[];
28
28
  export declare function toArray<T>(value: T[] | T | undefined): T[];
29
- export declare function mapContext<TContext extends MachineContext, TEvent extends EventObject>(mapper: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>, context: TContext, event: TEvent): any;
29
+ export declare function mapContext<TContext extends MachineContext, TEvent extends EventObject>(mapper: Mapper<TContext, TEvent, any>, context: TContext, event: TEvent, self: AnyActorRef): any;
30
30
  export declare function isBuiltInEvent(eventType: EventType): boolean;
31
31
  export declare function isPromiseLike(value: any): value is PromiseLike<any>;
32
32
  export declare function isActorLogic(value: any): value is ActorLogic<any, any>;
@@ -38,7 +38,7 @@ export declare function isErrorEvent(event: AnyEventObject): event is ErrorEvent
38
38
  export declare function toTransitionConfigArray<TContext extends MachineContext, TEvent extends EventObject>(configLike: SingleOrArray<TransitionConfig<TContext, TEvent> | TransitionConfigTarget>): Array<TransitionConfig<TContext, TEvent>>;
39
39
  export declare function normalizeTarget<TContext extends MachineContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, TEvent>> | undefined): Array<string | StateNode<TContext, TEvent>> | undefined;
40
40
  export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
41
- export declare function toInvokeConfig<TContext extends MachineContext, TEvent extends EventObject>(invocable: InvokeConfig<TContext, TEvent> | string | ActorLogic<any, any>, id: string): InvokeConfig<TContext, TEvent>;
41
+ export declare function toInvokeConfig<TContext extends MachineContext, TEvent extends EventObject>(invocable: InvokeConfig<TContext, TEvent, TODO> | string | AnyActorLogic, id: string): InvokeConfig<TContext, TEvent, TODO>;
42
42
  export declare function toObserver<T>(nextHandler?: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
43
43
  export declare function createInvokeId(stateNodeId: string, index: number): string;
44
44
  export declare function resolveReferencedActor(referenced: AnyActorLogic | {
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var actors_dist_xstateActors = require('./actions-2d912781.cjs.js');
5
+ var actors_dist_xstateActors = require('./actions-c619a105.cjs.js');
6
6
  require('../dev/dist/xstate-dev.cjs.js');
7
7
 
8
8
  const EMPTY_OBJECT = {};
@@ -216,7 +216,6 @@ class StateNode {
216
216
  };
217
217
  }
218
218
  return {
219
- type: 'xstate.invoke',
220
219
  ...invokeConfig,
221
220
  src: resolvedSrc,
222
221
  id: resolvedId,
@@ -364,8 +363,9 @@ class StateMachine {
364
363
  this.__TContext = void 0;
365
364
  this.__TEvent = void 0;
366
365
  this.__TAction = void 0;
367
- this.__TActorMap = void 0;
366
+ this.__TActor = void 0;
368
367
  this.__TResolvedTypesMeta = void 0;
368
+ this.__TInput = void 0;
369
369
  this.id = config.id || '(machine)';
370
370
  this.implementations = {
371
371
  actors: implementations?.actors ?? {},
@@ -453,7 +453,9 @@ class StateMachine {
453
453
  transition(state, event, actorCtx) {
454
454
  // TODO: handle error events in a better way
455
455
  if (actors_dist_xstateActors.isErrorEvent(event) && !state.nextEvents.some(nextEvent => nextEvent === event.type)) {
456
- throw event.data;
456
+ return actors_dist_xstateActors.cloneState(state, {
457
+ error: event.data
458
+ });
457
459
  }
458
460
  const {
459
461
  state: nextState
@@ -524,15 +526,10 @@ class StateMachine {
524
526
  } = actors_dist_xstateActors.macrostep(nextState, initEvent, actorCtx);
525
527
  return macroState;
526
528
  }
527
- start(state, actorCtx) {
529
+ start(state) {
528
530
  Object.values(state.children).forEach(child => {
529
531
  if (child.status === 0) {
530
- try {
531
- child.start?.();
532
- } catch (err) {
533
- // TODO: unify error handling when child starts
534
- actorCtx.self.send(actors_dist_xstateActors.error(child.id, err));
535
- }
532
+ child.start?.();
536
533
  }
537
534
  });
538
535
  }
@@ -559,7 +556,10 @@ class StateMachine {
559
556
  return stateConfig instanceof actors_dist_xstateActors.State ? stateConfig : new actors_dist_xstateActors.State(stateConfig, this);
560
557
  }
561
558
  getStatus(state) {
562
- return state.done ? {
559
+ return state.error ? {
560
+ status: 'error',
561
+ data: state.error
562
+ } : state.done ? {
563
563
  status: 'done',
564
564
  data: state.output
565
565
  } : {
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var actors_dist_xstateActors = require('./actions-bce11b97.development.cjs.js');
5
+ var actors_dist_xstateActors = require('./actions-a95d2e66.development.cjs.js');
6
6
  require('../dev/dist/xstate-dev.development.cjs.js');
7
7
 
8
8
  const EMPTY_OBJECT = {};
@@ -216,7 +216,6 @@ class StateNode {
216
216
  };
217
217
  }
218
218
  return {
219
- type: 'xstate.invoke',
220
219
  ...invokeConfig,
221
220
  src: resolvedSrc,
222
221
  id: resolvedId,
@@ -364,8 +363,9 @@ class StateMachine {
364
363
  this.__TContext = void 0;
365
364
  this.__TEvent = void 0;
366
365
  this.__TAction = void 0;
367
- this.__TActorMap = void 0;
366
+ this.__TActor = void 0;
368
367
  this.__TResolvedTypesMeta = void 0;
368
+ this.__TInput = void 0;
369
369
  this.id = config.id || '(machine)';
370
370
  this.implementations = {
371
371
  actors: implementations?.actors ?? {},
@@ -453,7 +453,9 @@ class StateMachine {
453
453
  transition(state, event, actorCtx) {
454
454
  // TODO: handle error events in a better way
455
455
  if (actors_dist_xstateActors.isErrorEvent(event) && !state.nextEvents.some(nextEvent => nextEvent === event.type)) {
456
- throw event.data;
456
+ return actors_dist_xstateActors.cloneState(state, {
457
+ error: event.data
458
+ });
457
459
  }
458
460
  const {
459
461
  state: nextState
@@ -524,15 +526,10 @@ class StateMachine {
524
526
  } = actors_dist_xstateActors.macrostep(nextState, initEvent, actorCtx);
525
527
  return macroState;
526
528
  }
527
- start(state, actorCtx) {
529
+ start(state) {
528
530
  Object.values(state.children).forEach(child => {
529
531
  if (child.status === 0) {
530
- try {
531
- child.start?.();
532
- } catch (err) {
533
- // TODO: unify error handling when child starts
534
- actorCtx.self.send(actors_dist_xstateActors.error(child.id, err));
535
- }
532
+ child.start?.();
536
533
  }
537
534
  });
538
535
  }
@@ -559,7 +556,10 @@ class StateMachine {
559
556
  return stateConfig instanceof actors_dist_xstateActors.State ? stateConfig : new actors_dist_xstateActors.State(stateConfig, this);
560
557
  }
561
558
  getStatus(state) {
562
- return state.done ? {
559
+ return state.error ? {
560
+ status: 'error',
561
+ data: state.error
562
+ } : state.done ? {
563
563
  status: 'done',
564
564
  data: state.output
565
565
  } : {