@typeonce/effect-machine 0.16.0 → 0.17.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 +98 -106
- package/dist/Machine.d.ts +324 -367
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +61 -96
- package/dist/Machine.js.map +1 -1
- package/dist/internal/machine/atom.d.ts +7 -7
- package/dist/internal/machine/atom.d.ts.map +1 -1
- package/dist/internal/machine/atom.js.map +1 -1
- package/dist/internal/machine/cluster.d.ts +2 -2
- package/dist/internal/machine/cluster.d.ts.map +1 -1
- package/dist/internal/machine/cluster.js +6 -5
- package/dist/internal/machine/cluster.js.map +1 -1
- package/dist/internal/machine/executionPlan.d.ts.map +1 -1
- package/dist/internal/machine/executionPlan.js +10 -3
- package/dist/internal/machine/executionPlan.js.map +1 -1
- package/dist/internal/machine/machine.d.ts +8 -6
- package/dist/internal/machine/machine.d.ts.map +1 -1
- package/dist/internal/machine/machine.js +191 -25
- package/dist/internal/machine/machine.js.map +1 -1
- package/dist/internal/machine/planner.d.ts +19 -4
- package/dist/internal/machine/planner.d.ts.map +1 -1
- package/dist/internal/machine/planner.js +56 -20
- package/dist/internal/machine/planner.js.map +1 -1
- package/dist/internal/machine/stateDefinition.d.ts.map +1 -1
- package/dist/internal/machine/stateDefinition.js +14 -0
- package/dist/internal/machine/stateDefinition.js.map +1 -1
- package/dist/internal/machine/topology.d.ts +9 -0
- package/dist/internal/machine/topology.d.ts.map +1 -1
- package/dist/internal/machine/topology.js +16 -0
- package/dist/internal/machine/topology.js.map +1 -1
- package/dist/internal/testing/machine/finiteModel.d.ts.map +1 -1
- package/dist/internal/testing/machine/finiteModel.js +15 -20
- package/dist/internal/testing/machine/finiteModel.js.map +1 -1
- package/dist/internal/testing/machine/transitionCoverage.d.ts.map +1 -1
- package/dist/internal/testing/machine/transitionCoverage.js +2 -0
- package/dist/internal/testing/machine/transitionCoverage.js.map +1 -1
- package/dist/testing/MachineTest.d.ts +11 -11
- package/dist/testing/MachineTest.d.ts.map +1 -1
- package/dist/testing/MachineTest.js +5 -8
- package/dist/testing/MachineTest.js.map +1 -1
- package/dist/unstable/cluster/ClusterMachine.d.ts +2 -2
- package/dist/unstable/cluster/ClusterMachine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterMachine.js.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.d.ts +12 -12
- package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
- package/docs/agent-guide.md +144 -147
- package/package.json +1 -1
- package/src/Machine.ts +1118 -1178
- package/src/internal/machine/atom.ts +20 -15
- package/src/internal/machine/cluster.ts +14 -9
- package/src/internal/machine/executionPlan.ts +8 -3
- package/src/internal/machine/machine.ts +301 -40
- package/src/internal/machine/planner.ts +89 -27
- package/src/internal/machine/stateDefinition.ts +39 -0
- package/src/internal/machine/topology.ts +28 -0
- package/src/internal/testing/machine/finiteModel.ts +18 -21
- package/src/internal/testing/machine/transitionCoverage.ts +2 -0
- package/src/testing/MachineTest.ts +14 -11
- package/src/unstable/cluster/ClusterMachine.ts +8 -4
- package/src/unstable/reactivity/AtomMachine.ts +19 -12
package/dist/Machine.d.ts
CHANGED
|
@@ -41,6 +41,8 @@ declare const MachineTypeId: unique symbol;
|
|
|
41
41
|
declare const EventConstructionTypeId: unique symbol;
|
|
42
42
|
declare const EmittedEventConstructionTypeId: unique symbol;
|
|
43
43
|
declare const EventProtocolTypeId: unique symbol;
|
|
44
|
+
declare const ParentModeTypeId: unique symbol;
|
|
45
|
+
declare const ParentTypeId = "~effect/Machine/Parent";
|
|
44
46
|
declare const ChildMachineLogicTypeId: typeof internal.ChildMachineLogicTypeId;
|
|
45
47
|
/**
|
|
46
48
|
* Type identifier used for the synthetic event passed to startup lifecycle
|
|
@@ -127,16 +129,16 @@ export interface Machine<States extends Machine.StateSchemas, Events extends Rea
|
|
|
127
129
|
*/
|
|
128
130
|
readonly emittedEvents: Machine.EventProtocol<"emitted", Emits>;
|
|
129
131
|
/**
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
+
* Declared owning-machine protocol, or `undefined` when this machine does
|
|
133
|
+
* not communicate with its owner.
|
|
132
134
|
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
135
|
+
* Required parents make the machine child-only and expose a non-optional
|
|
136
|
+
* `parent` target to handlers. Optional parents keep root execution valid
|
|
137
|
+
* and expose `parent` as possibly absent.
|
|
136
138
|
*
|
|
137
|
-
* @since 0.
|
|
139
|
+
* @since 0.17.0
|
|
138
140
|
*/
|
|
139
|
-
readonly
|
|
141
|
+
readonly parent: Machine.ParentDeclarationOf<ParentEvents>;
|
|
140
142
|
/**
|
|
141
143
|
* Optional schema used to decode the machine input before initialization.
|
|
142
144
|
*
|
|
@@ -155,14 +157,6 @@ export interface Machine<States extends Machine.StateSchemas, Events extends Rea
|
|
|
155
157
|
readonly makeTargetBuilder: <Source extends Machine.StateNodeIdentifier<States>>(source: Source) => Machine.TargetBuilder<States, Source>;
|
|
156
158
|
/** @internal */
|
|
157
159
|
readonly handlers: Machine.StateConfigs<States, Events, Emits, UnhandledStates, Machine.TagOf<Events[number]>, E, R>;
|
|
158
|
-
/**
|
|
159
|
-
* Machine-bound equivalent of {@link invoke}. Both forms preserve this
|
|
160
|
-
* machine's public input and parent protocols in invocation callbacks;
|
|
161
|
-
* `Machine.invoke(...)` inside `handle(...)` is the canonical inline form.
|
|
162
|
-
*
|
|
163
|
-
* @since 0.11.0
|
|
164
|
-
*/
|
|
165
|
-
readonly invoke: Invoker<States, Events, Emits, InputEvents, ParentEvents>;
|
|
166
160
|
/** @internal */
|
|
167
161
|
readonly initial: (...args: [...Machine.InputArgs<Input>]) => Machine.InitialResult<States, InitialE, InitialR>;
|
|
168
162
|
/** @internal */
|
|
@@ -343,18 +337,51 @@ export interface MachineTarget<in Event> {
|
|
|
343
337
|
readonly sessionId: string;
|
|
344
338
|
readonly send: (event: Event) => Effect.Effect<void, StoppedError>;
|
|
345
339
|
}
|
|
340
|
+
/**
|
|
341
|
+
* Availability declared for an owning-machine target.
|
|
342
|
+
*
|
|
343
|
+
* @category models
|
|
344
|
+
* @since 0.17.0
|
|
345
|
+
*/
|
|
346
|
+
export type ParentMode = "required" | "optional";
|
|
347
|
+
/**
|
|
348
|
+
* Owning-machine protocol declared by {@link parent} or
|
|
349
|
+
* {@link optionalParent}.
|
|
350
|
+
*
|
|
351
|
+
* @category models
|
|
352
|
+
* @since 0.17.0
|
|
353
|
+
*/
|
|
354
|
+
export interface Parent<Mode extends ParentMode, Events extends ReadonlyArray<Machine.TaggedSchema>> {
|
|
355
|
+
readonly [ParentTypeId]: typeof ParentTypeId;
|
|
356
|
+
readonly mode: Mode;
|
|
357
|
+
readonly events: Machine.EventProtocol<"public", Events>;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Namespace containing type-level members associated with {@link Parent}.
|
|
361
|
+
*
|
|
362
|
+
* @category models
|
|
363
|
+
* @since 0.17.0
|
|
364
|
+
*/
|
|
365
|
+
export declare namespace Parent {
|
|
366
|
+
/** Any owning-machine protocol declaration. */
|
|
367
|
+
type Any = Parent<ParentMode, ReadonlyArray<Machine.TaggedSchema>>;
|
|
368
|
+
}
|
|
346
369
|
/**
|
|
347
370
|
* Machine targets available while evaluating machine behavior.
|
|
348
371
|
*
|
|
349
372
|
* @category models
|
|
350
373
|
* @since 0.12.0
|
|
351
374
|
*/
|
|
352
|
-
export
|
|
375
|
+
export type MachineReferences<InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>> = {
|
|
353
376
|
/** Target for the current machine. Sending queues a later mailbox event. */
|
|
354
377
|
readonly self: MachineTarget<Machine.EventInputOf<InputEvents>>;
|
|
378
|
+
} & (Machine.ParentModeOf<ParentEvents> extends "required" ? {
|
|
379
|
+
/** Required target for the machine that owns this child. */
|
|
380
|
+
readonly parent: MachineTarget<Machine.EventInputOf<ParentEvents>>;
|
|
381
|
+
} : Machine.ParentModeOf<ParentEvents> extends "optional" ? {
|
|
355
382
|
/** Target for the owning machine, or `undefined` when running as a root. */
|
|
356
383
|
readonly parent: MachineTarget<Machine.EventInputOf<ParentEvents>> | undefined;
|
|
357
|
-
}
|
|
384
|
+
} : {});
|
|
358
385
|
/**
|
|
359
386
|
* Synchronous commands available while a machine transition is being
|
|
360
387
|
* selected. Enqueuing only records statechart and machine operations; it never
|
|
@@ -446,6 +473,8 @@ type ExcludeCompatibleRuntime<Requirements, Events, Emits> = Requirements extend
|
|
|
446
473
|
type IncompatibleRuntime<Requirements, Events, Emits> = Requirements extends Runtime.Requirement<infer RequiredEvents, infer RequiredEmits> ? IsAny<Requirements> extends true ? never : [RequiredEvents] extends [Events] ? [RequiredEmits] extends [Emits] ? never : Requirements : Requirements : never;
|
|
447
474
|
declare const InvokeTypeId: typeof internal.InvokeTypeId;
|
|
448
475
|
declare const TransitionTypeId: typeof internal.TransitionTypeId;
|
|
476
|
+
declare const TransitionBuilderTypeId: unique symbol;
|
|
477
|
+
declare const InitialBuilderTypeId: unique symbol;
|
|
449
478
|
type StateDefinitionError<Message extends string, Path extends PropertyKey = never, Details extends PropertyKey = never> = {
|
|
450
479
|
readonly "~effect/Machine/DefinitionError": Message;
|
|
451
480
|
readonly path: Path;
|
|
@@ -486,16 +515,21 @@ type ValidateStateNodeConfig<Node extends Machine.StateNodeConfig, Path extends
|
|
|
486
515
|
type ValidateOutputSchema<Node> = "output" extends keyof Node ? Node extends {
|
|
487
516
|
readonly output: Schema.Top;
|
|
488
517
|
} ? unknown : StateDefinitionError<"State output must be a schema"> : unknown;
|
|
518
|
+
type SelectorChildKey<Children extends Machine.StateSchemas> = ActiveStateKey<Children> | ChoiceStateKey<Children>;
|
|
519
|
+
type ValidateInitialSelectorChild<Children extends Machine.StateSchemas, Path extends PropertyKey> = "initial" extends SelectorChildKey<Children> ? StateDefinitionError<"Active and choice child states cannot use the reserved target selector key \"initial\"", StateDefinitionPath<Extract<Path, string>, "initial">, "initial"> : unknown;
|
|
520
|
+
type ValidateWithSelectorChild<Node extends Machine.StateNodeConfig, Children extends Machine.StateSchemas, Path extends PropertyKey> = Node extends {
|
|
521
|
+
readonly schema: Machine.TaggedSchema;
|
|
522
|
+
} ? "with" extends SelectorChildKey<Children> ? StateDefinitionError<"Schema-backed compound child states cannot use the reserved local target selector key \"with\"", StateDefinitionPath<Extract<Path, string>, "with">, "with"> : unknown : unknown;
|
|
489
523
|
type ValidateStateNodeWithChildren<Node extends Machine.StateNodeConfig, Children, Path extends PropertyKey> = Children extends Machine.StateSchemas ? Node extends {
|
|
490
524
|
readonly type: "final";
|
|
491
525
|
} ? StateDefinitionError<"Final states cannot declare child states"> : Node extends {
|
|
492
526
|
readonly type: "parallel";
|
|
493
|
-
} ? "initial" extends keyof Node ? StateDefinitionError<"Parallel states cannot declare an initial child"> : {
|
|
527
|
+
} ? ValidateInitialSelectorChild<Children, Path> & ("initial" extends keyof Node ? StateDefinitionError<"Parallel states cannot declare an initial child"> : {
|
|
494
528
|
readonly states: ValidateStateTree<Children, true, Extract<Path, string>>;
|
|
495
|
-
} & ValidateOutputSchema<Node> : "output" extends keyof Node ? StateDefinitionError<"Only final and parallel states can declare output"> : ValidateCompoundStateNode<Node, Children, Path> : StateDefinitionError<"Child states must be a state tree">;
|
|
529
|
+
} & ValidateOutputSchema<Node>) : "output" extends keyof Node ? StateDefinitionError<"Only final and parallel states can declare output"> : ValidateCompoundStateNode<Node, Children, Path> : StateDefinitionError<"Child states must be a state tree">;
|
|
496
530
|
type ValidateCompoundStateNode<Node extends Machine.StateNodeConfig, Children extends Machine.StateSchemas, Path extends PropertyKey> = Node extends {
|
|
497
531
|
readonly initial: infer Initial;
|
|
498
|
-
} ? Initial extends ActiveStateKey<Children> | ChoiceStateKey<Children> ? {
|
|
532
|
+
} ? Initial extends ActiveStateKey<Children> | ChoiceStateKey<Children> ? ValidateInitialSelectorChild<Children, Path> & ValidateWithSelectorChild<Node, Children, Path> & {
|
|
499
533
|
readonly states: ValidateStateTree<Children, true, Extract<Path, string>>;
|
|
500
534
|
} : StateDefinitionError<"Compound initial must be one of its direct child keys", Path, Extract<Initial, PropertyKey>> : StateDefinitionError<"Compound states must declare an initial child", Path>;
|
|
501
535
|
type ValidateStateNodeWithoutChildren<Node extends Machine.StateNodeConfig> = "initial" extends keyof Node ? StateDefinitionError<"Atomic states cannot declare an initial child"> : Node extends {
|
|
@@ -1407,6 +1441,20 @@ export declare namespace Machine {
|
|
|
1407
1441
|
readonly inputEvents: InputEvents;
|
|
1408
1442
|
readonly parentEvents: ParentEvents;
|
|
1409
1443
|
}
|
|
1444
|
+
/** @internal Carries parent availability without widening the event tuple. */
|
|
1445
|
+
type ParentEventSchemas<Mode extends ParentMode, Events extends ReadonlyArray<TaggedSchema>> = Events & {
|
|
1446
|
+
readonly [ParentModeTypeId]: Mode;
|
|
1447
|
+
};
|
|
1448
|
+
/** Extracts the parent availability encoded in a machine event tuple. */
|
|
1449
|
+
type ParentModeOf<Events extends ReadonlyArray<TaggedSchema>> = Events extends {
|
|
1450
|
+
readonly [ParentModeTypeId]: infer Mode extends ParentMode;
|
|
1451
|
+
} ? Mode : Events extends readonly [] ? "none" : "optional";
|
|
1452
|
+
/** Extracts the event schemas declared by an owning-machine protocol. */
|
|
1453
|
+
type ParentEventsOf<Declaration extends Parent.Any | undefined> = Declaration extends Parent<infer Mode, infer Events> ? ParentEventSchemas<Mode, Events> : readonly [];
|
|
1454
|
+
/** Extracts the owning-machine declaration carried by a machine. */
|
|
1455
|
+
type ParentDeclarationOf<Events extends ReadonlyArray<TaggedSchema>> = ParentModeOf<Events> extends infer Mode ? Mode extends ParentMode ? Parent<Mode, Events> : undefined : never;
|
|
1456
|
+
/** Constraint applied to APIs that create an independent root runtime. */
|
|
1457
|
+
type RootCompatible<Events extends ReadonlyArray<TaggedSchema>> = ParentModeOf<Events> extends "required" ? never : unknown;
|
|
1410
1458
|
/**
|
|
1411
1459
|
* Any schema-first machine.
|
|
1412
1460
|
*
|
|
@@ -1427,7 +1475,7 @@ export declare namespace Machine {
|
|
|
1427
1475
|
readonly events: EventProtocol.Any<"public">;
|
|
1428
1476
|
readonly internalEvents: EventProtocol.Any<"internal">;
|
|
1429
1477
|
readonly emittedEvents: EventProtocol.Any<"emitted">;
|
|
1430
|
-
readonly
|
|
1478
|
+
readonly parent: Parent.Any | undefined;
|
|
1431
1479
|
readonly input: Schema.Top | undefined;
|
|
1432
1480
|
readonly id: string | undefined;
|
|
1433
1481
|
/** @internal */
|
|
@@ -1437,8 +1485,6 @@ export declare namespace Machine {
|
|
|
1437
1485
|
/** @internal */
|
|
1438
1486
|
readonly handlers: any;
|
|
1439
1487
|
/** @internal */
|
|
1440
|
-
readonly invoke: any;
|
|
1441
|
-
/** @internal */
|
|
1442
1488
|
readonly initial: any;
|
|
1443
1489
|
/** @internal */
|
|
1444
1490
|
readonly initialDefinition: InitialDefinition;
|
|
@@ -1538,6 +1584,8 @@ export declare namespace Machine {
|
|
|
1538
1584
|
type InputEvents<M extends Any> = M[typeof MachineTypeId]["inputEvents"];
|
|
1539
1585
|
/** Extracts the public input protocol required from an owning machine. */
|
|
1540
1586
|
type ParentEvents<M extends Any> = M[typeof MachineTypeId]["parentEvents"];
|
|
1587
|
+
/** Extracts whether a machine requires or optionally accepts an owner. */
|
|
1588
|
+
type ParentAvailability<M extends Any> = ParentModeOf<M[typeof MachineTypeId]["parentEvents"]>;
|
|
1541
1589
|
/** Extracts an internal event schema tuple from the complete and public protocols. */
|
|
1542
1590
|
type InternalEventSchemas<Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>> = Events extends readonly [
|
|
1543
1591
|
...InputEvents,
|
|
@@ -2054,6 +2102,7 @@ export declare namespace Machine {
|
|
|
2054
2102
|
readonly source: SourcePath;
|
|
2055
2103
|
readonly trigger: TransitionTrigger<EventTag>;
|
|
2056
2104
|
readonly reenter: boolean;
|
|
2105
|
+
readonly acceptance: TransitionAcceptance;
|
|
2057
2106
|
readonly branches: ReadonlyArray<TransitionBranch<TargetPath>>;
|
|
2058
2107
|
}
|
|
2059
2108
|
/**
|
|
@@ -2658,6 +2707,22 @@ export declare namespace Machine {
|
|
|
2658
2707
|
interface NoTarget {
|
|
2659
2708
|
readonly [Topology.NoTargetTypeId]: typeof Topology.NoTargetTypeId;
|
|
2660
2709
|
}
|
|
2710
|
+
/**
|
|
2711
|
+
* Opaque result returned when a declinable transition does not accept the
|
|
2712
|
+
* current event or lifecycle outcome.
|
|
2713
|
+
*
|
|
2714
|
+
* Declining selects no transition and discards operations enqueued by that
|
|
2715
|
+
* resolver. Hierarchical event and eventless dispatch continues with the
|
|
2716
|
+
* next eligible ancestor candidate.
|
|
2717
|
+
*
|
|
2718
|
+
* @category models
|
|
2719
|
+
* @since 0.17.0
|
|
2720
|
+
*/
|
|
2721
|
+
interface Declined {
|
|
2722
|
+
readonly [Topology.DeclinedTypeId]: typeof Topology.DeclinedTypeId;
|
|
2723
|
+
}
|
|
2724
|
+
/** Static acceptance contract of one transition definition. */
|
|
2725
|
+
type TransitionAcceptance = "required" | "declinable";
|
|
2661
2726
|
/**
|
|
2662
2727
|
* Transition instruction that restores a history pseudo-state's parent.
|
|
2663
2728
|
*
|
|
@@ -2821,11 +2886,12 @@ export declare namespace Machine {
|
|
|
2821
2886
|
readonly path: Path;
|
|
2822
2887
|
readonly "~effect/Machine/TargetSelectionResult"?: Types.Covariant<Result>;
|
|
2823
2888
|
}
|
|
2824
|
-
type
|
|
2889
|
+
type SelectionValue<Builder, Path extends string, Kind extends Topology.TargetSelectionKind = "state"> = TargetSelection<Builder, Path, Kind>;
|
|
2890
|
+
type SelectionMethod<Builder, Path extends string, Kind extends Topology.TargetSelectionKind = "state"> = () => SelectionValue<Builder, Path, Kind>;
|
|
2825
2891
|
type InitialSelectionMethod<Builder, Path extends string> = Builder extends {
|
|
2826
2892
|
readonly initial: infer Initial;
|
|
2827
2893
|
} ? {
|
|
2828
|
-
readonly initial:
|
|
2894
|
+
readonly initial: SelectionValue<Initial, Path, "initial">;
|
|
2829
2895
|
} : {};
|
|
2830
2896
|
type SelectionTreeWithPrefix<AllStates extends StateSchemas, States extends StateSchemas, Prefix extends string, Scope extends "local" | "branch", Builder> = {
|
|
2831
2897
|
readonly [Key in Extract<ActiveStateKey<States> | ChoiceStateKey<States>, keyof Builder>]: SelectionNode<AllStates, States[Key], JoinPath<Prefix, Key>, Scope, Builder[Key]>;
|
|
@@ -2843,27 +2909,32 @@ export declare namespace Machine {
|
|
|
2843
2909
|
readonly [Key in Root]: SelectionNode<States, States[Key], Key, "branch", BranchTargetBuilder<States, Source>[Key]>;
|
|
2844
2910
|
} : {} : {};
|
|
2845
2911
|
type LocalTargetSelector<States extends StateSchemas, Source extends StateNodeIdentifier<States>> = NearestCompoundScope<States, Source> extends infer Scope extends StateIdentifier<States> ? ChildrenOf<States, Scope> extends infer Children extends StateSchemas ? LocalTargetBuilder<States, Source> extends infer Builder ? SelectionTreeWithPrefix<States, Children, Scope, "local", Builder> & ("with" extends keyof Builder ? {
|
|
2846
|
-
readonly with:
|
|
2912
|
+
readonly with: SelectionValue<Builder["with"], Scope>;
|
|
2847
2913
|
} : {}) : {} : {} : {};
|
|
2848
2914
|
type HistorySelectionTree<AllStates extends StateSchemas, States extends StateSchemas, Prefix extends string, Builder> = {
|
|
2849
|
-
readonly [Key in Extract<HistoryContainingKey<States>, keyof Builder>]: States[Key] extends HistoryStateNodeConfig ?
|
|
2915
|
+
readonly [Key in Extract<HistoryContainingKey<States>, keyof Builder>]: States[Key] extends HistoryStateNodeConfig ? SelectionValue<Builder[Key], JoinPath<Prefix, Key>, "history"> : States[Key] extends {
|
|
2850
2916
|
readonly states: infer Children extends StateSchemas;
|
|
2851
2917
|
} ? HistorySelectionTree<AllStates, Children, JoinPath<Prefix, Key>, Builder[Key]> : never;
|
|
2852
2918
|
};
|
|
2853
|
-
/**
|
|
2919
|
+
/**
|
|
2920
|
+
* Definition-time topology selector available to an ordinary transition.
|
|
2921
|
+
* Topology-only instructions (`none`, declared `initial` and history
|
|
2922
|
+
* selections, and `local.with`) are values. State and choice destinations
|
|
2923
|
+
* remain callable selection methods.
|
|
2924
|
+
*/
|
|
2854
2925
|
interface TargetSelector<States extends StateSchemas, Source extends StateNodeIdentifier<States>> {
|
|
2855
|
-
readonly none:
|
|
2926
|
+
readonly none: SelectionValue<TargetBuilder<States, Source>["none"], never, "none">;
|
|
2856
2927
|
readonly local: LocalTargetSelector<States, Source>;
|
|
2857
2928
|
readonly branch: BranchTargetSelector<States, Source>;
|
|
2858
2929
|
readonly full: FullTargetSelector<States>;
|
|
2859
2930
|
readonly history: HistorySelectionTree<States, States, "", HistoryTargetBuilder<States>>;
|
|
2860
2931
|
}
|
|
2861
2932
|
/** Definition-time selector that can choose only a valid top-level initial entry. */
|
|
2862
|
-
type
|
|
2933
|
+
type InitialTargetSelector<States extends StateSchemas> = {
|
|
2863
2934
|
readonly [Key in Extract<ActiveStateKey<States>, keyof InitialBuilder<States>>]: States[Key] extends {
|
|
2864
2935
|
readonly states: StateSchemas;
|
|
2865
2936
|
} ? {
|
|
2866
|
-
readonly initial:
|
|
2937
|
+
readonly initial: SelectionValue<InitialBuilder<States>[Key], Key, "initial">;
|
|
2867
2938
|
} : SelectionMethod<InitialBuilder<States>[Key], Key>;
|
|
2868
2939
|
};
|
|
2869
2940
|
/**
|
|
@@ -2872,7 +2943,7 @@ export declare namespace Machine {
|
|
|
2872
2943
|
* @category models
|
|
2873
2944
|
* @since 0.4.0
|
|
2874
2945
|
*/
|
|
2875
|
-
|
|
2946
|
+
type HandlerContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, EventTag extends TagOf<Events[number]>, E, R, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
|
|
2876
2947
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2877
2948
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2878
2949
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
@@ -2886,38 +2957,38 @@ export declare namespace Machine {
|
|
|
2886
2957
|
* @since 0.4.0
|
|
2887
2958
|
*/
|
|
2888
2959
|
readonly target: TargetBuilder<States, StateId>;
|
|
2889
|
-
}
|
|
2960
|
+
};
|
|
2890
2961
|
/**
|
|
2891
2962
|
* Context passed to an entry or exit state handler.
|
|
2892
2963
|
*
|
|
2893
2964
|
* @category models
|
|
2894
2965
|
* @since 0.4.0
|
|
2895
2966
|
*/
|
|
2896
|
-
|
|
2967
|
+
type StateActionContext<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 []> = MachineReferences<InputEvents, ParentEvents> & {
|
|
2897
2968
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2898
2969
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2899
2970
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2900
2971
|
readonly event: LifecycleEvent<Events>;
|
|
2901
|
-
}
|
|
2972
|
+
};
|
|
2902
2973
|
/**
|
|
2903
2974
|
* Context passed to a function-valued invocation source.
|
|
2904
2975
|
*
|
|
2905
2976
|
* @category models
|
|
2906
2977
|
* @since 0.4.0
|
|
2907
2978
|
*/
|
|
2908
|
-
|
|
2979
|
+
type InvokeContext<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 []> = MachineReferences<InputEvents, ParentEvents> & {
|
|
2909
2980
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2910
2981
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2911
2982
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2912
2983
|
readonly event: LifecycleEvent<Events>;
|
|
2913
|
-
}
|
|
2984
|
+
};
|
|
2914
2985
|
/**
|
|
2915
2986
|
* Context passed to an invocation's active-snapshot transition.
|
|
2916
2987
|
*
|
|
2917
2988
|
* @category models
|
|
2918
2989
|
* @since 0.4.0
|
|
2919
2990
|
*/
|
|
2920
|
-
|
|
2991
|
+
type InvokeSnapshotContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, State, Error, Output, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
|
|
2921
2992
|
readonly id: string;
|
|
2922
2993
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2923
2994
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
@@ -2926,14 +2997,14 @@ export declare namespace Machine {
|
|
|
2926
2997
|
readonly snapshot: Extract<RuntimeSnapshot<State, Error, Output>, {
|
|
2927
2998
|
readonly status: "active";
|
|
2928
2999
|
}>;
|
|
2929
|
-
}
|
|
3000
|
+
};
|
|
2930
3001
|
/**
|
|
2931
3002
|
* Context passed to an invocation's successful completion transition.
|
|
2932
3003
|
*
|
|
2933
3004
|
* @category models
|
|
2934
3005
|
* @since 0.4.0
|
|
2935
3006
|
*/
|
|
2936
|
-
|
|
3007
|
+
type InvokeDoneContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Output, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
|
|
2937
3008
|
readonly id: string;
|
|
2938
3009
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2939
3010
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
@@ -2941,9 +3012,9 @@ export declare namespace Machine {
|
|
|
2941
3012
|
readonly snapshot: Snapshot<States>;
|
|
2942
3013
|
readonly target: TargetBuilder<States, StateId>;
|
|
2943
3014
|
readonly output: Output;
|
|
2944
|
-
}
|
|
3015
|
+
};
|
|
2945
3016
|
/** Context passed to a Stream invocation's element transition. */
|
|
2946
|
-
|
|
3017
|
+
type InvokeElementContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Element, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
|
|
2947
3018
|
readonly id: string;
|
|
2948
3019
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2949
3020
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
@@ -2951,9 +3022,9 @@ export declare namespace Machine {
|
|
|
2951
3022
|
readonly snapshot: Snapshot<States>;
|
|
2952
3023
|
readonly target: TargetBuilder<States, StateId>;
|
|
2953
3024
|
readonly element: Element;
|
|
2954
|
-
}
|
|
3025
|
+
};
|
|
2955
3026
|
/** Context passed to an invocation typed-failure transition. */
|
|
2956
|
-
|
|
3027
|
+
type InvokeFailureContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Error, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
|
|
2957
3028
|
readonly id: string;
|
|
2958
3029
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2959
3030
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
@@ -2961,14 +3032,14 @@ export declare namespace Machine {
|
|
|
2961
3032
|
readonly snapshot: Snapshot<States>;
|
|
2962
3033
|
readonly target: TargetBuilder<States, StateId>;
|
|
2963
3034
|
readonly error: Error;
|
|
2964
|
-
}
|
|
3035
|
+
};
|
|
2965
3036
|
/**
|
|
2966
3037
|
* Context passed to an eventless transition handler.
|
|
2967
3038
|
*
|
|
2968
3039
|
* @category models
|
|
2969
3040
|
* @since 0.4.0
|
|
2970
3041
|
*/
|
|
2971
|
-
|
|
3042
|
+
type AlwaysContext<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 []> = MachineReferences<InputEvents, ParentEvents> & {
|
|
2972
3043
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2973
3044
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2974
3045
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
@@ -2983,14 +3054,14 @@ export declare namespace Machine {
|
|
|
2983
3054
|
* @since 0.4.0
|
|
2984
3055
|
*/
|
|
2985
3056
|
readonly target: TargetBuilder<States, StateId>;
|
|
2986
|
-
}
|
|
3057
|
+
};
|
|
2987
3058
|
/**
|
|
2988
3059
|
* Context passed to a state completion transition handler.
|
|
2989
3060
|
*
|
|
2990
3061
|
* @category models
|
|
2991
3062
|
* @since 0.4.0
|
|
2992
3063
|
*/
|
|
2993
|
-
|
|
3064
|
+
type DoneContext<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 []> = MachineReferences<InputEvents, ParentEvents> & {
|
|
2994
3065
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2995
3066
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2996
3067
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
@@ -3006,16 +3077,16 @@ export declare namespace Machine {
|
|
|
3006
3077
|
* @since 0.4.0
|
|
3007
3078
|
*/
|
|
3008
3079
|
readonly target: TargetBuilder<States, StateId>;
|
|
3009
|
-
}
|
|
3080
|
+
};
|
|
3010
3081
|
/** Context passed to a transient choice resolver. There is no `state` value. */
|
|
3011
|
-
|
|
3082
|
+
type ChoiceContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, ChoiceId extends ChoiceIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = MachineReferences<InputEvents, ParentEvents> & {
|
|
3012
3083
|
readonly containingState: StateByIdentifier<States, Extract<ImmediateParentStateIdentifier<ChoiceId>, StateIdentifier<States>>>;
|
|
3013
3084
|
readonly ancestors: {
|
|
3014
3085
|
readonly [Parent in Extract<ParentStateIdentifier<ChoiceId>, ValuedStateIdentifier<States>>]: StateByIdentifier<States, Parent>;
|
|
3015
3086
|
};
|
|
3016
3087
|
readonly event: LifecycleEvent<Events>;
|
|
3017
3088
|
readonly target: TargetBuilder<States, ChoiceId>;
|
|
3018
|
-
}
|
|
3089
|
+
};
|
|
3019
3090
|
/**
|
|
3020
3091
|
* Context passed to a final state output function.
|
|
3021
3092
|
*
|
|
@@ -3144,7 +3215,7 @@ export declare namespace Machine {
|
|
|
3144
3215
|
* @category utility types
|
|
3145
3216
|
* @since 0.4.0
|
|
3146
3217
|
*/
|
|
3147
|
-
type EventTransitionReturn<Transition> = Transition extends {
|
|
3218
|
+
type EventTransitionReturn<Transition> = Transition extends (...args: any) => infer Authored ? Authored extends TransitionBuilderEvidence<infer Result, any> ? Result : never : Transition extends {
|
|
3148
3219
|
readonly resolve?: infer Resolve;
|
|
3149
3220
|
} ? NonNullable<Resolve> extends (...args: any) => infer Ret ? Ret : never : never;
|
|
3150
3221
|
/**
|
|
@@ -3310,32 +3381,15 @@ export declare namespace Machine {
|
|
|
3310
3381
|
* @since 0.4.0
|
|
3311
3382
|
*/
|
|
3312
3383
|
type ConfigServices<Config> = Effect.Services<EventHandlerReturn<Config>> | Effect.Services<AlwaysReturn<Config>> | Effect.Services<DoneReturn<Config>> | Effect.Services<StateActionReturn<Config, "entry">> | Effect.Services<StateActionReturn<Config, "exit">> | Effect.Services<HistoryDefaultReturn<Config>> | Effect.Services<ChoiceReturn<Config>> | InvokeRequirements<Config>;
|
|
3313
|
-
/** Type evidence retained by
|
|
3314
|
-
interface TransitionTyped<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean> {
|
|
3384
|
+
/** Type evidence retained by an authored transition without affecting runtime data. */
|
|
3385
|
+
interface TransitionTyped<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Acceptance extends TransitionAcceptance = "required"> {
|
|
3315
3386
|
readonly [TransitionTypeId]: {
|
|
3316
3387
|
readonly owner: Types.Covariant<readonly [States, Events, Emits, StateId, Context]>;
|
|
3317
|
-
|
|
3318
|
-
}
|
|
3319
|
-
/** Type evidence for a targetless transition reusable in every owning context. */
|
|
3320
|
-
interface TargetlessTransitionTyped {
|
|
3321
|
-
readonly [TransitionTypeId]: {
|
|
3322
|
-
readonly targetless: true;
|
|
3388
|
+
readonly acceptance: Types.Covariant<Acceptance>;
|
|
3323
3389
|
};
|
|
3324
3390
|
}
|
|
3325
3391
|
/** The only transition value accepted by machine handler APIs. */
|
|
3326
|
-
type TransitionConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean = false> =
|
|
3327
|
-
readonly reenter?: [Reenter] extends [true] ? boolean : never;
|
|
3328
|
-
};
|
|
3329
|
-
/** Direct shorthand for a non-reentering targetless transition. */
|
|
3330
|
-
interface TargetlessTransitionResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context> {
|
|
3331
|
-
<ResolvedContext extends Omit<Context, "target">>(context: ResolvedContext, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>): undefined;
|
|
3332
|
-
}
|
|
3333
|
-
type TargetlessTransitionInput<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context> = {
|
|
3334
|
-
readonly target: TargetlessSelector;
|
|
3335
|
-
readonly resolve?: TargetlessTransitionResolver<Events, Emits, Context>;
|
|
3336
|
-
readonly branches?: never;
|
|
3337
|
-
readonly reenter?: never;
|
|
3338
|
-
};
|
|
3392
|
+
type TransitionConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean = false, Acceptance extends TransitionAcceptance = "required"> = TransitionBuilderInput<States, Events, Emits, StateId, Context, Reenter, Acceptance>;
|
|
3339
3393
|
type SelectionBuilder<Selection> = Selection extends TargetSelection<infer Builder, any, any> ? Builder : never;
|
|
3340
3394
|
type SelectionKind<Selection> = Selection extends TargetSelection<any, any, infer Kind> ? Kind : never;
|
|
3341
3395
|
type SelectionPath<Selection> = Selection extends TargetSelection<any, infer Path, any> ? Path : never;
|
|
@@ -3343,16 +3397,18 @@ export declare namespace Machine {
|
|
|
3343
3397
|
readonly from: (...args: any) => infer Result;
|
|
3344
3398
|
} ? Result : never);
|
|
3345
3399
|
type SelectedTargetResult<Selection> = SelectionBuilder<Selection> extends infer Builder ? TargetBuilderResult<Builder> : never;
|
|
3400
|
+
type SelectionSupportsDefaultConstruction<Selection> = SelectionKind<Selection> extends "none" ? true : SelectionBuilder<Selection> extends {
|
|
3401
|
+
readonly from: (...args: infer Args) => any;
|
|
3402
|
+
} ? [] extends Args ? true : false : SelectionBuilder<Selection> extends (...args: infer Args) => any ? [] extends Args ? true : false : false;
|
|
3346
3403
|
type TransitionResolveContext<Context, Selection> = Omit<Context, "target"> & (SelectionKind<Selection> extends "none" ? {} : {
|
|
3347
3404
|
readonly target: SelectionBuilder<Selection>;
|
|
3348
3405
|
});
|
|
3406
|
+
/** Context capability available only to explicitly declinable resolvers. */
|
|
3407
|
+
interface DeclineCapability {
|
|
3408
|
+
readonly decline: () => Declined;
|
|
3409
|
+
}
|
|
3349
3410
|
type TransitionResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context, Selection> = (context: TransitionResolveContext<Context, Selection>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined;
|
|
3350
|
-
type
|
|
3351
|
-
readonly target: (to: TargetSelector<States, StateId>) => Selection;
|
|
3352
|
-
readonly resolve?: TransitionResolver<Events, Emits, Context, Selection>;
|
|
3353
|
-
readonly branches?: never;
|
|
3354
|
-
readonly reenter?: Reenter;
|
|
3355
|
-
};
|
|
3411
|
+
type DeclinableTransitionResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context, Selection> = (context: TransitionResolveContext<Context, Selection> & DeclineCapability, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => (SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined) | Declined;
|
|
3356
3412
|
/** One named destination declared by a branching transition. */
|
|
3357
3413
|
interface TransitionBranchInput<Selection extends TargetSelection<any, any, any> = TargetSelection<any, any, any>> {
|
|
3358
3414
|
readonly target: Selection;
|
|
@@ -3387,24 +3443,82 @@ export declare namespace Machine {
|
|
|
3387
3443
|
readonly select: BranchSelectors<Branches>;
|
|
3388
3444
|
};
|
|
3389
3445
|
type TransitionBranchesResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context, Branches extends Readonly<Record<string, TransitionBranchInput>>> = (context: TransitionBranchesResolveContext<Context, Branches>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => BranchSelectionResult<Branches>;
|
|
3390
|
-
type
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
readonly
|
|
3400
|
-
|
|
3401
|
-
readonly reenter?:
|
|
3446
|
+
type DeclinableTransitionBranchesResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context, Branches extends Readonly<Record<string, TransitionBranchInput>>> = (context: TransitionBranchesResolveContext<Context, Branches> & DeclineCapability, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => BranchSelectionResult<Branches> | Declined;
|
|
3447
|
+
/** @internal Type evidence retained by a transition authored through its bound selector. */
|
|
3448
|
+
interface TransitionBuilderEvidence<out Result, out Acceptance extends TransitionAcceptance> {
|
|
3449
|
+
readonly [TransitionBuilderTypeId]: {
|
|
3450
|
+
readonly result: Types.Covariant<Result>;
|
|
3451
|
+
readonly acceptance: Types.Covariant<Acceptance>;
|
|
3452
|
+
};
|
|
3453
|
+
}
|
|
3454
|
+
type TransitionReenterOption<Reenter extends boolean> = [Reenter] extends [true] ? {
|
|
3455
|
+
readonly reenter?: boolean;
|
|
3456
|
+
} : {
|
|
3457
|
+
readonly reenter?: never;
|
|
3458
|
+
};
|
|
3459
|
+
type TransitionRequiredOptions<Reenter extends boolean> = TransitionReenterOption<Reenter> & {
|
|
3460
|
+
readonly declinable?: false;
|
|
3461
|
+
};
|
|
3462
|
+
type TransitionDeclinableOptions<Reenter extends boolean> = TransitionReenterOption<Reenter> & {
|
|
3463
|
+
readonly declinable: true;
|
|
3464
|
+
};
|
|
3465
|
+
type BuiltTransition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Result, Acceptance extends TransitionAcceptance> = TransitionTyped<States, Events, Emits, StateId, Context, Reenter, Acceptance> & TransitionBuilderEvidence<Result, Acceptance>;
|
|
3466
|
+
interface TransitionResolveRequired<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Selection extends TargetSelection<any, any, any>> {
|
|
3467
|
+
(resolve: TransitionResolver<Events, Emits, Context, Selection>, options?: TransitionRequiredOptions<Reenter>): BuiltTransition<States, Events, Emits, StateId, Context, Reenter, SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined, "required">;
|
|
3468
|
+
}
|
|
3469
|
+
interface TransitionResolveDeclinable<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Selection extends TargetSelection<any, any, any>> {
|
|
3470
|
+
(resolve: DeclinableTransitionResolver<Events, Emits, Context, Selection>, options: TransitionDeclinableOptions<Reenter>): BuiltTransition<States, Events, Emits, StateId, Context, Reenter, (SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined) | Declined, "declinable">;
|
|
3471
|
+
}
|
|
3472
|
+
/** A selected transition target with target-specific resolver operations. */
|
|
3473
|
+
type TransitionTarget<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Acceptance extends TransitionAcceptance, Selection extends TargetSelection<any, any, any>> = Selection & (SelectionSupportsDefaultConstruction<Selection> extends true ? BuiltTransition<States, Events, Emits, StateId, Context, Reenter, SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined, "required"> : {}) & {
|
|
3474
|
+
readonly resolve: TransitionResolveRequired<States, Events, Emits, StateId, Context, Reenter, Selection> & ("declinable" extends Acceptance ? TransitionResolveDeclinable<States, Events, Emits, StateId, Context, Reenter, Selection> : {});
|
|
3475
|
+
} & ([Reenter] extends [true] ? SelectionSupportsDefaultConstruction<Selection> extends true ? {
|
|
3476
|
+
readonly reenter: () => BuiltTransition<States, Events, Emits, StateId, Context, Reenter, SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined, "required">;
|
|
3477
|
+
} : {} : {});
|
|
3478
|
+
/** @internal Type evidence retained by a machine initial-entry declaration. */
|
|
3479
|
+
interface InitialBuilderEvidence<out Selection> {
|
|
3480
|
+
readonly [InitialBuilderTypeId]: Types.Covariant<Selection>;
|
|
3481
|
+
}
|
|
3482
|
+
/** A selected machine initial entry with its exact resolver target. */
|
|
3483
|
+
type InitialTransitionTarget<Input, Selection extends TargetSelection<any, any, any>> = Selection & (SelectionSupportsDefaultConstruction<Selection> extends true ? InitialBuilderEvidence<Selection> : {}) & {
|
|
3484
|
+
readonly resolve: (resolve: (context: {
|
|
3485
|
+
readonly input: Input;
|
|
3486
|
+
readonly target: SelectionBuilder<Selection>;
|
|
3487
|
+
}) => SelectedTargetResult<Selection>) => InitialBuilderEvidence<Selection>;
|
|
3488
|
+
};
|
|
3489
|
+
type InitialSelectorNode<Input, Node> = Node extends (...args: infer Args) => infer Selection ? Selection extends TargetSelection<any, any, any> ? ((...args: Args) => InitialTransitionTarget<Input, Selection>) & {
|
|
3490
|
+
readonly [Key in keyof Node]: InitialSelectorNode<Input, Node[Key]>;
|
|
3491
|
+
} : never : Node extends TargetSelection<any, any, any> ? InitialTransitionTarget<Input, Node> : {
|
|
3492
|
+
readonly [Key in keyof Node]: InitialSelectorNode<Input, Node[Key]>;
|
|
3493
|
+
};
|
|
3494
|
+
/** Definition-time selector for a machine's top-level initial entry. */
|
|
3495
|
+
type InitialSelector<States extends StateSchemas, Input = void> = InitialSelectorNode<Input, InitialTargetSelector<States>>;
|
|
3496
|
+
/** Target-first initial-entry declaration accepted by {@link make}. */
|
|
3497
|
+
type InitialBuilderInput<States extends StateSchemas, Input> = (to: InitialSelector<States, Input>) => InitialBuilderEvidence<TargetSelection<any, any, any>>;
|
|
3498
|
+
type TransitionSelectorNode<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Acceptance extends TransitionAcceptance, Node> = Node extends (...args: infer Args) => infer Selection ? Selection extends TargetSelection<any, any, any> ? ((...args: Args) => TransitionTarget<States, Events, Emits, StateId, Context, Reenter, Acceptance, Selection>) & {
|
|
3499
|
+
readonly [Key in keyof Node]: TransitionSelectorNode<States, Events, Emits, StateId, Context, Reenter, Acceptance, Node[Key]>;
|
|
3500
|
+
} : never : Node extends TargetSelection<any, any, any> ? TransitionTarget<States, Events, Emits, StateId, Context, Reenter, Acceptance, Node> : {
|
|
3501
|
+
readonly [Key in keyof Node]: TransitionSelectorNode<States, Events, Emits, StateId, Context, Reenter, Acceptance, Node[Key]>;
|
|
3502
|
+
};
|
|
3503
|
+
interface TransitionBranchesResolveRequired<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Branches extends Readonly<Record<string, TransitionBranchInput>>> {
|
|
3504
|
+
(resolve: TransitionBranchesResolver<Events, Emits, Context, Branches>, options?: TransitionRequiredOptions<Reenter>): BuiltTransition<States, Events, Emits, StateId, Context, Reenter, BranchSelectionResult<Branches>, "required">;
|
|
3505
|
+
}
|
|
3506
|
+
interface TransitionBranchesResolveDeclinable<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Branches extends Readonly<Record<string, TransitionBranchInput>>> {
|
|
3507
|
+
(resolve: DeclinableTransitionBranchesResolver<Events, Emits, Context, Branches>, options: TransitionDeclinableOptions<Reenter>): BuiltTransition<States, Events, Emits, StateId, Context, Reenter, BranchSelectionResult<Branches> | Declined, "declinable">;
|
|
3508
|
+
}
|
|
3509
|
+
/** Selector supplied to inline transition declarations. */
|
|
3510
|
+
type TransitionSelector<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Acceptance extends TransitionAcceptance> = TransitionSelectorNode<States, Events, Emits, StateId, Context, Reenter, Acceptance, TargetSelector<States, StateId>> & {
|
|
3511
|
+
readonly branches: <const Branches extends Readonly<Record<string, TransitionBranchInput>>>(branches: Branches & ValidateTransitionBranchRecord<NoInfer<Branches>>) => {
|
|
3512
|
+
readonly resolve: TransitionBranchesResolveRequired<States, Events, Emits, StateId, Context, Reenter, Branches> & ("declinable" extends Acceptance ? TransitionBranchesResolveDeclinable<States, Events, Emits, StateId, Context, Reenter, Branches> : {});
|
|
3513
|
+
};
|
|
3402
3514
|
};
|
|
3403
|
-
|
|
3515
|
+
/** Inline transition declaration accepted by state and invocation handlers. */
|
|
3516
|
+
type TransitionBuilderInput<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Acceptance extends TransitionAcceptance> = (to: TransitionSelector<States, Events, Emits, StateId, Context, Reenter, Acceptance>) => TransitionTyped<States, Events, Emits, StateId, Context, Reenter, Acceptance> & TransitionBuilderEvidence<any, Acceptance>;
|
|
3517
|
+
type InvokeTransition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context> = TransitionConfig<States, Events, Emits, StateId, Context, true, TransitionAcceptance>;
|
|
3404
3518
|
type InvokeSource<Value, Context> = Value | ((context: Context) => Value);
|
|
3405
3519
|
/** Inline state-owned work that runs for the lifetime of its active state. */
|
|
3406
|
-
interface InvokeOwned<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States
|
|
3407
|
-
readonly "~effect/Machine/InvokeOwner"?: Types.Covariant<readonly [States, Events, Emits, StateId]>;
|
|
3520
|
+
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
|
+
readonly "~effect/Machine/InvokeOwner"?: Types.Covariant<readonly [States, Events, Emits, StateId, InputEvents, ParentEvents]>;
|
|
3408
3522
|
}
|
|
3409
3523
|
/** Type evidence retained by {@link invoke} without affecting runtime data. */
|
|
3410
3524
|
interface InvokeTyped<Output, Error, Requirements, InitialError, Emits = never, ParentEvent = never> {
|
|
@@ -3417,7 +3531,7 @@ export declare namespace Machine {
|
|
|
3417
3531
|
readonly parentEvents: Types.Covariant<ParentEvent>;
|
|
3418
3532
|
};
|
|
3419
3533
|
}
|
|
3420
|
-
type InvokeConfig<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> & ({
|
|
3534
|
+
type InvokeConfig<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> & ({
|
|
3421
3535
|
readonly id: string;
|
|
3422
3536
|
readonly effect: (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<any, any, any>;
|
|
3423
3537
|
readonly stream?: never;
|
|
@@ -3563,7 +3677,7 @@ export declare namespace Machine {
|
|
|
3563
3677
|
type LogicServicesOf<Value> = Effect.Services<LogicInitialEffectOf<Value> | LogicRunEffectOf<Value>>;
|
|
3564
3678
|
type LogicOutputOf<Value> = Effect.Success<LogicRunEffectOf<Value>>;
|
|
3565
3679
|
type LogicInitialErrorOf<Value> = Effect.Error<LogicInitialEffectOf<Value>>;
|
|
3566
|
-
type ContextualInvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Raw> = Raw extends InvokeTyped<any, any, any, any, any> ? unknown : Raw extends {
|
|
3680
|
+
type ContextualInvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Raw> = Raw extends InvokeTyped<any, any, any, any, any> ? unknown : [Extract<keyof Raw, "onDone" | "onFailure" | "onElement" | "onSnapshot">] extends [never] ? unknown : Raw extends {
|
|
3567
3681
|
readonly effect: infer Source;
|
|
3568
3682
|
} ? InvokeFactoryResult<Source> extends infer Fx extends Effect.Effect<any, any, any> ? InvokeDoneRequirement<Effect.Success<Fx>, InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<Fx>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<Effect.Error<Fx>, InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<Fx>, InputEvents, ParentEvents>>> & {
|
|
3569
3683
|
readonly onSnapshot?: never;
|
|
@@ -3619,10 +3733,10 @@ export declare namespace Machine {
|
|
|
3619
3733
|
readonly entry?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3620
3734
|
readonly exit?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3621
3735
|
readonly invoke?: InvokeDefinition<States, Events, Emits, StateId, InputEvents, ParentEvents> | TypedInvokeDefinition;
|
|
3622
|
-
readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId, InputEvents, ParentEvents
|
|
3623
|
-
readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId, InputEvents, ParentEvents
|
|
3736
|
+
readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, false, TransitionAcceptance>;
|
|
3737
|
+
readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, false, TransitionAcceptance>;
|
|
3624
3738
|
readonly on?: {
|
|
3625
|
-
readonly [EventTag in TagOf<Events[number]>]?: TransitionConfig<States, Events, Emits, StateId, HandlerContext<States, Events, Emits, StateId, EventTag, E, R, InputEvents, ParentEvents>, true>;
|
|
3739
|
+
readonly [EventTag in TagOf<Events[number]>]?: TransitionConfig<States, Events, Emits, StateId, HandlerContext<States, Events, Emits, StateId, EventTag, E, R, InputEvents, ParentEvents>, true, TransitionAcceptance>;
|
|
3626
3740
|
};
|
|
3627
3741
|
readonly initialize?: StateInitializeHandler<States, Events, Emits, StateId, InputEvents, ParentEvents>;
|
|
3628
3742
|
} & ActiveOutputHandlerConfig<States, Events, StateId>;
|
|
@@ -3924,7 +4038,7 @@ export declare namespace Machine {
|
|
|
3924
4038
|
* @category models
|
|
3925
4039
|
* @since 0.4.0
|
|
3926
4040
|
*/
|
|
3927
|
-
type EventHandlerMap<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, TransitionConfig<States, Events, Emits, StateId, HandlerContext<States, Events, Emits, StateId, EventTag, E, R>, true>>>;
|
|
4041
|
+
type EventHandlerMap<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, TransitionConfig<States, Events, Emits, StateId, HandlerContext<States, Events, Emits, StateId, EventTag, E, R>, true, TransitionAcceptance>>>;
|
|
3928
4042
|
/**
|
|
3929
4043
|
* Runtime state config stored for a single state tag.
|
|
3930
4044
|
*
|
|
@@ -3935,8 +4049,8 @@ export declare namespace Machine {
|
|
|
3935
4049
|
readonly entry?: (context: StateActionContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<E, R>;
|
|
3936
4050
|
readonly exit?: (context: StateActionContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<E, R>;
|
|
3937
4051
|
readonly invoke?: InvokeDefinition<States, Events, Emits, StateId>;
|
|
3938
|
-
readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId
|
|
3939
|
-
readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId
|
|
4052
|
+
readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId>, false, TransitionAcceptance>;
|
|
4053
|
+
readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId>, false, TransitionAcceptance>;
|
|
3940
4054
|
readonly output?: ((context: FinalOutputContext<States, Events, StateId>) => unknown) | ((context: ParallelOutputContext<States, Events, StateId>) => unknown);
|
|
3941
4055
|
readonly on?: EventHandlerMap<States, Events, Emits, StateId, EventTag, E, R>;
|
|
3942
4056
|
}
|
|
@@ -4035,10 +4149,7 @@ export declare const state: StateConstructor;
|
|
|
4035
4149
|
* Machine.make({
|
|
4036
4150
|
* states: States.states,
|
|
4037
4151
|
* events: Machine.events(),
|
|
4038
|
-
* initial: {
|
|
4039
|
-
* target: (to) => to.idle(),
|
|
4040
|
-
* resolve: ({ target }) => target.from()
|
|
4041
|
-
* }
|
|
4152
|
+
* initial: (to) => to.idle().resolve(({ target }) => target.from())
|
|
4042
4153
|
* })
|
|
4043
4154
|
* ```
|
|
4044
4155
|
*
|
|
@@ -4046,31 +4157,22 @@ export declare const state: StateConstructor;
|
|
|
4046
4157
|
* @since 0.4.0
|
|
4047
4158
|
*/
|
|
4048
4159
|
export declare const states: StatesConstructor;
|
|
4049
|
-
type
|
|
4050
|
-
readonly target: (to: Machine.InitialSelector<States>) => Selection;
|
|
4051
|
-
readonly resolve?: (context: {
|
|
4052
|
-
readonly input: Input;
|
|
4053
|
-
readonly target: Machine.SelectionBuilder<Selection>;
|
|
4054
|
-
}) => Machine.SelectedTargetResult<Selection>;
|
|
4055
|
-
readonly cases?: never;
|
|
4056
|
-
readonly otherwise?: never;
|
|
4057
|
-
};
|
|
4058
|
-
type MakeConfig<States extends Machine.StateSchemas, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, Input extends Schema.Top, InitialE, InitialR, InternalEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>> = {
|
|
4160
|
+
type MakeConfig<States extends Machine.StateSchemas, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, Input extends Schema.Top, InitialE, InitialR, InternalEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentDeclaration extends Parent.Any | undefined> = {
|
|
4059
4161
|
readonly id?: string;
|
|
4060
4162
|
readonly states: States & DefineStateTreeInput<NoInfer<States>>;
|
|
4061
4163
|
readonly events: Machine.EventProtocol<"public", InputEvents> & ValidateInputEventProtocol<NoInfer<InputEvents>>;
|
|
4062
4164
|
readonly internalEvents?: Machine.EventProtocol<"internal", InternalEvents> & ValidateInternalEventProtocol<NoInfer<InputEvents>, NoInfer<InternalEvents>>;
|
|
4063
4165
|
readonly emittedEvents?: Machine.EventProtocol<"emitted", Emits>;
|
|
4064
|
-
readonly
|
|
4166
|
+
readonly parent?: ParentDeclaration;
|
|
4065
4167
|
readonly input?: Input;
|
|
4066
4168
|
readonly initial: unknown;
|
|
4067
4169
|
};
|
|
4068
|
-
type MakeResult<States extends Machine.StateSchemas, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, Input extends Schema.Top, InitialE, InitialR, InternalEvents extends ReadonlyArray<Machine.TaggedSchema>,
|
|
4170
|
+
type MakeResult<States extends Machine.StateSchemas, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, Input extends Schema.Top, InitialE, InitialR, InternalEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentDeclaration extends Parent.Any | undefined> = Definition<States, readonly [...InputEvents, ...InternalEvents], Input, InitialE, InitialR, Machine.FinalStateFromDefinition<States>, Machine.TerminalOutput<States>, Emits, InputEvents, Machine.ParentEventsOf<ParentDeclaration>>;
|
|
4069
4171
|
interface Make {
|
|
4070
|
-
<const States extends Machine.StateSchemas, const InputEvents extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, InitialE = never, InitialR = never, const InternalEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const
|
|
4071
|
-
readonly initial:
|
|
4072
|
-
}, ..._validation: ValidateDefinedStates<NoInfer<States>>): MakeResult<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents,
|
|
4073
|
-
<const States extends Machine.StateSchemas, const InputEvents extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, InitialE = never, InitialR = never, const InternalEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const
|
|
4172
|
+
<const States extends Machine.StateSchemas, const InputEvents extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, InitialE = never, InitialR = never, const InternalEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentDeclaration extends Parent.Any | undefined = undefined>(config: Omit<MakeConfig<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentDeclaration>, "initial"> & {
|
|
4173
|
+
readonly initial: Machine.InitialBuilderInput<States, Input["Type"]>;
|
|
4174
|
+
}, ..._validation: ValidateDefinedStates<NoInfer<States>>): MakeResult<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentDeclaration>;
|
|
4175
|
+
<const States extends Machine.StateSchemas, const InputEvents extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, InitialE = never, InitialR = never, const InternalEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentDeclaration extends Parent.Any | undefined = undefined>(config: Omit<MakeConfig<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentDeclaration>, "states"> & {
|
|
4074
4176
|
readonly states: InvalidDefinedStateTreeInput<States>;
|
|
4075
4177
|
}): never;
|
|
4076
4178
|
}
|
|
@@ -4085,11 +4187,17 @@ interface Make {
|
|
|
4085
4187
|
* `states` or is passed inline. Call `handle` on the returned definition
|
|
4086
4188
|
* to implement state behavior with ordinary TypeScript control flow.
|
|
4087
4189
|
*
|
|
4190
|
+
* `initial` is a target-first callback. Its outer selector runs once while the
|
|
4191
|
+
* definition is captured; an attached `.resolve(...)` callback remains lazy
|
|
4192
|
+
* until initial planning. Return a bare selected state when its schema supports
|
|
4193
|
+
* default construction.
|
|
4194
|
+
*
|
|
4088
4195
|
* `Machine.events` defines the public input protocol. `Machine.internalEvents`
|
|
4089
4196
|
* adds raised events and other machine-local deliveries.
|
|
4090
|
-
* `Machine.emittedEvents` defines outward ephemeral notifications
|
|
4091
|
-
* `
|
|
4092
|
-
*
|
|
4197
|
+
* `Machine.emittedEvents` defines outward ephemeral notifications. The
|
|
4198
|
+
* `parent` configuration accepts `Machine.parent(events)` for a required owner
|
|
4199
|
+
* or `Machine.optionalParent(events)` for a root-capable machine. All
|
|
4200
|
+
* descriptors expose deferred constructors while retaining their
|
|
4093
4201
|
* schemas opaquely for runtime validation. Public and internal tags must be
|
|
4094
4202
|
* disjoint.
|
|
4095
4203
|
*
|
|
@@ -4113,18 +4221,13 @@ interface Make {
|
|
|
4113
4221
|
* const counter = Machine.make({
|
|
4114
4222
|
* states: States.states,
|
|
4115
4223
|
* events: Events,
|
|
4116
|
-
* initial: {
|
|
4117
|
-
* target: (to) => to.Count(),
|
|
4118
|
-
* resolve: ({ target }) => target(new Count({ value: 0 }))
|
|
4119
|
-
* }
|
|
4224
|
+
* initial: (to) => to.Count().resolve(({ target }) => target(new Count({ value: 0 })))
|
|
4120
4225
|
* }).handle({
|
|
4121
4226
|
* Count: {
|
|
4122
4227
|
* on: {
|
|
4123
|
-
* Increment:
|
|
4124
|
-
*
|
|
4125
|
-
*
|
|
4126
|
-
* target(new Count({ value: state.value + event.by }))
|
|
4127
|
-
* })
|
|
4228
|
+
* Increment: (to) =>
|
|
4229
|
+
* to.full.Count().resolve(({ event, state, target }) =>
|
|
4230
|
+
* target(new Count({ value: state.value + event.by })))
|
|
4128
4231
|
* }
|
|
4129
4232
|
* }
|
|
4130
4233
|
* })
|
|
@@ -4171,6 +4274,27 @@ export declare const events: {
|
|
|
4171
4274
|
<const Schemas extends ReadonlyArray<Machine.TaggedSchema>>(...schemas: Schemas & ValidateInputEventProtocol<NoInfer<Schemas>>): Machine.EventProtocol<"public", readonly [...Schemas]>;
|
|
4172
4275
|
<const Inputs extends ReadonlyArray<Machine.EventProtocolInput<"public">>>(...inputs: Inputs & ValidateEventProtocolBuilder<"public", Inputs>): Machine.EventProtocol<"public", Machine.EventProtocolInputSchemasOf<"public", Inputs>>;
|
|
4173
4276
|
};
|
|
4277
|
+
/**
|
|
4278
|
+
* Requires the machine to run as an owned child whose parent accepts the
|
|
4279
|
+
* supplied public event protocol.
|
|
4280
|
+
*
|
|
4281
|
+
* Required-parent machines expose a non-optional `parent` target in behavior
|
|
4282
|
+
* contexts and are rejected by root execution APIs.
|
|
4283
|
+
*
|
|
4284
|
+
* @category constructors
|
|
4285
|
+
* @since 0.17.0
|
|
4286
|
+
*/
|
|
4287
|
+
export declare const parent: <const Events extends ReadonlyArray<Machine.TaggedSchema>>(events: Machine.EventProtocol<"public", Events>) => Parent<"required", Events>;
|
|
4288
|
+
/**
|
|
4289
|
+
* Declares public events a machine may send to its owner while preserving the
|
|
4290
|
+
* ability to run that machine as a root.
|
|
4291
|
+
*
|
|
4292
|
+
* Optional-parent machines expose `parent` as a possibly absent target.
|
|
4293
|
+
*
|
|
4294
|
+
* @category constructors
|
|
4295
|
+
* @since 0.17.0
|
|
4296
|
+
*/
|
|
4297
|
+
export declare const optionalParent: <const Events extends ReadonlyArray<Machine.TaggedSchema>>(events: Machine.EventProtocol<"public", Events>) => Parent<"optional", Events>;
|
|
4174
4298
|
/**
|
|
4175
4299
|
* Defines an internal event protocol and returns deferred constructors for
|
|
4176
4300
|
* every statically finite configured event tag.
|
|
@@ -4259,10 +4383,7 @@ export declare const emittedEvents: {
|
|
|
4259
4383
|
* const machine = Machine.make({
|
|
4260
4384
|
* states: States.states,
|
|
4261
4385
|
* events: Machine.events(),
|
|
4262
|
-
* initial: {
|
|
4263
|
-
* target: (to) => to.Idle(),
|
|
4264
|
-
* resolve: ({ target }) => target.from()
|
|
4265
|
-
* }
|
|
4386
|
+
* initial: (to) => to.Idle().resolve(({ target }) => target.from())
|
|
4266
4387
|
* }).handle({ Idle: {} })
|
|
4267
4388
|
*
|
|
4268
4389
|
* const encoded = Effect.gen(function*() {
|
|
@@ -4306,10 +4427,7 @@ export declare const encodeSnapshot: <const States extends Machine.StateSchemas,
|
|
|
4306
4427
|
* const machine = Machine.make({
|
|
4307
4428
|
* states: States.states,
|
|
4308
4429
|
* events: Machine.events(),
|
|
4309
|
-
* initial: {
|
|
4310
|
-
* target: (to) => to.Idle(),
|
|
4311
|
-
* resolve: ({ target }) => target.from()
|
|
4312
|
-
* }
|
|
4430
|
+
* initial: (to) => to.Idle().resolve(({ target }) => target.from())
|
|
4313
4431
|
* }).handle({ Idle: {} })
|
|
4314
4432
|
*
|
|
4315
4433
|
* const roundTrip = Effect.gen(function*() {
|
|
@@ -4337,7 +4455,7 @@ type EffectInvokeSource<States extends Machine.StateSchemas, Events extends Read
|
|
|
4337
4455
|
};
|
|
4338
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>>;
|
|
4339
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>>;
|
|
4340
|
-
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.
|
|
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>;
|
|
4341
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> = {
|
|
4342
4460
|
readonly id: InvokeLifecycleId;
|
|
4343
4461
|
readonly stream: Source & ((context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown);
|
|
@@ -4352,180 +4470,14 @@ type StreamSourceResult<Source extends (...args: ReadonlyArray<any>) => unknown>
|
|
|
4352
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>>;
|
|
4353
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>>;
|
|
4354
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>>;
|
|
4355
|
-
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.
|
|
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>;
|
|
4356
4474
|
type InvokeChannelIsNever<Value> = IsAny<Value> extends true ? false : [Value] extends [never] ? true : false;
|
|
4357
|
-
type BoundEffectInvokeSource<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>> = {
|
|
4358
|
-
readonly id: InvokeLifecycleId;
|
|
4359
|
-
readonly effect: Source;
|
|
4360
|
-
readonly stream?: never;
|
|
4361
|
-
readonly after?: never;
|
|
4362
|
-
readonly logic?: never;
|
|
4363
|
-
readonly child?: never;
|
|
4364
|
-
readonly address?: never;
|
|
4365
|
-
readonly onElement?: never;
|
|
4366
|
-
readonly onSnapshot?: never;
|
|
4367
|
-
};
|
|
4368
|
-
type BoundEffectDoneHandler<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>>;
|
|
4369
|
-
type BoundEffectFailureHandler<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>>;
|
|
4370
|
-
type BoundEffectInvokeResult<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.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never>;
|
|
4371
|
-
/** Captures one exact named-branch topology while preserving handler inference. */
|
|
4372
|
-
type BranchingTransitionResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateNodeIdentifier<States>, Context, Reenter extends boolean, Branches extends Readonly<Record<string, Machine.TransitionBranchInput>>> = Machine.TransitionBranchesInput<States, Events, Emits, StateId, Context, Reenter, Branches> & Machine.TransitionTyped<States, Events, Emits, StateId, Context, Reenter>;
|
|
4373
4475
|
type TransitionBranchRecordError<Message extends string, Key extends PropertyKey = never> = {
|
|
4374
4476
|
readonly "~effect/Machine/TransitionBranchRecordError": Message;
|
|
4375
4477
|
readonly key: Key;
|
|
4376
4478
|
};
|
|
4377
4479
|
type InvalidStaticTransitionBranchKey<Branches> = Extract<keyof Branches, "" | number | symbol>;
|
|
4378
4480
|
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>>;
|
|
4379
|
-
/**
|
|
4380
|
-
* Contextually types direct and branching transition definitions.
|
|
4381
|
-
*
|
|
4382
|
-
* @category constructors
|
|
4383
|
-
* @since 0.14.0
|
|
4384
|
-
*/
|
|
4385
|
-
export interface TransitionConstructor {
|
|
4386
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateNodeIdentifier<States>, Context, const Selection extends Machine.TargetSelection<any, any, any>, Reenter extends boolean = never>(config: Machine.TransitionDirectInput<States, Events, Emits, StateId, Context, Reenter, Selection>): Machine.TransitionDirectInput<States, Events, Emits, StateId, Context, Reenter, Selection> & (Machine.SelectionKind<Selection> extends "none" ? Machine.TargetlessTransitionTyped : Machine.TransitionTyped<States, Events, Emits, StateId, Context, Reenter>);
|
|
4387
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateNodeIdentifier<States>, Context, const Branches extends Readonly<Record<string, Machine.TransitionBranchInput>>, Reenter extends boolean = never>(config: Machine.TransitionBranchesInput<States, Events, Emits, StateId, Context, Reenter, Branches> & ValidateTransitionBranchRecord<NoInfer<Branches>>): BranchingTransitionResult<States, Events, Emits, StateId, Context, Reenter, Branches>;
|
|
4388
|
-
}
|
|
4389
|
-
/**
|
|
4390
|
-
* Defines a statically inspectable transition.
|
|
4391
|
-
*
|
|
4392
|
-
* It is required for every event, lifecycle, choice, and invocation transition
|
|
4393
|
-
* so the destination selected by `target` can contextually type the
|
|
4394
|
-
* corresponding resolver. Branching transitions declare every possible
|
|
4395
|
-
* destination up front, then select one through ordinary TypeScript control
|
|
4396
|
-
* flow in `resolve`.
|
|
4397
|
-
*
|
|
4398
|
-
* ```ts
|
|
4399
|
-
* Machine.transition({
|
|
4400
|
-
* target: (to) => to.full.Ready(),
|
|
4401
|
-
* resolve: ({ target }) => target.from()
|
|
4402
|
-
* })
|
|
4403
|
-
*
|
|
4404
|
-
* Machine.transition({
|
|
4405
|
-
* branches: (to) => ({
|
|
4406
|
-
* cached: { target: to.full.Ready() },
|
|
4407
|
-
* loading: { target: to.full.Loading() }
|
|
4408
|
-
* }),
|
|
4409
|
-
* resolve: ({ event, select }) => event.cached
|
|
4410
|
-
* ? select.cached.from({ data: event.cached })
|
|
4411
|
-
* : select.loading.from()
|
|
4412
|
-
* })
|
|
4413
|
-
* ```
|
|
4414
|
-
*
|
|
4415
|
-
* @category constructors
|
|
4416
|
-
* @since 0.14.0
|
|
4417
|
-
*/
|
|
4418
|
-
export declare const transition: TransitionConstructor;
|
|
4419
|
-
/**
|
|
4420
|
-
* Sentinel used by direct targetless transition shorthands.
|
|
4421
|
-
*
|
|
4422
|
-
* This is the concise form of `target: (to) => to.none()`.
|
|
4423
|
-
*
|
|
4424
|
-
* ```ts
|
|
4425
|
-
* onElement: {
|
|
4426
|
-
* target: Machine.targetless,
|
|
4427
|
-
* resolve: ({ element }, enqueue) => {
|
|
4428
|
-
* enqueue.raise(new MeasurementReceived({ value: element }))
|
|
4429
|
-
* }
|
|
4430
|
-
* }
|
|
4431
|
-
*
|
|
4432
|
-
* onDone: { target: Machine.targetless }
|
|
4433
|
-
* ```
|
|
4434
|
-
*
|
|
4435
|
-
* @category constructors
|
|
4436
|
-
* @since 0.16.0
|
|
4437
|
-
*/
|
|
4438
|
-
export interface TargetlessSelector {
|
|
4439
|
-
readonly "~effect/Machine/TargetlessSelector": true;
|
|
4440
|
-
<const States extends Machine.StateSchemas, StateId extends Machine.StateNodeIdentifier<States>>(to: Machine.TargetSelector<States, StateId>): ReturnType<Machine.TargetSelector<States, StateId>["none"]>;
|
|
4441
|
-
}
|
|
4442
|
-
/**
|
|
4443
|
-
* Selects no transition target while keeping enqueue operations explicit.
|
|
4444
|
-
*
|
|
4445
|
-
* Use as the `target` of a direct handler object when the handler should keep
|
|
4446
|
-
* the current state configuration and only raise, emit, or send events.
|
|
4447
|
-
*
|
|
4448
|
-
* @category constructors
|
|
4449
|
-
* @since 0.16.0
|
|
4450
|
-
*/
|
|
4451
|
-
export declare const targetless: TargetlessSelector;
|
|
4452
|
-
/**
|
|
4453
|
-
* Machine-bound invocation constructor that preserves the owning machine's
|
|
4454
|
-
* public input and parent protocols in every invocation callback.
|
|
4455
|
-
*
|
|
4456
|
-
* @category constructors
|
|
4457
|
-
* @since 0.11.0
|
|
4458
|
-
*/
|
|
4459
|
-
export interface Invoker<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>> {
|
|
4460
|
-
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>>(config: BoundEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4461
|
-
readonly onDone: BoundEffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4462
|
-
readonly onFailure: BoundEffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4463
|
-
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
4464
|
-
"onDone must be omitted when the Effect output is never"
|
|
4465
|
-
] : InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
4466
|
-
"onFailure must be omitted when the Effect error is never"
|
|
4467
|
-
] : []): BoundEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4468
|
-
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, never, unknown>>(config: BoundEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4469
|
-
readonly onDone: BoundEffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4470
|
-
readonly onFailure?: never;
|
|
4471
|
-
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
4472
|
-
"onDone must be omitted when the Effect output is never"
|
|
4473
|
-
] : []): BoundEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4474
|
-
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, unknown, unknown>>(config: BoundEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4475
|
-
readonly onDone?: never;
|
|
4476
|
-
readonly onFailure: BoundEffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4477
|
-
}, ..._validation: InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
4478
|
-
"onFailure must be omitted when the Effect error is never"
|
|
4479
|
-
] : []): BoundEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4480
|
-
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, never, unknown>>(config: BoundEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4481
|
-
readonly onDone?: never;
|
|
4482
|
-
readonly onFailure?: never;
|
|
4483
|
-
}): BoundEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4484
|
-
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, unknown, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4485
|
-
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4486
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4487
|
-
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4488
|
-
}, ..._validation: InvokeChannelIsNever<Stream.Success<ReturnType<Source>>> extends true ? [
|
|
4489
|
-
"onElement must be omitted when the Stream element is never"
|
|
4490
|
-
] : InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4491
|
-
"onFailure must be omitted when the Stream error is never"
|
|
4492
|
-
] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4493
|
-
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, unknown, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4494
|
-
readonly onElement?: never;
|
|
4495
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4496
|
-
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4497
|
-
}, ..._validation: InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4498
|
-
"onFailure must be omitted when the Stream error is never"
|
|
4499
|
-
] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4500
|
-
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, never, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4501
|
-
readonly onElement?: never;
|
|
4502
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4503
|
-
readonly onFailure?: never;
|
|
4504
|
-
}): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4505
|
-
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, never, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4506
|
-
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4507
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4508
|
-
readonly onFailure?: never;
|
|
4509
|
-
}): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4510
|
-
<StateId extends Machine.StateIdentifier<States>, const Config extends object>(config: Config & Machine.TimerInvokeArgs<States, Events, Emits, StateId, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<void, never, never, never>;
|
|
4511
|
-
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown, Address extends ChildAddress<never>>(config: {
|
|
4512
|
-
readonly logic: Source;
|
|
4513
|
-
} & 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 {
|
|
4514
|
-
readonly initial: unknown;
|
|
4515
|
-
readonly run: unknown;
|
|
4516
|
-
} ? [] : [
|
|
4517
|
-
"logic factory must return Machine.Logic"
|
|
4518
|
-
]): Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Machine.LogicOutputOf<ReturnType<Source>>, Machine.LogicErrorOf<ReturnType<Source>>, Machine.LogicServicesOf<ReturnType<Source>>, Machine.LogicInitialErrorOf<ReturnType<Source>>>;
|
|
4519
|
-
<StateId extends Machine.StateIdentifier<States>, const Source, Address extends ChildAddress<never>>(config: {
|
|
4520
|
-
readonly logic: Source;
|
|
4521
|
-
} & 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 {
|
|
4522
|
-
readonly initial: unknown;
|
|
4523
|
-
readonly run: unknown;
|
|
4524
|
-
} ? [] : [
|
|
4525
|
-
"logic must implement Machine.Logic"
|
|
4526
|
-
]): Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Machine.LogicOutputOf<Source>, Machine.LogicErrorOf<Source>, Machine.LogicServicesOf<Source>, Machine.LogicInitialErrorOf<Source>>;
|
|
4527
|
-
<StateId extends Machine.StateIdentifier<States>, const Child extends ChildMachine.Any, const Config extends object>(config: Config & Machine.ChildInvokeArgs<States, Events, Emits, StateId, Child["machine"], Child, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & 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"]>>>;
|
|
4528
|
-
}
|
|
4529
4481
|
/**
|
|
4530
4482
|
* Preserves inference for a state-owned invocation configuration.
|
|
4531
4483
|
*
|
|
@@ -4547,9 +4499,10 @@ export interface Invoker<States extends Machine.StateSchemas, Events extends Rea
|
|
|
4547
4499
|
* `address` must not be repeated.
|
|
4548
4500
|
*
|
|
4549
4501
|
* Inside `handle(...)`, the owning definition contextually supplies its public
|
|
4550
|
-
* input and
|
|
4502
|
+
* input and declared parent protocols. Invocation sources and lifecycle handlers
|
|
4551
4503
|
* can therefore send through `self` and `parent` without naming the definition.
|
|
4552
|
-
* The
|
|
4504
|
+
* The standard `Machine.invoke(...)` constructor preserves these contexts
|
|
4505
|
+
* directly; no intermediate definition method is required.
|
|
4553
4506
|
*
|
|
4554
4507
|
* ```ts
|
|
4555
4508
|
* invoke: Machine.invoke({
|
|
@@ -4559,14 +4512,12 @@ export interface Invoker<States extends Machine.StateSchemas, Events extends Rea
|
|
|
4559
4512
|
* try: () => fetch("/api/data").then((response) => response.json()),
|
|
4560
4513
|
* catch: (cause) => new LoadError({ cause })
|
|
4561
4514
|
* }),
|
|
4562
|
-
* onDone:
|
|
4563
|
-
*
|
|
4564
|
-
*
|
|
4565
|
-
*
|
|
4566
|
-
*
|
|
4567
|
-
*
|
|
4568
|
-
* resolve: ({ error, target }) => target.from({ error })
|
|
4569
|
-
* })
|
|
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 }))
|
|
4570
4521
|
* })
|
|
4571
4522
|
* ```
|
|
4572
4523
|
*
|
|
@@ -4574,31 +4525,31 @@ export interface Invoker<States extends Machine.StateSchemas, Events extends Rea
|
|
|
4574
4525
|
* @since 0.9.0
|
|
4575
4526
|
*/
|
|
4576
4527
|
export declare const invoke: {
|
|
4577
|
-
<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 InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
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> & {
|
|
4578
4529
|
readonly onDone: EffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4579
4530
|
readonly onFailure: EffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4580
4531
|
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
4581
4532
|
"onDone must be omitted when the Effect output is never"
|
|
4582
4533
|
] : InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
4583
4534
|
"onFailure must be omitted when the Effect error is never"
|
|
4584
|
-
] : []): EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4585
|
-
<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 InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
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> & {
|
|
4586
4537
|
readonly onDone: EffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4587
4538
|
readonly onFailure?: never;
|
|
4588
4539
|
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
4589
4540
|
"onDone must be omitted when the Effect output is never"
|
|
4590
|
-
] : []): EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4591
|
-
<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 InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
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> & {
|
|
4592
4543
|
readonly onDone?: never;
|
|
4593
4544
|
readonly onFailure: EffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4594
4545
|
}, ..._validation: InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
4595
4546
|
"onFailure must be omitted when the Effect error is never"
|
|
4596
|
-
] : []): EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4597
|
-
<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 InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: EffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
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> & {
|
|
4598
4549
|
readonly onDone?: never;
|
|
4599
4550
|
readonly onFailure?: never;
|
|
4600
|
-
}): EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4601
|
-
<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 InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
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> & {
|
|
4602
4553
|
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4603
4554
|
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4604
4555
|
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
@@ -4606,28 +4557,42 @@ export declare const invoke: {
|
|
|
4606
4557
|
"onElement must be omitted when the Stream element is never"
|
|
4607
4558
|
] : InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4608
4559
|
"onFailure must be omitted when the Stream error is never"
|
|
4609
|
-
] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4610
|
-
<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 InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
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> & {
|
|
4611
4562
|
readonly onElement?: never;
|
|
4612
4563
|
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4613
4564
|
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4614
4565
|
}, ..._validation: InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4615
4566
|
"onFailure must be omitted when the Stream error is never"
|
|
4616
|
-
] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4617
|
-
<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 InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
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> & {
|
|
4618
4569
|
readonly onElement?: never;
|
|
4619
4570
|
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4620
4571
|
readonly onFailure?: never;
|
|
4621
|
-
}): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4622
|
-
<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 InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
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> & {
|
|
4623
4574
|
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4624
4575
|
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4625
4576
|
readonly onFailure?: never;
|
|
4626
|
-
}): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4627
|
-
<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>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<void, never, never, never>;
|
|
4628
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>,
|
|
4629
|
-
|
|
4630
|
-
|
|
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"]>>>;
|
|
4631
4596
|
};
|
|
4632
4597
|
/**
|
|
4633
4598
|
* Plans the initial state for a machine without executing machine commands.
|
|
@@ -4658,10 +4623,7 @@ export declare const invoke: {
|
|
|
4658
4623
|
* const machine = Machine.make({
|
|
4659
4624
|
* states: States.states,
|
|
4660
4625
|
* events: Machine.events(),
|
|
4661
|
-
* initial: {
|
|
4662
|
-
* target: (to) => to.Idle(),
|
|
4663
|
-
* resolve: ({ target }) => target.from()
|
|
4664
|
-
* }
|
|
4626
|
+
* initial: (to) => to.Idle().resolve(({ target }) => target.from())
|
|
4665
4627
|
* }).handle({ Idle: {} })
|
|
4666
4628
|
*
|
|
4667
4629
|
* const initialState = Effect.map(Machine.planInitial(machine), (plan) => plan.state)
|
|
@@ -4672,7 +4634,7 @@ export declare const invoke: {
|
|
|
4672
4634
|
* @category constructors
|
|
4673
4635
|
* @since 0.4.0
|
|
4674
4636
|
*/
|
|
4675
|
-
export declare const planInitial: <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> & EnsureExecutable<States, UnhandledStates, OutputStates>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<{
|
|
4637
|
+
export declare const planInitial: <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> & EnsureExecutable<States, UnhandledStates, OutputStates> & Machine.RootCompatible<ParentEvents>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<{
|
|
4676
4638
|
readonly startingState: Machine.Snapshot<States>;
|
|
4677
4639
|
readonly initialEntryPaths: ReadonlyArray<Machine.StateIdentifier<States>>;
|
|
4678
4640
|
readonly state: Machine.Snapshot<States>;
|
|
@@ -4730,7 +4692,8 @@ export declare const initialDefinition: <M extends Machine.Any>(machine: M) => M
|
|
|
4730
4692
|
* Event handlers retain their handler-key order within each source state and
|
|
4731
4693
|
* are followed by eventless and completion handlers. This function does not
|
|
4732
4694
|
* execute resolvers. Every direct, named, and targetless branch exposes the
|
|
4733
|
-
* destination selected by its required static `target` declaration
|
|
4695
|
+
* destination selected by its required static `target` declaration, while
|
|
4696
|
+
* `acceptance` reports whether the resolver may decline the transition.
|
|
4734
4697
|
*
|
|
4735
4698
|
* @category getters
|
|
4736
4699
|
* @since 0.4.0
|
|
@@ -4763,7 +4726,12 @@ export declare const activityDefinitions: <M extends Machine.Any>(machine: M) =>
|
|
|
4763
4726
|
*/
|
|
4764
4727
|
export declare const configuration: <M extends Machine.Any>(machine: M, state: Machine.Snapshot<Machine.States<M>>) => ReadonlyArray<Machine.ActiveStateNode<Machine.StateIdentifier<Machine.States<M>>, Machine.ChoiceIdentifier<Machine.States<M>>>>;
|
|
4765
4728
|
/**
|
|
4766
|
-
* Returns
|
|
4729
|
+
* Returns event tags with at least one structurally eligible handler in the
|
|
4730
|
+
* current state snapshot.
|
|
4731
|
+
*
|
|
4732
|
+
* A `declinable` handler may still reject a concrete event at planning time,
|
|
4733
|
+
* so this is a static candidate query rather than a guarantee that every value
|
|
4734
|
+
* with the returned tag will be handled.
|
|
4767
4735
|
*
|
|
4768
4736
|
* @category getters
|
|
4769
4737
|
* @since 0.4.0
|
|
@@ -4799,17 +4767,12 @@ export declare const enabled: <const States extends Machine.StateSchemas, const
|
|
|
4799
4767
|
* const machine = Machine.make({
|
|
4800
4768
|
* states: States.states,
|
|
4801
4769
|
* events: Machine.events(Toggle),
|
|
4802
|
-
* initial: {
|
|
4803
|
-
* target: (to) => to.Off(),
|
|
4804
|
-
* resolve: ({ target }) => target.from()
|
|
4805
|
-
* }
|
|
4770
|
+
* initial: (to) => to.Off().resolve(({ target }) => target.from())
|
|
4806
4771
|
* }).handle({
|
|
4807
4772
|
* Off: {
|
|
4808
4773
|
* on: {
|
|
4809
|
-
* Toggle:
|
|
4810
|
-
* target
|
|
4811
|
-
* resolve: ({ target }) => target.from()
|
|
4812
|
-
* })
|
|
4774
|
+
* Toggle: (to) =>
|
|
4775
|
+
* to.full.On().resolve(({ target }) => target.from())
|
|
4813
4776
|
* }
|
|
4814
4777
|
* },
|
|
4815
4778
|
* On: {}
|
|
@@ -4826,7 +4789,7 @@ export declare const enabled: <const States extends Machine.StateSchemas, const
|
|
|
4826
4789
|
* @category combinators
|
|
4827
4790
|
* @since 0.4.0
|
|
4828
4791
|
*/
|
|
4829
|
-
export declare const plan: <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> & EnsureExecutable<States, UnhandledStates, OutputStates>, state: Machine.Snapshot<States>, event: Machine.EventInputOf<InputEvents>) => Effect.Effect<{
|
|
4792
|
+
export declare const plan: <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> & EnsureExecutable<States, UnhandledStates, OutputStates> & Machine.RootCompatible<ParentEvents>, state: Machine.Snapshot<States>, event: Machine.EventInputOf<InputEvents>) => Effect.Effect<{
|
|
4830
4793
|
readonly next: Machine.Snapshot<States>;
|
|
4831
4794
|
readonly commands: ReadonlyArray<Command>;
|
|
4832
4795
|
readonly emittedEvents: ReadonlyArray<Machine.EmitOf<Emits>>;
|
|
@@ -4972,7 +4935,7 @@ export declare const watch: <State, Event, Error = never, Output = never>(ref: M
|
|
|
4972
4935
|
* @category constructors
|
|
4973
4936
|
* @since 0.11.0
|
|
4974
4937
|
*/
|
|
4975
|
-
export declare const prepare: <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> & EnsureExecutable<States, UnhandledStates, OutputStates>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<Prepared<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>, InitialE | E | ActionError<InitialR | R> | InfiniteTransitionError | MachineSchemaDecodeError | StartupError | StoppedError, ExcludeCompatibleRuntime<ExecutionServices<InitialR | R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>>;
|
|
4938
|
+
export declare const prepare: <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> & EnsureExecutable<States, UnhandledStates, OutputStates> & Machine.RootCompatible<ParentEvents>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<Prepared<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>, InitialE | E | ActionError<InitialR | R> | InfiniteTransitionError | MachineSchemaDecodeError | StartupError | StoppedError, ExcludeCompatibleRuntime<ExecutionServices<InitialR | R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>>;
|
|
4976
4939
|
/**
|
|
4977
4940
|
* Starts a machine.
|
|
4978
4941
|
*
|
|
@@ -5006,10 +4969,7 @@ export declare const prepare: <const States extends Machine.StateSchemas, const
|
|
|
5006
4969
|
* const machine = Machine.make({
|
|
5007
4970
|
* states: States.states,
|
|
5008
4971
|
* events: Machine.events(),
|
|
5009
|
-
* initial: {
|
|
5010
|
-
* target: (to) => to.Idle(),
|
|
5011
|
-
* resolve: ({ target }) => target.from()
|
|
5012
|
-
* }
|
|
4972
|
+
* initial: (to) => to.Idle().resolve(({ target }) => target.from())
|
|
5013
4973
|
* }).handle({ Idle: {} })
|
|
5014
4974
|
*
|
|
5015
4975
|
* const state = Effect.gen(function*() {
|
|
@@ -5023,7 +4983,7 @@ export declare const prepare: <const States extends Machine.StateSchemas, const
|
|
|
5023
4983
|
* @category constructors
|
|
5024
4984
|
* @since 0.4.0
|
|
5025
4985
|
*/
|
|
5026
|
-
export declare const start: <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> & EnsureExecutable<States, UnhandledStates, OutputStates>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<MachineRef<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>>, InitialE | E | ActionError<InitialR | R> | InfiniteTransitionError | MachineSchemaDecodeError | StartupError | StoppedError, ExcludeCompatibleRuntime<ExecutionServices<InitialR | R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>;
|
|
4986
|
+
export declare const start: <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> & EnsureExecutable<States, UnhandledStates, OutputStates> & Machine.RootCompatible<ParentEvents>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<MachineRef<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>>, InitialE | E | ActionError<InitialR | R> | InfiniteTransitionError | MachineSchemaDecodeError | StartupError | StoppedError, ExcludeCompatibleRuntime<ExecutionServices<InitialR | R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>;
|
|
5027
4987
|
/**
|
|
5028
4988
|
* Starts a fresh managed runtime from a decoded logical snapshot.
|
|
5029
4989
|
*
|
|
@@ -5059,10 +5019,7 @@ export declare const start: <const States extends Machine.StateSchemas, const Ev
|
|
|
5059
5019
|
* const machine = Machine.make({
|
|
5060
5020
|
* states: States.states,
|
|
5061
5021
|
* events: Machine.events(),
|
|
5062
|
-
* initial: {
|
|
5063
|
-
* target: (to) => to.Idle(),
|
|
5064
|
-
* resolve: ({ target }) => target.from()
|
|
5065
|
-
* }
|
|
5022
|
+
* initial: (to) => to.Idle().resolve(({ target }) => target.from())
|
|
5066
5023
|
* }).handle({ Idle: {} })
|
|
5067
5024
|
*
|
|
5068
5025
|
* const resumed = Effect.gen(function*() {
|
|
@@ -5078,5 +5035,5 @@ export declare const start: <const States extends Machine.StateSchemas, const Ev
|
|
|
5078
5035
|
* @category constructors
|
|
5079
5036
|
* @since 0.4.0
|
|
5080
5037
|
*/
|
|
5081
|
-
export declare const resume: <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> & EnsureExecutable<States, UnhandledStates, OutputStates>, snapshot: Machine.Snapshot<States>) => Effect.Effect<MachineRef<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>>, MachineSchemaDecodeError, ExcludeCompatibleRuntime<ExecutionServices<R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>;
|
|
5038
|
+
export declare const resume: <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> & EnsureExecutable<States, UnhandledStates, OutputStates> & Machine.RootCompatible<ParentEvents>, snapshot: Machine.Snapshot<States>) => Effect.Effect<MachineRef<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output, Machine.EmittedEventOf<Emits>>, MachineSchemaDecodeError, ExcludeCompatibleRuntime<ExecutionServices<R>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>;
|
|
5082
5039
|
//# sourceMappingURL=Machine.d.ts.map
|