@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
@@ -1,142 +1,126 @@
1
- import { SystemContext } from './query.js';
1
+ import { SystemEntry, SystemSet, SystemSetConfig } from './system_set.js';
2
+ import { Phase, PhaseConfig, SchedulePhase } from './phase.js';
3
+ import { SystemContext } from './system_context.js';
2
4
  import { SystemDescriptor } from './system.js';
3
5
  import { ComputeBackend } from './compute_backend.js';
4
- import { RunCondition } from './run_condition.js';
5
- export declare enum SCHEDULE {
6
- PRE_STARTUP = "PRE_STARTUP",
7
- STARTUP = "STARTUP",
8
- POST_STARTUP = "POST_STARTUP",
9
- FIXED_UPDATE = "FIXED_UPDATE",
10
- PRE_UPDATE = "PRE_UPDATE",
11
- UPDATE = "UPDATE",
12
- POST_UPDATE = "POST_UPDATE"
13
- }
14
- /**
15
- * An opaque handle for a named group of systems (#576). A set carries a shared
16
- * run condition and shared ordering that every member inherits. Sets are
17
- * identified by **object identity**, not by name — create one with
18
- * `systemSet(name)`, hold the handle, and reuse it across `addSystems`
19
- * (`SystemEntry.set`) and `Schedule.configureSet`. The `name` is for
20
- * diagnostics only.
21
- */
22
- export interface SystemSet {
23
- readonly name: string;
24
- }
25
- /** Create a `SystemSet` handle (#576). Two calls with the same name are two
26
- * distinct sets — keep the returned handle and pass it around. */
27
- export declare function systemSet(name: string): SystemSet;
28
- /** A `before`/`after` ordering target: either a concrete system or a whole set
29
- * (expanded to its members within the same phase at sort time). */
30
- export type SystemOrderingTarget = SystemDescriptor | SystemSet;
31
- /** Shared configuration applied to a `SystemSet` via `configureSet` (#576).
32
- * Accumulates across calls — conditions AND together, ordering targets union. */
33
- export interface SystemSetConfig {
34
- /** Condition(s) every member is gated by (ANDed with each member's own). */
35
- runIf?: RunCondition | readonly RunCondition[];
36
- /** Every member runs before each of these targets. */
37
- before?: readonly SystemOrderingTarget[];
38
- /** Every member runs after each of these targets. */
39
- after?: readonly SystemOrderingTarget[];
40
- }
41
- export interface SystemOrdering {
42
- before?: readonly SystemOrderingTarget[];
43
- after?: readonly SystemOrderingTarget[];
44
- }
45
- export interface SystemEntry {
46
- system: SystemDescriptor;
47
- ordering?: SystemOrdering;
48
- /** Run condition(s) gating just this system — ANDed with any set conditions
49
- * it inherits (#576). A `false` verdict skips the body that tick. */
50
- runIf?: RunCondition | readonly RunCondition[];
51
- /** Set membership — the system inherits each set's shared condition and
52
- * ordering (#576). */
53
- set?: SystemSet | readonly SystemSet[];
6
+ /** What the schedule needs of a worker pool, and nothing more.
7
+ *
8
+ * The pool ships in the workers plugin, so a class reference here would pull
9
+ * the pool, the plan builder and the node threads shim into every program.
10
+ * This interface is structural, and it erases, so the core graph reaches none
11
+ * of them. `run` answers false below the row threshold, before the kernel is
12
+ * loaded, and after a failed join. Then the sequential body runs. */
13
+ export interface RouteDispatch {
14
+ /** `plan` is the opaque value the descriptor carries. The schedule loads
15
+ * it and passes it on, and only the route reads inside it. Answering false
16
+ * puts this dispatch back on the system's own `fn`. */
17
+ run(plan: object, ctx: SystemContext, deltaTime: number, runTick: number): boolean;
54
18
  }
55
19
  export declare class Schedule {
56
- private readonly labelSystems;
57
- private readonly sortedCache;
58
- private readonly systemIndex;
59
- private readonly systemLastRun;
60
- private readonly gatedSystems;
61
- private readonly setConditions;
62
- private readonly setOrdering;
63
- private nextInsertionOrder;
20
+ private readonly _phases;
21
+ private readonly _builtins;
22
+ private _startupOrder;
23
+ private _fixedOrder;
24
+ private _updateOrder;
25
+ private readonly _phaseBySystem;
26
+ private readonly _lastRunTicks;
27
+ private readonly _slotBySystem;
28
+ private readonly _freeSlots;
29
+ private _driveDepth;
30
+ private readonly _gatedSystems;
31
+ private readonly _conditionsBySet;
32
+ private readonly _orderingBySet;
33
+ private _nextInsertionOrder;
64
34
  private _backend;
65
- /** Dev-diagnostic sink (`ECSOptions.onWarn`); defaults to `console.warn`.
66
- * The only schedule diagnostic today is `warnDroppedEdge`. */
67
- private readonly onWarn;
35
+ private _route;
36
+ /** Dev-diagnostic sink (`ECSOptions.onWarn`). Defaults to `console.warn`.
37
+ * The only schedule diagnostic today is the dropped ordering edge
38
+ * `schedule_plan.ts` reports. */
39
+ private readonly _onWarn;
40
+ private _fixedSystemCount;
41
+ private _nextPhaseOrder;
68
42
  constructor(onWarn?: (message: string) => void);
69
- addSystems(label: SCHEDULE, ...entries: (SystemDescriptor | SystemEntry)[]): void;
70
43
  /**
71
- * Configure a `SystemSet` (#576) its shared run condition(s) and/or
44
+ * Add one phase to a loop and hand back its handle. Cold path, setup only.
45
+ *
46
+ * `before` and `after` order it against the other phases of the same loop.
47
+ * A target in another loop is dropped, the way a system ordered against a
48
+ * system in another phase is dropped. With neither, the phase runs after
49
+ * every phase declared before it, so it lands at the tail of its loop.
50
+ *
51
+ * The handle is this world's. Two calls with one name make two phases, the
52
+ * rule `systemSet` already follows, so hold the handle rather than the name.
53
+ */
54
+ addPhase(name: string, config: PhaseConfig): Phase;
55
+ private _declarePhase;
56
+ /** Check that a phase belongs to this schedule, and hand it back unchanged.
57
+ * Not a dev guard: a handle from another world would push systems into that
58
+ * world's list, and a production build that scheduled them into nothing is
59
+ * worse than a named fault on a setup call. */
60
+ private _checkPhase;
61
+ /** The node behind either spelling of a phase. Cold path. */
62
+ private _resolvePhase;
63
+ /** Sort one loop's phases and cache the result. Kahn's algorithm with
64
+ * declaration order as the tiebreaker, the same rule the systems inside a
65
+ * phase follow. Cold path, once per `addPhase`. */
66
+ private _resolveOrder;
67
+ addSystems(phase: SchedulePhase, ...entries: (SystemDescriptor | SystemEntry)[]): void;
68
+ /**
69
+ * Configure a `SystemSet`, its shared run conditions, or its
72
70
  * ordering, inherited by every member. Additive and order-independent w.r.t.
73
71
  * `addSystems`: conditions accumulate (ANDed), ordering targets union, and
74
72
  * a member added before or after this call picks the configuration up.
75
73
  */
76
74
  configureSet(set: SystemSet, config: SystemSetConfig): void;
77
75
  removeSystem(system: SystemDescriptor): void;
78
- /** Attach (or, with `null`, detach) the opt-in compute backend (#622). Driven
79
- * by `ECS.attachBackend`; routes any scheduled system carrying a
76
+ /** Drop every cached plan. Cold path, and the reason each caller needs it
77
+ * sits at that call site. */
78
+ private _invalidatePlans;
79
+ /** Attach (or, with `null`, detach) the opt-in compute backend. Driven
80
+ * by `ECS.attachBackend`. Routes any scheduled system carrying a
80
81
  * `backendHandle` to `backend.run(handle)` in place of its `fn`. */
81
82
  setBackend(backend: ComputeBackend | null): void;
82
- runStartup(ctx: SystemContext, tick: number): void;
83
- runUpdate(ctx: SystemContext, deltaTime: number, tick: number): void;
84
- runFixedUpdate(ctx: SystemContext, fixedDt: number, tick: number): void;
83
+ /** Attach (or, with `null`, detach) the system dispatch route. Driven by
84
+ * the plugin that installed it. Runs any scheduled system carrying a
85
+ * `routePlan` through the route in place of its `fn`. */
86
+ setRoute(dispatch: RouteDispatch | null): void;
87
+ runStartup(ctx: SystemContext): void;
88
+ runUpdate(ctx: SystemContext, deltaTime: number): void;
89
+ runFixedUpdate(ctx: SystemContext, fixedDt: number): void;
85
90
  hasFixedSystems(): boolean;
86
91
  getAllSystems(): SystemDescriptor[];
87
92
  hasSystem(system: SystemDescriptor): boolean;
93
+ /** Hand `descriptor` its `_lastRunTicks` slot, keeping the array packed (no
94
+ * holes ⇒ no undefined-check on the read in `_runPhase`, which is the whole
95
+ * point of it not being a `Map`). Idempotent for a descriptor already in this
96
+ * schedule, `_getPlan` re-asks for every system it sorts. A descriptor that
97
+ * was removed and re-added gets a *fresh* slot starting at tick 0, which is
98
+ * what the previous `Map`-based bookkeeping did (`delete` on remove, `set(…, 0)`
99
+ * on re-add). */
100
+ private _assignLastRunSlot;
88
101
  clear(): void;
89
- private runLabel;
102
+ private _runPhase;
90
103
  /**
91
- * Whether a gated system runs this tick the AND of its own conditions and
104
+ * Whether a gated system runs this tick, the and of its own conditions and
92
105
  * every set it belongs to. A set's conditions are evaluated at most once per
93
106
  * phase (memoized in `setVerdicts`) and the verdict gates every member of the
94
- * set uniformly; a `configureSet` between phases is still honored because the
95
- * memo lives only for a single `runLabel` pass. Short-circuits on the first
107
+ * set uniformly. A `configureSet` between phases is still honored because the
108
+ * memo lives only for a single `_runPhase` pass. Short-circuits on the first
96
109
  * `false`. The system's own conditions evaluate per system, in canonical order.
97
110
  *
98
- * #731 SEMANTIC NOTE: this evaluates a set's conditions once-per-set-per-phase
99
- * rather than once-per-member. Equivalent for pure RunConditions; observably
100
- * different only if a set condition reads state mutated earlier in the SAME
101
- * phase (resources write immediately). That is intentional the set gates as a
102
- * unit, so all its members share one verdict for the phase.
111
+ * This evaluates a set's conditions once for each set in each phase, and not
112
+ * once for each member. The two agree for a pure `RunCondition`. They differ
113
+ * only when a set condition reads state a system mutated earlier in the same
114
+ * phase (a resource writes immediately). That is intentional. The set gates
115
+ * as a unit, so every member shares one verdict for the phase.
103
116
  */
104
- private shouldRun;
105
- /** Evaluate a condition list with AND semantics. Each predicate runs inside a
117
+ private _shouldRun;
118
+ /** Evaluate a condition list with and semantics. Each predicate runs inside a
106
119
  * reads-only `accessCheck` span (dev), so a condition that reads an
107
- * undeclared resource or attempts any mutation throws. */
108
- private evalConditions;
109
- private getSorted;
110
- /**
111
- * Delegates to the shared topologicalSort utility.
112
- * Builds the dependency edge map from before/after constraints, then
113
- * catches any cycle TypeError and re-throws as ECSError.
114
- */
115
- private sortSystems;
116
- /**
117
- * Add the topo edges for one ordering list (#576). For `"before"` the source
118
- * runs before each target (edge source→target); for `"after"` it runs after
119
- * each target (edge target→source). A `SystemSet` target expands to every
120
- * member within this phase (self-edges skipped, so a member ordered against
121
- * its own set is a no-op); a descriptor target absent from this phase is
122
- * dropped — with a dev warning only for a concrete system, since a set
123
- * legitimately expands to nothing when its members live in another phase.
124
- */
125
- private resolveEdges;
126
- /** Push one directed edge into the adjacency map. Both endpoints are known to
127
- * be in this phase (callers guard), so `edges.get(...)` is non-null. */
128
- private addDirectedEdge;
129
- /**
130
- * Dev-only diagnostic for an ordering edge that was dropped during sort.
131
- *
132
- * Cross-label ordering is impossible by design (`nodeSet` is per-label), so
133
- * a target registered in *another* phase is skipped silently — that's the
134
- * intended isolation. But a target unknown to *every* phase is almost
135
- * certainly a typo or a system that was never scheduled; without this warning
136
- * the constraint vanishes and the system runs in insertion-order tiebreak as
137
- * if unconstrained, with nothing to distinguish mistake from intent. Compiled
138
- * out of production builds by the `DEV` guards at the call sites.
139
- */
140
- private warnDroppedEdge;
120
+ * undeclared resource, or attempts any mutation, throws. */
121
+ private _evalConditions;
122
+ /** Sort one phase and cache its plan on the phase. Cold: the drive reads
123
+ * `phase.plan` and only lands here when an add or a remove nulled it. */
124
+ private _buildPlan;
141
125
  }
142
126
  //# sourceMappingURL=schedule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/schedule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/schedule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { SystemOrderingTarget, SystemSet } from './system_set.cjs';
2
+ import { SystemDescriptor } from './system.cjs';
3
+ import { RunCondition } from './run_condition.cjs';
4
+ /** A phase's execution plan: its topologically sorted systems and, index-aligned,
5
+ * each one's `_lastRunTicks` slot. Cached as a unit and invalidated together. */
6
+ export interface PhasePlan {
7
+ readonly sorted: SystemDescriptor[];
8
+ readonly slots: Int32Array;
9
+ }
10
+ export interface SystemNode {
11
+ descriptor: SystemDescriptor;
12
+ insertionOrder: number;
13
+ before: Set<SystemOrderingTarget>;
14
+ after: Set<SystemOrderingTarget>;
15
+ /** This system's own run conditions (set conditions are resolved live from
16
+ * `_conditionsBySet` at run time so a later `configureSet` is honored). */
17
+ conditions: readonly RunCondition[];
18
+ /** Sets this system belongs to. */
19
+ sets: readonly SystemSet[];
20
+ }
21
+ /** One set's accumulated ordering, as `configureSet` builds it. A `Set` and not
22
+ * an array, so a target named twice still adds one edge. */
23
+ export interface SetOrdering {
24
+ before: Set<SystemOrderingTarget>;
25
+ after: Set<SystemOrderingTarget>;
26
+ }
27
+ /**
28
+ * Delegates to the shared topologicalSort utility.
29
+ * Builds the dependency edge map from before and after constraints, then
30
+ * catches any cycle TypeError and re-throws as ECSError.
31
+ */
32
+ export declare function sortSystems(nodes: SystemNode[], phase: string, orderingBySet: ReadonlyMap<SystemSet, SetOrdering>, scheduledSystems: ReadonlyMap<SystemDescriptor, unknown>, onWarn: (message: string) => void): SystemDescriptor[];
33
+ //# sourceMappingURL=schedule_plan.d.ts.map
@@ -0,0 +1,33 @@
1
+ import { SystemOrderingTarget, SystemSet } from './system_set.js';
2
+ import { SystemDescriptor } from './system.js';
3
+ import { RunCondition } from './run_condition.js';
4
+ /** A phase's execution plan: its topologically sorted systems and, index-aligned,
5
+ * each one's `_lastRunTicks` slot. Cached as a unit and invalidated together. */
6
+ export interface PhasePlan {
7
+ readonly sorted: SystemDescriptor[];
8
+ readonly slots: Int32Array;
9
+ }
10
+ export interface SystemNode {
11
+ descriptor: SystemDescriptor;
12
+ insertionOrder: number;
13
+ before: Set<SystemOrderingTarget>;
14
+ after: Set<SystemOrderingTarget>;
15
+ /** This system's own run conditions (set conditions are resolved live from
16
+ * `_conditionsBySet` at run time so a later `configureSet` is honored). */
17
+ conditions: readonly RunCondition[];
18
+ /** Sets this system belongs to. */
19
+ sets: readonly SystemSet[];
20
+ }
21
+ /** One set's accumulated ordering, as `configureSet` builds it. A `Set` and not
22
+ * an array, so a target named twice still adds one edge. */
23
+ export interface SetOrdering {
24
+ before: Set<SystemOrderingTarget>;
25
+ after: Set<SystemOrderingTarget>;
26
+ }
27
+ /**
28
+ * Delegates to the shared topologicalSort utility.
29
+ * Builds the dependency edge map from before and after constraints, then
30
+ * catches any cycle TypeError and re-throws as ECSError.
31
+ */
32
+ export declare function sortSystems(nodes: SystemNode[], phase: string, orderingBySet: ReadonlyMap<SystemSet, SetOrdering>, scheduledSystems: ReadonlyMap<SystemDescriptor, unknown>, onWarn: (message: string) => void): SystemDescriptor[];
33
+ //# sourceMappingURL=schedule_plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule_plan.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/schedule_plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;KAkBK;AAIL,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD;iFACiF;AACjF,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IAC1B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACjC;+EAC2E;IAC3E,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC,mCAAmC;IACnC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;CAC3B;AAED;4DAC4D;AAC5D,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAC1B,KAAK,EAAE,UAAU,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,EAClD,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,EAAE,OAAO,CAAC,EACxD,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC/B,gBAAgB,EAAE,CAyGpB"}
@@ -0,0 +1,77 @@
1
+ import { Archetype } from './archetype.cjs';
2
+ import { RelationStoreView } from './relation.cjs';
3
+ import { SparseComponentStore } from './sparse_store.cjs';
4
+ import { ColumnStore, InPlaceBufferAllocator } from '../store/index.cjs';
5
+ /** Combined-frame format version. Bumped if the section framing or host-state
6
+ * layout changes. Independent of `SIM_ABI_VERSION` (which gates the dense
7
+ * bytes). */
8
+ export declare const ECS_SNAPSHOT_VERSION = 1;
9
+ /** Per-archetype host-side row bookkeeping the SAB doesn't carry authoritatively. */
10
+ export interface ArchetypeRowState {
11
+ readonly archetypeId: number;
12
+ /** Total live rows (enabled + disabled). */
13
+ readonly length: number;
14
+ /** Enabled-row partition boundary: rows `[0, enabledCount)` enabled. */
15
+ readonly enabledCount: number;
16
+ }
17
+ /** The host-side state a snapshot captures alongside the dense + sparse bytes. */
18
+ export interface HostState {
19
+ /** World tick at snapshot time (`Store.tick`). */
20
+ readonly tick: number;
21
+ /** Entity-index high-water (count of slots ever issued). Also mirrored in the
22
+ * SAB region's `length` header. Carried here for a cross-check on restore. */
23
+ readonly entityHighWater: number;
24
+ /** Live entity count. */
25
+ readonly entityAliveCount: number;
26
+ /** Recycle free-list in live order (LIFO: the last element is the next slot
27
+ * `createEntity` hands out). */
28
+ readonly freeIndices: readonly number[];
29
+ /** Per-archetype row state, one entry per SAB-backed archetype. */
30
+ readonly archetypeRows: readonly ArchetypeRowState[];
31
+ }
32
+ /** What the snapshot and resume orchestration needs from `Store`, closure-
33
+ * injected (the `RelationServiceHost` style). Accessors re-read live fields
34
+ * per call (the column store and the entity-index views are replaced on
35
+ * restore). The three mutation members keep Store-owned state transitions on
36
+ * the Store side. All cold-path. */
37
+ export interface SnapshotHost {
38
+ readonly sparseStores: () => readonly SparseComponentStore[];
39
+ /** The relation stores, narrowed to what the codec folds and rebuilds. A
40
+ * world without the relations plugin answers with an empty list. */
41
+ readonly relationStores: () => readonly RelationStoreView[];
42
+ /** Live SAB generations view (replanted on restore), for rebuilding
43
+ * relation ids from entity indices. */
44
+ readonly generations: () => Int32Array;
45
+ readonly archetypes: () => readonly Archetype[];
46
+ readonly columnStore: () => ColumnStore;
47
+ readonly bufferAllocator: () => InPlaceBufferAllocator;
48
+ readonly entityIndexCapacity: () => number;
49
+ readonly tick: () => number;
50
+ readonly setTick: (tick: number) => void;
51
+ /** Stamp live row counts into the dense descriptors so a bare dense
52
+ * reader of the snapshot sees self-consistent counts. */
53
+ readonly publishRowCounts: () => void;
54
+ /** Adopt a restored dense store: swap the live backing, refresh archetype
55
+ * views, recover the allocator high-water from the restored region, and
56
+ * republish (the grow tail). Owned by Store, see `_mountRestoredDense`. */
57
+ readonly mountRestoredDense: (restored: ColumnStore) => void;
58
+ /** Rebuild each archetype's host-side `length` and `enabledCount`/entity-id
59
+ * back-references from the restored entity-index region + captured host
60
+ * state. Owned by Store, see `_reconstructHostRows`. */
61
+ readonly reconstructHostRows: (host: HostState) => void;
62
+ /** Every archetype's membership only changed, bump the query epoch and
63
+ * force the next descriptor publish. */
64
+ readonly invalidateCaches: () => void;
65
+ }
66
+ /** What the world calls into a snapshot service it did not build.
67
+ *
68
+ * `Store` keeps the `DETERMINISM_DISABLED` gate and delegates the four
69
+ * captures and mounts through this. A world without the plugin holds `null`
70
+ * here and answers a reach with the fault that names the import. */
71
+ export interface SnapshotHooks {
72
+ snapshot(): Uint8Array;
73
+ restore(bytes: Uint8Array): void;
74
+ snapshotSparse(): Uint8Array;
75
+ restoreSparse(bytes: Uint8Array): void;
76
+ }
77
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1,77 @@
1
+ import { Archetype } from './archetype.js';
2
+ import { RelationStoreView } from './relation.js';
3
+ import { SparseComponentStore } from './sparse_store.js';
4
+ import { ColumnStore, InPlaceBufferAllocator } from '../store/index.js';
5
+ /** Combined-frame format version. Bumped if the section framing or host-state
6
+ * layout changes. Independent of `SIM_ABI_VERSION` (which gates the dense
7
+ * bytes). */
8
+ export declare const ECS_SNAPSHOT_VERSION = 1;
9
+ /** Per-archetype host-side row bookkeeping the SAB doesn't carry authoritatively. */
10
+ export interface ArchetypeRowState {
11
+ readonly archetypeId: number;
12
+ /** Total live rows (enabled + disabled). */
13
+ readonly length: number;
14
+ /** Enabled-row partition boundary: rows `[0, enabledCount)` enabled. */
15
+ readonly enabledCount: number;
16
+ }
17
+ /** The host-side state a snapshot captures alongside the dense + sparse bytes. */
18
+ export interface HostState {
19
+ /** World tick at snapshot time (`Store.tick`). */
20
+ readonly tick: number;
21
+ /** Entity-index high-water (count of slots ever issued). Also mirrored in the
22
+ * SAB region's `length` header. Carried here for a cross-check on restore. */
23
+ readonly entityHighWater: number;
24
+ /** Live entity count. */
25
+ readonly entityAliveCount: number;
26
+ /** Recycle free-list in live order (LIFO: the last element is the next slot
27
+ * `createEntity` hands out). */
28
+ readonly freeIndices: readonly number[];
29
+ /** Per-archetype row state, one entry per SAB-backed archetype. */
30
+ readonly archetypeRows: readonly ArchetypeRowState[];
31
+ }
32
+ /** What the snapshot and resume orchestration needs from `Store`, closure-
33
+ * injected (the `RelationServiceHost` style). Accessors re-read live fields
34
+ * per call (the column store and the entity-index views are replaced on
35
+ * restore). The three mutation members keep Store-owned state transitions on
36
+ * the Store side. All cold-path. */
37
+ export interface SnapshotHost {
38
+ readonly sparseStores: () => readonly SparseComponentStore[];
39
+ /** The relation stores, narrowed to what the codec folds and rebuilds. A
40
+ * world without the relations plugin answers with an empty list. */
41
+ readonly relationStores: () => readonly RelationStoreView[];
42
+ /** Live SAB generations view (replanted on restore), for rebuilding
43
+ * relation ids from entity indices. */
44
+ readonly generations: () => Int32Array;
45
+ readonly archetypes: () => readonly Archetype[];
46
+ readonly columnStore: () => ColumnStore;
47
+ readonly bufferAllocator: () => InPlaceBufferAllocator;
48
+ readonly entityIndexCapacity: () => number;
49
+ readonly tick: () => number;
50
+ readonly setTick: (tick: number) => void;
51
+ /** Stamp live row counts into the dense descriptors so a bare dense
52
+ * reader of the snapshot sees self-consistent counts. */
53
+ readonly publishRowCounts: () => void;
54
+ /** Adopt a restored dense store: swap the live backing, refresh archetype
55
+ * views, recover the allocator high-water from the restored region, and
56
+ * republish (the grow tail). Owned by Store, see `_mountRestoredDense`. */
57
+ readonly mountRestoredDense: (restored: ColumnStore) => void;
58
+ /** Rebuild each archetype's host-side `length` and `enabledCount`/entity-id
59
+ * back-references from the restored entity-index region + captured host
60
+ * state. Owned by Store, see `_reconstructHostRows`. */
61
+ readonly reconstructHostRows: (host: HostState) => void;
62
+ /** Every archetype's membership only changed, bump the query epoch and
63
+ * force the next descriptor publish. */
64
+ readonly invalidateCaches: () => void;
65
+ }
66
+ /** What the world calls into a snapshot service it did not build.
67
+ *
68
+ * `Store` keeps the `DETERMINISM_DISABLED` gate and delegates the four
69
+ * captures and mounts through this. A world without the plugin holds `null`
70
+ * here and answers a reach with the fault that names the import. */
71
+ export interface SnapshotHooks {
72
+ snapshot(): Uint8Array;
73
+ restore(bytes: Uint8Array): void;
74
+ snapshotSparse(): Uint8Array;
75
+ restoreSparse(bytes: Uint8Array): void;
76
+ }
77
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;KAUK;AAEL,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEpE;;aAEa;AACb,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC9B;AAED,kFAAkF;AAClF,MAAM,WAAW,SAAS;IACzB,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;kFAC8E;IAC9E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,yBAAyB;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;oCACgC;IAChC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACrD;AAED;;;;oCAIoC;AACpC,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,SAAS,oBAAoB,EAAE,CAAC;IAC7D;wEACoE;IACpE,QAAQ,CAAC,cAAc,EAAE,MAAM,SAAS,iBAAiB,EAAE,CAAC;IAC5D;2CACuC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,SAAS,SAAS,EAAE,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,WAAW,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,MAAM,sBAAsB,CAAC;IACvD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,MAAM,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;6DACyD;IACzD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IACtC;;+EAE2E;IAC3E,QAAQ,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7D;;4DAEwD;IACxD,QAAQ,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACxD;4CACwC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CACtC;AAED;;;;oEAIoE;AACpE,MAAM,WAAW,aAAa;IAC7B,QAAQ,IAAI,UAAU,CAAC;IACvB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,cAAc,IAAI,UAAU,CAAC;IAC7B,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CACvC"}
@@ -0,0 +1,42 @@
1
+ import { ColumnStore } from '../store/column_store.cjs';
2
+ import { ArchetypeID } from './archetype_types.cjs';
3
+ import { EntityAllocator } from './entity_allocator.cjs';
4
+ import { HostState } from './snapshot.cjs';
5
+ /** What a restore asks of an archetype. Every live `Archetype` satisfies it. */
6
+ export interface RestorableArchetype {
7
+ readonly isBufferBacked: boolean;
8
+ refreshViews(store: ColumnStore): void;
9
+ resetTicks(): void;
10
+ restoreHostRows(rows: number[], enabledCount: number): void;
11
+ }
12
+ /** One archetype, by id, for the row reconstruction below. */
13
+ export type ArchetypeLookup = (id: ArchetypeID) => RestorableArchetype;
14
+ /**
15
+ * Republish every buffer-backed archetype's views over the restored backing,
16
+ * drop the row ticks, and recover the allocator high-water from the restored
17
+ * entity-index region.
18
+ *
19
+ * The caller assigns the restored store to its own field first, and calls its
20
+ * buffer-resized handler after. The high-water read has to happen before that
21
+ * handler, because the handler mirrors the host high-water back into the
22
+ * header and a stale host value would clobber the restored one.
23
+ *
24
+ * The rows under the tick plane belong to the snapshot now, so no record made
25
+ * before the restore names a write of theirs. That is why every archetype's
26
+ * ticks reset, buffer-backed or not.
27
+ */
28
+ export declare function adoptRestoredBacking(restored: ColumnStore, archetypes: readonly RestorableArchetype[], allocator: EntityAllocator): void;
29
+ /**
30
+ * Rebuild each buffer-backed archetype's host-side `length`, `enabledCount`
31
+ * and per-row entity ids after a restore swapped the dense backing.
32
+ *
33
+ * `length` and the row-to-entity back reference come from a scan of the
34
+ * restored entity-index region, which says what entity occupies what row.
35
+ * `enabledCount` comes from the captured host state, because the enabled
36
+ * partition boundary is positional and has no per-entity byte source.
37
+ *
38
+ * The caller guarantees that `entityArchetypes` and `entityRows` are the views
39
+ * over the restored region, not the views from before the swap.
40
+ */
41
+ export declare function reconstructHostRows(host: HostState, archetypeAt: ArchetypeLookup, entityArchetypes: Int32Array, entityRows: Int32Array, allocator: EntityAllocator): void;
42
+ //# sourceMappingURL=snapshot_mount.d.ts.map
@@ -0,0 +1,42 @@
1
+ import { ColumnStore } from '../store/column_store.js';
2
+ import { ArchetypeID } from './archetype_types.js';
3
+ import { EntityAllocator } from './entity_allocator.js';
4
+ import { HostState } from './snapshot.js';
5
+ /** What a restore asks of an archetype. Every live `Archetype` satisfies it. */
6
+ export interface RestorableArchetype {
7
+ readonly isBufferBacked: boolean;
8
+ refreshViews(store: ColumnStore): void;
9
+ resetTicks(): void;
10
+ restoreHostRows(rows: number[], enabledCount: number): void;
11
+ }
12
+ /** One archetype, by id, for the row reconstruction below. */
13
+ export type ArchetypeLookup = (id: ArchetypeID) => RestorableArchetype;
14
+ /**
15
+ * Republish every buffer-backed archetype's views over the restored backing,
16
+ * drop the row ticks, and recover the allocator high-water from the restored
17
+ * entity-index region.
18
+ *
19
+ * The caller assigns the restored store to its own field first, and calls its
20
+ * buffer-resized handler after. The high-water read has to happen before that
21
+ * handler, because the handler mirrors the host high-water back into the
22
+ * header and a stale host value would clobber the restored one.
23
+ *
24
+ * The rows under the tick plane belong to the snapshot now, so no record made
25
+ * before the restore names a write of theirs. That is why every archetype's
26
+ * ticks reset, buffer-backed or not.
27
+ */
28
+ export declare function adoptRestoredBacking(restored: ColumnStore, archetypes: readonly RestorableArchetype[], allocator: EntityAllocator): void;
29
+ /**
30
+ * Rebuild each buffer-backed archetype's host-side `length`, `enabledCount`
31
+ * and per-row entity ids after a restore swapped the dense backing.
32
+ *
33
+ * `length` and the row-to-entity back reference come from a scan of the
34
+ * restored entity-index region, which says what entity occupies what row.
35
+ * `enabledCount` comes from the captured host state, because the enabled
36
+ * partition boundary is positional and has no per-entity byte source.
37
+ *
38
+ * The caller guarantees that `entityArchetypes` and `entityRows` are the views
39
+ * over the restored region, not the views from before the swap.
40
+ */
41
+ export declare function reconstructHostRows(host: HostState, archetypeAt: ArchetypeLookup, entityArchetypes: Int32Array, entityRows: Int32Array, allocator: EntityAllocator): void;
42
+ //# sourceMappingURL=snapshot_mount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot_mount.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/snapshot_mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;KAoBK;AAGL,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,UAAU,IAAI,IAAI,CAAC;IACnB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5D;AAED,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK,mBAAmB,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,SAAS,mBAAmB,EAAE,EAC1C,SAAS,EAAE,eAAe,GACxB,IAAI,CAWN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,eAAe,EAC5B,gBAAgB,EAAE,UAAU,EAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,eAAe,GACxB,IAAI,CAuCN"}