@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
@@ -0,0 +1,144 @@
1
+ import { SystemContext } from '../../core/ecs/system_context.cjs';
2
+ import { ParallelPlan } from './plan.cjs';
3
+ /** What the pool needs from the world, and nothing more. */
4
+ export interface PoolWorld {
5
+ /** The `WebAssembly.Memory` on the wasm backing, the `SharedArrayBuffer` on
6
+ * the shared backing. The two grow differently and the worker survives both,
7
+ * which is why the memory itself travels and not its current buffer. */
8
+ readonly store: SharedArrayBuffer | WebAssembly.Memory;
9
+ readonly storeBase: number;
10
+ /** Tell the store that a component's row ticks changed outside the dirty
11
+ * list, so the next entity-level drain scans the plane. */
12
+ noteScan(componentId: number): void;
13
+ /** Every parallel plan the world has registered so far. */
14
+ plans(): readonly ParallelPlan[];
15
+ /** The pool has stopped, so the world drops it and the schedule goes back to
16
+ * the sequential path. */
17
+ released(): void;
18
+ }
19
+ /**
20
+ * How long the host waits at the join before it gives up on a worker.
21
+ *
22
+ * A safety net, and not a budget. A pass that takes this long has already
23
+ * missed every frame the host meant to draw, so the value only has to sit above
24
+ * any pass a working kernel runs, on slow hardware and under load. It is far
25
+ * above that, and still short enough that a person watching a hung process gets
26
+ * an error instead of a dead prompt. Tune it down only to make a hang surface
27
+ * sooner, never to bound a frame.
28
+ */
29
+ export declare const DEFAULT_JOIN_TIMEOUT_MS = 30000;
30
+ export interface AttachWorkersOptions {
31
+ /** Workers to start. Defaults to one below the reported parallelism, floor
32
+ * one. One worker is always a loss against the sequential body, so a caller
33
+ * that wants a split gives more than one. */
34
+ readonly count?: number;
35
+ /** Where the engine's worker entry lives. Defaults to `@oasys/oecs/worker`,
36
+ * which the package ships one directory above the module this pool lands in.
37
+ *
38
+ * A bundler moves the pool into a chunk of its own and leaves the worker
39
+ * entry out of the graph, so the default resolves to a file the server does
40
+ * not hold. Pass the URL the bundler emits for `@oasys/oecs/worker`. */
41
+ readonly workerUrl?: string | URL;
42
+ /** Milliseconds the host waits at the join before it gives up on the pass.
43
+ * A positive integer. Defaults to `DEFAULT_JOIN_TIMEOUT_MS`.
44
+ *
45
+ * A kernel that throws is caught in the worker and reported. A worker that
46
+ * dies outright reports nothing, so without this the host parks for the life
47
+ * of the process. */
48
+ readonly joinTimeoutMs?: number;
49
+ /**
50
+ * Bytes of shadow stack one instance of a `wasm` kernel module gets. An
51
+ * integer, a multiple of `KERNEL_STACK_ALIGN`, at least
52
+ * `KERNEL_STACK_MIN_BYTES`.
53
+ *
54
+ * The regions are carved downward from the store base, so with this given
55
+ * everything below the lowest region stays the module's heap. Without it the
56
+ * pool divides the whole span between the module's `__heap_base` and the
57
+ * store base, and the module then has no heap.
58
+ *
59
+ * A wasm stack has no guard page. A kernel that runs deeper than its region
60
+ * writes into the region below it and nothing reports the overrun, so this is
61
+ * a number only the caller can pick.
62
+ */
63
+ readonly stackBytes?: number;
64
+ }
65
+ /**
66
+ * The pool a world attaches. One per world, started once, and the only thing
67
+ * that speaks to a worker.
68
+ */
69
+ export declare class WorkerPool {
70
+ private readonly _world;
71
+ private readonly _workers;
72
+ private readonly _ctl;
73
+ private readonly _ctlF64;
74
+ private readonly _joinTimeoutMs;
75
+ private _state;
76
+ private _epoch;
77
+ private _nextSlot;
78
+ private _pending;
79
+ private _syncing;
80
+ private constructor();
81
+ /** How many workers the pool runs. */
82
+ get count(): number;
83
+ /**
84
+ * Start the workers, hand each the store and the control buffer, and load
85
+ * every kernel the world has declared. Resolves when each worker is parked on
86
+ * the barrier with its kernels in hand. Cold path, and a caller runs it once.
87
+ *
88
+ * Throws `WORKERS_ENTRY_UNREACHABLE` when a worker's script does not load,
89
+ * which is what a wrong `workerUrl` looks like from here.
90
+ */
91
+ static attach(world: PoolWorld, options?: AttachWorkersOptions): Promise<WorkerPool>;
92
+ /** Take one kernel. The system runs `fn` until every worker holds it. */
93
+ register(plan: ParallelPlan): void;
94
+ private _kick;
95
+ /** Resolves when every kernel registered so far is loaded on every worker.
96
+ * Rejects with `PARALLEL_KERNEL_FAILED` when one would not load. */
97
+ settled(): Promise<void>;
98
+ private _sync;
99
+ /** Release every worker out of the barrier loop, so each can take a message
100
+ * again. A parked worker runs no message callback. */
101
+ private _park;
102
+ private _resume;
103
+ /**
104
+ * Run one parallel system across the pool, or say no.
105
+ *
106
+ * Returns `false` when the kernel is not loaded yet, when the pool is not on
107
+ * the barrier, when an earlier pass timed out, or when the matched row count
108
+ * is below the system's threshold. The caller then runs the sequential body,
109
+ * which is the same answer.
110
+ *
111
+ * Throws `PARALLEL_KERNEL_FAILED` when a kernel throws, and when a worker
112
+ * misses the join inside `joinTimeoutMs`. The second case is a dead or hung
113
+ * worker, which reports nothing, so the pool fails the pass itself.
114
+ *
115
+ * Hot path. The host parks for the length of the pass, so no structural
116
+ * change can overlap it.
117
+ */
118
+ run(plan: ParallelPlan, ctx: SystemContext, deltaTime: number, runTick: number): boolean;
119
+ /**
120
+ * Stamp what the pass changed.
121
+ *
122
+ * The row tick plane and the dirty lists are main-thread JS, so the join does
123
+ * this and not the workers. `columnGroupMut` makes the same archetype stamp a
124
+ * system body makes, which is why that logic is not written twice here.
125
+ *
126
+ * The row ticks follow the same shape a chunk loop takes when it reads
127
+ * `cols.ticks`: fill the plane, then tell the store to scan it. Without the
128
+ * fill an entity-level `onSet` observer would see nothing, because the
129
+ * archetype stamp alone carries no row.
130
+ *
131
+ * Coarse on purpose: a parallel system reports every row of every matched
132
+ * archetype as changed. A finer stamp is open.
133
+ */
134
+ private _stamp;
135
+ /**
136
+ * Stop every worker and release the pool. Idempotent.
137
+ *
138
+ * `terminate` ends a worker that is spinning inside a kernel, so this is the
139
+ * way out of a pool a join timeout failed. A failed pool is never released
140
+ * back into the barrier, so no stop job is written for it.
141
+ */
142
+ detach(): Promise<void>;
143
+ }
144
+ //# sourceMappingURL=pool.d.ts.map
@@ -0,0 +1,144 @@
1
+ import { SystemContext } from '../../core/ecs/system_context.js';
2
+ import { ParallelPlan } from './plan.js';
3
+ /** What the pool needs from the world, and nothing more. */
4
+ export interface PoolWorld {
5
+ /** The `WebAssembly.Memory` on the wasm backing, the `SharedArrayBuffer` on
6
+ * the shared backing. The two grow differently and the worker survives both,
7
+ * which is why the memory itself travels and not its current buffer. */
8
+ readonly store: SharedArrayBuffer | WebAssembly.Memory;
9
+ readonly storeBase: number;
10
+ /** Tell the store that a component's row ticks changed outside the dirty
11
+ * list, so the next entity-level drain scans the plane. */
12
+ noteScan(componentId: number): void;
13
+ /** Every parallel plan the world has registered so far. */
14
+ plans(): readonly ParallelPlan[];
15
+ /** The pool has stopped, so the world drops it and the schedule goes back to
16
+ * the sequential path. */
17
+ released(): void;
18
+ }
19
+ /**
20
+ * How long the host waits at the join before it gives up on a worker.
21
+ *
22
+ * A safety net, and not a budget. A pass that takes this long has already
23
+ * missed every frame the host meant to draw, so the value only has to sit above
24
+ * any pass a working kernel runs, on slow hardware and under load. It is far
25
+ * above that, and still short enough that a person watching a hung process gets
26
+ * an error instead of a dead prompt. Tune it down only to make a hang surface
27
+ * sooner, never to bound a frame.
28
+ */
29
+ export declare const DEFAULT_JOIN_TIMEOUT_MS = 30000;
30
+ export interface AttachWorkersOptions {
31
+ /** Workers to start. Defaults to one below the reported parallelism, floor
32
+ * one. One worker is always a loss against the sequential body, so a caller
33
+ * that wants a split gives more than one. */
34
+ readonly count?: number;
35
+ /** Where the engine's worker entry lives. Defaults to `@oasys/oecs/worker`,
36
+ * which the package ships one directory above the module this pool lands in.
37
+ *
38
+ * A bundler moves the pool into a chunk of its own and leaves the worker
39
+ * entry out of the graph, so the default resolves to a file the server does
40
+ * not hold. Pass the URL the bundler emits for `@oasys/oecs/worker`. */
41
+ readonly workerUrl?: string | URL;
42
+ /** Milliseconds the host waits at the join before it gives up on the pass.
43
+ * A positive integer. Defaults to `DEFAULT_JOIN_TIMEOUT_MS`.
44
+ *
45
+ * A kernel that throws is caught in the worker and reported. A worker that
46
+ * dies outright reports nothing, so without this the host parks for the life
47
+ * of the process. */
48
+ readonly joinTimeoutMs?: number;
49
+ /**
50
+ * Bytes of shadow stack one instance of a `wasm` kernel module gets. An
51
+ * integer, a multiple of `KERNEL_STACK_ALIGN`, at least
52
+ * `KERNEL_STACK_MIN_BYTES`.
53
+ *
54
+ * The regions are carved downward from the store base, so with this given
55
+ * everything below the lowest region stays the module's heap. Without it the
56
+ * pool divides the whole span between the module's `__heap_base` and the
57
+ * store base, and the module then has no heap.
58
+ *
59
+ * A wasm stack has no guard page. A kernel that runs deeper than its region
60
+ * writes into the region below it and nothing reports the overrun, so this is
61
+ * a number only the caller can pick.
62
+ */
63
+ readonly stackBytes?: number;
64
+ }
65
+ /**
66
+ * The pool a world attaches. One per world, started once, and the only thing
67
+ * that speaks to a worker.
68
+ */
69
+ export declare class WorkerPool {
70
+ private readonly _world;
71
+ private readonly _workers;
72
+ private readonly _ctl;
73
+ private readonly _ctlF64;
74
+ private readonly _joinTimeoutMs;
75
+ private _state;
76
+ private _epoch;
77
+ private _nextSlot;
78
+ private _pending;
79
+ private _syncing;
80
+ private constructor();
81
+ /** How many workers the pool runs. */
82
+ get count(): number;
83
+ /**
84
+ * Start the workers, hand each the store and the control buffer, and load
85
+ * every kernel the world has declared. Resolves when each worker is parked on
86
+ * the barrier with its kernels in hand. Cold path, and a caller runs it once.
87
+ *
88
+ * Throws `WORKERS_ENTRY_UNREACHABLE` when a worker's script does not load,
89
+ * which is what a wrong `workerUrl` looks like from here.
90
+ */
91
+ static attach(world: PoolWorld, options?: AttachWorkersOptions): Promise<WorkerPool>;
92
+ /** Take one kernel. The system runs `fn` until every worker holds it. */
93
+ register(plan: ParallelPlan): void;
94
+ private _kick;
95
+ /** Resolves when every kernel registered so far is loaded on every worker.
96
+ * Rejects with `PARALLEL_KERNEL_FAILED` when one would not load. */
97
+ settled(): Promise<void>;
98
+ private _sync;
99
+ /** Release every worker out of the barrier loop, so each can take a message
100
+ * again. A parked worker runs no message callback. */
101
+ private _park;
102
+ private _resume;
103
+ /**
104
+ * Run one parallel system across the pool, or say no.
105
+ *
106
+ * Returns `false` when the kernel is not loaded yet, when the pool is not on
107
+ * the barrier, when an earlier pass timed out, or when the matched row count
108
+ * is below the system's threshold. The caller then runs the sequential body,
109
+ * which is the same answer.
110
+ *
111
+ * Throws `PARALLEL_KERNEL_FAILED` when a kernel throws, and when a worker
112
+ * misses the join inside `joinTimeoutMs`. The second case is a dead or hung
113
+ * worker, which reports nothing, so the pool fails the pass itself.
114
+ *
115
+ * Hot path. The host parks for the length of the pass, so no structural
116
+ * change can overlap it.
117
+ */
118
+ run(plan: ParallelPlan, ctx: SystemContext, deltaTime: number, runTick: number): boolean;
119
+ /**
120
+ * Stamp what the pass changed.
121
+ *
122
+ * The row tick plane and the dirty lists are main-thread JS, so the join does
123
+ * this and not the workers. `columnGroupMut` makes the same archetype stamp a
124
+ * system body makes, which is why that logic is not written twice here.
125
+ *
126
+ * The row ticks follow the same shape a chunk loop takes when it reads
127
+ * `cols.ticks`: fill the plane, then tell the store to scan it. Without the
128
+ * fill an entity-level `onSet` observer would see nothing, because the
129
+ * archetype stamp alone carries no row.
130
+ *
131
+ * Coarse on purpose: a parallel system reports every row of every matched
132
+ * archetype as changed. A finer stamp is open.
133
+ */
134
+ private _stamp;
135
+ /**
136
+ * Stop every worker and release the pool. Idempotent.
137
+ *
138
+ * `terminate` ends a worker that is spinning inside a kernel, so this is the
139
+ * way out of a pool a join timeout failed. A failed pool is never released
140
+ * back into the barrier, so no stop job is written for it.
141
+ */
142
+ detach(): Promise<void>;
143
+ }
144
+ //# sourceMappingURL=pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/plugins/workers/pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8BK;AAIL,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAoB3C,4DAA4D;AAC5D,MAAM,WAAW,SAAS;IACzB;;4EAEwE;IACxE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;+DAC2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,2DAA2D;IAC3D,KAAK,IAAI,SAAS,YAAY,EAAE,CAAC;IACjC;8BAC0B;IAC1B,QAAQ,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAE9C,MAAM,WAAW,oBAAoB;IACpC;;iDAE6C;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;4EAKwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAClC;;;;;yBAKqB;IACrB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B;AAqMD;;;GAGG;AACH,qBAAa,UAAU;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,QAAQ,CAAoC;IAEpD,OAAO;IAaP,sCAAsC;IACtC,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED;;;;;;;OAOG;WACiB,MAAM,CACzB,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC;IAoEtB,yEAAyE;IAClE,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAMzC,OAAO,CAAC,KAAK;IAIb;wEACoE;IAC7D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAIjB,KAAK;IAqCnB;0DACsD;YACxC,KAAK;IASnB,OAAO,CAAC,OAAO;IAMf;;;;;;;;;;;;;;OAcG;IACI,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IA+D/F;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,MAAM;IAgBd;;;;;;OAMG;IACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBpC"}
@@ -0,0 +1,112 @@
1
+ /***
2
+ * The words a host and a worker share, and the messages that cross once.
3
+ *
4
+ * The control buffer is one small `SharedArrayBuffer` beside the store. The
5
+ * host writes the job, bumps the epoch and wakes every worker. Each worker adds
6
+ * one to the done word when it finishes, and the worker that completes the
7
+ * count notifies it. Nothing else crosses during a frame, because `postMessage`
8
+ * is far slower than an `Atomics` release and a parked worker never runs a
9
+ * message callback anyway.
10
+ *
11
+ * The store buffer never travels here. A worker holds it from its start
12
+ * message and reads it directly.
13
+ *
14
+ * This module imports the ABI constants and nothing else. The worker entry runs
15
+ * outside the bundler, so every import in its chain names the file with its
16
+ * extension.
17
+ ***/
18
+ /** The frame number, and the word every worker sleeps on. */
19
+ export declare const CTL_EPOCH = 0;
20
+ /**
21
+ * How many workers finished this epoch. The host clears it before it bumps the
22
+ * epoch, and every worker adds one when its pass ends, whether the kernel ran
23
+ * or threw.
24
+ *
25
+ * One worker notifies this word, and it is the one whose add carried the count
26
+ * to the worker count. An earlier notify only wakes a host that reads a short
27
+ * count and parks again. So the host wakes once for each pass and not once for
28
+ * each worker.
29
+ */
30
+ export declare const CTL_DONE = 1;
31
+ /** Which kernel slot to run, or one of the control jobs below. */
32
+ export declare const CTL_KERNEL = 2;
33
+ /** The first failing worker's index plus one. Zero means every worker ran. */
34
+ export declare const CTL_FAILED = 3;
35
+ /** The query's include mask, `COMPONENT_MASK_WORDS` little-endian words. */
36
+ export declare const CTL_INCLUDE = 4;
37
+ /** The query's exclude mask, read only when `CTL_HAS_EXCLUDE` is one. */
38
+ export declare const CTL_EXCLUDE: number;
39
+ export declare const CTL_HAS_EXCLUDE: number;
40
+ /** `dt`, as an index into a `Float64Array` over the same bytes. It sits above
41
+ * every word above, on the next 8-byte boundary. */
42
+ export declare const CTL_DT: number;
43
+ export declare const CONTROL_BYTES: number;
44
+ /** Leave the barrier loop and return to the event loop, so the worker can take
45
+ * a kernel registration. A parked worker runs no message callback, so the host
46
+ * has to release it first. */
47
+ export declare const JOB_YIELD = -1;
48
+ /** Leave the barrier loop and stop. */
49
+ export declare const JOB_STOP = -2;
50
+ /**
51
+ * The frame alignment an LLVM wasm target keeps for its shadow stack. A region
52
+ * that is a multiple of this needs no rounding at its top.
53
+ *
54
+ * The host validates `stackBytes` against it and the worker carves against it,
55
+ * so both live here rather than in either half.
56
+ */
57
+ export declare const KERNEL_STACK_ALIGN = 16;
58
+ /**
59
+ * The smallest stack region a worker accepts, one WASM page.
60
+ *
61
+ * A wasm stack has no guard page, so a kernel that runs past the bottom of its
62
+ * region writes into the region below it and nothing reports the overrun. The
63
+ * floor catches a caller who reserved nothing. It does not size the stack of a
64
+ * deep kernel, and no engine can. The caller reserves the span and says how
65
+ * much of it one worker gets.
66
+ */
67
+ export declare const KERNEL_STACK_MIN_BYTES = 65536;
68
+ /** What a worker receives before it does anything. `store` is the
69
+ * `WebAssembly.Memory` on the wasm backing and the `SharedArrayBuffer` on the
70
+ * shared backing, because the two grow differently: the memory hands back a new
71
+ * buffer object and freezes the old one at its pre-grow length, while the
72
+ * shared buffer grows in place. */
73
+ export interface WorkerStart {
74
+ readonly store: SharedArrayBuffer | WebAssembly.Memory;
75
+ readonly storeBase: number;
76
+ readonly control: SharedArrayBuffer;
77
+ readonly index: number;
78
+ readonly count: number;
79
+ /** Bytes of shadow stack one instance of a `wasm` kernel module gets, or 0
80
+ * when the caller named none. At 0 the worker divides the whole span between
81
+ * the module's `__heap_base` and the store base, which leaves the module no
82
+ * heap. */
83
+ readonly stackBytes: number;
84
+ }
85
+ /** One kernel a worker loads, addressed by its slot for the rest of the run.
86
+ * A worker cannot receive a closure, which is why a kernel is a module and an
87
+ * export name. */
88
+ export interface KernelMessage {
89
+ readonly type: "kernel";
90
+ readonly slot: number;
91
+ /** A compiled module, structured-clone safe, shared with every worker. */
92
+ readonly wasm?: WebAssembly.Module;
93
+ /** An absolute module URL the worker imports. */
94
+ readonly js?: string;
95
+ readonly exportName: string;
96
+ /** `(component_id, field_id)` pairs, flat, in the kernel's argument order. */
97
+ readonly specs: Int32Array;
98
+ }
99
+ /** Re-enter the barrier loop. */
100
+ export interface RunMessage {
101
+ readonly type: "run";
102
+ }
103
+ export type HostMessage = KernelMessage | RunMessage;
104
+ export interface WorkerReply {
105
+ /** `ready` once at start, `kernel` for one registration, `yielded` when the
106
+ * worker leaves the barrier loop. */
107
+ readonly type: "ready" | "kernel" | "yielded";
108
+ readonly slot?: number;
109
+ /** The failure text, when a kernel would not load. */
110
+ readonly error?: string;
111
+ }
112
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1,112 @@
1
+ /***
2
+ * The words a host and a worker share, and the messages that cross once.
3
+ *
4
+ * The control buffer is one small `SharedArrayBuffer` beside the store. The
5
+ * host writes the job, bumps the epoch and wakes every worker. Each worker adds
6
+ * one to the done word when it finishes, and the worker that completes the
7
+ * count notifies it. Nothing else crosses during a frame, because `postMessage`
8
+ * is far slower than an `Atomics` release and a parked worker never runs a
9
+ * message callback anyway.
10
+ *
11
+ * The store buffer never travels here. A worker holds it from its start
12
+ * message and reads it directly.
13
+ *
14
+ * This module imports the ABI constants and nothing else. The worker entry runs
15
+ * outside the bundler, so every import in its chain names the file with its
16
+ * extension.
17
+ ***/
18
+ /** The frame number, and the word every worker sleeps on. */
19
+ export declare const CTL_EPOCH = 0;
20
+ /**
21
+ * How many workers finished this epoch. The host clears it before it bumps the
22
+ * epoch, and every worker adds one when its pass ends, whether the kernel ran
23
+ * or threw.
24
+ *
25
+ * One worker notifies this word, and it is the one whose add carried the count
26
+ * to the worker count. An earlier notify only wakes a host that reads a short
27
+ * count and parks again. So the host wakes once for each pass and not once for
28
+ * each worker.
29
+ */
30
+ export declare const CTL_DONE = 1;
31
+ /** Which kernel slot to run, or one of the control jobs below. */
32
+ export declare const CTL_KERNEL = 2;
33
+ /** The first failing worker's index plus one. Zero means every worker ran. */
34
+ export declare const CTL_FAILED = 3;
35
+ /** The query's include mask, `COMPONENT_MASK_WORDS` little-endian words. */
36
+ export declare const CTL_INCLUDE = 4;
37
+ /** The query's exclude mask, read only when `CTL_HAS_EXCLUDE` is one. */
38
+ export declare const CTL_EXCLUDE: number;
39
+ export declare const CTL_HAS_EXCLUDE: number;
40
+ /** `dt`, as an index into a `Float64Array` over the same bytes. It sits above
41
+ * every word above, on the next 8-byte boundary. */
42
+ export declare const CTL_DT: number;
43
+ export declare const CONTROL_BYTES: number;
44
+ /** Leave the barrier loop and return to the event loop, so the worker can take
45
+ * a kernel registration. A parked worker runs no message callback, so the host
46
+ * has to release it first. */
47
+ export declare const JOB_YIELD = -1;
48
+ /** Leave the barrier loop and stop. */
49
+ export declare const JOB_STOP = -2;
50
+ /**
51
+ * The frame alignment an LLVM wasm target keeps for its shadow stack. A region
52
+ * that is a multiple of this needs no rounding at its top.
53
+ *
54
+ * The host validates `stackBytes` against it and the worker carves against it,
55
+ * so both live here rather than in either half.
56
+ */
57
+ export declare const KERNEL_STACK_ALIGN = 16;
58
+ /**
59
+ * The smallest stack region a worker accepts, one WASM page.
60
+ *
61
+ * A wasm stack has no guard page, so a kernel that runs past the bottom of its
62
+ * region writes into the region below it and nothing reports the overrun. The
63
+ * floor catches a caller who reserved nothing. It does not size the stack of a
64
+ * deep kernel, and no engine can. The caller reserves the span and says how
65
+ * much of it one worker gets.
66
+ */
67
+ export declare const KERNEL_STACK_MIN_BYTES = 65536;
68
+ /** What a worker receives before it does anything. `store` is the
69
+ * `WebAssembly.Memory` on the wasm backing and the `SharedArrayBuffer` on the
70
+ * shared backing, because the two grow differently: the memory hands back a new
71
+ * buffer object and freezes the old one at its pre-grow length, while the
72
+ * shared buffer grows in place. */
73
+ export interface WorkerStart {
74
+ readonly store: SharedArrayBuffer | WebAssembly.Memory;
75
+ readonly storeBase: number;
76
+ readonly control: SharedArrayBuffer;
77
+ readonly index: number;
78
+ readonly count: number;
79
+ /** Bytes of shadow stack one instance of a `wasm` kernel module gets, or 0
80
+ * when the caller named none. At 0 the worker divides the whole span between
81
+ * the module's `__heap_base` and the store base, which leaves the module no
82
+ * heap. */
83
+ readonly stackBytes: number;
84
+ }
85
+ /** One kernel a worker loads, addressed by its slot for the rest of the run.
86
+ * A worker cannot receive a closure, which is why a kernel is a module and an
87
+ * export name. */
88
+ export interface KernelMessage {
89
+ readonly type: "kernel";
90
+ readonly slot: number;
91
+ /** A compiled module, structured-clone safe, shared with every worker. */
92
+ readonly wasm?: WebAssembly.Module;
93
+ /** An absolute module URL the worker imports. */
94
+ readonly js?: string;
95
+ readonly exportName: string;
96
+ /** `(component_id, field_id)` pairs, flat, in the kernel's argument order. */
97
+ readonly specs: Int32Array;
98
+ }
99
+ /** Re-enter the barrier loop. */
100
+ export interface RunMessage {
101
+ readonly type: "run";
102
+ }
103
+ export type HostMessage = KernelMessage | RunMessage;
104
+ export interface WorkerReply {
105
+ /** `ready` once at start, `kernel` for one registration, `yielded` when the
106
+ * worker leaves the barrier loop. */
107
+ readonly type: "ready" | "kernel" | "yielded";
108
+ readonly slot?: number;
109
+ /** The failure text, when a kernel would not load. */
110
+ readonly error?: string;
111
+ }
112
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/plugins/workers/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;KAgBK;AAIL,6DAA6D;AAC7D,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,kEAAkE;AAClE,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,8EAA8E;AAC9E,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,4EAA4E;AAC5E,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,yEAAyE;AACzE,eAAO,MAAM,WAAW,QAAqC,CAAC;AAC9D,eAAO,MAAM,eAAe,QAAqC,CAAC;AAIlE;oDACoD;AACpD,eAAO,MAAM,MAAM,QAAuB,CAAC;AAE3C,eAAO,MAAM,aAAa,QAAmB,CAAC;AAE9C;;8BAE8B;AAC9B,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,uCAAuC;AACvC,eAAO,MAAM,QAAQ,KAAK,CAAC;AAI3B;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C;;;;mCAImC;AACnC,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;eAGW;IACX,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B;AAED;;kBAEkB;AAClB,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IACnC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC3B;AAED,iCAAiC;AACjC,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;AAErD,MAAM,WAAW,WAAW;IAC3B;yCACqC;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,64 @@
1
+ /***
2
+ * The worker's whole view of the world: a walk of the store bytes.
3
+ *
4
+ * A worker holds the store buffer and the store base, and nothing else. The
5
+ * archetype graph, the component registry and the query cache are main-thread
6
+ * objects. The header, the layout descriptor and the columns are bytes, so a
7
+ * worker resolves a dense query and finds a column from `(component_id,
8
+ * field_id)` alone. This file is that walk.
9
+ *
10
+ * Every offset the store writes is measured from the store base, so each read
11
+ * here adds the base.
12
+ *
13
+ * The walk is linear in the total column count and is not free. Run it when
14
+ * `view_stamp` moves, and cache what it gives back.
15
+ *
16
+ * This module imports the ABI constants and nothing else. The worker entry runs
17
+ * outside the bundler, so every import in its chain names the file with its
18
+ * extension.
19
+ ***/
20
+ type ColumnView = Uint8Array | Int8Array | Uint16Array | Int16Array | Uint32Array | Int32Array | Float32Array | Float64Array;
21
+ /** One matched archetype, bound for one kernel. */
22
+ export interface BoundArchetype {
23
+ /** Where this archetype's descriptor starts, so the enabled row count can be
24
+ * re-read each frame without another walk. */
25
+ readonly descriptorOff: number;
26
+ /** A typed array over each declared column, spanning the whole archetype.
27
+ * Empty for a wasm kernel, which addresses bytes instead. */
28
+ readonly views: ColumnView[];
29
+ /** The absolute byte offset of each declared column's first row. Empty for a
30
+ * js kernel, which indexes a view instead. */
31
+ readonly offsets: number[];
32
+ }
33
+ export declare function readViewStamp(buffer: ArrayBufferLike, storeBase: number): number;
34
+ /** The enabled row count of one bound archetype, without another walk. The host
35
+ * republishes it before every dispatch, so a worker that caches its bind still
36
+ * reads a fresh count each frame. */
37
+ export declare function readEnabledCount(buffer: ArrayBufferLike, descriptorOff: number): number;
38
+ /**
39
+ * Walk the descriptor region once and bind every archetype the masks match.
40
+ *
41
+ * `specs` is a flat list of `(component_id, field_id)` pairs in the kernel's
42
+ * argument order, so a kernel indexes and never searches. An archetype that
43
+ * matches the masks but lacks one named column is skipped, which is what keeps
44
+ * a tag-only archetype out of the list.
45
+ *
46
+ * `wantViews` picks the bind form. A js kernel takes typed arrays, a wasm
47
+ * kernel takes byte offsets. Building both would cost one allocation per column
48
+ * that no kernel reads.
49
+ *
50
+ * Cold path. Call it on a `view_stamp` change.
51
+ */
52
+ export declare function bindArchetypes(buffer: ArrayBufferLike, storeBase: number, specs: Int32Array, include: Uint32Array, exclude: Uint32Array | null, wantViews: boolean): BoundArchetype[];
53
+ /**
54
+ * The half-open row range worker `index` owns of an archetype with `rows`
55
+ * enabled rows.
56
+ *
57
+ * Every worker computes this from the same inputs with the same integer
58
+ * arithmetic, so no plan crosses the wire and no two workers can disagree about
59
+ * who owns a row. The main thread never computes it, which is what makes the
60
+ * split deterministic.
61
+ */
62
+ export declare function rangeBegin(rows: number, index: number, count: number): number;
63
+ export {};
64
+ //# sourceMappingURL=worker_bind.d.ts.map
@@ -0,0 +1,64 @@
1
+ /***
2
+ * The worker's whole view of the world: a walk of the store bytes.
3
+ *
4
+ * A worker holds the store buffer and the store base, and nothing else. The
5
+ * archetype graph, the component registry and the query cache are main-thread
6
+ * objects. The header, the layout descriptor and the columns are bytes, so a
7
+ * worker resolves a dense query and finds a column from `(component_id,
8
+ * field_id)` alone. This file is that walk.
9
+ *
10
+ * Every offset the store writes is measured from the store base, so each read
11
+ * here adds the base.
12
+ *
13
+ * The walk is linear in the total column count and is not free. Run it when
14
+ * `view_stamp` moves, and cache what it gives back.
15
+ *
16
+ * This module imports the ABI constants and nothing else. The worker entry runs
17
+ * outside the bundler, so every import in its chain names the file with its
18
+ * extension.
19
+ ***/
20
+ type ColumnView = Uint8Array | Int8Array | Uint16Array | Int16Array | Uint32Array | Int32Array | Float32Array | Float64Array;
21
+ /** One matched archetype, bound for one kernel. */
22
+ export interface BoundArchetype {
23
+ /** Where this archetype's descriptor starts, so the enabled row count can be
24
+ * re-read each frame without another walk. */
25
+ readonly descriptorOff: number;
26
+ /** A typed array over each declared column, spanning the whole archetype.
27
+ * Empty for a wasm kernel, which addresses bytes instead. */
28
+ readonly views: ColumnView[];
29
+ /** The absolute byte offset of each declared column's first row. Empty for a
30
+ * js kernel, which indexes a view instead. */
31
+ readonly offsets: number[];
32
+ }
33
+ export declare function readViewStamp(buffer: ArrayBufferLike, storeBase: number): number;
34
+ /** The enabled row count of one bound archetype, without another walk. The host
35
+ * republishes it before every dispatch, so a worker that caches its bind still
36
+ * reads a fresh count each frame. */
37
+ export declare function readEnabledCount(buffer: ArrayBufferLike, descriptorOff: number): number;
38
+ /**
39
+ * Walk the descriptor region once and bind every archetype the masks match.
40
+ *
41
+ * `specs` is a flat list of `(component_id, field_id)` pairs in the kernel's
42
+ * argument order, so a kernel indexes and never searches. An archetype that
43
+ * matches the masks but lacks one named column is skipped, which is what keeps
44
+ * a tag-only archetype out of the list.
45
+ *
46
+ * `wantViews` picks the bind form. A js kernel takes typed arrays, a wasm
47
+ * kernel takes byte offsets. Building both would cost one allocation per column
48
+ * that no kernel reads.
49
+ *
50
+ * Cold path. Call it on a `view_stamp` change.
51
+ */
52
+ export declare function bindArchetypes(buffer: ArrayBufferLike, storeBase: number, specs: Int32Array, include: Uint32Array, exclude: Uint32Array | null, wantViews: boolean): BoundArchetype[];
53
+ /**
54
+ * The half-open row range worker `index` owns of an archetype with `rows`
55
+ * enabled rows.
56
+ *
57
+ * Every worker computes this from the same inputs with the same integer
58
+ * arithmetic, so no plan crosses the wire and no two workers can disagree about
59
+ * who owns a row. The main thread never computes it, which is what makes the
60
+ * split deterministic.
61
+ */
62
+ export declare function rangeBegin(rows: number, index: number, count: number): number;
63
+ export {};
64
+ //# sourceMappingURL=worker_bind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker_bind.d.ts","sourceRoot":"","sources":["../../../src/plugins/workers/worker_bind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;KAkBK;AAWL,KAAK,UAAU,GACZ,UAAU,GACV,SAAS,GACT,WAAW,GACX,UAAU,GACV,WAAW,GACX,UAAU,GACV,YAAY,GACZ,YAAY,CAAC;AAehB,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC9B;kDAC8C;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;iEAC6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;IAC7B;kDAC8C;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED;;qCAEqC;AACrC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAKvF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,SAAS,EAAE,OAAO,GAChB,cAAc,EAAE,CA4DlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7E"}