@elaraai/east 1.0.76 → 1.0.77

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 (32) hide show
  1. package/dist/src/serialization/beast2/index.d.ts +21 -0
  2. package/dist/src/serialization/beast2/index.d.ts.map +1 -1
  3. package/dist/src/serialization/beast2/index.js +55 -0
  4. package/dist/src/serialization/beast2/index.js.map +1 -1
  5. package/dist/src/serialization/beast2/v5/deflate.d.ts.map +1 -1
  6. package/dist/src/serialization/beast2/v5/deflate.js +147 -50
  7. package/dist/src/serialization/beast2/v5/deflate.js.map +1 -1
  8. package/dist/src/serialization/beast2/v5/deflate.spec.d.ts +6 -0
  9. package/dist/src/serialization/beast2/v5/deflate.spec.d.ts.map +1 -0
  10. package/dist/src/serialization/beast2/v5/deflate.spec.js +237 -0
  11. package/dist/src/serialization/beast2/v5/deflate.spec.js.map +1 -0
  12. package/dist/src/serialization/beast2/v5/frame-pool.d.ts +119 -0
  13. package/dist/src/serialization/beast2/v5/frame-pool.d.ts.map +1 -0
  14. package/dist/src/serialization/beast2/v5/frame-pool.js +235 -0
  15. package/dist/src/serialization/beast2/v5/frame-pool.js.map +1 -0
  16. package/dist/src/serialization/beast2/v5/frame-pool.spec.d.ts +6 -0
  17. package/dist/src/serialization/beast2/v5/frame-pool.spec.d.ts.map +1 -0
  18. package/dist/src/serialization/beast2/v5/frame-pool.spec.js +287 -0
  19. package/dist/src/serialization/beast2/v5/frame-pool.spec.js.map +1 -0
  20. package/dist/src/serialization/beast2/v5/frame-worker.d.ts +6 -0
  21. package/dist/src/serialization/beast2/v5/frame-worker.d.ts.map +1 -0
  22. package/dist/src/serialization/beast2/v5/frame-worker.js +40 -0
  23. package/dist/src/serialization/beast2/v5/frame-worker.js.map +1 -0
  24. package/dist/src/serialization/beast2/v5/stream.d.ts +63 -2
  25. package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -1
  26. package/dist/src/serialization/beast2/v5/stream.js +132 -9
  27. package/dist/src/serialization/beast2/v5/stream.js.map +1 -1
  28. package/dist/src/serialization/index.d.ts +1 -1
  29. package/dist/src/serialization/index.d.ts.map +1 -1
  30. package/dist/src/serialization/index.js +1 -1
  31. package/dist/src/serialization/index.js.map +1 -1
  32. package/package.json +1 -1
@@ -0,0 +1,287 @@
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
+ * The parallel frame writer (issue #763), held to the serial algorithm.
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).
18
+ *
19
+ * Throughput is printed under `EAST_POOL_BENCH=1`, never asserted.
20
+ */
21
+ import { describe, test } from "node:test";
22
+ import assert from "node:assert/strict";
23
+ import { ArrayType, DictType, IntegerType, StringType } from "../../../types.js";
24
+ import { compareFor } from "../../../comparison.js";
25
+ import { SortedMap } from "../../../index.js";
26
+ import { Beast2Writer, BEAST2_PAGED_BATCH_DEFAULT, decodeBeast2For, encodeBeast2PagedFor, } from "../index.js";
27
+ import { configureFramePool, framePool } from "./frame-pool.js";
28
+ /** xorshift32 — a fixed stream, so a failure reproduces exactly. */
29
+ function rng(seed) {
30
+ let s = seed >>> 0 || 1;
31
+ return () => {
32
+ s ^= s << 13;
33
+ s >>>= 0;
34
+ s ^= s >>> 17;
35
+ s ^= s << 5;
36
+ s >>>= 0;
37
+ return s;
38
+ };
39
+ }
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. */
42
+ function strings(n, seed) {
43
+ const next = rng(seed);
44
+ const out = new Array(n);
45
+ for (let i = 0; i < n; i++) {
46
+ const width = 8 + (next() % 1400);
47
+ let s = "";
48
+ for (let k = 0; k < width; k++)
49
+ s += String.fromCharCode(97 + (next() % 26));
50
+ out[i] = s;
51
+ }
52
+ return out;
53
+ }
54
+ /** The serial paged encode exactly as it stood before #763. */
55
+ function serialPaged(type, items, makeBatch, target) {
56
+ 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
+ }
79
+ 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;
87
+ }
88
+ /** Resolves after `ms` milliseconds. */
89
+ function sleep(ms) {
90
+ return new Promise((resolve) => setTimeout(resolve, ms));
91
+ }
92
+ /** Chunks joined into one buffer. */
93
+ function concat(chunks) {
94
+ let length = 0;
95
+ for (const c of chunks)
96
+ length += c.length;
97
+ const out = new Uint8Array(length);
98
+ let pos = 0;
99
+ for (const c of chunks) {
100
+ out.set(c, pos);
101
+ pos += c.length;
102
+ }
103
+ return out;
104
+ }
105
+ /** First differing index, or -1. */
106
+ function firstDifference(a, b) {
107
+ const n = Math.min(a.length, b.length);
108
+ for (let i = 0; i < n; i++)
109
+ if (a[i] !== b[i])
110
+ return i;
111
+ return a.length === b.length ? -1 : n;
112
+ }
113
+ 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", () => {
116
+ const items = strings(24_000, 0x5eed);
117
+ 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
+ }
123
+ });
124
+ test("a pooled Dict encode is byte-identical to the serial algorithm, and decodes", () => {
125
+ const values = strings(20_000, 0xd1c7);
126
+ const cmp = compareFor(IntegerType);
127
+ const entries = values.map((v, i) => [BigInt(i * 3), v]);
128
+ 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
+ }
139
+ }
140
+ });
141
+ test("the pool is created on a multi-core Node host", () => {
142
+ // Informational context for the identity tests above: on a single-core
143
+ // runner the writer frames inline and they still hold, trivially.
144
+ const pool = framePool();
145
+ if (pool !== null)
146
+ assert.ok(pool.workers >= 2);
147
+ });
148
+ test("reports throughput when asked", { skip: process.env.EAST_POOL_BENCH !== "1" }, () => {
149
+ const items = strings(60_000, 0xbe7c);
150
+ const type = ArrayType(StringType);
151
+ framePool(); // start-up is once per process; keep it out of the timing
152
+ const t0 = performance.now();
153
+ const serial = serialPaged(type, items, (batch) => batch, 2 * 1024 * 1024);
154
+ const t1 = performance.now();
155
+ const pooled = encodeBeast2PagedFor(type)(items);
156
+ const t2 = performance.now();
157
+ console.log(` paged encode of ${(serial.length / 1e6).toFixed(1)} MB: serial ${(t1 - t0).toFixed(0)} ms, ` +
158
+ `pooled ${(t2 - t1).toFixed(0)} ms (${((t1 - t0) / (t2 - t1)).toFixed(2)}x on ${framePool()?.workers ?? 1} workers), ` +
159
+ `identical: ${firstDifference(serial, pooled) === -1}`);
160
+ });
161
+ test("an idle pool retires its workers, and the next pooled encode starts a new pool", async (t) => {
162
+ const before = framePool();
163
+ if (before === null) {
164
+ t.skip("no frame pool on this host — frames are written inline");
165
+ return;
166
+ }
167
+ const previous = configureFramePool({ idleMs: 50 });
168
+ try {
169
+ const type = ArrayType(StringType);
170
+ 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);
174
+ // The check runs on a timer, so wait for the retirement rather than for
175
+ // a fixed time — a loaded host delays timers.
176
+ const deadline = Date.now() + 10_000;
177
+ while (framePool() === before && Date.now() < deadline)
178
+ await sleep(25);
179
+ 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");
181
+ }
182
+ finally {
183
+ configureFramePool(previous);
184
+ }
185
+ });
186
+ test("a writer that outlives an idle retirement frames on the new pool, byte-identically", async (t) => {
187
+ const pool = framePool();
188
+ if (pool === null) {
189
+ t.skip("no frame pool on this host — frames are written inline");
190
+ return;
191
+ }
192
+ // A shorter wait too: if the writer handed frames to the retired workers,
193
+ // this fails in seconds rather than a minute — yet far longer than any
194
+ // healthy frame takes on a loaded runner.
195
+ const previous = configureFramePool({ idleMs: 50, waitTimeoutMs: 10_000 });
196
+ try {
197
+ const type = ArrayType(StringType);
198
+ const items = strings(24_000, 0x0a7e);
199
+ const batches = (from, to) => {
200
+ const out = [];
201
+ for (let i = from; i < to; i += 500)
202
+ out.push(items.slice(i, Math.min(to, i + 500)));
203
+ return out;
204
+ };
205
+ // A long-lived writer (an emit sink between batches) goes quiet with
206
+ // nothing in flight, long enough for its pool to retire.
207
+ const chunks = [];
208
+ const writer = new Beast2Writer(type, (b) => { chunks.push(b); }, { parallel: true });
209
+ for (const batch of batches(0, 16_000))
210
+ writer.write(batch);
211
+ writer.settle();
212
+ const deadline = Date.now() + 10_000;
213
+ while (framePool() === pool && Date.now() < deadline)
214
+ await sleep(25);
215
+ assert.notEqual(framePool(), pool, "the quiet pool retired");
216
+ for (const batch of batches(16_000, items.length))
217
+ writer.write(batch);
218
+ writer.finish();
219
+ const inlineChunks = [];
220
+ const inline = new Beast2Writer(type, (b) => { inlineChunks.push(b); });
221
+ for (const batch of batches(0, items.length))
222
+ inline.write(batch);
223
+ inline.finish();
224
+ assert.equal(firstDifference(concat(chunks), concat(inlineChunks)), -1, "the writer's stream is the inline stream");
225
+ assert.notEqual(framePool(), null, "no worker was lost along the way");
226
+ }
227
+ finally {
228
+ configureFramePool(previous);
229
+ }
230
+ });
231
+ // LAST in this file: losing a worker abandons the process's pool, so every
232
+ // encode after it in this process frames inline.
233
+ test("a lost frame worker fails its frame instead of hanging, and the process frames inline after", async (t) => {
234
+ const pool = framePool();
235
+ if (pool === null) {
236
+ t.skip("no frame pool on this host — frames are written inline");
237
+ return;
238
+ }
239
+ const type = ArrayType(StringType);
240
+ const items = strings(24_000, 0x1057);
241
+ const batches = (from, to) => {
242
+ const out = [];
243
+ for (let i = from; i < to; i += 500)
244
+ out.push(items.slice(i, Math.min(to, i + 500)));
245
+ return out;
246
+ };
247
+ // A parallel writer already framing on the pool — well past the pool's
248
+ // start threshold — with nothing in flight when the worker is lost.
249
+ const survivorChunks = [];
250
+ const survivor = new Beast2Writer(type, (b) => { survivorChunks.push(b); }, { parallel: true });
251
+ for (const batch of batches(0, 16_000))
252
+ survivor.write(batch);
253
+ survivor.settle();
254
+ const logical = new Uint8Array(64 * 1024).fill(0x61);
255
+ assert.ok(pool.submit(logical, "deflate").take().length > 0, "a live worker builds the frame");
256
+ // A worker that dies without reporting: the thread is gone, the frame it
257
+ // was handed stays pending. Only this wait is shortened — a healthy frame
258
+ // on a loaded runner must never be mistaken for a lost one.
259
+ await pool.terminateWorkers();
260
+ const previous = configureFramePool({ waitTimeoutMs: 200 });
261
+ try {
262
+ const orphan = pool.submit(logical, "deflate");
263
+ const started = Date.now();
264
+ assert.throws(() => orphan.take(), /a frame worker stopped responding — its thread was lost/);
265
+ assert.ok(Date.now() - started < 10_000, "the configured wait applies, not the minute-long default");
266
+ }
267
+ finally {
268
+ configureFramePool(previous);
269
+ }
270
+ assert.equal(framePool(), null, "the process frames inline from then on");
271
+ // The surviving writer follows the process inline rather than handing
272
+ // frames to the abandoned pool, and its stream is the inline stream.
273
+ for (const batch of batches(16_000, items.length))
274
+ survivor.write(batch);
275
+ survivor.finish();
276
+ const inlineChunks = [];
277
+ const inline = new Beast2Writer(type, (b) => { inlineChunks.push(b); });
278
+ for (const batch of batches(0, items.length))
279
+ inline.write(batch);
280
+ inline.finish();
281
+ 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");
285
+ });
286
+ });
287
+ //# sourceMappingURL=frame-pool.spec.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,6 @@
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
+ export {};
6
+ //# sourceMappingURL=frame-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-worker.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/frame-worker.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,40 @@
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
+ * Beast2 v5 frame worker — one of {@link framePool}'s threads.
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.
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ import { parentPort, workerData } from "node:worker_threads";
16
+ import { BufferWriter } from "../../binary-utils.js";
17
+ import { FRAME_STATUS } from "./frame-pool.js";
18
+ import { writeFrame } from "./frames.js";
19
+ // Report that this worker loaded — the pool hands itself out only once every
20
+ // worker has (see `framePool`).
21
+ const { ready, index } = workerData;
22
+ const readyCells = new Int32Array(ready);
23
+ Atomics.store(readyCells, index, 1);
24
+ Atomics.notify(readyCells, index);
25
+ parentPort?.on("message", (job) => {
26
+ const status = new Int32Array(job.status);
27
+ 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);
34
+ }
35
+ catch {
36
+ Atomics.store(status, 0, FRAME_STATUS.FAILED);
37
+ }
38
+ Atomics.notify(status, 0);
39
+ });
40
+ //# sourceMappingURL=frame-worker.js.map
@@ -0,0 +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"}
@@ -43,6 +43,20 @@ export type Beast2WriterOptions = {
43
43
  * to rebuild segments byte-compatible with an existing blob's header.
44
44
  * When set, `sourceMap` must be the prefix's own decoded source map. */
45
45
  headerPrefix?: Uint8Array;
46
+ /**
47
+ * Deflate frames on worker threads (issue #763). Defaults to `false`.
48
+ *
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,
57
+ * and on a single CPU, the writer frames inline.
58
+ */
59
+ parallel?: boolean;
46
60
  };
47
61
  /**
48
62
  * Append-only streaming writer for a v5 collection blob.
@@ -81,6 +95,15 @@ export declare class Beast2Writer<T extends EastType = EastType> {
81
95
  private hasLast;
82
96
  private bytesWritten;
83
97
  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;
84
107
  /**
85
108
  * @param type - the collection type this stream holds (Array/Set/Dict)
86
109
  * @param sink - receives output bytes as they are produced
@@ -102,13 +125,51 @@ export declare class Beast2Writer<T extends EastType = EastType> {
102
125
  * or an external sort), or encode arrival order as an Array of entries.
103
126
  *
104
127
  * @param batch - a value of the declared collection type
105
- * @throws {Error} When called after {@link finish}, or when a Set/Dict
106
- * batch violates the stream's strict ascending (key) order.
128
+ * @throws {Error} When called after {@link finish}, when a Set/Dict
129
+ * batch violates the stream's strict ascending (key) order, or — for a
130
+ * parallel writer — when a frame worker failed to build a frame or stopped
131
+ * responding. A lost frame cannot be rebuilt, so the stream fails loudly
132
+ * and cannot be finished; the process frames inline from then on.
107
133
  */
108
134
  write(batch: ValueTypeOf<T>): void;
135
+ /**
136
+ * Brackets the total bytes the writer will have passed to its sink once
137
+ * every in-flight frame lands.
138
+ *
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.
145
+ *
146
+ * @returns the bounds, in bytes
147
+ */
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
+ 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;
109
167
  /**
110
168
  * Terminates the stream: writes the terminator frame and, unless disabled,
111
169
  * the index and footer. Idempotent.
170
+ *
171
+ * @throws {Error} For a parallel writer, when an in-flight frame's worker
172
+ * failed or stopped responding (see {@link write}).
112
173
  */
113
174
  finish(): void;
114
175
  /** Validates that a Set/Dict batch continues the stream's strict ascent
@@ -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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"}