@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 @@
1
+ export * from "./editor/index.cjs";
@@ -0,0 +1 @@
1
+ export * from "./editor/index.js";
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function o(r,t,e){return`${r}:${t.id}:${e}`}const a=new WeakMap;class h{constructor(t,e){this._readField=t,this._shadow=e,a.set(this,{forward:[],inverse:[]})}_staged=new Map;get _txn(){return a.get(this)}spawn(t,e){const s={kind:"despawn",eid:0};return this._txn.inverse.push(s),this._txn.forward.push({kind:"spawn",components:t,onSpawned:n=>{s.eid=n,e?.(n)}}),this}despawn(t,e){const s={kind:"despawn",eid:t};return this._txn.forward.push(s),this._txn.inverse.push({kind:"spawn",components:e,onSpawned:n=>{s.eid=n}}),this}setField(t,e,s,n){const i=o(t,e,s),d=this._staged.get(i)??this._shadow.get(i)??this._readField(t,e,s)??0;return this._staged.set(i,n),this._txn.forward.push({kind:"set_field",eid:t,def:e,field:s,value:n}),this._txn.inverse.push({kind:"set_field",eid:t,def:e,field:s,value:d}),this}add(t,e,s){return this._txn.forward.push({kind:"add_component",eid:t,def:e,values:s}),this._txn.inverse.push({kind:"remove_component",eid:t,def:e}),this}remove(t,e,s){return this._txn.forward.push({kind:"remove_component",eid:t,def:e}),this._txn.inverse.push({kind:"add_component",eid:t,def:e,values:s}),this}disable(t){return this._txn.forward.push({kind:"disable",eid:t}),this._txn.inverse.push({kind:"enable",eid:t}),this}enable(t){return this._txn.forward.push({kind:"enable",eid:t}),this._txn.inverse.push({kind:"disable",eid:t}),this}}class u{constructor(t,e){this._queue=t,this._readField=e}_undoStack=[];_redoStack=[];_listeners=[];_shadow=new Map;transaction(t){const e=new h(this._readField,this._shadow);return t(e),this._commit(a.get(e))}spawn(t,e){return this.transaction(s=>s.spawn(t,e))}despawn(t,e){return this.transaction(s=>s.despawn(t,e))}setField(t,e,s,n){return this.transaction(i=>i.setField(t,e,s,n))}add(t,e,s){return this.transaction(n=>n.add(t,e,s))}remove(t,e,s){return this.transaction(n=>n.remove(t,e,s))}disable(t){return this.transaction(e=>e.disable(t))}enable(t){return this.transaction(e=>e.enable(t))}undo(){const t=this._undoStack.pop();if(t===void 0)return!1;const e=t.inverse.slice().reverse();for(const s of e)this._queue.push(s);return this._applyShadow(e),this._redoStack.push(t),this._notify(),!0}redo(){const t=this._redoStack.pop();if(t===void 0)return!1;for(const e of t.forward)this._queue.push(e);return this._applyShadow(t.forward),this._undoStack.push(t),this._notify(),!0}clear(){this._undoStack.length=0,this._redoStack.length=0,this._shadow.clear(),this._notify()}depths(){return{undo:this._undoStack.length,redo:this._redoStack.length}}get canUndo(){return this._undoStack.length>0}get canRedo(){return this._redoStack.length>0}onChange(t){return this._listeners.push(t),()=>{const e=this._listeners.indexOf(t);e!==-1&&this._listeners.splice(e,1)}}_notify(){for(const t of this._listeners.slice())t()}committedField(t,e,s){return this._readField(t,e,s)}pendingField(t,e,s){const n=o(t,e,s),i=this._shadow.get(n);if(i===void 0)return;const d=this._readField(t,e,s);if(d===i||d===void 0){this._shadow.delete(n);return}return i}_commit(t){if(t.forward.length===0)return t;for(const e of t.forward)this._queue.push(e);return this._applyShadow(t.forward),this._undoStack.push(t),this._redoStack.length=0,this._notify(),t}_applyShadow(t){for(const e of t)e.kind==="set_field"&&this._shadow.set(o(e.eid,e.def,e.field),e.value)}}function c(r,t,e,s,n){return{get value(){return n!==void 0?n():r.committedField(t,e,s)},set(i){r.setField(t,e,s,i)},get pending(){return r.pendingField(t,e,s)}}}exports.Editor=u;exports.TransactionBuilder=h;exports.fieldHandle=c;
@@ -5,14 +5,14 @@ const a = /* @__PURE__ */ new WeakMap();
5
5
  class h {
6
6
  /** @internal */
7
7
  constructor(t, e) {
8
- this.readField = t, this.shadow = e, a.set(this, { forward: [], inverse: [] });
8
+ this._readField = t, this._shadow = e, a.set(this, { forward: [], inverse: [] });
9
9
  }
10
- /** Values staged by THIS build, layered over the editor's shared shadow. Kept
10
+ /** Values staged by this build, layered over the editor's shared shadow. Kept
11
11
  * transaction-local so an aborted build (the callback throws before commit)
12
- * leaves the shared shadow untouched a phantom staged value would poison
13
- * `pendingField` and seed the NEXT edit's inverse with a value the world never
14
- * held. The one merge point into the shared shadow is commit's `applyShadow`. */
15
- staged = /* @__PURE__ */ new Map();
12
+ * leaves the shared shadow untouched, a phantom staged value would poison
13
+ * `pendingField` and seed the next edit's inverse with a value the world never
14
+ * held. The one merge point into the shared shadow is commit's `_applyShadow`. */
15
+ _staged = /* @__PURE__ */ new Map();
16
16
  get _txn() {
17
17
  return a.get(this);
18
18
  }
@@ -41,23 +41,40 @@ class h {
41
41
  }
42
42
  /**
43
43
  * Set `field` of `def` on `entityId` to `value`. Inverse: set it back to the value
44
- * this edit replaced read from the staged overlay / shadow (so stacked edits,
44
+ * this edit replaced, read from the staged overlay and shadow (so stacked edits,
45
45
  * within one build or before a commit, invert correctly) or, failing that, the
46
46
  * read channel (`0` if unknown).
47
47
  */
48
48
  setField(t, e, s, n) {
49
- const i = o(t, e, s), d = this.staged.get(i) ?? this.shadow.get(i) ?? this.readField(t, e, s) ?? 0;
50
- return this.staged.set(i, n), this._txn.forward.push({ kind: "set_field", eid: t, def: e, field: s, value: n }), this._txn.inverse.push({ kind: "set_field", eid: t, def: e, field: s, value: d }), this;
49
+ const i = o(t, e, s), d = this._staged.get(i) ?? this._shadow.get(i) ?? this._readField(t, e, s) ?? 0;
50
+ return this._staged.set(i, n), this._txn.forward.push({
51
+ kind: "set_field",
52
+ eid: t,
53
+ def: e,
54
+ field: s,
55
+ value: n
56
+ }), this._txn.inverse.push({
57
+ kind: "set_field",
58
+ eid: t,
59
+ def: e,
60
+ field: s,
61
+ value: d
62
+ }), this;
51
63
  }
52
64
  /** Attach `def` (with complete `values`) to `entityId`. Inverse: remove it.
53
- * Bare `add` the namespaced-handle grammar (matches `ctx.commands.add` and
65
+ * Bare `add`, the namespaced-handle grammar (matches `ctx.commands.add` and
54
66
  * the queue's `add`), not `addComponent`. */
55
67
  add(t, e, s) {
56
- return this._txn.forward.push({ kind: "add_component", eid: t, def: e, values: s }), this._txn.inverse.push({ kind: "remove_component", eid: t, def: e }), this;
68
+ return this._txn.forward.push({
69
+ kind: "add_component",
70
+ eid: t,
71
+ def: e,
72
+ values: s
73
+ }), this._txn.inverse.push({ kind: "remove_component", eid: t, def: e }), this;
57
74
  }
58
75
  /**
59
76
  * Detach `def` from `entityId`. Inverse: re-add it from `restore` (the field values
60
- * to recreate read them from the channel before removing). Bare `remove` see `add`.
77
+ * to recreate, read them from the channel before removing). Bare `remove`, see `add`.
61
78
  */
62
79
  remove(t, e, s) {
63
80
  return this._txn.forward.push({ kind: "remove_component", eid: t, def: e }), this._txn.inverse.push({
@@ -78,22 +95,22 @@ class h {
78
95
  }
79
96
  class u {
80
97
  constructor(t, e) {
81
- this.queue = t, this.readField = e;
98
+ this._queue = t, this._readField = e;
82
99
  }
83
- undoStack = [];
84
- redoStack = [];
85
- /** onChange subscribers see {@link onChange}. */
86
- listeners = [];
100
+ _undoStack = [];
101
+ _redoStack = [];
102
+ /** onChange subscribers, see {@link onChange}. */
103
+ _listeners = [];
87
104
  /** Per-`(entity, component, field)` shadow of edited values, for inverse correctness. */
88
- shadow = /* @__PURE__ */ new Map();
105
+ _shadow = /* @__PURE__ */ new Map();
89
106
  /**
90
- * Group several actions into ONE undo entry. Build them on the passed
91
- * {@link TransactionBuilder}; the whole group commits (enqueues its forward
92
- * commands) and lands on the undo stack atomically, clearing the redo stack.
107
+ * Group several actions into one undo entry. Build them on the passed
108
+ * {@link TransactionBuilder}. The whole group commits, which enqueues its
109
+ * forward commands, and lands on the undo stack atomically, clearing the redo stack.
93
110
  */
94
111
  transaction(t) {
95
- const e = new h(this.readField, this.shadow);
96
- return t(e), this.commit(a.get(e));
112
+ const e = new h(this._readField, this._shadow);
113
+ return t(e), this._commit(a.get(e));
97
114
  }
98
115
  spawn(t, e) {
99
116
  return this.transaction((s) => s.spawn(t, e));
@@ -109,7 +126,7 @@ class u {
109
126
  add(t, e, s) {
110
127
  return this.transaction((n) => n.add(t, e, s));
111
128
  }
112
- /** Detach a component as its own undo entry; `restore` re-adds it on undo. Bare `remove`. */
129
+ /** Detach a component as its own undo entry. `restore` re-adds it on undo. Bare `remove`. */
113
130
  remove(t, e, s) {
114
131
  return this.transaction((n) => n.remove(t, e, s));
115
132
  }
@@ -123,15 +140,15 @@ class u {
123
140
  }
124
141
  /**
125
142
  * Undo the most recent transaction: enqueue its inverse commands (in reverse
126
- * order a group unwinds last-action-first) on the bus and move it to the redo
143
+ * order, a group unwinds last-action-first) on the bus and move it to the redo
127
144
  * stack. Returns `false` if the undo stack is empty.
128
145
  */
129
146
  undo() {
130
- const t = this.undoStack.pop();
147
+ const t = this._undoStack.pop();
131
148
  if (t === void 0) return !1;
132
149
  const e = t.inverse.slice().reverse();
133
- for (const s of e) this.queue.push(s);
134
- return this.applyShadow(e), this.redoStack.push(t), this.notify(), !0;
150
+ for (const s of e) this._queue.push(s);
151
+ return this._applyShadow(e), this._redoStack.push(t), this._notify(), !0;
135
152
  }
136
153
  /**
137
154
  * Redo the most recently undone transaction: re-enqueue its forward commands on
@@ -139,87 +156,87 @@ class u {
139
156
  * is empty.
140
157
  */
141
158
  redo() {
142
- const t = this.redoStack.pop();
159
+ const t = this._redoStack.pop();
143
160
  if (t === void 0) return !1;
144
- for (const e of t.forward) this.queue.push(e);
145
- return this.applyShadow(t.forward), this.undoStack.push(t), this.notify(), !0;
161
+ for (const e of t.forward) this._queue.push(e);
162
+ return this._applyShadow(t.forward), this._undoStack.push(t), this._notify(), !0;
146
163
  }
147
164
  /** Drop both stacks (e.g. on load). Does not touch the world. */
148
165
  clear() {
149
- this.undoStack.length = 0, this.redoStack.length = 0, this.shadow.clear(), this.notify();
166
+ this._undoStack.length = 0, this._redoStack.length = 0, this._shadow.clear(), this._notify();
150
167
  }
151
- /** Current stack depths for an "Undo (3)" / "Redo" affordance. */
168
+ /** Current stack depths, for an "Undo (3)" or "Redo" affordance. */
152
169
  depths() {
153
- return { undo: this.undoStack.length, redo: this.redoStack.length };
170
+ return { undo: this._undoStack.length, redo: this._redoStack.length };
154
171
  }
155
- /** `true` when `undo()` would do something allocation-free (M10). */
172
+ /** `true` when `undo()` would do something, allocation-free. */
156
173
  get canUndo() {
157
- return this.undoStack.length > 0;
174
+ return this._undoStack.length > 0;
158
175
  }
159
- /** `true` when `redo()` would do something allocation-free (M10). */
176
+ /** `true` when `redo()` would do something, allocation-free. */
160
177
  get canRedo() {
161
- return this.redoStack.length > 0;
178
+ return this._redoStack.length > 0;
162
179
  }
163
180
  /**
164
- * Subscribe to undo/redo-stack changes: fires after every commit, undo,
165
- * redo, and clear the push signal an "Undo (3)" affordance needs instead
166
- * of polling `depths()` per frame (M10). Returns an unsubscribe function.
167
- * Callbacks run synchronously in subscription order; read `canUndo` /
168
- * `canRedo` / `depths()` inside.
181
+ * Subscribe to undo-stack and redo-stack changes: fires after every commit, undo,
182
+ * redo, and clear, the push signal an "Undo (3)" affordance needs instead
183
+ * of polling `depths()` per frame. Returns an unsubscribe function.
184
+ * Callbacks run synchronously in subscription order. Read `canUndo`,
185
+ * `canRedo` and `depths()` inside.
169
186
  */
170
187
  onChange(t) {
171
- return this.listeners.push(t), () => {
172
- const e = this.listeners.indexOf(t);
173
- e !== -1 && this.listeners.splice(e, 1);
188
+ return this._listeners.push(t), () => {
189
+ const e = this._listeners.indexOf(t);
190
+ e !== -1 && this._listeners.splice(e, 1);
174
191
  };
175
192
  }
176
- notify() {
177
- for (const t of this.listeners.slice()) t();
193
+ _notify() {
194
+ for (const t of this._listeners.slice()) t();
178
195
  }
179
196
  /** Read one committed `(entity, component, field)` slot through the reader
180
- * this editor was constructed with the default read for `fieldHandle`
181
- * when no channel thunk is supplied (M11). */
197
+ * this editor was constructed with, the default read for `fieldHandle`
198
+ * when no channel thunk is supplied. */
182
199
  committedField(t, e, s) {
183
- return this.readField(t, e, s);
200
+ return this._readField(t, e, s);
184
201
  }
185
202
  /**
186
203
  * The pending value the editor believes for a field that the committed read
187
- * channel has NOT caught up to yet (the shadow), or `undefined` if none. Lets an
204
+ * channel has not caught up to yet (the shadow), or `undefined` if none. Lets an
188
205
  * inspector echo an edit between the `set` and the tick that commits it.
189
206
  *
190
207
  * Self-resolving: once the read channel reports the shadowed value (the edit
191
- * landed) or reports `undefined` (the slot is gone: entity despawned or
192
- * component removed) the entry is dropped and this returns `undefined`, so
208
+ * landed), or reports `undefined` (the slot is gone: entity despawned or
209
+ * component removed), the entry is dropped and this returns `undefined`, so
193
210
  * `pending` does not outlive its set→commit window and shadow a later external
194
211
  * write, nor a dead slot's lifetime. The one
195
212
  * residual: if an external write changes the field to a *different* value within
196
213
  * the same window before this is next consulted, `pending` can read stale until
197
214
  * the next edit to the slot. `value` (the read channel) is always the source of
198
- * truth; `pending` is only the optimistic bridge.
215
+ * truth. `pending` is only the optimistic bridge.
199
216
  */
200
217
  pendingField(t, e, s) {
201
- const n = o(t, e, s), i = this.shadow.get(n);
218
+ const n = o(t, e, s), i = this._shadow.get(n);
202
219
  if (i === void 0) return;
203
- const d = this.readField(t, e, s);
220
+ const d = this._readField(t, e, s);
204
221
  if (d === i || d === void 0) {
205
- this.shadow.delete(n);
222
+ this._shadow.delete(n);
206
223
  return;
207
224
  }
208
225
  return i;
209
226
  }
210
227
  /** Enqueue forward commands, record the transaction, clear redo, sync shadow. */
211
- commit(t) {
228
+ _commit(t) {
212
229
  if (t.forward.length === 0) return t;
213
- for (const e of t.forward) this.queue.push(e);
214
- return this.applyShadow(t.forward), this.undoStack.push(t), this.redoStack.length = 0, this.notify(), t;
230
+ for (const e of t.forward) this._queue.push(e);
231
+ return this._applyShadow(t.forward), this._undoStack.push(t), this._redoStack.length = 0, this._notify(), t;
215
232
  }
216
- /** Keep the setField shadow in step with the commands just enqueued. */
217
- applyShadow(t) {
233
+ /** Keep the setField shadow in step with the commands only enqueued. */
234
+ _applyShadow(t) {
218
235
  for (const e of t)
219
- e.kind === "set_field" && this.shadow.set(o(e.eid, e.def, e.field), e.value);
236
+ e.kind === "set_field" && this._shadow.set(o(e.eid, e.def, e.field), e.value);
220
237
  }
221
238
  }
222
- function c(r, t, e, s, n) {
239
+ function _(r, t, e, s, n) {
223
240
  return {
224
241
  get value() {
225
242
  return n !== void 0 ? n() : r.committedField(t, e, s);
@@ -235,5 +252,5 @@ function c(r, t, e, s, n) {
235
252
  export {
236
253
  u as Editor,
237
254
  h as TransactionBuilder,
238
- c as fieldHandle
255
+ _ as fieldHandle
239
256
  };
@@ -5,14 +5,14 @@ const a = /* @__PURE__ */ new WeakMap();
5
5
  class h {
6
6
  /** @internal */
7
7
  constructor(t, e) {
8
- this.readField = t, this.shadow = e, a.set(this, { forward: [], inverse: [] });
8
+ this._readField = t, this._shadow = e, a.set(this, { forward: [], inverse: [] });
9
9
  }
10
- /** Values staged by THIS build, layered over the editor's shared shadow. Kept
10
+ /** Values staged by this build, layered over the editor's shared shadow. Kept
11
11
  * transaction-local so an aborted build (the callback throws before commit)
12
- * leaves the shared shadow untouched a phantom staged value would poison
13
- * `pendingField` and seed the NEXT edit's inverse with a value the world never
14
- * held. The one merge point into the shared shadow is commit's `applyShadow`. */
15
- staged = /* @__PURE__ */ new Map();
12
+ * leaves the shared shadow untouched, a phantom staged value would poison
13
+ * `pendingField` and seed the next edit's inverse with a value the world never
14
+ * held. The one merge point into the shared shadow is commit's `_applyShadow`. */
15
+ _staged = /* @__PURE__ */ new Map();
16
16
  get _txn() {
17
17
  return a.get(this);
18
18
  }
@@ -41,23 +41,40 @@ class h {
41
41
  }
42
42
  /**
43
43
  * Set `field` of `def` on `entityId` to `value`. Inverse: set it back to the value
44
- * this edit replaced read from the staged overlay / shadow (so stacked edits,
44
+ * this edit replaced, read from the staged overlay and shadow (so stacked edits,
45
45
  * within one build or before a commit, invert correctly) or, failing that, the
46
46
  * read channel (`0` if unknown).
47
47
  */
48
48
  setField(t, e, s, n) {
49
- const i = o(t, e, s), d = this.staged.get(i) ?? this.shadow.get(i) ?? this.readField(t, e, s) ?? 0;
50
- return this.staged.set(i, n), this._txn.forward.push({ kind: "set_field", eid: t, def: e, field: s, value: n }), this._txn.inverse.push({ kind: "set_field", eid: t, def: e, field: s, value: d }), this;
49
+ const i = o(t, e, s), d = this._staged.get(i) ?? this._shadow.get(i) ?? this._readField(t, e, s) ?? 0;
50
+ return this._staged.set(i, n), this._txn.forward.push({
51
+ kind: "set_field",
52
+ eid: t,
53
+ def: e,
54
+ field: s,
55
+ value: n
56
+ }), this._txn.inverse.push({
57
+ kind: "set_field",
58
+ eid: t,
59
+ def: e,
60
+ field: s,
61
+ value: d
62
+ }), this;
51
63
  }
52
64
  /** Attach `def` (with complete `values`) to `entityId`. Inverse: remove it.
53
- * Bare `add` the namespaced-handle grammar (matches `ctx.commands.add` and
65
+ * Bare `add`, the namespaced-handle grammar (matches `ctx.commands.add` and
54
66
  * the queue's `add`), not `addComponent`. */
55
67
  add(t, e, s) {
56
- return this._txn.forward.push({ kind: "add_component", eid: t, def: e, values: s }), this._txn.inverse.push({ kind: "remove_component", eid: t, def: e }), this;
68
+ return this._txn.forward.push({
69
+ kind: "add_component",
70
+ eid: t,
71
+ def: e,
72
+ values: s
73
+ }), this._txn.inverse.push({ kind: "remove_component", eid: t, def: e }), this;
57
74
  }
58
75
  /**
59
76
  * Detach `def` from `entityId`. Inverse: re-add it from `restore` (the field values
60
- * to recreate read them from the channel before removing). Bare `remove` see `add`.
77
+ * to recreate, read them from the channel before removing). Bare `remove`, see `add`.
61
78
  */
62
79
  remove(t, e, s) {
63
80
  return this._txn.forward.push({ kind: "remove_component", eid: t, def: e }), this._txn.inverse.push({
@@ -78,22 +95,22 @@ class h {
78
95
  }
79
96
  class u {
80
97
  constructor(t, e) {
81
- this.queue = t, this.readField = e;
98
+ this._queue = t, this._readField = e;
82
99
  }
83
- undoStack = [];
84
- redoStack = [];
85
- /** onChange subscribers see {@link onChange}. */
86
- listeners = [];
100
+ _undoStack = [];
101
+ _redoStack = [];
102
+ /** onChange subscribers, see {@link onChange}. */
103
+ _listeners = [];
87
104
  /** Per-`(entity, component, field)` shadow of edited values, for inverse correctness. */
88
- shadow = /* @__PURE__ */ new Map();
105
+ _shadow = /* @__PURE__ */ new Map();
89
106
  /**
90
- * Group several actions into ONE undo entry. Build them on the passed
91
- * {@link TransactionBuilder}; the whole group commits (enqueues its forward
92
- * commands) and lands on the undo stack atomically, clearing the redo stack.
107
+ * Group several actions into one undo entry. Build them on the passed
108
+ * {@link TransactionBuilder}. The whole group commits, which enqueues its
109
+ * forward commands, and lands on the undo stack atomically, clearing the redo stack.
93
110
  */
94
111
  transaction(t) {
95
- const e = new h(this.readField, this.shadow);
96
- return t(e), this.commit(a.get(e));
112
+ const e = new h(this._readField, this._shadow);
113
+ return t(e), this._commit(a.get(e));
97
114
  }
98
115
  spawn(t, e) {
99
116
  return this.transaction((s) => s.spawn(t, e));
@@ -109,7 +126,7 @@ class u {
109
126
  add(t, e, s) {
110
127
  return this.transaction((n) => n.add(t, e, s));
111
128
  }
112
- /** Detach a component as its own undo entry; `restore` re-adds it on undo. Bare `remove`. */
129
+ /** Detach a component as its own undo entry. `restore` re-adds it on undo. Bare `remove`. */
113
130
  remove(t, e, s) {
114
131
  return this.transaction((n) => n.remove(t, e, s));
115
132
  }
@@ -123,15 +140,15 @@ class u {
123
140
  }
124
141
  /**
125
142
  * Undo the most recent transaction: enqueue its inverse commands (in reverse
126
- * order a group unwinds last-action-first) on the bus and move it to the redo
143
+ * order, a group unwinds last-action-first) on the bus and move it to the redo
127
144
  * stack. Returns `false` if the undo stack is empty.
128
145
  */
129
146
  undo() {
130
- const t = this.undoStack.pop();
147
+ const t = this._undoStack.pop();
131
148
  if (t === void 0) return !1;
132
149
  const e = t.inverse.slice().reverse();
133
- for (const s of e) this.queue.push(s);
134
- return this.applyShadow(e), this.redoStack.push(t), this.notify(), !0;
150
+ for (const s of e) this._queue.push(s);
151
+ return this._applyShadow(e), this._redoStack.push(t), this._notify(), !0;
135
152
  }
136
153
  /**
137
154
  * Redo the most recently undone transaction: re-enqueue its forward commands on
@@ -139,87 +156,87 @@ class u {
139
156
  * is empty.
140
157
  */
141
158
  redo() {
142
- const t = this.redoStack.pop();
159
+ const t = this._redoStack.pop();
143
160
  if (t === void 0) return !1;
144
- for (const e of t.forward) this.queue.push(e);
145
- return this.applyShadow(t.forward), this.undoStack.push(t), this.notify(), !0;
161
+ for (const e of t.forward) this._queue.push(e);
162
+ return this._applyShadow(t.forward), this._undoStack.push(t), this._notify(), !0;
146
163
  }
147
164
  /** Drop both stacks (e.g. on load). Does not touch the world. */
148
165
  clear() {
149
- this.undoStack.length = 0, this.redoStack.length = 0, this.shadow.clear(), this.notify();
166
+ this._undoStack.length = 0, this._redoStack.length = 0, this._shadow.clear(), this._notify();
150
167
  }
151
- /** Current stack depths for an "Undo (3)" / "Redo" affordance. */
168
+ /** Current stack depths, for an "Undo (3)" or "Redo" affordance. */
152
169
  depths() {
153
- return { undo: this.undoStack.length, redo: this.redoStack.length };
170
+ return { undo: this._undoStack.length, redo: this._redoStack.length };
154
171
  }
155
- /** `true` when `undo()` would do something allocation-free (M10). */
172
+ /** `true` when `undo()` would do something, allocation-free. */
156
173
  get canUndo() {
157
- return this.undoStack.length > 0;
174
+ return this._undoStack.length > 0;
158
175
  }
159
- /** `true` when `redo()` would do something allocation-free (M10). */
176
+ /** `true` when `redo()` would do something, allocation-free. */
160
177
  get canRedo() {
161
- return this.redoStack.length > 0;
178
+ return this._redoStack.length > 0;
162
179
  }
163
180
  /**
164
- * Subscribe to undo/redo-stack changes: fires after every commit, undo,
165
- * redo, and clear the push signal an "Undo (3)" affordance needs instead
166
- * of polling `depths()` per frame (M10). Returns an unsubscribe function.
167
- * Callbacks run synchronously in subscription order; read `canUndo` /
168
- * `canRedo` / `depths()` inside.
181
+ * Subscribe to undo-stack and redo-stack changes: fires after every commit, undo,
182
+ * redo, and clear, the push signal an "Undo (3)" affordance needs instead
183
+ * of polling `depths()` per frame. Returns an unsubscribe function.
184
+ * Callbacks run synchronously in subscription order. Read `canUndo`,
185
+ * `canRedo` and `depths()` inside.
169
186
  */
170
187
  onChange(t) {
171
- return this.listeners.push(t), () => {
172
- const e = this.listeners.indexOf(t);
173
- e !== -1 && this.listeners.splice(e, 1);
188
+ return this._listeners.push(t), () => {
189
+ const e = this._listeners.indexOf(t);
190
+ e !== -1 && this._listeners.splice(e, 1);
174
191
  };
175
192
  }
176
- notify() {
177
- for (const t of this.listeners.slice()) t();
193
+ _notify() {
194
+ for (const t of this._listeners.slice()) t();
178
195
  }
179
196
  /** Read one committed `(entity, component, field)` slot through the reader
180
- * this editor was constructed with the default read for `fieldHandle`
181
- * when no channel thunk is supplied (M11). */
197
+ * this editor was constructed with, the default read for `fieldHandle`
198
+ * when no channel thunk is supplied. */
182
199
  committedField(t, e, s) {
183
- return this.readField(t, e, s);
200
+ return this._readField(t, e, s);
184
201
  }
185
202
  /**
186
203
  * The pending value the editor believes for a field that the committed read
187
- * channel has NOT caught up to yet (the shadow), or `undefined` if none. Lets an
204
+ * channel has not caught up to yet (the shadow), or `undefined` if none. Lets an
188
205
  * inspector echo an edit between the `set` and the tick that commits it.
189
206
  *
190
207
  * Self-resolving: once the read channel reports the shadowed value (the edit
191
- * landed) or reports `undefined` (the slot is gone: entity despawned or
192
- * component removed) the entry is dropped and this returns `undefined`, so
208
+ * landed), or reports `undefined` (the slot is gone: entity despawned or
209
+ * component removed), the entry is dropped and this returns `undefined`, so
193
210
  * `pending` does not outlive its set→commit window and shadow a later external
194
211
  * write, nor a dead slot's lifetime. The one
195
212
  * residual: if an external write changes the field to a *different* value within
196
213
  * the same window before this is next consulted, `pending` can read stale until
197
214
  * the next edit to the slot. `value` (the read channel) is always the source of
198
- * truth; `pending` is only the optimistic bridge.
215
+ * truth. `pending` is only the optimistic bridge.
199
216
  */
200
217
  pendingField(t, e, s) {
201
- const n = o(t, e, s), i = this.shadow.get(n);
218
+ const n = o(t, e, s), i = this._shadow.get(n);
202
219
  if (i === void 0) return;
203
- const d = this.readField(t, e, s);
220
+ const d = this._readField(t, e, s);
204
221
  if (d === i || d === void 0) {
205
- this.shadow.delete(n);
222
+ this._shadow.delete(n);
206
223
  return;
207
224
  }
208
225
  return i;
209
226
  }
210
227
  /** Enqueue forward commands, record the transaction, clear redo, sync shadow. */
211
- commit(t) {
228
+ _commit(t) {
212
229
  if (t.forward.length === 0) return t;
213
- for (const e of t.forward) this.queue.push(e);
214
- return this.applyShadow(t.forward), this.undoStack.push(t), this.redoStack.length = 0, this.notify(), t;
230
+ for (const e of t.forward) this._queue.push(e);
231
+ return this._applyShadow(t.forward), this._undoStack.push(t), this._redoStack.length = 0, this._notify(), t;
215
232
  }
216
- /** Keep the setField shadow in step with the commands just enqueued. */
217
- applyShadow(t) {
233
+ /** Keep the setField shadow in step with the commands only enqueued. */
234
+ _applyShadow(t) {
218
235
  for (const e of t)
219
- e.kind === "set_field" && this.shadow.set(o(e.eid, e.def, e.field), e.value);
236
+ e.kind === "set_field" && this._shadow.set(o(e.eid, e.def, e.field), e.value);
220
237
  }
221
238
  }
222
- function c(r, t, e, s, n) {
239
+ function _(r, t, e, s, n) {
223
240
  return {
224
241
  get value() {
225
242
  return n !== void 0 ? n() : r.committedField(t, e, s);
@@ -235,5 +252,5 @@ function c(r, t, e, s, n) {
235
252
  export {
236
253
  u as Editor,
237
254
  h as TransactionBuilder,
238
- c as fieldHandle
255
+ _ as fieldHandle
239
256
  };
@@ -0,0 +1,13 @@
1
+ import { EventReader } from '../../core/ecs/event.cjs';
2
+ export declare class EventChannel {
3
+ readonly fieldNames: string[];
4
+ readonly columns: number[][];
5
+ readonly reader: EventReader<any>;
6
+ private readonly _readerLen;
7
+ constructor(fieldNames: string[]);
8
+ emit(values: Record<string, number>): void;
9
+ /** Emit a signal (zero-field event). */
10
+ emitSignal(): void;
11
+ clear(): void;
12
+ }
13
+ //# sourceMappingURL=event_channel.d.ts.map
@@ -0,0 +1,13 @@
1
+ import { EventReader } from '../../core/ecs/event.js';
2
+ export declare class EventChannel {
3
+ readonly fieldNames: string[];
4
+ readonly columns: number[][];
5
+ readonly reader: EventReader<any>;
6
+ private readonly _readerLen;
7
+ constructor(fieldNames: string[]);
8
+ emit(values: Record<string, number>): void;
9
+ /** Emit a signal (zero-field event). */
10
+ emitSignal(): void;
11
+ clear(): void;
12
+ }
13
+ //# sourceMappingURL=event_channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event_channel.d.ts","sourceRoot":"","sources":["../../../src/plugins/events/event_channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;KAQK;AAIL,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,sBAAsB,CAAC;AAErE,qBAAa,YAAY;IACxB,SAAgB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrC,SAAgB,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;IAEpC,SAAgB,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAMzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;gBAEpC,UAAU,EAAE,MAAM,EAAE;IAsBzB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAsBjD,wCAAwC;IACjC,UAAU,IAAI,IAAI;IAIlB,KAAK,IAAI,IAAI;CAOpB"}
@@ -0,0 +1,22 @@
1
+ import { EmptyEventSchema, EventDef, EventHooks, EventReader, EventShape } from '../../core/ecs/event.cjs';
2
+ export declare class EventRegistry implements EventHooks {
3
+ private readonly _channels;
4
+ private readonly _dirtyChannels;
5
+ private _nextEventId;
6
+ private readonly _defsByKey;
7
+ register<S extends EventShape<S>>(fields: readonly (keyof S & string)[]): EventDef<S>;
8
+ emit(def: EventDef<any>, values: Record<string, number>): void;
9
+ emitSignal(def: EventDef<EmptyEventSchema>): void;
10
+ reader<S extends EventShape<S>>(def: EventDef<S>): EventReader<S>;
11
+ clear(): void;
12
+ /** `DEV`-only: total events currently buffered across the dirty channels.
13
+ * `ECS.update` samples this either side of the settle hooks to assert an
14
+ * onSet observer emitted nothing, its emissions would be wiped by the
15
+ * tick-tail `clear` and break the empty-channel-at-boundary invariant that
16
+ * snapshot and restore rely on. Walks only the dirty list, never the hot emit path. */
17
+ devBufferedCount(): number;
18
+ registerByKey<S extends EventShape<S>>(key: symbol, fields: readonly (keyof S & string)[]): EventDef<S>;
19
+ defByKey(key: symbol): EventDef<any>;
20
+ hasKey(key: symbol): boolean;
21
+ }
22
+ //# sourceMappingURL=event_registry.d.ts.map
@@ -0,0 +1,22 @@
1
+ import { EmptyEventSchema, EventDef, EventHooks, EventReader, EventShape } from '../../core/ecs/event.js';
2
+ export declare class EventRegistry implements EventHooks {
3
+ private readonly _channels;
4
+ private readonly _dirtyChannels;
5
+ private _nextEventId;
6
+ private readonly _defsByKey;
7
+ register<S extends EventShape<S>>(fields: readonly (keyof S & string)[]): EventDef<S>;
8
+ emit(def: EventDef<any>, values: Record<string, number>): void;
9
+ emitSignal(def: EventDef<EmptyEventSchema>): void;
10
+ reader<S extends EventShape<S>>(def: EventDef<S>): EventReader<S>;
11
+ clear(): void;
12
+ /** `DEV`-only: total events currently buffered across the dirty channels.
13
+ * `ECS.update` samples this either side of the settle hooks to assert an
14
+ * onSet observer emitted nothing, its emissions would be wiped by the
15
+ * tick-tail `clear` and break the empty-channel-at-boundary invariant that
16
+ * snapshot and restore rely on. Walks only the dirty list, never the hot emit path. */
17
+ devBufferedCount(): number;
18
+ registerByKey<S extends EventShape<S>>(key: symbol, fields: readonly (keyof S & string)[]): EventDef<S>;
19
+ defByKey(key: symbol): EventDef<any>;
20
+ hasKey(key: symbol): boolean;
21
+ }
22
+ //# sourceMappingURL=event_registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event_registry.d.ts","sourceRoot":"","sources":["../../../src/plugins/events/event_registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;KAQK;AAIL,OAAO,EAEN,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,MAAM,sBAAsB,CAAC;AAG9B,qBAAa,aAAc,YAAW,UAAU;IAE/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAKhD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,YAAY,CAAK;IAIzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyC;IAE7D,QAAQ,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;IAOrF,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAY9D,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAQjD,MAAM,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAIjE,KAAK,IAAI,IAAI;IAepB;;;;2FAIuF;IAChF,gBAAgB,IAAI,MAAM;IAQ1B,aAAa,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAC3C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GACnC,QAAQ,CAAC,CAAC,CAAC;IAcP,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC;IAYpC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAGnC"}