@typeonce/effect-machine 0.10.0 → 0.12.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 +76 -13
- package/dist/Machine.d.ts +202 -90
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +38 -9
- package/dist/Machine.js.map +1 -1
- package/dist/internal/machine/atom.d.ts +1 -1
- package/dist/internal/machine/atom.d.ts.map +1 -1
- package/dist/internal/machine/atom.js +38 -7
- package/dist/internal/machine/atom.js.map +1 -1
- package/dist/internal/machine/cluster.js +2 -2
- package/dist/internal/machine/cluster.js.map +1 -1
- package/dist/internal/machine/commandRuntime.d.ts.map +1 -1
- package/dist/internal/machine/commandRuntime.js +2 -2
- package/dist/internal/machine/commandRuntime.js.map +1 -1
- package/dist/internal/machine/configuration.d.ts +7 -7
- package/dist/internal/machine/configuration.d.ts.map +1 -1
- package/dist/internal/machine/configuration.js +3 -3
- package/dist/internal/machine/configuration.js.map +1 -1
- package/dist/internal/machine/executionPlan.d.ts +3 -3
- package/dist/internal/machine/executionPlan.d.ts.map +1 -1
- package/dist/internal/machine/executionPlan.js +25 -25
- package/dist/internal/machine/executionPlan.js.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 +1 -0
- package/dist/internal/machine/machine.d.ts.map +1 -1
- package/dist/internal/machine/machine.js +4 -0
- package/dist/internal/machine/machine.js.map +1 -1
- package/dist/internal/machine/planner.d.ts +2 -2
- package/dist/internal/machine/planner.d.ts.map +1 -1
- package/dist/internal/machine/planner.js +20 -20
- package/dist/internal/machine/planner.js.map +1 -1
- package/dist/internal/machine/process.d.ts +3 -0
- package/dist/internal/machine/process.d.ts.map +1 -1
- package/dist/internal/machine/process.js +6 -3
- package/dist/internal/machine/process.js.map +1 -1
- package/dist/internal/machine/runtime.d.ts +17 -3
- package/dist/internal/machine/runtime.d.ts.map +1 -1
- package/dist/internal/machine/runtime.js +82 -32
- package/dist/internal/machine/runtime.js.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.d.ts +4 -2
- package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.js +4 -2
- package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
- package/docs/agent-guide.md +78 -19
- package/package.json +1 -1
- package/src/Machine.ts +704 -96
- package/src/internal/machine/atom.ts +50 -52
- package/src/internal/machine/cluster.ts +2 -2
- package/src/internal/machine/commandRuntime.ts +4 -2
- package/src/internal/machine/configuration.ts +10 -10
- package/src/internal/machine/executionPlan.ts +35 -35
- package/src/internal/machine/invocation.ts +1 -1
- package/src/internal/machine/machine.ts +6 -0
- package/src/internal/machine/planner.ts +30 -24
- package/src/internal/machine/process.ts +60 -3
- package/src/internal/machine/runtime.ts +176 -47
- package/src/unstable/reactivity/AtomMachine.ts +4 -2
package/dist/Machine.d.ts
CHANGED
|
@@ -119,17 +119,17 @@ export interface Machine<States extends Machine.StateSchemas, Events extends Rea
|
|
|
119
119
|
*/
|
|
120
120
|
readonly internalEvents: Machine.EventProtocol<"internal", Machine.InternalEventSchemas<Events, InputEvents>>;
|
|
121
121
|
/**
|
|
122
|
-
* Ephemeral outward notifications published to this
|
|
123
|
-
* Emissions are never delivered implicitly to an owning
|
|
122
|
+
* Ephemeral outward notifications published to this machine's observers.
|
|
123
|
+
* Emissions are never delivered implicitly to an owning machine.
|
|
124
124
|
*
|
|
125
125
|
* @since 0.4.0
|
|
126
126
|
*/
|
|
127
127
|
readonly emittedEvents: Machine.EventProtocol<"emitted", Emits>;
|
|
128
128
|
/**
|
|
129
|
-
* Public input events accepted by an owning
|
|
129
|
+
* Public input events accepted by an owning machine when this machine is
|
|
130
130
|
* running as a child.
|
|
131
131
|
*
|
|
132
|
-
* The protocol types the optional `parent`
|
|
132
|
+
* The protocol types the optional `parent` machine target exposed to
|
|
133
133
|
* handlers and is checked against a concrete parent's public events at
|
|
134
134
|
* composition boundaries.
|
|
135
135
|
*
|
|
@@ -165,6 +165,14 @@ export interface Machine<States extends Machine.StateSchemas, Events extends Rea
|
|
|
165
165
|
* @since 0.4.0
|
|
166
166
|
*/
|
|
167
167
|
readonly handle: Machine.Handler<States, Events, Emits, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, OutputStates, InputEvents, ParentEvents>;
|
|
168
|
+
/**
|
|
169
|
+
* Preserves invocation inference with this machine's public input and parent
|
|
170
|
+
* protocols. Prefer this bound constructor when an invocation source or
|
|
171
|
+
* lifecycle handler uses `self` or `parent`.
|
|
172
|
+
*
|
|
173
|
+
* @since 0.11.0
|
|
174
|
+
*/
|
|
175
|
+
readonly invoke: Invoker<States, Events, Emits, InputEvents, ParentEvents>;
|
|
168
176
|
/** @internal */
|
|
169
177
|
readonly initial: (...args: [...Machine.InputArgs<Input>]) => Machine.InitialResult<States, InitialE, InitialR>;
|
|
170
178
|
}
|
|
@@ -284,38 +292,38 @@ export interface Runtime<in Events, in Emits> {
|
|
|
284
292
|
*/
|
|
285
293
|
readonly raise: (event: Machine.EventInput<Events>) => Effect.Effect<void, MachineSchemaDecodeError | StoppedError>;
|
|
286
294
|
/**
|
|
287
|
-
* Publishes an ephemeral notification to the running
|
|
295
|
+
* Publishes an ephemeral notification to the running machine's observers.
|
|
288
296
|
*
|
|
289
297
|
* @since 0.4.0
|
|
290
298
|
*/
|
|
291
299
|
readonly emit: (event: Machine.EmittedEventInput<Emits>) => Effect.Effect<void, MachineSchemaDecodeError | StoppedError>;
|
|
292
300
|
}
|
|
293
301
|
/**
|
|
294
|
-
* Minimal typed
|
|
302
|
+
* Minimal typed target accepted by inter-machine send commands.
|
|
295
303
|
*
|
|
296
304
|
* @category models
|
|
297
|
-
* @since 0.
|
|
305
|
+
* @since 0.12.0
|
|
298
306
|
*/
|
|
299
|
-
export interface
|
|
307
|
+
export interface MachineTarget<in Event> {
|
|
300
308
|
readonly id: string;
|
|
301
309
|
readonly sessionId: string;
|
|
302
310
|
readonly send: (event: Event) => Effect.Effect<void, StoppedError>;
|
|
303
311
|
}
|
|
304
312
|
/**
|
|
305
|
-
*
|
|
313
|
+
* Machine targets available while evaluating machine behavior.
|
|
306
314
|
*
|
|
307
315
|
* @category models
|
|
308
|
-
* @since 0.
|
|
316
|
+
* @since 0.12.0
|
|
309
317
|
*/
|
|
310
|
-
export interface
|
|
311
|
-
/**
|
|
312
|
-
readonly self:
|
|
313
|
-
/**
|
|
314
|
-
readonly parent:
|
|
318
|
+
export interface MachineReferences<InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>> {
|
|
319
|
+
/** Target for the current machine. Sending queues a later mailbox event. */
|
|
320
|
+
readonly self: MachineTarget<Machine.EventInputOf<InputEvents>>;
|
|
321
|
+
/** Target for the owning machine, or `undefined` when running as a root. */
|
|
322
|
+
readonly parent: MachineTarget<Machine.EventInputOf<ParentEvents>> | undefined;
|
|
315
323
|
}
|
|
316
324
|
/**
|
|
317
325
|
* Synchronous commands available while a machine transition is being
|
|
318
|
-
* selected. Enqueuing only records statechart and
|
|
326
|
+
* selected. Enqueuing only records statechart and machine operations; it never
|
|
319
327
|
* executes an Effect.
|
|
320
328
|
*
|
|
321
329
|
* @category models
|
|
@@ -324,11 +332,11 @@ export interface ActorContext<InputEvents extends ReadonlyArray<Machine.TaggedSc
|
|
|
324
332
|
export interface Enqueue<in Events, in Emits> {
|
|
325
333
|
/** Raises an event inside the current macrostep. */
|
|
326
334
|
readonly raise: (event: Machine.EventInput<Events>) => void;
|
|
327
|
-
/** Publishes an ephemeral notification to this
|
|
335
|
+
/** Publishes an ephemeral notification to this machine's observers. */
|
|
328
336
|
readonly emit: (event: Machine.EmittedEventInput<Emits>) => void;
|
|
329
337
|
/** Sends an event to an invoked child after the transition is selected. */
|
|
330
338
|
readonly sendTo: {
|
|
331
|
-
<Event>(target:
|
|
339
|
+
<Event>(target: MachineTarget<Event>, event: Event): void;
|
|
332
340
|
<Child extends ChildMachine.Any>(child: Child, event: ChildMachine.Event<Child>): void;
|
|
333
341
|
<Address extends ChildAddress<never>>(child: Address, event: ChildAddress.Event<Address>): void;
|
|
334
342
|
};
|
|
@@ -339,14 +347,14 @@ export interface Enqueue<in Events, in Emits> {
|
|
|
339
347
|
};
|
|
340
348
|
}
|
|
341
349
|
/**
|
|
342
|
-
* A closed
|
|
350
|
+
* A closed machine command recorded by a synchronous transition.
|
|
343
351
|
*
|
|
344
352
|
* @category models
|
|
345
353
|
* @since 0.4.0
|
|
346
354
|
*/
|
|
347
355
|
export type Command = {
|
|
348
356
|
readonly _tag: "SendTo";
|
|
349
|
-
readonly target:
|
|
357
|
+
readonly target: MachineTarget<unknown> | ChildMachine.Any | ChildAddress<never>;
|
|
350
358
|
readonly event: unknown;
|
|
351
359
|
} | {
|
|
352
360
|
readonly _tag: "Stop";
|
|
@@ -851,6 +859,28 @@ export type RuntimeOutcome<State, Error = never, Output = never> = {
|
|
|
851
859
|
readonly status: "stopped";
|
|
852
860
|
}>;
|
|
853
861
|
};
|
|
862
|
+
/**
|
|
863
|
+
* A fresh machine whose observable streams exist before initialization.
|
|
864
|
+
*
|
|
865
|
+
* Subscribe to `emissions` before evaluating `start` when initial-entry
|
|
866
|
+
* emissions must be observed. `start` is one-shot: concurrent and repeated
|
|
867
|
+
* evaluations share the same initialization and running reference.
|
|
868
|
+
*
|
|
869
|
+
* @category models
|
|
870
|
+
* @since 0.11.0
|
|
871
|
+
*/
|
|
872
|
+
export interface Prepared<out State, in Event, out Error, out Output, out Emitted, out StartError, StartRequirements> {
|
|
873
|
+
/** Stable machine definition id, or a generated fallback when none was declared. */
|
|
874
|
+
readonly id: string;
|
|
875
|
+
/** Unique identity reserved for this prepared machine instance. */
|
|
876
|
+
readonly sessionId: string;
|
|
877
|
+
/** Waits for startup, then streams the initial lifecycle snapshot and later changes. */
|
|
878
|
+
readonly changes: Stream.Stream<RuntimeSnapshot<State, Error, Output>, StartError>;
|
|
879
|
+
/** Streams ephemeral notifications published after subscription. */
|
|
880
|
+
readonly emissions: Stream.Stream<Emitted>;
|
|
881
|
+
/** Initializes this machine once and returns its running reference. */
|
|
882
|
+
readonly start: Effect.Effect<MachineRef<State, Event, Error, Output, Emitted>, StartError, StartRequirements>;
|
|
883
|
+
}
|
|
854
884
|
/**
|
|
855
885
|
* Provides access to a running machine's state, lifecycle, event input, and
|
|
856
886
|
* termination operations.
|
|
@@ -865,7 +895,7 @@ export type RuntimeOutcome<State, Error = never, Output = never> = {
|
|
|
865
895
|
* @category models
|
|
866
896
|
* @since 0.4.0
|
|
867
897
|
*/
|
|
868
|
-
export interface MachineRef<out State, in Event, out Error = never, out Output = never, out Emitted = never> extends
|
|
898
|
+
export interface MachineRef<out State, in Event, out Error = never, out Output = never, out Emitted = never> extends MachineTarget<Event> {
|
|
869
899
|
/** Stable machine definition id, or a generated fallback when none was declared. */
|
|
870
900
|
readonly id: string;
|
|
871
901
|
/** Unique identity for this running machine instance. */
|
|
@@ -878,7 +908,7 @@ export interface MachineRef<out State, in Event, out Error = never, out Output =
|
|
|
878
908
|
readonly changes: Stream.Stream<RuntimeSnapshot<State, Error, Output>>;
|
|
879
909
|
/**
|
|
880
910
|
* Streams ephemeral notifications published after subscription. Emissions
|
|
881
|
-
* are not retained or replayed; the stream completes when the
|
|
911
|
+
* are not retained or replayed; the stream completes when the machine stops.
|
|
882
912
|
*/
|
|
883
913
|
readonly emissions: Stream.Stream<Emitted>;
|
|
884
914
|
/** Waits for machine output or fails when execution fails or is stopped. */
|
|
@@ -958,9 +988,9 @@ export declare namespace Logic {
|
|
|
958
988
|
readonly parent: Address<unknown> | undefined;
|
|
959
989
|
/** Starts a child process owned by this scope. */
|
|
960
990
|
readonly spawn: Spawn;
|
|
961
|
-
/** Sends an event to
|
|
991
|
+
/** Sends an event to a machine target or typed parent-local child address. */
|
|
962
992
|
readonly sendTo: {
|
|
963
|
-
<TargetEvent>(target:
|
|
993
|
+
<TargetEvent>(target: MachineTarget<TargetEvent>, event: TargetEvent): Effect.Effect<void, StoppedError>;
|
|
964
994
|
<Address extends ChildAddress<never>>(id: Address, event: ChildAddress.Event<Address>): Effect.Effect<void, StoppedError>;
|
|
965
995
|
};
|
|
966
996
|
/** Stops a child process selected by its parent-local address. */
|
|
@@ -1176,6 +1206,8 @@ export declare namespace Machine {
|
|
|
1176
1206
|
/** @internal */
|
|
1177
1207
|
readonly handle: any;
|
|
1178
1208
|
/** @internal */
|
|
1209
|
+
readonly invoke: any;
|
|
1210
|
+
/** @internal */
|
|
1179
1211
|
readonly initial: any;
|
|
1180
1212
|
}
|
|
1181
1213
|
/**
|
|
@@ -1271,7 +1303,7 @@ export declare namespace Machine {
|
|
|
1271
1303
|
* @since 0.4.0
|
|
1272
1304
|
*/
|
|
1273
1305
|
type InputEvents<M extends Any> = M[typeof MachineTypeId]["inputEvents"];
|
|
1274
|
-
/** Extracts the public input protocol required from an owning
|
|
1306
|
+
/** Extracts the public input protocol required from an owning machine. */
|
|
1275
1307
|
type ParentEvents<M extends Any> = M[typeof MachineTypeId]["parentEvents"];
|
|
1276
1308
|
/** Extracts an internal event schema tuple from the complete and public protocols. */
|
|
1277
1309
|
type InternalEventSchemas<Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>> = Events extends readonly [
|
|
@@ -2511,7 +2543,7 @@ export declare namespace Machine {
|
|
|
2511
2543
|
* @category models
|
|
2512
2544
|
* @since 0.4.0
|
|
2513
2545
|
*/
|
|
2514
|
-
interface 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 []> extends
|
|
2546
|
+
interface 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 []> extends MachineReferences<InputEvents, ParentEvents> {
|
|
2515
2547
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2516
2548
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2517
2549
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
@@ -2532,7 +2564,7 @@ export declare namespace Machine {
|
|
|
2532
2564
|
* @category models
|
|
2533
2565
|
* @since 0.4.0
|
|
2534
2566
|
*/
|
|
2535
|
-
interface 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 []> extends
|
|
2567
|
+
interface 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 []> extends MachineReferences<InputEvents, ParentEvents> {
|
|
2536
2568
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2537
2569
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2538
2570
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
@@ -2544,7 +2576,7 @@ export declare namespace Machine {
|
|
|
2544
2576
|
* @category models
|
|
2545
2577
|
* @since 0.4.0
|
|
2546
2578
|
*/
|
|
2547
|
-
interface 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 []> extends
|
|
2579
|
+
interface 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 []> extends MachineReferences<InputEvents, ParentEvents> {
|
|
2548
2580
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2549
2581
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2550
2582
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
@@ -2556,7 +2588,7 @@ export declare namespace Machine {
|
|
|
2556
2588
|
* @category models
|
|
2557
2589
|
* @since 0.4.0
|
|
2558
2590
|
*/
|
|
2559
|
-
interface 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 []> extends
|
|
2591
|
+
interface 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 []> extends MachineReferences<InputEvents, ParentEvents> {
|
|
2560
2592
|
readonly id: string;
|
|
2561
2593
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2562
2594
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
@@ -2572,7 +2604,7 @@ export declare namespace Machine {
|
|
|
2572
2604
|
* @category models
|
|
2573
2605
|
* @since 0.4.0
|
|
2574
2606
|
*/
|
|
2575
|
-
interface 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 []> extends
|
|
2607
|
+
interface 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 []> extends MachineReferences<InputEvents, ParentEvents> {
|
|
2576
2608
|
readonly id: string;
|
|
2577
2609
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2578
2610
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
@@ -2582,7 +2614,7 @@ export declare namespace Machine {
|
|
|
2582
2614
|
readonly output: Output;
|
|
2583
2615
|
}
|
|
2584
2616
|
/** Context passed to an invocation typed-failure transition. */
|
|
2585
|
-
interface 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 []> extends
|
|
2617
|
+
interface 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 []> extends MachineReferences<InputEvents, ParentEvents> {
|
|
2586
2618
|
readonly id: string;
|
|
2587
2619
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2588
2620
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
@@ -2597,7 +2629,7 @@ export declare namespace Machine {
|
|
|
2597
2629
|
* @category models
|
|
2598
2630
|
* @since 0.4.0
|
|
2599
2631
|
*/
|
|
2600
|
-
interface 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 []> extends
|
|
2632
|
+
interface 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 []> extends MachineReferences<InputEvents, ParentEvents> {
|
|
2601
2633
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2602
2634
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2603
2635
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
@@ -2619,7 +2651,7 @@ export declare namespace Machine {
|
|
|
2619
2651
|
* @category models
|
|
2620
2652
|
* @since 0.4.0
|
|
2621
2653
|
*/
|
|
2622
|
-
interface 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 []> extends
|
|
2654
|
+
interface 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 []> extends MachineReferences<InputEvents, ParentEvents> {
|
|
2623
2655
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2624
2656
|
readonly containingState: ParentStateValue<States, StateId>;
|
|
2625
2657
|
readonly ancestors: ParentStateValues<States, StateId>;
|
|
@@ -2637,7 +2669,7 @@ export declare namespace Machine {
|
|
|
2637
2669
|
readonly target: TargetBuilder<States, StateId>;
|
|
2638
2670
|
}
|
|
2639
2671
|
/** Context passed to a transient choice resolver. There is no `state` value. */
|
|
2640
|
-
interface 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 []> extends
|
|
2672
|
+
interface 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 []> extends MachineReferences<InputEvents, ParentEvents> {
|
|
2641
2673
|
readonly containingState: StateByIdentifier<States, Extract<ImmediateParentStateIdentifier<ChoiceId>, StateIdentifier<States>>>;
|
|
2642
2674
|
readonly ancestors: {
|
|
2643
2675
|
readonly [Parent in Extract<ParentStateIdentifier<ChoiceId>, ValuedStateIdentifier<States>>]: StateByIdentifier<States, Parent>;
|
|
@@ -2961,9 +2993,9 @@ export declare namespace Machine {
|
|
|
2961
2993
|
readonly parentEvents: Types.Covariant<ParentEvent>;
|
|
2962
2994
|
};
|
|
2963
2995
|
}
|
|
2964
|
-
type InvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States
|
|
2996
|
+
type InvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = InvokeOwned<States, Events, Emits, StateId> & ({
|
|
2965
2997
|
readonly id: string;
|
|
2966
|
-
readonly effect: InvokeSource<Effect.Effect<any, any, any>, InvokeContext<States, Events, Emits, StateId>>;
|
|
2998
|
+
readonly effect: InvokeSource<Effect.Effect<any, any, any>, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
2967
2999
|
readonly after?: never;
|
|
2968
3000
|
readonly logic?: never;
|
|
2969
3001
|
readonly child?: never;
|
|
@@ -2973,7 +3005,7 @@ export declare namespace Machine {
|
|
|
2973
3005
|
readonly onSnapshot?: never;
|
|
2974
3006
|
} | {
|
|
2975
3007
|
readonly id: string;
|
|
2976
|
-
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId>>;
|
|
3008
|
+
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
2977
3009
|
readonly effect?: never;
|
|
2978
3010
|
readonly logic?: never;
|
|
2979
3011
|
readonly child?: never;
|
|
@@ -2984,7 +3016,7 @@ export declare namespace Machine {
|
|
|
2984
3016
|
} | {
|
|
2985
3017
|
readonly id: string;
|
|
2986
3018
|
readonly address: string;
|
|
2987
|
-
readonly logic: InvokeSource<AnyLogicSource, InvokeContext<States, Events, Emits, StateId>>;
|
|
3019
|
+
readonly logic: InvokeSource<AnyLogicSource, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
2988
3020
|
readonly effect?: never;
|
|
2989
3021
|
readonly after?: never;
|
|
2990
3022
|
readonly child?: never;
|
|
@@ -2993,7 +3025,7 @@ export declare namespace Machine {
|
|
|
2993
3025
|
readonly onSnapshot?: unknown;
|
|
2994
3026
|
} | {
|
|
2995
3027
|
readonly child: ChildMachine.Any;
|
|
2996
|
-
readonly input?: {} | null | ((context: InvokeContext<States, Events, Emits, StateId>) => unknown);
|
|
3028
|
+
readonly input?: {} | null | ((context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown);
|
|
2997
3029
|
readonly id?: never;
|
|
2998
3030
|
readonly address?: never;
|
|
2999
3031
|
readonly effect?: never;
|
|
@@ -3004,7 +3036,8 @@ export declare namespace Machine {
|
|
|
3004
3036
|
readonly onSnapshot?: unknown;
|
|
3005
3037
|
});
|
|
3006
3038
|
/** State-bound inline invocation configuration. */
|
|
3007
|
-
type InvokeDefinition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States
|
|
3039
|
+
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>>;
|
|
3040
|
+
type TypedInvokeDefinition = InvokeTyped<any, any, any, any, any, any> | ReadonlyArray<InvokeTyped<any, any, any, any, any, any>>;
|
|
3008
3041
|
type InvokeHandlerRequirement<Value, Handler> = IsAny<Value> extends true ? {
|
|
3009
3042
|
readonly handler: Handler;
|
|
3010
3043
|
} : [Value] extends [never] ? {
|
|
@@ -3026,7 +3059,7 @@ export declare namespace Machine {
|
|
|
3026
3059
|
} : {
|
|
3027
3060
|
readonly onFailure?: never;
|
|
3028
3061
|
} : never;
|
|
3029
|
-
type EffectInvokeArgs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Fx extends Effect.Effect<any, any, any>, Source = Fx> = {
|
|
3062
|
+
type EffectInvokeArgs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Fx extends Effect.Effect<any, any, any>, Source = Fx, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = {
|
|
3030
3063
|
readonly id: InvokeLifecycleId;
|
|
3031
3064
|
readonly effect: Source;
|
|
3032
3065
|
readonly after?: never;
|
|
@@ -3034,74 +3067,74 @@ export declare namespace Machine {
|
|
|
3034
3067
|
readonly child?: never;
|
|
3035
3068
|
readonly address?: never;
|
|
3036
3069
|
readonly onSnapshot?: never;
|
|
3037
|
-
} & InvokeDoneRequirement<Effect.Success<NoInfer<Fx>>, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<NoInfer<Fx
|
|
3038
|
-
type TimerInvokeArgs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States
|
|
3070
|
+
} & InvokeDoneRequirement<Effect.Success<NoInfer<Fx>>, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<NoInfer<Fx>>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<Effect.Error<NoInfer<Fx>>, InvokeTransition<States, Events, Emits, InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<NoInfer<Fx>>, InputEvents, ParentEvents>>>;
|
|
3071
|
+
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 []> = {
|
|
3039
3072
|
readonly id: InvokeLifecycleId;
|
|
3040
|
-
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId>>;
|
|
3073
|
+
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3041
3074
|
readonly effect?: never;
|
|
3042
3075
|
readonly logic?: never;
|
|
3043
3076
|
readonly child?: never;
|
|
3044
3077
|
readonly address?: never;
|
|
3045
3078
|
readonly onFailure?: never;
|
|
3046
3079
|
readonly onSnapshot?: never;
|
|
3047
|
-
readonly onDone: InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, void>>;
|
|
3080
|
+
readonly onDone: InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, void, InputEvents, ParentEvents>>;
|
|
3048
3081
|
};
|
|
3049
|
-
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
|
|
3082
|
+
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 []> = {
|
|
3050
3083
|
readonly id: InvokeLifecycleId;
|
|
3051
3084
|
readonly address: Address & ChildAddress.Compatibility<Address, ChildEvent>;
|
|
3052
3085
|
readonly logic: Source;
|
|
3053
3086
|
readonly effect?: never;
|
|
3054
3087
|
readonly after?: never;
|
|
3055
3088
|
readonly child?: never;
|
|
3056
|
-
readonly onSnapshot?: InvokeTransition<States, Events, Emits, InvokeSnapshotContext<States, Events, Emits, StateId, ChildState, ChildError, ChildOutput>>;
|
|
3057
|
-
} & InvokeDoneRequirement<ChildOutput, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, ChildOutput>>> & InvokeFailureRequirement<ChildError, InvokeTransition<States, Events, Emits, InvokeFailureContext<States, Events, Emits, StateId, ChildError>>>;
|
|
3058
|
-
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
|
|
3089
|
+
readonly onSnapshot?: InvokeTransition<States, Events, Emits, InvokeSnapshotContext<States, Events, Emits, StateId, ChildState, ChildError, ChildOutput, InputEvents, ParentEvents>>;
|
|
3090
|
+
} & InvokeDoneRequirement<ChildOutput, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, ChildOutput, InputEvents, ParentEvents>>> & InvokeFailureRequirement<ChildError, InvokeTransition<States, Events, Emits, InvokeFailureContext<States, Events, Emits, StateId, ChildError, InputEvents, ParentEvents>>>;
|
|
3091
|
+
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 []> = {
|
|
3059
3092
|
readonly child: Child & (ChildDefinition extends EnsureExecutable<Machine.States<ChildDefinition>, Machine.UnhandledStates<ChildDefinition>, Machine.OutputStates<ChildDefinition>> ? unknown : never);
|
|
3060
3093
|
readonly id?: never;
|
|
3061
3094
|
readonly address?: never;
|
|
3062
3095
|
readonly effect?: never;
|
|
3063
3096
|
readonly after?: never;
|
|
3064
3097
|
readonly logic?: never;
|
|
3065
|
-
readonly onSnapshot?: InvokeTransition<States, Events, Emits, InvokeSnapshotContext<States, Events, Emits, StateId, Snapshot<Machine.States<ChildDefinition>>, Error<ChildDefinition>, Output<ChildDefinition
|
|
3098
|
+
readonly onSnapshot?: InvokeTransition<States, Events, Emits, InvokeSnapshotContext<States, Events, Emits, StateId, Snapshot<Machine.States<ChildDefinition>>, Error<ChildDefinition>, Output<ChildDefinition>, InputEvents, ParentEvents>>;
|
|
3066
3099
|
} & (Input<ChildDefinition> extends typeof Schema.Void ? {
|
|
3067
3100
|
readonly input?: never;
|
|
3068
3101
|
} : {
|
|
3069
|
-
readonly input: InvokeSource<Input<ChildDefinition>["Type"], InvokeContext<States, Events, Emits, StateId>>;
|
|
3070
|
-
}) & InvokeDoneRequirement<Output<ChildDefinition>, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, Output<ChildDefinition
|
|
3102
|
+
readonly input: InvokeSource<Input<ChildDefinition>["Type"], InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3103
|
+
}) & InvokeDoneRequirement<Output<ChildDefinition>, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, Output<ChildDefinition>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, InvokeTransition<States, Events, Emits, InvokeFailureContext<States, Events, Emits, StateId, Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, InputEvents, ParentEvents>>>;
|
|
3071
3104
|
type LogicStateOf<Value> = Value extends Logic<infer State, any, any, any, any, any> ? State : never;
|
|
3072
3105
|
type LogicEventOf<Value> = Value extends Logic<any, infer Event, any, any, any, any> ? Event : never;
|
|
3073
3106
|
type LogicErrorOf<Value> = Value extends Logic<any, any, infer Error, any, any, any> ? Error : never;
|
|
3074
3107
|
type LogicServicesOf<Value> = Value extends Logic<any, any, any, infer Services, any, any> ? Services : never;
|
|
3075
3108
|
type LogicOutputOf<Value> = Value extends Logic<any, any, any, any, infer Output, any> ? Output : never;
|
|
3076
3109
|
type LogicInitialErrorOf<Value> = Value extends Logic<any, any, any, any, any, infer Error> ? Error : never;
|
|
3077
|
-
type ContextualInvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Raw> = Raw extends InvokeTyped<any, any, any, any, any> ? unknown : Raw extends {
|
|
3110
|
+
type ContextualInvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Raw> = Raw extends InvokeTyped<any, any, any, any, any> ? unknown : Raw extends {
|
|
3078
3111
|
readonly effect: infer Source;
|
|
3079
|
-
} ? InvokeResolvedSource<Source> extends infer Fx extends Effect.Effect<any, any, any> ? InvokeDoneRequirement<Effect.Success<Fx>, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<Fx
|
|
3112
|
+
} ? InvokeResolvedSource<Source> extends infer Fx extends Effect.Effect<any, any, any> ? InvokeDoneRequirement<Effect.Success<Fx>, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<Fx>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<Effect.Error<Fx>, InvokeTransition<States, Events, Emits, InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<Fx>, InputEvents, ParentEvents>>> & {
|
|
3080
3113
|
readonly onSnapshot?: never;
|
|
3081
3114
|
} : never : Raw extends {
|
|
3082
3115
|
readonly after: unknown;
|
|
3083
3116
|
} ? {
|
|
3084
|
-
readonly onDone: InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, void>>;
|
|
3117
|
+
readonly onDone: InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, void, InputEvents, ParentEvents>>;
|
|
3085
3118
|
readonly onFailure?: never;
|
|
3086
3119
|
readonly onSnapshot?: never;
|
|
3087
3120
|
} : Raw extends {
|
|
3088
3121
|
readonly logic: infer Source;
|
|
3089
3122
|
readonly address: infer Address;
|
|
3090
|
-
} ? InvokeResolvedSource<Source> extends infer ChildLogic extends Logic<any, any, any, any, any, any> ? InvokeDoneRequirement<InvokeOutput<Raw>, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, InvokeOutput<Raw
|
|
3123
|
+
} ? InvokeResolvedSource<Source> extends infer ChildLogic extends Logic<any, any, any, any, any, any> ? InvokeDoneRequirement<InvokeOutput<Raw>, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, InvokeOutput<Raw>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<InvokeRuntimeError<Raw>, InvokeTransition<States, Events, Emits, InvokeFailureContext<States, Events, Emits, StateId, InvokeRuntimeError<Raw>, InputEvents, ParentEvents>>> & {
|
|
3091
3124
|
readonly address: ChildAddress<never> & ChildAddress.Compatibility<Address, ChildLogic extends Logic<any, infer ChildEvent, any, any, any, any> ? ChildEvent : never>;
|
|
3092
|
-
readonly onSnapshot?: InvokeTransition<States, Events, Emits, InvokeSnapshotContext<States, Events, Emits, StateId, ChildLogic extends Logic<infer ChildState, any, any, any, any, any> ? ChildState : never, InvokeRuntimeError<Raw>, InvokeOutput<Raw
|
|
3125
|
+
readonly onSnapshot?: InvokeTransition<States, Events, Emits, InvokeSnapshotContext<States, Events, Emits, StateId, ChildLogic extends Logic<infer ChildState, any, any, any, any, any> ? ChildState : never, InvokeRuntimeError<Raw>, InvokeOutput<Raw>, InputEvents, ParentEvents>>;
|
|
3093
3126
|
} : never : Raw extends {
|
|
3094
3127
|
readonly child: infer Child extends ChildMachine<string, infer ChildDefinition>;
|
|
3095
|
-
} ? ChildMachineLogic<Child> extends infer ChildLogic extends Logic<any, any, any, any, any, any> ? InvokeDoneRequirement<Output<ChildDefinition>, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, Output<ChildDefinition
|
|
3128
|
+
} ? ChildMachineLogic<Child> extends infer ChildLogic extends Logic<any, any, any, any, any, any> ? InvokeDoneRequirement<Output<ChildDefinition>, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, Output<ChildDefinition>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, InvokeTransition<States, Events, Emits, InvokeFailureContext<States, Events, Emits, StateId, Error<ChildDefinition> | ActionError<Services<ChildDefinition>>, InputEvents, ParentEvents>>> & (Input<ChildDefinition> extends typeof Schema.Void ? {
|
|
3096
3129
|
readonly input?: never;
|
|
3097
3130
|
} : {
|
|
3098
|
-
readonly input: InvokeSource<Input<ChildDefinition>["Type"], InvokeContext<States, Events, Emits, StateId>>;
|
|
3131
|
+
readonly input: InvokeSource<Input<ChildDefinition>["Type"], InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3099
3132
|
}) & {
|
|
3100
|
-
readonly onSnapshot?: InvokeTransition<States, Events, Emits, InvokeSnapshotContext<States, Events, Emits, StateId, Snapshot<Machine.States<ChildDefinition>>, Error<ChildDefinition>, Output<ChildDefinition
|
|
3133
|
+
readonly onSnapshot?: InvokeTransition<States, Events, Emits, InvokeSnapshotContext<States, Events, Emits, StateId, Snapshot<Machine.States<ChildDefinition>>, Error<ChildDefinition>, Output<ChildDefinition>, InputEvents, ParentEvents>>;
|
|
3101
3134
|
} : never : never;
|
|
3102
|
-
type ContextualInvokeDefinition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Raw> = Raw extends ReadonlyArray<any> ? {
|
|
3103
|
-
readonly [Index in keyof Raw]: ContextualInvokeConfig<States, Events, Emits, StateId, Raw[Index]>;
|
|
3104
|
-
} : ContextualInvokeConfig<States, Events, Emits, StateId, Raw>;
|
|
3135
|
+
type ContextualInvokeDefinition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Raw> = Raw extends ReadonlyArray<any> ? {
|
|
3136
|
+
readonly [Index in keyof Raw]: ContextualInvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents, Raw[Index]>;
|
|
3137
|
+
} : ContextualInvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents, Raw>;
|
|
3105
3138
|
type OutputHandlerConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Context> = NodeByIdentifier<States, StateId> extends {
|
|
3106
3139
|
readonly output: Schema.Top;
|
|
3107
3140
|
} ? {
|
|
@@ -3123,7 +3156,7 @@ export declare namespace Machine {
|
|
|
3123
3156
|
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 []> = {
|
|
3124
3157
|
readonly entry?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3125
3158
|
readonly exit?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3126
|
-
readonly invoke?: InvokeDefinition<States, Events, Emits, StateId
|
|
3159
|
+
readonly invoke?: InvokeDefinition<States, Events, Emits, StateId, InputEvents, ParentEvents> | TypedInvokeDefinition;
|
|
3127
3160
|
readonly always?: ((context: AlwaysContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>) | {
|
|
3128
3161
|
/** Statically declared upper bound of possible target paths. */
|
|
3129
3162
|
readonly targets?: ReadonlyArray<StateNodeIdentifier<States>>;
|
|
@@ -3235,12 +3268,12 @@ export declare namespace Machine {
|
|
|
3235
3268
|
readonly states: infer Children extends StateSchemas;
|
|
3236
3269
|
} ? HandlerNodeByPath<Children, Rest> : never : never : Path extends keyof States ? States[Path] : never;
|
|
3237
3270
|
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;
|
|
3238
|
-
type HandlerInvokeContextAtPath<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Config, StateId extends StateNodeIdentifier<AllStates>, NodeConfig = HandlerConfigAtPath<Config, StateId>> = StateId extends StateIdentifier<AllStates> ? NodeConfig extends {
|
|
3271
|
+
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 {
|
|
3239
3272
|
readonly invoke: infer Invoke;
|
|
3240
3273
|
} ? HandlerValidationAtPath<StateId, {
|
|
3241
|
-
readonly invoke: ContextualInvokeDefinition<AllStates, Events, Emits, StateId, Invoke>;
|
|
3274
|
+
readonly invoke: ContextualInvokeDefinition<AllStates, Events, Emits, StateId, InputEvents, ParentEvents, Invoke>;
|
|
3242
3275
|
}> : unknown : unknown;
|
|
3243
|
-
type HandlerInvokeContexts<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Config> = Types.UnionToIntersection<StateNodeIdentifier<AllStates> extends infer StateId extends StateNodeIdentifier<AllStates> ? StateId extends StateNodeIdentifier<AllStates> ? HandlerInvokeContextAtPath<AllStates, Events, Emits, Config, StateId> : never : never>;
|
|
3276
|
+
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>;
|
|
3244
3277
|
type HandlerValidationAtPath<Path extends string, Validation> = Path extends `${infer Head}.${infer Rest}` ? {
|
|
3245
3278
|
readonly [Key in Head]?: {
|
|
3246
3279
|
readonly states: HandlerValidationAtPath<Rest, Validation>;
|
|
@@ -3391,7 +3424,7 @@ export declare namespace Machine {
|
|
|
3391
3424
|
* @since 0.4.0
|
|
3392
3425
|
*/
|
|
3393
3426
|
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>> {
|
|
3394
|
-
<const Config extends HandlerTree<States, States, Events, Emits, E, R, InputEvents, ParentEvents, "">>(config: Config & HandlerInvokeContexts<States, Events, Emits, NoInfer<Config>> & HandlerTreeValidation<States, Events, InputEvents, Emits, NoInfer<Config>, OutputStates | Extract<HandlerTreeEvidence<States, NoInfer<Config>>["outputState"], StateIdentifier<States>>>): HandleTreeResult<States, Events, Emits, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, OutputStates, InputEvents, ParentEvents, Config>;
|
|
3427
|
+
<const Config extends HandlerTree<States, States, Events, Emits, E, R, InputEvents, ParentEvents, "">>(config: Config & HandlerInvokeContexts<States, Events, InputEvents, Emits, ParentEvents, NoInfer<Config>> & HandlerTreeValidation<States, Events, InputEvents, Emits, NoInfer<Config>, OutputStates | Extract<HandlerTreeEvidence<States, NoInfer<Config>>["outputState"], StateIdentifier<States>>>): HandleTreeResult<States, Events, Emits, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, OutputStates, InputEvents, ParentEvents, Config>;
|
|
3395
3428
|
}
|
|
3396
3429
|
/**
|
|
3397
3430
|
* Any state config.
|
|
@@ -3524,7 +3557,7 @@ interface Make {
|
|
|
3524
3557
|
* adds raised events and other machine-local deliveries.
|
|
3525
3558
|
* `Machine.emittedEvents` defines outward ephemeral notifications, while
|
|
3526
3559
|
* `parentEvents` declares the inputs a child may explicitly send to its owning
|
|
3527
|
-
*
|
|
3560
|
+
* machine. All descriptors expose deferred constructors while retaining their
|
|
3528
3561
|
* schemas opaquely for runtime validation. Public and internal tags must be
|
|
3529
3562
|
* disjoint.
|
|
3530
3563
|
*
|
|
@@ -3622,8 +3655,8 @@ export declare const internalEvents: {
|
|
|
3622
3655
|
};
|
|
3623
3656
|
/**
|
|
3624
3657
|
* Defines the ephemeral notifications a machine may publish to external
|
|
3625
|
-
* observers. Emitted events are separate from
|
|
3626
|
-
* implicitly to a parent
|
|
3658
|
+
* observers. Emitted events are separate from machine input and are never sent
|
|
3659
|
+
* implicitly to a parent machine. Observe them through `MachineRef.emissions` or
|
|
3627
3660
|
* the AtomMachine emission stream adapters.
|
|
3628
3661
|
*
|
|
3629
3662
|
* @category constructors
|
|
@@ -3726,7 +3759,7 @@ export declare const encodeSnapshot: <const States extends Machine.StateSchemas,
|
|
|
3726
3759
|
* @since 0.4.0
|
|
3727
3760
|
*/
|
|
3728
3761
|
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>>;
|
|
3729
|
-
type DynamicEffectInvokeSource<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId>) => Effect.Effect<unknown, unknown, unknown>> = {
|
|
3762
|
+
type DynamicEffectInvokeSource<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, readonly [], readonly []>) => Effect.Effect<unknown, unknown, unknown>> = {
|
|
3730
3763
|
readonly id: InvokeLifecycleId;
|
|
3731
3764
|
readonly effect: Source;
|
|
3732
3765
|
readonly after?: never;
|
|
@@ -3735,10 +3768,60 @@ type DynamicEffectInvokeSource<States extends Machine.StateSchemas, Events exten
|
|
|
3735
3768
|
readonly address?: never;
|
|
3736
3769
|
readonly onSnapshot?: never;
|
|
3737
3770
|
};
|
|
3738
|
-
type DynamicEffectDoneHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, Machine.InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<ReturnType<NoInfer<Source
|
|
3739
|
-
type DynamicEffectFailureHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, Machine.InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<ReturnType<NoInfer<Source
|
|
3740
|
-
type DynamicEffectInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits 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> & Machine.InvokeTyped<Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never>;
|
|
3771
|
+
type DynamicEffectDoneHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, Machine.InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<ReturnType<NoInfer<Source>>>, readonly [], readonly []>>;
|
|
3772
|
+
type DynamicEffectFailureHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, Machine.InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<ReturnType<NoInfer<Source>>>, readonly [], readonly []>>;
|
|
3773
|
+
type DynamicEffectInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits 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, readonly [], readonly []> & Machine.InvokeTyped<Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never>;
|
|
3741
3774
|
type InvokeChannelIsNever<Value> = IsAny<Value> extends true ? false : [Value] extends [never] ? true : false;
|
|
3775
|
+
type BoundDynamicEffectInvokeSource<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>> = {
|
|
3776
|
+
readonly id: InvokeLifecycleId;
|
|
3777
|
+
readonly effect: Source;
|
|
3778
|
+
readonly after?: never;
|
|
3779
|
+
readonly logic?: never;
|
|
3780
|
+
readonly child?: never;
|
|
3781
|
+
readonly address?: never;
|
|
3782
|
+
readonly onSnapshot?: never;
|
|
3783
|
+
};
|
|
3784
|
+
type BoundDynamicEffectDoneHandler<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, Machine.InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
3785
|
+
type BoundDynamicEffectFailureHandler<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, Machine.InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
3786
|
+
type BoundDynamicEffectInvokeResult<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>;
|
|
3787
|
+
/**
|
|
3788
|
+
* Machine-bound invocation constructor that preserves the owning machine's
|
|
3789
|
+
* public input and parent protocols in every invocation callback.
|
|
3790
|
+
*
|
|
3791
|
+
* @category constructors
|
|
3792
|
+
* @since 0.11.0
|
|
3793
|
+
*/
|
|
3794
|
+
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>> {
|
|
3795
|
+
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>>(config: BoundDynamicEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
3796
|
+
readonly onDone: BoundDynamicEffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
3797
|
+
readonly onFailure: BoundDynamicEffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
3798
|
+
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
3799
|
+
"onDone must be omitted when the Effect output is never"
|
|
3800
|
+
] : InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
3801
|
+
"onFailure must be omitted when the Effect error is never"
|
|
3802
|
+
] : []): BoundDynamicEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
3803
|
+
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, never, unknown>>(config: BoundDynamicEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
3804
|
+
readonly onDone: BoundDynamicEffectDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
3805
|
+
readonly onFailure?: never;
|
|
3806
|
+
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
3807
|
+
"onDone must be omitted when the Effect output is never"
|
|
3808
|
+
] : []): BoundDynamicEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
3809
|
+
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, unknown, unknown>>(config: BoundDynamicEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
3810
|
+
readonly onDone?: never;
|
|
3811
|
+
readonly onFailure: BoundDynamicEffectFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
3812
|
+
}, ..._validation: InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
3813
|
+
"onFailure must be omitted when the Effect error is never"
|
|
3814
|
+
] : []): BoundDynamicEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
3815
|
+
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<never, never, unknown>>(config: BoundDynamicEffectInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
3816
|
+
readonly onDone?: never;
|
|
3817
|
+
readonly onFailure?: never;
|
|
3818
|
+
}): BoundDynamicEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
3819
|
+
<StateId extends Machine.StateIdentifier<States>, const Fx extends Effect.Effect<any, any, any>, const Config extends object>(config: Config & Machine.EffectInvokeArgs<States, Events, Emits, StateId, Fx, Fx, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<Effect.Success<Fx>, Effect.Error<Fx>, Effect.Services<Fx>, never>;
|
|
3820
|
+
<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>;
|
|
3821
|
+
<StateId extends Machine.StateIdentifier<States>, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address extends ChildAddress<never>>(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>;
|
|
3822
|
+
<StateId extends Machine.StateIdentifier<States>, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address extends ChildAddress<never>, const Config extends object>(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>;
|
|
3823
|
+
<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"]>>>;
|
|
3824
|
+
}
|
|
3742
3825
|
/**
|
|
3743
3826
|
* Preserves inference for a state-owned invocation configuration.
|
|
3744
3827
|
*
|
|
@@ -3755,6 +3838,12 @@ type InvokeChannelIsNever<Value> = IsAny<Value> extends true ? false : [Value] e
|
|
|
3755
3838
|
* lifecycle `id` and a typed communication `address`. Child descriptors already
|
|
3756
3839
|
* own their identity, so `id` and `address` must not be repeated.
|
|
3757
3840
|
*
|
|
3841
|
+
* Owner references are intentionally non-sendable here because this standalone
|
|
3842
|
+
* constructor does not know the owning definition. When a callback sends to
|
|
3843
|
+
* `self` or `parent`, use the bound constructor on the owning definition
|
|
3844
|
+
* (`definition.invoke(...)`) so the exact public input and `parentEvents`
|
|
3845
|
+
* protocols are available.
|
|
3846
|
+
*
|
|
3758
3847
|
* ```ts
|
|
3759
3848
|
* invoke: Machine.invoke({
|
|
3760
3849
|
* id: "load",
|
|
@@ -3771,7 +3860,7 @@ type InvokeChannelIsNever<Value> = IsAny<Value> extends true ? false : [Value] e
|
|
|
3771
3860
|
* @since 0.9.0
|
|
3772
3861
|
*/
|
|
3773
3862
|
export declare const invoke: {
|
|
3774
|
-
<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>) => Effect.Effect<unknown, unknown, unknown>>(config: DynamicEffectInvokeSource<States, Events, Emits, StateId, Source> & {
|
|
3863
|
+
<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, readonly [], readonly []>) => Effect.Effect<unknown, unknown, unknown>>(config: DynamicEffectInvokeSource<States, Events, Emits, StateId, Source> & {
|
|
3775
3864
|
readonly onDone: DynamicEffectDoneHandler<States, Events, Emits, StateId, Source>;
|
|
3776
3865
|
readonly onFailure: DynamicEffectFailureHandler<States, Events, Emits, StateId, Source>;
|
|
3777
3866
|
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
@@ -3779,34 +3868,34 @@ export declare const invoke: {
|
|
|
3779
3868
|
] : InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
3780
3869
|
"onFailure must be omitted when the Effect error is never"
|
|
3781
3870
|
] : []): DynamicEffectInvokeResult<States, Events, Emits, StateId, Source>;
|
|
3782
|
-
<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>) => Effect.Effect<unknown, never, unknown>>(config: DynamicEffectInvokeSource<States, Events, Emits, StateId, Source> & {
|
|
3871
|
+
<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, readonly [], readonly []>) => Effect.Effect<unknown, never, unknown>>(config: DynamicEffectInvokeSource<States, Events, Emits, StateId, Source> & {
|
|
3783
3872
|
readonly onDone: DynamicEffectDoneHandler<States, Events, Emits, StateId, Source>;
|
|
3784
3873
|
readonly onFailure?: never;
|
|
3785
3874
|
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
3786
3875
|
"onDone must be omitted when the Effect output is never"
|
|
3787
3876
|
] : []): DynamicEffectInvokeResult<States, Events, Emits, StateId, Source>;
|
|
3788
|
-
<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>) => Effect.Effect<never, unknown, unknown>>(config: DynamicEffectInvokeSource<States, Events, Emits, StateId, Source> & {
|
|
3877
|
+
<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, readonly [], readonly []>) => Effect.Effect<never, unknown, unknown>>(config: DynamicEffectInvokeSource<States, Events, Emits, StateId, Source> & {
|
|
3789
3878
|
readonly onDone?: never;
|
|
3790
3879
|
readonly onFailure: DynamicEffectFailureHandler<States, Events, Emits, StateId, Source>;
|
|
3791
3880
|
}, ..._validation: InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
3792
3881
|
"onFailure must be omitted when the Effect error is never"
|
|
3793
3882
|
] : []): DynamicEffectInvokeResult<States, Events, Emits, StateId, Source>;
|
|
3794
|
-
<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>) => Effect.Effect<never, never, unknown>>(config: DynamicEffectInvokeSource<States, Events, Emits, StateId, Source> & {
|
|
3883
|
+
<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, readonly [], readonly []>) => Effect.Effect<never, never, unknown>>(config: DynamicEffectInvokeSource<States, Events, Emits, StateId, Source> & {
|
|
3795
3884
|
readonly onDone?: never;
|
|
3796
3885
|
readonly onFailure?: never;
|
|
3797
3886
|
}): DynamicEffectInvokeResult<States, Events, Emits, StateId, Source>;
|
|
3798
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Fx extends Effect.Effect<any, any, any>, const Config extends object>(config: Config & Machine.EffectInvokeArgs<States, Events, Emits, StateId, Fx>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<Effect.Success<Fx>, Effect.Error<Fx>, Effect.Services<Fx>, never>;
|
|
3799
|
-
<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>(config: Config & Machine.TimerInvokeArgs<States, Events, Emits, StateId>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<void, never, never, never>;
|
|
3800
|
-
<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>>(config: Machine.LogicInvokeArgs<States, Events, Emits, StateId, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address, (context: Machine.InvokeContext<States, Events, Emits, StateId>) => Logic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError
|
|
3801
|
-
<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>(config: Config & Machine.LogicInvokeArgs<States, Events, Emits, StateId, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<ChildOutput, ChildError, ChildRequirements, ChildInitialError>;
|
|
3802
|
-
<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>(config: Config & Machine.ChildInvokeArgs<States, Events, Emits, StateId, Child["machine"], Child>): 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"]>>>;
|
|
3887
|
+
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Fx extends Effect.Effect<any, any, any>, const Config extends object>(config: Config & Machine.EffectInvokeArgs<States, Events, Emits, StateId, Fx, Fx, readonly [], readonly []>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<Effect.Success<Fx>, Effect.Error<Fx>, Effect.Services<Fx>, never>;
|
|
3888
|
+
<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>(config: Config & Machine.TimerInvokeArgs<States, Events, Emits, StateId, readonly [], readonly []>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<void, never, never, never>;
|
|
3889
|
+
<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>>(config: Machine.LogicInvokeArgs<States, Events, Emits, StateId, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address, (context: Machine.InvokeContext<States, Events, Emits, StateId, readonly [], readonly []>) => Logic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError>, readonly [], readonly []>): Machine.InvokeConfig<States, Events, Emits, StateId, readonly [], readonly []> & Machine.InvokeTyped<ChildOutput, ChildError, ChildRequirements, ChildInitialError>;
|
|
3890
|
+
<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>(config: Config & Machine.LogicInvokeArgs<States, Events, Emits, StateId, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address, Logic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError>, readonly [], readonly []>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<ChildOutput, ChildError, ChildRequirements, ChildInitialError>;
|
|
3891
|
+
<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>(config: Config & Machine.ChildInvokeArgs<States, Events, Emits, StateId, Child["machine"], Child, readonly [], readonly []>): 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"]>>>;
|
|
3803
3892
|
};
|
|
3804
3893
|
/**
|
|
3805
|
-
* Plans the initial state for a machine without executing
|
|
3894
|
+
* Plans the initial state for a machine without executing machine commands.
|
|
3806
3895
|
*
|
|
3807
3896
|
* **Details**
|
|
3808
3897
|
*
|
|
3809
|
-
* The returned plan contains the settled initial snapshot,
|
|
3898
|
+
* The returned plan contains the settled initial snapshot, machine commands,
|
|
3810
3899
|
* emitted events, optional final output, and every startup microstep. Planning
|
|
3811
3900
|
* may evaluate transition logic and follow completion, eventless, and
|
|
3812
3901
|
* raised-event steps. Transition callbacks are evaluated synchronously.
|
|
@@ -3815,8 +3904,8 @@ export declare const invoke: {
|
|
|
3815
3904
|
*
|
|
3816
3905
|
* **Gotchas**
|
|
3817
3906
|
*
|
|
3818
|
-
* `start` executes the closed command list as part of the managed
|
|
3819
|
-
* protocol. Manual planners may inspect commands but need
|
|
3907
|
+
* `start` executes the closed command list as part of the managed machine commit
|
|
3908
|
+
* protocol. Manual planners may inspect commands but need running machine targets
|
|
3820
3909
|
* to execute child-addressed operations.
|
|
3821
3910
|
*
|
|
3822
3911
|
* **Example**
|
|
@@ -3940,7 +4029,7 @@ export declare const enabled: <const States extends Machine.StateSchemas, const
|
|
|
3940
4029
|
*
|
|
3941
4030
|
* **Gotchas**
|
|
3942
4031
|
*
|
|
3943
|
-
* `plan` returns data; it does not implement the
|
|
4032
|
+
* `plan` returns data; it does not implement the managed machine commit protocol.
|
|
3944
4033
|
* `start` executes child commands, publishes `next`, and then delivers
|
|
3945
4034
|
* `emittedEvents`. Events with no enabled transition are ignored and produce
|
|
3946
4035
|
* an unchanged plan.
|
|
@@ -4127,6 +4216,29 @@ export declare const stopChild: {
|
|
|
4127
4216
|
* @since 0.4.0
|
|
4128
4217
|
*/
|
|
4129
4218
|
export declare const watch: <State, Event, Error = never, Output = never>(ref: MachineRef<State, Event, Error, Output>) => Stream.Stream<RuntimeOutcome<State, Error, Output>>;
|
|
4219
|
+
/**
|
|
4220
|
+
* Prepares a fresh machine without initializing it.
|
|
4221
|
+
*
|
|
4222
|
+
* Use this constructor when observation must be composed before initial-entry
|
|
4223
|
+
* actions run. Subscribe to `prepared.emissions`, then evaluate
|
|
4224
|
+
* `prepared.start`. Ordinary callers can continue to use {@link start}, which
|
|
4225
|
+
* starts directly and does not allocate the prepared lifecycle boundary.
|
|
4226
|
+
*
|
|
4227
|
+
* ```ts
|
|
4228
|
+
* const prepared = yield* Machine.prepare(machine)
|
|
4229
|
+
*
|
|
4230
|
+
* yield* prepared.emissions.pipe(
|
|
4231
|
+
* Stream.runForEach(handleEmission),
|
|
4232
|
+
* Effect.forkScoped({ startImmediately: true })
|
|
4233
|
+
* )
|
|
4234
|
+
*
|
|
4235
|
+
* const ref = yield* prepared.start
|
|
4236
|
+
* ```
|
|
4237
|
+
*
|
|
4238
|
+
* @category constructors
|
|
4239
|
+
* @since 0.11.0
|
|
4240
|
+
*/
|
|
4241
|
+
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>>>>;
|
|
4130
4242
|
/**
|
|
4131
4243
|
* Starts a machine.
|
|
4132
4244
|
*
|
|
@@ -4138,7 +4250,7 @@ export declare const watch: <State, Event, Error = never, Output = never>(ref: M
|
|
|
4138
4250
|
* **Details**
|
|
4139
4251
|
*
|
|
4140
4252
|
* For each accepted event the runtime plans the complete synchronous
|
|
4141
|
-
* macrostep, executes closed
|
|
4253
|
+
* macrostep, executes closed machine commands, stops invokes for exited states,
|
|
4142
4254
|
* publishes the new state, delivers emitted events, and then starts invokes
|
|
4143
4255
|
* for entered states.
|
|
4144
4256
|
*
|