@oasys/oecs 0.5.3 → 0.6.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 (510) hide show
  1. package/CHANGELOG.md +1399 -276
  2. package/README.md +327 -169
  3. package/dist/core/ecs/access_check.d.cts +31 -31
  4. package/dist/core/ecs/access_check.d.ts +31 -31
  5. package/dist/core/ecs/access_check.d.ts.map +1 -1
  6. package/dist/core/ecs/archetype.d.cts +273 -205
  7. package/dist/core/ecs/archetype.d.ts +273 -205
  8. package/dist/core/ecs/archetype.d.ts.map +1 -1
  9. package/dist/core/ecs/archetype_closure.d.cts +23 -0
  10. package/dist/core/ecs/archetype_closure.d.ts +23 -0
  11. package/dist/core/ecs/archetype_closure.d.ts.map +1 -0
  12. package/dist/core/ecs/archetype_graph.d.cts +34 -34
  13. package/dist/core/ecs/archetype_graph.d.ts +34 -34
  14. package/dist/core/ecs/archetype_graph.d.ts.map +1 -1
  15. package/dist/core/ecs/archetype_types.d.cts +55 -0
  16. package/dist/core/ecs/archetype_types.d.ts +55 -0
  17. package/dist/core/ecs/archetype_types.d.ts.map +1 -0
  18. package/dist/core/ecs/change_feed.d.cts +53 -0
  19. package/dist/core/ecs/change_feed.d.ts +53 -0
  20. package/dist/core/ecs/change_feed.d.ts.map +1 -0
  21. package/dist/core/ecs/changed_query.d.cts +36 -0
  22. package/dist/core/ecs/changed_query.d.ts +36 -0
  23. package/dist/core/ecs/changed_query.d.ts.map +1 -0
  24. package/dist/core/ecs/chunk_columns.d.cts +49 -0
  25. package/dist/core/ecs/chunk_columns.d.ts +49 -0
  26. package/dist/core/ecs/chunk_columns.d.ts.map +1 -0
  27. package/dist/core/ecs/command_log.d.cts +30 -30
  28. package/dist/core/ecs/command_log.d.ts +30 -30
  29. package/dist/core/ecs/command_log.d.ts.map +1 -1
  30. package/dist/core/ecs/component.d.cts +45 -44
  31. package/dist/core/ecs/component.d.ts +45 -44
  32. package/dist/core/ecs/component.d.ts.map +1 -1
  33. package/dist/core/ecs/component_registry.d.cts +53 -0
  34. package/dist/core/ecs/component_registry.d.ts +53 -0
  35. package/dist/core/ecs/component_registry.d.ts.map +1 -0
  36. package/dist/core/ecs/compute_backend.d.cts +18 -7
  37. package/dist/core/ecs/compute_backend.d.ts +18 -7
  38. package/dist/core/ecs/compute_backend.d.ts.map +1 -1
  39. package/dist/core/ecs/deferred_commands.d.cts +15 -14
  40. package/dist/core/ecs/deferred_commands.d.ts +15 -14
  41. package/dist/core/ecs/deferred_commands.d.ts.map +1 -1
  42. package/dist/core/ecs/dispatch_trace.d.cts +32 -31
  43. package/dist/core/ecs/dispatch_trace.d.ts +32 -31
  44. package/dist/core/ecs/dispatch_trace.d.ts.map +1 -1
  45. package/dist/core/ecs/ecs.d.cts +337 -276
  46. package/dist/core/ecs/ecs.d.ts +337 -276
  47. package/dist/core/ecs/ecs.d.ts.map +1 -1
  48. package/dist/core/ecs/ecs_memory.d.cts +134 -136
  49. package/dist/core/ecs/ecs_memory.d.ts +134 -136
  50. package/dist/core/ecs/ecs_memory.d.ts.map +1 -1
  51. package/dist/core/ecs/ecs_options.d.cts +89 -0
  52. package/dist/core/ecs/ecs_options.d.ts +89 -0
  53. package/dist/core/ecs/ecs_options.d.ts.map +1 -0
  54. package/dist/core/ecs/entity.d.cts +4 -4
  55. package/dist/core/ecs/entity.d.ts +4 -4
  56. package/dist/core/ecs/entity_allocator.d.cts +24 -22
  57. package/dist/core/ecs/entity_allocator.d.ts +24 -22
  58. package/dist/core/ecs/entity_allocator.d.ts.map +1 -1
  59. package/dist/core/ecs/event.d.cts +37 -23
  60. package/dist/core/ecs/event.d.ts +37 -23
  61. package/dist/core/ecs/event.d.ts.map +1 -1
  62. package/dist/core/ecs/facades.d.cts +12 -126
  63. package/dist/core/ecs/facades.d.ts +12 -126
  64. package/dist/core/ecs/facades.d.ts.map +1 -1
  65. package/dist/core/ecs/frame_stepper.d.cts +12 -12
  66. package/dist/core/ecs/frame_stepper.d.ts +12 -12
  67. package/dist/core/ecs/frame_stepper.d.ts.map +1 -1
  68. package/dist/core/ecs/frame_trace.d.cts +34 -34
  69. package/dist/core/ecs/frame_trace.d.ts +34 -34
  70. package/dist/core/ecs/frame_trace.d.ts.map +1 -1
  71. package/dist/core/ecs/host_commands.d.cts +107 -89
  72. package/dist/core/ecs/host_commands.d.ts +107 -89
  73. package/dist/core/ecs/host_commands.d.ts.map +1 -1
  74. package/dist/core/ecs/index.d.cts +22 -12
  75. package/dist/core/ecs/index.d.ts +22 -12
  76. package/dist/core/ecs/index.d.ts.map +1 -1
  77. package/dist/core/ecs/observer.d.cts +41 -122
  78. package/dist/core/ecs/observer.d.ts +41 -122
  79. package/dist/core/ecs/observer.d.ts.map +1 -1
  80. package/dist/core/ecs/phase.d.cts +79 -0
  81. package/dist/core/ecs/phase.d.ts +79 -0
  82. package/dist/core/ecs/phase.d.ts.map +1 -0
  83. package/dist/core/ecs/plugin.d.cts +125 -0
  84. package/dist/core/ecs/plugin.d.ts +125 -0
  85. package/dist/core/ecs/plugin.d.ts.map +1 -0
  86. package/dist/core/ecs/plugin_slots.d.cts +26 -0
  87. package/dist/core/ecs/plugin_slots.d.ts +26 -0
  88. package/dist/core/ecs/plugin_slots.d.ts.map +1 -0
  89. package/dist/core/ecs/query.d.cts +219 -568
  90. package/dist/core/ecs/query.d.ts +219 -568
  91. package/dist/core/ecs/query.d.ts.map +1 -1
  92. package/dist/core/ecs/query_cache.d.cts +130 -0
  93. package/dist/core/ecs/query_cache.d.ts +130 -0
  94. package/dist/core/ecs/query_cache.d.ts.map +1 -0
  95. package/dist/core/ecs/query_registry.d.cts +47 -0
  96. package/dist/core/ecs/query_registry.d.ts +47 -0
  97. package/dist/core/ecs/query_registry.d.ts.map +1 -0
  98. package/dist/core/ecs/query_terms.d.cts +126 -0
  99. package/dist/core/ecs/query_terms.d.ts +126 -0
  100. package/dist/core/ecs/query_terms.d.ts.map +1 -0
  101. package/dist/core/ecs/ref.d.cts +129 -16
  102. package/dist/core/ecs/ref.d.ts +129 -16
  103. package/dist/core/ecs/ref.d.ts.map +1 -1
  104. package/dist/core/ecs/relation.d.cts +105 -186
  105. package/dist/core/ecs/relation.d.ts +105 -186
  106. package/dist/core/ecs/relation.d.ts.map +1 -1
  107. package/dist/core/ecs/resource.d.cts +14 -14
  108. package/dist/core/ecs/resource.d.ts +14 -14
  109. package/dist/core/ecs/resource_registry.d.cts +6 -6
  110. package/dist/core/ecs/resource_registry.d.ts +6 -6
  111. package/dist/core/ecs/resource_registry.d.ts.map +1 -1
  112. package/dist/core/ecs/row_kinds.d.cts +24 -0
  113. package/dist/core/ecs/row_kinds.d.ts +24 -0
  114. package/dist/core/ecs/row_kinds.d.ts.map +1 -0
  115. package/dist/core/ecs/run_condition.d.cts +23 -23
  116. package/dist/core/ecs/run_condition.d.ts +23 -23
  117. package/dist/core/ecs/run_condition.d.ts.map +1 -1
  118. package/dist/core/ecs/schedule.d.cts +98 -114
  119. package/dist/core/ecs/schedule.d.ts +98 -114
  120. package/dist/core/ecs/schedule.d.ts.map +1 -1
  121. package/dist/core/ecs/schedule_plan.d.cts +33 -0
  122. package/dist/core/ecs/schedule_plan.d.ts +33 -0
  123. package/dist/core/ecs/schedule_plan.d.ts.map +1 -0
  124. package/dist/core/ecs/snapshot.d.cts +77 -0
  125. package/dist/core/ecs/snapshot.d.ts +77 -0
  126. package/dist/core/ecs/snapshot.d.ts.map +1 -0
  127. package/dist/core/ecs/snapshot_mount.d.cts +42 -0
  128. package/dist/core/ecs/snapshot_mount.d.ts +42 -0
  129. package/dist/core/ecs/snapshot_mount.d.ts.map +1 -0
  130. package/dist/core/ecs/sparse_store.d.cts +110 -53
  131. package/dist/core/ecs/sparse_store.d.ts +110 -53
  132. package/dist/core/ecs/sparse_store.d.ts.map +1 -1
  133. package/dist/core/ecs/store.d.cts +644 -511
  134. package/dist/core/ecs/store.d.ts +644 -511
  135. package/dist/core/ecs/store.d.ts.map +1 -1
  136. package/dist/core/ecs/store_layout_listener.d.cts +8 -8
  137. package/dist/core/ecs/store_layout_listener.d.ts +8 -8
  138. package/dist/core/ecs/store_types.d.cts +122 -0
  139. package/dist/core/ecs/store_types.d.ts +122 -0
  140. package/dist/core/ecs/store_types.d.ts.map +1 -0
  141. package/dist/core/ecs/system.d.cts +151 -66
  142. package/dist/core/ecs/system.d.ts +151 -66
  143. package/dist/core/ecs/system.d.ts.map +1 -1
  144. package/dist/core/ecs/system_context.d.cts +296 -0
  145. package/dist/core/ecs/system_context.d.ts +296 -0
  146. package/dist/core/ecs/system_context.d.ts.map +1 -0
  147. package/dist/core/ecs/system_set.d.cts +48 -0
  148. package/dist/core/ecs/system_set.d.ts +48 -0
  149. package/dist/core/ecs/system_set.d.ts.map +1 -0
  150. package/dist/core/ecs/utils/arrays.d.cts +15 -1
  151. package/dist/core/ecs/utils/arrays.d.ts +15 -1
  152. package/dist/core/ecs/utils/arrays.d.ts.map +1 -1
  153. package/dist/core/ecs/utils/error.d.cts +87 -4
  154. package/dist/core/ecs/utils/error.d.ts +87 -4
  155. package/dist/core/ecs/utils/error.d.ts.map +1 -1
  156. package/dist/core/ecs/utils/plugin_error.d.cts +10 -0
  157. package/dist/core/ecs/utils/plugin_error.d.ts +10 -0
  158. package/dist/core/ecs/utils/plugin_error.d.ts.map +1 -0
  159. package/dist/core/restore_errors.d.cts +30 -0
  160. package/dist/core/restore_errors.d.ts +30 -0
  161. package/dist/core/restore_errors.d.ts.map +1 -0
  162. package/dist/core/store/action_ring.d.cts +48 -49
  163. package/dist/core/store/action_ring.d.ts +48 -49
  164. package/dist/core/store/action_ring.d.ts.map +1 -1
  165. package/dist/core/store/allocator.d.cts +166 -114
  166. package/dist/core/store/allocator.d.ts +166 -114
  167. package/dist/core/store/allocator.d.ts.map +1 -1
  168. package/dist/core/store/buffer_backed_column.d.cts +21 -22
  169. package/dist/core/store/buffer_backed_column.d.ts +21 -22
  170. package/dist/core/store/buffer_backed_column.d.ts.map +1 -1
  171. package/dist/core/store/column_store.d.cts +138 -100
  172. package/dist/core/store/column_store.d.ts +138 -100
  173. package/dist/core/store/column_store.d.ts.map +1 -1
  174. package/dist/core/store/command_dispatch.d.cts +14 -15
  175. package/dist/core/store/command_dispatch.d.ts +14 -15
  176. package/dist/core/store/command_dispatch.d.ts.map +1 -1
  177. package/dist/core/store/command_ring.d.cts +41 -45
  178. package/dist/core/store/command_ring.d.ts +41 -45
  179. package/dist/core/store/command_ring.d.ts.map +1 -1
  180. package/dist/core/store/descriptor.d.cts +35 -18
  181. package/dist/core/store/descriptor.d.ts +35 -18
  182. package/dist/core/store/descriptor.d.ts.map +1 -1
  183. package/dist/core/store/entity_index.d.cts +34 -35
  184. package/dist/core/store/entity_index.d.ts +34 -35
  185. package/dist/core/store/entity_index.d.ts.map +1 -1
  186. package/dist/core/store/event_ring.d.cts +40 -42
  187. package/dist/core/store/event_ring.d.ts +40 -42
  188. package/dist/core/store/event_ring.d.ts.map +1 -1
  189. package/dist/core/store/extend.d.cts +15 -9
  190. package/dist/core/store/extend.d.ts +15 -9
  191. package/dist/core/store/extend.d.ts.map +1 -1
  192. package/dist/core/store/grow.d.cts +3 -3
  193. package/dist/core/store/grow.d.ts +3 -3
  194. package/dist/core/store/grow.d.ts.map +1 -1
  195. package/dist/core/store/header.d.cts +37 -33
  196. package/dist/core/store/header.d.ts +37 -33
  197. package/dist/core/store/header.d.ts.map +1 -1
  198. package/dist/core/store/index.d.cts +10 -10
  199. package/dist/core/store/index.d.ts +10 -10
  200. package/dist/core/store/index.d.ts.map +1 -1
  201. package/dist/core/store/layout_ops.d.cts +72 -63
  202. package/dist/core/store/layout_ops.d.ts +72 -63
  203. package/dist/core/store/layout_ops.d.ts.map +1 -1
  204. package/dist/core/store/region_table.d.cts +28 -21
  205. package/dist/core/store/region_table.d.ts +28 -21
  206. package/dist/core/store/region_table.d.ts.map +1 -1
  207. package/dist/core/store/snapshot.d.cts +31 -16
  208. package/dist/core/store/snapshot.d.ts +31 -16
  209. package/dist/core/store/snapshot.d.ts.map +1 -1
  210. package/dist/core/store/state_hash.d.cts +14 -14
  211. package/dist/core/store/state_hash.d.ts +14 -14
  212. package/dist/core/store/state_hash.d.ts.map +1 -1
  213. package/dist/core/store/store_regions.d.cts +10 -10
  214. package/dist/core/store/store_regions.d.ts +10 -10
  215. package/dist/core/store/store_regions.d.ts.map +1 -1
  216. package/dist/core/store/vendored_abi/abi.d.cts +27 -2
  217. package/dist/core/store/vendored_abi/abi.d.ts +27 -2
  218. package/dist/core/store/vendored_abi/abi.d.ts.map +1 -1
  219. package/dist/host_commands-B2KMx8O2.cjs +1 -0
  220. package/dist/host_commands-ClVPvhSa.cjs +2 -0
  221. package/dist/host_commands-CwxVQS1z.js +1524 -0
  222. package/dist/host_commands-nJvTy88E.js +1667 -0
  223. package/dist/index.cjs +1 -1
  224. package/dist/index.d.cts +16 -11
  225. package/dist/index.d.ts +16 -11
  226. package/dist/index.d.ts.map +1 -1
  227. package/dist/index.development.cjs +1 -1
  228. package/dist/index.development.js +6709 -5729
  229. package/dist/index.js +5664 -4743
  230. package/dist/internal.cjs +2 -2
  231. package/dist/internal.d.cts +5 -2
  232. package/dist/internal.d.ts +5 -2
  233. package/dist/internal.d.ts.map +1 -1
  234. package/dist/internal.development.cjs +1 -1
  235. package/dist/internal.development.js +70 -20
  236. package/dist/internal.js +138 -83
  237. package/dist/plugins/abi-D3V-QUSf.cjs +1 -0
  238. package/dist/plugins/abi-NP8pNxpd.js +42 -0
  239. package/dist/plugins/arrays-Dr_1hCjL.js +28 -0
  240. package/dist/plugins/arrays-Dt-Joc4i.cjs +1 -0
  241. package/dist/plugins/assertions-gtDVfbnQ.js +6 -0
  242. package/dist/plugins/assertions-z5GQd_bB.cjs +1 -0
  243. package/dist/{extensions → plugins}/editor/editor.d.cts +56 -56
  244. package/dist/{extensions → plugins}/editor/editor.d.ts +56 -56
  245. package/dist/plugins/editor/editor.d.ts.map +1 -0
  246. package/dist/{extensions → plugins}/editor/field_handle.d.cts +13 -13
  247. package/dist/{extensions → plugins}/editor/field_handle.d.ts +13 -13
  248. package/dist/plugins/editor/field_handle.d.ts.map +1 -0
  249. package/dist/plugins/editor/index.d.cts +22 -0
  250. package/dist/plugins/editor/index.d.ts +22 -0
  251. package/dist/plugins/editor/index.d.ts.map +1 -0
  252. package/dist/plugins/editor.cjs +1 -0
  253. package/dist/plugins/editor.d.cts +1 -0
  254. package/dist/plugins/editor.d.ts +1 -0
  255. package/dist/plugins/editor.development.cjs +1 -0
  256. package/dist/{extensions/editor/index.development.js → plugins/editor.development.js} +83 -66
  257. package/dist/{extensions/editor/index.js → plugins/editor.js} +83 -66
  258. package/dist/plugins/events/event_channel.d.cts +13 -0
  259. package/dist/plugins/events/event_channel.d.ts +13 -0
  260. package/dist/plugins/events/event_channel.d.ts.map +1 -0
  261. package/dist/plugins/events/event_registry.d.cts +22 -0
  262. package/dist/plugins/events/event_registry.d.ts +22 -0
  263. package/dist/plugins/events/event_registry.d.ts.map +1 -0
  264. package/dist/plugins/events/facade.d.cts +26 -0
  265. package/dist/plugins/events/facade.d.ts +26 -0
  266. package/dist/plugins/events/facade.d.ts.map +1 -0
  267. package/dist/plugins/events/index.d.cts +10 -0
  268. package/dist/plugins/events/index.d.ts +10 -0
  269. package/dist/plugins/events/index.d.ts.map +1 -0
  270. package/dist/plugins/events.cjs +1 -0
  271. package/dist/plugins/events.d.cts +1 -0
  272. package/dist/plugins/events.d.ts +1 -0
  273. package/dist/plugins/events.development.cjs +1 -0
  274. package/dist/plugins/events.development.js +174 -0
  275. package/dist/plugins/events.js +159 -0
  276. package/dist/plugins/observers/index.d.cts +23 -0
  277. package/dist/plugins/observers/index.d.ts +23 -0
  278. package/dist/plugins/observers/index.d.ts.map +1 -0
  279. package/dist/plugins/observers/observer_registry.d.cts +101 -0
  280. package/dist/plugins/observers/observer_registry.d.ts +101 -0
  281. package/dist/plugins/observers/observer_registry.d.ts.map +1 -0
  282. package/dist/plugins/observers.cjs +1 -0
  283. package/dist/plugins/observers.d.cts +1 -0
  284. package/dist/plugins/observers.d.ts +1 -0
  285. package/dist/plugins/observers.development.cjs +1 -0
  286. package/dist/plugins/observers.development.js +431 -0
  287. package/dist/plugins/observers.js +403 -0
  288. package/dist/plugins/relation_store-BsoegrZh.js +313 -0
  289. package/dist/plugins/relation_store-DQKSnxsm.cjs +1 -0
  290. package/dist/plugins/relation_store-RBhpcE28.cjs +1 -0
  291. package/dist/plugins/relation_store-RqW5Snx6.js +328 -0
  292. package/dist/plugins/relations/builtin_relations.d.cts +48 -0
  293. package/dist/plugins/relations/builtin_relations.d.ts +48 -0
  294. package/dist/plugins/relations/builtin_relations.d.ts.map +1 -0
  295. package/dist/plugins/relations/facade.d.cts +73 -0
  296. package/dist/plugins/relations/facade.d.ts +73 -0
  297. package/dist/plugins/relations/facade.d.ts.map +1 -0
  298. package/dist/plugins/relations/index.d.cts +11 -0
  299. package/dist/plugins/relations/index.d.ts +11 -0
  300. package/dist/plugins/relations/index.d.ts.map +1 -0
  301. package/dist/{core/ecs → plugins/relations}/relation_service.d.cts +93 -105
  302. package/dist/{core/ecs → plugins/relations}/relation_service.d.ts +93 -105
  303. package/dist/plugins/relations/relation_service.d.ts.map +1 -0
  304. package/dist/plugins/relations/relation_store.d.cts +177 -0
  305. package/dist/plugins/relations/relation_store.d.ts +177 -0
  306. package/dist/plugins/relations/relation_store.d.ts.map +1 -0
  307. package/dist/plugins/relations.cjs +1 -0
  308. package/dist/plugins/relations.d.cts +1 -0
  309. package/dist/plugins/relations.d.ts +1 -0
  310. package/dist/plugins/relations.development.cjs +1 -0
  311. package/dist/plugins/relations.development.js +603 -0
  312. package/dist/plugins/relations.js +553 -0
  313. package/dist/plugins/snapshots/index.d.cts +33 -0
  314. package/dist/plugins/snapshots/index.d.ts +33 -0
  315. package/dist/plugins/snapshots/index.d.ts.map +1 -0
  316. package/dist/plugins/snapshots/resume.d.cts +57 -0
  317. package/dist/plugins/snapshots/resume.d.ts +57 -0
  318. package/dist/plugins/snapshots/resume.d.ts.map +1 -0
  319. package/dist/plugins/snapshots/snapshot_service.d.cts +59 -0
  320. package/dist/plugins/snapshots/snapshot_service.d.ts +59 -0
  321. package/dist/plugins/snapshots/snapshot_service.d.ts.map +1 -0
  322. package/dist/plugins/snapshots.cjs +1 -0
  323. package/dist/plugins/snapshots.d.cts +1 -0
  324. package/dist/plugins/snapshots.d.ts +1 -0
  325. package/dist/plugins/snapshots.development.cjs +1 -0
  326. package/dist/plugins/snapshots.development.js +737 -0
  327. package/dist/plugins/snapshots.js +737 -0
  328. package/dist/plugins/solid/index.d.cts +8 -0
  329. package/dist/plugins/solid/index.d.ts +8 -0
  330. package/dist/plugins/solid/index.d.ts.map +1 -0
  331. package/dist/plugins/solid/solid.d.cts +97 -0
  332. package/dist/plugins/solid/solid.d.ts +97 -0
  333. package/dist/plugins/solid/solid.d.ts.map +1 -0
  334. package/dist/plugins/solid.cjs +1 -0
  335. package/dist/plugins/solid.d.cts +1 -0
  336. package/dist/plugins/solid.d.ts +1 -0
  337. package/dist/plugins/solid.development.cjs +1 -0
  338. package/dist/plugins/solid.development.js +319 -0
  339. package/dist/plugins/solid.js +319 -0
  340. package/dist/plugins/workers/index.d.cts +75 -0
  341. package/dist/plugins/workers/index.d.ts +75 -0
  342. package/dist/plugins/workers/index.d.ts.map +1 -0
  343. package/dist/plugins/workers/node_threads.d.cts +25 -0
  344. package/dist/plugins/workers/node_threads.d.ts +25 -0
  345. package/dist/plugins/workers/node_threads.d.ts.map +1 -0
  346. package/dist/plugins/workers/plan.d.cts +61 -0
  347. package/dist/plugins/workers/plan.d.ts +61 -0
  348. package/dist/plugins/workers/plan.d.ts.map +1 -0
  349. package/dist/plugins/workers/pool.d.cts +144 -0
  350. package/dist/plugins/workers/pool.d.ts +144 -0
  351. package/dist/plugins/workers/pool.d.ts.map +1 -0
  352. package/dist/plugins/workers/protocol.d.cts +112 -0
  353. package/dist/plugins/workers/protocol.d.ts +112 -0
  354. package/dist/plugins/workers/protocol.d.ts.map +1 -0
  355. package/dist/plugins/workers/worker_bind.d.cts +64 -0
  356. package/dist/plugins/workers/worker_bind.d.ts +64 -0
  357. package/dist/plugins/workers/worker_bind.d.ts.map +1 -0
  358. package/dist/plugins/workers/worker_loop.d.cts +14 -0
  359. package/dist/plugins/workers/worker_loop.d.ts +14 -0
  360. package/dist/plugins/workers/worker_loop.d.ts.map +1 -0
  361. package/dist/plugins/workers.cjs +1 -0
  362. package/dist/plugins/workers.d.cts +1 -0
  363. package/dist/plugins/workers.d.ts +1 -0
  364. package/dist/plugins/workers.development.cjs +1 -0
  365. package/dist/plugins/workers.development.js +596 -0
  366. package/dist/plugins/workers.js +474 -0
  367. package/dist/primitives.cjs +1 -1
  368. package/dist/primitives.d.cts +4 -4
  369. package/dist/primitives.d.ts +4 -4
  370. package/dist/primitives.development.cjs +1 -1
  371. package/dist/primitives.development.js +66 -22
  372. package/dist/primitives.js +66 -22
  373. package/dist/shared-BKl12xF1.js +132 -0
  374. package/dist/shared-Dk-pACZT.cjs +1 -0
  375. package/dist/shared.cjs +1 -1
  376. package/dist/shared.d.cts +7 -7
  377. package/dist/shared.d.ts +7 -7
  378. package/dist/shared.d.ts.map +1 -1
  379. package/dist/shared.development.cjs +1 -1
  380. package/dist/shared.development.js +4 -3
  381. package/dist/shared.js +4 -3
  382. package/dist/topological_sort-Cc_yXqPT.js +346 -0
  383. package/dist/topological_sort-vp1imU6D.cjs +1 -0
  384. package/dist/type_primitives/assertions.d.cts +12 -16
  385. package/dist/type_primitives/assertions.d.ts +12 -16
  386. package/dist/type_primitives/assertions.d.ts.map +1 -1
  387. package/dist/type_primitives/binary_heap/binary_heap.d.cts +2 -6
  388. package/dist/type_primitives/binary_heap/binary_heap.d.ts +2 -6
  389. package/dist/type_primitives/binary_heap/binary_heap.d.ts.map +1 -1
  390. package/dist/type_primitives/bitset/bitset.d.cts +7 -11
  391. package/dist/type_primitives/bitset/bitset.d.ts +7 -11
  392. package/dist/type_primitives/bitset/bitset.d.ts.map +1 -1
  393. package/dist/type_primitives/brand.d.cts +2 -7
  394. package/dist/type_primitives/brand.d.ts +2 -7
  395. package/dist/type_primitives/brand.d.ts.map +1 -1
  396. package/dist/type_primitives/error.d.cts +1 -2
  397. package/dist/type_primitives/error.d.ts +1 -2
  398. package/dist/type_primitives/error.d.ts.map +1 -1
  399. package/dist/type_primitives/index.d.cts +1 -1
  400. package/dist/type_primitives/index.d.ts +1 -1
  401. package/dist/type_primitives/sparse_map/sparse_map.d.cts +3 -7
  402. package/dist/type_primitives/sparse_map/sparse_map.d.ts +3 -7
  403. package/dist/type_primitives/sparse_map/sparse_map.d.ts.map +1 -1
  404. package/dist/type_primitives/sparse_set/sparse_set.d.cts +2 -6
  405. package/dist/type_primitives/sparse_set/sparse_set.d.ts +2 -6
  406. package/dist/type_primitives/sparse_set/sparse_set.d.ts.map +1 -1
  407. package/dist/type_primitives/topological_sort/topological_sort.d.cts +1 -5
  408. package/dist/type_primitives/topological_sort/topological_sort.d.ts +1 -5
  409. package/dist/type_primitives/topological_sort/topological_sort.d.ts.map +1 -1
  410. package/dist/type_primitives/typed_arrays/typed_arrays.d.cts +18 -17
  411. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +18 -17
  412. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts.map +1 -1
  413. package/dist/utils/error.d.ts.map +1 -1
  414. package/dist/version.d.cts +4 -4
  415. package/dist/version.d.ts +4 -4
  416. package/dist/worker.cjs +1 -0
  417. package/dist/worker.d.cts +17 -0
  418. package/dist/worker.d.ts +17 -0
  419. package/dist/worker.d.ts.map +1 -0
  420. package/dist/worker.development.cjs +1 -0
  421. package/dist/worker.development.js +253 -0
  422. package/dist/worker.js +253 -0
  423. package/package.json +363 -191
  424. package/dist/core/ecs/builtin_relations.d.cts +0 -43
  425. package/dist/core/ecs/builtin_relations.d.ts +0 -43
  426. package/dist/core/ecs/builtin_relations.d.ts.map +0 -1
  427. package/dist/core/ecs/event_registry.d.cts +0 -22
  428. package/dist/core/ecs/event_registry.d.ts +0 -22
  429. package/dist/core/ecs/event_registry.d.ts.map +0 -1
  430. package/dist/core/ecs/relation_service.d.ts.map +0 -1
  431. package/dist/core/ecs/resume.d.cts +0 -85
  432. package/dist/core/ecs/resume.d.ts +0 -85
  433. package/dist/core/ecs/resume.d.ts.map +0 -1
  434. package/dist/core/ecs/snapshot_service.d.cts +0 -94
  435. package/dist/core/ecs/snapshot_service.d.ts +0 -94
  436. package/dist/core/ecs/snapshot_service.d.ts.map +0 -1
  437. package/dist/extensions/editor/editor.d.ts.map +0 -1
  438. package/dist/extensions/editor/field_handle.d.ts.map +0 -1
  439. package/dist/extensions/editor/index.cjs +0 -1
  440. package/dist/extensions/editor/index.d.cts +0 -21
  441. package/dist/extensions/editor/index.d.ts +0 -21
  442. package/dist/extensions/editor/index.d.ts.map +0 -1
  443. package/dist/extensions/editor/index.development.cjs +0 -1
  444. package/dist/extensions/reactive/ecs_sync.d.cts +0 -214
  445. package/dist/extensions/reactive/ecs_sync.d.ts +0 -214
  446. package/dist/extensions/reactive/ecs_sync.d.ts.map +0 -1
  447. package/dist/extensions/reactive/index.cjs +0 -1
  448. package/dist/extensions/reactive/index.d.cts +0 -23
  449. package/dist/extensions/reactive/index.d.ts +0 -23
  450. package/dist/extensions/reactive/index.d.ts.map +0 -1
  451. package/dist/extensions/reactive/index.development.cjs +0 -1
  452. package/dist/extensions/reactive/index.development.js +0 -215
  453. package/dist/extensions/reactive/index.js +0 -215
  454. package/dist/extensions/solid/index.cjs +0 -1
  455. package/dist/extensions/solid/index.d.cts +0 -6
  456. package/dist/extensions/solid/index.d.ts +0 -6
  457. package/dist/extensions/solid/index.d.ts.map +0 -1
  458. package/dist/extensions/solid/index.development.cjs +0 -1
  459. package/dist/extensions/solid/index.development.js +0 -40
  460. package/dist/extensions/solid/index.js +0 -36
  461. package/dist/extensions/solid/kernel_solid.d.cts +0 -45
  462. package/dist/extensions/solid/kernel_solid.d.ts +0 -45
  463. package/dist/extensions/solid/kernel_solid.d.ts.map +0 -1
  464. package/dist/host_commands-3jyFfWNg.js +0 -2326
  465. package/dist/host_commands-DNf0f6ko.cjs +0 -1
  466. package/dist/internal-C9jjL90H.js +0 -2485
  467. package/dist/internal-RZN14uMw.cjs +0 -2
  468. package/dist/interop-CT-REx0W.cjs +0 -1
  469. package/dist/interop-CcY6ASQc.js +0 -18
  470. package/dist/interop-DqxleBo7.js +0 -18
  471. package/dist/interop-T1HZ-Dpa.cjs +0 -1
  472. package/dist/kernel-Cz2Kxlwl.js +0 -240
  473. package/dist/kernel-DgyrLFjW.js +0 -227
  474. package/dist/kernel-sw7ScKWu.cjs +0 -1
  475. package/dist/kernel-yWV3XnAb.cjs +0 -1
  476. package/dist/reactive/array.d.cts +0 -24
  477. package/dist/reactive/array.d.ts +0 -24
  478. package/dist/reactive/array.d.ts.map +0 -1
  479. package/dist/reactive/index.cjs +0 -1
  480. package/dist/reactive/index.d.cts +0 -11
  481. package/dist/reactive/index.d.ts +0 -11
  482. package/dist/reactive/index.d.ts.map +0 -1
  483. package/dist/reactive/index.development.cjs +0 -1
  484. package/dist/reactive/index.development.js +0 -18
  485. package/dist/reactive/index.js +0 -18
  486. package/dist/reactive/interop.d.cts +0 -19
  487. package/dist/reactive/interop.d.ts +0 -19
  488. package/dist/reactive/interop.d.ts.map +0 -1
  489. package/dist/reactive/kernel.d.cts +0 -73
  490. package/dist/reactive/kernel.d.ts +0 -73
  491. package/dist/reactive/kernel.d.ts.map +0 -1
  492. package/dist/reactive/map.d.cts +0 -16
  493. package/dist/reactive/map.d.ts +0 -16
  494. package/dist/reactive/map.d.ts.map +0 -1
  495. package/dist/reactive/shallow.d.cts +0 -11
  496. package/dist/reactive/shallow.d.ts +0 -11
  497. package/dist/reactive/shallow.d.ts.map +0 -1
  498. package/dist/reactive/struct.d.cts +0 -10
  499. package/dist/reactive/struct.d.ts +0 -10
  500. package/dist/reactive/struct.d.ts.map +0 -1
  501. package/dist/shallow-9S1pY_Iw.js +0 -159
  502. package/dist/shallow-C5YmTbtb.cjs +0 -1
  503. package/dist/shallow-DQ8aG51_.cjs +0 -1
  504. package/dist/shallow-DfnAm9vG.js +0 -150
  505. package/dist/shared-BMXh9hxm.cjs +0 -1
  506. package/dist/shared-DQKK0i-E.js +0 -109
  507. package/dist/topological_sort-BDvEyb9W.cjs +0 -1
  508. package/dist/topological_sort-DK6EjpWa.js +0 -135
  509. package/dist/typed_arrays-BcXcnzB4.js +0 -258
  510. package/dist/typed_arrays-D3NmwtCG.cjs +0 -1
@@ -1,62 +1,59 @@
1
1
  /**
2
- * Command ring WASM-side producer / TS-side consumer SPSC ring buffer
3
- * for structural-change intents emitted during `sim.tick()`. Plan §7.5
4
- * (`docs/ideas/buffer-wasm-sim-plan-2026-05-14T1600.md`).
2
+ * Command ring. A WASM-side producer and TS-side consumer SPSC ring buffer
3
+ * for structural-change intents emitted during `sim.tick()`.
5
4
  *
6
5
  * Layout:
7
6
  *
8
- * [ write_head: u32 ] slot 0..N-1, monotonic (NOT slot-modulo)
7
+ * [ write_head: u32 ] slot 0..N-1, monotonic (not slot-modulo)
9
8
  * [ read_head: u32 ] slot 0..N-1, monotonic
10
9
  * [ capacity: u32 ] slot count, power-of-two
11
- * [ overflow: u32 ] 0 = OK; 1 = WASM exhausted the ring this tick
10
+ * [ overflow: u32 ] 0 = OK, 1 = WASM exhausted the ring this tick
12
11
  * [ slot 0: 16 B ] opCode: u8, payload: [15]u8
13
12
  * [ slot 1: 16 B ] ...
14
13
  * ...
15
14
  *
16
- * SPSC contract (Phase 4 scope):
17
- * - Producer: WASM `sim.tick()`. Pushes 0..N commands during one tick;
15
+ * SPSC contract (single host thread):
16
+ * - Producer: the WASM tick. It pushes 0..N commands during one tick and
18
17
  * bumps `write_head` after each.
19
18
  * - Consumer: TS host, immediately after `wasm.tick()` returns. Drains
20
- * 0..N pending commands; bumps `read_head` after each.
21
- * - The two never run concurrently in Phase 4 (single host thread
22
- * orchestrates both). Phase 5's worker offload promotes the head
23
- * bumps to `Atomics.store`; that's an additive change without
19
+ * 0..N pending commands. Bumps `read_head` after each.
20
+ * - The two never run concurrently (one host thread orchestrates
21
+ * both). A later worker offload promotes the head
22
+ * bumps to `Atomics.store`. That's an additive change without
24
23
  * altering the layout.
25
24
  *
26
25
  * Overflow:
27
26
  * - If WASM would write a slot when (`write_head - read_head == capacity`),
28
27
  * it sets `overflow = 1` and drops the command. TS treats overflow as
29
- * a hard error in dev builds; production logs and continues (a command
28
+ * a hard error in dev builds. Production logs and continues (a command
30
29
  * might be lost rather than crash the host).
31
30
  *
32
- * Slot format (plan §7.5):
31
+ * Slot format:
33
32
  * byte 0: opCode (u8). 0 is reserved as the empty-slot marker
34
- * (`COMMAND_OP_EMPTY`); all other codes are consumer-defined.
35
- * The engine never interprets a code — it drains
36
- * `(opCode, payload)` and hands them to the attached
37
- * consumer, which owns the opcode enum + payload codecs (the
38
- * game's live in `@internal/sim`'s `command_payloads.ts`).
33
+ * (`COMMAND_OP_EMPTY`), and every other code is
34
+ * consumer-defined. The engine never interprets a code. It
35
+ * drains `(opCode, payload)` and hands them to the attached
36
+ * consumer, which owns the opcode enum and the payload codecs.
39
37
  * bytes 1..15: payload, op-specific. Multi-byte fields may be
40
- * unaligned within the payload; readers must use byte-
41
- * oriented helpers (DataView in TS, `mem.readInt` in Zig).
38
+ * unaligned within the payload. Readers must use byte-
39
+ * oriented helpers, such as a `DataView` in TS.
42
40
  *
43
- * The ring lives BEFORE the layout-descriptor region in the SAB (right
44
- * after the 32-byte header) so its offset is stable across descriptor /
45
- * column-region growth. The host writes `header.command_ring_off` to
46
- * point at it during `createColumnStore`; absent ring is signalled by
41
+ * The ring lives before the layout-descriptor region in the SAB (right
42
+ * after the `STORE_HEADER_BYTES` header) so its offset is stable across
43
+ * descriptor growth and column-region growth. The host writes `header.command_ring_off` to
44
+ * point at it during `createColumnStore`. Absent ring is signalled by
47
45
  * `command_ring_off === 0`.
48
46
  */
49
47
  /** Total bytes for the ring header. */
50
48
  export declare const COMMAND_RING_HEADER_BYTES = 16;
51
- /** Fixed slot size 1-byte opCode + 15-byte payload. */
49
+ /** Fixed slot size, 1-byte opCode + 15-byte payload. */
52
50
  export declare const COMMAND_RING_SLOT_BYTES = 16;
53
51
  /** Default ring capacity in slots. 256 × 16 B = 4 KiB of ring data plus
54
- * 16 B header. Sized for the worst-case burst (peak spawn intents per
55
- * tick) × small safety margin. Tune up if a Phase 4 burst pushes past it
56
- * in the bench harness. */
52
+ * 16 B header. Sized for the worst-case burst of spawn intents in one tick,
53
+ * with a small safety margin. Tune it up when a burst pushes past it. */
57
54
  export declare const COMMAND_RING_DEFAULT_CAPACITY_SLOTS = 256;
58
- /** Byte offsets within the ring header. Mirrored on the Zig side in
59
- * `packages/sim/src/command_ring.zig` keep in sync. */
55
+ /** Byte offsets within the ring header. A reader on the module side mirrors
56
+ * these offsets, so a change here is an ABI change. */
60
57
  export declare const COMMAND_RING_HEADER_OFFSETS: {
61
58
  readonly write_head: 0;
62
59
  readonly read_head: 4;
@@ -65,9 +62,8 @@ export declare const COMMAND_RING_HEADER_OFFSETS: {
65
62
  };
66
63
  /** Op-code `0` is reserved across the SAB layer as the empty-slot marker
67
64
  * so a zero-initialised SAB doesn't appear to hold a valid command (mirror
68
- * of `EVENT_OP_EMPTY`). All non-zero codes are opaque to the engine
69
- * the attached consumer owns the opcode enum + payload codecs (the game's
70
- * `COMMAND_OP` + `SpawnUnitFields` live in `@internal/sim`). */
65
+ * of `EVENT_OP_EMPTY`). Every non-zero code is opaque to the engine, and
66
+ * the attached consumer owns the opcode enum and the payload codecs. */
71
67
  export declare const COMMAND_OP_EMPTY = 0;
72
68
  /** Total bytes the ring occupies for `capacity_slots` slots. */
73
69
  export declare function commandRingBytes(capacitySlots: number): number;
@@ -75,26 +71,26 @@ export declare class CommandRingError extends Error {
75
71
  constructor(message: string);
76
72
  }
77
73
  /** Initialise the ring header at `ringOff` in the SAB. Zeroes
78
- * `write_head`, `read_head`, and `overflow_flag`; sets `capacity_slots`.
74
+ * `write_head`, `read_head`, and `overflow_flag`. Sets `capacity_slots`.
79
75
  * Slot bytes are left as-is (callers normally allocate the ring on a
80
76
  * fresh, zero-initialised SAB). */
81
77
  export declare function initCommandRing(view: DataView, ringOff: number, capacitySlots: number): void;
82
78
  /** Read live ring-header field. */
83
- export declare function ringWriteHead(view: DataView, ringOff: number): number;
84
- export declare function ringReadHead(view: DataView, ringOff: number): number;
85
- export declare function ringCapacitySlots(view: DataView, ringOff: number): number;
86
- export declare function ringOverflow(view: DataView, ringOff: number): boolean;
79
+ export declare function commandRingWriteHead(view: DataView, ringOff: number): number;
80
+ export declare function commandRingReadHead(view: DataView, ringOff: number): number;
81
+ export declare function commandRingCapacitySlots(view: DataView, ringOff: number): number;
82
+ export declare function commandRingOverflow(view: DataView, ringOff: number): boolean;
87
83
  /** Pending command count = `(write_head - read_head) mod 2^32`. The
88
- * `>>> 0` keeps the result a u32 in the wrap-around case (rings live for
89
- * the host's lifetime; 2^32 commands at 50 Hz 2 years, but the
90
- * arithmetic should be correct regardless). */
84
+ * `>>> 0` keeps the result a u32 in the wrap-around case. A ring lives for
85
+ * the host's lifetime, so a long-lived host can reach the wrap, and the
86
+ * arithmetic has to stay correct there. */
91
87
  export declare function pendingCommandCount(view: DataView, ringOff: number): number;
92
- /** Push a command into the ring from the TS side. Production producer is
93
- * WASM (via `command_ring.zig`); this is for host-side tests and for
94
- * symmetric tests across the two sides. Returns `false` on overflow and
88
+ /** Push a command into the ring from the TS side. The production producer is
89
+ * the WASM module, through its own ring writer. This is for host-side tests
90
+ * and for symmetric tests across the two sides. Returns `false` on overflow and
95
91
  * sets the overflow flag. Payload must be exactly 15 bytes. */
96
92
  export declare function pushCommand(view: DataView, ringOff: number, opCode: number, payload: Uint8Array): boolean;
97
- /** Read one command from the ring. Returns opCode (0 = empty/no
93
+ /** Read one command from the ring. Returns opCode (0 = empty, no
98
94
  * command) and fills `outPayload` (15 bytes) with the slot's payload.
99
95
  * When 0 is returned, `outPayload` is untouched. */
100
96
  export declare function popCommand(view: DataView, ringOff: number, outPayload: Uint8Array): number;
@@ -1,62 +1,59 @@
1
1
  /**
2
- * Command ring WASM-side producer / TS-side consumer SPSC ring buffer
3
- * for structural-change intents emitted during `sim.tick()`. Plan §7.5
4
- * (`docs/ideas/buffer-wasm-sim-plan-2026-05-14T1600.md`).
2
+ * Command ring. A WASM-side producer and TS-side consumer SPSC ring buffer
3
+ * for structural-change intents emitted during `sim.tick()`.
5
4
  *
6
5
  * Layout:
7
6
  *
8
- * [ write_head: u32 ] slot 0..N-1, monotonic (NOT slot-modulo)
7
+ * [ write_head: u32 ] slot 0..N-1, monotonic (not slot-modulo)
9
8
  * [ read_head: u32 ] slot 0..N-1, monotonic
10
9
  * [ capacity: u32 ] slot count, power-of-two
11
- * [ overflow: u32 ] 0 = OK; 1 = WASM exhausted the ring this tick
10
+ * [ overflow: u32 ] 0 = OK, 1 = WASM exhausted the ring this tick
12
11
  * [ slot 0: 16 B ] opCode: u8, payload: [15]u8
13
12
  * [ slot 1: 16 B ] ...
14
13
  * ...
15
14
  *
16
- * SPSC contract (Phase 4 scope):
17
- * - Producer: WASM `sim.tick()`. Pushes 0..N commands during one tick;
15
+ * SPSC contract (single host thread):
16
+ * - Producer: the WASM tick. It pushes 0..N commands during one tick and
18
17
  * bumps `write_head` after each.
19
18
  * - Consumer: TS host, immediately after `wasm.tick()` returns. Drains
20
- * 0..N pending commands; bumps `read_head` after each.
21
- * - The two never run concurrently in Phase 4 (single host thread
22
- * orchestrates both). Phase 5's worker offload promotes the head
23
- * bumps to `Atomics.store`; that's an additive change without
19
+ * 0..N pending commands. Bumps `read_head` after each.
20
+ * - The two never run concurrently (one host thread orchestrates
21
+ * both). A later worker offload promotes the head
22
+ * bumps to `Atomics.store`. That's an additive change without
24
23
  * altering the layout.
25
24
  *
26
25
  * Overflow:
27
26
  * - If WASM would write a slot when (`write_head - read_head == capacity`),
28
27
  * it sets `overflow = 1` and drops the command. TS treats overflow as
29
- * a hard error in dev builds; production logs and continues (a command
28
+ * a hard error in dev builds. Production logs and continues (a command
30
29
  * might be lost rather than crash the host).
31
30
  *
32
- * Slot format (plan §7.5):
31
+ * Slot format:
33
32
  * byte 0: opCode (u8). 0 is reserved as the empty-slot marker
34
- * (`COMMAND_OP_EMPTY`); all other codes are consumer-defined.
35
- * The engine never interprets a code — it drains
36
- * `(opCode, payload)` and hands them to the attached
37
- * consumer, which owns the opcode enum + payload codecs (the
38
- * game's live in `@internal/sim`'s `command_payloads.ts`).
33
+ * (`COMMAND_OP_EMPTY`), and every other code is
34
+ * consumer-defined. The engine never interprets a code. It
35
+ * drains `(opCode, payload)` and hands them to the attached
36
+ * consumer, which owns the opcode enum and the payload codecs.
39
37
  * bytes 1..15: payload, op-specific. Multi-byte fields may be
40
- * unaligned within the payload; readers must use byte-
41
- * oriented helpers (DataView in TS, `mem.readInt` in Zig).
38
+ * unaligned within the payload. Readers must use byte-
39
+ * oriented helpers, such as a `DataView` in TS.
42
40
  *
43
- * The ring lives BEFORE the layout-descriptor region in the SAB (right
44
- * after the 32-byte header) so its offset is stable across descriptor /
45
- * column-region growth. The host writes `header.command_ring_off` to
46
- * point at it during `createColumnStore`; absent ring is signalled by
41
+ * The ring lives before the layout-descriptor region in the SAB (right
42
+ * after the `STORE_HEADER_BYTES` header) so its offset is stable across
43
+ * descriptor growth and column-region growth. The host writes `header.command_ring_off` to
44
+ * point at it during `createColumnStore`. Absent ring is signalled by
47
45
  * `command_ring_off === 0`.
48
46
  */
49
47
  /** Total bytes for the ring header. */
50
48
  export declare const COMMAND_RING_HEADER_BYTES = 16;
51
- /** Fixed slot size 1-byte opCode + 15-byte payload. */
49
+ /** Fixed slot size, 1-byte opCode + 15-byte payload. */
52
50
  export declare const COMMAND_RING_SLOT_BYTES = 16;
53
51
  /** Default ring capacity in slots. 256 × 16 B = 4 KiB of ring data plus
54
- * 16 B header. Sized for the worst-case burst (peak spawn intents per
55
- * tick) × small safety margin. Tune up if a Phase 4 burst pushes past it
56
- * in the bench harness. */
52
+ * 16 B header. Sized for the worst-case burst of spawn intents in one tick,
53
+ * with a small safety margin. Tune it up when a burst pushes past it. */
57
54
  export declare const COMMAND_RING_DEFAULT_CAPACITY_SLOTS = 256;
58
- /** Byte offsets within the ring header. Mirrored on the Zig side in
59
- * `packages/sim/src/command_ring.zig` keep in sync. */
55
+ /** Byte offsets within the ring header. A reader on the module side mirrors
56
+ * these offsets, so a change here is an ABI change. */
60
57
  export declare const COMMAND_RING_HEADER_OFFSETS: {
61
58
  readonly write_head: 0;
62
59
  readonly read_head: 4;
@@ -65,9 +62,8 @@ export declare const COMMAND_RING_HEADER_OFFSETS: {
65
62
  };
66
63
  /** Op-code `0` is reserved across the SAB layer as the empty-slot marker
67
64
  * so a zero-initialised SAB doesn't appear to hold a valid command (mirror
68
- * of `EVENT_OP_EMPTY`). All non-zero codes are opaque to the engine
69
- * the attached consumer owns the opcode enum + payload codecs (the game's
70
- * `COMMAND_OP` + `SpawnUnitFields` live in `@internal/sim`). */
65
+ * of `EVENT_OP_EMPTY`). Every non-zero code is opaque to the engine, and
66
+ * the attached consumer owns the opcode enum and the payload codecs. */
71
67
  export declare const COMMAND_OP_EMPTY = 0;
72
68
  /** Total bytes the ring occupies for `capacity_slots` slots. */
73
69
  export declare function commandRingBytes(capacitySlots: number): number;
@@ -75,26 +71,26 @@ export declare class CommandRingError extends Error {
75
71
  constructor(message: string);
76
72
  }
77
73
  /** Initialise the ring header at `ringOff` in the SAB. Zeroes
78
- * `write_head`, `read_head`, and `overflow_flag`; sets `capacity_slots`.
74
+ * `write_head`, `read_head`, and `overflow_flag`. Sets `capacity_slots`.
79
75
  * Slot bytes are left as-is (callers normally allocate the ring on a
80
76
  * fresh, zero-initialised SAB). */
81
77
  export declare function initCommandRing(view: DataView, ringOff: number, capacitySlots: number): void;
82
78
  /** Read live ring-header field. */
83
- export declare function ringWriteHead(view: DataView, ringOff: number): number;
84
- export declare function ringReadHead(view: DataView, ringOff: number): number;
85
- export declare function ringCapacitySlots(view: DataView, ringOff: number): number;
86
- export declare function ringOverflow(view: DataView, ringOff: number): boolean;
79
+ export declare function commandRingWriteHead(view: DataView, ringOff: number): number;
80
+ export declare function commandRingReadHead(view: DataView, ringOff: number): number;
81
+ export declare function commandRingCapacitySlots(view: DataView, ringOff: number): number;
82
+ export declare function commandRingOverflow(view: DataView, ringOff: number): boolean;
87
83
  /** Pending command count = `(write_head - read_head) mod 2^32`. The
88
- * `>>> 0` keeps the result a u32 in the wrap-around case (rings live for
89
- * the host's lifetime; 2^32 commands at 50 Hz 2 years, but the
90
- * arithmetic should be correct regardless). */
84
+ * `>>> 0` keeps the result a u32 in the wrap-around case. A ring lives for
85
+ * the host's lifetime, so a long-lived host can reach the wrap, and the
86
+ * arithmetic has to stay correct there. */
91
87
  export declare function pendingCommandCount(view: DataView, ringOff: number): number;
92
- /** Push a command into the ring from the TS side. Production producer is
93
- * WASM (via `command_ring.zig`); this is for host-side tests and for
94
- * symmetric tests across the two sides. Returns `false` on overflow and
88
+ /** Push a command into the ring from the TS side. The production producer is
89
+ * the WASM module, through its own ring writer. This is for host-side tests
90
+ * and for symmetric tests across the two sides. Returns `false` on overflow and
95
91
  * sets the overflow flag. Payload must be exactly 15 bytes. */
96
92
  export declare function pushCommand(view: DataView, ringOff: number, opCode: number, payload: Uint8Array): boolean;
97
- /** Read one command from the ring. Returns opCode (0 = empty/no
93
+ /** Read one command from the ring. Returns opCode (0 = empty, no
98
94
  * command) and fills `outPayload` (15 bytes) with the slot's payload.
99
95
  * When 0 is returned, `outPayload` is untouched. */
100
96
  export declare function popCommand(view: DataView, ringOff: number, outPayload: Uint8Array): number;
@@ -1 +1 @@
1
- {"version":3,"file":"command_ring.d.ts","sourceRoot":"","sources":["../../../src/core/store/command_ring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,uCAAuC;AACvC,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;;2BAG2B;AAC3B,eAAO,MAAM,mCAAmC,MAAM,CAAC;AAEvD;yDACyD;AACzD,eAAO,MAAM,2BAA2B;;;;;CAK9B,CAAC;AAEX;;;;gEAIgE;AAChE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9D;AASD,qBAAa,gBAAiB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI3B;AAED;;;mCAGmC;AACnC,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAU5F;AAED,mCAAmC;AACnC,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpE;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;+CAG+C;AAC/C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;+DAG+D;AAC/D,wBAAgB,WAAW,CAC1B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,GACjB,OAAO,CAmCT;AAED;;oDAEoD;AACpD,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAiB1F;AAED;;;;gEAIgE;AAChE,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,IAAI,GACpD,MAAM,CAWR"}
1
+ {"version":3,"file":"command_ring.d.ts","sourceRoot":"","sources":["../../../src/core/store/command_ring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,uCAAuC;AACvC,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,wDAAwD;AACxD,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;yEAEyE;AACzE,eAAO,MAAM,mCAAmC,MAAM,CAAC;AAEvD;uDACuD;AACvD,eAAO,MAAM,2BAA2B;;;;;CAK9B,CAAC;AAEX;;;wEAGwE;AACxE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9D;AASD,qBAAa,gBAAiB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI3B;AAED;;;mCAGmC;AACnC,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAU5F;AAED,mCAAmC;AACnC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5E;AACD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3E;AACD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhF;AACD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED;;;2CAG2C;AAC3C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;+DAG+D;AAC/D,wBAAgB,WAAW,CAC1B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,GACjB,OAAO,CA2CT;AAED;;oDAEoD;AACpD,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAqB1F;AAED;;;;gEAIgE;AAChE,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,IAAI,GACpD,MAAM,CAWR"}
@@ -1,8 +1,7 @@
1
- import { COLUMN_DESCRIPTOR_BYTES, COLUMN_DESCRIPTOR_OFFSETS, ARCHETYPE_DESCRIPTOR_HEADER_BYTES, ARCHETYPE_DESCRIPTOR_OFFSETS, COMPONENT_MASK_WORDS } from './vendored_abi/abi.cjs';
2
- export { COLUMN_DESCRIPTOR_BYTES, COLUMN_DESCRIPTOR_OFFSETS, ARCHETYPE_DESCRIPTOR_HEADER_BYTES, ARCHETYPE_DESCRIPTOR_OFFSETS, COMPONENT_MASK_WORDS };
1
+ import { COLUMN_DESCRIPTOR_BYTES, COLUMN_DESCRIPTOR_OFFSETS, ARCHETYPE_DESCRIPTOR_HEADER_BYTES, LEGACY_ARCHETYPE_DESCRIPTOR_HEADER_BYTES, ARCHETYPE_DESCRIPTOR_OFFSETS, COMPONENT_MASK_WORDS } from './vendored_abi/abi.cjs';
2
+ export { COLUMN_DESCRIPTOR_BYTES, COLUMN_DESCRIPTOR_OFFSETS, ARCHETYPE_DESCRIPTOR_HEADER_BYTES, LEGACY_ARCHETYPE_DESCRIPTOR_HEADER_BYTES, ARCHETYPE_DESCRIPTOR_OFFSETS, COMPONENT_MASK_WORDS };
3
3
  /** type_tag values for `ColumnDescriptor.type_tag`. The order matches the
4
- * TypedArrayTag union in `packages/std/type_primitives` so a tag's element
5
- * width is `TYPE_TAG_STRIDE[tag]`. */
4
+ * `TypedArrayTag` union, so a tag's element width is `TYPE_TAG_STRIDE[tag]`. */
6
5
  export declare const TYPE_TAG: {
7
6
  readonly u8: 0;
8
7
  readonly i8: 1;
@@ -18,9 +17,9 @@ export type TypeTagValue = (typeof TYPE_TAG)[keyof typeof TYPE_TAG];
18
17
  * `stride = TYPE_TAG_STRIDE[tag]` lookup is O(1) array access. */
19
18
  export declare const TYPE_TAG_STRIDE: Readonly<Record<TypeTagValue, number>>;
20
19
  /** String-tag → numeric-tag bridge. `TypedArrayTag` ("u8", "f32", …) is the
21
- * vocabulary the TS-side component registry speaks; `TypeTagValue` is the
20
+ * vocabulary the TS-side component registry speaks. `TypeTagValue` is the
22
21
  * numeric enum the SAB descriptors carry on the wire. Bridging happens at
23
- * the ECS↔SAB seam Archetype layouts come in as strings, ColumnSpecs go
22
+ * the ECS↔SAB seam. Archetype layouts come in as strings, ColumnSpecs go
24
23
  * out as integers. */
25
24
  export declare const TYPED_ARRAY_TAG_TO_TYPE_TAG: {
26
25
  readonly u8: 0;
@@ -36,20 +35,21 @@ export interface ColumnDescriptor {
36
35
  readonly componentId: number;
37
36
  readonly fieldId: number;
38
37
  readonly typeTag: TypeTagValue;
39
- /** Byte offset of the column's first row, measured from SAB byte 0. */
38
+ /** Byte offset of the column's first row, measured from the store base.
39
+ * A reader adds the base it mounted the store at. */
40
40
  readonly byteOff: number;
41
- /** Element width in bytes; should always equal `TYPE_TAG_STRIDE[type_tag]`. */
41
+ /** Element width in bytes. Should always equal `TYPE_TAG_STRIDE[type_tag]`. */
42
42
  readonly stride: number;
43
43
  }
44
44
  export declare function writeColumnDescriptor(view: DataView, off: number, c: ColumnDescriptor): void;
45
45
  export declare function readColumnDescriptor(view: DataView, off: number): ColumnDescriptor;
46
46
  /** Number of distinct components the cross-language ECS supports:
47
47
  * `COMPONENT_MASK_WORDS × 32` bits in the SAB archetype descriptor mask. The
48
- * Zig side matches archetypes purely on this mask, so a component whose ID is
48
+ * module side matches archetypes purely on this mask, so a component whose id is
49
49
  * ≥ this limit would be invisible there while the heap-side `BitSet` stayed
50
- * correct silently conflating archetypes that differ only in such a
50
+ * correct, silently conflating archetypes that differ only in such a
51
51
  * component. `Store.registerComponent` enforces this as a hard registration
52
- * ceiling so the overflow fails loudly instead (#381). The mask is sized to
52
+ * ceiling so the overflow fails loudly instead. The mask is sized to
53
53
  * the `BitSet`'s `INITIAL_WORD_COUNT`, so a registry within the limit never
54
54
  * grows a component mask past its initial words. */
55
55
  export declare const STORE_DESCRIPTOR_COMPONENT_LIMIT: number;
@@ -60,20 +60,37 @@ export interface ArchetypeDescriptor {
60
60
  readonly componentMask: readonly number[];
61
61
  readonly rowCount: number;
62
62
  readonly rowCapacity: number;
63
- /** Enabled-row count `≤ row_count` (#577 / #599). Per-row entity-scan loops in
64
- * the WASM sim bound on this so disabled entities (swapped to the tail
65
- * `[enabled_count, row_count)`) are not simulated; row-indexed cross-entity
63
+ /** Enabled-row count `≤ row_count`. A compute backend's per-row entity-scan
64
+ * loops bound on this so disabled entities (swapped to the tail
65
+ * `[enabled_count, row_count)`) are not simulated. Row-indexed cross-entity
66
66
  * reads still use `row_count`. */
67
67
  readonly enabledCount: number;
68
68
  readonly columns: readonly ColumnDescriptor[];
69
69
  }
70
70
  /** Total bytes a descriptor will occupy, given its column count. Useful for
71
- * planning the layout descriptor region size up front. */
72
- export declare function archetypeDescriptorBytes(columnCount: number): number;
71
+ * planning the layout descriptor region size up front.
72
+ *
73
+ * `headerBytes` selects the header width and defaults to the current one. Pass
74
+ * `LEGACY_ARCHETYPE_DESCRIPTOR_HEADER_BYTES` to measure a version 0 region.
75
+ * Never pass it when planning a region the store will write. */
76
+ export declare function archetypeDescriptorBytes(columnCount: number, headerBytes?: number): number;
73
77
  export declare function writeArchetypeDescriptor(view: DataView, off: number, d: ArchetypeDescriptor): number;
74
- export declare function readArchetypeDescriptor(view: DataView, off: number): ArchetypeDescriptor;
78
+ /** Read one archetype descriptor at `off`.
79
+ *
80
+ * `headerBytes` says where this record's columns start and defaults to the
81
+ * current header width. A version 0 region needs
82
+ * `LEGACY_ARCHETYPE_DESCRIPTOR_HEADER_BYTES`, because it holds no
83
+ * `entity_ids_off`. Every other field sits at the same offset in both widths,
84
+ * so nothing else here branches on the version. */
85
+ export declare function readArchetypeDescriptor(view: DataView, off: number, headerBytes?: number): ArchetypeDescriptor;
75
86
  export declare function writeLayoutDescriptorRegion(view: DataView, regionOff: number, descriptors: readonly ArchetypeDescriptor[]): number;
76
- export declare function readLayoutDescriptorRegion(view: DataView, regionOff: number, archetypeCount: number): readonly ArchetypeDescriptor[];
87
+ /** Walk `archetypeCount` descriptors from `regionOff`, in written order.
88
+ *
89
+ * `headerBytes` selects the archetype header width, and defaults to the current
90
+ * one. A caller that reads a version 0 store passes
91
+ * `LEGACY_ARCHETYPE_DESCRIPTOR_HEADER_BYTES`, because the record stride is the
92
+ * only thing the narrower header changes. */
93
+ export declare function readLayoutDescriptorRegion(view: DataView, regionOff: number, archetypeCount: number, headerBytes?: number): readonly ArchetypeDescriptor[];
77
94
  /** Total bytes needed for a layout descriptor region holding these archetypes.
78
95
  * Use to size the SAB region between header end and the first column. */
79
96
  export declare function layoutDescriptorRegionBytes(descriptors: readonly ArchetypeDescriptor[]): number;
@@ -1,8 +1,7 @@
1
- import { COLUMN_DESCRIPTOR_BYTES, COLUMN_DESCRIPTOR_OFFSETS, ARCHETYPE_DESCRIPTOR_HEADER_BYTES, ARCHETYPE_DESCRIPTOR_OFFSETS, COMPONENT_MASK_WORDS } from './vendored_abi/abi.js';
2
- export { COLUMN_DESCRIPTOR_BYTES, COLUMN_DESCRIPTOR_OFFSETS, ARCHETYPE_DESCRIPTOR_HEADER_BYTES, ARCHETYPE_DESCRIPTOR_OFFSETS, COMPONENT_MASK_WORDS };
1
+ import { COLUMN_DESCRIPTOR_BYTES, COLUMN_DESCRIPTOR_OFFSETS, ARCHETYPE_DESCRIPTOR_HEADER_BYTES, LEGACY_ARCHETYPE_DESCRIPTOR_HEADER_BYTES, ARCHETYPE_DESCRIPTOR_OFFSETS, COMPONENT_MASK_WORDS } from './vendored_abi/abi.js';
2
+ export { COLUMN_DESCRIPTOR_BYTES, COLUMN_DESCRIPTOR_OFFSETS, ARCHETYPE_DESCRIPTOR_HEADER_BYTES, LEGACY_ARCHETYPE_DESCRIPTOR_HEADER_BYTES, ARCHETYPE_DESCRIPTOR_OFFSETS, COMPONENT_MASK_WORDS };
3
3
  /** type_tag values for `ColumnDescriptor.type_tag`. The order matches the
4
- * TypedArrayTag union in `packages/std/type_primitives` so a tag's element
5
- * width is `TYPE_TAG_STRIDE[tag]`. */
4
+ * `TypedArrayTag` union, so a tag's element width is `TYPE_TAG_STRIDE[tag]`. */
6
5
  export declare const TYPE_TAG: {
7
6
  readonly u8: 0;
8
7
  readonly i8: 1;
@@ -18,9 +17,9 @@ export type TypeTagValue = (typeof TYPE_TAG)[keyof typeof TYPE_TAG];
18
17
  * `stride = TYPE_TAG_STRIDE[tag]` lookup is O(1) array access. */
19
18
  export declare const TYPE_TAG_STRIDE: Readonly<Record<TypeTagValue, number>>;
20
19
  /** String-tag → numeric-tag bridge. `TypedArrayTag` ("u8", "f32", …) is the
21
- * vocabulary the TS-side component registry speaks; `TypeTagValue` is the
20
+ * vocabulary the TS-side component registry speaks. `TypeTagValue` is the
22
21
  * numeric enum the SAB descriptors carry on the wire. Bridging happens at
23
- * the ECS↔SAB seam Archetype layouts come in as strings, ColumnSpecs go
22
+ * the ECS↔SAB seam. Archetype layouts come in as strings, ColumnSpecs go
24
23
  * out as integers. */
25
24
  export declare const TYPED_ARRAY_TAG_TO_TYPE_TAG: {
26
25
  readonly u8: 0;
@@ -36,20 +35,21 @@ export interface ColumnDescriptor {
36
35
  readonly componentId: number;
37
36
  readonly fieldId: number;
38
37
  readonly typeTag: TypeTagValue;
39
- /** Byte offset of the column's first row, measured from SAB byte 0. */
38
+ /** Byte offset of the column's first row, measured from the store base.
39
+ * A reader adds the base it mounted the store at. */
40
40
  readonly byteOff: number;
41
- /** Element width in bytes; should always equal `TYPE_TAG_STRIDE[type_tag]`. */
41
+ /** Element width in bytes. Should always equal `TYPE_TAG_STRIDE[type_tag]`. */
42
42
  readonly stride: number;
43
43
  }
44
44
  export declare function writeColumnDescriptor(view: DataView, off: number, c: ColumnDescriptor): void;
45
45
  export declare function readColumnDescriptor(view: DataView, off: number): ColumnDescriptor;
46
46
  /** Number of distinct components the cross-language ECS supports:
47
47
  * `COMPONENT_MASK_WORDS × 32` bits in the SAB archetype descriptor mask. The
48
- * Zig side matches archetypes purely on this mask, so a component whose ID is
48
+ * module side matches archetypes purely on this mask, so a component whose id is
49
49
  * ≥ this limit would be invisible there while the heap-side `BitSet` stayed
50
- * correct silently conflating archetypes that differ only in such a
50
+ * correct, silently conflating archetypes that differ only in such a
51
51
  * component. `Store.registerComponent` enforces this as a hard registration
52
- * ceiling so the overflow fails loudly instead (#381). The mask is sized to
52
+ * ceiling so the overflow fails loudly instead. The mask is sized to
53
53
  * the `BitSet`'s `INITIAL_WORD_COUNT`, so a registry within the limit never
54
54
  * grows a component mask past its initial words. */
55
55
  export declare const STORE_DESCRIPTOR_COMPONENT_LIMIT: number;
@@ -60,20 +60,37 @@ export interface ArchetypeDescriptor {
60
60
  readonly componentMask: readonly number[];
61
61
  readonly rowCount: number;
62
62
  readonly rowCapacity: number;
63
- /** Enabled-row count `≤ row_count` (#577 / #599). Per-row entity-scan loops in
64
- * the WASM sim bound on this so disabled entities (swapped to the tail
65
- * `[enabled_count, row_count)`) are not simulated; row-indexed cross-entity
63
+ /** Enabled-row count `≤ row_count`. A compute backend's per-row entity-scan
64
+ * loops bound on this so disabled entities (swapped to the tail
65
+ * `[enabled_count, row_count)`) are not simulated. Row-indexed cross-entity
66
66
  * reads still use `row_count`. */
67
67
  readonly enabledCount: number;
68
68
  readonly columns: readonly ColumnDescriptor[];
69
69
  }
70
70
  /** Total bytes a descriptor will occupy, given its column count. Useful for
71
- * planning the layout descriptor region size up front. */
72
- export declare function archetypeDescriptorBytes(columnCount: number): number;
71
+ * planning the layout descriptor region size up front.
72
+ *
73
+ * `headerBytes` selects the header width and defaults to the current one. Pass
74
+ * `LEGACY_ARCHETYPE_DESCRIPTOR_HEADER_BYTES` to measure a version 0 region.
75
+ * Never pass it when planning a region the store will write. */
76
+ export declare function archetypeDescriptorBytes(columnCount: number, headerBytes?: number): number;
73
77
  export declare function writeArchetypeDescriptor(view: DataView, off: number, d: ArchetypeDescriptor): number;
74
- export declare function readArchetypeDescriptor(view: DataView, off: number): ArchetypeDescriptor;
78
+ /** Read one archetype descriptor at `off`.
79
+ *
80
+ * `headerBytes` says where this record's columns start and defaults to the
81
+ * current header width. A version 0 region needs
82
+ * `LEGACY_ARCHETYPE_DESCRIPTOR_HEADER_BYTES`, because it holds no
83
+ * `entity_ids_off`. Every other field sits at the same offset in both widths,
84
+ * so nothing else here branches on the version. */
85
+ export declare function readArchetypeDescriptor(view: DataView, off: number, headerBytes?: number): ArchetypeDescriptor;
75
86
  export declare function writeLayoutDescriptorRegion(view: DataView, regionOff: number, descriptors: readonly ArchetypeDescriptor[]): number;
76
- export declare function readLayoutDescriptorRegion(view: DataView, regionOff: number, archetypeCount: number): readonly ArchetypeDescriptor[];
87
+ /** Walk `archetypeCount` descriptors from `regionOff`, in written order.
88
+ *
89
+ * `headerBytes` selects the archetype header width, and defaults to the current
90
+ * one. A caller that reads a version 0 store passes
91
+ * `LEGACY_ARCHETYPE_DESCRIPTOR_HEADER_BYTES`, because the record stride is the
92
+ * only thing the narrower header changes. */
93
+ export declare function readLayoutDescriptorRegion(view: DataView, regionOff: number, archetypeCount: number, headerBytes?: number): readonly ArchetypeDescriptor[];
77
94
  /** Total bytes needed for a layout descriptor region holding these archetypes.
78
95
  * Use to size the SAB region between header end and the first column. */
79
96
  export declare function layoutDescriptorRegionBytes(descriptors: readonly ArchetypeDescriptor[]): number;
@@ -1 +1 @@
1
- {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../../src/core/store/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAeH,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,iCAAiC,EACjC,4BAA4B,EAC5B,oBAAoB,EACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,iCAAiC,EACjC,4BAA4B,EAC5B,oBAAoB,EACpB,CAAC;AAEF;;sCAEsC;AACtC,eAAO,MAAM,QAAQ;;;;;;;;;CASX,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEpE;kEACkE;AAClE,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CASjE,CAAC;AAEH;;;;sBAIsB;AACtB,eAAO,MAAM,2BAA2B;;;;;;;;;CAS9B,CAAC;AAUX,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAS5F;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAQlF;AAeD;;;;;;;;oDAQoD;AACpD,eAAO,MAAM,gCAAgC,QAA4B,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;uDACmD;IACnD,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;sCAGkC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC9C;AAED;0DAC0D;AAC1D,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,mBAAmB,GACpB,MAAM,CAoBR;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAuBxF;AAcD,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,SAAS,mBAAmB,EAAE,GACzC,MAAM,CAMR;AAED,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACpB,SAAS,mBAAmB,EAAE,CAShC;AAED;yEACyE;AACzE,wBAAgB,2BAA2B,CAC1C,WAAW,EAAE,SAAS,mBAAmB,EAAE,GACzC,MAAM,CAMR"}
1
+ {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../../src/core/store/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAYH,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,iCAAiC,EACjC,wCAAwC,EACxC,4BAA4B,EAC5B,oBAAoB,EACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,iCAAiC,EACjC,wCAAwC,EACxC,4BAA4B,EAC5B,oBAAoB,EACpB,CAAC;AAEF;gFACgF;AAChF,eAAO,MAAM,QAAQ;;;;;;;;;CASX,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEpE;kEACkE;AAClE,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CASjE,CAAC;AAEH;;;;sBAIsB;AACtB,eAAO,MAAM,2BAA2B;;;;;;;;;CAS9B,CAAC;AAWX,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B;yDACqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAS5F;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAQlF;AAkBD;;;;;;;;oDAQoD;AACpD,eAAO,MAAM,gCAAgC,QAA4B,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;uDACmD;IACnD,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;sCAGkC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC9C;AAED;;;;;gEAKgE;AAChE,wBAAgB,wBAAwB,CACvC,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAA0C,GACrD,MAAM,CAER;AAED,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,mBAAmB,GACpB,MAAM,CAyBR;AAED;;;;;;mDAMmD;AACnD,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,MAA0C,GACrD,mBAAmB,CAuBrB;AAcD,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,SAAS,mBAAmB,EAAE,GACzC,MAAM,CAMR;AAED;;;;;6CAK6C;AAC7C,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,WAAW,GAAE,MAA0C,GACrD,SAAS,mBAAmB,EAAE,CAShC;AAED;yEACyE;AACzE,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,GAAG,MAAM,CAM/F"}