@adobe/ecs 0.2.1 → 0.2.4

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 (330) hide show
  1. package/README.md +2 -2
  2. package/dist/implementation/compiler/body-access.d.ts +18 -1
  3. package/dist/implementation/compiler/body-access.js +104 -15
  4. package/dist/implementation/compiler/body-access.js.map +1 -1
  5. package/dist/implementation/compiler/describe.d.ts +1 -1
  6. package/dist/implementation/compiler/describe.js +3 -3
  7. package/dist/implementation/compiler/describe.js.map +1 -1
  8. package/dist/implementation/compiler/estree.d.ts +5 -2
  9. package/dist/implementation/compiler/estree.js +8 -5
  10. package/dist/implementation/compiler/estree.js.map +1 -1
  11. package/dist/implementation/compiler/inferred.js +4 -2
  12. package/dist/implementation/compiler/inferred.js.map +1 -1
  13. package/dist/implementation/compiler/signature.js +1 -1
  14. package/dist/implementation/compiler/transform.js +6 -5
  15. package/dist/implementation/compiler/transform.js.map +1 -1
  16. package/dist/implementation/world/activate.js +14 -2
  17. package/dist/implementation/world/activate.js.map +1 -1
  18. package/dist/implementation/world/buffer.d.ts +7 -0
  19. package/dist/implementation/world/buffer.js +7 -0
  20. package/dist/implementation/world/buffer.js.map +1 -1
  21. package/dist/implementation/world/cascade.d.ts +10 -3
  22. package/dist/implementation/world/cascade.js +48 -23
  23. package/dist/implementation/world/cascade.js.map +1 -1
  24. package/dist/implementation/world/commands.js +86 -2
  25. package/dist/implementation/world/commands.js.map +1 -1
  26. package/dist/implementation/world/create.js +53 -2
  27. package/dist/implementation/world/create.js.map +1 -1
  28. package/dist/implementation/world/entities.d.ts +2 -0
  29. package/dist/implementation/world/entities.js +6 -0
  30. package/dist/implementation/world/entities.js.map +1 -1
  31. package/dist/implementation/world/execute.d.ts +4 -4
  32. package/dist/implementation/world/execute.js +132 -83
  33. package/dist/implementation/world/execute.js.map +1 -1
  34. package/dist/implementation/world/finalizers.d.ts +2 -0
  35. package/dist/implementation/world/finalizers.js +24 -3
  36. package/dist/implementation/world/finalizers.js.map +1 -1
  37. package/dist/implementation/world/join.js +22 -4
  38. package/dist/implementation/world/join.js.map +1 -1
  39. package/dist/implementation/world/register.js +2 -2
  40. package/dist/implementation/world/resource-changes.d.ts +18 -0
  41. package/dist/implementation/world/resource-changes.js +66 -0
  42. package/dist/implementation/world/resource-changes.js.map +1 -0
  43. package/dist/implementation/world/rows.d.ts +1 -1
  44. package/dist/implementation/world/rows.js +23 -13
  45. package/dist/implementation/world/rows.js.map +1 -1
  46. package/dist/implementation/world/run-changes.d.ts +38 -0
  47. package/dist/implementation/world/run-changes.js +138 -0
  48. package/dist/implementation/world/run-changes.js.map +1 -0
  49. package/dist/implementation/world/runner.js +19 -15
  50. package/dist/implementation/world/runner.js.map +1 -1
  51. package/dist/implementation/world/sharing.js +1 -1
  52. package/dist/implementation/world/staging.d.ts +4 -0
  53. package/dist/implementation/world/staging.js +15 -3
  54. package/dist/implementation/world/staging.js.map +1 -1
  55. package/dist/implementation/world/state.d.ts +13 -0
  56. package/dist/implementation/world/state.js +13 -1
  57. package/dist/implementation/world/state.js.map +1 -1
  58. package/dist/implementation/world/synchronize.js +72 -22
  59. package/dist/implementation/world/synchronize.js.map +1 -1
  60. package/dist/implementation/world/tables-read.d.ts +9 -0
  61. package/dist/implementation/world/tables-read.js +72 -0
  62. package/dist/implementation/world/tables-read.js.map +1 -0
  63. package/dist/implementation/world/tables.d.ts +10 -0
  64. package/dist/implementation/world/tables.js +401 -0
  65. package/dist/implementation/world/tables.js.map +1 -0
  66. package/dist/implementation/world/thread-observer.js +1 -1
  67. package/dist/implementation/world/thread-observer.js.map +1 -1
  68. package/dist/implementation/world/thread-systems.js +11 -6
  69. package/dist/implementation/world/thread-systems.js.map +1 -1
  70. package/dist/implementation/world/up.js +7 -1
  71. package/dist/implementation/world/up.js.map +1 -1
  72. package/dist/implementation/world/where.d.ts +8 -0
  73. package/dist/implementation/world/where.js +40 -11
  74. package/dist/implementation/world/where.js.map +1 -1
  75. package/dist/index.d.ts +8 -28
  76. package/dist/index.js +4 -9
  77. package/dist/index.js.map +1 -1
  78. package/dist/interface/component/declarations.d.ts +4 -0
  79. package/dist/interface/component/declarations.js +8 -0
  80. package/dist/interface/component/declarations.js.map +1 -0
  81. package/dist/interface/component/declared.d.ts +12 -0
  82. package/dist/interface/component/declared.js +2 -0
  83. package/dist/interface/component/declared.js.map +1 -0
  84. package/dist/interface/component/index.d.ts +2 -0
  85. package/dist/interface/component/index.js +1 -1
  86. package/dist/interface/component/index.js.map +1 -1
  87. package/dist/interface/finalizer/body.d.ts +18 -3
  88. package/dist/interface/finalizer/create.d.ts +7 -5
  89. package/dist/interface/finalizer/create.js +8 -5
  90. package/dist/interface/finalizer/create.js.map +1 -1
  91. package/dist/interface/finalizer/declaration.d.ts +4 -2
  92. package/dist/interface/indexes/declaration-of.d.ts +17 -0
  93. package/dist/interface/indexes/declaration-of.js +20 -0
  94. package/dist/interface/indexes/declaration-of.js.map +1 -0
  95. package/dist/interface/indexes/index.d.ts +1 -0
  96. package/dist/interface/indexes/index.js +1 -0
  97. package/dist/interface/indexes/index.js.map +1 -1
  98. package/dist/interface/registry/names.d.ts +2 -0
  99. package/dist/interface/registry/names.js +9 -0
  100. package/dist/interface/registry/names.js.map +1 -1
  101. package/dist/interface/registry/schedule.d.ts +31 -4
  102. package/dist/interface/registry/schedule.js +185 -24
  103. package/dist/interface/registry/schedule.js.map +1 -1
  104. package/dist/interface/resource/declarations.d.ts +4 -0
  105. package/dist/interface/resource/declarations.js +8 -0
  106. package/dist/interface/resource/declarations.js.map +1 -0
  107. package/dist/interface/resource/index.d.ts +2 -0
  108. package/dist/interface/resource/index.js +1 -1
  109. package/dist/interface/resource/index.js.map +1 -1
  110. package/dist/interface/system/access.d.ts +15 -0
  111. package/dist/interface/system/body.d.ts +11 -6
  112. package/dist/interface/system/check.d.ts +8 -1
  113. package/dist/interface/system/check.js +42 -12
  114. package/dist/interface/system/check.js.map +1 -1
  115. package/dist/interface/system/commands.d.ts +37 -0
  116. package/dist/interface/system/create-resolved.js +1 -1
  117. package/dist/interface/system/create-resolved.js.map +1 -1
  118. package/dist/interface/system/create.d.ts +31 -15
  119. package/dist/interface/system/create.js +8 -7
  120. package/dist/interface/system/create.js.map +1 -1
  121. package/dist/interface/system/declaration.d.ts +9 -2
  122. package/dist/interface/system/describe.d.ts +120 -0
  123. package/dist/interface/system/describe.js +116 -0
  124. package/dist/interface/system/describe.js.map +1 -0
  125. package/dist/interface/system/index.d.ts +1 -0
  126. package/dist/interface/system/index.js +1 -0
  127. package/dist/interface/system/index.js.map +1 -1
  128. package/dist/interface/system/leaf.d.ts +6 -0
  129. package/dist/interface/system/render.js +1 -0
  130. package/dist/interface/system/render.js.map +1 -1
  131. package/dist/interface/system/resolve.d.ts +5 -1
  132. package/dist/interface/system/resolve.js +19 -1
  133. package/dist/interface/system/resolve.js.map +1 -1
  134. package/dist/interface/system/shared-only.d.ts +7 -0
  135. package/dist/interface/system/shared-only.js +2 -0
  136. package/dist/interface/system/shared-only.js.map +1 -0
  137. package/dist/interface/system/tables.d.ts +28 -0
  138. package/dist/interface/system/tables.js +2 -0
  139. package/dist/interface/system/tables.js.map +1 -0
  140. package/dist/interface/world/index.d.ts +1 -1
  141. package/dist/interface/world/table/index.d.ts +27 -0
  142. package/dist/interface/world/table/index.js +3 -0
  143. package/dist/interface/world/table/index.js.map +1 -0
  144. package/dist/interface/world/table/table.d.ts +11 -0
  145. package/dist/interface/world/table/table.js +2 -0
  146. package/dist/interface/world/table/table.js.map +1 -0
  147. package/dist/interface/world/world.d.ts +25 -10
  148. package/dist/world.d.ts +27 -0
  149. package/dist/world.js +27 -0
  150. package/dist/world.js.map +1 -0
  151. package/package.json +11 -2
  152. package/src/exports.test.ts +1 -1
  153. package/src/guide/00-keys.ts +1 -1
  154. package/src/guide/01-resources.md +1 -1
  155. package/src/guide/01-resources.ts +1 -1
  156. package/src/guide/02-entities.ts +2 -2
  157. package/src/guide/03-systems.md +2 -2
  158. package/src/guide/03-systems.out +1 -1
  159. package/src/guide/03-systems.ts +3 -3
  160. package/src/guide/04-ticks.md +1 -1
  161. package/src/guide/04-ticks.ts +3 -3
  162. package/src/guide/05-scheduling.ts +1 -1
  163. package/src/guide/06-sync-points.md +18 -7
  164. package/src/guide/06-sync-points.out +1 -2
  165. package/src/guide/06-sync-points.ts +10 -6
  166. package/src/guide/07-change-filters.ts +2 -2
  167. package/src/guide/08-input.ts +1 -1
  168. package/src/guide/09-rules.ts +1 -1
  169. package/src/guide/11-traits.ts +3 -3
  170. package/src/guide/12-lookups.ts +2 -2
  171. package/src/guide/13-indexes.ts +4 -4
  172. package/src/guide/14-kernels.ts +1 -1
  173. package/src/guide/15-reductions.ts +1 -1
  174. package/src/guide/16-gpu.ts +1 -1
  175. package/src/guide/17-hierarchies.ts +1 -1
  176. package/src/guide/18-identity.out +1 -1
  177. package/src/guide/19-threads.md +4 -2
  178. package/src/guide/19-threads.ts +2 -2
  179. package/src/guide/20-shared.ts +3 -3
  180. package/src/guide/21-dom.md +2 -2
  181. package/src/guide/21-dom.ts +1 -1
  182. package/src/guide/22-canvas.md +1 -1
  183. package/src/guide/22-canvas.ts +1 -1
  184. package/src/guide/CLAUDE.md +1 -1
  185. package/src/guide/guide.test.ts +9 -154
  186. package/src/implementation/compiler/body-access.ts +102 -12
  187. package/src/implementation/compiler/describe.test-helper.ts +1 -1
  188. package/src/implementation/compiler/describe.test.ts +1 -1
  189. package/src/implementation/compiler/describe.ts +3 -3
  190. package/src/implementation/compiler/estree.ts +9 -6
  191. package/src/implementation/compiler/hygiene.test.ts +1 -1
  192. package/src/implementation/compiler/inferred.test.ts +1 -1
  193. package/src/implementation/compiler/inferred.ts +4 -2
  194. package/src/implementation/compiler/plugin.test.ts +2 -2
  195. package/src/implementation/compiler/signature.ts +1 -1
  196. package/src/implementation/compiler/transform.test.ts +43 -23
  197. package/src/implementation/compiler/transform.ts +6 -4
  198. package/src/implementation/world/activate.ts +11 -2
  199. package/src/implementation/world/batches.test.ts +3 -3
  200. package/src/implementation/world/buffer.ts +7 -0
  201. package/src/implementation/world/cascade.ts +46 -22
  202. package/src/implementation/world/change-blocks.test.ts +1 -1
  203. package/src/implementation/world/commands.ts +76 -2
  204. package/src/implementation/world/create.test.ts +8 -8
  205. package/src/implementation/world/create.ts +57 -2
  206. package/src/implementation/world/defaults.test.ts +1 -1
  207. package/src/implementation/world/despawn-where.test.ts +287 -0
  208. package/src/implementation/world/entities.ts +6 -0
  209. package/src/implementation/world/execute.ts +125 -78
  210. package/src/implementation/world/finalizers.test.ts +1 -1
  211. package/src/implementation/world/finalizers.ts +27 -4
  212. package/src/implementation/world/ids.test.ts +1 -1
  213. package/src/implementation/world/index-changed.test.ts +2 -2
  214. package/src/implementation/world/index-joined.test.ts +5 -5
  215. package/src/implementation/world/index-order.test.ts +1 -1
  216. package/src/implementation/world/indexes.test.ts +2 -1
  217. package/src/implementation/world/join.test.ts +23 -4
  218. package/src/implementation/world/join.ts +26 -4
  219. package/src/implementation/world/joined-observer.test.ts +1 -1
  220. package/src/implementation/world/joining-worker.fixture.ts +1 -1
  221. package/src/implementation/world/joining.fixture.ts +1 -1
  222. package/src/implementation/world/joining.test-helper.ts +1 -1
  223. package/src/implementation/world/kernel-spawns.test.ts +1 -1
  224. package/src/implementation/world/names.test.ts +1 -2
  225. package/src/implementation/world/observe-factories.test.ts +2 -2
  226. package/src/implementation/world/observe-ticks-cases.test.ts +1 -1
  227. package/src/implementation/world/observe.test-helper.ts +1 -1
  228. package/src/implementation/world/observer-contained-worker.fixture.ts +1 -1
  229. package/src/implementation/world/observer-contained.test-helper.ts +1 -1
  230. package/src/implementation/world/observer-contained.test.ts +2 -2
  231. package/src/implementation/world/observer-joined.test-helper.ts +4 -4
  232. package/src/implementation/world/observer-joined.test.ts +23 -15
  233. package/src/implementation/world/observer.browser.test.ts +2 -2
  234. package/src/implementation/world/observer.test.ts +8 -8
  235. package/src/implementation/world/optional-workers.fixture.ts +1 -1
  236. package/src/implementation/world/optional.test.ts +7 -7
  237. package/src/implementation/world/perf.md +3 -1
  238. package/src/implementation/world/reclaim.test.ts +3 -3
  239. package/src/implementation/world/register.ts +2 -2
  240. package/src/implementation/world/remote-objects.test-helper.ts +1 -1
  241. package/src/implementation/world/resource-changes.test.ts +61 -0
  242. package/src/implementation/world/resource-changes.ts +67 -0
  243. package/src/implementation/world/rows.ts +24 -13
  244. package/src/implementation/world/rules.test.ts +37 -0
  245. package/src/implementation/world/run-changes.test.ts +88 -0
  246. package/src/implementation/world/run-changes.ts +160 -0
  247. package/src/implementation/world/run-results.test.ts +10 -10
  248. package/src/implementation/world/runner.ts +20 -16
  249. package/src/implementation/world/shared-gpu.browser.test.ts +2 -2
  250. package/src/implementation/world/shared-kernels.test.ts +2 -2
  251. package/src/implementation/world/shared-workers.fixture.ts +2 -2
  252. package/src/implementation/world/shared.test.ts +10 -10
  253. package/src/implementation/world/sharing.ts +1 -1
  254. package/src/implementation/world/staging.ts +16 -3
  255. package/src/implementation/world/state.ts +19 -0
  256. package/src/implementation/world/sync-points.test.ts +135 -0
  257. package/src/implementation/world/synchronize.ts +65 -18
  258. package/src/implementation/world/tables-read.ts +70 -0
  259. package/src/implementation/world/tables.test.ts +369 -0
  260. package/src/implementation/world/tables.ts +368 -0
  261. package/src/implementation/world/tails.test.ts +1 -1
  262. package/src/implementation/world/target.test.ts +2 -2
  263. package/src/implementation/world/thread-observer.ts +1 -1
  264. package/src/implementation/world/thread-systems.test-helper.ts +3 -3
  265. package/src/implementation/world/thread-systems.ts +11 -6
  266. package/src/implementation/world/up.test.ts +13 -1
  267. package/src/implementation/world/up.ts +6 -1
  268. package/src/implementation/world/where.test.ts +4 -4
  269. package/src/implementation/world/where.ts +38 -10
  270. package/src/implementation/world/workers.fixture.ts +2 -2
  271. package/src/index.ts +4 -29
  272. package/src/interface/component/declarations.ts +11 -0
  273. package/src/interface/component/declared.ts +9 -0
  274. package/src/interface/component/index.ts +2 -0
  275. package/src/interface/finalizer/body.ts +13 -3
  276. package/src/interface/finalizer/create.test.ts +3 -1
  277. package/src/interface/finalizer/create.ts +12 -7
  278. package/src/interface/finalizer/declaration.ts +4 -2
  279. package/src/interface/index.type-test.ts +2 -2
  280. package/src/interface/indexes/create.test.ts +10 -0
  281. package/src/interface/indexes/declaration-of.ts +34 -0
  282. package/src/interface/indexes/index.ts +1 -0
  283. package/src/interface/indexes/index.type-test.ts +1 -1
  284. package/src/interface/registry/names.ts +8 -0
  285. package/src/interface/registry/schedule.ts +200 -27
  286. package/src/interface/resource/declarations.ts +11 -0
  287. package/src/interface/resource/index.ts +2 -0
  288. package/src/interface/system/access.ts +16 -0
  289. package/src/interface/system/body.ts +7 -5
  290. package/src/interface/system/check.ts +37 -10
  291. package/src/interface/system/commands.ts +33 -0
  292. package/src/interface/system/commands.type-test.ts +31 -0
  293. package/src/interface/system/create-resolved.ts +1 -1
  294. package/src/interface/system/create.test.ts +21 -13
  295. package/src/interface/system/create.ts +24 -15
  296. package/src/interface/system/declaration.ts +9 -2
  297. package/src/interface/system/describe.test.ts +79 -0
  298. package/src/interface/system/describe.ts +122 -0
  299. package/src/interface/system/index.ts +1 -0
  300. package/src/interface/system/leaf.ts +6 -0
  301. package/src/interface/system/lists.type-test.ts +1 -1
  302. package/src/interface/system/optional.type-test.ts +1 -1
  303. package/src/interface/system/render.ts +1 -0
  304. package/src/interface/system/resolve.ts +25 -2
  305. package/src/interface/system/shared-only.ts +5 -0
  306. package/src/interface/system/shared.type-test.ts +1 -1
  307. package/src/interface/system/system.type-test.ts +26 -20
  308. package/src/interface/system/tables.ts +27 -0
  309. package/src/interface/system/up.type-test.ts +3 -3
  310. package/src/interface/world/index.ts +2 -2
  311. package/src/interface/world/run.type-test.ts +14 -4
  312. package/src/interface/world/table/index.ts +20 -0
  313. package/src/interface/world/table/table.ts +12 -0
  314. package/src/interface/world/world.ts +23 -10
  315. package/src/observe/entity.ts +2 -2
  316. package/src/observe/resource.ts +2 -2
  317. package/src/observe/select.ts +4 -4
  318. package/src/observe/world-state.ts +3 -3
  319. package/src/perftest/benchmarks.ts +19 -1
  320. package/src/perftest/indexes.ts +3 -3
  321. package/src/perftest/loop.ts +1 -1
  322. package/src/perftest/observer.ts +4 -4
  323. package/src/perftest/reads.ts +2 -2
  324. package/src/perftest/remote.ts +5 -5
  325. package/src/perftest/strings.ts +1 -1
  326. package/src/perftest/structural.ts +20 -0
  327. package/src/perftest/suite.ts +1 -1
  328. package/src/perftest/tables.ts +107 -0
  329. package/src/world.test.ts +2 -2
  330. package/src/world.ts +32 -0
@@ -1 +1 @@
1
- {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../../src/implementation/world/rows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../../src/implementation/world/rows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { Essential } from '../../interface/component/value.js';
2
+ import type { ChangeSet } from '../../interface/finalizer/body.js';
3
+ import type { Resource } from '../../interface/resource/resource.js';
4
+ import { type Definition } from '../../interface/registry/index.js';
5
+ import { type Key, type State } from './state.js';
6
+ import type { Queued } from './synchronize.js';
7
+ /**
8
+ * What a run asked for its changes holds while it runs: by entity its sync points planned, the watched components it
9
+ * had before the run, none for one born in it, with their values then, and those its adds gave a value; and the
10
+ * resources its systems write or reduce into, with their values before it.
11
+ */
12
+ export type Recording = {
13
+ readonly before: Map<number, {
14
+ readonly ids: readonly number[] | null;
15
+ readonly values: ReadonlyMap<number, unknown>;
16
+ }>;
17
+ readonly given: Map<number, Set<number>>;
18
+ readonly resources: ReadonlyMap<Key, unknown>;
19
+ };
20
+ /** Starts recording a run whose systems write or reduce into `resources`, from their values now. */
21
+ export declare const startRecording: (state: State, resources: Iterable<Key>) => Recording;
22
+ /**
23
+ * At a sync point of the run, before it applies: each entity its plan names that no earlier one did, with what it has
24
+ * now, and the components its adds give a value. `born` holds the rows committed from batches here, by archetype.
25
+ */
26
+ export declare const recordPlan: (state: State, recording: Recording, queued: readonly Queued[], born: ReadonlyMap<number, number>) => void;
27
+ /**
28
+ * The run's change set once its last sync point applied: each entity grouped by the watched components it had before
29
+ * the run and has after, those it gained and lost, and those adds gave a value it had before and after, with their
30
+ * values then and now; and each resource its systems write or reduce into whose value changed.
31
+ */
32
+ export declare const changesOf: (state: State, recording: Recording) => ChangeSet<Essential, Resource.Key>;
33
+ /** The resources a system's leaves write or reduce into. */
34
+ export declare const resourcesWrittenBy: (definition: Definition) => ReadonlySet<Key>;
35
+ /** Whether a system or composite takes input, so a run's options follow it. */
36
+ export declare const takesInput: (definition: Definition) => boolean;
37
+ /** Whether a run's options ask for its changes. */
38
+ export declare const asksForChanges: (options: unknown) => boolean;
@@ -0,0 +1,138 @@
1
+ import { isLeaf, newestKeyOf, scheduleOf } from '../../interface/registry/index.js';
2
+ import { readCell } from './cells.js';
3
+ import { asEntity, indexOf, locate } from './entities.js';
4
+ import { sameValue } from './resource-changes.js';
5
+ import { findResource, initialOf } from './resources.js';
6
+ import { metIdOf } from './state.js';
7
+ /** Every component but derived ones and the objects a joined thread fills, as a changes finalizer watches by default. */
8
+ const watched = (state, id) => !state.derived[id] && !state.resources.has(id) && state.remote[id] === undefined;
9
+ const noValues = new Map();
10
+ /** The values of components `ids` of an archetype's row. */
11
+ const valuesAt = (archetype, ids, row) => {
12
+ const values = new Map();
13
+ for (const id of ids) {
14
+ const storage = archetype.storageById[id];
15
+ if (storage !== undefined)
16
+ values.set(id, readCell(storage, row));
17
+ }
18
+ return values;
19
+ };
20
+ /** Starts recording a run whose systems write or reduce into `resources`, from their values now. */
21
+ export const startRecording = (state, resources) => {
22
+ const values = new Map();
23
+ for (const key of resources) {
24
+ const cell = findResource(state, key);
25
+ values.set(key, cell === undefined ? initialOf(state, key) : readCell(cell.storage, cell.row));
26
+ }
27
+ return { before: new Map(), given: new Map(), resources: values };
28
+ };
29
+ /**
30
+ * At a sync point of the run, before it applies: each entity its plan names that no earlier one did, with what it has
31
+ * now, and the components its adds give a value. `born` holds the rows committed from batches here, by archetype.
32
+ */
33
+ export const recordPlan = (state, recording, queued, born) => {
34
+ const { plan, archetypes, entities } = state;
35
+ const note = (entity, from) => {
36
+ if (recording.before.has(entity) || from?.resource === true)
37
+ return;
38
+ if (from === null) {
39
+ recording.before.set(entity, { ids: null, values: noValues });
40
+ return;
41
+ }
42
+ const row = entities.row[indexOf(entity)];
43
+ const ids = from.components.filter(id => watched(state, id));
44
+ recording.before.set(entity, { ids, values: valuesAt(from, ids, row) });
45
+ };
46
+ const give = (entity, buffer, start, end) => {
47
+ const { ids } = queued[buffer].buffer;
48
+ for (let k = start; k < end; k++) {
49
+ if (!watched(state, ids[k]))
50
+ continue;
51
+ let given = recording.given.get(entity);
52
+ if (given === undefined)
53
+ recording.given.set(entity, given = new Set());
54
+ given.add(ids[k]);
55
+ }
56
+ };
57
+ for (let entry = 0; entry < plan.count; entry++) {
58
+ const entity = plan.entity[entry];
59
+ const fromId = plan.from[entry];
60
+ const first = fromId < 0 ? undefined : born.get(fromId);
61
+ note(entity, fromId < 0 || (first !== undefined && entities.row[indexOf(entity)] >= first) ? null : archetypes[fromId]);
62
+ if (plan.start[entry] < 0)
63
+ continue;
64
+ give(entity, plan.buffer[entry], plan.start[entry], plan.end[entry]);
65
+ const more = plan.more.size === 0 ? undefined : plan.more.get(entry);
66
+ if (more !== undefined)
67
+ for (let r = 0; r < more.length; r += 3)
68
+ give(entity, more[r], more[r + 1], more[r + 2]);
69
+ }
70
+ // Rows committed from batches no command touched have no entry.
71
+ for (const [id, first] of born) {
72
+ const archetype = archetypes[id];
73
+ for (let row = first; row < archetype.count; row++)
74
+ note(archetype.entities[row], null);
75
+ }
76
+ };
77
+ /** A watched component's newest key: watched components are registered and not derived, so they're essential. */
78
+ const keyOf = (state, id) => newestKeyOf(state.keys[id]);
79
+ /**
80
+ * The run's change set once its last sync point applied: each entity grouped by the watched components it had before
81
+ * the run and has after, those it gained and lost, and those adds gave a value it had before and after, with their
82
+ * values then and now; and each resource its systems write or reduce into whose value changed.
83
+ */
84
+ export const changesOf = (state, recording) => {
85
+ const { archetypes, entities } = state;
86
+ const groups = new Map();
87
+ const after = new Map();
88
+ for (const [entity, { ids: before }] of recording.before) {
89
+ const index = locate(entities, entity);
90
+ const to = index < 0 ? null : archetypes[entities.archetype[index]];
91
+ const ids = to === null ? null : to.components.filter(id => watched(state, id));
92
+ if (before === null && ids === null)
93
+ continue;
94
+ const added = (ids ?? []).filter(id => !(before ?? []).includes(id));
95
+ const removed = (before ?? []).filter(id => !(ids ?? []).includes(id));
96
+ const replaced = [...recording.given.get(entity) ?? []].filter(id => before?.includes(id) === true && ids?.includes(id) === true).sort((a, b) => a - b);
97
+ if (added.length === 0 && removed.length === 0 && replaced.length === 0)
98
+ continue;
99
+ if (to !== null && ids !== null) {
100
+ after.set(entity, valuesAt(to, ids, entities.row[index]));
101
+ }
102
+ const name = `${before?.join(",") ?? "-"}|${ids?.join(",") ?? "-"}|${replaced.join(",")}`;
103
+ let group = groups.get(name);
104
+ const keys = (list) => list === null ? null : list.map(id => keyOf(state, id));
105
+ if (group === undefined) {
106
+ groups.set(name, group = { from: keys(before), to: keys(ids), added: added.map(id => keyOf(state, id)), removed: removed.map(id => keyOf(state, id)), replaced: replaced.map(id => keyOf(state, id)), entities: [] });
107
+ }
108
+ group.entities.push(asEntity(entity));
109
+ }
110
+ const resources = [];
111
+ for (const [key, previous] of recording.resources) {
112
+ const cell = findResource(state, key);
113
+ const next = cell === undefined ? previous : readCell(cell.storage, cell.row);
114
+ // A key the run's systems name is a resource's.
115
+ if (!sameValue(previous, next))
116
+ resources.push({ key: newestKeyOf(key), previous, next });
117
+ }
118
+ const valueOf = (values, key) => {
119
+ const id = metIdOf(state, key);
120
+ return id !== undefined && values?.has(id) === true ? values.get(id) : null;
121
+ };
122
+ return {
123
+ groups: [...groups.values()],
124
+ // Values read from storage match each key's registered schema, so they have its type.
125
+ resources: resources,
126
+ previous: (entity, key) => valueOf(recording.before.get(entity)?.values, key),
127
+ next: (entity, key) => valueOf(after.get(entity), key),
128
+ };
129
+ };
130
+ /** A system's leaves that run in tiers, or the system itself. */
131
+ const leavesOf = (definition) => isLeaf(definition) ? [definition] : scheduleOf(definition).tiers.flat();
132
+ /** The resources a system's leaves write or reduce into. */
133
+ export const resourcesWrittenBy = (definition) => new Set(leavesOf(definition).flatMap(leaf => [...leaf.declaration.resources?.write ?? [], ...leaf.declaration.resources?.reduce ?? []]));
134
+ /** Whether a system or composite takes input, so a run's options follow it. */
135
+ export const takesInput = (definition) => isLeaf(definition) ? definition.input !== undefined : [...scheduleOf(definition).tiers.flat(), ...scheduleOf(definition).observer].some(leaf => leaf.input !== undefined);
136
+ /** Whether a run's options ask for its changes. */
137
+ export const asksForChanges = (options) => typeof options === "object" && options !== null && Reflect.get(options, "changes") === true;
138
+ //# sourceMappingURL=run-changes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-changes.js","sourceRoot":"","sources":["../../../src/implementation/world/run-changes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAA8B,MAAM,mCAAmC,CAAC;AAEhH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAwB,MAAM,YAAY,CAAC;AAc3D,yHAAyH;AACzH,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAU,EAAW,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;AAExI,MAAM,QAAQ,GAAiC,IAAI,GAAG,EAAE,CAAC;AAEzD,4DAA4D;AAC5D,MAAM,QAAQ,GAAG,CAAC,SAAoB,EAAE,GAAsB,EAAE,GAAW,EAAgC,EAAE;IACzG,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,oGAAoG;AACpG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAY,EAAE,SAAwB,EAAa,EAAE;IAChF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACtE,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAY,EAAE,SAAoB,EAAE,MAAyB,EAAE,IAAiC,EAAQ,EAAE;IACjI,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC7C,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,IAAsB,EAAQ,EAAE;QAC1D,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,QAAQ,KAAK,IAAI;YAAE,OAAO;QACpE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9D,OAAO;QACX,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7D,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,KAAa,EAAE,GAAW,EAAQ,EAAE;QAC9E,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAE,SAAS;YACtC,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;YACxE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACL,CAAC,CAAC;IACF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACxH,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,SAAS;QACpC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrE,IAAI,IAAI,KAAK,SAAS;YAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrH,CAAC;IACD,gEAAgE;IAChE,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QACjC,KAAK,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE;YAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5F,CAAC;AACL,CAAC,CAAC;AAEF,iHAAiH;AACjH,MAAM,KAAK,GAAG,CAAC,KAAY,EAAE,EAAU,EAAa,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAc,CAAC;AAKhG;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,SAAoB,EAAsC,EAAE;IAChG,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwC,CAAC;IAC9D,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,MAAM,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI;YAAE,SAAS;QAC9C,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxJ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAClF,IAAI,EAAE,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1F,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,CAAC,IAA8B,EAAsB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7H,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1N,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,SAAS,GAA8D,EAAE,CAAC;IAChF,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9E,gDAAgD;QAChD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,CAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9G,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,MAAgD,EAAE,GAAc,EAAW,EAAE;QAC1F,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/B,OAAO,EAAE,KAAK,SAAS,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,CAAC,CAAC;IACF,OAAO;QACH,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5B,sFAAsF;QACtF,SAAS,EAAE,SAA4D;QACvE,QAAQ,EAAE,CAAsB,MAAc,EAAE,GAAM,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAA2B;QACvI,IAAI,EAAE,CAAsB,MAAc,EAAE,GAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAA2B;KACnH,CAAC;AACN,CAAC,CAAC;AAEF,iEAAiE;AACjE,MAAM,QAAQ,GAAG,CAAC,UAAsB,EAAmB,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAEtI,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAsB,EAAoB,EAAE,CAC3E,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAE7I,+EAA+E;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,UAAsB,EAAW,EAAE,CAC1D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AAE9K,mDAAmD;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC"}
@@ -146,7 +146,7 @@ export const createRunner = (state, leaf, since = 0) => {
146
146
  : createOrderedRender(indexLookups.ordered, ordered, accessors.map(accessor => idOf(state, accessor.component)), declaration.shader?.group ?? 0, `${leafNumber}:`);
147
147
  const touches = [...new Set([...query?.read ?? [], ...query?.write ?? []])].map(key => idOf(state, key));
148
148
  const writes = (query?.write ?? []).map(key => idOf(state, key));
149
- const looks = [...new Set([...Object.values(declaration.lookup ?? {}).flatMap(lookup => lookup.read ?? []), ...declaration.up?.read ?? []])].map(key => idOf(state, key));
149
+ const looks = [...new Set([...Object.values(declaration.lookup ?? {}).flatMap(lookup => lookup.read ?? []), ...declaration.up?.read ?? [], ...declaration.tables?.components ?? []])].map(key => idOf(state, key));
150
150
  /** Record keys by archetype. */
151
151
  const keys = new Map();
152
152
  const keyOf = (archetype) => {
@@ -230,7 +230,7 @@ export const createRunner = (state, leaf, since = 0) => {
230
230
  let runInput;
231
231
  const context = createContext(state, declaration, {
232
232
  targets: kernel === null ? targets : [],
233
- commands: leaf.kind === "render" || declaration.kernel === "gpu" || declaration.observer === true ? undefined : commands,
233
+ commands: leaf.kind === "render" || declaration.kernel === "gpu" || declaration.readonly === true ? undefined : commands,
234
234
  indexes: indexLookups.byName,
235
235
  since: lookupSince,
236
236
  });
@@ -364,7 +364,7 @@ export const createRunner = (state, leaf, since = 0) => {
364
364
  };
365
365
  /** Drops match `m`, its last taking its place; with `where`, one evaluated stays among those evaluated. */
366
366
  const removeMatch = (m) => {
367
- filterCache.delete(matches[m]);
367
+ filterCache[matches[m].id] = undefined;
368
368
  matchOf[matches[m].id] = -1;
369
369
  let hole = m;
370
370
  if (where !== null && m < where.evaluated) {
@@ -382,7 +382,7 @@ export const createRunner = (state, leaf, since = 0) => {
382
382
  /** Matches `m` anew, reused for other values: its point is its last run's, and `where` evaluates it again. */
383
383
  const renewMatch = (m) => {
384
384
  const archetype = matches[m];
385
- filterCache.delete(archetype);
385
+ filterCache[archetype.id] = undefined;
386
386
  points[m] = lastRun;
387
387
  generations[m] = archetype.generation;
388
388
  if (where !== null && m < where.evaluated) {
@@ -462,11 +462,11 @@ export const createRunner = (state, leaf, since = 0) => {
462
462
  * and the WASM addresses of its columns and filters, for the WASM kernel `addressed` they were taken for, since a
463
463
  * kernel loaded again may stamp a tick column the last one muted.
464
464
  */
465
- const filterCache = new Map();
465
+ const filterCache = [];
466
466
  const noFilters = [];
467
467
  const filteredOf = (archetype) => {
468
- const cached = filterCache.get(archetype);
469
- if (cached !== undefined && cached.version === archetype.version)
468
+ const cached = filterCache[archetype.id];
469
+ if (cached !== undefined && cached.archetype === archetype && cached.version === archetype.version)
470
470
  return cached;
471
471
  const filters = addedIds.length + changedIds.length === 0 ? noFilters : [
472
472
  ...addedIds.flatMap(id => {
@@ -478,8 +478,8 @@ export const createRunner = (state, leaf, since = 0) => {
478
478
  return storage === undefined ? [] : [{ ticks: storage.changed, chunks: storage.chunkChanged, blocks: storage.blockChanged }];
479
479
  }),
480
480
  ];
481
- const entry = { version: archetype.version, filters, addresses: noAddresses, addressed: null };
482
- filterCache.set(archetype, entry);
481
+ const entry = { archetype, version: archetype.version, filters, addresses: noAddresses, addressed: null };
482
+ filterCache[archetype.id] = entry;
483
483
  return entry;
484
484
  };
485
485
  const filtersOf = (archetype) => filteredOf(archetype).filters;
@@ -514,13 +514,14 @@ export const createRunner = (state, leaf, since = 0) => {
514
514
  const { value } = row;
515
515
  const values = context.value;
516
516
  const input = runInput;
517
+ const { body } = system;
517
518
  const filters = filtersOf(archetype);
518
519
  // Every row passes, so nothing is filtered.
519
520
  // A body may remove its own system, after which no row of it runs.
520
521
  if (since < 0 || filters.length === 0) {
521
522
  for (let index = 0, count = archetype.count; index < count && !holdings.removed; index++) {
522
523
  row.index = index;
523
- const returned = system.body(value, values, input);
524
+ const returned = body(value, values, input);
524
525
  if (returned !== undefined)
525
526
  noPromise(returned);
526
527
  }
@@ -529,7 +530,7 @@ export const createRunner = (state, leaf, since = 0) => {
529
530
  forEachPassingRange(filters, since, 0, archetype.count, (start, end) => {
530
531
  for (let index = start; index < end && !holdings.removed; index++) {
531
532
  row.index = index;
532
- const returned = system.body(value, values, input);
533
+ const returned = body(value, values, input);
533
534
  if (returned !== undefined)
534
535
  noPromise(returned);
535
536
  }
@@ -611,11 +612,12 @@ export const createRunner = (state, leaf, since = 0) => {
611
612
  const upContext = context.value;
612
613
  const input = runInput;
613
614
  upContext.up = parentRow === null ? null : parentRow.value;
615
+ const { body } = system;
614
616
  for (let n = start; n < end && !holdings.removed; n++) {
615
617
  row.index = rows[n];
616
618
  if (parentRow !== null)
617
619
  parentRow.index = parents[n];
618
- const returned = system.body(row.value, upContext, input);
620
+ const returned = body(row.value, upContext, input);
619
621
  if (returned !== undefined)
620
622
  noPromise(returned);
621
623
  }
@@ -647,9 +649,10 @@ export const createRunner = (state, leaf, since = 0) => {
647
649
  }
648
650
  const row = bindRow(archetype);
649
651
  const { value } = row;
652
+ const { body } = system;
650
653
  for (let n = run.start; n < run.end && !holdings.removed; n++) {
651
654
  row.index = run.rows[n];
652
- const returned = system.body(value, contextValue, input);
655
+ const returned = body(value, contextValue, input);
653
656
  if (returned !== undefined)
654
657
  noPromise(returned);
655
658
  }
@@ -661,6 +664,7 @@ export const createRunner = (state, leaf, since = 0) => {
661
664
  const { entries, stride, words, lengths, blocks } = sorted;
662
665
  const contextValue = context.value;
663
666
  const input = runInput;
667
+ const { body } = system;
664
668
  let current = -1;
665
669
  let row = null;
666
670
  let value = null;
@@ -684,7 +688,7 @@ export const createRunner = (state, leaf, since = 0) => {
684
688
  current = owner;
685
689
  }
686
690
  row.index = entries[at + 2];
687
- const returned = system.body(value, contextValue, input);
691
+ const returned = body(value, contextValue, input);
688
692
  if (returned !== undefined)
689
693
  noPromise(returned);
690
694
  }
@@ -1299,7 +1303,7 @@ export const createRunner = (state, leaf, since = 0) => {
1299
1303
  return taken;
1300
1304
  },
1301
1305
  didRun: () => ran && (query === undefined || bodyRanOnRow()),
1302
- restart: declaration.observer !== true || !holdsNothing(holdings) ? null : since => {
1306
+ restart: declaration.readonly !== true || !holdsNothing(holdings) ? null : since => {
1303
1307
  lastRun = since;
1304
1308
  holdings.removed = false;
1305
1309
  holdings.released = false;