@oasys/oecs 0.5.4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/CHANGELOG.md +1223 -266
  2. package/README.md +217 -112
  3. package/dist/core/ecs/access_check.d.cts +29 -29
  4. package/dist/core/ecs/access_check.d.ts +29 -29
  5. package/dist/core/ecs/access_check.d.ts.map +1 -1
  6. package/dist/core/ecs/archetype.d.cts +217 -209
  7. package/dist/core/ecs/archetype.d.ts +217 -209
  8. package/dist/core/ecs/archetype.d.ts.map +1 -1
  9. package/dist/core/ecs/archetype_closure.d.cts +23 -0
  10. package/dist/core/ecs/archetype_closure.d.ts +23 -0
  11. package/dist/core/ecs/archetype_closure.d.ts.map +1 -0
  12. package/dist/core/ecs/archetype_graph.d.cts +33 -33
  13. package/dist/core/ecs/archetype_graph.d.ts +33 -33
  14. package/dist/core/ecs/archetype_graph.d.ts.map +1 -1
  15. package/dist/core/ecs/archetype_types.d.cts +55 -0
  16. package/dist/core/ecs/archetype_types.d.ts +55 -0
  17. package/dist/core/ecs/archetype_types.d.ts.map +1 -0
  18. package/dist/core/ecs/change_feed.d.cts +53 -0
  19. package/dist/core/ecs/change_feed.d.ts +53 -0
  20. package/dist/core/ecs/change_feed.d.ts.map +1 -0
  21. package/dist/core/ecs/changed_query.d.cts +36 -0
  22. package/dist/core/ecs/changed_query.d.ts +36 -0
  23. package/dist/core/ecs/changed_query.d.ts.map +1 -0
  24. package/dist/core/ecs/chunk_columns.d.cts +49 -0
  25. package/dist/core/ecs/chunk_columns.d.ts +49 -0
  26. package/dist/core/ecs/chunk_columns.d.ts.map +1 -0
  27. package/dist/core/ecs/command_log.d.cts +26 -26
  28. package/dist/core/ecs/command_log.d.ts +26 -26
  29. package/dist/core/ecs/command_log.d.ts.map +1 -1
  30. package/dist/core/ecs/component.d.cts +43 -42
  31. package/dist/core/ecs/component.d.ts +43 -42
  32. package/dist/core/ecs/component.d.ts.map +1 -1
  33. package/dist/core/ecs/component_registry.d.cts +53 -0
  34. package/dist/core/ecs/component_registry.d.ts +53 -0
  35. package/dist/core/ecs/component_registry.d.ts.map +1 -0
  36. package/dist/core/ecs/compute_backend.d.cts +18 -7
  37. package/dist/core/ecs/compute_backend.d.ts +18 -7
  38. package/dist/core/ecs/compute_backend.d.ts.map +1 -1
  39. package/dist/core/ecs/deferred_commands.d.cts +15 -14
  40. package/dist/core/ecs/deferred_commands.d.ts +15 -14
  41. package/dist/core/ecs/deferred_commands.d.ts.map +1 -1
  42. package/dist/core/ecs/dispatch_trace.d.cts +32 -31
  43. package/dist/core/ecs/dispatch_trace.d.ts +32 -31
  44. package/dist/core/ecs/dispatch_trace.d.ts.map +1 -1
  45. package/dist/core/ecs/ecs.d.cts +289 -270
  46. package/dist/core/ecs/ecs.d.ts +289 -270
  47. package/dist/core/ecs/ecs.d.ts.map +1 -1
  48. package/dist/core/ecs/ecs_memory.d.cts +134 -136
  49. package/dist/core/ecs/ecs_memory.d.ts +134 -136
  50. package/dist/core/ecs/ecs_memory.d.ts.map +1 -1
  51. package/dist/core/ecs/ecs_options.d.cts +89 -0
  52. package/dist/core/ecs/ecs_options.d.ts +89 -0
  53. package/dist/core/ecs/ecs_options.d.ts.map +1 -0
  54. package/dist/core/ecs/entity.d.cts +4 -4
  55. package/dist/core/ecs/entity.d.ts +4 -4
  56. package/dist/core/ecs/entity_allocator.d.cts +20 -18
  57. package/dist/core/ecs/entity_allocator.d.ts +20 -18
  58. package/dist/core/ecs/entity_allocator.d.ts.map +1 -1
  59. package/dist/core/ecs/event.d.cts +36 -22
  60. package/dist/core/ecs/event.d.ts +36 -22
  61. package/dist/core/ecs/event.d.ts.map +1 -1
  62. package/dist/core/ecs/facades.d.cts +12 -126
  63. package/dist/core/ecs/facades.d.ts +12 -126
  64. package/dist/core/ecs/facades.d.ts.map +1 -1
  65. package/dist/core/ecs/frame_stepper.d.cts +12 -12
  66. package/dist/core/ecs/frame_stepper.d.ts +12 -12
  67. package/dist/core/ecs/frame_stepper.d.ts.map +1 -1
  68. package/dist/core/ecs/frame_trace.d.cts +32 -32
  69. package/dist/core/ecs/frame_trace.d.ts +32 -32
  70. package/dist/core/ecs/frame_trace.d.ts.map +1 -1
  71. package/dist/core/ecs/host_commands.d.cts +103 -85
  72. package/dist/core/ecs/host_commands.d.ts +103 -85
  73. package/dist/core/ecs/host_commands.d.ts.map +1 -1
  74. package/dist/core/ecs/index.d.cts +21 -11
  75. package/dist/core/ecs/index.d.ts +21 -11
  76. package/dist/core/ecs/index.d.ts.map +1 -1
  77. package/dist/core/ecs/observer.d.cts +39 -120
  78. package/dist/core/ecs/observer.d.ts +39 -120
  79. package/dist/core/ecs/observer.d.ts.map +1 -1
  80. package/dist/core/ecs/phase.d.cts +79 -0
  81. package/dist/core/ecs/phase.d.ts +79 -0
  82. package/dist/core/ecs/phase.d.ts.map +1 -0
  83. package/dist/core/ecs/plugin.d.cts +125 -0
  84. package/dist/core/ecs/plugin.d.ts +125 -0
  85. package/dist/core/ecs/plugin.d.ts.map +1 -0
  86. package/dist/core/ecs/plugin_slots.d.cts +26 -0
  87. package/dist/core/ecs/plugin_slots.d.ts +26 -0
  88. package/dist/core/ecs/plugin_slots.d.ts.map +1 -0
  89. package/dist/core/ecs/query.d.cts +208 -578
  90. package/dist/core/ecs/query.d.ts +208 -578
  91. package/dist/core/ecs/query.d.ts.map +1 -1
  92. package/dist/core/ecs/query_cache.d.cts +130 -0
  93. package/dist/core/ecs/query_cache.d.ts +130 -0
  94. package/dist/core/ecs/query_cache.d.ts.map +1 -0
  95. package/dist/core/ecs/query_registry.d.cts +47 -0
  96. package/dist/core/ecs/query_registry.d.ts +47 -0
  97. package/dist/core/ecs/query_registry.d.ts.map +1 -0
  98. package/dist/core/ecs/query_terms.d.cts +126 -0
  99. package/dist/core/ecs/query_terms.d.ts +126 -0
  100. package/dist/core/ecs/query_terms.d.ts.map +1 -0
  101. package/dist/core/ecs/ref.d.cts +100 -39
  102. package/dist/core/ecs/ref.d.ts +100 -39
  103. package/dist/core/ecs/ref.d.ts.map +1 -1
  104. package/dist/core/ecs/relation.d.cts +101 -182
  105. package/dist/core/ecs/relation.d.ts +101 -182
  106. package/dist/core/ecs/relation.d.ts.map +1 -1
  107. package/dist/core/ecs/resource.d.cts +13 -13
  108. package/dist/core/ecs/resource.d.ts +13 -13
  109. package/dist/core/ecs/resource_registry.d.cts +5 -5
  110. package/dist/core/ecs/resource_registry.d.ts +5 -5
  111. package/dist/core/ecs/resource_registry.d.ts.map +1 -1
  112. package/dist/core/ecs/row_kinds.d.cts +24 -0
  113. package/dist/core/ecs/row_kinds.d.ts +24 -0
  114. package/dist/core/ecs/row_kinds.d.ts.map +1 -0
  115. package/dist/core/ecs/run_condition.d.cts +23 -23
  116. package/dist/core/ecs/run_condition.d.ts +23 -23
  117. package/dist/core/ecs/run_condition.d.ts.map +1 -1
  118. package/dist/core/ecs/schedule.d.cts +91 -120
  119. package/dist/core/ecs/schedule.d.ts +91 -120
  120. package/dist/core/ecs/schedule.d.ts.map +1 -1
  121. package/dist/core/ecs/schedule_plan.d.cts +33 -0
  122. package/dist/core/ecs/schedule_plan.d.ts +33 -0
  123. package/dist/core/ecs/schedule_plan.d.ts.map +1 -0
  124. package/dist/core/ecs/snapshot.d.cts +77 -0
  125. package/dist/core/ecs/snapshot.d.ts +77 -0
  126. package/dist/core/ecs/snapshot.d.ts.map +1 -0
  127. package/dist/core/ecs/snapshot_mount.d.cts +42 -0
  128. package/dist/core/ecs/snapshot_mount.d.ts +42 -0
  129. package/dist/core/ecs/snapshot_mount.d.ts.map +1 -0
  130. package/dist/core/ecs/sparse_store.d.cts +108 -51
  131. package/dist/core/ecs/sparse_store.d.ts +108 -51
  132. package/dist/core/ecs/sparse_store.d.ts.map +1 -1
  133. package/dist/core/ecs/store.d.cts +527 -473
  134. package/dist/core/ecs/store.d.ts +527 -473
  135. package/dist/core/ecs/store.d.ts.map +1 -1
  136. package/dist/core/ecs/store_layout_listener.d.cts +6 -6
  137. package/dist/core/ecs/store_layout_listener.d.ts +6 -6
  138. package/dist/core/ecs/store_types.d.cts +122 -0
  139. package/dist/core/ecs/store_types.d.ts +122 -0
  140. package/dist/core/ecs/store_types.d.ts.map +1 -0
  141. package/dist/core/ecs/system.d.cts +146 -61
  142. package/dist/core/ecs/system.d.ts +146 -61
  143. package/dist/core/ecs/system.d.ts.map +1 -1
  144. package/dist/core/ecs/system_context.d.cts +296 -0
  145. package/dist/core/ecs/system_context.d.ts +296 -0
  146. package/dist/core/ecs/system_context.d.ts.map +1 -0
  147. package/dist/core/ecs/system_set.d.cts +48 -0
  148. package/dist/core/ecs/system_set.d.ts +48 -0
  149. package/dist/core/ecs/system_set.d.ts.map +1 -0
  150. package/dist/core/ecs/utils/arrays.d.cts +15 -1
  151. package/dist/core/ecs/utils/arrays.d.ts +15 -1
  152. package/dist/core/ecs/utils/arrays.d.ts.map +1 -1
  153. package/dist/core/ecs/utils/error.d.cts +82 -6
  154. package/dist/core/ecs/utils/error.d.ts +82 -6
  155. package/dist/core/ecs/utils/error.d.ts.map +1 -1
  156. package/dist/core/ecs/utils/plugin_error.d.cts +10 -0
  157. package/dist/core/ecs/utils/plugin_error.d.ts +10 -0
  158. package/dist/core/ecs/utils/plugin_error.d.ts.map +1 -0
  159. package/dist/core/restore_errors.d.cts +30 -0
  160. package/dist/core/restore_errors.d.ts +30 -0
  161. package/dist/core/restore_errors.d.ts.map +1 -0
  162. package/dist/core/store/action_ring.d.cts +44 -44
  163. package/dist/core/store/action_ring.d.ts +44 -44
  164. package/dist/core/store/action_ring.d.ts.map +1 -1
  165. package/dist/core/store/allocator.d.cts +149 -95
  166. package/dist/core/store/allocator.d.ts +149 -95
  167. package/dist/core/store/allocator.d.ts.map +1 -1
  168. package/dist/core/store/buffer_backed_column.d.cts +17 -17
  169. package/dist/core/store/buffer_backed_column.d.ts +17 -17
  170. package/dist/core/store/buffer_backed_column.d.ts.map +1 -1
  171. package/dist/core/store/column_store.d.cts +124 -86
  172. package/dist/core/store/column_store.d.ts +124 -86
  173. package/dist/core/store/column_store.d.ts.map +1 -1
  174. package/dist/core/store/command_dispatch.d.cts +14 -15
  175. package/dist/core/store/command_dispatch.d.ts +14 -15
  176. package/dist/core/store/command_dispatch.d.ts.map +1 -1
  177. package/dist/core/store/command_ring.d.cts +36 -39
  178. package/dist/core/store/command_ring.d.ts +36 -39
  179. package/dist/core/store/command_ring.d.ts.map +1 -1
  180. package/dist/core/store/descriptor.d.cts +34 -17
  181. package/dist/core/store/descriptor.d.ts +34 -17
  182. package/dist/core/store/descriptor.d.ts.map +1 -1
  183. package/dist/core/store/entity_index.d.cts +34 -35
  184. package/dist/core/store/entity_index.d.ts +34 -35
  185. package/dist/core/store/entity_index.d.ts.map +1 -1
  186. package/dist/core/store/event_ring.d.cts +36 -38
  187. package/dist/core/store/event_ring.d.ts +36 -38
  188. package/dist/core/store/event_ring.d.ts.map +1 -1
  189. package/dist/core/store/extend.d.cts +13 -7
  190. package/dist/core/store/extend.d.ts +13 -7
  191. package/dist/core/store/extend.d.ts.map +1 -1
  192. package/dist/core/store/grow.d.cts +2 -2
  193. package/dist/core/store/grow.d.ts +2 -2
  194. package/dist/core/store/grow.d.ts.map +1 -1
  195. package/dist/core/store/header.d.cts +31 -27
  196. package/dist/core/store/header.d.ts +31 -27
  197. package/dist/core/store/header.d.ts.map +1 -1
  198. package/dist/core/store/index.d.cts +10 -10
  199. package/dist/core/store/index.d.ts +10 -10
  200. package/dist/core/store/index.d.ts.map +1 -1
  201. package/dist/core/store/layout_ops.d.cts +71 -62
  202. package/dist/core/store/layout_ops.d.ts +71 -62
  203. package/dist/core/store/layout_ops.d.ts.map +1 -1
  204. package/dist/core/store/region_table.d.cts +28 -21
  205. package/dist/core/store/region_table.d.ts +28 -21
  206. package/dist/core/store/region_table.d.ts.map +1 -1
  207. package/dist/core/store/snapshot.d.cts +31 -16
  208. package/dist/core/store/snapshot.d.ts +31 -16
  209. package/dist/core/store/snapshot.d.ts.map +1 -1
  210. package/dist/core/store/state_hash.d.cts +12 -12
  211. package/dist/core/store/state_hash.d.ts +12 -12
  212. package/dist/core/store/state_hash.d.ts.map +1 -1
  213. package/dist/core/store/store_regions.d.cts +10 -10
  214. package/dist/core/store/store_regions.d.ts +10 -10
  215. package/dist/core/store/store_regions.d.ts.map +1 -1
  216. package/dist/core/store/vendored_abi/abi.d.cts +27 -2
  217. package/dist/core/store/vendored_abi/abi.d.ts +27 -2
  218. package/dist/core/store/vendored_abi/abi.d.ts.map +1 -1
  219. package/dist/host_commands-B2KMx8O2.cjs +1 -0
  220. package/dist/host_commands-ClVPvhSa.cjs +2 -0
  221. package/dist/host_commands-CwxVQS1z.js +1524 -0
  222. package/dist/host_commands-nJvTy88E.js +1667 -0
  223. package/dist/index.cjs +1 -1
  224. package/dist/index.d.cts +15 -10
  225. package/dist/index.d.ts +15 -10
  226. package/dist/index.d.ts.map +1 -1
  227. package/dist/index.development.cjs +1 -1
  228. package/dist/index.development.js +5804 -5203
  229. package/dist/index.js +5323 -4764
  230. package/dist/internal.cjs +2 -2
  231. package/dist/internal.d.cts +5 -2
  232. package/dist/internal.d.ts +5 -2
  233. package/dist/internal.d.ts.map +1 -1
  234. package/dist/internal.development.cjs +1 -1
  235. package/dist/internal.development.js +70 -20
  236. package/dist/internal.js +138 -83
  237. package/dist/plugins/abi-D3V-QUSf.cjs +1 -0
  238. package/dist/plugins/abi-NP8pNxpd.js +42 -0
  239. package/dist/plugins/arrays-Dr_1hCjL.js +28 -0
  240. package/dist/plugins/arrays-Dt-Joc4i.cjs +1 -0
  241. package/dist/plugins/assertions-gtDVfbnQ.js +6 -0
  242. package/dist/plugins/assertions-z5GQd_bB.cjs +1 -0
  243. package/dist/{extensions → plugins}/editor/editor.d.cts +54 -54
  244. package/dist/{extensions → plugins}/editor/editor.d.ts +54 -54
  245. package/dist/plugins/editor/editor.d.ts.map +1 -0
  246. package/dist/{extensions → plugins}/editor/field_handle.d.cts +12 -12
  247. package/dist/{extensions → plugins}/editor/field_handle.d.ts +12 -12
  248. package/dist/plugins/editor/field_handle.d.ts.map +1 -0
  249. package/dist/plugins/editor/index.d.cts +22 -0
  250. package/dist/plugins/editor/index.d.ts +22 -0
  251. package/dist/plugins/editor/index.d.ts.map +1 -0
  252. package/dist/plugins/editor.cjs +1 -0
  253. package/dist/plugins/editor.d.cts +1 -0
  254. package/dist/plugins/editor.d.ts +1 -0
  255. package/dist/plugins/editor.development.cjs +1 -0
  256. package/dist/{extensions/editor/index.development.js → plugins/editor.development.js} +81 -64
  257. package/dist/{extensions/editor/index.js → plugins/editor.js} +81 -64
  258. package/dist/plugins/events/event_channel.d.cts +13 -0
  259. package/dist/plugins/events/event_channel.d.ts +13 -0
  260. package/dist/plugins/events/event_channel.d.ts.map +1 -0
  261. package/dist/plugins/events/event_registry.d.cts +22 -0
  262. package/dist/plugins/events/event_registry.d.ts +22 -0
  263. package/dist/plugins/events/event_registry.d.ts.map +1 -0
  264. package/dist/plugins/events/facade.d.cts +26 -0
  265. package/dist/plugins/events/facade.d.ts +26 -0
  266. package/dist/plugins/events/facade.d.ts.map +1 -0
  267. package/dist/plugins/events/index.d.cts +10 -0
  268. package/dist/plugins/events/index.d.ts +10 -0
  269. package/dist/plugins/events/index.d.ts.map +1 -0
  270. package/dist/plugins/events.cjs +1 -0
  271. package/dist/plugins/events.d.cts +1 -0
  272. package/dist/plugins/events.d.ts +1 -0
  273. package/dist/plugins/events.development.cjs +1 -0
  274. package/dist/plugins/events.development.js +174 -0
  275. package/dist/plugins/events.js +159 -0
  276. package/dist/plugins/observers/index.d.cts +23 -0
  277. package/dist/plugins/observers/index.d.ts +23 -0
  278. package/dist/plugins/observers/index.d.ts.map +1 -0
  279. package/dist/plugins/observers/observer_registry.d.cts +101 -0
  280. package/dist/plugins/observers/observer_registry.d.ts +101 -0
  281. package/dist/plugins/observers/observer_registry.d.ts.map +1 -0
  282. package/dist/plugins/observers.cjs +1 -0
  283. package/dist/plugins/observers.d.cts +1 -0
  284. package/dist/plugins/observers.d.ts +1 -0
  285. package/dist/plugins/observers.development.cjs +1 -0
  286. package/dist/plugins/observers.development.js +431 -0
  287. package/dist/plugins/observers.js +403 -0
  288. package/dist/plugins/relation_store-BsoegrZh.js +313 -0
  289. package/dist/plugins/relation_store-DQKSnxsm.cjs +1 -0
  290. package/dist/plugins/relation_store-RBhpcE28.cjs +1 -0
  291. package/dist/plugins/relation_store-RqW5Snx6.js +328 -0
  292. package/dist/plugins/relations/builtin_relations.d.cts +48 -0
  293. package/dist/plugins/relations/builtin_relations.d.ts +48 -0
  294. package/dist/plugins/relations/builtin_relations.d.ts.map +1 -0
  295. package/dist/plugins/relations/facade.d.cts +73 -0
  296. package/dist/plugins/relations/facade.d.ts +73 -0
  297. package/dist/plugins/relations/facade.d.ts.map +1 -0
  298. package/dist/plugins/relations/index.d.cts +11 -0
  299. package/dist/plugins/relations/index.d.ts +11 -0
  300. package/dist/plugins/relations/index.d.ts.map +1 -0
  301. package/dist/{core/ecs → plugins/relations}/relation_service.d.cts +85 -97
  302. package/dist/{core/ecs → plugins/relations}/relation_service.d.ts +85 -97
  303. package/dist/plugins/relations/relation_service.d.ts.map +1 -0
  304. package/dist/plugins/relations/relation_store.d.cts +177 -0
  305. package/dist/plugins/relations/relation_store.d.ts +177 -0
  306. package/dist/plugins/relations/relation_store.d.ts.map +1 -0
  307. package/dist/plugins/relations.cjs +1 -0
  308. package/dist/plugins/relations.d.cts +1 -0
  309. package/dist/plugins/relations.d.ts +1 -0
  310. package/dist/plugins/relations.development.cjs +1 -0
  311. package/dist/plugins/relations.development.js +603 -0
  312. package/dist/plugins/relations.js +553 -0
  313. package/dist/plugins/snapshots/index.d.cts +33 -0
  314. package/dist/plugins/snapshots/index.d.ts +33 -0
  315. package/dist/plugins/snapshots/index.d.ts.map +1 -0
  316. package/dist/plugins/snapshots/resume.d.cts +57 -0
  317. package/dist/plugins/snapshots/resume.d.ts +57 -0
  318. package/dist/plugins/snapshots/resume.d.ts.map +1 -0
  319. package/dist/plugins/snapshots/snapshot_service.d.cts +59 -0
  320. package/dist/plugins/snapshots/snapshot_service.d.ts +59 -0
  321. package/dist/plugins/snapshots/snapshot_service.d.ts.map +1 -0
  322. package/dist/plugins/snapshots.cjs +1 -0
  323. package/dist/plugins/snapshots.d.cts +1 -0
  324. package/dist/plugins/snapshots.d.ts +1 -0
  325. package/dist/plugins/snapshots.development.cjs +1 -0
  326. package/dist/plugins/snapshots.development.js +737 -0
  327. package/dist/plugins/snapshots.js +737 -0
  328. package/dist/plugins/solid/index.d.cts +8 -0
  329. package/dist/plugins/solid/index.d.ts +8 -0
  330. package/dist/plugins/solid/index.d.ts.map +1 -0
  331. package/dist/plugins/solid/solid.d.cts +97 -0
  332. package/dist/plugins/solid/solid.d.ts +97 -0
  333. package/dist/plugins/solid/solid.d.ts.map +1 -0
  334. package/dist/plugins/solid.cjs +1 -0
  335. package/dist/plugins/solid.d.cts +1 -0
  336. package/dist/plugins/solid.d.ts +1 -0
  337. package/dist/plugins/solid.development.cjs +1 -0
  338. package/dist/plugins/solid.development.js +319 -0
  339. package/dist/plugins/solid.js +319 -0
  340. package/dist/plugins/workers/index.d.cts +75 -0
  341. package/dist/plugins/workers/index.d.ts +75 -0
  342. package/dist/plugins/workers/index.d.ts.map +1 -0
  343. package/dist/plugins/workers/node_threads.d.cts +25 -0
  344. package/dist/plugins/workers/node_threads.d.ts +25 -0
  345. package/dist/plugins/workers/node_threads.d.ts.map +1 -0
  346. package/dist/plugins/workers/plan.d.cts +61 -0
  347. package/dist/plugins/workers/plan.d.ts +61 -0
  348. package/dist/plugins/workers/plan.d.ts.map +1 -0
  349. package/dist/plugins/workers/pool.d.cts +144 -0
  350. package/dist/plugins/workers/pool.d.ts +144 -0
  351. package/dist/plugins/workers/pool.d.ts.map +1 -0
  352. package/dist/plugins/workers/protocol.d.cts +112 -0
  353. package/dist/plugins/workers/protocol.d.ts +112 -0
  354. package/dist/plugins/workers/protocol.d.ts.map +1 -0
  355. package/dist/plugins/workers/worker_bind.d.cts +64 -0
  356. package/dist/plugins/workers/worker_bind.d.ts +64 -0
  357. package/dist/plugins/workers/worker_bind.d.ts.map +1 -0
  358. package/dist/plugins/workers/worker_loop.d.cts +14 -0
  359. package/dist/plugins/workers/worker_loop.d.ts +14 -0
  360. package/dist/plugins/workers/worker_loop.d.ts.map +1 -0
  361. package/dist/plugins/workers.cjs +1 -0
  362. package/dist/plugins/workers.d.cts +1 -0
  363. package/dist/plugins/workers.d.ts +1 -0
  364. package/dist/plugins/workers.development.cjs +1 -0
  365. package/dist/plugins/workers.development.js +596 -0
  366. package/dist/plugins/workers.js +474 -0
  367. package/dist/primitives.cjs +1 -1
  368. package/dist/primitives.d.cts +4 -4
  369. package/dist/primitives.d.ts +4 -4
  370. package/dist/primitives.development.cjs +1 -1
  371. package/dist/primitives.development.js +66 -22
  372. package/dist/primitives.js +66 -22
  373. package/dist/shared-BKl12xF1.js +132 -0
  374. package/dist/shared-Dk-pACZT.cjs +1 -0
  375. package/dist/shared.cjs +1 -1
  376. package/dist/shared.d.cts +7 -7
  377. package/dist/shared.d.ts +7 -7
  378. package/dist/shared.d.ts.map +1 -1
  379. package/dist/shared.development.cjs +1 -1
  380. package/dist/shared.development.js +4 -3
  381. package/dist/shared.js +4 -3
  382. package/dist/topological_sort-Cc_yXqPT.js +346 -0
  383. package/dist/topological_sort-vp1imU6D.cjs +1 -0
  384. package/dist/type_primitives/assertions.d.cts +12 -16
  385. package/dist/type_primitives/assertions.d.ts +12 -16
  386. package/dist/type_primitives/assertions.d.ts.map +1 -1
  387. package/dist/type_primitives/binary_heap/binary_heap.d.cts +2 -6
  388. package/dist/type_primitives/binary_heap/binary_heap.d.ts +2 -6
  389. package/dist/type_primitives/binary_heap/binary_heap.d.ts.map +1 -1
  390. package/dist/type_primitives/bitset/bitset.d.cts +7 -11
  391. package/dist/type_primitives/bitset/bitset.d.ts +7 -11
  392. package/dist/type_primitives/bitset/bitset.d.ts.map +1 -1
  393. package/dist/type_primitives/brand.d.cts +2 -7
  394. package/dist/type_primitives/brand.d.ts +2 -7
  395. package/dist/type_primitives/brand.d.ts.map +1 -1
  396. package/dist/type_primitives/error.d.cts +1 -2
  397. package/dist/type_primitives/error.d.ts +1 -2
  398. package/dist/type_primitives/error.d.ts.map +1 -1
  399. package/dist/type_primitives/index.d.cts +1 -1
  400. package/dist/type_primitives/index.d.ts +1 -1
  401. package/dist/type_primitives/sparse_map/sparse_map.d.cts +3 -7
  402. package/dist/type_primitives/sparse_map/sparse_map.d.ts +3 -7
  403. package/dist/type_primitives/sparse_map/sparse_map.d.ts.map +1 -1
  404. package/dist/type_primitives/sparse_set/sparse_set.d.cts +2 -6
  405. package/dist/type_primitives/sparse_set/sparse_set.d.ts +2 -6
  406. package/dist/type_primitives/sparse_set/sparse_set.d.ts.map +1 -1
  407. package/dist/type_primitives/topological_sort/topological_sort.d.cts +1 -5
  408. package/dist/type_primitives/topological_sort/topological_sort.d.ts +1 -5
  409. package/dist/type_primitives/topological_sort/topological_sort.d.ts.map +1 -1
  410. package/dist/type_primitives/typed_arrays/typed_arrays.d.cts +16 -15
  411. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +16 -15
  412. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts.map +1 -1
  413. package/dist/utils/error.d.ts.map +1 -1
  414. package/dist/version.d.cts +3 -3
  415. package/dist/version.d.ts +3 -3
  416. package/dist/worker.cjs +1 -0
  417. package/dist/worker.d.cts +17 -0
  418. package/dist/worker.d.ts +17 -0
  419. package/dist/worker.d.ts.map +1 -0
  420. package/dist/worker.development.cjs +1 -0
  421. package/dist/worker.development.js +253 -0
  422. package/dist/worker.js +253 -0
  423. package/package.json +363 -191
  424. package/dist/core/ecs/builtin_relations.d.cts +0 -43
  425. package/dist/core/ecs/builtin_relations.d.ts +0 -43
  426. package/dist/core/ecs/builtin_relations.d.ts.map +0 -1
  427. package/dist/core/ecs/event_registry.d.cts +0 -22
  428. package/dist/core/ecs/event_registry.d.ts +0 -22
  429. package/dist/core/ecs/event_registry.d.ts.map +0 -1
  430. package/dist/core/ecs/relation_service.d.ts.map +0 -1
  431. package/dist/core/ecs/resume.d.cts +0 -85
  432. package/dist/core/ecs/resume.d.ts +0 -85
  433. package/dist/core/ecs/resume.d.ts.map +0 -1
  434. package/dist/core/ecs/snapshot_service.d.cts +0 -94
  435. package/dist/core/ecs/snapshot_service.d.ts +0 -94
  436. package/dist/core/ecs/snapshot_service.d.ts.map +0 -1
  437. package/dist/extensions/editor/editor.d.ts.map +0 -1
  438. package/dist/extensions/editor/field_handle.d.ts.map +0 -1
  439. package/dist/extensions/editor/index.cjs +0 -1
  440. package/dist/extensions/editor/index.d.cts +0 -21
  441. package/dist/extensions/editor/index.d.ts +0 -21
  442. package/dist/extensions/editor/index.d.ts.map +0 -1
  443. package/dist/extensions/editor/index.development.cjs +0 -1
  444. package/dist/extensions/reactive/ecs_sync.d.cts +0 -214
  445. package/dist/extensions/reactive/ecs_sync.d.ts +0 -214
  446. package/dist/extensions/reactive/ecs_sync.d.ts.map +0 -1
  447. package/dist/extensions/reactive/index.cjs +0 -1
  448. package/dist/extensions/reactive/index.d.cts +0 -23
  449. package/dist/extensions/reactive/index.d.ts +0 -23
  450. package/dist/extensions/reactive/index.d.ts.map +0 -1
  451. package/dist/extensions/reactive/index.development.cjs +0 -1
  452. package/dist/extensions/reactive/index.development.js +0 -215
  453. package/dist/extensions/reactive/index.js +0 -215
  454. package/dist/extensions/solid/index.cjs +0 -1
  455. package/dist/extensions/solid/index.d.cts +0 -6
  456. package/dist/extensions/solid/index.d.ts +0 -6
  457. package/dist/extensions/solid/index.d.ts.map +0 -1
  458. package/dist/extensions/solid/index.development.cjs +0 -1
  459. package/dist/extensions/solid/index.development.js +0 -40
  460. package/dist/extensions/solid/index.js +0 -36
  461. package/dist/extensions/solid/kernel_solid.d.cts +0 -45
  462. package/dist/extensions/solid/kernel_solid.d.ts +0 -45
  463. package/dist/extensions/solid/kernel_solid.d.ts.map +0 -1
  464. package/dist/host_commands-BlR3oZ3x.js +0 -2406
  465. package/dist/host_commands-C2cpU3yC.cjs +0 -1
  466. package/dist/internal-BoxWl4dG.js +0 -2565
  467. package/dist/internal-CGBEwfeB.cjs +0 -2
  468. package/dist/interop-CT-REx0W.cjs +0 -1
  469. package/dist/interop-CcY6ASQc.js +0 -18
  470. package/dist/interop-DqxleBo7.js +0 -18
  471. package/dist/interop-T1HZ-Dpa.cjs +0 -1
  472. package/dist/kernel-Cz2Kxlwl.js +0 -240
  473. package/dist/kernel-DgyrLFjW.js +0 -227
  474. package/dist/kernel-sw7ScKWu.cjs +0 -1
  475. package/dist/kernel-yWV3XnAb.cjs +0 -1
  476. package/dist/reactive/array.d.cts +0 -24
  477. package/dist/reactive/array.d.ts +0 -24
  478. package/dist/reactive/array.d.ts.map +0 -1
  479. package/dist/reactive/index.cjs +0 -1
  480. package/dist/reactive/index.d.cts +0 -11
  481. package/dist/reactive/index.d.ts +0 -11
  482. package/dist/reactive/index.d.ts.map +0 -1
  483. package/dist/reactive/index.development.cjs +0 -1
  484. package/dist/reactive/index.development.js +0 -18
  485. package/dist/reactive/index.js +0 -18
  486. package/dist/reactive/interop.d.cts +0 -19
  487. package/dist/reactive/interop.d.ts +0 -19
  488. package/dist/reactive/interop.d.ts.map +0 -1
  489. package/dist/reactive/kernel.d.cts +0 -73
  490. package/dist/reactive/kernel.d.ts +0 -73
  491. package/dist/reactive/kernel.d.ts.map +0 -1
  492. package/dist/reactive/map.d.cts +0 -16
  493. package/dist/reactive/map.d.ts +0 -16
  494. package/dist/reactive/map.d.ts.map +0 -1
  495. package/dist/reactive/shallow.d.cts +0 -11
  496. package/dist/reactive/shallow.d.ts +0 -11
  497. package/dist/reactive/shallow.d.ts.map +0 -1
  498. package/dist/reactive/struct.d.cts +0 -10
  499. package/dist/reactive/struct.d.ts +0 -10
  500. package/dist/reactive/struct.d.ts.map +0 -1
  501. package/dist/shallow-Bs39EPh1.js +0 -150
  502. package/dist/shallow-C5YmTbtb.cjs +0 -1
  503. package/dist/shallow-CiFC70Dz.js +0 -159
  504. package/dist/shallow-DQ8aG51_.cjs +0 -1
  505. package/dist/shared-B4v0L1cw.js +0 -109
  506. package/dist/shared-DU78k0pU.cjs +0 -1
  507. package/dist/topological_sort-BDvEyb9W.cjs +0 -1
  508. package/dist/topological_sort-DK6EjpWa.js +0 -135
  509. package/dist/typed_arrays-D3NmwtCG.cjs +0 -1
  510. package/dist/typed_arrays-DIVwVy5_.js +0 -258
@@ -1,110 +1,14 @@
1
1
  import { Store } from './store.js';
2
- import { EntityID } from './entity.js';
3
- import { OnDeleteTarget, RelationDef, RelationOptions } from './relation.js';
4
2
  import { ResourceKey } from './resource.js';
5
- import { EventFieldsCover, EventKey, EventReader, EventShape, SignalKey } from './event.js';
6
- /** Relations sparse `(relation, target)` pairs and hierarchy traversal.
7
- * Add/remove/re-target cause no archetype
8
- * transition; ops are immediate and safe mid-tick. Traversal and wildcard
9
- * reads are cold-path. */
10
- export declare class ECSRelations {
11
- private readonly store;
12
- /** @internal constructed by `ECS`. */
13
- constructor(store: Store);
14
- /** Register a relation kind. Exclusive (default) stores one target per
15
- * source; `{ multi: true }` stores a target set per source.
16
- * `{ onDeleteTarget: "delete" | "clear" | "orphan" }` selects target-death
17
- * cleanup (default `orphan`).
18
- *
19
- * The overloads stamp the CARDINALITY into the handle type, exactly like
20
- * the flat `registerRelation`:
21
- * the exclusive-only surfaces (`targetOf`, `ancestorsOf`/`rootOf`/
22
- * `cascadeOf`, `Query.hierarchy`) accept only `RelationDef<"exclusive">`,
23
- * so passing a `{ multi: true }` relation is a compile error. A
24
- * dynamically-built options value falls to the erased overload and keeps
25
- * the runtime check as its only guard. */
26
- register(opts?: {
27
- readonly exclusive?: true;
28
- readonly multi?: false;
29
- readonly onDeleteTarget?: OnDeleteTarget;
30
- }): RelationDef<"exclusive">;
31
- register(opts: {
32
- readonly multi: true;
33
- readonly exclusive?: false;
34
- readonly onDeleteTarget?: OnDeleteTarget;
35
- }): RelationDef<"multi">;
36
- register(opts?: RelationOptions): RelationDef;
37
- /** Count of registered relations. */
38
- get count(): number;
39
- /** Add a `(R, tgt)` pair to `src`. Exclusive replaces the existing target;
40
- * multi adds to the set. No archetype transition. */
41
- add(src: EntityID, def: RelationDef, tgt: EntityID): this;
42
- /** Remove a `(R, tgt)` pair from `src`. For multi, omitting `tgt` removes
43
- * all of `src`'s targets. No archetype transition. */
44
- remove(src: EntityID, def: RelationDef, tgt?: EntityID): this;
45
- /** Whether `src` holds any pair under `R`. */
46
- has(src: EntityID, def: RelationDef): boolean;
47
- /** The single target of `src` under an exclusive relation, or `undefined`. */
48
- targetOf(src: EntityID, def: RelationDef<"exclusive">): EntityID | undefined;
49
- /** All targets of `src` under `R`, ascending by id. */
50
- targetsOf(src: EntityID, def: RelationDef): EntityID[];
51
- /** Sources pointing at `tgt` under `R` (the reverse index), ascending by id.
52
- * `(entity, def)` order, matching `targetOf` / `targetsOf`. */
53
- sourcesOf(tgt: EntityID, def: RelationDef): EntityID[];
54
- /** All `(source, target)` pairs of relation `R` — the `(R, *)` wildcard.
55
- * Sources in canonical entity-index order. Cold path. */
56
- pairsOf(def: RelationDef): readonly (readonly [EntityID, EntityID])[];
57
- /** Every `(relation, source)` pointing at `tgt`, across all relation kinds —
58
- * the `(*, T)` wildcard. Ordered by relation id then source id. */
59
- sourcesOfAny(tgt: EntityID): readonly (readonly [RelationDef, EntityID])[];
60
- /** Walk relation `R` up from `src` to its chain root, returning
61
- * `[src, parent, …, root]` (nearest-ancestor-first). Exclusive only. */
62
- ancestorsOf(src: EntityID, def: RelationDef<"exclusive">): EntityID[];
63
- /** The root of `src`'s `R`-chain (`src` itself when it has no target).
64
- * Exclusive only. */
65
- rootOf(src: EntityID, def: RelationDef<"exclusive">): EntityID;
66
- /** Walk relation `R` down from `root` over the reverse index, returning the
67
- * subtree (including `root`) breadth-first — parents before children (the
68
- * `cascade` order). Exclusive only. */
69
- cascadeOf(root: EntityID, def: RelationDef<"exclusive">): EntityID[];
70
- /** Reclaim relation reverse-index memory: drop every reverse entry whose
71
- * target has been destroyed, returning the total dropped. Purely
72
- * cold-path, no observable state change — call at scene/snapshot
73
- * boundaries. */
74
- compact(): number;
75
- }
76
- /** Event channels and signals. Emit during one `update()`, visible to every
77
- * later system in that call, cleared before the next. System-side reads and
78
- * emits go through `ctx` — this facade is the HOST-side surface. */
79
- export declare class ECSEvents {
80
- private readonly store;
81
- /** @internal constructed by `ECS`. */
82
- constructor(store: Store);
83
- /** Register an event channel at world setup, before anything emits on it.
84
- * `fields` must name EVERY schema key — an under-registered channel would
85
- * silently drop the missing fields at emit (see `EventFieldsCover`).
86
- *
87
- * @example
88
- * const Damaged = eventKey<{ target: EntityID; amount: number }>("Damaged");
89
- * ecs.events.register(Damaged, ["target", "amount"]);
90
- * ecs.events.emit(Damaged, { target: e, amount: 10 }); // or ctx.emit inside a system
91
- */
92
- register<S extends EventShape<S>, const F extends readonly (keyof S & string)[]>(key: EventKey<S>, fields: F & EventFieldsCover<S, F>): void;
93
- /** Register a signal (empty-payload event channel). */
94
- registerSignal(key: SignalKey): void;
95
- emit(key: SignalKey): void;
96
- emit<S extends EventShape<S>>(key: EventKey<S>, values: NoInfer<S>): void;
97
- read<S extends EventShape<S>>(key: EventKey<S>): EventReader<S>;
98
- }
99
- /** World resources — singleton values keyed by `ResourceKey<T>`. Runtime
100
- * mutations (`set` / `remove`) are access-checked as resource writes inside
101
- * a system span; `register` is a one-time world-setup op. */
3
+ /** World resources, singleton values keyed by `ResourceKey<T>`. Runtime
4
+ * mutations (`set` and `remove`) are access-checked as resource writes inside
5
+ * a system span. `register` is a one-time world-setup op. */
102
6
  export declare class ECSResources {
103
- private readonly store;
7
+ private readonly _store;
104
8
  /** @internal constructed by `ECS`. */
105
9
  constructor(store: Store);
106
- /** Register a resource at world setup. Reading/writing an unregistered
107
- * key throws (fail-closed) registration is the explicit "this world has
10
+ /** Register a resource at world setup. Reading and writing an unregistered
11
+ * key throws (fail-closed), registration is the explicit "this world has
108
12
  * this singleton" declaration, not a lazy default.
109
13
  *
110
14
  * @example
@@ -115,44 +19,26 @@ export declare class ECSResources {
115
19
  register<T>(key: ResourceKey<T>, value: NoInfer<T>): void;
116
20
  get<T>(key: ResourceKey<T>): T;
117
21
  set<T>(key: ResourceKey<T>, value: NoInfer<T>): void;
118
- /** Drop a resource from the world. Access-checked as a *write*;
22
+ /** Drop a resource from the world. Access-checked as a *write*, and it
119
23
  * fails closed on a missing key. Afterwards the key is free to `register`
120
- * again the present → absent → present lifecycle. */
24
+ * again, the present → absent → present lifecycle. */
121
25
  remove<T>(key: ResourceKey<T>): void;
122
26
  has<T>(key: ResourceKey<T>): boolean;
123
27
  }
124
- /** The determinism surface: world snapshot/resume and the
28
+ /** The determinism surface: world snapshot and resume and the
125
29
  * canonical state digest. Every member except `deterministic` throws
126
30
  * `DETERMINISM_DISABLED` unless the world was constructed with
127
- * `{ deterministic: true }`. All cold-path take captures at tick
31
+ * `{ deterministic: true }`. All cold-path, take captures at tick
128
32
  * boundaries (between `update()`s). */
129
33
  export declare class ECSSnapshots {
130
- private readonly store;
34
+ protected readonly _store: Store;
131
35
  /** @internal constructed by `ECS`. */
132
36
  constructor(store: Store);
133
37
  /** Whether the determinism surface is enabled. */
134
38
  get deterministic(): boolean;
135
- /** FNV-1a 32 digest over every archetype's live rows in id order the
39
+ /** FNV-1a 32 digest over every archetype's live rows in id order, the
136
40
  * canonical "live ECS state digest". Per-call cost scales with live
137
41
  * entity count, not SAB capacity. */
138
42
  stateHash(): number;
139
- /** Capture the full live world (dense + sparse/relations + host-side
140
- * bookkeeping) to one self-contained byte buffer that `restore` can mount
141
- * back onto a live, ticking world. v1 does NOT capture resources,
142
- * events, or change-detection baselines. */
143
- capture(): Uint8Array;
144
- /** Mount a `capture()` buffer onto this live world and keep ticking.
145
- * Fails closed on a malformed frame or registration mismatch BEFORE
146
- * mutating any live state. Requires a matching archetype set + column
147
- * layout (prewarm so the set is stable). */
148
- restore(bytes: Uint8Array): void;
149
- /** Serialize the sparse stores + relations to a self-contained buffer —
150
- * the sparse half of a world snapshot, canonical entity-index order.
151
- * Pairs with `restoreSparse`. */
152
- captureSparse(): Uint8Array;
153
- /** Repopulate the sparse stores + relation indices from `captureSparse`
154
- * bytes. Sparse components must already be registered in the same order;
155
- * throws `SparseRestoreError` on a shape or identity mismatch. */
156
- restoreSparse(bytes: Uint8Array): void;
157
43
  }
158
44
  //# sourceMappingURL=facades.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"facades.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/facades.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAGX,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,UAAU,EACV,SAAS,EACT,MAAM,SAAS,CAAC;AAMjB;;;0BAG0B;AAC1B,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,sCAAsC;gBAC1B,KAAK,EAAE,KAAK;IAIxB;;;;;;;;;;;8CAW0C;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;QAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QACvB,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;KACzC,GAAG,WAAW,CAAC,WAAW,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE;QACrB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;QACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;QAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;KACzC,GAAG,WAAW,CAAC,OAAO,CAAC;IACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,WAAW;IAKpD,qCAAqC;IACrC,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED;yDACqD;IAC9C,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;IAKhE;0DACsD;IAC/C,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI;IAKpE,8CAA8C;IACvC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO;IAIpD,8EAA8E;IACvE,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,GAAG,SAAS;IAInF,uDAAuD;IAChD,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,EAAE;IAI7D;mEAC+D;IACxD,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,EAAE;IAI7D;6DACyD;IAClD,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE;IAI5E;uEACmE;IAC5D,YAAY,CAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,EAAE;IAIjF;4EACwE;IACjE,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,EAAE;IAI5E;yBACqB;IACd,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ;IAIrE;;2CAEuC;IAChC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,EAAE;IAI3E;;;qBAGiB;IACV,OAAO,IAAI,MAAM;CAGxB;AAED;;oEAEoE;AACpE,qBAAa,SAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,sCAAsC;gBAC1B,KAAK,EAAE,KAAK;IAIxB;;;;;;;;OAQG;IACI,QAAQ,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,EACrF,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAChB,MAAM,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAChC,IAAI;IAIP,uDAAuD;IAChD,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAIpC,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAC1B,IAAI,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAgBzE,IAAI,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;CAOtE;AAED;;6DAE6D;AAC7D,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,sCAAsC;gBAC1B,KAAK,EAAE,KAAK;IAIxB;;;;;;;;OAQG;IACI,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAOzD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAU9B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAU3D;;2DAEuD;IAChD,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAUpC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;CAG3C;AAED;;;;uCAIuC;AACvC,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,sCAAsC;gBAC1B,KAAK,EAAE,KAAK;IAIxB,kDAAkD;IAClD,IAAW,aAAa,IAAI,OAAO,CAElC;IAED;;yCAEqC;IAC9B,SAAS,IAAI,MAAM;IAI1B;;;gDAG4C;IACrC,OAAO,IAAI,UAAU;IAI5B;;;gDAG4C;IACrC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAIvC;;qCAEiC;IAC1B,aAAa,IAAI,UAAU;IAIlC;;sEAEkE;IAC3D,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAG7C"}
1
+ {"version":3,"file":"facades.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/facades.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C;;6DAE6D;AAC7D,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,sCAAsC;gBAC1B,KAAK,EAAE,KAAK;IAIxB;;;;;;;;OAQG;IACI,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAOzD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAU9B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAU3D;;0DAEsD;IAC/C,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAUpC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;CAG3C;AAED;;;;uCAIuC;AACvC,qBAAa,YAAY;IAGxB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACjC,sCAAsC;gBAC1B,KAAK,EAAE,KAAK;IAIxB,kDAAkD;IAClD,IAAW,aAAa,IAAI,OAAO,CAElC;IAED;;yCAEqC;IAC9B,SAAS,IAAI,MAAM;CAG1B"}
@@ -6,11 +6,11 @@ export interface FrameStepperOptions {
6
6
  /** Delta used by `step()` when no dt is supplied, in seconds. Default 1/60. */
7
7
  readonly fixedDt?: number;
8
8
  /** Clamp browser-frame deltas before forwarding them to `ECS.update()`, in
9
- * seconds. Default 0.25. A backgrounded tab suspends rAF; the first frame
9
+ * seconds. Default 0.25. A backgrounded tab suspends rAF. The first frame
10
10
  * after it resumes carries the whole suspended interval as one delta, and
11
11
  * without the clamp that lands in `update()`'s accumulator as a giant
12
12
  * catch-up burst (bounded by `maxFixedSteps`, but still a burst). Manual
13
- * `step()` deltas are deliberately not clamped an explicit dt is trusted. */
13
+ * `step()` deltas are deliberately not clamped, an explicit dt is trusted. */
14
14
  readonly maxDt?: number;
15
15
  /** Dependency injection for tests or non-browser hosts. Defaults to `requestAnimationFrame`. */
16
16
  readonly requestFrame?: RequestFrame;
@@ -23,16 +23,16 @@ export interface FrameStepperOptions {
23
23
  * Small host-side controller for manual ECS frame stepping.
24
24
  *
25
25
  * `ECS.update(dt)` is already the authoritative "run one frame" primitive.
26
- * This class wraps it with pause/play controls for browser loops and an explicit
26
+ * This class wraps it with pause and play controls for browser loops and an explicit
27
27
  * `step()` method for debuggers, tests, editor tools, and rollback playback.
28
28
  */
29
29
  export declare class FrameStepper {
30
- private readonly ecs;
31
- private readonly requestFrame?;
32
- private readonly cancelFrame?;
33
- private frameHandle;
34
- private lastTimestampMs;
35
- private running;
30
+ private readonly _ecs;
31
+ private readonly _requestFrame?;
32
+ private readonly _cancelFrame?;
33
+ private _frameHandle;
34
+ private _lastTimestampMs;
35
+ private _running;
36
36
  private _fixedDt;
37
37
  private _maxDt;
38
38
  constructor(ecs: ECS, options?: FrameStepperOptions);
@@ -45,14 +45,14 @@ export declare class FrameStepper {
45
45
  step(dt?: number): void;
46
46
  /** Advance several fixed-size frames, useful for replaying a paused sim. */
47
47
  stepFrames(count: number, dt?: number): void;
48
- /** Start ticking with `requestAnimationFrame`; no-op when already running. */
48
+ /** Start ticking with `requestAnimationFrame`. No-op when already running. */
49
49
  play(): void;
50
50
  /** Stop the automatic frame loop. Manual `step()` still works while paused. */
51
51
  pause(): void;
52
52
  toggle(): void;
53
53
  dispose(): void;
54
- private scheduleNextFrame;
55
- private readonly onFrame;
54
+ private _requestNextFrame;
55
+ private readonly _onFrame;
56
56
  }
57
57
  export {};
58
58
  //# sourceMappingURL=frame_stepper.d.ts.map
@@ -6,11 +6,11 @@ export interface FrameStepperOptions {
6
6
  /** Delta used by `step()` when no dt is supplied, in seconds. Default 1/60. */
7
7
  readonly fixedDt?: number;
8
8
  /** Clamp browser-frame deltas before forwarding them to `ECS.update()`, in
9
- * seconds. Default 0.25. A backgrounded tab suspends rAF; the first frame
9
+ * seconds. Default 0.25. A backgrounded tab suspends rAF. The first frame
10
10
  * after it resumes carries the whole suspended interval as one delta, and
11
11
  * without the clamp that lands in `update()`'s accumulator as a giant
12
12
  * catch-up burst (bounded by `maxFixedSteps`, but still a burst). Manual
13
- * `step()` deltas are deliberately not clamped an explicit dt is trusted. */
13
+ * `step()` deltas are deliberately not clamped, an explicit dt is trusted. */
14
14
  readonly maxDt?: number;
15
15
  /** Dependency injection for tests or non-browser hosts. Defaults to `requestAnimationFrame`. */
16
16
  readonly requestFrame?: RequestFrame;
@@ -23,16 +23,16 @@ export interface FrameStepperOptions {
23
23
  * Small host-side controller for manual ECS frame stepping.
24
24
  *
25
25
  * `ECS.update(dt)` is already the authoritative "run one frame" primitive.
26
- * This class wraps it with pause/play controls for browser loops and an explicit
26
+ * This class wraps it with pause and play controls for browser loops and an explicit
27
27
  * `step()` method for debuggers, tests, editor tools, and rollback playback.
28
28
  */
29
29
  export declare class FrameStepper {
30
- private readonly ecs;
31
- private readonly requestFrame?;
32
- private readonly cancelFrame?;
33
- private frameHandle;
34
- private lastTimestampMs;
35
- private running;
30
+ private readonly _ecs;
31
+ private readonly _requestFrame?;
32
+ private readonly _cancelFrame?;
33
+ private _frameHandle;
34
+ private _lastTimestampMs;
35
+ private _running;
36
36
  private _fixedDt;
37
37
  private _maxDt;
38
38
  constructor(ecs: ECS, options?: FrameStepperOptions);
@@ -45,14 +45,14 @@ export declare class FrameStepper {
45
45
  step(dt?: number): void;
46
46
  /** Advance several fixed-size frames, useful for replaying a paused sim. */
47
47
  stepFrames(count: number, dt?: number): void;
48
- /** Start ticking with `requestAnimationFrame`; no-op when already running. */
48
+ /** Start ticking with `requestAnimationFrame`. No-op when already running. */
49
49
  play(): void;
50
50
  /** Stop the automatic frame loop. Manual `step()` still works while paused. */
51
51
  pause(): void;
52
52
  toggle(): void;
53
53
  dispose(): void;
54
- private scheduleNextFrame;
55
- private readonly onFrame;
54
+ private _requestNextFrame;
55
+ private readonly _onFrame;
56
56
  }
57
57
  export {};
58
58
  //# sourceMappingURL=frame_stepper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frame_stepper.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/frame_stepper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,KAAK,aAAa,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;AACnD,KAAK,YAAY,GAAG,CAAC,QAAQ,EAAE,aAAa,KAAK,MAAM,CAAC;AACxD,KAAK,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAM5C,MAAM,WAAW,mBAAmB;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;mFAK+E;IAC/E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,gGAAgG;IAChG,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,+FAA+F;IAC/F,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,kDAAkD;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC7B;AAsBD;;;;;;GAMG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAc;IAC3C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEJ,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,mBAAwB;IAW9D,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAE/B;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAE7B;IAED,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,qCAAqC;IAC9B,IAAI,CAAC,EAAE,GAAE,MAAsB,GAAG,IAAI;IAI7C,4EAA4E;IACrE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAE,MAAsB,GAAG,IAAI;IAMlE,8EAA8E;IACvE,IAAI,IAAI,IAAI;IAanB,+EAA+E;IACxE,KAAK,IAAI,IAAI;IASb,MAAM,IAAI,IAAI;IAKd,OAAO,IAAI,IAAI;IAItB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAQtB;CACF"}
1
+ {"version":3,"file":"frame_stepper.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/frame_stepper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,KAAK,aAAa,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;AACnD,KAAK,YAAY,GAAG,CAAC,QAAQ,EAAE,aAAa,KAAK,MAAM,CAAC;AACxD,KAAK,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAM5C,MAAM,WAAW,mBAAmB;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;kFAK8E;IAC9E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,gGAAgG;IAChG,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,+FAA+F;IAC/F,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,kDAAkD;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC7B;AAsBD;;;;;;GAMG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAc;IAC5C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEJ,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,mBAAwB;IAW9D,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAE/B;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAE7B;IAED,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,qCAAqC;IAC9B,IAAI,CAAC,EAAE,GAAE,MAAsB,GAAG,IAAI;IAI7C,4EAA4E;IACrE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAE,MAAsB,GAAG,IAAI;IAMlE,8EAA8E;IACvE,IAAI,IAAI,IAAI;IAanB,+EAA+E;IACxE,KAAK,IAAI,IAAI;IASb,MAAM,IAAI,IAAI;IAKd,OAAO,IAAI,IAAI;IAItB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAQvB;CACF"}
@@ -1,38 +1,38 @@
1
1
  import { EntityID } from './entity.cjs';
2
2
  import { SystemDescriptor } from './system.cjs';
3
- import { SCHEDULE } from './schedule.cjs';
4
- /** A deferred structural command issued through `ctx.commands.*` (`query.ts`).
5
- * `spawn`/`despawn`/`enable`/`disable` carry a `null` component; `add`/`remove`
3
+ import { PhaseName } from './phase.cjs';
4
+ /** A deferred structural command issued through `ctx.commands.*` (`system_context.ts`).
5
+ * `spawn`, `despawn`, `enable` and `disable` carry a `null` component. `add` and `remove`
6
6
  * carry the affected component's id. */
7
7
  export type StructuralOp = "spawn" | "despawn" | "add" | "remove" | "enable" | "disable";
8
- /** An observer edge that fired at a flush (`add`/`remove`/`enable`/`disable`) or
8
+ /** An observer edge that fired at a flush (`add`, `remove`, `enable` and `disable`) or
9
9
  * at the post-update onSet detection point (`set`). */
10
10
  export type ObserverOp = "add" | "remove" | "set" | "enable" | "disable";
11
11
  /**
12
12
  * The push sink. All callers are `DEV`-gated, so the methods receive raw ids
13
- * and descriptor references (no string-building on the hot path); the recorder
13
+ * and descriptor references, with no string-building on the hot path. The recorder
14
14
  * decides what to retain. Implementations must be side-effect-free with respect
15
- * to the ECS they observe, never mutate.
15
+ * to the ECS. They observe, never mutate.
16
16
  */
17
17
  export interface FrameTraceSink {
18
18
  /** Opens a frame. Fired first in `ecs.update`, before any phase runs. */
19
19
  tickBegin(tick: number, dt: number): void;
20
- /** Closes the frame opened by `tickBegin` (after onSet + `clearEvents`). */
20
+ /** Closes the frame opened by `tickBegin` (after the onSet dispatch and the event clear). */
21
21
  tickEnd(tick: number): void;
22
22
  /** A scheduled system is about to run, in the given phase. */
23
- systemStart(system: SystemDescriptor, phase: SCHEDULE): void;
24
- /** The system that last `systemStart`'d has returned. */
23
+ systemBegin(system: SystemDescriptor, phase: PhaseName): void;
24
+ /** The system that `systemBegin` opened has returned. */
25
25
  systemEnd(system: SystemDescriptor): void;
26
26
  /** A deferred structural command was enqueued (applied at the next flush). */
27
27
  commandQueued(op: StructuralOp, entity: EntityID, component: number | null): void;
28
28
  /** The deferred command buffer is about to drain for this phase. */
29
- flushBegin(phase: SCHEDULE): void;
29
+ flushBegin(phase: PhaseName): void;
30
30
  /** The deferred command buffer (and any observer cascade) has settled. */
31
- flushEnd(phase: SCHEDULE): void;
31
+ flushEnd(phase: PhaseName): void;
32
32
  /**
33
- * A schedule phase has fully settled every system in `phase` ran and the
34
- * deferred command buffer (plus any observer cascade) flushed so the live
35
- * world sits at a consistent, fingerprint-able point WITHIN the frame. Fired
33
+ * A schedule phase has fully settled, every system in `phase` ran and the
34
+ * deferred command buffer (plus any observer cascade) flushed, so the live
35
+ * world sits at a consistent, fingerprint-able point within the frame. Fired
36
36
  * once per phase that runs (each startup phase, each fixed step, and each
37
37
  * update phase), immediately after `flushEnd(phase)`.
38
38
  *
@@ -40,22 +40,22 @@ export interface FrameTraceSink {
40
40
  * phases of one `update()` and bisect a divergence to the exact phase that
41
41
  * introduced it. `flushEnd` marks the same instant, but it
42
42
  * is an observation of the flush *mechanism*, not a "safe to read consistent
43
- * state" contract so per-phase fingerprinting binds to this method, not to a
43
+ * state" contract, so per-phase fingerprinting binds to this method, not to a
44
44
  * flush-internal name. Like every sink method the call is read-only w.r.t. the
45
45
  * ECS: reading `stateHash()` here cannot perturb the per-tick hash or ordering.
46
46
  *
47
- * Caveat: the POST_UPDATE boundary fires BEFORE the tick-tail onSet-observer
48
- * dispatch + `clearEvents`, so for a world with onSet observers the final
47
+ * Caveat: the POST_UPDATE boundary fires before the tick-tail onSet-observer
48
+ * dispatch and the event clear, so for a world with onSet observers the final
49
49
  * per-tick `stateHash` (after `update()` returns) may differ from the
50
50
  * POST_UPDATE phase hash. A world with no onSet observers reconciles exactly.
51
51
  */
52
- phaseBoundary(phase: SCHEDULE): void;
52
+ phaseBoundary(phase: PhaseName): void;
53
53
  /** An observer callback fired for one entity (`entity === -1` for an
54
54
  * archetype-granular onSet, which has no per-entity id). */
55
55
  observerFired(op: ObserverOp, component: number, entity: number, observer: SystemDescriptor): void;
56
56
  /** A system emitted an event on `key` (the channel's symbol description). */
57
57
  eventEmitted(key: string): void;
58
- /** A system read an event channel; `count` is how many events it saw. */
58
+ /** A system read an event channel. `count` is how many events it saw. */
59
59
  eventRead(key: string, count: number): void;
60
60
  }
61
61
  /** One captured event, as plain JSON-serialisable data (string names + numeric
@@ -63,7 +63,7 @@ export interface FrameTraceSink {
63
63
  export type FrameTraceEvent = {
64
64
  readonly kind: "system_start";
65
65
  readonly system: string;
66
- readonly phase: SCHEDULE;
66
+ readonly phase: PhaseName;
67
67
  } | {
68
68
  readonly kind: "system_end";
69
69
  readonly system: string;
@@ -74,10 +74,10 @@ export type FrameTraceEvent = {
74
74
  readonly component: number | null;
75
75
  } | {
76
76
  readonly kind: "flush_begin";
77
- readonly phase: SCHEDULE;
77
+ readonly phase: PhaseName;
78
78
  } | {
79
79
  readonly kind: "flush_end";
80
- readonly phase: SCHEDULE;
80
+ readonly phase: PhaseName;
81
81
  } | {
82
82
  readonly kind: "observer_fired";
83
83
  readonly op: ObserverOp;
@@ -99,10 +99,10 @@ export interface FrameTrace {
99
99
  readonly events: FrameTraceEvent[];
100
100
  }
101
101
  /**
102
- * The in-tree `FrameTraceSink`. Mirrors `command_log.ts`'s `openTick` /
103
- * `RecordedTick` shape: `tickBegin` opens a fresh `FrameTrace`, every other
102
+ * The in-tree `FrameTraceSink`. Mirrors the `openTick` and `RecordedTick`
103
+ * shape of `command_log.ts`: `tickBegin` opens a fresh `FrameTrace`, every other
104
104
  * method appends to it, `tickEnd` closes it. Events arriving with no open
105
- * frame (e.g. a stray pre-`update` flush) are ignored rather than throwing
105
+ * frame (e.g. a stray pre-`update` flush) are ignored rather than throwing,
106
106
  * the recorder is a passive observer.
107
107
  */
108
108
  export declare class FrameTraceRecorder implements FrameTraceSink {
@@ -110,18 +110,18 @@ export declare class FrameTraceRecorder implements FrameTraceSink {
110
110
  private _current;
111
111
  tickBegin(tick: number, dt: number): void;
112
112
  tickEnd(_tick: number): void;
113
- systemStart(system: SystemDescriptor, phase: SCHEDULE): void;
113
+ systemBegin(system: SystemDescriptor, phase: PhaseName): void;
114
114
  systemEnd(system: SystemDescriptor): void;
115
115
  commandQueued(op: StructuralOp, entity: EntityID, component: number | null): void;
116
- flushBegin(phase: SCHEDULE): void;
117
- flushEnd(phase: SCHEDULE): void;
116
+ flushBegin(phase: PhaseName): void;
117
+ flushEnd(phase: PhaseName): void;
118
118
  /** No-op. The recorder already marks this instant with
119
- * `flushEnd`, and a per-phase fingerprint is a consumer concern the recorder
120
- * holds no world reference to hash. The seam exists so a consumer's OWN sink can
121
- * run code (e.g. `stateHash()`) at the safe post-flush point; the in-tree
119
+ * `flushEnd`, and a per-phase fingerprint is a consumer concern, the recorder
120
+ * holds no world reference to hash. The seam exists so a consumer's own sink can
121
+ * run code (e.g. `stateHash()`) at the safe post-flush point. The in-tree
122
122
  * event-stream recorder has nothing to add, so it stays a stream of causal
123
123
  * events, not fingerprints. */
124
- phaseBoundary(_phase: SCHEDULE): void;
124
+ phaseBoundary(_phase: PhaseName): void;
125
125
  observerFired(op: ObserverOp, component: number, entity: number, observer: SystemDescriptor): void;
126
126
  eventEmitted(key: string): void;
127
127
  eventRead(key: string, count: number): void;
@@ -1,38 +1,38 @@
1
1
  import { EntityID } from './entity.js';
2
2
  import { SystemDescriptor } from './system.js';
3
- import { SCHEDULE } from './schedule.js';
4
- /** A deferred structural command issued through `ctx.commands.*` (`query.ts`).
5
- * `spawn`/`despawn`/`enable`/`disable` carry a `null` component; `add`/`remove`
3
+ import { PhaseName } from './phase.js';
4
+ /** A deferred structural command issued through `ctx.commands.*` (`system_context.ts`).
5
+ * `spawn`, `despawn`, `enable` and `disable` carry a `null` component. `add` and `remove`
6
6
  * carry the affected component's id. */
7
7
  export type StructuralOp = "spawn" | "despawn" | "add" | "remove" | "enable" | "disable";
8
- /** An observer edge that fired at a flush (`add`/`remove`/`enable`/`disable`) or
8
+ /** An observer edge that fired at a flush (`add`, `remove`, `enable` and `disable`) or
9
9
  * at the post-update onSet detection point (`set`). */
10
10
  export type ObserverOp = "add" | "remove" | "set" | "enable" | "disable";
11
11
  /**
12
12
  * The push sink. All callers are `DEV`-gated, so the methods receive raw ids
13
- * and descriptor references (no string-building on the hot path); the recorder
13
+ * and descriptor references, with no string-building on the hot path. The recorder
14
14
  * decides what to retain. Implementations must be side-effect-free with respect
15
- * to the ECS they observe, never mutate.
15
+ * to the ECS. They observe, never mutate.
16
16
  */
17
17
  export interface FrameTraceSink {
18
18
  /** Opens a frame. Fired first in `ecs.update`, before any phase runs. */
19
19
  tickBegin(tick: number, dt: number): void;
20
- /** Closes the frame opened by `tickBegin` (after onSet + `clearEvents`). */
20
+ /** Closes the frame opened by `tickBegin` (after the onSet dispatch and the event clear). */
21
21
  tickEnd(tick: number): void;
22
22
  /** A scheduled system is about to run, in the given phase. */
23
- systemStart(system: SystemDescriptor, phase: SCHEDULE): void;
24
- /** The system that last `systemStart`'d has returned. */
23
+ systemBegin(system: SystemDescriptor, phase: PhaseName): void;
24
+ /** The system that `systemBegin` opened has returned. */
25
25
  systemEnd(system: SystemDescriptor): void;
26
26
  /** A deferred structural command was enqueued (applied at the next flush). */
27
27
  commandQueued(op: StructuralOp, entity: EntityID, component: number | null): void;
28
28
  /** The deferred command buffer is about to drain for this phase. */
29
- flushBegin(phase: SCHEDULE): void;
29
+ flushBegin(phase: PhaseName): void;
30
30
  /** The deferred command buffer (and any observer cascade) has settled. */
31
- flushEnd(phase: SCHEDULE): void;
31
+ flushEnd(phase: PhaseName): void;
32
32
  /**
33
- * A schedule phase has fully settled every system in `phase` ran and the
34
- * deferred command buffer (plus any observer cascade) flushed so the live
35
- * world sits at a consistent, fingerprint-able point WITHIN the frame. Fired
33
+ * A schedule phase has fully settled, every system in `phase` ran and the
34
+ * deferred command buffer (plus any observer cascade) flushed, so the live
35
+ * world sits at a consistent, fingerprint-able point within the frame. Fired
36
36
  * once per phase that runs (each startup phase, each fixed step, and each
37
37
  * update phase), immediately after `flushEnd(phase)`.
38
38
  *
@@ -40,22 +40,22 @@ export interface FrameTraceSink {
40
40
  * phases of one `update()` and bisect a divergence to the exact phase that
41
41
  * introduced it. `flushEnd` marks the same instant, but it
42
42
  * is an observation of the flush *mechanism*, not a "safe to read consistent
43
- * state" contract so per-phase fingerprinting binds to this method, not to a
43
+ * state" contract, so per-phase fingerprinting binds to this method, not to a
44
44
  * flush-internal name. Like every sink method the call is read-only w.r.t. the
45
45
  * ECS: reading `stateHash()` here cannot perturb the per-tick hash or ordering.
46
46
  *
47
- * Caveat: the POST_UPDATE boundary fires BEFORE the tick-tail onSet-observer
48
- * dispatch + `clearEvents`, so for a world with onSet observers the final
47
+ * Caveat: the POST_UPDATE boundary fires before the tick-tail onSet-observer
48
+ * dispatch and the event clear, so for a world with onSet observers the final
49
49
  * per-tick `stateHash` (after `update()` returns) may differ from the
50
50
  * POST_UPDATE phase hash. A world with no onSet observers reconciles exactly.
51
51
  */
52
- phaseBoundary(phase: SCHEDULE): void;
52
+ phaseBoundary(phase: PhaseName): void;
53
53
  /** An observer callback fired for one entity (`entity === -1` for an
54
54
  * archetype-granular onSet, which has no per-entity id). */
55
55
  observerFired(op: ObserverOp, component: number, entity: number, observer: SystemDescriptor): void;
56
56
  /** A system emitted an event on `key` (the channel's symbol description). */
57
57
  eventEmitted(key: string): void;
58
- /** A system read an event channel; `count` is how many events it saw. */
58
+ /** A system read an event channel. `count` is how many events it saw. */
59
59
  eventRead(key: string, count: number): void;
60
60
  }
61
61
  /** One captured event, as plain JSON-serialisable data (string names + numeric
@@ -63,7 +63,7 @@ export interface FrameTraceSink {
63
63
  export type FrameTraceEvent = {
64
64
  readonly kind: "system_start";
65
65
  readonly system: string;
66
- readonly phase: SCHEDULE;
66
+ readonly phase: PhaseName;
67
67
  } | {
68
68
  readonly kind: "system_end";
69
69
  readonly system: string;
@@ -74,10 +74,10 @@ export type FrameTraceEvent = {
74
74
  readonly component: number | null;
75
75
  } | {
76
76
  readonly kind: "flush_begin";
77
- readonly phase: SCHEDULE;
77
+ readonly phase: PhaseName;
78
78
  } | {
79
79
  readonly kind: "flush_end";
80
- readonly phase: SCHEDULE;
80
+ readonly phase: PhaseName;
81
81
  } | {
82
82
  readonly kind: "observer_fired";
83
83
  readonly op: ObserverOp;
@@ -99,10 +99,10 @@ export interface FrameTrace {
99
99
  readonly events: FrameTraceEvent[];
100
100
  }
101
101
  /**
102
- * The in-tree `FrameTraceSink`. Mirrors `command_log.ts`'s `openTick` /
103
- * `RecordedTick` shape: `tickBegin` opens a fresh `FrameTrace`, every other
102
+ * The in-tree `FrameTraceSink`. Mirrors the `openTick` and `RecordedTick`
103
+ * shape of `command_log.ts`: `tickBegin` opens a fresh `FrameTrace`, every other
104
104
  * method appends to it, `tickEnd` closes it. Events arriving with no open
105
- * frame (e.g. a stray pre-`update` flush) are ignored rather than throwing
105
+ * frame (e.g. a stray pre-`update` flush) are ignored rather than throwing,
106
106
  * the recorder is a passive observer.
107
107
  */
108
108
  export declare class FrameTraceRecorder implements FrameTraceSink {
@@ -110,18 +110,18 @@ export declare class FrameTraceRecorder implements FrameTraceSink {
110
110
  private _current;
111
111
  tickBegin(tick: number, dt: number): void;
112
112
  tickEnd(_tick: number): void;
113
- systemStart(system: SystemDescriptor, phase: SCHEDULE): void;
113
+ systemBegin(system: SystemDescriptor, phase: PhaseName): void;
114
114
  systemEnd(system: SystemDescriptor): void;
115
115
  commandQueued(op: StructuralOp, entity: EntityID, component: number | null): void;
116
- flushBegin(phase: SCHEDULE): void;
117
- flushEnd(phase: SCHEDULE): void;
116
+ flushBegin(phase: PhaseName): void;
117
+ flushEnd(phase: PhaseName): void;
118
118
  /** No-op. The recorder already marks this instant with
119
- * `flushEnd`, and a per-phase fingerprint is a consumer concern the recorder
120
- * holds no world reference to hash. The seam exists so a consumer's OWN sink can
121
- * run code (e.g. `stateHash()`) at the safe post-flush point; the in-tree
119
+ * `flushEnd`, and a per-phase fingerprint is a consumer concern, the recorder
120
+ * holds no world reference to hash. The seam exists so a consumer's own sink can
121
+ * run code (e.g. `stateHash()`) at the safe post-flush point. The in-tree
122
122
  * event-stream recorder has nothing to add, so it stays a stream of causal
123
123
  * events, not fingerprints. */
124
- phaseBoundary(_phase: SCHEDULE): void;
124
+ phaseBoundary(_phase: PhaseName): void;
125
125
  observerFired(op: ObserverOp, component: number, entity: number, observer: SystemDescriptor): void;
126
126
  eventEmitted(key: string): void;
127
127
  eventRead(key: string, count: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"frame_trace.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/frame_trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame_trace.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/frame_trace.ts"],"names":[],"mappings":"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"}