@typeonce/effect-machine 0.17.0 → 0.18.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.
- package/README.md +79 -64
- package/dist/Machine.d.ts +139 -272
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +3 -49
- package/dist/Machine.js.map +1 -1
- package/dist/internal/machine/invocation.d.ts.map +1 -1
- package/dist/internal/machine/invocation.js +1 -1
- package/dist/internal/machine/invocation.js.map +1 -1
- package/dist/internal/machine/machine.d.ts.map +1 -1
- package/dist/internal/machine/machine.js +48 -10
- package/dist/internal/machine/machine.js.map +1 -1
- package/dist/testing/MachineTest.d.ts +4 -4
- package/dist/testing/MachineTest.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.d.ts +1 -1
- package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
- package/docs/agent-guide.md +106 -67
- package/package.json +1 -1
- package/src/Machine.ts +552 -1040
- package/src/internal/machine/invocation.ts +1 -1
- package/src/internal/machine/machine.ts +64 -8
- package/src/internal/testing/machine/exploration.ts +1 -1
- package/src/internal/testing/machine/trace.ts +1 -1
- package/src/internal/testing/machine/verification.ts +1 -1
- package/src/testing/MachineTest.ts +4 -4
- package/src/unstable/reactivity/AtomMachine.ts +1 -1
package/dist/Machine.d.ts
CHANGED
|
@@ -474,6 +474,7 @@ type IncompatibleRuntime<Requirements, Events, Emits> = Requirements extends Run
|
|
|
474
474
|
declare const InvokeTypeId: typeof internal.InvokeTypeId;
|
|
475
475
|
declare const TransitionTypeId: typeof internal.TransitionTypeId;
|
|
476
476
|
declare const TransitionBuilderTypeId: unique symbol;
|
|
477
|
+
declare const InvokeBuilderTypeId: unique symbol;
|
|
477
478
|
declare const InitialBuilderTypeId: unique symbol;
|
|
478
479
|
type StateDefinitionError<Message extends string, Path extends PropertyKey = never, Details extends PropertyKey = never> = {
|
|
479
480
|
readonly "~effect/Machine/DefinitionError": Message;
|
|
@@ -1198,7 +1199,7 @@ export interface MachineRef<out State, in Event, out Error = never, out Output =
|
|
|
1198
1199
|
readonly childChanges: <Child extends ChildMachine.Any>(child: Child) => Stream.Stream<Option.Option<ChildMachine.Ref<Child>>>;
|
|
1199
1200
|
}
|
|
1200
1201
|
/**
|
|
1201
|
-
* Machine-specific process logic used by `spawn` and
|
|
1202
|
+
* Machine-specific process logic used by `spawn` and state-owned invocations.
|
|
1202
1203
|
*
|
|
1203
1204
|
* @category models
|
|
1204
1205
|
* @since 0.4.0
|
|
@@ -1504,12 +1505,22 @@ export declare namespace Machine {
|
|
|
1504
1505
|
*/
|
|
1505
1506
|
type Events<M extends Any> = M[typeof MachineTypeId]["events"];
|
|
1506
1507
|
/**
|
|
1507
|
-
* Extracts the input schema carried by a machine definition.
|
|
1508
|
+
* Extracts the startup input schema carried by a machine definition.
|
|
1508
1509
|
*
|
|
1509
1510
|
* @category utility types
|
|
1510
|
-
* @since 0.
|
|
1511
|
+
* @since 0.18.0
|
|
1511
1512
|
*/
|
|
1512
|
-
type
|
|
1513
|
+
type InputSchema<M extends Any> = M[typeof MachineTypeId]["input"];
|
|
1514
|
+
/**
|
|
1515
|
+
* Extracts the decoded startup input accepted by a machine definition.
|
|
1516
|
+
*
|
|
1517
|
+
* Machines declared with `Schema.Void` do not accept a startup input, so
|
|
1518
|
+
* their extracted input type is `never`.
|
|
1519
|
+
*
|
|
1520
|
+
* @category utility types
|
|
1521
|
+
* @since 0.18.0
|
|
1522
|
+
*/
|
|
1523
|
+
type Input<M extends Any> = InputSchema<M> extends infer Input extends Schema.Top ? Input extends typeof Schema.Void ? never : Input["Type"] : never;
|
|
1513
1524
|
/**
|
|
1514
1525
|
* Extracts state paths that do not yet have handlers.
|
|
1515
1526
|
*
|
|
@@ -3325,6 +3336,10 @@ export declare namespace Machine {
|
|
|
3325
3336
|
} ? EventOf<ParentEvents<M>> : never;
|
|
3326
3337
|
/** Extracts transition results returned by invocation lifecycle handlers. */
|
|
3327
3338
|
type InvokeOutcomeReturn<Invoke> = Invoke extends unknown ? (Invoke extends {
|
|
3339
|
+
readonly [InvokeTypeId]: {
|
|
3340
|
+
readonly outcomes: Types.Covariant<infer Outcomes>;
|
|
3341
|
+
};
|
|
3342
|
+
} ? EventTransitionReturn<Outcomes> : never) | (Invoke extends {
|
|
3328
3343
|
readonly onDone?: infer Handler;
|
|
3329
3344
|
} ? EventTransitionReturn<NonNullable<Handler>> : never) | (Invoke extends {
|
|
3330
3345
|
readonly onFailure?: infer Handler;
|
|
@@ -3333,20 +3348,22 @@ export declare namespace Machine {
|
|
|
3333
3348
|
} ? EventTransitionReturn<NonNullable<Handler>> : never) | (Invoke extends {
|
|
3334
3349
|
readonly onSnapshot?: infer Handler;
|
|
3335
3350
|
} ? EventTransitionReturn<NonNullable<Handler>> : never) : never;
|
|
3351
|
+
type InvokeOutcomeError<Invoke> = IsAny<InvokeOutcomeReturn<Invoke>> extends true ? never : Effect.Error<InvokeOutcomeReturn<Invoke>>;
|
|
3352
|
+
type InvokeOutcomeServices<Invoke> = IsAny<InvokeOutcomeReturn<Invoke>> extends true ? never : Effect.Services<InvokeOutcomeReturn<Invoke>>;
|
|
3336
3353
|
/**
|
|
3337
3354
|
* Extracts the parent transition error contribution from invoked children.
|
|
3338
3355
|
*
|
|
3339
3356
|
* @category utility types
|
|
3340
3357
|
* @since 0.4.0
|
|
3341
3358
|
*/
|
|
3342
|
-
type InvokeError<Config> = [InvokeReturn<Config>] extends [never] ? never : ChildAlreadyExistsError | InvokeInitialError<InvokeReturn<Config>> |
|
|
3359
|
+
type InvokeError<Config> = [InvokeReturn<Config>] extends [never] ? never : ChildAlreadyExistsError | InvokeInitialError<InvokeReturn<Config>> | InvokeOutcomeError<InvokeReturn<Config>>;
|
|
3343
3360
|
/**
|
|
3344
3361
|
* Extracts the parent service requirement contribution from invoked children.
|
|
3345
3362
|
*
|
|
3346
3363
|
* @category utility types
|
|
3347
3364
|
* @since 0.4.0
|
|
3348
3365
|
*/
|
|
3349
|
-
type InvokeRequirements<Config> = [InvokeReturn<Config>] extends [never] ? never : MachineRuntimeRequirement | InvokeServices<InvokeReturn<Config>> |
|
|
3366
|
+
type InvokeRequirements<Config> = [InvokeReturn<Config>] extends [never] ? never : MachineRuntimeRequirement | InvokeServices<InvokeReturn<Config>> | InvokeOutcomeServices<InvokeReturn<Config>>;
|
|
3350
3367
|
/**
|
|
3351
3368
|
* Extracts the return value from an eventless transition.
|
|
3352
3369
|
*
|
|
@@ -3520,8 +3537,8 @@ export declare namespace Machine {
|
|
|
3520
3537
|
interface InvokeOwned<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> {
|
|
3521
3538
|
readonly "~effect/Machine/InvokeOwner"?: Types.Covariant<readonly [States, Events, Emits, StateId, InputEvents, ParentEvents]>;
|
|
3522
3539
|
}
|
|
3523
|
-
/** Type evidence retained by
|
|
3524
|
-
interface InvokeTyped<Output, Error, Requirements, InitialError, Emits = never, ParentEvent = never> {
|
|
3540
|
+
/** Type evidence retained by a completed state-owned invocation. */
|
|
3541
|
+
interface InvokeTyped<Output, Error, Requirements, InitialError, Emits = never, ParentEvent = never, Outcomes = never> {
|
|
3525
3542
|
readonly [InvokeTypeId]: {
|
|
3526
3543
|
readonly output: Types.Covariant<Output>;
|
|
3527
3544
|
readonly error: Types.Covariant<Error>;
|
|
@@ -3529,9 +3546,10 @@ export declare namespace Machine {
|
|
|
3529
3546
|
readonly initialError: Types.Covariant<InitialError>;
|
|
3530
3547
|
readonly emits: Types.Covariant<Emits>;
|
|
3531
3548
|
readonly parentEvents: Types.Covariant<ParentEvent>;
|
|
3549
|
+
readonly outcomes: Types.Covariant<Outcomes>;
|
|
3532
3550
|
};
|
|
3533
3551
|
}
|
|
3534
|
-
type
|
|
3552
|
+
type StoredInvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & ({
|
|
3535
3553
|
readonly id: string;
|
|
3536
3554
|
readonly effect: (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<any, any, any>;
|
|
3537
3555
|
readonly stream?: never;
|
|
@@ -3593,76 +3611,7 @@ export declare namespace Machine {
|
|
|
3593
3611
|
readonly onElement?: never;
|
|
3594
3612
|
readonly onSnapshot?: unknown;
|
|
3595
3613
|
});
|
|
3596
|
-
|
|
3597
|
-
type InvokeDefinition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> | ReadonlyArray<InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3598
|
-
type TypedInvokeDefinition = InvokeTyped<any, any, any, any, any, any> | ReadonlyArray<InvokeTyped<any, any, any, any, any, any>>;
|
|
3599
|
-
type InvokeHandlerRequirement<Value, Handler> = IsAny<Value> extends true ? {
|
|
3600
|
-
readonly handler: Handler;
|
|
3601
|
-
} : [Value] extends [never] ? {
|
|
3602
|
-
readonly handler?: never;
|
|
3603
|
-
} : {
|
|
3604
|
-
readonly handler: Handler;
|
|
3605
|
-
};
|
|
3606
|
-
type InvokeDoneRequirement<Value, Handler> = InvokeHandlerRequirement<Value, Handler> extends infer Requirement ? Requirement extends {
|
|
3607
|
-
readonly handler: infer Required;
|
|
3608
|
-
} ? {
|
|
3609
|
-
readonly onDone: Required;
|
|
3610
|
-
} : {
|
|
3611
|
-
readonly onDone?: never;
|
|
3612
|
-
} : never;
|
|
3613
|
-
type InvokeFailureRequirement<Value, Handler> = InvokeHandlerRequirement<Value, Handler> extends infer Requirement ? Requirement extends {
|
|
3614
|
-
readonly handler: infer Required;
|
|
3615
|
-
} ? {
|
|
3616
|
-
readonly onFailure: Required;
|
|
3617
|
-
} : {
|
|
3618
|
-
readonly onFailure?: never;
|
|
3619
|
-
} : never;
|
|
3620
|
-
type InvokeElementRequirement<Value, Handler> = InvokeHandlerRequirement<Value, Handler> extends infer Requirement ? Requirement extends {
|
|
3621
|
-
readonly handler: infer Required;
|
|
3622
|
-
} ? {
|
|
3623
|
-
readonly onElement: Required;
|
|
3624
|
-
} : {
|
|
3625
|
-
readonly onElement?: never;
|
|
3626
|
-
} : never;
|
|
3627
|
-
type TimerInvokeArgs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = {
|
|
3628
|
-
readonly id: InvokeLifecycleId;
|
|
3629
|
-
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3630
|
-
readonly effect?: never;
|
|
3631
|
-
readonly stream?: never;
|
|
3632
|
-
readonly logic?: never;
|
|
3633
|
-
readonly child?: never;
|
|
3634
|
-
readonly address?: never;
|
|
3635
|
-
readonly onFailure?: never;
|
|
3636
|
-
readonly onElement?: never;
|
|
3637
|
-
readonly onSnapshot?: never;
|
|
3638
|
-
readonly onDone: InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, void, InputEvents, ParentEvents>>;
|
|
3639
|
-
};
|
|
3640
|
-
type LogicInvokeArgs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address extends ChildAddress<never>, Source = Logic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = {
|
|
3641
|
-
readonly id: InvokeLifecycleId;
|
|
3642
|
-
readonly address: Address & ChildAddress.Compatibility<Address, ChildEvent>;
|
|
3643
|
-
readonly logic: Source;
|
|
3644
|
-
readonly effect?: never;
|
|
3645
|
-
readonly stream?: never;
|
|
3646
|
-
readonly after?: never;
|
|
3647
|
-
readonly child?: never;
|
|
3648
|
-
readonly onElement?: never;
|
|
3649
|
-
readonly onSnapshot?: InvokeTransition<States, Events, Emits, StateId, InvokeSnapshotContext<States, Events, Emits, StateId, NoInfer<ChildState>, NoInfer<ChildError>, NoInfer<ChildOutput>, InputEvents, ParentEvents>>;
|
|
3650
|
-
} & InvokeDoneRequirement<NoInfer<ChildOutput>, InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, NoInfer<ChildOutput>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<NoInfer<ChildError>, InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, NoInfer<ChildError>, InputEvents, ParentEvents>>>;
|
|
3651
|
-
type ChildInvokeArgs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, ChildDefinition extends Machine.Any, Child extends ChildMachine<string, ChildDefinition>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = {
|
|
3652
|
-
readonly child: Child & (ChildDefinition extends EnsureExecutable<Machine.States<ChildDefinition>, Machine.UnhandledStates<ChildDefinition>, Machine.OutputStates<ChildDefinition>> ? unknown : never);
|
|
3653
|
-
readonly id?: never;
|
|
3654
|
-
readonly address?: never;
|
|
3655
|
-
readonly effect?: never;
|
|
3656
|
-
readonly stream?: never;
|
|
3657
|
-
readonly after?: never;
|
|
3658
|
-
readonly logic?: never;
|
|
3659
|
-
readonly onElement?: never;
|
|
3660
|
-
readonly onSnapshot?: InvokeTransition<States, Events, Emits, StateId, InvokeSnapshotContext<States, Events, Emits, StateId, Snapshot<Machine.States<ChildDefinition>>, Error<ChildDefinition>, Output<ChildDefinition>, InputEvents, ParentEvents>>;
|
|
3661
|
-
} & (Input<ChildDefinition> extends typeof Schema.Void ? {
|
|
3662
|
-
readonly input?: never;
|
|
3663
|
-
} : {
|
|
3664
|
-
readonly input: InvokeSource<Input<ChildDefinition>["Type"], InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3665
|
-
}) & InvokeDoneRequirement<Output<ChildDefinition>, InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, Output<ChildDefinition>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, InputEvents, ParentEvents>>>;
|
|
3614
|
+
type StoredInvokeDefinition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = StoredInvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> | ReadonlyArray<StoredInvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3666
3615
|
type LogicInitialEffectOf<Value> = Value extends {
|
|
3667
3616
|
readonly initial: infer Initial;
|
|
3668
3617
|
} ? Initial extends (...args: ReadonlyArray<any>) => infer Result ? Result : never : never;
|
|
@@ -3677,40 +3626,85 @@ export declare namespace Machine {
|
|
|
3677
3626
|
type LogicServicesOf<Value> = Effect.Services<LogicInitialEffectOf<Value> | LogicRunEffectOf<Value>>;
|
|
3678
3627
|
type LogicOutputOf<Value> = Effect.Success<LogicRunEffectOf<Value>>;
|
|
3679
3628
|
type LogicInitialErrorOf<Value> = Effect.Error<LogicInitialEffectOf<Value>>;
|
|
3680
|
-
type
|
|
3681
|
-
|
|
3682
|
-
|
|
3683
|
-
|
|
3684
|
-
|
|
3685
|
-
readonly
|
|
3686
|
-
}
|
|
3687
|
-
readonly
|
|
3688
|
-
}
|
|
3689
|
-
readonly
|
|
3690
|
-
} :
|
|
3691
|
-
readonly
|
|
3692
|
-
}
|
|
3693
|
-
|
|
3694
|
-
|
|
3695
|
-
|
|
3696
|
-
|
|
3697
|
-
|
|
3698
|
-
|
|
3699
|
-
|
|
3700
|
-
|
|
3701
|
-
|
|
3702
|
-
|
|
3703
|
-
|
|
3704
|
-
|
|
3705
|
-
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3709
|
-
readonly
|
|
3710
|
-
|
|
3711
|
-
|
|
3712
|
-
|
|
3713
|
-
|
|
3629
|
+
type RequiredInvokeChannel<Value, Channel extends string> = IsAny<Value> extends true ? Channel : [Value] extends [never] ? never : Channel;
|
|
3630
|
+
type InvokeBuilderResult<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Outcomes> = InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & InvokeTyped<Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Outcomes> & {
|
|
3631
|
+
readonly [InvokeBuilderTypeId]: true;
|
|
3632
|
+
};
|
|
3633
|
+
type InvokeBuilder<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Element, Pending extends string, SnapshotHandler, Outcomes = never> = ([Pending] extends [never] ? InvokeBuilderResult<States, Events, Emits, StateId, InputEvents, ParentEvents, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Outcomes> : {}) & ("done" extends Pending ? {
|
|
3634
|
+
readonly onDone: <const Handler extends InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, Output, InputEvents, ParentEvents>>>(handler: Handler & InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, Output, InputEvents, ParentEvents>>) => InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Element, Exclude<Pending, "done">, SnapshotHandler, Outcomes | Handler>;
|
|
3635
|
+
} : {}) & ("failure" extends Pending ? {
|
|
3636
|
+
readonly onFailure: <const Handler extends InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, Error, InputEvents, ParentEvents>>>(handler: Handler & InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, Error, InputEvents, ParentEvents>>) => InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Element, Exclude<Pending, "failure">, SnapshotHandler, Outcomes | Handler>;
|
|
3637
|
+
} : {}) & ("element" extends Pending ? {
|
|
3638
|
+
readonly onElement: <const Handler extends InvokeTransition<States, Events, Emits, StateId, InvokeElementContext<States, Events, Emits, StateId, Element, InputEvents, ParentEvents>>>(handler: Handler & InvokeTransition<States, Events, Emits, StateId, InvokeElementContext<States, Events, Emits, StateId, Element, InputEvents, ParentEvents>>) => InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Element, Exclude<Pending, "element">, SnapshotHandler, Outcomes | Handler>;
|
|
3639
|
+
} : {}) & ([SnapshotHandler] extends [never] ? {} : {
|
|
3640
|
+
readonly onSnapshot: <const Handler extends SnapshotHandler>(handler: Handler & SnapshotHandler) => InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Element, Pending, never, Outcomes | Handler>;
|
|
3641
|
+
});
|
|
3642
|
+
type EffectInvokeBuilder<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Source extends (...args: ReadonlyArray<any>) => Effect.Effect<any, any, any>> = InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never, never, never, never, RequiredInvokeChannel<Effect.Success<ReturnType<Source>>, "done"> | RequiredInvokeChannel<Effect.Error<ReturnType<Source>>, "failure">, never>;
|
|
3643
|
+
type StreamInvokeBuilder<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Source extends (...args: ReadonlyArray<any>) => Stream.Stream<any, any, any>> = InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, void, Stream.Error<ReturnType<Source>>, Stream.Services<ReturnType<Source>>, never, never, never, Stream.Success<ReturnType<Source>>, "done" | RequiredInvokeChannel<Stream.Success<ReturnType<Source>>, "element"> | RequiredInvokeChannel<Stream.Error<ReturnType<Source>>, "failure">, never>;
|
|
3644
|
+
type LogicInvokeBuilder<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, ChildLogic> = InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, LogicOutputOf<ChildLogic>, LogicErrorOf<ChildLogic>, LogicServicesOf<ChildLogic>, LogicInitialErrorOf<ChildLogic>, never, never, never, RequiredInvokeChannel<LogicOutputOf<ChildLogic>, "done"> | RequiredInvokeChannel<LogicErrorOf<ChildLogic>, "failure">, InvokeTransition<States, Events, Emits, StateId, InvokeSnapshotContext<States, Events, Emits, StateId, LogicStateOf<ChildLogic>, LogicErrorOf<ChildLogic>, LogicOutputOf<ChildLogic>, InputEvents, ParentEvents>>>;
|
|
3645
|
+
type ChildInvokeBuilder<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Child extends ChildMachine.Any, ChildDefinition extends Machine.Any = Child["machine"]> = InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Output<ChildDefinition>, Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, Services<ChildDefinition>, InitialError<ChildDefinition>, Emit<ChildDefinition>, EventOf<Machine.ParentEvents<ChildDefinition>>, never, RequiredInvokeChannel<Output<ChildDefinition>, "done"> | RequiredInvokeChannel<Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, "failure">, InvokeTransition<States, Events, Emits, StateId, InvokeSnapshotContext<States, Events, Emits, StateId, Snapshot<Machine.States<ChildDefinition>>, Error<ChildDefinition>, Output<ChildDefinition>, InputEvents, ParentEvents>>>;
|
|
3646
|
+
/**
|
|
3647
|
+
* Selects state-owned work and begins its lifecycle-handler chain.
|
|
3648
|
+
*
|
|
3649
|
+
* Each source exposes exactly the lifecycle methods that it can produce. A
|
|
3650
|
+
* chain becomes returnable from `invoke` only after every reachable required
|
|
3651
|
+
* channel has been handled.
|
|
3652
|
+
*
|
|
3653
|
+
* @category models
|
|
3654
|
+
* @since 0.18.0
|
|
3655
|
+
*/
|
|
3656
|
+
interface InvokeSelector<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> {
|
|
3657
|
+
/** Starts a fresh Effect each time the owning state is entered. */
|
|
3658
|
+
readonly effect: <const Source extends (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>>(id: InvokeLifecycleId, source: Source) => EffectInvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Source>;
|
|
3659
|
+
/** Starts a fresh, backpressured Stream each time the owning state is entered. */
|
|
3660
|
+
readonly stream: <const Source extends (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, unknown, any>>(id: InvokeLifecycleId, source: Source) => StreamInvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Source>;
|
|
3661
|
+
/** Starts a cancellable state-scoped timer. */
|
|
3662
|
+
readonly timer: (id: InvokeLifecycleId, duration: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>) => InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, void, never, never, never, never, never, never, "done", never>;
|
|
3663
|
+
/** Starts reusable process logic at a typed parent-local address. */
|
|
3664
|
+
readonly logic: {
|
|
3665
|
+
<const Source extends (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown, Address extends ChildAddress<never>>(id: InvokeLifecycleId, options: {
|
|
3666
|
+
readonly address: Address & ChildAddress.Compatibility<Address, LogicEventOf<ReturnType<NoInfer<Source>>>>;
|
|
3667
|
+
readonly logic: Source;
|
|
3668
|
+
}, ..._validation: ReturnType<Source> extends {
|
|
3669
|
+
readonly initial: unknown;
|
|
3670
|
+
readonly run: unknown;
|
|
3671
|
+
} ? [] : [
|
|
3672
|
+
"logic factory must return Machine.Logic"
|
|
3673
|
+
]): LogicInvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, ReturnType<Source>>;
|
|
3674
|
+
<const Source, Address extends ChildAddress<never>>(id: InvokeLifecycleId, options: {
|
|
3675
|
+
readonly address: Address & ChildAddress.Compatibility<Address, LogicEventOf<NoInfer<Source>>>;
|
|
3676
|
+
readonly logic: Source;
|
|
3677
|
+
}, ..._validation: Source extends {
|
|
3678
|
+
readonly initial: unknown;
|
|
3679
|
+
readonly run: unknown;
|
|
3680
|
+
} ? [] : [
|
|
3681
|
+
"logic must implement Machine.Logic"
|
|
3682
|
+
]): LogicInvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Source>;
|
|
3683
|
+
};
|
|
3684
|
+
/** Starts a complete child statechart represented by a reusable descriptor. */
|
|
3685
|
+
readonly child: <const Child extends ChildMachine.Any>(child: Child & (Child["machine"] extends EnsureExecutable<Machine.States<Child["machine"]>, Machine.UnhandledStates<Child["machine"]>, Machine.OutputStates<Child["machine"]>> ? unknown : never), ...options: InputSchema<Child["machine"]> extends typeof Schema.Void ? [options?: {
|
|
3686
|
+
readonly input?: never;
|
|
3687
|
+
}] : [
|
|
3688
|
+
options: {
|
|
3689
|
+
readonly input: InvokeSource<Input<Child["machine"]>, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3690
|
+
}
|
|
3691
|
+
]) => ChildInvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Child>;
|
|
3692
|
+
}
|
|
3693
|
+
/**
|
|
3694
|
+
* Inline invocation declaration accepted by an active state handler.
|
|
3695
|
+
*
|
|
3696
|
+
* Return one completed source chain or an array of completed chains. Source
|
|
3697
|
+
* computations and child descriptors may be extracted, but the chain stays
|
|
3698
|
+
* local to preserve the owning state and machine protocols.
|
|
3699
|
+
*
|
|
3700
|
+
* @category models
|
|
3701
|
+
* @since 0.18.0
|
|
3702
|
+
*/
|
|
3703
|
+
type InvokeBuilderInput<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = (from: InvokeSelector<States, Events, Emits, StateId, InputEvents, ParentEvents>) => (InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & {
|
|
3704
|
+
readonly [InvokeBuilderTypeId]: true;
|
|
3705
|
+
}) | ReadonlyArray<InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & {
|
|
3706
|
+
readonly [InvokeBuilderTypeId]: true;
|
|
3707
|
+
}>;
|
|
3714
3708
|
type OutputHandlerConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Context> = NodeByIdentifier<States, StateId> extends {
|
|
3715
3709
|
readonly output: Schema.Top;
|
|
3716
3710
|
} ? {
|
|
@@ -3732,7 +3726,7 @@ export declare namespace Machine {
|
|
|
3732
3726
|
type ActiveStateConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, E, R, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = {
|
|
3733
3727
|
readonly entry?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3734
3728
|
readonly exit?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3735
|
-
readonly invoke?:
|
|
3729
|
+
readonly invoke?: InvokeBuilderInput<States, Events, Emits, StateId, InputEvents, ParentEvents>;
|
|
3736
3730
|
readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, false, TransitionAcceptance>;
|
|
3737
3731
|
readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, false, TransitionAcceptance>;
|
|
3738
3732
|
readonly on?: {
|
|
@@ -3870,12 +3864,6 @@ export declare namespace Machine {
|
|
|
3870
3864
|
readonly states: infer Children extends StateSchemas;
|
|
3871
3865
|
} ? HandlerNodeByPath<Children, Rest> : never : never : Path extends keyof States ? States[Path] : never;
|
|
3872
3866
|
type HandlerConfigAtPath<Config, Path extends string> = Path extends `${infer Head}.${infer Rest}` ? Head extends keyof Config ? HandlerConfigAtPath<HandlerNodeChildrenConfig<Config[Head]>, Rest> : never : Path extends keyof Config ? Config[Path] : never;
|
|
3873
|
-
type HandlerInvokeContextAtPath<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Config, StateId extends StateNodeIdentifier<AllStates>, NodeConfig = HandlerConfigAtPath<Config, StateId>> = StateId extends StateIdentifier<AllStates> ? NodeConfig extends {
|
|
3874
|
-
readonly invoke: infer Invoke;
|
|
3875
|
-
} ? HandlerValidationAtPath<StateId, {
|
|
3876
|
-
readonly invoke: ContextualInvokeDefinition<AllStates, Events, Emits, StateId, InputEvents, ParentEvents, Invoke>;
|
|
3877
|
-
}> : unknown : unknown;
|
|
3878
|
-
type HandlerInvokeContexts<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Config> = Types.UnionToIntersection<StateNodeIdentifier<AllStates> extends infer StateId extends StateNodeIdentifier<AllStates> ? StateId extends StateNodeIdentifier<AllStates> ? HandlerInvokeContextAtPath<AllStates, Events, InputEvents, Emits, ParentEvents, Config, StateId> : never : never>;
|
|
3879
3867
|
type HandlerValidationAtPath<Path extends string, Validation> = Path extends `${infer Head}.${infer Rest}` ? {
|
|
3880
3868
|
readonly [Key in Head]?: {
|
|
3881
3869
|
readonly states: HandlerValidationAtPath<Rest, Validation>;
|
|
@@ -4023,7 +4011,7 @@ export declare namespace Machine {
|
|
|
4023
4011
|
* @since 0.4.0
|
|
4024
4012
|
*/
|
|
4025
4013
|
interface Handler<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Input extends Schema.Top, UnhandledStates extends StateIdentifier<States>, E, R, InitialE, InitialR, FinalStates extends StateIdentifier<States>, Output, OutputStates extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>> {
|
|
4026
|
-
<const Config extends HandlerTree<States, States, Events, Emits, E, R, InputEvents, ParentEvents, "">>(config: Config &
|
|
4014
|
+
<const Config extends HandlerTree<States, States, Events, Emits, E, R, InputEvents, ParentEvents, "">>(config: Config & HandlerTreeValidation<States, Events, InputEvents, Emits, NoInfer<Config>, OutputStates | Extract<HandlerTreeEvidence<States, NoInfer<Config>>["outputState"], StateIdentifier<States>>> & ([StateIdentifier<States>] extends [UnhandledStates] ? HandlerInitialTargetValidation<States, NoInfer<Config>> : unknown)): HandleTreeResult<States, Events, Emits, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, OutputStates, InputEvents, ParentEvents, Config>;
|
|
4027
4015
|
}
|
|
4028
4016
|
/**
|
|
4029
4017
|
* Any state config.
|
|
@@ -4048,7 +4036,7 @@ export declare namespace Machine {
|
|
|
4048
4036
|
interface StateConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, EventTag extends TagOf<Events[number]>, E, R> {
|
|
4049
4037
|
readonly entry?: (context: StateActionContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<E, R>;
|
|
4050
4038
|
readonly exit?: (context: StateActionContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<E, R>;
|
|
4051
|
-
readonly invoke?:
|
|
4039
|
+
readonly invoke?: StoredInvokeDefinition<States, Events, Emits, StateId>;
|
|
4052
4040
|
readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId>, false, TransitionAcceptance>;
|
|
4053
4041
|
readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId>, false, TransitionAcceptance>;
|
|
4054
4042
|
readonly output?: ((context: FinalOutputContext<States, Events, StateId>) => unknown) | ((context: ParallelOutputContext<States, Events, StateId>) => unknown);
|
|
@@ -4062,13 +4050,37 @@ export declare namespace Machine {
|
|
|
4062
4050
|
*/
|
|
4063
4051
|
type StateConfigs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, EventTag extends TagOf<Events[number]>, E, R> = Readonly<Record<PropertyKey, StateConfig<States, Events, Emits, StateId, EventTag, E, R> | ChoiceStateConfig<States, Events, Emits, ChoiceIdentifier<States>>>>;
|
|
4064
4052
|
}
|
|
4053
|
+
type StateSource = Machine.DefinedStates<any> | Machine.Any;
|
|
4054
|
+
type StateSchemasOf<Source extends StateSource> = Source extends Machine.DefinedStates<infer States> ? States : Source extends Machine.Any ? Machine.States<Source> : never;
|
|
4065
4055
|
/**
|
|
4066
|
-
* Extracts the complete logical snapshot represented by a state definition
|
|
4056
|
+
* Extracts the complete logical snapshot represented by a state definition or
|
|
4057
|
+
* machine.
|
|
4067
4058
|
*
|
|
4068
4059
|
* @category utility types
|
|
4069
4060
|
* @since 0.15.0
|
|
4070
4061
|
*/
|
|
4071
|
-
export type Snapshot<
|
|
4062
|
+
export type Snapshot<Source extends StateSource> = Machine.Snapshot<StateSchemasOf<Source>>;
|
|
4063
|
+
/**
|
|
4064
|
+
* Extracts the decoded value owned by a schema-backed state path.
|
|
4065
|
+
*
|
|
4066
|
+
* The source may be the object returned by {@link states} or a machine
|
|
4067
|
+
* definition. Control-only state paths are intentionally excluded.
|
|
4068
|
+
*
|
|
4069
|
+
* @category utility types
|
|
4070
|
+
* @since 0.18.0
|
|
4071
|
+
*/
|
|
4072
|
+
export type Value<Source extends StateSource, Path extends Machine.ValuedStateIdentifier<StateSchemasOf<Source>>> = Machine.StateByIdentifier<StateSchemasOf<Source>, Path>;
|
|
4073
|
+
/**
|
|
4074
|
+
* Extracts the logical snapshot rooted at a state path.
|
|
4075
|
+
*
|
|
4076
|
+
* The source may be the object returned by {@link states} or a machine
|
|
4077
|
+
* definition. This is the type-level counterpart of
|
|
4078
|
+
* `DefinedStates.getSnapshot`.
|
|
4079
|
+
*
|
|
4080
|
+
* @category utility types
|
|
4081
|
+
* @since 0.18.0
|
|
4082
|
+
*/
|
|
4083
|
+
export type SnapshotAt<Source extends StateSource, Path extends Machine.StateIdentifier<StateSchemasOf<Source>>> = Machine.SnapshotByIdentifier<StateSchemasOf<Source>, Path>;
|
|
4072
4084
|
/**
|
|
4073
4085
|
* Returns `true` if a value is a `Machine`.
|
|
4074
4086
|
*
|
|
@@ -4442,158 +4454,12 @@ export declare const encodeSnapshot: <const States extends Machine.StateSchemas,
|
|
|
4442
4454
|
* @since 0.4.0
|
|
4443
4455
|
*/
|
|
4444
4456
|
export declare const decodeSnapshot: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents>, encoded: unknown) => Effect.Effect<Machine.Snapshot<States>, MachineSchemaDecodeError, Machine.SnapshotDecodingServices<States>>;
|
|
4445
|
-
type EffectInvokeSource<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>> = {
|
|
4446
|
-
readonly id: InvokeLifecycleId;
|
|
4447
|
-
readonly effect: Source;
|
|
4448
|
-
readonly stream?: never;
|
|
4449
|
-
readonly after?: never;
|
|
4450
|
-
readonly logic?: never;
|
|
4451
|
-
readonly child?: never;
|
|
4452
|
-
readonly address?: never;
|
|
4453
|
-
readonly onElement?: never;
|
|
4454
|
-
readonly onSnapshot?: never;
|
|
4455
|
-
};
|
|
4456
|
-
type EffectDoneHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
4457
|
-
type EffectFailureHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
4458
|
-
type EffectInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never>;
|
|
4459
|
-
type StreamInvokeSource<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = {
|
|
4460
|
-
readonly id: InvokeLifecycleId;
|
|
4461
|
-
readonly stream: Source & ((context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown);
|
|
4462
|
-
readonly effect?: never;
|
|
4463
|
-
readonly after?: never;
|
|
4464
|
-
readonly logic?: never;
|
|
4465
|
-
readonly child?: never;
|
|
4466
|
-
readonly address?: never;
|
|
4467
|
-
readonly onSnapshot?: never;
|
|
4468
|
-
};
|
|
4469
|
-
type StreamSourceResult<Source extends (...args: ReadonlyArray<any>) => unknown> = ReturnType<Source> extends infer Result extends Stream.Stream<any, any, any> ? Result : never;
|
|
4470
|
-
type StreamElementHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeElementContext<States, Events, Emits, StateId, Stream.Success<StreamSourceResult<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
4471
|
-
type StreamDoneHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeDoneContext<States, Events, Emits, StateId, void, InputEvents, ParentEvents>>;
|
|
4472
|
-
type StreamFailureHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeFailureContext<States, Events, Emits, StateId, Stream.Error<StreamSourceResult<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
4473
|
-
type StreamInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<void, Stream.Error<StreamSourceResult<Source>>, Stream.Services<StreamSourceResult<Source>>, never>;
|
|
4474
|
-
type InvokeChannelIsNever<Value> = IsAny<Value> extends true ? false : [Value] extends [never] ? true : false;
|
|
4475
4457
|
type TransitionBranchRecordError<Message extends string, Key extends PropertyKey = never> = {
|
|
4476
4458
|
readonly "~effect/Machine/TransitionBranchRecordError": Message;
|
|
4477
4459
|
readonly key: Key;
|
|
4478
4460
|
};
|
|
4479
4461
|
type InvalidStaticTransitionBranchKey<Branches> = Extract<keyof Branches, "" | number | symbol>;
|
|
4480
4462
|
type ValidateTransitionBranchRecord<Branches> = [keyof Branches] extends [never] ? TransitionBranchRecordError<"Branch records must contain at least one branch"> : [InvalidStaticTransitionBranchKey<Branches>] extends [never] ? unknown : TransitionBranchRecordError<"Branch keys must be non-empty, non-index strings", InvalidStaticTransitionBranchKey<Branches>>;
|
|
4481
|
-
/**
|
|
4482
|
-
* Preserves inference for a state-owned invocation configuration.
|
|
4483
|
-
*
|
|
4484
|
-
* Use `effect` for one-shot work, `stream` for repeated values, `after` for a
|
|
4485
|
-
* cancellable timer, `logic` for reusable process logic, or `child` for a
|
|
4486
|
-
* complete child machine. Stream elements are handled by `onElement` before
|
|
4487
|
-
* the next element is pulled. `onDone` is required whenever the source can
|
|
4488
|
-
* complete, while `onFailure` is required only when the source has a typed
|
|
4489
|
-
* failure channel.
|
|
4490
|
-
*
|
|
4491
|
-
* This constructor is an identity at runtime, but preserves lifecycle callback
|
|
4492
|
-
* inference through published declarations. Effect and Stream factories run
|
|
4493
|
-
* when their owning state is entered and infer the owner context, value,
|
|
4494
|
-
* output, error, and service channels together without a return annotation.
|
|
4495
|
-
* Durations may be
|
|
4496
|
-
* supplied directly or derived from the owning state's entry context. Logic
|
|
4497
|
-
* invocations require both a lifecycle `id` and a typed communication
|
|
4498
|
-
* `address`. Child descriptors already own their identity, so `id` and
|
|
4499
|
-
* `address` must not be repeated.
|
|
4500
|
-
*
|
|
4501
|
-
* Inside `handle(...)`, the owning definition contextually supplies its public
|
|
4502
|
-
* input and declared parent protocols. Invocation sources and lifecycle handlers
|
|
4503
|
-
* can therefore send through `self` and `parent` without naming the definition.
|
|
4504
|
-
* The standard `Machine.invoke(...)` constructor preserves these contexts
|
|
4505
|
-
* directly; no intermediate definition method is required.
|
|
4506
|
-
*
|
|
4507
|
-
* ```ts
|
|
4508
|
-
* invoke: Machine.invoke({
|
|
4509
|
-
* id: "load",
|
|
4510
|
-
* effect: () =>
|
|
4511
|
-
* Effect.tryPromise({
|
|
4512
|
-
* try: () => fetch("/api/data").then((response) => response.json()),
|
|
4513
|
-
* catch: (cause) => new LoadError({ cause })
|
|
4514
|
-
* }),
|
|
4515
|
-
* onDone: (to) =>
|
|
4516
|
-
* to.full.Ready().resolve(({ output, target }) =>
|
|
4517
|
-
* target.from({ data: output })),
|
|
4518
|
-
* onFailure: (to) =>
|
|
4519
|
-
* to.full.Failed().resolve(({ error, target }) =>
|
|
4520
|
-
* target.from({ error }))
|
|
4521
|
-
* })
|
|
4522
|
-
* ```
|
|
4523
|
-
*
|
|
4524
|
-
* @category constructors
|
|
4525
|
-
* @since 0.9.0
|
|
4526
|
-
*/
|
|
4527
|
-
export declare const invoke: {
|
|
4528
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4529
|
-
readonly onDone: EffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4530
|
-
readonly onFailure: EffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4531
|
-
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
4532
|
-
"onDone must be omitted when the Effect output is never"
|
|
4533
|
-
] : InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
4534
|
-
"onFailure must be omitted when the Effect error is never"
|
|
4535
|
-
] : []): NoInfer<Config> & EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4536
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, never, unknown>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4537
|
-
readonly onDone: EffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4538
|
-
readonly onFailure?: never;
|
|
4539
|
-
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
4540
|
-
"onDone must be omitted when the Effect output is never"
|
|
4541
|
-
] : []): NoInfer<Config> & EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4542
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, unknown, unknown>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4543
|
-
readonly onDone?: never;
|
|
4544
|
-
readonly onFailure: EffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4545
|
-
}, ..._validation: InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
4546
|
-
"onFailure must be omitted when the Effect error is never"
|
|
4547
|
-
] : []): NoInfer<Config> & EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4548
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, never, unknown>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4549
|
-
readonly onDone?: never;
|
|
4550
|
-
readonly onFailure?: never;
|
|
4551
|
-
}): NoInfer<Config> & EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4552
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, unknown, any>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4553
|
-
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4554
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4555
|
-
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4556
|
-
}, ..._validation: InvokeChannelIsNever<Stream.Success<ReturnType<Source>>> extends true ? [
|
|
4557
|
-
"onElement must be omitted when the Stream element is never"
|
|
4558
|
-
] : InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4559
|
-
"onFailure must be omitted when the Stream error is never"
|
|
4560
|
-
] : []): NoInfer<Config> & StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4561
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, unknown, any>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4562
|
-
readonly onElement?: never;
|
|
4563
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4564
|
-
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4565
|
-
}, ..._validation: InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4566
|
-
"onFailure must be omitted when the Stream error is never"
|
|
4567
|
-
] : []): NoInfer<Config> & StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4568
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, never, any>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4569
|
-
readonly onElement?: never;
|
|
4570
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4571
|
-
readonly onFailure?: never;
|
|
4572
|
-
}): NoInfer<Config> & StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4573
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, never, any>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4574
|
-
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4575
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4576
|
-
readonly onFailure?: never;
|
|
4577
|
-
}): NoInfer<Config> & StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4578
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & Machine.TimerInvokeArgs<States, Events, Emits, StateId, InputEvents, ParentEvents>): NoInfer<Config> & Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<void, never, never, never>;
|
|
4579
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown, Address extends ChildAddress<never>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & {
|
|
4580
|
-
readonly logic: Source;
|
|
4581
|
-
} & Machine.LogicInvokeArgs<States, Events, Emits, StateId, Machine.LogicStateOf<ReturnType<Source>>, Machine.LogicEventOf<ReturnType<Source>>, Machine.LogicErrorOf<ReturnType<Source>>, Machine.LogicServicesOf<ReturnType<Source>>, Machine.LogicOutputOf<ReturnType<Source>>, Machine.LogicInitialErrorOf<ReturnType<Source>>, Address, Source, InputEvents, ParentEvents>, ..._validation: ReturnType<Source> extends {
|
|
4582
|
-
readonly initial: unknown;
|
|
4583
|
-
readonly run: unknown;
|
|
4584
|
-
} ? [] : [
|
|
4585
|
-
"logic factory must return Machine.Logic"
|
|
4586
|
-
]): NoInfer<Config> & Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Machine.LogicOutputOf<ReturnType<Source>>, Machine.LogicErrorOf<ReturnType<Source>>, Machine.LogicServicesOf<ReturnType<Source>>, Machine.LogicInitialErrorOf<ReturnType<Source>>>;
|
|
4587
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source, Address extends ChildAddress<never>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & {
|
|
4588
|
-
readonly logic: Source;
|
|
4589
|
-
} & Machine.LogicInvokeArgs<States, Events, Emits, StateId, Machine.LogicStateOf<Source>, Machine.LogicEventOf<Source>, Machine.LogicErrorOf<Source>, Machine.LogicServicesOf<Source>, Machine.LogicOutputOf<Source>, Machine.LogicInitialErrorOf<Source>, Address, Source, InputEvents, ParentEvents>, ..._validation: Source extends {
|
|
4590
|
-
readonly initial: unknown;
|
|
4591
|
-
readonly run: unknown;
|
|
4592
|
-
} ? [] : [
|
|
4593
|
-
"logic must implement Machine.Logic"
|
|
4594
|
-
]): NoInfer<Config> & Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Machine.LogicOutputOf<Source>, Machine.LogicErrorOf<Source>, Machine.LogicServicesOf<Source>, Machine.LogicInitialErrorOf<Source>>;
|
|
4595
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Child extends ChildMachine.Any, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & Machine.ChildInvokeArgs<States, Events, Emits, StateId, Child["machine"], Child, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Machine.Output<Child["machine"]>, Machine.Error<Child["machine"]> | ActionError<Machine.Services<Child["machine"]>>, Machine.Services<Child["machine"]>, Machine.InitialError<Child["machine"]>, Machine.Emit<Child["machine"]>, Machine.EventOf<Machine.ParentEvents<Child["machine"]>>>;
|
|
4596
|
-
};
|
|
4597
4463
|
/**
|
|
4598
4464
|
* Plans the initial state for a machine without executing machine commands.
|
|
4599
4465
|
*
|
|
@@ -4857,7 +4723,7 @@ export declare const child: <const Id extends string, M extends Machine.Any>(id:
|
|
|
4857
4723
|
* Creates a typed parent-local address for lower-level child process logic.
|
|
4858
4724
|
*
|
|
4859
4725
|
* The default event protocol is `never`; provide an event type before using
|
|
4860
|
-
* the address with `spawn`,
|
|
4726
|
+
* the address with `spawn`, a state-owned logic invocation, or `sendTo`.
|
|
4861
4727
|
*
|
|
4862
4728
|
* @category constructors
|
|
4863
4729
|
* @since 0.4.0
|
|
@@ -4877,7 +4743,8 @@ export declare const childAddress: <Event = never>(id: string) => ChildAddress<E
|
|
|
4877
4743
|
* This Effect requires a managed process runtime. A named child id must be
|
|
4878
4744
|
* unique for the current parent until that child stops.
|
|
4879
4745
|
*
|
|
4880
|
-
*
|
|
4746
|
+
* Use a state's `invoke: (from) => from.logic(...)` declaration for children
|
|
4747
|
+
* that start and stop with that state.
|
|
4881
4748
|
* @see {@link sendTo} for sending events to named children.
|
|
4882
4749
|
* @category runtime
|
|
4883
4750
|
* @since 0.4.0
|