@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
@@ -2,7 +2,7 @@ import { BufferAllocator } from './allocator.cjs';
2
2
  import { ArchetypeSpec, ColumnStore, ColumnStoreInternal, CreateColumnStoreOptions } from './column_store.cjs';
3
3
  import { ArchetypeDescriptor, TypeTagValue } from './descriptor.cjs';
4
4
  import { StoreRegionOffsetField } from './store_regions.cjs';
5
- /** Per-archetype resize/copy input, shared by `GrowPlan.archetypes` and
5
+ /** Per-archetype resize and copy input, shared by `GrowPlan.archetypes` and
6
6
  * `ExtendPlan.existing` (so callers can reuse plan-building helpers). The
7
7
  * caller picks the new `row_capacity` and declares the current live
8
8
  * `row_count` so the copy knows how many rows matter. */
@@ -11,9 +11,9 @@ export interface ArchetypeGrowSpec {
11
11
  readonly newRowCapacity: number;
12
12
  readonly rowCount: number;
13
13
  }
14
- /** One archetype's column-layout request for `layoutColumnsAtTail`. `stride`
15
- * is resolved by the caller — grow reuses the old column's stride verbatim;
16
- * extend derives it from `TYPE_TAG_STRIDE[typeTag]` for brand-new columns. */
14
+ /** One archetype's column-layout request for `layoutColumnsAtTail`. The caller
15
+ * resolves `stride`. Grow reuses the old column's stride verbatim. Extend
16
+ * derives it from `TYPE_TAG_STRIDE[typeTag]` for a brand-new column. */
17
17
  export interface TailArchetypeLayout {
18
18
  readonly archetypeId: number;
19
19
  readonly componentMask: ArchetypeDescriptor["componentMask"];
@@ -25,23 +25,24 @@ export interface TailArchetypeLayout {
25
25
  readonly stride: number;
26
26
  }[];
27
27
  }
28
- /** Tail-cursor column placement the single home for the in-place paths'
29
- * layout rule and the 2³¹ offset cap (#382). Starting at `startCursor`
30
- * (the current buffer byteLength), each archetype's columns are placed
31
- * `alignUp(cursor, stride)` then advanced by `stride * rowCapacity`; the
28
+ /** Tail-cursor column placement, the single home for the in-place paths'
29
+ * layout rule and the 2³¹ offset cap. `startCursor` and every offset it
30
+ * produces are relative to the store base. Starting at `startCursor`
31
+ * (the current store span), each archetype's columns are placed
32
+ * `alignUp(cursor, stride)` then advanced by `stride * rowCapacity`. The
32
33
  * final tail (last column's advance, not re-aligned) becomes the grown
33
34
  * buffer's byteLength and is guarded past `STORE_MAX_BYTE_OFFSET` exactly
34
35
  * like `planLayout` guards the create-time layout. Descriptors come back
35
- * with `rowCount` / `enabledCount` zeroed (the store side of those counters
36
+ * with `rowCount` and `enabledCount` zeroed (the store side of those counters
36
37
  * lives with the caller). */
37
38
  export declare function layoutColumnsAtTail(startCursor: number, archetypes: readonly TailArchetypeLayout[]): {
38
39
  descriptors: ArchetypeDescriptor[];
39
40
  newTotal: number;
40
41
  };
41
42
  /** Grow an in-place-backed store's buffer to `newTotal` and mint the DataView
42
- * the caller must write headers/descriptors through. `growableSabAllocator` /
43
- * `heapArraybufferAllocator` return the SAME buffer instance grown in place;
44
- * `wasmMemoryAllocator` returns a NEW ref over the same linear memory old
43
+ * the caller must write headers and descriptors through. `growableSabAllocator`
44
+ * and `heapArrayBufferAllocator` return the same buffer instance grown in place.
45
+ * `wasmMemoryAllocator` returns a new ref over the same linear memory, old
45
46
  * typed-array views stay valid either way (the `isInPlace` contract), but
46
47
  * when the ref changed the old DataView's byteLength is frozen at the
47
48
  * pre-grow size, so a fresh DataView over the new ref is required for any
@@ -51,116 +52,124 @@ export declare function growBufferInPlace(old: ColumnStoreInternal, newTotal: nu
51
52
  newView: DataView;
52
53
  };
53
54
  /**
54
- * Byte offset where the next appended column region begins the tail cursor
55
- * the in-place grow/extend paths pass to `layoutColumnsAtTail`.
55
+ * Byte offset where the next appended column region begins, measured from the
56
+ * store base. This is the tail cursor the in-place grow and extend paths pass
57
+ * to `layoutColumnsAtTail`.
56
58
  *
57
- * For the growable-SAB and wasm backings the buffer is sized to the live extent
58
- * (`SharedArrayBuffer.grow` resizes exactly; wasm rounds up to a page, and its
59
- * fast path deliberately lands new regions past that page-rounded tail), so
60
- * `buffer.byteLength` IS the tail. For the pure-TS **heap** backing (0.5.3) the
61
- * buffer is a FIXED `ArrayBuffer` reserved at the full cap for V8 fast-path
62
- * element access, so its `byteLength` is `maxBytes`, NOT the used size — the
63
- * true tail is the header `capacity` (the logical high-water; new columns land
64
- * in still-zero fixed-buffer space just past the last live column).
59
+ * For the growable-SAB and wasm backings the buffer is sized to the live extent,
60
+ * so `buffer.byteLength` minus the base is the tail. `SharedArrayBuffer.grow`
61
+ * resizes exactly.
62
+ * Wasm rounds up to a page, and its fast path deliberately lands new regions
63
+ * past that page-rounded tail.
65
64
  *
66
- * A plain (non-shared) `ArrayBuffer` is uniquely the heap profile's fixed
67
- * reservation every other in-place backing is a `SharedArrayBuffer`. Keying
68
- * off the backing keeps the SAB/wasm layouts byte-for-byte unchanged.
65
+ * The pure-TS **heap** backing differs. Its buffer is a fixed `ArrayBuffer`
66
+ * reserved at the full cap for V8 fast-path element access, so its `byteLength`
67
+ * is `maxBytes`, not the used size. The true tail is the header `capacity`, the
68
+ * logical high-water. New columns land in still-zero fixed-buffer space
69
+ * immediately past the last live column.
70
+ *
71
+ * The question is whether the allocator reserved the cap, not which buffer
72
+ * class it returned: `fixedSabAllocator` reserves a fixed `SharedArrayBuffer`
73
+ * and needs the header rule, while `growableSabAllocator` grows a
74
+ * `SharedArrayBuffer` to the live extent and needs the `byteLength` rule. So
75
+ * the allocator's `reservedAtCap` marker decides. The plain-`ArrayBuffer` test
76
+ * stays as the fallback for a store whose allocator predates the marker, which
77
+ * keeps the SAB and wasm layouts byte-for-byte unchanged.
69
78
  */
70
79
  export declare function tailCursorBytes(old: ColumnStoreInternal): number;
71
80
  /**
72
81
  * Derive `CreateColumnStoreOptions` from an old ColumnStore so a slow-path realloc
73
82
  * preserves the same set of optional regions at the same byte offsets in the
74
- * new SAB. Without this, an extend / grow would silently drop a region the
83
+ * new SAB. Without this, an extend or grow would silently drop a region, the
75
84
  * command ring's pending commands, every entity placement in the index, etc.
76
85
  * would be lost.
77
86
  *
78
87
  * Walks `STORE_PREFIX_REGIONS`: each present region's `readOptions` replays the
79
88
  * exact capacity the engine configured (regions may carry non-default sizes),
80
- * not just the default. Live state (write_head, length, …) is preserved
81
- * separately via `snapshotPrefixRegions`.
89
+ * not only the default. Live state (write_head, length, …) is preserved
90
+ * separately via `snapshotRegions`.
82
91
  *
83
92
  * Also re-applies the descriptor-region headroom policy
84
- * (`reservedDescriptorBytes`, #541). Unlike the prefix regions this is NOT
85
- * read from the SAB bytes — it's a JS-side policy carried on
86
- * `ColumnStoreInternal._reservedDescriptorBytes` but it belongs here for the
93
+ * (`reservedDescriptorBytes`). Unlike the prefix regions this is not
94
+ * read from the SAB bytes. It's a JS-side policy carried on
95
+ * `ColumnStoreInternal._reservedDescriptorBytes`, but it belongs here for the
87
96
  * same reason: without it the realloc'd store drops to zero descriptor
88
97
  * headroom and every later `extendColumnStore` takes the slow path forever.
89
- * Re-reserving the same margin (additive, see `planLayout`) keeps the #237
98
+ * Re-reserving the same margin (additive, see `planLayout`) keeps the
90
99
  * in-place fast path alive across reallocs.
91
100
  */
92
101
  export declare function optionsFromOld(old: ColumnStore): CreateColumnStoreOptions;
93
102
  /** A prefix-region snapshot: the live bytes of every present region from the
94
103
  * old SAB. `mechanism` is keyed by the `StoreHeader` field holding a mechanism
95
- * region's offset; `consumer` is keyed by `region_id` (consumer regions have no
96
- * named header field). Pairs `snapshotPrefixRegions` with
97
- * `restorePrefixRegions`. */
104
+ * region's offset. `consumer` is keyed by `region_id` (consumer regions have no
105
+ * named header field). Pairs `snapshotRegions` with
106
+ * `restoreRegions`. */
98
107
  export interface PrefixRegionSnapshot {
99
108
  readonly mechanism: Map<StoreRegionOffsetField, Uint8Array>;
100
109
  readonly consumer: Map<number, Uint8Array>;
101
110
  }
102
111
  /**
103
- * Snapshot the live bytes of every present region both engine MECHANISM
104
- * regions (STORE_PREFIX_REGIONS) and CONSUMER regions (the region-table
105
- * directory) from the old SAB BEFORE any allocator call that may detach
112
+ * Snapshot the live bytes of every present region, both engine mechanism
113
+ * regions (STORE_PREFIX_REGIONS) and consumer regions (the region-table
114
+ * directory), from the old SAB before any allocator call that may detach
106
115
  * views. Each entry is a heap `Uint8Array` copy (via `slice()`) so it survives
107
- * an allocator-induced detach; `restorePrefixRegions` places it back at the
116
+ * an allocator-induced detach. `restoreRegions` places it back at the
108
117
  * matching offset in the new SAB.
109
118
  *
110
- * Header bytes themselves are NOT snapshotted `createColumnStore` writes the
119
+ * Header bytes themselves are not snapshotted, `createColumnStore` writes the
111
120
  * header (and the region-table directory) from scratch with the correct
112
121
  * view_stamp (bumped after this call) and offsets.
113
122
  */
114
- export declare function snapshotPrefixRegions(old: ColumnStore): PrefixRegionSnapshot;
123
+ export declare function snapshotRegions(old: ColumnStore): PrefixRegionSnapshot;
115
124
  /** Restore prefix-region byte snapshots into `newStore` at the matching
116
- * region offsets. Pairs with `snapshotPrefixRegions`. The new SAB's regions
125
+ * region offsets. Pairs with `snapshotRegions`. The new SAB's regions
117
126
  * were sized identically by `optionsFromOld`, so each snapshot lands at the
118
- * same length its source had mechanism regions at their named header offset,
127
+ * same length its source had, mechanism regions at their named header offset,
119
128
  * consumer regions at the offset the rebuilt region-table resolves their id to. */
120
- export declare function restorePrefixRegions(newStore: ColumnStore, snap: PrefixRegionSnapshot): void;
129
+ export declare function restoreRegions(newStore: ColumnStore, snap: PrefixRegionSnapshot): void;
121
130
  /**
122
- * Snapshot per-archetype live column bytes from `old` BEFORE any
131
+ * Snapshot per-archetype live column bytes from `old`, before any
123
132
  * subsequent allocator call may detach the underlying typed-array views.
124
133
  * Returned shape: `{ archetype_id → Uint8Array[] }`, one entry per
125
134
  * column in `columnsInOrder`. Each `Uint8Array` is a fresh copy
126
135
  * (not a view) so it survives a `WebAssembly.Memory.grow`. Archetypes
127
- * with `row_count === 0` are omitted nothing to copy.
136
+ * with `row_count === 0` are omitted, nothing to copy.
128
137
  */
129
138
  export declare function snapshotLiveColumns(old: ColumnStore, rowCountsById: Map<number, number>): Map<number, Uint8Array[]>;
130
139
  /**
131
140
  * Write per-archetype column snapshots produced by `snapshotLiveColumns`
132
- * into `newStore`'s column views. The snapshot's column ORDER must match
133
- * the new archetype's `columnsInOrder` (extend / grow guarantee this
141
+ * into `newStore`'s column views. The snapshot's column order must match
142
+ * the new archetype's `columnsInOrder` (extend and grow guarantee this
134
143
  * because they carry the column spec forward unchanged).
135
144
  */
136
- export declare function restoreColumnSnapshots(newStore: ColumnStore, snapshots: Map<number, Uint8Array[]>): void;
145
+ export declare function restoreLiveColumns(newStore: ColumnStore, snapshots: Map<number, Uint8Array[]>): void;
137
146
  /**
138
147
  * The realloc-and-republish slow path shared by `growColumnStore` and
139
- * `extendColumnStore` everything between "the specs are decided" and "the
148
+ * `extendColumnStore`, everything between "the specs are decided" and "the
140
149
  * caller shapes its result":
141
150
  *
142
- * 1. Capture `view_stamp` and snapshot live rows AND prefix regions
143
- * (command ring, entity-index) BEFORE the allocator call the
151
+ * 1. Capture `view_stamp` and snapshot live rows and prefix regions
152
+ * (command ring, entity-index) before the allocator call, the
144
153
  * wasmMemoryAllocator may detach `old`'s views on grow, so everything
145
154
  * needed is captured first. The prefix-region preservation is the
146
- * contract `Store` relies on to keep its entity table across resizes
147
- * (#245); `optionsFromOld` re-reserves regions and descriptor headroom
148
- * (#541) so the republished store keeps its layout and fast paths.
149
- * 2. `createColumnStore` with the derived options (fresh buffer; the same
155
+ * contract `Store` relies on to keep its entity table across resizes.
156
+ * `optionsFromOld` re-reserves the regions and the descriptor headroom,
157
+ * so the republished store keeps its layout and its fast paths.
158
+ * 2. `createColumnStore` with the derived options (fresh buffer, the same
150
159
  * growable allocator carries forward so the new buffer also grows in
151
160
  * place).
152
161
  * 3. Restore live rows + prefix regions. Archetypes without a row count
153
- * contributed no snapshot and stay zero-initialised; prefix regions
162
+ * contributed no snapshot and stay zero-initialised. Prefix regions
154
163
  * overwrite the empty state `createColumnStore` initialised.
155
164
  * 4. Bump `view_stamp` from the pre-capture value and patch the returned
156
- * header so its cached `viewStamp` matches the buffer bytes just
157
- * written — `createColumnStore` stamped it 0 (#386). `capacity` /
165
+ * header so its cached `viewStamp` matches the bytes written above.
166
+ * `createColumnStore` stamped it 0. `capacity` and
158
167
  * `archetype_count` are already correct (createColumnStore sized them),
159
- * so the spread carries them and the internal `_allocator` /
160
- * `_regionBytes` fields through unchanged.
168
+ * so the spread carries them, and the internal `_allocator` and
169
+ * `_regionBytes` fields, through unchanged.
161
170
  *
162
- * Every view in the returned store is fresh; callers MUST refresh
163
- * (`viewsPreserved: false` is the callers' contract with THEIR callers).
171
+ * Every view in the returned store is fresh. Callers must refresh
172
+ * (`viewsPreserved: false` is the callers' contract with their callers).
164
173
  */
165
174
  export declare function reallocAndRepublish(old: ColumnStore, specs: readonly ArchetypeSpec[], rowCountsById: Map<number, number>, allocator: BufferAllocator | undefined): {
166
175
  store: ColumnStore;
@@ -2,7 +2,7 @@ import { BufferAllocator } from './allocator.js';
2
2
  import { ArchetypeSpec, ColumnStore, ColumnStoreInternal, CreateColumnStoreOptions } from './column_store.js';
3
3
  import { ArchetypeDescriptor, TypeTagValue } from './descriptor.js';
4
4
  import { StoreRegionOffsetField } from './store_regions.js';
5
- /** Per-archetype resize/copy input, shared by `GrowPlan.archetypes` and
5
+ /** Per-archetype resize and copy input, shared by `GrowPlan.archetypes` and
6
6
  * `ExtendPlan.existing` (so callers can reuse plan-building helpers). The
7
7
  * caller picks the new `row_capacity` and declares the current live
8
8
  * `row_count` so the copy knows how many rows matter. */
@@ -11,9 +11,9 @@ export interface ArchetypeGrowSpec {
11
11
  readonly newRowCapacity: number;
12
12
  readonly rowCount: number;
13
13
  }
14
- /** One archetype's column-layout request for `layoutColumnsAtTail`. `stride`
15
- * is resolved by the caller — grow reuses the old column's stride verbatim;
16
- * extend derives it from `TYPE_TAG_STRIDE[typeTag]` for brand-new columns. */
14
+ /** One archetype's column-layout request for `layoutColumnsAtTail`. The caller
15
+ * resolves `stride`. Grow reuses the old column's stride verbatim. Extend
16
+ * derives it from `TYPE_TAG_STRIDE[typeTag]` for a brand-new column. */
17
17
  export interface TailArchetypeLayout {
18
18
  readonly archetypeId: number;
19
19
  readonly componentMask: ArchetypeDescriptor["componentMask"];
@@ -25,23 +25,24 @@ export interface TailArchetypeLayout {
25
25
  readonly stride: number;
26
26
  }[];
27
27
  }
28
- /** Tail-cursor column placement the single home for the in-place paths'
29
- * layout rule and the 2³¹ offset cap (#382). Starting at `startCursor`
30
- * (the current buffer byteLength), each archetype's columns are placed
31
- * `alignUp(cursor, stride)` then advanced by `stride * rowCapacity`; the
28
+ /** Tail-cursor column placement, the single home for the in-place paths'
29
+ * layout rule and the 2³¹ offset cap. `startCursor` and every offset it
30
+ * produces are relative to the store base. Starting at `startCursor`
31
+ * (the current store span), each archetype's columns are placed
32
+ * `alignUp(cursor, stride)` then advanced by `stride * rowCapacity`. The
32
33
  * final tail (last column's advance, not re-aligned) becomes the grown
33
34
  * buffer's byteLength and is guarded past `STORE_MAX_BYTE_OFFSET` exactly
34
35
  * like `planLayout` guards the create-time layout. Descriptors come back
35
- * with `rowCount` / `enabledCount` zeroed (the store side of those counters
36
+ * with `rowCount` and `enabledCount` zeroed (the store side of those counters
36
37
  * lives with the caller). */
37
38
  export declare function layoutColumnsAtTail(startCursor: number, archetypes: readonly TailArchetypeLayout[]): {
38
39
  descriptors: ArchetypeDescriptor[];
39
40
  newTotal: number;
40
41
  };
41
42
  /** Grow an in-place-backed store's buffer to `newTotal` and mint the DataView
42
- * the caller must write headers/descriptors through. `growableSabAllocator` /
43
- * `heapArraybufferAllocator` return the SAME buffer instance grown in place;
44
- * `wasmMemoryAllocator` returns a NEW ref over the same linear memory old
43
+ * the caller must write headers and descriptors through. `growableSabAllocator`
44
+ * and `heapArrayBufferAllocator` return the same buffer instance grown in place.
45
+ * `wasmMemoryAllocator` returns a new ref over the same linear memory, old
45
46
  * typed-array views stay valid either way (the `isInPlace` contract), but
46
47
  * when the ref changed the old DataView's byteLength is frozen at the
47
48
  * pre-grow size, so a fresh DataView over the new ref is required for any
@@ -51,116 +52,124 @@ export declare function growBufferInPlace(old: ColumnStoreInternal, newTotal: nu
51
52
  newView: DataView;
52
53
  };
53
54
  /**
54
- * Byte offset where the next appended column region begins the tail cursor
55
- * the in-place grow/extend paths pass to `layoutColumnsAtTail`.
55
+ * Byte offset where the next appended column region begins, measured from the
56
+ * store base. This is the tail cursor the in-place grow and extend paths pass
57
+ * to `layoutColumnsAtTail`.
56
58
  *
57
- * For the growable-SAB and wasm backings the buffer is sized to the live extent
58
- * (`SharedArrayBuffer.grow` resizes exactly; wasm rounds up to a page, and its
59
- * fast path deliberately lands new regions past that page-rounded tail), so
60
- * `buffer.byteLength` IS the tail. For the pure-TS **heap** backing (0.5.3) the
61
- * buffer is a FIXED `ArrayBuffer` reserved at the full cap for V8 fast-path
62
- * element access, so its `byteLength` is `maxBytes`, NOT the used size — the
63
- * true tail is the header `capacity` (the logical high-water; new columns land
64
- * in still-zero fixed-buffer space just past the last live column).
59
+ * For the growable-SAB and wasm backings the buffer is sized to the live extent,
60
+ * so `buffer.byteLength` minus the base is the tail. `SharedArrayBuffer.grow`
61
+ * resizes exactly.
62
+ * Wasm rounds up to a page, and its fast path deliberately lands new regions
63
+ * past that page-rounded tail.
65
64
  *
66
- * A plain (non-shared) `ArrayBuffer` is uniquely the heap profile's fixed
67
- * reservation every other in-place backing is a `SharedArrayBuffer`. Keying
68
- * off the backing keeps the SAB/wasm layouts byte-for-byte unchanged.
65
+ * The pure-TS **heap** backing differs. Its buffer is a fixed `ArrayBuffer`
66
+ * reserved at the full cap for V8 fast-path element access, so its `byteLength`
67
+ * is `maxBytes`, not the used size. The true tail is the header `capacity`, the
68
+ * logical high-water. New columns land in still-zero fixed-buffer space
69
+ * immediately past the last live column.
70
+ *
71
+ * The question is whether the allocator reserved the cap, not which buffer
72
+ * class it returned: `fixedSabAllocator` reserves a fixed `SharedArrayBuffer`
73
+ * and needs the header rule, while `growableSabAllocator` grows a
74
+ * `SharedArrayBuffer` to the live extent and needs the `byteLength` rule. So
75
+ * the allocator's `reservedAtCap` marker decides. The plain-`ArrayBuffer` test
76
+ * stays as the fallback for a store whose allocator predates the marker, which
77
+ * keeps the SAB and wasm layouts byte-for-byte unchanged.
69
78
  */
70
79
  export declare function tailCursorBytes(old: ColumnStoreInternal): number;
71
80
  /**
72
81
  * Derive `CreateColumnStoreOptions` from an old ColumnStore so a slow-path realloc
73
82
  * preserves the same set of optional regions at the same byte offsets in the
74
- * new SAB. Without this, an extend / grow would silently drop a region the
83
+ * new SAB. Without this, an extend or grow would silently drop a region, the
75
84
  * command ring's pending commands, every entity placement in the index, etc.
76
85
  * would be lost.
77
86
  *
78
87
  * Walks `STORE_PREFIX_REGIONS`: each present region's `readOptions` replays the
79
88
  * exact capacity the engine configured (regions may carry non-default sizes),
80
- * not just the default. Live state (write_head, length, …) is preserved
81
- * separately via `snapshotPrefixRegions`.
89
+ * not only the default. Live state (write_head, length, …) is preserved
90
+ * separately via `snapshotRegions`.
82
91
  *
83
92
  * Also re-applies the descriptor-region headroom policy
84
- * (`reservedDescriptorBytes`, #541). Unlike the prefix regions this is NOT
85
- * read from the SAB bytes — it's a JS-side policy carried on
86
- * `ColumnStoreInternal._reservedDescriptorBytes` but it belongs here for the
93
+ * (`reservedDescriptorBytes`). Unlike the prefix regions this is not
94
+ * read from the SAB bytes. It's a JS-side policy carried on
95
+ * `ColumnStoreInternal._reservedDescriptorBytes`, but it belongs here for the
87
96
  * same reason: without it the realloc'd store drops to zero descriptor
88
97
  * headroom and every later `extendColumnStore` takes the slow path forever.
89
- * Re-reserving the same margin (additive, see `planLayout`) keeps the #237
98
+ * Re-reserving the same margin (additive, see `planLayout`) keeps the
90
99
  * in-place fast path alive across reallocs.
91
100
  */
92
101
  export declare function optionsFromOld(old: ColumnStore): CreateColumnStoreOptions;
93
102
  /** A prefix-region snapshot: the live bytes of every present region from the
94
103
  * old SAB. `mechanism` is keyed by the `StoreHeader` field holding a mechanism
95
- * region's offset; `consumer` is keyed by `region_id` (consumer regions have no
96
- * named header field). Pairs `snapshotPrefixRegions` with
97
- * `restorePrefixRegions`. */
104
+ * region's offset. `consumer` is keyed by `region_id` (consumer regions have no
105
+ * named header field). Pairs `snapshotRegions` with
106
+ * `restoreRegions`. */
98
107
  export interface PrefixRegionSnapshot {
99
108
  readonly mechanism: Map<StoreRegionOffsetField, Uint8Array>;
100
109
  readonly consumer: Map<number, Uint8Array>;
101
110
  }
102
111
  /**
103
- * Snapshot the live bytes of every present region both engine MECHANISM
104
- * regions (STORE_PREFIX_REGIONS) and CONSUMER regions (the region-table
105
- * directory) from the old SAB BEFORE any allocator call that may detach
112
+ * Snapshot the live bytes of every present region, both engine mechanism
113
+ * regions (STORE_PREFIX_REGIONS) and consumer regions (the region-table
114
+ * directory), from the old SAB before any allocator call that may detach
106
115
  * views. Each entry is a heap `Uint8Array` copy (via `slice()`) so it survives
107
- * an allocator-induced detach; `restorePrefixRegions` places it back at the
116
+ * an allocator-induced detach. `restoreRegions` places it back at the
108
117
  * matching offset in the new SAB.
109
118
  *
110
- * Header bytes themselves are NOT snapshotted `createColumnStore` writes the
119
+ * Header bytes themselves are not snapshotted, `createColumnStore` writes the
111
120
  * header (and the region-table directory) from scratch with the correct
112
121
  * view_stamp (bumped after this call) and offsets.
113
122
  */
114
- export declare function snapshotPrefixRegions(old: ColumnStore): PrefixRegionSnapshot;
123
+ export declare function snapshotRegions(old: ColumnStore): PrefixRegionSnapshot;
115
124
  /** Restore prefix-region byte snapshots into `newStore` at the matching
116
- * region offsets. Pairs with `snapshotPrefixRegions`. The new SAB's regions
125
+ * region offsets. Pairs with `snapshotRegions`. The new SAB's regions
117
126
  * were sized identically by `optionsFromOld`, so each snapshot lands at the
118
- * same length its source had mechanism regions at their named header offset,
127
+ * same length its source had, mechanism regions at their named header offset,
119
128
  * consumer regions at the offset the rebuilt region-table resolves their id to. */
120
- export declare function restorePrefixRegions(newStore: ColumnStore, snap: PrefixRegionSnapshot): void;
129
+ export declare function restoreRegions(newStore: ColumnStore, snap: PrefixRegionSnapshot): void;
121
130
  /**
122
- * Snapshot per-archetype live column bytes from `old` BEFORE any
131
+ * Snapshot per-archetype live column bytes from `old`, before any
123
132
  * subsequent allocator call may detach the underlying typed-array views.
124
133
  * Returned shape: `{ archetype_id → Uint8Array[] }`, one entry per
125
134
  * column in `columnsInOrder`. Each `Uint8Array` is a fresh copy
126
135
  * (not a view) so it survives a `WebAssembly.Memory.grow`. Archetypes
127
- * with `row_count === 0` are omitted nothing to copy.
136
+ * with `row_count === 0` are omitted, nothing to copy.
128
137
  */
129
138
  export declare function snapshotLiveColumns(old: ColumnStore, rowCountsById: Map<number, number>): Map<number, Uint8Array[]>;
130
139
  /**
131
140
  * Write per-archetype column snapshots produced by `snapshotLiveColumns`
132
- * into `newStore`'s column views. The snapshot's column ORDER must match
133
- * the new archetype's `columnsInOrder` (extend / grow guarantee this
141
+ * into `newStore`'s column views. The snapshot's column order must match
142
+ * the new archetype's `columnsInOrder` (extend and grow guarantee this
134
143
  * because they carry the column spec forward unchanged).
135
144
  */
136
- export declare function restoreColumnSnapshots(newStore: ColumnStore, snapshots: Map<number, Uint8Array[]>): void;
145
+ export declare function restoreLiveColumns(newStore: ColumnStore, snapshots: Map<number, Uint8Array[]>): void;
137
146
  /**
138
147
  * The realloc-and-republish slow path shared by `growColumnStore` and
139
- * `extendColumnStore` everything between "the specs are decided" and "the
148
+ * `extendColumnStore`, everything between "the specs are decided" and "the
140
149
  * caller shapes its result":
141
150
  *
142
- * 1. Capture `view_stamp` and snapshot live rows AND prefix regions
143
- * (command ring, entity-index) BEFORE the allocator call the
151
+ * 1. Capture `view_stamp` and snapshot live rows and prefix regions
152
+ * (command ring, entity-index) before the allocator call, the
144
153
  * wasmMemoryAllocator may detach `old`'s views on grow, so everything
145
154
  * needed is captured first. The prefix-region preservation is the
146
- * contract `Store` relies on to keep its entity table across resizes
147
- * (#245); `optionsFromOld` re-reserves regions and descriptor headroom
148
- * (#541) so the republished store keeps its layout and fast paths.
149
- * 2. `createColumnStore` with the derived options (fresh buffer; the same
155
+ * contract `Store` relies on to keep its entity table across resizes.
156
+ * `optionsFromOld` re-reserves the regions and the descriptor headroom,
157
+ * so the republished store keeps its layout and its fast paths.
158
+ * 2. `createColumnStore` with the derived options (fresh buffer, the same
150
159
  * growable allocator carries forward so the new buffer also grows in
151
160
  * place).
152
161
  * 3. Restore live rows + prefix regions. Archetypes without a row count
153
- * contributed no snapshot and stay zero-initialised; prefix regions
162
+ * contributed no snapshot and stay zero-initialised. Prefix regions
154
163
  * overwrite the empty state `createColumnStore` initialised.
155
164
  * 4. Bump `view_stamp` from the pre-capture value and patch the returned
156
- * header so its cached `viewStamp` matches the buffer bytes just
157
- * written — `createColumnStore` stamped it 0 (#386). `capacity` /
165
+ * header so its cached `viewStamp` matches the bytes written above.
166
+ * `createColumnStore` stamped it 0. `capacity` and
158
167
  * `archetype_count` are already correct (createColumnStore sized them),
159
- * so the spread carries them and the internal `_allocator` /
160
- * `_regionBytes` fields through unchanged.
168
+ * so the spread carries them, and the internal `_allocator` and
169
+ * `_regionBytes` fields, through unchanged.
161
170
  *
162
- * Every view in the returned store is fresh; callers MUST refresh
163
- * (`viewsPreserved: false` is the callers' contract with THEIR callers).
171
+ * Every view in the returned store is fresh. Callers must refresh
172
+ * (`viewsPreserved: false` is the callers' contract with their callers).
164
173
  */
165
174
  export declare function reallocAndRepublish(old: ColumnStore, specs: readonly ArchetypeSpec[], rowCountsById: Map<number, number>, allocator: BufferAllocator | undefined): {
166
175
  store: ColumnStore;
@@ -1 +1 @@
1
- {"version":3,"file":"layout_ops.d.ts","sourceRoot":"","sources":["../../../src/core/store/layout_ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout_ops.d.ts","sourceRoot":"","sources":["../../../src/core/store/layout_ops.ts"],"names":[],"mappings":"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"}
@@ -4,40 +4,46 @@ export { REGION_TABLE_ENTRY_BYTES, REGION_TABLE_ENTRY_OFFSETS };
4
4
  * distinct within its region set, that it also resolves on the read side),
5
5
  * computes `bytes`, and seeds the region header + contents in `init`.
6
6
  *
7
- * `init` runs ONCE at first allocation. Across a SAB grow/extend the region's
7
+ * `init` runs once at first allocation. Across a SAB grow and extend the region's
8
8
  * live bytes are snapshotted and restored verbatim (the table is
9
- * self-describing), so `init` is not re-run a consumer must not rely on it
9
+ * self-describing), so `init` is not re-run, a consumer must not rely on it
10
10
  * firing per realloc. */
11
11
  export interface StoreRegionSpec {
12
- /** Consumer-owned region id (nonzero, distinct). Written to the directory;
13
- * resolved by the consumer via `findRegionOffset` / `abi.find_region`. */
12
+ /** Consumer-owned region id (nonzero, distinct). Written to the directory
13
+ * resolved by the consumer through `findRegionOffset`. */
14
14
  readonly id: number;
15
- /** Human label for diagnostics / the self-documenting directory dump. */
15
+ /** Human label for diagnostics and the self-documenting directory dump. */
16
16
  readonly name: string;
17
17
  /** Byte size to allocate for this region (consumer computes from its knobs).
18
18
  * Must be > 0. */
19
19
  readonly bytes: number;
20
- /** Initialise the region header + seed bytes at absolute byte offset `off`. */
20
+ /** Initialise the region header and seed bytes at `off`, which indexes
21
+ * `view`. `view` starts at the store base, so a consumer that needs a
22
+ * TypedArray builds it at `view.byteOffset + off`. */
21
23
  readonly init: (view: DataView, off: number) => void;
22
24
  }
23
- /** One decoded directory record. */
25
+ /** One decoded directory record. `byteOffset` is measured from the store base,
26
+ * the same as every other offset in the bytes. */
24
27
  export interface RegionTableEntry {
25
28
  readonly regionId: number;
26
29
  readonly byteOffset: number;
27
30
  readonly byteLength: number;
28
31
  }
29
- /** A resolved handle to a consumer region, returned by `ECS.regionHandle` /
30
- * `Store.regionHandle`. Carries the live `buffer`/`view` plus the region's byte
32
+ /** A resolved handle to a consumer region, returned by `ECS.regionHandle` or
33
+ * `Store.regionHandle`. Carries the live `buffer` and `view` plus the region's byte
31
34
  * `offset` and full `bytes`, so a consumer's region module can build a
32
35
  * TypedArray view over exactly the region's span without re-reading the
33
- * directory. Re-fetch after a SAB grow (the offset/view may have moved). */
36
+ * directory. Re-fetch after a SAB grow (the offset and view may have moved). */
34
37
  export interface ColumnStoreRegionHandle {
35
- /** `ArrayBufferLike` see `ColumnStore.buffer`. Consumer regions are a SAB-profile
36
- * feature (WASM/worker), so in practice this is a `SharedArrayBuffer` wherever
37
- * regions are declared; the type is widened only because it flows from the
38
+ /** `ArrayBufferLike`, see `ColumnStore.buffer`. Consumer regions are a SAB-profile
39
+ * feature (WASM or worker), so in practice this is a `SharedArrayBuffer` wherever
40
+ * regions are declared. The type is widened only because it flows from the
38
41
  * backing-agnostic store. */
39
42
  readonly buffer: ArrayBufferLike;
43
+ /** Starts at the store base, so `view.byteOffset` is that base. */
40
44
  readonly view: DataView;
45
+ /** Buffer-absolute, so `new Uint8Array(buffer, offset, bytes)` reads the
46
+ * region. Read it through `view` at `offset - view.byteOffset`. */
41
47
  readonly offset: number;
42
48
  readonly bytes: number;
43
49
  }
@@ -48,9 +54,9 @@ export declare class RegionRegistryError extends Error {
48
54
  export declare function regionTableBytes(count: number): number;
49
55
  /** Validate a consumer region set before layout: ids must be nonzero (0 is the
50
56
  * "absent" sentinel `findRegionOffset` returns) and distinct, and each region
51
- * must request a positive byte size. Throws `RegionRegistryError` otherwise
57
+ * must request a positive byte size. Throws `RegionRegistryError` otherwise,
52
58
  * the same loud-failure stance the mechanism registry's paired-knob guards take. */
53
- export declare function validateRegionSpecs(regions: readonly StoreRegionSpec[]): void;
59
+ export declare function assertRegionSpecs(regions: readonly StoreRegionSpec[]): void;
54
60
  /** Write one directory record at absolute byte offset `off`. */
55
61
  export declare function writeRegionTableEntry(view: DataView, off: number, e: RegionTableEntry): void;
56
62
  /** Read one directory record at absolute byte offset `off`. */
@@ -59,16 +65,17 @@ export declare function readRegionTableEntry(view: DataView, off: number): Regio
59
65
  export declare function writeRegionTable(view: DataView, tableOff: number, entries: readonly RegionTableEntry[]): void;
60
66
  /** Read all `count` directory records starting at `tableOff`, in order. */
61
67
  export declare function readRegionTable(view: DataView, tableOff: number, count: number): RegionTableEntry[];
62
- /** Read the directory described by the SAB header (`region_table_off` /
68
+ /** Read the directory described by the SAB header (`region_table_off` and
63
69
  * `region_table_count`). Empty when no consumer regions were declared. */
64
70
  export declare function readHeaderRegionTable(view: DataView): RegionTableEntry[];
65
- /** Resolve a consumer region's byte offset by `region_id`, or 0 when absent
66
- * (no directory, or no matching entry). The TS twin of Zig
67
- * `abi.find_region(header_addr, region_id)`; 0 is an unambiguous "absent"
68
- * sentinel because a real region never starts at SAB byte 0 (the header does). */
71
+ /** Resolve a consumer region's store-relative byte offset by `region_id`, or 0
72
+ * when absent (no directory, or no matching entry). The TS twin of the
73
+ * module-side lookup. 0 is an unambiguous "absent"
74
+ * sentinel because a real region never starts at relative offset 0, which the
75
+ * header occupies. */
69
76
  export declare function findRegionOffset(view: DataView, regionId: number): number;
70
77
  /** Resolve a consumer region's `(byte_offset, byte_length)` by `region_id`, or
71
78
  * `null` when absent. Use when a reader needs the region's size (e.g. to
72
- * materialise a TypedArray view) and not just its start. */
79
+ * materialise a TypedArray view) and not only its start. */
73
80
  export declare function findRegionEntry(view: DataView, regionId: number): RegionTableEntry | null;
74
81
  //# sourceMappingURL=region_table.d.ts.map