@typeonce/effect-machine 0.16.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +157 -150
- package/dist/Machine.d.ts +416 -592
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +55 -136
- 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/invocation.d.ts.map +1 -1
- package/dist/internal/machine/invocation.js +1 -1
- package/dist/internal/machine/invocation.js.map +1 -1
- package/dist/internal/machine/machine.d.ts +8 -6
- package/dist/internal/machine/machine.d.ts.map +1 -1
- package/dist/internal/machine/machine.js +239 -35
- 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 +15 -15
- 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 +13 -13
- package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
- package/docs/agent-guide.md +229 -193
- package/package.json +1 -1
- package/src/Machine.ts +1686 -2234
- 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/invocation.ts +1 -1
- package/src/internal/machine/machine.ts +365 -48
- 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/exploration.ts +1 -1
- package/src/internal/testing/machine/finiteModel.ts +18 -21
- package/src/internal/testing/machine/trace.ts +1 -1
- package/src/internal/testing/machine/transitionCoverage.ts +2 -0
- package/src/internal/testing/machine/verification.ts +1 -1
- package/src/testing/MachineTest.ts +18 -15
- package/src/unstable/cluster/ClusterMachine.ts +8 -4
- package/src/unstable/reactivity/AtomMachine.ts +20 -13
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,9 @@ 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 InvokeBuilderTypeId: unique symbol;
|
|
478
|
+
declare const InitialBuilderTypeId: unique symbol;
|
|
449
479
|
type StateDefinitionError<Message extends string, Path extends PropertyKey = never, Details extends PropertyKey = never> = {
|
|
450
480
|
readonly "~effect/Machine/DefinitionError": Message;
|
|
451
481
|
readonly path: Path;
|
|
@@ -486,16 +516,21 @@ type ValidateStateNodeConfig<Node extends Machine.StateNodeConfig, Path extends
|
|
|
486
516
|
type ValidateOutputSchema<Node> = "output" extends keyof Node ? Node extends {
|
|
487
517
|
readonly output: Schema.Top;
|
|
488
518
|
} ? unknown : StateDefinitionError<"State output must be a schema"> : unknown;
|
|
519
|
+
type SelectorChildKey<Children extends Machine.StateSchemas> = ActiveStateKey<Children> | ChoiceStateKey<Children>;
|
|
520
|
+
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;
|
|
521
|
+
type ValidateWithSelectorChild<Node extends Machine.StateNodeConfig, Children extends Machine.StateSchemas, Path extends PropertyKey> = Node extends {
|
|
522
|
+
readonly schema: Machine.TaggedSchema;
|
|
523
|
+
} ? "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
524
|
type ValidateStateNodeWithChildren<Node extends Machine.StateNodeConfig, Children, Path extends PropertyKey> = Children extends Machine.StateSchemas ? Node extends {
|
|
490
525
|
readonly type: "final";
|
|
491
526
|
} ? StateDefinitionError<"Final states cannot declare child states"> : Node extends {
|
|
492
527
|
readonly type: "parallel";
|
|
493
|
-
} ? "initial" extends keyof Node ? StateDefinitionError<"Parallel states cannot declare an initial child"> : {
|
|
528
|
+
} ? ValidateInitialSelectorChild<Children, Path> & ("initial" extends keyof Node ? StateDefinitionError<"Parallel states cannot declare an initial child"> : {
|
|
494
529
|
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">;
|
|
530
|
+
} & 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
531
|
type ValidateCompoundStateNode<Node extends Machine.StateNodeConfig, Children extends Machine.StateSchemas, Path extends PropertyKey> = Node extends {
|
|
497
532
|
readonly initial: infer Initial;
|
|
498
|
-
} ? Initial extends ActiveStateKey<Children> | ChoiceStateKey<Children> ? {
|
|
533
|
+
} ? Initial extends ActiveStateKey<Children> | ChoiceStateKey<Children> ? ValidateInitialSelectorChild<Children, Path> & ValidateWithSelectorChild<Node, Children, Path> & {
|
|
499
534
|
readonly states: ValidateStateTree<Children, true, Extract<Path, string>>;
|
|
500
535
|
} : 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
536
|
type ValidateStateNodeWithoutChildren<Node extends Machine.StateNodeConfig> = "initial" extends keyof Node ? StateDefinitionError<"Atomic states cannot declare an initial child"> : Node extends {
|
|
@@ -1164,7 +1199,7 @@ export interface MachineRef<out State, in Event, out Error = never, out Output =
|
|
|
1164
1199
|
readonly childChanges: <Child extends ChildMachine.Any>(child: Child) => Stream.Stream<Option.Option<ChildMachine.Ref<Child>>>;
|
|
1165
1200
|
}
|
|
1166
1201
|
/**
|
|
1167
|
-
* Machine-specific process logic used by `spawn` and
|
|
1202
|
+
* Machine-specific process logic used by `spawn` and state-owned invocations.
|
|
1168
1203
|
*
|
|
1169
1204
|
* @category models
|
|
1170
1205
|
* @since 0.4.0
|
|
@@ -1407,6 +1442,20 @@ export declare namespace Machine {
|
|
|
1407
1442
|
readonly inputEvents: InputEvents;
|
|
1408
1443
|
readonly parentEvents: ParentEvents;
|
|
1409
1444
|
}
|
|
1445
|
+
/** @internal Carries parent availability without widening the event tuple. */
|
|
1446
|
+
type ParentEventSchemas<Mode extends ParentMode, Events extends ReadonlyArray<TaggedSchema>> = Events & {
|
|
1447
|
+
readonly [ParentModeTypeId]: Mode;
|
|
1448
|
+
};
|
|
1449
|
+
/** Extracts the parent availability encoded in a machine event tuple. */
|
|
1450
|
+
type ParentModeOf<Events extends ReadonlyArray<TaggedSchema>> = Events extends {
|
|
1451
|
+
readonly [ParentModeTypeId]: infer Mode extends ParentMode;
|
|
1452
|
+
} ? Mode : Events extends readonly [] ? "none" : "optional";
|
|
1453
|
+
/** Extracts the event schemas declared by an owning-machine protocol. */
|
|
1454
|
+
type ParentEventsOf<Declaration extends Parent.Any | undefined> = Declaration extends Parent<infer Mode, infer Events> ? ParentEventSchemas<Mode, Events> : readonly [];
|
|
1455
|
+
/** Extracts the owning-machine declaration carried by a machine. */
|
|
1456
|
+
type ParentDeclarationOf<Events extends ReadonlyArray<TaggedSchema>> = ParentModeOf<Events> extends infer Mode ? Mode extends ParentMode ? Parent<Mode, Events> : undefined : never;
|
|
1457
|
+
/** Constraint applied to APIs that create an independent root runtime. */
|
|
1458
|
+
type RootCompatible<Events extends ReadonlyArray<TaggedSchema>> = ParentModeOf<Events> extends "required" ? never : unknown;
|
|
1410
1459
|
/**
|
|
1411
1460
|
* Any schema-first machine.
|
|
1412
1461
|
*
|
|
@@ -1427,7 +1476,7 @@ export declare namespace Machine {
|
|
|
1427
1476
|
readonly events: EventProtocol.Any<"public">;
|
|
1428
1477
|
readonly internalEvents: EventProtocol.Any<"internal">;
|
|
1429
1478
|
readonly emittedEvents: EventProtocol.Any<"emitted">;
|
|
1430
|
-
readonly
|
|
1479
|
+
readonly parent: Parent.Any | undefined;
|
|
1431
1480
|
readonly input: Schema.Top | undefined;
|
|
1432
1481
|
readonly id: string | undefined;
|
|
1433
1482
|
/** @internal */
|
|
@@ -1437,8 +1486,6 @@ export declare namespace Machine {
|
|
|
1437
1486
|
/** @internal */
|
|
1438
1487
|
readonly handlers: any;
|
|
1439
1488
|
/** @internal */
|
|
1440
|
-
readonly invoke: any;
|
|
1441
|
-
/** @internal */
|
|
1442
1489
|
readonly initial: any;
|
|
1443
1490
|
/** @internal */
|
|
1444
1491
|
readonly initialDefinition: InitialDefinition;
|
|
@@ -1458,12 +1505,22 @@ export declare namespace Machine {
|
|
|
1458
1505
|
*/
|
|
1459
1506
|
type Events<M extends Any> = M[typeof MachineTypeId]["events"];
|
|
1460
1507
|
/**
|
|
1461
|
-
* Extracts the input schema carried by a machine definition.
|
|
1508
|
+
* Extracts the startup input schema carried by a machine definition.
|
|
1462
1509
|
*
|
|
1463
1510
|
* @category utility types
|
|
1464
|
-
* @since 0.
|
|
1511
|
+
* @since 0.18.0
|
|
1465
1512
|
*/
|
|
1466
|
-
type
|
|
1513
|
+
type InputSchema<M extends Any> = M[typeof MachineTypeId]["input"];
|
|
1514
|
+
/**
|
|
1515
|
+
* Extracts the decoded startup input accepted by a machine definition.
|
|
1516
|
+
*
|
|
1517
|
+
* Machines declared with `Schema.Void` do not accept a startup input, so
|
|
1518
|
+
* their extracted input type is `never`.
|
|
1519
|
+
*
|
|
1520
|
+
* @category utility types
|
|
1521
|
+
* @since 0.18.0
|
|
1522
|
+
*/
|
|
1523
|
+
type Input<M extends Any> = InputSchema<M> extends infer Input extends Schema.Top ? Input extends typeof Schema.Void ? never : Input["Type"] : never;
|
|
1467
1524
|
/**
|
|
1468
1525
|
* Extracts state paths that do not yet have handlers.
|
|
1469
1526
|
*
|
|
@@ -1538,6 +1595,8 @@ export declare namespace Machine {
|
|
|
1538
1595
|
type InputEvents<M extends Any> = M[typeof MachineTypeId]["inputEvents"];
|
|
1539
1596
|
/** Extracts the public input protocol required from an owning machine. */
|
|
1540
1597
|
type ParentEvents<M extends Any> = M[typeof MachineTypeId]["parentEvents"];
|
|
1598
|
+
/** Extracts whether a machine requires or optionally accepts an owner. */
|
|
1599
|
+
type ParentAvailability<M extends Any> = ParentModeOf<M[typeof MachineTypeId]["parentEvents"]>;
|
|
1541
1600
|
/** Extracts an internal event schema tuple from the complete and public protocols. */
|
|
1542
1601
|
type InternalEventSchemas<Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>> = Events extends readonly [
|
|
1543
1602
|
...InputEvents,
|
|
@@ -2054,6 +2113,7 @@ export declare namespace Machine {
|
|
|
2054
2113
|
readonly source: SourcePath;
|
|
2055
2114
|
readonly trigger: TransitionTrigger<EventTag>;
|
|
2056
2115
|
readonly reenter: boolean;
|
|
2116
|
+
readonly acceptance: TransitionAcceptance;
|
|
2057
2117
|
readonly branches: ReadonlyArray<TransitionBranch<TargetPath>>;
|
|
2058
2118
|
}
|
|
2059
2119
|
/**
|
|
@@ -2658,6 +2718,22 @@ export declare namespace Machine {
|
|
|
2658
2718
|
interface NoTarget {
|
|
2659
2719
|
readonly [Topology.NoTargetTypeId]: typeof Topology.NoTargetTypeId;
|
|
2660
2720
|
}
|
|
2721
|
+
/**
|
|
2722
|
+
* Opaque result returned when a declinable transition does not accept the
|
|
2723
|
+
* current event or lifecycle outcome.
|
|
2724
|
+
*
|
|
2725
|
+
* Declining selects no transition and discards operations enqueued by that
|
|
2726
|
+
* resolver. Hierarchical event and eventless dispatch continues with the
|
|
2727
|
+
* next eligible ancestor candidate.
|
|
2728
|
+
*
|
|
2729
|
+
* @category models
|
|
2730
|
+
* @since 0.17.0
|
|
2731
|
+
*/
|
|
2732
|
+
interface Declined {
|
|
2733
|
+
readonly [Topology.DeclinedTypeId]: typeof Topology.DeclinedTypeId;
|
|
2734
|
+
}
|
|
2735
|
+
/** Static acceptance contract of one transition definition. */
|
|
2736
|
+
type TransitionAcceptance = "required" | "declinable";
|
|
2661
2737
|
/**
|
|
2662
2738
|
* Transition instruction that restores a history pseudo-state's parent.
|
|
2663
2739
|
*
|
|
@@ -2821,11 +2897,12 @@ export declare namespace Machine {
|
|
|
2821
2897
|
readonly path: Path;
|
|
2822
2898
|
readonly "~effect/Machine/TargetSelectionResult"?: Types.Covariant<Result>;
|
|
2823
2899
|
}
|
|
2824
|
-
type
|
|
2900
|
+
type SelectionValue<Builder, Path extends string, Kind extends Topology.TargetSelectionKind = "state"> = TargetSelection<Builder, Path, Kind>;
|
|
2901
|
+
type SelectionMethod<Builder, Path extends string, Kind extends Topology.TargetSelectionKind = "state"> = () => SelectionValue<Builder, Path, Kind>;
|
|
2825
2902
|
type InitialSelectionMethod<Builder, Path extends string> = Builder extends {
|
|
2826
2903
|
readonly initial: infer Initial;
|
|
2827
2904
|
} ? {
|
|
2828
|
-
readonly initial:
|
|
2905
|
+
readonly initial: SelectionValue<Initial, Path, "initial">;
|
|
2829
2906
|
} : {};
|
|
2830
2907
|
type SelectionTreeWithPrefix<AllStates extends StateSchemas, States extends StateSchemas, Prefix extends string, Scope extends "local" | "branch", Builder> = {
|
|
2831
2908
|
readonly [Key in Extract<ActiveStateKey<States> | ChoiceStateKey<States>, keyof Builder>]: SelectionNode<AllStates, States[Key], JoinPath<Prefix, Key>, Scope, Builder[Key]>;
|
|
@@ -2843,27 +2920,32 @@ export declare namespace Machine {
|
|
|
2843
2920
|
readonly [Key in Root]: SelectionNode<States, States[Key], Key, "branch", BranchTargetBuilder<States, Source>[Key]>;
|
|
2844
2921
|
} : {} : {};
|
|
2845
2922
|
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:
|
|
2923
|
+
readonly with: SelectionValue<Builder["with"], Scope>;
|
|
2847
2924
|
} : {}) : {} : {} : {};
|
|
2848
2925
|
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 ?
|
|
2926
|
+
readonly [Key in Extract<HistoryContainingKey<States>, keyof Builder>]: States[Key] extends HistoryStateNodeConfig ? SelectionValue<Builder[Key], JoinPath<Prefix, Key>, "history"> : States[Key] extends {
|
|
2850
2927
|
readonly states: infer Children extends StateSchemas;
|
|
2851
2928
|
} ? HistorySelectionTree<AllStates, Children, JoinPath<Prefix, Key>, Builder[Key]> : never;
|
|
2852
2929
|
};
|
|
2853
|
-
/**
|
|
2930
|
+
/**
|
|
2931
|
+
* Definition-time topology selector available to an ordinary transition.
|
|
2932
|
+
* Topology-only instructions (`none`, declared `initial` and history
|
|
2933
|
+
* selections, and `local.with`) are values. State and choice destinations
|
|
2934
|
+
* remain callable selection methods.
|
|
2935
|
+
*/
|
|
2854
2936
|
interface TargetSelector<States extends StateSchemas, Source extends StateNodeIdentifier<States>> {
|
|
2855
|
-
readonly none:
|
|
2937
|
+
readonly none: SelectionValue<TargetBuilder<States, Source>["none"], never, "none">;
|
|
2856
2938
|
readonly local: LocalTargetSelector<States, Source>;
|
|
2857
2939
|
readonly branch: BranchTargetSelector<States, Source>;
|
|
2858
2940
|
readonly full: FullTargetSelector<States>;
|
|
2859
2941
|
readonly history: HistorySelectionTree<States, States, "", HistoryTargetBuilder<States>>;
|
|
2860
2942
|
}
|
|
2861
2943
|
/** Definition-time selector that can choose only a valid top-level initial entry. */
|
|
2862
|
-
type
|
|
2944
|
+
type InitialTargetSelector<States extends StateSchemas> = {
|
|
2863
2945
|
readonly [Key in Extract<ActiveStateKey<States>, keyof InitialBuilder<States>>]: States[Key] extends {
|
|
2864
2946
|
readonly states: StateSchemas;
|
|
2865
2947
|
} ? {
|
|
2866
|
-
readonly initial:
|
|
2948
|
+
readonly initial: SelectionValue<InitialBuilder<States>[Key], Key, "initial">;
|
|
2867
2949
|
} : SelectionMethod<InitialBuilder<States>[Key], Key>;
|
|
2868
2950
|
};
|
|
2869
2951
|
/**
|
|
@@ -2872,7 +2954,7 @@ export declare namespace Machine {
|
|
|
2872
2954
|
* @category models
|
|
2873
2955
|
* @since 0.4.0
|
|
2874
2956
|
*/
|
|
2875
|
-
|
|
2957
|
+
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
2958
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2877
2959
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2878
2960
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
@@ -2886,38 +2968,38 @@ export declare namespace Machine {
|
|
|
2886
2968
|
* @since 0.4.0
|
|
2887
2969
|
*/
|
|
2888
2970
|
readonly target: TargetBuilder<States, StateId>;
|
|
2889
|
-
}
|
|
2971
|
+
};
|
|
2890
2972
|
/**
|
|
2891
2973
|
* Context passed to an entry or exit state handler.
|
|
2892
2974
|
*
|
|
2893
2975
|
* @category models
|
|
2894
2976
|
* @since 0.4.0
|
|
2895
2977
|
*/
|
|
2896
|
-
|
|
2978
|
+
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
2979
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2898
2980
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2899
2981
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2900
2982
|
readonly event: LifecycleEvent<Events>;
|
|
2901
|
-
}
|
|
2983
|
+
};
|
|
2902
2984
|
/**
|
|
2903
2985
|
* Context passed to a function-valued invocation source.
|
|
2904
2986
|
*
|
|
2905
2987
|
* @category models
|
|
2906
2988
|
* @since 0.4.0
|
|
2907
2989
|
*/
|
|
2908
|
-
|
|
2990
|
+
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
2991
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2910
2992
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2911
2993
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2912
2994
|
readonly event: LifecycleEvent<Events>;
|
|
2913
|
-
}
|
|
2995
|
+
};
|
|
2914
2996
|
/**
|
|
2915
2997
|
* Context passed to an invocation's active-snapshot transition.
|
|
2916
2998
|
*
|
|
2917
2999
|
* @category models
|
|
2918
3000
|
* @since 0.4.0
|
|
2919
3001
|
*/
|
|
2920
|
-
|
|
3002
|
+
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
3003
|
readonly id: string;
|
|
2922
3004
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2923
3005
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
@@ -2926,14 +3008,14 @@ export declare namespace Machine {
|
|
|
2926
3008
|
readonly snapshot: Extract<RuntimeSnapshot<State, Error, Output>, {
|
|
2927
3009
|
readonly status: "active";
|
|
2928
3010
|
}>;
|
|
2929
|
-
}
|
|
3011
|
+
};
|
|
2930
3012
|
/**
|
|
2931
3013
|
* Context passed to an invocation's successful completion transition.
|
|
2932
3014
|
*
|
|
2933
3015
|
* @category models
|
|
2934
3016
|
* @since 0.4.0
|
|
2935
3017
|
*/
|
|
2936
|
-
|
|
3018
|
+
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
3019
|
readonly id: string;
|
|
2938
3020
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2939
3021
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
@@ -2941,9 +3023,9 @@ export declare namespace Machine {
|
|
|
2941
3023
|
readonly snapshot: Snapshot<States>;
|
|
2942
3024
|
readonly target: TargetBuilder<States, StateId>;
|
|
2943
3025
|
readonly output: Output;
|
|
2944
|
-
}
|
|
3026
|
+
};
|
|
2945
3027
|
/** Context passed to a Stream invocation's element transition. */
|
|
2946
|
-
|
|
3028
|
+
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
3029
|
readonly id: string;
|
|
2948
3030
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2949
3031
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
@@ -2951,9 +3033,9 @@ export declare namespace Machine {
|
|
|
2951
3033
|
readonly snapshot: Snapshot<States>;
|
|
2952
3034
|
readonly target: TargetBuilder<States, StateId>;
|
|
2953
3035
|
readonly element: Element;
|
|
2954
|
-
}
|
|
3036
|
+
};
|
|
2955
3037
|
/** Context passed to an invocation typed-failure transition. */
|
|
2956
|
-
|
|
3038
|
+
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
3039
|
readonly id: string;
|
|
2958
3040
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2959
3041
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
@@ -2961,14 +3043,14 @@ export declare namespace Machine {
|
|
|
2961
3043
|
readonly snapshot: Snapshot<States>;
|
|
2962
3044
|
readonly target: TargetBuilder<States, StateId>;
|
|
2963
3045
|
readonly error: Error;
|
|
2964
|
-
}
|
|
3046
|
+
};
|
|
2965
3047
|
/**
|
|
2966
3048
|
* Context passed to an eventless transition handler.
|
|
2967
3049
|
*
|
|
2968
3050
|
* @category models
|
|
2969
3051
|
* @since 0.4.0
|
|
2970
3052
|
*/
|
|
2971
|
-
|
|
3053
|
+
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
3054
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2973
3055
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2974
3056
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
@@ -2983,14 +3065,14 @@ export declare namespace Machine {
|
|
|
2983
3065
|
* @since 0.4.0
|
|
2984
3066
|
*/
|
|
2985
3067
|
readonly target: TargetBuilder<States, StateId>;
|
|
2986
|
-
}
|
|
3068
|
+
};
|
|
2987
3069
|
/**
|
|
2988
3070
|
* Context passed to a state completion transition handler.
|
|
2989
3071
|
*
|
|
2990
3072
|
* @category models
|
|
2991
3073
|
* @since 0.4.0
|
|
2992
3074
|
*/
|
|
2993
|
-
|
|
3075
|
+
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
3076
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2995
3077
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2996
3078
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
@@ -3006,16 +3088,16 @@ export declare namespace Machine {
|
|
|
3006
3088
|
* @since 0.4.0
|
|
3007
3089
|
*/
|
|
3008
3090
|
readonly target: TargetBuilder<States, StateId>;
|
|
3009
|
-
}
|
|
3091
|
+
};
|
|
3010
3092
|
/** Context passed to a transient choice resolver. There is no `state` value. */
|
|
3011
|
-
|
|
3093
|
+
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
3094
|
readonly containingState: StateByIdentifier<States, Extract<ImmediateParentStateIdentifier<ChoiceId>, StateIdentifier<States>>>;
|
|
3013
3095
|
readonly ancestors: {
|
|
3014
3096
|
readonly [Parent in Extract<ParentStateIdentifier<ChoiceId>, ValuedStateIdentifier<States>>]: StateByIdentifier<States, Parent>;
|
|
3015
3097
|
};
|
|
3016
3098
|
readonly event: LifecycleEvent<Events>;
|
|
3017
3099
|
readonly target: TargetBuilder<States, ChoiceId>;
|
|
3018
|
-
}
|
|
3100
|
+
};
|
|
3019
3101
|
/**
|
|
3020
3102
|
* Context passed to a final state output function.
|
|
3021
3103
|
*
|
|
@@ -3144,7 +3226,7 @@ export declare namespace Machine {
|
|
|
3144
3226
|
* @category utility types
|
|
3145
3227
|
* @since 0.4.0
|
|
3146
3228
|
*/
|
|
3147
|
-
type EventTransitionReturn<Transition> = Transition extends {
|
|
3229
|
+
type EventTransitionReturn<Transition> = Transition extends (...args: any) => infer Authored ? Authored extends TransitionBuilderEvidence<infer Result, any> ? Result : never : Transition extends {
|
|
3148
3230
|
readonly resolve?: infer Resolve;
|
|
3149
3231
|
} ? NonNullable<Resolve> extends (...args: any) => infer Ret ? Ret : never : never;
|
|
3150
3232
|
/**
|
|
@@ -3254,6 +3336,10 @@ export declare namespace Machine {
|
|
|
3254
3336
|
} ? EventOf<ParentEvents<M>> : never;
|
|
3255
3337
|
/** Extracts transition results returned by invocation lifecycle handlers. */
|
|
3256
3338
|
type InvokeOutcomeReturn<Invoke> = Invoke extends unknown ? (Invoke extends {
|
|
3339
|
+
readonly [InvokeTypeId]: {
|
|
3340
|
+
readonly outcomes: Types.Covariant<infer Outcomes>;
|
|
3341
|
+
};
|
|
3342
|
+
} ? EventTransitionReturn<Outcomes> : never) | (Invoke extends {
|
|
3257
3343
|
readonly onDone?: infer Handler;
|
|
3258
3344
|
} ? EventTransitionReturn<NonNullable<Handler>> : never) | (Invoke extends {
|
|
3259
3345
|
readonly onFailure?: infer Handler;
|
|
@@ -3262,20 +3348,22 @@ export declare namespace Machine {
|
|
|
3262
3348
|
} ? EventTransitionReturn<NonNullable<Handler>> : never) | (Invoke extends {
|
|
3263
3349
|
readonly onSnapshot?: infer Handler;
|
|
3264
3350
|
} ? EventTransitionReturn<NonNullable<Handler>> : never) : never;
|
|
3351
|
+
type InvokeOutcomeError<Invoke> = IsAny<InvokeOutcomeReturn<Invoke>> extends true ? never : Effect.Error<InvokeOutcomeReturn<Invoke>>;
|
|
3352
|
+
type InvokeOutcomeServices<Invoke> = IsAny<InvokeOutcomeReturn<Invoke>> extends true ? never : Effect.Services<InvokeOutcomeReturn<Invoke>>;
|
|
3265
3353
|
/**
|
|
3266
3354
|
* Extracts the parent transition error contribution from invoked children.
|
|
3267
3355
|
*
|
|
3268
3356
|
* @category utility types
|
|
3269
3357
|
* @since 0.4.0
|
|
3270
3358
|
*/
|
|
3271
|
-
type InvokeError<Config> = [InvokeReturn<Config>] extends [never] ? never : ChildAlreadyExistsError | InvokeInitialError<InvokeReturn<Config>> |
|
|
3359
|
+
type InvokeError<Config> = [InvokeReturn<Config>] extends [never] ? never : ChildAlreadyExistsError | InvokeInitialError<InvokeReturn<Config>> | InvokeOutcomeError<InvokeReturn<Config>>;
|
|
3272
3360
|
/**
|
|
3273
3361
|
* Extracts the parent service requirement contribution from invoked children.
|
|
3274
3362
|
*
|
|
3275
3363
|
* @category utility types
|
|
3276
3364
|
* @since 0.4.0
|
|
3277
3365
|
*/
|
|
3278
|
-
type InvokeRequirements<Config> = [InvokeReturn<Config>] extends [never] ? never : MachineRuntimeRequirement | InvokeServices<InvokeReturn<Config>> |
|
|
3366
|
+
type InvokeRequirements<Config> = [InvokeReturn<Config>] extends [never] ? never : MachineRuntimeRequirement | InvokeServices<InvokeReturn<Config>> | InvokeOutcomeServices<InvokeReturn<Config>>;
|
|
3279
3367
|
/**
|
|
3280
3368
|
* Extracts the return value from an eventless transition.
|
|
3281
3369
|
*
|
|
@@ -3310,32 +3398,15 @@ export declare namespace Machine {
|
|
|
3310
3398
|
* @since 0.4.0
|
|
3311
3399
|
*/
|
|
3312
3400
|
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> {
|
|
3401
|
+
/** Type evidence retained by an authored transition without affecting runtime data. */
|
|
3402
|
+
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
3403
|
readonly [TransitionTypeId]: {
|
|
3316
3404
|
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;
|
|
3405
|
+
readonly acceptance: Types.Covariant<Acceptance>;
|
|
3323
3406
|
};
|
|
3324
3407
|
}
|
|
3325
3408
|
/** 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
|
-
};
|
|
3409
|
+
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
3410
|
type SelectionBuilder<Selection> = Selection extends TargetSelection<infer Builder, any, any> ? Builder : never;
|
|
3340
3411
|
type SelectionKind<Selection> = Selection extends TargetSelection<any, any, infer Kind> ? Kind : never;
|
|
3341
3412
|
type SelectionPath<Selection> = Selection extends TargetSelection<any, infer Path, any> ? Path : never;
|
|
@@ -3343,16 +3414,18 @@ export declare namespace Machine {
|
|
|
3343
3414
|
readonly from: (...args: any) => infer Result;
|
|
3344
3415
|
} ? Result : never);
|
|
3345
3416
|
type SelectedTargetResult<Selection> = SelectionBuilder<Selection> extends infer Builder ? TargetBuilderResult<Builder> : never;
|
|
3417
|
+
type SelectionSupportsDefaultConstruction<Selection> = SelectionKind<Selection> extends "none" ? true : SelectionBuilder<Selection> extends {
|
|
3418
|
+
readonly from: (...args: infer Args) => any;
|
|
3419
|
+
} ? [] extends Args ? true : false : SelectionBuilder<Selection> extends (...args: infer Args) => any ? [] extends Args ? true : false : false;
|
|
3346
3420
|
type TransitionResolveContext<Context, Selection> = Omit<Context, "target"> & (SelectionKind<Selection> extends "none" ? {} : {
|
|
3347
3421
|
readonly target: SelectionBuilder<Selection>;
|
|
3348
3422
|
});
|
|
3423
|
+
/** Context capability available only to explicitly declinable resolvers. */
|
|
3424
|
+
interface DeclineCapability {
|
|
3425
|
+
readonly decline: () => Declined;
|
|
3426
|
+
}
|
|
3349
3427
|
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
|
-
};
|
|
3428
|
+
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
3429
|
/** One named destination declared by a branching transition. */
|
|
3357
3430
|
interface TransitionBranchInput<Selection extends TargetSelection<any, any, any> = TargetSelection<any, any, any>> {
|
|
3358
3431
|
readonly target: Selection;
|
|
@@ -3387,27 +3460,85 @@ export declare namespace Machine {
|
|
|
3387
3460
|
readonly select: BranchSelectors<Branches>;
|
|
3388
3461
|
};
|
|
3389
3462
|
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?:
|
|
3463
|
+
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;
|
|
3464
|
+
/** @internal Type evidence retained by a transition authored through its bound selector. */
|
|
3465
|
+
interface TransitionBuilderEvidence<out Result, out Acceptance extends TransitionAcceptance> {
|
|
3466
|
+
readonly [TransitionBuilderTypeId]: {
|
|
3467
|
+
readonly result: Types.Covariant<Result>;
|
|
3468
|
+
readonly acceptance: Types.Covariant<Acceptance>;
|
|
3469
|
+
};
|
|
3470
|
+
}
|
|
3471
|
+
type TransitionReenterOption<Reenter extends boolean> = [Reenter] extends [true] ? {
|
|
3472
|
+
readonly reenter?: boolean;
|
|
3473
|
+
} : {
|
|
3474
|
+
readonly reenter?: never;
|
|
3402
3475
|
};
|
|
3403
|
-
type
|
|
3476
|
+
type TransitionRequiredOptions<Reenter extends boolean> = TransitionReenterOption<Reenter> & {
|
|
3477
|
+
readonly declinable?: false;
|
|
3478
|
+
};
|
|
3479
|
+
type TransitionDeclinableOptions<Reenter extends boolean> = TransitionReenterOption<Reenter> & {
|
|
3480
|
+
readonly declinable: true;
|
|
3481
|
+
};
|
|
3482
|
+
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>;
|
|
3483
|
+
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>> {
|
|
3484
|
+
(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">;
|
|
3485
|
+
}
|
|
3486
|
+
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>> {
|
|
3487
|
+
(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">;
|
|
3488
|
+
}
|
|
3489
|
+
/** A selected transition target with target-specific resolver operations. */
|
|
3490
|
+
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"> : {}) & {
|
|
3491
|
+
readonly resolve: TransitionResolveRequired<States, Events, Emits, StateId, Context, Reenter, Selection> & ("declinable" extends Acceptance ? TransitionResolveDeclinable<States, Events, Emits, StateId, Context, Reenter, Selection> : {});
|
|
3492
|
+
} & ([Reenter] extends [true] ? SelectionSupportsDefaultConstruction<Selection> extends true ? {
|
|
3493
|
+
readonly reenter: () => BuiltTransition<States, Events, Emits, StateId, Context, Reenter, SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined, "required">;
|
|
3494
|
+
} : {} : {});
|
|
3495
|
+
/** @internal Type evidence retained by a machine initial-entry declaration. */
|
|
3496
|
+
interface InitialBuilderEvidence<out Selection> {
|
|
3497
|
+
readonly [InitialBuilderTypeId]: Types.Covariant<Selection>;
|
|
3498
|
+
}
|
|
3499
|
+
/** A selected machine initial entry with its exact resolver target. */
|
|
3500
|
+
type InitialTransitionTarget<Input, Selection extends TargetSelection<any, any, any>> = Selection & (SelectionSupportsDefaultConstruction<Selection> extends true ? InitialBuilderEvidence<Selection> : {}) & {
|
|
3501
|
+
readonly resolve: (resolve: (context: {
|
|
3502
|
+
readonly input: Input;
|
|
3503
|
+
readonly target: SelectionBuilder<Selection>;
|
|
3504
|
+
}) => SelectedTargetResult<Selection>) => InitialBuilderEvidence<Selection>;
|
|
3505
|
+
};
|
|
3506
|
+
type InitialSelectorNode<Input, Node> = Node extends (...args: infer Args) => infer Selection ? Selection extends TargetSelection<any, any, any> ? ((...args: Args) => InitialTransitionTarget<Input, Selection>) & {
|
|
3507
|
+
readonly [Key in keyof Node]: InitialSelectorNode<Input, Node[Key]>;
|
|
3508
|
+
} : never : Node extends TargetSelection<any, any, any> ? InitialTransitionTarget<Input, Node> : {
|
|
3509
|
+
readonly [Key in keyof Node]: InitialSelectorNode<Input, Node[Key]>;
|
|
3510
|
+
};
|
|
3511
|
+
/** Definition-time selector for a machine's top-level initial entry. */
|
|
3512
|
+
type InitialSelector<States extends StateSchemas, Input = void> = InitialSelectorNode<Input, InitialTargetSelector<States>>;
|
|
3513
|
+
/** Target-first initial-entry declaration accepted by {@link make}. */
|
|
3514
|
+
type InitialBuilderInput<States extends StateSchemas, Input> = (to: InitialSelector<States, Input>) => InitialBuilderEvidence<TargetSelection<any, any, any>>;
|
|
3515
|
+
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>) & {
|
|
3516
|
+
readonly [Key in keyof Node]: TransitionSelectorNode<States, Events, Emits, StateId, Context, Reenter, Acceptance, Node[Key]>;
|
|
3517
|
+
} : never : Node extends TargetSelection<any, any, any> ? TransitionTarget<States, Events, Emits, StateId, Context, Reenter, Acceptance, Node> : {
|
|
3518
|
+
readonly [Key in keyof Node]: TransitionSelectorNode<States, Events, Emits, StateId, Context, Reenter, Acceptance, Node[Key]>;
|
|
3519
|
+
};
|
|
3520
|
+
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>>> {
|
|
3521
|
+
(resolve: TransitionBranchesResolver<Events, Emits, Context, Branches>, options?: TransitionRequiredOptions<Reenter>): BuiltTransition<States, Events, Emits, StateId, Context, Reenter, BranchSelectionResult<Branches>, "required">;
|
|
3522
|
+
}
|
|
3523
|
+
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>>> {
|
|
3524
|
+
(resolve: DeclinableTransitionBranchesResolver<Events, Emits, Context, Branches>, options: TransitionDeclinableOptions<Reenter>): BuiltTransition<States, Events, Emits, StateId, Context, Reenter, BranchSelectionResult<Branches> | Declined, "declinable">;
|
|
3525
|
+
}
|
|
3526
|
+
/** Selector supplied to inline transition declarations. */
|
|
3527
|
+
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>> & {
|
|
3528
|
+
readonly branches: <const Branches extends Readonly<Record<string, TransitionBranchInput>>>(branches: Branches & ValidateTransitionBranchRecord<NoInfer<Branches>>) => {
|
|
3529
|
+
readonly resolve: TransitionBranchesResolveRequired<States, Events, Emits, StateId, Context, Reenter, Branches> & ("declinable" extends Acceptance ? TransitionBranchesResolveDeclinable<States, Events, Emits, StateId, Context, Reenter, Branches> : {});
|
|
3530
|
+
};
|
|
3531
|
+
};
|
|
3532
|
+
/** Inline transition declaration accepted by state and invocation handlers. */
|
|
3533
|
+
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>;
|
|
3534
|
+
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
3535
|
type InvokeSource<Value, Context> = Value | ((context: Context) => Value);
|
|
3405
3536
|
/** 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]>;
|
|
3537
|
+
interface InvokeOwned<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> {
|
|
3538
|
+
readonly "~effect/Machine/InvokeOwner"?: Types.Covariant<readonly [States, Events, Emits, StateId, InputEvents, ParentEvents]>;
|
|
3408
3539
|
}
|
|
3409
|
-
/** Type evidence retained by
|
|
3410
|
-
interface InvokeTyped<Output, Error, Requirements, InitialError, Emits = never, ParentEvent = never> {
|
|
3540
|
+
/** Type evidence retained by a completed state-owned invocation. */
|
|
3541
|
+
interface InvokeTyped<Output, Error, Requirements, InitialError, Emits = never, ParentEvent = never, Outcomes = never> {
|
|
3411
3542
|
readonly [InvokeTypeId]: {
|
|
3412
3543
|
readonly output: Types.Covariant<Output>;
|
|
3413
3544
|
readonly error: Types.Covariant<Error>;
|
|
@@ -3415,9 +3546,10 @@ export declare namespace Machine {
|
|
|
3415
3546
|
readonly initialError: Types.Covariant<InitialError>;
|
|
3416
3547
|
readonly emits: Types.Covariant<Emits>;
|
|
3417
3548
|
readonly parentEvents: Types.Covariant<ParentEvent>;
|
|
3549
|
+
readonly outcomes: Types.Covariant<Outcomes>;
|
|
3418
3550
|
};
|
|
3419
3551
|
}
|
|
3420
|
-
type
|
|
3552
|
+
type StoredInvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & ({
|
|
3421
3553
|
readonly id: string;
|
|
3422
3554
|
readonly effect: (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<any, any, any>;
|
|
3423
3555
|
readonly stream?: never;
|
|
@@ -3479,76 +3611,7 @@ export declare namespace Machine {
|
|
|
3479
3611
|
readonly onElement?: never;
|
|
3480
3612
|
readonly onSnapshot?: unknown;
|
|
3481
3613
|
});
|
|
3482
|
-
|
|
3483
|
-
type InvokeDefinition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> | ReadonlyArray<InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3484
|
-
type TypedInvokeDefinition = InvokeTyped<any, any, any, any, any, any> | ReadonlyArray<InvokeTyped<any, any, any, any, any, any>>;
|
|
3485
|
-
type InvokeHandlerRequirement<Value, Handler> = IsAny<Value> extends true ? {
|
|
3486
|
-
readonly handler: Handler;
|
|
3487
|
-
} : [Value] extends [never] ? {
|
|
3488
|
-
readonly handler?: never;
|
|
3489
|
-
} : {
|
|
3490
|
-
readonly handler: Handler;
|
|
3491
|
-
};
|
|
3492
|
-
type InvokeDoneRequirement<Value, Handler> = InvokeHandlerRequirement<Value, Handler> extends infer Requirement ? Requirement extends {
|
|
3493
|
-
readonly handler: infer Required;
|
|
3494
|
-
} ? {
|
|
3495
|
-
readonly onDone: Required;
|
|
3496
|
-
} : {
|
|
3497
|
-
readonly onDone?: never;
|
|
3498
|
-
} : never;
|
|
3499
|
-
type InvokeFailureRequirement<Value, Handler> = InvokeHandlerRequirement<Value, Handler> extends infer Requirement ? Requirement extends {
|
|
3500
|
-
readonly handler: infer Required;
|
|
3501
|
-
} ? {
|
|
3502
|
-
readonly onFailure: Required;
|
|
3503
|
-
} : {
|
|
3504
|
-
readonly onFailure?: never;
|
|
3505
|
-
} : never;
|
|
3506
|
-
type InvokeElementRequirement<Value, Handler> = InvokeHandlerRequirement<Value, Handler> extends infer Requirement ? Requirement extends {
|
|
3507
|
-
readonly handler: infer Required;
|
|
3508
|
-
} ? {
|
|
3509
|
-
readonly onElement: Required;
|
|
3510
|
-
} : {
|
|
3511
|
-
readonly onElement?: never;
|
|
3512
|
-
} : never;
|
|
3513
|
-
type TimerInvokeArgs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = {
|
|
3514
|
-
readonly id: InvokeLifecycleId;
|
|
3515
|
-
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3516
|
-
readonly effect?: never;
|
|
3517
|
-
readonly stream?: never;
|
|
3518
|
-
readonly logic?: never;
|
|
3519
|
-
readonly child?: never;
|
|
3520
|
-
readonly address?: never;
|
|
3521
|
-
readonly onFailure?: never;
|
|
3522
|
-
readonly onElement?: never;
|
|
3523
|
-
readonly onSnapshot?: never;
|
|
3524
|
-
readonly onDone: InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, void, InputEvents, ParentEvents>>;
|
|
3525
|
-
};
|
|
3526
|
-
type LogicInvokeArgs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address extends ChildAddress<never>, Source = Logic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = {
|
|
3527
|
-
readonly id: InvokeLifecycleId;
|
|
3528
|
-
readonly address: Address & ChildAddress.Compatibility<Address, ChildEvent>;
|
|
3529
|
-
readonly logic: Source;
|
|
3530
|
-
readonly effect?: never;
|
|
3531
|
-
readonly stream?: never;
|
|
3532
|
-
readonly after?: never;
|
|
3533
|
-
readonly child?: never;
|
|
3534
|
-
readonly onElement?: never;
|
|
3535
|
-
readonly onSnapshot?: InvokeTransition<States, Events, Emits, StateId, InvokeSnapshotContext<States, Events, Emits, StateId, NoInfer<ChildState>, NoInfer<ChildError>, NoInfer<ChildOutput>, InputEvents, ParentEvents>>;
|
|
3536
|
-
} & InvokeDoneRequirement<NoInfer<ChildOutput>, InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, NoInfer<ChildOutput>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<NoInfer<ChildError>, InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, NoInfer<ChildError>, InputEvents, ParentEvents>>>;
|
|
3537
|
-
type ChildInvokeArgs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, ChildDefinition extends Machine.Any, Child extends ChildMachine<string, ChildDefinition>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = {
|
|
3538
|
-
readonly child: Child & (ChildDefinition extends EnsureExecutable<Machine.States<ChildDefinition>, Machine.UnhandledStates<ChildDefinition>, Machine.OutputStates<ChildDefinition>> ? unknown : never);
|
|
3539
|
-
readonly id?: never;
|
|
3540
|
-
readonly address?: never;
|
|
3541
|
-
readonly effect?: never;
|
|
3542
|
-
readonly stream?: never;
|
|
3543
|
-
readonly after?: never;
|
|
3544
|
-
readonly logic?: never;
|
|
3545
|
-
readonly onElement?: never;
|
|
3546
|
-
readonly onSnapshot?: InvokeTransition<States, Events, Emits, StateId, InvokeSnapshotContext<States, Events, Emits, StateId, Snapshot<Machine.States<ChildDefinition>>, Error<ChildDefinition>, Output<ChildDefinition>, InputEvents, ParentEvents>>;
|
|
3547
|
-
} & (Input<ChildDefinition> extends typeof Schema.Void ? {
|
|
3548
|
-
readonly input?: never;
|
|
3549
|
-
} : {
|
|
3550
|
-
readonly input: InvokeSource<Input<ChildDefinition>["Type"], InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3551
|
-
}) & InvokeDoneRequirement<Output<ChildDefinition>, InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, Output<ChildDefinition>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, InputEvents, ParentEvents>>>;
|
|
3614
|
+
type StoredInvokeDefinition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = StoredInvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> | ReadonlyArray<StoredInvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3552
3615
|
type LogicInitialEffectOf<Value> = Value extends {
|
|
3553
3616
|
readonly initial: infer Initial;
|
|
3554
3617
|
} ? Initial extends (...args: ReadonlyArray<any>) => infer Result ? Result : never : never;
|
|
@@ -3563,40 +3626,85 @@ export declare namespace Machine {
|
|
|
3563
3626
|
type LogicServicesOf<Value> = Effect.Services<LogicInitialEffectOf<Value> | LogicRunEffectOf<Value>>;
|
|
3564
3627
|
type LogicOutputOf<Value> = Effect.Success<LogicRunEffectOf<Value>>;
|
|
3565
3628
|
type LogicInitialErrorOf<Value> = Effect.Error<LogicInitialEffectOf<Value>>;
|
|
3566
|
-
type
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
|
|
3570
|
-
|
|
3571
|
-
readonly
|
|
3572
|
-
}
|
|
3573
|
-
readonly
|
|
3574
|
-
}
|
|
3575
|
-
readonly
|
|
3576
|
-
} :
|
|
3577
|
-
readonly
|
|
3578
|
-
}
|
|
3579
|
-
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
3593
|
-
|
|
3594
|
-
|
|
3595
|
-
readonly
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
|
|
3599
|
-
|
|
3629
|
+
type RequiredInvokeChannel<Value, Channel extends string> = IsAny<Value> extends true ? Channel : [Value] extends [never] ? never : Channel;
|
|
3630
|
+
type InvokeBuilderResult<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Outcomes> = InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & InvokeTyped<Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Outcomes> & {
|
|
3631
|
+
readonly [InvokeBuilderTypeId]: true;
|
|
3632
|
+
};
|
|
3633
|
+
type InvokeBuilder<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Element, Pending extends string, SnapshotHandler, Outcomes = never> = ([Pending] extends [never] ? InvokeBuilderResult<States, Events, Emits, StateId, InputEvents, ParentEvents, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Outcomes> : {}) & ("done" extends Pending ? {
|
|
3634
|
+
readonly onDone: <const Handler extends InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, Output, InputEvents, ParentEvents>>>(handler: Handler & InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, Output, InputEvents, ParentEvents>>) => InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Element, Exclude<Pending, "done">, SnapshotHandler, Outcomes | Handler>;
|
|
3635
|
+
} : {}) & ("failure" extends Pending ? {
|
|
3636
|
+
readonly onFailure: <const Handler extends InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, Error, InputEvents, ParentEvents>>>(handler: Handler & InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, Error, InputEvents, ParentEvents>>) => InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Element, Exclude<Pending, "failure">, SnapshotHandler, Outcomes | Handler>;
|
|
3637
|
+
} : {}) & ("element" extends Pending ? {
|
|
3638
|
+
readonly onElement: <const Handler extends InvokeTransition<States, Events, Emits, StateId, InvokeElementContext<States, Events, Emits, StateId, Element, InputEvents, ParentEvents>>>(handler: Handler & InvokeTransition<States, Events, Emits, StateId, InvokeElementContext<States, Events, Emits, StateId, Element, InputEvents, ParentEvents>>) => InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Element, Exclude<Pending, "element">, SnapshotHandler, Outcomes | Handler>;
|
|
3639
|
+
} : {}) & ([SnapshotHandler] extends [never] ? {} : {
|
|
3640
|
+
readonly onSnapshot: <const Handler extends SnapshotHandler>(handler: Handler & SnapshotHandler) => InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Output, Error, Requirements, InitialError, ChildEmits, ChildParentEvent, Element, Pending, never, Outcomes | Handler>;
|
|
3641
|
+
});
|
|
3642
|
+
type EffectInvokeBuilder<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Source extends (...args: ReadonlyArray<any>) => Effect.Effect<any, any, any>> = InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never, never, never, never, RequiredInvokeChannel<Effect.Success<ReturnType<Source>>, "done"> | RequiredInvokeChannel<Effect.Error<ReturnType<Source>>, "failure">, never>;
|
|
3643
|
+
type StreamInvokeBuilder<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Source extends (...args: ReadonlyArray<any>) => Stream.Stream<any, any, any>> = InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, void, Stream.Error<ReturnType<Source>>, Stream.Services<ReturnType<Source>>, never, never, never, Stream.Success<ReturnType<Source>>, "done" | RequiredInvokeChannel<Stream.Success<ReturnType<Source>>, "element"> | RequiredInvokeChannel<Stream.Error<ReturnType<Source>>, "failure">, never>;
|
|
3644
|
+
type LogicInvokeBuilder<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, ChildLogic> = InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, LogicOutputOf<ChildLogic>, LogicErrorOf<ChildLogic>, LogicServicesOf<ChildLogic>, LogicInitialErrorOf<ChildLogic>, never, never, never, RequiredInvokeChannel<LogicOutputOf<ChildLogic>, "done"> | RequiredInvokeChannel<LogicErrorOf<ChildLogic>, "failure">, InvokeTransition<States, Events, Emits, StateId, InvokeSnapshotContext<States, Events, Emits, StateId, LogicStateOf<ChildLogic>, LogicErrorOf<ChildLogic>, LogicOutputOf<ChildLogic>, InputEvents, ParentEvents>>>;
|
|
3645
|
+
type ChildInvokeBuilder<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Child extends ChildMachine.Any, ChildDefinition extends Machine.Any = Child["machine"]> = InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Output<ChildDefinition>, Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, Services<ChildDefinition>, InitialError<ChildDefinition>, Emit<ChildDefinition>, EventOf<Machine.ParentEvents<ChildDefinition>>, never, RequiredInvokeChannel<Output<ChildDefinition>, "done"> | RequiredInvokeChannel<Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, "failure">, InvokeTransition<States, Events, Emits, StateId, InvokeSnapshotContext<States, Events, Emits, StateId, Snapshot<Machine.States<ChildDefinition>>, Error<ChildDefinition>, Output<ChildDefinition>, InputEvents, ParentEvents>>>;
|
|
3646
|
+
/**
|
|
3647
|
+
* Selects state-owned work and begins its lifecycle-handler chain.
|
|
3648
|
+
*
|
|
3649
|
+
* Each source exposes exactly the lifecycle methods that it can produce. A
|
|
3650
|
+
* chain becomes returnable from `invoke` only after every reachable required
|
|
3651
|
+
* channel has been handled.
|
|
3652
|
+
*
|
|
3653
|
+
* @category models
|
|
3654
|
+
* @since 0.18.0
|
|
3655
|
+
*/
|
|
3656
|
+
interface InvokeSelector<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> {
|
|
3657
|
+
/** Starts a fresh Effect each time the owning state is entered. */
|
|
3658
|
+
readonly effect: <const Source extends (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>>(id: InvokeLifecycleId, source: Source) => EffectInvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Source>;
|
|
3659
|
+
/** Starts a fresh, backpressured Stream each time the owning state is entered. */
|
|
3660
|
+
readonly stream: <const Source extends (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, unknown, any>>(id: InvokeLifecycleId, source: Source) => StreamInvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Source>;
|
|
3661
|
+
/** Starts a cancellable state-scoped timer. */
|
|
3662
|
+
readonly timer: (id: InvokeLifecycleId, duration: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>) => InvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, void, never, never, never, never, never, never, "done", never>;
|
|
3663
|
+
/** Starts reusable process logic at a typed parent-local address. */
|
|
3664
|
+
readonly logic: {
|
|
3665
|
+
<const Source extends (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown, Address extends ChildAddress<never>>(id: InvokeLifecycleId, options: {
|
|
3666
|
+
readonly address: Address & ChildAddress.Compatibility<Address, LogicEventOf<ReturnType<NoInfer<Source>>>>;
|
|
3667
|
+
readonly logic: Source;
|
|
3668
|
+
}, ..._validation: ReturnType<Source> extends {
|
|
3669
|
+
readonly initial: unknown;
|
|
3670
|
+
readonly run: unknown;
|
|
3671
|
+
} ? [] : [
|
|
3672
|
+
"logic factory must return Machine.Logic"
|
|
3673
|
+
]): LogicInvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, ReturnType<Source>>;
|
|
3674
|
+
<const Source, Address extends ChildAddress<never>>(id: InvokeLifecycleId, options: {
|
|
3675
|
+
readonly address: Address & ChildAddress.Compatibility<Address, LogicEventOf<NoInfer<Source>>>;
|
|
3676
|
+
readonly logic: Source;
|
|
3677
|
+
}, ..._validation: Source extends {
|
|
3678
|
+
readonly initial: unknown;
|
|
3679
|
+
readonly run: unknown;
|
|
3680
|
+
} ? [] : [
|
|
3681
|
+
"logic must implement Machine.Logic"
|
|
3682
|
+
]): LogicInvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Source>;
|
|
3683
|
+
};
|
|
3684
|
+
/** Starts a complete child statechart represented by a reusable descriptor. */
|
|
3685
|
+
readonly child: <const Child extends ChildMachine.Any>(child: Child & (Child["machine"] extends EnsureExecutable<Machine.States<Child["machine"]>, Machine.UnhandledStates<Child["machine"]>, Machine.OutputStates<Child["machine"]>> ? unknown : never), ...options: InputSchema<Child["machine"]> extends typeof Schema.Void ? [options?: {
|
|
3686
|
+
readonly input?: never;
|
|
3687
|
+
}] : [
|
|
3688
|
+
options: {
|
|
3689
|
+
readonly input: InvokeSource<Input<Child["machine"]>, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3690
|
+
}
|
|
3691
|
+
]) => ChildInvokeBuilder<States, Events, Emits, StateId, InputEvents, ParentEvents, Child>;
|
|
3692
|
+
}
|
|
3693
|
+
/**
|
|
3694
|
+
* Inline invocation declaration accepted by an active state handler.
|
|
3695
|
+
*
|
|
3696
|
+
* Return one completed source chain or an array of completed chains. Source
|
|
3697
|
+
* computations and child descriptors may be extracted, but the chain stays
|
|
3698
|
+
* local to preserve the owning state and machine protocols.
|
|
3699
|
+
*
|
|
3700
|
+
* @category models
|
|
3701
|
+
* @since 0.18.0
|
|
3702
|
+
*/
|
|
3703
|
+
type InvokeBuilderInput<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = (from: InvokeSelector<States, Events, Emits, StateId, InputEvents, ParentEvents>) => (InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & {
|
|
3704
|
+
readonly [InvokeBuilderTypeId]: true;
|
|
3705
|
+
}) | ReadonlyArray<InvokeOwned<States, Events, Emits, StateId, InputEvents, ParentEvents> & {
|
|
3706
|
+
readonly [InvokeBuilderTypeId]: true;
|
|
3707
|
+
}>;
|
|
3600
3708
|
type OutputHandlerConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Context> = NodeByIdentifier<States, StateId> extends {
|
|
3601
3709
|
readonly output: Schema.Top;
|
|
3602
3710
|
} ? {
|
|
@@ -3618,11 +3726,11 @@ export declare namespace Machine {
|
|
|
3618
3726
|
type ActiveStateConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, E, R, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = {
|
|
3619
3727
|
readonly entry?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3620
3728
|
readonly exit?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3621
|
-
readonly invoke?:
|
|
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
|
|
3729
|
+
readonly invoke?: InvokeBuilderInput<States, Events, Emits, StateId, InputEvents, ParentEvents>;
|
|
3730
|
+
readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, false, TransitionAcceptance>;
|
|
3731
|
+
readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, false, TransitionAcceptance>;
|
|
3624
3732
|
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>;
|
|
3733
|
+
readonly [EventTag in TagOf<Events[number]>]?: TransitionConfig<States, Events, Emits, StateId, HandlerContext<States, Events, Emits, StateId, EventTag, E, R, InputEvents, ParentEvents>, true, TransitionAcceptance>;
|
|
3626
3734
|
};
|
|
3627
3735
|
readonly initialize?: StateInitializeHandler<States, Events, Emits, StateId, InputEvents, ParentEvents>;
|
|
3628
3736
|
} & ActiveOutputHandlerConfig<States, Events, StateId>;
|
|
@@ -3756,12 +3864,6 @@ export declare namespace Machine {
|
|
|
3756
3864
|
readonly states: infer Children extends StateSchemas;
|
|
3757
3865
|
} ? HandlerNodeByPath<Children, Rest> : never : never : Path extends keyof States ? States[Path] : never;
|
|
3758
3866
|
type HandlerConfigAtPath<Config, Path extends string> = Path extends `${infer Head}.${infer Rest}` ? Head extends keyof Config ? HandlerConfigAtPath<HandlerNodeChildrenConfig<Config[Head]>, Rest> : never : Path extends keyof Config ? Config[Path] : never;
|
|
3759
|
-
type HandlerInvokeContextAtPath<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Config, StateId extends StateNodeIdentifier<AllStates>, NodeConfig = HandlerConfigAtPath<Config, StateId>> = StateId extends StateIdentifier<AllStates> ? NodeConfig extends {
|
|
3760
|
-
readonly invoke: infer Invoke;
|
|
3761
|
-
} ? HandlerValidationAtPath<StateId, {
|
|
3762
|
-
readonly invoke: ContextualInvokeDefinition<AllStates, Events, Emits, StateId, InputEvents, ParentEvents, Invoke>;
|
|
3763
|
-
}> : unknown : unknown;
|
|
3764
|
-
type HandlerInvokeContexts<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Config> = Types.UnionToIntersection<StateNodeIdentifier<AllStates> extends infer StateId extends StateNodeIdentifier<AllStates> ? StateId extends StateNodeIdentifier<AllStates> ? HandlerInvokeContextAtPath<AllStates, Events, InputEvents, Emits, ParentEvents, Config, StateId> : never : never>;
|
|
3765
3867
|
type HandlerValidationAtPath<Path extends string, Validation> = Path extends `${infer Head}.${infer Rest}` ? {
|
|
3766
3868
|
readonly [Key in Head]?: {
|
|
3767
3869
|
readonly states: HandlerValidationAtPath<Rest, Validation>;
|
|
@@ -3909,7 +4011,7 @@ export declare namespace Machine {
|
|
|
3909
4011
|
* @since 0.4.0
|
|
3910
4012
|
*/
|
|
3911
4013
|
interface Handler<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Input extends Schema.Top, UnhandledStates extends StateIdentifier<States>, E, R, InitialE, InitialR, FinalStates extends StateIdentifier<States>, Output, OutputStates extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>> {
|
|
3912
|
-
<const Config extends HandlerTree<States, States, Events, Emits, E, R, InputEvents, ParentEvents, "">>(config: Config &
|
|
4014
|
+
<const Config extends HandlerTree<States, States, Events, Emits, E, R, InputEvents, ParentEvents, "">>(config: Config & HandlerTreeValidation<States, Events, InputEvents, Emits, NoInfer<Config>, OutputStates | Extract<HandlerTreeEvidence<States, NoInfer<Config>>["outputState"], StateIdentifier<States>>> & ([StateIdentifier<States>] extends [UnhandledStates] ? HandlerInitialTargetValidation<States, NoInfer<Config>> : unknown)): HandleTreeResult<States, Events, Emits, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, OutputStates, InputEvents, ParentEvents, Config>;
|
|
3913
4015
|
}
|
|
3914
4016
|
/**
|
|
3915
4017
|
* Any state config.
|
|
@@ -3924,7 +4026,7 @@ export declare namespace Machine {
|
|
|
3924
4026
|
* @category models
|
|
3925
4027
|
* @since 0.4.0
|
|
3926
4028
|
*/
|
|
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>>>;
|
|
4029
|
+
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
4030
|
/**
|
|
3929
4031
|
* Runtime state config stored for a single state tag.
|
|
3930
4032
|
*
|
|
@@ -3934,9 +4036,9 @@ export declare namespace Machine {
|
|
|
3934
4036
|
interface StateConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, EventTag extends TagOf<Events[number]>, E, R> {
|
|
3935
4037
|
readonly entry?: (context: StateActionContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<E, R>;
|
|
3936
4038
|
readonly exit?: (context: StateActionContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<E, R>;
|
|
3937
|
-
readonly invoke?:
|
|
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
|
|
4039
|
+
readonly invoke?: StoredInvokeDefinition<States, Events, Emits, StateId>;
|
|
4040
|
+
readonly always?: TransitionConfig<States, Events, Emits, StateId, AlwaysContext<States, Events, Emits, StateId>, false, TransitionAcceptance>;
|
|
4041
|
+
readonly onDone?: TransitionConfig<States, Events, Emits, StateId, DoneContext<States, Events, Emits, StateId>, false, TransitionAcceptance>;
|
|
3940
4042
|
readonly output?: ((context: FinalOutputContext<States, Events, StateId>) => unknown) | ((context: ParallelOutputContext<States, Events, StateId>) => unknown);
|
|
3941
4043
|
readonly on?: EventHandlerMap<States, Events, Emits, StateId, EventTag, E, R>;
|
|
3942
4044
|
}
|
|
@@ -3948,13 +4050,37 @@ export declare namespace Machine {
|
|
|
3948
4050
|
*/
|
|
3949
4051
|
type StateConfigs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, EventTag extends TagOf<Events[number]>, E, R> = Readonly<Record<PropertyKey, StateConfig<States, Events, Emits, StateId, EventTag, E, R> | ChoiceStateConfig<States, Events, Emits, ChoiceIdentifier<States>>>>;
|
|
3950
4052
|
}
|
|
4053
|
+
type StateSource = Machine.DefinedStates<any> | Machine.Any;
|
|
4054
|
+
type StateSchemasOf<Source extends StateSource> = Source extends Machine.DefinedStates<infer States> ? States : Source extends Machine.Any ? Machine.States<Source> : never;
|
|
3951
4055
|
/**
|
|
3952
|
-
* Extracts the complete logical snapshot represented by a state definition
|
|
4056
|
+
* Extracts the complete logical snapshot represented by a state definition or
|
|
4057
|
+
* machine.
|
|
3953
4058
|
*
|
|
3954
4059
|
* @category utility types
|
|
3955
4060
|
* @since 0.15.0
|
|
3956
4061
|
*/
|
|
3957
|
-
export type Snapshot<
|
|
4062
|
+
export type Snapshot<Source extends StateSource> = Machine.Snapshot<StateSchemasOf<Source>>;
|
|
4063
|
+
/**
|
|
4064
|
+
* Extracts the decoded value owned by a schema-backed state path.
|
|
4065
|
+
*
|
|
4066
|
+
* The source may be the object returned by {@link states} or a machine
|
|
4067
|
+
* definition. Control-only state paths are intentionally excluded.
|
|
4068
|
+
*
|
|
4069
|
+
* @category utility types
|
|
4070
|
+
* @since 0.18.0
|
|
4071
|
+
*/
|
|
4072
|
+
export type Value<Source extends StateSource, Path extends Machine.ValuedStateIdentifier<StateSchemasOf<Source>>> = Machine.StateByIdentifier<StateSchemasOf<Source>, Path>;
|
|
4073
|
+
/**
|
|
4074
|
+
* Extracts the logical snapshot rooted at a state path.
|
|
4075
|
+
*
|
|
4076
|
+
* The source may be the object returned by {@link states} or a machine
|
|
4077
|
+
* definition. This is the type-level counterpart of
|
|
4078
|
+
* `DefinedStates.getSnapshot`.
|
|
4079
|
+
*
|
|
4080
|
+
* @category utility types
|
|
4081
|
+
* @since 0.18.0
|
|
4082
|
+
*/
|
|
4083
|
+
export type SnapshotAt<Source extends StateSource, Path extends Machine.StateIdentifier<StateSchemasOf<Source>>> = Machine.SnapshotByIdentifier<StateSchemasOf<Source>, Path>;
|
|
3958
4084
|
/**
|
|
3959
4085
|
* Returns `true` if a value is a `Machine`.
|
|
3960
4086
|
*
|
|
@@ -4035,10 +4161,7 @@ export declare const state: StateConstructor;
|
|
|
4035
4161
|
* Machine.make({
|
|
4036
4162
|
* states: States.states,
|
|
4037
4163
|
* events: Machine.events(),
|
|
4038
|
-
* initial: {
|
|
4039
|
-
* target: (to) => to.idle(),
|
|
4040
|
-
* resolve: ({ target }) => target.from()
|
|
4041
|
-
* }
|
|
4164
|
+
* initial: (to) => to.idle().resolve(({ target }) => target.from())
|
|
4042
4165
|
* })
|
|
4043
4166
|
* ```
|
|
4044
4167
|
*
|
|
@@ -4046,31 +4169,22 @@ export declare const state: StateConstructor;
|
|
|
4046
4169
|
* @since 0.4.0
|
|
4047
4170
|
*/
|
|
4048
4171
|
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>> = {
|
|
4172
|
+
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
4173
|
readonly id?: string;
|
|
4060
4174
|
readonly states: States & DefineStateTreeInput<NoInfer<States>>;
|
|
4061
4175
|
readonly events: Machine.EventProtocol<"public", InputEvents> & ValidateInputEventProtocol<NoInfer<InputEvents>>;
|
|
4062
4176
|
readonly internalEvents?: Machine.EventProtocol<"internal", InternalEvents> & ValidateInternalEventProtocol<NoInfer<InputEvents>, NoInfer<InternalEvents>>;
|
|
4063
4177
|
readonly emittedEvents?: Machine.EventProtocol<"emitted", Emits>;
|
|
4064
|
-
readonly
|
|
4178
|
+
readonly parent?: ParentDeclaration;
|
|
4065
4179
|
readonly input?: Input;
|
|
4066
4180
|
readonly initial: unknown;
|
|
4067
4181
|
};
|
|
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>,
|
|
4182
|
+
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
4183
|
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
|
|
4184
|
+
<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"> & {
|
|
4185
|
+
readonly initial: Machine.InitialBuilderInput<States, Input["Type"]>;
|
|
4186
|
+
}, ..._validation: ValidateDefinedStates<NoInfer<States>>): MakeResult<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentDeclaration>;
|
|
4187
|
+
<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
4188
|
readonly states: InvalidDefinedStateTreeInput<States>;
|
|
4075
4189
|
}): never;
|
|
4076
4190
|
}
|
|
@@ -4085,11 +4199,17 @@ interface Make {
|
|
|
4085
4199
|
* `states` or is passed inline. Call `handle` on the returned definition
|
|
4086
4200
|
* to implement state behavior with ordinary TypeScript control flow.
|
|
4087
4201
|
*
|
|
4202
|
+
* `initial` is a target-first callback. Its outer selector runs once while the
|
|
4203
|
+
* definition is captured; an attached `.resolve(...)` callback remains lazy
|
|
4204
|
+
* until initial planning. Return a bare selected state when its schema supports
|
|
4205
|
+
* default construction.
|
|
4206
|
+
*
|
|
4088
4207
|
* `Machine.events` defines the public input protocol. `Machine.internalEvents`
|
|
4089
4208
|
* adds raised events and other machine-local deliveries.
|
|
4090
|
-
* `Machine.emittedEvents` defines outward ephemeral notifications
|
|
4091
|
-
* `
|
|
4092
|
-
*
|
|
4209
|
+
* `Machine.emittedEvents` defines outward ephemeral notifications. The
|
|
4210
|
+
* `parent` configuration accepts `Machine.parent(events)` for a required owner
|
|
4211
|
+
* or `Machine.optionalParent(events)` for a root-capable machine. All
|
|
4212
|
+
* descriptors expose deferred constructors while retaining their
|
|
4093
4213
|
* schemas opaquely for runtime validation. Public and internal tags must be
|
|
4094
4214
|
* disjoint.
|
|
4095
4215
|
*
|
|
@@ -4113,18 +4233,13 @@ interface Make {
|
|
|
4113
4233
|
* const counter = Machine.make({
|
|
4114
4234
|
* states: States.states,
|
|
4115
4235
|
* events: Events,
|
|
4116
|
-
* initial: {
|
|
4117
|
-
* target: (to) => to.Count(),
|
|
4118
|
-
* resolve: ({ target }) => target(new Count({ value: 0 }))
|
|
4119
|
-
* }
|
|
4236
|
+
* initial: (to) => to.Count().resolve(({ target }) => target(new Count({ value: 0 })))
|
|
4120
4237
|
* }).handle({
|
|
4121
4238
|
* Count: {
|
|
4122
4239
|
* on: {
|
|
4123
|
-
* Increment:
|
|
4124
|
-
*
|
|
4125
|
-
*
|
|
4126
|
-
* target(new Count({ value: state.value + event.by }))
|
|
4127
|
-
* })
|
|
4240
|
+
* Increment: (to) =>
|
|
4241
|
+
* to.full.Count().resolve(({ event, state, target }) =>
|
|
4242
|
+
* target(new Count({ value: state.value + event.by })))
|
|
4128
4243
|
* }
|
|
4129
4244
|
* }
|
|
4130
4245
|
* })
|
|
@@ -4171,6 +4286,27 @@ export declare const events: {
|
|
|
4171
4286
|
<const Schemas extends ReadonlyArray<Machine.TaggedSchema>>(...schemas: Schemas & ValidateInputEventProtocol<NoInfer<Schemas>>): Machine.EventProtocol<"public", readonly [...Schemas]>;
|
|
4172
4287
|
<const Inputs extends ReadonlyArray<Machine.EventProtocolInput<"public">>>(...inputs: Inputs & ValidateEventProtocolBuilder<"public", Inputs>): Machine.EventProtocol<"public", Machine.EventProtocolInputSchemasOf<"public", Inputs>>;
|
|
4173
4288
|
};
|
|
4289
|
+
/**
|
|
4290
|
+
* Requires the machine to run as an owned child whose parent accepts the
|
|
4291
|
+
* supplied public event protocol.
|
|
4292
|
+
*
|
|
4293
|
+
* Required-parent machines expose a non-optional `parent` target in behavior
|
|
4294
|
+
* contexts and are rejected by root execution APIs.
|
|
4295
|
+
*
|
|
4296
|
+
* @category constructors
|
|
4297
|
+
* @since 0.17.0
|
|
4298
|
+
*/
|
|
4299
|
+
export declare const parent: <const Events extends ReadonlyArray<Machine.TaggedSchema>>(events: Machine.EventProtocol<"public", Events>) => Parent<"required", Events>;
|
|
4300
|
+
/**
|
|
4301
|
+
* Declares public events a machine may send to its owner while preserving the
|
|
4302
|
+
* ability to run that machine as a root.
|
|
4303
|
+
*
|
|
4304
|
+
* Optional-parent machines expose `parent` as a possibly absent target.
|
|
4305
|
+
*
|
|
4306
|
+
* @category constructors
|
|
4307
|
+
* @since 0.17.0
|
|
4308
|
+
*/
|
|
4309
|
+
export declare const optionalParent: <const Events extends ReadonlyArray<Machine.TaggedSchema>>(events: Machine.EventProtocol<"public", Events>) => Parent<"optional", Events>;
|
|
4174
4310
|
/**
|
|
4175
4311
|
* Defines an internal event protocol and returns deferred constructors for
|
|
4176
4312
|
* every statically finite configured event tag.
|
|
@@ -4259,10 +4395,7 @@ export declare const emittedEvents: {
|
|
|
4259
4395
|
* const machine = Machine.make({
|
|
4260
4396
|
* states: States.states,
|
|
4261
4397
|
* events: Machine.events(),
|
|
4262
|
-
* initial: {
|
|
4263
|
-
* target: (to) => to.Idle(),
|
|
4264
|
-
* resolve: ({ target }) => target.from()
|
|
4265
|
-
* }
|
|
4398
|
+
* initial: (to) => to.Idle().resolve(({ target }) => target.from())
|
|
4266
4399
|
* }).handle({ Idle: {} })
|
|
4267
4400
|
*
|
|
4268
4401
|
* const encoded = Effect.gen(function*() {
|
|
@@ -4306,10 +4439,7 @@ export declare const encodeSnapshot: <const States extends Machine.StateSchemas,
|
|
|
4306
4439
|
* const machine = Machine.make({
|
|
4307
4440
|
* states: States.states,
|
|
4308
4441
|
* events: Machine.events(),
|
|
4309
|
-
* initial: {
|
|
4310
|
-
* target: (to) => to.Idle(),
|
|
4311
|
-
* resolve: ({ target }) => target.from()
|
|
4312
|
-
* }
|
|
4442
|
+
* initial: (to) => to.Idle().resolve(({ target }) => target.from())
|
|
4313
4443
|
* }).handle({ Idle: {} })
|
|
4314
4444
|
*
|
|
4315
4445
|
* const roundTrip = Effect.gen(function*() {
|
|
@@ -4324,311 +4454,12 @@ export declare const encodeSnapshot: <const States extends Machine.StateSchemas,
|
|
|
4324
4454
|
* @since 0.4.0
|
|
4325
4455
|
*/
|
|
4326
4456
|
export declare const decodeSnapshot: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never, OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents>, encoded: unknown) => Effect.Effect<Machine.Snapshot<States>, MachineSchemaDecodeError, Machine.SnapshotDecodingServices<States>>;
|
|
4327
|
-
type EffectInvokeSource<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>> = {
|
|
4328
|
-
readonly id: InvokeLifecycleId;
|
|
4329
|
-
readonly effect: Source;
|
|
4330
|
-
readonly stream?: never;
|
|
4331
|
-
readonly after?: never;
|
|
4332
|
-
readonly logic?: never;
|
|
4333
|
-
readonly child?: never;
|
|
4334
|
-
readonly address?: never;
|
|
4335
|
-
readonly onElement?: never;
|
|
4336
|
-
readonly onSnapshot?: never;
|
|
4337
|
-
};
|
|
4338
|
-
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
|
-
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.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never>;
|
|
4341
|
-
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
|
-
readonly id: InvokeLifecycleId;
|
|
4343
|
-
readonly stream: Source & ((context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown);
|
|
4344
|
-
readonly effect?: never;
|
|
4345
|
-
readonly after?: never;
|
|
4346
|
-
readonly logic?: never;
|
|
4347
|
-
readonly child?: never;
|
|
4348
|
-
readonly address?: never;
|
|
4349
|
-
readonly onSnapshot?: never;
|
|
4350
|
-
};
|
|
4351
|
-
type StreamSourceResult<Source extends (...args: ReadonlyArray<any>) => unknown> = ReturnType<Source> extends infer Result extends Stream.Stream<any, any, any> ? Result : never;
|
|
4352
|
-
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
|
-
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
|
-
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.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<void, Stream.Error<StreamSourceResult<Source>>, Stream.Services<StreamSourceResult<Source>>, never>;
|
|
4356
|
-
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
4457
|
type TransitionBranchRecordError<Message extends string, Key extends PropertyKey = never> = {
|
|
4374
4458
|
readonly "~effect/Machine/TransitionBranchRecordError": Message;
|
|
4375
4459
|
readonly key: Key;
|
|
4376
4460
|
};
|
|
4377
4461
|
type InvalidStaticTransitionBranchKey<Branches> = Extract<keyof Branches, "" | number | symbol>;
|
|
4378
4462
|
type ValidateTransitionBranchRecord<Branches> = [keyof Branches] extends [never] ? TransitionBranchRecordError<"Branch records must contain at least one branch"> : [InvalidStaticTransitionBranchKey<Branches>] extends [never] ? unknown : TransitionBranchRecordError<"Branch keys must be non-empty, non-index strings", InvalidStaticTransitionBranchKey<Branches>>;
|
|
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
|
-
/**
|
|
4530
|
-
* Preserves inference for a state-owned invocation configuration.
|
|
4531
|
-
*
|
|
4532
|
-
* Use `effect` for one-shot work, `stream` for repeated values, `after` for a
|
|
4533
|
-
* cancellable timer, `logic` for reusable process logic, or `child` for a
|
|
4534
|
-
* complete child machine. Stream elements are handled by `onElement` before
|
|
4535
|
-
* the next element is pulled. `onDone` is required whenever the source can
|
|
4536
|
-
* complete, while `onFailure` is required only when the source has a typed
|
|
4537
|
-
* failure channel.
|
|
4538
|
-
*
|
|
4539
|
-
* This constructor is an identity at runtime, but preserves lifecycle callback
|
|
4540
|
-
* inference through published declarations. Effect and Stream factories run
|
|
4541
|
-
* when their owning state is entered and infer the owner context, value,
|
|
4542
|
-
* output, error, and service channels together without a return annotation.
|
|
4543
|
-
* Durations may be
|
|
4544
|
-
* supplied directly or derived from the owning state's entry context. Logic
|
|
4545
|
-
* invocations require both a lifecycle `id` and a typed communication
|
|
4546
|
-
* `address`. Child descriptors already own their identity, so `id` and
|
|
4547
|
-
* `address` must not be repeated.
|
|
4548
|
-
*
|
|
4549
|
-
* Inside `handle(...)`, the owning definition contextually supplies its public
|
|
4550
|
-
* input and `parentEvents` protocols. Invocation sources and lifecycle handlers
|
|
4551
|
-
* can therefore send through `self` and `parent` without naming the definition.
|
|
4552
|
-
* The bound `definition.invoke(...)` constructor remains an equivalent form.
|
|
4553
|
-
*
|
|
4554
|
-
* ```ts
|
|
4555
|
-
* invoke: Machine.invoke({
|
|
4556
|
-
* id: "load",
|
|
4557
|
-
* effect: () =>
|
|
4558
|
-
* Effect.tryPromise({
|
|
4559
|
-
* try: () => fetch("/api/data").then((response) => response.json()),
|
|
4560
|
-
* catch: (cause) => new LoadError({ cause })
|
|
4561
|
-
* }),
|
|
4562
|
-
* onDone: Machine.transition({
|
|
4563
|
-
* target: (to) => to.full.Ready(),
|
|
4564
|
-
* resolve: ({ output, target }) => target.from({ data: output })
|
|
4565
|
-
* }),
|
|
4566
|
-
* onFailure: Machine.transition({
|
|
4567
|
-
* target: (to) => to.full.Failed(),
|
|
4568
|
-
* resolve: ({ error, target }) => target.from({ error })
|
|
4569
|
-
* })
|
|
4570
|
-
* })
|
|
4571
|
-
* ```
|
|
4572
|
-
*
|
|
4573
|
-
* @category constructors
|
|
4574
|
-
* @since 0.9.0
|
|
4575
|
-
*/
|
|
4576
|
-
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> & {
|
|
4578
|
-
readonly onDone: EffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4579
|
-
readonly onFailure: EffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4580
|
-
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
4581
|
-
"onDone must be omitted when the Effect output is never"
|
|
4582
|
-
] : InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
4583
|
-
"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> & {
|
|
4586
|
-
readonly onDone: EffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4587
|
-
readonly onFailure?: never;
|
|
4588
|
-
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
4589
|
-
"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> & {
|
|
4592
|
-
readonly onDone?: never;
|
|
4593
|
-
readonly onFailure: EffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4594
|
-
}, ..._validation: InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
4595
|
-
"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> & {
|
|
4598
|
-
readonly onDone?: never;
|
|
4599
|
-
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> & {
|
|
4602
|
-
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4603
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4604
|
-
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4605
|
-
}, ..._validation: InvokeChannelIsNever<Stream.Success<ReturnType<Source>>> extends true ? [
|
|
4606
|
-
"onElement must be omitted when the Stream element is never"
|
|
4607
|
-
] : InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4608
|
-
"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> & {
|
|
4611
|
-
readonly onElement?: never;
|
|
4612
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4613
|
-
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4614
|
-
}, ..._validation: InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4615
|
-
"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> & {
|
|
4618
|
-
readonly onElement?: never;
|
|
4619
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4620
|
-
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> & {
|
|
4623
|
-
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4624
|
-
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4625
|
-
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>, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address extends ChildAddress<never>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Machine.LogicInvokeArgs<States, Events, Emits, StateId, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address, (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Logic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError>, InputEvents, ParentEvents>): Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<ChildOutput, ChildError, ChildRequirements, ChildInitialError>;
|
|
4629
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address extends ChildAddress<never>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & Machine.LogicInvokeArgs<States, Events, Emits, StateId, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address, Logic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError>, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<ChildOutput, ChildError, ChildRequirements, ChildInitialError>;
|
|
4630
|
-
<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> & 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
|
-
};
|
|
4632
4463
|
/**
|
|
4633
4464
|
* Plans the initial state for a machine without executing machine commands.
|
|
4634
4465
|
*
|
|
@@ -4658,10 +4489,7 @@ export declare const invoke: {
|
|
|
4658
4489
|
* const machine = Machine.make({
|
|
4659
4490
|
* states: States.states,
|
|
4660
4491
|
* events: Machine.events(),
|
|
4661
|
-
* initial: {
|
|
4662
|
-
* target: (to) => to.Idle(),
|
|
4663
|
-
* resolve: ({ target }) => target.from()
|
|
4664
|
-
* }
|
|
4492
|
+
* initial: (to) => to.Idle().resolve(({ target }) => target.from())
|
|
4665
4493
|
* }).handle({ Idle: {} })
|
|
4666
4494
|
*
|
|
4667
4495
|
* const initialState = Effect.map(Machine.planInitial(machine), (plan) => plan.state)
|
|
@@ -4672,7 +4500,7 @@ export declare const invoke: {
|
|
|
4672
4500
|
* @category constructors
|
|
4673
4501
|
* @since 0.4.0
|
|
4674
4502
|
*/
|
|
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<{
|
|
4503
|
+
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
4504
|
readonly startingState: Machine.Snapshot<States>;
|
|
4677
4505
|
readonly initialEntryPaths: ReadonlyArray<Machine.StateIdentifier<States>>;
|
|
4678
4506
|
readonly state: Machine.Snapshot<States>;
|
|
@@ -4730,7 +4558,8 @@ export declare const initialDefinition: <M extends Machine.Any>(machine: M) => M
|
|
|
4730
4558
|
* Event handlers retain their handler-key order within each source state and
|
|
4731
4559
|
* are followed by eventless and completion handlers. This function does not
|
|
4732
4560
|
* execute resolvers. Every direct, named, and targetless branch exposes the
|
|
4733
|
-
* destination selected by its required static `target` declaration
|
|
4561
|
+
* destination selected by its required static `target` declaration, while
|
|
4562
|
+
* `acceptance` reports whether the resolver may decline the transition.
|
|
4734
4563
|
*
|
|
4735
4564
|
* @category getters
|
|
4736
4565
|
* @since 0.4.0
|
|
@@ -4763,7 +4592,12 @@ export declare const activityDefinitions: <M extends Machine.Any>(machine: M) =>
|
|
|
4763
4592
|
*/
|
|
4764
4593
|
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
4594
|
/**
|
|
4766
|
-
* Returns
|
|
4595
|
+
* Returns event tags with at least one structurally eligible handler in the
|
|
4596
|
+
* current state snapshot.
|
|
4597
|
+
*
|
|
4598
|
+
* A `declinable` handler may still reject a concrete event at planning time,
|
|
4599
|
+
* so this is a static candidate query rather than a guarantee that every value
|
|
4600
|
+
* with the returned tag will be handled.
|
|
4767
4601
|
*
|
|
4768
4602
|
* @category getters
|
|
4769
4603
|
* @since 0.4.0
|
|
@@ -4799,17 +4633,12 @@ export declare const enabled: <const States extends Machine.StateSchemas, const
|
|
|
4799
4633
|
* const machine = Machine.make({
|
|
4800
4634
|
* states: States.states,
|
|
4801
4635
|
* events: Machine.events(Toggle),
|
|
4802
|
-
* initial: {
|
|
4803
|
-
* target: (to) => to.Off(),
|
|
4804
|
-
* resolve: ({ target }) => target.from()
|
|
4805
|
-
* }
|
|
4636
|
+
* initial: (to) => to.Off().resolve(({ target }) => target.from())
|
|
4806
4637
|
* }).handle({
|
|
4807
4638
|
* Off: {
|
|
4808
4639
|
* on: {
|
|
4809
|
-
* Toggle:
|
|
4810
|
-
* target
|
|
4811
|
-
* resolve: ({ target }) => target.from()
|
|
4812
|
-
* })
|
|
4640
|
+
* Toggle: (to) =>
|
|
4641
|
+
* to.full.On().resolve(({ target }) => target.from())
|
|
4813
4642
|
* }
|
|
4814
4643
|
* },
|
|
4815
4644
|
* On: {}
|
|
@@ -4826,7 +4655,7 @@ export declare const enabled: <const States extends Machine.StateSchemas, const
|
|
|
4826
4655
|
* @category combinators
|
|
4827
4656
|
* @since 0.4.0
|
|
4828
4657
|
*/
|
|
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<{
|
|
4658
|
+
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
4659
|
readonly next: Machine.Snapshot<States>;
|
|
4831
4660
|
readonly commands: ReadonlyArray<Command>;
|
|
4832
4661
|
readonly emittedEvents: ReadonlyArray<Machine.EmitOf<Emits>>;
|
|
@@ -4894,7 +4723,7 @@ export declare const child: <const Id extends string, M extends Machine.Any>(id:
|
|
|
4894
4723
|
* Creates a typed parent-local address for lower-level child process logic.
|
|
4895
4724
|
*
|
|
4896
4725
|
* The default event protocol is `never`; provide an event type before using
|
|
4897
|
-
* the address with `spawn`,
|
|
4726
|
+
* the address with `spawn`, a state-owned logic invocation, or `sendTo`.
|
|
4898
4727
|
*
|
|
4899
4728
|
* @category constructors
|
|
4900
4729
|
* @since 0.4.0
|
|
@@ -4914,7 +4743,8 @@ export declare const childAddress: <Event = never>(id: string) => ChildAddress<E
|
|
|
4914
4743
|
* This Effect requires a managed process runtime. A named child id must be
|
|
4915
4744
|
* unique for the current parent until that child stops.
|
|
4916
4745
|
*
|
|
4917
|
-
*
|
|
4746
|
+
* Use a state's `invoke: (from) => from.logic(...)` declaration for children
|
|
4747
|
+
* that start and stop with that state.
|
|
4918
4748
|
* @see {@link sendTo} for sending events to named children.
|
|
4919
4749
|
* @category runtime
|
|
4920
4750
|
* @since 0.4.0
|
|
@@ -4972,7 +4802,7 @@ export declare const watch: <State, Event, Error = never, Output = never>(ref: M
|
|
|
4972
4802
|
* @category constructors
|
|
4973
4803
|
* @since 0.11.0
|
|
4974
4804
|
*/
|
|
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>>>>;
|
|
4805
|
+
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
4806
|
/**
|
|
4977
4807
|
* Starts a machine.
|
|
4978
4808
|
*
|
|
@@ -5006,10 +4836,7 @@ export declare const prepare: <const States extends Machine.StateSchemas, const
|
|
|
5006
4836
|
* const machine = Machine.make({
|
|
5007
4837
|
* states: States.states,
|
|
5008
4838
|
* events: Machine.events(),
|
|
5009
|
-
* initial: {
|
|
5010
|
-
* target: (to) => to.Idle(),
|
|
5011
|
-
* resolve: ({ target }) => target.from()
|
|
5012
|
-
* }
|
|
4839
|
+
* initial: (to) => to.Idle().resolve(({ target }) => target.from())
|
|
5013
4840
|
* }).handle({ Idle: {} })
|
|
5014
4841
|
*
|
|
5015
4842
|
* const state = Effect.gen(function*() {
|
|
@@ -5023,7 +4850,7 @@ export declare const prepare: <const States extends Machine.StateSchemas, const
|
|
|
5023
4850
|
* @category constructors
|
|
5024
4851
|
* @since 0.4.0
|
|
5025
4852
|
*/
|
|
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>>>;
|
|
4853
|
+
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
4854
|
/**
|
|
5028
4855
|
* Starts a fresh managed runtime from a decoded logical snapshot.
|
|
5029
4856
|
*
|
|
@@ -5059,10 +4886,7 @@ export declare const start: <const States extends Machine.StateSchemas, const Ev
|
|
|
5059
4886
|
* const machine = Machine.make({
|
|
5060
4887
|
* states: States.states,
|
|
5061
4888
|
* events: Machine.events(),
|
|
5062
|
-
* initial: {
|
|
5063
|
-
* target: (to) => to.Idle(),
|
|
5064
|
-
* resolve: ({ target }) => target.from()
|
|
5065
|
-
* }
|
|
4889
|
+
* initial: (to) => to.Idle().resolve(({ target }) => target.from())
|
|
5066
4890
|
* }).handle({ Idle: {} })
|
|
5067
4891
|
*
|
|
5068
4892
|
* const resumed = Effect.gen(function*() {
|
|
@@ -5078,5 +4902,5 @@ export declare const start: <const States extends Machine.StateSchemas, const Ev
|
|
|
5078
4902
|
* @category constructors
|
|
5079
4903
|
* @since 0.4.0
|
|
5080
4904
|
*/
|
|
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>>>;
|
|
4905
|
+
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
4906
|
//# sourceMappingURL=Machine.d.ts.map
|