@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,135 @@
1
+ class g {
2
+ _denseKeys = [];
3
+ _denseVals = [];
4
+ _sparse = [];
5
+ get size() {
6
+ return this._denseKeys.length;
7
+ }
8
+ get keys() {
9
+ return this._denseKeys;
10
+ }
11
+ has(s) {
12
+ return this._denseKeys[this._sparse[s]] === s;
13
+ }
14
+ get(s) {
15
+ return this.has(s) ? this._denseVals[this._sparse[s]] : void 0;
16
+ }
17
+ set(s, t) {
18
+ if (this.has(s)) {
19
+ this._denseVals[this._sparse[s]] = t;
20
+ return;
21
+ }
22
+ this._sparse[s] = this._denseKeys.length, this._denseKeys.push(s), this._denseVals.push(t);
23
+ }
24
+ delete(s) {
25
+ if (!this.has(s)) return !1;
26
+ const t = this._sparse[s], h = this._denseKeys[this._denseKeys.length - 1];
27
+ return this._denseKeys[t] = h, this._denseVals[t] = this._denseVals[this._denseVals.length - 1], this._sparse[h] = t, this._denseKeys.pop(), this._denseVals.pop(), !0;
28
+ }
29
+ clear() {
30
+ this._denseKeys.length = 0, this._denseVals.length = 0, this._sparse.length = 0;
31
+ }
32
+ forEach(s) {
33
+ for (let t = 0; t < this._denseKeys.length; t++)
34
+ s(this._denseKeys[t], this._denseVals[t]);
35
+ }
36
+ [Symbol.iterator]() {
37
+ let s = 0;
38
+ const t = this._denseKeys, h = this._denseVals;
39
+ return {
40
+ next() {
41
+ return s < t.length ? { value: [t[s], h[s++]], done: !1 } : { value: void 0, done: !0 };
42
+ }
43
+ };
44
+ }
45
+ }
46
+ class d {
47
+ _compare;
48
+ _data = [];
49
+ constructor(s) {
50
+ this._compare = s;
51
+ }
52
+ get size() {
53
+ return this._data.length;
54
+ }
55
+ /** Returns the highest-priority element without removing it, or undefined if empty. */
56
+ peek() {
57
+ return this._data[0];
58
+ }
59
+ /** Inserts a value and restores heap order by sifting up. O(log n). */
60
+ push(s) {
61
+ this._data.push(s), this._siftUp(this._data.length - 1);
62
+ }
63
+ /** Removes and returns the highest-priority element, or undefined if empty. O(log n). */
64
+ pop() {
65
+ const s = this._data;
66
+ if (s.length === 0) return;
67
+ const h = s[0], i = s.pop();
68
+ return s.length > 0 && (s[0] = i, this._siftDown(0)), h;
69
+ }
70
+ /** Removes all elements. O(1). */
71
+ clear() {
72
+ this._data.length = 0;
73
+ }
74
+ /** Moves a node up toward the root until heap order is restored. */
75
+ _siftUp(s) {
76
+ const t = this._data, h = this._compare, i = t[s];
77
+ for (; s > 0; ) {
78
+ const n = s - 1 >> 1;
79
+ if (h(i, t[n]) >= 0) break;
80
+ t[s] = t[n], s = n;
81
+ }
82
+ t[s] = i;
83
+ }
84
+ /** Moves a node down away from the root until heap order is restored. */
85
+ _siftDown(s) {
86
+ const t = this._data, h = this._compare, i = t.length, n = i >> 1, c = t[s];
87
+ for (; s < n; ) {
88
+ let a = (s << 1) + 1;
89
+ const e = a + 1;
90
+ if (e < i && h(t[e], t[a]) < 0 && (a = e), h(t[a], c) >= 0) break;
91
+ t[s] = t[a], s = a;
92
+ }
93
+ t[s] = c;
94
+ }
95
+ }
96
+ function u(l, s, t, h) {
97
+ const i = h ?? ((e) => String(e)), n = /* @__PURE__ */ new Map();
98
+ for (let e = 0; e < l.length; e++)
99
+ n.set(l[e], 0);
100
+ for (const [, e] of s)
101
+ for (let r = 0; r < e.length; r++) {
102
+ const o = e[r];
103
+ n.has(o) && n.set(o, n.get(o) + 1);
104
+ }
105
+ const c = new d(t);
106
+ for (let e = 0; e < l.length; e++)
107
+ n.get(l[e]) === 0 && c.push(l[e]);
108
+ const a = [];
109
+ for (; c.size > 0; ) {
110
+ const e = c.pop();
111
+ a.push(e);
112
+ const r = s.get(e);
113
+ if (r !== void 0)
114
+ for (let o = 0; o < r.length; o++) {
115
+ const _ = r[o];
116
+ if (!n.has(_)) continue;
117
+ const p = n.get(_) - 1;
118
+ n.set(_, p), p === 0 && c.push(_);
119
+ }
120
+ }
121
+ if (a.length !== l.length) {
122
+ const e = [];
123
+ for (const [r, o] of n)
124
+ o > 0 && e.push(i(r));
125
+ throw new TypeError(
126
+ `Cycle detected in topological sort. Nodes still pending: ${e.join(", ")}`
127
+ );
128
+ }
129
+ return a;
130
+ }
131
+ export {
132
+ d as B,
133
+ g as S,
134
+ u as t
135
+ };
@@ -0,0 +1,32 @@
1
+ /***
2
+ * Assertions — Dev-only runtime validation and branded casting.
3
+ *
4
+ * All checks are guarded by DEV and tree-shaken in production builds.
5
+ * validateAndCast is the primary tool for creating branded IDs:
6
+ * it validates the input in dev and returns the value as the branded type.
7
+ * unsafeCast bypasses all checks (used when the caller guarantees validity).
8
+ *
9
+ ***/
10
+ export declare const isNonNegativeInteger: (v: number) => boolean;
11
+ export declare const isNonNull: (v: unknown) => boolean;
12
+ /**
13
+ * Dev-only assertion that value is not null/undefined.
14
+ *
15
+ */
16
+ export declare function assertNonNull<T>(value: T): asserts value is NonNullable<T>;
17
+ export declare function assert<T, Result extends T = T>(value: T, condition: (v: T) => v is Result, errMessage: string): asserts value is Result;
18
+ export declare function validateAndCast<T, Result extends T = T>(value: T, validator: (v: T) => boolean, errMessage: string): Result;
19
+ export declare function unsafeCast<T>(value: unknown): T;
20
+ /**
21
+ * Exhaustiveness backstop for tagged-union dispatches. Put it in the
22
+ * `default` arm (or after the final `case`) of a switch over a closed union:
23
+ * the `never` parameter makes "a union gained a variant but this dispatch
24
+ * didn't" a COMPILE error at the call site, and the throw catches runtime
25
+ * values that bypassed the type layer (deserialized/foreign data).
26
+ *
27
+ * Deliberately NOT `DEV`-gated, unlike the rest of this file: it marks a
28
+ * can't-happen branch, so it costs nothing until the day it fires — and that
29
+ * day it must fire in production too, not silently fall through.
30
+ */
31
+ export declare function assertNever(value: never, label: string): never;
32
+ //# sourceMappingURL=assertions.d.ts.map
@@ -1,16 +1,32 @@
1
1
  /***
2
2
  * Assertions — Dev-only runtime validation and branded casting.
3
3
  *
4
- * All checks are guarded by __DEV__ and tree-shaken in production builds.
5
- * validate_and_cast is the primary tool for creating branded IDs:
4
+ * All checks are guarded by DEV and tree-shaken in production builds.
5
+ * validateAndCast is the primary tool for creating branded IDs:
6
6
  * it validates the input in dev and returns the value as the branded type.
7
- * unsafe_cast bypasses all checks (used when the caller guarantees validity).
7
+ * unsafeCast bypasses all checks (used when the caller guarantees validity).
8
8
  *
9
9
  ***/
10
- export declare const is_non_negative_integer: (v: number) => boolean;
11
- export declare const is_non_null: (v: unknown) => boolean;
12
- export declare function assert_non_null<T>(value: T): asserts value is NonNullable<T>;
13
- export declare function assert<T, Result extends T = T>(value: T, condition: (v: T) => v is Result, err_message: string): asserts value is Result;
14
- export declare function validate_and_cast<T, Result extends T = T>(value: T, validator: (v: T) => boolean, err_message: string): Result;
15
- export declare function unsafe_cast<T>(value: unknown): T;
10
+ export declare const isNonNegativeInteger: (v: number) => boolean;
11
+ export declare const isNonNull: (v: unknown) => boolean;
12
+ /**
13
+ * Dev-only assertion that value is not null/undefined.
14
+ *
15
+ */
16
+ export declare function assertNonNull<T>(value: T): asserts value is NonNullable<T>;
17
+ export declare function assert<T, Result extends T = T>(value: T, condition: (v: T) => v is Result, errMessage: string): asserts value is Result;
18
+ export declare function validateAndCast<T, Result extends T = T>(value: T, validator: (v: T) => boolean, errMessage: string): Result;
19
+ export declare function unsafeCast<T>(value: unknown): T;
20
+ /**
21
+ * Exhaustiveness backstop for tagged-union dispatches. Put it in the
22
+ * `default` arm (or after the final `case`) of a switch over a closed union:
23
+ * the `never` parameter makes "a union gained a variant but this dispatch
24
+ * didn't" a COMPILE error at the call site, and the throw catches runtime
25
+ * values that bypassed the type layer (deserialized/foreign data).
26
+ *
27
+ * Deliberately NOT `DEV`-gated, unlike the rest of this file: it marks a
28
+ * can't-happen branch, so it costs nothing until the day it fires — and that
29
+ * day it must fire in production too, not silently fall through.
30
+ */
31
+ export declare function assertNever(value: never, label: string): never;
16
32
  //# sourceMappingURL=assertions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../src/type_primitives/assertions.ts"],"names":[],"mappings":"AAAA;;;;;;;;KAQK;AAIL,eAAO,MAAM,uBAAuB,MAAO,MAAM,KAAG,OAAwC,CAAC;AAE7F,eAAO,MAAM,WAAW,MAAO,OAAO,KAAG,OAAqB,CAAC;AAE/D,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAU5E;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,EAC5C,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,MAAM,EAChC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,KAAK,IAAI,MAAM,CAOzB;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,EACvD,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,EAC5B,WAAW,EAAE,MAAM,GAClB,MAAM,CAQR;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAEhD"}
1
+ {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../src/type_primitives/assertions.ts"],"names":[],"mappings":"AAAA;;;;;;;;KAQK;AAKL,eAAO,MAAM,oBAAoB,MAAO,MAAM,KAAG,OAAwC,CAAC;AAE1F,eAAO,MAAM,SAAS,MAAO,OAAO,KAAG,OAAqB,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAU1E;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,EAC7C,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,MAAM,EAChC,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,KAAK,IAAI,MAAM,CAOzB;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,EACtD,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,EAC5B,UAAU,EAAE,MAAM,GAChB,MAAM,CAQR;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAE/C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAK9D"}
@@ -0,0 +1,37 @@
1
+ /***
2
+ * BinaryHeap — generic array-backed binary heap with configurable ordering.
3
+ *
4
+ * Array layout uses implicit indexing: root at index 0, children of node `i`
5
+ * at `2i + 1` and `2i + 2`, parent of node `i` at `(i - 1) >> 1`.
6
+ *
7
+ * The comparator determines ordering: when `compare(a, b) < 0`, `a` has
8
+ * higher priority and floats toward the root. A standard `(a, b) => a - b`
9
+ * comparator yields a min-heap; `(a, b) => b - a` yields a max-heap.
10
+ *
11
+ * push and pop are O(log n). peek and clear are O(1).
12
+ *
13
+ ***/
14
+ export type CompareFn<T> = (a: T, b: T) => number;
15
+ /**
16
+ * Generic array-backed binary heap with configurable comparator.
17
+ *
18
+ */
19
+ export declare class BinaryHeap<T> {
20
+ private readonly _compare;
21
+ private readonly _data;
22
+ constructor(compare: CompareFn<T>);
23
+ get size(): number;
24
+ /** Returns the highest-priority element without removing it, or undefined if empty. */
25
+ peek(): T | undefined;
26
+ /** Inserts a value and restores heap order by sifting up. O(log n). */
27
+ push(value: T): void;
28
+ /** Removes and returns the highest-priority element, or undefined if empty. O(log n). */
29
+ pop(): T | undefined;
30
+ /** Removes all elements. O(1). */
31
+ clear(): void;
32
+ /** Moves a node up toward the root until heap order is restored. */
33
+ private _siftUp;
34
+ /** Moves a node down away from the root until heap order is restored. */
35
+ private _siftDown;
36
+ }
37
+ //# sourceMappingURL=binary_heap.d.ts.map
@@ -12,6 +12,10 @@
12
12
  *
13
13
  ***/
14
14
  export type CompareFn<T> = (a: T, b: T) => number;
15
+ /**
16
+ * Generic array-backed binary heap with configurable comparator.
17
+ *
18
+ */
15
19
  export declare class BinaryHeap<T> {
16
20
  private readonly _compare;
17
21
  private readonly _data;
@@ -26,8 +30,8 @@ export declare class BinaryHeap<T> {
26
30
  /** Removes all elements. O(1). */
27
31
  clear(): void;
28
32
  /** Moves a node up toward the root until heap order is restored. */
29
- private _sift_up;
33
+ private _siftUp;
30
34
  /** Moves a node down away from the root until heap order is restored. */
31
- private _sift_down;
35
+ private _siftDown;
32
36
  }
33
37
  //# sourceMappingURL=binary_heap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"binary_heap.d.ts","sourceRoot":"","sources":["../../../src/type_primitives/binary_heap/binary_heap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;KAYK;AAEL,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC;AAElD,qBAAa,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;gBAErB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAIjC,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,uFAAuF;IAChF,IAAI,IAAI,CAAC,GAAG,SAAS;IAI5B,uEAAuE;IAChE,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAK3B,yFAAyF;IAClF,GAAG,IAAI,CAAC,GAAG,SAAS;IAc3B,kCAAkC;IAC3B,KAAK,IAAI,IAAI;IAIpB,oEAAoE;IACpE,OAAO,CAAC,QAAQ;IAchB,yEAAyE;IACzE,OAAO,CAAC,UAAU;CAsBnB"}
1
+ {"version":3,"file":"binary_heap.d.ts","sourceRoot":"","sources":["../../../src/type_primitives/binary_heap/binary_heap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;KAYK;AAEL,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC;AAElD;;;GAGG;AACH,qBAAa,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;gBAErB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAIjC,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,uFAAuF;IAChF,IAAI,IAAI,CAAC,GAAG,SAAS;IAI5B,uEAAuE;IAChE,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAK3B,yFAAyF;IAClF,GAAG,IAAI,CAAC,GAAG,SAAS;IAc3B,kCAAkC;IAC3B,KAAK,IAAI,IAAI;IAIpB,oEAAoE;IACpE,OAAO,CAAC,OAAO;IAcf,yEAAyE;IACzE,OAAO,CAAC,SAAS;CAsBjB"}
@@ -0,0 +1,54 @@
1
+ /***
2
+ * BitSet — number[]-backed bit set with auto-grow.
3
+ *
4
+ * Used as the archetype component signature. Each bit position corresponds
5
+ * to a ComponentID. Operations (has/set/clear) are O(1), and mask
6
+ * comparisons (contains, equals, overlaps) are O(words) where
7
+ * words = ceil(maxComponentId / 32).
8
+ *
9
+ * Bit layout within each 32-bit word:
10
+ * wordIndex = bit >>> BITS_PER_WORD_SHIFT (divide by 32)
11
+ * bit_offset = bit & BITS_PER_WORD_MASK (mod 32)
12
+ * test: word & (1 << offset)
13
+ * set: word |= (1 << offset)
14
+ * clear: word &= ~(1 << offset)
15
+ *
16
+ ***/
17
+ export declare const BITS_PER_WORD = 32;
18
+ export declare const BITS_PER_WORD_SHIFT = 5;
19
+ export declare const BITS_PER_WORD_MASK = 31;
20
+ export declare const FNV_OFFSET_BASIS = 2166136261;
21
+ export declare const FNV_PRIME = 16777619;
22
+ /**
23
+ * number[]-backed bit set with auto-grow. Used as the archetype component signature.
24
+ *
25
+ */
26
+ export declare class BitSet {
27
+ _words: number[];
28
+ constructor(words?: number[]);
29
+ has(bit: number): boolean;
30
+ set(bit: number): void;
31
+ clear(bit: number): void;
32
+ /** True if no bit is set. */
33
+ isEmpty(): boolean;
34
+ /** True if any bit is set in both this and other (non-empty intersection). */
35
+ overlaps(other: BitSet): boolean;
36
+ /** True if this is a superset of other (all bits in other are set in this). */
37
+ contains(other: BitSet): boolean;
38
+ equals(other: BitSet): boolean;
39
+ copy(): BitSet;
40
+ /** Mutate `target` so it has the same set bits as `this`. Reuses
41
+ * `target._words` storage when capacity allows (no allocation) and
42
+ * grows it only when `this` is wider. Designed for hot-path scratch
43
+ * BitSets where callers want `.copy()` semantics without the
44
+ * per-call allocation. Returns `target` for chaining. */
45
+ copyInto(target: BitSet): BitSet;
46
+ copyWithSet(bit: number): BitSet;
47
+ copyWithClear(bit: number): BitSet;
48
+ /** FNV-1a hash. Skips trailing zero words so differently-sized arrays with the same bits hash equally. */
49
+ hash(): number;
50
+ /** Iterate all set bits via lowest-set-bit extraction. */
51
+ forEach(fn: (bit: number) => void): void;
52
+ private grow;
53
+ }
54
+ //# sourceMappingURL=bitset.d.ts.map
@@ -7,7 +7,7 @@
7
7
  * words = ceil(maxComponentId / 32).
8
8
  *
9
9
  * Bit layout within each 32-bit word:
10
- * word_index = bit >>> BITS_PER_WORD_SHIFT (divide by 32)
10
+ * wordIndex = bit >>> BITS_PER_WORD_SHIFT (divide by 32)
11
11
  * bit_offset = bit & BITS_PER_WORD_MASK (mod 32)
12
12
  * test: word & (1 << offset)
13
13
  * set: word |= (1 << offset)
@@ -19,24 +19,36 @@ export declare const BITS_PER_WORD_SHIFT = 5;
19
19
  export declare const BITS_PER_WORD_MASK = 31;
20
20
  export declare const FNV_OFFSET_BASIS = 2166136261;
21
21
  export declare const FNV_PRIME = 16777619;
22
+ /**
23
+ * number[]-backed bit set with auto-grow. Used as the archetype component signature.
24
+ *
25
+ */
22
26
  export declare class BitSet {
23
27
  _words: number[];
24
28
  constructor(words?: number[]);
25
29
  has(bit: number): boolean;
26
30
  set(bit: number): void;
27
31
  clear(bit: number): void;
32
+ /** True if no bit is set. */
33
+ isEmpty(): boolean;
28
34
  /** True if any bit is set in both this and other (non-empty intersection). */
29
35
  overlaps(other: BitSet): boolean;
30
36
  /** True if this is a superset of other (all bits in other are set in this). */
31
37
  contains(other: BitSet): boolean;
32
38
  equals(other: BitSet): boolean;
33
39
  copy(): BitSet;
34
- copy_with_set(bit: number): BitSet;
35
- copy_with_clear(bit: number): BitSet;
40
+ /** Mutate `target` so it has the same set bits as `this`. Reuses
41
+ * `target._words` storage when capacity allows (no allocation) and
42
+ * grows it only when `this` is wider. Designed for hot-path scratch
43
+ * BitSets where callers want `.copy()` semantics without the
44
+ * per-call allocation. Returns `target` for chaining. */
45
+ copyInto(target: BitSet): BitSet;
46
+ copyWithSet(bit: number): BitSet;
47
+ copyWithClear(bit: number): BitSet;
36
48
  /** FNV-1a hash. Skips trailing zero words so differently-sized arrays with the same bits hash equally. */
37
49
  hash(): number;
38
50
  /** Iterate all set bits via lowest-set-bit extraction. */
39
- for_each(fn: (bit: number) => void): void;
51
+ forEach(fn: (bit: number) => void): void;
40
52
  private grow;
41
53
  }
42
54
  //# sourceMappingURL=bitset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bitset.d.ts","sourceRoot":"","sources":["../../../src/type_primitives/bitset/bitset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;KAeK;AAGL,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAGrC,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAC3C,eAAO,MAAM,SAAS,WAAa,CAAC;AAIpC,qBAAa,MAAM;IACV,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEZ,KAAK,CAAC,EAAE,MAAM,EAAE;IAIrB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAMzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMtB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM/B,8EAA8E;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAUvC,+EAA+E;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAehC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAa9B,IAAI,IAAI,MAAM;IAId,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAUlC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAS3C,0GAA0G;IACnG,IAAI,IAAI,MAAM;IAarB,0DAA0D;IACnD,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAmBhD,OAAO,CAAC,IAAI;CAOb"}
1
+ {"version":3,"file":"bitset.d.ts","sourceRoot":"","sources":["../../../src/type_primitives/bitset/bitset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;KAeK;AAGL,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAGrC,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAC3C,eAAO,MAAM,SAAS,WAAa,CAAC;AAIpC;;;GAGG;AACH,qBAAa,MAAM;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEZ,KAAK,CAAC,EAAE,MAAM,EAAE;IAIrB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAMzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMtB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM/B,6BAA6B;IACtB,OAAO,IAAI,OAAO;IAQzB,8EAA8E;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAUvC,+EAA+E;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAehC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAa9B,IAAI,IAAI,MAAM;IAIrB;;;;6DAIyD;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAoBhC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAUhC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASzC,0GAA0G;IACnG,IAAI,IAAI,MAAM;IAarB,0DAA0D;IACnD,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAmB/C,OAAO,CAAC,IAAI;CAOZ"}
@@ -0,0 +1,23 @@
1
+ /***
2
+ * Brand — Nominal typing for TypeScript.
3
+ *
4
+ * Brand<T, Name> intersects T with a phantom readonly symbol property
5
+ * tagged with Name. The symbol never exists at runtime — it only prevents
6
+ * accidental assignment between structurally identical types.
7
+ *
8
+ * Example: EntityID and ComponentID are both numbers at runtime, but
9
+ * Brand<number, "entityId"> and Brand<number, "component_id"> are
10
+ * incompatible at compile time.
11
+ *
12
+ ***/
13
+ declare const brand: unique symbol;
14
+ /**
15
+ * Nominal typing helper — intersects T with a phantom readonly symbol
16
+ * so structurally identical types become compile-time incompatible.
17
+ *
18
+ */
19
+ export type Brand<T, BrandName extends string> = T & {
20
+ readonly [brand]: BrandName;
21
+ };
22
+ export {};
23
+ //# sourceMappingURL=brand.d.ts.map
@@ -6,11 +6,16 @@
6
6
  * accidental assignment between structurally identical types.
7
7
  *
8
8
  * Example: EntityID and ComponentID are both numbers at runtime, but
9
- * Brand<number, "entity_id"> and Brand<number, "component_id"> are
9
+ * Brand<number, "entityId"> and Brand<number, "component_id"> are
10
10
  * incompatible at compile time.
11
11
  *
12
12
  ***/
13
13
  declare const brand: unique symbol;
14
+ /**
15
+ * Nominal typing helper — intersects T with a phantom readonly symbol
16
+ * so structurally identical types become compile-time incompatible.
17
+ *
18
+ */
14
19
  export type Brand<T, BrandName extends string> = T & {
15
20
  readonly [brand]: BrandName;
16
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/type_primitives/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;KAWK;AAEL,OAAO,CAAC,MAAM,KAAK,EAAE,OAAO,MAAM,CAAC;AAEnC,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,SAAS,SAAS,MAAM,IAAI,CAAC,GAAG;IACnD,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/type_primitives/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;KAWK;AAEL,OAAO,CAAC,MAAM,KAAK,EAAE,OAAO,MAAM,CAAC;AAEnC;;;;GAIG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,SAAS,SAAS,MAAM,IAAI,CAAC,GAAG;IACpD,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { AppError } from '../utils/error.cjs';
2
+ export declare enum TYPE_ERROR {
3
+ ASSERTION_FAIL_CONDITION = "ASSERTION_FAIL_CONDITION",
4
+ VALIDATION_FAIL_CONDITION = "VALIDATION_FAIL_CONDITION",
5
+ ASSERTION_FAIL_NON_NULLABLE = "ASSERTION_FAIL_NON_NULLABLE",
6
+ ASSERTION_FAIL_UNREACHABLE = "ASSERTION_FAIL_UNREACHABLE"
7
+ }
8
+ /**
9
+ * Error class thrown by std's runtime assertions. Non-operational.
10
+ *
11
+ */
12
+ export declare class AssertionError extends AppError {
13
+ readonly category: TYPE_ERROR;
14
+ constructor(category: TYPE_ERROR, message: string, context?: Record<string, unknown>);
15
+ }
16
+ //# sourceMappingURL=error.d.ts.map
@@ -1,10 +1,15 @@
1
- import { AppError } from '../utils/error';
1
+ import { AppError } from '../utils/error.js';
2
2
  export declare enum TYPE_ERROR {
3
3
  ASSERTION_FAIL_CONDITION = "ASSERTION_FAIL_CONDITION",
4
4
  VALIDATION_FAIL_CONDITION = "VALIDATION_FAIL_CONDITION",
5
- ASSERTION_FAIL_NON_NULLABLE = "ASSERTION_FAIL_NON_NULLABLE"
5
+ ASSERTION_FAIL_NON_NULLABLE = "ASSERTION_FAIL_NON_NULLABLE",
6
+ ASSERTION_FAIL_UNREACHABLE = "ASSERTION_FAIL_UNREACHABLE"
6
7
  }
7
- export declare class TypeError extends AppError {
8
+ /**
9
+ * Error class thrown by std's runtime assertions. Non-operational.
10
+ *
11
+ */
12
+ export declare class AssertionError extends AppError {
8
13
  readonly category: TYPE_ERROR;
9
14
  constructor(category: TYPE_ERROR, message: string, context?: Record<string, unknown>);
10
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/type_primitives/error.ts"],"names":[],"mappings":"AAAA;;;;;;KAMK;AAEL,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,oBAAY,UAAU;IACpB,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,2BAA2B,gCAAgC;CAC5D;AAED,qBAAa,SAAU,SAAQ,QAAQ;aAEnB,QAAQ,EAAE,UAAU;gBAApB,QAAQ,EAAE,UAAU,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAIpC"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/type_primitives/error.ts"],"names":[],"mappings":"AAAA;;;;;;KAMK;AAEL,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,oBAAY,UAAU;IACrB,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,2BAA2B,gCAAgC;IAC3D,0BAA0B,+BAA+B;CACzD;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,QAAQ;aAE1B,QAAQ,EAAE,UAAU;gBAApB,QAAQ,EAAE,UAAU,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAIlC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Type-primitives barrel — assertions, brands, errors, plus data-structure primitives.
3
+ */
4
+ export * from './assertions.cjs';
5
+ export * from './brand.cjs';
6
+ export * from './error.cjs';
7
+ export * from './bitset/bitset.cjs';
8
+ export * from './sparse_set/sparse_set.cjs';
9
+ export * from './sparse_map/sparse_map.cjs';
10
+ export * from './typed_arrays/typed_arrays.cjs';
11
+ export * from './binary_heap/binary_heap.cjs';
12
+ export * from './topological_sort/topological_sort.cjs';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -1,10 +1,13 @@
1
- export * from './assertions';
2
- export * from './brand';
3
- export * from './error';
4
- export * from './bitset/bitset';
5
- export * from './sparse_set/sparse_set';
6
- export * from './sparse_map/sparse_map';
7
- export * from './typed_arrays/typed_arrays';
8
- export * from './binary_heap/binary_heap';
9
- export * from './topological_sort/topological_sort';
1
+ /**
2
+ * Type-primitives barrel — assertions, brands, errors, plus data-structure primitives.
3
+ */
4
+ export * from './assertions.js';
5
+ export * from './brand.js';
6
+ export * from './error.js';
7
+ export * from './bitset/bitset.js';
8
+ export * from './sparse_set/sparse_set.js';
9
+ export * from './sparse_map/sparse_map.js';
10
+ export * from './typed_arrays/typed_arrays.js';
11
+ export * from './binary_heap/binary_heap.js';
12
+ export * from './topological_sort/topological_sort.js';
10
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/type_primitives/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/type_primitives/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC"}
@@ -0,0 +1,30 @@
1
+ /***
2
+ * SparseMap — O(1) integer-keyed map with cache-friendly dense iteration.
3
+ *
4
+ * Keys are non-negative integers. Two parallel dense arrays (keys + values)
5
+ * enable linear iteration. A sparse number[] maps key → dense index for
6
+ * O(1) get/set/delete.
7
+ *
8
+ * Membership is verified by cross-referencing dense_keys[sparse[key]] === key,
9
+ * so stale sparse entries are harmless. Deletion uses swap-and-pop.
10
+ *
11
+ ***/
12
+ /**
13
+ * O(1) integer-keyed map with cache-friendly dense iteration.
14
+ *
15
+ */
16
+ export declare class SparseMap<V> {
17
+ private _denseKeys;
18
+ private _denseVals;
19
+ private _sparse;
20
+ get size(): number;
21
+ get keys(): readonly number[];
22
+ has(key: number): boolean;
23
+ get(key: number): V | undefined;
24
+ set(key: number, value: V): void;
25
+ delete(key: number): boolean;
26
+ clear(): void;
27
+ forEach(fn: (key: number, value: V) => void): void;
28
+ [Symbol.iterator](): Iterator<[number, V]>;
29
+ }
30
+ //# sourceMappingURL=sparse_map.d.ts.map
@@ -9,9 +9,13 @@
9
9
  * so stale sparse entries are harmless. Deletion uses swap-and-pop.
10
10
  *
11
11
  ***/
12
+ /**
13
+ * O(1) integer-keyed map with cache-friendly dense iteration.
14
+ *
15
+ */
12
16
  export declare class SparseMap<V> {
13
- private _dense_keys;
14
- private _dense_vals;
17
+ private _denseKeys;
18
+ private _denseVals;
15
19
  private _sparse;
16
20
  get size(): number;
17
21
  get keys(): readonly number[];
@@ -20,7 +24,7 @@ export declare class SparseMap<V> {
20
24
  set(key: number, value: V): void;
21
25
  delete(key: number): boolean;
22
26
  clear(): void;
23
- for_each(fn: (key: number, value: V) => void): void;
27
+ forEach(fn: (key: number, value: V) => void): void;
24
28
  [Symbol.iterator](): Iterator<[number, V]>;
25
29
  }
26
30
  //# sourceMappingURL=sparse_map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sparse_map.d.ts","sourceRoot":"","sources":["../../../src/type_primitives/sparse_map/sparse_map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;KAUK;AAEL,qBAAa,SAAS,CAAC,CAAC;IACtB,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAE/B,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,IAAI,SAAS,MAAM,EAAE,CAEnC;IAEM,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAI/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAUhC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAa5B,KAAK,IAAI,IAAI;IAMb,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI;IAM1D,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAa3C"}
1
+ {"version":3,"file":"sparse_map.d.ts","sourceRoot":"","sources":["../../../src/type_primitives/sparse_map/sparse_map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;KAUK;AAEL;;;GAGG;AACH,qBAAa,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,OAAO,CAAgB;IAE/B,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,IAAI,SAAS,MAAM,EAAE,CAEnC;IAEM,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAI/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAUhC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAa5B,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI;IAMzD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAe1C"}
@@ -0,0 +1,28 @@
1
+ /***
2
+ * SparseSet — O(1) integer-key set with cache-friendly dense iteration.
3
+ *
4
+ * Keys are non-negative integers. A dense number[] holds members packed
5
+ * at 0..size-1 for linear iteration. A sparse number[] maps
6
+ * key → dense index for O(1) has/add/delete.
7
+ *
8
+ * Membership is verified by cross-referencing dense[sparse[key]] === key,
9
+ * so stale sparse entries are harmless (no clearing needed on delete).
10
+ * Deletion uses swap-and-pop to keep data contiguous.
11
+ *
12
+ ***/
13
+ /**
14
+ * O(1) integer-key set with cache-friendly dense iteration.
15
+ *
16
+ */
17
+ export declare class SparseSet {
18
+ private _dense;
19
+ private _sparse;
20
+ get size(): number;
21
+ get values(): readonly number[];
22
+ has(key: number): boolean;
23
+ add(key: number): void;
24
+ delete(key: number): boolean;
25
+ clear(): void;
26
+ [Symbol.iterator](): Iterator<number>;
27
+ }
28
+ //# sourceMappingURL=sparse_set.d.ts.map
@@ -10,6 +10,10 @@
10
10
  * Deletion uses swap-and-pop to keep data contiguous.
11
11
  *
12
12
  ***/
13
+ /**
14
+ * O(1) integer-key set with cache-friendly dense iteration.
15
+ *
16
+ */
13
17
  export declare class SparseSet {
14
18
  private _dense;
15
19
  private _sparse;
@@ -1 +1 @@
1
- {"version":3,"file":"sparse_set.d.ts","sourceRoot":"","sources":["../../../src/type_primitives/sparse_set/sparse_set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;KAWK;AAEL,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAE/B,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,MAAM,IAAI,SAAS,MAAM,EAAE,CAErC;IAEM,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMtB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAW5B,KAAK,IAAI,IAAI;IAKpB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;CAGtC"}
1
+ {"version":3,"file":"sparse_set.d.ts","sourceRoot":"","sources":["../../../src/type_primitives/sparse_set/sparse_set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;KAWK;AAEL;;;GAGG;AACH,qBAAa,SAAS;IACrB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAE/B,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,MAAM,IAAI,SAAS,MAAM,EAAE,CAErC;IAEM,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMtB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAW5B,KAAK,IAAI,IAAI;IAKpB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;CAGrC"}