@typeonce/effect-machine 0.6.0 → 0.7.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.
Files changed (54) hide show
  1. package/README.md +4 -3
  2. package/dist/Machine.d.ts +24 -6
  3. package/dist/Machine.d.ts.map +1 -1
  4. package/dist/Machine.js.map +1 -1
  5. package/dist/internal/machine/atom.d.ts +5 -0
  6. package/dist/internal/machine/atom.d.ts.map +1 -1
  7. package/dist/internal/machine/atom.js +6 -3
  8. package/dist/internal/machine/atom.js.map +1 -1
  9. package/dist/internal/machine/machine.d.ts.map +1 -1
  10. package/dist/internal/machine/machine.js +1 -1
  11. package/dist/internal/machine/machine.js.map +1 -1
  12. package/dist/unstable/reactivity/AtomMachine.d.ts +26 -0
  13. package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
  14. package/dist/unstable/reactivity/AtomMachine.js +23 -0
  15. package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
  16. package/docs/agent-guide.md +14 -0
  17. package/package.json +5 -5
  18. package/src/Machine.ts +6909 -0
  19. package/src/index.ts +1 -0
  20. package/src/internal/machine/activities.ts +108 -0
  21. package/src/internal/machine/atom.ts +684 -0
  22. package/src/internal/machine/cluster.ts +394 -0
  23. package/src/internal/machine/command.ts +58 -0
  24. package/src/internal/machine/commandRuntime.ts +43 -0
  25. package/src/internal/machine/configuration.ts +1331 -0
  26. package/src/internal/machine/errors.ts +87 -0
  27. package/src/internal/machine/executionPlan.ts +996 -0
  28. package/src/internal/machine/invocation.ts +119 -0
  29. package/src/internal/machine/machine.ts +1750 -0
  30. package/src/internal/machine/planner.ts +1933 -0
  31. package/src/internal/machine/process.ts +906 -0
  32. package/src/internal/machine/protocol.ts +322 -0
  33. package/src/internal/machine/readiness.ts +10 -0
  34. package/src/internal/machine/runtime.ts +2512 -0
  35. package/src/internal/machine/serialization.ts +498 -0
  36. package/src/internal/machine/stateDefinition.ts +270 -0
  37. package/src/internal/machine/symbols.ts +2 -0
  38. package/src/internal/machine/topology.ts +479 -0
  39. package/src/internal/testing/machine/arbitrary.ts +102 -0
  40. package/src/internal/testing/machine/exploration.ts +331 -0
  41. package/src/internal/testing/machine/finiteModel.ts +1498 -0
  42. package/src/internal/testing/machine/invariant.ts +372 -0
  43. package/src/internal/testing/machine/probe.ts +79 -0
  44. package/src/internal/testing/machine/referenceModel.ts +1505 -0
  45. package/src/internal/testing/machine/runtime.ts +1710 -0
  46. package/src/internal/testing/machine/runtimeInvariant.ts +486 -0
  47. package/src/internal/testing/machine/trace.ts +150 -0
  48. package/src/internal/testing/machine/verification.ts +1890 -0
  49. package/src/testing/MachineTest.ts +2067 -0
  50. package/src/testing/index.ts +7 -0
  51. package/src/unstable/cluster/ClusterMachine.ts +390 -0
  52. package/src/unstable/cluster/index.ts +1 -0
  53. package/src/unstable/reactivity/AtomMachine.ts +696 -0
  54. package/src/unstable/reactivity/index.ts +1 -0
@@ -357,6 +357,15 @@ States.getSnapshot(snapshot, "Route.Ready")
357
357
  States.matches(snapshot, "Route.Ready.Saving")
358
358
  ```
359
359
 
360
+ Snapshots returned by `getSnapshot` can be queried again with `get`,
361
+ `getSnapshot`, or `matches`. Paths remain absolute and are restricted to the
362
+ extracted snapshot and its descendants:
363
+
364
+ ```ts
365
+ const ready = Option.getOrThrow(States.getSnapshot(snapshot, "Route.Ready"))
366
+ States.matches(ready, "Route.Ready.Saving")
367
+ ```
368
+
360
369
  All paths are checked against the definition. `context.parent` is the immediate
361
370
  typed parent (`undefined` at a root). Use `parents` when another ancestor is
362
371
  needed:
@@ -642,11 +651,16 @@ the `DefinedStates` object:
642
651
 
643
652
  ```ts
644
653
  AtomMachine.select(machineAtom, "Ready")
654
+ AtomMachine.selectSnapshot(machineAtom, "Ready")
645
655
  AtomMachine.matches(machineAtom, "Ready.Saving")
646
656
  AtomMachine.selectChild(childAtom, "Editing")
657
+ AtomMachine.selectSnapshotChild(childAtom, "Editing")
647
658
  AtomMachine.matchesChild(childAtom, "Editing")
648
659
  ```
649
660
 
661
+ `select` returns only the decoded state value. Use `selectSnapshot` when a
662
+ component needs the selected node's compound or parallel child topology.
663
+
650
664
  Like ordinary Effect Atom combinators, each selector call returns a derived
651
665
  atom. Define it at a stable composition boundary or memoize it when constructing
652
666
  it inside a component.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typeonce/effect-machine",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Schema-first state machines and statecharts for Effect",
5
5
  "author": "Sandro Maglione",
6
6
  "repository": {
@@ -15,6 +15,7 @@
15
15
  "license": "MIT",
16
16
  "sideEffects": false,
17
17
  "files": [
18
+ "src/**/*.ts",
18
19
  "dist",
19
20
  "docs",
20
21
  "README.md",
@@ -58,9 +59,7 @@
58
59
  "tstyche": "7.2.1",
59
60
  "typedoc": "0.28.20",
60
61
  "typescript": "6.0.3",
61
- "vitest": "4.1.10",
62
- "xstate-v5": "npm:xstate@5.32.5",
63
- "xstate-v6": "npm:xstate@6.0.0-alpha.36"
62
+ "vitest": "4.1.10"
64
63
  },
65
64
  "engines": {
66
65
  "node": ">=20"
@@ -70,6 +69,7 @@
70
69
  "test": "vitest run",
71
70
  "test:types": "tstyche",
72
71
  "check:architecture": "node --test scripts/check-architecture.test.mjs && node scripts/check-architecture.mjs",
72
+ "check:ci": "node --test scripts/ci-changes.test.mjs scripts/runtime-performance-regression.test.mjs",
73
73
  "typecheck": "tsc -p tsconfig.json --noEmit",
74
74
  "perf:types": "pnpm build && node scripts/type-performance.mjs",
75
75
  "perf:runtime": "pnpm build && node --expose-gc scripts/runtime-performance.mjs",
@@ -84,7 +84,7 @@
84
84
  "docs:site:serve": "node scripts/api-reference-site/serve.mjs",
85
85
  "test:consumer": "node scripts/test-consumer.mjs",
86
86
  "pack:check": "node scripts/pack-check.mjs",
87
- "check": "pnpm format:check && pnpm check:architecture && pnpm docs:api:check && pnpm docs:site:check && pnpm typecheck && pnpm build && pnpm test && pnpm test:types && pnpm test:consumer && pnpm pack:check",
87
+ "check": "pnpm format:check && pnpm check:architecture && pnpm check:ci && pnpm docs:api:check && pnpm docs:site:check && pnpm typecheck && pnpm build && pnpm test && pnpm test:types && pnpm test:consumer && pnpm pack:check",
88
88
  "changeset": "changeset",
89
89
  "version-packages": "changeset version",
90
90
  "release": "pnpm build && changeset publish"