@elaraai/east 1.0.79 → 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
@@ -3,28 +3,52 @@
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
5
  /**
6
- * The parallel frame writer (issue #763), held to the serial algorithm.
6
+ * The parallel frame writer (issue #763), held to the inline writer.
7
7
  *
8
- * A pooled writer puts the same frames on the wire in the same order, so the
9
- * one thing that could move is the SEGMENTATION: the paged encoder sizes each
10
- * batch from the bytes emitted so far, and with frames still deflating on
11
- * workers those bytes are only known within bounds. The encoder decides at
12
- * both bounds and settles when they disagree. The oracle below is the serial
13
- * algorithm as it stood before #763 — a writer that never pools, refined from
14
- * the bytes its sink actually received — and every case must match it byte
15
- * for byte: at a target that pins the element cap (bounds always agree) and at
16
- * targets small enough that the refinement is live on every batch (bounds
17
- * often disagree).
8
+ * A pooled writer deflates frames on worker threads and puts them on the wire
9
+ * in submission order, assigning index offsets as they land. Where segments
10
+ * fall is decided from the elements alone, never from bytes emitted, so the
11
+ * oracle is simply the same elements through a writer that never pools: every
12
+ * case must match it byte for byte, across a pool's retirement and a worker's
13
+ * loss. The pool's peak memory is pinned at two output sizes (#841), and a
14
+ * worker's failure never ends its process.
18
15
  *
19
16
  * Throughput is printed under `EAST_POOL_BENCH=1`, never asserted.
20
17
  */
21
18
  import { describe, test } from "node:test";
22
19
  import assert from "node:assert/strict";
20
+ import { spawnSync } from "node:child_process";
21
+ import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
22
+ import { tmpdir } from "node:os";
23
+ import { join } from "node:path";
23
24
  import { ArrayType, DictType, IntegerType, StringType } from "../../../types.js";
24
25
  import { compareFor } from "../../../comparison.js";
25
26
  import { SortedMap } from "../../../index.js";
26
- import { Beast2Writer, BEAST2_PAGED_BATCH_DEFAULT, decodeBeast2For, encodeBeast2PagedFor, } from "../index.js";
27
+ import { Beast2ElementWriter, Beast2Writer, decodeBeast2For, encodeBeast2PagedFor, } from "../index.js";
28
+ import { BufferWriter } from "../../binary-utils.js";
27
29
  import { configureFramePool, framePool } from "./frame-pool.js";
30
+ import { DeflateScratch } from "./deflate.js";
31
+ import { FRAME_HEADER_MAX, writeFrame, writeFrameInto } from "./frames.js";
32
+ /** A pooled writer framing `count` rows of the shape #841 measured: the child
33
+ * prints its peak resident memory. It runs from a file: workers inherit the
34
+ * process's options, and an `--input-type` among them stops a worker loading
35
+ * its own file. */
36
+ const POOL_CHILD = `
37
+ import { readFileSync } from 'node:fs';
38
+ const [beast2Url, typesUrl, count] = process.argv.slice(2);
39
+ const { Beast2ElementWriter, configureFramePool } = await import(beast2Url);
40
+ const { DictType, IntegerType, StringType, StructType } = await import(typesUrl);
41
+ // Two workers, as a runner granted two threads has.
42
+ configureFramePool({ workers: 2 });
43
+ const type = DictType(StringType, StructType({ id: IntegerType, name: StringType }));
44
+ const writer = new Beast2ElementWriter(type, () => {}, { parallel: true });
45
+ for (let i = 0; i < Number(count); i++) {
46
+ writer.add(['key' + String(i).padStart(9, '0'), { id: BigInt(i), name: 'name ' + i }]);
47
+ }
48
+ writer.finish();
49
+ const peak = /VmHWM:\\s+(\\d+) kB/.exec(readFileSync('/proc/self/status', 'utf8'));
50
+ console.log(JSON.stringify({ peakKiB: Number(peak[1]) }));
51
+ `;
28
52
  /** xorshift32 — a fixed stream, so a failure reproduces exactly. */
29
53
  function rng(seed) {
30
54
  let s = seed >>> 0 || 1;
@@ -37,8 +61,8 @@ function rng(seed) {
37
61
  return s;
38
62
  };
39
63
  }
40
- /** Strings of widely varying width — the running average moves, so the
41
- * refinement is exercised. Well past the pool's 8 MiB start threshold. */
64
+ /** Strings of widely varying width, well past the pool's 8 MiB start
65
+ * threshold in total. */
42
66
  function strings(n, seed) {
43
67
  const next = rng(seed);
44
68
  const out = new Array(n);
@@ -51,39 +75,14 @@ function strings(n, seed) {
51
75
  }
52
76
  return out;
53
77
  }
54
- /** The serial paged encode exactly as it stood before #763. */
55
- function serialPaged(type, items, makeBatch, target) {
78
+ /** The elements through an element writer that never pools. */
79
+ function inlineEncode(type, elements) {
56
80
  const chunks = [];
57
- let bytes = 0;
58
- const probeN = Math.min(16, items.length);
59
- let next = BEAST2_PAGED_BATCH_DEFAULT;
60
- if (probeN > 0) {
61
- let scratch = 0;
62
- const probe = new Beast2Writer(type, (b) => { scratch += b.length; });
63
- const header = scratch;
64
- probe.write(makeBatch(items.slice(0, probeN)));
65
- const avg = Math.max(1, (scratch - header) / probeN);
66
- next = Math.max(1, Math.min(BEAST2_PAGED_BATCH_DEFAULT, Math.floor(target / avg)));
67
- }
68
- const writer = new Beast2Writer(type, (b) => { chunks.push(b); bytes += b.length; });
69
- const header = bytes;
70
- let written = 0;
71
- for (let i = 0; i < items.length;) {
72
- const j = Math.min(items.length, i + next);
73
- writer.write(makeBatch(items.slice(i, j)));
74
- written += j - i;
75
- i = j;
76
- const avg = Math.max(1, (bytes - header) / written);
77
- next = Math.max(1, Math.min(BEAST2_PAGED_BATCH_DEFAULT, Math.floor(target / avg)));
78
- }
81
+ const writer = new Beast2ElementWriter(type, (b) => { chunks.push(b); });
82
+ for (const element of elements)
83
+ writer.add(element);
79
84
  writer.finish();
80
- const out = new Uint8Array(bytes);
81
- let pos = 0;
82
- for (const c of chunks) {
83
- out.set(c, pos);
84
- pos += c.length;
85
- }
86
- return out;
85
+ return concat(chunks);
87
86
  }
88
87
  /** Resolves after `ms` milliseconds. */
89
88
  function sleep(ms) {
@@ -111,31 +110,39 @@ function firstDifference(a, b) {
111
110
  return a.length === b.length ? -1 : n;
112
111
  }
113
112
  describe("beast2 v5 parallel frame writer", () => {
114
- const TARGETS = [2 * 1024 * 1024, 64 * 1024, 4096];
115
- test("a pooled Array encode is byte-identical to the serial algorithm", () => {
113
+ test("a pooled Array encode is byte-identical to the inline one", () => {
116
114
  const items = strings(24_000, 0x5eed);
117
115
  const type = ArrayType(StringType);
118
- for (const target of TARGETS) {
119
- const pooled = encodeBeast2PagedFor(type, { targetSegmentBytes: target })(items);
120
- const serial = serialPaged(type, items, (batch) => batch, target);
121
- assert.equal(firstDifference(pooled, serial), -1, `target ${target}: pooled and serial bytes differ`);
122
- }
116
+ assert.equal(firstDifference(encodeBeast2PagedFor(type)(items), inlineEncode(type, items)), -1, "pooled and inline bytes differ");
123
117
  });
124
- test("a pooled Dict encode is byte-identical to the serial algorithm, and decodes", () => {
118
+ test("a pooled Dict encode is byte-identical to the inline one, and decodes", () => {
125
119
  const values = strings(20_000, 0xd1c7);
126
120
  const cmp = compareFor(IntegerType);
127
121
  const entries = values.map((v, i) => [BigInt(i * 3), v]);
128
122
  const type = DictType(IntegerType, StringType);
129
- const value = new SortedMap(entries, cmp);
130
- for (const target of TARGETS) {
131
- const pooled = encodeBeast2PagedFor(type, { targetSegmentBytes: target })(value);
132
- const serial = serialPaged(type, entries, (batch) => new Map(batch), target);
133
- assert.equal(firstDifference(pooled, serial), -1, `target ${target}: pooled and serial bytes differ`);
134
- if (target === TARGETS[0]) {
135
- const decoded = decodeBeast2For(type)(pooled);
136
- assert.equal(decoded.size, entries.length);
137
- assert.equal(decoded.get(3n * 777n), values[777]);
138
- }
123
+ const pooled = encodeBeast2PagedFor(type)(new SortedMap(entries, cmp));
124
+ assert.equal(firstDifference(pooled, inlineEncode(type, entries)), -1, "pooled and inline bytes differ");
125
+ const decoded = decodeBeast2For(type)(pooled);
126
+ assert.equal(decoded.size, entries.length);
127
+ assert.equal(decoded.get(3n * 777n), values[777]);
128
+ });
129
+ test("a pooled writer hands over the segments an inline one does", () => {
130
+ const items = strings(24_000, 0x5e95);
131
+ const type = ArrayType(StringType);
132
+ const segmentsOf = (parallel) => {
133
+ const segments = [];
134
+ const writer = new Beast2ElementWriter(type, { segment: (segment) => { segments.push(segment); } }, { parallel });
135
+ for (const item of items)
136
+ writer.add(item);
137
+ writer.finish();
138
+ return segments;
139
+ };
140
+ const pooled = segmentsOf(true);
141
+ const inline = segmentsOf(false);
142
+ assert.equal(pooled.length, inline.length);
143
+ for (let i = 0; i < inline.length; i++) {
144
+ assert.equal(firstDifference(pooled[i].blob, inline[i].blob), -1, `segment ${i}`);
145
+ assert.equal(pooled[i].count, inline[i].count);
139
146
  }
140
147
  });
141
148
  test("the pool is created on a multi-core Node host", () => {
@@ -150,7 +157,7 @@ describe("beast2 v5 parallel frame writer", () => {
150
157
  const type = ArrayType(StringType);
151
158
  framePool(); // start-up is once per process; keep it out of the timing
152
159
  const t0 = performance.now();
153
- const serial = serialPaged(type, items, (batch) => batch, 2 * 1024 * 1024);
160
+ const serial = inlineEncode(type, items);
154
161
  const t1 = performance.now();
155
162
  const pooled = encodeBeast2PagedFor(type)(items);
156
163
  const t2 = performance.now();
@@ -168,16 +175,15 @@ describe("beast2 v5 parallel frame writer", () => {
168
175
  try {
169
176
  const type = ArrayType(StringType);
170
177
  const items = strings(24_000, 0x1d1e);
171
- const target = 64 * 1024;
172
- const serial = serialPaged(type, items, (batch) => batch, target);
173
- assert.equal(firstDifference(encodeBeast2PagedFor(type, { targetSegmentBytes: target })(items), serial), -1);
178
+ const serial = inlineEncode(type, items);
179
+ assert.equal(firstDifference(encodeBeast2PagedFor(type)(items), serial), -1);
174
180
  // The check runs on a timer, so wait for the retirement rather than for
175
181
  // a fixed time — a loaded host delays timers.
176
182
  const deadline = Date.now() + 10_000;
177
183
  while (framePool() === before && Date.now() < deadline)
178
184
  await sleep(25);
179
185
  assert.notEqual(framePool(), before, "the idle pool retired and a new one started");
180
- assert.equal(firstDifference(encodeBeast2PagedFor(type, { targetSegmentBytes: target })(items), serial), -1, "the new pool writes the same bytes");
186
+ assert.equal(firstDifference(encodeBeast2PagedFor(type)(items), serial), -1, "the new pool writes the same bytes");
181
187
  }
182
188
  finally {
183
189
  configureFramePool(previous);
@@ -228,6 +234,128 @@ describe("beast2 v5 parallel frame writer", () => {
228
234
  configureFramePool(previous);
229
235
  }
230
236
  });
237
+ test("a runner's grant caps the pool: one thread frames inline, two start two workers", (t) => {
238
+ if (framePool() === null) {
239
+ t.skip("no frame pool on this host — frames are written inline");
240
+ return;
241
+ }
242
+ const type = ArrayType(StringType);
243
+ const items = strings(24_000, 0x9a7e);
244
+ const serial = inlineEncode(type, items);
245
+ const previous = configureFramePool({ workers: 1 });
246
+ try {
247
+ assert.equal(framePool(), null, "a grant of one thread frames inline");
248
+ assert.equal(firstDifference(encodeBeast2PagedFor(type)(items), serial), -1);
249
+ configureFramePool({ workers: 2 });
250
+ assert.equal(framePool()?.workers, 2, "a grant of two starts two workers");
251
+ assert.equal(firstDifference(encodeBeast2PagedFor(type)(items), serial), -1);
252
+ }
253
+ finally {
254
+ configureFramePool(previous);
255
+ }
256
+ });
257
+ test("a frame written in place is the frame writeFrame writes", () => {
258
+ const scratch = new DeflateScratch();
259
+ const next = rng(0xf7a3);
260
+ for (const logical of [
261
+ new Uint8Array(0),
262
+ new Uint8Array(63).fill(1),
263
+ new Uint8Array(64).fill(1),
264
+ new Uint8Array(4096).map(() => next() & 0xff),
265
+ new TextEncoder().encode(strings(2_000, 0xf00d).join("")),
266
+ ]) {
267
+ for (const codec of ["none", "deflate"]) {
268
+ const expected = new BufferWriter();
269
+ writeFrame(expected, logical, codec);
270
+ const target = new Uint8Array(logical.length + FRAME_HEADER_MAX);
271
+ const length = writeFrameInto(target, logical, codec, scratch);
272
+ assert.equal(Buffer.compare(target.subarray(0, length), expected.toUint8Array()), 0, `${logical.length} bytes, ${codec}`);
273
+ }
274
+ }
275
+ });
276
+ test("holds the frames in flight and nothing more: the same peak at three times the output", { skip: process.platform === "linux" ? false : "the peak is read from /proc" }, (t) => {
277
+ if (framePool() === null) {
278
+ t.skip("no frame pool on this host — frames are written inline");
279
+ return;
280
+ }
281
+ const beast2Url = new URL("../index.js", import.meta.url).href;
282
+ const typesUrl = new URL("../../../types.js", import.meta.url).href;
283
+ const dir = mkdtempSync(join(tmpdir(), "east-frame-pool-"));
284
+ const script = join(dir, "child.mjs");
285
+ writeFileSync(script, POOL_CHILD);
286
+ const peakKiB = (count) => {
287
+ const child = spawnSync(process.execPath, [
288
+ // A young generation that never grows, so what differs is what the
289
+ // pool holds (see e3-core's door-memory spec).
290
+ "--min-semi-space-size=1", "--max-semi-space-size=1",
291
+ script, beast2Url, typesUrl, String(count),
292
+ ], { encoding: "utf8" });
293
+ if (child.status !== 0) {
294
+ throw new Error(`the child ended ${child.status ?? child.signal}: ${child.stderr.slice(-2_000)}`);
295
+ }
296
+ return JSON.parse(child.stdout.trim().split("\n").pop()).peakKiB;
297
+ };
298
+ try {
299
+ // Both well past the rows the writer frames inline before it starts
300
+ // the pool, and the workers' first frames. A pool that held what it
301
+ // framed grew by 55 MiB between them (#841).
302
+ const small = peakKiB(400_000);
303
+ const large = peakKiB(1_200_000);
304
+ const peaks = `${Math.round(small / 1024)} MiB framing 400K rows, ${Math.round(large / 1024)} MiB framing 1.2M`;
305
+ t.diagnostic(peaks);
306
+ assert.ok(large - small < 16 * 1024, peaks);
307
+ }
308
+ finally {
309
+ rmSync(dir, { recursive: true, force: true });
310
+ }
311
+ });
312
+ test("a process started with --input-type frames on the pool", (t) => {
313
+ if (framePool() === null) {
314
+ t.skip("no frame pool on this host — frames are written inline");
315
+ return;
316
+ }
317
+ // Workers that inherited the option could not load their file.
318
+ const logical = new Uint8Array(64 * 1024).fill(0x61);
319
+ const child = spawnSync(process.execPath, ["--input-type=module", "-e", `
320
+ const { configureFramePool, framePool } = await import(${JSON.stringify(new URL("./frame-pool.js", import.meta.url).href)});
321
+ configureFramePool({ workers: 2 });
322
+ const pool = framePool();
323
+ const frame = pool?.submit(new Uint8Array(${logical.length}).fill(0x61), 'deflate').take();
324
+ console.log(JSON.stringify({ pooled: pool !== null, bytes: frame?.length ?? 0 }));
325
+ `], { encoding: "utf8" });
326
+ assert.equal(child.status, 0, child.stderr.slice(-2_000));
327
+ const expected = new BufferWriter();
328
+ writeFrame(expected, logical, "deflate");
329
+ assert.deepEqual(JSON.parse(child.stdout), { pooled: true, bytes: expected.size });
330
+ });
331
+ test("a worker that fails abandons the pool instead of ending its process", (t) => {
332
+ if (framePool() === null) {
333
+ t.skip("no frame pool on this host — frames are written inline");
334
+ return;
335
+ }
336
+ // Every worker the child's pool starts reports it loaded, then throws.
337
+ const failing = "import { workerData } from 'node:worker_threads';" +
338
+ " const cells = new Int32Array(workerData.ready);" +
339
+ " Atomics.store(cells, workerData.index, 1); Atomics.notify(cells, workerData.index);" +
340
+ " throw new Error('a worker that fails');";
341
+ const child = spawnSync(process.execPath, ["--input-type=module", "-e", `
342
+ const threads = process.getBuiltinModule('node:worker_threads');
343
+ const Worker = threads.Worker;
344
+ threads.Worker = class extends Worker {
345
+ constructor(_script, options) {
346
+ super(new URL('data:text/javascript,' + encodeURIComponent(${JSON.stringify(failing)})), options);
347
+ }
348
+ };
349
+ const { configureFramePool, framePool } = await import(${JSON.stringify(new URL("./frame-pool.js", import.meta.url).href)});
350
+ configureFramePool({ workers: 2 });
351
+ const started = framePool() !== null;
352
+ const deadline = Date.now() + 10_000;
353
+ while (framePool() !== null && Date.now() < deadline) await new Promise((resolve) => setTimeout(resolve, 25));
354
+ console.log(JSON.stringify({ started, abandoned: framePool() === null }));
355
+ `], { encoding: "utf8" });
356
+ assert.equal(child.status, 0, child.stderr.slice(-2_000));
357
+ assert.deepEqual(JSON.parse(child.stdout), { started: true, abandoned: true });
358
+ });
231
359
  // LAST in this file: losing a worker abandons the process's pool, so every
232
360
  // encode after it in this process frames inline.
233
361
  test("a lost frame worker fails its frame instead of hanging, and the process frames inline after", async (t) => {
@@ -279,9 +407,8 @@ describe("beast2 v5 parallel frame writer", () => {
279
407
  inline.write(batch);
280
408
  inline.finish();
281
409
  assert.equal(firstDifference(concat(survivorChunks), concat(inlineChunks)), -1, "a writer that outlives the loss writes the inline bytes");
282
- // ...and a new encode writes exactly the serial bytes.
283
- const target = 64 * 1024;
284
- assert.equal(firstDifference(encodeBeast2PagedFor(type, { targetSegmentBytes: target })(items), serialPaged(type, items, (batch) => batch, target)), -1, "inline framing after the loss is byte-identical to the serial algorithm");
410
+ // ...and a new encode writes exactly the inline bytes.
411
+ assert.equal(firstDifference(encodeBeast2PagedFor(type)(items), inlineEncode(type, items)), -1, "framing after the loss is byte-identical to the inline writer");
285
412
  });
286
413
  });
287
414
  //# sourceMappingURL=frame-pool.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"frame-pool.spec.js","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/frame-pool.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-pool.spec.js","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/frame-pool.spec.ts"],"names":[],"mappings":"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"}
@@ -5,36 +5,46 @@
5
5
  /**
6
6
  * Beast2 v5 frame worker — one of {@link framePool}'s threads.
7
7
  *
8
- * Receives a segment's logical bytes in a `SharedArrayBuffer`, writes the frame
9
- * with the same `writeFrame` the inline writer uses (so the bytes cannot
10
- * differ), copies it into the job's output buffer, and flips the job's status
11
- * cell. Only bytes cross the thread boundary — never an East value.
8
+ * Frames a segment's logical bytes in one of its slots — `SharedArrayBuffer`s
9
+ * the pool hands it once and reuses — with the frame writer the inline writer
10
+ * uses, so the bytes cannot differ, and flips the slot's status cell. Only
11
+ * bytes cross the thread boundary — never an East value.
12
+ *
13
+ * A job allocates no buffer: the frame is written into the slot's output, and
14
+ * the deflate works in one scratch this worker keeps. A worker's garbage
15
+ * collector rarely runs, so a buffer allocated per frame would be held until it
16
+ * did (#841).
12
17
  *
13
18
  * @packageDocumentation
14
19
  */
15
20
  import { parentPort, workerData } from "node:worker_threads";
16
- import { BufferWriter } from "../../binary-utils.js";
17
21
  import { FRAME_STATUS } from "./frame-pool.js";
18
- import { writeFrame } from "./frames.js";
22
+ import { DeflateScratch } from "./deflate.js";
23
+ import { writeFrameInto } from "./frames.js";
19
24
  // Report that this worker loaded — the pool hands itself out only once every
20
25
  // worker has (see `framePool`).
21
26
  const { ready, index } = workerData;
22
27
  const readyCells = new Int32Array(ready);
23
28
  Atomics.store(readyCells, index, 1);
24
29
  Atomics.notify(readyCells, index);
30
+ const slots = new Map();
31
+ const scratch = new DeflateScratch();
25
32
  parentPort?.on("message", (job) => {
26
- const status = new Int32Array(job.status);
33
+ if (job.buffers !== undefined) {
34
+ slots.set(job.slot, {
35
+ input: new Uint8Array(job.buffers.input),
36
+ output: new Uint8Array(job.buffers.output),
37
+ status: new Int32Array(job.buffers.status),
38
+ });
39
+ }
40
+ const slot = slots.get(job.slot);
27
41
  try {
28
- const frame = new BufferWriter();
29
- writeFrame(frame, new Uint8Array(job.input, 0, job.length), job.codec);
30
- const bytes = frame.toUint8Array();
31
- new Uint8Array(job.output).set(bytes);
32
- Atomics.store(status, 1, bytes.length);
33
- Atomics.store(status, 0, FRAME_STATUS.DONE);
42
+ Atomics.store(slot.status, 1, writeFrameInto(slot.output, slot.input.subarray(0, job.length), job.codec, scratch));
43
+ Atomics.store(slot.status, 0, FRAME_STATUS.DONE);
34
44
  }
35
45
  catch {
36
- Atomics.store(status, 0, FRAME_STATUS.FAILED);
46
+ Atomics.store(slot.status, 0, FRAME_STATUS.FAILED);
37
47
  }
38
- Atomics.notify(status, 0);
48
+ Atomics.notify(slot.status, 0);
39
49
  });
40
50
  //# sourceMappingURL=frame-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"frame-worker.js","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/frame-worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAC;AAE3D,6EAA6E;AAC7E,gCAAgC;AAChC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,UAAyD,CAAC;AACnF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACzC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAWlC,UAAU,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,GAAa,EAAE,EAAE;IAC1C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,UAAU,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"frame-worker.js","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/frame-worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,6EAA6E;AAC7E,gCAAgC;AAChC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,UAAyD,CAAC;AACnF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACzC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AASlC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;AACtC,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AAErC,UAAU,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,GAAa,EAAE,EAAE;IAC1C,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;YAClB,KAAK,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;YACxC,MAAM,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1C,MAAM,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACnH,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC"}
@@ -23,6 +23,7 @@
23
23
  * prefer the platform's native `DecompressionStream` for throughput.
24
24
  */
25
25
  import { BufferWriter, BufferReader } from "../../binary-utils.js";
26
+ import { type DeflateScratch } from "./deflate.js";
26
27
  /** Codec id: store logical bytes uncompressed. */
27
28
  export declare const CODEC_NONE = 0;
28
29
  /** Codec id: raw DEFLATE (RFC 1951). The mandatory baseline codec. */
@@ -36,20 +37,13 @@ export declare const COMPRESSION_THRESHOLD = 64;
36
37
  /** Upper bound on a single frame's uncompressed length (1 GiB) — guards
37
38
  * against decompression bombs and absurd allocations on corrupt input. */
38
39
  export declare const MAX_FRAME_UNCOMPRESSED: number;
40
+ /** An upper bound on a frame's header: varint(codec) + varint(uncompressed
41
+ * length) + varint(payload length). A frame's payload never exceeds its
42
+ * logical bytes ({@link writeFrame} stores codec `none` when deflate does not
43
+ * shrink), so logical + this bounds a frame not yet written. */
44
+ export declare const FRAME_HEADER_MAX = 21;
39
45
  /** Resolves a codec name to its wire id. */
40
46
  export declare function codecId(codec: Beast2Codec): number;
41
- /**
42
- * Compresses logical bytes with raw DEFLATE.
43
- *
44
- * Uses beast2's own specified encoder rather than the platform's zlib, so the
45
- * bytes are identical in every runtime — see `./deflate.ts` for why that
46
- * matters (content-addressing) and how the algorithm is pinned. It needs no
47
- * platform support at all, so browsers can compress too.
48
- *
49
- * @param data - the logical bytes to compress
50
- * @returns the raw DEFLATE stream
51
- */
52
- export declare function deflateRawSync(data: Uint8Array): Uint8Array;
53
47
  /**
54
48
  * Decompresses a raw DEFLATE frame payload synchronously.
55
49
  *
@@ -86,6 +80,22 @@ export declare function inflateRawAsync(payload: Uint8Array, uncompressedLen: nu
86
80
  * @param codec - the requested codec for this frame
87
81
  */
88
82
  export declare function writeFrame(out: BufferWriter, logical: Uint8Array, codec: Beast2Codec): void;
83
+ /**
84
+ * Writes one frame into `target` from its first byte, the bytes
85
+ * {@link writeFrame} writes.
86
+ *
87
+ * @remarks
88
+ * A frame worker's path: the deflate works in `scratch`, and the frame lands in
89
+ * a buffer the caller keeps, so a frame allocates no buffer.
90
+ *
91
+ * @param target - where the frame goes: at least the logical length plus
92
+ * {@link FRAME_HEADER_MAX} bytes
93
+ * @param logical - the logical bytes this frame carries
94
+ * @param codec - the requested codec for this frame
95
+ * @param scratch - the deflate's buffers
96
+ * @returns the frame's length
97
+ */
98
+ export declare function writeFrameInto(target: Uint8Array, logical: Uint8Array, codec: Beast2Codec, scratch: DeflateScratch): number;
89
99
  /** A parsed frame header plus the payload's wire position. */
90
100
  export interface FrameHeader {
91
101
  codec: number;
@@ -1 +1 @@
1
- {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/frames.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAInE,kDAAkD;AAClD,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,sEAAsE;AACtE,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,uEAAuE;AACvE,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,uDAAuD;AACvD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7C,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;2EAC2E;AAC3E,eAAO,MAAM,sBAAsB,QAAU,CAAC;AAE9C,4CAA4C;AAC5C,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAElD;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAE3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,GAAG,UAAU,CASvF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAgCvG;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAe3F;AAMD,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAsB7E;AAED;;;;;;;GAOG;AACH,qBAAa,WAAW;IACtB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAM;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC;;;;;OAKG;gBACS,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,YAA6B;IAMpF,wEAAwE;IACxE,QAAQ,IAAI,OAAO;IAInB;;;;;OAKG;IACH,IAAI,IAAI,YAAY;CAcrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAmBvE;AAED;2EAC2E;AAC3E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,UAAU,CAAC;AAM5G;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA8B9F"}
1
+ {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/frames.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,KAAK,cAAc,EAA2B,MAAM,cAAc,CAAC;AAG5E,kDAAkD;AAClD,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,sEAAsE;AACtE,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,uEAAuE;AACvE,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,uDAAuD;AACvD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7C,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;2EAC2E;AAC3E,eAAO,MAAM,sBAAsB,QAAU,CAAC;AAE9C;;;iEAGiE;AACjE,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,4CAA4C;AAC5C,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAElD;AAgBD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,GAAG,UAAU,CASvF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAgCvG;AAgBD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAM3F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAO3H;AAiBD,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAsB7E;AAED;;;;;;;GAOG;AACH,qBAAa,WAAW;IACtB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAM;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC;;;;;OAKG;gBACS,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,YAA6B;IAMpF,wEAAwE;IACxE,QAAQ,IAAI,OAAO;IAInB;;;;;OAKG;IACH,IAAI,IAAI,YAAY;CAcrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAmBvE;AAED;2EAC2E;AAC3E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,UAAU,CAAC;AAM5G;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA8B9F"}