xstate 5.0.0-beta.16 → 5.0.0-beta.17

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 (50) hide show
  1. package/actions/dist/xstate-actions.cjs.js +2 -5
  2. package/actions/dist/xstate-actions.cjs.mjs +2 -5
  3. package/actions/dist/xstate-actions.development.cjs.js +2 -5
  4. package/actions/dist/xstate-actions.development.esm.js +1 -1
  5. package/actions/dist/xstate-actions.esm.js +1 -1
  6. package/actions/dist/xstate-actions.umd.min.js +1 -1
  7. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  8. package/actors/dist/xstate-actors.cjs.js +1 -1
  9. package/actors/dist/xstate-actors.development.cjs.js +1 -1
  10. package/actors/dist/xstate-actors.development.esm.js +1 -1
  11. package/actors/dist/xstate-actors.esm.js +1 -1
  12. package/actors/dist/xstate-actors.umd.min.js +1 -1
  13. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  14. package/dist/{actions-6f7fbc84.development.esm.js → actions-13190b25.development.esm.js} +677 -844
  15. package/dist/{actions-0f903c0d.development.cjs.js → actions-40bd643f.development.cjs.js} +678 -850
  16. package/dist/{actions-0386b622.esm.js → actions-4d6514d2.esm.js} +653 -847
  17. package/dist/{actions-6b9073db.cjs.js → actions-5fb9f10d.cjs.js} +654 -853
  18. package/dist/declarations/src/State.d.ts +1 -1
  19. package/dist/declarations/src/StateNode.d.ts +4 -4
  20. package/dist/declarations/src/actions/assign.d.ts +11 -2
  21. package/dist/declarations/src/actions/cancel.d.ts +14 -3
  22. package/dist/declarations/src/actions/choose.d.ts +11 -3
  23. package/dist/declarations/src/actions/log.d.ts +22 -3
  24. package/dist/declarations/src/actions/pure.d.ts +17 -3
  25. package/dist/declarations/src/actions/raise.d.ts +5 -2
  26. package/dist/declarations/src/actions/send.d.ts +58 -6
  27. package/dist/declarations/src/actions/stop.d.ts +14 -2
  28. package/dist/declarations/src/actions.d.ts +4 -7
  29. package/dist/declarations/src/constantPrefixes.d.ts +6 -0
  30. package/dist/declarations/src/interpreter.d.ts +8 -3
  31. package/dist/declarations/src/stateUtils.d.ts +4 -8
  32. package/dist/declarations/src/types.d.ts +22 -187
  33. package/dist/declarations/src/utils.d.ts +1 -6
  34. package/dist/xstate.cjs.js +42 -19
  35. package/dist/xstate.cjs.mjs +1 -1
  36. package/dist/xstate.development.cjs.js +42 -19
  37. package/dist/xstate.development.esm.js +42 -19
  38. package/dist/xstate.esm.js +42 -19
  39. package/dist/xstate.umd.min.js +1 -1
  40. package/dist/xstate.umd.min.js.map +1 -1
  41. package/guards/dist/xstate-guards.cjs.js +1 -1
  42. package/guards/dist/xstate-guards.development.cjs.js +1 -1
  43. package/guards/dist/xstate-guards.development.esm.js +1 -1
  44. package/guards/dist/xstate-guards.esm.js +1 -1
  45. package/guards/dist/xstate-guards.umd.min.js +1 -1
  46. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  47. package/package.json +1 -1
  48. package/actions/dynamicAction.ts +0 -42
  49. package/dist/declarations/src/actionTypes.d.ts +0 -16
  50. package/dist/declarations/src/constants.d.ts +0 -5
@@ -44,33 +44,12 @@ export interface ParameterizedObject {
44
44
  type: string;
45
45
  params?: Record<string, any>;
46
46
  }
47
- export interface BaseActionObject extends ParameterizedObject {
48
- execute?: (actorCtx: AnyActorContext) => void;
49
- }
50
- export interface BuiltInActionObject extends ParameterizedObject {
51
- type: `xstate.${string}`;
52
- params: Record<string, any>;
53
- }
54
47
  export interface UnifiedArg<TContext extends MachineContext, TEvent extends EventObject> {
55
48
  context: TContext;
56
49
  event: TEvent;
57
50
  self: ActorRef<TEvent>;
58
51
  system: ActorSystem<any>;
59
52
  }
60
- export interface BaseDynamicActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TResolvedAction extends BaseActionObject, TDynamicParams extends Record<string, any>> {
61
- type: `xstate.${string}`;
62
- params: TDynamicParams;
63
- resolve: (event: TExpressionEvent, extra: {
64
- state: State<TContext, TEvent>;
65
- /**
66
- * The original action object
67
- */
68
- action: ParameterizedObject;
69
- actorContext: AnyActorContext;
70
- }) => [AnyState, TResolvedAction];
71
- /** @deprecated an internal signature that doesn't exist at runtime. Its existence helps TS to choose a better code path in the inference algorithm */
72
- (args: ActionArgs<TContext, TExpressionEvent, ParameterizedObject>): void;
73
- }
74
53
  export type MachineContext = Record<string, any>;
75
54
  export interface ActionArgs<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> extends UnifiedArg<TContext, TEvent> {
76
55
  action: TAction;
@@ -82,24 +61,18 @@ logic: T, options?: Partial<{
82
61
  input: any;
83
62
  }>) => T extends ActorLogic<infer TActorEvent, infer TActorEmitted, infer _, infer __, infer ___> ? ActorRef<TActorEvent, TActorEmitted> : ActorRef<any, any>;
84
63
  export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject> extends ActionArgs<TContext, TExpressionEvent> {
85
- action: BaseActionObject;
86
- event: TExpressionEvent;
87
64
  spawn: Spawner;
88
65
  }
89
- export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = (args: ActionArgs<TContext, TExpressionEvent, TAction>) => void;
90
- export interface ChooseCondition<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> {
66
+ export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
67
+ (args: ActionArgs<TContext, TExpressionEvent, TAction>): void;
68
+ _out_TEvent?: TEvent;
69
+ };
70
+ export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> {
91
71
  guard?: GuardConfig<TContext, TExpressionEvent>;
92
72
  actions: Actions<TContext, TExpressionEvent, TEvent>;
93
73
  }
94
- export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = ActionType | ParameterizedObject | ActionFunction<TContext, TExpressionEvent, ParameterizedObject> | BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, any, any>;
95
- /**
96
- * Extracts action objects that have no extra properties.
97
- */
98
- type SimpleActionsFrom<T extends ParameterizedObject> = ParameterizedObject extends T ? T : ExtractWithSimpleSupport<T>;
99
- export type BaseAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TAction extends ParameterizedObject, TEvent extends EventObject> = BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, any, // TODO: at the very least this should include TAction, but probably at a covariant position or something, we really need to rethink how action objects are typed
100
- any> | TAction | SimpleActionsFrom<TAction>['type'] | ActionFunction<TContext, TExpressionEvent, TAction>;
101
- export type BaseActions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject> = SingleOrArray<BaseAction<TContext, TExpressionEvent, TAction, TEvent>>;
102
- export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<Action<TContext, TEvent>>;
74
+ export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = ActionType | ParameterizedObject | ActionFunction<TContext, TExpressionEvent, TEvent, ParameterizedObject>;
75
+ export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent>>;
103
76
  export type StateKey = string | AnyState;
104
77
  export interface StateValueMap {
105
78
  [key: string]: StateValue;
@@ -155,7 +128,7 @@ export interface BooleanGuardDefinition<TContext extends MachineContext, TEvent
155
128
  export type TransitionTarget = SingleOrArray<string>;
156
129
  export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject> {
157
130
  guard?: GuardConfig<TContext, TExpressionEvent>;
158
- actions?: BaseActions<TContext, TExpressionEvent, TEvent, TAction>;
131
+ actions?: Actions<TContext, TExpressionEvent, TEvent>;
159
132
  reenter?: boolean;
160
133
  target?: TransitionTarget | undefined;
161
134
  meta?: Record<string, any>;
@@ -170,11 +143,6 @@ export interface InitialTransitionConfig<TContext extends MachineContext, TEvent
170
143
  target: TransitionTarget;
171
144
  }
172
145
  export type Transition<TContext extends MachineContext, TEvent extends EventObject = EventObject> = string | TransitionConfig<TContext, TEvent> | ConditionalTransitionConfig<TContext, TEvent>;
173
- type ExtractWithSimpleSupport<T extends {
174
- type: string;
175
- }> = T extends any ? {
176
- type: T['type'];
177
- } extends T ? T : never : never;
178
146
  export type Receiver<TEvent extends EventObject> = (listener: {
179
147
  bivarianceHack(event: TEvent): void;
180
148
  }['bivarianceHack']) => void;
@@ -229,15 +197,9 @@ export type StatesDefinition<TContext extends MachineContext, TEvent extends Eve
229
197
  };
230
198
  export type TransitionConfigTarget = string | undefined;
231
199
  export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent>>;
232
- export type TransitionsConfigMap<TContext extends MachineContext, TEvent extends EventObject> = {
233
- [K in TEvent['type'] | '' | '*']?: K extends '' | '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent>;
200
+ export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = {
201
+ [K in TEvent['type'] | '*']?: K extends '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent>;
234
202
  };
235
- type TransitionsConfigArray<TContext extends MachineContext, TEvent extends EventObject> = Array<(TEvent extends EventObject ? TransitionConfig<TContext, TEvent> & {
236
- event: TEvent['type'];
237
- } : never) | (TransitionConfig<TContext, TEvent> & {
238
- event: '*';
239
- })>;
240
- export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = TransitionsConfigMap<TContext, TEvent> | TransitionsConfigArray<TContext, TEvent>;
241
203
  export interface InvokeConfig<TContext extends MachineContext, TEvent extends EventObject> {
242
204
  /**
243
205
  * The unique identifier for the invoked machine. If not specified, this
@@ -300,11 +262,11 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
300
262
  /**
301
263
  * The action(s) to be executed upon entering the state node.
302
264
  */
303
- entry?: BaseActions<TContext, TEvent, TEvent, TAction>;
265
+ entry?: Actions<TContext, TEvent, TEvent>;
304
266
  /**
305
267
  * The action(s) to be executed upon exiting the state node.
306
268
  */
307
- exit?: BaseActions<TContext, TEvent, TEvent, TAction>;
269
+ exit?: Actions<TContext, TEvent, TEvent>;
308
270
  /**
309
271
  * The potential transition(s) to be taken upon reaching a final child state node.
310
272
  *
@@ -367,8 +329,8 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
367
329
  states: StatesDefinition<TContext, TEvent>;
368
330
  on: TransitionDefinitionMap<TContext, TEvent>;
369
331
  transitions: Array<TransitionDefinition<TContext, TEvent>>;
370
- entry: BaseActionObject[];
371
- exit: BaseActionObject[];
332
+ entry: Action<any, any, any>[];
333
+ exit: Action<any, any, any>[];
372
334
  meta: any;
373
335
  order: number;
374
336
  output?: FinalStateNodeConfig<TContext, TEvent>['output'];
@@ -403,7 +365,7 @@ export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent ex
403
365
  }
404
366
  export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent>;
405
367
  export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
406
- [K in TAction['type']]?: BaseDynamicActionObject<TContext, TEvent, TEvent, TAction, any> | ActionFunction<TContext, TEvent, TAction extends {
368
+ [K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
407
369
  type: K;
408
370
  } ? TAction : never>;
409
371
  };
@@ -419,8 +381,7 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
419
381
  delays: DelayFunctionMap<TContext, TEvent>;
420
382
  }
421
383
  type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
422
- [K in keyof TEventsCausingActions]?: BaseDynamicActionObject<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, any, // TODO: this should receive something like `Cast<Prop<TIndexedActions, K>, ParameterizedObject>`, but at the moment builtin actions expect Resolved*Action here and this should be simplified somehow
423
- any> | ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, ParameterizedObject>;
384
+ [K in keyof TEventsCausingActions]?: ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, ParameterizedObject>;
424
385
  };
425
386
  type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
426
387
  [K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
@@ -495,32 +456,14 @@ export type HistoryValue<TContext extends MachineContext, TEvent extends EventOb
495
456
  export type AnyHistoryValue = HistoryValue<any, any>;
496
457
  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;
497
458
  export type Transitions<TContext extends MachineContext, TEvent extends EventObject> = Array<TransitionDefinition<TContext, TEvent>>;
498
- export declare enum ActionTypes {
499
- Stop = "xstate.stop",
500
- Raise = "xstate.raise",
501
- SendTo = "xstate.sendTo",
502
- Cancel = "xstate.cancel",
503
- Assign = "xstate.assign",
459
+ export declare enum ConstantPrefix {
504
460
  After = "xstate.after",
505
461
  DoneState = "done.state",
506
462
  DoneInvoke = "done.invoke",
507
- Log = "xstate.log",
508
- Init = "xstate.init",
509
- Invoke = "xstate.invoke",
510
463
  ErrorExecution = "error.execution",
511
464
  ErrorCommunication = "error.communication",
512
465
  ErrorPlatform = "error.platform",
513
- ErrorCustom = "xstate.error",
514
- Pure = "xstate.pure",
515
- Choose = "xstate.choose"
516
- }
517
- export interface RaiseActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> extends BaseActionObject {
518
- type: ActionTypes.Raise;
519
- params: {
520
- event: TEvent;
521
- delay: RaiseActionOptions<TContext, TExpressionEvent>['delay'];
522
- id: string | number;
523
- };
466
+ ErrorCustom = "xstate.error"
524
467
  }
525
468
  export interface DoneInvokeEvent<TData> extends EventObject {
526
469
  type: `done.invoke.${string}`;
@@ -536,7 +479,7 @@ export interface SnapshotEvent<TData> {
536
479
  }
537
480
  export interface ErrorExecutionEvent extends EventObject {
538
481
  src: string;
539
- type: ActionTypes.ErrorExecution;
482
+ type: ConstantPrefix.ErrorExecution;
540
483
  data: any;
541
484
  }
542
485
  export interface ErrorPlatformEvent extends EventObject {
@@ -547,63 +490,8 @@ export interface DoneEventObject extends EventObject {
547
490
  toString(): string;
548
491
  }
549
492
  export type DoneEvent = DoneEventObject & string;
550
- export interface InvokeAction {
551
- type: ActionTypes.Invoke;
552
- src: string | ActorRef<any>;
553
- id: string;
554
- exec?: undefined;
555
- meta: MetaObject | undefined;
556
- }
557
- export interface DynamicInvokeActionObject<TContext extends MachineContext, TEvent extends EventObject> {
558
- type: ActionTypes.Invoke;
559
- params: InvokeDefinition<TContext, TEvent>;
560
- }
561
- export interface InvokeActionObject extends BaseActionObject {
562
- type: ActionTypes.Invoke;
563
- params: {
564
- src: string | ActorRef<any>;
565
- id: string;
566
- exec?: undefined;
567
- ref?: ActorRef<any>;
568
- meta: MetaObject | undefined;
569
- };
570
- }
571
- export interface DynamicStopActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
572
- type: ActionTypes.Stop;
573
- params: {
574
- actor: string | ActorRef<any> | ((args: UnifiedArg<TContext, TExpressionEvent>) => ActorRef<any> | string);
575
- };
576
- }
577
- export interface StopActionObject {
578
- type: ActionTypes.Stop;
579
- params: {
580
- actor: ActorRef<any>;
581
- };
582
- }
583
493
  export type DelayExpr<TContext extends MachineContext, TEvent extends EventObject> = (args: UnifiedArg<TContext, TEvent>) => number;
584
494
  export type LogExpr<TContext extends MachineContext, TEvent extends EventObject> = (args: UnifiedArg<TContext, TEvent>) => unknown;
585
- export interface DynamicLogAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, LogActionObject, {
586
- label: string | undefined;
587
- expr: string | LogExpr<TContext, TExpressionEvent>;
588
- }> {
589
- type: ActionTypes.Log;
590
- }
591
- export interface LogActionObject extends BuiltInActionObject {
592
- type: ActionTypes.Log;
593
- params: {
594
- label: string | undefined;
595
- value: any;
596
- };
597
- }
598
- export interface SendToActionObject<TSentEvent extends EventObject = AnyEventObject> extends BaseActionObject {
599
- type: 'xstate.sendTo';
600
- params: {
601
- to: ActorRef<TSentEvent>;
602
- event: TSentEvent;
603
- delay?: number;
604
- id: string | number;
605
- };
606
- }
607
495
  export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = (args: UnifiedArg<TContext, TExpressionEvent>) => TSentEvent;
608
496
  export declare enum SpecialTargets {
609
497
  Parent = "#_parent",
@@ -612,7 +500,7 @@ export declare enum SpecialTargets {
612
500
  export interface SendToActionOptions<TContext extends MachineContext, TEvent extends EventObject> extends RaiseActionOptions<TContext, TEvent> {
613
501
  }
614
502
  export interface RaiseActionOptions<TContext extends MachineContext, TEvent extends EventObject> {
615
- id?: string | number;
503
+ id?: string;
616
504
  delay?: number | string | DelayExpr<TContext, TEvent>;
617
505
  }
618
506
  export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent> {
@@ -621,18 +509,6 @@ export interface RaiseActionParams<TContext extends MachineContext, TExpressionE
621
509
  export interface SendToActionParams<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = EventObject> extends SendToActionOptions<TContext, TEvent> {
622
510
  event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>;
623
511
  }
624
- export interface DynamicCancelActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
625
- type: ActionTypes.Cancel;
626
- params: {
627
- sendId: string | ((args: UnifiedArg<TContext, TExpressionEvent>) => string);
628
- };
629
- }
630
- export interface CancelActionObject extends BaseActionObject {
631
- type: ActionTypes.Cancel;
632
- params: {
633
- sendId: string;
634
- };
635
- }
636
512
  export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject> = (args: AssignArgs<TContext, TExpressionEvent>) => Partial<TContext>;
637
513
  export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent>) => TContext[TKey];
638
514
  export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject> = {
@@ -648,58 +524,17 @@ export type PropertyMapper<TContext extends MachineContext, TEvent extends Event
648
524
  event: TEvent;
649
525
  }) => TParams[K]) | TParams[K];
650
526
  };
651
- export interface AnyAssignAction extends BaseActionObject {
652
- type: ActionTypes.Assign;
653
- assignment: any;
654
- }
655
- export type DynamicAssignAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, AssignActionObject<TContext> | RaiseActionObject<TContext, TExpressionEvent>, {
656
- assignment: Assigner<TContext, TExpressionEvent> | PropertyAssigner<TContext, TExpressionEvent>;
657
- }>;
658
- export interface AssignActionObject<TContext extends MachineContext> extends BaseActionObject {
659
- type: ActionTypes.Assign;
660
- params: {
661
- context: TContext;
662
- actions: BaseActionObject[];
663
- };
664
- }
665
- export interface DynamicPureActionObject<TContext extends MachineContext, TEvent extends EventObject> {
666
- type: ActionTypes.Pure;
667
- params: {
668
- get: (args: {
669
- context: TContext;
670
- event: TEvent;
671
- }) => SingleOrArray<BaseActionObject | BaseActionObject['type']> | undefined;
672
- };
673
- }
674
- export interface PureActionObject extends BaseActionObject {
675
- type: ActionTypes.Pure;
676
- params: {
677
- actions: BaseActionObject[];
678
- };
679
- }
680
- export interface ChooseAction<TContext extends MachineContext, TEvent extends EventObject> extends BaseActionObject {
681
- type: ActionTypes.Choose;
682
- params: {
683
- guards: Array<ChooseCondition<TContext, TEvent>>;
684
- };
685
- }
686
- export interface ResolvedChooseAction extends BaseActionObject {
687
- type: ActionTypes.Choose;
688
- params: {
689
- actions: BaseActionObject[];
690
- };
691
- }
692
527
  export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent>, 'target'> {
693
528
  target: Array<StateNode<TContext, TEvent>> | undefined;
694
529
  source: StateNode<TContext, TEvent>;
695
- actions: BaseActionObject[];
530
+ actions: Action<any, any, any>[];
696
531
  reenter: boolean;
697
532
  guard?: GuardDefinition<TContext, TEvent>;
698
533
  eventType: TEvent['type'] | '*';
699
534
  toJSON: () => {
700
535
  target: string[] | undefined;
701
536
  source: string;
702
- actions: BaseActionObject[];
537
+ actions: Action<any, any, any>[];
703
538
  guard?: GuardDefinition<TContext, TEvent>;
704
539
  eventType: TEvent['type'] | '*';
705
540
  meta?: Record<string, any>;
@@ -1,5 +1,4 @@
1
1
  import { AnyActorLogic, AnyState } from "./index.js";
2
- import { NULL_EVENT } from "./constants.js";
3
2
  import type { StateNode } from "./StateNode.js";
4
3
  import type { ActorLogic, AnyEventObject, EventObject, EventType, InvokeConfig, MachineContext, Mapper, Observer, PropertyMapper, ErrorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfig, TransitionConfigTarget } from "./types.js";
5
4
  export declare function keys<T extends object>(value: T): Array<keyof T & string>;
@@ -33,14 +32,10 @@ export declare function isPromiseLike(value: any): value is PromiseLike<any>;
33
32
  export declare function isActorLogic(value: any): value is ActorLogic<any, any>;
34
33
  export declare function partition<T, A extends T, B extends T>(items: T[], predicate: (item: T) => item is A): [A[], B[]];
35
34
  export declare function isArray(value: any): value is any[];
36
- export declare function isFunction(value: any): value is Function;
37
- export declare function isString(value: any): value is string;
38
35
  export declare function isObservable<T>(value: any): value is Subscribable<T>;
39
36
  export declare const uniqueId: () => string;
40
37
  export declare function isErrorEvent(event: AnyEventObject): event is ErrorEvent<any>;
41
- export declare function toTransitionConfigArray<TContext extends MachineContext, TEvent extends EventObject>(event: TEvent['type'] | typeof NULL_EVENT | '*', configLike: SingleOrArray<TransitionConfig<TContext, TEvent> | TransitionConfigTarget>): Array<TransitionConfig<TContext, TEvent> & {
42
- event: TEvent['type'] | typeof NULL_EVENT | '*';
43
- }>;
38
+ export declare function toTransitionConfigArray<TContext extends MachineContext, TEvent extends EventObject>(configLike: SingleOrArray<TransitionConfig<TContext, TEvent> | TransitionConfigTarget>): Array<TransitionConfig<TContext, TEvent>>;
44
39
  export declare function normalizeTarget<TContext extends MachineContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, TEvent>> | undefined): Array<string | StateNode<TContext, TEvent>> | undefined;
45
40
  export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
46
41
  export declare function toInvokeConfig<TContext extends MachineContext, TEvent extends EventObject>(invocable: InvokeConfig<TContext, TEvent> | string | ActorLogic<any, any>, id: string): InvokeConfig<TContext, TEvent>;
@@ -2,10 +2,28 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var actors_dist_xstateActors = require('./actions-6b9073db.cjs.js');
5
+ var actors_dist_xstateActors = require('./actions-5fb9f10d.cjs.js');
6
6
  require('../dev/dist/xstate-dev.cjs.js');
7
7
 
8
8
  const EMPTY_OBJECT = {};
9
+ const toSerializableActon = action => {
10
+ if (typeof action === 'string') {
11
+ return {
12
+ type: action
13
+ };
14
+ }
15
+ if (typeof action === 'function') {
16
+ if ('resolve' in action) {
17
+ return {
18
+ type: action.type
19
+ };
20
+ }
21
+ return {
22
+ type: action.name
23
+ };
24
+ }
25
+ return action;
26
+ };
9
27
  class StateNode {
10
28
  /**
11
29
  * The relative key of the state node, which represents its location in the overall state value.
@@ -114,8 +132,8 @@ class StateNode {
114
132
 
115
133
  // History config
116
134
  this.history = this.config.history === true ? 'shallow' : this.config.history || false;
117
- this.entry = actors_dist_xstateActors.toActionObjects(this.config.entry);
118
- this.exit = actors_dist_xstateActors.toActionObjects(this.config.exit);
135
+ this.entry = actors_dist_xstateActors.toArray(this.config.entry);
136
+ this.exit = actors_dist_xstateActors.toArray(this.config.exit);
119
137
  this.meta = this.config.meta;
120
138
  this.output = this.type === 'final' ? this.config.output : undefined;
121
139
  this.tags = actors_dist_xstateActors.toArray(config.tags);
@@ -123,7 +141,7 @@ class StateNode {
123
141
  _initialize() {
124
142
  this.transitions = actors_dist_xstateActors.formatTransitions(this);
125
143
  if (this.config.always) {
126
- this.always = actors_dist_xstateActors.toTransitionConfigArray(actors_dist_xstateActors.NULL_EVENT, this.config.always).map(t => actors_dist_xstateActors.formatTransition(this, t));
144
+ this.always = actors_dist_xstateActors.toTransitionConfigArray(this.config.always).map(t => actors_dist_xstateActors.formatTransition(this, actors_dist_xstateActors.NULL_EVENT, t));
127
145
  }
128
146
  Object.keys(this.states).forEach(key => {
129
147
  this.states[key]._initialize();
@@ -142,13 +160,13 @@ class StateNode {
142
160
  initial: this.initial ? {
143
161
  target: this.initial.target,
144
162
  source: this,
145
- actions: this.initial.actions,
163
+ actions: this.initial.actions.map(toSerializableActon),
146
164
  eventType: null,
147
165
  reenter: false,
148
166
  toJSON: () => ({
149
167
  target: this.initial.target.map(t => `#${t.id}`),
150
168
  source: `#${this.id}`,
151
- actions: this.initial.actions,
169
+ actions: this.initial.actions.map(toSerializableActon),
152
170
  eventType: null
153
171
  })
154
172
  } : undefined,
@@ -157,9 +175,12 @@ class StateNode {
157
175
  return state.definition;
158
176
  }),
159
177
  on: this.on,
160
- transitions: this.transitions,
161
- entry: this.entry,
162
- exit: this.exit,
178
+ transitions: [...this.transitions.values()].flat().map(t => ({
179
+ ...t,
180
+ actions: t.actions.map(toSerializableActon)
181
+ })),
182
+ entry: this.entry.map(toSerializableActon),
183
+ exit: this.exit.map(toSerializableActon),
163
184
  meta: this.meta,
164
185
  order: this.order || -1,
165
186
  output: this.output,
@@ -184,7 +205,9 @@ class StateNode {
184
205
  const {
185
206
  systemId
186
207
  } = invokeConfig;
187
- const resolvedSrc = actors_dist_xstateActors.isString(src) ? src : !('type' in src) ? resolvedId : src;
208
+
209
+ // TODO: resolving should not happen here
210
+ const resolvedSrc = typeof src === 'string' ? src : !('type' in src) ? resolvedId : src;
188
211
  if (!this.machine.implementations.actors[resolvedId] && typeof src !== 'string' && !('type' in src)) {
189
212
  this.machine.implementations.actors = {
190
213
  ...this.machine.implementations.actors,
@@ -193,7 +216,7 @@ class StateNode {
193
216
  };
194
217
  }
195
218
  return {
196
- type: actors_dist_xstateActors.invoke,
219
+ type: 'xstate.invoke',
197
220
  ...invokeConfig,
198
221
  src: resolvedSrc,
199
222
  id: resolvedId,
@@ -206,7 +229,7 @@ class StateNode {
206
229
  } = invokeConfig;
207
230
  return {
208
231
  ...invokeDefValues,
209
- type: actors_dist_xstateActors.invoke,
232
+ type: 'xstate.invoke',
210
233
  src: resolvedSrc,
211
234
  id: resolvedId
212
235
  };
@@ -221,9 +244,9 @@ class StateNode {
221
244
  get on() {
222
245
  return actors_dist_xstateActors.memo(this, 'on', () => {
223
246
  const transitions = this.transitions;
224
- return transitions.reduce((map, transition) => {
225
- map[transition.eventType] = map[transition.eventType] || [];
226
- map[transition.eventType].push(transition);
247
+ return [...transitions].flatMap(([descriptor, t]) => t.map(t => [descriptor, t])).reduce((map, [descriptor, transition]) => {
248
+ map[descriptor] = map[descriptor] || [];
249
+ map[descriptor].push(transition);
227
250
  return map;
228
251
  }, {});
229
252
  });
@@ -310,9 +333,9 @@ class StateNode {
310
333
  * Excludes any inert events.
311
334
  */
312
335
  get ownEvents() {
313
- const events = new Set(this.transitions.filter(transition => {
314
- return !(!transition.target && !transition.actions.length && !transition.reenter);
315
- }).map(transition => transition.eventType));
336
+ const events = new Set([...this.transitions.keys()].filter(descriptor => {
337
+ return this.transitions.get(descriptor).some(transition => !(!transition.target && !transition.actions.length && !transition.reenter));
338
+ }));
316
339
  return Array.from(events);
317
340
  }
318
341
  }
@@ -728,7 +751,7 @@ function waitFor(actorRef, predicate, options) {
728
751
  });
729
752
  }
730
753
 
731
- exports.ActionTypes = actors_dist_xstateActors.ActionTypes;
754
+ exports.ConstantPrefix = actors_dist_xstateActors.ConstantPrefix;
732
755
  exports.Interpreter = actors_dist_xstateActors.Interpreter;
733
756
  exports.InterpreterStatus = actors_dist_xstateActors.ActorStatus;
734
757
  exports.SpecialTargets = actors_dist_xstateActors.SpecialTargets;
@@ -1,5 +1,5 @@
1
1
  export {
2
- ActionTypes,
2
+ ConstantPrefix,
3
3
  Interpreter,
4
4
  InterpreterStatus,
5
5
  SimulatedClock,
@@ -2,10 +2,28 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var actors_dist_xstateActors = require('./actions-0f903c0d.development.cjs.js');
5
+ var actors_dist_xstateActors = require('./actions-40bd643f.development.cjs.js');
6
6
  require('../dev/dist/xstate-dev.development.cjs.js');
7
7
 
8
8
  const EMPTY_OBJECT = {};
9
+ const toSerializableActon = action => {
10
+ if (typeof action === 'string') {
11
+ return {
12
+ type: action
13
+ };
14
+ }
15
+ if (typeof action === 'function') {
16
+ if ('resolve' in action) {
17
+ return {
18
+ type: action.type
19
+ };
20
+ }
21
+ return {
22
+ type: action.name
23
+ };
24
+ }
25
+ return action;
26
+ };
9
27
  class StateNode {
10
28
  /**
11
29
  * The relative key of the state node, which represents its location in the overall state value.
@@ -114,8 +132,8 @@ class StateNode {
114
132
 
115
133
  // History config
116
134
  this.history = this.config.history === true ? 'shallow' : this.config.history || false;
117
- this.entry = actors_dist_xstateActors.toActionObjects(this.config.entry);
118
- this.exit = actors_dist_xstateActors.toActionObjects(this.config.exit);
135
+ this.entry = actors_dist_xstateActors.toArray(this.config.entry);
136
+ this.exit = actors_dist_xstateActors.toArray(this.config.exit);
119
137
  this.meta = this.config.meta;
120
138
  this.output = this.type === 'final' ? this.config.output : undefined;
121
139
  this.tags = actors_dist_xstateActors.toArray(config.tags);
@@ -123,7 +141,7 @@ class StateNode {
123
141
  _initialize() {
124
142
  this.transitions = actors_dist_xstateActors.formatTransitions(this);
125
143
  if (this.config.always) {
126
- this.always = actors_dist_xstateActors.toTransitionConfigArray(actors_dist_xstateActors.NULL_EVENT, this.config.always).map(t => actors_dist_xstateActors.formatTransition(this, t));
144
+ this.always = actors_dist_xstateActors.toTransitionConfigArray(this.config.always).map(t => actors_dist_xstateActors.formatTransition(this, actors_dist_xstateActors.NULL_EVENT, t));
127
145
  }
128
146
  Object.keys(this.states).forEach(key => {
129
147
  this.states[key]._initialize();
@@ -142,13 +160,13 @@ class StateNode {
142
160
  initial: this.initial ? {
143
161
  target: this.initial.target,
144
162
  source: this,
145
- actions: this.initial.actions,
163
+ actions: this.initial.actions.map(toSerializableActon),
146
164
  eventType: null,
147
165
  reenter: false,
148
166
  toJSON: () => ({
149
167
  target: this.initial.target.map(t => `#${t.id}`),
150
168
  source: `#${this.id}`,
151
- actions: this.initial.actions,
169
+ actions: this.initial.actions.map(toSerializableActon),
152
170
  eventType: null
153
171
  })
154
172
  } : undefined,
@@ -157,9 +175,12 @@ class StateNode {
157
175
  return state.definition;
158
176
  }),
159
177
  on: this.on,
160
- transitions: this.transitions,
161
- entry: this.entry,
162
- exit: this.exit,
178
+ transitions: [...this.transitions.values()].flat().map(t => ({
179
+ ...t,
180
+ actions: t.actions.map(toSerializableActon)
181
+ })),
182
+ entry: this.entry.map(toSerializableActon),
183
+ exit: this.exit.map(toSerializableActon),
163
184
  meta: this.meta,
164
185
  order: this.order || -1,
165
186
  output: this.output,
@@ -184,7 +205,9 @@ class StateNode {
184
205
  const {
185
206
  systemId
186
207
  } = invokeConfig;
187
- const resolvedSrc = actors_dist_xstateActors.isString(src) ? src : !('type' in src) ? resolvedId : src;
208
+
209
+ // TODO: resolving should not happen here
210
+ const resolvedSrc = typeof src === 'string' ? src : !('type' in src) ? resolvedId : src;
188
211
  if (!this.machine.implementations.actors[resolvedId] && typeof src !== 'string' && !('type' in src)) {
189
212
  this.machine.implementations.actors = {
190
213
  ...this.machine.implementations.actors,
@@ -193,7 +216,7 @@ class StateNode {
193
216
  };
194
217
  }
195
218
  return {
196
- type: actors_dist_xstateActors.invoke,
219
+ type: 'xstate.invoke',
197
220
  ...invokeConfig,
198
221
  src: resolvedSrc,
199
222
  id: resolvedId,
@@ -206,7 +229,7 @@ class StateNode {
206
229
  } = invokeConfig;
207
230
  return {
208
231
  ...invokeDefValues,
209
- type: actors_dist_xstateActors.invoke,
232
+ type: 'xstate.invoke',
210
233
  src: resolvedSrc,
211
234
  id: resolvedId
212
235
  };
@@ -221,9 +244,9 @@ class StateNode {
221
244
  get on() {
222
245
  return actors_dist_xstateActors.memo(this, 'on', () => {
223
246
  const transitions = this.transitions;
224
- return transitions.reduce((map, transition) => {
225
- map[transition.eventType] = map[transition.eventType] || [];
226
- map[transition.eventType].push(transition);
247
+ return [...transitions].flatMap(([descriptor, t]) => t.map(t => [descriptor, t])).reduce((map, [descriptor, transition]) => {
248
+ map[descriptor] = map[descriptor] || [];
249
+ map[descriptor].push(transition);
227
250
  return map;
228
251
  }, {});
229
252
  });
@@ -310,9 +333,9 @@ class StateNode {
310
333
  * Excludes any inert events.
311
334
  */
312
335
  get ownEvents() {
313
- const events = new Set(this.transitions.filter(transition => {
314
- return !(!transition.target && !transition.actions.length && !transition.reenter);
315
- }).map(transition => transition.eventType));
336
+ const events = new Set([...this.transitions.keys()].filter(descriptor => {
337
+ return this.transitions.get(descriptor).some(transition => !(!transition.target && !transition.actions.length && !transition.reenter));
338
+ }));
316
339
  return Array.from(events);
317
340
  }
318
341
  }
@@ -731,7 +754,7 @@ function waitFor(actorRef, predicate, options) {
731
754
  });
732
755
  }
733
756
 
734
- exports.ActionTypes = actors_dist_xstateActors.ActionTypes;
757
+ exports.ConstantPrefix = actors_dist_xstateActors.ConstantPrefix;
735
758
  exports.Interpreter = actors_dist_xstateActors.Interpreter;
736
759
  exports.InterpreterStatus = actors_dist_xstateActors.ActorStatus;
737
760
  exports.SpecialTargets = actors_dist_xstateActors.SpecialTargets;