@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
@@ -3,24 +3,24 @@ import { ResourceKey } from './resource.cjs';
3
3
  import { Query } from './query.cjs';
4
4
  /**
5
5
  * The read-only slice of `SystemContext` a run condition is handed. Deliberately
6
- * narrow a condition can read the ECS tick and resources, but has no path to
6
+ * narrow, a condition can read the ECS tick and resources, but has no path to
7
7
  * mutate the world or read component columns directly (component reads go
8
8
  * through a captured `Query`). `SystemContext` structurally satisfies this, so
9
9
  * the schedule passes the live context unchanged.
10
10
  */
11
11
  export interface ConditionContext {
12
- /** Current ECS tick the deterministic clock built-ins key off. */
12
+ /** Current ECS tick, the deterministic clock built-ins key off. */
13
13
  readonly ecsTick: number;
14
14
  /** Read a resource value (checked against `resourceReads` in `DEV`). */
15
15
  getResource<T>(key: ResourceKey<T>): T;
16
- /** Membership probe for a resource unchecked, mirrors `hasComponent`. */
16
+ /** Membership probe for a resource, unchecked, mirrors `hasComponent`. */
17
17
  hasResource<T>(key: ResourceKey<T>): boolean;
18
18
  }
19
19
  /**
20
20
  * A per-tick gate. `evaluate` returns `true` to run the gated system(s), `false`
21
- * to skip them this tick. `reads` / `resourceReads` declare the predicate's
21
+ * to skip them this tick. `reads` and `resourceReads` declare the predicate's
22
22
  * read surface for `accessCheck` (dev) and the future parallel scheduler's
23
- * read-edge graph; both are optional (absent reads as empty).
23
+ * read-edge graph. Both are optional (absent reads as empty).
24
24
  */
25
25
  export interface RunCondition {
26
26
  /** Human-readable label, surfaced in dev access-violation diagnostics. */
@@ -28,7 +28,7 @@ export interface RunCondition {
28
28
  /** Pure, deterministic predicate. See the two hard rules in the file header. */
29
29
  readonly evaluate: (ctx: ConditionContext) => boolean;
30
30
  /** Components the predicate reads (via a captured query). Forward-looking
31
- * metadata `ConditionContext` exposes no direct column read, so this is
31
+ * metadata, `ConditionContext` exposes no direct column read, so this is
32
32
  * not runtime-checkable today, but it is the read-edge a parallel scheduler
33
33
  * will consume. */
34
34
  readonly reads?: readonly ComponentDef[];
@@ -38,44 +38,44 @@ export interface RunCondition {
38
38
  }
39
39
  /**
40
40
  * Run the gated system(s) only while a resource equals `expected` (strict `===`,
41
- * so reference identity for objects). The canonical "feature flag / game phase"
42
- * gate flip `ecs.resources.set(key, …)` and the whole group toggles.
41
+ * so reference identity for objects). The canonical gate for a feature flag or
42
+ * a game phase. Flip `ecs.resources.set(key, …)` and the whole group toggles.
43
43
  */
44
44
  export declare function runIfResourceEq<T>(key: ResourceKey<T>, expected: T): RunCondition;
45
45
  /**
46
- * Run the gated system(s) once every `n` ticks on ticks congruent to `offset`
46
+ * Run the gated system(s) once every `n` ticks, on ticks congruent to `offset`
47
47
  * mod `n`. Keyed off the deterministic ECS tick, so it carries no private
48
48
  * state and replays bit-identically. `offset` is a **phase shift taken mod `n`**
49
- * (default `0` ⇒ fires on tick 0, n, 2n, …; `offset` and `offset + n` are the
49
+ * (default `0` ⇒ fires on tick 0, n, 2n, …, `offset` and `offset + n` are the
50
50
  * same phase, and a negative offset wraps), normalized once here into `[0, n)`.
51
51
  * `n` must be a positive integer and `offset` an integer.
52
52
  *
53
53
  * The normalization isn't cosmetic: `(ecsTick - offset) % n` with a raw
54
54
  * `offset ≥ n` (or negative) leans on JS's signed `%` yielding `-0` for a
55
- * negative multiple (and `-0 === 0`) to stay congruent correct, but load-
56
- * bearing on a quirk. Folding `offset` into `[0, n)` up front makes the phase
55
+ * negative multiple (and `-0 === 0`) to stay congruent, correct, but load-
56
+ * bearing on a quirk. Folding `offset` into `[0, n)` up front makes the folded offset
57
57
  * explicit: the per-tick dividend `ecsTick - phase` may still be negative
58
58
  * (when `ecsTick < phase`), but with `phase ∈ [0, n)` it is never a *negative
59
- * multiple* of `n` it lands in `[-(n-1), -1]`, which holds no multiple of `n`
60
- * so `%` never produces `-0` and the check needs no signed-zero reliance.
59
+ * multiple* of `n`. It lands in `[-(n-1), -1]`, which holds no multiple of `n`,
60
+ * so `%` never produces `-0` and the check needs no signed-zero reliance.
61
61
  */
62
62
  export declare function runEveryNTicks(n: number, offset?: number): RunCondition;
63
63
  /**
64
64
  * Run the gated system(s) only when a query matches at least one (enabled)
65
- * entity flecs `runIf` over a query. The query is captured at config time;
66
- * its component defs are declared as `reads`. `count()` is a membership sum over
67
- * matching archetypes (no column reads), so it trips no `accessCheck` read.
65
+ * entity, flecs `runIf` over a query. The query is captured at config time, and
66
+ * its component defs are declared as `reads`. `entityCount` is a membership sum
67
+ * over matching archetypes and reads no column, so it trips no `accessCheck` read.
68
68
  *
69
69
  * The query must be **dense-only**: `entityCount` asserts this in `DEV`
70
- * (`_assertDenseOnly`), so pass a plain `ecs.query(...)` a query carrying
70
+ * (`_assertDenseOnly`), so pass a plain `ecs.query(...)`, a query carrying
71
71
  * `.optional(...)` or sparse terms throws. Gate on sparse membership with a
72
72
  * custom predicate over `forEachEntity` instead.
73
73
  */
74
74
  export declare function runIfAnyMatch(query: Query<readonly ComponentDef[]>): RunCondition;
75
75
  /** Invert a condition: run exactly when `cond` would skip. */
76
- export declare function not(cond: RunCondition): RunCondition;
77
- /** Run only when EVERY condition passes (`&&`, short-circuit). */
78
- export declare function allOf(...conds: RunCondition[]): RunCondition;
79
- /** Run when ANY condition passes (`||`, short-circuit). */
80
- export declare function anyOf(...conds: RunCondition[]): RunCondition;
76
+ export declare function runIfNot(cond: RunCondition): RunCondition;
77
+ /** Run only when every condition passes (`&&`, short-circuit). */
78
+ export declare function runIfAll(...conds: RunCondition[]): RunCondition;
79
+ /** Run when any condition passes (`||`, short-circuit). */
80
+ export declare function runIfAny(...conds: RunCondition[]): RunCondition;
81
81
  //# sourceMappingURL=run_condition.d.ts.map
@@ -3,24 +3,24 @@ import { ResourceKey } from './resource.js';
3
3
  import { Query } from './query.js';
4
4
  /**
5
5
  * The read-only slice of `SystemContext` a run condition is handed. Deliberately
6
- * narrow a condition can read the ECS tick and resources, but has no path to
6
+ * narrow, a condition can read the ECS tick and resources, but has no path to
7
7
  * mutate the world or read component columns directly (component reads go
8
8
  * through a captured `Query`). `SystemContext` structurally satisfies this, so
9
9
  * the schedule passes the live context unchanged.
10
10
  */
11
11
  export interface ConditionContext {
12
- /** Current ECS tick the deterministic clock built-ins key off. */
12
+ /** Current ECS tick, the deterministic clock built-ins key off. */
13
13
  readonly ecsTick: number;
14
14
  /** Read a resource value (checked against `resourceReads` in `DEV`). */
15
15
  getResource<T>(key: ResourceKey<T>): T;
16
- /** Membership probe for a resource unchecked, mirrors `hasComponent`. */
16
+ /** Membership probe for a resource, unchecked, mirrors `hasComponent`. */
17
17
  hasResource<T>(key: ResourceKey<T>): boolean;
18
18
  }
19
19
  /**
20
20
  * A per-tick gate. `evaluate` returns `true` to run the gated system(s), `false`
21
- * to skip them this tick. `reads` / `resourceReads` declare the predicate's
21
+ * to skip them this tick. `reads` and `resourceReads` declare the predicate's
22
22
  * read surface for `accessCheck` (dev) and the future parallel scheduler's
23
- * read-edge graph; both are optional (absent reads as empty).
23
+ * read-edge graph. Both are optional (absent reads as empty).
24
24
  */
25
25
  export interface RunCondition {
26
26
  /** Human-readable label, surfaced in dev access-violation diagnostics. */
@@ -28,7 +28,7 @@ export interface RunCondition {
28
28
  /** Pure, deterministic predicate. See the two hard rules in the file header. */
29
29
  readonly evaluate: (ctx: ConditionContext) => boolean;
30
30
  /** Components the predicate reads (via a captured query). Forward-looking
31
- * metadata `ConditionContext` exposes no direct column read, so this is
31
+ * metadata, `ConditionContext` exposes no direct column read, so this is
32
32
  * not runtime-checkable today, but it is the read-edge a parallel scheduler
33
33
  * will consume. */
34
34
  readonly reads?: readonly ComponentDef[];
@@ -38,44 +38,44 @@ export interface RunCondition {
38
38
  }
39
39
  /**
40
40
  * Run the gated system(s) only while a resource equals `expected` (strict `===`,
41
- * so reference identity for objects). The canonical "feature flag / game phase"
42
- * gate flip `ecs.resources.set(key, …)` and the whole group toggles.
41
+ * so reference identity for objects). The canonical gate for a feature flag or
42
+ * a game phase. Flip `ecs.resources.set(key, …)` and the whole group toggles.
43
43
  */
44
44
  export declare function runIfResourceEq<T>(key: ResourceKey<T>, expected: T): RunCondition;
45
45
  /**
46
- * Run the gated system(s) once every `n` ticks on ticks congruent to `offset`
46
+ * Run the gated system(s) once every `n` ticks, on ticks congruent to `offset`
47
47
  * mod `n`. Keyed off the deterministic ECS tick, so it carries no private
48
48
  * state and replays bit-identically. `offset` is a **phase shift taken mod `n`**
49
- * (default `0` ⇒ fires on tick 0, n, 2n, …; `offset` and `offset + n` are the
49
+ * (default `0` ⇒ fires on tick 0, n, 2n, …, `offset` and `offset + n` are the
50
50
  * same phase, and a negative offset wraps), normalized once here into `[0, n)`.
51
51
  * `n` must be a positive integer and `offset` an integer.
52
52
  *
53
53
  * The normalization isn't cosmetic: `(ecsTick - offset) % n` with a raw
54
54
  * `offset ≥ n` (or negative) leans on JS's signed `%` yielding `-0` for a
55
- * negative multiple (and `-0 === 0`) to stay congruent correct, but load-
56
- * bearing on a quirk. Folding `offset` into `[0, n)` up front makes the phase
55
+ * negative multiple (and `-0 === 0`) to stay congruent, correct, but load-
56
+ * bearing on a quirk. Folding `offset` into `[0, n)` up front makes the folded offset
57
57
  * explicit: the per-tick dividend `ecsTick - phase` may still be negative
58
58
  * (when `ecsTick < phase`), but with `phase ∈ [0, n)` it is never a *negative
59
- * multiple* of `n` it lands in `[-(n-1), -1]`, which holds no multiple of `n`
60
- * so `%` never produces `-0` and the check needs no signed-zero reliance.
59
+ * multiple* of `n`. It lands in `[-(n-1), -1]`, which holds no multiple of `n`,
60
+ * so `%` never produces `-0` and the check needs no signed-zero reliance.
61
61
  */
62
62
  export declare function runEveryNTicks(n: number, offset?: number): RunCondition;
63
63
  /**
64
64
  * Run the gated system(s) only when a query matches at least one (enabled)
65
- * entity flecs `runIf` over a query. The query is captured at config time;
66
- * its component defs are declared as `reads`. `count()` is a membership sum over
67
- * matching archetypes (no column reads), so it trips no `accessCheck` read.
65
+ * entity, flecs `runIf` over a query. The query is captured at config time, and
66
+ * its component defs are declared as `reads`. `entityCount` is a membership sum
67
+ * over matching archetypes and reads no column, so it trips no `accessCheck` read.
68
68
  *
69
69
  * The query must be **dense-only**: `entityCount` asserts this in `DEV`
70
- * (`_assertDenseOnly`), so pass a plain `ecs.query(...)` a query carrying
70
+ * (`_assertDenseOnly`), so pass a plain `ecs.query(...)`, a query carrying
71
71
  * `.optional(...)` or sparse terms throws. Gate on sparse membership with a
72
72
  * custom predicate over `forEachEntity` instead.
73
73
  */
74
74
  export declare function runIfAnyMatch(query: Query<readonly ComponentDef[]>): RunCondition;
75
75
  /** Invert a condition: run exactly when `cond` would skip. */
76
- export declare function not(cond: RunCondition): RunCondition;
77
- /** Run only when EVERY condition passes (`&&`, short-circuit). */
78
- export declare function allOf(...conds: RunCondition[]): RunCondition;
79
- /** Run when ANY condition passes (`||`, short-circuit). */
80
- export declare function anyOf(...conds: RunCondition[]): RunCondition;
76
+ export declare function runIfNot(cond: RunCondition): RunCondition;
77
+ /** Run only when every condition passes (`&&`, short-circuit). */
78
+ export declare function runIfAll(...conds: RunCondition[]): RunCondition;
79
+ /** Run when any condition passes (`||`, short-circuit). */
80
+ export declare function runIfAny(...conds: RunCondition[]): RunCondition;
81
81
  //# sourceMappingURL=run_condition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run_condition.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/run_condition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8BK;AAEL,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIrC;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAChC,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvC,2EAA2E;IAC3E,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CAC7C;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACtD;;;wBAGoB;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC;mEAC+D;IAC/D,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,YAAY,CAcjF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,YAAY,CAoBlE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,YAAY,EAAE,CAAC,GAAG,YAAY,CAMjF;AA4BD,8DAA8D;AAC9D,wBAAgB,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAMpD;AAED,kEAAkE;AAClE,wBAAgB,KAAK,CAAC,GAAG,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,CAM5D;AAED,2DAA2D;AAC3D,wBAAgB,KAAK,CAAC,GAAG,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,CAM5D"}
1
+ {"version":3,"file":"run_condition.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/run_condition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8BK;AAEL,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIrC;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAChC,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvC,0EAA0E;IAC1E,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CAC7C;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACtD;;;wBAGoB;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC;mEAC+D;IAC/D,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,YAAY,CAcjF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,YAAY,CAoBlE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,YAAY,EAAE,CAAC,GAAG,YAAY,CAMjF;AAgCD,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAMzD;AAED,kEAAkE;AAClE,wBAAgB,QAAQ,CAAC,GAAG,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,CAM/D;AAED,2DAA2D;AAC3D,wBAAgB,QAAQ,CAAC,GAAG,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,CAM/D"}
@@ -1,155 +1,126 @@
1
- import { SystemContext } from './query.cjs';
1
+ import { SystemEntry, SystemSet, SystemSetConfig } from './system_set.cjs';
2
+ import { Phase, PhaseConfig, SchedulePhase } from './phase.cjs';
3
+ import { SystemContext } from './system_context.cjs';
2
4
  import { SystemDescriptor } from './system.cjs';
3
5
  import { ComputeBackend } from './compute_backend.cjs';
4
- import { RunCondition } from './run_condition.cjs';
5
- export declare enum SCHEDULE {
6
- PRE_STARTUP = "PRE_STARTUP",
7
- STARTUP = "STARTUP",
8
- POST_STARTUP = "POST_STARTUP",
9
- FIXED_UPDATE = "FIXED_UPDATE",
10
- PRE_UPDATE = "PRE_UPDATE",
11
- UPDATE = "UPDATE",
12
- POST_UPDATE = "POST_UPDATE"
13
- }
14
- /**
15
- * An opaque handle for a named group of systems. A set carries a shared
16
- * run condition and shared ordering that every member inherits. Sets are
17
- * identified by **object identity**, not by name — create one with
18
- * `systemSet(name)`, hold the handle, and reuse it across `addSystems`
19
- * (`SystemEntry.set`) and `Schedule.configureSet`. The `name` is for
20
- * diagnostics only.
21
- */
22
- export interface SystemSet {
23
- readonly name: string;
24
- }
25
- /** Create a `SystemSet` handle. Two calls with the same name are two
26
- * distinct sets — keep the returned handle and pass it around. */
27
- export declare function systemSet(name: string): SystemSet;
28
- /** A `before`/`after` ordering target: either a concrete system or a whole set
29
- * (expanded to its members within the same phase at sort time). */
30
- export type SystemOrderingTarget = SystemDescriptor | SystemSet;
31
- /** Shared configuration applied to a `SystemSet` via `configureSet`.
32
- * Accumulates across calls — conditions AND together, ordering targets union. */
33
- export interface SystemSetConfig {
34
- /** Condition(s) every member is gated by (ANDed with each member's own). */
35
- runIf?: RunCondition | readonly RunCondition[];
36
- /** Every member runs before each of these targets. */
37
- before?: readonly SystemOrderingTarget[];
38
- /** Every member runs after each of these targets. */
39
- after?: readonly SystemOrderingTarget[];
40
- }
41
- export interface SystemOrdering {
42
- before?: readonly SystemOrderingTarget[];
43
- after?: readonly SystemOrderingTarget[];
44
- }
45
- export interface SystemEntry {
46
- system: SystemDescriptor;
47
- ordering?: SystemOrdering;
48
- /** Run condition(s) gating just this system — ANDed with any set conditions
49
- * it inherits. A `false` verdict skips the body that tick. */
50
- runIf?: RunCondition | readonly RunCondition[];
51
- /** Set membership — the system inherits each set's shared condition and
52
- * ordering. */
53
- set?: SystemSet | readonly SystemSet[];
6
+ /** What the schedule needs of a worker pool, and nothing more.
7
+ *
8
+ * The pool ships in the workers plugin, so a class reference here would pull
9
+ * the pool, the plan builder and the node threads shim into every program.
10
+ * This interface is structural, and it erases, so the core graph reaches none
11
+ * of them. `run` answers false below the row threshold, before the kernel is
12
+ * loaded, and after a failed join. Then the sequential body runs. */
13
+ export interface RouteDispatch {
14
+ /** `plan` is the opaque value the descriptor carries. The schedule loads
15
+ * it and passes it on, and only the route reads inside it. Answering false
16
+ * puts this dispatch back on the system's own `fn`. */
17
+ run(plan: object, ctx: SystemContext, deltaTime: number, runTick: number): boolean;
54
18
  }
55
19
  export declare class Schedule {
56
- private readonly labelSystems;
57
- private readonly sortedCache;
58
- private readonly systemIndex;
59
- private readonly systemLastRun;
60
- private readonly lastRunSlots;
61
- private readonly freeLastRunSlots;
20
+ private readonly _phases;
21
+ private readonly _builtins;
22
+ private _startupOrder;
23
+ private _fixedOrder;
24
+ private _updateOrder;
25
+ private readonly _phaseBySystem;
26
+ private readonly _lastRunTicks;
27
+ private readonly _slotBySystem;
28
+ private readonly _freeSlots;
62
29
  private _driveDepth;
63
- private readonly gatedSystems;
64
- private readonly setConditions;
65
- private readonly setOrdering;
66
- private nextInsertionOrder;
30
+ private readonly _gatedSystems;
31
+ private readonly _conditionsBySet;
32
+ private readonly _orderingBySet;
33
+ private _nextInsertionOrder;
67
34
  private _backend;
68
- /** Dev-diagnostic sink (`ECSOptions.onWarn`); defaults to `console.warn`.
69
- * The only schedule diagnostic today is `warnDroppedEdge`. */
70
- private readonly onWarn;
71
- /** The `FIXED_UPDATE` node list, held directly for `hasFixedSystems`. */
72
- private readonly _fixedNodes;
35
+ private _route;
36
+ /** Dev-diagnostic sink (`ECSOptions.onWarn`). Defaults to `console.warn`.
37
+ * The only schedule diagnostic today is the dropped ordering edge
38
+ * `schedule_plan.ts` reports. */
39
+ private readonly _onWarn;
40
+ private _fixedSystemCount;
41
+ private _nextPhaseOrder;
73
42
  constructor(onWarn?: (message: string) => void);
74
- addSystems(label: SCHEDULE, ...entries: (SystemDescriptor | SystemEntry)[]): void;
75
43
  /**
76
- * Configure a `SystemSet` its shared run condition(s) and/or
44
+ * Add one phase to a loop and hand back its handle. Cold path, setup only.
45
+ *
46
+ * `before` and `after` order it against the other phases of the same loop.
47
+ * A target in another loop is dropped, the way a system ordered against a
48
+ * system in another phase is dropped. With neither, the phase runs after
49
+ * every phase declared before it, so it lands at the tail of its loop.
50
+ *
51
+ * The handle is this world's. Two calls with one name make two phases, the
52
+ * rule `systemSet` already follows, so hold the handle rather than the name.
53
+ */
54
+ addPhase(name: string, config: PhaseConfig): Phase;
55
+ private _declarePhase;
56
+ /** Check that a phase belongs to this schedule, and hand it back unchanged.
57
+ * Not a dev guard: a handle from another world would push systems into that
58
+ * world's list, and a production build that scheduled them into nothing is
59
+ * worse than a named fault on a setup call. */
60
+ private _checkPhase;
61
+ /** The node behind either spelling of a phase. Cold path. */
62
+ private _resolvePhase;
63
+ /** Sort one loop's phases and cache the result. Kahn's algorithm with
64
+ * declaration order as the tiebreaker, the same rule the systems inside a
65
+ * phase follow. Cold path, once per `addPhase`. */
66
+ private _resolveOrder;
67
+ addSystems(phase: SchedulePhase, ...entries: (SystemDescriptor | SystemEntry)[]): void;
68
+ /**
69
+ * Configure a `SystemSet`, its shared run conditions, or its
77
70
  * ordering, inherited by every member. Additive and order-independent w.r.t.
78
71
  * `addSystems`: conditions accumulate (ANDed), ordering targets union, and
79
72
  * a member added before or after this call picks the configuration up.
80
73
  */
81
74
  configureSet(set: SystemSet, config: SystemSetConfig): void;
82
75
  removeSystem(system: SystemDescriptor): void;
76
+ /** Drop every cached plan. Cold path, and the reason each caller needs it
77
+ * sits at that call site. */
78
+ private _invalidatePlans;
83
79
  /** Attach (or, with `null`, detach) the opt-in compute backend. Driven
84
- * by `ECS.attachBackend`; routes any scheduled system carrying a
80
+ * by `ECS.attachBackend`. Routes any scheduled system carrying a
85
81
  * `backendHandle` to `backend.run(handle)` in place of its `fn`. */
86
82
  setBackend(backend: ComputeBackend | null): void;
87
- runStartup(ctx: SystemContext, tick: number): void;
88
- runUpdate(ctx: SystemContext, deltaTime: number, tick: number): void;
89
- runFixedUpdate(ctx: SystemContext, fixedDt: number, tick: number): void;
83
+ /** Attach (or, with `null`, detach) the system dispatch route. Driven by
84
+ * the plugin that installed it. Runs any scheduled system carrying a
85
+ * `routePlan` through the route in place of its `fn`. */
86
+ setRoute(dispatch: RouteDispatch | null): void;
87
+ runStartup(ctx: SystemContext): void;
88
+ runUpdate(ctx: SystemContext, deltaTime: number): void;
89
+ runFixedUpdate(ctx: SystemContext, fixedDt: number): void;
90
90
  hasFixedSystems(): boolean;
91
91
  getAllSystems(): SystemDescriptor[];
92
92
  hasSystem(system: SystemDescriptor): boolean;
93
- /** Hand `descriptor` its `systemLastRun` slot, keeping the array packed (no
94
- * holes ⇒ no undefined-check on the read in `runLabel`, which is the whole
93
+ /** Hand `descriptor` its `_lastRunTicks` slot, keeping the array packed (no
94
+ * holes ⇒ no undefined-check on the read in `_runPhase`, which is the whole
95
95
  * point of it not being a `Map`). Idempotent for a descriptor already in this
96
- * schedule `getSorted` re-asks for every system it sorts. A descriptor that
96
+ * schedule, `_getPlan` re-asks for every system it sorts. A descriptor that
97
97
  * was removed and re-added gets a *fresh* slot starting at tick 0, which is
98
98
  * what the previous `Map`-based bookkeeping did (`delete` on remove, `set(…, 0)`
99
99
  * on re-add). */
100
100
  private _assignLastRunSlot;
101
101
  clear(): void;
102
- private runLabel;
102
+ private _runPhase;
103
103
  /**
104
- * Whether a gated system runs this tick the AND of its own conditions and
104
+ * Whether a gated system runs this tick, the and of its own conditions and
105
105
  * every set it belongs to. A set's conditions are evaluated at most once per
106
106
  * phase (memoized in `setVerdicts`) and the verdict gates every member of the
107
- * set uniformly; a `configureSet` between phases is still honored because the
108
- * memo lives only for a single `runLabel` pass. Short-circuits on the first
107
+ * set uniformly. A `configureSet` between phases is still honored because the
108
+ * memo lives only for a single `_runPhase` pass. Short-circuits on the first
109
109
  * `false`. The system's own conditions evaluate per system, in canonical order.
110
110
  *
111
- * SEMANTIC NOTE: this evaluates a set's conditions once-per-set-per-phase
112
- * rather than once-per-member. Equivalent for pure RunConditions; observably
113
- * different only if a set condition reads state mutated earlier in the SAME
114
- * phase (resources write immediately). That is intentional the set gates as a
115
- * unit, so all its members share one verdict for the phase.
111
+ * This evaluates a set's conditions once for each set in each phase, and not
112
+ * once for each member. The two agree for a pure `RunCondition`. They differ
113
+ * only when a set condition reads state a system mutated earlier in the same
114
+ * phase (a resource writes immediately). That is intentional. The set gates
115
+ * as a unit, so every member shares one verdict for the phase.
116
116
  */
117
- private shouldRun;
118
- /** Evaluate a condition list with AND semantics. Each predicate runs inside a
117
+ private _shouldRun;
118
+ /** Evaluate a condition list with and semantics. Each predicate runs inside a
119
119
  * reads-only `accessCheck` span (dev), so a condition that reads an
120
- * undeclared resource or attempts any mutation throws. */
121
- private evalConditions;
122
- private getSorted;
123
- /**
124
- * Delegates to the shared topologicalSort utility.
125
- * Builds the dependency edge map from before/after constraints, then
126
- * catches any cycle TypeError and re-throws as ECSError.
127
- */
128
- private sortSystems;
129
- /**
130
- * Add the topo edges for one ordering list. For `"before"` the source
131
- * runs before each target (edge source→target); for `"after"` it runs after
132
- * each target (edge target→source). A `SystemSet` target expands to every
133
- * member within this phase (self-edges skipped, so a member ordered against
134
- * its own set is a no-op); a descriptor target absent from this phase is
135
- * dropped — with a dev warning only for a concrete system, since a set
136
- * legitimately expands to nothing when its members live in another phase.
137
- */
138
- private resolveEdges;
139
- /** Push one directed edge into the adjacency map. Both endpoints are known to
140
- * be in this phase (callers guard), so `edges.get(...)` is non-null. */
141
- private addDirectedEdge;
142
- /**
143
- * Dev-only diagnostic for an ordering edge that was dropped during sort.
144
- *
145
- * Cross-label ordering is impossible by design (`nodeSet` is per-label), so
146
- * a target registered in *another* phase is skipped silently — that's the
147
- * intended isolation. But a target unknown to *every* phase is almost
148
- * certainly a typo or a system that was never scheduled; without this warning
149
- * the constraint vanishes and the system runs in insertion-order tiebreak as
150
- * if unconstrained, with nothing to distinguish mistake from intent. Compiled
151
- * out of production builds by the `DEV` guards at the call sites.
152
- */
153
- private warnDroppedEdge;
120
+ * undeclared resource, or attempts any mutation, throws. */
121
+ private _evalConditions;
122
+ /** Sort one phase and cache its plan on the phase. Cold: the drive reads
123
+ * `phase.plan` and only lands here when an add or a remove nulled it. */
124
+ private _buildPlan;
154
125
  }
155
126
  //# sourceMappingURL=schedule.d.ts.map