UNPKG

6.35 kBTypeScriptView Raw
1import { EventObject, IndexByType, IsNever, Prop, ParameterizedObject, ProvidedActor, OutputFrom, AnyActorLogic, IndexByProp } from "./types.js";
2/**
3 * @deprecated
4 */
5export interface TypegenDisabled {
6 '@@xstate/typegen': false;
7}
8/**
9 * @deprecated
10 */
11export interface TypegenEnabled {
12 '@@xstate/typegen': true;
13}
14/**
15 * @deprecated
16 */
17export interface TypegenMeta extends TypegenEnabled {
18 /**
19 * Allows you to specify all the results of state.matches
20 */
21 matchesStates: string | {};
22 /**
23 * Allows you to specify all tags used by the machine
24 */
25 tags: string;
26 /**
27 * Allows you to specify all the missing implementations
28 * of the machine
29 */
30 missingImplementations: {
31 actions: string;
32 actors: string;
33 delays: string;
34 guards: string;
35 };
36 /**
37 * A map for the internal events of the machine.
38 *
39 * ```js
40 * key: 'xstate.done.actor.myActor'
41 * value: {
42 * type: 'xstate.done.actor.myActor';
43 * data: unknown;
44 * __tip: 'Declare the type in event types!';
45 * }
46 * ```
47 */
48 internalEvents: {};
49 /**
50 * Maps the src of the invoked actor to the event type that includes its known id
51 *
52 * key: 'invokeSrc'
53 * value: 'xstate.done.actor.invokeName'
54 */
55 invokeSrcNameMap: Record<string, string>;
56 /**
57 * Keeps track of which events lead to which
58 * actions.
59 *
60 * Key: 'EVENT_NAME'
61 * Value: 'actionName' | 'otherActionName'
62 */
63 eventsCausingActions: Record<string, string>;
64 /**
65 * Keeps track of which events lead to which
66 * delays.
67 *
68 * Key: 'EVENT_NAME'
69 * Value: 'delayName' | 'otherDelayName'
70 */
71 eventsCausingDelays: Record<string, string>;
72 /**
73 * Keeps track of which events lead to which
74 * guards.
75 *
76 * Key: 'EVENT_NAME'
77 * Value: 'guardName' | 'otherGuardName'
78 */
79 eventsCausingGuards: Record<string, string>;
80 /**
81 * Keeps track of which events lead to which
82 * actors.
83 *
84 * Key: 'EVENT_NAME'
85 * Value: 'actorName' | 'otherActorName'
86 */
87 eventsCausingActors: Record<string, string>;
88}
89/**
90 * @deprecated
91 */
92export interface ResolvedTypegenMeta extends TypegenMeta {
93 resolved: TypegenMeta & {
94 indexedActors: Record<string, ProvidedActor>;
95 indexedActions: Record<string, ParameterizedObject>;
96 indexedEvents: Record<string, EventObject>;
97 indexedGuards: Record<string, ParameterizedObject>;
98 indexedDelays: Record<string, ParameterizedObject>;
99 };
100}
101/**
102 * @deprecated
103 */
104export type TypegenConstraint = TypegenEnabled | TypegenDisabled;
105/**
106 * @deprecated Always resolves to `true`
107 */
108export type AreAllImplementationsAssumedToBeProvided<_TResolvedTypesMeta, _TMissingImplementations = never> = true;
109/**
110 * @deprecated Always resolves to `never`
111 */
112export type MissingImplementationsError<_TResolvedTypesMeta, _TMissingImplementations = never> = never;
113/**
114 * @deprecated
115 */
116interface AllImplementationsProvided {
117 missingImplementations: {
118 actions: never;
119 actors: never;
120 delays: never;
121 guards: never;
122 };
123}
124type GenerateActorEvents<TActor extends ProvidedActor, TInvokeSrcNameMap> = string extends TActor['src'] ? never : TActor extends any ? {
125 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}`;
126 output: OutputFrom<TActor['logic']>;
127} : never;
128type MergeWithInternalEvents<TIndexedEvents, TInternalEvents> = TIndexedEvents & Pick<TInternalEvents, Exclude<keyof TInternalEvents, keyof TIndexedEvents>>;
129type AllowAllEvents = {
130 eventsCausingActions: Record<string, string>;
131 eventsCausingActors: Record<string, string>;
132 eventsCausingDelays: Record<string, string>;
133 eventsCausingGuards: Record<string, string>;
134};
135type IndexParameterizedImplementation<TParameterizedImplementation extends ParameterizedObject, TCausingLookup> = string extends TParameterizedImplementation['type'] ? IsNever<TCausingLookup> extends true ? never : Record<keyof TCausingLookup, ParameterizedObject> : IndexByType<TParameterizedImplementation>;
136type WrapIntoParameterizedObject<T extends string> = T extends any ? {
137 type: T;
138} : never;
139/**
140 * @deprecated
141 */
142export 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 '@@xstate/typegen': TTypesMeta['@@xstate/typegen'];
144 resolved: {
145 enabled: TTypesMeta & {
146 indexedActions: IndexParameterizedImplementation<TAction, Prop<TTypesMeta, 'eventsCausingActions'>>;
147 indexedActors: string extends TActor['src'] ? Record<keyof Prop<TTypesMeta, 'eventsCausingActors'>, {
148 logic: AnyActorLogic;
149 }> : IndexByProp<TActor, 'src'>;
150 indexedEvents: MergeWithInternalEvents<IndexByType<(string extends TEvent['type'] ? never : TEvent) | GenerateActorEvents<TActor, Prop<TTypesMeta, 'invokeSrcNameMap'>>>, Prop<TTypesMeta, 'internalEvents'>>;
151 indexedGuards: IndexParameterizedImplementation<TGuard, Prop<TTypesMeta, 'eventsCausingGuards'>>;
152 indexedDelays: IndexParameterizedImplementation<WrapIntoParameterizedObject<TDelay>, Prop<TTypesMeta, 'eventsCausingDelays'>>;
153 tags: string extends TTag ? Prop<TTypesMeta, 'tags'> : TTag;
154 emitted: TEmitted;
155 };
156 disabled: TypegenDisabled & AllImplementationsProvided & AllowAllEvents & {
157 indexedActions: IndexByType<TAction>;
158 indexedActors: IndexByProp<TActor, 'src'>;
159 indexedEvents: Record<string, TEvent>;
160 indexedGuards: IndexByType<TGuard>;
161 indexedDelays: IndexByType<WrapIntoParameterizedObject<TDelay>>;
162 invokeSrcNameMap: Record<string, string>;
163 tags: TTag;
164 emitted: TEmitted;
165 };
166 }[IsNever<TTypesMeta> extends true ? 'disabled' : TTypesMeta['@@xstate/typegen'] extends true ? 'enabled' : 'disabled'];
167}
168export {};