@oasys/oecs 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/CHANGELOG.md +1399 -276
  2. package/README.md +327 -169
  3. package/dist/core/ecs/access_check.d.cts +31 -31
  4. package/dist/core/ecs/access_check.d.ts +31 -31
  5. package/dist/core/ecs/access_check.d.ts.map +1 -1
  6. package/dist/core/ecs/archetype.d.cts +273 -205
  7. package/dist/core/ecs/archetype.d.ts +273 -205
  8. package/dist/core/ecs/archetype.d.ts.map +1 -1
  9. package/dist/core/ecs/archetype_closure.d.cts +23 -0
  10. package/dist/core/ecs/archetype_closure.d.ts +23 -0
  11. package/dist/core/ecs/archetype_closure.d.ts.map +1 -0
  12. package/dist/core/ecs/archetype_graph.d.cts +34 -34
  13. package/dist/core/ecs/archetype_graph.d.ts +34 -34
  14. package/dist/core/ecs/archetype_graph.d.ts.map +1 -1
  15. package/dist/core/ecs/archetype_types.d.cts +55 -0
  16. package/dist/core/ecs/archetype_types.d.ts +55 -0
  17. package/dist/core/ecs/archetype_types.d.ts.map +1 -0
  18. package/dist/core/ecs/change_feed.d.cts +53 -0
  19. package/dist/core/ecs/change_feed.d.ts +53 -0
  20. package/dist/core/ecs/change_feed.d.ts.map +1 -0
  21. package/dist/core/ecs/changed_query.d.cts +36 -0
  22. package/dist/core/ecs/changed_query.d.ts +36 -0
  23. package/dist/core/ecs/changed_query.d.ts.map +1 -0
  24. package/dist/core/ecs/chunk_columns.d.cts +49 -0
  25. package/dist/core/ecs/chunk_columns.d.ts +49 -0
  26. package/dist/core/ecs/chunk_columns.d.ts.map +1 -0
  27. package/dist/core/ecs/command_log.d.cts +30 -30
  28. package/dist/core/ecs/command_log.d.ts +30 -30
  29. package/dist/core/ecs/command_log.d.ts.map +1 -1
  30. package/dist/core/ecs/component.d.cts +45 -44
  31. package/dist/core/ecs/component.d.ts +45 -44
  32. package/dist/core/ecs/component.d.ts.map +1 -1
  33. package/dist/core/ecs/component_registry.d.cts +53 -0
  34. package/dist/core/ecs/component_registry.d.ts +53 -0
  35. package/dist/core/ecs/component_registry.d.ts.map +1 -0
  36. package/dist/core/ecs/compute_backend.d.cts +18 -7
  37. package/dist/core/ecs/compute_backend.d.ts +18 -7
  38. package/dist/core/ecs/compute_backend.d.ts.map +1 -1
  39. package/dist/core/ecs/deferred_commands.d.cts +15 -14
  40. package/dist/core/ecs/deferred_commands.d.ts +15 -14
  41. package/dist/core/ecs/deferred_commands.d.ts.map +1 -1
  42. package/dist/core/ecs/dispatch_trace.d.cts +32 -31
  43. package/dist/core/ecs/dispatch_trace.d.ts +32 -31
  44. package/dist/core/ecs/dispatch_trace.d.ts.map +1 -1
  45. package/dist/core/ecs/ecs.d.cts +337 -276
  46. package/dist/core/ecs/ecs.d.ts +337 -276
  47. package/dist/core/ecs/ecs.d.ts.map +1 -1
  48. package/dist/core/ecs/ecs_memory.d.cts +134 -136
  49. package/dist/core/ecs/ecs_memory.d.ts +134 -136
  50. package/dist/core/ecs/ecs_memory.d.ts.map +1 -1
  51. package/dist/core/ecs/ecs_options.d.cts +89 -0
  52. package/dist/core/ecs/ecs_options.d.ts +89 -0
  53. package/dist/core/ecs/ecs_options.d.ts.map +1 -0
  54. package/dist/core/ecs/entity.d.cts +4 -4
  55. package/dist/core/ecs/entity.d.ts +4 -4
  56. package/dist/core/ecs/entity_allocator.d.cts +24 -22
  57. package/dist/core/ecs/entity_allocator.d.ts +24 -22
  58. package/dist/core/ecs/entity_allocator.d.ts.map +1 -1
  59. package/dist/core/ecs/event.d.cts +37 -23
  60. package/dist/core/ecs/event.d.ts +37 -23
  61. package/dist/core/ecs/event.d.ts.map +1 -1
  62. package/dist/core/ecs/facades.d.cts +12 -126
  63. package/dist/core/ecs/facades.d.ts +12 -126
  64. package/dist/core/ecs/facades.d.ts.map +1 -1
  65. package/dist/core/ecs/frame_stepper.d.cts +12 -12
  66. package/dist/core/ecs/frame_stepper.d.ts +12 -12
  67. package/dist/core/ecs/frame_stepper.d.ts.map +1 -1
  68. package/dist/core/ecs/frame_trace.d.cts +34 -34
  69. package/dist/core/ecs/frame_trace.d.ts +34 -34
  70. package/dist/core/ecs/frame_trace.d.ts.map +1 -1
  71. package/dist/core/ecs/host_commands.d.cts +107 -89
  72. package/dist/core/ecs/host_commands.d.ts +107 -89
  73. package/dist/core/ecs/host_commands.d.ts.map +1 -1
  74. package/dist/core/ecs/index.d.cts +22 -12
  75. package/dist/core/ecs/index.d.ts +22 -12
  76. package/dist/core/ecs/index.d.ts.map +1 -1
  77. package/dist/core/ecs/observer.d.cts +41 -122
  78. package/dist/core/ecs/observer.d.ts +41 -122
  79. package/dist/core/ecs/observer.d.ts.map +1 -1
  80. package/dist/core/ecs/phase.d.cts +79 -0
  81. package/dist/core/ecs/phase.d.ts +79 -0
  82. package/dist/core/ecs/phase.d.ts.map +1 -0
  83. package/dist/core/ecs/plugin.d.cts +125 -0
  84. package/dist/core/ecs/plugin.d.ts +125 -0
  85. package/dist/core/ecs/plugin.d.ts.map +1 -0
  86. package/dist/core/ecs/plugin_slots.d.cts +26 -0
  87. package/dist/core/ecs/plugin_slots.d.ts +26 -0
  88. package/dist/core/ecs/plugin_slots.d.ts.map +1 -0
  89. package/dist/core/ecs/query.d.cts +219 -568
  90. package/dist/core/ecs/query.d.ts +219 -568
  91. package/dist/core/ecs/query.d.ts.map +1 -1
  92. package/dist/core/ecs/query_cache.d.cts +130 -0
  93. package/dist/core/ecs/query_cache.d.ts +130 -0
  94. package/dist/core/ecs/query_cache.d.ts.map +1 -0
  95. package/dist/core/ecs/query_registry.d.cts +47 -0
  96. package/dist/core/ecs/query_registry.d.ts +47 -0
  97. package/dist/core/ecs/query_registry.d.ts.map +1 -0
  98. package/dist/core/ecs/query_terms.d.cts +126 -0
  99. package/dist/core/ecs/query_terms.d.ts +126 -0
  100. package/dist/core/ecs/query_terms.d.ts.map +1 -0
  101. package/dist/core/ecs/ref.d.cts +129 -16
  102. package/dist/core/ecs/ref.d.ts +129 -16
  103. package/dist/core/ecs/ref.d.ts.map +1 -1
  104. package/dist/core/ecs/relation.d.cts +105 -186
  105. package/dist/core/ecs/relation.d.ts +105 -186
  106. package/dist/core/ecs/relation.d.ts.map +1 -1
  107. package/dist/core/ecs/resource.d.cts +14 -14
  108. package/dist/core/ecs/resource.d.ts +14 -14
  109. package/dist/core/ecs/resource_registry.d.cts +6 -6
  110. package/dist/core/ecs/resource_registry.d.ts +6 -6
  111. package/dist/core/ecs/resource_registry.d.ts.map +1 -1
  112. package/dist/core/ecs/row_kinds.d.cts +24 -0
  113. package/dist/core/ecs/row_kinds.d.ts +24 -0
  114. package/dist/core/ecs/row_kinds.d.ts.map +1 -0
  115. package/dist/core/ecs/run_condition.d.cts +23 -23
  116. package/dist/core/ecs/run_condition.d.ts +23 -23
  117. package/dist/core/ecs/run_condition.d.ts.map +1 -1
  118. package/dist/core/ecs/schedule.d.cts +98 -114
  119. package/dist/core/ecs/schedule.d.ts +98 -114
  120. package/dist/core/ecs/schedule.d.ts.map +1 -1
  121. package/dist/core/ecs/schedule_plan.d.cts +33 -0
  122. package/dist/core/ecs/schedule_plan.d.ts +33 -0
  123. package/dist/core/ecs/schedule_plan.d.ts.map +1 -0
  124. package/dist/core/ecs/snapshot.d.cts +77 -0
  125. package/dist/core/ecs/snapshot.d.ts +77 -0
  126. package/dist/core/ecs/snapshot.d.ts.map +1 -0
  127. package/dist/core/ecs/snapshot_mount.d.cts +42 -0
  128. package/dist/core/ecs/snapshot_mount.d.ts +42 -0
  129. package/dist/core/ecs/snapshot_mount.d.ts.map +1 -0
  130. package/dist/core/ecs/sparse_store.d.cts +110 -53
  131. package/dist/core/ecs/sparse_store.d.ts +110 -53
  132. package/dist/core/ecs/sparse_store.d.ts.map +1 -1
  133. package/dist/core/ecs/store.d.cts +644 -511
  134. package/dist/core/ecs/store.d.ts +644 -511
  135. package/dist/core/ecs/store.d.ts.map +1 -1
  136. package/dist/core/ecs/store_layout_listener.d.cts +8 -8
  137. package/dist/core/ecs/store_layout_listener.d.ts +8 -8
  138. package/dist/core/ecs/store_types.d.cts +122 -0
  139. package/dist/core/ecs/store_types.d.ts +122 -0
  140. package/dist/core/ecs/store_types.d.ts.map +1 -0
  141. package/dist/core/ecs/system.d.cts +151 -66
  142. package/dist/core/ecs/system.d.ts +151 -66
  143. package/dist/core/ecs/system.d.ts.map +1 -1
  144. package/dist/core/ecs/system_context.d.cts +296 -0
  145. package/dist/core/ecs/system_context.d.ts +296 -0
  146. package/dist/core/ecs/system_context.d.ts.map +1 -0
  147. package/dist/core/ecs/system_set.d.cts +48 -0
  148. package/dist/core/ecs/system_set.d.ts +48 -0
  149. package/dist/core/ecs/system_set.d.ts.map +1 -0
  150. package/dist/core/ecs/utils/arrays.d.cts +15 -1
  151. package/dist/core/ecs/utils/arrays.d.ts +15 -1
  152. package/dist/core/ecs/utils/arrays.d.ts.map +1 -1
  153. package/dist/core/ecs/utils/error.d.cts +87 -4
  154. package/dist/core/ecs/utils/error.d.ts +87 -4
  155. package/dist/core/ecs/utils/error.d.ts.map +1 -1
  156. package/dist/core/ecs/utils/plugin_error.d.cts +10 -0
  157. package/dist/core/ecs/utils/plugin_error.d.ts +10 -0
  158. package/dist/core/ecs/utils/plugin_error.d.ts.map +1 -0
  159. package/dist/core/restore_errors.d.cts +30 -0
  160. package/dist/core/restore_errors.d.ts +30 -0
  161. package/dist/core/restore_errors.d.ts.map +1 -0
  162. package/dist/core/store/action_ring.d.cts +48 -49
  163. package/dist/core/store/action_ring.d.ts +48 -49
  164. package/dist/core/store/action_ring.d.ts.map +1 -1
  165. package/dist/core/store/allocator.d.cts +166 -114
  166. package/dist/core/store/allocator.d.ts +166 -114
  167. package/dist/core/store/allocator.d.ts.map +1 -1
  168. package/dist/core/store/buffer_backed_column.d.cts +21 -22
  169. package/dist/core/store/buffer_backed_column.d.ts +21 -22
  170. package/dist/core/store/buffer_backed_column.d.ts.map +1 -1
  171. package/dist/core/store/column_store.d.cts +138 -100
  172. package/dist/core/store/column_store.d.ts +138 -100
  173. package/dist/core/store/column_store.d.ts.map +1 -1
  174. package/dist/core/store/command_dispatch.d.cts +14 -15
  175. package/dist/core/store/command_dispatch.d.ts +14 -15
  176. package/dist/core/store/command_dispatch.d.ts.map +1 -1
  177. package/dist/core/store/command_ring.d.cts +41 -45
  178. package/dist/core/store/command_ring.d.ts +41 -45
  179. package/dist/core/store/command_ring.d.ts.map +1 -1
  180. package/dist/core/store/descriptor.d.cts +35 -18
  181. package/dist/core/store/descriptor.d.ts +35 -18
  182. package/dist/core/store/descriptor.d.ts.map +1 -1
  183. package/dist/core/store/entity_index.d.cts +34 -35
  184. package/dist/core/store/entity_index.d.ts +34 -35
  185. package/dist/core/store/entity_index.d.ts.map +1 -1
  186. package/dist/core/store/event_ring.d.cts +40 -42
  187. package/dist/core/store/event_ring.d.ts +40 -42
  188. package/dist/core/store/event_ring.d.ts.map +1 -1
  189. package/dist/core/store/extend.d.cts +15 -9
  190. package/dist/core/store/extend.d.ts +15 -9
  191. package/dist/core/store/extend.d.ts.map +1 -1
  192. package/dist/core/store/grow.d.cts +3 -3
  193. package/dist/core/store/grow.d.ts +3 -3
  194. package/dist/core/store/grow.d.ts.map +1 -1
  195. package/dist/core/store/header.d.cts +37 -33
  196. package/dist/core/store/header.d.ts +37 -33
  197. package/dist/core/store/header.d.ts.map +1 -1
  198. package/dist/core/store/index.d.cts +10 -10
  199. package/dist/core/store/index.d.ts +10 -10
  200. package/dist/core/store/index.d.ts.map +1 -1
  201. package/dist/core/store/layout_ops.d.cts +72 -63
  202. package/dist/core/store/layout_ops.d.ts +72 -63
  203. package/dist/core/store/layout_ops.d.ts.map +1 -1
  204. package/dist/core/store/region_table.d.cts +28 -21
  205. package/dist/core/store/region_table.d.ts +28 -21
  206. package/dist/core/store/region_table.d.ts.map +1 -1
  207. package/dist/core/store/snapshot.d.cts +31 -16
  208. package/dist/core/store/snapshot.d.ts +31 -16
  209. package/dist/core/store/snapshot.d.ts.map +1 -1
  210. package/dist/core/store/state_hash.d.cts +14 -14
  211. package/dist/core/store/state_hash.d.ts +14 -14
  212. package/dist/core/store/state_hash.d.ts.map +1 -1
  213. package/dist/core/store/store_regions.d.cts +10 -10
  214. package/dist/core/store/store_regions.d.ts +10 -10
  215. package/dist/core/store/store_regions.d.ts.map +1 -1
  216. package/dist/core/store/vendored_abi/abi.d.cts +27 -2
  217. package/dist/core/store/vendored_abi/abi.d.ts +27 -2
  218. package/dist/core/store/vendored_abi/abi.d.ts.map +1 -1
  219. package/dist/host_commands-B2KMx8O2.cjs +1 -0
  220. package/dist/host_commands-ClVPvhSa.cjs +2 -0
  221. package/dist/host_commands-CwxVQS1z.js +1524 -0
  222. package/dist/host_commands-nJvTy88E.js +1667 -0
  223. package/dist/index.cjs +1 -1
  224. package/dist/index.d.cts +16 -11
  225. package/dist/index.d.ts +16 -11
  226. package/dist/index.d.ts.map +1 -1
  227. package/dist/index.development.cjs +1 -1
  228. package/dist/index.development.js +6709 -5729
  229. package/dist/index.js +5664 -4743
  230. package/dist/internal.cjs +2 -2
  231. package/dist/internal.d.cts +5 -2
  232. package/dist/internal.d.ts +5 -2
  233. package/dist/internal.d.ts.map +1 -1
  234. package/dist/internal.development.cjs +1 -1
  235. package/dist/internal.development.js +70 -20
  236. package/dist/internal.js +138 -83
  237. package/dist/plugins/abi-D3V-QUSf.cjs +1 -0
  238. package/dist/plugins/abi-NP8pNxpd.js +42 -0
  239. package/dist/plugins/arrays-Dr_1hCjL.js +28 -0
  240. package/dist/plugins/arrays-Dt-Joc4i.cjs +1 -0
  241. package/dist/plugins/assertions-gtDVfbnQ.js +6 -0
  242. package/dist/plugins/assertions-z5GQd_bB.cjs +1 -0
  243. package/dist/{extensions → plugins}/editor/editor.d.cts +56 -56
  244. package/dist/{extensions → plugins}/editor/editor.d.ts +56 -56
  245. package/dist/plugins/editor/editor.d.ts.map +1 -0
  246. package/dist/{extensions → plugins}/editor/field_handle.d.cts +13 -13
  247. package/dist/{extensions → plugins}/editor/field_handle.d.ts +13 -13
  248. package/dist/plugins/editor/field_handle.d.ts.map +1 -0
  249. package/dist/plugins/editor/index.d.cts +22 -0
  250. package/dist/plugins/editor/index.d.ts +22 -0
  251. package/dist/plugins/editor/index.d.ts.map +1 -0
  252. package/dist/plugins/editor.cjs +1 -0
  253. package/dist/plugins/editor.d.cts +1 -0
  254. package/dist/plugins/editor.d.ts +1 -0
  255. package/dist/plugins/editor.development.cjs +1 -0
  256. package/dist/{extensions/editor/index.development.js → plugins/editor.development.js} +83 -66
  257. package/dist/{extensions/editor/index.js → plugins/editor.js} +83 -66
  258. package/dist/plugins/events/event_channel.d.cts +13 -0
  259. package/dist/plugins/events/event_channel.d.ts +13 -0
  260. package/dist/plugins/events/event_channel.d.ts.map +1 -0
  261. package/dist/plugins/events/event_registry.d.cts +22 -0
  262. package/dist/plugins/events/event_registry.d.ts +22 -0
  263. package/dist/plugins/events/event_registry.d.ts.map +1 -0
  264. package/dist/plugins/events/facade.d.cts +26 -0
  265. package/dist/plugins/events/facade.d.ts +26 -0
  266. package/dist/plugins/events/facade.d.ts.map +1 -0
  267. package/dist/plugins/events/index.d.cts +10 -0
  268. package/dist/plugins/events/index.d.ts +10 -0
  269. package/dist/plugins/events/index.d.ts.map +1 -0
  270. package/dist/plugins/events.cjs +1 -0
  271. package/dist/plugins/events.d.cts +1 -0
  272. package/dist/plugins/events.d.ts +1 -0
  273. package/dist/plugins/events.development.cjs +1 -0
  274. package/dist/plugins/events.development.js +174 -0
  275. package/dist/plugins/events.js +159 -0
  276. package/dist/plugins/observers/index.d.cts +23 -0
  277. package/dist/plugins/observers/index.d.ts +23 -0
  278. package/dist/plugins/observers/index.d.ts.map +1 -0
  279. package/dist/plugins/observers/observer_registry.d.cts +101 -0
  280. package/dist/plugins/observers/observer_registry.d.ts +101 -0
  281. package/dist/plugins/observers/observer_registry.d.ts.map +1 -0
  282. package/dist/plugins/observers.cjs +1 -0
  283. package/dist/plugins/observers.d.cts +1 -0
  284. package/dist/plugins/observers.d.ts +1 -0
  285. package/dist/plugins/observers.development.cjs +1 -0
  286. package/dist/plugins/observers.development.js +431 -0
  287. package/dist/plugins/observers.js +403 -0
  288. package/dist/plugins/relation_store-BsoegrZh.js +313 -0
  289. package/dist/plugins/relation_store-DQKSnxsm.cjs +1 -0
  290. package/dist/plugins/relation_store-RBhpcE28.cjs +1 -0
  291. package/dist/plugins/relation_store-RqW5Snx6.js +328 -0
  292. package/dist/plugins/relations/builtin_relations.d.cts +48 -0
  293. package/dist/plugins/relations/builtin_relations.d.ts +48 -0
  294. package/dist/plugins/relations/builtin_relations.d.ts.map +1 -0
  295. package/dist/plugins/relations/facade.d.cts +73 -0
  296. package/dist/plugins/relations/facade.d.ts +73 -0
  297. package/dist/plugins/relations/facade.d.ts.map +1 -0
  298. package/dist/plugins/relations/index.d.cts +11 -0
  299. package/dist/plugins/relations/index.d.ts +11 -0
  300. package/dist/plugins/relations/index.d.ts.map +1 -0
  301. package/dist/{core/ecs → plugins/relations}/relation_service.d.cts +93 -105
  302. package/dist/{core/ecs → plugins/relations}/relation_service.d.ts +93 -105
  303. package/dist/plugins/relations/relation_service.d.ts.map +1 -0
  304. package/dist/plugins/relations/relation_store.d.cts +177 -0
  305. package/dist/plugins/relations/relation_store.d.ts +177 -0
  306. package/dist/plugins/relations/relation_store.d.ts.map +1 -0
  307. package/dist/plugins/relations.cjs +1 -0
  308. package/dist/plugins/relations.d.cts +1 -0
  309. package/dist/plugins/relations.d.ts +1 -0
  310. package/dist/plugins/relations.development.cjs +1 -0
  311. package/dist/plugins/relations.development.js +603 -0
  312. package/dist/plugins/relations.js +553 -0
  313. package/dist/plugins/snapshots/index.d.cts +33 -0
  314. package/dist/plugins/snapshots/index.d.ts +33 -0
  315. package/dist/plugins/snapshots/index.d.ts.map +1 -0
  316. package/dist/plugins/snapshots/resume.d.cts +57 -0
  317. package/dist/plugins/snapshots/resume.d.ts +57 -0
  318. package/dist/plugins/snapshots/resume.d.ts.map +1 -0
  319. package/dist/plugins/snapshots/snapshot_service.d.cts +59 -0
  320. package/dist/plugins/snapshots/snapshot_service.d.ts +59 -0
  321. package/dist/plugins/snapshots/snapshot_service.d.ts.map +1 -0
  322. package/dist/plugins/snapshots.cjs +1 -0
  323. package/dist/plugins/snapshots.d.cts +1 -0
  324. package/dist/plugins/snapshots.d.ts +1 -0
  325. package/dist/plugins/snapshots.development.cjs +1 -0
  326. package/dist/plugins/snapshots.development.js +737 -0
  327. package/dist/plugins/snapshots.js +737 -0
  328. package/dist/plugins/solid/index.d.cts +8 -0
  329. package/dist/plugins/solid/index.d.ts +8 -0
  330. package/dist/plugins/solid/index.d.ts.map +1 -0
  331. package/dist/plugins/solid/solid.d.cts +97 -0
  332. package/dist/plugins/solid/solid.d.ts +97 -0
  333. package/dist/plugins/solid/solid.d.ts.map +1 -0
  334. package/dist/plugins/solid.cjs +1 -0
  335. package/dist/plugins/solid.d.cts +1 -0
  336. package/dist/plugins/solid.d.ts +1 -0
  337. package/dist/plugins/solid.development.cjs +1 -0
  338. package/dist/plugins/solid.development.js +319 -0
  339. package/dist/plugins/solid.js +319 -0
  340. package/dist/plugins/workers/index.d.cts +75 -0
  341. package/dist/plugins/workers/index.d.ts +75 -0
  342. package/dist/plugins/workers/index.d.ts.map +1 -0
  343. package/dist/plugins/workers/node_threads.d.cts +25 -0
  344. package/dist/plugins/workers/node_threads.d.ts +25 -0
  345. package/dist/plugins/workers/node_threads.d.ts.map +1 -0
  346. package/dist/plugins/workers/plan.d.cts +61 -0
  347. package/dist/plugins/workers/plan.d.ts +61 -0
  348. package/dist/plugins/workers/plan.d.ts.map +1 -0
  349. package/dist/plugins/workers/pool.d.cts +144 -0
  350. package/dist/plugins/workers/pool.d.ts +144 -0
  351. package/dist/plugins/workers/pool.d.ts.map +1 -0
  352. package/dist/plugins/workers/protocol.d.cts +112 -0
  353. package/dist/plugins/workers/protocol.d.ts +112 -0
  354. package/dist/plugins/workers/protocol.d.ts.map +1 -0
  355. package/dist/plugins/workers/worker_bind.d.cts +64 -0
  356. package/dist/plugins/workers/worker_bind.d.ts +64 -0
  357. package/dist/plugins/workers/worker_bind.d.ts.map +1 -0
  358. package/dist/plugins/workers/worker_loop.d.cts +14 -0
  359. package/dist/plugins/workers/worker_loop.d.ts +14 -0
  360. package/dist/plugins/workers/worker_loop.d.ts.map +1 -0
  361. package/dist/plugins/workers.cjs +1 -0
  362. package/dist/plugins/workers.d.cts +1 -0
  363. package/dist/plugins/workers.d.ts +1 -0
  364. package/dist/plugins/workers.development.cjs +1 -0
  365. package/dist/plugins/workers.development.js +596 -0
  366. package/dist/plugins/workers.js +474 -0
  367. package/dist/primitives.cjs +1 -1
  368. package/dist/primitives.d.cts +4 -4
  369. package/dist/primitives.d.ts +4 -4
  370. package/dist/primitives.development.cjs +1 -1
  371. package/dist/primitives.development.js +66 -22
  372. package/dist/primitives.js +66 -22
  373. package/dist/shared-BKl12xF1.js +132 -0
  374. package/dist/shared-Dk-pACZT.cjs +1 -0
  375. package/dist/shared.cjs +1 -1
  376. package/dist/shared.d.cts +7 -7
  377. package/dist/shared.d.ts +7 -7
  378. package/dist/shared.d.ts.map +1 -1
  379. package/dist/shared.development.cjs +1 -1
  380. package/dist/shared.development.js +4 -3
  381. package/dist/shared.js +4 -3
  382. package/dist/topological_sort-Cc_yXqPT.js +346 -0
  383. package/dist/topological_sort-vp1imU6D.cjs +1 -0
  384. package/dist/type_primitives/assertions.d.cts +12 -16
  385. package/dist/type_primitives/assertions.d.ts +12 -16
  386. package/dist/type_primitives/assertions.d.ts.map +1 -1
  387. package/dist/type_primitives/binary_heap/binary_heap.d.cts +2 -6
  388. package/dist/type_primitives/binary_heap/binary_heap.d.ts +2 -6
  389. package/dist/type_primitives/binary_heap/binary_heap.d.ts.map +1 -1
  390. package/dist/type_primitives/bitset/bitset.d.cts +7 -11
  391. package/dist/type_primitives/bitset/bitset.d.ts +7 -11
  392. package/dist/type_primitives/bitset/bitset.d.ts.map +1 -1
  393. package/dist/type_primitives/brand.d.cts +2 -7
  394. package/dist/type_primitives/brand.d.ts +2 -7
  395. package/dist/type_primitives/brand.d.ts.map +1 -1
  396. package/dist/type_primitives/error.d.cts +1 -2
  397. package/dist/type_primitives/error.d.ts +1 -2
  398. package/dist/type_primitives/error.d.ts.map +1 -1
  399. package/dist/type_primitives/index.d.cts +1 -1
  400. package/dist/type_primitives/index.d.ts +1 -1
  401. package/dist/type_primitives/sparse_map/sparse_map.d.cts +3 -7
  402. package/dist/type_primitives/sparse_map/sparse_map.d.ts +3 -7
  403. package/dist/type_primitives/sparse_map/sparse_map.d.ts.map +1 -1
  404. package/dist/type_primitives/sparse_set/sparse_set.d.cts +2 -6
  405. package/dist/type_primitives/sparse_set/sparse_set.d.ts +2 -6
  406. package/dist/type_primitives/sparse_set/sparse_set.d.ts.map +1 -1
  407. package/dist/type_primitives/topological_sort/topological_sort.d.cts +1 -5
  408. package/dist/type_primitives/topological_sort/topological_sort.d.ts +1 -5
  409. package/dist/type_primitives/topological_sort/topological_sort.d.ts.map +1 -1
  410. package/dist/type_primitives/typed_arrays/typed_arrays.d.cts +18 -17
  411. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +18 -17
  412. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts.map +1 -1
  413. package/dist/utils/error.d.ts.map +1 -1
  414. package/dist/version.d.cts +4 -4
  415. package/dist/version.d.ts +4 -4
  416. package/dist/worker.cjs +1 -0
  417. package/dist/worker.d.cts +17 -0
  418. package/dist/worker.d.ts +17 -0
  419. package/dist/worker.d.ts.map +1 -0
  420. package/dist/worker.development.cjs +1 -0
  421. package/dist/worker.development.js +253 -0
  422. package/dist/worker.js +253 -0
  423. package/package.json +363 -191
  424. package/dist/core/ecs/builtin_relations.d.cts +0 -43
  425. package/dist/core/ecs/builtin_relations.d.ts +0 -43
  426. package/dist/core/ecs/builtin_relations.d.ts.map +0 -1
  427. package/dist/core/ecs/event_registry.d.cts +0 -22
  428. package/dist/core/ecs/event_registry.d.ts +0 -22
  429. package/dist/core/ecs/event_registry.d.ts.map +0 -1
  430. package/dist/core/ecs/relation_service.d.ts.map +0 -1
  431. package/dist/core/ecs/resume.d.cts +0 -85
  432. package/dist/core/ecs/resume.d.ts +0 -85
  433. package/dist/core/ecs/resume.d.ts.map +0 -1
  434. package/dist/core/ecs/snapshot_service.d.cts +0 -94
  435. package/dist/core/ecs/snapshot_service.d.ts +0 -94
  436. package/dist/core/ecs/snapshot_service.d.ts.map +0 -1
  437. package/dist/extensions/editor/editor.d.ts.map +0 -1
  438. package/dist/extensions/editor/field_handle.d.ts.map +0 -1
  439. package/dist/extensions/editor/index.cjs +0 -1
  440. package/dist/extensions/editor/index.d.cts +0 -21
  441. package/dist/extensions/editor/index.d.ts +0 -21
  442. package/dist/extensions/editor/index.d.ts.map +0 -1
  443. package/dist/extensions/editor/index.development.cjs +0 -1
  444. package/dist/extensions/reactive/ecs_sync.d.cts +0 -214
  445. package/dist/extensions/reactive/ecs_sync.d.ts +0 -214
  446. package/dist/extensions/reactive/ecs_sync.d.ts.map +0 -1
  447. package/dist/extensions/reactive/index.cjs +0 -1
  448. package/dist/extensions/reactive/index.d.cts +0 -23
  449. package/dist/extensions/reactive/index.d.ts +0 -23
  450. package/dist/extensions/reactive/index.d.ts.map +0 -1
  451. package/dist/extensions/reactive/index.development.cjs +0 -1
  452. package/dist/extensions/reactive/index.development.js +0 -215
  453. package/dist/extensions/reactive/index.js +0 -215
  454. package/dist/extensions/solid/index.cjs +0 -1
  455. package/dist/extensions/solid/index.d.cts +0 -6
  456. package/dist/extensions/solid/index.d.ts +0 -6
  457. package/dist/extensions/solid/index.d.ts.map +0 -1
  458. package/dist/extensions/solid/index.development.cjs +0 -1
  459. package/dist/extensions/solid/index.development.js +0 -40
  460. package/dist/extensions/solid/index.js +0 -36
  461. package/dist/extensions/solid/kernel_solid.d.cts +0 -45
  462. package/dist/extensions/solid/kernel_solid.d.ts +0 -45
  463. package/dist/extensions/solid/kernel_solid.d.ts.map +0 -1
  464. package/dist/host_commands-3jyFfWNg.js +0 -2326
  465. package/dist/host_commands-DNf0f6ko.cjs +0 -1
  466. package/dist/internal-C9jjL90H.js +0 -2485
  467. package/dist/internal-RZN14uMw.cjs +0 -2
  468. package/dist/interop-CT-REx0W.cjs +0 -1
  469. package/dist/interop-CcY6ASQc.js +0 -18
  470. package/dist/interop-DqxleBo7.js +0 -18
  471. package/dist/interop-T1HZ-Dpa.cjs +0 -1
  472. package/dist/kernel-Cz2Kxlwl.js +0 -240
  473. package/dist/kernel-DgyrLFjW.js +0 -227
  474. package/dist/kernel-sw7ScKWu.cjs +0 -1
  475. package/dist/kernel-yWV3XnAb.cjs +0 -1
  476. package/dist/reactive/array.d.cts +0 -24
  477. package/dist/reactive/array.d.ts +0 -24
  478. package/dist/reactive/array.d.ts.map +0 -1
  479. package/dist/reactive/index.cjs +0 -1
  480. package/dist/reactive/index.d.cts +0 -11
  481. package/dist/reactive/index.d.ts +0 -11
  482. package/dist/reactive/index.d.ts.map +0 -1
  483. package/dist/reactive/index.development.cjs +0 -1
  484. package/dist/reactive/index.development.js +0 -18
  485. package/dist/reactive/index.js +0 -18
  486. package/dist/reactive/interop.d.cts +0 -19
  487. package/dist/reactive/interop.d.ts +0 -19
  488. package/dist/reactive/interop.d.ts.map +0 -1
  489. package/dist/reactive/kernel.d.cts +0 -73
  490. package/dist/reactive/kernel.d.ts +0 -73
  491. package/dist/reactive/kernel.d.ts.map +0 -1
  492. package/dist/reactive/map.d.cts +0 -16
  493. package/dist/reactive/map.d.ts +0 -16
  494. package/dist/reactive/map.d.ts.map +0 -1
  495. package/dist/reactive/shallow.d.cts +0 -11
  496. package/dist/reactive/shallow.d.ts +0 -11
  497. package/dist/reactive/shallow.d.ts.map +0 -1
  498. package/dist/reactive/struct.d.cts +0 -10
  499. package/dist/reactive/struct.d.ts +0 -10
  500. package/dist/reactive/struct.d.ts.map +0 -1
  501. package/dist/shallow-9S1pY_Iw.js +0 -159
  502. package/dist/shallow-C5YmTbtb.cjs +0 -1
  503. package/dist/shallow-DQ8aG51_.cjs +0 -1
  504. package/dist/shallow-DfnAm9vG.js +0 -150
  505. package/dist/shared-BMXh9hxm.cjs +0 -1
  506. package/dist/shared-DQKK0i-E.js +0 -109
  507. package/dist/topological_sort-BDvEyb9W.cjs +0 -1
  508. package/dist/topological_sort-DK6EjpWa.js +0 -135
  509. package/dist/typed_arrays-BcXcnzB4.js +0 -258
  510. package/dist/typed_arrays-D3NmwtCG.cjs +0 -1
@@ -0,0 +1,403 @@
1
+ import { ECSError as g, ECS_ERROR as E } from "../index.js";
2
+ import { u as S } from "./assertions-gtDVfbnQ.js";
3
+ import { componentDebugName as O } from "../internal.js";
4
+ import { r as f } from "./arrays-Dr_1hCjL.js";
5
+ const u = !1, C = (a) => S(a), k = Object.freeze({
6
+ reads: Object.freeze([]),
7
+ writes: Object.freeze([]),
8
+ spawns: Object.freeze([]),
9
+ despawns: Object.freeze([]),
10
+ transitions: Object.freeze([]),
11
+ resourceReads: Object.freeze([]),
12
+ resourceWrites: Object.freeze([]),
13
+ sparseReads: Object.freeze([]),
14
+ sparseWrites: Object.freeze([]),
15
+ relationReads: Object.freeze([]),
16
+ relationWrites: Object.freeze([])
17
+ }), b = "observers", m = Symbol.dispose ?? Symbol.for("Symbol.dispose"), y = (1 << 20) - 1;
18
+ let w = 0;
19
+ function v(a, e) {
20
+ const t = {
21
+ ...k,
22
+ ...e,
23
+ id: C(w++),
24
+ name: a,
25
+ fn: A
26
+ };
27
+ return Object.freeze(t);
28
+ }
29
+ function A() {
30
+ }
31
+ function x(a) {
32
+ const e = /* @__PURE__ */ new Set();
33
+ if (a) for (let t = 0; t < a.length; t++) e.add(a[t].id);
34
+ return e;
35
+ }
36
+ function B(a) {
37
+ const e = (n, o) => n.cid - o.cid || n.id - o.id, t = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
38
+ for (const n of a)
39
+ t.set(n, []), i.set(n, 0);
40
+ for (const n of a)
41
+ if (n.writes.size !== 0)
42
+ for (const o of a) {
43
+ if (n === o) continue;
44
+ let d = !1;
45
+ for (const c of n.writes)
46
+ if (o.reads.has(c)) {
47
+ d = !0;
48
+ break;
49
+ }
50
+ d && (t.get(n).push(o), i.set(o, i.get(o) + 1));
51
+ }
52
+ const s = a.filter((n) => i.get(n) === 0).sort(e), r = [];
53
+ for (; s.length > 0; ) {
54
+ const n = s.shift();
55
+ r.push(n);
56
+ for (const o of t.get(n)) {
57
+ const d = i.get(o) - 1;
58
+ i.set(o, d), d === 0 && (s.push(o), s.sort(e));
59
+ }
60
+ }
61
+ if (r.length !== a.length) {
62
+ const n = new Set(r);
63
+ for (const o of a.slice().sort(e)) n.has(o) || r.push(o);
64
+ }
65
+ return r;
66
+ }
67
+ class R {
68
+ constructor(e, t) {
69
+ this._store = e, this._ctx = t;
70
+ }
71
+ _entries = [];
72
+ /** ComponentID → its observers (structural + onSet). */
73
+ _byCid = /* @__PURE__ */ new Map();
74
+ /** The entity-level onSet observers on sparse components, in registration
75
+ * order. */
76
+ _sparseEntries = [];
77
+ /** Per-`dispatchSet` cache of each sparse component's drain, so two
78
+ * observers on one sparse component fire over one snapshot. */
79
+ _sparseDrainCache = /* @__PURE__ */ new Map();
80
+ /** Cached access-topological order. A register or a dispose invalidates it. */
81
+ _topo = null;
82
+ // --- dispatch scratch (reused, never reallocated in the hot loop) ---
83
+ // Per-component eid buckets for the current structural round, keyed by cid.
84
+ _addBuckets = /* @__PURE__ */ new Map();
85
+ _remBuckets = /* @__PURE__ */ new Map();
86
+ // Disable and enable buckets, populated only on a toggle-drain round
87
+ // (toggles drain once add, remove and destroy are quiescent, so a round carries
88
+ // either structural events or toggle events, never both).
89
+ _disBuckets = /* @__PURE__ */ new Map();
90
+ _enaBuckets = /* @__PURE__ */ new Map();
91
+ // The radix scratch is a typed array, grown by doubling, and never a plain
92
+ // array grown by a length assignment: JavaScriptCore turns the latter into a
93
+ // sparse store, and each element store in the pass becomes a hash insert.
94
+ // The drain of a large frame is far slower there for that reason.
95
+ _radixOut = new Uint32Array(1024);
96
+ _radixC0 = new Int32Array(1024);
97
+ _radixC1 = new Int32Array(1024);
98
+ // Per-`dispatchSet` cache of each component's drain, so a component with
99
+ // more than one per-entity onSet observer drains exactly once and fans the
100
+ // same snapshot out to every observer. Cleared at the end of each dispatch.
101
+ // (Bug: a second per-entity onSet observer on the same component used to
102
+ // see an empty list.)
103
+ _setDrainCache = /* @__PURE__ */ new Map();
104
+ get count() {
105
+ return this._entries.length + this._sparseEntries.length;
106
+ }
107
+ /** The synthesized `SystemDescriptor`s of every registered observer, in
108
+ * registration order (`dispose()` splices entries out, so none are stale).
109
+ * Fed into the `startup()` archetype-prewarm closure so an observer's declared
110
+ * `spawns` and `transitions` create their target archetypes eagerly, exactly as a
111
+ * system's do. Without this an archetype an observer spawns into or transitions to
112
+ * first-touches lazily mid-tick, the one asymmetry left in the otherwise
113
+ * uniform "no lazy archetypes" prewarm. */
114
+ descriptors() {
115
+ const e = [];
116
+ for (let t = 0; t < this._entries.length; t++) e.push(this._entries[t].descriptor);
117
+ for (let t = 0; t < this._sparseEntries.length; t++)
118
+ e.push(this._sparseEntries[t].descriptor);
119
+ return e;
120
+ }
121
+ register(e, t) {
122
+ if (typeof e == "number") return this._registerSparse(e, t);
123
+ const i = e.id;
124
+ if (typeof i != "number")
125
+ throw new g(
126
+ E.OBSERVER_INVALID_CONFIG,
127
+ "observe(): the definition is not a registered component. Observe a dense or a sparse component"
128
+ );
129
+ const s = t.granularity ?? "archetype", r = t.onSet !== void 0 && s === "entity", n = t.onSet !== void 0 && s !== "entity", o = t.access ?? {}, d = v(
130
+ t.name ?? `observer(${O(e) ?? i})`,
131
+ o
132
+ ), c = {
133
+ // Share one identity space with the descriptor (used only for the
134
+ // topo tie-break + diagnostics).
135
+ id: d.id,
136
+ cid: i,
137
+ def: e,
138
+ onAdd: t.onAdd,
139
+ onRemove: t.onRemove,
140
+ onDisable: t.onDisable,
141
+ onEnable: t.onEnable,
142
+ onSetEntity: r ? t.onSet : void 0,
143
+ onSetArch: n ? t.onSet : void 0,
144
+ descriptor: d,
145
+ writes: x(o.writes),
146
+ reads: x(o.reads),
147
+ yieldExisting: t.yieldExisting ?? !1,
148
+ lastSetTick: 0,
149
+ disposed: !1
150
+ };
151
+ this._entries.push(c);
152
+ let l = this._byCid.get(i);
153
+ l === void 0 && (l = [], this._byCid.set(i, l)), l.push(c), this._topo = null, this._reconfigureComponent(i), c.yieldExisting && c.onAdd !== void 0 && this._yieldExisting(c);
154
+ const h = () => this._dispose(c);
155
+ return { dispose: h, [m]: h };
156
+ }
157
+ /** The sparse arm of `register`: an entity-level onSet, and nothing else.
158
+ * A sparse add and remove are immediate and touch no archetype, so there
159
+ * is no flush boundary to fire a structural observer at, and no archetype
160
+ * column for the archetype grain. */
161
+ _registerSparse(e, t) {
162
+ if (t.onSet === void 0 || t.granularity !== "entity" || t.onAdd !== void 0 || t.onRemove !== void 0 || t.onDisable !== void 0 || t.onEnable !== void 0)
163
+ throw new g(
164
+ E.OBSERVER_INVALID_CONFIG,
165
+ 'observe(): a sparse component takes onSet with granularity "entity" and no other callback. Move onAdd, onRemove, onDisable, onEnable and the archetype grain to a dense component'
166
+ );
167
+ const i = v(
168
+ t.name ?? `observer(sparse ${e})`,
169
+ t.access ?? {}
170
+ ), s = {
171
+ id: i.id,
172
+ sid: e,
173
+ onSet: t.onSet,
174
+ descriptor: i,
175
+ disposed: !1
176
+ };
177
+ this._sparseEntries.push(s), this._store.configureSparseObservation(b, e, !0);
178
+ const r = () => {
179
+ if (s.disposed) return;
180
+ s.disposed = !0;
181
+ const n = this._sparseEntries.indexOf(s);
182
+ n >= 0 && this._sparseEntries.splice(n, 1);
183
+ let o = !1;
184
+ for (let d = 0; d < this._sparseEntries.length; d++)
185
+ this._sparseEntries[d].sid === e && (o = !0);
186
+ o || this._store.configureSparseObservation(b, e, !1);
187
+ };
188
+ return { dispose: r, [m]: r };
189
+ }
190
+ _dispose(e) {
191
+ if (e.disposed) return;
192
+ e.disposed = !0;
193
+ const t = this._entries.indexOf(e);
194
+ t >= 0 && this._entries.splice(t, 1);
195
+ const i = this._byCid.get(e.cid);
196
+ if (i !== void 0) {
197
+ const s = i.indexOf(e);
198
+ s >= 0 && i.splice(s, 1), i.length === 0 && this._byCid.delete(e.cid);
199
+ }
200
+ this._topo = null, this._reconfigureComponent(e.cid);
201
+ }
202
+ /** Recompute the component's hot-path observation flags from its live
203
+ * observers and push them to the store (which owns the flags + fast-path
204
+ * counters). */
205
+ _reconfigureComponent(e) {
206
+ const t = this._byCid.get(e);
207
+ let i = !1, s = !1, r = !1, n = !1, o = !1;
208
+ if (t !== void 0)
209
+ for (let d = 0; d < t.length; d++) {
210
+ const c = t[d];
211
+ c.onAdd !== void 0 && (i = !0), c.onRemove !== void 0 && (s = !0), c.onDisable !== void 0 && (r = !0), c.onEnable !== void 0 && (n = !0), c.onSetEntity !== void 0 && (o = !0);
212
+ }
213
+ this._store.configureObservation(b, e, {
214
+ add: i,
215
+ remove: s,
216
+ disable: r,
217
+ enable: n,
218
+ set: o
219
+ });
220
+ }
221
+ _getTopo() {
222
+ return this._topo === null && (this._topo = B(this._entries)), this._topo;
223
+ }
224
+ // =======================================================
225
+ // Structural dispatch (onAdd and onRemove)
226
+ // =======================================================
227
+ /**
228
+ * Fire onAdd, onRemove, onDisable and onEnable for one fixed-point round's
229
+ * effective events, in canonical order: access-topological across observers,
230
+ * entity-id order (radix) within each observer. Called through the store's
231
+ * structural hook after the batch commits. Observer callbacks may
232
+ * enqueue further structural ops (or toggles) onto the deferred buffers (the
233
+ * store loops until quiescent).
234
+ *
235
+ * The events arrive as flat `(comp, eid)` parallel arrays collected during the
236
+ * flush. This dispatch buckets by component once (O(K)), then walks observers
237
+ * in topo order so a producer's writes are visible to a consumer
238
+ * (glitch-free). A round
239
+ * carries either structural (add, remove) or toggle (disable, enable) events, never both,
240
+ * toggles drain only once add, remove and destroy are quiescent (`flushStructural`),
241
+ * but all four bucket uniformly. The empty pairs are no-ops. Within an
242
+ * observer the fire order is remove, add, disable, enable (the "leaving" edges
243
+ * before the "entering" edges).
244
+ */
245
+ dispatchStructural(e) {
246
+ this._bucket(e.addComp, e.addEid, e.addLen, this._addBuckets), this._bucket(e.remComp, e.remEid, e.remLen, this._remBuckets), this._bucket(e.disComp, e.disEid, e.disLen, this._disBuckets), this._bucket(e.enaComp, e.enaEid, e.enaLen, this._enaBuckets);
247
+ const t = this._getTopo();
248
+ for (let i = 0; i < t.length; i++) {
249
+ const s = t[i];
250
+ if (!s.disposed) {
251
+ if (s.onRemove !== void 0) {
252
+ const r = this._remBuckets.get(s.cid);
253
+ r !== void 0 && r.length > 0 && this._fireEach(s, s.onRemove, r, "remove");
254
+ }
255
+ if (s.onAdd !== void 0) {
256
+ const r = this._addBuckets.get(s.cid);
257
+ r !== void 0 && r.length > 0 && this._fireEach(s, s.onAdd, r, "add");
258
+ }
259
+ if (s.onDisable !== void 0) {
260
+ const r = this._disBuckets.get(s.cid);
261
+ r !== void 0 && r.length > 0 && this._fireEach(s, s.onDisable, r, "disable");
262
+ }
263
+ if (s.onEnable !== void 0) {
264
+ const r = this._enaBuckets.get(s.cid);
265
+ r !== void 0 && r.length > 0 && this._fireEach(s, s.onEnable, r, "enable");
266
+ }
267
+ }
268
+ }
269
+ this._clearBuckets(this._addBuckets), this._clearBuckets(this._remBuckets), this._clearBuckets(this._disBuckets), this._clearBuckets(this._enaBuckets);
270
+ }
271
+ /** Radix-sort `eids` by entity index (canonical within-observer order), then
272
+ * fire `fn` per entity under the observer's access scope. */
273
+ _fireEach(e, t, i, s) {
274
+ this._radixOut = f(i, this._radixOut, this._radixC0, this._radixC1);
275
+ try {
276
+ const r = u ? this._store.trace : null;
277
+ for (let n = 0; n < i.length; n++)
278
+ t(S(i[n]), this._ctx);
279
+ } finally {
280
+ }
281
+ }
282
+ _bucket(e, t, i, s) {
283
+ for (let r = 0; r < i; r++) {
284
+ const n = e[r];
285
+ let o = s.get(n);
286
+ o === void 0 && (o = [], s.set(n, o)), o.push(t[r]);
287
+ }
288
+ }
289
+ _clearBuckets(e) {
290
+ for (const t of e.values()) t.length = 0;
291
+ }
292
+ // =======================================================
293
+ // onSet dispatch (post-update detection point)
294
+ // =======================================================
295
+ /**
296
+ * Fire onSet observers for the current frame, in canonical order. Per-entity
297
+ * onSet drains the opt-in dirty list, once for each changed entity.
298
+ * Archetype-granular onSet scans the change tick, once for each changed
299
+ * archetype column.
300
+ * Called through the plugin's settle hook, after every phase of the frame.
301
+ * `run` is the change tick advanced
302
+ * for this dispatch: above every system run of the frame, and the baseline
303
+ * each archetype-granular observer keeps for its next dispatch.
304
+ */
305
+ dispatchSet(e) {
306
+ if (this._entries.length === 0 && this._sparseEntries.length === 0) return;
307
+ const t = this._getTopo(), i = this._setDrainCache;
308
+ for (let r = 0; r < t.length; r++) {
309
+ const n = t[r];
310
+ n.onSetEntity !== void 0 ? this._dispatchSetEntity(n, i, e) : n.onSetArch !== void 0 && this._dispatchSetArch(n, e);
311
+ }
312
+ i.clear();
313
+ const s = this._sparseEntries;
314
+ if (s.length !== 0) {
315
+ const r = this._sparseDrainCache;
316
+ for (let n = 0; n < s.length; n++) {
317
+ const o = s[n];
318
+ o.disposed || this._dispatchSparseSet(o, r, e);
319
+ }
320
+ r.clear();
321
+ }
322
+ }
323
+ /** Fire one sparse observer over the members recorded since the last
324
+ * drain. The store's walk gives alive, member and enabled entities, so no
325
+ * check remains here. Canonical order by entity index, through the radix. */
326
+ _dispatchSparseSet(e, t, i) {
327
+ let s = t.get(e.sid);
328
+ if (s === void 0 && (s = this._store.drainSparseSet(e.sid, i), this._radixOut = f(s, this._radixOut, this._radixC0, this._radixC1), t.set(e.sid, s)), s.length === 0) return;
329
+ const r = e.onSet;
330
+ try {
331
+ for (let n = 0; n < s.length; n++)
332
+ r(s[n], this._ctx);
333
+ } finally {
334
+ }
335
+ }
336
+ _dispatchSetEntity(e, t, i) {
337
+ let s = t.get(e.cid);
338
+ s === void 0 && (s = this._store.drainSet(e.cid, i), this._radixOut = f(s.scanned, this._radixOut, this._radixC0, this._radixC1), this._radixOut = f(s.listed, this._radixOut, this._radixC0, this._radixC1), D(s.listed), t.set(e.cid, s));
339
+ const r = s.scanned, n = s.listed, o = r.length, d = n.length;
340
+ if (o === 0 && d === 0) return;
341
+ const c = e.def, l = e.onSetEntity;
342
+ try {
343
+ let h = 0, p = 0;
344
+ for (; h < o || p < d; ) {
345
+ let _;
346
+ if (p >= d || h < o && (r[h] & y) < (n[p] & y))
347
+ _ = r[h++];
348
+ else if (_ = n[p++], !this._store.isAlive(_) || !this._store.hasComponent(_, c) || this._store.isDisabled(_))
349
+ continue;
350
+ l(_, this._ctx);
351
+ }
352
+ } finally {
353
+ }
354
+ }
355
+ _dispatchSetArch(e, t) {
356
+ const i = e.onSetArch, s = e.lastSetTick;
357
+ try {
358
+ this._store.forEachChangedArchetype(e.cid, s, (r) => {
359
+ i(r, this._ctx);
360
+ });
361
+ } finally {
362
+ }
363
+ e.lastSetTick = t;
364
+ }
365
+ // =======================================================
366
+ // Seeding a new observer with the existing members
367
+ // =======================================================
368
+ _yieldExisting(e) {
369
+ const t = e.onAdd, i = this._store.collectEnabledWith(e.cid);
370
+ if (i.length !== 0) {
371
+ this._radixOut = f(i, this._radixOut, this._radixC0, this._radixC1);
372
+ try {
373
+ for (let s = 0; s < i.length; s++) t(S(i[s]), this._ctx);
374
+ } finally {
375
+ }
376
+ }
377
+ }
378
+ }
379
+ function D(a) {
380
+ const e = a.length;
381
+ if (e < 2) return;
382
+ let t = 1;
383
+ for (let i = 1; i < e; i++)
384
+ a[i] !== a[t - 1] && (a[t++] = a[i]);
385
+ a.length = t;
386
+ }
387
+ function N() {
388
+ return {
389
+ name: "observers",
390
+ install(a) {
391
+ const e = new R(a.store, a.context);
392
+ return a.onSettle((t) => e.dispatchSet(t)), a.onPrewarm(() => e.descriptors()), a.changes.addStructuralHook((t) => e.dispatchStructural(t)), {
393
+ observe(t, i) {
394
+ return e.register(t, i);
395
+ }
396
+ };
397
+ }
398
+ };
399
+ }
400
+ export {
401
+ R as ObserverRegistry,
402
+ N as observers
403
+ };