@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
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Entity-index SAB region — `EntityID` → `(archetype_id, row, generation)`
3
+ * lookup table shared with the Zig sim. (#245 / Phase 4 PR 4B)
4
+ *
5
+ * Every hot fixed-update system that needs to resolve an `EntityID`
6
+ * held in a column (e.g. a component field that points at another
7
+ * entity → that entity's columns) has to do
8
+ * `entityId → archetype + row` translation. The plan forbids
9
+ * WASM-into-TS callbacks during `tick()` (§4 / §5.2), so the lookup
10
+ * tables must live in shared memory.
11
+ *
12
+ * Layout:
13
+ *
14
+ * [ length: u32 ] high-water index (count of slots ever issued)
15
+ * [ capacity: u32 ] backing-array length (slots × 1; not bytes)
16
+ * [ _pad0: u32 ] alignment pad to 16 bytes
17
+ * [ _pad1: u32 ] ───
18
+ * [ generations[capacity]: i32 ]
19
+ * [ archetypes[capacity]: i32 ]
20
+ * [ rows[capacity]: i32 ]
21
+ *
22
+ * Sentinels:
23
+ * - `generations[i] = 0` (INITIAL_GENERATION) for never-used slots.
24
+ * Generation grows by 1 on every destroy; an `EntityID`'s generation
25
+ * field matches `generations[index]` iff it's still alive.
26
+ * - `archetypes[i] = -1` (UNASSIGNED) when the slot hasn't been placed
27
+ * into an archetype, OR when the entity is destroyed.
28
+ * - `rows[i] = -1` (UNASSIGNED) on destroy / not-placed.
29
+ *
30
+ * Field width: i32 (signed) on the TS side so `-1` round-trips through
31
+ * `Int32Array` without unsigned coercion. Zig reads as i32 too — bit
32
+ * pattern is identical to u32 `0xFFFFFFFF` for the UNASSIGNED case, and
33
+ * for valid archetype_ids (bounded by `MAX_INDEX = 2^20`) the sign bit
34
+ * is never set, so signed/unsigned interpretation agrees.
35
+ *
36
+ * Region placement: between command ring and descriptor region so the
37
+ * offset is stable across descriptor / column-region growth (same
38
+ * property the command ring gets). Grow path (when entityHighWater
39
+ * exceeds `capacity`) uses `growColumnStore` — slow path, same as
40
+ * descriptor-region overflow.
41
+ *
42
+ * Reading from Zig: see `packages/sim/src/entity_index.zig` for the
43
+ * symmetric reader.
44
+ */
45
+ /** Fixed bytes of the region header (length, capacity, two pad u32s for
46
+ * 16-byte alignment of the i32 arrays that follow). */
47
+ export declare const ENTITY_INDEX_HEADER_BYTES = 16;
48
+ /** Bytes per slot: three i32 columns. */
49
+ export declare const ENTITY_INDEX_BYTES_PER_SLOT = 12;
50
+ /** Byte offsets within the region header. Locked by the
51
+ * `entity_index.test.ts` golden bytes; any change here is a
52
+ * `SIM_ABI_VERSION` bump. */
53
+ export declare const ENTITY_INDEX_HEADER_OFFSETS: {
54
+ readonly length: 0;
55
+ readonly capacity: 4;
56
+ };
57
+ /** Default initial slot count when the engine creates a Store. Matches
58
+ * `MAX_INDEX = (1 << 20) - 1 + 1 = 1_048_576` (the EntityID 20-bit index
59
+ * range, see `entity.ts`), so the region pre-sizes to the entire
60
+ * addressable entity space and `createEntity` can never run out under
61
+ * the default. 1M × 12 B ≈ 12 MiB SAB region — virtual memory only;
62
+ * physical pages allocate lazily via OS page-fault on first touch, so
63
+ * the typical 1000-entity workload pays for ~12 KiB physical even though the
64
+ * virtual reservation is 12 MiB.
65
+ *
66
+ * Tests / benches can pass a smaller `StoreOptions.entityIndexCapacity`
67
+ * to bench tighter reservations. A future PR will replace this with
68
+ * on-demand growth via `growColumnStore` so the default can drop. */
69
+ export declare const ENTITY_INDEX_DEFAULT_CAPACITY: number;
70
+ /** Total region bytes for `capacity` slots: header + 3 i32 columns. */
71
+ export declare function entityIndexRegionBytes(capacity: number): number;
72
+ /** Byte offset of the generations column within the region. */
73
+ export declare function entityIndexGenerationsOff(regionOff: number): number;
74
+ /** Byte offset of the archetype-id column. */
75
+ export declare function entityIndexArchetypesOff(regionOff: number, capacity: number): number;
76
+ /** Byte offset of the row column. */
77
+ export declare function entityIndexRowsOff(regionOff: number, capacity: number): number;
78
+ export declare class EntityIndexError extends Error {
79
+ constructor(message: string);
80
+ }
81
+ /** Initialise the region header at `regionOff`. Sets `length=0` and
82
+ * `capacity=<arg>`. The i32 arrays past the header are left untouched
83
+ * (callers normally allocate the region on a fresh, zero-initialised
84
+ * SAB; generation 0 is the INITIAL_GENERATION sentinel, archetype/row
85
+ * sentinels of 0 are caught by `length=0` so no read reaches them). */
86
+ export declare function initEntityIndexRegion(view: DataView, regionOff: number, capacity: number): void;
87
+ /** Read the region's current length (high-water index, ≤ capacity). */
88
+ export declare function entityIndexLength(view: DataView, regionOff: number): number;
89
+ /** Read the region's current capacity (backing-array length). */
90
+ export declare function entityIndexCapacity(view: DataView, regionOff: number): number;
91
+ /** Update the region's length (called from the engine's Store on every
92
+ * entity allocation that pushes `entityHighWater` past its previous
93
+ * value). */
94
+ export declare function setEntityIndexLength(view: DataView, regionOff: number, length: number): void;
95
+ /** Materialise the three Int32Array views over the region's column data
96
+ * for use by the engine's Store. The views live as long as the
97
+ * SharedArrayBuffer hasn't been reallocated — refresh on `view_stamp`
98
+ * bump (the engine's `_onBufferResized` callback).
99
+ *
100
+ * Three separate views (not a single struct-of-arrays object) because
101
+ * the engine's hot paths benefit from each being a direct typed-array
102
+ * read; V8 specialises `arr[i] = v` aggressively for typed arrays. */
103
+ export declare function buildEntityIndexViews(buffer: ArrayBufferLike, regionOff: number, capacity: number): {
104
+ readonly generations: Int32Array;
105
+ readonly archetypes: Int32Array;
106
+ readonly rows: Int32Array;
107
+ };
108
+ //# sourceMappingURL=entity_index.d.ts.map
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Event ring — SPSC ring buffer for ECS signal/event payloads shared
3
+ * between TS and the Zig sim. (#247 / Phase 4 PR 4C)
4
+ *
5
+ * Same byte layout as the command ring (`command_ring.ts`); the two
6
+ * could share a primitive but keeping them separate makes the
7
+ * direction of flow explicit: command ring is WASM→TS (structural
8
+ * intents to drain post-tick); event ring is bidirectional during
9
+ * `tick()` — Zig systems push events, TS readers (or other Zig
10
+ * systems) drain.
11
+ *
12
+ * Layout (identical to command ring):
13
+ *
14
+ * [ write_head: u32 ] slot 0..N-1, monotonic (NOT slot-modulo)
15
+ * [ read_head: u32 ] slot 0..N-1, monotonic
16
+ * [ capacity: u32 ] slot count, power-of-two
17
+ * [ overflow_flag: u32 ] 0 = OK; 1 = sticky overflow witness
18
+ * [ slot 0: 16 B ] opCode: u8, payload: [15]u8
19
+ * [ slot 1: 16 B ] ...
20
+ *
21
+ * Op codes: event-def IDs (assigned by `ECS.registerEvent()` at
22
+ * registration time; #247 plan §required-FFI). The 0 op-code is
23
+ * reserved as the empty-slot marker so a zero-initialised SAB does not
24
+ * appear to hold a valid event. Event-def registration starts numbering
25
+ * from 1 to honour this; the engine integration in 4D+ enforces it.
26
+ *
27
+ * SPSC contract (Phase 4 scope, single host thread):
28
+ * - Producer: Zig sim `tick()` (post-4D) OR TS host (test producers /
29
+ * existing JS-side emitters bridged into the ring).
30
+ * - Consumer: TS host drain (post-4D) OR Zig system that reads
31
+ * queued events from a sibling system.
32
+ * - The two never run concurrently in Phase 4 (single host thread
33
+ * orchestrates both). Phase 5's worker offload promotes the head
34
+ * bumps to `Atomics.store`; that's an additive change without
35
+ * altering the layout.
36
+ *
37
+ * Payload size: fixed 15 bytes per slot. Today's events all fit
38
+ * (e.g. a 12-byte 3-field event, a 4-byte 1-field event, a 0-field
39
+ * signal). Larger payloads require a separate variable-size ring
40
+ * design — out of scope here.
41
+ *
42
+ * Region placement: between the entity-index region and the descriptor
43
+ * region so its offset is stable across descriptor / column growth.
44
+ * `header.event_ring_off` (the field promoted out of `_reserved0` in
45
+ * #245's reservation) carries the offset; 0 means absent.
46
+ */
47
+ /** Total bytes for the ring header. Matches command ring exactly. */
48
+ export declare const EVENT_RING_HEADER_BYTES = 16;
49
+ /** Fixed slot size — 1-byte opCode + 15-byte payload. Matches
50
+ * command ring exactly. */
51
+ export declare const EVENT_RING_SLOT_BYTES = 16;
52
+ /** Default ring capacity in slots. 256 × 16 B = 4 KiB of slot data
53
+ * plus 16 B header. Mirrors `COMMAND_RING_DEFAULT_CAPACITY_SLOTS`. */
54
+ export declare const EVENT_RING_DEFAULT_CAPACITY_SLOTS = 256;
55
+ /** Byte offsets within the ring header. Mirrored on the Zig side in
56
+ * `packages/sim/src/event_ring.zig` — keep in sync. */
57
+ export declare const EVENT_RING_HEADER_OFFSETS: {
58
+ readonly write_head: 0;
59
+ readonly read_head: 4;
60
+ readonly capacity_slots: 8;
61
+ readonly overflow_flag: 12;
62
+ };
63
+ /** Op-code = `0` is reserved across the SAB layer as "empty slot"
64
+ * (see file header). Event-def IDs start at 1; `ECS.registerEvent`
65
+ * shifts to honour this when wiring SAB-backed channels in 4D+. */
66
+ export declare const EVENT_OP_EMPTY = 0;
67
+ /** Total bytes the ring occupies for `capacity_slots` slots. */
68
+ export declare function eventRingBytes(capacitySlots: number): number;
69
+ export declare class EventRingError extends Error {
70
+ constructor(message: string);
71
+ }
72
+ /** Initialise the ring header at `ringOff` in the SAB. Zeroes
73
+ * `write_head`, `read_head`, and `overflow_flag`; sets `capacity_slots`.
74
+ * Slot bytes are left as-is (callers normally allocate the ring on a
75
+ * fresh, zero-initialised SAB). */
76
+ export declare function initEventRing(view: DataView, ringOff: number, capacitySlots: number): void;
77
+ export declare function ringWriteHead(view: DataView, ringOff: number): number;
78
+ export declare function ringReadHead(view: DataView, ringOff: number): number;
79
+ export declare function ringCapacitySlots(view: DataView, ringOff: number): number;
80
+ export declare function ringOverflow(view: DataView, ringOff: number): boolean;
81
+ /** Pending event count = `(write_head - read_head) mod 2^32`. */
82
+ export declare function pendingEventCount(view: DataView, ringOff: number): number;
83
+ /** Push an event into the ring. Returns `false` on overflow and sets
84
+ * the (sticky) overflow flag. `opCode` must be > 0 — 0 is reserved as
85
+ * the empty-slot marker. Payload must be exactly 15 bytes. */
86
+ export declare function pushEvent(view: DataView, ringOff: number, opCode: number, payload: Uint8Array): boolean;
87
+ /** Read one event from the ring. Returns opCode (0 = empty/no event)
88
+ * and fills `outPayload` with 15 bytes. When 0 is returned,
89
+ * `outPayload` is untouched. */
90
+ export declare function popEvent(view: DataView, ringOff: number, outPayload: Uint8Array): number;
91
+ /** Drain every pending event, calling `handler` for each. Yields a
92
+ * freshly-copied 15-byte Uint8Array per event so handlers can hold the
93
+ * payload past the next iteration. Returns the count drained. */
94
+ export declare function drainEventRing(view: DataView, ringOff: number, handler: (opCode: number, payload: Uint8Array) => void): number;
95
+ //# sourceMappingURL=event_ring.d.ts.map
@@ -0,0 +1,39 @@
1
+ import { ArchetypeSpec, ColumnStore } from './column_store.cjs';
2
+ import { BufferAllocator } from './allocator.cjs';
3
+ import { ArchetypeGrowSpec } from './layout_ops.cjs';
4
+ export interface ExtendPlan {
5
+ /** Archetypes to append. Each `archetype_id` MUST be absent from
6
+ * `old.archetypes`; collisions throw `StoreExtendError`. */
7
+ readonly newArchetypes: readonly ArchetypeSpec[];
8
+ /** Per-existing-archetype live row counts. Same shape as
9
+ * `GrowPlan.archetypes` so callers can reuse plan-building helpers.
10
+ * Omitted or `0` ⇒ no rows to copy (the archetype is empty). */
11
+ readonly existing?: readonly ArchetypeGrowSpec[];
12
+ }
13
+ export interface ExtendResult {
14
+ readonly store: ColumnStore;
15
+ readonly oldViewStamp: number;
16
+ readonly newViewStamp: number;
17
+ /** True when the in-place fast path (#237 Option A) was taken: the SAB
18
+ * instance is reused, existing column TypedArray views are unchanged,
19
+ * and callers may skip `refreshViews` on every pre-existing
20
+ * Archetype. False when the slow path ran (fresh SAB or wasm-memory
21
+ * grow with detached views); callers MUST refresh every Archetype's
22
+ * SAB-backed columns from the returned `store` before reading them. */
23
+ readonly viewsPreserved: boolean;
24
+ }
25
+ export declare class StoreExtendError extends Error {
26
+ constructor(message: string);
27
+ }
28
+ /** Allocate a new SAB sized for `old` + `plan.newArchetypes`, copy
29
+ * existing rows, bump `view_stamp`.
30
+ *
31
+ * `allocator` (PR 3D / #234): pluggable buffer source forwarded into
32
+ * `createColumnStore`. When the allocator is `wasmMemoryAllocator`,
33
+ * `memory.grow` may detach `old`'s typed-array views before the copy
34
+ * runs — so live rows are snapshotted into heap `Uint8Array`s BEFORE the
35
+ * allocator call and restored into the new views afterwards. The cost
36
+ * is one extra heap allocation per live archetype-column; negligible
37
+ * compared to the SAB walk itself. */
38
+ export declare function extendColumnStore(old: ColumnStore, plan: ExtendPlan, allocator?: BufferAllocator): ExtendResult;
39
+ //# sourceMappingURL=extend.d.ts.map
@@ -1,76 +1,6 @@
1
- import { ArchetypeGrowSpec } from './grow';
2
- import { ArchetypeSpec, CreateColumnStoreOptions, ColumnStore } from './column_store';
3
- import { BufferAllocator } from './allocator';
4
- import { StoreRegionOffsetField } from './store_regions';
5
- /**
6
- * Derive `CreateColumnStoreOptions` from an old ColumnStore so a slow-path realloc
7
- * preserves the same set of optional regions at the same byte offsets in the
8
- * new SAB. Without this, an extend / grow would silently drop a region — the
9
- * command ring's pending commands, every entity placement in the index, etc.
10
- * would be lost.
11
- *
12
- * Walks `STORE_PREFIX_REGIONS`: each present region's `readOptions` replays the
13
- * exact capacity the engine configured (regions may carry non-default sizes),
14
- * not just the default. Live state (write_head, length, …) is preserved
15
- * separately via `snapshotPrefixRegions`.
16
- *
17
- * Also re-applies the descriptor-region headroom policy
18
- * (`reservedDescriptorBytes`, #541). Unlike the prefix regions this is NOT
19
- * read from the SAB bytes — it's a JS-side policy carried on
20
- * `ColumnStoreInternal._reservedDescriptorBytes` — but it belongs here for the
21
- * same reason: without it the realloc'd store drops to zero descriptor
22
- * headroom and every later `extendColumnStore` takes the slow path forever.
23
- * Re-reserving the same margin (additive, see `planLayout`) keeps the #237
24
- * in-place fast path alive across reallocs.
25
- */
26
- export declare function optionsFromOld(old: ColumnStore): CreateColumnStoreOptions;
27
- /** A prefix-region snapshot: the live bytes of every present region from the
28
- * old SAB. `mechanism` is keyed by the `StoreHeader` field holding a mechanism
29
- * region's offset; `consumer` is keyed by `region_id` (consumer regions have no
30
- * named header field). Pairs `snapshotPrefixRegions` with
31
- * `restorePrefixRegions`. */
32
- export interface PrefixRegionSnapshot {
33
- readonly mechanism: Map<StoreRegionOffsetField, Uint8Array>;
34
- readonly consumer: Map<number, Uint8Array>;
35
- }
36
- /**
37
- * Snapshot the live bytes of every present region — both engine MECHANISM
38
- * regions (STORE_PREFIX_REGIONS) and CONSUMER regions (the region-table
39
- * directory) — from the old SAB BEFORE any allocator call that may detach
40
- * views. Each entry is a heap `Uint8Array` copy (via `slice()`) so it survives
41
- * an allocator-induced detach; `restorePrefixRegions` places it back at the
42
- * matching offset in the new SAB.
43
- *
44
- * Header bytes themselves are NOT snapshotted — `createColumnStore` writes the
45
- * header (and the region-table directory) from scratch with the correct
46
- * view_stamp (bumped after this call) and offsets.
47
- */
48
- export declare function snapshotPrefixRegions(old: ColumnStore): PrefixRegionSnapshot;
49
- /** Restore prefix-region byte snapshots into `newStore` at the matching
50
- * region offsets. Pairs with `snapshotPrefixRegions`. The new SAB's regions
51
- * were sized identically by `optionsFromOld`, so each snapshot lands at the
52
- * same length its source had — mechanism regions at their named header offset,
53
- * consumer regions at the offset the rebuilt region-table resolves their id to. */
54
- export declare function restorePrefixRegions(newStore: ColumnStore, snap: PrefixRegionSnapshot): void;
55
- /**
56
- * Snapshot per-archetype live column bytes from `old` BEFORE any
57
- * subsequent allocator call may detach the underlying typed-array views.
58
- * Returned shape: `{ archetype_id → Uint8Array[] }`, one entry per
59
- * column in `columnsInOrder`. Each `Uint8Array` is a fresh copy
60
- * (not a view) so it survives a `WebAssembly.Memory.grow`. Archetypes
61
- * with `row_count === 0` are omitted — nothing to copy.
62
- *
63
- * Shared with `growColumnStore`; both functions need the same
64
- * snapshot-before-allocate pattern under the wasm-memory allocator.
65
- */
66
- export declare function snapshotLiveColumns(old: ColumnStore, rowCountsById: Map<number, number>): Map<number, Uint8Array[]>;
67
- /**
68
- * Write per-archetype column snapshots produced by `snapshotLiveColumns`
69
- * into `newStore`'s column views. The snapshot's column ORDER must match
70
- * the new archetype's `columnsInOrder` (extend / grow guarantee this
71
- * because they carry the column spec forward unchanged).
72
- */
73
- export declare function restoreColumnSnapshots(newStore: ColumnStore, snapshots: Map<number, Uint8Array[]>): void;
1
+ import { ArchetypeSpec, ColumnStore } from './column_store.js';
2
+ import { BufferAllocator } from './allocator.js';
3
+ import { ArchetypeGrowSpec } from './layout_ops.js';
74
4
  export interface ExtendPlan {
75
5
  /** Archetypes to append. Each `archetype_id` MUST be absent from
76
6
  * `old.archetypes`; collisions throw `StoreExtendError`. */
@@ -1 +1 @@
1
- {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../../src/core/store/extend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAMN,KAAK,aAAa,EAElB,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAEhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQnD,OAAO,EAGN,KAAK,sBAAsB,EAC3B,MAAM,iBAAiB,CAAC;AAGzB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,wBAAwB,CAyCzE;AAED;;;;6BAI6B;AAC7B,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,oBAAoB,CAsB5E;AAED;;;;mFAImF;AACnF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAc5F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,WAAW,EAChB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAmB3B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,GAClC,IAAI,CAeN;AAED,MAAM,WAAW,UAAU;IAC1B;gEAC4D;IAC5D,QAAQ,CAAC,aAAa,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD;;oEAEgE;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;2EAKuE;IACvE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CACjC;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI3B;AAED;;;;;;;;;sCASsC;AACtC,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,eAAe,GACzB,YAAY,CAoLd"}
1
+ {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../../src/core/store/extend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAEN,KAAK,aAAa,EAElB,KAAK,WAAW,EAGhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD,OAAO,EAIN,KAAK,iBAAiB,EAEtB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,UAAU;IAC1B;gEAC4D;IAC5D,QAAQ,CAAC,aAAa,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD;;oEAEgE;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;2EAKuE;IACvE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CACjC;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI3B;AAED;;;;;;;;;sCASsC;AACtC,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,eAAe,GACzB,YAAY,CAoId"}
@@ -0,0 +1,34 @@
1
+ import { ColumnStore } from './column_store.cjs';
2
+ import { BufferAllocator } from './allocator.cjs';
3
+ import { ArchetypeGrowSpec } from './layout_ops.cjs';
4
+ export type { ArchetypeGrowSpec } from './layout_ops.cjs';
5
+ export interface GrowPlan {
6
+ readonly archetypes: readonly ArchetypeGrowSpec[];
7
+ }
8
+ /** Returned alongside the new `ColumnStore` so callers can sanity-check the
9
+ * grow (and so tests can assert it without re-reading the SAB). */
10
+ export interface GrowResult {
11
+ readonly store: ColumnStore;
12
+ readonly oldViewStamp: number;
13
+ readonly newViewStamp: number;
14
+ /** True when the in-place fast path ran: every archetype EXCEPT those in
15
+ * `grownArchetypeIds` kept its column views, so the caller only needs to
16
+ * `refreshViews` the grown ones. False on the realloc path, where the
17
+ * whole store moved and every view must be refreshed. */
18
+ readonly viewsPreserved: boolean;
19
+ /** Archetype ids whose columns were relocated (in-place path). Empty on
20
+ * the realloc path. */
21
+ readonly grownArchetypeIds: readonly number[];
22
+ }
23
+ export declare class StoreGrowError extends Error {
24
+ constructor(message: string);
25
+ }
26
+ /** Allocate a new SAB sized for `plan`, copy live rows from `old`, bump
27
+ * `view_stamp`. With the default allocator the old SAB is untouched and
28
+ * callers may continue reading from it until they finish swapping in
29
+ * the new views. With a `wasmMemoryAllocator`, `old`'s typed-array
30
+ * views may be detached as soon as `createColumnStore` returns — live
31
+ * data is snapshotted before the allocator call to make both code paths
32
+ * behave identically from the caller's perspective. (PR 3D / #234) */
33
+ export declare function growColumnStore(old: ColumnStore, plan: GrowPlan, allocator?: BufferAllocator): GrowResult;
34
+ //# sourceMappingURL=grow.d.ts.map
@@ -1,12 +1,7 @@
1
- import { ColumnStore } from './column_store';
2
- import { BufferAllocator } from './allocator';
3
- /** Per-archetype growth input. The caller picks the new `row_capacity` and
4
- * declares the current live `row_count` so we know how many rows to copy. */
5
- export interface ArchetypeGrowSpec {
6
- readonly archetypeId: number;
7
- readonly newRowCapacity: number;
8
- readonly rowCount: number;
9
- }
1
+ import { ColumnStore } from './column_store.js';
2
+ import { BufferAllocator } from './allocator.js';
3
+ import { ArchetypeGrowSpec } from './layout_ops.js';
4
+ export type { ArchetypeGrowSpec } from './layout_ops.js';
10
5
  export interface GrowPlan {
11
6
  readonly archetypes: readonly ArchetypeGrowSpec[];
12
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grow.d.ts","sourceRoot":"","sources":["../../../src/core/store/grow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAUH,OAAO,EAQN,KAAK,WAAW,EAEhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AASnD;6EAC6E;AAC7E,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAClD;AAED;mEACmE;AACnE,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;6DAGyD;IACzD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;2BACuB;IACvB,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AA4KD,qBAAa,cAAe,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI3B;AAED;;;;;;sEAMsE;AACtE,wBAAgB,eAAe,CAC9B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,QAAQ,EACd,SAAS,CAAC,EAAE,eAAe,GACzB,UAAU,CAgIZ"}
1
+ {"version":3,"file":"grow.d.ts","sourceRoot":"","sources":["../../../src/core/store/grow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AASH,OAAO,EAIN,KAAK,WAAW,EAGhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAIN,KAAK,iBAAiB,EAEtB,MAAM,cAAc,CAAC;AAMtB,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAClD;AAED;mEACmE;AACnE,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;6DAGyD;IACzD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;2BACuB;IACvB,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAyJD,qBAAa,cAAe,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI3B;AAED;;;;;;sEAMsE;AACtE,wBAAgB,eAAe,CAC9B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,QAAQ,EACd,SAAS,CAAC,EAAE,eAAe,GACzB,UAAU,CAmGZ"}
@@ -0,0 +1,64 @@
1
+ import { STORE_MAGIC, SIM_ABI_VERSION, STORE_HEADER_BYTES, STORE_HEADER_OFFSETS, REGION_TABLE_ENTRY_BYTES, REGION_TABLE_ENTRY_OFFSETS } from './vendored_abi/abi.cjs';
2
+ export { STORE_MAGIC, SIM_ABI_VERSION, STORE_HEADER_BYTES, STORE_HEADER_OFFSETS, REGION_TABLE_ENTRY_BYTES, REGION_TABLE_ENTRY_OFFSETS };
3
+ export interface StoreHeader {
4
+ /** Magic value `STORE_MAGIC`; used to detect a stale or foreign buffer
5
+ * before any other field is trusted. */
6
+ readonly magic: number;
7
+ /** ABI version; mismatch means the WASM and TS disagree on layout and
8
+ * the SAB must not be used. */
9
+ readonly simAbiVersion: number;
10
+ /** Monotonic; incremented every time the host reallocates the SAB.
11
+ * Cached TypedArray views become stale on bump. (#171 §8.1) */
12
+ readonly viewStamp: number;
13
+ /** Total SAB size in bytes. */
14
+ readonly capacity: number;
15
+ /** Number of archetype regions described by the layout descriptor. */
16
+ readonly archetypeCount: number;
17
+ /** Byte offset into the SAB where the layout descriptor region starts. */
18
+ readonly layoutDescriptorOff: number;
19
+ /** Byte offset of the WASM→TS command ring header. (#171 §7.5) */
20
+ readonly commandRingOff: number;
21
+ /** Byte offset of the TS→WASM action ring header. (#171 §7.5, Phase 5) */
22
+ readonly actionRingOff: number;
23
+ /** Byte offset of the entity-index region (entityId → archetype_id,
24
+ * row, generation lookup). 0 means absent — fixtures and bare-SAB
25
+ * tests that don't need the index see the v1 layout (the engine's
26
+ * `Store` always allocates one). (#245 / Phase 4 PR 4B) */
27
+ readonly entityIndexOff: number;
28
+ /** Byte offset of the event ring region (ECS signal payloads shared
29
+ * with the Zig sim). 0 means absent. (#247 / Phase 4 PR 4C) */
30
+ readonly eventRingOff: number;
31
+ /** Byte offset of the region-table directory — a `RegionTableEntry[]`
32
+ * (`(region_id, byte_offset, byte_length)` triples) holding one entry
33
+ * per consumer-declared region. 0 means no consumer regions were
34
+ * declared. The engine treats `region_id` as opaque; a consumer resolves
35
+ * its region with `findRegionOffset(view, header, id)` (TS) /
36
+ * `abi.find_region(header_addr, id)` (Zig). Replaces the five game-named
37
+ * offset fields (`terrain_off`/`spatial_grid_off`/… ) the SAB header
38
+ * used to hard-code. (#623 — de-game the SAB substrate; ADR-0018.) */
39
+ readonly regionTableOff: number;
40
+ /** Number of `RegionTableEntry` records at `region_table_off`. (#623) */
41
+ readonly regionTableCount: number;
42
+ /** Byte offset of the sim-bindings region — an opaque block of `u16`
43
+ * `(component_id, field_id)` IDs (layout owned by the game, in
44
+ * `@internal/sim`'s `sim_bindings.ts` / `bindings.zig`). The host writes it
45
+ * once per layout via `write_sim_bindings`; the Zig per-system exports
46
+ * (`tick_cooldown_ready` / `tick_movement_tick` / `tick_faith_production`
47
+ * and the batched `tick_all`) read their IDs from here instead of taking
48
+ * them as call args. Present only when the consumer opts into a WASM backend
49
+ * by passing `bindingsRegionBytes` to `createColumnStore`; 0 = absent (a
50
+ * pure-TS game pays nothing for this region). The size is a runtime input,
51
+ * not an engine ABI constant, since #625. (v5 / "SAB-is-the-interface".) */
52
+ readonly bindingsOff: number;
53
+ }
54
+ export declare function writeStoreHeader(view: DataView, h: StoreHeader): void;
55
+ export declare function readStoreHeader(view: DataView): StoreHeader;
56
+ /** Increment `view_stamp` in place after a host-side SAB reallocation. The
57
+ * monotonic counter is the trigger for cached-view invalidation on the TS
58
+ * side and for re-pointing in WASM. (#171 §8.1) */
59
+ export declare function bumpViewStamp(view: DataView): number;
60
+ /** True iff the buffer's first four bytes are `STORE_MAGIC` AND the ABI
61
+ * version matches the current build. Used by both TS and WASM as a
62
+ * pre-flight before treating any other field as meaningful. */
63
+ export declare function isValidSab(view: DataView): boolean;
64
+ //# sourceMappingURL=header.d.ts.map
@@ -1,4 +1,4 @@
1
- import { STORE_MAGIC, SIM_ABI_VERSION, STORE_HEADER_BYTES, STORE_HEADER_OFFSETS, REGION_TABLE_ENTRY_BYTES, REGION_TABLE_ENTRY_OFFSETS } from './__generated__/abi';
1
+ import { STORE_MAGIC, SIM_ABI_VERSION, STORE_HEADER_BYTES, STORE_HEADER_OFFSETS, REGION_TABLE_ENTRY_BYTES, REGION_TABLE_ENTRY_OFFSETS } from './vendored_abi/abi.js';
2
2
  export { STORE_MAGIC, SIM_ABI_VERSION, STORE_HEADER_BYTES, STORE_HEADER_OFFSETS, REGION_TABLE_ENTRY_BYTES, REGION_TABLE_ENTRY_OFFSETS };
3
3
  export interface StoreHeader {
4
4
  /** Magic value `STORE_MAGIC`; used to detect a stale or foreign buffer
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/core/store/header.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFG;AAoBH,OAAO,EACN,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,CAAC;AAEF,MAAM,WAAW,WAAW;IAC3B;4CACwC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;mCAC+B;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;mEAC+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;+DAG2D;IAC3D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;mEAC+D;IAC/D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;;0EAOsE;IACtE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;;;;;;;gFAS4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,GAAG,IAAI,CAcrE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,CAgB3D;AAED;;mDAEmD;AACnD,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAIpD;AAED;;+DAE+D;AAC/D,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAKlD"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/core/store/header.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFG;AAoBH,OAAO,EACN,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,CAAC;AAEF,MAAM,WAAW,WAAW;IAC3B;4CACwC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;mCAC+B;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;mEAC+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;+DAG2D;IAC3D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;mEAC+D;IAC/D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;;0EAOsE;IACtE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;;;;;;;gFAS4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,GAAG,IAAI,CAcrE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,CAgB3D;AAED;;mDAEmD;AACnD,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAIpD;AAED;;+DAE+D;AAC/D,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAKlD"}
@@ -0,0 +1,17 @@
1
+ export { STORE_MAGIC, SIM_ABI_VERSION, STORE_HEADER_BYTES, STORE_HEADER_OFFSETS, REGION_TABLE_ENTRY_BYTES, REGION_TABLE_ENTRY_OFFSETS, type StoreHeader, writeStoreHeader, readStoreHeader, bumpViewStamp, isValidSab } from './header.cjs';
2
+ export { type StoreRegionSpec, type RegionTableEntry, type ColumnStoreRegionHandle, RegionRegistryError, regionTableBytes, validateRegionSpecs, writeRegionTableEntry, readRegionTableEntry, writeRegionTable, readRegionTable, readHeaderRegionTable, findRegionOffset, findRegionEntry } from './region_table.cjs';
3
+ export { TYPE_TAG, type TypeTagValue, TYPE_TAG_STRIDE, TYPED_ARRAY_TAG_TO_TYPE_TAG, COLUMN_DESCRIPTOR_BYTES, COLUMN_DESCRIPTOR_OFFSETS, type ColumnDescriptor, writeColumnDescriptor, readColumnDescriptor, ARCHETYPE_DESCRIPTOR_HEADER_BYTES, ARCHETYPE_DESCRIPTOR_OFFSETS, COMPONENT_MASK_WORDS, STORE_DESCRIPTOR_COMPONENT_LIMIT, type ArchetypeDescriptor, archetypeDescriptorBytes, writeArchetypeDescriptor, readArchetypeDescriptor, writeLayoutDescriptorRegion, readLayoutDescriptorRegion, layoutDescriptorRegionBytes } from './descriptor.cjs';
4
+ export { type ColumnSpec, type ArchetypeSpec, type ColumnView, type ArchetypeViews, type ColumnStore, type AnyTypedArray, type CreateColumnStoreOptions, alignUp, buildArchetypeViews, columnKey, createColumnStore, StoreLayoutOverflowError, STORE_MAX_BYTE_OFFSET, COMMAND_RING_DEFAULT_CAPACITY_SLOTS, ENTITY_INDEX_DEFAULT_CAPACITY, EVENT_RING_DEFAULT_CAPACITY_SLOTS } from './column_store.cjs';
5
+ export { EVENT_OP_EMPTY, EVENT_RING_HEADER_BYTES, EVENT_RING_SLOT_BYTES, EVENT_RING_HEADER_OFFSETS, EventRingError, drainEventRing, eventRingBytes, initEventRing, pendingEventCount, popEvent, pushEvent, ringCapacitySlots as eventRingCapacitySlots, ringOverflow as eventRingOverflow, ringReadHead as eventRingReadHead, ringWriteHead as eventRingWriteHead } from './event_ring.cjs';
6
+ export { ENTITY_INDEX_HEADER_BYTES, ENTITY_INDEX_BYTES_PER_SLOT, ENTITY_INDEX_HEADER_OFFSETS, EntityIndexError, buildEntityIndexViews, entityIndexCapacity, entityIndexLength, entityIndexRegionBytes, initEntityIndexRegion, setEntityIndexLength } from './entity_index.cjs';
7
+ export { COMMAND_OP_EMPTY, COMMAND_RING_HEADER_BYTES, COMMAND_RING_SLOT_BYTES, COMMAND_RING_HEADER_OFFSETS, CommandRingError, commandRingBytes, drainCommandRing, initCommandRing, pendingCommandCount, popCommand, pushCommand, ringCapacitySlots, ringOverflow, ringReadHead, ringWriteHead } from './command_ring.cjs';
8
+ export { type PayloadCodec, CommandDispatcher } from './command_dispatch.cjs';
9
+ export { BufferBackedColumn, StoreColumnOverflowError } from './buffer_backed_column.cjs';
10
+ export { type ArchetypeGrowSpec, type GrowPlan, type GrowResult, StoreGrowError, growColumnStore } from './grow.cjs';
11
+ export { type ExtendPlan, type ExtendResult, StoreExtendError, extendColumnStore } from './extend.cjs';
12
+ export { snapshotLiveColumns, restoreColumnSnapshots } from './layout_ops.cjs';
13
+ export { type BufferAllocator, type InPlaceBufferAllocator, StoreCapExceededError, SabUnavailableError, DEFAULT_SAB_ALLOCATOR, wasmMemoryAllocator, growableSabAllocator, heapArraybufferAllocator } from './allocator.cjs';
14
+ export { StoreRestoreError, snapshotColumnStore, restoreColumnStore } from './snapshot.cjs';
15
+ export { FNV1A_OFFSET_BASIS, FNV1A_PRIME, fnv1a32, fnv1aStep, fnv1aStepWord, columnStoreStateHash } from './state_hash.cjs';
16
+ export { ACTION_RING_DEFAULT_CAPACITY_SLOTS, ACTION_RING_HEADER_BYTES, ACTION_RING_HEADER_OFFSETS, ACTION_RING_MAX_PAYLOAD_BYTES, ACTION_RING_SLOT_BYTES, ActionRingError, actionRingBytes, actionRingCapacitySlots, actionRingOverflow, actionRingReadHead, actionRingWriteHead, clearActionRingOverflow, drainActionRing, initActionRing, pendingActionCount, popAction, pushAction } from './action_ring.cjs';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -1,16 +1,17 @@
1
- export { STORE_MAGIC, SIM_ABI_VERSION, STORE_HEADER_BYTES, STORE_HEADER_OFFSETS, REGION_TABLE_ENTRY_BYTES, REGION_TABLE_ENTRY_OFFSETS, type StoreHeader, writeStoreHeader, readStoreHeader, bumpViewStamp, isValidSab } from './header';
2
- export { type StoreRegionSpec, type RegionTableEntry, type ColumnStoreRegionHandle, RegionRegistryError, regionTableBytes, validateRegionSpecs, writeRegionTableEntry, readRegionTableEntry, writeRegionTable, readRegionTable, readHeaderRegionTable, findRegionOffset, findRegionEntry } from './region_table';
3
- export { TYPE_TAG, type TypeTagValue, TYPE_TAG_STRIDE, TYPED_ARRAY_TAG_TO_TYPE_TAG, COLUMN_DESCRIPTOR_BYTES, COLUMN_DESCRIPTOR_OFFSETS, type ColumnDescriptor, writeColumnDescriptor, readColumnDescriptor, ARCHETYPE_DESCRIPTOR_HEADER_BYTES, ARCHETYPE_DESCRIPTOR_OFFSETS, COMPONENT_MASK_WORDS, STORE_DESCRIPTOR_COMPONENT_LIMIT, type ArchetypeDescriptor, archetypeDescriptorBytes, writeArchetypeDescriptor, readArchetypeDescriptor, writeLayoutDescriptorRegion, readLayoutDescriptorRegion, layoutDescriptorRegionBytes } from './descriptor';
4
- export { type ColumnSpec, type ArchetypeSpec, type ColumnView, type ArchetypeViews, type ColumnStore, type AnyTypedArray, type CreateColumnStoreOptions, alignUp, buildArchetypeViews, columnKey, createColumnStore, StoreLayoutOverflowError, STORE_MAX_BYTE_OFFSET, COMMAND_RING_DEFAULT_CAPACITY_SLOTS, ENTITY_INDEX_DEFAULT_CAPACITY, EVENT_RING_DEFAULT_CAPACITY_SLOTS } from './column_store';
5
- export { EVENT_OP_EMPTY, EVENT_RING_HEADER_BYTES, EVENT_RING_SLOT_BYTES, EVENT_RING_HEADER_OFFSETS, EventRingError, drainEventRing, eventRingBytes, initEventRing, pendingEventCount, popEvent, pushEvent, ringCapacitySlots as eventRingCapacitySlots, ringOverflow as eventRingOverflow, ringReadHead as eventRingReadHead, ringWriteHead as eventRingWriteHead } from './event_ring';
6
- export { ENTITY_INDEX_HEADER_BYTES, ENTITY_INDEX_BYTES_PER_SLOT, ENTITY_INDEX_HEADER_OFFSETS, EntityIndexError, buildEntityIndexViews, entityIndexCapacity, entityIndexLength, entityIndexRegionBytes, initEntityIndexRegion, setEntityIndexLength } from './entity_index';
7
- export { COMMAND_OP_EMPTY, COMMAND_RING_HEADER_BYTES, COMMAND_RING_SLOT_BYTES, COMMAND_RING_HEADER_OFFSETS, CommandRingError, commandRingBytes, drainCommandRing, initCommandRing, pendingCommandCount, popCommand, pushCommand, ringCapacitySlots, ringOverflow, ringReadHead, ringWriteHead } from './command_ring';
8
- export { type PayloadCodec, CommandDispatcher } from './command_dispatch';
9
- export { BufferBackedColumn, StoreColumnOverflowError } from './buffer_backed_column';
10
- export { type ArchetypeGrowSpec, type GrowPlan, type GrowResult, StoreGrowError, growColumnStore } from './grow';
11
- export { type ExtendPlan, type ExtendResult, StoreExtendError, extendColumnStore, snapshotLiveColumns, restoreColumnSnapshots } from './extend';
12
- export { type BufferAllocator, type InPlaceBufferAllocator, StoreCapExceededError, SabUnavailableError, DEFAULT_SAB_ALLOCATOR, wasmMemoryAllocator, growableSabAllocator, heapArraybufferAllocator } from './allocator';
13
- export { StoreRestoreError, snapshotColumnStore, restoreColumnStore } from './snapshot';
14
- export { FNV1A_OFFSET_BASIS, FNV1A_PRIME, fnv1a32, fnv1aStep, fnv1aStepWord, columnStoreStateHash } from './state_hash';
15
- export { ACTION_RING_DEFAULT_CAPACITY_SLOTS, ACTION_RING_HEADER_BYTES, ACTION_RING_HEADER_OFFSETS, ACTION_RING_MAX_PAYLOAD_BYTES, ACTION_RING_SLOT_BYTES, ActionRingError, actionRingBytes, actionRingCapacitySlots, actionRingOverflow, actionRingReadHead, actionRingWriteHead, clearActionRingOverflow, drainActionRing, initActionRing, pendingActionCount, popAction, pushAction } from './action_ring';
1
+ export { STORE_MAGIC, SIM_ABI_VERSION, STORE_HEADER_BYTES, STORE_HEADER_OFFSETS, REGION_TABLE_ENTRY_BYTES, REGION_TABLE_ENTRY_OFFSETS, type StoreHeader, writeStoreHeader, readStoreHeader, bumpViewStamp, isValidSab } from './header.js';
2
+ export { type StoreRegionSpec, type RegionTableEntry, type ColumnStoreRegionHandle, RegionRegistryError, regionTableBytes, validateRegionSpecs, writeRegionTableEntry, readRegionTableEntry, writeRegionTable, readRegionTable, readHeaderRegionTable, findRegionOffset, findRegionEntry } from './region_table.js';
3
+ export { TYPE_TAG, type TypeTagValue, TYPE_TAG_STRIDE, TYPED_ARRAY_TAG_TO_TYPE_TAG, COLUMN_DESCRIPTOR_BYTES, COLUMN_DESCRIPTOR_OFFSETS, type ColumnDescriptor, writeColumnDescriptor, readColumnDescriptor, ARCHETYPE_DESCRIPTOR_HEADER_BYTES, ARCHETYPE_DESCRIPTOR_OFFSETS, COMPONENT_MASK_WORDS, STORE_DESCRIPTOR_COMPONENT_LIMIT, type ArchetypeDescriptor, archetypeDescriptorBytes, writeArchetypeDescriptor, readArchetypeDescriptor, writeLayoutDescriptorRegion, readLayoutDescriptorRegion, layoutDescriptorRegionBytes } from './descriptor.js';
4
+ export { type ColumnSpec, type ArchetypeSpec, type ColumnView, type ArchetypeViews, type ColumnStore, type AnyTypedArray, type CreateColumnStoreOptions, alignUp, buildArchetypeViews, columnKey, createColumnStore, StoreLayoutOverflowError, STORE_MAX_BYTE_OFFSET, COMMAND_RING_DEFAULT_CAPACITY_SLOTS, ENTITY_INDEX_DEFAULT_CAPACITY, EVENT_RING_DEFAULT_CAPACITY_SLOTS } from './column_store.js';
5
+ export { EVENT_OP_EMPTY, EVENT_RING_HEADER_BYTES, EVENT_RING_SLOT_BYTES, EVENT_RING_HEADER_OFFSETS, EventRingError, drainEventRing, eventRingBytes, initEventRing, pendingEventCount, popEvent, pushEvent, ringCapacitySlots as eventRingCapacitySlots, ringOverflow as eventRingOverflow, ringReadHead as eventRingReadHead, ringWriteHead as eventRingWriteHead } from './event_ring.js';
6
+ export { ENTITY_INDEX_HEADER_BYTES, ENTITY_INDEX_BYTES_PER_SLOT, ENTITY_INDEX_HEADER_OFFSETS, EntityIndexError, buildEntityIndexViews, entityIndexCapacity, entityIndexLength, entityIndexRegionBytes, initEntityIndexRegion, setEntityIndexLength } from './entity_index.js';
7
+ export { COMMAND_OP_EMPTY, COMMAND_RING_HEADER_BYTES, COMMAND_RING_SLOT_BYTES, COMMAND_RING_HEADER_OFFSETS, CommandRingError, commandRingBytes, drainCommandRing, initCommandRing, pendingCommandCount, popCommand, pushCommand, ringCapacitySlots, ringOverflow, ringReadHead, ringWriteHead } from './command_ring.js';
8
+ export { type PayloadCodec, CommandDispatcher } from './command_dispatch.js';
9
+ export { BufferBackedColumn, StoreColumnOverflowError } from './buffer_backed_column.js';
10
+ export { type ArchetypeGrowSpec, type GrowPlan, type GrowResult, StoreGrowError, growColumnStore } from './grow.js';
11
+ export { type ExtendPlan, type ExtendResult, StoreExtendError, extendColumnStore } from './extend.js';
12
+ export { snapshotLiveColumns, restoreColumnSnapshots } from './layout_ops.js';
13
+ export { type BufferAllocator, type InPlaceBufferAllocator, StoreCapExceededError, SabUnavailableError, DEFAULT_SAB_ALLOCATOR, wasmMemoryAllocator, growableSabAllocator, heapArraybufferAllocator } from './allocator.js';
14
+ export { StoreRestoreError, snapshotColumnStore, restoreColumnStore } from './snapshot.js';
15
+ export { FNV1A_OFFSET_BASIS, FNV1A_PRIME, fnv1a32, fnv1aStep, fnv1aStepWord, columnStoreStateHash } from './state_hash.js';
16
+ export { ACTION_RING_DEFAULT_CAPACITY_SLOTS, ACTION_RING_HEADER_BYTES, ACTION_RING_HEADER_OFFSETS, ACTION_RING_MAX_PAYLOAD_BYTES, ACTION_RING_SLOT_BYTES, ActionRingError, actionRingBytes, actionRingCapacitySlots, actionRingOverflow, actionRingReadHead, actionRingWriteHead, clearActionRingOverflow, drainActionRing, initActionRing, pendingActionCount, popAction, pushAction } from './action_ring.js';
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/store/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/store/index.ts"],"names":[],"mappings":"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"}