@typeonce/effect-machine 0.6.1 → 0.8.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 +25 -3
- package/dist/Machine.d.ts +181 -144
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +3 -1
- package/dist/Machine.js.map +1 -1
- package/dist/internal/machine/atom.d.ts +13 -2
- package/dist/internal/machine/atom.d.ts.map +1 -1
- package/dist/internal/machine/atom.js +6 -3
- package/dist/internal/machine/atom.js.map +1 -1
- package/dist/internal/machine/configuration.d.ts.map +1 -1
- package/dist/internal/machine/configuration.js +103 -20
- package/dist/internal/machine/configuration.js.map +1 -1
- package/dist/internal/machine/executionPlan.d.ts.map +1 -1
- package/dist/internal/machine/executionPlan.js +6 -0
- package/dist/internal/machine/executionPlan.js.map +1 -1
- package/dist/internal/machine/invocation.js +1 -1
- package/dist/internal/machine/invocation.js.map +1 -1
- package/dist/internal/machine/machine.d.ts.map +1 -1
- package/dist/internal/machine/machine.js +23 -17
- package/dist/internal/machine/machine.js.map +1 -1
- package/dist/internal/machine/planner.d.ts +10 -0
- package/dist/internal/machine/planner.d.ts.map +1 -1
- package/dist/internal/machine/planner.js +45 -35
- package/dist/internal/machine/planner.js.map +1 -1
- package/dist/internal/machine/serialization.d.ts.map +1 -1
- package/dist/internal/machine/serialization.js +53 -21
- package/dist/internal/machine/serialization.js.map +1 -1
- package/dist/internal/machine/stateDefinition.d.ts +4 -4
- package/dist/internal/machine/stateDefinition.d.ts.map +1 -1
- package/dist/internal/machine/stateDefinition.js +18 -11
- package/dist/internal/machine/stateDefinition.js.map +1 -1
- package/dist/internal/machine/topology.d.ts +5 -5
- package/dist/internal/machine/topology.d.ts.map +1 -1
- package/dist/internal/machine/topology.js +16 -13
- package/dist/internal/machine/topology.js.map +1 -1
- package/dist/internal/testing/machine/verification.d.ts.map +1 -1
- package/dist/internal/testing/machine/verification.js +10 -3
- package/dist/internal/testing/machine/verification.js.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.d.ts +34 -2
- package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomMachine.js +23 -0
- package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
- package/docs/agent-guide.md +70 -28
- package/package.json +2 -2
- package/src/Machine.ts +420 -309
- package/src/internal/machine/atom.ts +61 -6
- package/src/internal/machine/configuration.ts +102 -23
- package/src/internal/machine/executionPlan.ts +6 -0
- package/src/internal/machine/invocation.ts +1 -1
- package/src/internal/machine/machine.ts +93 -62
- package/src/internal/machine/planner.ts +49 -38
- package/src/internal/machine/serialization.ts +56 -31
- package/src/internal/machine/stateDefinition.ts +22 -11
- package/src/internal/machine/topology.ts +21 -18
- package/src/internal/testing/machine/verification.ts +13 -3
- package/src/unstable/reactivity/AtomMachine.ts +56 -2
package/README.md
CHANGED
|
@@ -94,6 +94,27 @@ defaults, refinements, and tagged-class identity are therefore preserved, and
|
|
|
94
94
|
decode failures remain typed machine failures. Pass a value directly only when
|
|
95
95
|
it is already decoded, such as a value returned by `Machine.retag`.
|
|
96
96
|
|
|
97
|
+
Omit `schema` when a state represents control flow but owns no data:
|
|
98
|
+
|
|
99
|
+
```ts
|
|
100
|
+
const States = Machine.defineStates({
|
|
101
|
+
Form: {
|
|
102
|
+
initial: "Editing",
|
|
103
|
+
states: {
|
|
104
|
+
Editing: {},
|
|
105
|
+
Saving
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
States.initial.Form.from((form) => form.Editing.from())
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Schema-less states remain active, targetable, matchable, and visible through
|
|
114
|
+
`getSnapshot`, but have no value to read. Their builders expose only `.from`,
|
|
115
|
+
their handler `state` is `undefined`, and `get` / `getWithParents` accept only
|
|
116
|
+
schema-backed paths. Add a schema later if the state starts owning data.
|
|
117
|
+
|
|
97
118
|
Put data on the narrowest state where it is valid. If sibling phases share
|
|
98
119
|
data, put it on their compound parent.
|
|
99
120
|
|
|
@@ -204,9 +225,10 @@ Binding a shared runtime once is the canonical form for service-backed
|
|
|
204
225
|
applications. Service-free machines can use `AtomMachine.make(Counter)`.
|
|
205
226
|
|
|
206
227
|
The bridge exposes `ref`, `snapshot`, `state`, fail-aware `result`, writable
|
|
207
|
-
`send` and `stop` atoms, and `child(descriptor)`. Use `AtomMachine.select
|
|
208
|
-
`AtomMachine.matches` for typed,
|
|
209
|
-
using `@effect/atom-react` need
|
|
228
|
+
`send` and `stop` atoms, and `child(descriptor)`. Use `AtomMachine.select`,
|
|
229
|
+
`AtomMachine.selectSnapshot`, and `AtomMachine.matches` for typed,
|
|
230
|
+
equality-aware derivations. React applications using `@effect/atom-react` need
|
|
231
|
+
a `RegistryProvider`.
|
|
210
232
|
|
|
211
233
|
## Persistence
|
|
212
234
|
|