@oasys/oecs 0.3.1 → 0.5.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 (324) hide show
  1. package/CHANGELOG.md +553 -0
  2. package/README.md +207 -267
  3. package/dist/core/ecs/access_check.d.cts +77 -0
  4. package/dist/core/ecs/access_check.d.ts +77 -0
  5. package/dist/core/ecs/access_check.d.ts.map +1 -0
  6. package/dist/core/ecs/archetype.d.cts +486 -0
  7. package/dist/core/ecs/archetype.d.ts +486 -0
  8. package/dist/core/ecs/archetype.d.ts.map +1 -0
  9. package/dist/core/ecs/archetype_graph.d.cts +96 -0
  10. package/dist/core/ecs/archetype_graph.d.ts +96 -0
  11. package/dist/core/ecs/archetype_graph.d.ts.map +1 -0
  12. package/dist/core/ecs/builtin_relations.d.cts +43 -0
  13. package/dist/core/ecs/builtin_relations.d.ts +43 -0
  14. package/dist/core/ecs/builtin_relations.d.ts.map +1 -0
  15. package/dist/core/ecs/command_log.d.cts +116 -0
  16. package/dist/core/ecs/command_log.d.ts +116 -0
  17. package/dist/core/ecs/command_log.d.ts.map +1 -0
  18. package/dist/core/ecs/component.d.cts +176 -0
  19. package/dist/core/ecs/component.d.ts +176 -0
  20. package/dist/core/ecs/component.d.ts.map +1 -0
  21. package/dist/core/ecs/compute_backend.d.cts +37 -0
  22. package/dist/core/ecs/compute_backend.d.ts +37 -0
  23. package/dist/core/ecs/compute_backend.d.ts.map +1 -0
  24. package/dist/core/ecs/debug_names.d.cts +7 -0
  25. package/dist/core/ecs/debug_names.d.ts +7 -0
  26. package/dist/core/ecs/debug_names.d.ts.map +1 -0
  27. package/dist/core/ecs/deferred_commands.d.cts +55 -0
  28. package/dist/core/ecs/deferred_commands.d.ts +55 -0
  29. package/dist/core/ecs/deferred_commands.d.ts.map +1 -0
  30. package/dist/core/ecs/dispatch_trace.d.cts +93 -0
  31. package/dist/core/ecs/dispatch_trace.d.ts +93 -0
  32. package/dist/core/ecs/dispatch_trace.d.ts.map +1 -0
  33. package/dist/core/ecs/ecs.d.cts +562 -0
  34. package/dist/core/ecs/ecs.d.ts +562 -0
  35. package/dist/core/ecs/ecs.d.ts.map +1 -0
  36. package/dist/core/ecs/ecs_memory.d.cts +179 -0
  37. package/dist/core/ecs/ecs_memory.d.ts +179 -0
  38. package/dist/core/ecs/ecs_memory.d.ts.map +1 -0
  39. package/dist/core/ecs/entity.d.cts +34 -0
  40. package/dist/core/ecs/entity.d.ts +34 -0
  41. package/dist/core/ecs/entity.d.ts.map +1 -0
  42. package/dist/core/ecs/entity_allocator.d.cts +59 -0
  43. package/dist/core/ecs/entity_allocator.d.ts +59 -0
  44. package/dist/core/ecs/entity_allocator.d.ts.map +1 -0
  45. package/dist/core/ecs/event.d.cts +79 -0
  46. package/dist/core/ecs/event.d.ts +79 -0
  47. package/dist/core/ecs/event.d.ts.map +1 -0
  48. package/dist/core/ecs/event_registry.d.cts +22 -0
  49. package/dist/core/ecs/event_registry.d.ts +22 -0
  50. package/dist/core/ecs/event_registry.d.ts.map +1 -0
  51. package/dist/core/ecs/facades.d.cts +158 -0
  52. package/dist/core/ecs/facades.d.ts +158 -0
  53. package/dist/core/ecs/facades.d.ts.map +1 -0
  54. package/dist/core/ecs/frame_stepper.d.cts +58 -0
  55. package/dist/core/ecs/frame_stepper.d.ts +58 -0
  56. package/dist/core/ecs/frame_stepper.d.ts.map +1 -0
  57. package/dist/core/ecs/frame_trace.d.cts +133 -0
  58. package/dist/core/ecs/frame_trace.d.ts +133 -0
  59. package/dist/core/ecs/frame_trace.d.ts.map +1 -0
  60. package/dist/core/ecs/host_commands.d.cts +274 -0
  61. package/dist/core/ecs/host_commands.d.ts +274 -0
  62. package/dist/core/ecs/host_commands.d.ts.map +1 -0
  63. package/dist/core/ecs/index.d.cts +46 -0
  64. package/dist/core/ecs/index.d.ts +46 -0
  65. package/dist/core/ecs/index.d.ts.map +1 -0
  66. package/dist/core/ecs/observer.d.cts +173 -0
  67. package/dist/core/ecs/observer.d.ts +173 -0
  68. package/dist/core/ecs/observer.d.ts.map +1 -0
  69. package/dist/core/ecs/query.d.cts +718 -0
  70. package/dist/core/ecs/query.d.ts +718 -0
  71. package/dist/core/ecs/query.d.ts.map +1 -0
  72. package/dist/core/ecs/ref.d.cts +31 -0
  73. package/dist/core/ecs/ref.d.ts +31 -0
  74. package/dist/core/ecs/ref.d.ts.map +1 -0
  75. package/dist/core/ecs/relation.d.cts +243 -0
  76. package/dist/core/ecs/relation.d.ts +243 -0
  77. package/dist/core/ecs/relation.d.ts.map +1 -0
  78. package/dist/core/ecs/relation_service.d.cts +235 -0
  79. package/dist/core/ecs/relation_service.d.ts +235 -0
  80. package/dist/core/ecs/relation_service.d.ts.map +1 -0
  81. package/dist/core/ecs/resource.d.cts +53 -0
  82. package/dist/core/ecs/resource.d.ts +53 -0
  83. package/dist/core/ecs/resource.d.ts.map +1 -0
  84. package/dist/core/ecs/resource_registry.d.cts +20 -0
  85. package/dist/core/ecs/resource_registry.d.ts +20 -0
  86. package/dist/core/ecs/resource_registry.d.ts.map +1 -0
  87. package/dist/core/ecs/resume.d.cts +85 -0
  88. package/dist/core/ecs/resume.d.ts +85 -0
  89. package/dist/core/ecs/resume.d.ts.map +1 -0
  90. package/dist/core/ecs/run_condition.d.cts +81 -0
  91. package/dist/core/ecs/run_condition.d.ts +81 -0
  92. package/dist/core/ecs/run_condition.d.ts.map +1 -0
  93. package/dist/core/ecs/schedule.d.cts +142 -0
  94. package/dist/core/ecs/schedule.d.ts +142 -0
  95. package/dist/core/ecs/schedule.d.ts.map +1 -0
  96. package/dist/core/ecs/snapshot_service.d.cts +94 -0
  97. package/dist/core/ecs/snapshot_service.d.ts +94 -0
  98. package/dist/core/ecs/snapshot_service.d.ts.map +1 -0
  99. package/dist/core/ecs/sparse_store.d.cts +110 -0
  100. package/dist/core/ecs/sparse_store.d.ts +110 -0
  101. package/dist/core/ecs/sparse_store.d.ts.map +1 -0
  102. package/dist/core/ecs/store.d.cts +950 -0
  103. package/dist/core/ecs/store.d.ts +950 -0
  104. package/dist/core/ecs/store.d.ts.map +1 -0
  105. package/dist/core/ecs/store_layout_listener.d.cts +23 -0
  106. package/dist/core/ecs/store_layout_listener.d.ts +23 -0
  107. package/dist/core/ecs/store_layout_listener.d.ts.map +1 -0
  108. package/dist/core/ecs/system.d.cts +250 -0
  109. package/dist/core/ecs/system.d.ts +250 -0
  110. package/dist/core/ecs/system.d.ts.map +1 -0
  111. package/dist/core/ecs/utils/arrays.d.cts +7 -0
  112. package/dist/{utils → core/ecs/utils}/arrays.d.ts +2 -1
  113. package/dist/core/ecs/utils/arrays.d.ts.map +1 -0
  114. package/dist/core/ecs/utils/constants.d.ts +12 -0
  115. package/dist/core/ecs/utils/constants.d.ts.map +1 -0
  116. package/dist/core/ecs/utils/error.d.cts +61 -0
  117. package/dist/core/ecs/utils/error.d.ts +61 -0
  118. package/dist/core/ecs/utils/error.d.ts.map +1 -0
  119. package/dist/core/store/action_ring.d.cts +136 -0
  120. package/dist/core/store/action_ring.d.ts +136 -0
  121. package/dist/core/store/action_ring.d.ts.map +1 -0
  122. package/dist/core/store/allocator.d.cts +238 -0
  123. package/dist/core/store/allocator.d.ts +238 -0
  124. package/dist/core/store/allocator.d.ts.map +1 -0
  125. package/dist/core/store/buffer_backed_column.d.cts +69 -0
  126. package/dist/core/store/buffer_backed_column.d.ts +69 -0
  127. package/dist/core/store/buffer_backed_column.d.ts.map +1 -0
  128. package/dist/core/store/column_store.d.cts +273 -0
  129. package/dist/core/store/column_store.d.ts +273 -0
  130. package/dist/core/store/column_store.d.ts.map +1 -0
  131. package/dist/core/store/command_dispatch.d.cts +52 -0
  132. package/dist/core/store/command_dispatch.d.ts +52 -0
  133. package/dist/core/store/command_dispatch.d.ts.map +1 -0
  134. package/dist/core/store/command_ring.d.cts +107 -0
  135. package/dist/core/store/command_ring.d.ts +107 -0
  136. package/dist/core/store/command_ring.d.ts.map +1 -0
  137. package/dist/core/store/descriptor.d.cts +80 -0
  138. package/dist/core/store/descriptor.d.ts +80 -0
  139. package/dist/core/store/descriptor.d.ts.map +1 -0
  140. package/dist/core/store/entity_index.d.cts +108 -0
  141. package/dist/core/store/entity_index.d.ts +108 -0
  142. package/dist/core/store/entity_index.d.ts.map +1 -0
  143. package/dist/core/store/event_ring.d.cts +95 -0
  144. package/dist/core/store/event_ring.d.ts +95 -0
  145. package/dist/core/store/event_ring.d.ts.map +1 -0
  146. package/dist/core/store/extend.d.cts +39 -0
  147. package/dist/core/store/extend.d.ts +39 -0
  148. package/dist/core/store/extend.d.ts.map +1 -0
  149. package/dist/core/store/grow.d.cts +34 -0
  150. package/dist/core/store/grow.d.ts +34 -0
  151. package/dist/core/store/grow.d.ts.map +1 -0
  152. package/dist/core/store/header.d.cts +64 -0
  153. package/dist/core/store/header.d.ts +64 -0
  154. package/dist/core/store/header.d.ts.map +1 -0
  155. package/dist/core/store/index.d.cts +17 -0
  156. package/dist/core/store/index.d.ts +17 -0
  157. package/dist/core/store/index.d.ts.map +1 -0
  158. package/dist/core/store/layout_ops.d.cts +152 -0
  159. package/dist/core/store/layout_ops.d.ts +152 -0
  160. package/dist/core/store/layout_ops.d.ts.map +1 -0
  161. package/dist/core/store/region_table.d.cts +74 -0
  162. package/dist/core/store/region_table.d.ts +74 -0
  163. package/dist/core/store/region_table.d.ts.map +1 -0
  164. package/dist/core/store/snapshot.d.cts +43 -0
  165. package/dist/core/store/snapshot.d.ts +43 -0
  166. package/dist/core/store/snapshot.d.ts.map +1 -0
  167. package/dist/core/store/state_hash.d.cts +38 -0
  168. package/dist/core/store/state_hash.d.ts +38 -0
  169. package/dist/core/store/state_hash.d.ts.map +1 -0
  170. package/dist/core/store/store_regions.d.cts +38 -0
  171. package/dist/core/store/store_regions.d.ts +38 -0
  172. package/dist/core/store/store_regions.d.ts.map +1 -0
  173. package/dist/core/store/vendored_abi/abi.d.cts +43 -0
  174. package/dist/core/store/vendored_abi/abi.d.ts +43 -0
  175. package/dist/core/store/vendored_abi/abi.d.ts.map +1 -0
  176. package/dist/dev_flag.d.cts +17 -0
  177. package/dist/dev_flag.d.ts +17 -0
  178. package/dist/dev_flag.d.ts.map +1 -0
  179. package/dist/extensions/editor/editor.d.cts +170 -0
  180. package/dist/extensions/editor/editor.d.ts +170 -0
  181. package/dist/extensions/editor/editor.d.ts.map +1 -0
  182. package/dist/extensions/editor/field_handle.d.cts +40 -0
  183. package/dist/extensions/editor/field_handle.d.ts +40 -0
  184. package/dist/extensions/editor/field_handle.d.ts.map +1 -0
  185. package/dist/extensions/editor/index.cjs +1 -0
  186. package/dist/extensions/editor/index.d.cts +21 -0
  187. package/dist/extensions/editor/index.d.ts +21 -0
  188. package/dist/extensions/editor/index.d.ts.map +1 -0
  189. package/dist/extensions/editor/index.js +237 -0
  190. package/dist/extensions/reactive/ecs_sync.d.cts +214 -0
  191. package/dist/extensions/reactive/ecs_sync.d.ts +214 -0
  192. package/dist/extensions/reactive/ecs_sync.d.ts.map +1 -0
  193. package/dist/extensions/reactive/index.cjs +1 -0
  194. package/dist/extensions/reactive/index.d.cts +23 -0
  195. package/dist/extensions/reactive/index.d.ts +23 -0
  196. package/dist/extensions/reactive/index.d.ts.map +1 -0
  197. package/dist/extensions/reactive/index.js +215 -0
  198. package/dist/extensions/solid/index.cjs +1 -0
  199. package/dist/extensions/solid/index.d.cts +6 -0
  200. package/dist/extensions/solid/index.d.ts +6 -0
  201. package/dist/extensions/solid/index.d.ts.map +1 -0
  202. package/dist/extensions/solid/index.js +36 -0
  203. package/dist/extensions/solid/kernel_solid.d.cts +45 -0
  204. package/dist/extensions/solid/kernel_solid.d.ts +45 -0
  205. package/dist/extensions/solid/kernel_solid.d.ts.map +1 -0
  206. package/dist/host_commands-BF8QMi3c.cjs +1 -0
  207. package/dist/host_commands-i4cAeyL5.js +2318 -0
  208. package/dist/index.cjs +1 -1
  209. package/dist/index.d.cts +66 -0
  210. package/dist/index.d.ts +65 -12
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +7080 -1289
  213. package/dist/internal.cjs +2 -0
  214. package/dist/internal.d.cts +20 -0
  215. package/dist/internal.d.ts +20 -0
  216. package/dist/internal.d.ts.map +1 -0
  217. package/dist/internal.js +141 -0
  218. package/dist/interop-CT-REx0W.cjs +1 -0
  219. package/dist/interop-CcY6ASQc.js +18 -0
  220. package/dist/kernel-DgyrLFjW.js +227 -0
  221. package/dist/kernel-yWV3XnAb.cjs +1 -0
  222. package/dist/primitives.cjs +1 -0
  223. package/dist/primitives.d.cts +18 -0
  224. package/dist/primitives.d.ts +18 -0
  225. package/dist/primitives.d.ts.map +1 -0
  226. package/dist/primitives.js +45 -0
  227. package/dist/reactive/array.d.cts +24 -0
  228. package/dist/reactive/array.d.ts +24 -0
  229. package/dist/reactive/array.d.ts.map +1 -0
  230. package/dist/reactive/index.cjs +1 -0
  231. package/dist/reactive/index.d.cts +11 -0
  232. package/dist/reactive/index.d.ts +11 -0
  233. package/dist/reactive/index.d.ts.map +1 -0
  234. package/dist/reactive/index.js +18 -0
  235. package/dist/reactive/interop.d.cts +19 -0
  236. package/dist/reactive/interop.d.ts +19 -0
  237. package/dist/reactive/interop.d.ts.map +1 -0
  238. package/dist/reactive/kernel.d.cts +73 -0
  239. package/dist/reactive/kernel.d.ts +73 -0
  240. package/dist/reactive/kernel.d.ts.map +1 -0
  241. package/dist/reactive/map.d.cts +16 -0
  242. package/dist/reactive/map.d.ts +16 -0
  243. package/dist/reactive/map.d.ts.map +1 -0
  244. package/dist/reactive/shallow.d.cts +11 -0
  245. package/dist/reactive/shallow.d.ts +11 -0
  246. package/dist/reactive/shallow.d.ts.map +1 -0
  247. package/dist/reactive/struct.d.cts +10 -0
  248. package/dist/reactive/struct.d.ts +10 -0
  249. package/dist/reactive/struct.d.ts.map +1 -0
  250. package/dist/shallow-DQ8aG51_.cjs +1 -0
  251. package/dist/shallow-DfnAm9vG.js +150 -0
  252. package/dist/shared-BU1Cd40h.js +103 -0
  253. package/dist/shared-BymrGTyR.cjs +1 -0
  254. package/dist/shared.cjs +1 -0
  255. package/dist/shared.d.cts +22 -0
  256. package/dist/shared.d.ts +22 -0
  257. package/dist/shared.d.ts.map +1 -0
  258. package/dist/shared.js +7 -0
  259. package/dist/topological_sort-BDvEyb9W.cjs +1 -0
  260. package/dist/topological_sort-DK6EjpWa.js +135 -0
  261. package/dist/type_primitives/assertions.d.cts +32 -0
  262. package/dist/type_primitives/assertions.d.ts +25 -9
  263. package/dist/type_primitives/assertions.d.ts.map +1 -1
  264. package/dist/type_primitives/binary_heap/binary_heap.d.cts +37 -0
  265. package/dist/type_primitives/binary_heap/binary_heap.d.ts +6 -2
  266. package/dist/type_primitives/binary_heap/binary_heap.d.ts.map +1 -1
  267. package/dist/type_primitives/bitset/bitset.d.cts +54 -0
  268. package/dist/type_primitives/bitset/bitset.d.ts +16 -4
  269. package/dist/type_primitives/bitset/bitset.d.ts.map +1 -1
  270. package/dist/type_primitives/brand.d.cts +23 -0
  271. package/dist/type_primitives/brand.d.ts +6 -1
  272. package/dist/type_primitives/brand.d.ts.map +1 -1
  273. package/dist/type_primitives/error.d.cts +16 -0
  274. package/dist/type_primitives/error.d.ts +8 -3
  275. package/dist/type_primitives/error.d.ts.map +1 -1
  276. package/dist/type_primitives/index.d.cts +13 -0
  277. package/dist/type_primitives/index.d.ts +12 -9
  278. package/dist/type_primitives/index.d.ts.map +1 -1
  279. package/dist/type_primitives/sparse_map/sparse_map.d.cts +30 -0
  280. package/dist/type_primitives/sparse_map/sparse_map.d.ts +7 -3
  281. package/dist/type_primitives/sparse_map/sparse_map.d.ts.map +1 -1
  282. package/dist/type_primitives/sparse_set/sparse_set.d.cts +28 -0
  283. package/dist/type_primitives/sparse_set/sparse_set.d.ts +4 -0
  284. package/dist/type_primitives/sparse_set/sparse_set.d.ts.map +1 -1
  285. package/dist/type_primitives/topological_sort/topological_sort.d.cts +29 -0
  286. package/dist/type_primitives/topological_sort/topological_sort.d.ts +7 -3
  287. package/dist/type_primitives/topological_sort/topological_sort.d.ts.map +1 -1
  288. package/dist/type_primitives/typed_arrays/typed_arrays.d.cts +127 -0
  289. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +53 -16
  290. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts.map +1 -1
  291. package/dist/typed_arrays-BcXcnzB4.js +258 -0
  292. package/dist/typed_arrays-D3NmwtCG.cjs +1 -0
  293. package/dist/utils/error.d.cts +6 -0
  294. package/dist/utils/error.d.ts +2 -20
  295. package/dist/utils/error.d.ts.map +1 -1
  296. package/dist/version.d.cts +10 -0
  297. package/dist/version.d.ts +10 -0
  298. package/dist/version.d.ts.map +1 -0
  299. package/package.json +115 -5
  300. package/dist/archetype.d.ts +0 -108
  301. package/dist/archetype.d.ts.map +0 -1
  302. package/dist/component.d.ts +0 -45
  303. package/dist/component.d.ts.map +0 -1
  304. package/dist/ecs.d.ts +0 -104
  305. package/dist/ecs.d.ts.map +0 -1
  306. package/dist/entity.d.ts +0 -11
  307. package/dist/entity.d.ts.map +0 -1
  308. package/dist/event.d.ts +0 -30
  309. package/dist/event.d.ts.map +0 -1
  310. package/dist/query.d.ts +0 -94
  311. package/dist/query.d.ts.map +0 -1
  312. package/dist/ref.d.ts +0 -23
  313. package/dist/ref.d.ts.map +0 -1
  314. package/dist/resource.d.ts +0 -23
  315. package/dist/resource.d.ts.map +0 -1
  316. package/dist/schedule.d.ts +0 -45
  317. package/dist/schedule.d.ts.map +0 -1
  318. package/dist/store.d.ts +0 -118
  319. package/dist/store.d.ts.map +0 -1
  320. package/dist/system.d.ts +0 -16
  321. package/dist/system.d.ts.map +0 -1
  322. package/dist/utils/arrays.d.ts.map +0 -1
  323. package/dist/utils/constants.d.ts.map +0 -1
  324. /package/dist/{utils/constants.d.ts → core/ecs/utils/constants.d.cts} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./host_commands-BF8QMi3c.cjs"),d="/packages/engine/src/core/ecs/";class h{activeCache=null;repoRootCache=null;buf=new Map;callsiteCache=new Map;isActive(){if(this.activeCache!==null)return this.activeCache;const t=globalThis.process?.env?.VISUAL_INTEL_TRACE;return this.activeCache=t==="1"||t==="true"}repoRoot(){if(this.repoRootCache!==null)return this.repoRootCache;const e=globalThis.process;return this.repoRootCache=e?.cwd?.()??""}resolveCallsite(){return T(new Error().stack??null,this.repoRoot(),this.callsiteCache)}record(e,t,l){const s=this.resolveCallsite();if(!s)return;const o=`${e} ${t} ${l} ${s}`;this.buf.set(o,(this.buf.get(o)??0)+1)}recordEmit(e){this.record("ecs-events","emit",e)}recordRead(e){this.record("ecs-events","read",e)}recordResourceRead(e){this.record("resources","read",e)}recordResourceWrite(e){this.record("resources","write",e)}recordResourceRegister(e){this.record("resources","register",e)}recordResourceRemove(e){this.record("resources","remove",e)}recordSendAction(e){this.record("actions","send_action",e)}recordHandleAction(e){this.record("actions","handle_action",e)}snapshot(){const e={"ecs-events":{emit:[],read:[]},actions:{send_action:[],handle_action:[]},resources:{read:[],write:[],register:[],remove:[]}};for(const[t,l]of this.buf.entries()){const[s,o,n,c]=t.split(" ");if(!s||!o||c===void 0)continue;const u={key:s==="actions"?Number(n):n,file:c,count:l},E=e[s][o];E&&E.push(u)}for(const t of Object.values(e))for(const l of Object.values(t))l.sort((s,o)=>{if(s.file!==o.file)return s.file<o.file?-1:1;const n=String(s.key),c=String(o.key);return n<c?-1:n>c?1:0});return{schemaVersion:1,capturedAt:new Date().toISOString(),channels:e}}reset(){this.buf.clear(),this.callsiteCache.clear(),this.activeCache=null,this.repoRootCache=null}}function _(i){const e=/\(([^)]+):\d+:\d+\)\s*$/.exec(i);if(e)return e[1]??null;const t=/at\s+([^\s][^()]*?):\d+:\d+\s*$/.exec(i);return t&&(t[1]??"").trim()||null}function T(i,e,t){if(!i)return null;const l=i.split(`
2
+ `);for(let s=0;s<l.length;s++){const o=l[s],n=t?.get(o);if(n!==void 0){if(n===null)continue;return n}const c=_(o);if(!c){t?.set(o,null);continue}if(c.includes(d)){t?.set(o,null);continue}const a=C(c,e);return t?.set(o,a),a}return null}function C(i,e){let t=i;return t.startsWith("file://")&&(t=t.slice(7)),e&&t.startsWith(e+"/")&&(t=t.slice(e.length+1)),t.replace(/\\/g,"/")}const R=new h;exports.BUDGET_DEFAULT_ARCHETYPES=r.BUDGET_DEFAULT_ARCHETYPES;exports.BUDGET_DEFAULT_BYTES_PER_ENTITY=r.BUDGET_DEFAULT_BYTES_PER_ENTITY;exports.BUDGET_GROWTH_HEADROOM=r.BUDGET_GROWTH_HEADROOM;exports.DEFAULT_ECS_CAP_BYTES=r.DEFAULT_ECS_CAP_BYTES;exports.HOST_COMMAND_PAYLOAD_BYTES=r.HOST_COMMAND_PAYLOAD_BYTES;exports.HostCommandDispatcher=r.HostCommandDispatcher;exports.MAX_ENTITY_ID=r.MAX_ENTITY_ID;exports.MAX_GENERATION=r.MAX_GENERATION;exports.MAX_INDEX=r.MAX_INDEX;exports.MAX_LIVE_GENERATION=r.MAX_LIVE_GENERATION;exports.RETIRED_GENERATION=r.RETIRED_GENERATION;exports.accessCheck=r.accessCheck;exports.createEntityId=r.createEntityId;exports.getEntityGeneration=r.getEntityGeneration;exports.resolveECSMemory=r.resolveECSMemory;exports.ringDespawnCodec=r.ringDespawnCodec;exports.ringDisableCodec=r.ringDisableCodec;exports.ringEnableCodec=r.ringEnableCodec;exports.ringRemoveComponentCodec=r.ringRemoveComponentCodec;exports.ringSetFieldCodec=r.ringSetFieldCodec;exports.dispatchTrace=R;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * # oecs/internal — unstable tooling surface
3
+ *
4
+ * Codecs, ABI constants, memory inspectors, and dev-mode singletons, exported
5
+ * for tests, tooling, and advanced integrations (replication decode,
6
+ * cross-thread transports, adversarial harnesses).
7
+ *
8
+ * **No semver guarantees.** Anything here may change or disappear in any
9
+ * release. The supported application surface is the package root.
10
+ *
11
+ * @module oecs/internal
12
+ */
13
+ export { resolveECSMemory, DEFAULT_ECS_CAP_BYTES, BUDGET_GROWTH_HEADROOM, BUDGET_DEFAULT_BYTES_PER_ENTITY, BUDGET_DEFAULT_ARCHETYPES } from './core/ecs/index.cjs';
14
+ export type { ResolvedECSMemory, ECSMemoryCapContext } from './core/ecs/index.cjs';
15
+ export { accessCheck } from './core/ecs/index.cjs';
16
+ export { dispatchTrace, type DispatchTraceSnapshot, type DispatchTraceEntry } from './core/ecs/index.cjs';
17
+ export { HostCommandDispatcher, ringSetFieldCodec, ringDespawnCodec, ringDisableCodec, ringEnableCodec, ringRemoveComponentCodec, HOST_COMMAND_PAYLOAD_BYTES } from './core/ecs/index.cjs';
18
+ export type { RingCommandApplier } from './core/ecs/index.cjs';
19
+ export { createEntityId, getEntityGeneration, MAX_INDEX, MAX_GENERATION, MAX_LIVE_GENERATION, RETIRED_GENERATION, MAX_ENTITY_ID } from './core/ecs/index.cjs';
20
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * # oecs/internal — unstable tooling surface
3
+ *
4
+ * Codecs, ABI constants, memory inspectors, and dev-mode singletons, exported
5
+ * for tests, tooling, and advanced integrations (replication decode,
6
+ * cross-thread transports, adversarial harnesses).
7
+ *
8
+ * **No semver guarantees.** Anything here may change or disappear in any
9
+ * release. The supported application surface is the package root.
10
+ *
11
+ * @module oecs/internal
12
+ */
13
+ export { resolveECSMemory, DEFAULT_ECS_CAP_BYTES, BUDGET_GROWTH_HEADROOM, BUDGET_DEFAULT_BYTES_PER_ENTITY, BUDGET_DEFAULT_ARCHETYPES } from './core/ecs/index.js';
14
+ export type { ResolvedECSMemory, ECSMemoryCapContext } from './core/ecs/index.js';
15
+ export { accessCheck } from './core/ecs/index.js';
16
+ export { dispatchTrace, type DispatchTraceSnapshot, type DispatchTraceEntry } from './core/ecs/index.js';
17
+ export { HostCommandDispatcher, ringSetFieldCodec, ringDespawnCodec, ringDisableCodec, ringEnableCodec, ringRemoveComponentCodec, HOST_COMMAND_PAYLOAD_BYTES } from './core/ecs/index.js';
18
+ export type { RingCommandApplier } from './core/ecs/index.js';
19
+ export { createEntityId, getEntityGeneration, MAX_INDEX, MAX_GENERATION, MAX_LIVE_GENERATION, RETIRED_GENERATION, MAX_ENTITY_ID } from './core/ecs/index.js';
20
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EACN,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,yBAAyB,EACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGzE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC,OAAO,EAAE,aAAa,EAAE,KAAK,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAMhG,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,0BAA0B,EAC1B,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQrD,OAAO,EACN,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,MAAM,YAAY,CAAC"}
@@ -0,0 +1,141 @@
1
+ import { b as v, a as A, B as g, D as m, i as D, H as S, n as b, l as I, M, m as N, R as O, c as k, j as w, k as y, r as G, e as F, f as B, g as H, h as L, d as U } from "./host_commands-i4cAeyL5.js";
2
+ const h = "/packages/engine/src/core/ecs/";
3
+ class d {
4
+ activeCache = null;
5
+ repoRootCache = null;
6
+ buf = /* @__PURE__ */ new Map();
7
+ callsiteCache = /* @__PURE__ */ new Map();
8
+ isActive() {
9
+ if (this.activeCache !== null) return this.activeCache;
10
+ const t = globalThis.process?.env?.VISUAL_INTEL_TRACE;
11
+ return this.activeCache = t === "1" || t === "true";
12
+ }
13
+ repoRoot() {
14
+ if (this.repoRootCache !== null) return this.repoRootCache;
15
+ const e = globalThis.process;
16
+ return this.repoRootCache = e?.cwd?.() ?? "";
17
+ }
18
+ resolveCallsite() {
19
+ return E(
20
+ new Error().stack ?? null,
21
+ this.repoRoot(),
22
+ this.callsiteCache
23
+ );
24
+ }
25
+ record(e, t, i) {
26
+ const r = this.resolveCallsite();
27
+ if (!r) return;
28
+ const s = `${e} ${t} ${i} ${r}`;
29
+ this.buf.set(s, (this.buf.get(s) ?? 0) + 1);
30
+ }
31
+ recordEmit(e) {
32
+ this.record("ecs-events", "emit", e);
33
+ }
34
+ recordRead(e) {
35
+ this.record("ecs-events", "read", e);
36
+ }
37
+ recordResourceRead(e) {
38
+ this.record("resources", "read", e);
39
+ }
40
+ recordResourceWrite(e) {
41
+ this.record("resources", "write", e);
42
+ }
43
+ recordResourceRegister(e) {
44
+ this.record("resources", "register", e);
45
+ }
46
+ recordResourceRemove(e) {
47
+ this.record("resources", "remove", e);
48
+ }
49
+ recordSendAction(e) {
50
+ this.record("actions", "send_action", e);
51
+ }
52
+ recordHandleAction(e) {
53
+ this.record("actions", "handle_action", e);
54
+ }
55
+ snapshot() {
56
+ const e = {
57
+ "ecs-events": { emit: [], read: [] },
58
+ actions: { send_action: [], handle_action: [] },
59
+ resources: { read: [], write: [], register: [], remove: [] }
60
+ };
61
+ for (const [t, i] of this.buf.entries()) {
62
+ const [r, s, o, c] = t.split(" ");
63
+ if (!r || !s || c === void 0) continue;
64
+ const u = { key: r === "actions" ? Number(o) : o, file: c, count: i }, l = e[r][s];
65
+ l && l.push(u);
66
+ }
67
+ for (const t of Object.values(e))
68
+ for (const i of Object.values(t))
69
+ i.sort((r, s) => {
70
+ if (r.file !== s.file) return r.file < s.file ? -1 : 1;
71
+ const o = String(r.key), c = String(s.key);
72
+ return o < c ? -1 : o > c ? 1 : 0;
73
+ });
74
+ return {
75
+ schemaVersion: 1,
76
+ capturedAt: (/* @__PURE__ */ new Date()).toISOString(),
77
+ channels: e
78
+ };
79
+ }
80
+ reset() {
81
+ this.buf.clear(), this.callsiteCache.clear(), this.activeCache = null, this.repoRootCache = null;
82
+ }
83
+ }
84
+ function f(n) {
85
+ const e = /\(([^)]+):\d+:\d+\)\s*$/.exec(n);
86
+ if (e) return e[1] ?? null;
87
+ const t = /at\s+([^\s][^()]*?):\d+:\d+\s*$/.exec(n);
88
+ return t && (t[1] ?? "").trim() || null;
89
+ }
90
+ function E(n, e, t) {
91
+ if (!n) return null;
92
+ const i = n.split(`
93
+ `);
94
+ for (let r = 0; r < i.length; r++) {
95
+ const s = i[r], o = t?.get(s);
96
+ if (o !== void 0) {
97
+ if (o === null) continue;
98
+ return o;
99
+ }
100
+ const c = f(s);
101
+ if (!c) {
102
+ t?.set(s, null);
103
+ continue;
104
+ }
105
+ if (c.includes(h)) {
106
+ t?.set(s, null);
107
+ continue;
108
+ }
109
+ const a = p(c, e);
110
+ return t?.set(s, a), a;
111
+ }
112
+ return null;
113
+ }
114
+ function p(n, e) {
115
+ let t = n;
116
+ return t.startsWith("file://") && (t = t.slice(7)), e && t.startsWith(e + "/") && (t = t.slice(e.length + 1)), t.replace(/\\/g, "/");
117
+ }
118
+ const C = new d();
119
+ export {
120
+ v as BUDGET_DEFAULT_ARCHETYPES,
121
+ A as BUDGET_DEFAULT_BYTES_PER_ENTITY,
122
+ g as BUDGET_GROWTH_HEADROOM,
123
+ m as DEFAULT_ECS_CAP_BYTES,
124
+ D as HOST_COMMAND_PAYLOAD_BYTES,
125
+ S as HostCommandDispatcher,
126
+ b as MAX_ENTITY_ID,
127
+ I as MAX_GENERATION,
128
+ M as MAX_INDEX,
129
+ N as MAX_LIVE_GENERATION,
130
+ O as RETIRED_GENERATION,
131
+ k as accessCheck,
132
+ w as createEntityId,
133
+ C as dispatchTrace,
134
+ y as getEntityGeneration,
135
+ G as resolveECSMemory,
136
+ F as ringDespawnCodec,
137
+ B as ringDisableCodec,
138
+ H as ringEnableCodec,
139
+ L as ringRemoveComponentCodec,
140
+ U as ringSetFieldCodec
141
+ };
@@ -0,0 +1 @@
1
+ "use strict";const n=require("./kernel-yWV3XnAb.cjs");function u(e,t){let r=!1;return n.effect(()=>{const s=e();r?n.untrack(()=>t(s)):r=!0})}function i(e){return{subscribe:t=>u(e,()=>t()),getSnapshot:e}}exports.subscribe=u;exports.toExternalStore=i;
@@ -0,0 +1,18 @@
1
+ import { e as n, u } from "./kernel-DgyrLFjW.js";
2
+ function a(e, t) {
3
+ let r = !1;
4
+ return n(() => {
5
+ const s = e();
6
+ r ? u(() => t(s)) : r = !0;
7
+ });
8
+ }
9
+ function f(e) {
10
+ return {
11
+ subscribe: (t) => a(e, () => t()),
12
+ getSnapshot: e
13
+ };
14
+ }
15
+ export {
16
+ a as s,
17
+ f as t
18
+ };
@@ -0,0 +1,227 @@
1
+ let l = null, v = 0, c = !1, I = 0;
2
+ const a = [];
3
+ let h, r = null;
4
+ function f(s) {
5
+ const e = s.owned;
6
+ if (e !== null) {
7
+ s.owned = null;
8
+ for (let t = e.length - 1; t >= 0; t--) e[t].dispose();
9
+ }
10
+ const i = s.cleanups;
11
+ if (i !== null) {
12
+ s.cleanups = null;
13
+ for (let t = i.length - 1; t >= 0; t--) i[t]();
14
+ }
15
+ }
16
+ function d(s) {
17
+ r !== null && (r.owned ??= []).push(s);
18
+ }
19
+ function D(s, e) {
20
+ const i = e.depsTail;
21
+ if (i !== void 0 && i.source === s) {
22
+ i.version = s.version;
23
+ return;
24
+ }
25
+ const t = i !== void 0 ? i.nextDep : e.deps;
26
+ if (t !== void 0 && t.source === s) {
27
+ t.version = s.version, e.depsTail = t;
28
+ return;
29
+ }
30
+ const n = O(s, e, i, t);
31
+ n.version = s.version, i !== void 0 ? i.nextDep = n : e.deps = n, t !== void 0 && (t.prevDep = n), e.depsTail = n, n.prevSub = s.subsTail, s.subsTail !== void 0 ? s.subsTail.nextSub = n : s.subs = n, s.subsTail = n;
32
+ }
33
+ function O(s, e, i, t) {
34
+ const n = h;
35
+ return n !== void 0 ? (h = n.nextDep, n.source = s, n.target = e, n.version = 0, n.prevDep = i, n.nextDep = t, n.prevSub = void 0, n.nextSub = void 0, n) : { source: s, target: e, version: 0, prevSub: void 0, nextSub: void 0, prevDep: i, nextDep: t };
36
+ }
37
+ function p(s) {
38
+ const { source: e, target: i, prevDep: t, nextDep: n, prevSub: o, nextSub: u } = s;
39
+ return t !== void 0 ? t.nextDep = n : i.deps = n, n !== void 0 && (n.prevDep = t), o !== void 0 ? o.nextSub = u : e.subs = u, u !== void 0 ? u.prevSub = o : e.subsTail = o, s.prevDep = void 0, s.prevSub = void 0, s.nextSub = void 0, s.nextDep = h, h = s, n;
40
+ }
41
+ function T(s) {
42
+ s.depsTail = void 0;
43
+ }
44
+ function g(s) {
45
+ const e = s.depsTail;
46
+ let i = e !== void 0 ? e.nextDep : s.deps;
47
+ for (; i !== void 0; ) i = p(i);
48
+ }
49
+ function S(s) {
50
+ for (let e = s.deps; e !== void 0; e = e.nextDep)
51
+ if (e.source.refresh(), e.version !== e.source.version) return !0;
52
+ return !1;
53
+ }
54
+ function b(s) {
55
+ for (let e = s.subs; e !== void 0; e = e.nextSub)
56
+ e.target.notify();
57
+ }
58
+ class w {
59
+ value;
60
+ eq;
61
+ version = 0;
62
+ subs = void 0;
63
+ subsTail = void 0;
64
+ constructor(e, i) {
65
+ this.value = e, this.eq = i;
66
+ }
67
+ refresh() {
68
+ }
69
+ get() {
70
+ return l !== null && D(this, l), this.value;
71
+ }
72
+ set(e) {
73
+ this.eq(this.value, e) || (this.value = e, this.version++, this.subs !== void 0 && (b(this), v === 0 && E()));
74
+ }
75
+ }
76
+ class N {
77
+ value;
78
+ // assigned by the first refresh, which always runs before any read
79
+ fn;
80
+ eq;
81
+ version = 0;
82
+ subs = void 0;
83
+ subsTail = void 0;
84
+ deps = void 0;
85
+ depsTail = void 0;
86
+ flags = 4;
87
+ cleanups = null;
88
+ owned = null;
89
+ constructor(e, i) {
90
+ this.fn = e, this.eq = i;
91
+ }
92
+ refresh() {
93
+ if (this.flags & 9 || (this.flags &= -3, !(this.flags & 4) && this.version !== 0) || (this.flags &= -5, this.version !== 0 && !S(this))) return;
94
+ this.flags |= 1, f(this), T(this);
95
+ const e = l, i = r;
96
+ l = this, r = this;
97
+ try {
98
+ const t = this.fn();
99
+ (this.version === 0 || !this.eq(this.value, t)) && (this.value = t, this.version++);
100
+ } finally {
101
+ l = e, r = i, g(this), this.flags &= -2;
102
+ }
103
+ }
104
+ get() {
105
+ return this.flags & 1 ? this.value : (this.refresh(), l !== null && D(this, l), this.value);
106
+ }
107
+ notify() {
108
+ this.flags & 2 || (this.flags |= 6, b(this));
109
+ }
110
+ dispose() {
111
+ if (this.flags & 8) return;
112
+ this.flags |= 8;
113
+ let e = this.deps;
114
+ for (; e !== void 0; ) e = p(e);
115
+ this.depsTail = void 0, f(this);
116
+ }
117
+ }
118
+ class y {
119
+ fn;
120
+ deps = void 0;
121
+ depsTail = void 0;
122
+ flags = 0;
123
+ lastFlush = 0;
124
+ // the flush generation this effect last ran in (cycle backstop)
125
+ cleanups = null;
126
+ owned = null;
127
+ constructor(e) {
128
+ this.fn = e;
129
+ }
130
+ notify() {
131
+ this.flags & 2 || (this.flags |= 18, a.push(this));
132
+ }
133
+ run() {
134
+ if (this.flags & 8) return;
135
+ f(this), T(this);
136
+ const e = l, i = r;
137
+ l = this, r = this;
138
+ try {
139
+ this.fn();
140
+ } finally {
141
+ l = e, r = i, g(this);
142
+ }
143
+ }
144
+ dispose() {
145
+ if (this.flags & 8) return;
146
+ this.flags |= 8;
147
+ let e = this.deps;
148
+ for (; e !== void 0; ) e = p(e);
149
+ this.depsTail = void 0, f(this);
150
+ }
151
+ }
152
+ function E() {
153
+ if (c) return;
154
+ c = !0;
155
+ const s = ++I;
156
+ let e = 0, i, t = !1;
157
+ try {
158
+ for (let n = 0; n < a.length; n++) {
159
+ const o = a[n];
160
+ if (o.flags &= -19, !(o.flags & 8) && S(o)) {
161
+ if (o.lastFlush === s && ++e > 1e5)
162
+ throw new Error(
163
+ "reactive flush did not settle after 100000 cascading re-runs (an effect likely writes a signal it depends on — a cycle)"
164
+ );
165
+ o.lastFlush = s;
166
+ try {
167
+ o.run();
168
+ } catch (u) {
169
+ t || (i = u, t = !0);
170
+ }
171
+ }
172
+ }
173
+ } finally {
174
+ a.length = 0, c = !1;
175
+ }
176
+ if (t) throw i;
177
+ }
178
+ function x(s, e = Object.is) {
179
+ const i = new w(s, e);
180
+ return [() => i.get(), (t) => i.set(t)];
181
+ }
182
+ function A(s, e = Object.is) {
183
+ const i = new N(s, e);
184
+ return d(i), () => i.get();
185
+ }
186
+ function U(s) {
187
+ const e = new y(s);
188
+ return d(e), e.run(), () => e.dispose();
189
+ }
190
+ function F(s) {
191
+ v++;
192
+ try {
193
+ s();
194
+ } finally {
195
+ --v === 0 && E();
196
+ }
197
+ }
198
+ function k(s) {
199
+ const e = l;
200
+ l = null;
201
+ try {
202
+ return s();
203
+ } finally {
204
+ l = e;
205
+ }
206
+ }
207
+ function P(s) {
208
+ const e = { cleanups: null, owned: null }, i = r;
209
+ r = e;
210
+ try {
211
+ return s(() => f(e));
212
+ } finally {
213
+ r = i;
214
+ }
215
+ }
216
+ function C(s) {
217
+ r !== null && (r.cleanups ??= []).push(s);
218
+ }
219
+ export {
220
+ F as b,
221
+ A as c,
222
+ U as e,
223
+ C as o,
224
+ P as r,
225
+ x as s,
226
+ k as u
227
+ };
@@ -0,0 +1 @@
1
+ "use strict";let l=null,v=0,c=!1,I=0;const a=[];let h,r=null;function f(s){const e=s.owned;if(e!==null){s.owned=null;for(let i=e.length-1;i>=0;i--)e[i].dispose()}const t=s.cleanups;if(t!==null){s.cleanups=null;for(let i=t.length-1;i>=0;i--)t[i]()}}function d(s){r!==null&&(r.owned??=[]).push(s)}function D(s,e){const t=e.depsTail;if(t!==void 0&&t.source===s){t.version=s.version;return}const i=t!==void 0?t.nextDep:e.deps;if(i!==void 0&&i.source===s){i.version=s.version,e.depsTail=i;return}const n=O(s,e,t,i);n.version=s.version,t!==void 0?t.nextDep=n:e.deps=n,i!==void 0&&(i.prevDep=n),e.depsTail=n,n.prevSub=s.subsTail,s.subsTail!==void 0?s.subsTail.nextSub=n:s.subs=n,s.subsTail=n}function O(s,e,t,i){const n=h;return n!==void 0?(h=n.nextDep,n.source=s,n.target=e,n.version=0,n.prevDep=t,n.nextDep=i,n.prevSub=void 0,n.nextSub=void 0,n):{source:s,target:e,version:0,prevSub:void 0,nextSub:void 0,prevDep:t,nextDep:i}}function p(s){const{source:e,target:t,prevDep:i,nextDep:n,prevSub:o,nextSub:u}=s;return i!==void 0?i.nextDep=n:t.deps=n,n!==void 0&&(n.prevDep=i),o!==void 0?o.nextSub=u:e.subs=u,u!==void 0?u.prevSub=o:e.subsTail=o,s.prevDep=void 0,s.prevSub=void 0,s.nextSub=void 0,s.nextDep=h,h=s,n}function T(s){s.depsTail=void 0}function g(s){const e=s.depsTail;let t=e!==void 0?e.nextDep:s.deps;for(;t!==void 0;)t=p(t)}function S(s){for(let e=s.deps;e!==void 0;e=e.nextDep)if(e.source.refresh(),e.version!==e.source.version)return!0;return!1}function b(s){for(let e=s.subs;e!==void 0;e=e.nextSub)e.target.notify()}class w{value;eq;version=0;subs=void 0;subsTail=void 0;constructor(e,t){this.value=e,this.eq=t}refresh(){}get(){return l!==null&&D(this,l),this.value}set(e){this.eq(this.value,e)||(this.value=e,this.version++,this.subs!==void 0&&(b(this),v===0&&E()))}}class N{value;fn;eq;version=0;subs=void 0;subsTail=void 0;deps=void 0;depsTail=void 0;flags=4;cleanups=null;owned=null;constructor(e,t){this.fn=e,this.eq=t}refresh(){if(this.flags&9||(this.flags&=-3,!(this.flags&4)&&this.version!==0)||(this.flags&=-5,this.version!==0&&!S(this)))return;this.flags|=1,f(this),T(this);const e=l,t=r;l=this,r=this;try{const i=this.fn();(this.version===0||!this.eq(this.value,i))&&(this.value=i,this.version++)}finally{l=e,r=t,g(this),this.flags&=-2}}get(){return this.flags&1?this.value:(this.refresh(),l!==null&&D(this,l),this.value)}notify(){this.flags&2||(this.flags|=6,b(this))}dispose(){if(this.flags&8)return;this.flags|=8;let e=this.deps;for(;e!==void 0;)e=p(e);this.depsTail=void 0,f(this)}}class y{fn;deps=void 0;depsTail=void 0;flags=0;lastFlush=0;cleanups=null;owned=null;constructor(e){this.fn=e}notify(){this.flags&2||(this.flags|=18,a.push(this))}run(){if(this.flags&8)return;f(this),T(this);const e=l,t=r;l=this,r=this;try{this.fn()}finally{l=e,r=t,g(this)}}dispose(){if(this.flags&8)return;this.flags|=8;let e=this.deps;for(;e!==void 0;)e=p(e);this.depsTail=void 0,f(this)}}function E(){if(c)return;c=!0;const s=++I;let e=0,t,i=!1;try{for(let n=0;n<a.length;n++){const o=a[n];if(o.flags&=-19,!(o.flags&8)&&S(o)){if(o.lastFlush===s&&++e>1e5)throw new Error("reactive flush did not settle after 100000 cascading re-runs (an effect likely writes a signal it depends on — a cycle)");o.lastFlush=s;try{o.run()}catch(u){i||(t=u,i=!0)}}}}finally{a.length=0,c=!1}if(i)throw t}function x(s,e=Object.is){const t=new w(s,e);return[()=>t.get(),i=>t.set(i)]}function A(s,e=Object.is){const t=new N(s,e);return d(t),()=>t.get()}function U(s){const e=new y(s);return d(e),e.run(),()=>e.dispose()}function k(s){v++;try{s()}finally{--v===0&&E()}}function F(s){const e=l;l=null;try{return s()}finally{l=e}}function C(s){const e={cleanups:null,owned:null},t=r;r=e;try{return s(()=>f(e))}finally{r=t}}function P(s){r!==null&&(r.cleanups??=[]).push(s)}exports.batch=k;exports.computed=A;exports.effect=U;exports.onCleanup=P;exports.root=C;exports.signal=x;exports.untrack=F;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./typed_arrays-D3NmwtCG.cjs"),t=require("./topological_sort-BDvEyb9W.cjs");class o{_dense=[];_sparse=[];get size(){return this._dense.length}get values(){return this._dense}has(e){return this._dense[this._sparse[e]]===e}add(e){this.has(e)||(this._sparse[e]=this._dense.length,this._dense.push(e))}delete(e){if(!this.has(e))return!1;const a=this._sparse[e],s=this._dense[this._dense.length-1];return this._dense[a]=s,this._sparse[s]=a,this._dense.pop(),!0}clear(){this._dense.length=0,this._sparse.length=0}[Symbol.iterator](){return this._dense[Symbol.iterator]()}}exports.BitSet=r.BitSet;exports.GrowableFloat32Array=r.GrowableFloat32Array;exports.GrowableFloat64Array=r.GrowableFloat64Array;exports.GrowableInt16Array=r.GrowableInt16Array;exports.GrowableInt32Array=r.GrowableInt32Array;exports.GrowableInt8Array=r.GrowableInt8Array;exports.GrowableTypedArray=r.GrowableTypedArray;exports.GrowableUint16Array=r.GrowableUint16Array;exports.GrowableUint32Array=r.GrowableUint32Array;exports.GrowableUint8Array=r.GrowableUint8Array;exports.BinaryHeap=t.BinaryHeap;exports.SparseMap=t.SparseMap;exports.topologicalSort=t.topologicalSort;exports.SparseSet=o;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `@oasys/oecs/primitives` — the general-purpose data-structure primitives the
3
+ * ECS is built on, surfaced for direct consumer use: a bit set, sparse set/map,
4
+ * growable typed arrays, a binary heap, and a topological sort.
5
+ *
6
+ * These are the low-level building blocks only; the ECS itself is the default
7
+ * `@oasys/oecs` entry. The internal assertion, brand, and error helpers under
8
+ * `src/type_primitives/` are intentionally NOT re-exported here.
9
+ *
10
+ * @module
11
+ */
12
+ export { BitSet } from './type_primitives/bitset/bitset.cjs';
13
+ export { SparseSet } from './type_primitives/sparse_set/sparse_set.cjs';
14
+ export { SparseMap } from './type_primitives/sparse_map/sparse_map.cjs';
15
+ export { GrowableTypedArray, GrowableFloat32Array, GrowableFloat64Array, GrowableInt8Array, GrowableInt16Array, GrowableInt32Array, GrowableUint8Array, GrowableUint16Array, GrowableUint32Array, type TypedArrayTag, type AnyTypedArray } from './type_primitives/typed_arrays/typed_arrays.cjs';
16
+ export { BinaryHeap, type CompareFn } from './type_primitives/binary_heap/binary_heap.cjs';
17
+ export { topologicalSort } from './type_primitives/topological_sort/topological_sort.cjs';
18
+ //# sourceMappingURL=primitives.d.ts.map
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `@oasys/oecs/primitives` — the general-purpose data-structure primitives the
3
+ * ECS is built on, surfaced for direct consumer use: a bit set, sparse set/map,
4
+ * growable typed arrays, a binary heap, and a topological sort.
5
+ *
6
+ * These are the low-level building blocks only; the ECS itself is the default
7
+ * `@oasys/oecs` entry. The internal assertion, brand, and error helpers under
8
+ * `src/type_primitives/` are intentionally NOT re-exported here.
9
+ *
10
+ * @module
11
+ */
12
+ export { BitSet } from './type_primitives/bitset/bitset.js';
13
+ export { SparseSet } from './type_primitives/sparse_set/sparse_set.js';
14
+ export { SparseMap } from './type_primitives/sparse_map/sparse_map.js';
15
+ export { GrowableTypedArray, GrowableFloat32Array, GrowableFloat64Array, GrowableInt8Array, GrowableInt16Array, GrowableInt32Array, GrowableUint8Array, GrowableUint16Array, GrowableUint32Array, type TypedArrayTag, type AnyTypedArray } from './type_primitives/typed_arrays/typed_arrays.js';
16
+ export { BinaryHeap, type CompareFn } from './type_primitives/binary_heap/binary_heap.js';
17
+ export { topologicalSort } from './type_primitives/topological_sort/topological_sort.js';
18
+ //# sourceMappingURL=primitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EACN,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,qDAAqD,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { B as h, a as o, b as l, d as p, e as _, c as d, G as b, g as u, h as w, f as G } from "./typed_arrays-BcXcnzB4.js";
2
+ import { B as y, S as A, t as S } from "./topological_sort-DK6EjpWa.js";
3
+ class a {
4
+ _dense = [];
5
+ _sparse = [];
6
+ get size() {
7
+ return this._dense.length;
8
+ }
9
+ get values() {
10
+ return this._dense;
11
+ }
12
+ has(e) {
13
+ return this._dense[this._sparse[e]] === e;
14
+ }
15
+ add(e) {
16
+ this.has(e) || (this._sparse[e] = this._dense.length, this._dense.push(e));
17
+ }
18
+ delete(e) {
19
+ if (!this.has(e)) return !1;
20
+ const s = this._sparse[e], r = this._dense[this._dense.length - 1];
21
+ return this._dense[s] = r, this._sparse[r] = s, this._dense.pop(), !0;
22
+ }
23
+ clear() {
24
+ this._dense.length = 0, this._sparse.length = 0;
25
+ }
26
+ [Symbol.iterator]() {
27
+ return this._dense[Symbol.iterator]();
28
+ }
29
+ }
30
+ export {
31
+ y as BinaryHeap,
32
+ h as BitSet,
33
+ o as GrowableFloat32Array,
34
+ l as GrowableFloat64Array,
35
+ p as GrowableInt16Array,
36
+ _ as GrowableInt32Array,
37
+ d as GrowableInt8Array,
38
+ b as GrowableTypedArray,
39
+ u as GrowableUint16Array,
40
+ w as GrowableUint32Array,
41
+ G as GrowableUint8Array,
42
+ A as SparseMap,
43
+ a as SparseSet,
44
+ S as topologicalSort
45
+ };
@@ -0,0 +1,24 @@
1
+ export interface ReactiveArray<T> {
2
+ /** Read slot `i`, subscribing to that slot (or to structure if out of range). */
3
+ get(i: number): T | undefined;
4
+ /** Element count, tracking structure (length changes only, not value updates). */
5
+ length(): number;
6
+ /**
7
+ * Whole-array snapshot. Tracks structure AND every slot value — the COARSE read
8
+ * (any slot change wakes it). Use `length()` + `get(i)` for the fine-grained path;
9
+ * `snapshot()` is for feeding a positional array to a Solid `<Index each>`.
10
+ */
11
+ snapshot(): readonly T[];
12
+ /** Fine-grained slot write. Updating an in-range slot wakes only that slot's readers. */
13
+ set(i: number, value: T): void;
14
+ /** Append one element; bumps structure. */
15
+ push(value: T): void;
16
+ /** Remove + return the last element; bumps structure. */
17
+ pop(): T | undefined;
18
+ /** Array-semantics splice; positionally reconciles so only shifted slots wake. */
19
+ splice(start: number, deleteCount?: number, ...items: T[]): T[];
20
+ /** Structural-sharing bulk replace: diff vs current, write only changed slots. */
21
+ reconcile(next: readonly T[]): void;
22
+ }
23
+ export declare function reactiveArray<T>(initial?: readonly T[], eq?: (a: T, b: T) => boolean): ReactiveArray<T>;
24
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1,24 @@
1
+ export interface ReactiveArray<T> {
2
+ /** Read slot `i`, subscribing to that slot (or to structure if out of range). */
3
+ get(i: number): T | undefined;
4
+ /** Element count, tracking structure (length changes only, not value updates). */
5
+ length(): number;
6
+ /**
7
+ * Whole-array snapshot. Tracks structure AND every slot value — the COARSE read
8
+ * (any slot change wakes it). Use `length()` + `get(i)` for the fine-grained path;
9
+ * `snapshot()` is for feeding a positional array to a Solid `<Index each>`.
10
+ */
11
+ snapshot(): readonly T[];
12
+ /** Fine-grained slot write. Updating an in-range slot wakes only that slot's readers. */
13
+ set(i: number, value: T): void;
14
+ /** Append one element; bumps structure. */
15
+ push(value: T): void;
16
+ /** Remove + return the last element; bumps structure. */
17
+ pop(): T | undefined;
18
+ /** Array-semantics splice; positionally reconciles so only shifted slots wake. */
19
+ splice(start: number, deleteCount?: number, ...items: T[]): T[];
20
+ /** Structural-sharing bulk replace: diff vs current, write only changed slots. */
21
+ reconcile(next: readonly T[]): void;
22
+ }
23
+ export declare function reactiveArray<T>(initial?: readonly T[], eq?: (a: T, b: T) => boolean): ReactiveArray<T>;
24
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/reactive/array.ts"],"names":[],"mappings":"AA2CA,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,iFAAiF;IACjF,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAC9B,kFAAkF;IAClF,MAAM,IAAI,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,IAAI,SAAS,CAAC,EAAE,CAAC;IACzB,yFAAyF;IACzF,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAC/B,2CAA2C;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,yDAAyD;IACzD,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACrB,kFAAkF;IAClF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAChE,kFAAkF;IAClF,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC9B,OAAO,GAAE,SAAS,CAAC,EAAO,EAC1B,EAAE,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAmB,GACrC,aAAa,CAAC,CAAC,CAAC,CAmGlB"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../kernel-yWV3XnAb.cjs"),t=require("../shallow-DQ8aG51_.cjs"),r=require("../interop-CT-REx0W.cjs");exports.batch=e.batch;exports.computed=e.computed;exports.effect=e.effect;exports.onCleanup=e.onCleanup;exports.root=e.root;exports.signal=e.signal;exports.untrack=e.untrack;exports.reactiveArray=t.reactiveArray;exports.reactiveMap=t.reactiveMap;exports.reactiveStruct=t.reactiveStruct;exports.shallow=t.shallow;exports.subscribe=r.subscribe;exports.toExternalStore=r.toExternalStore;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Reactive kernel — the engine UI seam's fine-grained, glitch-free reactive core
3
+ * (ADR-0021). Zero dependencies; consumer owns rendering. See docs/api/reactive.md.
4
+ */
5
+ export { signal, computed, effect, batch, untrack, root, onCleanup, type Accessor, type Setter, type Eq } from './kernel.cjs';
6
+ export { reactiveMap, type ReactiveMap } from './map.cjs';
7
+ export { reactiveStruct, type StructSetters, type StructEq } from './struct.cjs';
8
+ export { reactiveArray, type ReactiveArray } from './array.cjs';
9
+ export { subscribe, toExternalStore, type ExternalStore } from './interop.cjs';
10
+ export { shallow } from './shallow.cjs';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Reactive kernel — the engine UI seam's fine-grained, glitch-free reactive core
3
+ * (ADR-0021). Zero dependencies; consumer owns rendering. See docs/api/reactive.md.
4
+ */
5
+ export { signal, computed, effect, batch, untrack, root, onCleanup, type Accessor, type Setter, type Eq } from './kernel.js';
6
+ export { reactiveMap, type ReactiveMap } from './map.js';
7
+ export { reactiveStruct, type StructSetters, type StructEq } from './struct.js';
8
+ export { reactiveArray, type ReactiveArray } from './array.js';
9
+ export { subscribe, toExternalStore, type ExternalStore } from './interop.js';
10
+ export { shallow } from './shallow.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reactive/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACN,MAAM,EACN,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,EACP,IAAI,EACJ,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,EAAE,EACP,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { b as r, c as e, e as t, o, r as c, s as p, u } from "../kernel-DgyrLFjW.js";
2
+ import { b as f, r as i, a as l, s as n } from "../shallow-DfnAm9vG.js";
3
+ import { s as x, t as v } from "../interop-CcY6ASQc.js";
4
+ export {
5
+ r as batch,
6
+ e as computed,
7
+ t as effect,
8
+ o as onCleanup,
9
+ f as reactiveArray,
10
+ i as reactiveMap,
11
+ l as reactiveStruct,
12
+ c as root,
13
+ n as shallow,
14
+ p as signal,
15
+ x as subscribe,
16
+ v as toExternalStore,
17
+ u as untrack
18
+ };