@oasys/oecs 0.5.4 → 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 +1223 -266
  2. package/README.md +217 -112
  3. package/dist/core/ecs/access_check.d.cts +29 -29
  4. package/dist/core/ecs/access_check.d.ts +29 -29
  5. package/dist/core/ecs/access_check.d.ts.map +1 -1
  6. package/dist/core/ecs/archetype.d.cts +217 -209
  7. package/dist/core/ecs/archetype.d.ts +217 -209
  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 +33 -33
  13. package/dist/core/ecs/archetype_graph.d.ts +33 -33
  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 +26 -26
  28. package/dist/core/ecs/command_log.d.ts +26 -26
  29. package/dist/core/ecs/command_log.d.ts.map +1 -1
  30. package/dist/core/ecs/component.d.cts +43 -42
  31. package/dist/core/ecs/component.d.ts +43 -42
  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 +289 -270
  46. package/dist/core/ecs/ecs.d.ts +289 -270
  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 +20 -18
  57. package/dist/core/ecs/entity_allocator.d.ts +20 -18
  58. package/dist/core/ecs/entity_allocator.d.ts.map +1 -1
  59. package/dist/core/ecs/event.d.cts +36 -22
  60. package/dist/core/ecs/event.d.ts +36 -22
  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 +32 -32
  69. package/dist/core/ecs/frame_trace.d.ts +32 -32
  70. package/dist/core/ecs/frame_trace.d.ts.map +1 -1
  71. package/dist/core/ecs/host_commands.d.cts +103 -85
  72. package/dist/core/ecs/host_commands.d.ts +103 -85
  73. package/dist/core/ecs/host_commands.d.ts.map +1 -1
  74. package/dist/core/ecs/index.d.cts +21 -11
  75. package/dist/core/ecs/index.d.ts +21 -11
  76. package/dist/core/ecs/index.d.ts.map +1 -1
  77. package/dist/core/ecs/observer.d.cts +39 -120
  78. package/dist/core/ecs/observer.d.ts +39 -120
  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 +208 -578
  90. package/dist/core/ecs/query.d.ts +208 -578
  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 +100 -39
  102. package/dist/core/ecs/ref.d.ts +100 -39
  103. package/dist/core/ecs/ref.d.ts.map +1 -1
  104. package/dist/core/ecs/relation.d.cts +101 -182
  105. package/dist/core/ecs/relation.d.ts +101 -182
  106. package/dist/core/ecs/relation.d.ts.map +1 -1
  107. package/dist/core/ecs/resource.d.cts +13 -13
  108. package/dist/core/ecs/resource.d.ts +13 -13
  109. package/dist/core/ecs/resource_registry.d.cts +5 -5
  110. package/dist/core/ecs/resource_registry.d.ts +5 -5
  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 +91 -120
  119. package/dist/core/ecs/schedule.d.ts +91 -120
  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 +108 -51
  131. package/dist/core/ecs/sparse_store.d.ts +108 -51
  132. package/dist/core/ecs/sparse_store.d.ts.map +1 -1
  133. package/dist/core/ecs/store.d.cts +527 -473
  134. package/dist/core/ecs/store.d.ts +527 -473
  135. package/dist/core/ecs/store.d.ts.map +1 -1
  136. package/dist/core/ecs/store_layout_listener.d.cts +6 -6
  137. package/dist/core/ecs/store_layout_listener.d.ts +6 -6
  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 +146 -61
  142. package/dist/core/ecs/system.d.ts +146 -61
  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 +82 -6
  154. package/dist/core/ecs/utils/error.d.ts +82 -6
  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 +44 -44
  163. package/dist/core/store/action_ring.d.ts +44 -44
  164. package/dist/core/store/action_ring.d.ts.map +1 -1
  165. package/dist/core/store/allocator.d.cts +149 -95
  166. package/dist/core/store/allocator.d.ts +149 -95
  167. package/dist/core/store/allocator.d.ts.map +1 -1
  168. package/dist/core/store/buffer_backed_column.d.cts +17 -17
  169. package/dist/core/store/buffer_backed_column.d.ts +17 -17
  170. package/dist/core/store/buffer_backed_column.d.ts.map +1 -1
  171. package/dist/core/store/column_store.d.cts +124 -86
  172. package/dist/core/store/column_store.d.ts +124 -86
  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 +36 -39
  178. package/dist/core/store/command_ring.d.ts +36 -39
  179. package/dist/core/store/command_ring.d.ts.map +1 -1
  180. package/dist/core/store/descriptor.d.cts +34 -17
  181. package/dist/core/store/descriptor.d.ts +34 -17
  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 +36 -38
  187. package/dist/core/store/event_ring.d.ts +36 -38
  188. package/dist/core/store/event_ring.d.ts.map +1 -1
  189. package/dist/core/store/extend.d.cts +13 -7
  190. package/dist/core/store/extend.d.ts +13 -7
  191. package/dist/core/store/extend.d.ts.map +1 -1
  192. package/dist/core/store/grow.d.cts +2 -2
  193. package/dist/core/store/grow.d.ts +2 -2
  194. package/dist/core/store/grow.d.ts.map +1 -1
  195. package/dist/core/store/header.d.cts +31 -27
  196. package/dist/core/store/header.d.ts +31 -27
  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 +71 -62
  202. package/dist/core/store/layout_ops.d.ts +71 -62
  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 +12 -12
  211. package/dist/core/store/state_hash.d.ts +12 -12
  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 +15 -10
  225. package/dist/index.d.ts +15 -10
  226. package/dist/index.d.ts.map +1 -1
  227. package/dist/index.development.cjs +1 -1
  228. package/dist/index.development.js +5804 -5203
  229. package/dist/index.js +5323 -4764
  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 +54 -54
  244. package/dist/{extensions → plugins}/editor/editor.d.ts +54 -54
  245. package/dist/plugins/editor/editor.d.ts.map +1 -0
  246. package/dist/{extensions → plugins}/editor/field_handle.d.cts +12 -12
  247. package/dist/{extensions → plugins}/editor/field_handle.d.ts +12 -12
  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} +81 -64
  257. package/dist/{extensions/editor/index.js → plugins/editor.js} +81 -64
  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 +85 -97
  302. package/dist/{core/ecs → plugins/relations}/relation_service.d.ts +85 -97
  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 +16 -15
  411. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +16 -15
  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 +3 -3
  415. package/dist/version.d.ts +3 -3
  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-BlR3oZ3x.js +0 -2406
  465. package/dist/host_commands-C2cpU3yC.cjs +0 -1
  466. package/dist/internal-BoxWl4dG.js +0 -2565
  467. package/dist/internal-CGBEwfeB.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-Bs39EPh1.js +0 -150
  502. package/dist/shallow-C5YmTbtb.cjs +0 -1
  503. package/dist/shallow-CiFC70Dz.js +0 -159
  504. package/dist/shallow-DQ8aG51_.cjs +0 -1
  505. package/dist/shared-B4v0L1cw.js +0 -109
  506. package/dist/shared-DU78k0pU.cjs +0 -1
  507. package/dist/topological_sort-BDvEyb9W.cjs +0 -1
  508. package/dist/topological_sort-DK6EjpWa.js +0 -135
  509. package/dist/typed_arrays-D3NmwtCG.cjs +0 -1
  510. package/dist/typed_arrays-DIVwVy5_.js +0 -258
@@ -1,18 +1,18 @@
1
1
  /**
2
- * Entity-index SAB region `EntityID` → `(archetype_id, row, generation)`
3
- * lookup table shared with the Zig sim.
2
+ * Entity-index SAB region, `EntityID` → `(archetype_id, row, generation)`
3
+ * lookup table shared with a compute backend.
4
4
  *
5
- * Every hot fixed-update system that needs to resolve an `EntityID`
6
- * held in a column (e.g. a component field that points at another
7
- * entity that entity's columns) has to do
8
- * `entityId → archetype + row` translation. WASM-into-TS callbacks
9
- * during `tick()` are forbidden, so the lookup
5
+ * Every hot fixed-update system that resolves an `EntityID`
6
+ * held in a column (a component field that points at another
7
+ * entity, and through it at that entity's columns) has to do
8
+ * `entityId → archetype + row` translation. A WASM-into-TS callback
9
+ * during a tick is forbidden, so the lookup
10
10
  * tables must live in shared memory.
11
11
  *
12
12
  * Layout:
13
13
  *
14
14
  * [ length: u32 ] high-water index (count of slots ever issued)
15
- * [ capacity: u32 ] backing-array length (slots × 1; not bytes)
15
+ * [ capacity: u32 ] backing-array length (slots × 1, not bytes)
16
16
  * [ _pad0: u32 ] alignment pad to 16 bytes
17
17
  * [ _pad1: u32 ] ───
18
18
  * [ generations[capacity]: i32 ]
@@ -21,26 +21,26 @@
21
21
  *
22
22
  * Sentinels:
23
23
  * - `generations[i] = 0` (INITIAL_GENERATION) for never-used slots.
24
- * Generation grows by 1 on every destroy; an `EntityID`'s generation
24
+ * Generation grows by 1 on every destroy. An `EntityID`'s generation
25
25
  * field matches `generations[index]` iff it's still alive.
26
26
  * - `archetypes[i] = -1` (UNASSIGNED) when the slot hasn't been placed
27
- * into an archetype, OR when the entity is destroyed.
28
- * - `rows[i] = -1` (UNASSIGNED) on destroy / not-placed.
27
+ * into an archetype, or when the entity is destroyed.
28
+ * - `rows[i] = -1` (`UNASSIGNED`) on a destroy, or when not placed.
29
29
  *
30
30
  * Field width: i32 (signed) on the TS side so `-1` round-trips through
31
- * `Int32Array` without unsigned coercion. Zig reads as i32 too bit
32
- * pattern is identical to u32 `0xFFFFFFFF` for the UNASSIGNED case, and
33
- * for valid archetype_ids (bounded by `MAX_INDEX = 2^20`) the sign bit
34
- * is never set, so signed/unsigned interpretation agrees.
31
+ * `Int32Array` without unsigned coercion. A module reads i32 too. The bit
32
+ * pattern is identical to u32 `0xFFFFFFFF` for the `UNASSIGNED` case, and
33
+ * for a valid archetype id (bounded by `MAX_INDEX`) the sign bit
34
+ * is never set, so signed and unsigned interpretation agree.
35
35
  *
36
36
  * Region placement: between command ring and descriptor region so the
37
- * offset is stable across descriptor / column-region growth (same
37
+ * offset is stable across descriptor growth and column-region growth (same
38
38
  * property the command ring gets). Grow path (when entityHighWater
39
- * exceeds `capacity`) uses `growColumnStore` slow path, same as
39
+ * exceeds `capacity`) uses `growColumnStore`, slow path, same as
40
40
  * descriptor-region overflow.
41
41
  *
42
- * Reading from Zig: see `packages/sim/src/entity_index.zig` for the
43
- * symmetric reader.
42
+ * A module reads the region with the symmetric reader: the header first,
43
+ * then the two i32 arrays it names.
44
44
  */
45
45
  /** Fixed bytes of the region header (length, capacity, two pad u32s for
46
46
  * 16-byte alignment of the i32 arrays that follow). */
@@ -48,24 +48,23 @@ export declare const ENTITY_INDEX_HEADER_BYTES = 16;
48
48
  /** Bytes per slot: three i32 columns. */
49
49
  export declare const ENTITY_INDEX_BYTES_PER_SLOT = 12;
50
50
  /** Byte offsets within the region header. Locked by the
51
- * `entity_index.test.ts` golden bytes; any change here is a
51
+ * `entity_index.test.ts` golden bytes. Any change here is a
52
52
  * `SIM_ABI_VERSION` bump. */
53
53
  export declare const ENTITY_INDEX_HEADER_OFFSETS: {
54
54
  readonly length: 0;
55
55
  readonly capacity: 4;
56
56
  };
57
- /** Default initial slot count when the engine creates a Store. Matches
58
- * `MAX_INDEX = (1 << 20) - 1 + 1 = 1_048_576` (the EntityID 20-bit index
59
- * range, see `entity.ts`), so the region pre-sizes to the entire
60
- * addressable entity space and `createEntity` can never run out under
61
- * the default. 1M × 12 B 12 MiB SAB region — virtual memory only;
62
- * physical pages allocate lazily via OS page-fault on first touch, so
63
- * the typical 1000-entity workload pays for ~12 KiB physical even though the
64
- * virtual reservation is 12 MiB.
57
+ /** Default initial slot count when the engine creates a Store. It is
58
+ * `MAX_INDEX + 1`, the whole `EntityID` 20-bit index range (see `entity.ts`),
59
+ * so the region pre-sizes to the entire addressable entity space and
60
+ * `createEntity` can never run out under the default. That reservation is
61
+ * virtual memory only. Physical pages allocate lazily, through an OS page
62
+ * fault on first touch, so a small workload keeps a small resident footprint
63
+ * whatever the reservation is.
65
64
  *
66
- * Tests / benches can pass a smaller `StoreOptions.entityIndexCapacity`
67
- * to bench tighter reservations. A future PR will replace this with
68
- * on-demand growth via `growColumnStore` so the default can drop. */
65
+ * A caller can pass a smaller `CreateColumnStoreOptions.entityIndexCapacity`
66
+ * for a tighter reservation. On-demand growth through `growColumnStore` would
67
+ * let the default drop. */
69
68
  export declare const ENTITY_INDEX_DEFAULT_CAPACITY: number;
70
69
  /** Total region bytes for `capacity` slots: header + 3 i32 columns. */
71
70
  export declare function entityIndexRegionBytes(capacity: number): number;
@@ -81,7 +80,7 @@ export declare class EntityIndexError extends Error {
81
80
  /** Initialise the region header at `regionOff`. Sets `length=0` and
82
81
  * `capacity=<arg>`. The i32 arrays past the header are left untouched
83
82
  * (callers normally allocate the region on a fresh, zero-initialised
84
- * SAB; generation 0 is the INITIAL_GENERATION sentinel, archetype/row
83
+ * SAB. Generation 0 is the INITIAL_GENERATION sentinel, archetype and row
85
84
  * sentinels of 0 are caught by `length=0` so no read reaches them). */
86
85
  export declare function initEntityIndexRegion(view: DataView, regionOff: number, capacity: number): void;
87
86
  /** Read the region's current length (high-water index, ≤ capacity). */
@@ -94,13 +93,13 @@ export declare function entityIndexCapacity(view: DataView, regionOff: number):
94
93
  export declare function setEntityIndexLength(view: DataView, regionOff: number, length: number): void;
95
94
  /** Materialise the three Int32Array views over the region's column data
96
95
  * for use by the engine's Store. The views live as long as the
97
- * SharedArrayBuffer hasn't been reallocated refresh on `view_stamp`
96
+ * SharedArrayBuffer hasn't been reallocated, refresh on `view_stamp`
98
97
  * bump (the engine's `_onBufferResized` callback).
99
98
  *
100
99
  * Three separate views (not a single struct-of-arrays object) because
101
100
  * the engine's hot paths benefit from each being a direct typed-array
102
- * read; V8 specialises `arr[i] = v` aggressively for typed arrays. */
103
- export declare function buildEntityIndexViews(buffer: ArrayBufferLike, regionOff: number, capacity: number): {
101
+ * read. V8 specialises `arr[i] = v` aggressively for typed arrays. */
102
+ export declare function createEntityIndexViews(buffer: ArrayBufferLike, regionOff: number, capacity: number): {
104
103
  readonly generations: Int32Array;
105
104
  readonly archetypes: Int32Array;
106
105
  readonly rows: Int32Array;
@@ -1 +1 @@
1
- {"version":3,"file":"entity_index.d.ts","sourceRoot":"","sources":["../../../src/core/store/entity_index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH;uDACuD;AACvD,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,yCAAyC;AACzC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C;;6BAE6B;AAC7B,eAAO,MAAM,2BAA2B;;;CAI9B,CAAC;AAEX;;;;;;;;;;;qEAWqE;AACrE,eAAO,MAAM,6BAA6B,QAAU,CAAC;AAErD,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO/D;AAED,+DAA+D;AAC/D,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,8CAA8C;AAC9C,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,qCAAqC;AACrC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI3B;AAED;;;;uEAIuE;AACvE,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACd,IAAI,CASN;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;aAEa;AACb,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE5F;AAED;;;;;;;sEAOsE;AACtE,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACd;IACF,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC1B,CAQA"}
1
+ {"version":3,"file":"entity_index.d.ts","sourceRoot":"","sources":["../../../src/core/store/entity_index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH;uDACuD;AACvD,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,yCAAyC;AACzC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C;;6BAE6B;AAC7B,eAAO,MAAM,2BAA2B;;;CAI9B,CAAC;AAEX;;;;;;;;;;2BAU2B;AAC3B,eAAO,MAAM,6BAA6B,QAAU,CAAC;AAErD,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO/D;AAED,+DAA+D;AAC/D,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,8CAA8C;AAC9C,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,qCAAqC;AACrC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI3B;AAED;;;;uEAIuE;AACvE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS/F;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;aAEa;AACb,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE5F;AAED;;;;;;;sEAOsE;AACtE,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACd;IACF,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC1B,CAQA"}
@@ -1,68 +1,66 @@
1
1
  /**
2
- * Event ring SPSC ring buffer for ECS signal/event payloads shared
3
- * between TS and the Zig sim.
2
+ * Event ring. SPSC ring buffer for ECS signal and event payloads shared
3
+ * between TS and a compute backend.
4
4
  *
5
- * Same byte layout as the command ring (`command_ring.ts`); the two
6
- * could share a primitive but keeping them separate makes the
7
- * direction of flow explicit: command ring is WASM→TS (structural
8
- * intents to drain post-tick); event ring is bidirectional during
9
- * `tick()` Zig systems push events, TS readers (or other Zig
10
- * systems) drain.
5
+ * Same byte layout as the command ring (`command_ring.ts`). The two
6
+ * could share a primitive, but keeping them separate makes the
7
+ * direction of flow explicit. The command ring is WASM→TS, and carries
8
+ * structural intents to drain post-tick. The event ring is bidirectional during
9
+ * a tick. A module's systems push events, and TS readers or sibling module
10
+ * systems drain.
11
11
  *
12
12
  * Layout (identical to command ring):
13
13
  *
14
- * [ write_head: u32 ] slot 0..N-1, monotonic (NOT slot-modulo)
14
+ * [ write_head: u32 ] slot 0..N-1, monotonic (not slot-modulo)
15
15
  * [ read_head: u32 ] slot 0..N-1, monotonic
16
16
  * [ capacity: u32 ] slot count, power-of-two
17
- * [ overflow_flag: u32 ] 0 = OK; 1 = sticky overflow witness
17
+ * [ overflow_flag: u32 ] 0 = OK, 1 = sticky overflow witness
18
18
  * [ slot 0: 16 B ] opCode: u8, payload: [15]u8
19
19
  * [ slot 1: 16 B ] ...
20
20
  *
21
- * Op codes: event-def IDs (assigned by `ECS.registerEvent()` at
22
- * registration time). The 0 op-code is
23
- * reserved as the empty-slot marker so a zero-initialised SAB does not
24
- * appear to hold a valid event. Event-def registration starts numbering
25
- * from 1 to honour this; the engine integration in 4D+ enforces it.
21
+ * Op codes: event-def ids, assigned when an event is registered. The 0
22
+ * op-code is reserved as the empty-slot marker so a zero-initialised SAB does
23
+ * not appear to hold a valid event. Event-def registration starts numbering
24
+ * from 1 to honour this.
26
25
  *
27
26
  * SPSC contract (single host thread):
28
- * - Producer: Zig sim `tick()` (post-4D) OR TS host (test producers /
29
- * existing JS-side emitters bridged into the ring).
30
- * - Consumer: TS host drain (post-4D) OR Zig system that reads
27
+ * - Producer: a WASM tick, or the TS host (a test producer, or an
28
+ * existing JS-side emitter bridged into the ring).
29
+ * - Consumer: the TS host drain, or a module system that reads
31
30
  * queued events from a sibling system.
32
31
  * - The two never run concurrently (one host thread orchestrates
33
32
  * both). A later worker offload promotes the head
34
- * bumps to `Atomics.store`; that's an additive change without
33
+ * bumps to `Atomics.store`. That's an additive change without
35
34
  * altering the layout.
36
35
  *
37
- * Payload size: fixed 15 bytes per slot. Today's events all fit
38
- * (e.g. a 12-byte 3-field event, a 4-byte 1-field event, a 0-field
39
- * signal). Larger payloads require a separate variable-size ring
40
- * design — out of scope here.
36
+ * Payload size: fixed 15 bytes per slot. Every event the engine carries today
37
+ * fits, because an event holds a few numeric fields at most. A larger payload
38
+ * needs a separate variable-size ring design, out of scope here.
41
39
  *
42
40
  * Region placement: between the entity-index region and the descriptor
43
- * region so its offset is stable across descriptor / column growth.
41
+ * region so its offset is stable across descriptor and column growth.
44
42
  * `header.event_ring_off` (the field promoted out of `_reserved0`)
45
- * carries the offset; 0 means absent.
43
+ * carries the offset, 0 means absent.
46
44
  */
47
45
  /** Total bytes for the ring header. Matches command ring exactly. */
48
46
  export declare const EVENT_RING_HEADER_BYTES = 16;
49
- /** Fixed slot size 1-byte opCode + 15-byte payload. Matches
47
+ /** Fixed slot size, 1-byte opCode + 15-byte payload. Matches
50
48
  * command ring exactly. */
51
49
  export declare const EVENT_RING_SLOT_BYTES = 16;
52
50
  /** Default ring capacity in slots. 256 × 16 B = 4 KiB of slot data
53
51
  * plus 16 B header. Mirrors `COMMAND_RING_DEFAULT_CAPACITY_SLOTS`. */
54
52
  export declare const EVENT_RING_DEFAULT_CAPACITY_SLOTS = 256;
55
- /** Byte offsets within the ring header. Mirrored on the Zig side in
56
- * `packages/sim/src/event_ring.zig` keep in sync. */
53
+ /** Byte offsets within the ring header. A reader on the module side mirrors
54
+ * these offsets, so a change here is an ABI change. */
57
55
  export declare const EVENT_RING_HEADER_OFFSETS: {
58
56
  readonly write_head: 0;
59
57
  readonly read_head: 4;
60
58
  readonly capacity_slots: 8;
61
59
  readonly overflow_flag: 12;
62
60
  };
63
- /** Op-code = `0` is reserved across the SAB layer as "empty slot"
64
- * (see file header). Event-def IDs start at 1; `ECS.registerEvent`
65
- * shifts to honour this when wiring SAB-backed channels in 4D+. */
61
+ /** Op-code `0` is reserved across the SAB layer as "empty slot"
62
+ * (see file header). Event-def ids start at 1, so a SAB-backed channel never
63
+ * writes a code that reads as an empty slot. */
66
64
  export declare const EVENT_OP_EMPTY = 0;
67
65
  /** Total bytes the ring occupies for `capacity_slots` slots. */
68
66
  export declare function eventRingBytes(capacitySlots: number): number;
@@ -70,21 +68,21 @@ export declare class EventRingError extends Error {
70
68
  constructor(message: string);
71
69
  }
72
70
  /** Initialise the ring header at `ringOff` in the SAB. Zeroes
73
- * `write_head`, `read_head`, and `overflow_flag`; sets `capacity_slots`.
71
+ * `write_head`, `read_head`, and `overflow_flag`. Sets `capacity_slots`.
74
72
  * Slot bytes are left as-is (callers normally allocate the ring on a
75
73
  * fresh, zero-initialised SAB). */
76
74
  export declare function initEventRing(view: DataView, ringOff: number, capacitySlots: number): void;
77
- export declare function ringWriteHead(view: DataView, ringOff: number): number;
78
- export declare function ringReadHead(view: DataView, ringOff: number): number;
79
- export declare function ringCapacitySlots(view: DataView, ringOff: number): number;
80
- export declare function ringOverflow(view: DataView, ringOff: number): boolean;
75
+ export declare function eventRingWriteHead(view: DataView, ringOff: number): number;
76
+ export declare function eventRingReadHead(view: DataView, ringOff: number): number;
77
+ export declare function eventRingCapacitySlots(view: DataView, ringOff: number): number;
78
+ export declare function eventRingOverflow(view: DataView, ringOff: number): boolean;
81
79
  /** Pending event count = `(write_head - read_head) mod 2^32`. */
82
80
  export declare function pendingEventCount(view: DataView, ringOff: number): number;
83
81
  /** Push an event into the ring. Returns `false` on overflow and sets
84
- * the (sticky) overflow flag. `opCode` must be > 0 0 is reserved as
82
+ * the (sticky) overflow flag. `opCode` must be > 0, 0 is reserved as
85
83
  * the empty-slot marker. Payload must be exactly 15 bytes. */
86
84
  export declare function pushEvent(view: DataView, ringOff: number, opCode: number, payload: Uint8Array): boolean;
87
- /** Read one event from the ring. Returns opCode (0 = empty/no event)
85
+ /** Read one event from the ring. Returns opCode (0 = empty, no event)
88
86
  * and fills `outPayload` with 15 bytes. When 0 is returned,
89
87
  * `outPayload` is untouched. */
90
88
  export declare function popEvent(view: DataView, ringOff: number, outPayload: Uint8Array): number;
@@ -1,68 +1,66 @@
1
1
  /**
2
- * Event ring SPSC ring buffer for ECS signal/event payloads shared
3
- * between TS and the Zig sim.
2
+ * Event ring. SPSC ring buffer for ECS signal and event payloads shared
3
+ * between TS and a compute backend.
4
4
  *
5
- * Same byte layout as the command ring (`command_ring.ts`); the two
6
- * could share a primitive but keeping them separate makes the
7
- * direction of flow explicit: command ring is WASM→TS (structural
8
- * intents to drain post-tick); event ring is bidirectional during
9
- * `tick()` Zig systems push events, TS readers (or other Zig
10
- * systems) drain.
5
+ * Same byte layout as the command ring (`command_ring.ts`). The two
6
+ * could share a primitive, but keeping them separate makes the
7
+ * direction of flow explicit. The command ring is WASM→TS, and carries
8
+ * structural intents to drain post-tick. The event ring is bidirectional during
9
+ * a tick. A module's systems push events, and TS readers or sibling module
10
+ * systems drain.
11
11
  *
12
12
  * Layout (identical to command ring):
13
13
  *
14
- * [ write_head: u32 ] slot 0..N-1, monotonic (NOT slot-modulo)
14
+ * [ write_head: u32 ] slot 0..N-1, monotonic (not slot-modulo)
15
15
  * [ read_head: u32 ] slot 0..N-1, monotonic
16
16
  * [ capacity: u32 ] slot count, power-of-two
17
- * [ overflow_flag: u32 ] 0 = OK; 1 = sticky overflow witness
17
+ * [ overflow_flag: u32 ] 0 = OK, 1 = sticky overflow witness
18
18
  * [ slot 0: 16 B ] opCode: u8, payload: [15]u8
19
19
  * [ slot 1: 16 B ] ...
20
20
  *
21
- * Op codes: event-def IDs (assigned by `ECS.registerEvent()` at
22
- * registration time). The 0 op-code is
23
- * reserved as the empty-slot marker so a zero-initialised SAB does not
24
- * appear to hold a valid event. Event-def registration starts numbering
25
- * from 1 to honour this; the engine integration in 4D+ enforces it.
21
+ * Op codes: event-def ids, assigned when an event is registered. The 0
22
+ * op-code is reserved as the empty-slot marker so a zero-initialised SAB does
23
+ * not appear to hold a valid event. Event-def registration starts numbering
24
+ * from 1 to honour this.
26
25
  *
27
26
  * SPSC contract (single host thread):
28
- * - Producer: Zig sim `tick()` (post-4D) OR TS host (test producers /
29
- * existing JS-side emitters bridged into the ring).
30
- * - Consumer: TS host drain (post-4D) OR Zig system that reads
27
+ * - Producer: a WASM tick, or the TS host (a test producer, or an
28
+ * existing JS-side emitter bridged into the ring).
29
+ * - Consumer: the TS host drain, or a module system that reads
31
30
  * queued events from a sibling system.
32
31
  * - The two never run concurrently (one host thread orchestrates
33
32
  * both). A later worker offload promotes the head
34
- * bumps to `Atomics.store`; that's an additive change without
33
+ * bumps to `Atomics.store`. That's an additive change without
35
34
  * altering the layout.
36
35
  *
37
- * Payload size: fixed 15 bytes per slot. Today's events all fit
38
- * (e.g. a 12-byte 3-field event, a 4-byte 1-field event, a 0-field
39
- * signal). Larger payloads require a separate variable-size ring
40
- * design — out of scope here.
36
+ * Payload size: fixed 15 bytes per slot. Every event the engine carries today
37
+ * fits, because an event holds a few numeric fields at most. A larger payload
38
+ * needs a separate variable-size ring design, out of scope here.
41
39
  *
42
40
  * Region placement: between the entity-index region and the descriptor
43
- * region so its offset is stable across descriptor / column growth.
41
+ * region so its offset is stable across descriptor and column growth.
44
42
  * `header.event_ring_off` (the field promoted out of `_reserved0`)
45
- * carries the offset; 0 means absent.
43
+ * carries the offset, 0 means absent.
46
44
  */
47
45
  /** Total bytes for the ring header. Matches command ring exactly. */
48
46
  export declare const EVENT_RING_HEADER_BYTES = 16;
49
- /** Fixed slot size 1-byte opCode + 15-byte payload. Matches
47
+ /** Fixed slot size, 1-byte opCode + 15-byte payload. Matches
50
48
  * command ring exactly. */
51
49
  export declare const EVENT_RING_SLOT_BYTES = 16;
52
50
  /** Default ring capacity in slots. 256 × 16 B = 4 KiB of slot data
53
51
  * plus 16 B header. Mirrors `COMMAND_RING_DEFAULT_CAPACITY_SLOTS`. */
54
52
  export declare const EVENT_RING_DEFAULT_CAPACITY_SLOTS = 256;
55
- /** Byte offsets within the ring header. Mirrored on the Zig side in
56
- * `packages/sim/src/event_ring.zig` keep in sync. */
53
+ /** Byte offsets within the ring header. A reader on the module side mirrors
54
+ * these offsets, so a change here is an ABI change. */
57
55
  export declare const EVENT_RING_HEADER_OFFSETS: {
58
56
  readonly write_head: 0;
59
57
  readonly read_head: 4;
60
58
  readonly capacity_slots: 8;
61
59
  readonly overflow_flag: 12;
62
60
  };
63
- /** Op-code = `0` is reserved across the SAB layer as "empty slot"
64
- * (see file header). Event-def IDs start at 1; `ECS.registerEvent`
65
- * shifts to honour this when wiring SAB-backed channels in 4D+. */
61
+ /** Op-code `0` is reserved across the SAB layer as "empty slot"
62
+ * (see file header). Event-def ids start at 1, so a SAB-backed channel never
63
+ * writes a code that reads as an empty slot. */
66
64
  export declare const EVENT_OP_EMPTY = 0;
67
65
  /** Total bytes the ring occupies for `capacity_slots` slots. */
68
66
  export declare function eventRingBytes(capacitySlots: number): number;
@@ -70,21 +68,21 @@ export declare class EventRingError extends Error {
70
68
  constructor(message: string);
71
69
  }
72
70
  /** Initialise the ring header at `ringOff` in the SAB. Zeroes
73
- * `write_head`, `read_head`, and `overflow_flag`; sets `capacity_slots`.
71
+ * `write_head`, `read_head`, and `overflow_flag`. Sets `capacity_slots`.
74
72
  * Slot bytes are left as-is (callers normally allocate the ring on a
75
73
  * fresh, zero-initialised SAB). */
76
74
  export declare function initEventRing(view: DataView, ringOff: number, capacitySlots: number): void;
77
- export declare function ringWriteHead(view: DataView, ringOff: number): number;
78
- export declare function ringReadHead(view: DataView, ringOff: number): number;
79
- export declare function ringCapacitySlots(view: DataView, ringOff: number): number;
80
- export declare function ringOverflow(view: DataView, ringOff: number): boolean;
75
+ export declare function eventRingWriteHead(view: DataView, ringOff: number): number;
76
+ export declare function eventRingReadHead(view: DataView, ringOff: number): number;
77
+ export declare function eventRingCapacitySlots(view: DataView, ringOff: number): number;
78
+ export declare function eventRingOverflow(view: DataView, ringOff: number): boolean;
81
79
  /** Pending event count = `(write_head - read_head) mod 2^32`. */
82
80
  export declare function pendingEventCount(view: DataView, ringOff: number): number;
83
81
  /** Push an event into the ring. Returns `false` on overflow and sets
84
- * the (sticky) overflow flag. `opCode` must be > 0 0 is reserved as
82
+ * the (sticky) overflow flag. `opCode` must be > 0, 0 is reserved as
85
83
  * the empty-slot marker. Payload must be exactly 15 bytes. */
86
84
  export declare function pushEvent(view: DataView, ringOff: number, opCode: number, payload: Uint8Array): boolean;
87
- /** Read one event from the ring. Returns opCode (0 = empty/no event)
85
+ /** Read one event from the ring. Returns opCode (0 = empty, no event)
88
86
  * and fills `outPayload` with 15 bytes. When 0 is returned,
89
87
  * `outPayload` is untouched. */
90
88
  export declare function popEvent(view: DataView, ringOff: number, outPayload: Uint8Array): number;
@@ -1 +1 @@
1
- {"version":3,"file":"event_ring.d.ts","sourceRoot":"","sources":["../../../src/core/store/event_ring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;2BAC2B;AAC3B,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;sEACsE;AACtE,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD;uDACuD;AACvD,eAAO,MAAM,yBAAyB;;;;;CAK5B,CAAC;AAEX;;mEAEmE;AACnE,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE5D;AAMD,qBAAa,cAAe,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI3B;AAED;;;mCAGmC;AACnC,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAU1F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpE;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;8DAE8D;AAC9D,wBAAgB,SAAS,CACxB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,GACjB,OAAO,CA4BT;AAED;;gCAEgC;AAChC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAiBxF;AAED;;iEAEiE;AACjE,wBAAgB,cAAc,CAC7B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,IAAI,GACpD,MAAM,CASR"}
1
+ {"version":3,"file":"event_ring.d.ts","sourceRoot":"","sources":["../../../src/core/store/event_ring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;2BAC2B;AAC3B,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;sEACsE;AACtE,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD;uDACuD;AACvD,eAAO,MAAM,yBAAyB;;;;;CAK5B,CAAC;AAEX;;gDAEgD;AAChD,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE5D;AAMD,qBAAa,cAAe,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI3B;AAED;;;mCAGmC;AACnC,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAU1F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1E;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AACD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9E;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;8DAE8D;AAC9D,wBAAgB,SAAS,CACxB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,GACjB,OAAO,CAkCT;AAED;;gCAEgC;AAChC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAiBxF;AAED;;iEAEiE;AACjE,wBAAgB,cAAc,CAC7B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,IAAI,GACpD,MAAM,CASR"}
@@ -2,13 +2,19 @@ import { ArchetypeSpec, ColumnStore } from './column_store.cjs';
2
2
  import { BufferAllocator } from './allocator.cjs';
3
3
  import { ArchetypeGrowSpec } from './layout_ops.cjs';
4
4
  export interface ExtendPlan {
5
- /** Archetypes to append. Each `archetype_id` MUST be absent from
6
- * `old.archetypes`; collisions throw `StoreExtendError`. */
5
+ /** Archetypes to append. Each `archetype_id` must be absent from
6
+ * `old.archetypes`. Collisions throw `StoreExtendError`. */
7
7
  readonly newArchetypes: readonly ArchetypeSpec[];
8
8
  /** Per-existing-archetype live row counts. Same shape as
9
9
  * `GrowPlan.archetypes` so callers can reuse plan-building helpers.
10
- * Omitted or `0` ⇒ no rows to copy (the archetype is empty). */
11
- readonly existing?: readonly ArchetypeGrowSpec[];
10
+ * Omitted or `0` ⇒ no rows to copy (the archetype is empty).
11
+ *
12
+ * Only the realloc path reads it: the in-place path moves no rows. A
13
+ * caller that must walk every archetype to build the list can pass a
14
+ * function instead, and the list is then built only when the realloc path
15
+ * runs. The in-place path is the common one, and a list built for every
16
+ * extend made the cost of the N-th archetype grow with N. */
17
+ readonly existing?: readonly ArchetypeGrowSpec[] | (() => readonly ArchetypeGrowSpec[]);
12
18
  }
13
19
  export interface ExtendResult {
14
20
  readonly store: ColumnStore;
@@ -18,7 +24,7 @@ export interface ExtendResult {
18
24
  * instance is reused, existing column TypedArray views are unchanged,
19
25
  * and callers may skip `refreshViews` on every pre-existing
20
26
  * Archetype. False when the slow path ran (fresh SAB or wasm-memory
21
- * grow with detached views); callers MUST refresh every Archetype's
27
+ * grow with detached views). A caller must then refresh every Archetype's
22
28
  * SAB-backed columns from the returned `store` before reading them. */
23
29
  readonly viewsPreserved: boolean;
24
30
  }
@@ -31,9 +37,9 @@ export declare class StoreExtendError extends Error {
31
37
  * `allocator`: pluggable buffer source forwarded into
32
38
  * `createColumnStore`. When the allocator is `wasmMemoryAllocator`,
33
39
  * `memory.grow` may detach `old`'s typed-array views before the copy
34
- * runs so live rows are snapshotted into heap `Uint8Array`s BEFORE the
40
+ * runs, so live rows are snapshotted into heap `Uint8Array`s before the
35
41
  * allocator call and restored into the new views afterwards. The cost
36
- * is one extra heap allocation per live archetype-column; negligible
42
+ * is one extra heap allocation per live archetype-column. Negligible
37
43
  * compared to the SAB walk itself. */
38
44
  export declare function extendColumnStore(old: ColumnStore, plan: ExtendPlan, allocator?: BufferAllocator): ExtendResult;
39
45
  //# sourceMappingURL=extend.d.ts.map
@@ -2,13 +2,19 @@ import { ArchetypeSpec, ColumnStore } from './column_store.js';
2
2
  import { BufferAllocator } from './allocator.js';
3
3
  import { ArchetypeGrowSpec } from './layout_ops.js';
4
4
  export interface ExtendPlan {
5
- /** Archetypes to append. Each `archetype_id` MUST be absent from
6
- * `old.archetypes`; collisions throw `StoreExtendError`. */
5
+ /** Archetypes to append. Each `archetype_id` must be absent from
6
+ * `old.archetypes`. Collisions throw `StoreExtendError`. */
7
7
  readonly newArchetypes: readonly ArchetypeSpec[];
8
8
  /** Per-existing-archetype live row counts. Same shape as
9
9
  * `GrowPlan.archetypes` so callers can reuse plan-building helpers.
10
- * Omitted or `0` ⇒ no rows to copy (the archetype is empty). */
11
- readonly existing?: readonly ArchetypeGrowSpec[];
10
+ * Omitted or `0` ⇒ no rows to copy (the archetype is empty).
11
+ *
12
+ * Only the realloc path reads it: the in-place path moves no rows. A
13
+ * caller that must walk every archetype to build the list can pass a
14
+ * function instead, and the list is then built only when the realloc path
15
+ * runs. The in-place path is the common one, and a list built for every
16
+ * extend made the cost of the N-th archetype grow with N. */
17
+ readonly existing?: readonly ArchetypeGrowSpec[] | (() => readonly ArchetypeGrowSpec[]);
12
18
  }
13
19
  export interface ExtendResult {
14
20
  readonly store: ColumnStore;
@@ -18,7 +24,7 @@ export interface ExtendResult {
18
24
  * instance is reused, existing column TypedArray views are unchanged,
19
25
  * and callers may skip `refreshViews` on every pre-existing
20
26
  * Archetype. False when the slow path ran (fresh SAB or wasm-memory
21
- * grow with detached views); callers MUST refresh every Archetype's
27
+ * grow with detached views). A caller must then refresh every Archetype's
22
28
  * SAB-backed columns from the returned `store` before reading them. */
23
29
  readonly viewsPreserved: boolean;
24
30
  }
@@ -31,9 +37,9 @@ export declare class StoreExtendError extends Error {
31
37
  * `allocator`: pluggable buffer source forwarded into
32
38
  * `createColumnStore`. When the allocator is `wasmMemoryAllocator`,
33
39
  * `memory.grow` may detach `old`'s typed-array views before the copy
34
- * runs so live rows are snapshotted into heap `Uint8Array`s BEFORE the
40
+ * runs, so live rows are snapshotted into heap `Uint8Array`s before the
35
41
  * allocator call and restored into the new views afterwards. The cost
36
- * is one extra heap allocation per live archetype-column; negligible
42
+ * is one extra heap allocation per live archetype-column. Negligible
37
43
  * compared to the SAB walk itself. */
38
44
  export declare function extendColumnStore(old: ColumnStore, plan: ExtendPlan, allocator?: BufferAllocator): ExtendResult;
39
45
  //# sourceMappingURL=extend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../../src/core/store/extend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAEN,KAAK,aAAa,EAElB,KAAK,WAAW,EAGhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD,OAAO,EAKN,KAAK,iBAAiB,EAEtB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,UAAU;IAC1B;gEAC4D;IAC5D,QAAQ,CAAC,aAAa,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD;;oEAEgE;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;2EAKuE;IACvE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CACjC;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI3B;AAED;;;;;;;;;sCASsC;AACtC,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,eAAe,GACzB,YAAY,CAoId"}
1
+ {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../../src/core/store/extend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAEN,KAAK,aAAa,EAElB,KAAK,WAAW,EAIhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAKN,KAAK,iBAAiB,EAEtB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,UAAU;IAC1B;gEAC4D;IAC5D,QAAQ,CAAC,aAAa,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD;;;;;;;;iEAQ6D;IAC7D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,CAAC,MAAM,SAAS,iBAAiB,EAAE,CAAC,CAAC;CACxF;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;2EAKuE;IACvE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CACjC;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI3B;AAED;;;;;;;;;sCASsC;AACtC,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,eAAe,GACzB,YAAY,CAqId"}
@@ -11,7 +11,7 @@ export interface GrowResult {
11
11
  readonly store: ColumnStore;
12
12
  readonly oldViewStamp: number;
13
13
  readonly newViewStamp: number;
14
- /** True when the in-place fast path ran: every archetype EXCEPT those in
14
+ /** True when the in-place fast path ran: every archetype except those in
15
15
  * `grownArchetypeIds` kept its column views, so the caller only needs to
16
16
  * `refreshViews` the grown ones. False on the realloc path, where the
17
17
  * whole store moved and every view must be refreshed. */
@@ -27,7 +27,7 @@ export declare class StoreGrowError extends Error {
27
27
  * `view_stamp`. With the default allocator the old SAB is untouched and
28
28
  * callers may continue reading from it until they finish swapping in
29
29
  * the new views. With a `wasmMemoryAllocator`, `old`'s typed-array
30
- * views may be detached as soon as `createColumnStore` returns live
30
+ * views may be detached as soon as `createColumnStore` returns, live
31
31
  * data is snapshotted before the allocator call to make both code paths
32
32
  * behave identically from the caller's perspective. */
33
33
  export declare function growColumnStore(old: ColumnStore, plan: GrowPlan, allocator?: BufferAllocator): GrowResult;
@@ -11,7 +11,7 @@ export interface GrowResult {
11
11
  readonly store: ColumnStore;
12
12
  readonly oldViewStamp: number;
13
13
  readonly newViewStamp: number;
14
- /** True when the in-place fast path ran: every archetype EXCEPT those in
14
+ /** True when the in-place fast path ran: every archetype except those in
15
15
  * `grownArchetypeIds` kept its column views, so the caller only needs to
16
16
  * `refreshViews` the grown ones. False on the realloc path, where the
17
17
  * whole store moved and every view must be refreshed. */
@@ -27,7 +27,7 @@ export declare class StoreGrowError extends Error {
27
27
  * `view_stamp`. With the default allocator the old SAB is untouched and
28
28
  * callers may continue reading from it until they finish swapping in
29
29
  * the new views. With a `wasmMemoryAllocator`, `old`'s typed-array
30
- * views may be detached as soon as `createColumnStore` returns live
30
+ * views may be detached as soon as `createColumnStore` returns, live
31
31
  * data is snapshotted before the allocator call to make both code paths
32
32
  * behave identically from the caller's perspective. */
33
33
  export declare function growColumnStore(old: ColumnStore, plan: GrowPlan, allocator?: BufferAllocator): GrowResult;
@@ -1 +1 @@
1
- {"version":3,"file":"grow.d.ts","sourceRoot":"","sources":["../../../src/core/store/grow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AASH,OAAO,EAIN,KAAK,WAAW,EAGhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAKN,KAAK,iBAAiB,EAEtB,MAAM,cAAc,CAAC;AAMtB,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAClD;AAED;mEACmE;AACnE,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;6DAGyD;IACzD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;2BACuB;IACvB,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AA4JD,qBAAa,cAAe,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI3B;AAED;;;;;;uDAMuD;AACvD,wBAAgB,eAAe,CAC9B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,QAAQ,EACd,SAAS,CAAC,EAAE,eAAe,GACzB,UAAU,CAmGZ"}
1
+ {"version":3,"file":"grow.d.ts","sourceRoot":"","sources":["../../../src/core/store/grow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AASH,OAAO,EAIN,KAAK,WAAW,EAGhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAKN,KAAK,iBAAiB,EAEtB,MAAM,cAAc,CAAC;AAMtB,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAClD;AAED;mEACmE;AACnE,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;6DAGyD;IACzD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;2BACuB;IACvB,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AA+JD,qBAAa,cAAe,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI3B;AAED;;;;;;uDAMuD;AACvD,wBAAgB,eAAe,CAC9B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,QAAQ,EACd,SAAS,CAAC,EAAE,eAAe,GACzB,UAAU,CAmGZ"}