@typeonce/effect-machine 0.11.0 → 0.13.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 +89 -13
- package/dist/Machine.d.ts +396 -127
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +21 -19
- package/dist/Machine.js.map +1 -1
- package/dist/internal/machine/atom.d.ts +1 -0
- package/dist/internal/machine/atom.d.ts.map +1 -1
- package/dist/internal/machine/atom.js +23 -0
- package/dist/internal/machine/atom.js.map +1 -1
- package/dist/internal/machine/cluster.js +2 -2
- package/dist/internal/machine/cluster.js.map +1 -1
- package/dist/internal/machine/commandRuntime.d.ts.map +1 -1
- package/dist/internal/machine/commandRuntime.js +2 -5
- package/dist/internal/machine/commandRuntime.js.map +1 -1
- package/dist/internal/machine/configuration.d.ts +12 -7
- package/dist/internal/machine/configuration.d.ts.map +1 -1
- package/dist/internal/machine/configuration.js +9 -5
- package/dist/internal/machine/configuration.js.map +1 -1
- package/dist/internal/machine/executionPlan.d.ts +4 -3
- package/dist/internal/machine/executionPlan.d.ts.map +1 -1
- package/dist/internal/machine/executionPlan.js +68 -43
- package/dist/internal/machine/executionPlan.js.map +1 -1
- package/dist/internal/machine/initialization.d.ts +5 -0
- package/dist/internal/machine/initialization.d.ts.map +1 -0
- package/dist/internal/machine/initialization.js +61 -0
- package/dist/internal/machine/initialization.js.map +1 -0
- package/dist/internal/machine/inspectionRuntime.d.ts +25 -0
- package/dist/internal/machine/inspectionRuntime.d.ts.map +1 -0
- package/dist/internal/machine/inspectionRuntime.js +79 -0
- package/dist/internal/machine/inspectionRuntime.js.map +1 -0
- package/dist/internal/machine/invocation.d.ts +2 -1
- package/dist/internal/machine/invocation.d.ts.map +1 -1
- package/dist/internal/machine/invocation.js +18 -11
- package/dist/internal/machine/invocation.js.map +1 -1
- package/dist/internal/machine/machine.d.ts +1 -2
- package/dist/internal/machine/machine.d.ts.map +1 -1
- package/dist/internal/machine/machine.js +21 -6
- package/dist/internal/machine/machine.js.map +1 -1
- package/dist/internal/machine/planner.d.ts +17 -2
- package/dist/internal/machine/planner.d.ts.map +1 -1
- package/dist/internal/machine/planner.js +137 -64
- package/dist/internal/machine/planner.js.map +1 -1
- package/dist/internal/machine/process.d.ts.map +1 -1
- package/dist/internal/machine/process.js +7 -5
- package/dist/internal/machine/process.js.map +1 -1
- package/dist/internal/machine/runtime.d.ts +29 -5
- package/dist/internal/machine/runtime.d.ts.map +1 -1
- package/dist/internal/machine/runtime.js +440 -64
- package/dist/internal/machine/runtime.js.map +1 -1
- package/dist/internal/machine/symbols.d.ts +2 -0
- package/dist/internal/machine/symbols.d.ts.map +1 -1
- package/dist/internal/machine/symbols.js +2 -0
- package/dist/internal/machine/symbols.js.map +1 -1
- package/dist/internal/machine/topology.d.ts +13 -0
- package/dist/internal/machine/topology.d.ts.map +1 -1
- package/dist/internal/machine/topology.js +9 -0
- package/dist/internal/machine/topology.js.map +1 -1
- package/dist/internal/testing/machine/finiteModel.d.ts.map +1 -1
- package/dist/internal/testing/machine/finiteModel.js +3 -3
- package/dist/internal/testing/machine/finiteModel.js.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.d.ts +9 -0
- package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.js +9 -0
- package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
- package/docs/agent-guide.md +130 -20
- package/package.json +5 -5
- package/src/Machine.ts +548 -217
- package/src/internal/machine/atom.ts +26 -0
- package/src/internal/machine/cluster.ts +2 -2
- package/src/internal/machine/commandRuntime.ts +2 -7
- package/src/internal/machine/configuration.ts +38 -13
- package/src/internal/machine/executionPlan.ts +85 -52
- package/src/internal/machine/initialization.ts +73 -0
- package/src/internal/machine/inspectionRuntime.ts +102 -0
- package/src/internal/machine/invocation.ts +38 -13
- package/src/internal/machine/machine.ts +31 -6
- package/src/internal/machine/planner.ts +166 -66
- package/src/internal/machine/process.ts +7 -5
- package/src/internal/machine/runtime.ts +663 -91
- package/src/internal/machine/symbols.ts +3 -0
- package/src/internal/machine/topology.ts +27 -0
- package/src/internal/testing/machine/finiteModel.ts +8 -7
- package/src/unstable/reactivity/AtomMachine.ts +12 -0
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/** @internal */
|
|
2
2
|
export const InitialEventTypeId: unique symbol = Symbol("effect/Machine/InitialEvent")
|
|
3
3
|
|
|
4
|
+
/** @internal */
|
|
5
|
+
export const SnapshotBuilderStateTypeId: unique symbol = Symbol("effect/Machine/SnapshotBuilderState")
|
|
6
|
+
|
|
4
7
|
/** @internal Returns process logic for a child descriptor and optional input. */
|
|
5
8
|
export const ChildMachineLogicTypeId: unique symbol = Symbol("effect/Machine/ChildMachineLogic")
|
|
@@ -19,6 +19,8 @@ export const StateConstructionTypeId: unique symbol = Symbol("effect/Machine/Sta
|
|
|
19
19
|
|
|
20
20
|
export const HistoryTargetTypeId: unique symbol = Symbol("effect/Machine/HistoryTarget")
|
|
21
21
|
|
|
22
|
+
export const InitialTargetTypeId: unique symbol = Symbol("effect/Machine/InitialTarget")
|
|
23
|
+
|
|
22
24
|
export const ChoiceTargetTypeId: unique symbol = Symbol("effect/Machine/ChoiceTarget")
|
|
23
25
|
|
|
24
26
|
export const NoTargetTypeId: unique symbol = Symbol("effect/Machine/NoTarget")
|
|
@@ -36,6 +38,17 @@ export interface HistoryTarget {
|
|
|
36
38
|
readonly parent: string
|
|
37
39
|
}
|
|
38
40
|
|
|
41
|
+
/** Internal instruction that enters the selected state's declared initial
|
|
42
|
+
* configuration. The planner supplies implicit child values through the
|
|
43
|
+
* owning states' `initialize` handlers. */
|
|
44
|
+
export interface InitialTarget {
|
|
45
|
+
readonly [InitialTargetTypeId]: typeof InitialTargetTypeId
|
|
46
|
+
readonly _tag: "InitialTarget"
|
|
47
|
+
readonly path: string
|
|
48
|
+
readonly value: unknown
|
|
49
|
+
readonly values?: Readonly<Record<string, unknown>>
|
|
50
|
+
}
|
|
51
|
+
|
|
39
52
|
/** Internal target produced by a choice target builder. */
|
|
40
53
|
export interface ChoiceTarget {
|
|
41
54
|
readonly [ChoiceTargetTypeId]: typeof ChoiceTargetTypeId
|
|
@@ -65,6 +78,20 @@ export const makeHistoryTarget = (path: string, parent: string): HistoryTarget =
|
|
|
65
78
|
|
|
66
79
|
export const isHistoryTarget = (u: unknown): u is HistoryTarget => hasProperty(u, HistoryTargetTypeId)
|
|
67
80
|
|
|
81
|
+
export const makeInitialTarget = (
|
|
82
|
+
path: string,
|
|
83
|
+
value: unknown,
|
|
84
|
+
values?: Readonly<Record<string, unknown>>
|
|
85
|
+
): InitialTarget => ({
|
|
86
|
+
[InitialTargetTypeId]: InitialTargetTypeId,
|
|
87
|
+
_tag: "InitialTarget",
|
|
88
|
+
path,
|
|
89
|
+
value,
|
|
90
|
+
...(values === undefined ? {} : { values })
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
export const isInitialTarget = (u: unknown): u is InitialTarget => hasProperty(u, InitialTargetTypeId)
|
|
94
|
+
|
|
68
95
|
export const makeChoiceTarget = (
|
|
69
96
|
path: string,
|
|
70
97
|
parent: string,
|
|
@@ -1449,15 +1449,16 @@ const makeHandlers = (
|
|
|
1449
1449
|
...(Object.keys(history).length === 0 ? {} : { history }),
|
|
1450
1450
|
...(node._tag === "Compound"
|
|
1451
1451
|
? {
|
|
1452
|
-
|
|
1452
|
+
initialize: ({ builder }: any) => builder(stateValue(byPath.get(`${path}.${node.initial}`)!))
|
|
1453
1453
|
}
|
|
1454
1454
|
: {
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1455
|
+
initialize: ({ builder }: any) =>
|
|
1456
|
+
node.states
|
|
1457
|
+
.filter((child) => child._tag !== "History" && child._tag !== "Choice")
|
|
1458
|
+
.reduce(
|
|
1459
|
+
(current: any, child) => current[child.key](stateValue(byPath.get(`${path}.${child.key}`)!)),
|
|
1460
|
+
builder
|
|
1461
|
+
)
|
|
1461
1462
|
}),
|
|
1462
1463
|
states: makeHandlers(node.states, path, byPath, transitions)
|
|
1463
1464
|
}
|
|
@@ -179,6 +179,18 @@ export const emissions: <State, Event, Error, Output, StartError, Emitted>(
|
|
|
179
179
|
self: MachineAtom<State, Event, Error, Output, StartError, Emitted>
|
|
180
180
|
) => Stream.Stream<Emitted, StartError, AtomRegistry.AtomRegistry> = internal.emissions
|
|
181
181
|
|
|
182
|
+
/**
|
|
183
|
+
* Observes the ordered local inspection records for the machine atom's root
|
|
184
|
+
* ownership tree. The stream starts before machine initialization, is hot and
|
|
185
|
+
* non-replayed, and completes with the root machine.
|
|
186
|
+
*
|
|
187
|
+
* @category getters
|
|
188
|
+
* @since 0.13.0
|
|
189
|
+
*/
|
|
190
|
+
export const inspection: <State, Event, Error, Output, StartError, Emitted>(
|
|
191
|
+
self: MachineAtom<State, Event, Error, Output, StartError, Emitted>
|
|
192
|
+
) => Stream.Stream<Machine.Inspection.Event, StartError, AtomRegistry.AtomRegistry> = internal.inspection
|
|
193
|
+
|
|
182
194
|
/**
|
|
183
195
|
* Observes emissions from each active instance selected by a child bridge.
|
|
184
196
|
*
|