@typeonce/effect-machine 0.15.0 → 0.16.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 +31 -3
- package/dist/Machine.d.ts +258 -88
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +33 -33
- package/dist/Machine.js.map +1 -1
- package/dist/internal/machine/activities.d.ts +2 -0
- package/dist/internal/machine/activities.d.ts.map +1 -1
- package/dist/internal/machine/activities.js +4 -0
- package/dist/internal/machine/activities.js.map +1 -1
- package/dist/internal/machine/executionPlan.d.ts.map +1 -1
- package/dist/internal/machine/executionPlan.js +6 -1
- package/dist/internal/machine/executionPlan.js.map +1 -1
- package/dist/internal/machine/invocation.d.ts +1 -1
- package/dist/internal/machine/invocation.d.ts.map +1 -1
- package/dist/internal/machine/invocation.js +25 -3
- package/dist/internal/machine/invocation.js.map +1 -1
- package/dist/internal/machine/invocationEvent.d.ts +8 -0
- package/dist/internal/machine/invocationEvent.d.ts.map +1 -1
- package/dist/internal/machine/invocationEvent.js +8 -0
- package/dist/internal/machine/invocationEvent.js.map +1 -1
- package/dist/internal/machine/machine.d.ts.map +1 -1
- package/dist/internal/machine/machine.js +119 -48
- package/dist/internal/machine/machine.js.map +1 -1
- package/dist/internal/machine/planner.d.ts +7 -0
- package/dist/internal/machine/planner.d.ts.map +1 -1
- package/dist/internal/machine/planner.js +20 -11
- package/dist/internal/machine/planner.js.map +1 -1
- package/dist/internal/machine/runtime.d.ts +1 -0
- package/dist/internal/machine/runtime.d.ts.map +1 -1
- package/dist/internal/machine/runtime.js +25 -16
- package/dist/internal/machine/runtime.js.map +1 -1
- package/dist/internal/machine/topology.d.ts +11 -0
- package/dist/internal/machine/topology.d.ts.map +1 -1
- package/dist/internal/machine/topology.js +17 -6
- package/dist/internal/machine/topology.js.map +1 -1
- package/dist/internal/testing/machine/transitionCoverage.d.ts.map +1 -1
- package/dist/internal/testing/machine/transitionCoverage.js +6 -2
- package/dist/internal/testing/machine/transitionCoverage.js.map +1 -1
- package/dist/internal/testing/machine/verification.d.ts.map +1 -1
- package/dist/internal/testing/machine/verification.js +6 -0
- package/dist/internal/testing/machine/verification.js.map +1 -1
- package/dist/testing/MachineTest.d.ts +2 -1
- package/dist/testing/MachineTest.d.ts.map +1 -1
- package/dist/testing/MachineTest.js.map +1 -1
- package/docs/agent-guide.md +63 -37
- package/package.json +1 -1
- package/src/Machine.ts +592 -159
- package/src/internal/machine/activities.ts +7 -0
- package/src/internal/machine/executionPlan.ts +6 -1
- package/src/internal/machine/invocation.ts +39 -4
- package/src/internal/machine/invocationEvent.ts +16 -0
- package/src/internal/machine/machine.ts +160 -47
- package/src/internal/machine/planner.ts +17 -3
- package/src/internal/machine/runtime.ts +61 -25
- package/src/internal/machine/topology.ts +31 -2
- package/src/internal/testing/machine/transitionCoverage.ts +6 -2
- package/src/internal/testing/machine/verification.ts +11 -0
- package/src/testing/MachineTest.ts +2 -0
package/dist/Machine.d.ts
CHANGED
|
@@ -41,7 +41,6 @@ declare const MachineTypeId: unique symbol;
|
|
|
41
41
|
declare const EventConstructionTypeId: unique symbol;
|
|
42
42
|
declare const EmittedEventConstructionTypeId: unique symbol;
|
|
43
43
|
declare const EventProtocolTypeId: unique symbol;
|
|
44
|
-
declare const TransitionCaseTypeId: unique symbol;
|
|
45
44
|
declare const ChildMachineLogicTypeId: typeof internal.ChildMachineLogicTypeId;
|
|
46
45
|
/**
|
|
47
46
|
* Type identifier used for the synthetic event passed to startup lifecycle
|
|
@@ -1020,9 +1019,9 @@ export declare namespace Inspection {
|
|
|
1020
1019
|
readonly sessionId: string;
|
|
1021
1020
|
readonly owner: Subject;
|
|
1022
1021
|
readonly ownerPath: string;
|
|
1023
|
-
readonly kind: "Effect" | "Timer";
|
|
1022
|
+
readonly kind: "Effect" | "Stream" | "Timer";
|
|
1024
1023
|
}
|
|
1025
|
-
/** Announces an Effect or timer invocation starting. */
|
|
1024
|
+
/** Announces an Effect, Stream, or timer invocation starting. */
|
|
1026
1025
|
interface ActivityStarted extends Base {
|
|
1027
1026
|
readonly _tag: "ActivityStarted";
|
|
1028
1027
|
readonly activity: Activity;
|
|
@@ -2014,7 +2013,7 @@ export declare namespace Machine {
|
|
|
2014
2013
|
} | {
|
|
2015
2014
|
readonly type: "invoke";
|
|
2016
2015
|
readonly id: string;
|
|
2017
|
-
readonly outcome: "done" | "failure" | "snapshot";
|
|
2016
|
+
readonly outcome: "element" | "done" | "failure" | "snapshot";
|
|
2018
2017
|
};
|
|
2019
2018
|
/** Static topology selected by a transition branch. */
|
|
2020
2019
|
interface TransitionTargetSelection<Path extends string | undefined = string | undefined, Kind extends Topology.TargetSelectionKind = Topology.TargetSelectionKind, Scope extends Topology.TargetSelectionScope | undefined = Topology.TargetSelectionScope | undefined> {
|
|
@@ -2028,14 +2027,11 @@ export declare namespace Machine {
|
|
|
2028
2027
|
readonly target: Path | undefined;
|
|
2029
2028
|
readonly selection: TransitionTargetSelection<Path | undefined>;
|
|
2030
2029
|
} | {
|
|
2031
|
-
readonly type: "
|
|
2030
|
+
readonly type: "branch";
|
|
2031
|
+
readonly key: string;
|
|
2032
2032
|
readonly title: string;
|
|
2033
2033
|
readonly target: Path | undefined;
|
|
2034
2034
|
readonly selection: TransitionTargetSelection<Path | undefined>;
|
|
2035
|
-
} | {
|
|
2036
|
-
readonly type: "otherwise";
|
|
2037
|
-
readonly target: Path | undefined;
|
|
2038
|
-
readonly selection: TransitionTargetSelection<Path | undefined>;
|
|
2039
2035
|
};
|
|
2040
2036
|
/** The statically selected root entry for machine startup. */
|
|
2041
2037
|
interface InitialDefinition<Path extends string = string> {
|
|
@@ -2047,8 +2043,8 @@ export declare namespace Machine {
|
|
|
2047
2043
|
*
|
|
2048
2044
|
* **Details**
|
|
2049
2045
|
*
|
|
2050
|
-
* Every branch exposes its selected target without executing its
|
|
2051
|
-
*
|
|
2046
|
+
* Every branch exposes its selected target without executing its resolver.
|
|
2047
|
+
* A compound local or branch target covers its descendants;
|
|
2052
2048
|
* `undefined` identifies an explicitly targetless branch.
|
|
2053
2049
|
*
|
|
2054
2050
|
* @category models
|
|
@@ -2084,6 +2080,8 @@ export declare namespace Machine {
|
|
|
2084
2080
|
readonly reenter: boolean;
|
|
2085
2081
|
/** Zero-based index of the selected static branch. */
|
|
2086
2082
|
readonly branchIndex: number;
|
|
2083
|
+
/** Stable key of a named branch, or `undefined` for a direct transition. */
|
|
2084
|
+
readonly branchKey: string | undefined;
|
|
2087
2085
|
/** Path returned by the handler, including a choice or history pseudo-state. */
|
|
2088
2086
|
readonly target: TargetPath | undefined;
|
|
2089
2087
|
/**
|
|
@@ -2944,6 +2942,16 @@ export declare namespace Machine {
|
|
|
2944
2942
|
readonly target: TargetBuilder<States, StateId>;
|
|
2945
2943
|
readonly output: Output;
|
|
2946
2944
|
}
|
|
2945
|
+
/** Context passed to a Stream invocation's element transition. */
|
|
2946
|
+
interface InvokeElementContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Element, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
|
|
2947
|
+
readonly id: string;
|
|
2948
|
+
readonly state: StateByIdentifier<States, StateId>;
|
|
2949
|
+
readonly containingState: ParentStateValue<States, StateId>;
|
|
2950
|
+
readonly ancestors: ParentStateValues<States, StateId>;
|
|
2951
|
+
readonly snapshot: Snapshot<States>;
|
|
2952
|
+
readonly target: TargetBuilder<States, StateId>;
|
|
2953
|
+
readonly element: Element;
|
|
2954
|
+
}
|
|
2947
2955
|
/** Context passed to an invocation typed-failure transition. */
|
|
2948
2956
|
interface InvokeFailureContext<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, Error, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> extends MachineReferences<InputEvents, ParentEvents> {
|
|
2949
2957
|
readonly id: string;
|
|
@@ -3136,13 +3144,9 @@ export declare namespace Machine {
|
|
|
3136
3144
|
* @category utility types
|
|
3137
3145
|
* @since 0.4.0
|
|
3138
3146
|
*/
|
|
3139
|
-
type EventTransitionReturn<Transition> =
|
|
3147
|
+
type EventTransitionReturn<Transition> = Transition extends {
|
|
3140
3148
|
readonly resolve?: infer Resolve;
|
|
3141
|
-
} ? NonNullable<Resolve> extends (...args: any) => infer Ret ? Ret : never : never
|
|
3142
|
-
readonly cases: infer Cases extends ReadonlyArray<unknown>;
|
|
3143
|
-
} ? EventTransitionReturn<Cases[number]> : never) | (Transition extends {
|
|
3144
|
-
readonly otherwise: infer Otherwise;
|
|
3145
|
-
} ? EventTransitionReturn<Otherwise> : never);
|
|
3149
|
+
} ? NonNullable<Resolve> extends (...args: any) => infer Ret ? Ret : never : never;
|
|
3146
3150
|
/**
|
|
3147
3151
|
* Extracts the return value from a state's event handlers.
|
|
3148
3152
|
*
|
|
@@ -3175,6 +3179,8 @@ export declare namespace Machine {
|
|
|
3175
3179
|
type InvokeLogic<Invoke> = Invoke extends {
|
|
3176
3180
|
readonly effect: infer Source;
|
|
3177
3181
|
} ? InvokeFactoryResult<Source> extends infer Fx extends Effect.Effect<any, any, any> ? Logic<void, never, Effect.Error<Fx>, Effect.Services<Fx>, Effect.Success<Fx>> : never : Invoke extends {
|
|
3182
|
+
readonly stream: infer Source;
|
|
3183
|
+
} ? InvokeFactoryResult<Source> extends infer SourceStream extends Stream.Stream<any, any, any> ? Logic<void, never, Stream.Error<SourceStream>, Stream.Services<SourceStream>, void> : never : Invoke extends {
|
|
3178
3184
|
readonly after: unknown;
|
|
3179
3185
|
} ? Logic<void, never, never, never, void> : Invoke extends {
|
|
3180
3186
|
readonly logic: infer Source;
|
|
@@ -3251,6 +3257,8 @@ export declare namespace Machine {
|
|
|
3251
3257
|
readonly onDone?: infer Handler;
|
|
3252
3258
|
} ? EventTransitionReturn<NonNullable<Handler>> : never) | (Invoke extends {
|
|
3253
3259
|
readonly onFailure?: infer Handler;
|
|
3260
|
+
} ? EventTransitionReturn<NonNullable<Handler>> : never) | (Invoke extends {
|
|
3261
|
+
readonly onElement?: infer Handler;
|
|
3254
3262
|
} ? EventTransitionReturn<NonNullable<Handler>> : never) | (Invoke extends {
|
|
3255
3263
|
readonly onSnapshot?: infer Handler;
|
|
3256
3264
|
} ? EventTransitionReturn<NonNullable<Handler>> : never) : never;
|
|
@@ -3302,7 +3310,6 @@ export declare namespace Machine {
|
|
|
3302
3310
|
* @since 0.4.0
|
|
3303
3311
|
*/
|
|
3304
3312
|
type ConfigServices<Config> = Effect.Services<EventHandlerReturn<Config>> | Effect.Services<AlwaysReturn<Config>> | Effect.Services<DoneReturn<Config>> | Effect.Services<StateActionReturn<Config, "entry">> | Effect.Services<StateActionReturn<Config, "exit">> | Effect.Services<HistoryDefaultReturn<Config>> | Effect.Services<ChoiceReturn<Config>> | InvokeRequirements<Config>;
|
|
3305
|
-
type TransitionWhenContext<Context> = Omit<Context, "target">;
|
|
3306
3313
|
/** Type evidence retained by {@link transition} without affecting runtime data. */
|
|
3307
3314
|
interface TransitionTyped<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean> {
|
|
3308
3315
|
readonly [TransitionTypeId]: {
|
|
@@ -3316,9 +3323,19 @@ export declare namespace Machine {
|
|
|
3316
3323
|
};
|
|
3317
3324
|
}
|
|
3318
3325
|
/** The only transition value accepted by machine handler APIs. */
|
|
3319
|
-
type TransitionConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean = false> = (TransitionTyped<States, Events, Emits, StateId, Context, Reenter> | TargetlessTransitionTyped) & {
|
|
3326
|
+
type TransitionConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean = false> = (TransitionTyped<States, Events, Emits, StateId, Context, Reenter> | TargetlessTransitionTyped | TargetlessTransitionInput<Events, Emits, Context>) & {
|
|
3320
3327
|
readonly reenter?: [Reenter] extends [true] ? boolean : never;
|
|
3321
3328
|
};
|
|
3329
|
+
/** Direct shorthand for a non-reentering targetless transition. */
|
|
3330
|
+
interface TargetlessTransitionResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context> {
|
|
3331
|
+
<ResolvedContext extends Omit<Context, "target">>(context: ResolvedContext, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>): undefined;
|
|
3332
|
+
}
|
|
3333
|
+
type TargetlessTransitionInput<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context> = {
|
|
3334
|
+
readonly target: TargetlessSelector;
|
|
3335
|
+
readonly resolve?: TargetlessTransitionResolver<Events, Emits, Context>;
|
|
3336
|
+
readonly branches?: never;
|
|
3337
|
+
readonly reenter?: never;
|
|
3338
|
+
};
|
|
3322
3339
|
type SelectionBuilder<Selection> = Selection extends TargetSelection<infer Builder, any, any> ? Builder : never;
|
|
3323
3340
|
type SelectionKind<Selection> = Selection extends TargetSelection<any, any, infer Kind> ? Kind : never;
|
|
3324
3341
|
type SelectionPath<Selection> = Selection extends TargetSelection<any, infer Path, any> ? Path : never;
|
|
@@ -3326,33 +3343,61 @@ export declare namespace Machine {
|
|
|
3326
3343
|
readonly from: (...args: any) => infer Result;
|
|
3327
3344
|
} ? Result : never);
|
|
3328
3345
|
type SelectedTargetResult<Selection> = SelectionBuilder<Selection> extends infer Builder ? TargetBuilderResult<Builder> : never;
|
|
3329
|
-
type TransitionResolveContext<Context, Selection
|
|
3330
|
-
readonly match: Match;
|
|
3331
|
-
}) & (SelectionKind<Selection> extends "none" ? {} : {
|
|
3346
|
+
type TransitionResolveContext<Context, Selection> = Omit<Context, "target"> & (SelectionKind<Selection> extends "none" ? {} : {
|
|
3332
3347
|
readonly target: SelectionBuilder<Selection>;
|
|
3333
3348
|
});
|
|
3334
|
-
type TransitionResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context, Selection
|
|
3349
|
+
type TransitionResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context, Selection> = (context: TransitionResolveContext<Context, Selection>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => SelectionKind<Selection> extends "none" ? undefined : SelectedTargetResult<Selection> | undefined;
|
|
3335
3350
|
type TransitionDirectInput<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Selection extends TargetSelection<any, any, any>> = {
|
|
3336
3351
|
readonly target: (to: TargetSelector<States, StateId>) => Selection;
|
|
3337
3352
|
readonly resolve?: TransitionResolver<Events, Emits, Context, Selection>;
|
|
3338
|
-
readonly
|
|
3339
|
-
readonly otherwise?: never;
|
|
3353
|
+
readonly branches?: never;
|
|
3340
3354
|
readonly reenter?: Reenter;
|
|
3341
3355
|
};
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
readonly
|
|
3345
|
-
readonly
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
readonly
|
|
3356
|
+
/** One named destination declared by a branching transition. */
|
|
3357
|
+
interface TransitionBranchInput<Selection extends TargetSelection<any, any, any> = TargetSelection<any, any, any>> {
|
|
3358
|
+
readonly target: Selection;
|
|
3359
|
+
readonly title?: string;
|
|
3360
|
+
}
|
|
3361
|
+
/** Opaque evidence that a branching resolver selected one declared branch. */
|
|
3362
|
+
interface SelectedBranch<out Key extends string, out Result> {
|
|
3363
|
+
readonly [Topology.SelectedBranchTypeId]: {
|
|
3364
|
+
readonly key: Types.Covariant<Key>;
|
|
3365
|
+
readonly result: Types.Covariant<Result>;
|
|
3366
|
+
};
|
|
3367
|
+
}
|
|
3368
|
+
type SelectedBranchCallable<Callable, Key extends string> = Callable extends {
|
|
3369
|
+
(...args: infer Arguments1): infer Result1;
|
|
3370
|
+
(...args: infer Arguments2): infer Result2;
|
|
3371
|
+
} ? {
|
|
3372
|
+
(...args: Arguments1): SelectedBranch<Key, Result1>;
|
|
3373
|
+
(...args: Arguments2): SelectedBranch<Key, Result2>;
|
|
3374
|
+
} : Callable extends (...args: infer Arguments) => infer Result ? (...args: Arguments) => SelectedBranch<Key, Result> : {};
|
|
3375
|
+
type SelectedBranchBuilderProperties<Builder, Key extends string> = {
|
|
3376
|
+
readonly [Property in keyof Builder]: Builder[Property] extends (...args: any) => any ? SelectedBranchCallable<Builder[Property], Key> : Builder[Property];
|
|
3377
|
+
};
|
|
3378
|
+
/** Target-specific builder that brands every construction with its branch key. */
|
|
3379
|
+
type SelectedBranchBuilder<Builder, Key extends string> = SelectedBranchCallable<Builder, Key> & SelectedBranchBuilderProperties<Builder, Key>;
|
|
3380
|
+
type BranchSelectors<Branches extends Readonly<Record<string, TransitionBranchInput>>> = {
|
|
3381
|
+
readonly [Key in Extract<keyof Branches, string>]: SelectedBranchBuilder<SelectionBuilder<Branches[Key]["target"]>, Key>;
|
|
3382
|
+
};
|
|
3383
|
+
type BranchSelectionResult<Branches extends Readonly<Record<string, TransitionBranchInput>>> = {
|
|
3384
|
+
readonly [Key in Extract<keyof Branches, string>]: SelectedBranch<Key, SelectedTargetResult<Branches[Key]["target"]>>;
|
|
3385
|
+
}[Extract<keyof Branches, string>];
|
|
3386
|
+
type TransitionBranchesResolveContext<Context, Branches extends Readonly<Record<string, TransitionBranchInput>>> = Omit<Context, "target"> & {
|
|
3387
|
+
readonly select: BranchSelectors<Branches>;
|
|
3350
3388
|
};
|
|
3351
|
-
type
|
|
3389
|
+
type TransitionBranchesResolver<Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, Context, Branches extends Readonly<Record<string, TransitionBranchInput>>> = (context: TransitionBranchesResolveContext<Context, Branches>, enqueue: Enqueue<EventOf<Events>, EmitOf<Emits>>) => BranchSelectionResult<Branches>;
|
|
3390
|
+
type TransitionBranchesInput<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context, Reenter extends boolean, Branches extends Readonly<Record<string, TransitionBranchInput>>> = {
|
|
3352
3391
|
readonly target?: never;
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3392
|
+
/**
|
|
3393
|
+
* Declares every possible destination under a stable semantic key.
|
|
3394
|
+
*
|
|
3395
|
+
* Branches are captured once in ECMAScript property order. Array-index
|
|
3396
|
+
* keys are rejected so reordering ordinary named properties affects only
|
|
3397
|
+
* presentation order; the key remains the testing and inspection identity.
|
|
3398
|
+
*/
|
|
3399
|
+
readonly branches: (to: TargetSelector<States, StateId>) => Branches;
|
|
3400
|
+
readonly resolve: TransitionBranchesResolver<Events, Emits, Context, Branches>;
|
|
3356
3401
|
readonly reenter?: Reenter;
|
|
3357
3402
|
};
|
|
3358
3403
|
type InvokeTransition<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateNodeIdentifier<States>, Context> = TransitionConfig<States, Events, Emits, StateId, Context, true>;
|
|
@@ -3375,32 +3420,50 @@ export declare namespace Machine {
|
|
|
3375
3420
|
type InvokeConfig<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = InvokeOwned<States, Events, Emits, StateId> & ({
|
|
3376
3421
|
readonly id: string;
|
|
3377
3422
|
readonly effect: (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<any, any, any>;
|
|
3423
|
+
readonly stream?: never;
|
|
3378
3424
|
readonly after?: never;
|
|
3379
3425
|
readonly logic?: never;
|
|
3380
3426
|
readonly child?: never;
|
|
3381
3427
|
readonly address?: never;
|
|
3382
3428
|
readonly onDone?: unknown;
|
|
3383
3429
|
readonly onFailure?: unknown;
|
|
3430
|
+
readonly onElement?: never;
|
|
3431
|
+
readonly onSnapshot?: never;
|
|
3432
|
+
} | {
|
|
3433
|
+
readonly id: string;
|
|
3434
|
+
readonly stream: (context: InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<any, any, any>;
|
|
3435
|
+
readonly effect?: never;
|
|
3436
|
+
readonly after?: never;
|
|
3437
|
+
readonly logic?: never;
|
|
3438
|
+
readonly child?: never;
|
|
3439
|
+
readonly address?: never;
|
|
3440
|
+
readonly onElement?: unknown;
|
|
3441
|
+
readonly onDone: unknown;
|
|
3442
|
+
readonly onFailure?: unknown;
|
|
3384
3443
|
readonly onSnapshot?: never;
|
|
3385
3444
|
} | {
|
|
3386
3445
|
readonly id: string;
|
|
3387
3446
|
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3388
3447
|
readonly effect?: never;
|
|
3448
|
+
readonly stream?: never;
|
|
3389
3449
|
readonly logic?: never;
|
|
3390
3450
|
readonly child?: never;
|
|
3391
3451
|
readonly address?: never;
|
|
3392
3452
|
readonly onDone: unknown;
|
|
3393
3453
|
readonly onFailure?: never;
|
|
3454
|
+
readonly onElement?: never;
|
|
3394
3455
|
readonly onSnapshot?: never;
|
|
3395
3456
|
} | {
|
|
3396
3457
|
readonly id: string;
|
|
3397
3458
|
readonly address: string;
|
|
3398
3459
|
readonly logic: InvokeSource<Logic<any, any, any, any, any, any>, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3399
3460
|
readonly effect?: never;
|
|
3461
|
+
readonly stream?: never;
|
|
3400
3462
|
readonly after?: never;
|
|
3401
3463
|
readonly child?: never;
|
|
3402
3464
|
readonly onDone?: unknown;
|
|
3403
3465
|
readonly onFailure?: unknown;
|
|
3466
|
+
readonly onElement?: never;
|
|
3404
3467
|
readonly onSnapshot?: unknown;
|
|
3405
3468
|
} | {
|
|
3406
3469
|
readonly child: ChildMachine.Any;
|
|
@@ -3408,10 +3471,12 @@ export declare namespace Machine {
|
|
|
3408
3471
|
readonly id?: never;
|
|
3409
3472
|
readonly address?: never;
|
|
3410
3473
|
readonly effect?: never;
|
|
3474
|
+
readonly stream?: never;
|
|
3411
3475
|
readonly after?: never;
|
|
3412
3476
|
readonly logic?: never;
|
|
3413
3477
|
readonly onDone?: unknown;
|
|
3414
3478
|
readonly onFailure?: unknown;
|
|
3479
|
+
readonly onElement?: never;
|
|
3415
3480
|
readonly onSnapshot?: unknown;
|
|
3416
3481
|
});
|
|
3417
3482
|
/** State-bound inline invocation configuration. */
|
|
@@ -3438,14 +3503,23 @@ export declare namespace Machine {
|
|
|
3438
3503
|
} : {
|
|
3439
3504
|
readonly onFailure?: never;
|
|
3440
3505
|
} : never;
|
|
3506
|
+
type InvokeElementRequirement<Value, Handler> = InvokeHandlerRequirement<Value, Handler> extends infer Requirement ? Requirement extends {
|
|
3507
|
+
readonly handler: infer Required;
|
|
3508
|
+
} ? {
|
|
3509
|
+
readonly onElement: Required;
|
|
3510
|
+
} : {
|
|
3511
|
+
readonly onElement?: never;
|
|
3512
|
+
} : never;
|
|
3441
3513
|
type TimerInvokeArgs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = {
|
|
3442
3514
|
readonly id: InvokeLifecycleId;
|
|
3443
3515
|
readonly after: InvokeSource<Duration.Input, InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>>;
|
|
3444
3516
|
readonly effect?: never;
|
|
3517
|
+
readonly stream?: never;
|
|
3445
3518
|
readonly logic?: never;
|
|
3446
3519
|
readonly child?: never;
|
|
3447
3520
|
readonly address?: never;
|
|
3448
3521
|
readonly onFailure?: never;
|
|
3522
|
+
readonly onElement?: never;
|
|
3449
3523
|
readonly onSnapshot?: never;
|
|
3450
3524
|
readonly onDone: InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, void, InputEvents, ParentEvents>>;
|
|
3451
3525
|
};
|
|
@@ -3454,8 +3528,10 @@ export declare namespace Machine {
|
|
|
3454
3528
|
readonly address: Address & ChildAddress.Compatibility<Address, ChildEvent>;
|
|
3455
3529
|
readonly logic: Source;
|
|
3456
3530
|
readonly effect?: never;
|
|
3531
|
+
readonly stream?: never;
|
|
3457
3532
|
readonly after?: never;
|
|
3458
3533
|
readonly child?: never;
|
|
3534
|
+
readonly onElement?: never;
|
|
3459
3535
|
readonly onSnapshot?: InvokeTransition<States, Events, Emits, StateId, InvokeSnapshotContext<States, Events, Emits, StateId, NoInfer<ChildState>, NoInfer<ChildError>, NoInfer<ChildOutput>, InputEvents, ParentEvents>>;
|
|
3460
3536
|
} & InvokeDoneRequirement<NoInfer<ChildOutput>, InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, NoInfer<ChildOutput>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<NoInfer<ChildError>, InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, NoInfer<ChildError>, InputEvents, ParentEvents>>>;
|
|
3461
3537
|
type ChildInvokeArgs<States extends StateSchemas, Events extends ReadonlyArray<TaggedSchema>, Emits extends ReadonlyArray<TaggedSchema>, StateId extends StateIdentifier<States>, ChildDefinition extends Machine.Any, Child extends ChildMachine<string, ChildDefinition>, InputEvents extends ReadonlyArray<TaggedSchema> = Events, ParentEvents extends ReadonlyArray<TaggedSchema> = readonly []> = {
|
|
@@ -3463,8 +3539,10 @@ export declare namespace Machine {
|
|
|
3463
3539
|
readonly id?: never;
|
|
3464
3540
|
readonly address?: never;
|
|
3465
3541
|
readonly effect?: never;
|
|
3542
|
+
readonly stream?: never;
|
|
3466
3543
|
readonly after?: never;
|
|
3467
3544
|
readonly logic?: never;
|
|
3545
|
+
readonly onElement?: never;
|
|
3468
3546
|
readonly onSnapshot?: InvokeTransition<States, Events, Emits, StateId, InvokeSnapshotContext<States, Events, Emits, StateId, Snapshot<Machine.States<ChildDefinition>>, Error<ChildDefinition>, Output<ChildDefinition>, InputEvents, ParentEvents>>;
|
|
3469
3547
|
} & (Input<ChildDefinition> extends typeof Schema.Void ? {
|
|
3470
3548
|
readonly input?: never;
|
|
@@ -3489,6 +3567,12 @@ export declare namespace Machine {
|
|
|
3489
3567
|
readonly effect: infer Source;
|
|
3490
3568
|
} ? InvokeFactoryResult<Source> extends infer Fx extends Effect.Effect<any, any, any> ? InvokeDoneRequirement<Effect.Success<Fx>, InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<Fx>, InputEvents, ParentEvents>>> & InvokeFailureRequirement<Effect.Error<Fx>, InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<Fx>, InputEvents, ParentEvents>>> & {
|
|
3491
3569
|
readonly onSnapshot?: never;
|
|
3570
|
+
} : never : Raw extends {
|
|
3571
|
+
readonly stream: infer Source;
|
|
3572
|
+
} ? InvokeFactoryResult<Source> extends infer SourceStream extends Stream.Stream<any, any, any> ? InvokeElementRequirement<Stream.Success<SourceStream>, InvokeTransition<States, Events, Emits, StateId, InvokeElementContext<States, Events, Emits, StateId, Stream.Success<SourceStream>, InputEvents, ParentEvents>>> & {
|
|
3573
|
+
readonly onDone: InvokeTransition<States, Events, Emits, StateId, InvokeDoneContext<States, Events, Emits, StateId, void, InputEvents, ParentEvents>>;
|
|
3574
|
+
} & InvokeFailureRequirement<Stream.Error<SourceStream>, InvokeTransition<States, Events, Emits, StateId, InvokeFailureContext<States, Events, Emits, StateId, Stream.Error<SourceStream>, InputEvents, ParentEvents>>> & {
|
|
3575
|
+
readonly onSnapshot?: never;
|
|
3492
3576
|
} : never : Raw extends {
|
|
3493
3577
|
readonly after: unknown;
|
|
3494
3578
|
} ? {
|
|
@@ -3739,7 +3823,7 @@ export declare namespace Machine {
|
|
|
3739
3823
|
readonly [Key in UnknownKeys]: HandlerValidationError<"Handler config contains an event key that does not exist", StateId, Key>;
|
|
3740
3824
|
};
|
|
3741
3825
|
} : unknown;
|
|
3742
|
-
type TransitionResultInitialTargetPath<Result> = IsAny<Result> extends true ? never : Result extends Effect.Effect<infer Success, any, any> ? TransitionResultInitialTargetPath<Success> : Result extends StateConstruction<infer Constructed> ? TransitionResultInitialTargetPath<Constructed> : Result extends {
|
|
3826
|
+
type TransitionResultInitialTargetPath<Result> = IsAny<Result> extends true ? never : Result extends Effect.Effect<infer Success, any, any> ? TransitionResultInitialTargetPath<Success> : Result extends SelectedBranch<any, infer Selected> ? TransitionResultInitialTargetPath<Selected> : Result extends StateConstruction<infer Constructed> ? TransitionResultInitialTargetPath<Constructed> : Result extends {
|
|
3743
3827
|
readonly [Topology.InitialTargetTypeId]: typeof Topology.InitialTargetTypeId;
|
|
3744
3828
|
readonly _tag: "InitialTarget";
|
|
3745
3829
|
} ? Result extends {
|
|
@@ -4243,69 +4327,73 @@ export declare const decodeSnapshot: <const States extends Machine.StateSchemas,
|
|
|
4243
4327
|
type EffectInvokeSource<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>> = {
|
|
4244
4328
|
readonly id: InvokeLifecycleId;
|
|
4245
4329
|
readonly effect: Source;
|
|
4330
|
+
readonly stream?: never;
|
|
4246
4331
|
readonly after?: never;
|
|
4247
4332
|
readonly logic?: never;
|
|
4248
4333
|
readonly child?: never;
|
|
4249
4334
|
readonly address?: never;
|
|
4335
|
+
readonly onElement?: never;
|
|
4250
4336
|
readonly onSnapshot?: never;
|
|
4251
4337
|
};
|
|
4252
4338
|
type EffectDoneHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
4253
4339
|
type EffectFailureHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
4254
4340
|
type EffectInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never>;
|
|
4341
|
+
type StreamInvokeSource<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = {
|
|
4342
|
+
readonly id: InvokeLifecycleId;
|
|
4343
|
+
readonly stream: Source & ((context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown);
|
|
4344
|
+
readonly effect?: never;
|
|
4345
|
+
readonly after?: never;
|
|
4346
|
+
readonly logic?: never;
|
|
4347
|
+
readonly child?: never;
|
|
4348
|
+
readonly address?: never;
|
|
4349
|
+
readonly onSnapshot?: never;
|
|
4350
|
+
};
|
|
4351
|
+
type StreamSourceResult<Source extends (...args: ReadonlyArray<any>) => unknown> = ReturnType<Source> extends infer Result extends Stream.Stream<any, any, any> ? Result : never;
|
|
4352
|
+
type StreamElementHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeElementContext<States, Events, Emits, StateId, Stream.Success<StreamSourceResult<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
4353
|
+
type StreamDoneHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeDoneContext<States, Events, Emits, StateId, void, InputEvents, ParentEvents>>;
|
|
4354
|
+
type StreamFailureHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeFailureContext<States, Events, Emits, StateId, Stream.Error<StreamSourceResult<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
4355
|
+
type StreamInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<any>) => unknown> = Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<void, Stream.Error<StreamSourceResult<Source>>, Stream.Services<StreamSourceResult<Source>>, never>;
|
|
4255
4356
|
type InvokeChannelIsNever<Value> = IsAny<Value> extends true ? false : [Value] extends [never] ? true : false;
|
|
4256
4357
|
type BoundEffectInvokeSource<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Effect.Effect<unknown, unknown, unknown>> = {
|
|
4257
4358
|
readonly id: InvokeLifecycleId;
|
|
4258
4359
|
readonly effect: Source;
|
|
4360
|
+
readonly stream?: never;
|
|
4259
4361
|
readonly after?: never;
|
|
4260
4362
|
readonly logic?: never;
|
|
4261
4363
|
readonly child?: never;
|
|
4262
4364
|
readonly address?: never;
|
|
4365
|
+
readonly onElement?: never;
|
|
4263
4366
|
readonly onSnapshot?: never;
|
|
4264
4367
|
};
|
|
4265
4368
|
type BoundEffectDoneHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeDoneContext<States, Events, Emits, StateId, Effect.Success<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
4266
4369
|
type BoundEffectFailureHandler<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeTransition<States, Events, Emits, StateId, Machine.InvokeFailureContext<States, Events, Emits, StateId, Effect.Error<ReturnType<NoInfer<Source>>>, InputEvents, ParentEvents>>;
|
|
4267
4370
|
type BoundEffectInvokeResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, InputEvents extends ReadonlyArray<Machine.TaggedSchema>, ParentEvents extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, Source extends (...args: ReadonlyArray<never>) => Effect.Effect<unknown, unknown, unknown>> = Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<Effect.Success<ReturnType<Source>>, Effect.Error<ReturnType<Source>>, Effect.Services<ReturnType<Source>>, never>;
|
|
4268
|
-
/**
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
/**
|
|
4277
|
-
* Captures one exact transition topology while preserving handler inference.
|
|
4278
|
-
*
|
|
4279
|
-
* @category constructors
|
|
4280
|
-
* @since 0.14.0
|
|
4281
|
-
*/
|
|
4282
|
-
type ConditionalTransitionResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateNodeIdentifier<States>, Context, Reenter extends boolean, Cases extends readonly [
|
|
4283
|
-
TransitionCaseTyped,
|
|
4284
|
-
...ReadonlyArray<TransitionCaseTyped>
|
|
4285
|
-
], OtherwiseSelection extends Machine.TargetSelection<any, any, any>> = Omit<Machine.TransitionConditionalInput<States, Events, Emits, StateId, Context, Reenter, Cases, OtherwiseSelection>, "cases"> & {
|
|
4286
|
-
readonly cases: Cases;
|
|
4287
|
-
} & Machine.TransitionTyped<States, Events, Emits, StateId, Context, Reenter>;
|
|
4371
|
+
/** Captures one exact named-branch topology while preserving handler inference. */
|
|
4372
|
+
type BranchingTransitionResult<States extends Machine.StateSchemas, Events extends ReadonlyArray<Machine.TaggedSchema>, Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateNodeIdentifier<States>, Context, Reenter extends boolean, Branches extends Readonly<Record<string, Machine.TransitionBranchInput>>> = Machine.TransitionBranchesInput<States, Events, Emits, StateId, Context, Reenter, Branches> & Machine.TransitionTyped<States, Events, Emits, StateId, Context, Reenter>;
|
|
4373
|
+
type TransitionBranchRecordError<Message extends string, Key extends PropertyKey = never> = {
|
|
4374
|
+
readonly "~effect/Machine/TransitionBranchRecordError": Message;
|
|
4375
|
+
readonly key: Key;
|
|
4376
|
+
};
|
|
4377
|
+
type InvalidStaticTransitionBranchKey<Branches> = Extract<keyof Branches, "" | number | symbol>;
|
|
4378
|
+
type ValidateTransitionBranchRecord<Branches> = [keyof Branches] extends [never] ? TransitionBranchRecordError<"Branch records must contain at least one branch"> : [InvalidStaticTransitionBranchKey<Branches>] extends [never] ? unknown : TransitionBranchRecordError<"Branch keys must be non-empty, non-index strings", InvalidStaticTransitionBranchKey<Branches>>;
|
|
4288
4379
|
/**
|
|
4289
|
-
* Contextually types direct and
|
|
4380
|
+
* Contextually types direct and branching transition definitions.
|
|
4290
4381
|
*
|
|
4291
4382
|
* @category constructors
|
|
4292
4383
|
* @since 0.14.0
|
|
4293
4384
|
*/
|
|
4294
4385
|
export interface TransitionConstructor {
|
|
4295
4386
|
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateNodeIdentifier<States>, Context, const Selection extends Machine.TargetSelection<any, any, any>, Reenter extends boolean = never>(config: Machine.TransitionDirectInput<States, Events, Emits, StateId, Context, Reenter, Selection>): Machine.TransitionDirectInput<States, Events, Emits, StateId, Context, Reenter, Selection> & (Machine.SelectionKind<Selection> extends "none" ? Machine.TargetlessTransitionTyped : Machine.TransitionTyped<States, Events, Emits, StateId, Context, Reenter>);
|
|
4296
|
-
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateNodeIdentifier<States>, Context, const
|
|
4297
|
-
TransitionCaseTyped,
|
|
4298
|
-
...ReadonlyArray<TransitionCaseTyped>
|
|
4299
|
-
], const OtherwiseSelection extends Machine.TargetSelection<any, any, any>, Reenter extends boolean = never>(config: Machine.TransitionConditionalInput<States, Events, Emits, StateId, Context, Reenter, Cases, OtherwiseSelection>): ConditionalTransitionResult<States, Events, Emits, StateId, Context, Reenter, Cases, OtherwiseSelection>;
|
|
4387
|
+
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateNodeIdentifier<States>, Context, const Branches extends Readonly<Record<string, Machine.TransitionBranchInput>>, Reenter extends boolean = never>(config: Machine.TransitionBranchesInput<States, Events, Emits, StateId, Context, Reenter, Branches> & ValidateTransitionBranchRecord<NoInfer<Branches>>): BranchingTransitionResult<States, Events, Emits, StateId, Context, Reenter, Branches>;
|
|
4300
4388
|
}
|
|
4301
4389
|
/**
|
|
4302
4390
|
* Defines a statically inspectable transition.
|
|
4303
4391
|
*
|
|
4304
4392
|
* It is required for every event, lifecycle, choice, and invocation transition
|
|
4305
4393
|
* so the destination selected by `target` can contextually type the
|
|
4306
|
-
* corresponding resolver.
|
|
4307
|
-
*
|
|
4308
|
-
*
|
|
4394
|
+
* corresponding resolver. Branching transitions declare every possible
|
|
4395
|
+
* destination up front, then select one through ordinary TypeScript control
|
|
4396
|
+
* flow in `resolve`.
|
|
4309
4397
|
*
|
|
4310
4398
|
* ```ts
|
|
4311
4399
|
* Machine.transition({
|
|
@@ -4314,18 +4402,13 @@ export interface TransitionConstructor {
|
|
|
4314
4402
|
* })
|
|
4315
4403
|
*
|
|
4316
4404
|
* Machine.transition({
|
|
4317
|
-
*
|
|
4318
|
-
*
|
|
4319
|
-
*
|
|
4320
|
-
*
|
|
4321
|
-
*
|
|
4322
|
-
*
|
|
4323
|
-
*
|
|
4324
|
-
* ],
|
|
4325
|
-
* otherwise: {
|
|
4326
|
-
* target: (to) => to.full.Loading(),
|
|
4327
|
-
* resolve: ({ target }) => target.from()
|
|
4328
|
-
* }
|
|
4405
|
+
* branches: (to) => ({
|
|
4406
|
+
* cached: { target: to.full.Ready() },
|
|
4407
|
+
* loading: { target: to.full.Loading() }
|
|
4408
|
+
* }),
|
|
4409
|
+
* resolve: ({ event, select }) => event.cached
|
|
4410
|
+
* ? select.cached.from({ data: event.cached })
|
|
4411
|
+
* : select.loading.from()
|
|
4329
4412
|
* })
|
|
4330
4413
|
* ```
|
|
4331
4414
|
*
|
|
@@ -4333,6 +4416,39 @@ export interface TransitionConstructor {
|
|
|
4333
4416
|
* @since 0.14.0
|
|
4334
4417
|
*/
|
|
4335
4418
|
export declare const transition: TransitionConstructor;
|
|
4419
|
+
/**
|
|
4420
|
+
* Sentinel used by direct targetless transition shorthands.
|
|
4421
|
+
*
|
|
4422
|
+
* This is the concise form of `target: (to) => to.none()`.
|
|
4423
|
+
*
|
|
4424
|
+
* ```ts
|
|
4425
|
+
* onElement: {
|
|
4426
|
+
* target: Machine.targetless,
|
|
4427
|
+
* resolve: ({ element }, enqueue) => {
|
|
4428
|
+
* enqueue.raise(new MeasurementReceived({ value: element }))
|
|
4429
|
+
* }
|
|
4430
|
+
* }
|
|
4431
|
+
*
|
|
4432
|
+
* onDone: { target: Machine.targetless }
|
|
4433
|
+
* ```
|
|
4434
|
+
*
|
|
4435
|
+
* @category constructors
|
|
4436
|
+
* @since 0.16.0
|
|
4437
|
+
*/
|
|
4438
|
+
export interface TargetlessSelector {
|
|
4439
|
+
readonly "~effect/Machine/TargetlessSelector": true;
|
|
4440
|
+
<const States extends Machine.StateSchemas, StateId extends Machine.StateNodeIdentifier<States>>(to: Machine.TargetSelector<States, StateId>): ReturnType<Machine.TargetSelector<States, StateId>["none"]>;
|
|
4441
|
+
}
|
|
4442
|
+
/**
|
|
4443
|
+
* Selects no transition target while keeping enqueue operations explicit.
|
|
4444
|
+
*
|
|
4445
|
+
* Use as the `target` of a direct handler object when the handler should keep
|
|
4446
|
+
* the current state configuration and only raise, emit, or send events.
|
|
4447
|
+
*
|
|
4448
|
+
* @category constructors
|
|
4449
|
+
* @since 0.16.0
|
|
4450
|
+
*/
|
|
4451
|
+
export declare const targetless: TargetlessSelector;
|
|
4336
4452
|
/**
|
|
4337
4453
|
* Machine-bound invocation constructor that preserves the owning machine's
|
|
4338
4454
|
* public input and parent protocols in every invocation callback.
|
|
@@ -4365,6 +4481,32 @@ export interface Invoker<States extends Machine.StateSchemas, Events extends Rea
|
|
|
4365
4481
|
readonly onDone?: never;
|
|
4366
4482
|
readonly onFailure?: never;
|
|
4367
4483
|
}): BoundEffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4484
|
+
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, unknown, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4485
|
+
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4486
|
+
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4487
|
+
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4488
|
+
}, ..._validation: InvokeChannelIsNever<Stream.Success<ReturnType<Source>>> extends true ? [
|
|
4489
|
+
"onElement must be omitted when the Stream element is never"
|
|
4490
|
+
] : InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4491
|
+
"onFailure must be omitted when the Stream error is never"
|
|
4492
|
+
] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4493
|
+
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, unknown, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4494
|
+
readonly onElement?: never;
|
|
4495
|
+
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4496
|
+
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4497
|
+
}, ..._validation: InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4498
|
+
"onFailure must be omitted when the Stream error is never"
|
|
4499
|
+
] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4500
|
+
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, never, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4501
|
+
readonly onElement?: never;
|
|
4502
|
+
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4503
|
+
readonly onFailure?: never;
|
|
4504
|
+
}): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4505
|
+
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, never, any>>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4506
|
+
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4507
|
+
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4508
|
+
readonly onFailure?: never;
|
|
4509
|
+
}): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4368
4510
|
<StateId extends Machine.StateIdentifier<States>, const Config extends object>(config: Config & Machine.TimerInvokeArgs<States, Events, Emits, StateId, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<void, never, never, never>;
|
|
4369
4511
|
<StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => unknown, Address extends ChildAddress<never>>(config: {
|
|
4370
4512
|
readonly logic: Source;
|
|
@@ -4387,15 +4529,18 @@ export interface Invoker<States extends Machine.StateSchemas, Events extends Rea
|
|
|
4387
4529
|
/**
|
|
4388
4530
|
* Preserves inference for a state-owned invocation configuration.
|
|
4389
4531
|
*
|
|
4390
|
-
* Use `effect` for one-shot work, `
|
|
4391
|
-
* reusable process logic, or `child` for a
|
|
4392
|
-
*
|
|
4393
|
-
*
|
|
4532
|
+
* Use `effect` for one-shot work, `stream` for repeated values, `after` for a
|
|
4533
|
+
* cancellable timer, `logic` for reusable process logic, or `child` for a
|
|
4534
|
+
* complete child machine. Stream elements are handled by `onElement` before
|
|
4535
|
+
* the next element is pulled. `onDone` is required whenever the source can
|
|
4536
|
+
* complete, while `onFailure` is required only when the source has a typed
|
|
4537
|
+
* failure channel.
|
|
4394
4538
|
*
|
|
4395
4539
|
* This constructor is an identity at runtime, but preserves lifecycle callback
|
|
4396
|
-
* inference through published declarations. Effect factories run
|
|
4397
|
-
* owning state is entered and infer the owner context,
|
|
4398
|
-
* service channels together without a return annotation.
|
|
4540
|
+
* inference through published declarations. Effect and Stream factories run
|
|
4541
|
+
* when their owning state is entered and infer the owner context, value,
|
|
4542
|
+
* output, error, and service channels together without a return annotation.
|
|
4543
|
+
* Durations may be
|
|
4399
4544
|
* supplied directly or derived from the owning state's entry context. Logic
|
|
4400
4545
|
* invocations require both a lifecycle `id` and a typed communication
|
|
4401
4546
|
* `address`. Child descriptors already own their identity, so `id` and
|
|
@@ -4453,6 +4598,32 @@ export declare const invoke: {
|
|
|
4453
4598
|
readonly onDone?: never;
|
|
4454
4599
|
readonly onFailure?: never;
|
|
4455
4600
|
}): EffectInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4601
|
+
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, unknown, any>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4602
|
+
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4603
|
+
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4604
|
+
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4605
|
+
}, ..._validation: InvokeChannelIsNever<Stream.Success<ReturnType<Source>>> extends true ? [
|
|
4606
|
+
"onElement must be omitted when the Stream element is never"
|
|
4607
|
+
] : InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4608
|
+
"onFailure must be omitted when the Stream error is never"
|
|
4609
|
+
] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4610
|
+
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, unknown, any>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4611
|
+
readonly onElement?: never;
|
|
4612
|
+
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4613
|
+
readonly onFailure: StreamFailureHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4614
|
+
}, ..._validation: InvokeChannelIsNever<Stream.Error<ReturnType<Source>>> extends true ? [
|
|
4615
|
+
"onFailure must be omitted when the Stream error is never"
|
|
4616
|
+
] : []): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4617
|
+
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<never, never, any>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4618
|
+
readonly onElement?: never;
|
|
4619
|
+
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4620
|
+
readonly onFailure?: never;
|
|
4621
|
+
}): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4622
|
+
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Source extends (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Stream.Stream<unknown, never, any>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: StreamInvokeSource<States, Events, Emits, InputEvents, ParentEvents, StateId, Source> & {
|
|
4623
|
+
readonly onElement: StreamElementHandler<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4624
|
+
readonly onDone: StreamDoneHandler<States, Events, Emits, InputEvents, ParentEvents, StateId>;
|
|
4625
|
+
readonly onFailure?: never;
|
|
4626
|
+
}): StreamInvokeResult<States, Events, Emits, InputEvents, ParentEvents, StateId, Source>;
|
|
4456
4627
|
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & Machine.TimerInvokeArgs<States, Events, Emits, StateId, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<void, never, never, never>;
|
|
4457
4628
|
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address extends ChildAddress<never>, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Machine.LogicInvokeArgs<States, Events, Emits, StateId, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address, (context: Machine.InvokeContext<States, Events, Emits, StateId, InputEvents, ParentEvents>) => Logic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError>, InputEvents, ParentEvents>): Machine.InvokeConfig<States, Events, Emits, StateId, InputEvents, ParentEvents> & Machine.InvokeTyped<ChildOutput, ChildError, ChildRequirements, ChildInitialError>;
|
|
4458
4629
|
<const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema>, StateId extends Machine.StateIdentifier<States>, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address extends ChildAddress<never>, const Config extends object, const InputEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const ParentEvents extends ReadonlyArray<Machine.TaggedSchema> = readonly []>(config: Config & Machine.LogicInvokeArgs<States, Events, Emits, StateId, ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError, Address, Logic<ChildState, ChildEvent, ChildError, ChildRequirements, ChildOutput, ChildInitialError>, InputEvents, ParentEvents>): Config & Machine.InvokeOwned<States, Events, Emits, StateId> & Machine.InvokeTyped<ChildOutput, ChildError, ChildRequirements, ChildInitialError>;
|
|
@@ -4558,9 +4729,8 @@ export declare const initialDefinition: <M extends Machine.Any>(machine: M) => M
|
|
|
4558
4729
|
*
|
|
4559
4730
|
* Event handlers retain their handler-key order within each source state and
|
|
4560
4731
|
* are followed by eventless and completion handlers. This function does not
|
|
4561
|
-
* execute
|
|
4562
|
-
*
|
|
4563
|
-
* `target` declaration.
|
|
4732
|
+
* execute resolvers. Every direct, named, and targetless branch exposes the
|
|
4733
|
+
* destination selected by its required static `target` declaration.
|
|
4564
4734
|
*
|
|
4565
4735
|
* @category getters
|
|
4566
4736
|
* @since 0.4.0
|