xstate 5.8.2 → 5.9.0

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 (53) hide show
  1. package/actions/dist/xstate-actions.cjs.js +2 -2
  2. package/actions/dist/xstate-actions.development.cjs.js +2 -2
  3. package/actions/dist/xstate-actions.development.esm.js +2 -2
  4. package/actions/dist/xstate-actions.esm.js +2 -2
  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/declarations/src/State.d.ts +1 -1
  14. package/dist/declarations/src/StateMachine.d.ts +6 -5
  15. package/dist/declarations/src/StateNode.d.ts +9 -6
  16. package/dist/declarations/src/actions/assign.d.ts +1 -1
  17. package/dist/declarations/src/actions/emit.d.ts +44 -0
  18. package/dist/declarations/src/actions/enqueueActions.d.ts +10 -8
  19. package/dist/declarations/src/actions/raise.d.ts +1 -1
  20. package/dist/declarations/src/actions/send.d.ts +5 -5
  21. package/dist/declarations/src/actions/spawnChild.d.ts +1 -1
  22. package/dist/declarations/src/actions/stopChild.d.ts +2 -2
  23. package/dist/declarations/src/actors/callback.d.ts +1 -1
  24. package/dist/declarations/src/actors/observable.d.ts +1 -1
  25. package/dist/declarations/src/actors/promise.d.ts +2 -2
  26. package/dist/declarations/src/actors/transition.d.ts +3 -3
  27. package/dist/declarations/src/createActor.d.ts +8 -4
  28. package/dist/declarations/src/createMachine.d.ts +4 -4
  29. package/dist/declarations/src/setup.d.ts +5 -5
  30. package/dist/declarations/src/typegenTypes.d.ts +3 -1
  31. package/dist/declarations/src/types.d.ts +77 -66
  32. package/dist/declarations/src/utils.d.ts +2 -2
  33. package/dist/declarations/src/waitFor.d.ts +2 -2
  34. package/dist/{log-abca6761.development.esm.js → log-2a4cc478.esm.js} +67 -25
  35. package/dist/{log-e73cded6.development.cjs.js → log-2db5cc22.cjs.js} +67 -25
  36. package/dist/{log-12b88b7e.cjs.js → log-8273c74a.development.cjs.js} +95 -3
  37. package/dist/{log-ac1ff860.esm.js → log-fc0183d1.development.esm.js} +95 -3
  38. package/dist/{raise-af6a698b.cjs.js → raise-182bb5c9.cjs.js} +24 -0
  39. package/dist/{raise-a7ab421f.esm.js → raise-411df926.esm.js} +24 -0
  40. package/dist/{raise-3f85f1d9.development.esm.js → raise-80cc66b2.development.esm.js} +24 -0
  41. package/dist/{raise-7132462e.development.cjs.js → raise-933cd731.development.cjs.js} +24 -0
  42. package/dist/xstate.cjs.js +4 -3
  43. package/dist/xstate.development.cjs.js +4 -3
  44. package/dist/xstate.development.esm.js +6 -5
  45. package/dist/xstate.esm.js +6 -5
  46. package/dist/xstate.umd.min.js +1 -1
  47. package/dist/xstate.umd.min.js.map +1 -1
  48. package/guards/dist/xstate-guards.cjs.js +1 -1
  49. package/guards/dist/xstate-guards.development.cjs.js +1 -1
  50. package/guards/dist/xstate-guards.development.esm.js +1 -1
  51. package/guards/dist/xstate-guards.esm.js +1 -1
  52. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  53. package/package.json +1 -1
@@ -9,11 +9,12 @@ export declare class StateNode<TContext extends MachineContext = MachineContext,
9
9
  /**
10
10
  * The raw config used to create the machine.
11
11
  */
12
- config: StateNodeConfig<TContext, TEvent, TODO, // actions
13
- TODO, // actors
14
- TODO, // output
12
+ config: StateNodeConfig<TContext, TEvent, TODO, // actors
13
+ TODO, // actions
15
14
  TODO, // guards
16
15
  TODO, // delays
16
+ TODO, // tags
17
+ TODO, // output
17
18
  TODO>;
18
19
  /**
19
20
  * The relative key of the state node, which represents its location in the overall state value.
@@ -71,6 +72,7 @@ export declare class StateNode<TContext extends MachineContext = MachineContext,
71
72
  any, // tag
72
73
  any, // input
73
74
  any, // output
75
+ any, // emitted
74
76
  any>;
75
77
  /**
76
78
  * The meta data associated with this state node, which will be returned in State instances.
@@ -92,11 +94,12 @@ export declare class StateNode<TContext extends MachineContext = MachineContext,
92
94
  /**
93
95
  * The raw config used to create the machine.
94
96
  */
95
- config: StateNodeConfig<TContext, TEvent, TODO, // actions
96
- TODO, // actors
97
- TODO, // output
97
+ config: StateNodeConfig<TContext, TEvent, TODO, // actors
98
+ TODO, // actions
98
99
  TODO, // guards
99
100
  TODO, // delays
101
+ TODO, // tags
102
+ TODO, // output
100
103
  TODO>, options: StateNodeOptions<TContext, TEvent>);
101
104
  /**
102
105
  * The well-structured state node definition.
@@ -40,4 +40,4 @@ export interface AssignAction<TContext extends MachineContext, TExpressionEvent
40
40
  ```
41
41
  */
42
42
  export declare function assign<TContext extends MachineContext, TExpressionEvent extends AnyEventObject, // TODO: consider using a stricter `EventObject` here
43
- TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor>(assignment: Assigner<LowInfer<TContext>, TExpressionEvent, TParams, TEvent, TActor> | PropertyAssigner<LowInfer<TContext>, TExpressionEvent, TParams, TEvent, TActor>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, TActor, never, never, never>;
43
+ TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor>(assignment: Assigner<LowInfer<TContext>, TExpressionEvent, TParams, TEvent, TActor> | PropertyAssigner<LowInfer<TContext>, TExpressionEvent, TParams, TEvent, TActor>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, TActor, never, never, never, never>;
@@ -0,0 +1,44 @@
1
+ import { ActionArgs, EventObject, MachineContext, SendExpr, ParameterizedObject, ActionFunction } from "../types.js";
2
+ export interface EmitAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TEmitted extends EventObject> {
3
+ (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams): void;
4
+ _out_TEmitted?: TEmitted;
5
+ }
6
+ /**
7
+ * Emits an event to event handlers registered on the actor via `actor.on(event, handler)`.
8
+ *
9
+ * @example
10
+ ```ts
11
+ import { emit } from 'xstate';
12
+
13
+ const machine = createMachine({
14
+ // ...
15
+ on: {
16
+ something: {
17
+ actions: emit({
18
+ type: 'emitted',
19
+ some: 'data'
20
+ })
21
+ }
22
+ }
23
+ // ...
24
+ });
25
+
26
+ const actor = createActor(machine).start();
27
+
28
+ actor.on('emitted', (event) => {
29
+ console.log(event);
30
+ });
31
+
32
+ actor.send({ type: 'something' });
33
+ // logs:
34
+ // {
35
+ // type: 'emitted',
36
+ // some: 'data'
37
+ // }
38
+ ```
39
+ */
40
+ export declare function emit<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TEmitted extends EventObject>(
41
+ /**
42
+ * The event to emit, or an expression that returns an event to emit.
43
+ */
44
+ eventOrExpr: TEmitted | SendExpr<TContext, TExpressionEvent, TParams, TEmitted, TEvent>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, never, never, never, never, TEmitted>;
@@ -2,32 +2,34 @@ import { Guard } from "../guards.js";
2
2
  import { Action, ActionArgs, ActionFunction, AnyActorRef, EventObject, MachineContext, ParameterizedObject, ProvidedActor, UnifiedArg } from "../types.js";
3
3
  import { assign } from "./assign.js";
4
4
  import { cancel } from "./cancel.js";
5
+ import { emit } from "./emit.js";
5
6
  import { raise } from "./raise.js";
6
7
  import { sendTo } from "./send.js";
7
8
  import { spawnChild } from "./spawnChild.js";
8
9
  import { stopChild } from "./stopChild.js";
9
- interface ActionEnqueuer<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
10
- (action: Action<TContext, TExpressionEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay>): void;
10
+ interface ActionEnqueuer<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject> {
11
+ (action: Action<TContext, TExpressionEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay, TEmitted>): void;
11
12
  assign: (...args: Parameters<typeof assign<TContext, TExpressionEvent, undefined, TEvent, TActor>>) => void;
12
13
  cancel: (...args: Parameters<typeof cancel<TContext, TExpressionEvent, undefined, TEvent>>) => void;
13
14
  raise: (...args: Parameters<typeof raise<TContext, TExpressionEvent, TEvent, undefined, TDelay, TDelay>>) => void;
14
15
  sendTo: <TTargetActor extends AnyActorRef>(...args: Parameters<typeof sendTo<TContext, TExpressionEvent, undefined, TTargetActor, TEvent, TDelay, TDelay>>) => void;
15
16
  spawnChild: (...args: Parameters<typeof spawnChild<TContext, TExpressionEvent, undefined, TEvent, TActor>>) => void;
16
17
  stopChild: (...args: Parameters<typeof stopChild<TContext, TExpressionEvent, undefined, TEvent>>) => void;
18
+ emit: (...args: Parameters<typeof emit<TContext, TExpressionEvent, undefined, TEvent, TEmitted>>) => void;
17
19
  }
18
- export interface EnqueueActionsAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
19
- (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: unknown): void;
20
+ export interface EnqueueActionsAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
21
+ (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams): void;
20
22
  _out_TEvent?: TEvent;
21
23
  _out_TActor?: TActor;
22
24
  _out_TAction?: TAction;
23
25
  _out_TGuard?: TGuard;
24
26
  _out_TDelay?: TDelay;
25
27
  }
26
- interface CollectActionsArg<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> extends UnifiedArg<TContext, TExpressionEvent, TEvent> {
28
+ interface CollectActionsArg<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject> extends UnifiedArg<TContext, TExpressionEvent, TEvent> {
27
29
  check: (guard: Guard<TContext, TExpressionEvent, undefined, TGuard>) => boolean;
28
- enqueue: ActionEnqueuer<TContext, TExpressionEvent, TEvent, TActor, TAction, TGuard, TDelay>;
30
+ enqueue: ActionEnqueuer<TContext, TExpressionEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>;
29
31
  }
30
- type CollectActions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = ({ context, event, check, enqueue, self }: CollectActionsArg<TContext, TExpressionEvent, TEvent, TActor, TAction, TGuard, TDelay>) => void;
32
+ type CollectActions<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject> = ({ context, event, check, enqueue, self }: CollectActionsArg<TContext, TExpressionEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>, params: TParams) => void;
31
33
  /**
32
34
  * Creates an action object that will execute actions that are queued by the `enqueue(action)` function.
33
35
  *
@@ -48,5 +50,5 @@ type CollectActions<TContext extends MachineContext, TExpressionEvent extends Ev
48
50
  })
49
51
  ```
50
52
  */
51
- export declare function enqueueActions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = never>(collect: CollectActions<TContext, TExpressionEvent, TEvent, TActor, TAction, TGuard, TDelay>): ActionFunction<TContext, TExpressionEvent, TEvent, unknown, TActor, TAction, TGuard, TDelay>;
53
+ export declare function enqueueActions<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject = TExpressionEvent, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = never, TEmitted extends EventObject = EventObject>(collect: CollectActions<TContext, TExpressionEvent, TParams, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, TActor, TAction, TGuard, TDelay, TEmitted>;
52
54
  export {};
@@ -10,4 +10,4 @@ export interface RaiseAction<TContext extends MachineContext, TExpressionEvent e
10
10
  *
11
11
  * @param eventType The event to raise.
12
12
  */
13
- export declare function raise<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TDelay extends string = never, TUsedDelay extends TDelay = never>(eventOrExpr: NoInfer<TEvent> | SendExpr<TContext, TExpressionEvent, TParams, NoInfer<TEvent>, TEvent>, options?: RaiseActionOptions<TContext, TExpressionEvent, TParams, NoInfer<TEvent>, TUsedDelay>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, never, never, never, TDelay>;
13
+ export declare function raise<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TDelay extends string = never, TUsedDelay extends TDelay = never>(eventOrExpr: NoInfer<TEvent> | SendExpr<TContext, TExpressionEvent, TParams, NoInfer<TEvent>, TEvent>, options?: RaiseActionOptions<TContext, TExpressionEvent, TParams, NoInfer<TEvent>, TUsedDelay>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, never, never, never, TDelay, never>;
@@ -1,4 +1,4 @@
1
- import { ActionArgs, ActionFunction, ActorRef, AnyActorRef, AnyEventObject, Cast, EventFrom, EventObject, InferEvent, MachineContext, NoInfer, ParameterizedObject, SendExpr, SendToActionOptions } from "../types.js";
1
+ import { ActionArgs, ActionFunction, AnyActorRef, AnyEventObject, Cast, EventFrom, EventObject, InferEvent, MachineContext, NoInfer, ParameterizedObject, SendExpr, SendToActionOptions } from "../types.js";
2
2
  export interface SendToAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TDelay extends string> {
3
3
  (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams): void;
4
4
  _out_TDelay?: TDelay;
@@ -12,20 +12,20 @@ export interface SendToAction<TContext extends MachineContext, TExpressionEvent
12
12
  * - `id` - The unique send event identifier (used with `cancel()`).
13
13
  * - `delay` - The number of milliseconds to delay the sending of the event.
14
14
  */
15
- export declare function sendTo<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TTargetActor extends AnyActorRef, TEvent extends EventObject, TDelay extends string = never, TUsedDelay extends TDelay = never>(to: TTargetActor | string | ((args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => TTargetActor | string), eventOrExpr: EventFrom<TTargetActor> | SendExpr<TContext, TExpressionEvent, TParams, InferEvent<Cast<EventFrom<TTargetActor>, EventObject>>, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TParams, NoInfer<TEvent>, TUsedDelay>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, never, never, never, TDelay>;
15
+ export declare function sendTo<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TTargetActor extends AnyActorRef, TEvent extends EventObject, TDelay extends string = never, TUsedDelay extends TDelay = never>(to: TTargetActor | string | ((args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => TTargetActor | string), eventOrExpr: EventFrom<TTargetActor> | SendExpr<TContext, TExpressionEvent, TParams, InferEvent<Cast<EventFrom<TTargetActor>, EventObject>>, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TParams, NoInfer<TEvent>, TUsedDelay>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, never, never, never, TDelay, never>;
16
16
  /**
17
17
  * Sends an event to this machine's parent.
18
18
  *
19
19
  * @param event The event to send to the parent machine.
20
20
  * @param options Options to pass into the send event.
21
21
  */
22
- export declare function sendParent<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TSentEvent extends EventObject = AnyEventObject, TEvent extends EventObject = AnyEventObject, TDelay extends string = never, TUsedDelay extends TDelay = never>(event: TSentEvent | SendExpr<TContext, TExpressionEvent, TParams, TSentEvent, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TParams, TEvent, TUsedDelay>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, never, never, never, TDelay>;
23
- type Target<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = string | ActorRef<any, any> | ((args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => string | ActorRef<any, any>);
22
+ export declare function sendParent<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TSentEvent extends EventObject = AnyEventObject, TEvent extends EventObject = AnyEventObject, TDelay extends string = never, TUsedDelay extends TDelay = never>(event: TSentEvent | SendExpr<TContext, TExpressionEvent, TParams, TSentEvent, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TParams, TEvent, TUsedDelay>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, never, never, never, TDelay, never>;
23
+ type Target<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = string | AnyActorRef | ((args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => string | AnyActorRef);
24
24
  /**
25
25
  * Forwards (sends) an event to the `target` actor.
26
26
  *
27
27
  * @param target The target actor to forward the event to.
28
28
  * @param options Options to pass into the send action creator.
29
29
  */
30
- export declare function forwardTo<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TDelay extends string = never, TUsedDelay extends TDelay = never>(target: Target<TContext, TExpressionEvent, TParams, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TParams, TEvent, TUsedDelay>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, never, never, never, TDelay>;
30
+ export declare function forwardTo<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TDelay extends string = never, TUsedDelay extends TDelay = never>(target: Target<TContext, TExpressionEvent, TParams, TEvent>, options?: SendToActionOptions<TContext, TExpressionEvent, TParams, TEvent, TUsedDelay>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, never, never, never, TDelay, never>;
31
31
  export {};
@@ -25,5 +25,5 @@ type SpawnArguments<TContext extends MachineContext, TExpressionEvent extends Ev
25
25
  syncSnapshot?: boolean;
26
26
  }
27
27
  ];
28
- export declare function spawnChild<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor>(...[src, { id, systemId, input, syncSnapshot }]: SpawnArguments<TContext, TExpressionEvent, TEvent, TActor>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, TActor, never, never, never>;
28
+ export declare function spawnChild<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor>(...[src, { id, systemId, input, syncSnapshot }]: SpawnArguments<TContext, TExpressionEvent, TEvent, TActor>): ActionFunction<TContext, TExpressionEvent, TEvent, TParams, TActor, never, never, never, never>;
29
29
  export {};
@@ -1,5 +1,5 @@
1
- import { ActionArgs, ActorRef, EventObject, MachineContext, ParameterizedObject } from "../types.js";
2
- type ResolvableActorRef<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = string | ActorRef<any, any> | ((args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => ActorRef<any, any> | string);
1
+ import { ActionArgs, AnyActorRef, EventObject, MachineContext, ParameterizedObject } from "../types.js";
2
+ type ResolvableActorRef<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = string | AnyActorRef | ((args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => AnyActorRef | string);
3
3
  export interface StopAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> {
4
4
  (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams): void;
5
5
  }
@@ -3,7 +3,7 @@ import { ActorLogic, ActorRefFrom, AnyEventObject, EventObject, NonReducibleUnkn
3
3
  export type CallbackSnapshot<TInput> = Snapshot<undefined> & {
4
4
  input: TInput;
5
5
  };
6
- export type CallbackActorLogic<TEvent extends EventObject, TInput = NonReducibleUnknown> = ActorLogic<CallbackSnapshot<TInput>, TEvent, TInput, AnyActorSystem>;
6
+ export type CallbackActorLogic<TEvent extends EventObject, TInput = NonReducibleUnknown> = ActorLogic<CallbackSnapshot<TInput>, TEvent, TInput, AnyActorSystem, EventObject>;
7
7
  export type CallbackActorRef<TEvent extends EventObject, TInput = NonReducibleUnknown> = ActorRefFrom<CallbackActorLogic<TEvent, TInput>>;
8
8
  export type Receiver<TEvent extends EventObject> = (listener: {
9
9
  bivarianceHack(event: TEvent): void;
@@ -8,7 +8,7 @@ export type ObservableSnapshot<TContext, TInput extends NonReducibleUnknown> = S
8
8
  export type ObservableActorLogic<TContext, TInput extends NonReducibleUnknown> = ActorLogic<ObservableSnapshot<TContext, TInput>, {
9
9
  type: string;
10
10
  [k: string]: unknown;
11
- }, TInput, AnyActorSystem>;
11
+ }, TInput, AnyActorSystem, EventObject>;
12
12
  export type ObservableActorRef<TContext> = ActorRefFrom<ObservableActorLogic<TContext, any>>;
13
13
  /**
14
14
  * Observable actor logic is described by an observable stream of values. Actors created from observable logic (“observable actors”) can:
@@ -1,5 +1,5 @@
1
1
  import { AnyActorSystem } from "../system.js";
2
- import { ActorLogic, ActorRefFrom, NonReducibleUnknown, Snapshot } from "../types.js";
2
+ import { ActorLogic, ActorRefFrom, EventObject, NonReducibleUnknown, Snapshot } from "../types.js";
3
3
  export type PromiseSnapshot<TOutput, TInput> = Snapshot<TOutput> & {
4
4
  input: TInput | undefined;
5
5
  };
@@ -7,7 +7,7 @@ export type PromiseActorLogic<TOutput, TInput = unknown> = ActorLogic<PromiseSna
7
7
  type: string;
8
8
  [k: string]: unknown;
9
9
  }, TInput, // input
10
- AnyActorSystem>;
10
+ AnyActorSystem, EventObject>;
11
11
  export type PromiseActorRef<TOutput> = ActorRefFrom<PromiseActorLogic<TOutput, unknown>>;
12
12
  /**
13
13
  * An actor logic creator which returns promise logic as defined by an async process that resolves or rejects after some time.
@@ -3,7 +3,7 @@ import { ActorLogic, ActorRefFrom, ActorScope, EventObject, NonReducibleUnknown,
3
3
  export type TransitionSnapshot<TContext> = Snapshot<undefined> & {
4
4
  context: TContext;
5
5
  };
6
- export type TransitionActorLogic<TContext, TEvent extends EventObject, TInput extends NonReducibleUnknown> = ActorLogic<TransitionSnapshot<TContext>, TEvent, TInput, AnyActorSystem>;
6
+ export type TransitionActorLogic<TContext, TEvent extends EventObject, TInput extends NonReducibleUnknown, TEmitted extends EventObject = EventObject> = ActorLogic<TransitionSnapshot<TContext>, TEvent, TInput, AnyActorSystem, TEmitted>;
7
7
  export type TransitionActorRef<TContext, TEvent extends EventObject> = ActorRefFrom<TransitionActorLogic<TransitionSnapshot<TContext>, TEvent, unknown>>;
8
8
  /**
9
9
  * Returns actor logic given a transition function and its initial state.
@@ -63,7 +63,7 @@ export type TransitionActorRef<TContext, TEvent extends EventObject> = ActorRefF
63
63
  * // }
64
64
  * ```
65
65
  */
66
- export declare function fromTransition<TContext, TEvent extends EventObject, TSystem extends AnyActorSystem, TInput extends NonReducibleUnknown>(transition: (snapshot: TContext, event: TEvent, actorScope: ActorScope<TransitionSnapshot<TContext>, TEvent, TSystem>) => TContext, initialContext: TContext | (({ input, self }: {
66
+ export declare function fromTransition<TContext, TEvent extends EventObject, TSystem extends AnyActorSystem, TInput extends NonReducibleUnknown, TEmitted extends EventObject = EventObject>(transition: (snapshot: TContext, event: TEvent, actorScope: ActorScope<TransitionSnapshot<TContext>, TEvent, TSystem>) => TContext, initialContext: TContext | (({ input, self }: {
67
67
  input: TInput;
68
68
  self: TransitionActorRef<TContext, TEvent>;
69
- }) => TContext)): TransitionActorLogic<TContext, TEvent, TInput>;
69
+ }) => TContext)): TransitionActorLogic<TContext, TEvent, TInput, TEmitted>;
@@ -1,6 +1,6 @@
1
1
  import { symbolObservable } from "./symbolObservable.js";
2
2
  import { AnyActorSystem, Clock } from "./system.js";
3
- import type { AnyActorLogic, ConditionalRequired, EventFromLogic, InputFrom, IsNotNever, Snapshot, SnapshotFrom } from "./types.js";
3
+ import type { AnyActorLogic, AnyActorRef, ConditionalRequired, EmittedFrom, EventFromLogic, InputFrom, IsNotNever, Snapshot, SnapshotFrom } from "./types.js";
4
4
  import { ActorOptions, ActorRef, EventObject, InteropSubscribable, Observer, Subscription } from "./types.js";
5
5
  export declare const $$ACTOR_TYPE = 1;
6
6
  export type SnapshotListener<TLogic extends AnyActorLogic> = (snapshot: SnapshotFrom<TLogic>) => void;
@@ -15,7 +15,7 @@ export declare enum ProcessingStatus {
15
15
  /**
16
16
  * An Actor is a running process that can receive events, send events and change its behavior based on the events it receives, which can cause effects outside of the actor. When you run a state machine, it becomes an actor.
17
17
  */
18
- export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<SnapshotFrom<TLogic>, EventFromLogic<TLogic>> {
18
+ export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<SnapshotFrom<TLogic>, EventFromLogic<TLogic>, EmittedFrom<TLogic>> {
19
19
  logic: TLogic;
20
20
  /**
21
21
  * The current internal state of the actor.
@@ -32,9 +32,10 @@ export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<Sna
32
32
  id: string;
33
33
  private mailbox;
34
34
  private observers;
35
+ private eventListeners;
35
36
  private logger;
36
- _parent?: ActorRef<any, any>;
37
- ref: ActorRef<SnapshotFrom<TLogic>, EventFromLogic<TLogic>>;
37
+ _parent?: AnyActorRef;
38
+ ref: ActorRef<SnapshotFrom<TLogic>, EventFromLogic<TLogic>, EmittedFrom<TLogic>>;
38
39
  private _actorScope;
39
40
  private _systemId;
40
41
  /**
@@ -107,6 +108,9 @@ export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<Sna
107
108
  */
108
109
  subscribe(observer: Observer<SnapshotFrom<TLogic>>): Subscription;
109
110
  subscribe(nextListener?: (snapshot: SnapshotFrom<TLogic>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
111
+ on<TType extends EmittedFrom<TLogic>['type']>(type: TType, handler: (emitted: EmittedFrom<TLogic> & {
112
+ type: TType;
113
+ }) => void): Subscription;
110
114
  /**
111
115
  * Starts the Actor from the initial state
112
116
  */
@@ -1,6 +1,6 @@
1
1
  import { StateMachine } from "./StateMachine.js";
2
2
  import { ResolveTypegenMeta, TypegenConstraint, TypegenDisabled } from "./typegenTypes.js";
3
- import { AnyActorRef, AnyEventObject, Cast, InternalMachineImplementations, IsNever, MachineConfig, MachineContext, MachineTypes, NonReducibleUnknown, ParameterizedObject, Prop, ProvidedActor, StateValue, ToChildren } from "./types.js";
3
+ import { AnyActorRef, EventObject, AnyEventObject, Cast, InternalMachineImplementations, IsNever, MachineConfig, MachineContext, MachineTypes, NonReducibleUnknown, ParameterizedObject, Prop, ProvidedActor, StateValue, ToChildren } from "./types.js";
4
4
  type TestValue = string | {
5
5
  [k: string]: TestValue | undefined;
6
6
  };
@@ -56,8 +56,8 @@ type ToStateValue<TTestValue extends string | TestValue> = FilterLeafValues<Grou
56
56
  ```
57
57
  */
58
58
  export declare function createMachine<TContext extends MachineContext, TEvent extends AnyEventObject, // TODO: consider using a stricter `EventObject` here
59
- TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TInput, TOutput extends NonReducibleUnknown, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: {
60
- types?: MachineTypes<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TInput, TOutput, TTypesMeta>;
59
+ TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TInput, TOutput extends NonReducibleUnknown, TEmitted extends EventObject, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: {
60
+ types?: MachineTypes<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TInput, TOutput, TEmitted, TTypesMeta>;
61
61
  schemas?: unknown;
62
- } & MachineConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TInput, TOutput, TTypesMeta>, implementations?: InternalMachineImplementations<TContext, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag>>): StateMachine<TContext, TEvent, Cast<ToChildren<TActor>, Record<string, AnyActorRef | undefined>>, TActor, TAction, TGuard, TDelay, 'matchesStates' extends keyof TTypesMeta ? ToStateValue<Cast<TTypesMeta['matchesStates'], TestValue>> : StateValue, Prop<ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag>['resolved'], 'tags'> & string, TInput, TOutput, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag>>;
62
+ } & MachineConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TInput, TOutput, TEmitted, TTypesMeta>, implementations?: InternalMachineImplementations<TContext, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag, TEmitted>>): StateMachine<TContext, TEvent, Cast<ToChildren<TActor>, Record<string, AnyActorRef | undefined>>, TActor, TAction, TGuard, TDelay, 'matchesStates' extends keyof TTypesMeta ? ToStateValue<Cast<TTypesMeta['matchesStates'], TestValue>> : StateValue, Prop<ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag, TEmitted>['resolved'], 'tags'> & string, TInput, TOutput, TEmitted, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag, TEmitted>>;
63
63
  export {};
@@ -1,7 +1,7 @@
1
1
  import { StateMachine } from "./StateMachine.js";
2
2
  import { GuardPredicate } from "./guards.js";
3
3
  import { ResolveTypegenMeta, TypegenDisabled } from "./typegenTypes.js";
4
- import { ActionFunction, AnyActorRef, AnyEventObject, Cast, ConditionalRequired, DelayConfig, Invert, IsNever, MachineConfig, MachineContext, NonReducibleUnknown, ParameterizedObject, SetupTypes, StateSchema, ToChildren, UnknownActorLogic, Values } from "./types.js";
4
+ import { ActionFunction, AnyActorRef, AnyEventObject, Cast, ConditionalRequired, DelayConfig, EventObject, Invert, IsNever, MachineConfig, MachineContext, NonReducibleUnknown, ParameterizedObject, SetupTypes, StateSchema, ToChildren, UnknownActorLogic, Values } from "./types.js";
5
5
  type ToParameterizedObject<TParameterizedMap extends Record<string, ParameterizedObject['params'] | undefined>> = IsNever<TParameterizedMap> extends true ? never : Values<{
6
6
  [K in keyof TParameterizedMap & string]: {
7
7
  type: K;
@@ -33,14 +33,14 @@ type ToStateValue<T extends StateSchema> = T extends {
33
33
  } ? true : false> : never) : {};
34
34
  type RequiredSetupKeys<TChildrenMap> = IsNever<keyof TChildrenMap> extends true ? never : 'actors';
35
35
  export declare function setup<TContext extends MachineContext, TEvent extends AnyEventObject, // TODO: consider using a stricter `EventObject` here
36
- TActors extends Record<string, UnknownActorLogic> = {}, TChildrenMap extends Record<string, string> = {}, TActions extends Record<string, ParameterizedObject['params'] | undefined> = {}, TGuards extends Record<string, ParameterizedObject['params'] | undefined> = {}, TDelay extends string = never, TTag extends string = string, TInput = NonReducibleUnknown, TOutput extends NonReducibleUnknown = NonReducibleUnknown>({ schemas, actors, actions, guards, delays }: {
36
+ TActors extends Record<string, UnknownActorLogic> = {}, TChildrenMap extends Record<string, string> = {}, TActions extends Record<string, ParameterizedObject['params'] | undefined> = {}, TGuards extends Record<string, ParameterizedObject['params'] | undefined> = {}, TDelay extends string = never, TTag extends string = string, TInput = NonReducibleUnknown, TOutput extends NonReducibleUnknown = NonReducibleUnknown, TEmitted extends EventObject = EventObject>({ schemas, actors, actions, guards, delays }: {
37
37
  schemas?: unknown;
38
- types?: SetupTypes<TContext, TEvent, TChildrenMap, TTag, TInput, TOutput>;
38
+ types?: SetupTypes<TContext, TEvent, TChildrenMap, TTag, TInput, TOutput, TEmitted>;
39
39
  actors?: {
40
40
  [K in keyof TActors | Values<TChildrenMap>]: K extends keyof TActors ? TActors[K] : never;
41
41
  };
42
42
  actions?: {
43
- [K in keyof TActions]: ActionFunction<TContext, TEvent, TEvent, TActions[K], ToProvidedActor<TChildrenMap, TActors>, ToParameterizedObject<TActions>, ToParameterizedObject<TGuards>, TDelay>;
43
+ [K in keyof TActions]: ActionFunction<TContext, TEvent, TEvent, TActions[K], ToProvidedActor<TChildrenMap, TActors>, ToParameterizedObject<TActions>, ToParameterizedObject<TGuards>, TDelay, TEmitted>;
44
44
  };
45
45
  guards?: {
46
46
  [K in keyof TGuards]: GuardPredicate<TContext, TEvent, TGuards[K], ToParameterizedObject<TGuards>>;
@@ -51,6 +51,6 @@ TActors extends Record<string, UnknownActorLogic> = {}, TChildrenMap extends Rec
51
51
  } & {
52
52
  [K in RequiredSetupKeys<TChildrenMap>]: unknown;
53
53
  }): {
54
- createMachine: <const TConfig extends MachineConfig<TContext, TEvent, ToProvidedActor<TChildrenMap, TActors>, ToParameterizedObject<TActions>, ToParameterizedObject<TGuards>, TDelay, TTag, TInput, TOutput, ResolveTypegenMeta<TypegenDisabled, TEvent, ToProvidedActor<TChildrenMap, TActors>, ToParameterizedObject<TActions>, ToParameterizedObject<TGuards>, TDelay, TTag>>>(config: TConfig) => StateMachine<TContext, TEvent, Cast<ToChildren<ToProvidedActor<TChildrenMap, TActors>>, Record<string, AnyActorRef | undefined>>, ToProvidedActor<TChildrenMap, TActors>, ToParameterizedObject<TActions>, ToParameterizedObject<TGuards>, TDelay, ToStateValue<TConfig>, TTag, TInput, TOutput, ResolveTypegenMeta<TypegenDisabled, TEvent, ToProvidedActor<TChildrenMap, TActors>, ToParameterizedObject<TActions>, ToParameterizedObject<TGuards>, TDelay, TTag>>;
54
+ createMachine: <const TConfig extends MachineConfig<TContext, TEvent, ToProvidedActor<TChildrenMap, TActors>, ToParameterizedObject<TActions>, ToParameterizedObject<TGuards>, TDelay, TTag, TInput, TOutput, TEmitted, ResolveTypegenMeta<TypegenDisabled, TEvent, ToProvidedActor<TChildrenMap, TActors>, ToParameterizedObject<TActions>, ToParameterizedObject<TGuards>, TDelay, TTag, TEmitted>>>(config: TConfig) => StateMachine<TContext, TEvent, Cast<ToChildren<ToProvidedActor<TChildrenMap, TActors>>, Record<string, AnyActorRef | undefined>>, ToProvidedActor<TChildrenMap, TActors>, ToParameterizedObject<TActions>, ToParameterizedObject<TGuards>, TDelay, ToStateValue<TConfig>, TTag, TInput, TOutput, TEmitted, ResolveTypegenMeta<TypegenDisabled, TEvent, ToProvidedActor<TChildrenMap, TActors>, ToParameterizedObject<TActions>, ToParameterizedObject<TGuards>, TDelay, TTag, TEmitted>>;
55
55
  };
56
56
  export {};
@@ -139,7 +139,7 @@ type WrapIntoParameterizedObject<T extends string> = T extends any ? {
139
139
  /**
140
140
  * @deprecated
141
141
  */
142
- export interface ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string> {
142
+ export interface ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TEmitted extends EventObject = EventObject> {
143
143
  '@@xstate/typegen': TTypesMeta['@@xstate/typegen'];
144
144
  resolved: {
145
145
  enabled: TTypesMeta & {
@@ -151,6 +151,7 @@ export interface ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent
151
151
  indexedGuards: IndexParameterizedImplementation<TGuard, Prop<TTypesMeta, 'eventsCausingGuards'>>;
152
152
  indexedDelays: IndexParameterizedImplementation<WrapIntoParameterizedObject<TDelay>, Prop<TTypesMeta, 'eventsCausingDelays'>>;
153
153
  tags: string extends TTag ? Prop<TTypesMeta, 'tags'> : TTag;
154
+ emitted: TEmitted;
154
155
  };
155
156
  disabled: TypegenDisabled & AllImplementationsProvided & AllowAllEvents & {
156
157
  indexedActions: IndexByType<TAction>;
@@ -160,6 +161,7 @@ export interface ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent
160
161
  indexedDelays: IndexByType<WrapIntoParameterizedObject<TDelay>>;
161
162
  invokeSrcNameMap: Record<string, string>;
162
163
  tags: TTag;
164
+ emitted: TEmitted;
163
165
  };
164
166
  }[IsNever<TTypesMeta> extends true ? 'disabled' : TTypesMeta['@@xstate/typegen'] extends true ? 'enabled' : 'disabled'];
165
167
  }