@elaraai/east 1.0.78 → 1.0.80

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 (276) hide show
  1. package/README.md +1 -1
  2. package/dist/src/comparison.d.ts.map +1 -1
  3. package/dist/src/comparison.js +4 -5
  4. package/dist/src/comparison.js.map +1 -1
  5. package/dist/src/compile/builtins/array.d.ts +59 -0
  6. package/dist/src/compile/builtins/array.d.ts.map +1 -0
  7. package/dist/src/compile/builtins/array.js +656 -0
  8. package/dist/src/compile/builtins/array.js.map +1 -0
  9. package/dist/src/compile/builtins/blob.d.ts +18 -0
  10. package/dist/src/compile/builtins/blob.d.ts.map +1 -0
  11. package/dist/src/compile/builtins/blob.js +150 -0
  12. package/dist/src/compile/builtins/blob.js.map +1 -0
  13. package/dist/src/compile/builtins/compare.d.ts +18 -0
  14. package/dist/src/compile/builtins/compare.d.ts.map +1 -0
  15. package/dist/src/compile/builtins/compare.js +52 -0
  16. package/dist/src/compile/builtins/compare.js.map +1 -0
  17. package/dist/src/compile/builtins/datetime.d.ts +21 -0
  18. package/dist/src/compile/builtins/datetime.d.ts.map +1 -0
  19. package/dist/src/compile/builtins/datetime.js +46 -0
  20. package/dist/src/compile/builtins/datetime.js.map +1 -0
  21. package/dist/src/compile/builtins/dict.d.ts +46 -0
  22. package/dist/src/compile/builtins/dict.d.ts.map +1 -0
  23. package/dist/src/compile/builtins/dict.js +551 -0
  24. package/dist/src/compile/builtins/dict.js.map +1 -0
  25. package/dist/src/compile/builtins/index.d.ts +9 -0
  26. package/dist/src/compile/builtins/index.d.ts.map +1 -0
  27. package/dist/src/compile/builtins/index.js +28 -0
  28. package/dist/src/compile/builtins/index.js.map +1 -0
  29. package/dist/src/compile/builtins/matrix.d.ts +31 -0
  30. package/dist/src/compile/builtins/matrix.d.ts.map +1 -0
  31. package/dist/src/compile/builtins/matrix.js +310 -0
  32. package/dist/src/compile/builtins/matrix.js.map +1 -0
  33. package/dist/src/compile/builtins/primitives.d.ts +36 -0
  34. package/dist/src/compile/builtins/primitives.d.ts.map +1 -0
  35. package/dist/src/compile/builtins/primitives.js +67 -0
  36. package/dist/src/compile/builtins/primitives.js.map +1 -0
  37. package/dist/src/compile/builtins/ref.d.ts +11 -0
  38. package/dist/src/compile/builtins/ref.d.ts.map +1 -0
  39. package/dist/src/compile/builtins/ref.js +30 -0
  40. package/dist/src/compile/builtins/ref.js.map +1 -0
  41. package/dist/src/compile/builtins/set.d.ts +41 -0
  42. package/dist/src/compile/builtins/set.d.ts.map +1 -0
  43. package/dist/src/compile/builtins/set.js +385 -0
  44. package/dist/src/compile/builtins/set.js.map +1 -0
  45. package/dist/src/compile/builtins/sparse.d.ts +19 -0
  46. package/dist/src/compile/builtins/sparse.d.ts.map +1 -0
  47. package/dist/src/compile/builtins/sparse.js +143 -0
  48. package/dist/src/compile/builtins/sparse.js.map +1 -0
  49. package/dist/src/compile/builtins/string.d.ts +34 -0
  50. package/dist/src/compile/builtins/string.d.ts.map +1 -0
  51. package/dist/src/compile/builtins/string.js +238 -0
  52. package/dist/src/compile/builtins/string.js.map +1 -0
  53. package/dist/src/compile/builtins/vector.d.ts +44 -0
  54. package/dist/src/compile/builtins/vector.d.ts.map +1 -0
  55. package/dist/src/compile/builtins/vector.js +463 -0
  56. package/dist/src/compile/builtins/vector.js.map +1 -0
  57. package/dist/src/compile/constructors.d.ts +13 -0
  58. package/dist/src/compile/constructors.d.ts.map +1 -0
  59. package/dist/src/compile/constructors.js +179 -0
  60. package/dist/src/compile/constructors.js.map +1 -0
  61. package/dist/src/compile/control.d.ts +13 -0
  62. package/dist/src/compile/control.d.ts.map +1 -0
  63. package/dist/src/compile/control.js +513 -0
  64. package/dist/src/compile/control.js.map +1 -0
  65. package/dist/src/compile/functions.d.ts +13 -0
  66. package/dist/src/compile/functions.d.ts.map +1 -0
  67. package/dist/src/compile/functions.js +492 -0
  68. package/dist/src/compile/functions.js.map +1 -0
  69. package/dist/src/compile/ir.d.ts +19 -0
  70. package/dist/src/compile/ir.d.ts.map +1 -0
  71. package/dist/src/compile/ir.js +193 -0
  72. package/dist/src/compile/ir.js.map +1 -0
  73. package/dist/src/compile/runtime.d.ts +78 -0
  74. package/dist/src/compile/runtime.d.ts.map +1 -0
  75. package/dist/src/compile/runtime.js +111 -0
  76. package/dist/src/compile/runtime.js.map +1 -0
  77. package/dist/src/compile/type_parameters.d.ts +4 -0
  78. package/dist/src/compile/type_parameters.d.ts.map +1 -0
  79. package/dist/src/compile/type_parameters.js +55 -0
  80. package/dist/src/compile/type_parameters.js.map +1 -0
  81. package/dist/src/compile/typed_arrays.d.ts +28 -0
  82. package/dist/src/compile/typed_arrays.d.ts.map +1 -0
  83. package/dist/src/compile/typed_arrays.js +77 -0
  84. package/dist/src/compile/typed_arrays.js.map +1 -0
  85. package/dist/src/compile.d.ts +6 -41
  86. package/dist/src/compile.d.ts.map +1 -1
  87. package/dist/src/compile.js +8 -4415
  88. package/dist/src/compile.js.map +1 -1
  89. package/dist/src/compile.open_beast.spec.js +5 -4
  90. package/dist/src/compile.open_beast.spec.js.map +1 -1
  91. package/dist/src/containers/sortedmap.d.ts +2 -1
  92. package/dist/src/containers/sortedmap.d.ts.map +1 -1
  93. package/dist/src/containers/sortedmap.js +4 -2
  94. package/dist/src/containers/sortedmap.js.map +1 -1
  95. package/dist/src/containers/sortedset.d.ts +2 -1
  96. package/dist/src/containers/sortedset.d.ts.map +1 -1
  97. package/dist/src/containers/sortedset.js +4 -2
  98. package/dist/src/containers/sortedset.js.map +1 -1
  99. package/dist/src/error.d.ts +15 -0
  100. package/dist/src/error.d.ts.map +1 -1
  101. package/dist/src/error.js +16 -0
  102. package/dist/src/error.js.map +1 -1
  103. package/dist/src/index.d.ts +1 -0
  104. package/dist/src/index.d.ts.map +1 -1
  105. package/dist/src/index.js +1 -0
  106. package/dist/src/index.js.map +1 -1
  107. package/dist/src/patch/index.d.ts +1 -1
  108. package/dist/src/patch/index.d.ts.map +1 -1
  109. package/dist/src/patch/index.js +1 -1
  110. package/dist/src/patch/index.js.map +1 -1
  111. package/dist/src/patch/type_of_patch.d.ts +25 -1
  112. package/dist/src/patch/type_of_patch.d.ts.map +1 -1
  113. package/dist/src/patch/type_of_patch.js +33 -10
  114. package/dist/src/patch/type_of_patch.js.map +1 -1
  115. package/dist/src/platform.spec.js +19 -1
  116. package/dist/src/platform.spec.js.map +1 -1
  117. package/dist/src/runner_protocol.d.ts +316 -0
  118. package/dist/src/runner_protocol.d.ts.map +1 -0
  119. package/dist/src/runner_protocol.js +135 -0
  120. package/dist/src/runner_protocol.js.map +1 -0
  121. package/dist/src/serialization/beast2/index.d.ts +21 -5
  122. package/dist/src/serialization/beast2/index.d.ts.map +1 -1
  123. package/dist/src/serialization/beast2/index.js +12 -2
  124. package/dist/src/serialization/beast2/index.js.map +1 -1
  125. package/dist/src/serialization/beast2/index.spec.js +84 -3
  126. package/dist/src/serialization/beast2/index.spec.js.map +1 -1
  127. package/dist/src/serialization/beast2/shared.d.ts +32 -3
  128. package/dist/src/serialization/beast2/shared.d.ts.map +1 -1
  129. package/dist/src/serialization/beast2/shared.js +135 -10
  130. package/dist/src/serialization/beast2/shared.js.map +1 -1
  131. package/dist/src/serialization/beast2/v4/container.d.ts.map +1 -1
  132. package/dist/src/serialization/beast2/v4/container.js +5 -3
  133. package/dist/src/serialization/beast2/v4/container.js.map +1 -1
  134. package/dist/src/serialization/beast2/v5/aliasing.spec.d.ts +6 -0
  135. package/dist/src/serialization/beast2/v5/aliasing.spec.d.ts.map +1 -0
  136. package/dist/src/serialization/beast2/v5/aliasing.spec.js +75 -0
  137. package/dist/src/serialization/beast2/v5/aliasing.spec.js.map +1 -0
  138. package/dist/src/serialization/beast2/v5/boundary.d.ts +176 -0
  139. package/dist/src/serialization/beast2/v5/boundary.d.ts.map +1 -0
  140. package/dist/src/serialization/beast2/v5/boundary.js +297 -0
  141. package/dist/src/serialization/beast2/v5/boundary.js.map +1 -0
  142. package/dist/src/serialization/beast2/v5/boundary.spec.d.ts +6 -0
  143. package/dist/src/serialization/beast2/v5/boundary.spec.d.ts.map +1 -0
  144. package/dist/src/serialization/beast2/v5/boundary.spec.js +479 -0
  145. package/dist/src/serialization/beast2/v5/boundary.spec.js.map +1 -0
  146. package/dist/src/serialization/beast2/v5/codec.d.ts +6 -5
  147. package/dist/src/serialization/beast2/v5/codec.d.ts.map +1 -1
  148. package/dist/src/serialization/beast2/v5/codec.js +18 -3
  149. package/dist/src/serialization/beast2/v5/codec.js.map +1 -1
  150. package/dist/src/serialization/beast2/v5/deflate.d.ts +24 -2
  151. package/dist/src/serialization/beast2/v5/deflate.d.ts.map +1 -1
  152. package/dist/src/serialization/beast2/v5/deflate.js +47 -12
  153. package/dist/src/serialization/beast2/v5/deflate.js.map +1 -1
  154. package/dist/src/serialization/beast2/v5/deflate.spec.js +15 -1
  155. package/dist/src/serialization/beast2/v5/deflate.spec.js.map +1 -1
  156. package/dist/src/serialization/beast2/v5/elements.d.ts +64 -0
  157. package/dist/src/serialization/beast2/v5/elements.d.ts.map +1 -0
  158. package/dist/src/serialization/beast2/v5/elements.js +320 -0
  159. package/dist/src/serialization/beast2/v5/elements.js.map +1 -0
  160. package/dist/src/serialization/beast2/v5/elements.spec.d.ts +6 -0
  161. package/dist/src/serialization/beast2/v5/elements.spec.d.ts.map +1 -0
  162. package/dist/src/serialization/beast2/v5/elements.spec.js +161 -0
  163. package/dist/src/serialization/beast2/v5/elements.spec.js.map +1 -0
  164. package/dist/src/serialization/beast2/v5/frame-pool.d.ts +62 -21
  165. package/dist/src/serialization/beast2/v5/frame-pool.d.ts.map +1 -1
  166. package/dist/src/serialization/beast2/v5/frame-pool.js +138 -27
  167. package/dist/src/serialization/beast2/v5/frame-pool.js.map +1 -1
  168. package/dist/src/serialization/beast2/v5/frame-pool.spec.js +198 -71
  169. package/dist/src/serialization/beast2/v5/frame-pool.spec.js.map +1 -1
  170. package/dist/src/serialization/beast2/v5/frame-worker.js +25 -15
  171. package/dist/src/serialization/beast2/v5/frame-worker.js.map +1 -1
  172. package/dist/src/serialization/beast2/v5/frames.d.ts +22 -12
  173. package/dist/src/serialization/beast2/v5/frames.d.ts.map +1 -1
  174. package/dist/src/serialization/beast2/v5/frames.js +52 -27
  175. package/dist/src/serialization/beast2/v5/frames.js.map +1 -1
  176. package/dist/src/serialization/beast2/v5/geometry.d.ts +38 -1
  177. package/dist/src/serialization/beast2/v5/geometry.d.ts.map +1 -1
  178. package/dist/src/serialization/beast2/v5/geometry.js +73 -1
  179. package/dist/src/serialization/beast2/v5/geometry.js.map +1 -1
  180. package/dist/src/serialization/beast2/v5/geometry.spec.js +34 -23
  181. package/dist/src/serialization/beast2/v5/geometry.spec.js.map +1 -1
  182. package/dist/src/serialization/beast2/v5/index.spec.js +32 -28
  183. package/dist/src/serialization/beast2/v5/index.spec.js.map +1 -1
  184. package/dist/src/serialization/beast2/v5/lazy.d.ts +42 -1
  185. package/dist/src/serialization/beast2/v5/lazy.d.ts.map +1 -1
  186. package/dist/src/serialization/beast2/v5/lazy.js +143 -28
  187. package/dist/src/serialization/beast2/v5/lazy.js.map +1 -1
  188. package/dist/src/serialization/beast2/v5/lazy.spec.js +102 -24
  189. package/dist/src/serialization/beast2/v5/lazy.spec.js.map +1 -1
  190. package/dist/src/serialization/beast2/v5/manifest-writer.d.ts +110 -0
  191. package/dist/src/serialization/beast2/v5/manifest-writer.d.ts.map +1 -0
  192. package/dist/src/serialization/beast2/v5/manifest-writer.js +118 -0
  193. package/dist/src/serialization/beast2/v5/manifest-writer.js.map +1 -0
  194. package/dist/src/serialization/beast2/v5/manifest-writer.spec.d.ts +6 -0
  195. package/dist/src/serialization/beast2/v5/manifest-writer.spec.d.ts.map +1 -0
  196. package/dist/src/serialization/beast2/v5/manifest-writer.spec.js +207 -0
  197. package/dist/src/serialization/beast2/v5/manifest-writer.spec.js.map +1 -0
  198. package/dist/src/serialization/beast2/v5/manifest.d.ts +241 -0
  199. package/dist/src/serialization/beast2/v5/manifest.d.ts.map +1 -0
  200. package/dist/src/serialization/beast2/v5/manifest.js +233 -0
  201. package/dist/src/serialization/beast2/v5/manifest.js.map +1 -0
  202. package/dist/src/serialization/beast2/v5/merge.d.ts +93 -0
  203. package/dist/src/serialization/beast2/v5/merge.d.ts.map +1 -0
  204. package/dist/src/serialization/beast2/v5/merge.js +202 -0
  205. package/dist/src/serialization/beast2/v5/merge.js.map +1 -0
  206. package/dist/src/serialization/beast2/v5/merge.spec.d.ts +6 -0
  207. package/dist/src/serialization/beast2/v5/merge.spec.d.ts.map +1 -0
  208. package/dist/src/serialization/beast2/v5/merge.spec.js +118 -0
  209. package/dist/src/serialization/beast2/v5/merge.spec.js.map +1 -0
  210. package/dist/src/serialization/beast2/v5/recut.d.ts +143 -0
  211. package/dist/src/serialization/beast2/v5/recut.d.ts.map +1 -0
  212. package/dist/src/serialization/beast2/v5/recut.js +365 -0
  213. package/dist/src/serialization/beast2/v5/recut.js.map +1 -0
  214. package/dist/src/serialization/beast2/v5/recut.spec.d.ts +6 -0
  215. package/dist/src/serialization/beast2/v5/recut.spec.d.ts.map +1 -0
  216. package/dist/src/serialization/beast2/v5/recut.spec.js +215 -0
  217. package/dist/src/serialization/beast2/v5/recut.spec.js.map +1 -0
  218. package/dist/src/serialization/beast2/v5/runs.d.ts +148 -0
  219. package/dist/src/serialization/beast2/v5/runs.d.ts.map +1 -0
  220. package/dist/src/serialization/beast2/v5/runs.js +260 -0
  221. package/dist/src/serialization/beast2/v5/runs.js.map +1 -0
  222. package/dist/src/serialization/beast2/v5/runs.spec.d.ts +6 -0
  223. package/dist/src/serialization/beast2/v5/runs.spec.d.ts.map +1 -0
  224. package/dist/src/serialization/beast2/v5/runs.spec.js +182 -0
  225. package/dist/src/serialization/beast2/v5/runs.spec.js.map +1 -0
  226. package/dist/src/serialization/beast2/v5/sha256.d.ts +19 -0
  227. package/dist/src/serialization/beast2/v5/sha256.d.ts.map +1 -0
  228. package/dist/src/serialization/beast2/v5/sha256.js +103 -0
  229. package/dist/src/serialization/beast2/v5/sha256.js.map +1 -0
  230. package/dist/src/serialization/beast2/v5/sha256.spec.d.ts +6 -0
  231. package/dist/src/serialization/beast2/v5/sha256.spec.d.ts.map +1 -0
  232. package/dist/src/serialization/beast2/v5/sha256.spec.js +42 -0
  233. package/dist/src/serialization/beast2/v5/sha256.spec.js.map +1 -0
  234. package/dist/src/serialization/beast2/v5/stream.d.ts +273 -86
  235. package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -1
  236. package/dist/src/serialization/beast2/v5/stream.js +576 -244
  237. package/dist/src/serialization/beast2/v5/stream.js.map +1 -1
  238. package/dist/src/serialization/beast2/v5/sync-reader.spec.js +24 -10
  239. package/dist/src/serialization/beast2/v5/sync-reader.spec.js.map +1 -1
  240. package/dist/src/serialization/index.d.ts +1 -1
  241. package/dist/src/serialization/index.d.ts.map +1 -1
  242. package/dist/src/serialization/index.js +1 -1
  243. package/dist/src/serialization/index.js.map +1 -1
  244. package/dist/src/serialization/json.d.ts +28 -0
  245. package/dist/src/serialization/json.d.ts.map +1 -1
  246. package/dist/src/serialization/json.js +141 -30
  247. package/dist/src/serialization/json.js.map +1 -1
  248. package/dist/src/serialization/json.spec.js +47 -2
  249. package/dist/src/serialization/json.spec.js.map +1 -1
  250. package/dist/src/serialization/json_schema.d.ts +15 -11
  251. package/dist/src/serialization/json_schema.d.ts.map +1 -1
  252. package/dist/src/serialization/json_schema.js +21 -36
  253. package/dist/src/serialization/json_schema.js.map +1 -1
  254. package/dist/src/serialization/json_schema.spec.js +26 -32
  255. package/dist/src/serialization/json_schema.spec.js.map +1 -1
  256. package/dist/src/serialization/json_schema_to_type.d.ts +10 -5
  257. package/dist/src/serialization/json_schema_to_type.d.ts.map +1 -1
  258. package/dist/src/serialization/json_schema_to_type.js +13 -6
  259. package/dist/src/serialization/json_schema_to_type.js.map +1 -1
  260. package/dist/src/serialization/json_schema_to_type.spec.js +19 -0
  261. package/dist/src/serialization/json_schema_to_type.spec.js.map +1 -1
  262. package/dist/src/string_order.d.ts +36 -0
  263. package/dist/src/string_order.d.ts.map +1 -0
  264. package/dist/src/string_order.js +64 -0
  265. package/dist/src/string_order.js.map +1 -0
  266. package/dist/src/string_order.spec.d.ts +6 -0
  267. package/dist/src/string_order.spec.d.ts.map +1 -0
  268. package/dist/src/string_order.spec.js +79 -0
  269. package/dist/src/string_order.spec.js.map +1 -0
  270. package/dist/src/type_of_type.d.ts +17 -0
  271. package/dist/src/type_of_type.d.ts.map +1 -1
  272. package/dist/src/type_of_type.js +66 -0
  273. package/dist/src/type_of_type.js.map +1 -1
  274. package/dist/src/type_of_type.to_etv.spec.js +69 -1
  275. package/dist/src/type_of_type.to_etv.spec.js.map +1 -1
  276. package/package.json +1 -1
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * SHA-256, the name of every object a manifest directory holds: the FIPS
7
+ * 180-4 vectors, pinned in east-c's `tests/test_sha256.c` as well, and
8
+ * agreement with Node's own digest at every length across the padding
9
+ * boundaries.
10
+ */
11
+ import { describe, test } from "node:test";
12
+ import assert from "node:assert/strict";
13
+ import { createHash } from "node:crypto";
14
+ import { sha256Hex } from "../index.js";
15
+ describe("sha256Hex", () => {
16
+ test("matches the FIPS 180-4 vectors", () => {
17
+ const of = (s) => sha256Hex(new TextEncoder().encode(s));
18
+ assert.equal(of(""), "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");
19
+ assert.equal(of("abc"), "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad");
20
+ assert.equal(of("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1");
21
+ assert.equal(sha256Hex(new Uint8Array(1_000_000).fill(0x61)), "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0");
22
+ });
23
+ test("agrees with Node's digest at every length across the padding boundaries", () => {
24
+ // Lengths 55, 56 and 64 are where the length field moves to a second
25
+ // block, and where the rest is empty.
26
+ let seed = 0x9e3779b9;
27
+ for (let n = 0; n <= 300; n++) {
28
+ const bytes = new Uint8Array(n);
29
+ for (let i = 0; i < n; i++) {
30
+ seed = (Math.imul(seed, 1664525) + 1013904223) >>> 0;
31
+ bytes[i] = seed >>> 24;
32
+ }
33
+ assert.equal(sha256Hex(bytes), createHash("sha256").update(bytes).digest("hex"), `length ${n}`);
34
+ }
35
+ });
36
+ test("hashes a view by its own bytes, not its buffer's", () => {
37
+ const buffer = new Uint8Array(200).map((_, i) => i);
38
+ const view = buffer.subarray(37, 150);
39
+ assert.equal(sha256Hex(view), createHash("sha256").update(view).digest("hex"));
40
+ });
41
+ });
42
+ //# sourceMappingURL=sha256.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sha256.spec.js","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/sha256.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,kEAAkE,CAAC,CAAC;QACzF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,kEAAkE,CAAC,CAAC;QAC5F,MAAM,CAAC,KAAK,CACV,EAAE,CAAC,0DAA0D,CAAC,EAC9D,kEAAkE,CACnE,CAAC;QACF,MAAM,CAAC,KAAK,CACV,SAAS,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAC/C,kEAAkE,CACnE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACnF,qEAAqE;QACrE,sCAAsC;QACtC,IAAI,IAAI,GAAG,UAAU,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;gBACrD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC;YACzB,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -5,9 +5,15 @@
5
5
  /**
6
6
  * Beast2 v5 streaming and paging APIs.
7
7
  *
8
+ * - {@link Beast2ElementWriter} — the canonical writer: elements in, segments
9
+ * out where the content-defined cut rule places them, so a collection's
10
+ * bytes are a function of its value alone — as one blob, or as the
11
+ * standalone segment blobs a manifest names. Every writer of a stored
12
+ * collection writes through it.
13
+ * - {@link encodeBeast2PagedFor} — one whole value through the element writer.
8
14
  * - {@link Beast2Writer} — append-only streaming writer: each `write(batch)`
9
15
  * becomes one root segment (one frame), so writer memory is O(batch), never
10
- * the whole collection.
16
+ * the whole collection. The geometry is the caller's.
11
17
  * - {@link encodeBeast2SegmentsFor} — in-memory convenience over the writer.
12
18
  * - {@link iterBeast2SegmentsFor} — sequential segment iterator: yields one
13
19
  * decoded collection per root segment with O(segment) decoded memory.
@@ -15,22 +21,28 @@
15
21
  * `elementCount`, per-segment decode via footer + index seeks.
16
22
  *
17
23
  * Streaming roots are collections (Array/Set/Dict). Writers default to
18
- * self-contained segments (aliasing scoped per segment) so their output is
19
- * pageable and parallel-decodable; pass `selfContained: false` to keep
20
- * whole-stream aliasing at the cost of random access.
24
+ * self-contained output — aliasing scoped per root element — so segments are
25
+ * pageable and parallel-decodable and an element's bytes depend on the element
26
+ * alone; pass `selfContained: false` to keep whole-stream aliasing at the cost
27
+ * of random access.
21
28
  */
22
29
  import { type EastTypeValue } from "../../../type_of_type.js";
23
- import type { EastType, ValueTypeOf } from "../../../types.js";
30
+ import type { ArrayType, DictType, EastType, SetType, ValueTypeOf } from "../../../types.js";
31
+ import { BufferWriter } from "../../binary-utils.js";
24
32
  import { SourceMap } from "../../../location.js";
25
33
  import { type Beast2DecodeOptions } from "../shared.js";
26
34
  import { type Beast2Codec } from "./frames.js";
27
35
  import { type Beast2SyncRangeReader } from "./range.js";
36
+ import { type Beast2ManifestSource } from "./manifest.js";
28
37
  /** Options accepted by {@link Beast2Writer} and {@link encodeBeast2SegmentsFor}. */
29
38
  export type Beast2WriterOptions = {
30
39
  /** Per-frame codec. Defaults to `"deflate"`. */
31
40
  codec?: Beast2Codec;
32
- /** Scope aliasing per segment so the output is pageable and segments decode
33
- * independently. Defaults to `true`. */
41
+ /** Scope aliasing per root element, so segments decode independently and an
42
+ * element's bytes never depend on which objects its neighbours share: the
43
+ * same collection encodes to the same bytes however it was built, and an
44
+ * encoded element can move between segments by byte copy. Defaults to
45
+ * `true`. */
34
46
  selfContained?: boolean;
35
47
  /** Write the trailing index + footer at {@link Beast2Writer.finish}.
36
48
  * Defaults to `true`. */
@@ -46,14 +58,10 @@ export type Beast2WriterOptions = {
46
58
  /**
47
59
  * Deflate frames on worker threads (issue #763). Defaults to `false`.
48
60
  *
49
- * The bytes are identical either way — frames reach the sink in order and
50
- * index offsets are assigned as they land — but with frames in flight the
51
- * sink has only received the ones already done. A caller that sizes its
52
- * next batch from the bytes written must therefore read
53
- * {@link Beast2Writer.emittedBounds} rather than count sink bytes, or its
54
- * segmentation would depend on thread timing. The pool has one worker per
55
- * CPU the process may use, at most 32 — a writer keeps two frames per worker
56
- * in flight, and throughput flattens well before that. Node only; elsewhere,
61
+ * The bytes are identical either way: frames reach the sink in order, and
62
+ * index offsets are assigned as they land. The pool has one worker per CPU
63
+ * the process may use, at most 32 — a writer keeps two frames per worker in
64
+ * flight, and throughput flattens well before that. Node only; elsewhere,
57
65
  * and on a single CPU, the writer frames inline.
58
66
  */
59
67
  parallel?: boolean;
@@ -68,6 +76,10 @@ export type Beast2WriterOptions = {
68
76
  * {@link finish} appends the terminator (plus index and footer by default),
69
77
  * so the byte stream is append-only end to end.
70
78
  *
79
+ * Where the segments fall is the caller's choice here. A collection that is
80
+ * stored is written through {@link Beast2ElementWriter} instead, which cuts
81
+ * where the content-defined rule says, so equal values store as equal bytes.
82
+ *
71
83
  * @example
72
84
  * ```ts
73
85
  * const chunks: Uint8Array[] = [];
@@ -84,7 +96,6 @@ export declare class Beast2Writer<T extends EastType = EastType> {
84
96
  segments: number;
85
97
  private readonly kind;
86
98
  private readonly sink;
87
- private readonly codec;
88
99
  private readonly selfContained;
89
100
  private readonly withIndex;
90
101
  private readonly ctx;
@@ -95,15 +106,9 @@ export declare class Beast2Writer<T extends EastType = EastType> {
95
106
  private hasLast;
96
107
  private bytesWritten;
97
108
  private finished;
98
- private readonly parallel;
99
- /** `undefined` until decided; `null` when frames are written inline. */
100
- private pool;
101
- private logicalWritten;
102
- /** Frames submitted to the pool and not yet on the sink, in order. */
103
- private readonly inflight;
104
- private inflightLogical;
105
- /** {@link settle} calls that found frames in flight. */
106
- private settlesInflight;
109
+ /** Frames each segment and puts it on the sink as it lands, recording its
110
+ * index entry there. */
111
+ private readonly frames;
107
112
  /**
108
113
  * @param type - the collection type this stream holds (Array/Set/Dict)
109
114
  * @param sink - receives output bytes as they are produced
@@ -133,37 +138,34 @@ export declare class Beast2Writer<T extends EastType = EastType> {
133
138
  */
134
139
  write(batch: ValueTypeOf<T>): void;
135
140
  /**
136
- * Brackets the total bytes the writer will have passed to its sink once
137
- * every in-flight frame lands.
141
+ * Writes one root segment from elements that are already encoded — each in
142
+ * its canonical bytes, with aliasing scoped to itself — which is how
143
+ * {@link Beast2ElementWriter} writes the segments it cuts.
144
+ *
145
+ * The elements are copied before this returns, so the caller may reuse the
146
+ * buffer. Their order is the caller's to keep: nothing here decodes them to
147
+ * check a Set or Dict's ascent.
138
148
  *
139
- * `lo` is exactly the bytes the sink has received; `hi` adds each
140
- * in-flight frame's logical bytes plus a header bound (a frame's payload
141
- * never exceeds its logical bytes). A serial writer has `lo === hi`. A
142
- * decision that is monotone in the byte count — the paged encoders' batch
143
- * refinement — is exact when it agrees at both bounds; otherwise
144
- * {@link settle} first.
149
+ * @param count - the elements (pairs, for a Dict) the bytes hold; a
150
+ * zero-count segment is skipped
151
+ * @param elements - the elements' bytes, back to back
152
+ * @throws {Error} When called after {@link finish}, or — for a parallel
153
+ * writer — when a frame worker failed (see {@link write}).
154
+ */
155
+ writeEncodedSegment(count: number, elements: Uint8Array): void;
156
+ /** Frames one segment's logical bytes — inline, or on the frame pool — and
157
+ * records its index entry as its frame lands. */
158
+ private frameSegment;
159
+ /**
160
+ * Waits for every in-flight frame and passes it to the sink, so the sink
161
+ * holds every segment written so far. A writer about to go quiet then holds
162
+ * nothing on the pool, which lets an idle pool retire its workers. A no-op
163
+ * for a serial writer.
145
164
  *
146
- * @returns the bounds, in bytes
165
+ * @throws {Error} For a parallel writer, when an in-flight frame's worker
166
+ * failed or stopped responding (see {@link write}).
147
167
  */
148
- emittedBounds(): {
149
- lo: number;
150
- hi: number;
151
- };
152
- /** Waits for every in-flight frame and passes it to the sink, after which
153
- * {@link emittedBounds} is exact. A no-op for a serial writer. */
154
168
  settle(): void;
155
- /** The pool to frame on — decided once a parallel writer has produced
156
- * enough bytes to be worth it. While frames are in flight the writer keeps
157
- * the pool they are on, so frames cannot interleave out of order; with none
158
- * in flight it follows the process's current pool — a new one after an idle
159
- * pool retired its workers, `null` once a pool has lost a worker — so a
160
- * writer never submits to terminated workers. A writer demoted to inline
161
- * framing stays inline. */
162
- private poolFor;
163
- /** Passes the done frames at the head of the in-flight queue to the sink,
164
- * in order, assigning index offsets as they land; blocks until at least
165
- * `minimum` have been passed (`Infinity` settles the queue). */
166
- private appendFrames;
167
169
  /**
168
170
  * Terminates the stream: writes the terminator frame and, unless disabled,
169
171
  * the index and footer. Idempotent.
@@ -188,31 +190,186 @@ export declare class Beast2Writer<T extends EastType = EastType> {
188
190
  * @throws {TypeError} When `type` is not an Array, Set or Dict type.
189
191
  */
190
192
  export declare function encodeBeast2SegmentsFor<T extends EastType>(type: T | EastTypeValue, options?: Beast2WriterOptions): (batches: Iterable<ValueTypeOf<T>>) => Uint8Array;
191
- /** Default element cap per segment for {@link encodeBeast2PagedFor}. Small
192
- * enough that one segment decodes cheaply, large enough that frames stay far
193
- * above the compression threshold and per-segment overhead (frame header +
194
- * index entry) is negligible. */
195
- export declare const BEAST2_PAGED_BATCH_DEFAULT = 1000;
196
- /** Default wire-byte target per segment for {@link encodeBeast2PagedFor}.
197
- * Wide rows would otherwise make element-capped segments arbitrarily large —
198
- * and a paging reader decodes whole segments, so segment size IS the random-
199
- * access cost. Batching adapts toward this target from measured output. */
200
- export declare const BEAST2_PAGED_TARGET_BYTES_DEFAULT: number;
201
- /** The probe batch that seeds the byte-adaptive batching — small, so one
202
- * pathologically wide first batch cannot blow past the target unmeasured.
203
- * Exported so every writer of a collection blob seeds the same way: an
204
- * emit sink that opened at the element cap instead segmented a wide-rowed
205
- * value differently from this encoder, giving one value two hashes. */
206
- export declare const BEAST2_PAGED_PROBE_BATCH = 16;
193
+ /** An element of a collection type as {@link Beast2ElementWriter.add} takes
194
+ * it: an Array or Set element, or a Dict's `[key, value]` pair. */
195
+ export type Beast2ElementOf<T> = T extends DictType<infer K, infer V> ? [ValueTypeOf<K>, ValueTypeOf<V>] : T extends SetType<infer E> ? ValueTypeOf<E> : T extends ArrayType<infer E> ? ValueTypeOf<E> : unknown;
196
+ /** Options accepted by {@link Beast2ElementWriter}. Its blobs are always
197
+ * indexed and self-contained, so neither is an option here. */
198
+ export type Beast2ElementWriterOptions = Omit<Beast2WriterOptions, "selfContained" | "index">;
199
+ /**
200
+ * One segment of a collection as a store keeps it: a standalone blob, and what
201
+ * a manifest entry records of it.
202
+ */
203
+ export interface Beast2Segment {
204
+ /** Elements (pairs, for a Dict) in the segment. */
205
+ readonly count: number;
206
+ /** Set/Dict: the segment's first key in its canonical bare encoding
207
+ * (`encodeBeast2FenceFor`) — its fence. Array: empty. */
208
+ readonly fence: Uint8Array;
209
+ /** The segment's logical size: its elements' canonical bytes before
210
+ * compression, which is what the cut rule measures a segment by. */
211
+ readonly logicalBytes: number;
212
+ /** The segment as a standalone v5 blob: the collection's header, the
213
+ * segment's frame, the terminator, and an index of the one segment. */
214
+ readonly blob: Uint8Array;
215
+ }
216
+ /** Where a {@link Beast2ElementWriter} puts a collection written as separate
217
+ * segment blobs rather than one blob. */
218
+ export interface Beast2SegmentSink {
219
+ /**
220
+ * Receives each segment once it is written, in order.
221
+ *
222
+ * @param segment - the segment
223
+ */
224
+ segment(segment: Beast2Segment): void;
225
+ }
226
+ /**
227
+ * Builds an encoder of a collection's root elements, one at a time, each in
228
+ * its canonical bytes: aliasing is scoped to the element, so no REF reaches a
229
+ * neighbour and the element's bytes depend on it alone.
230
+ *
231
+ * @param typeValue - the collection type (Array/Set/Dict)
232
+ * @param sourceMap - the stream's source map, for function values
233
+ * @returns a function appending one element's bytes to a writer and returning
234
+ * the length of its key: a Set element's whole length, a Dict pair's key, 0
235
+ * for an Array element, which has none
236
+ * @throws {TypeError} When `typeValue` is not an Array, Set or Dict type.
237
+ * @internal
238
+ */
239
+ export declare function elementEncoderFor(typeValue: EastTypeValue, sourceMap: SourceMap | null): (element: unknown, writer: BufferWriter) => number;
240
+ /**
241
+ * The canonical writer of a collection: elements go in one at a time, in
242
+ * canonical order, and segments come out wherever the content-defined cut rule
243
+ * ({@link SegmentCutter}) places them — as one blob, or as the standalone
244
+ * segment blobs a manifest names, one at a time to a {@link Beast2SegmentSink}.
245
+ *
246
+ * Each element is encoded as it arrives, with aliasing scoped to itself, so
247
+ * its bytes depend on the element alone — and the cut rule reads nothing but
248
+ * those bytes. The blob is therefore a function of the value: whichever
249
+ * process writes a collection, in whichever runtime, and however its elements
250
+ * were produced, it writes the same bytes. That is what lets a
251
+ * content-addressed store keep an equal value once and diff two values by
252
+ * segment.
253
+ *
254
+ * Memory is one open segment. Elements that are already encoded — sorted runs,
255
+ * a merge, a re-cut — go in through {@link addEncoded}, without a decode.
256
+ *
257
+ * @example
258
+ * ```ts
259
+ * const chunks: Uint8Array[] = [];
260
+ * const type = DictType(StringType, IntegerType);
261
+ * const writer = new Beast2ElementWriter(type, (b) => chunks.push(b));
262
+ * writer.add(["a", 1n]);
263
+ * writer.add(["b", 2n]);
264
+ * writer.finish();
265
+ * decodeBeast2For(type)(Buffer.concat(chunks)); // Map { "a" => 1n, "b" => 2n }
266
+ *
267
+ * const segments: Beast2Segment[] = [];
268
+ * const split = new Beast2ElementWriter(type, { segment: (s) => segments.push(s) });
269
+ * split.add(["a", 1n]);
270
+ * split.finish();
271
+ * segments[0].blob; // segment 0 as a standalone blob, under split.header
272
+ * ```
273
+ */
274
+ export declare class Beast2ElementWriter<T extends EastType = EastType> {
275
+ private readonly kind;
276
+ /** The writer of the one blob, when that is the output. */
277
+ private readonly blob;
278
+ /** The framing of the segment blobs, when those are the output. */
279
+ private readonly frames;
280
+ private readonly head;
281
+ private readonly encodeElement;
282
+ private readonly orderCmp;
283
+ private cutter;
284
+ /** The open segment's elements, back to back. */
285
+ private readonly open;
286
+ /** Elements in the open segment. */
287
+ private count;
288
+ /** The length of the open segment's first key — its fence. */
289
+ private firstKeyLength;
290
+ private written;
291
+ private lastKey;
292
+ private hasLast;
293
+ private finished;
294
+ /**
295
+ * @param type - the collection type (Array/Set/Dict)
296
+ * @param sink - receives the blob's bytes as they are produced; or, as a
297
+ * {@link Beast2SegmentSink}, each segment as a standalone blob
298
+ * @param options - codec, source map, header prefix and parallel framing
299
+ * @throws {TypeError} When `type` is not an Array, Set or Dict type, or
300
+ * when `options.headerPrefix` is not a v5 header of exactly `type`.
301
+ */
302
+ constructor(type: T | EastTypeValue, sink: ((bytes: Uint8Array) => void) | Beast2SegmentSink, options?: Beast2ElementWriterOptions);
303
+ /** Segments written so far; the open segment is not among them until the
304
+ * cut rule closes it or {@link finish} does. */
305
+ get segments(): number;
306
+ /** The header every segment is written under — magic, type section,
307
+ * source-map section and root tag — which a manifest names as its header. */
308
+ get header(): Uint8Array;
309
+ /**
310
+ * Encodes one element and appends it to the collection.
311
+ *
312
+ * @param element - an Array or Set element, or a Dict's `[key, value]` pair
313
+ * @throws {Error} When called after {@link finish}, when a Set element or
314
+ * Dict key does not ascend strictly from the last in East order, or when
315
+ * the element cannot be encoded — which leaves the writer as it was.
316
+ */
317
+ add(element: Beast2ElementOf<T>): void;
318
+ /**
319
+ * Appends one element that is already in its canonical bytes — encoded
320
+ * with aliasing scoped to itself, as {@link add} encodes one — without
321
+ * decoding it.
322
+ *
323
+ * Order is the caller's to keep: a Set or Dict's elements must arrive
324
+ * strictly ascending, and nothing here decodes them to check.
325
+ *
326
+ * @param element - the element's canonical bytes (a Dict pair's key, then
327
+ * its value)
328
+ * @param keyLength - the length of the key at the front of `element`: a Set
329
+ * element's whole length, a Dict pair's key; ignored for an Array
330
+ * @throws {Error} When called after {@link finish}.
331
+ */
332
+ addEncoded(element: Uint8Array, keyLength: number): void;
333
+ /** Accounts for the element just appended at `start`, and when the cut rule
334
+ * starts a segment at it, writes out the segment that closes. */
335
+ private place;
336
+ /**
337
+ * Waits for every in-flight frame and passes it to the sink, so the sink
338
+ * holds every segment written so far. A no-op for a serial writer.
339
+ *
340
+ * @throws {Error} For a parallel writer, when an in-flight frame's worker
341
+ * failed or stopped responding (see {@link Beast2Writer.write}).
342
+ */
343
+ settle(): void;
344
+ /** Elements in the open segment.
345
+ * @internal */
346
+ get openCount(): number;
347
+ /** Logical bytes in the open segment.
348
+ * @internal */
349
+ get openBytes(): number;
350
+ /**
351
+ * Ends the open segment here, for a caller that knows the cut rule starts
352
+ * one at what comes next without handing it over: writes the open segment,
353
+ * and makes the next element the first of a segment.
354
+ *
355
+ * @throws {Error} When called after {@link finish}.
356
+ * @internal
357
+ */
358
+ closeSegment(): void;
359
+ /**
360
+ * Writes the open segment and — for a blob — the terminator, index and
361
+ * footer. Idempotent.
362
+ *
363
+ * @throws {Error} For a parallel writer, when an in-flight frame's worker
364
+ * failed or stopped responding (see {@link Beast2Writer.write}).
365
+ */
366
+ finish(): void;
367
+ /** Writes the open segment, whose elements are `elements`, unless it is
368
+ * empty. */
369
+ private writeSegment;
370
+ }
207
371
  /** Options accepted by {@link encodeBeast2PagedFor}. */
208
372
  export type Beast2PagedEncodeOptions = {
209
- /** Element (pair for Dict roots) cap per segment. Defaults to
210
- * {@link BEAST2_PAGED_BATCH_DEFAULT}. */
211
- batchSize?: number;
212
- /** Wire-byte target per segment — batches shrink below `batchSize` when
213
- * measured element size would exceed it. Defaults to
214
- * {@link BEAST2_PAGED_TARGET_BYTES_DEFAULT}. */
215
- targetSegmentBytes?: number;
216
373
  /** Per-frame codec. Defaults to `"deflate"`. */
217
374
  codec?: Beast2Codec;
218
375
  /** Source map for function values in the stream, written to the header. */
@@ -220,8 +377,8 @@ export type Beast2PagedEncodeOptions = {
220
377
  };
221
378
  /**
222
379
  * Builds a curried paged encoder: `encode(value)` writes one whole collection
223
- * value as a segmented, self-contained, indexed v5 blob — `batchSize` elements
224
- * per segment.
380
+ * value as a segmented, self-contained, indexed v5 blob, cut by the
381
+ * content-defined rule through {@link Beast2ElementWriter}.
225
382
  *
226
383
  * The write-side sibling of {@link openBeast2PagesFor}: a blob written this
227
384
  * way supports random access ({@link Beast2Pages.segment} /
@@ -232,7 +389,7 @@ export type Beast2PagedEncodeOptions = {
232
389
  * bytes), so content-addressed stores hash the two forms differently.
233
390
  *
234
391
  * @param type - the collection type (Array/Set/Dict)
235
- * @param options - batch size, codec, and source map options
392
+ * @param options - codec and source map options
236
393
  * @returns a function encoding a collection value to an indexed v5 blob
237
394
  * @throws {TypeError} When `type` is not an Array, Set or Dict type.
238
395
  */
@@ -287,12 +444,17 @@ export declare class Beast2Pages<T extends EastType = EastType> {
287
444
  /** Whether segments are independently decodable. */
288
445
  readonly selfContained: boolean;
289
446
  private readonly source;
447
+ /** The manifest behind this reader, when the segments are separate blobs
448
+ * rather than runs of one. */
449
+ private readonly manifestSource;
290
450
  /** Wire offset of the terminator frame — where the last segment's frame ends. */
291
451
  private readonly segmentsEnd;
292
452
  private readonly indexData;
293
453
  private readonly kind;
294
454
  private readonly typeValue;
295
- private readonly sourceMap;
455
+ /** The stream's source map. For a manifest it starts empty and is replaced
456
+ * by the first segment's own header map, which every segment shares. */
457
+ private sourceMap;
296
458
  private readonly decodeSegment;
297
459
  private readonly platform;
298
460
  private readonly cumulative;
@@ -300,6 +462,8 @@ export declare class Beast2Pages<T extends EastType = EastType> {
300
462
  /** First key/element of each segment, in segment order (Set/Dict only). */
301
463
  private fences;
302
464
  private fenceDec;
465
+ /** The decoder of a manifest's stored fence bytes, built on first use. */
466
+ private manifestFenceDec;
303
467
  /** Decoded segments kept hot for the element and keyed read paths, keyed
304
468
  * by segment index in LRU order (mirrors east-c's `B2V5_PAGES_LRU`).
305
469
  * Only {@link element} and {@link get} route through it — the public
@@ -309,14 +473,19 @@ export declare class Beast2Pages<T extends EastType = EastType> {
309
473
  * container walk. */
310
474
  private readonly segmentCache;
311
475
  /** @internal Use {@link openBeast2PagesFor}. */
312
- constructor(source: Uint8Array | Beast2SyncRangeReader, typeValue: EastTypeValue, options?: Beast2DecodeOptions);
476
+ constructor(source: Uint8Array | Beast2SyncRangeReader | Beast2ManifestSource, typeValue: EastTypeValue, options?: Beast2DecodeOptions);
313
477
  /** Number of segments in the blob. */
314
478
  get segmentCount(): number;
315
479
  /** Reads segment `i`'s frame — exactly its wire bytes, from its index
316
480
  * offset to the next segment's (or the terminator) — and opens its
317
481
  * logical chunk. The only place segment bytes are fetched, so a ranged
318
- * source touches one frame per decode. */
482
+ * source touches one frame per decode, and a manifest source touches one
483
+ * segment blob. */
319
484
  private frameReader;
485
+ /** Segment `i`'s frame out of its own standalone blob: the blob's geometry
486
+ * names exactly one frame, and its header carries the source map every
487
+ * segment of this collection shares. */
488
+ private manifestFrameReader;
320
489
  /**
321
490
  * Decodes one segment by index.
322
491
  *
@@ -386,7 +555,7 @@ export declare class Beast2Pages<T extends EastType = EastType> {
386
555
  * Rows address stream order — for Array roots the element order, for
387
556
  * Set/Dict roots the canonical East (key) order, since segments are
388
557
  * disjoint ascending ranges. Returns a collection value of the root kind
389
- * holding the window (an array, `Set`, or `Map` in that order).
558
+ * holding the window (an array, `SortedSet`, or `SortedMap` in that order).
390
559
  *
391
560
  * Clamps like `Array.prototype.slice`: a window past the end returns the
392
561
  * available tail (or an empty collection), never throws for being short.
@@ -418,6 +587,23 @@ export declare class Beast2Pages<T extends EastType = EastType> {
418
587
  * self-contained, or its segment fences do not ascend.
419
588
  */
420
589
  segmentFor(key: ValueTypeOf<T> extends Map<infer K, any> ? K : ValueTypeOf<T> extends Set<infer E> ? E : never): number;
590
+ /**
591
+ * Decodes one segment of a Set or Dict for a walk in canonical order
592
+ * (Set/Dict roots only), as east-c's paged loops read one: the fences are
593
+ * probed and verified to ascend strictly first, once per reader, and the
594
+ * segment's last key is checked to fall below the next segment's fence. A
595
+ * walk from segment 0 over a blob that violates the canonical-order contract
596
+ * therefore fails at the first segment it reads: before any element when the
597
+ * fences are out of order, and before the elements of the first segment
598
+ * that overlaps the next.
599
+ *
600
+ * @param i - zero-based segment index
601
+ * @returns the segment's decoded collection
602
+ * @throws {Error} When the root is an Array, `i` is out of range, the blob
603
+ * is not self-contained, or the blob violates the canonical-order
604
+ * contract.
605
+ */
606
+ segmentDisjoint(i: number): ValueTypeOf<T>;
421
607
  /**
422
608
  * Looks up one Set element or Dict value by key (Set/Dict roots only):
423
609
  * binary-searches the verified segment fences for the only segment whose
@@ -435,14 +621,15 @@ export declare class Beast2Pages<T extends EastType = EastType> {
435
621
  * Builds a curried pages opener: `open(source)` parses the header, footer and
436
622
  * index once and returns a {@link Beast2Pages} for random access.
437
623
  *
438
- * `source` is the whole blob, or a {@link Beast2SyncRangeReader} over it —
439
- * then only the tail, the head and the segments actually read are ever
440
- * fetched.
624
+ * `source` is the whole blob, a {@link Beast2SyncRangeReader} over it — then
625
+ * only the tail, the head and the segments actually read are ever fetched —
626
+ * or a {@link Beast2ManifestSource}, whose segments are separate blobs and
627
+ * whose fences are already decoded, so a keyed read touches exactly one.
441
628
  *
442
629
  * @param type - the collection type (Array/Set/Dict)
443
630
  * @param options - decode options (platform functions for decoded functions)
444
631
  * @returns a function opening a blob for paged reads
445
632
  * @throws {TypeError} When `type` is not an Array, Set or Dict type.
446
633
  */
447
- export declare function openBeast2PagesFor<T extends EastType>(type: T | EastTypeValue, options?: Beast2DecodeOptions): (source: Uint8Array | Beast2SyncRangeReader) => Beast2Pages<T>;
634
+ export declare function openBeast2PagesFor<T extends EastType>(type: T | EastTypeValue, options?: Beast2DecodeOptions): (source: Uint8Array | Beast2SyncRangeReader | Beast2ManifestSource) => Beast2Pages<T>;
448
635
  //# sourceMappingURL=stream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/stream.ts"],"names":[],"mappings":"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"}