UNPKG

1.66 kBTypeScriptView Raw
1import { ActorRefFrom, AnyActorLogic, AnyActorRef, AnyActorScope, AnyEventObject, AnyMachineSnapshot, ConditionalRequired, InputFrom, IsLiteralString, IsNotNever, ProvidedActor, RequiredActorOptions } from "./types.js";
2type SpawnOptions<TActor extends ProvidedActor, TSrc extends TActor['src']> = TActor extends {
3 src: TSrc;
4} ? ConditionalRequired<[
5 options?: {
6 id?: TActor['id'];
7 systemId?: string;
8 input?: InputFrom<TActor['logic']>;
9 syncSnapshot?: boolean;
10 } & {
11 [K in RequiredActorOptions<TActor>]: unknown;
12 }
13], IsNotNever<RequiredActorOptions<TActor>>> : never;
14type GetConcreteLogic<TActor extends ProvidedActor, TSrc extends TActor['src']> = Extract<TActor, {
15 src: TSrc;
16}>['logic'];
17export type Spawner<TActor extends ProvidedActor> = IsLiteralString<TActor['src']> extends true ? {
18 <TSrc extends TActor['src']>(logic: TSrc, ...[options]: SpawnOptions<TActor, TSrc>): ActorRefFrom<GetConcreteLogic<TActor, TSrc>>;
19 <TLogic extends AnyActorLogic>(src: TLogic, options?: {
20 id?: never;
21 systemId?: string;
22 input?: InputFrom<TLogic>;
23 syncSnapshot?: boolean;
24 }): ActorRefFrom<TLogic>;
25} : <TLogic extends AnyActorLogic | string>(src: TLogic, options?: {
26 id?: string;
27 systemId?: string;
28 input?: TLogic extends string ? unknown : InputFrom<TLogic>;
29 syncSnapshot?: boolean;
30}) => TLogic extends string ? AnyActorRef : ActorRefFrom<TLogic>;
31export declare function createSpawner(actorScope: AnyActorScope, { machine, context }: AnyMachineSnapshot, event: AnyEventObject, spawnedChildren: Record<string, AnyActorRef>): Spawner<any>;
32export {};