@typeonce/ritmo 0.6.0 → 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.
Files changed (148) hide show
  1. package/README.md +2 -0
  2. package/dist/Brand.d.ts +9 -4
  3. package/dist/Brand.d.ts.map +1 -1
  4. package/dist/Brand.js +9 -4
  5. package/dist/Brand.js.map +1 -1
  6. package/dist/Clock.d.ts +186 -0
  7. package/dist/Clock.d.ts.map +1 -0
  8. package/dist/Clock.js +111 -0
  9. package/dist/Clock.js.map +1 -0
  10. package/dist/Command.d.ts +250 -41
  11. package/dist/Command.d.ts.map +1 -1
  12. package/dist/Command.js +59 -23
  13. package/dist/Command.js.map +1 -1
  14. package/dist/Condition.d.ts +12 -1
  15. package/dist/Condition.d.ts.map +1 -1
  16. package/dist/Condition.js.map +1 -1
  17. package/dist/Debug.d.ts +163 -15
  18. package/dist/Debug.d.ts.map +1 -1
  19. package/dist/Debug.js.map +1 -1
  20. package/dist/Decode.d.ts +1 -1
  21. package/dist/Decode.js +1 -1
  22. package/dist/Descriptor.d.ts +67 -24
  23. package/dist/Descriptor.d.ts.map +1 -1
  24. package/dist/Descriptor.js +32 -15
  25. package/dist/Descriptor.js.map +1 -1
  26. package/dist/Entity.d.ts +22 -5
  27. package/dist/Entity.d.ts.map +1 -1
  28. package/dist/Entity.js +2 -2
  29. package/dist/Entity.js.map +1 -1
  30. package/dist/EntityScope.d.ts +26 -1
  31. package/dist/EntityScope.d.ts.map +1 -1
  32. package/dist/EntityScope.js +14 -2
  33. package/dist/EntityScope.js.map +1 -1
  34. package/dist/HostClock.d.ts +49 -0
  35. package/dist/HostClock.d.ts.map +1 -0
  36. package/dist/HostClock.js +46 -0
  37. package/dist/HostClock.js.map +1 -0
  38. package/dist/Inspector.d.ts +7 -1
  39. package/dist/Inspector.d.ts.map +1 -1
  40. package/dist/Inspector.js.map +1 -1
  41. package/dist/Machine.d.ts +67 -36
  42. package/dist/Machine.d.ts.map +1 -1
  43. package/dist/Machine.js +10 -3
  44. package/dist/Machine.js.map +1 -1
  45. package/dist/Query.d.ts +74 -26
  46. package/dist/Query.d.ts.map +1 -1
  47. package/dist/Query.js +32 -28
  48. package/dist/Query.js.map +1 -1
  49. package/dist/Runtime.d.ts +39 -16
  50. package/dist/Runtime.d.ts.map +1 -1
  51. package/dist/Runtime.js +556 -87
  52. package/dist/Runtime.js.map +1 -1
  53. package/dist/Schedule.d.ts +217 -10
  54. package/dist/Schedule.d.ts.map +1 -1
  55. package/dist/Schedule.js +5 -0
  56. package/dist/Schedule.js.map +1 -1
  57. package/dist/Schema.d.ts +196 -44
  58. package/dist/Schema.d.ts.map +1 -1
  59. package/dist/Schema.js +29 -11
  60. package/dist/Schema.js.map +1 -1
  61. package/dist/Snapshot.d.ts +14 -0
  62. package/dist/Snapshot.d.ts.map +1 -1
  63. package/dist/Snapshot.js.map +1 -1
  64. package/dist/System.d.ts +212 -58
  65. package/dist/System.d.ts.map +1 -1
  66. package/dist/System.js +84 -6
  67. package/dist/System.js.map +1 -1
  68. package/dist/index.d.ts +8 -7
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +8 -7
  71. package/dist/index.js.map +1 -1
  72. package/dist/internal/cells.d.ts +3 -3
  73. package/dist/internal/cells.d.ts.map +1 -1
  74. package/dist/internal/cells.js +9 -11
  75. package/dist/internal/cells.js.map +1 -1
  76. package/dist/internal/debug.d.ts +13 -0
  77. package/dist/internal/debug.d.ts.map +1 -1
  78. package/dist/internal/debug.js +192 -7
  79. package/dist/internal/debug.js.map +1 -1
  80. package/dist/internal/equal.d.ts +8 -0
  81. package/dist/internal/equal.d.ts.map +1 -0
  82. package/dist/internal/equal.js +38 -0
  83. package/dist/internal/equal.js.map +1 -0
  84. package/dist/internal/fragments.d.ts.map +1 -1
  85. package/dist/internal/fragments.js +11 -1
  86. package/dist/internal/fragments.js.map +1 -1
  87. package/dist/internal/game.d.ts.map +1 -1
  88. package/dist/internal/game.js +41 -6
  89. package/dist/internal/game.js.map +1 -1
  90. package/dist/internal/order.d.ts +10 -0
  91. package/dist/internal/order.d.ts.map +1 -0
  92. package/dist/internal/order.js +122 -0
  93. package/dist/internal/order.js.map +1 -0
  94. package/dist/internal/queries.d.ts.map +1 -1
  95. package/dist/internal/queries.js +32 -10
  96. package/dist/internal/queries.js.map +1 -1
  97. package/dist/internal/requirements.d.ts +26 -0
  98. package/dist/internal/requirements.d.ts.map +1 -0
  99. package/dist/internal/requirements.js +46 -0
  100. package/dist/internal/requirements.js.map +1 -0
  101. package/package.json +1 -1
  102. package/src/Brand.ts +9 -4
  103. package/src/Clock.ts +311 -0
  104. package/src/Command.ts +407 -89
  105. package/src/Condition.ts +17 -1
  106. package/src/Debug.ts +172 -14
  107. package/src/Decode.ts +1 -1
  108. package/src/Descriptor.ts +92 -37
  109. package/src/Entity.ts +24 -5
  110. package/src/EntityScope.ts +27 -2
  111. package/src/HostClock.ts +64 -0
  112. package/src/Inspector.ts +7 -2
  113. package/src/Machine.ts +81 -37
  114. package/src/Query.ts +110 -38
  115. package/src/Runtime.ts +607 -111
  116. package/src/Schedule.ts +380 -13
  117. package/src/Schema.ts +249 -63
  118. package/src/Snapshot.ts +4 -0
  119. package/src/System.ts +248 -93
  120. package/src/index.ts +8 -7
  121. package/src/internal/cells.ts +10 -12
  122. package/src/internal/debug.ts +208 -12
  123. package/src/internal/equal.ts +31 -0
  124. package/src/internal/fragments.ts +12 -2
  125. package/src/internal/game.ts +61 -7
  126. package/src/internal/order.ts +144 -0
  127. package/src/internal/queries.ts +37 -13
  128. package/src/internal/requirements.ts +71 -0
  129. package/dist/Definition.d.ts +0 -99
  130. package/dist/Definition.d.ts.map +0 -1
  131. package/dist/Definition.js +0 -68
  132. package/dist/Definition.js.map +0 -1
  133. package/dist/Feature.d.ts +0 -106
  134. package/dist/Feature.d.ts.map +0 -1
  135. package/dist/Feature.js +0 -87
  136. package/dist/Feature.js.map +0 -1
  137. package/dist/Fx.d.ts +0 -128
  138. package/dist/Fx.d.ts.map +0 -1
  139. package/dist/Fx.js +0 -112
  140. package/dist/Fx.js.map +0 -1
  141. package/dist/internal/definition.d.ts +0 -17
  142. package/dist/internal/definition.d.ts.map +0 -1
  143. package/dist/internal/definition.js +0 -25
  144. package/dist/internal/definition.js.map +0 -1
  145. package/src/Definition.ts +0 -106
  146. package/src/Feature.ts +0 -241
  147. package/src/Fx.ts +0 -176
  148. package/src/internal/definition.ts +0 -56
package/dist/System.js CHANGED
@@ -47,6 +47,38 @@ export const writeResource = (descriptor) => ({
47
47
  mode: "write",
48
48
  descriptor
49
49
  });
50
+ /**
51
+ * Creates a resource read that also reports `changed()`: whether a committed
52
+ * write left a different value since this system's previous completed run.
53
+ *
54
+ * Use it for work worth doing only when a value moved: rewriting a HUD label,
55
+ * rebuilding a cache from settings. Use `readResource` when the system needs
56
+ * the value every run anyway.
57
+ *
58
+ * A write that leaves an equal value is not a change: primitives compare
59
+ * with `Object.is`, plain objects and arrays by their entries, other objects
60
+ * by reference. This differs from `Game.Query.changed`, where every write
61
+ * through a component write cell counts. The first run reports `true`; a
62
+ * failed run (rolled back) is not a change, and a failed reader sees the same
63
+ * change again next run. Its own writes are not reported to the writer.
64
+ *
65
+ * Conditions (`Game.Condition.check`) cannot declare it: they own no cursor.
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * const SyncHud = Game.System("SyncHud", {
70
+ * resources: { score: Game.System.changedResource(Score) },
71
+ * services: { hud: Game.System.service(Hud) }
72
+ * }, ({ resources, services }) => {
73
+ * if (!resources.score.changed()) return
74
+ * services.hud.score.textContent = `${resources.score.get()}`
75
+ * })
76
+ * ```
77
+ */
78
+ export const changedResource = (descriptor) => ({
79
+ mode: "changed",
80
+ descriptor
81
+ });
50
82
  /**
51
83
  * Creates an event-read declaration for a system spec.
52
84
  *
@@ -80,7 +112,7 @@ export const readEvent = (descriptor) => ({
80
112
  *
81
113
  * If the payload needs to name an entity for later work, emit a durable
82
114
  * `Game.Entity.handle(...)` (optionally with an intent component) and let the later
83
- * reader re-resolve it through `lookup.getHandle(...)`.
115
+ * reader re-resolve it through `queries.x.getHandle(...)` (through a declared query).
84
116
  *
85
117
  * @example
86
118
  * ```ts
@@ -97,6 +129,50 @@ export const writeEvent = (descriptor) => ({
97
129
  mode: "write",
98
130
  descriptor
99
131
  });
132
+ /**
133
+ * Requires that every system writing this event or resource runs earlier in
134
+ * the same `runtime.tick(...)` call than the reading system: the reader then
135
+ * sees this tick's data, never last tick's. The library never reorders
136
+ * anything; it only checks.
137
+ *
138
+ * `runtime.tick(...)` checks it at compile time over everything passed to that
139
+ * call, in order (gated groups count by position), and rejects a writer that
140
+ * runs after the reader and a call whose order is not statically known. A
141
+ * read with no writer in the call compiles (a reader reused in several
142
+ * ticks); the `event-never-written` lint reports data nobody writes.
143
+ * `tryTick` checks the same at runtime.
144
+ *
145
+ * Use it on reads whose correctness depends on running after their writers
146
+ * (damage applied the tick it is dealt). A plain read is right when last
147
+ * tick's data is acceptable.
148
+ *
149
+ * On a query (`queries: { enemies: Game.System.thisTick(Enemies) }`), the
150
+ * writers are systems whose declared commands can change what it matches:
151
+ * `spawns` covering every component it requires, or `inserts` / `removes` of
152
+ * any component it names (selection slots, optional ones included, `with`,
153
+ * `without`, filters). Each must run earlier with an `applyDeferred()` (or
154
+ * `applyStateTransitions(...)`) between it and the reader, since commands
155
+ * apply only there. `despawns` never count: a despawned entity stays visible
156
+ * to queries until the next `applyDeferred()`. Nested schedules are
157
+ * flattened, gated groups count by position, and a transition bundle counts
158
+ * at its `applyStateTransitions(...)` step (which applies queued commands
159
+ * first), as if every schedule in it runs, markers inside included.
160
+ *
161
+ * @example
162
+ * ```ts
163
+ * const ApplyDamage = Game.System("ApplyDamage", {
164
+ * events: { damage: Game.System.thisTick(Game.System.readEvent(Damage)) }
165
+ * }, ({ events }) => { ... })
166
+ *
167
+ * runtime.tick(Game.Schedule(DealDamage, ApplyDamage)) // compiles
168
+ * runtime.tick(Game.Schedule(ApplyDamage, DealDamage)) // "ApplyDamage needs Damage from this tick, but its writer DealDamage runs after it"
169
+ *
170
+ * const AimAtNewest = Game.System("AimAtNewest", { queries: { enemies: Game.System.thisTick(Enemies) } }, ...)
171
+ * runtime.tick(Game.Schedule(SpawnWave, Game.Schedule.applyDeferred(), AimAtNewest)) // compiles
172
+ * runtime.tick(Game.Schedule(SpawnWave, AimAtNewest)) // "AimAtNewest needs this tick's commands for queries.enemies, but SpawnWave queues them with no applyDeferred() in between"
173
+ * ```
174
+ */
175
+ export const thisTick = (read) => ({ ...read, thisTick: true });
100
176
  /**
101
177
  * Declares read access to the current committed value of a finite-state machine.
102
178
  *
@@ -129,7 +205,7 @@ export const transition = (stateMachine) => Machine.transition(stateMachine);
129
205
  * normal events: each run sees those published since its previous run.
130
206
  *
131
207
  * This is one of the clearest signs that the modeled value should be a machine
132
- * rather than a plain state descriptor.
208
+ * rather than a resource or a `Descriptor.EntityState` component.
133
209
  */
134
210
  export const readTransitionEvent = (stateMachine) => Machine.readTransitionEvent(stateMachine);
135
211
  /**
@@ -141,8 +217,9 @@ export const readTransitionEvent = (stateMachine) => Machine.readTransitionEvent
141
217
  * ticked less often than the one that removes (rendering after several fixed
142
218
  * updates) still sees every removal. A system skipped by its run conditions
143
219
  * keeps its position, like `added`/`changed`, and sees the removals when it
144
- * runs again. Each log is capped at `Runtime.streamCapacity` entries; drops
145
- * show up as `missed` reads in the debug trace. Systems usually pair this
220
+ * runs again. Each log is capped at `Runtime.streamCapacity` entries; a
221
+ * reader that missed dropped ones sees `lagged() === true` (and a `missed`
222
+ * read in the debug trace). Systems usually pair this
146
223
  * with host cleanup such as removing renderer-owned nodes. {@link readDespawned}
147
224
  * complements this for whole-entity teardown.
148
225
  *
@@ -196,8 +273,8 @@ export const readDespawned = () => ({
196
273
  * Defines a system from an explicit spec and a typed implementation.
197
274
  *
198
275
  * This is the public entrypoint for authoring systems. The implementation only
199
- * receives the capabilities declared in the spec, and the returned effect keeps
200
- * service dependencies tracked in the type system.
276
+ * receives the capabilities declared in the spec; return
277
+ * `Result.failure(error)` for an expected failure (see {@link SystemRun}).
201
278
  *
202
279
  * Use the string-name overload in normal code. The name is turned into an
203
280
  * internal ordering token automatically, so the system can participate in
@@ -265,6 +342,7 @@ export function System(name, spec, run) {
265
342
  pauseWhen: spec.pauseWhen ?? [],
266
343
  transitions: spec.transitions ?? {},
267
344
  local: spec.local,
345
+ commands: spec.commands,
268
346
  __schemaRoot: undefined
269
347
  };
270
348
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"System.js","sourceRoot":"","sources":["../src/System.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"System.js","sourceRoot":"","sources":["../src/System.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,8 @@
5
5
  * small number of stable namespaces instead of many deep internal paths.
6
6
  */
7
7
  /**
8
- * Branding helpers for validated values.
8
+ * Branding helpers for packages that author validated value types (like
9
+ * `@typeonce/ritmo-math`). Game code validates through descriptors instead.
9
10
  */
10
11
  export * as Brand from "./Brand.ts";
11
12
  /**
@@ -17,13 +18,13 @@ export * as Decode from "./Decode.ts";
17
18
  */
18
19
  export * as Debug from "./Debug.ts";
19
20
  /**
20
- * Descriptor authoring helpers.
21
+ * Simulation time: the fixed step, the clock resource, durations in whole steps.
21
22
  */
22
- export * as Descriptor from "./Descriptor.ts";
23
+ export * as Clock from "./Clock.ts";
23
24
  /**
24
- * Reusable validated authored definitions.
25
+ * Descriptor authoring helpers.
25
26
  */
26
- export * as Definition from "./Definition.ts";
27
+ export * as Descriptor from "./Descriptor.ts";
27
28
  /**
28
29
  * Entity identity and proof helpers.
29
30
  */
@@ -33,9 +34,9 @@ export * as Entity from "./Entity.ts";
33
34
  */
34
35
  export * as EntityScope from "./EntityScope.ts";
35
36
  /**
36
- * Minimal effect-style computation type.
37
+ * The host's wall clock as an injected contract (`standard`, `test()`).
37
38
  */
38
- export * as Fx from "./Fx.ts";
39
+ export * as HostClock from "./HostClock.ts";
39
40
  /**
40
41
  * Read-only typed world projections.
41
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH;;;GAGG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
package/dist/index.js CHANGED
@@ -5,7 +5,8 @@
5
5
  * small number of stable namespaces instead of many deep internal paths.
6
6
  */
7
7
  /**
8
- * Branding helpers for validated values.
8
+ * Branding helpers for packages that author validated value types (like
9
+ * `@typeonce/ritmo-math`). Game code validates through descriptors instead.
9
10
  */
10
11
  export * as Brand from "./Brand.js";
11
12
  /**
@@ -17,13 +18,13 @@ export * as Decode from "./Decode.js";
17
18
  */
18
19
  export * as Debug from "./Debug.js";
19
20
  /**
20
- * Descriptor authoring helpers.
21
+ * Simulation time: the fixed step, the clock resource, durations in whole steps.
21
22
  */
22
- export * as Descriptor from "./Descriptor.js";
23
+ export * as Clock from "./Clock.js";
23
24
  /**
24
- * Reusable validated authored definitions.
25
+ * Descriptor authoring helpers.
25
26
  */
26
- export * as Definition from "./Definition.js";
27
+ export * as Descriptor from "./Descriptor.js";
27
28
  /**
28
29
  * Entity identity and proof helpers.
29
30
  */
@@ -33,9 +34,9 @@ export * as Entity from "./Entity.js";
33
34
  */
34
35
  export * as EntityScope from "./EntityScope.js";
35
36
  /**
36
- * Minimal effect-style computation type.
37
+ * The host's wall clock as an injected contract (`standard`, `test()`).
37
38
  */
38
- export * as Fx from "./Fx.js";
39
+ export * as HostClock from "./HostClock.js";
39
40
  /**
40
41
  * Read-only typed world projections.
41
42
  */
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH;;;GAGG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
@@ -15,14 +15,14 @@ import type { EntityRecord, World } from "./world.ts";
15
15
  declare abstract class WriteCellBase<T> {
16
16
  abstract get(): T;
17
17
  abstract set(value: T): void;
18
- setResult<E>(result: Result.Result<T, E>): Result.Result<void, E>;
18
+ /** Writes a validated candidate only on success. Backs `setRaw` / `updateRaw`. */
19
+ writeResult<E>(result: Result.Result<T, E>): Result.Result<void, E>;
19
20
  update(f: (current: T) => T): void;
20
- updateResult<E>(f: (current: T) => Result.Result<T, E>): Result.Result<void, E>;
21
21
  }
22
22
  export declare const componentRead: (record: EntityRecord, ordinal: number) => {
23
23
  get(): unknown;
24
24
  };
25
- export declare const componentWrite: (record: EntityRecord, ordinal: number, world: World, constructor: ResultConstructor<unknown, unknown, unknown> | undefined, state: string | undefined) => WriteCellBase<unknown>;
25
+ export declare const componentWrite: (record: EntityRecord, ordinal: number, world: World, constructor: ResultConstructor<unknown, unknown, unknown> | undefined, entityState: string | undefined) => WriteCellBase<unknown>;
26
26
  export declare const componentOptional: (record: EntityRecord, ordinal: number) => {
27
27
  readonly present: boolean;
28
28
  get(): unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"cells.d.ts","sourceRoot":"","sources":["../../src/internal/cells.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGrD;;GAEG;AACH,uBAAe,aAAa,CAAC,CAAC;IAC5B,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;IACjB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IAE5B,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAMhE;IAED,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAEjC;IAED,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAE9E;CACF;AAyHD,eAAO,MAAM,aAAa,WAAY,YAAY,WAAW,MAAM,KAAG;IAAE,GAAG,IAAI,OAAO,CAAA;CAC9C,CAAA;AAExC,eAAO,MAAM,cAAc,WACjB,YAAY,WACX,MAAM,SACR,KAAK,eACC,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,SAC9D,MAAM,GAAG,SAAS,KACxB,aAAa,CAAC,OAAO,CAIvB,CAAA;AAED,eAAO,MAAM,iBAAiB,WAAY,YAAY,WAAW,MAAM,KAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,IAAI,OAAO,CAAA;CACzE,CAAA;AAE5C,eAAO,MAAM,SAAS,UAAW,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,MAAM,KAAG;IAAE,GAAG,IAAI,OAAO,CAAA;CACtD,CAAA;AAE/B;;;GAGG;AACH,eAAO,MAAM,UAAU,UACd,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OACtB,MAAM,SACJ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,eAC/B,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,KACpE,aAAa,CAAC,OAAO,CAGvB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,QAAQ,MAAM,CAAC,KAAG;IAAE,GAAG,IAAI,CAAC,CAAA;CAAqB,CAAA;AAE9E;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,aACpB,MAAM,OAAO,QAClB,MAAM,CAAC,KACZ;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,IAAI,CAAC,CAAA;CAKtC,CAAA"}
1
+ {"version":3,"file":"cells.d.ts","sourceRoot":"","sources":["../../src/internal/cells.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGrD;;GAEG;AACH,uBAAe,aAAa,CAAC,CAAC;IAC5B,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;IACjB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IAE5B,kFAAkF;IAClF,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAMlE;IAED,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAEjC;CAEF;AAyHD,eAAO,MAAM,aAAa,WAAY,YAAY,WAAW,MAAM,KAAG;IAAE,GAAG,IAAI,OAAO,CAAA;CAC9C,CAAA;AAExC,eAAO,MAAM,cAAc,WACjB,YAAY,WACX,MAAM,SACR,KAAK,eACC,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,eACxD,MAAM,GAAG,SAAS,KAC9B,aAAa,CAAC,OAAO,CAIvB,CAAA;AAED,eAAO,MAAM,iBAAiB,WAAY,YAAY,WAAW,MAAM,KAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,IAAI,OAAO,CAAA;CACzE,CAAA;AAE5C,eAAO,MAAM,SAAS,UAAW,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,MAAM,KAAG;IAAE,GAAG,IAAI,OAAO,CAAA;CACtD,CAAA;AAE/B;;;GAGG;AACH,eAAO,MAAM,UAAU,UACd,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OACtB,MAAM,SACJ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,eAC/B,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,KACpE,aAAa,CAAC,OAAO,CAGvB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,QAAQ,MAAM,CAAC,KAAG;IAAE,GAAG,IAAI,CAAC,CAAA;CAAqB,CAAA;AAE9E;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,aACpB,MAAM,OAAO,QAClB,MAAM,CAAC,KACZ;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,IAAI,CAAC,CAAA;CAKtC,CAAA"}
@@ -4,7 +4,8 @@ import { ABSENT } from "./world.js";
4
4
  * Validation behavior shared by every writable cell.
5
5
  */
6
6
  class WriteCellBase {
7
- setResult(result) {
7
+ /** Writes a validated candidate only on success. Backs `setRaw` / `updateRaw`. */
8
+ writeResult(result) {
8
9
  if (!result.ok) {
9
10
  return Result.failure(result.error);
10
11
  }
@@ -14,30 +15,27 @@ class WriteCellBase {
14
15
  update(f) {
15
16
  this.set(f(this.get()));
16
17
  }
17
- updateResult(f) {
18
- return this.setResult(f(this.get()));
19
- }
20
18
  }
21
19
  /**
22
20
  * Adds raw-validation helpers for values owned by constructed descriptors.
23
21
  */
24
22
  const withConstructor = (cell, constructor) => Object.assign(cell, {
25
23
  setRaw(raw) {
26
- return cell.setResult(constructor.result(raw));
24
+ return cell.writeResult(constructor.result(raw));
27
25
  },
28
26
  updateRaw(f) {
29
- return cell.setResult(constructor.result(f(cell.get())));
27
+ return cell.writeResult(constructor.result(f(cell.get())));
30
28
  }
31
29
  });
32
30
  /**
33
- * Adds `transition` to the write cell of a state component: a compare-and-set
31
+ * Adds `transition` to the write cell of an entity state component: a compare-and-set
34
32
  * that writes `to` only while the current state is still `from`.
35
33
  */
36
- const withTransition = (cell, state) => Object.assign(cell, {
34
+ const withTransition = (cell, component) => Object.assign(cell, {
37
35
  transition(from, to) {
38
36
  const actual = cell.get();
39
37
  if (actual !== from) {
40
- return Result.failure({ _tag: "StateMismatch", state, expected: from, actual });
38
+ return Result.failure({ _tag: "EntityStateMismatch", component, expected: from, actual });
41
39
  }
42
40
  cell.set(to);
43
41
  return Result.success(undefined);
@@ -115,10 +113,10 @@ class StoreWriteCell extends WriteCellBase {
115
113
  }
116
114
  }
117
115
  export const componentRead = (record, ordinal) => new ComponentReadCell(record, ordinal);
118
- export const componentWrite = (record, ordinal, world, constructor, state) => {
116
+ export const componentWrite = (record, ordinal, world, constructor, entityState) => {
119
117
  const cell = new ComponentWriteCell(record, ordinal, world);
120
118
  const constructed = constructor === undefined ? cell : withConstructor(cell, constructor);
121
- return state === undefined ? constructed : withTransition(constructed, state);
119
+ return entityState === undefined ? constructed : withTransition(constructed, entityState);
122
120
  };
123
121
  export const componentOptional = (record, ordinal) => new OptionalComponentCell(record, ordinal);
124
122
  export const storeRead = (store, key) => new StoreReadCell(store, key);
@@ -1 +1 @@
1
- {"version":3,"file":"cells.js","sourceRoot":"","sources":["../../src/internal/cells.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cells.js","sourceRoot":"","sources":["../../src/internal/cells.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type * as Debug from "../Debug.ts";
7
7
  import type { Descriptor } from "../Descriptor.ts";
8
+ import type * as EntityScope from "../EntityScope.ts";
8
9
  import type * as Machine from "../Machine.ts";
9
10
  import * as Schedule from "../Schedule.ts";
10
11
  import type { Schema } from "../Schema.ts";
@@ -22,8 +23,20 @@ export interface DescribeInput {
22
23
  readonly schema: Schema.Any;
23
24
  readonly machines: ReadonlyArray<Machine.StateMachine.Any>;
24
25
  readonly currentMachine: (machine: Machine.StateMachine.Any) => Machine.StateValue | undefined;
26
+ /** Whether the runtime was given an initial value for the machine. */
27
+ readonly providesMachine: (machine: Machine.StateMachine.Any) => boolean;
28
+ /** Every scope defined through the game, with its despawn triggers. */
29
+ readonly scopes: ReadonlyArray<EntityScope.EntityScope.Any>;
25
30
  readonly providedServices: ReadonlyArray<string>;
26
31
  readonly externallyWrittenEvents: ReadonlySet<string>;
32
+ /** Relations commands have tried to relate or reorder, by the queuing systems. */
33
+ readonly relationMutations: ReadonlyMap<string, ReadonlySet<string>>;
34
+ /** What each system's applied commands did, as `kind:name`; see `Runtime`. */
35
+ readonly commandUses: ReadonlyMap<string, ReadonlySet<string>>;
36
+ /** Systems that ran in this session. */
37
+ readonly ranSystems: ReadonlySet<string>;
38
+ /** Commands skipped because they would have broken a `Schema.requires` requirement. */
39
+ readonly requirementViolations: ReadonlyArray<Debug.RequirementViolation>;
27
40
  readonly hasResource: (descriptor: Descriptor.Any) => boolean;
28
41
  readonly schedules: ReadonlyArray<readonly [string, AnySchedule]>;
29
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/internal/debug.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,KAAK,OAAO,MAAM,eAAe,CAAA;AAG7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEpD,KAAK,SAAS,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAChD,KAAK,WAAW,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;CAAE,CAAA;AAC3E,KAAK,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAE9E,eAAO,MAAM,SAAS,eAAgB,UAAU,CAAC,GAAG,KAAG,KAAK,CAAC,OAGlD,CAAA;AAEX,eAAO,MAAM,eAAe,cAAe,OAAO,CAAC,SAAS,KAAG,MAe9D,CAAA;AAkBD,eAAO,MAAM,sBAAsB,aAAc,kBAAkB,KAAG,MAUrE,CAAA;AAiDD,eAAO,MAAM,cAAc,WAAY,SAAS,cAAc,aAAa,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,iBAsC3F,CAAA;AAqED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAC1D,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAA;IAC9F,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAChD,QAAQ,CAAC,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACrD,QAAQ,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,KAAK,OAAO,CAAA;IAC7D,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;CAClE;AAED,eAAO,MAAM,QAAQ,UAAW,aAAa,KAAG,KAAK,CAAC,WA6HrD,CAAA"}
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/internal/debug.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,KAAK,OAAO,MAAM,eAAe,CAAA;AAG7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEpD,KAAK,SAAS,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAChD,KAAK,WAAW,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;CAAE,CAAA;AAC3E,KAAK,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAE9E,eAAO,MAAM,SAAS,eAAgB,UAAU,CAAC,GAAG,KAAG,KAAK,CAAC,OAGlD,CAAA;AAEX,eAAO,MAAM,eAAe,cAAe,OAAO,CAAC,SAAS,KAAG,MAe9D,CAAA;AAkBD,eAAO,MAAM,sBAAsB,aAAc,kBAAkB,KAAG,MAUrE,CAAA;AA+ED,eAAO,MAAM,cAAc,WAAY,SAAS,cAAc,aAAa,CAAC,MAAM,CAAC,KAAG,KAAK,CAAC,iBAgD3F,CAAA;AAqED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAC1D,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAA;IAC9F,sEAAsE;IACtE,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,KAAK,OAAO,CAAA;IACxE,uEAAuE;IACvE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC3D,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAChD,QAAQ,CAAC,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACrD,kFAAkF;IAClF,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;IACpE,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9D,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACxC,uFAAuF;IACvF,QAAQ,CAAC,qBAAqB,EAAE,aAAa,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACzE,QAAQ,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,KAAK,OAAO,CAAA;IAC7D,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;CAClE;AAED,eAAO,MAAM,QAAQ,UAAW,aAAa,KAAG,KAAK,CAAC,WAoOrD,CAAA"}