@typeonce/effect-machine 0.31.2 → 0.32.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 +145 -140
- package/dist/Machine.d.ts +428 -254
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +91 -111
- package/dist/Machine.js.map +1 -1
- package/dist/internal/machine/atom.d.ts +3 -4
- package/dist/internal/machine/atom.d.ts.map +1 -1
- package/dist/internal/machine/atom.js +0 -2
- package/dist/internal/machine/atom.js.map +1 -1
- package/dist/internal/machine/childRegistry.d.ts +52 -0
- package/dist/internal/machine/childRegistry.d.ts.map +1 -0
- package/dist/internal/machine/childRegistry.js +74 -0
- package/dist/internal/machine/childRegistry.js.map +1 -0
- package/dist/internal/machine/cluster.d.ts +2 -3
- package/dist/internal/machine/cluster.d.ts.map +1 -1
- package/dist/internal/machine/cluster.js.map +1 -1
- package/dist/internal/machine/configuration.d.ts.map +1 -1
- package/dist/internal/machine/configuration.js +14 -4
- package/dist/internal/machine/configuration.js.map +1 -1
- package/dist/internal/machine/executionPlan.d.ts +1 -0
- package/dist/internal/machine/executionPlan.d.ts.map +1 -1
- package/dist/internal/machine/executionPlan.js +97 -53
- 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 +4 -2
- package/dist/internal/machine/invocation.js.map +1 -1
- package/dist/internal/machine/invocationDefinition.d.ts +35 -0
- package/dist/internal/machine/invocationDefinition.d.ts.map +1 -0
- package/dist/internal/machine/invocationDefinition.js +21 -0
- package/dist/internal/machine/invocationDefinition.js.map +1 -0
- package/dist/internal/machine/invocationEvent.d.ts +0 -2
- package/dist/internal/machine/invocationEvent.d.ts.map +1 -1
- package/dist/internal/machine/invocationEvent.js +0 -8
- package/dist/internal/machine/invocationEvent.js.map +1 -1
- package/dist/internal/machine/machine.d.ts +21 -43
- package/dist/internal/machine/machine.d.ts.map +1 -1
- package/dist/internal/machine/machine.js +98 -374
- package/dist/internal/machine/machine.js.map +1 -1
- package/dist/internal/machine/planner.d.ts +13 -19
- package/dist/internal/machine/planner.d.ts.map +1 -1
- package/dist/internal/machine/planner.js +63 -35
- package/dist/internal/machine/planner.js.map +1 -1
- package/dist/internal/machine/process.d.ts +6 -8
- package/dist/internal/machine/process.d.ts.map +1 -1
- package/dist/internal/machine/process.js +1 -0
- package/dist/internal/machine/process.js.map +1 -1
- package/dist/internal/machine/protocol.d.ts +2 -2
- package/dist/internal/machine/protocol.d.ts.map +1 -1
- package/dist/internal/machine/protocol.js +4 -18
- package/dist/internal/machine/protocol.js.map +1 -1
- package/dist/internal/machine/readiness.d.ts +1 -1
- package/dist/internal/machine/readiness.d.ts.map +1 -1
- package/dist/internal/machine/requirements.d.ts +4 -0
- package/dist/internal/machine/requirements.d.ts.map +1 -0
- package/dist/internal/machine/requirements.js +2 -0
- package/dist/internal/machine/requirements.js.map +1 -0
- package/dist/internal/machine/runtime.d.ts +4 -58
- package/dist/internal/machine/runtime.d.ts.map +1 -1
- package/dist/internal/machine/runtime.js +1 -69
- package/dist/internal/machine/runtime.js.map +1 -1
- package/dist/internal/machine/serialization.d.ts.map +1 -1
- package/dist/internal/machine/serialization.js +16 -0
- package/dist/internal/machine/serialization.js.map +1 -1
- package/dist/internal/machine/stateDefinition.d.ts +3 -1
- package/dist/internal/machine/stateDefinition.d.ts.map +1 -1
- package/dist/internal/machine/stateDefinition.js +36 -2
- package/dist/internal/machine/stateDefinition.js.map +1 -1
- package/dist/internal/machine/targetBuilder.d.ts +16 -0
- package/dist/internal/machine/targetBuilder.d.ts.map +1 -0
- package/dist/internal/machine/targetBuilder.js +333 -0
- package/dist/internal/machine/targetBuilder.js.map +1 -0
- package/dist/internal/machine/topology.js +3 -3
- package/dist/internal/machine/topology.js.map +1 -1
- package/dist/internal/machine/transition.d.ts +16 -0
- package/dist/internal/machine/transition.d.ts.map +1 -0
- package/dist/internal/machine/transition.js +2 -0
- package/dist/internal/machine/transition.js.map +1 -0
- package/dist/internal/testing/machine/finiteModel.d.ts.map +1 -1
- package/dist/internal/testing/machine/finiteModel.js +10 -12
- package/dist/internal/testing/machine/finiteModel.js.map +1 -1
- package/dist/internal/testing/machine/format.d.ts +7 -0
- package/dist/internal/testing/machine/format.d.ts.map +1 -0
- package/dist/internal/testing/machine/format.js +104 -0
- package/dist/internal/testing/machine/format.js.map +1 -0
- package/dist/internal/testing/machine/probe.d.ts +1 -1
- package/dist/internal/testing/machine/probe.d.ts.map +1 -1
- package/dist/internal/testing/machine/probe.js +1 -1
- package/dist/internal/testing/machine/probe.js.map +1 -1
- package/dist/internal/testing/machine/referenceModel.d.ts.map +1 -1
- package/dist/internal/testing/machine/referenceModel.js +15 -19
- package/dist/internal/testing/machine/referenceModel.js.map +1 -1
- package/dist/internal/testing/machine/trace.d.ts +1 -1
- package/dist/internal/testing/machine/trace.d.ts.map +1 -1
- package/dist/internal/testing/machine/trace.js +3 -3
- package/dist/internal/testing/machine/trace.js.map +1 -1
- package/dist/internal/testing/machine/value.d.ts +8 -0
- package/dist/internal/testing/machine/value.d.ts.map +1 -0
- package/dist/internal/testing/machine/value.js +82 -0
- package/dist/internal/testing/machine/value.js.map +1 -0
- package/dist/internal/testing/machine/verification.d.ts +2 -13
- package/dist/internal/testing/machine/verification.d.ts.map +1 -1
- package/dist/internal/testing/machine/verification.js +21 -113
- package/dist/internal/testing/machine/verification.js.map +1 -1
- package/dist/testing/MachineTest.d.ts +89 -104
- package/dist/testing/MachineTest.d.ts.map +1 -1
- package/dist/testing/MachineTest.js +70 -84
- package/dist/testing/MachineTest.js.map +1 -1
- package/dist/unstable/cluster/ClusterMachine.d.ts +10 -13
- package/dist/unstable/cluster/ClusterMachine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterMachine.js +5 -8
- package/dist/unstable/cluster/ClusterMachine.js.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.d.ts +26 -61
- package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.js +17 -26
- package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
- package/docs/agent-guide.md +45 -45
- package/docs/effect-atom-react.md +35 -63
- package/docs/machine-review.md +7 -7
- package/docs/root-api.md +214 -0
- package/package.json +1 -1
- package/src/Machine.ts +778 -437
- package/src/internal/machine/atom.ts +3 -13
- package/src/internal/machine/childRegistry.ts +141 -0
- package/src/internal/machine/cluster.ts +5 -14
- package/src/internal/machine/configuration.ts +20 -4
- package/src/internal/machine/executionPlan.ts +109 -52
- package/src/internal/machine/invocation.ts +10 -6
- package/src/internal/machine/invocationDefinition.ts +52 -0
- package/src/internal/machine/invocationEvent.ts +0 -8
- package/src/internal/machine/machine.ts +154 -679
- package/src/internal/machine/planner.ts +74 -62
- package/src/internal/machine/process.ts +14 -21
- package/src/internal/machine/protocol.ts +9 -32
- package/src/internal/machine/readiness.ts +1 -0
- package/src/internal/machine/requirements.ts +11 -0
- package/src/internal/machine/runtime.ts +17 -186
- package/src/internal/machine/serialization.ts +22 -0
- package/src/internal/machine/stateDefinition.ts +36 -3
- package/src/internal/machine/targetBuilder.ts +525 -0
- package/src/internal/machine/topology.ts +3 -3
- package/src/internal/machine/transition.ts +26 -0
- package/src/internal/testing/machine/finiteModel.ts +22 -23
- package/src/internal/testing/machine/format.ts +120 -0
- package/src/internal/testing/machine/probe.ts +4 -4
- package/src/internal/testing/machine/referenceModel.ts +25 -17
- package/src/internal/testing/machine/trace.ts +4 -4
- package/src/internal/testing/machine/value.ts +77 -0
- package/src/internal/testing/machine/verification.ts +904 -1109
- package/src/testing/MachineTest.ts +103 -114
- package/src/unstable/cluster/ClusterMachine.ts +10 -20
- package/src/unstable/reactivity/AtomMachine.ts +42 -79
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type * as Duration from "effect/Duration"
|
|
2
|
+
import type * as Effect from "effect/Effect"
|
|
3
|
+
import type * as Stream from "effect/Stream"
|
|
4
|
+
import type { ChildMachine, Logic, Machine } from "../../Machine.js"
|
|
5
|
+
import type { EventTransition } from "./transition.js"
|
|
6
|
+
|
|
7
|
+
// Source callbacks cross the erased machine-definition boundary here. Their
|
|
8
|
+
// state, event, error and service relationships are checked by the public builder.
|
|
9
|
+
type Context = Machine.InvokeContext<any, any, any, any>
|
|
10
|
+
interface Outcomes {
|
|
11
|
+
readonly onDone?: EventTransition<any, any, any, any>
|
|
12
|
+
readonly onFailure?: EventTransition<any, any, any, any>
|
|
13
|
+
readonly onElement?: EventTransition<any, any, any, any>
|
|
14
|
+
readonly onSnapshot?: EventTransition<any, any, any, any>
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type InvocationDefinition =
|
|
18
|
+
& Outcomes
|
|
19
|
+
& (
|
|
20
|
+
| { readonly id: string; readonly effect: (context: Context) => Effect.Effect<unknown, unknown, unknown> }
|
|
21
|
+
| { readonly id: string; readonly stream: (context: Context) => Stream.Stream<unknown, unknown, unknown> }
|
|
22
|
+
| { readonly id: string; readonly after: Duration.Input | ((context: Context) => Duration.Input) }
|
|
23
|
+
| {
|
|
24
|
+
readonly id: string
|
|
25
|
+
readonly address: string
|
|
26
|
+
readonly logic: Logic<any, any, any, any, any> | ((context: Context) => Logic<any, any, any, any, any>)
|
|
27
|
+
}
|
|
28
|
+
| { readonly child: ChildMachine.Any; readonly input?: unknown }
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
/** Captures exactly one invocation source before any planner or runtime sees it. */
|
|
32
|
+
export const capture = (config: Record<PropertyKey, unknown>, path: string): InvocationDefinition => {
|
|
33
|
+
const sources = ["effect", "stream", "after", "logic", "child"].filter((key) => key in config)
|
|
34
|
+
if (sources.length !== 1) {
|
|
35
|
+
throw new Error(`Machine invocation for state "${path}" must define exactly one source`)
|
|
36
|
+
}
|
|
37
|
+
if (sources[0] !== "child" && typeof config.id !== "string") {
|
|
38
|
+
throw new Error(`Machine invocation for state "${path}" requires a string id`)
|
|
39
|
+
}
|
|
40
|
+
if ((sources[0] === "effect" || sources[0] === "stream") && typeof config[sources[0]] !== "function") {
|
|
41
|
+
throw new Error(`Machine invocation for state "${path}" requires a source callback`)
|
|
42
|
+
}
|
|
43
|
+
return Object.freeze(config) as unknown as InvocationDefinition
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Only captured state handlers cross this erased boundary. */
|
|
47
|
+
export const definitions = (invoke: unknown): ReadonlyArray<InvocationDefinition> =>
|
|
48
|
+
invoke === undefined
|
|
49
|
+
? []
|
|
50
|
+
: Array.isArray(invoke)
|
|
51
|
+
? invoke as ReadonlyArray<InvocationDefinition>
|
|
52
|
+
: [invoke as InvocationDefinition]
|
|
@@ -78,11 +78,3 @@ export const snapshot = (path: string, id: string, value: unknown): InvocationEv
|
|
|
78
78
|
/** @internal */
|
|
79
79
|
export const isInvocationEvent = (value: unknown): value is InvocationEvent =>
|
|
80
80
|
typeof value === "object" && value !== null && InvocationEventTypeId in value
|
|
81
|
-
|
|
82
|
-
/** @internal */
|
|
83
|
-
export const definitions = (invoke: unknown): ReadonlyArray<Record<PropertyKey, any>> => {
|
|
84
|
-
if (invoke === undefined) return []
|
|
85
|
-
return Array.isArray(invoke)
|
|
86
|
-
? invoke as ReadonlyArray<Record<PropertyKey, any>>
|
|
87
|
-
: [invoke as Record<PropertyKey, any>]
|
|
88
|
-
}
|