@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
@@ -5,14 +5,14 @@ import { COMMAND_RING_DEFAULT_CAPACITY_SLOTS } from './command_ring.cjs';
5
5
  import { ENTITY_INDEX_DEFAULT_CAPACITY } from './entity_index.cjs';
6
6
  import { EVENT_RING_DEFAULT_CAPACITY_SLOTS } from './event_ring.cjs';
7
7
  import { StoreRegionSpec } from './region_table.cjs';
8
- /** Caller-facing column spec no `byte_off` yet, the store computes it. */
8
+ /** Caller-facing column spec, no `byte_off` yet, the store computes it. */
9
9
  export interface ColumnSpec {
10
10
  readonly componentId: number;
11
11
  readonly fieldId: number;
12
12
  readonly typeTag: TypeTagValue;
13
13
  }
14
- /** Caller-facing archetype spec no `column_count` (derived) and no
15
- * `byte_off`s in the columns; both are computed during sizing. */
14
+ /** Caller-facing archetype spec, no `column_count` (derived) and no
15
+ * `byte_off`s in the columns. Both are computed during sizing. */
16
16
  export interface ArchetypeSpec {
17
17
  readonly archetypeId: number;
18
18
  /** Component bitmask, `COMPONENT_MASK_WORDS` little-endian u32 words. */
@@ -20,9 +20,10 @@ export interface ArchetypeSpec {
20
20
  readonly rowCapacity: number;
21
21
  readonly columns: readonly ColumnSpec[];
22
22
  }
23
- /** A single column's view after allocation. The `byte_off` matches what
24
- * was recorded in the layout descriptor; `view` is a TypedArray of the
25
- * right element type, length `row_capacity`, backed by the SAB. */
23
+ /** A single column's view after allocation. `byteOff` matches what the layout
24
+ * descriptor records, so it is measured from the store base. `view` is a
25
+ * TypedArray of the right element type, length `row_capacity`, and its
26
+ * `byteOffset` is `storeBase + byteOff`. */
26
27
  export interface ColumnView {
27
28
  readonly componentId: number;
28
29
  readonly fieldId: number;
@@ -35,7 +36,7 @@ export interface ColumnView {
35
36
  * key encoding `(component_id, field_id)` so a (cid, fid) pair maps to
36
37
  * its column in O(1). The encoding (see `columnKey`) is dense over
37
38
  * (cid: 0..65535, fid: 0..65535), letting V8 keep this as a
38
- * Number-keyed `Map` meaningfully faster than the previous string
39
+ * Number-keyed `Map`, meaningfully faster than the previous string
39
40
  * keys (no per-lookup template-string allocation, no string hashing).
40
41
  * The row order matches `ArchetypeSpec.columns`. The
41
42
  * `component_mask` words mirror what's in the SAB layout descriptor so
@@ -51,13 +52,20 @@ export interface ArchetypeViews {
51
52
  }
52
53
  export interface ColumnStore {
53
54
  /** The backing buffer. `ArrayBufferLike` because the store is backing-agnostic:
54
- * a `SharedArrayBuffer` for the SAB/WASM/worker profile, or a plain fixed
55
- * `ArrayBuffer` for the pure-TS heap profile (`heapArraybufferAllocator`).
56
- * Consumers that genuinely require sharing (worker transfer, WASM memory)
57
- * narrow back to `SharedArrayBuffer` at their boundary. */
55
+ * a `SharedArrayBuffer` for the SAB, WASM and worker profile, or a plain fixed
56
+ * `ArrayBuffer` for the pure-TS heap profile (`heapArrayBufferAllocator`).
57
+ * A consumer that genuinely requires sharing (worker transfer, WASM memory)
58
+ * narrows back to `SharedArrayBuffer` at its own boundary. */
58
59
  readonly buffer: ArrayBufferLike;
60
+ /** A `DataView` whose start is the store base, so every relative offset the
61
+ * header and the descriptors carry indexes it directly. */
59
62
  readonly view: DataView;
60
63
  readonly header: StoreHeader;
64
+ /** Byte offset of the header inside `buffer`. Every other offset in the
65
+ * store is relative to this. The store writes only inside
66
+ * `[storeBase, storeBase + header.capacity)`, which is what lets a WASM
67
+ * module own the bytes below the base. */
68
+ readonly storeBase: number;
61
69
  /** Indexed by `archetype_id`. */
62
70
  readonly archetypes: ReadonlyMap<number, ArchetypeViews>;
63
71
  }
@@ -82,46 +90,46 @@ export declare function columnKey(componentId: number, fieldId: number): number;
82
90
  * their operands to **signed** 32-bit integers (`ToInt32`). Once an offset
83
91
  * reaches 2³¹ the result wraps to a negative number (or, for some inputs, a
84
92
  * misaligned positive one), which then flows straight into
85
- * `new Uint8Array(buffer, byte_off, …)` either a thrown `RangeError` deep in
93
+ * `new Uint8Array(buffer, byte_off, …)`, either a thrown `RangeError` deep in
86
94
  * the TypedArray ctor or, worse, a silently wrong view overlapping another
87
95
  * column. The 256 MiB default allocator cap (`growableSabAllocator`) keeps
88
- * real matches three orders of magnitude below this, but the cap is tunable
89
- * and callers are invited to raise it for bigger worlds so the layout step
96
+ * a real world far below this, but the cap is tunable
97
+ * and callers are invited to raise it for bigger worlds, so the layout step
90
98
  * guards the hard 2³¹ ceiling explicitly rather than relying on the policy
91
- * cap to stay in front of it (#382). */
99
+ * cap to stay in front of it. */
92
100
  export declare const STORE_MAX_BYTE_OFFSET: number;
93
101
  /** Thrown when a SAB column layout would place an offset at or beyond
94
102
  * {@link STORE_MAX_BYTE_OFFSET} (2³¹), past which the signed-32-bit bitwise
95
103
  * `alignUp` can no longer produce correct offsets. This is a hard ceiling,
96
- * not the (tunable, much lower) 256 MiB allocator cap — see #382. */
104
+ * not the (tunable, much lower) 256 MiB allocator cap. */
97
105
  export declare class StoreLayoutOverflowError extends Error {
98
106
  constructor(byteOff: number);
99
107
  }
100
108
  /** Round `off` up to the next multiple of `align`. `align` must be a power
101
- * of two (1/2/4/8 here, all `TYPE_TAG_STRIDE` values).
109
+ * of two (1, 2, 4 or 8 here, all `TYPE_TAG_STRIDE` values).
102
110
  *
103
111
  * Throws {@link StoreLayoutOverflowError} when the rounded offset would reach
104
112
  * {@link STORE_MAX_BYTE_OFFSET}, because the `& ~(align-1)` step coerces to a
105
- * signed 32-bit int and wraps past 2³¹ (#382). The guard fires before the
113
+ * signed 32-bit int and wraps past 2³¹. The guard fires before the
106
114
  * bitwise op so any returned offset is always a correct, in-range value.
107
115
  * Shared by `extend.ts` and `grow.ts`, whose in-place paths compute tail
108
116
  * byte_offs without going through `planLayout`. */
109
117
  export declare function alignUp(off: number, align: number): number;
110
118
  /** Build the layout-descriptor-region descriptors (with `byte_off` and
111
- * `stride` filled in) and return both them and the byte offset just past
112
- * the last column i.e. the total SAB size.
119
+ * `stride` filled in) and return both them and the byte offset immediately past
120
+ * the last column, i.e. the total SAB size.
113
121
  *
114
- * `headroomBytes` reserves slack at the end of the descriptor region — ON
115
- * TOP OF the natural size for `specs` so future extends can append new
122
+ * `headroomBytes` reserves slack at the end of the descriptor region. On
123
+ * top of the natural size for `specs`, so future extends can append new
116
124
  * descriptor entries without shifting existing column byte_offs. Used by
117
- * the growable-SAB path (#237 Option A) — column views stay valid across
125
+ * the growable-SAB path, column views stay valid across
118
126
  * `extendColumnStore` because their byte_offs don't move.
119
127
  *
120
- * Additive, not a floor (#541): `regionSize = natural + headroom`, NOT
128
+ * Additive, not a floor: `regionSize = natural + headroom`, not
121
129
  * `max(natural, headroom)`. A floor only yields slack while `natural` is
122
- * below it; the moment the descriptor region outgrows the floor (the #237
130
+ * below it. The moment the descriptor region outgrows the floor (the
123
131
  * headroom exhausts and a realloc re-plans the merged spec set), a floor
124
- * would size the region to exactly `natural` zero slack and every
132
+ * would size the region to exactly `natural`, zero slack, and every
125
133
  * subsequent extend would take the slow realloc path forever after. The
126
134
  * additive form re-creates the same `headroom` margin on every realloc.
127
135
  * For the engine's empty-seed store (`createColumnStore([], …)`, where
@@ -132,17 +140,17 @@ declare function planLayout(specs: readonly ArchetypeSpec[], regionOff: number,
132
140
  totalBytes: number;
133
141
  regionBytes: number;
134
142
  };
135
- /** Exported for the layout tests' overflow-guard coverage; the in-place
143
+ /** Exported for the layout tests' overflow-guard coverage. The in-place
136
144
  * resize paths use `layoutColumnsAtTail` (layout_ops.ts), not this. */
137
145
  export { planLayout };
138
146
  /** Optional configuration for `createColumnStore`. */
139
147
  export interface CreateColumnStoreOptions {
140
148
  /** Extra slack to reserve at the end of the layout descriptor region,
141
- * ON TOP OF the natural size for `specs` (#541 — additive, not a floor).
149
+ * on top of the natural size for `specs` (additive, not a floor).
142
150
  * The descriptor region is padded with this many unused bytes so future
143
151
  * `extendColumnStore` calls can append new archetype descriptors into the
144
152
  * slack without shifting existing column byte_offs. Pairs with
145
- * `growableSabAllocator` to give the #237 Option A fast path: existing
153
+ * `growableSabAllocator` to give the in-place fast path: existing
146
154
  * TypedArray column views stay valid across extends because their offsets
147
155
  * and the underlying buffer both stay put.
148
156
  *
@@ -150,78 +158,98 @@ export interface CreateColumnStoreOptions {
150
158
  * value lives on `ColumnStoreInternal._reservedDescriptorBytes` and
151
159
  * `optionsFromOld` re-applies it, so a store that exhausts its headroom
152
160
  * and reallocs gets a fresh margin rather than dropping to zero slack and
153
- * going permanently slow (#541). */
161
+ * going permanently slow. */
154
162
  readonly reservedDescriptorBytes?: number;
155
- /** When provided, allocates a command ring (#171 §7.5, Phase 4) inside
156
- * the SAB at a stable offset right after the 48-byte header. Slot
157
- * count MUST be a power of two; `COMMAND_RING_DEFAULT_CAPACITY_SLOTS`
158
- * (256) is the canonical value. Omitted ⇒ no ring; `command_ring_off`
159
- * stays at 0 ("absent"); existing test fixtures with hand-rolled SABs
160
- * see the legacy layout (descriptor region immediately after header).
163
+ /** When provided, allocates a command ring inside
164
+ * the SAB at a stable offset right after the `STORE_HEADER_BYTES` header.
165
+ * Slot count must be a power of two. `COMMAND_RING_DEFAULT_CAPACITY_SLOTS`
166
+ * (256) is the canonical value. Omitted ⇒ no ring. `command_ring_off`
167
+ * stays at 0 ("absent"). An existing test fixture with a hand-rolled SAB
168
+ * sees the legacy layout, with the descriptor region right after the header.
161
169
  *
162
- * Sizing the ring this way between header and descriptor region
163
- * keeps `command_ring_off` stable across `extendColumnStore` /
164
- * `growColumnStore` calls, since those grow the descriptor region and
170
+ * Sizing the ring this way, between header and descriptor region,
171
+ * keeps `command_ring_off` stable across an `extendColumnStore` or
172
+ * `growColumnStore` call, since those grow the descriptor region and
165
173
  * the column tail but never the bytes between header and descriptor. */
166
174
  readonly commandRingCapacitySlots?: number;
167
- /** When provided, allocates the entity-index region (#245 / Phase 4
168
- * PR 4B) inside the SAB at a stable offset between the command ring
175
+ /** When provided, allocates the entity-index region inside the SAB at a
176
+ * stable offset between the command ring
169
177
  * (or header) and the descriptor region. Holds `(generations,
170
- * archetypes, rows)` triples indexed by entity slot; the engine's
171
- * `Store` populates them as entities are created/moved/destroyed,
172
- * and Zig systems read them to resolve cross-entity targets without
173
- * a callback. Capacity is in *slots* (entities), not bytes; each
174
- * slot is 12 bytes. Omitted ⇒ no region; `entity_index_off` stays
178
+ * archetypes, rows)` triples indexed by entity slot. The engine's
179
+ * `Store` populates them as entities are created, moved and destroyed,
180
+ * and a compute backend reads them to resolve cross-entity targets without
181
+ * a callback. Capacity is in *slots* (entities), not bytes. Each
182
+ * slot is 12 bytes. Omitted ⇒ no region. `entity_index_off` stays
175
183
  * at 0 ("absent"). The engine's Store always sets it to
176
- * `ENTITY_INDEX_DEFAULT_CAPACITY`; bare-SAB tests can leave it
184
+ * `ENTITY_INDEX_DEFAULT_CAPACITY`. Bare-SAB tests can leave it
177
185
  * absent. */
178
186
  readonly entityIndexCapacity?: number;
179
- /** When provided, allocates the event ring (#247 / Phase 4 PR 4C)
187
+ /** When provided, allocates the event ring
180
188
  * inside the SAB at a stable offset between the entity-index region
181
- * and the descriptor region. Same SPSC shape as the command ring;
182
- * carries ECS signal payloads so Zig systems can emit and consume
183
- * them during `tick()` without callbacks into TS.
189
+ * and the descriptor region. It has the same SPSC shape as the command
190
+ * ring. It carries ECS signal payloads, so a module's systems emit and
191
+ * consume them during a tick without callbacks into TS.
184
192
  *
185
- * Slot count MUST be a power of two; `EVENT_RING_DEFAULT_CAPACITY_SLOTS`
186
- * (256) is the canonical value. Omitted ⇒ no ring; `event_ring_off`
187
- * stays at 0 ("absent"); existing test fixtures with hand-rolled
188
- * SABs see the pre-#247 layout. */
193
+ * Slot count must be a power of two. `EVENT_RING_DEFAULT_CAPACITY_SLOTS`
194
+ * (256) is the canonical value. Omitted ⇒ no ring. `event_ring_off`
195
+ * stays at 0 ("absent"). An existing test fixture with a hand-rolled
196
+ * SAB sees the layout without it. */
189
197
  readonly eventRingCapacitySlots?: number;
190
- /** When provided, allocates the action ring (#291 / Phase 5 PR 5L)
191
- * inside the SAB at a stable offset between the entity-index/event-ring
192
- * and the region-table directory. Main writes encoded actions to it;
193
- * the sim worker drains them on each apply.
198
+ /** When provided, allocates the action ring
199
+ * inside the SAB at a stable offset between the entity-index and event-ring
200
+ * and the region-table directory. The main thread writes encoded actions to
201
+ * it, and the worker drains them on each apply.
194
202
  *
195
- * Slot count MUST be a power of two; `ACTION_RING_DEFAULT_CAPACITY_SLOTS`
196
- * (256) is the canonical value. Omitted ⇒ no ring; `action_ring_off`
197
- * stays at 0 ("absent"); bare-SAB tests skip it. (Engine mechanism the
198
- * `Store` allocates one always-on; it is no longer a public ECS option.) */
203
+ * Slot count must be a power of two. `ACTION_RING_DEFAULT_CAPACITY_SLOTS`
204
+ * (256) is the canonical value. Omitted ⇒ no ring. `action_ring_off`
205
+ * stays at 0 ("absent"). A bare-SAB test skips it. (Engine mechanism, the
206
+ * `Store` allocates one always-on. It is no longer a public ECS option.) */
199
207
  readonly actionRingCapacitySlots?: number;
200
- /** Consumer-declared SAB regions (#623). Each `StoreRegionSpec` carries an
201
- * opaque `region_id`, a precomputed byte size, and an `init` closure; the
208
+ /** Consumer-declared SAB regions. Each `StoreRegionSpec` carries an
209
+ * opaque `region_id`, a precomputed byte size, and an `init` closure. The
202
210
  * engine lays them out after the mechanism regions, writes a generic
203
211
  * region-table directory (`region_table.ts`) keyed by `region_id`, and
204
- * snapshots/restores them across a grow/extend. The engine never
205
- * interprets `region_id` a game (e.g. `@internal/sim`'s region specs)
206
- * owns it. Omitted ⇒ no consumer regions; `region_table_off` stays 0. */
212
+ * snapshots and restores them across a grow or extend. The engine never
213
+ * interprets `region_id`. The consumer that declared the region owns it.
214
+ * Omitted ⇒ no consumer regions. `region_table_off` stays 0. */
207
215
  readonly regions?: readonly StoreRegionSpec[];
208
- /** Byte size of the always-before-descriptor sim-bindings region (v5 /
209
- * "SAB-is-the-interface"). A consumer that opts into a WASM backend supplies
210
- * its own size here `@internal/sim`'s `SIM_BINDINGS_BYTES`, computed from
211
- * the game's binding manifest. The engine treats the region as opaque bytes:
216
+ /** Byte size of the always-before-descriptor sim-bindings region. A consumer
217
+ * that opts into a WASM backend supplies its own size here, computed from
218
+ * its own binding manifest. The engine treats the region as opaque bytes:
212
219
  * it reserves the block at `bindings_off` (right before the descriptor
213
- * region, so the offset is stable across grow/extend) and the host writes the
214
- * `(component_id, field_id)` IDs into it via `write_sim_bindings`.
220
+ * region, so the offset is stable across grow and extend) and the host
221
+ * writes the `(component_id, field_id)` ids into it.
215
222
  *
216
- * Omitted / 0 ⇒ NO bindings region (`bindings_off` stays 0, "absent") the
217
- * default for a pure-TS game that pays nothing for the WASM seam. This used
218
- * to be the engine-baked `SIM_BINDINGS_BYTES` ABI constant reflected from the
219
- * game's Zig struct; #625 de-welded it so a manifest edit no longer dirties
220
- * the engine ABI golden. Re-derived across realloc by `optionsFromOld`
221
- * (= `layout_descriptor_off - bindings_off`), so it survives grow/extend
223
+ * Omitted or 0 ⇒ no bindings region (`bindings_off` stays 0, "absent"), the
224
+ * default for a pure-TS world that pays nothing for the WASM seam. This size
225
+ * used to be an engine-baked ABI constant reflected from the consumer's
226
+ * binding struct. It is now a runtime input, so a manifest edit no longer
227
+ * dirties the engine ABI golden. Re-derived across realloc by `optionsFromOld`
228
+ * (= `layout_descriptor_off - bindings_off`), so it survives grow and extend
222
229
  * without a carried policy field. */
223
230
  readonly bindingsRegionBytes?: number;
231
+ /** Byte offset inside the backing where the header goes. Default 0.
232
+ *
233
+ * Every offset the store writes is relative to this base, and the store
234
+ * writes only inside `[storeBase, storeBase + capacity)`. A WASM module owns
235
+ * the low addresses of its own linear memory, so a store mounted on that
236
+ * memory must stand above the module's data segment, its shadow stack and
237
+ * its heap base. A safe Zig or Rust build also traps on a read of address 0,
238
+ * so a module-hosted store cannot put the header there at all.
239
+ *
240
+ * Must be a non-negative integer and a multiple of
241
+ * `STORE_BASE_ALIGNMENT`, so every column keeps the alignment its type tag
242
+ * needs. */
243
+ readonly storeBase?: number;
224
244
  }
245
+ /** Every store base must be a multiple of this. The widest column element is 8
246
+ * bytes, and the entity index wants 16, so 16 keeps both aligned whatever the
247
+ * base is. */
248
+ export declare const STORE_BASE_ALIGNMENT = 16;
249
+ /** Reject a base the layout math cannot honour. Cold path, one call per store
250
+ * creation. `resolveECSMemory` rejects the same values earlier with an
251
+ * `ECS_ERROR` code, so a world never reaches this. A direct store caller does. */
252
+ export declare function assertStoreBase(storeBase: number): void;
225
253
  /** Internal `ColumnStore` extension carrying the descriptor-region byte
226
254
  * size. Used by the in-place extend path to know where the next
227
255
  * descriptor entry should be written (= `regionOff + region_bytes_used`,
@@ -230,44 +258,54 @@ export interface ColumnStoreInternal extends ColumnStore {
230
258
  readonly _regionBytes: number;
231
259
  readonly _allocator: BufferAllocator;
232
260
  /** The `reservedDescriptorBytes` policy this store was created with
233
- * (the additive descriptor-region headroom margin; 0 when none). Carried
234
- * with the store NOT re-derivable from the SAB bytes, since `_regionBytes`
261
+ * (the additive descriptor-region headroom margin, 0 when none). Carried
262
+ * with the store. Not re-derivable from the SAB bytes, since `_regionBytes`
235
263
  * holds the absolute region size (natural + this), and once `natural`
236
264
  * outgrows the margin the two are indistinguishable. The realloc slow path
237
265
  * reads it via `optionsFromOld` and re-reserves the same margin, so a
238
- * store that exhausts its headroom and reallocs keeps taking the #237
239
- * in-place fast path instead of going permanently slow (#541). The
266
+ * store that exhausts its headroom and reallocs keeps taking the
267
+ * in-place fast path instead of going permanently slow. The
240
268
  * `*_in_place` paths carry it forward verbatim. */
241
269
  readonly _reservedDescriptorBytes: number;
270
+ /** The descriptor-region bytes in use: the sum of `archetypeDescriptorBytes`
271
+ * over every archetype. The in-place extend reads it to find where the next
272
+ * descriptor goes and how much headroom remains. Cached here so an extend
273
+ * does not sum over every archetype each time, which made the cost of the
274
+ * N-th archetype grow with N. Absent on a record that predates the cache
275
+ * (a store from `growColumnStore`), and then summed one time on demand. */
276
+ readonly _usedDescriptorBytes?: number;
242
277
  }
243
- /** Typed recovery of `ColumnStoreInternal` from a public `ColumnStore` (M8).
278
+ /** The descriptor-region bytes that `archetypes` use. */
279
+ export declare function usedDescriptorBytes(archetypes: ReadonlyMap<number, ArchetypeViews>): number;
280
+ /** Typed recovery of `ColumnStoreInternal` from a public `ColumnStore`.
244
281
  * Not every store is internal: `restoreColumnStore` deliberately returns a
245
282
  * plain `{ buffer, view, header, archetypes }` (a snapshot carries no JS-side
246
- * allocator or headroom policy), and grow/extend must send such a store down
247
- * the realloc slow path. This guard is the ONE place that discrimination
248
- * happens grow/extend previously re-derived the internal type via
283
+ * allocator or headroom policy), and grow and extend must send such a store down
284
+ * the realloc slow path. This guard is the one place that discrimination
285
+ * happens, grow and extend previously re-derived the internal type via
249
286
  * structural `as`-casts at six sites. */
250
287
  export declare function isColumnStoreInternal(store: ColumnStore): store is ColumnStoreInternal;
251
- /** Allocate a SAB sized for `specs`, write the header + layout descriptor,
252
- * and construct one TypedArray view per column.
288
+ /** Allocate a backing sized for `specs` plus `options.storeBase`, write the
289
+ * header and the layout descriptor at the base, and construct one TypedArray
290
+ * view per column.
253
291
  *
254
292
  * The returned `ColumnStore` is the source of truth for "where every column
255
- * lives in this SAB". `view_stamp` is initialised to 0 a Phase 4 SAB
256
- * grow flow will bump it. (#171 §6.1.4 / §8.1) */
293
+ * lives". Offsets in the bytes are relative to the base. `view_stamp` is
294
+ * initialised to 0, and a grow bumps it. */
257
295
  export declare function createColumnStore(specs: readonly ArchetypeSpec[], allocator?: BufferAllocator, options?: CreateColumnStoreOptions): ColumnStore;
258
- /** Default command-ring slot count used by `ECS.Store` when constructing
296
+ /** Default command-ring slot count used by `Store` when constructing
259
297
  * its SAB. Re-exported here so the Store doesn't reach across modules. */
260
298
  export { COMMAND_RING_DEFAULT_CAPACITY_SLOTS };
261
- /** Default entity-index capacity used by `ECS.Store` when constructing
299
+ /** Default entity-index capacity used by `Store` when constructing
262
300
  * its SAB. Re-exported alongside `COMMAND_RING_DEFAULT_CAPACITY_SLOTS`. */
263
301
  export { ENTITY_INDEX_DEFAULT_CAPACITY };
264
- /** Default event-ring slot count used by `ECS.Store` when constructing
302
+ /** Default event-ring slot count used by `Store` when constructing
265
303
  * its SAB. Re-exported alongside the other defaults. */
266
304
  export { EVENT_RING_DEFAULT_CAPACITY_SLOTS };
267
- /** Build the `ArchetypeViews` map from a SAB and its parsed descriptors.
268
- * Shared by `createColumnStore` (fresh allocation, byte_offs just computed)
305
+ /** Build the `ArchetypeViews` map from a backing and its parsed descriptors.
306
+ * Shared by `createColumnStore` (fresh allocation, byte_offs only computed)
269
307
  * and `restoreColumnStore` (existing allocation, byte_offs read out of the
270
- * snapshot). Either way the views land at the byte_offs the descriptors
271
- * already carry — this helper does not plan layout. */
272
- export declare function buildArchetypeViews(buffer: ArrayBufferLike, descriptors: readonly ArchetypeDescriptor[]): Map<number, ArchetypeViews>;
308
+ * snapshot). Either way each view lands at `storeBase` plus the descriptor's
309
+ * `byte_off`. This helper does not plan layout. */
310
+ export declare function createArchetypeViews(buffer: ArrayBufferLike, storeBase: number, descriptors: readonly ArchetypeDescriptor[]): Map<number, ArchetypeViews>;
273
311
  //# sourceMappingURL=column_store.d.ts.map