1 | import type { MachineSnapshot } from "./State.js";
|
2 | import type { StateMachine } from "./StateMachine.js";
|
3 | import type { StateNode } from "./StateNode.js";
|
4 | import { AssignArgs } from "./actions/assign.js";
|
5 | import { PromiseActorLogic } from "./actors/promise.js";
|
6 | import { Guard, GuardPredicate, UnknownGuard } from "./guards.js";
|
7 | import type { Actor } from "./createActor.js";
|
8 | import { Spawner } from "./spawn.js";
|
9 | import { AnyActorSystem, Clock } from './system.js';
|
10 | import { InspectionEvent } from "./inspection.js";
|
11 | import { ResolveTypegenMeta, TypegenConstraint, TypegenDisabled } from "./typegenTypes.js";
|
12 | export type Identity<T> = {
|
13 | [K in keyof T]: T[K];
|
14 | };
|
15 | export type HomomorphicPick<T, K extends keyof any> = {
|
16 | [P in keyof T as P & K]: T[P];
|
17 | };
|
18 | export type HomomorphicOmit<T, K extends keyof any> = {
|
19 | [P in keyof T as Exclude<P, K>]: T[P];
|
20 | };
|
21 | export type Invert<T extends Record<PropertyKey, PropertyKey>> = {
|
22 | [K in keyof T as T[K]]: K;
|
23 | };
|
24 | export type GetParameterizedParams<T extends ParameterizedObject | undefined> = T extends any ? ('params' extends keyof T ? T['params'] : undefined) : never;
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | export type NonReducibleUnknown = {} | null | undefined;
|
40 | export type AnyFunction = (...args: any[]) => any;
|
41 | type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
|
42 | export type IsNever<T> = [T] extends [never] ? true : false;
|
43 | export type IsNotNever<T> = [T] extends [never] ? false : true;
|
44 | export type Compute<A extends any> = {
|
45 | [K in keyof A]: A[K];
|
46 | } & unknown;
|
47 | export type Prop<T, K> = K extends keyof T ? T[K] : never;
|
48 | export type Values<T> = T[keyof T];
|
49 | export type Elements<T> = T[keyof T & `${number}`];
|
50 | export type Merge<M, N> = Omit<M, keyof N> & N;
|
51 | export type IndexByProp<T extends Record<P, string>, P extends keyof T> = {
|
52 | [E in T as E[P]]: E;
|
53 | };
|
54 | export type IndexByType<T extends {
|
55 | type: string;
|
56 | }> = IndexByProp<T, 'type'>;
|
57 | export type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1 ? true : false ? true : false;
|
58 | export type IsAny<T> = Equals<T, any>;
|
59 | export type Cast<A, B> = A extends B ? A : B;
|
60 | export type DoNotInfer<T> = [T][T extends any ? 0 : any];
|
61 |
|
62 |
|
63 |
|
64 | export type NoInfer<T> = DoNotInfer<T>;
|
65 | export type LowInfer<T> = T & {};
|
66 | export type MetaObject = Record<string, any>;
|
67 | export type Lazy<T> = () => T;
|
68 | export type MaybeLazy<T> = T | Lazy<T>;
|
69 |
|
70 |
|
71 |
|
72 | export type EventObject = {
|
73 | |
74 |
|
75 |
|
76 | type: string;
|
77 | };
|
78 | export interface AnyEventObject extends EventObject {
|
79 | [key: string]: any;
|
80 | }
|
81 | export interface ParameterizedObject {
|
82 | type: string;
|
83 | params?: NonReducibleUnknown;
|
84 | }
|
85 | export interface UnifiedArg<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> {
|
86 | context: TContext;
|
87 | event: TExpressionEvent;
|
88 | self: ActorRef<MachineSnapshot<TContext, TEvent, Record<string, AnyActorRef | undefined>,
|
89 | StateValue, string, unknown>, TEvent>;
|
90 | system: AnyActorSystem;
|
91 | }
|
92 | export type MachineContext = Record<string, any>;
|
93 | export interface ActionArgs<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends UnifiedArg<TContext, TExpressionEvent, TEvent> {
|
94 | }
|
95 | export type InputFrom<T> = T extends StateMachine<infer _TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TInput : T extends ActorLogic<infer _TSnapshot, infer _TEvent, infer TInput, infer _TSystem, infer _TEmitted> ? TInput : never;
|
96 | export type OutputFrom<T> = T extends ActorLogic<infer TSnapshot, infer _TEvent, infer _TInput, infer _TSystem, infer _TEmitted> ? (TSnapshot & {
|
97 | status: 'done';
|
98 | })['output'] : T extends ActorRef<infer TSnapshot, infer _TEvent> ? (TSnapshot & {
|
99 | status: 'done';
|
100 | })['output'] : never;
|
101 | export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject> = {
|
102 | (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams): void;
|
103 | _out_TEvent?: TEvent;
|
104 | _out_TActor?: TActor;
|
105 | _out_TAction?: TAction;
|
106 | _out_TGuard?: TGuard;
|
107 | _out_TDelay?: TDelay;
|
108 | _out_TEmitted?: TEmitted;
|
109 | };
|
110 | export type NoRequiredParams<T extends ParameterizedObject> = T extends any ? undefined extends T['params'] ? T['type'] : never : never;
|
111 | export type ConditionalRequired<T, Condition extends boolean> = Condition extends true ? Required<T> : T;
|
112 | export type WithDynamicParams<TContext extends MachineContext, TExpressionEvent extends EventObject, T extends ParameterizedObject> = T extends any ? ConditionalRequired<{
|
113 | type: T['type'];
|
114 | params?: T['params'] | (({ context, event }: {
|
115 | context: TContext;
|
116 | event: TExpressionEvent;
|
117 | }) => T['params']);
|
118 | }, undefined extends T['params'] ? false : true> : never;
|
119 | export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject> = NoRequiredParams<TAction> | WithDynamicParams<TContext, TExpressionEvent, TAction> | ActionFunction<TContext, TExpressionEvent, TEvent, TParams, TActor, TAction, TGuard, TDelay, TEmitted>;
|
120 | export type UnknownAction = Action<MachineContext, EventObject, EventObject, ParameterizedObject['params'] | undefined, ProvidedActor, ParameterizedObject, ParameterizedObject, string, EventObject>;
|
121 | export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent, TParams, TActor, TAction, TGuard, TDelay, TEmitted>>;
|
122 | export type StateKey = string | AnyMachineSnapshot;
|
123 | export interface StateValueMap {
|
124 | [key: string]: StateValue | undefined;
|
125 | }
|
126 |
|
127 |
|
128 |
|
129 |
|
130 |
|
131 |
|
132 |
|
133 |
|
134 |
|
135 | export type StateValue = string | StateValueMap;
|
136 | export type TransitionTarget = SingleOrArray<string>;
|
137 | export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject = EventObject> {
|
138 | guard?: Guard<TContext, TExpressionEvent, undefined, TGuard>;
|
139 | actions?: Actions<TContext, TExpressionEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay, TEmitted>;
|
140 | reenter?: boolean;
|
141 | target?: TransitionTarget | undefined;
|
142 | meta?: Record<string, any>;
|
143 | description?: string;
|
144 | }
|
145 | export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> extends TransitionConfig<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay> {
|
146 | target: string;
|
147 | }
|
148 | export type AnyTransitionConfig = TransitionConfig<any, any, any, any, any, any, any>;
|
149 | export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> {
|
150 | id: string;
|
151 | systemId: string | undefined;
|
152 | |
153 |
|
154 |
|
155 | src: AnyActorLogic | string;
|
156 | input?: Mapper<TContext, TEvent, NonReducibleUnknown, TEvent> | NonReducibleUnknown;
|
157 | |
158 |
|
159 |
|
160 | onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneActorEvent<unknown>, TEvent, TActor, TAction, TGuard, TDelay>>;
|
161 | |
162 |
|
163 |
|
164 | onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
165 | onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
166 | toJSON: () => Omit<InvokeDefinition<TContext, TEvent, TActor, TAction, TGuard, TDelay>, 'onDone' | 'onError' | 'toJSON'>;
|
167 | }
|
168 | type Delay<TDelay extends string> = TDelay | number;
|
169 | export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
|
170 | [K in Delay<TDelay>]?: string | SingleOrArray<TransitionConfig<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay>>;
|
171 | };
|
172 | export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
|
173 | export type SingleOrArray<T> = readonly T[] | T;
|
174 | export type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
|
175 | [K in string]: StateNode<TContext, TEvent>;
|
176 | };
|
177 | export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput, TEmitted extends EventObject> = {
|
178 | [K in string]: StateNodeConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TOutput, TEmitted>;
|
179 | };
|
180 | export type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
|
181 | [K in string]: StateNodeDefinition<TContext, TEvent>;
|
182 | };
|
183 | export type TransitionConfigTarget = string | undefined;
|
184 | export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>>;
|
185 | export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject> = {
|
186 | [K in EventDescriptor<TEvent>]?: TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>;
|
187 | };
|
188 | type PartialEventDescriptor<TEventType extends string> = TEventType extends `${infer TLeading}.${infer TTail}` ? `${TLeading}.*` | `${TLeading}.${PartialEventDescriptor<TTail>}` : never;
|
189 | export type EventDescriptor<TEvent extends EventObject> = TEvent['type'] | PartialEventDescriptor<TEvent['type']> | '*';
|
190 | type NormalizeDescriptor<TDescriptor extends string> = TDescriptor extends '*' ? string : TDescriptor extends `${infer TLeading}.*` ? `${TLeading}.${string}` : TDescriptor;
|
191 | export type IsLiteralString<T extends string> = string extends T ? false : true;
|
192 | type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject, TSpecificActor extends ProvidedActor> = TSpecificActor extends {
|
193 | src: infer TSrc;
|
194 | } ? Compute<{
|
195 | systemId?: string;
|
196 | |
197 |
|
198 |
|
199 | src: TSrc;
|
200 | |
201 |
|
202 |
|
203 |
|
204 | id?: TSpecificActor['id'];
|
205 | input?: Mapper<TContext, TEvent, InputFrom<TSpecificActor['logic']>, TEvent> | InputFrom<TSpecificActor['logic']>;
|
206 | |
207 |
|
208 |
|
209 | onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneActorEvent<OutputFrom<TSpecificActor['logic']>>, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>>;
|
210 | |
211 |
|
212 |
|
213 | onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>>;
|
214 | onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<SnapshotFrom<TSpecificActor['logic']>>, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>>;
|
215 | } & {
|
216 | [K in RequiredActorOptions<TSpecificActor>]: unknown;
|
217 | }> : never;
|
218 | export type InvokeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TEmitted extends EventObject> = IsLiteralString<TActor['src']> extends true ? DistributeActors<TContext, TEvent, TActor, TAction, TGuard, TDelay, TEmitted, TActor> : {
|
219 | |
220 |
|
221 |
|
222 |
|
223 | id?: string;
|
224 | systemId?: string;
|
225 | |
226 |
|
227 |
|
228 | src: AnyActorLogic | string;
|
229 | input?: Mapper<TContext, TEvent, NonReducibleUnknown, TEvent> | NonReducibleUnknown;
|
230 | |
231 |
|
232 |
|
233 | onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneActorEvent<any>,
|
234 | TEvent, TActor, TAction, TGuard, TDelay, TEmitted>>;
|
235 | |
236 |
|
237 |
|
238 | onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, ErrorActorEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>>;
|
239 | onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>>;
|
240 | };
|
241 | export type AnyInvokeConfig = InvokeConfig<any, any, any, any, any, any, any>;
|
242 | export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TOutput, TEmitted extends EventObject> {
|
243 | |
244 |
|
245 |
|
246 | initial?: InitialTransitionConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay> | string | undefined;
|
247 | |
248 |
|
249 |
|
250 |
|
251 |
|
252 |
|
253 |
|
254 |
|
255 |
|
256 | type?: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
|
257 | |
258 |
|
259 |
|
260 |
|
261 |
|
262 | history?: 'shallow' | 'deep' | boolean | undefined;
|
263 | |
264 |
|
265 |
|
266 | states?: StatesConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, NonReducibleUnknown, TEmitted> | undefined;
|
267 | |
268 |
|
269 |
|
270 | invoke?: SingleOrArray<InvokeConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>>;
|
271 | |
272 |
|
273 |
|
274 | on?: TransitionsConfig<TContext, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>;
|
275 | |
276 |
|
277 |
|
278 | entry?: Actions<TContext, TEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay, TEmitted>;
|
279 | |
280 |
|
281 |
|
282 | exit?: Actions<TContext, TEvent, TEvent, undefined, TActor, TAction, TGuard, TDelay, TEmitted>;
|
283 | |
284 |
|
285 |
|
286 |
|
287 |
|
288 | onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneStateEvent, TEvent, TActor, TAction, TGuard, TDelay>> | undefined;
|
289 | |
290 |
|
291 |
|
292 |
|
293 | after?: DelayedTransitions<TContext, TEvent, TActor, TAction, TGuard, TDelay>;
|
294 | |
295 |
|
296 |
|
297 | always?: TransitionConfigOrTarget<TContext, TEvent, TEvent, TActor, TAction, TGuard, TDelay, TEmitted>;
|
298 | parent?: StateNode<TContext, TEvent>;
|
299 | |
300 |
|
301 |
|
302 | meta?: any;
|
303 | |
304 |
|
305 |
|
306 |
|
307 |
|
308 |
|
309 | output?: Mapper<TContext, TEvent, unknown, TEvent> | NonReducibleUnknown;
|
310 | |
311 |
|
312 |
|
313 |
|
314 | id?: string | undefined;
|
315 | |
316 |
|
317 |
|
318 | order?: number;
|
319 | |
320 |
|
321 |
|
322 | tags?: SingleOrArray<TTag>;
|
323 | |
324 |
|
325 |
|
326 | description?: string;
|
327 | |
328 |
|
329 |
|
330 | target?: string;
|
331 | }
|
332 | export type AnyStateNodeConfig = StateNodeConfig<any, any, any, any, any, any, any, any, any>;
|
333 | export interface StateNodeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
334 | id: string;
|
335 | version?: string | undefined;
|
336 | key: string;
|
337 | type: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
|
338 | initial: InitialTransitionDefinition<TContext, TEvent> | undefined;
|
339 | history: boolean | 'shallow' | 'deep' | undefined;
|
340 | states: StatesDefinition<TContext, TEvent>;
|
341 | on: TransitionDefinitionMap<TContext, TEvent>;
|
342 | transitions: Array<TransitionDefinition<TContext, TEvent>>;
|
343 | entry: UnknownAction[];
|
344 | exit: UnknownAction[];
|
345 | meta: any;
|
346 | order: number;
|
347 | output?: StateNodeConfig<TContext, TEvent, ProvidedActor, ParameterizedObject, ParameterizedObject, string, string, unknown, EventObject>['output'];
|
348 | invoke: Array<InvokeDefinition<TContext, TEvent, TODO, TODO, TODO, TODO>>;
|
349 | description?: string;
|
350 | tags: string[];
|
351 | }
|
352 | export interface StateMachineDefinition<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeDefinition<TContext, TEvent> {
|
353 | }
|
354 | export type AnyStateNode = StateNode<any, any>;
|
355 | export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
|
356 | export type AnyMachineSnapshot = MachineSnapshot<any, any, any, any, any, any, any>;
|
357 |
|
358 | export type AnyState = AnyMachineSnapshot;
|
359 | export type AnyStateMachine = StateMachine<any,
|
360 | any,
|
361 | any,
|
362 | any,
|
363 | any,
|
364 | any,
|
365 | any,
|
366 | any,
|
367 | any,
|
368 | any,
|
369 | any,
|
370 | any,
|
371 | any>;
|
372 | export type AnyStateConfig = StateConfig<any, AnyEventObject>;
|
373 | export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO, TODO, TODO, TODO> {
|
374 | initial?: undefined;
|
375 | parallel?: false | undefined;
|
376 | states?: undefined;
|
377 | onDone?: undefined;
|
378 | }
|
379 | export interface HistoryStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends AtomicStateNodeConfig<TContext, TEvent> {
|
380 | history: 'shallow' | 'deep' | true;
|
381 | target: string | undefined;
|
382 | }
|
383 | export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent, TODO, TODO, TODO, TODO, TODO, TODO, TODO>;
|
384 | export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TEmitted extends EventObject = EventObject> = {
|
385 | [K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, GetParameterizedParams<TAction extends {
|
386 | type: K;
|
387 | } ? TAction : never>, TActor, TAction, TGuard, TDelay, TEmitted>;
|
388 | };
|
389 | type GuardMap<TContext extends MachineContext, TEvent extends EventObject, TGuard extends ParameterizedObject> = {
|
390 | [K in TGuard['type']]?: GuardPredicate<TContext, TEvent, GetParameterizedParams<TGuard extends {
|
391 | type: K;
|
392 | } ? TGuard : never>, TGuard>;
|
393 | };
|
394 | export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject> = Record<string, DelayConfig<TContext, TEvent, TAction['params'], TEvent>>;
|
395 | export type DelayConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = number | DelayExpr<TContext, TExpressionEvent, TParams, TEvent>;
|
396 |
|
397 |
|
398 |
|
399 | export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject> {
|
400 | guards: GuardMap<TContext, TEvent, TGuard>;
|
401 | actions: ActionFunctionMap<TContext, TEvent, TActor, TAction>;
|
402 | actors: Record<string, AnyActorLogic | {
|
403 | src: AnyActorLogic;
|
404 | input: Mapper<TContext, TEvent, unknown, TEvent> | NonReducibleUnknown;
|
405 | }>;
|
406 | delays: DelayFunctionMap<TContext, TEvent, TAction>;
|
407 | }
|
408 | type MaybeNarrowedEvent<TIndexedEvents, TCausingLookup, K> = Cast<Prop<TIndexedEvents, K extends keyof TCausingLookup ? TCausingLookup[K] : TIndexedEvents[keyof TIndexedEvents]>, EventObject>;
|
409 | type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActors'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>, TEmitted = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'emitted'>> = {
|
410 | [K in keyof TIndexedActions]?: ActionFunction<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingActions, K>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, GetParameterizedParams<Cast<TIndexedActions[K], ParameterizedObject>>, Cast<Prop<TIndexedActors, keyof TIndexedActors>, ProvidedActor>, Cast<Prop<TIndexedActions, keyof TIndexedActions>, ParameterizedObject>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>, Cast<Prop<TIndexedDelays, keyof TIndexedDelays>, ParameterizedObject>['type'], Cast<TEmitted, EventObject>>;
|
411 | };
|
412 | type MachineImplementationsActors<_TContext extends MachineContext, TResolvedTypesMeta, TIndexedActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActors'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
|
413 | [K in keyof TIndexedActors]?: Cast<Prop<TIndexedActors[K], 'logic'>, AnyActorLogic>;
|
414 | };
|
415 | type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedActions'>, TIndexedDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedDelays'>> = {
|
416 | [K in keyof TIndexedDelays]?: DelayConfig<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingDelays, K>, Cast<Prop<Prop<TIndexedActions, keyof TIndexedActions>, 'params'>, ParameterizedObject['params'] | undefined> | undefined, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>>;
|
417 | };
|
418 | type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, TIndexedGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedGuards'>> = {
|
419 | [K in keyof TIndexedGuards]?: Guard<TContext, MaybeNarrowedEvent<TIndexedEvents, TEventsCausingGuards, K>, GetParameterizedParams<Cast<TIndexedGuards[K], ParameterizedObject | undefined>>, Cast<Prop<TIndexedGuards, keyof TIndexedGuards>, ParameterizedObject>>;
|
420 | };
|
421 | type MakeKeysRequired<T extends string> = {
|
422 | [K in T]: unknown;
|
423 | };
|
424 | type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
|
425 | [K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
|
426 | } : {};
|
427 | type GenerateActionsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
|
428 | actions?: MachineImplementationsActions<TContext, TResolvedTypesMeta>;
|
429 | }>;
|
430 | type GenerateActorsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'actors', Prop<TMissingImplementations, 'actors'>, TRequireMissingImplementations> & {
|
431 | actors?: MachineImplementationsActors<TContext, TResolvedTypesMeta>;
|
432 | }>;
|
433 | type GenerateDelaysImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
|
434 | delays?: MachineImplementationsDelays<TContext, TResolvedTypesMeta>;
|
435 | }>;
|
436 | type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = Compute<MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
|
437 | guards?: MachineImplementationsGuards<TContext, TResolvedTypesMeta>;
|
438 | }>;
|
439 | export type InternalMachineImplementations<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = Compute<GenerateActionsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateActorsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations>>;
|
440 | export type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag>>;
|
441 | type InitialContext<TContext extends MachineContext, TActor extends ProvidedActor, TInput, TEvent extends EventObject> = TContext | ContextFactory<TContext, TActor, TInput, TEvent>;
|
442 | export type ContextFactory<TContext extends MachineContext, TActor extends ProvidedActor, TInput, TEvent extends EventObject = EventObject> = ({ spawn, input, self }: {
|
443 | spawn: Spawner<TActor>;
|
444 | input: TInput;
|
445 | self: ActorRef<MachineSnapshot<TContext, TEvent, Record<string, AnyActorRef | undefined>,
|
446 | StateValue, string, unknown>, TEvent>;
|
447 | }) => TContext;
|
448 | export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TInput = any, TOutput = unknown, TEmitted extends EventObject = EventObject, TTypesMeta = TypegenDisabled> = (Omit<StateNodeConfig<DoNotInfer<TContext>, DoNotInfer<TEvent>, DoNotInfer<TActor>, DoNotInfer<TAction>, DoNotInfer<TGuard>, DoNotInfer<TDelay>, DoNotInfer<TTag>, DoNotInfer<TOutput>, DoNotInfer<TEmitted>>, 'output'> & {
|
449 | |
450 |
|
451 |
|
452 | |
453 |
|
454 |
|
455 | version?: string;
|
456 | output?: Mapper<TContext, DoneStateEvent, TOutput, TEvent> | TOutput;
|
457 | }) & (MachineContext extends TContext ? {
|
458 | context?: InitialContext<LowInfer<TContext>, TActor, TInput, TEvent>;
|
459 | } : {
|
460 | context: InitialContext<LowInfer<TContext>, TActor, TInput, TEvent>;
|
461 | });
|
462 | export type UnknownMachineConfig = MachineConfig<MachineContext, EventObject>;
|
463 | export interface ProvidedActor {
|
464 | src: string;
|
465 | logic: UnknownActorLogic;
|
466 | id?: string;
|
467 | }
|
468 | export interface SetupTypes<TContext extends MachineContext, TEvent extends EventObject, TChildrenMap extends Record<string, string>, TTag extends string, TInput, TOutput, TEmitted extends EventObject> {
|
469 | context?: TContext;
|
470 | events?: TEvent;
|
471 | children?: TChildrenMap;
|
472 | tags?: TTag;
|
473 | input?: TInput;
|
474 | output?: TOutput;
|
475 | emitted?: TEmitted;
|
476 | }
|
477 | export interface MachineTypes<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TTag extends string, TInput, TOutput, TEmitted extends EventObject, TTypesMeta = TypegenDisabled> extends SetupTypes<TContext, TEvent, never, TTag, TInput, TOutput, TEmitted> {
|
478 | actors?: TActor;
|
479 | actions?: TAction;
|
480 | guards?: TGuard;
|
481 | delays?: TDelay;
|
482 | typegen?: TTypesMeta;
|
483 | }
|
484 | export interface HistoryStateNode<TContext extends MachineContext> extends StateNode<TContext> {
|
485 | history: 'shallow' | 'deep';
|
486 | target: string | undefined;
|
487 | }
|
488 | export type HistoryValue<TContext extends MachineContext, TEvent extends EventObject> = Record<string, Array<StateNode<TContext, TEvent>>>;
|
489 | export type AnyHistoryValue = HistoryValue<any, any>;
|
490 | 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;
|
491 | export type Transitions<TContext extends MachineContext, TEvent extends EventObject> = Array<TransitionDefinition<TContext, TEvent>>;
|
492 | export interface DoneActorEvent<TOutput = unknown> {
|
493 | type: `xstate.done.actor.${string}`;
|
494 | output: TOutput;
|
495 | }
|
496 | export interface ErrorActorEvent<TErrorData = unknown> extends EventObject {
|
497 | type: `xstate.error.actor.${string}`;
|
498 | error: TErrorData;
|
499 | }
|
500 | export interface SnapshotEvent<TSnapshot extends Snapshot<unknown> = Snapshot<unknown>> extends EventObject {
|
501 | type: `xstate.snapshot.${string}`;
|
502 | snapshot: TSnapshot;
|
503 | }
|
504 | export interface DoneStateEvent<TOutput = unknown> extends EventObject {
|
505 | type: `xstate.done.state.${string}`;
|
506 | output: TOutput;
|
507 | }
|
508 | export type DelayExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => number;
|
509 | export type LogExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => unknown;
|
510 | export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TSentEvent extends EventObject, TEvent extends EventObject> = (args: ActionArgs<TContext, TExpressionEvent, TEvent>, params: TParams) => TSentEvent;
|
511 | export declare enum SpecialTargets {
|
512 | Parent = "#_parent",
|
513 | Internal = "#_internal"
|
514 | }
|
515 | export interface SendToActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TParams, TEvent, TDelay> {
|
516 | }
|
517 | export interface RaiseActionOptions<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TDelay extends string> {
|
518 | id?: string;
|
519 | delay?: Delay<TDelay> | DelayExpr<TContext, TExpressionEvent, TParams, TEvent>;
|
520 | }
|
521 | export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TDelay extends string> extends RaiseActionOptions<TContext, TExpressionEvent, TParams, TEvent, TDelay> {
|
522 | event: TEvent | SendExpr<TContext, TExpressionEvent, TParams, TEvent, TEvent>;
|
523 | }
|
524 | export interface SendToActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TSentEvent extends EventObject, TEvent extends EventObject, TDelay extends string> extends SendToActionOptions<TContext, TExpressionEvent, TParams, TEvent, TDelay> {
|
525 | event: TSentEvent | SendExpr<TContext, TExpressionEvent, TParams, TSentEvent, TEvent>;
|
526 | }
|
527 | export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor> = (args: AssignArgs<TContext, TExpressionEvent, TEvent, TActor>, params: TParams) => Partial<TContext>;
|
528 | export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent, TEvent, TActor>, params: TParams) => TContext[TKey];
|
529 | export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TParams extends ParameterizedObject['params'] | undefined, TEvent extends EventObject, TActor extends ProvidedActor> = {
|
530 | [K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TParams, TEvent, TActor, K> | TContext[K];
|
531 | };
|
532 | export type Mapper<TContext extends MachineContext, TExpressionEvent extends EventObject, TResult, TEvent extends EventObject> = (args: {
|
533 | context: TContext;
|
534 | event: TExpressionEvent;
|
535 | self: ActorRef<MachineSnapshot<TContext, TEvent, Record<string, AnyActorRef>,
|
536 | StateValue, string, unknown>, TEvent>;
|
537 | }) => TResult;
|
538 | export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent, TEvent, TODO, TODO, TODO, TODO>, 'target' | 'guard'> {
|
539 | target: ReadonlyArray<StateNode<TContext, TEvent>> | undefined;
|
540 | source: StateNode<TContext, TEvent>;
|
541 | actions: readonly UnknownAction[];
|
542 | reenter: boolean;
|
543 | guard?: UnknownGuard;
|
544 | eventType: EventDescriptor<TEvent>;
|
545 | toJSON: () => {
|
546 | target: string[] | undefined;
|
547 | source: string;
|
548 | actions: readonly UnknownAction[];
|
549 | guard?: UnknownGuard;
|
550 | eventType: EventDescriptor<TEvent>;
|
551 | meta?: Record<string, any>;
|
552 | };
|
553 | }
|
554 | export type AnyTransitionDefinition = TransitionDefinition<any, any>;
|
555 | export interface InitialTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
|
556 | target: ReadonlyArray<StateNode<TContext, TEvent>>;
|
557 | guard?: never;
|
558 | }
|
559 | export type TransitionDefinitionMap<TContext extends MachineContext, TEvent extends EventObject> = {
|
560 | [K in EventDescriptor<TEvent>]: Array<TransitionDefinition<TContext, ExtractEvent<TEvent, K>>>;
|
561 | };
|
562 | export interface DelayedTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
|
563 | delay: number | string | DelayExpr<TContext, TEvent, undefined, TEvent>;
|
564 | }
|
565 | export interface StateLike<TContext extends MachineContext> {
|
566 | value: StateValue;
|
567 | context: TContext;
|
568 | event: EventObject;
|
569 | }
|
570 | export interface StateConfig<TContext extends MachineContext, TEvent extends EventObject> {
|
571 | context: TContext;
|
572 | historyValue?: HistoryValue<TContext, TEvent>;
|
573 | children: Record<string, AnyActorRef>;
|
574 | status: 'active' | 'done' | 'error' | 'stopped';
|
575 | output?: any;
|
576 | error?: unknown;
|
577 | machine?: StateMachine<TContext, TEvent, any, any, any, any, any, any, any, any, any, any>;
|
578 | }
|
579 | export interface ActorOptions<TLogic extends AnyActorLogic> {
|
580 | |
581 |
|
582 |
|
583 |
|
584 |
|
585 |
|
586 |
|
587 |
|
588 |
|
589 |
|
590 |
|
591 |
|
592 |
|
593 |
|
594 |
|
595 |
|
596 | clock?: Clock;
|
597 | |
598 |
|
599 |
|
600 | logger?: (...args: any[]) => void;
|
601 | parent?: AnyActorRef;
|
602 | |
603 |
|
604 |
|
605 | id?: string;
|
606 | |
607 |
|
608 |
|
609 | devTools?: never;
|
610 | |
611 |
|
612 |
|
613 | systemId?: string;
|
614 | |
615 |
|
616 |
|
617 | input?: InputFrom<TLogic>;
|
618 | |
619 |
|
620 |
|
621 |
|
622 |
|
623 |
|
624 |
|
625 |
|
626 |
|
627 |
|
628 |
|
629 |
|
630 |
|
631 | snapshot?: Snapshot<unknown>;
|
632 | |
633 |
|
634 |
|
635 | state?: Snapshot<unknown>;
|
636 | |
637 |
|
638 |
|
639 | src?: string | AnyActorLogic;
|
640 | |
641 |
|
642 |
|
643 |
|
644 |
|
645 |
|
646 |
|
647 |
|
648 |
|
649 |
|
650 |
|
651 |
|
652 |
|
653 |
|
654 |
|
655 |
|
656 |
|
657 |
|
658 |
|
659 |
|
660 |
|
661 |
|
662 |
|
663 |
|
664 |
|
665 |
|
666 |
|
667 |
|
668 |
|
669 |
|
670 |
|
671 |
|
672 |
|
673 |
|
674 |
|
675 |
|
676 |
|
677 |
|
678 |
|
679 |
|
680 |
|
681 |
|
682 |
|
683 |
|
684 |
|
685 |
|
686 |
|
687 |
|
688 |
|
689 |
|
690 |
|
691 |
|
692 |
|
693 |
|
694 |
|
695 |
|
696 |
|
697 |
|
698 |
|
699 |
|
700 |
|
701 |
|
702 |
|
703 |
|
704 |
|
705 |
|
706 |
|
707 |
|
708 |
|
709 |
|
710 |
|
711 |
|
712 |
|
713 |
|
714 | inspect?: Observer<InspectionEvent> | ((inspectionEvent: InspectionEvent) => void);
|
715 | }
|
716 | export type AnyActor = Actor<any>;
|
717 | /**
|
718 | * @deprecated Use `AnyActor` instead.
|
719 | */
|
720 | export type AnyInterpreter = AnyActor;
|
721 | export type Observer<T> = {
|
722 | next?: (value: T) => void;
|
723 | error?: (err: unknown) => void;
|
724 | complete?: () => void;
|
725 | };
|
726 | export interface Subscription {
|
727 | unsubscribe(): void;
|
728 | }
|
729 | export interface InteropObservable<T> {
|
730 | [Symbol.observable]: () => InteropSubscribable<T>;
|
731 | }
|
732 | export interface InteropSubscribable<T> {
|
733 | subscribe(observer: Observer<T>): Subscription;
|
734 | }
|
735 | export interface Subscribable<T> extends InteropSubscribable<T> {
|
736 | subscribe(observer: Observer<T>): Subscription;
|
737 | subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
|
738 | }
|
739 | type EventDescriptorMatches<TEventType extends string, TNormalizedDescriptor> = TEventType extends TNormalizedDescriptor ? true : false;
|
740 | export type ExtractEvent<TEvent extends EventObject, TDescriptor extends EventDescriptor<TEvent>> = string extends TEvent['type'] ? TEvent : NormalizeDescriptor<TDescriptor> extends infer TNormalizedDescriptor ? TEvent extends any ? true extends EventDescriptorMatches<TEvent['type'], TNormalizedDescriptor> ? TEvent : never : never : never;
|
741 | export interface BaseActorRef<TEvent extends EventObject> {
|
742 | send: (event: TEvent) => void;
|
743 | }
|
744 | export interface ActorLike<TCurrent, TEvent extends EventObject> extends Subscribable<TCurrent> {
|
745 | send: (event: TEvent) => void;
|
746 | }
|
747 | export interface ActorRef<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TEmitted extends EventObject = EventObject> extends Subscribable<TSnapshot>, InteropObservable<TSnapshot> {
|
748 | |
749 |
|
750 |
|
751 | id: string;
|
752 | sessionId: string;
|
753 | send: (event: TEvent) => void;
|
754 | start: () => void;
|
755 | getSnapshot: () => TSnapshot;
|
756 | getPersistedSnapshot: () => Snapshot<unknown>;
|
757 | stop: () => void;
|
758 | toJSON?: () => any;
|
759 | _parent?: AnyActorRef;
|
760 | system: AnyActorSystem;
|
761 | src: string | AnyActorLogic;
|
762 | on: <TType extends TEmitted['type']>(type: TType, handler: (emitted: TEmitted & {
|
763 | type: TType;
|
764 | }) => void) => Subscription;
|
765 | }
|
766 | export type AnyActorRef = ActorRef<any, any, any>;
|
767 | export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
|
768 | export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TStateValue, infer TTag, infer _TInput, infer TOutput, infer TEmitted, infer _TResolvedTypesMeta> ? ActorRef<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>, TEvent, TEmitted> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TSnapshot, infer TEvent, infer _TInput, infer _TSystem, infer TEmitted> ? ActorRef<TSnapshot, TEvent, TEmitted> : never : never;
|
769 | export type DevToolsAdapter = (service: AnyActor) => void;
|
770 |
|
771 |
|
772 |
|
773 | export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TStateValue, infer TTag, infer TInput, infer TOutput, infer TEmitted, infer _TResolvedTypesMeta> ? Actor<ActorLogic<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>, TEvent, TInput, AnyActorSystem, TEmitted>> : never;
|
774 | export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TEmitted, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TResolvedTypesMeta, TRequireMissingImplementations> : never;
|
775 | export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, // context
|
776 | any, // event
|
777 | any, // children
|
778 | any, // actor
|
779 | any, // action
|
780 | any, // guard
|
781 | any, // delay
|
782 | any, // state value
|
783 | any, // tag
|
784 | any, // input
|
785 | any, // output
|
786 | any, // emitted
|
787 | infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
788 | export interface ActorScope<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TSystem extends AnyActorSystem = AnyActorSystem, TEmitted extends EventObject = EventObject> {
|
789 | self: ActorRef<TSnapshot, TEvent, TEmitted>;
|
790 | id: string;
|
791 | sessionId: string;
|
792 | logger: (...args: any[]) => void;
|
793 | defer: (fn: () => void) => void;
|
794 | emit: (event: TEmitted) => void;
|
795 | system: TSystem;
|
796 | stopChild: (child: AnyActorRef) => void;
|
797 | }
|
798 | export type AnyActorScope = ActorScope<any,
|
799 | any,
|
800 | AnyActorSystem, any>;
|
801 | export type Snapshot<TOutput> = {
|
802 | status: 'active';
|
803 | output: undefined;
|
804 | error: undefined;
|
805 | } | {
|
806 | status: 'done';
|
807 | output: TOutput;
|
808 | error: undefined;
|
809 | } | {
|
810 | status: 'error';
|
811 | output: undefined;
|
812 | error: unknown;
|
813 | } | {
|
814 | status: 'stopped';
|
815 | output: undefined;
|
816 | error: undefined;
|
817 | };
|
818 |
|
819 |
|
820 |
|
821 |
|
822 |
|
823 |
|
824 |
|
825 |
|
826 | export interface ActorLogic<in out TSnapshot extends Snapshot<unknown>, // it's invariant because it's also part of `ActorScope["self"]["getSnapshot"]`
|
827 | in out TEvent extends EventObject, // it's invariant because it's also part of `ActorScope["self"]["send"]`
|
828 | in TInput = NonReducibleUnknown, TSystem extends AnyActorSystem = AnyActorSystem, in out TEmitted extends EventObject = EventObject> {
|
829 |
|
830 | config?: unknown;
|
831 | |
832 |
|
833 |
|
834 |
|
835 |
|
836 |
|
837 |
|
838 |
|
839 | transition: (snapshot: TSnapshot, message: TEvent, actorScope: ActorScope<TSnapshot, TEvent, TSystem, TEmitted>) => TSnapshot;
|
840 | |
841 |
|
842 |
|
843 |
|
844 |
|
845 |
|
846 | getInitialSnapshot: (actorScope: ActorScope<TSnapshot, TEvent, TSystem, TEmitted>, input: TInput) => TSnapshot;
|
847 | |
848 |
|
849 |
|
850 |
|
851 |
|
852 |
|
853 |
|
854 | restoreSnapshot?: (persistedState: Snapshot<unknown>, actorScope: ActorScope<TSnapshot, TEvent, AnyActorSystem, TEmitted>) => TSnapshot;
|
855 | |
856 |
|
857 |
|
858 |
|
859 |
|
860 | start?: (snapshot: TSnapshot, actorScope: ActorScope<TSnapshot, TEvent, AnyActorSystem, TEmitted>) => void;
|
861 | |
862 |
|
863 |
|
864 |
|
865 |
|
866 |
|
867 | getPersistedSnapshot: (snapshot: TSnapshot, options?: unknown) => Snapshot<unknown>;
|
868 | }
|
869 | export type AnyActorLogic = ActorLogic<any,
|
870 | any,
|
871 | any,
|
872 | any,
|
873 | any>;
|
874 | export type UnknownActorLogic = ActorLogic<any,
|
875 | any,
|
876 | never,
|
877 | AnyActorSystem, any>;
|
878 | export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer TSnapshot, infer _> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends ActorLogic<infer _TSnapshot, infer _TEvent, infer _TInput, infer _TEmitted, infer _TSystem> ? ReturnType<R['transition']> : R extends ActorScope<infer TSnapshot, infer _TEvent, infer _TEmitted, infer _TSystem> ? TSnapshot : never : never;
|
879 | export type EventFromLogic<TLogic extends AnyActorLogic> = TLogic extends ActorLogic<infer _TSnapshot, infer TEvent, infer _TInput, infer _TEmitted, infer _TSystem> ? TEvent : never;
|
880 | export type EmittedFrom<TLogic extends AnyActorLogic> = TLogic extends ActorLogic<infer _TSnapshot, infer _TEvent, infer _TInput, infer _TSystem, infer TEmitted> ? TEmitted : never;
|
881 | type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TEmitted, infer _TResolvedTypesMeta> ? TEvent : R extends MachineSnapshot<infer _TContext, infer TEvent, infer _TChildren, infer _TStateValue, infer _TTag, infer _TOutput> ? TEvent : R extends ActorRef<infer _, infer TEvent> ? TEvent : never : never;
|
882 | export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
883 | export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TEmitted, infer _TResolvedTypesMeta> ? TContext : R extends MachineSnapshot<infer TContext, infer _TEvent, infer _TChildren, infer _TStateValue, infer _TTag, infer _TOutput> ? TContext : R extends Actor<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TEmitted, infer _TResolvedTypesMeta> ? TContext : never : never : never;
|
884 | export type InferEvent<E extends EventObject> = {
|
885 | [T in E['type']]: {
|
886 | type: T;
|
887 | } & Extract<E, {
|
888 | type: T;
|
889 | }>;
|
890 | }[E['type']];
|
891 | export type TODO = any;
|
892 | export type StateValueFrom<TMachine extends AnyStateMachine> = Parameters<StateFrom<TMachine>['matches']>[0];
|
893 | export type TagsFrom<TMachine extends AnyStateMachine> = Parameters<StateFrom<TMachine>['hasTag']>[0];
|
894 | export interface ActorSystemInfo {
|
895 | actors: Record<string, AnyActorRef>;
|
896 | }
|
897 | export type RequiredActorOptions<TActor extends ProvidedActor> = (undefined extends TActor['id'] ? never : 'id') | (undefined extends InputFrom<TActor['logic']> ? never : 'input');
|
898 | type ExtractLiteralString<T extends string | undefined> = T extends string ? string extends T ? never : T : never;
|
899 | type ToConcreteChildren<TActor extends ProvidedActor> = {
|
900 | [A in TActor as ExtractLiteralString<A['id']>]?: ActorRefFrom<A['logic']>;
|
901 | };
|
902 | export type ToChildren<TActor extends ProvidedActor> = string extends TActor['src'] ? Record<string, AnyActorRef> : Compute<ToConcreteChildren<TActor> & {
|
903 | include: {
|
904 | [id: string]: TActor extends any ? ActorRefFrom<TActor['logic']> | undefined : never;
|
905 | };
|
906 | exclude: {};
|
907 | }[undefined extends TActor['id'] ? 'include' : string extends TActor['id'] ? 'include' : 'exclude']>;
|
908 | export type StateSchema = {
|
909 | states?: Record<string, StateSchema>;
|
910 | };
|
911 | export {};
|