@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
@@ -4,66 +4,67 @@ import { EntityID } from './entity.cjs';
4
4
  import { SparseComponentDef } from './sparse_store.cjs';
5
5
  import { RelationDef } from './relation.cjs';
6
6
  import { ResourceKey } from './resource.cjs';
7
- import { SystemContext } from './query.cjs';
7
+ import { SystemContext } from './system_context.cjs';
8
8
  import { BackendSystemHandle } from './compute_backend.cjs';
9
- import { Template } from './store.cjs';
9
+ import { Template } from './store_types.cjs';
10
+ import { Query } from './query.cjs';
10
11
  export type SystemID = Brand<number, "system_id">;
11
12
  export declare const asSystemId: (value: number) => SystemID;
12
13
  export type SystemFn = (ctx: SystemContext, deltaTime: number) => void;
13
14
  /** A pair describing a mid-tick archetype transition.
14
15
  * If an entity has every component in `whenHas`, the system may `add`
15
- * and/or `remove` the listed components, transitioning the entity to a
16
+ * or `remove` the listed components, transitioning the entity to a
16
17
  * new archetype. Used to pre-warm the archetype graph. */
17
18
  export interface SystemTransition {
18
19
  readonly whenHas: readonly ComponentDef[];
19
20
  readonly add?: readonly ComponentDef[];
20
21
  readonly remove?: readonly ComponentDef[];
21
22
  }
22
- /** The access declaration as AUTHORED on a `SystemConfig`. `reads` /
23
- * `writes` are mandatory (empty arrays are explicit, not missing
24
- * annotations); the rarer structural and resource fields are optional with
25
- * absent = empty, mirroring the sparse/relation precedent. `spawns`
23
+ /** The access declaration as authored on a `SystemConfig`. `reads` and
24
+ * `writes` are mandatory, and an empty array is explicit, not a missing
25
+ * annotation. The rarer structural and resource fields are optional, and
26
+ * absent reads as empty, mirroring the sparse and relation precedent. `spawns`
26
27
  * entries and `despawns` accept a `Template` wherever a component list is
27
- * expected registration expands it via `_normalizeAccess`. */
28
+ * expected, registration expands it via `_normalizeAccess`. */
28
29
  export interface SystemAccessConfig {
29
- /** Components the system READS but does not write. */
30
+ /** Components the system reads but does not write. */
30
31
  readonly reads: readonly ComponentDef[];
31
- /** Components the system WRITES. A write is implicitly also a read. */
32
+ /** Components the system writes. A write is implicitly also a read. */
32
33
  readonly writes: readonly ComponentDef[];
33
34
  /** Archetype masks the system spawns entities into. Each entry is the
34
- * union of components a spawned entity carries at flush time an
35
+ * union of components a spawned entity carries at flush time, an
35
36
  * explicit def list, or a `Template` (expanded at registration). */
36
37
  readonly spawns?: readonly (readonly ComponentDef[] | Template)[];
37
- /** Components removed via `removeComponent` / `despawn`.
38
- * `despawn` counts as removing every component on the entity
38
+ /** Components removed with `removeComponent` or `despawn`.
39
+ * `despawn` counts as removing every component on the entity,
39
40
  * declare the superset. A `Template` entry expands to its component
40
41
  * list, so a "destroys what the spawner spawns" system references the
41
42
  * same declaration. */
42
43
  readonly despawns?: readonly (ComponentDef | Template)[];
43
- /** Mid-tick archetype transitions; see SystemTransition. */
44
+ /** Mid-tick archetype transitions. See SystemTransition. */
44
45
  readonly transitions?: readonly SystemTransition[];
45
46
  /** Resources the system reads. */
46
47
  readonly resourceReads?: readonly ResourceKey<any>[];
47
48
  /** Resources the system writes. */
48
49
  readonly resourceWrites?: readonly ResourceKey<any>[];
49
- /** Sparse components the system READS via `getSparseField`
50
+ /** Sparse components the system reads via `getSparseField`
50
51
  * (membership probes `hasSparse` are unchecked, mirroring `hasComponent`). */
51
52
  readonly sparseReads?: readonly SparseComponentDef[];
52
- /** Sparse components the system MUTATES via `addSparse` / `removeSparse` /
53
+ /** Sparse components the system mutates with `addSparse`, `removeSparse` or
53
54
  * `setSparseField`. A write implies a read. */
54
55
  readonly sparseWrites?: readonly SparseComponentDef[];
55
- /** Relations the system READS via `targetOf` / `targetsOf` / `sourcesOf`
56
+ /** Relations the system reads with `targetOf`, `targetsOf` or `sourcesOf`
56
57
  * (`hasRelation` is unchecked, mirroring `hasComponent`). */
57
58
  readonly relationReads?: readonly RelationDef[];
58
- /** Relations the system MUTATES via `addRelation` / `removeRelation`.
59
+ /** Relations the system mutates with `addRelation` or `removeRelation`.
59
60
  * A write implies a read. */
60
61
  readonly relationWrites?: readonly RelationDef[];
61
62
  }
62
- /** The NORMALIZED access declaration a registered system carries what
63
- * `SystemDescriptor` exposes and `accessCheck` / prewarm consume. Produced
63
+ /** The normalized access declaration a registered system carries, what
64
+ * `SystemDescriptor` exposes, and what `accessCheck` and prewarm consume. Produced
64
65
  * from the authored `SystemAccessConfig` by `_normalizeAccess`: absent
65
66
  * optional fields are the shared frozen empties, and every `Template` in
66
- * `spawns` / `despawns` is expanded to its component list. */
67
+ * `spawns` and `despawns` is expanded to its component list. */
67
68
  export interface SystemAccessDeclaration extends SystemAccessConfig {
68
69
  readonly spawns: readonly (readonly ComponentDef[])[];
69
70
  readonly despawns: readonly ComponentDef[];
@@ -71,6 +72,53 @@ export interface SystemAccessDeclaration extends SystemAccessConfig {
71
72
  readonly resourceReads: readonly ResourceKey<any>[];
72
73
  readonly resourceWrites: readonly ResourceKey<any>[];
73
74
  }
75
+ /** A kernel body a worker can load. A worker cannot receive a closure, so a
76
+ * kernel is addressed by a module and an export name. */
77
+ export type ParallelKernel = {
78
+ /** A compiled module. It is structured-clone safe, so one module object
79
+ * is shared with every worker. It imports the world's memory as
80
+ * `env.memory`, which the wasm backing supplies. */
81
+ readonly wasm: WebAssembly.Module;
82
+ readonly export: string;
83
+ readonly js?: never;
84
+ } | {
85
+ /** An absolute module URL each worker imports. */
86
+ readonly js: string;
87
+ readonly export: string;
88
+ readonly wasm?: never;
89
+ };
90
+ /** One `(component, field)` pair a kernel takes, with the field name held to
91
+ * the component's own schema. */
92
+ export type ParallelColumn<D> = D extends ComponentDef<infer S> ? readonly [D, Extract<keyof S, string>] : never;
93
+ /**
94
+ * How a system runs across a pool of workers.
95
+ *
96
+ * The kernel receives, per matched archetype, one argument per declared column,
97
+ * then `begin`, `end` and `dt`. A js kernel takes a typed array spanning the
98
+ * whole column and indexes `begin` to `end`. A wasm kernel takes the absolute
99
+ * byte offset of the column's first row and addresses row `r` at
100
+ * `ptr + r * stride`, with the stride it knows from the field type.
101
+ *
102
+ * A parallel system stays a normal system: the same ordering, the same run
103
+ * conditions, the same sets. Its `fn` runs below the row threshold, on a world
104
+ * with no pool, and on a heap world.
105
+ */
106
+ export interface ParallelConfig<D extends ComponentDef<any> = ComponentDef<any>> {
107
+ readonly kernel: ParallelKernel;
108
+ /** The kernel's argument order, one component and field for each. Every
109
+ * component named must be in `reads` or `writes` and in the query, and every
110
+ * component in `writes` must appear here. */
111
+ readonly columns: readonly ParallelColumn<D>[];
112
+ /** The total matched row count below which the system runs `fn` on the main
113
+ * thread. The default is a placeholder, and the caller must tune it. The
114
+ * crossover is a property of the machine and of the kernel, not of the
115
+ * engine, so no default is right for every world. */
116
+ readonly minRows?: number;
117
+ /** The query the kernel runs over. Defaults to the first entry of `queries`,
118
+ * resolved as a require-only query. Pass one built with `not` to get a
119
+ * require-and-exclude match. */
120
+ readonly query?: Query<any>;
121
+ }
74
122
  export interface SystemConfig extends SystemAccessConfig {
75
123
  fn?(ctx: SystemContext, deltaTime: number): void;
76
124
  name?: string;
@@ -79,35 +127,40 @@ export interface SystemConfig extends SystemAccessConfig {
79
127
  dispose?: () => void;
80
128
  /** Components the system queries (via a captured `ecs.query(...)`), one
81
129
  * group per query.
82
- * OPTIONAL when provided, `registerSystem` validates `queries ⊆ reads ∪
130
+ * Optional, when provided, `registerSystem` validates `queries ⊆ reads ∪
83
131
  * writes` in `DEV` (`_assertQueriesDeclared`): a query term
84
132
  * reads each listed component, so this fails fast at registration instead of
85
133
  * at the first iteration's `accessCheck`. */
86
134
  queries?: readonly (readonly ComponentDef[])[];
87
- /** Grant this system FULL world access it may read/write/add/remove/destroy
88
- * ANY component, sparse, relation, or resource without declaring them. The
89
- * `DEV` access check is bypassed for its whole span (a no-op in
90
- * production, where the check is already compiled out). For trusted engine /
91
- * host machinery that mutates components not known at registration the
92
- * host→ECS command-apply system is the canonical case; a save/load or
93
- * debug system is another. Bevy's "exclusive system" in spirit: full access,
94
- * and under any future parallel scheduler — it would run alone. The schedule
95
- * is sequential today, so here it is purely the access grant. Use sparingly;
96
- * a normal system should declare exactly what it touches. */
135
+ /** Grant this system full world access. It may read, write, add, remove and
136
+ * destroy any component, sparse, relation, or resource without declaring
137
+ * them. `accessCheck` skips its whole span in `DEV`, and a production build
138
+ * compiles that check out already. Trusted engine or host machinery that
139
+ * mutates components unknown at registration needs this. The host→ECS
140
+ * command-apply system is the canonical case, and a save and load or a debug
141
+ * system is another. It matches Bevy's "exclusive system" in spirit, where
142
+ * full access also means the system runs alone. This schedule is sequential
143
+ * today, so here it is purely the access grant. Use it sparingly. A normal
144
+ * system declares exactly what it touches. */
97
145
  exclusive?: boolean;
98
146
  /** Opt this system into pluggable-backend execution. When set **and**
99
147
  * a `ComputeBackend` is attached to the ECS, the `Schedule` runs
100
- * `backend.run(backendHandle)` in place of `fn`; otherwise `fn` runs as the
148
+ * `backend.run(backendHandle)` in place of `fn`. Otherwise `fn` runs as the
101
149
  * TS fallback (a no-op `fn` ⇒ the system is effectively skipped when no
102
- * backend is attached). The handle is opaque to the engine minted by the
103
- * backend. The system still declares its `reads`/`writes` so the access span
150
+ * backend is attached). The handle is opaque to the engine, minted by the
151
+ * backend. The system still declares its `reads` and `writes` so the access span
104
152
  * around the backend call authorises the shared-memory it touches, and so the
105
153
  * scheduler can order it. See `ComputeBackend`. */
106
154
  backendHandle?: BackendSystemHandle;
155
+ /** Opt this system into worker execution. When set **and** a pool is
156
+ * attached **and** the matched row count clears `parallel.minRows`, the
157
+ * schedule runs the kernel across the pool in place of `fn`. Otherwise `fn`
158
+ * runs, and the two must compute the same thing. See `ParallelConfig`. */
159
+ parallel?: ParallelConfig;
107
160
  }
108
161
  /**
109
162
  * The type-level access record a `SystemContext` is parameterized by. Each
110
- * field is the UNION of handle types the system declared for that operation
163
+ * field is the union of handle types the system declared for that operation
111
164
  * (`never` = declared nothing). The interface itself is the permissive
112
165
  * default: every field `any`-typed, `destroy` undetermined.
113
166
  */
@@ -125,29 +178,29 @@ export interface SystemAccess {
125
178
  resourceWrite: ResourceKey<any>;
126
179
  }
127
180
  /** `unknown` if `D` is in the system's declared read surface, else an error tuple. */
128
- export type DeclaredRead<A extends SystemAccess, D> = [D] extends [A["read"]] ? unknown : ["component is not declared in this system's reads/writes", D];
181
+ export type DeclaredRead<A extends SystemAccess, D> = [D] extends [A["read"]] ? unknown : ["component is not declared in this system's reads or writes", D];
129
182
  /** `unknown` if `D` is in the system's declared write surface, else an error tuple. */
130
183
  export type DeclaredWrite<A extends SystemAccess, D> = [D] extends [A["write"]] ? unknown : ["component is not declared in this system's writes", D];
131
184
  /** `unknown` if `D` is an authorised addComponent target, else an error tuple. */
132
- export type DeclaredAdd<A extends SystemAccess, D> = [D] extends [A["add"]] ? unknown : ["component is not declared in this system's writes/spawns/transitions.add", D];
185
+ export type DeclaredAdd<A extends SystemAccess, D> = [D] extends [A["add"]] ? unknown : ["component is not declared in this system's writes, spawns or transitions.add", D];
133
186
  /** `unknown` if `D` is an authorised removeComponent target, else an error tuple. */
134
- export type DeclaredRemove<A extends SystemAccess, D> = [D] extends [A["remove"]] ? unknown : ["component is not declared in this system's despawns/transitions.remove", D];
135
- export type DeclaredSparseRead<A extends SystemAccess, D> = [D] extends [A["sparseRead"]] ? unknown : ["sparse component is not declared in this system's sparseReads/sparseWrites", D];
187
+ export type DeclaredRemove<A extends SystemAccess, D> = [D] extends [A["remove"]] ? unknown : ["component is not declared in this system's despawns or transitions.remove", D];
188
+ export type DeclaredSparseRead<A extends SystemAccess, D> = [D] extends [A["sparseRead"]] ? unknown : ["sparse component is not declared in this system's sparseReads or sparseWrites", D];
136
189
  export type DeclaredSparseWrite<A extends SystemAccess, D> = [D] extends [A["sparseWrite"]] ? unknown : ["sparse component is not declared in this system's sparseWrites", D];
137
190
  /** Relations are one nominal type, so this only distinguishes "declared some
138
- * relation access" from "declared none" the runtime check owns the rest.
191
+ * relation access" from "declared none", the runtime check owns the rest.
139
192
  * Keyed on the call site's inferred `D` (like the component asserts) rather
140
193
  * than on `RelationDef` directly: a conditional whose check type is not a
141
194
  * signature type parameter resolves under the compiler's variance-annotation
142
195
  * validation markers and falsely flags the `out A` declaration (TS2636). */
143
- export type DeclaredRelationRead<A extends SystemAccess, D> = [D] extends [A["relationRead"]] ? unknown : ["no relation is declared in this system's relationReads/relationWrites"];
196
+ export type DeclaredRelationRead<A extends SystemAccess, D> = [D] extends [A["relationRead"]] ? unknown : ["no relation is declared in this system's relationReads or relationWrites"];
144
197
  export type DeclaredRelationWrite<A extends SystemAccess, D> = [D] extends [A["relationWrite"]] ? unknown : ["no relation is declared in this system's relationWrites"];
145
- export type DeclaredResourceRead<A extends SystemAccess, K> = [K] extends [A["resourceRead"]] ? unknown : ["resource key is not declared in this system's resourceReads/resourceWrites", K];
198
+ export type DeclaredResourceRead<A extends SystemAccess, K> = [K] extends [A["resourceRead"]] ? unknown : ["resource key is not declared in this system's resourceReads or resourceWrites", K];
146
199
  export type DeclaredResourceWrite<A extends SystemAccess, K> = [K] extends [A["resourceWrite"]] ? unknown : ["resource key is not declared in this system's resourceWrites", K];
147
200
  /** `commands.despawn` argument: blocked (with a readable error) only when
148
- * the access record PROVES no despawns were declared. */
201
+ * the access record proves no despawns were declared. */
149
202
  export type DespawnArg<A extends SystemAccess> = [A["destroy"]] extends [false] ? {
150
- "this system declares no despawns despawn is not permitted": never;
203
+ "this system declares no despawns, so despawn is not permitted": never;
151
204
  } : EntityID;
152
205
  export type DenseAccessDecl = readonly ComponentDef<any>[];
153
206
  export type SpawnsAccessDecl = readonly (readonly ComponentDef<any>[] | Template<any>)[];
@@ -165,7 +218,7 @@ type TransitionRemoveDefs<T> = T extends {
165
218
  readonly remove: readonly (infer D extends ComponentDef<any>)[];
166
219
  } ? D : never;
167
220
  /**
168
- * Compute the `SystemAccess` record for a set of declared access lists
221
+ * Compute the `SystemAccess` record for a set of declared access lists,
169
222
  * the type-level `computeSets` (access_check.ts).
170
223
  */
171
224
  export type DeclaredAccess<R extends DenseAccessDecl, W extends DenseAccessDecl, Sp extends SpawnsAccessDecl = readonly never[], De extends DespawnsAccessDecl = readonly never[], Tr extends TransitionsAccessDecl = readonly never[], SR extends SparseAccessDecl = readonly never[], SW extends SparseAccessDecl = readonly never[], RR extends RelationsAccessDecl = readonly never[], RW extends RelationsAccessDecl = readonly never[], QR extends ResourcesAccessDecl = readonly never[], QW extends ResourcesAccessDecl = readonly never[]> = {
@@ -184,10 +237,10 @@ export type DeclaredAccess<R extends DenseAccessDecl, W extends DenseAccessDecl,
184
237
  /**
185
238
  * The config shape the typed `registerSystem` overload infers. Structurally a
186
239
  * `SystemConfig`, but every declaration list is its own type parameter (one
187
- * inference site each inferring a single config-object type parameter breaks
240
+ * inference site each, inferring a single config-object type parameter breaks
188
241
  * contextual typing of `fn`), `queries` is constrained to `reads ∪ writes`
189
- * (the compile-time declared-access lint), and `fn` / `onAdded` receive the narrowed
190
- * context. `fn` and `onAdded` use METHOD syntax deliberately: methods relate
242
+ * (the compile-time declared-access lint), and `fn` and `onAdded` receive the narrowed
243
+ * context. `fn` and `onAdded` use method syntax deliberately: methods relate
191
244
  * bivariantly, which is what lets an explicitly-annotated permissive
192
245
  * `fn(ctx: SystemContext, dt)` (the escape hatch) keep compiling.
193
246
  * `exclusive: true` configs take the dedicated permissive overload instead.
@@ -211,15 +264,26 @@ export interface TypedSystemConfig<R extends DenseAccessDecl, W extends DenseAcc
211
264
  onAdded?(ctx: SystemContext<A>): void;
212
265
  onRemoved?(): void;
213
266
  dispose?(): void;
214
- /** `boolean`, not `false`, so a config VALUE typed `SystemConfig` (whose
215
- * `exclusive` is `boolean | undefined`) still matches this overload; a
267
+ /** `boolean`, not `false`, so a config value typed `SystemConfig` (whose
268
+ * `exclusive` is `boolean | undefined`) still matches this overload. A
216
269
  * literal `exclusive: true` config matches the dedicated permissive
217
270
  * overload first by declaration order. */
218
271
  exclusive?: boolean;
219
272
  backendHandle?: BackendSystemHandle;
273
+ /** The column list is held to `reads ∪ writes` at the type layer, the same
274
+ * mirror `queries` carries, and each field name to its component's schema. */
275
+ readonly parallel?: ParallelConfig<R[number] | W[number]>;
220
276
  }
221
277
  export interface SystemDescriptor extends Readonly<SystemConfig> {
222
278
  readonly id: SystemID;
279
+ /** @internal What one routed dispatch reads, resolved at registration.
280
+ * It hangs off the descriptor so the dispatch site resolves it with one
281
+ * property load instead of a keyed lookup. Absent on every system no route
282
+ * claims, and on every world that installed no route.
283
+ *
284
+ * Opaque. The plugin that built it is the only reader, so the core carries
285
+ * neither the plan's type nor the module that shapes it. */
286
+ readonly routePlan?: object;
223
287
  readonly spawns: readonly (readonly ComponentDef[])[];
224
288
  readonly despawns: readonly ComponentDef[];
225
289
  readonly transitions: readonly SystemTransition[];
@@ -228,23 +292,44 @@ export interface SystemDescriptor extends Readonly<SystemConfig> {
228
292
  }
229
293
  /** @internal Normalize an authored access config into the declaration shape
230
294
  * a `SystemDescriptor` carries: absent optional fields become shared frozen
231
- * empties; `Template` references in `spawns` / `despawns` expand to their
232
- * component lists. Pure does not mutate `config`. */
295
+ * empties. A `Template` reference in `spawns` or in `despawns` expands to its
296
+ * component list. Pure, does not mutate `config`. */
233
297
  export declare function _normalizeAccess(config: SystemAccessConfig): SystemAccessDeclaration;
234
298
  /** @internal Declared-access lint: in `DEV`, validate that every
235
299
  * component a system lists in `queries` is covered by `reads ∪ writes`. A query
236
- * term reads each listed component's presence/columns, so querying one the
300
+ * term reads each listed component's presence and columns, so querying one the
237
301
  * system never declared read access to would throw at the first iteration
238
- * (`accessCheck`); this surfaces the drift between the two declarations at
239
- * registration instead. `exclusive` systems (full access, empty reads/writes)
240
- * are skipped, as are the bare-fn / 2-arg overloads (no `queries`). Pure —
302
+ * (`accessCheck`). This surfaces the drift between the two declarations at
303
+ * registration instead. An `exclusive` system (full access, empty reads and
304
+ * writes) is skipped, and so is a bare-function or two-argument overload,
305
+ * which carries no `queries`. Pure,
241
306
  * throws `QUERY_ACCESS_UNDECLARED` on a violation, naming the offending ids. */
242
307
  export declare function _assertQueriesDeclared(config: SystemConfig): void;
243
- /** @internal empty access declaration shared by the bare-fn and 2-arg
308
+ /** @internal, empty access declaration shared by the bare-fn and 2-arg
244
309
  * `registerSystem` overloads. Systems registered via those overloads
245
- * have no declared access and therefore fail any runtime check; use the
246
- * config form when the system performs any ECS access. NOT exported from
247
- * the package barrel call sites should never spread this directly. */
310
+ * have no declared access and therefore fail any runtime check. Use the
311
+ * config form when the system performs any ECS access. Not exported from
312
+ * the package barrel, call sites should never spread this directly. */
248
313
  export declare const _INTERNAL_EMPTY_ACCESS: SystemAccessDeclaration;
314
+ /** @internal The config a bare-function registration produces. The access
315
+ * surface is unannotated, so a component touch fails the runtime check. The
316
+ * config form is how a system declares its per-system access.
317
+ *
318
+ * Footgun guard: a bare `SystemFn` is `(ctx, dt)`, arity
319
+ * ≤ 2. A 3-param function here is almost certainly the `(q, ctx, dt)`
320
+ * query form with its `queryFn` second arg forgotten, which would
321
+ * otherwise silently bind `q := SystemContext`, `ctx := dt`, and
322
+ * `dt := undefined` (a NaN trap on the first arithmetic). Fail fast
323
+ * in `DEV` instead. Compiled out of production builds. */
324
+ export declare function _createBareSystemConfig(fn: SystemFn): SystemConfig;
325
+ /** @internal DEV-only: refuse a config that can never run anything. `fn` is
326
+ * optional only for a backend-executed system, so a config with neither `fn`
327
+ * nor `backendHandle` is a registration the schedule can do nothing with. */
328
+ export declare function _assertSystemRunnable(config: SystemConfig): void;
329
+ /** @internal Freeze one registration into the handle the schedule orders by.
330
+ * The world owns the id counter and hands the next value in, so the descriptor
331
+ * carries the same brand every other system id does. Cold path, one call per
332
+ * registration. */
333
+ export declare function _createSystemDescriptor(config: SystemConfig, routePlan: object | undefined, nextId: number): SystemDescriptor;
249
334
  export {};
250
335
  //# sourceMappingURL=system.d.ts.map