@typeonce/effect-machine 0.9.0 → 0.11.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 +167 -28
- package/dist/Machine.d.ts +491 -283
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +74 -76
- package/dist/Machine.js.map +1 -1
- package/dist/internal/machine/atom.d.ts +7 -3
- package/dist/internal/machine/atom.d.ts.map +1 -1
- package/dist/internal/machine/atom.js +42 -6
- package/dist/internal/machine/atom.js.map +1 -1
- package/dist/internal/machine/cluster.d.ts.map +1 -1
- package/dist/internal/machine/cluster.js +2 -1
- package/dist/internal/machine/cluster.js.map +1 -1
- package/dist/internal/machine/command.js +2 -2
- package/dist/internal/machine/command.js.map +1 -1
- package/dist/internal/machine/commandRuntime.d.ts.map +1 -1
- package/dist/internal/machine/commandRuntime.js +6 -3
- package/dist/internal/machine/commandRuntime.js.map +1 -1
- package/dist/internal/machine/configuration.d.ts +8 -1
- package/dist/internal/machine/configuration.d.ts.map +1 -1
- package/dist/internal/machine/configuration.js +9 -4
- package/dist/internal/machine/configuration.js.map +1 -1
- package/dist/internal/machine/errors.d.ts +1 -1
- package/dist/internal/machine/errors.d.ts.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 +50 -25
- 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 +3 -2
- package/dist/internal/machine/invocation.js.map +1 -1
- package/dist/internal/machine/machine.d.ts +15 -19
- package/dist/internal/machine/machine.d.ts.map +1 -1
- package/dist/internal/machine/machine.js +16 -10
- package/dist/internal/machine/machine.js.map +1 -1
- package/dist/internal/machine/planner.d.ts +2 -1
- package/dist/internal/machine/planner.d.ts.map +1 -1
- package/dist/internal/machine/planner.js +61 -24
- 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 +11 -8
- package/dist/internal/machine/process.js.map +1 -1
- package/dist/internal/machine/protocol.d.ts +7 -13
- package/dist/internal/machine/protocol.d.ts.map +1 -1
- package/dist/internal/machine/protocol.js +128 -50
- package/dist/internal/machine/protocol.js.map +1 -1
- package/dist/internal/machine/runtime.d.ts +22 -2
- package/dist/internal/machine/runtime.d.ts.map +1 -1
- package/dist/internal/machine/runtime.js +138 -10
- package/dist/internal/machine/runtime.js.map +1 -1
- package/dist/internal/machine/topology.d.ts +7 -0
- package/dist/internal/machine/topology.d.ts.map +1 -1
- package/dist/internal/machine/topology.js +6 -0
- package/dist/internal/machine/topology.js.map +1 -1
- package/dist/internal/testing/machine/finiteModel.js +1 -1
- package/dist/internal/testing/machine/finiteModel.js.map +1 -1
- package/dist/internal/testing/machine/runtime.d.ts.map +1 -1
- package/dist/internal/testing/machine/runtime.js +2 -1
- package/dist/internal/testing/machine/runtime.js.map +1 -1
- package/dist/internal/testing/machine/verification.d.ts.map +1 -1
- package/dist/internal/testing/machine/verification.js +5 -3
- package/dist/internal/testing/machine/verification.js.map +1 -1
- package/dist/testing/MachineTest.d.ts +7 -7
- package/dist/testing/MachineTest.js +7 -7
- package/dist/unstable/cluster/ClusterMachine.d.ts +1 -1
- package/dist/unstable/cluster/ClusterMachine.js +1 -1
- package/dist/unstable/reactivity/AtomMachine.d.ts +27 -8
- package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.js +20 -3
- package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
- package/docs/agent-guide.md +191 -54
- package/package.json +1 -1
- package/src/Machine.ts +1220 -360
- package/src/internal/machine/atom.ts +76 -53
- package/src/internal/machine/cluster.ts +2 -1
- package/src/internal/machine/command.ts +2 -2
- package/src/internal/machine/commandRuntime.ts +9 -4
- package/src/internal/machine/configuration.ts +23 -5
- package/src/internal/machine/errors.ts +1 -1
- package/src/internal/machine/executionPlan.ts +74 -29
- package/src/internal/machine/invocation.ts +3 -2
- package/src/internal/machine/machine.ts +74 -49
- package/src/internal/machine/planner.ts +68 -24
- package/src/internal/machine/process.ts +75 -8
- package/src/internal/machine/protocol.ts +207 -68
- package/src/internal/machine/runtime.ts +266 -11
- package/src/internal/machine/topology.ts +15 -0
- package/src/internal/testing/machine/finiteModel.ts +1 -1
- package/src/internal/testing/machine/runtime.ts +2 -1
- package/src/internal/testing/machine/verification.ts +5 -3
- package/src/testing/MachineTest.ts +7 -7
- package/src/unstable/cluster/ClusterMachine.ts +1 -1
- package/src/unstable/reactivity/AtomMachine.ts +44 -10
package/dist/Machine.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ export declare const TypeId: TypeId;
|
|
|
38
38
|
declare const MachineOutputStatesTypeId: unique symbol;
|
|
39
39
|
declare const MachineTypeId: unique symbol;
|
|
40
40
|
declare const EventConstructionTypeId: unique symbol;
|
|
41
|
+
declare const EmittedEventConstructionTypeId: unique symbol;
|
|
42
|
+
declare const EventProtocolTypeId: unique symbol;
|
|
41
43
|
declare const ChildMachineLogicTypeId: typeof internal.ChildMachineLogicTypeId;
|
|
42
44
|
/**
|
|
43
45
|
* Type identifier used for the synthetic event passed to startup lifecycle
|
|
@@ -92,10 +94,10 @@ type IsAny<A> = 0 extends (1 & A) ? true : false;
|
|
|
92
94
|
* @category models
|
|
93
95
|
* @since 0.4.0
|
|
94
96
|
*/
|
|
95
|
-
export interface Machine<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, 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, Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events> extends Pipeable {
|
|
97
|
+
export interface Machine<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, 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, Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], OutputStates extends Machine.StateIdentifier<States> = never, InputEvents extends ReadonlyArray<Machine.TaggedSchema> = Events, ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []> extends Pipeable {
|
|
96
98
|
readonly [TypeId]: TypeId;
|
|
97
99
|
/** @internal Stable type-level carrier for machine protocol extraction. */
|
|
98
|
-
readonly [MachineTypeId]: Machine.TypeCarrier<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents>;
|
|
100
|
+
readonly [MachineTypeId]: Machine.TypeCarrier<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents, ParentEvents>;
|
|
99
101
|
/** @internal Prevents output implementation evidence from being widened. */
|
|
100
102
|
readonly [MachineOutputStatesTypeId]: Readonly<Record<OutputStates, true>>;
|
|
101
103
|
/**
|
|
@@ -109,20 +111,31 @@ export interface Machine<States extends Machine.StateSchemas, Events extends Rea
|
|
|
109
111
|
*
|
|
110
112
|
* @since 0.4.0
|
|
111
113
|
*/
|
|
112
|
-
readonly events: InputEvents
|
|
114
|
+
readonly events: Machine.EventProtocol<"public", InputEvents>;
|
|
113
115
|
/**
|
|
114
|
-
* Events reserved for raised events
|
|
115
|
-
* work.
|
|
116
|
+
* Events reserved for raised events and other machine-local work.
|
|
116
117
|
*
|
|
117
118
|
* @since 0.4.0
|
|
118
119
|
*/
|
|
119
|
-
readonly internalEvents:
|
|
120
|
+
readonly internalEvents: Machine.EventProtocol<"internal", Machine.InternalEventSchemas<Events, InputEvents>>;
|
|
120
121
|
/**
|
|
121
|
-
*
|
|
122
|
+
* Ephemeral outward notifications published to this actor's observers.
|
|
123
|
+
* Emissions are never delivered implicitly to an owning actor.
|
|
122
124
|
*
|
|
123
125
|
* @since 0.4.0
|
|
124
126
|
*/
|
|
125
|
-
readonly
|
|
127
|
+
readonly emittedEvents: Machine.EventProtocol<"emitted", Emits>;
|
|
128
|
+
/**
|
|
129
|
+
* Public input events accepted by an owning actor when this machine is
|
|
130
|
+
* running as a child.
|
|
131
|
+
*
|
|
132
|
+
* The protocol types the optional `parent` actor reference exposed to
|
|
133
|
+
* handlers and is checked against a concrete parent's public events at
|
|
134
|
+
* composition boundaries.
|
|
135
|
+
*
|
|
136
|
+
* @since 0.10.0
|
|
137
|
+
*/
|
|
138
|
+
readonly parentEvents: Machine.EventProtocol<"public", ParentEvents>;
|
|
126
139
|
/**
|
|
127
140
|
* Optional schema used to decode the machine input before initialization.
|
|
128
141
|
*
|
|
@@ -151,7 +164,15 @@ export interface Machine<States extends Machine.StateSchemas, Events extends Rea
|
|
|
151
164
|
*
|
|
152
165
|
* @since 0.4.0
|
|
153
166
|
*/
|
|
154
|
-
readonly handle: Machine.Handler<States, Events, Emits, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, OutputStates, InputEvents>;
|
|
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>;
|
|
155
176
|
/** @internal */
|
|
156
177
|
readonly initial: (...args: [...Machine.InputArgs<Input>]) => Machine.InitialResult<States, InitialE, InitialR>;
|
|
157
178
|
}
|
|
@@ -257,7 +278,8 @@ export type PlanningServices<Requirements> = Exclude<Requirements, ActionRequire
|
|
|
257
278
|
*/
|
|
258
279
|
export type ExecutionServices<Requirements> = Exclude<PlanningServices<Requirements>, MachineRuntimeRequirement> | Exclude<ActionServices<Requirements>, MachineRuntimeRequirement>;
|
|
259
280
|
/**
|
|
260
|
-
* Managed runtime capability used to deliver raised and
|
|
281
|
+
* Managed runtime capability used to deliver raised events and publish
|
|
282
|
+
* emitted notifications.
|
|
261
283
|
*
|
|
262
284
|
* @category models
|
|
263
285
|
* @since 0.4.0
|
|
@@ -270,11 +292,34 @@ export interface Runtime<in Events, in Emits> {
|
|
|
270
292
|
*/
|
|
271
293
|
readonly raise: (event: Machine.EventInput<Events>) => Effect.Effect<void, MachineSchemaDecodeError | StoppedError>;
|
|
272
294
|
/**
|
|
273
|
-
*
|
|
295
|
+
* Publishes an ephemeral notification to the running actor's observers.
|
|
274
296
|
*
|
|
275
297
|
* @since 0.4.0
|
|
276
298
|
*/
|
|
277
|
-
readonly
|
|
299
|
+
readonly emit: (event: Machine.EmittedEventInput<Emits>) => Effect.Effect<void, MachineSchemaDecodeError | StoppedError>;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Minimal typed reference accepted by targeted actor commands.
|
|
303
|
+
*
|
|
304
|
+
* @category models
|
|
305
|
+
* @since 0.10.0
|
|
306
|
+
*/
|
|
307
|
+
export interface ActorRef<in Event> {
|
|
308
|
+
readonly id: string;
|
|
309
|
+
readonly sessionId: string;
|
|
310
|
+
readonly send: (event: Event) => Effect.Effect<void, StoppedError>;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Actor references available while evaluating machine behavior.
|
|
314
|
+
*
|
|
315
|
+
* @category models
|
|
316
|
+
* @since 0.10.0
|
|
317
|
+
*/
|
|
318
|
+
export interface ActorContext<InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>> {
|
|
319
|
+
/** Reference to the current actor. Sending queues a later mailbox event. */
|
|
320
|
+
readonly self: ActorRef<Machine.EventInputOf<InputEvents>>;
|
|
321
|
+
/** Reference to the owning actor, or `undefined` when running as a root. */
|
|
322
|
+
readonly parent: ActorRef<Machine.EventInputOf<ParentEvents>> | undefined;
|
|
278
323
|
}
|
|
279
324
|
/**
|
|
280
325
|
* Synchronous commands available while a machine transition is being
|
|
@@ -287,10 +332,11 @@ export interface Runtime<in Events, in Emits> {
|
|
|
287
332
|
export interface Enqueue<in Events, in Emits> {
|
|
288
333
|
/** Raises an event inside the current macrostep. */
|
|
289
334
|
readonly raise: (event: Machine.EventInput<Events>) => void;
|
|
290
|
-
/**
|
|
291
|
-
readonly emit: (event: Emits) => void;
|
|
335
|
+
/** Publishes an ephemeral notification to this actor's observers. */
|
|
336
|
+
readonly emit: (event: Machine.EmittedEventInput<Emits>) => void;
|
|
292
337
|
/** Sends an event to an invoked child after the transition is selected. */
|
|
293
338
|
readonly sendTo: {
|
|
339
|
+
<Event>(target: ActorRef<Event>, event: Event): void;
|
|
294
340
|
<Child extends ChildMachine.Any>(child: Child, event: ChildMachine.Event<Child>): void;
|
|
295
341
|
<Address extends ChildAddress<never>>(child: Address, event: ChildAddress.Event<Address>): void;
|
|
296
342
|
};
|
|
@@ -308,7 +354,7 @@ export interface Enqueue<in Events, in Emits> {
|
|
|
308
354
|
*/
|
|
309
355
|
export type Command = {
|
|
310
356
|
readonly _tag: "SendTo";
|
|
311
|
-
readonly
|
|
357
|
+
readonly target: ActorRef<unknown> | ChildMachine.Any | ChildAddress<never>;
|
|
312
358
|
readonly event: unknown;
|
|
313
359
|
} | {
|
|
314
360
|
readonly _tag: "Stop";
|
|
@@ -451,9 +497,11 @@ type EventProtocolError<Message extends string, Tag extends PropertyKey = never>
|
|
|
451
497
|
type DuplicateEventTag<Events extends ReadonlyArray<Machine.TaggedSchema>, Seen extends PropertyKey = never> = number extends Events["length"] ? never : Events extends readonly [
|
|
452
498
|
infer Head extends Machine.TaggedSchema,
|
|
453
499
|
...infer Tail extends ReadonlyArray<Machine.TaggedSchema>
|
|
454
|
-
] ? Machine.TagOf<Head> extends infer Tag extends PropertyKey ? Tag
|
|
500
|
+
] ? Machine.TagOf<Head> extends infer Tag extends PropertyKey ? Extract<Tag, Seen> | DuplicateEventTag<Tail, Seen | Tag> : never : never;
|
|
455
501
|
type ValidateInputEventProtocol<InputEvents extends ReadonlyArray<Machine.TaggedSchema>, DuplicateInput extends PropertyKey = DuplicateEventTag<InputEvents>> = [DuplicateInput] extends [never] ? unknown : EventProtocolError<"Public event tags must be unique", DuplicateInput>;
|
|
502
|
+
type ValidateEmittedEventProtocol<EmittedEvents extends ReadonlyArray<Machine.TaggedSchema>, DuplicateEmitted extends PropertyKey = DuplicateEventTag<EmittedEvents>> = [DuplicateEmitted] extends [never] ? unknown : EventProtocolError<"Emitted event tags must be unique", DuplicateEmitted>;
|
|
456
503
|
type ValidateInternalEventProtocol<InputEvents extends ReadonlyArray<Machine.TaggedSchema>, InternalEvents extends ReadonlyArray<Machine.TaggedSchema>, DuplicateInternal extends PropertyKey = DuplicateEventTag<InternalEvents>, Overlap extends PropertyKey = Extract<Machine.TagOf<InputEvents[number]>, Machine.TagOf<InternalEvents[number]>>> = [DuplicateInternal] extends [never] ? [Overlap] extends [never] ? unknown : EventProtocolError<"Public and internal event tags must be disjoint", Overlap> : EventProtocolError<"Internal event tags must be unique", DuplicateInternal>;
|
|
504
|
+
type ValidateEventProtocolBuilder<Kind extends Machine.EventProtocolKind, Inputs extends ReadonlyArray<Machine.EventProtocolInput<Kind>>, Schemas extends ReadonlyArray<Machine.TaggedSchema> = Machine.EventProtocolInputSchemasOf<Kind, Inputs>, Duplicate extends PropertyKey = DuplicateEventTag<Schemas>> = [Duplicate] extends [never] ? unknown : EventProtocolError<"Event protocol tags must be unique", Duplicate>;
|
|
457
505
|
declare const SnapshotBuilderStateTypeId: typeof internal.SnapshotBuilderStateTypeId;
|
|
458
506
|
declare const SnapshotBuilderConstructionTypeId: unique symbol;
|
|
459
507
|
type SnapshotBuilderComplete<Regions, Constructed extends boolean = false> = {
|
|
@@ -811,6 +859,28 @@ export type RuntimeOutcome<State, Error = never, Output = never> = {
|
|
|
811
859
|
readonly status: "stopped";
|
|
812
860
|
}>;
|
|
813
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
|
+
}
|
|
814
884
|
/**
|
|
815
885
|
* Provides access to a running machine's state, lifecycle, event input, and
|
|
816
886
|
* termination operations.
|
|
@@ -825,7 +895,7 @@ export type RuntimeOutcome<State, Error = never, Output = never> = {
|
|
|
825
895
|
* @category models
|
|
826
896
|
* @since 0.4.0
|
|
827
897
|
*/
|
|
828
|
-
export interface MachineRef<out State, in Event, out Error = never, out Output = never> {
|
|
898
|
+
export interface MachineRef<out State, in Event, out Error = never, out Output = never, out Emitted = never> extends ActorRef<Event> {
|
|
829
899
|
/** Stable machine definition id, or a generated fallback when none was declared. */
|
|
830
900
|
readonly id: string;
|
|
831
901
|
/** Unique identity for this running machine instance. */
|
|
@@ -834,8 +904,13 @@ export interface MachineRef<out State, in Event, out Error = never, out Output =
|
|
|
834
904
|
readonly state: Effect.Effect<State>;
|
|
835
905
|
/** Reads the latest lifecycle snapshot. */
|
|
836
906
|
readonly snapshot: Effect.Effect<RuntimeSnapshot<State, Error, Output>>;
|
|
837
|
-
/** Streams lifecycle
|
|
907
|
+
/** Streams the current lifecycle snapshot followed by later changes. */
|
|
838
908
|
readonly changes: Stream.Stream<RuntimeSnapshot<State, Error, Output>>;
|
|
909
|
+
/**
|
|
910
|
+
* Streams ephemeral notifications published after subscription. Emissions
|
|
911
|
+
* are not retained or replayed; the stream completes when the actor stops.
|
|
912
|
+
*/
|
|
913
|
+
readonly emissions: Stream.Stream<Emitted>;
|
|
839
914
|
/** Waits for machine output or fails when execution fails or is stopped. */
|
|
840
915
|
readonly join: Effect.Effect<Output, Error | StoppedError>;
|
|
841
916
|
/** Stops this machine instance and its owned child processes. */
|
|
@@ -903,13 +978,6 @@ export declare namespace Logic {
|
|
|
903
978
|
/**
|
|
904
979
|
* Machine-local capabilities available while process logic initializes.
|
|
905
980
|
*
|
|
906
|
-
* **Gotchas**
|
|
907
|
-
*
|
|
908
|
-
* `sendParent` accepts `unknown` because process logic is independent from
|
|
909
|
-
* the parent that eventually owns it. Prefer typed process output or an
|
|
910
|
-
* invocation lifecycle transition when either can represent the
|
|
911
|
-
* communication.
|
|
912
|
-
*
|
|
913
981
|
* @category models
|
|
914
982
|
* @since 0.4.0
|
|
915
983
|
*/
|
|
@@ -920,10 +988,11 @@ export declare namespace Logic {
|
|
|
920
988
|
readonly parent: Address<unknown> | undefined;
|
|
921
989
|
/** Starts a child process owned by this scope. */
|
|
922
990
|
readonly spawn: Spawn;
|
|
923
|
-
/** Sends an
|
|
924
|
-
readonly
|
|
925
|
-
|
|
926
|
-
|
|
991
|
+
/** Sends an event to an actor reference or typed parent-local child address. */
|
|
992
|
+
readonly sendTo: {
|
|
993
|
+
<TargetEvent>(target: ActorRef<TargetEvent>, event: TargetEvent): Effect.Effect<void, StoppedError>;
|
|
994
|
+
<Address extends ChildAddress<never>>(id: Address, event: ChildAddress.Event<Address>): Effect.Effect<void, StoppedError>;
|
|
995
|
+
};
|
|
927
996
|
/** Stops a child process selected by its parent-local address. */
|
|
928
997
|
readonly stopChild: <Event>(id: ChildAddress<Event>) => Effect.Effect<void>;
|
|
929
998
|
}
|
|
@@ -992,14 +1061,14 @@ export declare namespace ChildMachine {
|
|
|
992
1061
|
* @category utility types
|
|
993
1062
|
* @since 0.4.0
|
|
994
1063
|
*/
|
|
995
|
-
type Ref<Child> = Child extends ChildMachine<string, infer M> ? MachineRef<Machine.Snapshot<Machine.States<M>>, Machine.EventInput<Machine.InputEvent<M>>, Machine.Error<M> | ActionError<Machine.Services<M>> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Machine.Output<M>> : never;
|
|
1064
|
+
type Ref<Child> = Child extends ChildMachine<string, infer M> ? MachineRef<Machine.Snapshot<Machine.States<M>>, Machine.EventInput<Machine.InputEvent<M>>, Machine.Error<M> | ActionError<Machine.Services<M>> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Machine.Output<M>, Machine.EmittedEvent<M>> : never;
|
|
996
1065
|
/**
|
|
997
1066
|
* Event accepted by the child selected by a descriptor.
|
|
998
1067
|
*
|
|
999
1068
|
* @category utility types
|
|
1000
1069
|
* @since 0.4.0
|
|
1001
1070
|
*/
|
|
1002
|
-
type Event<Child> =
|
|
1071
|
+
type Event<Child> = Child extends ChildMachine<string, infer M> ? Machine.EventInput<Machine.InputEvent<M>> : never;
|
|
1003
1072
|
}
|
|
1004
1073
|
/**
|
|
1005
1074
|
* Parent-local address for a child process that can receive events.
|
|
@@ -1089,7 +1158,7 @@ export declare namespace Machine {
|
|
|
1089
1158
|
*
|
|
1090
1159
|
* @internal
|
|
1091
1160
|
*/
|
|
1092
|
-
interface TypeCarrier<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Input extends Schema.Top, UnhandledStates extends StateIdentifier<States>, E, R, InitialE, InitialR, FinalStates extends StateIdentifier<States>, Output, Emits extends ReadonlyArray<TaggedSchema>, OutputStates extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>> {
|
|
1161
|
+
interface TypeCarrier<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Input extends Schema.Top, UnhandledStates extends StateIdentifier<States>, E, R, InitialE, InitialR, FinalStates extends StateIdentifier<States>, Output, Emits extends ReadonlyArray<TaggedSchema>, OutputStates extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>> {
|
|
1093
1162
|
readonly states: States;
|
|
1094
1163
|
readonly events: Events;
|
|
1095
1164
|
readonly input: Input;
|
|
@@ -1100,9 +1169,10 @@ export declare namespace Machine {
|
|
|
1100
1169
|
readonly initialServices: InitialR;
|
|
1101
1170
|
readonly finalStates: FinalStates;
|
|
1102
1171
|
readonly output: Output;
|
|
1103
|
-
readonly
|
|
1172
|
+
readonly emittedEvents: Emits;
|
|
1104
1173
|
readonly outputStates: OutputStates;
|
|
1105
1174
|
readonly inputEvents: InputEvents;
|
|
1175
|
+
readonly parentEvents: ParentEvents;
|
|
1106
1176
|
}
|
|
1107
1177
|
/**
|
|
1108
1178
|
* Any schema-first machine.
|
|
@@ -1119,11 +1189,12 @@ export declare namespace Machine {
|
|
|
1119
1189
|
interface Any extends Pipeable {
|
|
1120
1190
|
readonly [TypeId]: TypeId;
|
|
1121
1191
|
/** @internal */
|
|
1122
|
-
readonly [MachineTypeId]: TypeCarrier<any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
1192
|
+
readonly [MachineTypeId]: TypeCarrier<any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
1123
1193
|
readonly states: StateSchemas;
|
|
1124
|
-
readonly events:
|
|
1125
|
-
readonly internalEvents:
|
|
1126
|
-
readonly
|
|
1194
|
+
readonly events: EventProtocol.Any<"public">;
|
|
1195
|
+
readonly internalEvents: EventProtocol.Any<"internal">;
|
|
1196
|
+
readonly emittedEvents: EventProtocol.Any<"emitted">;
|
|
1197
|
+
readonly parentEvents: EventProtocol.Any<"public">;
|
|
1127
1198
|
readonly input: Schema.Top | undefined;
|
|
1128
1199
|
readonly id: string | undefined;
|
|
1129
1200
|
/** @internal */
|
|
@@ -1135,6 +1206,8 @@ export declare namespace Machine {
|
|
|
1135
1206
|
/** @internal */
|
|
1136
1207
|
readonly handle: any;
|
|
1137
1208
|
/** @internal */
|
|
1209
|
+
readonly invoke: any;
|
|
1210
|
+
/** @internal */
|
|
1138
1211
|
readonly initial: any;
|
|
1139
1212
|
}
|
|
1140
1213
|
/**
|
|
@@ -1213,7 +1286,9 @@ export declare namespace Machine {
|
|
|
1213
1286
|
* @category utility types
|
|
1214
1287
|
* @since 0.4.0
|
|
1215
1288
|
*/
|
|
1216
|
-
type
|
|
1289
|
+
type EmittedEvents<M extends Any> = M[typeof MachineTypeId]["emittedEvents"];
|
|
1290
|
+
/** @deprecated Use {@link EmittedEvents}. */
|
|
1291
|
+
type Emits<M extends Any> = EmittedEvents<M>;
|
|
1217
1292
|
/**
|
|
1218
1293
|
* Extracts state paths with implemented output handlers.
|
|
1219
1294
|
*
|
|
@@ -1228,11 +1303,15 @@ export declare namespace Machine {
|
|
|
1228
1303
|
* @since 0.4.0
|
|
1229
1304
|
*/
|
|
1230
1305
|
type InputEvents<M extends Any> = M[typeof MachineTypeId]["inputEvents"];
|
|
1231
|
-
/** Extracts the
|
|
1232
|
-
type
|
|
1233
|
-
|
|
1306
|
+
/** Extracts the public input protocol required from an owning actor. */
|
|
1307
|
+
type ParentEvents<M extends Any> = M[typeof MachineTypeId]["parentEvents"];
|
|
1308
|
+
/** Extracts an internal event schema tuple from the complete and public protocols. */
|
|
1309
|
+
type InternalEventSchemas<Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>> = Events extends readonly [
|
|
1310
|
+
...InputEvents,
|
|
1234
1311
|
...infer Internal extends ReadonlyArray<TaggedSchema>
|
|
1235
|
-
] ? Internal : readonly [];
|
|
1312
|
+
] ? readonly [...Internal] : readonly [];
|
|
1313
|
+
/** Extracts the internal event schema tuple carried by a machine definition. */
|
|
1314
|
+
type InternalEvents<M extends Any> = InternalEventSchemas<Events<M>, InputEvents<M>>;
|
|
1236
1315
|
/**
|
|
1237
1316
|
* Extracts the complete event protocol handled inside a machine.
|
|
1238
1317
|
*
|
|
@@ -1260,34 +1339,83 @@ export declare namespace Machine {
|
|
|
1260
1339
|
readonly [EventConstructionTypeId]: Event;
|
|
1261
1340
|
readonly _tag: Event["_tag"];
|
|
1262
1341
|
}
|
|
1342
|
+
/** Opaque construction returned by {@link emittedEvents}. */
|
|
1343
|
+
interface EmittedEventConstruction<out Event extends {
|
|
1344
|
+
readonly _tag: PropertyKey;
|
|
1345
|
+
}> {
|
|
1346
|
+
readonly [EmittedEventConstructionTypeId]: Event;
|
|
1347
|
+
readonly _tag: Event["_tag"];
|
|
1348
|
+
}
|
|
1263
1349
|
/** A decoded event or a deferred machine-bound construction of that event. */
|
|
1264
1350
|
type EventInput<Event> = Event | (Event extends {
|
|
1265
1351
|
readonly _tag: PropertyKey;
|
|
1266
1352
|
} ? EventConstruction<Event> : never);
|
|
1353
|
+
/** A decoded emitted event or a deferred emitted-event construction. */
|
|
1354
|
+
type EmittedEventInput<Event> = Event | (Event extends {
|
|
1355
|
+
readonly _tag: PropertyKey;
|
|
1356
|
+
} ? EmittedEventConstruction<Event> : never);
|
|
1267
1357
|
/** Event inputs accepted for a schema tuple at machine delivery boundaries. */
|
|
1268
1358
|
type EventInputOf<Events extends ReadonlyArray<TaggedSchema>> = EventInput<EventOf<Events>>;
|
|
1359
|
+
/** Identifies whether an event protocol is accepted publicly or only inside a machine. */
|
|
1360
|
+
type EventProtocolKind = "public" | "internal" | "emitted";
|
|
1269
1361
|
type EventConstructorInput<EventSchema extends TaggedSchema> = Omit<EventSchema["~type.make.in"], "_tag">;
|
|
1270
|
-
type EventConstructor<EventSchema extends TaggedSchema, Tag extends EventSchema["Type"]["_tag"]> = {} extends EventConstructorInput<EventSchema> ? (input?: EventConstructorInput<EventSchema>) => EventConstruction<EventByTag<readonly [EventSchema], Tag>> : (input: EventConstructorInput<EventSchema>) => EventConstruction<EventByTag<readonly [EventSchema], Tag>>;
|
|
1271
|
-
type
|
|
1362
|
+
type EventConstructor<EventSchema extends TaggedSchema, Tag extends EventSchema["Type"]["_tag"], Kind extends EventProtocolKind> = {} extends EventConstructorInput<EventSchema> ? (input?: EventConstructorInput<EventSchema>) => Kind extends "emitted" ? EmittedEventConstruction<EventByTag<readonly [EventSchema], Tag>> : EventConstruction<EventByTag<readonly [EventSchema], Tag>> : (input: EventConstructorInput<EventSchema>) => Kind extends "emitted" ? EmittedEventConstruction<EventByTag<readonly [EventSchema], Tag>> : EventConstruction<EventByTag<readonly [EventSchema], Tag>>;
|
|
1363
|
+
type FiniteEventTag<Tag extends PropertyKey> = string extends Tag ? never : number extends Tag ? never : symbol extends Tag ? never : Tag;
|
|
1364
|
+
type EventConstructorsForSchema<EventSchema extends TaggedSchema, Kind extends EventProtocolKind> = EventSchema extends {
|
|
1272
1365
|
readonly cases: infer Cases extends Readonly<Record<PropertyKey, TaggedSchema>>;
|
|
1273
1366
|
} ? {
|
|
1274
|
-
readonly [Tag in keyof Cases]: Tag extends Cases[Tag]["Type"]["_tag"] ? EventConstructor<Cases[Tag], Tag> : never;
|
|
1367
|
+
readonly [Tag in keyof Cases]: Tag extends Cases[Tag]["Type"]["_tag"] ? EventConstructor<Cases[Tag], Tag, Kind> : never;
|
|
1275
1368
|
} : EventSchema extends {
|
|
1276
1369
|
readonly members: infer Members extends ReadonlyArray<TaggedSchema>;
|
|
1277
|
-
} ? Types.UnionToIntersection<EventConstructorsForSchema<Members[number]>> : {
|
|
1278
|
-
readonly [Tag in EventSchema["Type"]["_tag"]]: EventConstructor<EventSchema, Tag>;
|
|
1370
|
+
} ? Types.UnionToIntersection<EventConstructorsForSchema<Members[number], Kind>> : {
|
|
1371
|
+
readonly [Tag in FiniteEventTag<EventSchema["Type"]["_tag"]>]: EventConstructor<EventSchema, Tag, Kind>;
|
|
1279
1372
|
};
|
|
1280
1373
|
/** Protocol-bound constructors keyed by each configured event tag. */
|
|
1281
|
-
type EventConstructors<Events extends ReadonlyArray<TaggedSchema
|
|
1282
|
-
readonly [Tag in keyof Types.UnionToIntersection<EventConstructorsForSchema<Events[number]>>]: Types.UnionToIntersection<EventConstructorsForSchema<Events[number]>>[Tag];
|
|
1374
|
+
type EventConstructors<Events extends ReadonlyArray<TaggedSchema>, Kind extends EventProtocolKind = "public"> = {
|
|
1375
|
+
readonly [Tag in keyof Types.UnionToIntersection<EventConstructorsForSchema<Events[number], Kind>>]: Types.UnionToIntersection<EventConstructorsForSchema<Events[number], Kind>>[Tag];
|
|
1376
|
+
};
|
|
1377
|
+
/**
|
|
1378
|
+
* A schema-backed event protocol exposing only deferred event constructors.
|
|
1379
|
+
*
|
|
1380
|
+
* The schema tuple is retained opaquely for machine runtime validation and
|
|
1381
|
+
* type inference. It is not exposed as a runtime property.
|
|
1382
|
+
*
|
|
1383
|
+
* @since 0.10.0
|
|
1384
|
+
*/
|
|
1385
|
+
type EventProtocol<Kind extends EventProtocolKind, Schemas extends ReadonlyArray<TaggedSchema>> = EventConstructors<Schemas, Kind> & {
|
|
1386
|
+
readonly [EventProtocolTypeId]: {
|
|
1387
|
+
readonly kind: Kind;
|
|
1388
|
+
readonly schemas: Schemas;
|
|
1389
|
+
};
|
|
1283
1390
|
};
|
|
1391
|
+
namespace EventProtocol {
|
|
1392
|
+
/** An erased event protocol descriptor retaining its kind and schema carrier. */
|
|
1393
|
+
interface Any<Kind extends EventProtocolKind = EventProtocolKind> {
|
|
1394
|
+
readonly [EventProtocolTypeId]: {
|
|
1395
|
+
readonly kind: Kind;
|
|
1396
|
+
readonly schemas: ReadonlyArray<TaggedSchema>;
|
|
1397
|
+
};
|
|
1398
|
+
}
|
|
1399
|
+
}
|
|
1400
|
+
/** A schema or an existing protocol accepted by an event builder. */
|
|
1401
|
+
type EventProtocolInput<Kind extends EventProtocolKind> = TaggedSchema | EventProtocol.Any<Kind>;
|
|
1402
|
+
type EventProtocolInputSchemas<Kind extends EventProtocolKind, Input extends EventProtocolInput<Kind>> = Input extends EventProtocol<Kind, infer Schemas> ? Schemas : Input extends TaggedSchema ? readonly [Input] : readonly [];
|
|
1403
|
+
/** Flattens schema and protocol inputs into one owned schema tuple. */
|
|
1404
|
+
type EventProtocolInputSchemasOf<Kind extends EventProtocolKind, Inputs extends ReadonlyArray<EventProtocolInput<Kind>>> = Inputs extends readonly [
|
|
1405
|
+
infer Head extends EventProtocolInput<Kind>,
|
|
1406
|
+
...infer Tail extends ReadonlyArray<EventProtocolInput<Kind>>
|
|
1407
|
+
] ? readonly [...EventProtocolInputSchemas<Kind, Head>, ...EventProtocolInputSchemasOf<Kind, Tail>] : readonly [];
|
|
1408
|
+
/** @internal Extracts the schema tuple carried opaquely by an event protocol. */
|
|
1409
|
+
type EventProtocolSchemas<Protocol extends EventProtocol.Any> = Protocol[typeof EventProtocolTypeId]["schemas"];
|
|
1284
1410
|
/**
|
|
1285
1411
|
* Extracts the event protocol emitted by a machine.
|
|
1286
1412
|
*
|
|
1287
1413
|
* @category utility types
|
|
1288
1414
|
* @since 0.4.0
|
|
1289
1415
|
*/
|
|
1290
|
-
type
|
|
1416
|
+
type EmittedEvent<M extends Any> = EmittedEventOf<Emits<M>>;
|
|
1417
|
+
/** @deprecated Use {@link EmittedEvent}. */
|
|
1418
|
+
type Emit<M extends Any> = EmittedEvent<M>;
|
|
1291
1419
|
/**
|
|
1292
1420
|
* A schema whose decoded value contains a `_tag` discriminator.
|
|
1293
1421
|
*
|
|
@@ -1860,7 +1988,9 @@ export declare namespace Machine {
|
|
|
1860
1988
|
* @category utility types
|
|
1861
1989
|
* @since 0.4.0
|
|
1862
1990
|
*/
|
|
1863
|
-
type
|
|
1991
|
+
type EmittedEventOf<Emits extends ReadonlyArray<TaggedSchema>> = Emits[number]["Type"];
|
|
1992
|
+
/** @deprecated Use {@link EmittedEventOf}. */
|
|
1993
|
+
type EmitOf<Emits extends ReadonlyArray<TaggedSchema>> = EmittedEventOf<Emits>;
|
|
1864
1994
|
/**
|
|
1865
1995
|
* Event values received by lifecycle callbacks.
|
|
1866
1996
|
*
|
|
@@ -2260,6 +2390,20 @@ export declare namespace Machine {
|
|
|
2260
2390
|
readonly [AncestorStateId in ValuedStateIdentifier<States>]: StateByIdentifier<States, AncestorStateId>;
|
|
2261
2391
|
}>;
|
|
2262
2392
|
}
|
|
2393
|
+
/**
|
|
2394
|
+
* Opaque result returned by an explicitly targetless transition.
|
|
2395
|
+
*
|
|
2396
|
+
* The transition remains handled and retains its queued commands, raised
|
|
2397
|
+
* events, and emitted events, but selects no concrete destination. Declared
|
|
2398
|
+
* `targets` constrain only concrete destinations, so this result is always
|
|
2399
|
+
* permitted from ordinary transition handlers.
|
|
2400
|
+
*
|
|
2401
|
+
* @category models
|
|
2402
|
+
* @since 0.10.0
|
|
2403
|
+
*/
|
|
2404
|
+
interface NoTarget {
|
|
2405
|
+
readonly [Topology.NoTargetTypeId]: typeof Topology.NoTargetTypeId;
|
|
2406
|
+
}
|
|
2263
2407
|
/**
|
|
2264
2408
|
* Transition instruction that restores a history pseudo-state's parent.
|
|
2265
2409
|
*
|
|
@@ -2336,9 +2480,9 @@ export declare namespace Machine {
|
|
|
2336
2480
|
*
|
|
2337
2481
|
* **Details**
|
|
2338
2482
|
*
|
|
2339
|
-
* `
|
|
2340
|
-
*
|
|
2341
|
-
* snapshots for any root.
|
|
2483
|
+
* `none()` handles without selecting a destination, `local` targets the
|
|
2484
|
+
* nearest compound scope for the source state, `branch` targets descendants
|
|
2485
|
+
* of the source root, and `full` builds complete snapshots for any root.
|
|
2342
2486
|
*
|
|
2343
2487
|
* These builders control how the next active configuration is assembled; they
|
|
2344
2488
|
* do not directly control state re-entry. Exit and entry paths are derived
|
|
@@ -2351,6 +2495,17 @@ export declare namespace Machine {
|
|
|
2351
2495
|
* @since 0.4.0
|
|
2352
2496
|
*/
|
|
2353
2497
|
interface TargetBuilder<States extends StateSchemas, Source extends StateNodeIdentifier<States>> {
|
|
2498
|
+
/**
|
|
2499
|
+
* Selects an explicitly targetless transition.
|
|
2500
|
+
*
|
|
2501
|
+
* The event or lifecycle outcome is handled and queued operations are
|
|
2502
|
+
* retained, while the current state configuration remains the transition
|
|
2503
|
+
* result. This remains valid when the handler declares concrete `targets`,
|
|
2504
|
+
* because those paths are an upper bound rather than an exhaustive result.
|
|
2505
|
+
*
|
|
2506
|
+
* @since 0.10.0
|
|
2507
|
+
*/
|
|
2508
|
+
readonly none: () => NoTarget;
|
|
2354
2509
|
/**
|
|
2355
2510
|
* Moves to another state in the same local group. The value of the state
|
|
2356
2511
|
* containing that group, and values in other active branches, are kept.
|
|
@@ -2388,10 +2543,10 @@ export declare namespace Machine {
|
|
|
2388
2543
|
* @category models
|
|
2389
2544
|
* @since 0.4.0
|
|
2390
2545
|
*/
|
|
2391
|
-
interface HandlerContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, EventTag extends TagOf<Events[number]>, E, R> {
|
|
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 ActorContext<InputEvents, ParentEvents> {
|
|
2392
2547
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2393
|
-
readonly
|
|
2394
|
-
readonly
|
|
2548
|
+
readonly containingState: ParentStateValue<States, StateId>;
|
|
2549
|
+
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2395
2550
|
/** Complete logical configuration captured at the start of this microstep. */
|
|
2396
2551
|
readonly snapshot: Snapshot<States>;
|
|
2397
2552
|
readonly event: EventByTag<Events, EventTag>;
|
|
@@ -2409,10 +2564,10 @@ export declare namespace Machine {
|
|
|
2409
2564
|
* @category models
|
|
2410
2565
|
* @since 0.4.0
|
|
2411
2566
|
*/
|
|
2412
|
-
interface StateActionContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States
|
|
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 ActorContext<InputEvents, ParentEvents> {
|
|
2413
2568
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2414
|
-
readonly
|
|
2415
|
-
readonly
|
|
2569
|
+
readonly containingState: ParentStateValue<States, StateId>;
|
|
2570
|
+
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2416
2571
|
readonly event: LifecycleEvent<Events>;
|
|
2417
2572
|
}
|
|
2418
2573
|
/**
|
|
@@ -2421,10 +2576,10 @@ export declare namespace Machine {
|
|
|
2421
2576
|
* @category models
|
|
2422
2577
|
* @since 0.4.0
|
|
2423
2578
|
*/
|
|
2424
|
-
interface InvokeContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States
|
|
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 ActorContext<InputEvents, ParentEvents> {
|
|
2425
2580
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2426
|
-
readonly
|
|
2427
|
-
readonly
|
|
2581
|
+
readonly containingState: ParentStateValue<States, StateId>;
|
|
2582
|
+
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2428
2583
|
readonly event: LifecycleEvent<Events>;
|
|
2429
2584
|
}
|
|
2430
2585
|
/**
|
|
@@ -2433,11 +2588,11 @@ export declare namespace Machine {
|
|
|
2433
2588
|
* @category models
|
|
2434
2589
|
* @since 0.4.0
|
|
2435
2590
|
*/
|
|
2436
|
-
interface InvokeSnapshotContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, State, Error, Output> {
|
|
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 ActorContext<InputEvents, ParentEvents> {
|
|
2437
2592
|
readonly id: string;
|
|
2438
2593
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2439
|
-
readonly
|
|
2440
|
-
readonly
|
|
2594
|
+
readonly containingState: ParentStateValue<States, StateId>;
|
|
2595
|
+
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2441
2596
|
readonly target: TargetBuilder<States, StateId>;
|
|
2442
2597
|
readonly snapshot: Extract<RuntimeSnapshot<State, Error, Output>, {
|
|
2443
2598
|
readonly status: "active";
|
|
@@ -2449,21 +2604,21 @@ export declare namespace Machine {
|
|
|
2449
2604
|
* @category models
|
|
2450
2605
|
* @since 0.4.0
|
|
2451
2606
|
*/
|
|
2452
|
-
interface InvokeDoneContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Output> {
|
|
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 ActorContext<InputEvents, ParentEvents> {
|
|
2453
2608
|
readonly id: string;
|
|
2454
2609
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2455
|
-
readonly
|
|
2456
|
-
readonly
|
|
2610
|
+
readonly containingState: ParentStateValue<States, StateId>;
|
|
2611
|
+
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2457
2612
|
readonly snapshot: Snapshot<States>;
|
|
2458
2613
|
readonly target: TargetBuilder<States, StateId>;
|
|
2459
2614
|
readonly output: Output;
|
|
2460
2615
|
}
|
|
2461
2616
|
/** Context passed to an invocation typed-failure transition. */
|
|
2462
|
-
interface InvokeFailureContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Error> {
|
|
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 ActorContext<InputEvents, ParentEvents> {
|
|
2463
2618
|
readonly id: string;
|
|
2464
2619
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2465
|
-
readonly
|
|
2466
|
-
readonly
|
|
2620
|
+
readonly containingState: ParentStateValue<States, StateId>;
|
|
2621
|
+
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2467
2622
|
readonly snapshot: Snapshot<States>;
|
|
2468
2623
|
readonly target: TargetBuilder<States, StateId>;
|
|
2469
2624
|
readonly error: Error;
|
|
@@ -2474,10 +2629,10 @@ export declare namespace Machine {
|
|
|
2474
2629
|
* @category models
|
|
2475
2630
|
* @since 0.4.0
|
|
2476
2631
|
*/
|
|
2477
|
-
interface AlwaysContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States
|
|
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 ActorContext<InputEvents, ParentEvents> {
|
|
2478
2633
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2479
|
-
readonly
|
|
2480
|
-
readonly
|
|
2634
|
+
readonly containingState: ParentStateValue<States, StateId>;
|
|
2635
|
+
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2481
2636
|
/** Complete logical configuration captured at the start of this microstep. */
|
|
2482
2637
|
readonly snapshot: Snapshot<States>;
|
|
2483
2638
|
readonly event: LifecycleEvent<Events>;
|
|
@@ -2496,10 +2651,10 @@ export declare namespace Machine {
|
|
|
2496
2651
|
* @category models
|
|
2497
2652
|
* @since 0.4.0
|
|
2498
2653
|
*/
|
|
2499
|
-
interface DoneContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States
|
|
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 ActorContext<InputEvents, ParentEvents> {
|
|
2500
2655
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2501
|
-
readonly
|
|
2502
|
-
readonly
|
|
2656
|
+
readonly containingState: ParentStateValue<States, StateId>;
|
|
2657
|
+
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2503
2658
|
/** Complete logical configuration captured at the start of this microstep. */
|
|
2504
2659
|
readonly snapshot: Snapshot<States>;
|
|
2505
2660
|
readonly event: LifecycleEvent<Events>;
|
|
@@ -2514,9 +2669,9 @@ export declare namespace Machine {
|
|
|
2514
2669
|
readonly target: TargetBuilder<States, StateId>;
|
|
2515
2670
|
}
|
|
2516
2671
|
/** Context passed to a transient choice resolver. There is no `state` value. */
|
|
2517
|
-
interface ChoiceContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, ChoiceId extends ChoiceIdentifier<States
|
|
2518
|
-
readonly
|
|
2519
|
-
readonly
|
|
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 ActorContext<InputEvents, ParentEvents> {
|
|
2673
|
+
readonly containingState: StateByIdentifier<States, Extract<ImmediateParentStateIdentifier<ChoiceId>, StateIdentifier<States>>>;
|
|
2674
|
+
readonly ancestors: {
|
|
2520
2675
|
readonly [Parent in Extract<ParentStateIdentifier<ChoiceId>, ValuedStateIdentifier<States>>]: StateByIdentifier<States, Parent>;
|
|
2521
2676
|
};
|
|
2522
2677
|
readonly event: LifecycleEvent<Events>;
|
|
@@ -2530,8 +2685,8 @@ export declare namespace Machine {
|
|
|
2530
2685
|
*/
|
|
2531
2686
|
interface FinalOutputContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>> {
|
|
2532
2687
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2533
|
-
readonly
|
|
2534
|
-
readonly
|
|
2688
|
+
readonly containingState: ParentStateValue<States, StateId>;
|
|
2689
|
+
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2535
2690
|
readonly event: LifecycleEvent<Events>;
|
|
2536
2691
|
}
|
|
2537
2692
|
/**
|
|
@@ -2554,8 +2709,8 @@ export declare namespace Machine {
|
|
|
2554
2709
|
*/
|
|
2555
2710
|
interface ParallelOutputContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>> {
|
|
2556
2711
|
readonly state: StateByIdentifier<States, StateId>;
|
|
2557
|
-
readonly
|
|
2558
|
-
readonly
|
|
2712
|
+
readonly containingState: ParentStateValue<States, StateId>;
|
|
2713
|
+
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2559
2714
|
readonly event: LifecycleEvent<Events>;
|
|
2560
2715
|
readonly outputs: ParallelOutputRegions<States, StateId>;
|
|
2561
2716
|
}
|
|
@@ -2582,14 +2737,15 @@ export declare namespace Machine {
|
|
|
2582
2737
|
*
|
|
2583
2738
|
* **Details**
|
|
2584
2739
|
*
|
|
2585
|
-
* Handlers return snapshots for complete state replacement
|
|
2586
|
-
* results for path-safe partial transitions
|
|
2587
|
-
*
|
|
2740
|
+
* Handlers return snapshots for complete state replacement, target builder
|
|
2741
|
+
* results for path-safe partial transitions, or `target.none()` for an
|
|
2742
|
+
* explicitly targetless transition. Raw decoded state values and `void` are
|
|
2743
|
+
* not accepted at transition boundaries.
|
|
2588
2744
|
*
|
|
2589
2745
|
* @category utility types
|
|
2590
2746
|
* @since 0.4.0
|
|
2591
2747
|
*/
|
|
2592
|
-
type HandlerResult<States extends StateSchemas, E, R> = Snapshot<States> | Target<States, StateIdentifier<States>> | HistoryTarget<States, HistoryIdentifier<States>> | ChoiceTarget<States, ChoiceIdentifier<States>> | StateConstruction<Snapshot<States> | Target<States, StateIdentifier<States>> | HistoryTarget<States, HistoryIdentifier<States>> | ChoiceTarget<States, ChoiceIdentifier<States>>> |
|
|
2748
|
+
type HandlerResult<States extends StateSchemas, E, R> = Snapshot<States> | Target<States, StateIdentifier<States>> | HistoryTarget<States, HistoryIdentifier<States>> | ChoiceTarget<States, ChoiceIdentifier<States>> | StateConstruction<Snapshot<States> | Target<States, StateIdentifier<States>> | HistoryTarget<States, HistoryIdentifier<States>> | ChoiceTarget<States, ChoiceIdentifier<States>>> | NoTarget;
|
|
2593
2749
|
/** A choice resolver must always select a typed target synchronously. */
|
|
2594
2750
|
type ChoiceResult<States extends StateSchemas, E, R> = Snapshot<States> | Target<States, StateIdentifier<States>> | HistoryTarget<States, HistoryIdentifier<States>> | ChoiceTarget<States, ChoiceIdentifier<States>> | StateConstruction<Snapshot<States> | Target<States, StateIdentifier<States>> | HistoryTarget<States, HistoryIdentifier<States>> | ChoiceTarget<States, ChoiceIdentifier<States>>>;
|
|
2595
2751
|
/**
|
|
@@ -2748,6 +2904,14 @@ export declare namespace Machine {
|
|
|
2748
2904
|
} ? Emitted : Invoke extends {
|
|
2749
2905
|
readonly child: ChildMachine<string, infer M>;
|
|
2750
2906
|
} ? Emit<M> : never;
|
|
2907
|
+
/** Public parent inputs required by an invoked child machine. */
|
|
2908
|
+
type InvokeParentEvents<Invoke> = Invoke extends {
|
|
2909
|
+
readonly [InvokeTypeId]: {
|
|
2910
|
+
readonly parentEvents: Types.Covariant<infer ParentEvent>;
|
|
2911
|
+
};
|
|
2912
|
+
} ? ParentEvent : IsAny<Invoke> extends true ? never : Invoke extends {
|
|
2913
|
+
readonly child: ChildMachine<string, infer M>;
|
|
2914
|
+
} ? EventOf<ParentEvents<M>> : never;
|
|
2751
2915
|
/** Extracts transition results returned by invocation lifecycle handlers. */
|
|
2752
2916
|
type InvokeOutcomeReturn<Invoke> = Invoke extends unknown ? (Invoke extends {
|
|
2753
2917
|
readonly onDone?: infer Handler;
|
|
@@ -2819,18 +2983,19 @@ export declare namespace Machine {
|
|
|
2819
2983
|
readonly "~effect/Machine/InvokeOwner"?: Types.Covariant<readonly [States, Events, Emits, StateId]>;
|
|
2820
2984
|
}
|
|
2821
2985
|
/** Type evidence retained by {@link invoke} without affecting runtime data. */
|
|
2822
|
-
interface InvokeTyped<Output, Error, Requirements, InitialError, Emits = never> {
|
|
2986
|
+
interface InvokeTyped<Output, Error, Requirements, InitialError, Emits = never, ParentEvent = never> {
|
|
2823
2987
|
readonly [InvokeTypeId]: {
|
|
2824
2988
|
readonly output: Types.Covariant<Output>;
|
|
2825
2989
|
readonly error: Types.Covariant<Error>;
|
|
2826
2990
|
readonly requirements: Types.Covariant<Requirements>;
|
|
2827
2991
|
readonly initialError: Types.Covariant<InitialError>;
|
|
2828
2992
|
readonly emits: Types.Covariant<Emits>;
|
|
2993
|
+
readonly parentEvents: Types.Covariant<ParentEvent>;
|
|
2829
2994
|
};
|
|
2830
2995
|
}
|
|
2831
|
-
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> & ({
|
|
2832
2997
|
readonly id: string;
|
|
2833
|
-
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>>;
|
|
2834
2999
|
readonly after?: never;
|
|
2835
3000
|
readonly logic?: never;
|
|
2836
3001
|
readonly child?: never;
|
|
@@ -2840,7 +3005,7 @@ export declare namespace Machine {
|
|
|
2840
3005
|
readonly onSnapshot?: never;
|
|
2841
3006
|
} | {
|
|
2842
3007
|
readonly id: string;
|
|
2843
|
-
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId>>;
|
|
3008
|
+
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
2844
3009
|
readonly effect?: never;
|
|
2845
3010
|
readonly logic?: never;
|
|
2846
3011
|
readonly child?: never;
|
|
@@ -2851,7 +3016,7 @@ export declare namespace Machine {
|
|
|
2851
3016
|
} | {
|
|
2852
3017
|
readonly id: string;
|
|
2853
3018
|
readonly address: string;
|
|
2854
|
-
readonly logic: InvokeSource<AnyLogicSource, InvokeContext<States, Events, Emits, StateId>>;
|
|
3019
|
+
readonly logic: InvokeSource<AnyLogicSource, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
2855
3020
|
readonly effect?: never;
|
|
2856
3021
|
readonly after?: never;
|
|
2857
3022
|
readonly child?: never;
|
|
@@ -2860,7 +3025,7 @@ export declare namespace Machine {
|
|
|
2860
3025
|
readonly onSnapshot?: unknown;
|
|
2861
3026
|
} | {
|
|
2862
3027
|
readonly child: ChildMachine.Any;
|
|
2863
|
-
readonly input?: {} | null | ((context: InvokeContext<States, Events, Emits, StateId>) => unknown);
|
|
3028
|
+
readonly input?: {} | null | ((context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown);
|
|
2864
3029
|
readonly id?: never;
|
|
2865
3030
|
readonly address?: never;
|
|
2866
3031
|
readonly effect?: never;
|
|
@@ -2871,7 +3036,8 @@ export declare namespace Machine {
|
|
|
2871
3036
|
readonly onSnapshot?: unknown;
|
|
2872
3037
|
});
|
|
2873
3038
|
/** State-bound inline invocation configuration. */
|
|
2874
|
-
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>>;
|
|
2875
3041
|
type InvokeHandlerRequirement<Value, Handler> = IsAny<Value> extends true ? {
|
|
2876
3042
|
readonly handler: Handler;
|
|
2877
3043
|
} : [Value] extends [never] ? {
|
|
@@ -2893,7 +3059,7 @@ export declare namespace Machine {
|
|
|
2893
3059
|
} : {
|
|
2894
3060
|
readonly onFailure?: never;
|
|
2895
3061
|
} : never;
|
|
2896
|
-
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 []> = {
|
|
2897
3063
|
readonly id: InvokeLifecycleId;
|
|
2898
3064
|
readonly effect: Source;
|
|
2899
3065
|
readonly after?: never;
|
|
@@ -2901,74 +3067,74 @@ export declare namespace Machine {
|
|
|
2901
3067
|
readonly child?: never;
|
|
2902
3068
|
readonly address?: never;
|
|
2903
3069
|
readonly onSnapshot?: never;
|
|
2904
|
-
} & InvokeDoneRequirement<Effect.Success<NoInfer<Fx>>, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<NoInfer<Fx
|
|
2905
|
-
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 []> = {
|
|
2906
3072
|
readonly id: InvokeLifecycleId;
|
|
2907
|
-
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId>>;
|
|
3073
|
+
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
2908
3074
|
readonly effect?: never;
|
|
2909
3075
|
readonly logic?: never;
|
|
2910
3076
|
readonly child?: never;
|
|
2911
3077
|
readonly address?: never;
|
|
2912
3078
|
readonly onFailure?: never;
|
|
2913
3079
|
readonly onSnapshot?: never;
|
|
2914
|
-
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>>;
|
|
2915
3081
|
};
|
|
2916
|
-
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 []> = {
|
|
2917
3083
|
readonly id: InvokeLifecycleId;
|
|
2918
3084
|
readonly address: Address & ChildAddress.Compatibility<Address, ChildEvent>;
|
|
2919
3085
|
readonly logic: Source;
|
|
2920
3086
|
readonly effect?: never;
|
|
2921
3087
|
readonly after?: never;
|
|
2922
3088
|
readonly child?: never;
|
|
2923
|
-
readonly onSnapshot?: InvokeTransition<States, Events, Emits, InvokeSnapshotContext<States, Events, Emits, StateId, ChildState, ChildError, ChildOutput>>;
|
|
2924
|
-
} & InvokeDoneRequirement<ChildOutput, InvokeTransition<States, Events, Emits, InvokeDoneContext<States, Events, Emits, StateId, ChildOutput>>> & InvokeFailureRequirement<ChildError, InvokeTransition<States, Events, Emits, InvokeFailureContext<States, Events, Emits, StateId, ChildError>>>;
|
|
2925
|
-
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 []> = {
|
|
2926
3092
|
readonly child: Child & (ChildDefinition extends EnsureExecutable<Machine.States<ChildDefinition>, Machine.UnhandledStates<ChildDefinition>, Machine.OutputStates<ChildDefinition>> ? unknown : never);
|
|
2927
3093
|
readonly id?: never;
|
|
2928
3094
|
readonly address?: never;
|
|
2929
3095
|
readonly effect?: never;
|
|
2930
3096
|
readonly after?: never;
|
|
2931
3097
|
readonly logic?: never;
|
|
2932
|
-
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>>;
|
|
2933
3099
|
} & (Input<ChildDefinition> extends typeof Schema.Void ? {
|
|
2934
3100
|
readonly input?: never;
|
|
2935
3101
|
} : {
|
|
2936
|
-
readonly input: InvokeSource<Input<ChildDefinition>["Type"], InvokeContext<States, Events, Emits, StateId>>;
|
|
2937
|
-
}) & 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>>>;
|
|
2938
3104
|
type LogicStateOf<Value> = Value extends Logic<infer State, any, any, any, any, any> ? State : never;
|
|
2939
3105
|
type LogicEventOf<Value> = Value extends Logic<any, infer Event, any, any, any, any> ? Event : never;
|
|
2940
3106
|
type LogicErrorOf<Value> = Value extends Logic<any, any, infer Error, any, any, any> ? Error : never;
|
|
2941
3107
|
type LogicServicesOf<Value> = Value extends Logic<any, any, any, infer Services, any, any> ? Services : never;
|
|
2942
3108
|
type LogicOutputOf<Value> = Value extends Logic<any, any, any, any, infer Output, any> ? Output : never;
|
|
2943
3109
|
type LogicInitialErrorOf<Value> = Value extends Logic<any, any, any, any, any, infer Error> ? Error : never;
|
|
2944
|
-
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 {
|
|
2945
3111
|
readonly effect: infer Source;
|
|
2946
|
-
} ? 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>>> & {
|
|
2947
3113
|
readonly onSnapshot?: never;
|
|
2948
3114
|
} : never : Raw extends {
|
|
2949
3115
|
readonly after: unknown;
|
|
2950
3116
|
} ? {
|
|
2951
|
-
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>>;
|
|
2952
3118
|
readonly onFailure?: never;
|
|
2953
3119
|
readonly onSnapshot?: never;
|
|
2954
3120
|
} : Raw extends {
|
|
2955
3121
|
readonly logic: infer Source;
|
|
2956
3122
|
readonly address: infer Address;
|
|
2957
|
-
} ? 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>>> & {
|
|
2958
3124
|
readonly address: ChildAddress<never> & ChildAddress.Compatibility<Address, ChildLogic extends Logic<any, infer ChildEvent, any, any, any, any> ? ChildEvent : never>;
|
|
2959
|
-
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>>;
|
|
2960
3126
|
} : never : Raw extends {
|
|
2961
3127
|
readonly child: infer Child extends ChildMachine<string, infer ChildDefinition>;
|
|
2962
|
-
} ? 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 ? {
|
|
2963
3129
|
readonly input?: never;
|
|
2964
3130
|
} : {
|
|
2965
|
-
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>>;
|
|
2966
3132
|
}) & {
|
|
2967
|
-
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>>;
|
|
2968
3134
|
} : never : never;
|
|
2969
|
-
type ContextualInvokeDefinition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Raw> = Raw extends ReadonlyArray<any> ? {
|
|
2970
|
-
readonly [Index in keyof Raw]: ContextualInvokeConfig<States, Events, Emits, StateId, Raw[Index]>;
|
|
2971
|
-
} : 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>;
|
|
2972
3138
|
type OutputHandlerConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Context> = NodeByIdentifier<States, StateId> extends {
|
|
2973
3139
|
readonly output: Schema.Top;
|
|
2974
3140
|
} ? {
|
|
@@ -2987,33 +3153,33 @@ export declare namespace Machine {
|
|
|
2987
3153
|
* @category models
|
|
2988
3154
|
* @since 0.4.0
|
|
2989
3155
|
*/
|
|
2990
|
-
type ActiveStateConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, E, R> = {
|
|
2991
|
-
readonly entry?: (context: StateActionContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
2992
|
-
readonly exit?: (context: StateActionContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
2993
|
-
readonly invoke?: InvokeDefinition<States, Events, Emits, StateId
|
|
2994
|
-
readonly always?: ((context: AlwaysContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>) | {
|
|
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 []> = {
|
|
3157
|
+
readonly entry?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3158
|
+
readonly exit?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3159
|
+
readonly invoke?: InvokeDefinition<States, Events, Emits, StateId, InputEvents, ParentEvents> | TypedInvokeDefinition;
|
|
3160
|
+
readonly always?: ((context: AlwaysContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>) | {
|
|
2995
3161
|
/** Statically declared upper bound of possible target paths. */
|
|
2996
3162
|
readonly targets?: ReadonlyArray<StateNodeIdentifier<States>>;
|
|
2997
|
-
readonly transition: (context: AlwaysContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>;
|
|
3163
|
+
readonly transition: (context: AlwaysContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>;
|
|
2998
3164
|
};
|
|
2999
|
-
readonly onDone?: ((context: DoneContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>) | {
|
|
3165
|
+
readonly onDone?: ((context: DoneContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>) | {
|
|
3000
3166
|
/** Statically declared upper bound of possible target paths. */
|
|
3001
3167
|
readonly targets?: ReadonlyArray<StateNodeIdentifier<States>>;
|
|
3002
|
-
readonly transition: (context: DoneContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>;
|
|
3168
|
+
readonly transition: (context: DoneContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>;
|
|
3003
3169
|
};
|
|
3004
3170
|
readonly on?: {
|
|
3005
|
-
readonly [EventTag in TagOf<Events[number]>]?: ((context: HandlerContext<States, Events, Emits, StateId, EventTag, E, R>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>) | {
|
|
3171
|
+
readonly [EventTag in TagOf<Events[number]>]?: ((context: HandlerContext<States, Events, Emits, StateId, EventTag, E, R, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>) | {
|
|
3006
3172
|
readonly reenter?: boolean;
|
|
3007
3173
|
/**
|
|
3008
3174
|
* Upper bound of state or history paths this handler may target.
|
|
3009
|
-
* Returning `
|
|
3175
|
+
* Returning `target.none()` is always permitted. Declaring a parent state also
|
|
3010
3176
|
* permits concrete descendant targets below it.
|
|
3011
3177
|
*/
|
|
3012
3178
|
readonly targets?: ReadonlyArray<StateNodeIdentifier<States>>;
|
|
3013
|
-
readonly transition: (context: HandlerContext<States, Events, Emits, StateId, EventTag, E, R>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>;
|
|
3179
|
+
readonly transition: (context: HandlerContext<States, Events, Emits, StateId, EventTag, E, R, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => HandlerResult<States, any, any>;
|
|
3014
3180
|
};
|
|
3015
3181
|
};
|
|
3016
|
-
readonly initial?: StateInitialHandler<States, Events, Emits, StateId>;
|
|
3182
|
+
readonly initial?: StateInitialHandler<States, Events, Emits, StateId, InputEvents, ParentEvents>;
|
|
3017
3183
|
} & ActiveOutputHandlerConfig<States, Events, StateId>;
|
|
3018
3184
|
/** Values supplied when a statechart implicitly enters a state's initial children. */
|
|
3019
3185
|
type StateInitialValue<States extends StateSchemas, StateId extends StateIdentifier<States>> = NodeByIdentifier<States, StateId> extends infer Node ? Node extends {
|
|
@@ -3026,14 +3192,14 @@ export declare namespace Machine {
|
|
|
3026
3192
|
readonly initial: infer Initial;
|
|
3027
3193
|
} ? Initial extends ActiveStateKey<Children> ? NodeSchema<Children[Initial]> extends never ? never : NodeValue<Children[Initial]> : never : never : never;
|
|
3028
3194
|
/** Context passed to an implicit child-state initializer. */
|
|
3029
|
-
type StateInitialContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States
|
|
3195
|
+
type StateInitialContext<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 []> = StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>;
|
|
3030
3196
|
/** Initial child value implementation for a compound or parallel state. */
|
|
3031
|
-
type StateInitialHandler<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States
|
|
3197
|
+
type StateInitialHandler<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 []> = (context: StateInitialContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateInitialValue<States, StateId>;
|
|
3032
3198
|
/** Context used only when a history node has no previously captured record. */
|
|
3033
3199
|
interface HistoryDefaultContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, ParentId extends StateIdentifier<States>> {
|
|
3034
3200
|
readonly event: LifecycleEvent<Events>;
|
|
3035
3201
|
readonly target: HistoryDefaultTargetBuilder<States, ParentId>;
|
|
3036
|
-
readonly
|
|
3202
|
+
readonly owner: ParentId;
|
|
3037
3203
|
}
|
|
3038
3204
|
/**
|
|
3039
3205
|
* Typed fallback evaluated when a history node has no record yet.
|
|
@@ -3050,11 +3216,11 @@ export declare namespace Machine {
|
|
|
3050
3216
|
};
|
|
3051
3217
|
};
|
|
3052
3218
|
/** Required implementation for a choice pseudo-state. */
|
|
3053
|
-
interface ChoiceStateConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, ChoiceId extends ChoiceIdentifier<States
|
|
3219
|
+
interface ChoiceStateConfig<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 []> {
|
|
3054
3220
|
readonly choice: {
|
|
3055
3221
|
/** Statically inspectable upper bound of every possible target. */
|
|
3056
3222
|
readonly targets: readonly [StateNodeIdentifier<States>, ...ReadonlyArray<StateNodeIdentifier<States>>];
|
|
3057
|
-
readonly transition: (context: ChoiceContext<States, Events, Emits, ChoiceId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => ChoiceResult<States, any, any>;
|
|
3223
|
+
readonly transition: (context: ChoiceContext<States, Events, Emits, ChoiceId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => ChoiceResult<States, any, any>;
|
|
3058
3224
|
};
|
|
3059
3225
|
readonly entry?: never;
|
|
3060
3226
|
readonly exit?: never;
|
|
@@ -3071,8 +3237,8 @@ export declare namespace Machine {
|
|
|
3071
3237
|
* @category models
|
|
3072
3238
|
* @since 0.4.0
|
|
3073
3239
|
*/
|
|
3074
|
-
type FinalStateConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States
|
|
3075
|
-
readonly entry?: (context: StateActionContext<States, Events, Emits, StateId>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3240
|
+
type FinalStateConfig<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 []> = {
|
|
3241
|
+
readonly entry?: (context: StateActionContext<States, Events, Emits, StateId, InputEvents, ParentEvents>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => StateActionResult<any, any>;
|
|
3076
3242
|
readonly exit?: never;
|
|
3077
3243
|
readonly always?: never;
|
|
3078
3244
|
readonly onDone?: never;
|
|
@@ -3084,10 +3250,10 @@ export declare namespace Machine {
|
|
|
3084
3250
|
* @category models
|
|
3085
3251
|
* @since 0.4.0
|
|
3086
3252
|
*/
|
|
3087
|
-
type HandlerConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, E, R> = NodeByIdentifier<States, StateId> extends {
|
|
3253
|
+
type HandlerConfig<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 []> = NodeByIdentifier<States, StateId> extends {
|
|
3088
3254
|
readonly type: "final";
|
|
3089
|
-
} ? FinalStateConfig<States, Events, Emits, StateId> : ActiveStateConfig<States, Events, Emits, StateId, E, R>;
|
|
3090
|
-
type HandlerNodeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Path extends StateNodeIdentifier<States>, E, R
|
|
3255
|
+
} ? FinalStateConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> : ActiveStateConfig<States, Events, Emits, StateId, E, R, InputEvents, ParentEvents>;
|
|
3256
|
+
type HandlerNodeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Path extends StateNodeIdentifier<States>, E, R, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>> = Path extends ChoiceIdentifier<States> ? ChoiceStateConfig<States, Events, Emits, Path, InputEvents, ParentEvents> : Path extends StateIdentifier<States> ? HandlerConfig<States, Events, Emits, Path, E, R, InputEvents, ParentEvents> : never;
|
|
3091
3257
|
type HandlerChildren<Node> = Node extends {
|
|
3092
3258
|
readonly states: infer Children extends StateSchemas;
|
|
3093
3259
|
} ? Children : never;
|
|
@@ -3102,12 +3268,12 @@ export declare namespace Machine {
|
|
|
3102
3268
|
readonly states: infer Children extends StateSchemas;
|
|
3103
3269
|
} ? HandlerNodeByPath<Children, Rest> : never : never : Path extends keyof States ? States[Path] : never;
|
|
3104
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;
|
|
3105
|
-
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 {
|
|
3106
3272
|
readonly invoke: infer Invoke;
|
|
3107
3273
|
} ? HandlerValidationAtPath<StateId, {
|
|
3108
|
-
readonly invoke: ContextualInvokeDefinition<AllStates, Events, Emits, StateId, Invoke>;
|
|
3274
|
+
readonly invoke: ContextualInvokeDefinition<AllStates, Events, Emits, StateId, InputEvents, ParentEvents, Invoke>;
|
|
3109
3275
|
}> : unknown : unknown;
|
|
3110
|
-
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>;
|
|
3111
3277
|
type HandlerValidationAtPath<Path extends string, Validation> = Path extends `${infer Head}.${infer Rest}` ? {
|
|
3112
3278
|
readonly [Key in Head]?: {
|
|
3113
3279
|
readonly states: HandlerValidationAtPath<Rest, Validation>;
|
|
@@ -3115,21 +3281,21 @@ export declare namespace Machine {
|
|
|
3115
3281
|
} : {
|
|
3116
3282
|
readonly [Key in Path]?: Validation;
|
|
3117
3283
|
};
|
|
3118
|
-
type HandlerNode<AllStates extends StateSchemas, Node, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, E, R, StateId extends StateNodeIdentifier<AllStates>> = HandlerNodeConfig<AllStates, Events, Emits, StateId, E, R> & (StateId extends ChoiceIdentifier<AllStates> ? {
|
|
3284
|
+
type HandlerNode<AllStates extends StateSchemas, Node, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, E, R, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<AllStates>> = HandlerNodeConfig<AllStates, Events, Emits, StateId, E, R, InputEvents, ParentEvents> & (StateId extends ChoiceIdentifier<AllStates> ? {
|
|
3119
3285
|
readonly states?: never;
|
|
3120
3286
|
readonly history?: never;
|
|
3121
3287
|
} : HandlerChildren<Node> extends infer Children extends StateSchemas ? [Children] extends [never] ? {
|
|
3122
3288
|
readonly states?: never;
|
|
3123
3289
|
readonly history?: never;
|
|
3124
3290
|
} : {
|
|
3125
|
-
readonly states?: HandlerTree<AllStates, Children, Events, Emits, E, R, Extract<StateId, StateIdentifier<AllStates>>>;
|
|
3291
|
+
readonly states?: HandlerTree<AllStates, Children, Events, Emits, E, R, InputEvents, ParentEvents, Extract<StateId, StateIdentifier<AllStates>>>;
|
|
3126
3292
|
readonly history?: HistoryDefaultConfig<AllStates, Events, Emits, Extract<StateId, StateIdentifier<AllStates>>, Children>;
|
|
3127
3293
|
} : {
|
|
3128
3294
|
readonly states?: never;
|
|
3129
3295
|
readonly history?: never;
|
|
3130
3296
|
});
|
|
3131
|
-
type HandlerTree<AllStates extends StateSchemas, States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, E, R, Prefix extends string> = {
|
|
3132
|
-
readonly [Key in ActiveStateKey<States> | ChoiceStateKey<States>]?: HandlerNode<AllStates, States[Key], Events, Emits, E, R, HandlerNodeId<AllStates, JoinPath<Prefix, Key>>>;
|
|
3297
|
+
type HandlerTree<AllStates extends StateSchemas, States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, E, R, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Prefix extends string> = {
|
|
3298
|
+
readonly [Key in ActiveStateKey<States> | ChoiceStateKey<States>]?: HandlerNode<AllStates, States[Key], Events, Emits, E, R, InputEvents, ParentEvents, HandlerNodeId<AllStates, JoinPath<Prefix, Key>>>;
|
|
3133
3299
|
};
|
|
3134
3300
|
type HandlerNodeConfigKey = "always" | "choice" | "entry" | "exit" | "history" | "initial" | "invoke" | "on" | "onDone" | "output" | "states";
|
|
3135
3301
|
type HandlerValidationError<Message extends string, Path extends string, Detail = unknown> = {
|
|
@@ -3210,7 +3376,7 @@ export declare namespace Machine {
|
|
|
3210
3376
|
] extends [never] ? unknown : {
|
|
3211
3377
|
readonly output: HandlerValidationError<"Handler config is missing a region output implementation required by parallel output", StateId, Exclude<RequiredParallelOutputStates<AllStates, StateId>, AvailableOutputStates>>;
|
|
3212
3378
|
} : unknown : unknown);
|
|
3213
|
-
type HandlerNodeValidation<AllStates extends StateSchemas, Node, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<AllStates>, Config, AvailableOutputStates extends StateIdentifier<AllStates>> = StateId extends ChoiceIdentifier<AllStates> ? HandlerChoiceUnknownConfigKeyValidation<StateId, Config> & HandlerChoiceTargetValidation<StateId, Config> & HandlerRuntimeValidation<Events, Emits, StateId, Config> : StateId extends StateIdentifier<AllStates> ? HandlerUnknownConfigKeyValidation<StateId, Config> & HandlerOnKeyValidation<Events, StateId, Config> & HandlerOnTargetValidation<StateId, Config> & HandlerDirectTargetValidation<StateId, Config, "always"> & HandlerDirectTargetValidation<StateId, Config, "onDone"> &
|
|
3379
|
+
type HandlerNodeValidation<AllStates extends StateSchemas, Node, Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<AllStates>, Config, AvailableOutputStates extends StateIdentifier<AllStates>> = StateId extends ChoiceIdentifier<AllStates> ? HandlerChoiceUnknownConfigKeyValidation<StateId, Config> & HandlerChoiceTargetValidation<StateId, Config> & HandlerRuntimeValidation<Events, Emits, StateId, Config> : StateId extends StateIdentifier<AllStates> ? HandlerUnknownConfigKeyValidation<StateId, Config> & HandlerOnKeyValidation<Events, StateId, Config> & HandlerOnTargetValidation<StateId, Config> & HandlerDirectTargetValidation<StateId, Config, "always"> & HandlerDirectTargetValidation<StateId, Config, "onDone"> & HandlerInvokeParentEventsValidation<InputEvents, StateId, Config> & HandlerChildrenValidation<Node, StateId, Config> & HandlerOutputRequirementValidation<AllStates, StateId, AvailableOutputStates, Config> & HandlerRuntimeValidation<Events, Emits, StateId, Config> : unknown;
|
|
3214
3380
|
type HandlerChoiceUnknownConfigKeyValidation<StateId extends string, Config, UnknownKeys extends string = Exclude<Extract<keyof Config, string>, "choice">> = [UnknownKeys] extends [never] ? unknown : {
|
|
3215
3381
|
readonly [Key in UnknownKeys]: HandlerValidationError<"Choice handler config contains an invalid key", StateId, Key>;
|
|
3216
3382
|
};
|
|
@@ -3219,13 +3385,13 @@ export declare namespace Machine {
|
|
|
3219
3385
|
} ? [UndeclaredTransitionTarget<Choice>] extends [never] ? unknown : {
|
|
3220
3386
|
readonly choice: HandlerValidationError<"Choice resolver returns a target not listed in targets", StateId, UndeclaredTransitionTarget<Choice>>;
|
|
3221
3387
|
} : unknown;
|
|
3222
|
-
type
|
|
3223
|
-
readonly invoke: HandlerValidationError<"Invoked child
|
|
3388
|
+
type HandlerInvokeParentEventsValidation<Events extends ReadonlyArray<TaggedSchema>, StateId extends string, Config> = [InvokeReturn<Config>] extends [never] ? unknown : [Exclude<InvokeParentEvents<InvokeReturn<Config>>, EventOf<Events>>] extends [never] ? unknown : {
|
|
3389
|
+
readonly invoke: HandlerValidationError<"Invoked child expects parent events not accepted by this machine", StateId, Exclude<InvokeParentEvents<InvokeReturn<Config>>, EventOf<Events>>>;
|
|
3224
3390
|
};
|
|
3225
3391
|
type HandlerRuntimeValidation<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends string, Config, Incompatible = IncompatibleRuntime<ConfigServices<HandlerConfigPart<Config>>, EventOf<Events>, EmitOf<Emits>>> = [Incompatible] extends [never] ? unknown : HandlerValidationError<"Handler config requires an incompatible machine runtime", StateId, Incompatible>;
|
|
3226
|
-
type HandlerNodeValidationAtPath<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Config, AvailableOutputStates extends StateIdentifier<AllStates>, StateId extends StateNodeIdentifier<AllStates>, NodeConfig = HandlerConfigAtPath<Config, StateId>> = [NodeConfig] extends [never] ? never : HandlerNodeValidation<AllStates, HandlerNodeByPath<AllStates, StateId>, Events, Emits, StateId, NodeConfig, AvailableOutputStates> extends infer Validation ? unknown extends Validation ? never : HandlerValidationAtPath<StateId, Validation> : never;
|
|
3227
|
-
type HandlerTreeNodeValidations<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Config, AvailableOutputStates extends StateIdentifier<AllStates>> = Types.UnionToIntersection<StateNodeIdentifier<AllStates> extends infer StateId extends StateNodeIdentifier<AllStates> ? StateId extends StateNodeIdentifier<AllStates> ? HandlerNodeValidationAtPath<AllStates, Events, Emits, Config, AvailableOutputStates, StateId> : never : never>;
|
|
3228
|
-
type HandlerTreeValidation<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Config, AvailableOutputStates extends StateIdentifier<AllStates>> = HandlerUnknownStateKeyValidation<AllStates, "", Config> & HandlerTreeNodeValidations<AllStates, Events, Emits, Config, AvailableOutputStates>;
|
|
3392
|
+
type HandlerNodeValidationAtPath<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Config, AvailableOutputStates extends StateIdentifier<AllStates>, StateId extends StateNodeIdentifier<AllStates>, NodeConfig = HandlerConfigAtPath<Config, StateId>> = [NodeConfig] extends [never] ? never : HandlerNodeValidation<AllStates, HandlerNodeByPath<AllStates, StateId>, Events, InputEvents, Emits, StateId, NodeConfig, AvailableOutputStates> extends infer Validation ? unknown extends Validation ? never : HandlerValidationAtPath<StateId, Validation> : never;
|
|
3393
|
+
type HandlerTreeNodeValidations<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Config, AvailableOutputStates extends StateIdentifier<AllStates>> = Types.UnionToIntersection<StateNodeIdentifier<AllStates> extends infer StateId extends StateNodeIdentifier<AllStates> ? StateId extends StateNodeIdentifier<AllStates> ? HandlerNodeValidationAtPath<AllStates, Events, InputEvents, Emits, Config, AvailableOutputStates, StateId> : never : never>;
|
|
3394
|
+
type HandlerTreeValidation<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, InputEvents extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Config, AvailableOutputStates extends StateIdentifier<AllStates>> = HandlerUnknownStateKeyValidation<AllStates, "", Config> & HandlerTreeNodeValidations<AllStates, Events, InputEvents, Emits, Config, AvailableOutputStates>;
|
|
3229
3395
|
type HandlerHasRequiredInitial<AllStates extends StateSchemas, StateId extends StateIdentifier<AllStates>, Config> = StateId extends RequiredHistoryInitializers<AllStates> ? "initial" extends keyof Config ? true : false : true;
|
|
3230
3396
|
type HandlerHasRequiredHistoryDefaults<Node, Config> = Node extends {
|
|
3231
3397
|
readonly states: infer Children extends StateSchemas;
|
|
@@ -3250,15 +3416,15 @@ export declare namespace Machine {
|
|
|
3250
3416
|
readonly outputState: StateId extends StateIdentifier<AllStates> ? HandlerOutputStates<AllStates, StateId, HandlerConfigPart<NodeConfig>> : never;
|
|
3251
3417
|
};
|
|
3252
3418
|
type HandlerTreeEvidence<AllStates extends StateSchemas, Config> = StateNodeIdentifier<AllStates> extends infer StateId extends StateNodeIdentifier<AllStates> ? StateId extends StateNodeIdentifier<AllStates> ? HandlerNodeEvidence<AllStates, Config, StateId> : never : never;
|
|
3253
|
-
type HandleTreeResult<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Input extends Schema.Top, UnhandledStates extends StateIdentifier<AllStates>, E, R, InitialE, InitialR, FinalStates extends StateIdentifier<AllStates>, Output, OutputStates extends StateIdentifier<AllStates>, InputEvents extends ReadonlyArray<TaggedSchema>, Config> = Machine<AllStates, Events, Input, Exclude<UnhandledStates, HandlerTreeEvidence<AllStates, Config>["stateId"]>, E | HandlerTreeEvidence<AllStates, Config>["error"], ExcludeCompatibleRuntime<R | HandlerTreeEvidence<AllStates, Config>["services"], EventOf<Events>, EmitOf<Emits>>, InitialE, InitialR, FinalStates, Output, Emits, OutputStates | Extract<HandlerTreeEvidence<AllStates, Config>["outputState"], StateIdentifier<AllStates>>, InputEvents>;
|
|
3419
|
+
type HandleTreeResult<AllStates extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Input extends Schema.Top, UnhandledStates extends StateIdentifier<AllStates>, E, R, InitialE, InitialR, FinalStates extends StateIdentifier<AllStates>, Output, OutputStates extends StateIdentifier<AllStates>, InputEvents extends ReadonlyArray<TaggedSchema>, ParentEvents extends ReadonlyArray<TaggedSchema>, Config> = Machine<AllStates, Events, Input, Exclude<UnhandledStates, HandlerTreeEvidence<AllStates, Config>["stateId"]>, E | HandlerTreeEvidence<AllStates, Config>["error"], ExcludeCompatibleRuntime<R | HandlerTreeEvidence<AllStates, Config>["services"], EventOf<Events>, EmitOf<Emits>>, InitialE, InitialR, FinalStates, Output, Emits, OutputStates | Extract<HandlerTreeEvidence<AllStates, Config>["outputState"], StateIdentifier<AllStates>>, InputEvents, ParentEvents>;
|
|
3254
3420
|
/**
|
|
3255
3421
|
* Adds state handlers from a root state object.
|
|
3256
3422
|
*
|
|
3257
3423
|
* @category combinators
|
|
3258
3424
|
* @since 0.4.0
|
|
3259
3425
|
*/
|
|
3260
|
-
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>> {
|
|
3261
|
-
<const Config extends HandlerTree<States, States, Events, Emits, E, R, "">>(config: Config & HandlerInvokeContexts<States, Events, Emits, NoInfer<Config>> & HandlerTreeValidation<States, Events, 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, Config>;
|
|
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>> {
|
|
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>;
|
|
3262
3428
|
}
|
|
3263
3429
|
/**
|
|
3264
3430
|
* Any state config.
|
|
@@ -3321,7 +3487,7 @@ export declare const isMachine: (u: unknown) => u is Machine.Any;
|
|
|
3321
3487
|
* @category guards
|
|
3322
3488
|
* @since 0.4.0
|
|
3323
3489
|
*/
|
|
3324
|
-
export declare const isFinal: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, 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>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents>, state: Machine.Snapshot<States>) => state is Machine.SnapshotContainingFinal<States, FinalStates>;
|
|
3490
|
+
export declare const isFinal: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, 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>, state: Machine.Snapshot<States>) => state is Machine.SnapshotContainingFinal<States, FinalStates>;
|
|
3325
3491
|
/**
|
|
3326
3492
|
* Defines a state tree while preserving literal state paths.
|
|
3327
3493
|
*
|
|
@@ -3350,7 +3516,7 @@ export declare const isFinal: <const States extends Machine.StateSchemas, const
|
|
|
3350
3516
|
*
|
|
3351
3517
|
* Machine.make({
|
|
3352
3518
|
* states: States.states,
|
|
3353
|
-
* events:
|
|
3519
|
+
* events: Machine.events(),
|
|
3354
3520
|
* initial: () => States.initial.idle.from()
|
|
3355
3521
|
* })
|
|
3356
3522
|
* ```
|
|
@@ -3359,19 +3525,20 @@ export declare const isFinal: <const States extends Machine.StateSchemas, const
|
|
|
3359
3525
|
* @since 0.4.0
|
|
3360
3526
|
*/
|
|
3361
3527
|
export declare const defineStates: DefineStates;
|
|
3362
|
-
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>> = {
|
|
3528
|
+
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>> = {
|
|
3363
3529
|
readonly id?: string;
|
|
3364
3530
|
readonly states: States & DefineStateTreeInput<NoInfer<States>>;
|
|
3365
|
-
readonly events: InputEvents & ValidateInputEventProtocol<NoInfer<InputEvents>>;
|
|
3366
|
-
readonly internalEvents?: InternalEvents & ValidateInternalEventProtocol<NoInfer<InputEvents>, NoInfer<InternalEvents>>;
|
|
3367
|
-
readonly
|
|
3531
|
+
readonly events: Machine.EventProtocol<"public", InputEvents> & ValidateInputEventProtocol<NoInfer<InputEvents>>;
|
|
3532
|
+
readonly internalEvents?: Machine.EventProtocol<"internal", InternalEvents> & ValidateInternalEventProtocol<NoInfer<InputEvents>, NoInfer<InternalEvents>>;
|
|
3533
|
+
readonly emittedEvents?: Machine.EventProtocol<"emitted", Emits>;
|
|
3534
|
+
readonly parentEvents?: Machine.EventProtocol<"public", ParentEvents>;
|
|
3368
3535
|
readonly input?: Input;
|
|
3369
3536
|
readonly initial: (...args: [...Machine.InputArgs<Input>]) => Machine.InitialResult<States, InitialE, InitialR>;
|
|
3370
3537
|
};
|
|
3371
|
-
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>> = Machine<States, readonly [...InputEvents, ...InternalEvents], Input, Machine.StateIdentifier<States>, never, never, InitialE, InitialR, Machine.FinalStateFromDefinition<States>, Machine.TerminalOutput<States>, Emits, never, InputEvents>;
|
|
3538
|
+
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>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>> = Machine<States, readonly [...InputEvents, ...InternalEvents], Input, Machine.StateIdentifier<States>, never, never, InitialE, InitialR, Machine.FinalStateFromDefinition<States>, Machine.TerminalOutput<States>, Emits, never, InputEvents, ParentEvents>;
|
|
3372
3539
|
interface Make {
|
|
3373
|
-
<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 []>(config: MakeConfig<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents>, ..._validation: ValidateDefinedStates<NoInfer<States>>): MakeResult<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents>;
|
|
3374
|
-
<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 []>(config: Omit<MakeConfig<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents>, "states"> & {
|
|
3540
|
+
<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 ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: MakeConfig<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentEvents>, ..._validation: ValidateDefinedStates<NoInfer<States>>): MakeResult<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentEvents>;
|
|
3541
|
+
<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 ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Omit<MakeConfig<States, InputEvents, Emits, Input, InitialE, InitialR, InternalEvents, ParentEvents>, "states"> & {
|
|
3375
3542
|
readonly states: InvalidDefinedStateTreeInput<States>;
|
|
3376
3543
|
}): never;
|
|
3377
3544
|
}
|
|
@@ -3386,10 +3553,13 @@ interface Make {
|
|
|
3386
3553
|
* `defineStates` or is passed inline. Call `handle` on the returned definition
|
|
3387
3554
|
* to implement state behavior with ordinary TypeScript control flow.
|
|
3388
3555
|
*
|
|
3389
|
-
*
|
|
3390
|
-
*
|
|
3391
|
-
*
|
|
3392
|
-
*
|
|
3556
|
+
* `Machine.events` defines the public input protocol. `Machine.internalEvents`
|
|
3557
|
+
* adds raised events and other machine-local deliveries.
|
|
3558
|
+
* `Machine.emittedEvents` defines outward ephemeral notifications, while
|
|
3559
|
+
* `parentEvents` declares the inputs a child may explicitly send to its owning
|
|
3560
|
+
* actor. All descriptors expose deferred constructors while retaining their
|
|
3561
|
+
* schemas opaquely for runtime validation. Public and internal tags must be
|
|
3562
|
+
* disjoint.
|
|
3393
3563
|
*
|
|
3394
3564
|
* **Example** (Typed counter machine)
|
|
3395
3565
|
*
|
|
@@ -3406,10 +3576,11 @@ interface Make {
|
|
|
3406
3576
|
* }) {}
|
|
3407
3577
|
*
|
|
3408
3578
|
* const States = Machine.defineStates({ Count })
|
|
3579
|
+
* const Events = Machine.events(Increment)
|
|
3409
3580
|
*
|
|
3410
3581
|
* const counter = Machine.make({
|
|
3411
3582
|
* states: States.states,
|
|
3412
|
-
* events:
|
|
3583
|
+
* events: Events,
|
|
3413
3584
|
* initial: () => States.initial.Count(new Count({ value: 0 }))
|
|
3414
3585
|
* }).handle({
|
|
3415
3586
|
* Count: {
|
|
@@ -3426,54 +3597,16 @@ interface Make {
|
|
|
3426
3597
|
* @since 0.4.0
|
|
3427
3598
|
*/
|
|
3428
3599
|
export declare const make: Make;
|
|
3429
|
-
type EventConstructorArgs<EventSchema extends Machine.TaggedSchema> = {} extends EventSchema["~type.make.in"] ? [
|
|
3430
|
-
input?: EventSchema["~type.make.in"]
|
|
3431
|
-
] : [input: EventSchema["~type.make.in"]];
|
|
3432
3600
|
/**
|
|
3433
|
-
*
|
|
3434
|
-
*
|
|
3435
|
-
* **Details**
|
|
3436
|
-
*
|
|
3437
|
-
* The schema constructor runs exactly once. The resulting decoded event is
|
|
3438
|
-
* trusted by this machine and definitions derived from it with `handle`, so
|
|
3439
|
-
* repeated delivery does not decode the same already-constructed value again.
|
|
3440
|
-
* Events supplied through ordinary `send` and `plan` calls remain untrusted
|
|
3441
|
-
* and continue through full runtime schema validation.
|
|
3442
|
-
* Treat the returned event as immutable after construction.
|
|
3443
|
-
* This eager low-level constructor throws `MachineSchemaDecodeError` when
|
|
3444
|
-
* construction fails. Prefer {@link events} and {@link internalEvents} for
|
|
3445
|
-
* ordinary delivery so construction remains inside the machine error channel.
|
|
3446
|
-
*
|
|
3447
|
-
* The schema must be one of the machine's configured public or internal event
|
|
3448
|
-
* schemas, or a case schema belonging to a configured `Schema.TaggedUnion`.
|
|
3601
|
+
* Extracts the decoded event union carried by an event protocol descriptor.
|
|
3449
3602
|
*
|
|
3450
|
-
*
|
|
3451
|
-
*
|
|
3452
|
-
* ```ts
|
|
3453
|
-
* import { Schema } from "effect"
|
|
3454
|
-
* import { Machine } from "@typeonce/effect-machine"
|
|
3455
|
-
*
|
|
3456
|
-
* class Idle extends Schema.TaggedClass<Idle>("Idle")("Idle", {}) {}
|
|
3457
|
-
* class Increment extends Schema.TaggedClass<Increment>("Increment")("Increment", {
|
|
3458
|
-
* by: Schema.Number
|
|
3459
|
-
* }) {}
|
|
3460
|
-
*
|
|
3461
|
-
* const States = Machine.defineStates({ Idle })
|
|
3462
|
-
* const counter = Machine.make({
|
|
3463
|
-
* states: States.states,
|
|
3464
|
-
* events: [Increment],
|
|
3465
|
-
* initial: () => States.initial.Idle.from()
|
|
3466
|
-
* }).handle({ Idle: { on: { Increment: () => States.initial.Idle.from() } } })
|
|
3467
|
-
*
|
|
3468
|
-
* const increment = Machine.event(counter, Increment, { by: 1 })
|
|
3469
|
-
* ```
|
|
3470
|
-
*
|
|
3471
|
-
* @category constructors
|
|
3472
|
-
* @since 0.4.0
|
|
3603
|
+
* @category utility types
|
|
3604
|
+
* @since 0.10.0
|
|
3473
3605
|
*/
|
|
3474
|
-
export
|
|
3606
|
+
export type EventOf<Protocol extends Machine.EventProtocol.Any> = Machine.EventOf<Machine.EventProtocolSchemas<Protocol>>;
|
|
3475
3607
|
/**
|
|
3476
|
-
*
|
|
3608
|
+
* Defines a public event protocol and returns deferred constructors for every
|
|
3609
|
+
* statically finite configured event tag.
|
|
3477
3610
|
*
|
|
3478
3611
|
* Constructor inputs retain their schema-derived required fields, defaults,
|
|
3479
3612
|
* and transformations. Construction is deferred until delivery so failures
|
|
@@ -3483,26 +3616,56 @@ export declare const event: <const M extends Machine.Any, const EventSchema exte
|
|
|
3483
3616
|
* **Example**
|
|
3484
3617
|
*
|
|
3485
3618
|
* ```ts
|
|
3486
|
-
* const
|
|
3487
|
-
*
|
|
3619
|
+
* const Events = Machine.events(Increment, Reset)
|
|
3620
|
+
* const machine = Machine.make({ events: Events, ... })
|
|
3621
|
+
* yield* ref.send(Events.Increment({ by: 1 }))
|
|
3488
3622
|
* ```
|
|
3489
3623
|
*
|
|
3490
3624
|
* @category constructors
|
|
3491
|
-
* @since 0.
|
|
3625
|
+
* @since 0.10.0
|
|
3492
3626
|
*/
|
|
3493
|
-
export declare const events:
|
|
3627
|
+
export declare const events: {
|
|
3628
|
+
<const Schemas extends ReadonlyArray<Machine.TaggedSchema>>(...schemas: Schemas & ValidateInputEventProtocol<NoInfer<Schemas>>): Machine.EventProtocol<"public", readonly [...Schemas]>;
|
|
3629
|
+
<const Inputs extends ReadonlyArray<Machine.EventProtocolInput<"public">>>(...inputs: Inputs & ValidateEventProtocolBuilder<"public", Inputs>): Machine.EventProtocol<"public", Machine.EventProtocolInputSchemasOf<"public", Inputs>>;
|
|
3630
|
+
};
|
|
3494
3631
|
/**
|
|
3495
|
-
*
|
|
3496
|
-
*
|
|
3632
|
+
* Defines an internal event protocol and returns deferred constructors for
|
|
3633
|
+
* every statically finite configured event tag.
|
|
3497
3634
|
*
|
|
3498
3635
|
* Use these constructors for raised events and other machine-local deliveries.
|
|
3499
3636
|
* Construction failures are reported through the
|
|
3500
3637
|
* owning machine's `MachineSchemaDecodeError` channel.
|
|
3501
3638
|
*
|
|
3639
|
+
* **Example**
|
|
3640
|
+
*
|
|
3641
|
+
* ```ts
|
|
3642
|
+
* const InternalEvents = Machine.internalEvents(Loaded, Failed)
|
|
3643
|
+
* const machine = Machine.make({ internalEvents: InternalEvents, ... })
|
|
3644
|
+
*
|
|
3645
|
+
* // Inside a transition callback:
|
|
3646
|
+
* enqueue.raise(InternalEvents.Loaded({ value }))
|
|
3647
|
+
* ```
|
|
3648
|
+
*
|
|
3502
3649
|
* @category constructors
|
|
3503
|
-
* @since 0.
|
|
3650
|
+
* @since 0.10.0
|
|
3504
3651
|
*/
|
|
3505
|
-
export declare const internalEvents:
|
|
3652
|
+
export declare const internalEvents: {
|
|
3653
|
+
<const Schemas extends ReadonlyArray<Machine.TaggedSchema>>(...schemas: Schemas & ValidateInternalEventProtocol<readonly [], NoInfer<Schemas>>): Machine.EventProtocol<"internal", readonly [...Schemas]>;
|
|
3654
|
+
<const Inputs extends ReadonlyArray<Machine.EventProtocolInput<"internal">>>(...inputs: Inputs & ValidateEventProtocolBuilder<"internal", Inputs>): Machine.EventProtocol<"internal", Machine.EventProtocolInputSchemasOf<"internal", Inputs>>;
|
|
3655
|
+
};
|
|
3656
|
+
/**
|
|
3657
|
+
* Defines the ephemeral notifications a machine may publish to external
|
|
3658
|
+
* observers. Emitted events are separate from actor input and are never sent
|
|
3659
|
+
* implicitly to a parent actor. Observe them through `MachineRef.emissions` or
|
|
3660
|
+
* the AtomMachine emission stream adapters.
|
|
3661
|
+
*
|
|
3662
|
+
* @category constructors
|
|
3663
|
+
* @since 0.10.0
|
|
3664
|
+
*/
|
|
3665
|
+
export declare const emittedEvents: {
|
|
3666
|
+
<const Schemas extends ReadonlyArray<Machine.TaggedSchema>>(...schemas: Schemas & ValidateEmittedEventProtocol<NoInfer<Schemas>>): Machine.EventProtocol<"emitted", readonly [...Schemas]>;
|
|
3667
|
+
<const Inputs extends ReadonlyArray<Machine.EventProtocolInput<"emitted">>>(...inputs: Inputs & ValidateEventProtocolBuilder<"emitted", Inputs>): Machine.EventProtocol<"emitted", Machine.EventProtocolInputSchemasOf<"emitted", Inputs>>;
|
|
3668
|
+
};
|
|
3506
3669
|
/**
|
|
3507
3670
|
* Encodes a decoded machine snapshot into a normalized data representation.
|
|
3508
3671
|
*
|
|
@@ -3536,7 +3699,7 @@ export declare const internalEvents: <const M extends Machine.Any>(machine: M) =
|
|
|
3536
3699
|
* const States = Machine.defineStates({ Idle })
|
|
3537
3700
|
* const machine = Machine.make({
|
|
3538
3701
|
* states: States.states,
|
|
3539
|
-
* events:
|
|
3702
|
+
* events: Machine.events(),
|
|
3540
3703
|
* initial: () => States.initial.Idle.from()
|
|
3541
3704
|
* }).handle({ Idle: {} })
|
|
3542
3705
|
*
|
|
@@ -3550,7 +3713,7 @@ export declare const internalEvents: <const M extends Machine.Any>(machine: M) =
|
|
|
3550
3713
|
* @category encoding
|
|
3551
3714
|
* @since 0.4.0
|
|
3552
3715
|
*/
|
|
3553
|
-
export declare const encodeSnapshot: <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>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents>, snapshot: Machine.Snapshot<States>) => Effect.Effect<Machine.EncodedSnapshot, MachineSchemaEncodeError, Machine.SnapshotEncodingServices<States>>;
|
|
3716
|
+
export declare const encodeSnapshot: <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>, snapshot: Machine.Snapshot<States>) => Effect.Effect<Machine.EncodedSnapshot, MachineSchemaEncodeError, Machine.SnapshotEncodingServices<States>>;
|
|
3554
3717
|
/**
|
|
3555
3718
|
* Decodes a normalized data representation into a validated machine snapshot.
|
|
3556
3719
|
*
|
|
@@ -3580,7 +3743,7 @@ export declare const encodeSnapshot: <const States extends Machine.StateSchemas,
|
|
|
3580
3743
|
* const States = Machine.defineStates({ Idle })
|
|
3581
3744
|
* const machine = Machine.make({
|
|
3582
3745
|
* states: States.states,
|
|
3583
|
-
* events:
|
|
3746
|
+
* events: Machine.events(),
|
|
3584
3747
|
* initial: () => States.initial.Idle.from()
|
|
3585
3748
|
* }).handle({ Idle: {} })
|
|
3586
3749
|
*
|
|
@@ -3595,8 +3758,8 @@ export declare const encodeSnapshot: <const States extends Machine.StateSchemas,
|
|
|
3595
3758
|
* @category decoding
|
|
3596
3759
|
* @since 0.4.0
|
|
3597
3760
|
*/
|
|
3598
|
-
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>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents>, encoded: unknown) => Effect.Effect<Machine.Snapshot<States>, MachineSchemaDecodeError, Machine.SnapshotDecodingServices<States>>;
|
|
3599
|
-
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>> = {
|
|
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>>;
|
|
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>> = {
|
|
3600
3763
|
readonly id: InvokeLifecycleId;
|
|
3601
3764
|
readonly effect: Source;
|
|
3602
3765
|
readonly after?: never;
|
|
@@ -3605,10 +3768,60 @@ type DynamicEffectInvokeSource<States extends Machine.StateSchemas, Events exten
|
|
|
3605
3768
|
readonly address?: never;
|
|
3606
3769
|
readonly onSnapshot?: never;
|
|
3607
3770
|
};
|
|
3608
|
-
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
|
|
3609
|
-
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
|
|
3610
|
-
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>;
|
|
3611
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
|
+
}
|
|
3612
3825
|
/**
|
|
3613
3826
|
* Preserves inference for a state-owned invocation configuration.
|
|
3614
3827
|
*
|
|
@@ -3625,6 +3838,12 @@ type InvokeChannelIsNever<Value> = IsAny<Value> extends true ? false : [Value] e
|
|
|
3625
3838
|
* lifecycle `id` and a typed communication `address`. Child descriptors already
|
|
3626
3839
|
* own their identity, so `id` and `address` must not be repeated.
|
|
3627
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
|
+
*
|
|
3628
3847
|
* ```ts
|
|
3629
3848
|
* invoke: Machine.invoke({
|
|
3630
3849
|
* id: "load",
|
|
@@ -3641,7 +3860,7 @@ type InvokeChannelIsNever<Value> = IsAny<Value> extends true ? false : [Value] e
|
|
|
3641
3860
|
* @since 0.9.0
|
|
3642
3861
|
*/
|
|
3643
3862
|
export declare const invoke: {
|
|
3644
|
-
<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> & {
|
|
3645
3864
|
readonly onDone: DynamicEffectDoneHandler<States, Events, Emits, StateId, Source>;
|
|
3646
3865
|
readonly onFailure: DynamicEffectFailureHandler<States, Events, Emits, StateId, Source>;
|
|
3647
3866
|
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
@@ -3649,62 +3868,28 @@ export declare const invoke: {
|
|
|
3649
3868
|
] : InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
3650
3869
|
"onFailure must be omitted when the Effect error is never"
|
|
3651
3870
|
] : []): DynamicEffectInvokeResult<States, Events, Emits, StateId, Source>;
|
|
3652
|
-
<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> & {
|
|
3653
3872
|
readonly onDone: DynamicEffectDoneHandler<States, Events, Emits, StateId, Source>;
|
|
3654
3873
|
readonly onFailure?: never;
|
|
3655
3874
|
}, ..._validation: InvokeChannelIsNever<Effect.Success<ReturnType<Source>>> extends true ? [
|
|
3656
3875
|
"onDone must be omitted when the Effect output is never"
|
|
3657
3876
|
] : []): DynamicEffectInvokeResult<States, Events, Emits, StateId, Source>;
|
|
3658
|
-
<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> & {
|
|
3659
3878
|
readonly onDone?: never;
|
|
3660
3879
|
readonly onFailure: DynamicEffectFailureHandler<States, Events, Emits, StateId, Source>;
|
|
3661
3880
|
}, ..._validation: InvokeChannelIsNever<Effect.Error<ReturnType<Source>>> extends true ? [
|
|
3662
3881
|
"onFailure must be omitted when the Effect error is never"
|
|
3663
3882
|
] : []): DynamicEffectInvokeResult<States, Events, Emits, StateId, Source>;
|
|
3664
|
-
<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> & {
|
|
3665
3884
|
readonly onDone?: never;
|
|
3666
3885
|
readonly onFailure?: never;
|
|
3667
3886
|
}): DynamicEffectInvokeResult<States, Events, Emits, StateId, Source>;
|
|
3668
|
-
<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>;
|
|
3669
|
-
<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>;
|
|
3670
|
-
<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
|
|
3671
|
-
<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>;
|
|
3672
|
-
<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"]
|
|
3673
|
-
};
|
|
3674
|
-
type RetagFields<Target extends Machine.TaggedSchema> = Omit<Target["~type.make.in"], "_tag">;
|
|
3675
|
-
type RetagTargetCompatibility<Target extends Machine.TaggedSchema> = Target extends {
|
|
3676
|
-
readonly fields: Schema.Struct.Fields;
|
|
3677
|
-
} ? "_tag" extends keyof Target["~type.make.in"] ? {} extends Pick<Target["~type.make.in"], "_tag"> ? unknown : {
|
|
3678
|
-
readonly "~effect/Machine/RetagTargetError": "Target schema must supply its discriminator when make is called";
|
|
3679
|
-
} : unknown : {
|
|
3680
|
-
readonly "~effect/Machine/RetagTargetError": "Target schema must be one tagged struct or tagged class";
|
|
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"]>>>;
|
|
3681
3892
|
};
|
|
3682
|
-
type RequiredKeys<A> = {
|
|
3683
|
-
readonly [Key in keyof A]-?: {} extends Pick<A, Key> ? never : Key;
|
|
3684
|
-
}[keyof A];
|
|
3685
|
-
type CompatibleSourceKeys<Fields, Source> = {
|
|
3686
|
-
readonly [Key in Extract<keyof Fields, keyof Source>]: Source[Key] extends Fields[Key] ? Key : never;
|
|
3687
|
-
}[Extract<keyof Fields, keyof Source>];
|
|
3688
|
-
type RetagPatch<Target extends Machine.TaggedSchema, Source> = Partial<RetagFields<Target>> & Pick<RetagFields<Target>, Exclude<RequiredKeys<RetagFields<Target>>, CompatibleSourceKeys<RetagFields<Target>, Source>>>;
|
|
3689
|
-
type RetagArgs<Target extends Machine.TaggedSchema, Source> = [
|
|
3690
|
-
Exclude<RequiredKeys<RetagFields<Target>>, CompatibleSourceKeys<RetagFields<Target>, Source>>
|
|
3691
|
-
] extends [never] ? [patch?: RetagPatch<Target, Source>] : [patch: RetagPatch<Target, Source>];
|
|
3692
|
-
/**
|
|
3693
|
-
* Constructs another tagged case from compatible source fields.
|
|
3694
|
-
*
|
|
3695
|
-
* The target must be one tagged struct or tagged class whose discriminator is
|
|
3696
|
-
* supplied by its constructor. Union wrappers are rejected because their
|
|
3697
|
-
* `make` operation cannot select a member after the source discriminator has
|
|
3698
|
-
* been discarded. Missing or incompatible required target fields must be
|
|
3699
|
-
* supplied by the patch, and the target schema's normal `make` validation
|
|
3700
|
-
* remains authoritative at runtime.
|
|
3701
|
-
*
|
|
3702
|
-
* @category constructors
|
|
3703
|
-
* @since 0.4.0
|
|
3704
|
-
*/
|
|
3705
|
-
export declare const retag: <const Target extends Machine.TaggedSchema, const Source extends {
|
|
3706
|
-
readonly _tag: PropertyKey;
|
|
3707
|
-
}>(target: Target & RetagTargetCompatibility<Target>, source: Source, ...args: RetagArgs<Target, Source>) => Target["Type"];
|
|
3708
3893
|
/**
|
|
3709
3894
|
* Plans the initial state for a machine without executing actor commands.
|
|
3710
3895
|
*
|
|
@@ -3733,7 +3918,7 @@ export declare const retag: <const Target extends Machine.TaggedSchema, const So
|
|
|
3733
3918
|
* const States = Machine.defineStates({ Idle })
|
|
3734
3919
|
* const machine = Machine.make({
|
|
3735
3920
|
* states: States.states,
|
|
3736
|
-
* events:
|
|
3921
|
+
* events: Machine.events(),
|
|
3737
3922
|
* initial: () => States.initial.Idle.from()
|
|
3738
3923
|
* }).handle({ Idle: {} })
|
|
3739
3924
|
*
|
|
@@ -3745,7 +3930,7 @@ export declare const retag: <const Target extends Machine.TaggedSchema, const So
|
|
|
3745
3930
|
* @category constructors
|
|
3746
3931
|
* @since 0.4.0
|
|
3747
3932
|
*/
|
|
3748
|
-
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>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents> & EnsureExecutable<States, UnhandledStates, OutputStates>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<{
|
|
3933
|
+
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<{
|
|
3749
3934
|
readonly startingState: Machine.Snapshot<States>;
|
|
3750
3935
|
readonly initialEntryPaths: ReadonlyArray<Machine.StateIdentifier<States>>;
|
|
3751
3936
|
readonly state: Machine.Snapshot<States>;
|
|
@@ -3831,7 +4016,7 @@ export declare const configuration: <M extends Machine.Any>(machine: M, state: M
|
|
|
3831
4016
|
* @category getters
|
|
3832
4017
|
* @since 0.4.0
|
|
3833
4018
|
*/
|
|
3834
|
-
export declare const enabled: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, 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>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents>, state: Machine.Snapshot<States>) => ReadonlyArray<Machine.TagOf<Events[number]>>;
|
|
4019
|
+
export declare const enabled: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, 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>, state: Machine.Snapshot<States>) => ReadonlyArray<Machine.TagOf<Events[number]>>;
|
|
3835
4020
|
/**
|
|
3836
4021
|
* Plans the next state snapshot synchronously.
|
|
3837
4022
|
*
|
|
@@ -3861,7 +4046,7 @@ export declare const enabled: <const States extends Machine.StateSchemas, const
|
|
|
3861
4046
|
* const States = Machine.defineStates({ Off, On })
|
|
3862
4047
|
* const machine = Machine.make({
|
|
3863
4048
|
* states: States.states,
|
|
3864
|
-
* events:
|
|
4049
|
+
* events: Machine.events(Toggle),
|
|
3865
4050
|
* initial: () => States.initial.Off.from()
|
|
3866
4051
|
* }).handle({ Off: { on: { Toggle: () => States.initial.On.from() } }, On: {} })
|
|
3867
4052
|
*
|
|
@@ -3876,7 +4061,7 @@ export declare const enabled: <const States extends Machine.StateSchemas, const
|
|
|
3876
4061
|
* @category combinators
|
|
3877
4062
|
* @since 0.4.0
|
|
3878
4063
|
*/
|
|
3879
|
-
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>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents> & EnsureExecutable<States, UnhandledStates, OutputStates>, state: Machine.Snapshot<States>, event: Machine.EventInputOf<InputEvents>) => Effect.Effect<{
|
|
4064
|
+
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<{
|
|
3880
4065
|
readonly next: Machine.Snapshot<States>;
|
|
3881
4066
|
readonly commands: ReadonlyArray<Command>;
|
|
3882
4067
|
readonly emittedEvents: ReadonlyArray<Machine.EmitOf<Emits>>;
|
|
@@ -4031,6 +4216,29 @@ export declare const stopChild: {
|
|
|
4031
4216
|
* @since 0.4.0
|
|
4032
4217
|
*/
|
|
4033
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>>>>;
|
|
4034
4242
|
/**
|
|
4035
4243
|
* Starts a machine.
|
|
4036
4244
|
*
|
|
@@ -4063,7 +4271,7 @@ export declare const watch: <State, Event, Error = never, Output = never>(ref: M
|
|
|
4063
4271
|
* const States = Machine.defineStates({ Idle })
|
|
4064
4272
|
* const machine = Machine.make({
|
|
4065
4273
|
* states: States.states,
|
|
4066
|
-
* events:
|
|
4274
|
+
* events: Machine.events(),
|
|
4067
4275
|
* initial: () => States.initial.Idle.from()
|
|
4068
4276
|
* }).handle({ Idle: {} })
|
|
4069
4277
|
*
|
|
@@ -4078,7 +4286,7 @@ export declare const watch: <State, Event, Error = never, Output = never>(ref: M
|
|
|
4078
4286
|
* @category constructors
|
|
4079
4287
|
* @since 0.4.0
|
|
4080
4288
|
*/
|
|
4081
|
-
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>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents> & EnsureExecutable<States, UnhandledStates, OutputStates>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<MachineRef<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output
|
|
4289
|
+
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>>>;
|
|
4082
4290
|
/**
|
|
4083
4291
|
* Starts a fresh managed runtime from a decoded logical snapshot.
|
|
4084
4292
|
*
|
|
@@ -4113,7 +4321,7 @@ export declare const start: <const States extends Machine.StateSchemas, const Ev
|
|
|
4113
4321
|
* const States = Machine.defineStates({ Idle })
|
|
4114
4322
|
* const machine = Machine.make({
|
|
4115
4323
|
* states: States.states,
|
|
4116
|
-
* events:
|
|
4324
|
+
* events: Machine.events(),
|
|
4117
4325
|
* initial: () => States.initial.Idle.from()
|
|
4118
4326
|
* }).handle({ Idle: {} })
|
|
4119
4327
|
*
|
|
@@ -4130,5 +4338,5 @@ export declare const start: <const States extends Machine.StateSchemas, const Ev
|
|
|
4130
4338
|
* @category constructors
|
|
4131
4339
|
* @since 0.4.0
|
|
4132
4340
|
*/
|
|
4133
|
-
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>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents> & EnsureExecutable<States, UnhandledStates, OutputStates>, snapshot: Machine.Snapshot<States>) => Effect.Effect<MachineRef<Machine.Snapshot<States>, Machine.EventInputOf<InputEvents>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, Output
|
|
4341
|
+
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>>>;
|
|
4134
4342
|
//# sourceMappingURL=Machine.d.ts.map
|