xstate 5.0.0-beta.8 → 5.0.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 (127) hide show
  1. package/README.md +10 -8
  2. package/actions/dist/xstate-actions.cjs.d.mts +2 -0
  3. package/actions/dist/xstate-actions.cjs.d.mts.map +1 -0
  4. package/actions/dist/xstate-actions.cjs.d.ts +1 -0
  5. package/actions/dist/xstate-actions.cjs.d.ts.map +1 -0
  6. package/actions/dist/xstate-actions.cjs.js +19 -5
  7. package/actions/dist/xstate-actions.cjs.mjs +13 -0
  8. package/actions/dist/xstate-actions.development.cjs.js +21 -0
  9. package/actions/dist/xstate-actions.development.cjs.mjs +13 -0
  10. package/actions/dist/xstate-actions.development.esm.js +3 -0
  11. package/actions/dist/xstate-actions.esm.js +3 -2
  12. package/actions/dist/xstate-actions.umd.min.js +1 -1
  13. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  14. package/actors/dist/xstate-actors.cjs.d.mts +2 -0
  15. package/actors/dist/xstate-actors.cjs.d.mts.map +1 -0
  16. package/actors/dist/xstate-actors.cjs.d.ts +1 -0
  17. package/actors/dist/xstate-actors.cjs.d.ts.map +1 -0
  18. package/actors/dist/xstate-actors.cjs.js +621 -4
  19. package/actors/dist/xstate-actors.cjs.mjs +8 -0
  20. package/actors/dist/xstate-actors.development.cjs.js +624 -0
  21. package/actors/dist/xstate-actors.development.cjs.mjs +8 -0
  22. package/actors/dist/xstate-actors.development.esm.js +615 -0
  23. package/actors/dist/xstate-actors.esm.js +615 -2
  24. package/actors/dist/xstate-actors.umd.min.js +1 -1
  25. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  26. package/dev/dist/xstate-dev.cjs.d.mts +2 -0
  27. package/dev/dist/xstate-dev.cjs.d.mts.map +1 -0
  28. package/dev/dist/xstate-dev.cjs.d.ts +1 -0
  29. package/dev/dist/xstate-dev.cjs.d.ts.map +1 -0
  30. package/dev/dist/xstate-dev.cjs.js +45 -4
  31. package/dev/dist/xstate-dev.cjs.mjs +5 -0
  32. package/{dist/index-ebaab3c9.cjs.dev.js → dev/dist/xstate-dev.development.cjs.js} +6 -7
  33. package/dev/dist/xstate-dev.development.cjs.mjs +5 -0
  34. package/{dist/index-50bd0aff.esm.js → dev/dist/xstate-dev.development.esm.js} +6 -8
  35. package/dev/dist/xstate-dev.esm.js +42 -1
  36. package/dev/dist/xstate-dev.umd.min.js +1 -1
  37. package/dev/dist/xstate-dev.umd.min.js.map +1 -1
  38. package/dist/declarations/src/SimulatedClock.d.ts +1 -1
  39. package/dist/declarations/src/State.d.ts +47 -73
  40. package/dist/declarations/src/StateMachine.d.ts +29 -57
  41. package/dist/declarations/src/StateNode.d.ts +36 -33
  42. package/dist/declarations/src/actions/assign.d.ts +11 -2
  43. package/dist/declarations/src/actions/cancel.d.ts +7 -3
  44. package/dist/declarations/src/actions/enqueueActions.d.ts +32 -0
  45. package/dist/declarations/src/actions/log.d.ts +7 -3
  46. package/dist/declarations/src/actions/raise.d.ts +7 -2
  47. package/dist/declarations/src/actions/send.d.ts +14 -36
  48. package/dist/declarations/src/actions/spawnChild.d.ts +29 -0
  49. package/dist/declarations/src/actions/stopChild.d.ts +18 -0
  50. package/dist/declarations/src/actions.d.ts +8 -48
  51. package/dist/declarations/src/actors/callback.d.ts +91 -8
  52. package/dist/declarations/src/actors/index.d.ts +6 -28
  53. package/dist/declarations/src/actors/observable.d.ts +101 -18
  54. package/dist/declarations/src/actors/promise.d.ts +80 -10
  55. package/dist/declarations/src/actors/transition.d.ts +64 -9
  56. package/dist/declarations/src/constants.d.ts +3 -0
  57. package/dist/declarations/src/createMachine.d.ts +20 -0
  58. package/dist/declarations/src/dev/index.d.ts +6 -6
  59. package/dist/declarations/src/guards.d.ts +41 -8
  60. package/dist/declarations/src/index.d.ts +18 -23
  61. package/dist/declarations/src/interpreter.d.ts +150 -41
  62. package/dist/declarations/src/setup.d.ts +51 -0
  63. package/dist/declarations/src/spawn.d.ts +23 -2
  64. package/dist/declarations/src/stateUtils.d.ts +30 -45
  65. package/dist/declarations/src/system.d.ts +26 -2
  66. package/dist/declarations/src/typegenTypes.d.ts +40 -22
  67. package/dist/declarations/src/types.d.ts +528 -669
  68. package/dist/declarations/src/utils.d.ts +15 -52
  69. package/dist/declarations/src/waitFor.d.ts +2 -2
  70. package/dist/log-22e678c5.esm.js +364 -0
  71. package/dist/log-5e226275.cjs.js +372 -0
  72. package/dist/log-641cd926.development.cjs.js +394 -0
  73. package/dist/log-f196f85f.development.esm.js +386 -0
  74. package/dist/raise-34e25c2c.cjs.js +2368 -0
  75. package/dist/raise-62704519.development.cjs.js +2422 -0
  76. package/dist/raise-89c581c4.development.esm.js +2371 -0
  77. package/dist/raise-8bc422d1.esm.js +2317 -0
  78. package/dist/xstate.cjs.d.mts +2 -0
  79. package/dist/xstate.cjs.d.mts.map +1 -0
  80. package/dist/xstate.cjs.d.ts +1 -0
  81. package/dist/xstate.cjs.d.ts.map +1 -0
  82. package/dist/xstate.cjs.js +728 -4
  83. package/dist/xstate.cjs.mjs +39 -0
  84. package/dist/xstate.development.cjs.js +737 -0
  85. package/dist/xstate.development.cjs.mjs +39 -0
  86. package/dist/xstate.development.esm.js +699 -0
  87. package/dist/xstate.esm.js +561 -770
  88. package/dist/xstate.umd.min.js +1 -1
  89. package/dist/xstate.umd.min.js.map +1 -1
  90. package/guards/dist/xstate-guards.cjs.d.mts +2 -0
  91. package/guards/dist/xstate-guards.cjs.d.mts.map +1 -0
  92. package/guards/dist/xstate-guards.cjs.d.ts +1 -0
  93. package/guards/dist/xstate-guards.cjs.d.ts.map +1 -0
  94. package/guards/dist/xstate-guards.cjs.js +12 -5
  95. package/guards/dist/xstate-guards.cjs.mjs +7 -0
  96. package/guards/dist/xstate-guards.development.cjs.js +14 -0
  97. package/guards/dist/xstate-guards.development.cjs.mjs +7 -0
  98. package/guards/dist/xstate-guards.development.esm.js +2 -0
  99. package/guards/dist/xstate-guards.esm.js +2 -2
  100. package/guards/dist/xstate-guards.umd.min.js +1 -1
  101. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  102. package/package.json +59 -1
  103. package/actions/dist/xstate-actions.cjs.dev.js +0 -32
  104. package/actions/dist/xstate-actions.cjs.prod.js +0 -32
  105. package/actions/dynamicAction.ts +0 -42
  106. package/actors/dist/xstate-actors.cjs.dev.js +0 -22
  107. package/actors/dist/xstate-actors.cjs.prod.js +0 -22
  108. package/dev/dist/xstate-dev.cjs.dev.js +0 -11
  109. package/dev/dist/xstate-dev.cjs.prod.js +0 -48
  110. package/dist/actions-900f9761.cjs.prod.js +0 -4349
  111. package/dist/actions-c8d7df32.esm.js +0 -4332
  112. package/dist/actions-d06ca158.cjs.dev.js +0 -4387
  113. package/dist/declarations/actions/dynamicAction.d.ts +0 -5
  114. package/dist/declarations/src/Machine.d.ts +0 -4
  115. package/dist/declarations/src/Mailbox.d.ts +0 -12
  116. package/dist/declarations/src/actionTypes.d.ts +0 -16
  117. package/dist/declarations/src/actions/choose.d.ts +0 -3
  118. package/dist/declarations/src/actions/invoke.d.ts +0 -3
  119. package/dist/declarations/src/actions/pure.d.ts +0 -6
  120. package/dist/declarations/src/actions/stop.d.ts +0 -7
  121. package/dist/declarations/src/environment.d.ts +0 -1
  122. package/dist/declarations/src/mapState.d.ts +0 -3
  123. package/dist/declarations/src/memo.d.ts +0 -2
  124. package/dist/xstate.cjs.dev.js +0 -956
  125. package/dist/xstate.cjs.prod.js +0 -953
  126. package/guards/dist/xstate-guards.cjs.dev.js +0 -15
  127. package/guards/dist/xstate-guards.cjs.prod.js +0 -15
@@ -1,33 +1,26 @@
1
- import { BaseActionObject, EventObject, StateValue, TransitionConfig, TransitionDefinition, SingleOrArray, SCXML, StateValueMap, InitialTransitionConfig, MachineContext } from './types.ts';
2
- import { State } from './State.ts';
3
- import { NULL_EVENT } from './constants.ts';
4
- import type { StateNode } from './StateNode.ts';
5
- import { AnyActorContext, AnyHistoryValue, AnyState, AnyStateMachine, AnyStateNode, AnyTransitionDefinition, DelayedTransitionDefinition, InitialTransitionDefinition, StateFromMachine } from '.';
6
- type Configuration<TContext extends MachineContext, TE extends EventObject> = Iterable<StateNode<TContext, TE>>;
7
- type AnyConfiguration = Configuration<any, any>;
1
+ import { MachineSnapshot } from "./State.js";
2
+ import type { StateNode } from "./StateNode.js";
3
+ import { AnyEventObject, AnyHistoryValue, AnyMachineSnapshot, AnyStateNode, AnyTransitionDefinition, DelayedTransitionDefinition, EventObject, InitialTransitionConfig, InitialTransitionDefinition, MachineContext, StateValue, StateValueMap, TransitionDefinition, TODO, UnknownAction, AnyTransitionConfig, AnyActorScope } from "./types.js";
4
+ type StateNodeIterable<TContext extends MachineContext, TE extends EventObject> = Iterable<StateNode<TContext, TE>>;
5
+ type AnyStateNodeIterable = StateNodeIterable<any, any>;
8
6
  type AdjList = Map<AnyStateNode, Array<AnyStateNode>>;
9
- export declare function getConfiguration(stateNodes: Iterable<AnyStateNode>): Set<AnyStateNode>;
10
- export declare function getAdjList<TContext extends MachineContext, TE extends EventObject>(configuration: Configuration<TContext, TE>): AdjList;
11
- export declare function getStateValue(rootNode: AnyStateNode, configuration: AnyConfiguration): StateValue;
12
- export declare function isInFinalState(configuration: Array<AnyStateNode>, stateNode?: AnyStateNode): boolean;
7
+ export declare const isAtomicStateNode: (stateNode: StateNode<any, any>) => boolean;
8
+ export declare function getAllStateNodes(stateNodes: Iterable<AnyStateNode>): Set<AnyStateNode>;
9
+ export declare function getAdjList<TContext extends MachineContext, TE extends EventObject>(stateNodes: StateNodeIterable<TContext, TE>): AdjList;
10
+ export declare function getStateValue(rootNode: AnyStateNode, stateNodes: AnyStateNodeIterable): StateValue;
11
+ export declare function isInFinalState(stateNodeSet: Set<AnyStateNode>, stateNode: AnyStateNode): boolean;
13
12
  export declare const isStateId: (str: string) => boolean;
14
- export declare function getCandidates<TEvent extends EventObject>(stateNode: StateNode<any, TEvent>, receivedEventType: TEvent['type'],
15
- /**
16
- * If `true`, will use SCXML event partial token matching semantics
17
- * without the need for the ".*" suffix
18
- */
19
- partialMatch?: boolean): Array<TransitionDefinition<any, TEvent>>;
13
+ export declare function getCandidates<TEvent extends EventObject>(stateNode: StateNode<any, TEvent>, receivedEventType: TEvent['type']): Array<TransitionDefinition<any, TEvent>>;
20
14
  /**
21
15
  * All delayed transitions from the config.
22
16
  */
23
- export declare function getDelayedTransitions<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode): Array<DelayedTransitionDefinition<TContext, TEvent>>;
24
- export declare function formatTransition<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, transitionConfig: TransitionConfig<TContext, TEvent> & {
25
- event: TEvent['type'] | typeof NULL_EVENT | '*';
26
- }): AnyTransitionDefinition;
27
- export declare function formatTransitions<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode): Array<AnyTransitionDefinition>;
28
- export declare function formatInitialTransition<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, _target: SingleOrArray<string> | InitialTransitionConfig<TContext, TEvent>): InitialTransitionDefinition<TContext, TEvent>;
29
- export declare function resolveTarget(stateNode: AnyStateNode, targets: Array<string | AnyStateNode> | undefined): Array<AnyStateNode> | undefined;
30
- export declare function getInitialStateNodes(stateNode: AnyStateNode): Array<AnyStateNode>;
17
+ export declare function getDelayedTransitions(stateNode: AnyStateNode): Array<DelayedTransitionDefinition<MachineContext, EventObject>>;
18
+ export declare function formatTransition<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, descriptor: string, transitionConfig: AnyTransitionConfig): AnyTransitionDefinition;
19
+ export declare function formatTransitions<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode): Map<string, TransitionDefinition<TContext, TEvent>[]>;
20
+ export declare function formatInitialTransition<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, _target: string | undefined | InitialTransitionConfig<TContext, TEvent, TODO, TODO, TODO, TODO>): InitialTransitionDefinition<TContext, TEvent>;
21
+ export declare function resolveTarget(stateNode: AnyStateNode, targets: ReadonlyArray<string | AnyStateNode> | undefined): ReadonlyArray<AnyStateNode> | undefined;
22
+ export declare function getInitialStateNodesWithTheirAncestors(stateNode: AnyStateNode): Set<AnyStateNode>;
23
+ export declare function getInitialStateNodes(stateNode: AnyStateNode): Set<AnyStateNode>;
31
24
  /**
32
25
  * Returns the child state node from its relative `stateKey`, or throws.
33
26
  */
@@ -41,29 +34,22 @@ export declare function getStateNodeByPath(stateNode: AnyStateNode, statePath: s
41
34
  /**
42
35
  * Returns the state nodes represented by the current state value.
43
36
  *
44
- * @param state The state value or State instance
37
+ * @param stateValue The state value or State instance
45
38
  */
46
- export declare function getStateNodes<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, state: StateValue | State<TContext, TEvent>): Array<AnyStateNode>;
47
- export declare function transitionAtomicNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: string, state: State<TContext, TEvent>, _event: SCXML.Event<TEvent>): Array<TransitionDefinition<TContext, TEvent>> | undefined;
48
- export declare function transitionCompoundNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, state: State<TContext, TEvent>, _event: SCXML.Event<TEvent>): Array<TransitionDefinition<TContext, TEvent>> | undefined;
49
- export declare function transitionParallelNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, state: State<TContext, TEvent>, _event: SCXML.Event<TEvent>): Array<TransitionDefinition<TContext, TEvent>> | undefined;
50
- export declare function transitionNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValue, state: State<TContext, TEvent, any>, _event: SCXML.Event<TEvent>): Array<TransitionDefinition<TContext, TEvent>> | undefined;
51
- export declare function removeConflictingTransitions(enabledTransitions: Array<AnyTransitionDefinition>, configuration: Set<AnyStateNode>, historyValue: AnyHistoryValue): Array<AnyTransitionDefinition>;
39
+ export declare function getStateNodes<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValue): Array<AnyStateNode>;
40
+ export declare function transitionAtomicNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: string, snapshot: MachineSnapshot<TContext, TEvent, any, any, any, any>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
41
+ export declare function transitionCompoundNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, snapshot: MachineSnapshot<TContext, TEvent, any, any, any, any>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
42
+ export declare function transitionParallelNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValueMap, snapshot: MachineSnapshot<TContext, TEvent, any, any, any, any>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
43
+ export declare function transitionNode<TContext extends MachineContext, TEvent extends EventObject>(stateNode: AnyStateNode, stateValue: StateValue, snapshot: MachineSnapshot<TContext, TEvent, any, any, any, any, any>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>> | undefined;
44
+ export declare function removeConflictingTransitions(enabledTransitions: Array<AnyTransitionDefinition>, stateNodeSet: Set<AnyStateNode>, historyValue: AnyHistoryValue): Array<AnyTransitionDefinition>;
52
45
  /**
53
46
  * https://www.w3.org/TR/scxml/#microstepProcedure
54
- *
55
- * @private
56
- * @param transitions
57
- * @param currentState
58
- * @param mutConfiguration
59
47
  */
60
- export declare function microstep<TContext extends MachineContext, TEvent extends EventObject>(transitions: Array<TransitionDefinition<TContext, TEvent>>, currentState: State<TContext, TEvent, any>, actorCtx: AnyActorContext | undefined, scxmlEvent: SCXML.Event<TEvent>): State<TContext, TEvent, any>;
61
- export declare function resolveActionsAndContext<TContext extends MachineContext, TEvent extends EventObject>(actions: BaseActionObject[], scxmlEvent: SCXML.Event<TEvent>, currentState: State<TContext, TEvent, any>, actorCtx: AnyActorContext | undefined): {
62
- nextState: AnyState;
63
- };
64
- export declare function macrostep<TMachine extends AnyStateMachine>(state: StateFromMachine<TMachine>, scxmlEvent: SCXML.Event<TMachine['__TEvent']>, actorCtx: AnyActorContext | undefined): {
65
- state: typeof state;
66
- microstates: Array<typeof state>;
48
+ export declare function microstep<TContext extends MachineContext, TEvent extends EventObject>(transitions: Array<AnyTransitionDefinition>, currentSnapshot: AnyMachineSnapshot, actorScope: AnyActorScope, event: AnyEventObject, isInitial: boolean, internalQueue: Array<AnyEventObject>): AnyMachineSnapshot;
49
+ export declare function resolveActionsAndContext(currentSnapshot: AnyMachineSnapshot, event: AnyEventObject, actorScope: AnyActorScope, actions: UnknownAction[], internalQueue: AnyEventObject[], deferredActorIds?: string[]): AnyMachineSnapshot;
50
+ export declare function macrostep(snapshot: AnyMachineSnapshot, event: EventObject, actorScope: AnyActorScope, internalQueue?: AnyEventObject[]): {
51
+ snapshot: typeof snapshot;
52
+ microstates: Array<typeof snapshot>;
67
53
  };
68
54
  /**
69
55
  * Resolves a partial state value with its full representation in the state node's machine.
@@ -72,5 +58,4 @@ export declare function macrostep<TMachine extends AnyStateMachine>(state: State
72
58
  */
73
59
  export declare function resolveStateValue(rootNode: AnyStateNode, stateValue: StateValue): StateValue;
74
60
  export declare function stateValuesEqual(a: StateValue | undefined, b: StateValue | undefined): boolean;
75
- export declare function getInitialConfiguration(rootNode: AnyStateNode): AnyStateNode[];
76
61
  export {};
@@ -1,2 +1,26 @@
1
- import { ActorSystem, ActorSystemInfo } from './types.js';
2
- export declare function createSystem<T extends ActorSystemInfo>(): ActorSystem<T>;
1
+ import { AnyEventObject, ActorSystem, ActorSystemInfo, AnyActorRef, Snapshot } from "./types.js";
2
+ export declare function createSystem<T extends ActorSystemInfo>(rootActor: AnyActorRef): ActorSystem<T>;
3
+ export interface BaseInspectionEventProperties {
4
+ rootId: string;
5
+ /**
6
+ * The relevant actorRef for the inspection event.
7
+ * - For snapshot events, this is the `actorRef` of the snapshot.
8
+ * - For event events, this is the target `actorRef` (recipient of event).
9
+ * - For actor events, this is the `actorRef` of the registered actor.
10
+ */
11
+ actorRef: AnyActorRef;
12
+ }
13
+ export interface InspectedSnapshotEvent extends BaseInspectionEventProperties {
14
+ type: '@xstate.snapshot';
15
+ event: AnyEventObject;
16
+ snapshot: Snapshot<unknown>;
17
+ }
18
+ export interface InspectedEventEvent extends BaseInspectionEventProperties {
19
+ type: '@xstate.event';
20
+ sourceRef: AnyActorRef | undefined;
21
+ event: AnyEventObject;
22
+ }
23
+ export interface InspectedActorEvent extends BaseInspectionEventProperties {
24
+ type: '@xstate.actor';
25
+ }
26
+ export type InspectionEvent = InspectedSnapshotEvent | InspectedEventEvent | InspectedActorEvent;
@@ -1,4 +1,4 @@
1
- import { EventObject, IndexByType, IsNever, Prop, Values, IsAny, ActorMap, Cast, ParameterizedObject } from './types.ts';
1
+ import { Compute, EventObject, IndexByType, IsNever, Prop, Values, IsAny, ParameterizedObject, ProvidedActor, OutputFrom, AnyActorLogic, IndexByProp } from "./types.js";
2
2
  export interface TypegenDisabled {
3
3
  '@@xstate/typegen': false;
4
4
  }
@@ -27,20 +27,21 @@ export interface TypegenMeta extends TypegenEnabled {
27
27
  /**
28
28
  * A map for the internal events of the machine.
29
29
  *
30
- * key: 'done.invoke.myActor'
30
+ * ```js
31
+ * key: 'xstate.done.actor.myActor'
31
32
  * value: {
32
- * type: 'done.invoke.myActor';
33
+ * type: 'xstate.done.actor.myActor';
33
34
  * data: unknown;
34
35
  * __tip: 'Declare the type in event types!';
35
36
  * }
37
+ * ```
36
38
  */
37
39
  internalEvents: {};
38
40
  /**
39
- * Maps the name of the actor to the event type
40
- * of the done.invoke action
41
+ * Maps the src of the invoked actor to the event type that includes its known id
41
42
  *
42
43
  * key: 'invokeSrc'
43
- * value: 'done.invoke.invokeName'
44
+ * value: 'xstate.done.actor.invokeName'
44
45
  */
45
46
  invokeSrcNameMap: Record<string, string>;
46
47
  /**
@@ -78,14 +79,23 @@ export interface TypegenMeta extends TypegenEnabled {
78
79
  }
79
80
  export interface ResolvedTypegenMeta extends TypegenMeta {
80
81
  resolved: TypegenMeta & {
82
+ indexedActors: Record<string, ProvidedActor>;
81
83
  indexedActions: Record<string, ParameterizedObject>;
82
84
  indexedEvents: Record<string, EventObject>;
85
+ indexedGuards: Record<string, ParameterizedObject>;
86
+ indexedDelays: Record<string, ParameterizedObject>;
83
87
  };
84
88
  }
85
89
  export type TypegenConstraint = TypegenEnabled | TypegenDisabled;
86
90
  export type AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = IsAny<TResolvedTypesMeta> extends true ? true : TResolvedTypesMeta extends TypegenEnabled ? IsNever<Values<{
87
91
  [K in keyof TMissingImplementations]: TMissingImplementations[K];
88
92
  }>> extends true ? true : false : true;
93
+ export type MissingImplementationsError<TResolvedTypesMeta, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = Compute<[
94
+ 'Some implementations missing',
95
+ Values<{
96
+ [K in keyof TMissingImplementations]: TMissingImplementations[K];
97
+ }>
98
+ ]>;
89
99
  interface AllImplementationsProvided {
90
100
  missingImplementations: {
91
101
  actions: never;
@@ -98,12 +108,10 @@ export interface MarkAllImplementationsAsProvided<TResolvedTypesMeta> {
98
108
  '@@xstate/typegen': Prop<TResolvedTypesMeta, '@@xstate/typegen'>;
99
109
  resolved: Prop<TResolvedTypesMeta, 'resolved'> & AllImplementationsProvided;
100
110
  }
101
- type GenerateActorEvent<TActorName, TEventType, TActorMap extends ActorMap> = TEventType extends any ? {
102
- type: TEventType;
103
- } & Prop<TActorMap, TActorName> : never;
104
- type GenerateActorEvents<TActorMap extends ActorMap, TInvokeSrcNameMap> = string extends keyof TActorMap ? never : Cast<{
105
- [K in keyof TInvokeSrcNameMap]: GenerateActorEvent<K, TInvokeSrcNameMap[K], TActorMap>;
106
- }[keyof TInvokeSrcNameMap], EventObject>;
111
+ type GenerateActorEvents<TActor extends ProvidedActor, TInvokeSrcNameMap> = string extends TActor['src'] ? never : TActor extends any ? {
112
+ type: TActor['id'] extends string ? `xstate.done.actor.${TActor['id']}` : TActor['src'] extends keyof TInvokeSrcNameMap ? `xstate.done.actor.${TInvokeSrcNameMap[TActor['src']] & string}` : `xstate.done.actor.${string}`;
113
+ output: OutputFrom<TActor['logic']>;
114
+ } : never;
107
115
  type MergeWithInternalEvents<TIndexedEvents, TInternalEvents> = TIndexedEvents & Pick<TInternalEvents, Exclude<keyof TInternalEvents, keyof TIndexedEvents>>;
108
116
  type AllowAllEvents = {
109
117
  eventsCausingActions: Record<string, string>;
@@ -111,22 +119,32 @@ type AllowAllEvents = {
111
119
  eventsCausingDelays: Record<string, string>;
112
120
  eventsCausingGuards: Record<string, string>;
113
121
  };
114
- export interface ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TAction extends ParameterizedObject, TActorMap extends ActorMap> {
122
+ type IndexParameterizedImplementation<TParameterizedImplementation extends ParameterizedObject, TCausingLookup> = string extends TParameterizedImplementation['type'] ? IsNever<TCausingLookup> extends true ? never : Record<keyof TCausingLookup, ParameterizedObject> : IndexByType<TParameterizedImplementation>;
123
+ type WrapIntoParameterizedObject<T extends string> = T extends any ? {
124
+ type: T;
125
+ } : never;
126
+ export interface ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string> {
115
127
  '@@xstate/typegen': TTypesMeta['@@xstate/typegen'];
116
128
  resolved: {
117
129
  enabled: TTypesMeta & {
118
- indexedActions: IndexByType<TAction>;
119
- indexedEvents: MergeWithInternalEvents<IndexByType<(string extends TEvent['type'] ? never : TEvent) | GenerateActorEvents<TActorMap, Prop<TTypesMeta, 'invokeSrcNameMap'>>>, Prop<TTypesMeta, 'internalEvents'>>;
130
+ indexedActions: IndexParameterizedImplementation<TAction, Prop<TTypesMeta, 'eventsCausingActions'>>;
131
+ indexedActors: string extends TActor['src'] ? Record<keyof Prop<TTypesMeta, 'eventsCausingActors'>, {
132
+ logic: AnyActorLogic;
133
+ }> : IndexByProp<TActor, 'src'>;
134
+ indexedEvents: MergeWithInternalEvents<IndexByType<(string extends TEvent['type'] ? never : TEvent) | GenerateActorEvents<TActor, Prop<TTypesMeta, 'invokeSrcNameMap'>>>, Prop<TTypesMeta, 'internalEvents'>>;
135
+ indexedGuards: IndexParameterizedImplementation<TGuard, Prop<TTypesMeta, 'eventsCausingGuards'>>;
136
+ indexedDelays: IndexParameterizedImplementation<WrapIntoParameterizedObject<TDelay>, Prop<TTypesMeta, 'eventsCausingDelays'>>;
137
+ tags: string extends TTag ? Prop<TTypesMeta, 'tags'> : TTag;
120
138
  };
121
139
  disabled: TypegenDisabled & AllImplementationsProvided & AllowAllEvents & {
122
140
  indexedActions: IndexByType<TAction>;
123
- indexedEvents: Record<string, TEvent> & {
124
- __XSTATE_ALLOW_ANY_INVOKE_OUTPUT_HACK__: {
125
- output: any;
126
- };
127
- };
128
- invokeSrcNameMap: Record<string, '__XSTATE_ALLOW_ANY_INVOKE_OUTPUT_HACK__'>;
141
+ indexedActors: IndexByProp<TActor, 'src'>;
142
+ indexedEvents: Record<string, TEvent>;
143
+ indexedGuards: IndexByType<TGuard>;
144
+ indexedDelays: IndexByType<WrapIntoParameterizedObject<TDelay>>;
145
+ invokeSrcNameMap: Record<string, string>;
146
+ tags: TTag;
129
147
  };
130
- }[IsNever<TTypesMeta> extends true ? 'disabled' : TTypesMeta extends TypegenEnabled ? 'enabled' : 'disabled'];
148
+ }[IsNever<TTypesMeta> extends true ? 'disabled' : TTypesMeta['@@xstate/typegen'] extends true ? 'enabled' : 'disabled'];
131
149
  }
132
150
  export {};