@oasys/oecs 0.4.0 → 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 (272) hide show
  1. package/CHANGELOG.md +553 -0
  2. package/README.md +42 -31
  3. package/dist/core/ecs/access_check.d.cts +77 -0
  4. package/dist/core/ecs/access_check.d.ts +8 -8
  5. package/dist/core/ecs/access_check.d.ts.map +1 -1
  6. package/dist/core/ecs/archetype.d.cts +486 -0
  7. package/dist/core/ecs/archetype.d.ts +23 -11
  8. package/dist/core/ecs/archetype.d.ts.map +1 -1
  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 +8 -8
  14. package/dist/core/ecs/builtin_relations.d.ts.map +1 -1
  15. package/dist/core/ecs/command_log.d.cts +116 -0
  16. package/dist/core/ecs/command_log.d.ts +13 -10
  17. package/dist/core/ecs/command_log.d.ts.map +1 -1
  18. package/dist/core/ecs/component.d.cts +176 -0
  19. package/dist/core/ecs/component.d.ts +75 -5
  20. package/dist/core/ecs/component.d.ts.map +1 -1
  21. package/dist/core/ecs/compute_backend.d.cts +37 -0
  22. package/dist/core/ecs/compute_backend.d.ts +2 -2
  23. package/dist/core/ecs/debug_names.d.cts +7 -0
  24. package/dist/core/ecs/debug_names.d.ts +7 -0
  25. package/dist/core/ecs/debug_names.d.ts.map +1 -0
  26. package/dist/core/ecs/deferred_commands.d.cts +55 -0
  27. package/dist/core/ecs/deferred_commands.d.ts +55 -0
  28. package/dist/core/ecs/deferred_commands.d.ts.map +1 -0
  29. package/dist/core/ecs/dispatch_trace.d.cts +93 -0
  30. package/dist/core/ecs/dispatch_trace.d.ts +3 -3
  31. package/dist/core/ecs/ecs.d.cts +562 -0
  32. package/dist/core/ecs/ecs.d.ts +314 -285
  33. package/dist/core/ecs/ecs.d.ts.map +1 -1
  34. package/dist/core/ecs/ecs_memory.d.cts +179 -0
  35. package/dist/core/ecs/ecs_memory.d.ts +1 -1
  36. package/dist/core/ecs/entity.d.cts +34 -0
  37. package/dist/core/ecs/entity.d.ts +7 -1
  38. package/dist/core/ecs/entity.d.ts.map +1 -1
  39. package/dist/core/ecs/entity_allocator.d.cts +59 -0
  40. package/dist/core/ecs/entity_allocator.d.ts +59 -0
  41. package/dist/core/ecs/entity_allocator.d.ts.map +1 -0
  42. package/dist/core/ecs/event.d.cts +79 -0
  43. package/dist/core/ecs/event.d.ts +36 -11
  44. package/dist/core/ecs/event.d.ts.map +1 -1
  45. package/dist/core/ecs/event_registry.d.cts +22 -0
  46. package/dist/core/ecs/event_registry.d.ts +22 -0
  47. package/dist/core/ecs/event_registry.d.ts.map +1 -0
  48. package/dist/core/ecs/facades.d.cts +158 -0
  49. package/dist/core/ecs/facades.d.ts +158 -0
  50. package/dist/core/ecs/facades.d.ts.map +1 -0
  51. package/dist/core/ecs/frame_stepper.d.cts +58 -0
  52. package/dist/core/ecs/frame_stepper.d.ts +58 -0
  53. package/dist/core/ecs/frame_stepper.d.ts.map +1 -0
  54. package/dist/core/ecs/frame_trace.d.cts +133 -0
  55. package/dist/core/ecs/frame_trace.d.ts +5 -5
  56. package/dist/core/ecs/frame_trace.d.ts.map +1 -1
  57. package/dist/core/ecs/host_commands.d.cts +274 -0
  58. package/dist/core/ecs/host_commands.d.ts +53 -31
  59. package/dist/core/ecs/host_commands.d.ts.map +1 -1
  60. package/dist/core/ecs/index.d.cts +46 -0
  61. package/dist/core/ecs/index.d.ts +45 -40
  62. package/dist/core/ecs/index.d.ts.map +1 -1
  63. package/dist/core/ecs/observer.d.cts +173 -0
  64. package/dist/core/ecs/observer.d.ts +43 -12
  65. package/dist/core/ecs/observer.d.ts.map +1 -1
  66. package/dist/core/ecs/query.d.cts +718 -0
  67. package/dist/core/ecs/query.d.ts +251 -90
  68. package/dist/core/ecs/query.d.ts.map +1 -1
  69. package/dist/core/ecs/ref.d.cts +31 -0
  70. package/dist/core/ecs/ref.d.ts +3 -3
  71. package/dist/core/ecs/relation.d.cts +243 -0
  72. package/dist/core/ecs/relation.d.ts +26 -14
  73. package/dist/core/ecs/relation.d.ts.map +1 -1
  74. package/dist/core/ecs/relation_service.d.cts +235 -0
  75. package/dist/core/ecs/relation_service.d.ts +235 -0
  76. package/dist/core/ecs/relation_service.d.ts.map +1 -0
  77. package/dist/core/ecs/resource.d.cts +53 -0
  78. package/dist/core/ecs/resource.d.ts +25 -5
  79. package/dist/core/ecs/resource.d.ts.map +1 -1
  80. package/dist/core/ecs/resource_registry.d.cts +20 -0
  81. package/dist/core/ecs/resource_registry.d.ts +20 -0
  82. package/dist/core/ecs/resource_registry.d.ts.map +1 -0
  83. package/dist/core/ecs/resume.d.cts +85 -0
  84. package/dist/core/ecs/resume.d.ts +6 -6
  85. package/dist/core/ecs/resume.d.ts.map +1 -1
  86. package/dist/core/ecs/run_condition.d.cts +81 -0
  87. package/dist/core/ecs/run_condition.d.ts +15 -9
  88. package/dist/core/ecs/run_condition.d.ts.map +1 -1
  89. package/dist/core/ecs/schedule.d.cts +142 -0
  90. package/dist/core/ecs/schedule.d.ts +15 -6
  91. package/dist/core/ecs/schedule.d.ts.map +1 -1
  92. package/dist/core/ecs/snapshot_service.d.cts +94 -0
  93. package/dist/core/ecs/snapshot_service.d.ts +94 -0
  94. package/dist/core/ecs/snapshot_service.d.ts.map +1 -0
  95. package/dist/core/ecs/sparse_store.d.cts +110 -0
  96. package/dist/core/ecs/sparse_store.d.ts +5 -2
  97. package/dist/core/ecs/sparse_store.d.ts.map +1 -1
  98. package/dist/core/ecs/store.d.cts +950 -0
  99. package/dist/core/ecs/store.d.ts +143 -342
  100. package/dist/core/ecs/store.d.ts.map +1 -1
  101. package/dist/core/ecs/store_layout_listener.d.cts +23 -0
  102. package/dist/core/ecs/system.d.cts +250 -0
  103. package/dist/core/ecs/system.d.ts +138 -22
  104. package/dist/core/ecs/system.d.ts.map +1 -1
  105. package/dist/{utils/arrays.d.ts → core/ecs/utils/arrays.d.cts} +1 -0
  106. package/dist/core/ecs/utils/error.d.cts +61 -0
  107. package/dist/core/ecs/utils/error.d.ts +12 -2
  108. package/dist/core/ecs/utils/error.d.ts.map +1 -1
  109. package/dist/core/store/action_ring.d.cts +136 -0
  110. package/dist/core/store/allocator.d.cts +238 -0
  111. package/dist/core/store/allocator.d.ts.map +1 -1
  112. package/dist/core/store/buffer_backed_column.d.cts +69 -0
  113. package/dist/core/store/buffer_backed_column.d.ts +2 -2
  114. package/dist/core/store/column_store.d.cts +273 -0
  115. package/dist/core/store/column_store.d.ts +18 -10
  116. package/dist/core/store/column_store.d.ts.map +1 -1
  117. package/dist/core/store/command_dispatch.d.cts +52 -0
  118. package/dist/core/store/command_ring.d.cts +107 -0
  119. package/dist/core/store/descriptor.d.cts +80 -0
  120. package/dist/core/store/descriptor.d.ts +1 -1
  121. package/dist/core/store/descriptor.d.ts.map +1 -1
  122. package/dist/core/store/entity_index.d.cts +108 -0
  123. package/dist/core/store/event_ring.d.cts +95 -0
  124. package/dist/core/store/extend.d.cts +39 -0
  125. package/dist/core/store/extend.d.ts +3 -73
  126. package/dist/core/store/extend.d.ts.map +1 -1
  127. package/dist/core/store/grow.d.cts +34 -0
  128. package/dist/core/store/grow.d.ts +4 -9
  129. package/dist/core/store/grow.d.ts.map +1 -1
  130. package/dist/core/store/header.d.cts +64 -0
  131. package/dist/core/store/header.d.ts +1 -1
  132. package/dist/core/store/header.d.ts.map +1 -1
  133. package/dist/core/store/index.d.cts +17 -0
  134. package/dist/core/store/index.d.ts +16 -15
  135. package/dist/core/store/index.d.ts.map +1 -1
  136. package/dist/core/store/layout_ops.d.cts +152 -0
  137. package/dist/core/store/layout_ops.d.ts +152 -0
  138. package/dist/core/store/layout_ops.d.ts.map +1 -0
  139. package/dist/core/store/region_table.d.cts +74 -0
  140. package/dist/core/store/region_table.d.ts +1 -1
  141. package/dist/core/store/region_table.d.ts.map +1 -1
  142. package/dist/core/store/snapshot.d.cts +43 -0
  143. package/dist/core/store/snapshot.d.ts +2 -2
  144. package/dist/core/store/state_hash.d.cts +38 -0
  145. package/dist/core/store/state_hash.d.ts +1 -1
  146. package/dist/core/store/store_regions.d.cts +38 -0
  147. package/dist/core/store/store_regions.d.ts +1 -1
  148. package/dist/core/store/vendored_abi/abi.d.ts +43 -0
  149. package/dist/core/store/{__generated__ → vendored_abi}/abi.d.ts.map +1 -1
  150. package/dist/dev_flag.d.cts +17 -0
  151. package/dist/dev_flag.d.ts +17 -0
  152. package/dist/dev_flag.d.ts.map +1 -0
  153. package/dist/extensions/editor/editor.d.cts +170 -0
  154. package/dist/extensions/editor/editor.d.ts +43 -22
  155. package/dist/extensions/editor/editor.d.ts.map +1 -1
  156. package/dist/extensions/editor/field_handle.d.cts +40 -0
  157. package/dist/extensions/editor/field_handle.d.ts +8 -3
  158. package/dist/extensions/editor/field_handle.d.ts.map +1 -1
  159. package/dist/extensions/editor/index.cjs +1 -1
  160. package/dist/extensions/editor/index.d.cts +21 -0
  161. package/dist/extensions/editor/index.d.ts +2 -2
  162. package/dist/extensions/editor/index.js +116 -88
  163. package/dist/extensions/reactive/ecs_sync.d.cts +214 -0
  164. package/dist/extensions/reactive/ecs_sync.d.ts +26 -22
  165. package/dist/extensions/reactive/ecs_sync.d.ts.map +1 -1
  166. package/dist/extensions/reactive/index.cjs +1 -1
  167. package/dist/extensions/reactive/index.d.cts +23 -0
  168. package/dist/extensions/reactive/index.d.ts +1 -1
  169. package/dist/extensions/reactive/index.js +106 -116
  170. package/dist/extensions/solid/index.cjs +1 -1
  171. package/dist/extensions/solid/index.d.cts +6 -0
  172. package/dist/extensions/solid/index.d.ts +2 -2
  173. package/dist/extensions/solid/index.js +8 -4
  174. package/dist/extensions/solid/kernel_solid.d.cts +45 -0
  175. package/dist/extensions/solid/kernel_solid.d.ts +6 -3
  176. package/dist/extensions/solid/kernel_solid.d.ts.map +1 -1
  177. package/dist/host_commands-BF8QMi3c.cjs +1 -0
  178. package/dist/host_commands-i4cAeyL5.js +2318 -0
  179. package/dist/index.cjs +1 -2
  180. package/dist/index.d.cts +66 -0
  181. package/dist/index.d.ts +50 -1
  182. package/dist/index.d.ts.map +1 -1
  183. package/dist/index.js +4469 -5933
  184. package/dist/internal.cjs +2 -0
  185. package/dist/internal.d.cts +20 -0
  186. package/dist/internal.d.ts +20 -0
  187. package/dist/internal.d.ts.map +1 -0
  188. package/dist/internal.js +141 -0
  189. package/dist/primitives.cjs +1 -1
  190. package/dist/primitives.d.cts +18 -0
  191. package/dist/primitives.d.ts +6 -6
  192. package/dist/primitives.js +24 -23
  193. package/dist/reactive/array.d.ts +24 -0
  194. package/dist/reactive/array.d.ts.map +1 -0
  195. package/dist/reactive/index.cjs +1 -0
  196. package/dist/reactive/index.d.cts +11 -0
  197. package/dist/reactive/index.d.ts +11 -0
  198. package/dist/reactive/index.d.ts.map +1 -0
  199. package/dist/reactive/index.js +18 -0
  200. package/dist/reactive/interop.d.cts +19 -0
  201. package/dist/{core/reactive → reactive}/interop.d.ts +1 -1
  202. package/dist/reactive/interop.d.ts.map +1 -0
  203. package/dist/reactive/kernel.d.cts +73 -0
  204. package/dist/{core/reactive → reactive}/kernel.d.ts +5 -3
  205. package/dist/reactive/kernel.d.ts.map +1 -0
  206. package/dist/reactive/map.d.ts +16 -0
  207. package/dist/reactive/map.d.ts.map +1 -0
  208. package/dist/reactive/shallow.d.cts +11 -0
  209. package/dist/reactive/shallow.d.ts +11 -0
  210. package/dist/reactive/shallow.d.ts.map +1 -0
  211. package/dist/reactive/struct.d.cts +10 -0
  212. package/dist/{core/reactive → reactive}/struct.d.ts +1 -1
  213. package/dist/reactive/struct.d.ts.map +1 -0
  214. package/dist/shallow-DQ8aG51_.cjs +1 -0
  215. package/dist/shallow-DfnAm9vG.js +150 -0
  216. package/dist/shared-BU1Cd40h.js +103 -0
  217. package/dist/shared-BymrGTyR.cjs +1 -0
  218. package/dist/shared.cjs +1 -1
  219. package/dist/shared.d.cts +22 -0
  220. package/dist/shared.d.ts +2 -2
  221. package/dist/shared.js +1 -1
  222. package/dist/topological_sort-BDvEyb9W.cjs +1 -0
  223. package/dist/topological_sort-DK6EjpWa.js +135 -0
  224. package/dist/type_primitives/assertions.d.cts +32 -0
  225. package/dist/type_primitives/assertions.d.ts +13 -1
  226. package/dist/type_primitives/assertions.d.ts.map +1 -1
  227. package/dist/type_primitives/binary_heap/binary_heap.d.cts +37 -0
  228. package/dist/type_primitives/bitset/bitset.d.cts +54 -0
  229. package/dist/type_primitives/brand.d.cts +23 -0
  230. package/dist/type_primitives/error.d.cts +16 -0
  231. package/dist/type_primitives/error.d.ts +4 -3
  232. package/dist/type_primitives/error.d.ts.map +1 -1
  233. package/dist/type_primitives/index.d.cts +13 -0
  234. package/dist/type_primitives/index.d.ts +9 -9
  235. package/dist/type_primitives/sparse_map/sparse_map.d.cts +30 -0
  236. package/dist/type_primitives/sparse_set/sparse_set.d.cts +28 -0
  237. package/dist/type_primitives/topological_sort/topological_sort.d.cts +29 -0
  238. package/dist/type_primitives/typed_arrays/typed_arrays.d.cts +127 -0
  239. package/dist/typed_arrays-BcXcnzB4.js +258 -0
  240. package/dist/typed_arrays-D3NmwtCG.cjs +1 -0
  241. package/dist/utils/error.d.cts +6 -0
  242. package/dist/version.d.cts +10 -0
  243. package/dist/version.d.ts +10 -0
  244. package/dist/version.d.ts.map +1 -0
  245. package/package.json +102 -19
  246. package/dist/array-CxbPyiHO.cjs +0 -1
  247. package/dist/array-uFR7Q8fU.js +0 -132
  248. package/dist/core/reactive/array.d.ts.map +0 -1
  249. package/dist/core/reactive/index.cjs +0 -1
  250. package/dist/core/reactive/index.d.ts +0 -10
  251. package/dist/core/reactive/index.d.ts.map +0 -1
  252. package/dist/core/reactive/index.js +0 -17
  253. package/dist/core/reactive/interop.d.ts.map +0 -1
  254. package/dist/core/reactive/kernel.d.ts.map +0 -1
  255. package/dist/core/reactive/map.d.ts.map +0 -1
  256. package/dist/core/reactive/struct.d.ts.map +0 -1
  257. package/dist/log/console_sink.d.ts +0 -4
  258. package/dist/log/console_sink.d.ts.map +0 -1
  259. package/dist/log/index.d.ts +0 -3
  260. package/dist/log/index.d.ts.map +0 -1
  261. package/dist/log/logger.d.ts +0 -27
  262. package/dist/log/logger.d.ts.map +0 -1
  263. package/dist/shared-BXSZnxx4.cjs +0 -1
  264. package/dist/shared-C678TAPY.js +0 -99
  265. package/dist/topological_sort-DlRpSrxu.js +0 -391
  266. package/dist/topological_sort-WAT-VHb-.cjs +0 -1
  267. package/dist/utils/arrays.d.ts.map +0 -1
  268. package/dist/utils/constants.d.ts.map +0 -1
  269. /package/dist/{utils/constants.d.ts → core/ecs/utils/constants.d.cts} +0 -0
  270. /package/dist/core/store/{__generated__/abi.d.ts → vendored_abi/abi.d.cts} +0 -0
  271. /package/dist/{core/reactive/array.d.ts → reactive/array.d.cts} +0 -0
  272. /package/dist/{core/reactive/map.d.ts → reactive/map.d.cts} +0 -0
@@ -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;IACrB,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,2BAA2B,gCAAgC;CAC3D;AAED;;;GAGG;AACH,qBAAa,SAAU,SAAQ,QAAQ;aAErB,QAAQ,EAAE,UAAU;gBAApB,QAAQ,EAAE,UAAU,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAIlC"}
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,13 +1,13 @@
1
1
  /**
2
2
  * Type-primitives barrel — assertions, brands, errors, plus data-structure primitives.
3
3
  */
4
- export * from './assertions';
5
- export * from './brand';
6
- export * from './error';
7
- export * from './bitset/bitset';
8
- export * from './sparse_set/sparse_set';
9
- export * from './sparse_map/sparse_map';
10
- export * from './typed_arrays/typed_arrays';
11
- export * from './binary_heap/binary_heap';
12
- export * from './topological_sort/topological_sort';
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';
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -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
@@ -0,0 +1,29 @@
1
+ /***
2
+ * topologicalSort — Kahn's algorithm with a BinaryHeap ready queue.
3
+ *
4
+ * Accepts an arbitrary node set, a dependency edge map, and a tiebreaker
5
+ * comparator used to order nodes that are simultaneously ready (zero in-degree).
6
+ * This makes the output deterministic and priority-driven rather than
7
+ * insertion-order dependent.
8
+ *
9
+ * Throws a built-in TypeError when a cycle is detected, listing the names of
10
+ * the nodes that could not be scheduled.
11
+ *
12
+ ***/
13
+ /**
14
+ * Topologically sorts `nodes` respecting the dependency edges, breaking ties
15
+ * with the supplied comparator.
16
+ *
17
+ * @param nodes - All items to sort.
18
+ * @param edges - Adjacency list: `edges.get(a)` = items that must come after `a`.
19
+ * @param tiebreaker - Comparator for the ready queue (min-heap semantics: lower = higher priority).
20
+ * @param nodeName - Optional label function for cycle error messages. Defaults to `String(node)`.
21
+ * @returns Sorted array in topological order.
22
+ * @throws {TypeError} If a cycle is detected among the nodes.
23
+ */
24
+ /**
25
+ * Topologically sorts `nodes` respecting dependency edges, breaking ties with the comparator.
26
+ *
27
+ */
28
+ export declare function topologicalSort<T>(nodes: readonly T[], edges: Map<T, T[]>, tiebreaker: (a: T, b: T) => number, nodeName?: (node: T) => string): T[];
29
+ //# sourceMappingURL=topological_sort.d.ts.map
@@ -0,0 +1,127 @@
1
+ /***
2
+ * GrowableTypedArray — TypedArray wrapper with amortised O(1) append.
3
+ *
4
+ * TypedArrays have fixed length — resizing requires allocating a new
5
+ * buffer and copying. GrowableTypedArray wraps one with a separate
6
+ * logical length and doubles the backing buffer on overflow.
7
+ *
8
+ * Named subclasses (GrowableFloat32Array etc.) are provided for each
9
+ * numeric type. TypedArrayFor maps TypeTag strings to their class so
10
+ * component columns can be allocated by tag.
11
+ *
12
+ ***/
13
+ export declare const DEFAULT_INITIAL_CAPACITY = 16;
14
+ export declare const GROWTH_FACTOR = 2;
15
+ export type TypedArrayTag = "f32" | "f64" | "i8" | "i16" | "i32" | "u8" | "u16" | "u32";
16
+ export type AnyTypedArray = Float32Array | Float64Array | Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array;
17
+ /**
18
+ * Common surface of a row-addressable column buffer. `GrowableTypedArray<T>`
19
+ * implements it over a heap-allocated TypedArray; SAB-backed columns (see
20
+ * `packages/engine/src/core/sab/sab_backed_column.ts`) implement it over a
21
+ * `SharedArrayBuffer` view at a known offset. Archetype column storage
22
+ * targets this interface so a single code path serves both backings.
23
+ */
24
+ export interface ColumnBacking<T extends AnyTypedArray> {
25
+ readonly length: number;
26
+ readonly buf: T;
27
+ push(value: number): void;
28
+ pop(): number;
29
+ swapRemove(i: number): number;
30
+ clear(): void;
31
+ view(): T;
32
+ ensureCapacity(capacity: number): void;
33
+ bulkAppend(src: T, srcOffset: number, count: number): void;
34
+ bulkAppendZeroes(count: number): void;
35
+ bulkAppendValue(value: number, count: number): void;
36
+ /** Set the logical length directly, declaring that `[0, len)` already holds
37
+ * valid data. The snapshot-mount path (`Archetype.restoreHostRows`, #789)
38
+ * uses this: a restored SAB carries the column bytes, but the column's logical
39
+ * length is host state that must be re-synced with `Archetype.length`. Throws
40
+ * if `len` exceeds capacity. NOT a hot-path method — push/pop track length. */
41
+ setLength(len: number): void;
42
+ }
43
+ /**
44
+ * TypedArray wrapper with amortised O(1) append. Doubles the backing buffer on overflow.
45
+ *
46
+ */
47
+ export declare class GrowableTypedArray<T extends AnyTypedArray> implements ColumnBacking<T> {
48
+ private readonly _ctor;
49
+ private _buf;
50
+ private _len;
51
+ constructor(_ctor: new (n: number) => T, initialCapacity?: number);
52
+ get length(): number;
53
+ push(value: number): void;
54
+ pop(): number;
55
+ get(i: number): number;
56
+ setAt(i: number, value: number): void;
57
+ /**
58
+ * Move the last element into slot i, decrement length.
59
+ * Returns the value that was removed from slot i.
60
+ */
61
+ swapRemove(i: number): number;
62
+ clear(): void;
63
+ /** Set the logical length directly (snapshot-mount reconstruction, #789). The
64
+ * caller guarantees `[0, len)` already holds valid data. Grows the backing if
65
+ * needed so the length is always representable. */
66
+ setLength(len: number): void;
67
+ /**
68
+ * Raw backing buffer. Valid data: indices 0..length-1.
69
+ * This reference is stable until the next push() that triggers a grow —
70
+ * do not cache across entity additions.
71
+ */
72
+ get buf(): T;
73
+ /**
74
+ * Zero-copy subarray view of valid data (0..length-1).
75
+ * Shares the backing buffer — invalidated if a subsequent push() grows.
76
+ */
77
+ view(): T;
78
+ [Symbol.iterator](): Iterator<number>;
79
+ /** Ensure the backing buffer can hold at least `capacity` elements without growing. */
80
+ ensureCapacity(capacity: number): void;
81
+ /**
82
+ * Append `count` elements from `src` starting at `srcOffset`.
83
+ * Grows if needed. Equivalent to push() in a loop but uses TypedArray.set().
84
+ */
85
+ bulkAppend(src: T, srcOffset: number, count: number): void;
86
+ /** Append `count` zeroes. Grows if needed. */
87
+ bulkAppendZeroes(count: number): void;
88
+ /** Append `count` copies of `value`. Grows if needed. Single-pass
89
+ * analogue of `bulkAppendZeroes` for a non-zero default. */
90
+ bulkAppendValue(value: number, count: number): void;
91
+ private _grow;
92
+ }
93
+ export declare class GrowableFloat32Array extends GrowableTypedArray<Float32Array> {
94
+ constructor(initialCapacity?: number);
95
+ }
96
+ export declare class GrowableFloat64Array extends GrowableTypedArray<Float64Array> {
97
+ constructor(initialCapacity?: number);
98
+ }
99
+ export declare class GrowableInt8Array extends GrowableTypedArray<Int8Array> {
100
+ constructor(initialCapacity?: number);
101
+ }
102
+ export declare class GrowableInt16Array extends GrowableTypedArray<Int16Array> {
103
+ constructor(initialCapacity?: number);
104
+ }
105
+ export declare class GrowableInt32Array extends GrowableTypedArray<Int32Array> {
106
+ constructor(initialCapacity?: number);
107
+ }
108
+ export declare class GrowableUint8Array extends GrowableTypedArray<Uint8Array> {
109
+ constructor(initialCapacity?: number);
110
+ }
111
+ export declare class GrowableUint16Array extends GrowableTypedArray<Uint16Array> {
112
+ constructor(initialCapacity?: number);
113
+ }
114
+ export declare class GrowableUint32Array extends GrowableTypedArray<Uint32Array> {
115
+ constructor(initialCapacity?: number);
116
+ }
117
+ export declare const TypedArrayFor: {
118
+ readonly f32: typeof GrowableFloat32Array;
119
+ readonly f64: typeof GrowableFloat64Array;
120
+ readonly i8: typeof GrowableInt8Array;
121
+ readonly i16: typeof GrowableInt16Array;
122
+ readonly i32: typeof GrowableInt32Array;
123
+ readonly u8: typeof GrowableUint8Array;
124
+ readonly u16: typeof GrowableUint16Array;
125
+ readonly u32: typeof GrowableUint32Array;
126
+ };
127
+ //# sourceMappingURL=typed_arrays.d.ts.map
@@ -0,0 +1,258 @@
1
+ const w = 5, d = 31;
2
+ class c {
3
+ _words;
4
+ constructor(t) {
5
+ this._words = t ?? new Array(4).fill(0);
6
+ }
7
+ has(t) {
8
+ const s = t >>> 5;
9
+ return s >= this._words.length ? !1 : (this._words[s] & 1 << (t & 31)) !== 0;
10
+ }
11
+ set(t) {
12
+ const s = t >>> 5;
13
+ s >= this._words.length && this.grow(s + 1), this._words[s] |= 1 << (t & 31);
14
+ }
15
+ clear(t) {
16
+ const s = t >>> 5;
17
+ s >= this._words.length || (this._words[s] &= ~(1 << (t & 31)));
18
+ }
19
+ /** True if no bit is set. */
20
+ isEmpty() {
21
+ const t = this._words;
22
+ for (let s = 0; s < t.length; s++)
23
+ if (t[s] !== 0) return !1;
24
+ return !0;
25
+ }
26
+ /** True if any bit is set in both this and other (non-empty intersection). */
27
+ overlaps(t) {
28
+ const s = this._words, e = t._words, r = s.length < e.length ? s.length : e.length;
29
+ for (let n = 0; n < r; n++)
30
+ if ((s[n] & e[n]) !== 0) return !0;
31
+ return !1;
32
+ }
33
+ /** True if this is a superset of other (all bits in other are set in this). */
34
+ contains(t) {
35
+ const s = t._words, e = this._words, r = e.length;
36
+ for (let n = 0; n < s.length; n++) {
37
+ const o = s[n];
38
+ if (o !== 0 && (n >= r || (e[n] & o) !== o))
39
+ return !1;
40
+ }
41
+ return !0;
42
+ }
43
+ equals(t) {
44
+ const s = this._words, e = t._words, r = s.length > e.length ? s.length : e.length;
45
+ for (let n = 0; n < r; n++) {
46
+ const o = n < s.length ? s[n] : 0, h = n < e.length ? e[n] : 0;
47
+ if (o !== h) return !1;
48
+ }
49
+ return !0;
50
+ }
51
+ copy() {
52
+ return new c(this._words.slice());
53
+ }
54
+ /** Mutate `target` so it has the same set bits as `this`. Reuses
55
+ * `target._words` storage when capacity allows (no allocation) and
56
+ * grows it only when `this` is wider. Designed for hot-path scratch
57
+ * BitSets where callers want `.copy()` semantics without the
58
+ * per-call allocation. Returns `target` for chaining. */
59
+ copyInto(t) {
60
+ const s = this._words, e = t._words, r = s.length, n = e.length;
61
+ if (n >= r) {
62
+ for (let o = 0; o < r; o++) e[o] = s[o];
63
+ for (let o = r; o < n; o++) e[o] = 0;
64
+ } else {
65
+ let o = n > 0 ? n : 1;
66
+ for (; o < r; ) o *= 2;
67
+ const h = new Array(o).fill(0);
68
+ for (let a = 0; a < r; a++) h[a] = s[a];
69
+ t._words = h;
70
+ }
71
+ return t;
72
+ }
73
+ copyWithSet(t) {
74
+ const s = t >>> 5, e = s + 1, r = this._words.length > e ? this._words.length : e, n = new Array(r).fill(0);
75
+ for (let o = 0; o < this._words.length; o++) n[o] = this._words[o];
76
+ return n[s] |= 1 << (t & 31), new c(n);
77
+ }
78
+ copyWithClear(t) {
79
+ const s = this._words.slice(), e = t >>> 5;
80
+ return e < s.length && (s[e] &= ~(1 << (t & 31))), new c(s);
81
+ }
82
+ /** FNV-1a hash. Skips trailing zero words so differently-sized arrays with the same bits hash equally. */
83
+ hash() {
84
+ let t = 2166136261;
85
+ const s = this._words;
86
+ let e = s.length - 1;
87
+ for (; e >= 0 && s[e] === 0; ) e--;
88
+ for (let r = 0; r <= e; r++)
89
+ t ^= s[r], t = Math.imul(t, 16777619);
90
+ return t;
91
+ }
92
+ /** Iterate all set bits via lowest-set-bit extraction. */
93
+ forEach(t) {
94
+ const s = this._words;
95
+ for (let e = 0; e < s.length; e++) {
96
+ let r = s[e];
97
+ if (r === 0) continue;
98
+ const n = e << 5;
99
+ for (; r !== 0; ) {
100
+ const o = r & -r >>> 0, h = 31 - Math.clz32(o);
101
+ t(n + h), r ^= o;
102
+ }
103
+ }
104
+ }
105
+ grow(t) {
106
+ let s = this._words.length;
107
+ for (; s < t; ) s *= 2;
108
+ const e = new Array(s).fill(0);
109
+ for (let r = 0; r < this._words.length; r++) e[r] = this._words[r];
110
+ this._words = e;
111
+ }
112
+ }
113
+ const i = 16, u = 2;
114
+ class _ {
115
+ constructor(t, s = 16) {
116
+ this._ctor = t, this._buf = new t(s);
117
+ }
118
+ _buf;
119
+ _len = 0;
120
+ get length() {
121
+ return this._len;
122
+ }
123
+ push(t) {
124
+ this._len >= this._buf.length && this._grow(), this._buf[this._len++] = t;
125
+ }
126
+ pop() {
127
+ return this._buf[--this._len];
128
+ }
129
+ get(t) {
130
+ return this._buf[t];
131
+ }
132
+ setAt(t, s) {
133
+ this._buf[t] = s;
134
+ }
135
+ /**
136
+ * Move the last element into slot i, decrement length.
137
+ * Returns the value that was removed from slot i.
138
+ */
139
+ swapRemove(t) {
140
+ const s = this._buf[t];
141
+ return this._buf[t] = this._buf[--this._len], s;
142
+ }
143
+ clear() {
144
+ this._len = 0;
145
+ }
146
+ /** Set the logical length directly (snapshot-mount reconstruction, #789). The
147
+ * caller guarantees `[0, len)` already holds valid data. Grows the backing if
148
+ * needed so the length is always representable. */
149
+ setLength(t) {
150
+ this.ensureCapacity(t), this._len = t;
151
+ }
152
+ /**
153
+ * Raw backing buffer. Valid data: indices 0..length-1.
154
+ * This reference is stable until the next push() that triggers a grow —
155
+ * do not cache across entity additions.
156
+ */
157
+ get buf() {
158
+ return this._buf;
159
+ }
160
+ /**
161
+ * Zero-copy subarray view of valid data (0..length-1).
162
+ * Shares the backing buffer — invalidated if a subsequent push() grows.
163
+ */
164
+ view() {
165
+ return this._buf.subarray(0, this._len);
166
+ }
167
+ [Symbol.iterator]() {
168
+ let t = 0;
169
+ const s = this._buf, e = this._len;
170
+ return {
171
+ next() {
172
+ return t < e ? { value: s[t++], done: !1 } : { value: 0, done: !0 };
173
+ }
174
+ };
175
+ }
176
+ /** Ensure the backing buffer can hold at least `capacity` elements without growing. */
177
+ ensureCapacity(t) {
178
+ if (t <= this._buf.length) return;
179
+ let s = this._buf.length || 1;
180
+ for (; s < t; ) s *= u;
181
+ const e = new this._ctor(s);
182
+ e.set(this._buf.subarray(0, this._len)), this._buf = e;
183
+ }
184
+ /**
185
+ * Append `count` elements from `src` starting at `srcOffset`.
186
+ * Grows if needed. Equivalent to push() in a loop but uses TypedArray.set().
187
+ */
188
+ bulkAppend(t, s, e) {
189
+ this.ensureCapacity(this._len + e), this._buf.set(t.subarray(s, s + e), this._len), this._len += e;
190
+ }
191
+ /** Append `count` zeroes. Grows if needed. */
192
+ bulkAppendZeroes(t) {
193
+ this.ensureCapacity(this._len + t), this._buf.fill(0, this._len, this._len + t), this._len += t;
194
+ }
195
+ /** Append `count` copies of `value`. Grows if needed. Single-pass
196
+ * analogue of `bulkAppendZeroes` for a non-zero default. */
197
+ bulkAppendValue(t, s) {
198
+ this.ensureCapacity(this._len + s), this._buf.fill(t, this._len, this._len + s), this._len += s;
199
+ }
200
+ _grow() {
201
+ const t = new this._ctor(this._buf.length * u);
202
+ t.set(this._buf), this._buf = t;
203
+ }
204
+ }
205
+ class f extends _ {
206
+ constructor(t = i) {
207
+ super(Float32Array, t);
208
+ }
209
+ }
210
+ class I extends _ {
211
+ constructor(t = i) {
212
+ super(Float64Array, t);
213
+ }
214
+ }
215
+ class b extends _ {
216
+ constructor(t = i) {
217
+ super(Int8Array, t);
218
+ }
219
+ }
220
+ class A extends _ {
221
+ constructor(t = i) {
222
+ super(Int16Array, t);
223
+ }
224
+ }
225
+ class g extends _ {
226
+ constructor(t = i) {
227
+ super(Int32Array, t);
228
+ }
229
+ }
230
+ class y extends _ {
231
+ constructor(t = i) {
232
+ super(Uint8Array, t);
233
+ }
234
+ }
235
+ class R extends _ {
236
+ constructor(t = i) {
237
+ super(Uint16Array, t);
238
+ }
239
+ }
240
+ class S extends _ {
241
+ constructor(t = i) {
242
+ super(Uint32Array, t);
243
+ }
244
+ }
245
+ export {
246
+ c as B,
247
+ _ as G,
248
+ f as a,
249
+ I as b,
250
+ b as c,
251
+ A as d,
252
+ g as e,
253
+ y as f,
254
+ R as g,
255
+ S as h,
256
+ d as i,
257
+ w as j
258
+ };
@@ -0,0 +1 @@
1
+ "use strict";class a{_words;constructor(t){this._words=t??new Array(4).fill(0)}has(t){const r=t>>>5;return r>=this._words.length?!1:(this._words[r]&1<<(t&31))!==0}set(t){const r=t>>>5;r>=this._words.length&&this.grow(r+1),this._words[r]|=1<<(t&31)}clear(t){const r=t>>>5;r>=this._words.length||(this._words[r]&=~(1<<(t&31)))}isEmpty(){const t=this._words;for(let r=0;r<t.length;r++)if(t[r]!==0)return!1;return!0}overlaps(t){const r=this._words,s=t._words,e=r.length<s.length?r.length:s.length;for(let n=0;n<e;n++)if((r[n]&s[n])!==0)return!0;return!1}contains(t){const r=t._words,s=this._words,e=s.length;for(let n=0;n<r.length;n++){const o=r[n];if(o!==0&&(n>=e||(s[n]&o)!==o))return!1}return!0}equals(t){const r=this._words,s=t._words,e=r.length>s.length?r.length:s.length;for(let n=0;n<e;n++){const o=n<r.length?r[n]:0,h=n<s.length?s[n]:0;if(o!==h)return!1}return!0}copy(){return new a(this._words.slice())}copyInto(t){const r=this._words,s=t._words,e=r.length,n=s.length;if(n>=e){for(let o=0;o<e;o++)s[o]=r[o];for(let o=e;o<n;o++)s[o]=0}else{let o=n>0?n:1;for(;o<e;)o*=2;const h=new Array(o).fill(0);for(let c=0;c<e;c++)h[c]=r[c];t._words=h}return t}copyWithSet(t){const r=t>>>5,s=r+1,e=this._words.length>s?this._words.length:s,n=new Array(e).fill(0);for(let o=0;o<this._words.length;o++)n[o]=this._words[o];return n[r]|=1<<(t&31),new a(n)}copyWithClear(t){const r=this._words.slice(),s=t>>>5;return s<r.length&&(r[s]&=~(1<<(t&31))),new a(r)}hash(){let t=2166136261;const r=this._words;let s=r.length-1;for(;s>=0&&r[s]===0;)s--;for(let e=0;e<=s;e++)t^=r[e],t=Math.imul(t,16777619);return t}forEach(t){const r=this._words;for(let s=0;s<r.length;s++){let e=r[s];if(e===0)continue;const n=s<<5;for(;e!==0;){const o=e&-e>>>0,h=31-Math.clz32(o);t(n+h),e^=o}}}grow(t){let r=this._words.length;for(;r<t;)r*=2;const s=new Array(r).fill(0);for(let e=0;e<this._words.length;e++)s[e]=this._words[e];this._words=s}}const i=16,u=2;class l{constructor(t,r=16){this._ctor=t,this._buf=new t(r)}_buf;_len=0;get length(){return this._len}push(t){this._len>=this._buf.length&&this._grow(),this._buf[this._len++]=t}pop(){return this._buf[--this._len]}get(t){return this._buf[t]}setAt(t,r){this._buf[t]=r}swapRemove(t){const r=this._buf[t];return this._buf[t]=this._buf[--this._len],r}clear(){this._len=0}setLength(t){this.ensureCapacity(t),this._len=t}get buf(){return this._buf}view(){return this._buf.subarray(0,this._len)}[Symbol.iterator](){let t=0;const r=this._buf,s=this._len;return{next(){return t<s?{value:r[t++],done:!1}:{value:0,done:!0}}}}ensureCapacity(t){if(t<=this._buf.length)return;let r=this._buf.length||1;for(;r<t;)r*=u;const s=new this._ctor(r);s.set(this._buf.subarray(0,this._len)),this._buf=s}bulkAppend(t,r,s){this.ensureCapacity(this._len+s),this._buf.set(t.subarray(r,r+s),this._len),this._len+=s}bulkAppendZeroes(t){this.ensureCapacity(this._len+t),this._buf.fill(0,this._len,this._len+t),this._len+=t}bulkAppendValue(t,r){this.ensureCapacity(this._len+r),this._buf.fill(t,this._len,this._len+r),this._len+=r}_grow(){const t=new this._ctor(this._buf.length*u);t.set(this._buf),this._buf=t}}class w extends l{constructor(t=i){super(Float32Array,t)}}class d extends l{constructor(t=i){super(Float64Array,t)}}class f extends l{constructor(t=i){super(Int8Array,t)}}class I extends l{constructor(t=i){super(Int16Array,t)}}class A extends l{constructor(t=i){super(Int32Array,t)}}class b extends l{constructor(t=i){super(Uint8Array,t)}}class y extends l{constructor(t=i){super(Uint16Array,t)}}class R extends l{constructor(t=i){super(Uint32Array,t)}}exports.BITS_PER_WORD_MASK=31;exports.BITS_PER_WORD_SHIFT=5;exports.BitSet=a;exports.GrowableFloat32Array=w;exports.GrowableFloat64Array=d;exports.GrowableInt16Array=I;exports.GrowableInt32Array=A;exports.GrowableInt8Array=f;exports.GrowableTypedArray=l;exports.GrowableUint16Array=y;exports.GrowableUint32Array=R;exports.GrowableUint8Array=b;
@@ -0,0 +1,6 @@
1
+ export declare abstract class AppError extends Error {
2
+ readonly isOperational: boolean;
3
+ readonly context?: Record<string, unknown> | undefined;
4
+ constructor(message: string, isOperational: boolean, context?: Record<string, unknown> | undefined);
5
+ }
6
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The package version, readable at runtime (POLISH_AUDIT M21).
3
+ *
4
+ * A literal, not a build-time injection, so raw-source (JSR) consumers get the
5
+ * same value as the npm bundle. Kept in lock-step with `package.json` /
6
+ * `jsr.json` by `src/__tests__/version_sync.test.ts` — bump all three
7
+ * together.
8
+ */
9
+ export declare const VERSION = "0.5.0";
10
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The package version, readable at runtime (POLISH_AUDIT M21).
3
+ *
4
+ * A literal, not a build-time injection, so raw-source (JSR) consumers get the
5
+ * same value as the npm bundle. Kept in lock-step with `package.json` /
6
+ * `jsr.json` by `src/__tests__/version_sync.test.ts` — bump all three
7
+ * together.
8
+ */
9
+ export declare const VERSION = "0.5.0";
10
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,UAAU,CAAC"}