@elaraai/east-node-cli 1.0.77 → 1.0.78

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.
package/README.md CHANGED
@@ -47,6 +47,99 @@ east-node run ./process.beast2 \
47
47
  east-node run ./program.beast2 -p @elaraai/east-node-std -v
48
48
  ```
49
49
 
50
+ ### Streaming Outputs
51
+
52
+ A function whose trailing parameter is an emit capability writes its output
53
+ incrementally instead of returning it; `--stream` feeds the named inputs
54
+ lazily, one decoded segment at a time:
55
+
56
+ ```bash
57
+ # Emit a Dict (or array / set) through the trailing parameter, feeding
58
+ # inputs 0 and 1 lazily from indexed beast2 blobs
59
+ east-node run ./task.beast2 -p @elaraai/east-node-std \
60
+ -i rows.beast2 -i more.beast2 --stream 0 --stream 1 \
61
+ --emit dict -o out.beast2 -v
62
+ ```
63
+
64
+ Dict and Set emissions must ascend in East order. The sink writes one pass,
65
+ segment by segment, with one open batch in memory whatever the size of the
66
+ output, and a key below the previous one is an error naming both:
67
+
68
+ ```text
69
+ beast2 v5: Dict key emitted out of order: 1 after 2 — Set/Dict emissions must ascend in East order
70
+ ```
71
+
72
+ Equal keys are an error too unless the sink folds them:
73
+
74
+ ```bash
75
+ # Dict: fold the values of adjacent equal keys with an East function (K, V, V) -> V
76
+ east-node run ./task.beast2 -p @elaraai/east-node-std --emit dict --merge merge.beast2 -o out.beast2
77
+
78
+ # Set: keep the first of adjacent equal elements
79
+ east-node run ./task.beast2 -p @elaraai/east-node-std --emit set --union -o out.beast2
80
+ ```
81
+
82
+ `--merge` takes an IR file in any format the program itself may use, compiled
83
+ with the run's `-p` platforms; its signature must match the emit parameter's
84
+ key and value types. Adjacent equal keys fold left in emission order,
85
+ `acc = merge(key, acc, value)`, and the output is byte-identical to what the
86
+ sink writes without the flag for the already-folded sequence.
87
+
88
+ ### Merging blobs
89
+
90
+ `merge` combines sorted Set or Dict blobs of one type — the files `run --emit`
91
+ writes — into one, in a single pass over the inputs: every input is read
92
+ segment by segment, equal keys across inputs fold in input order (`--merge`
93
+ on Dict inputs, `--union` on Set inputs; without a fold an equal key is an
94
+ error), and the output is byte-identical to what `run --emit` writes for the
95
+ same entries emitted ascending. This is how e3 assembles a partitioned task's
96
+ keyed partials; all three runners write the same bytes.
97
+
98
+ ```bash
99
+ # Dict partials: fold the values of equal keys, in input order
100
+ east-node merge --merge merge.beast2 -i part-0.beast2 -i part-1.beast2 -i part-2.beast2 -o out.beast2 -v
101
+
102
+ # Set partials: the first of equal elements stands
103
+ east-node merge --union -i part-0.beast2 -i part-1.beast2 -o out.beast2
104
+
105
+ # Only the keys in [from, to): range.beast2 holds a Struct{from: Option<K>,
106
+ # to: Option<K>} over the inputs' key type, an absent bound open
107
+ east-node merge --merge merge.beast2 --range range.beast2 -i part-0.beast2 -i part-1.beast2 -o out.beast2
108
+ ```
109
+
110
+ With `--range` every input is sought to the segment owning `from` through its
111
+ fences and read up to the first key at or past `to`, so a merge over one key
112
+ range of large partials reads that range's share of each, plus at most one
113
+ segment — how e3 merges a large output in parallel, one range per unit.
114
+
115
+ An input of another type than the first, an Array input, an input whose keys
116
+ do not ascend, a fold whose signature does not match the inputs, and bounds of
117
+ another type than the inputs' key are refused, naming the input. With `-v` the
118
+ merge prints its account:
119
+
120
+ ```text
121
+ merge: 3 input(s), 31 entries, 13 fold(s)
122
+ ```
123
+
124
+ ### Exiting with the Parent
125
+
126
+ With `--exit-with-parent` on its command line (`run` and `merge`) the runner
127
+ watches its stdin from a worker thread, reading it through a socket on the
128
+ worker's own event loop, and kills its own process as soon as stdin ends,
129
+ closes or cannot be read. A parent that spawns the runner with a stdin pipe
130
+ it never writes to — as e3 does — takes the runner down with it when it dies,
131
+ even while the body is computing. The watcher never blocks in a read, so it
132
+ never holds up the runner's own exit. The runner opens `process.stdin` before
133
+ the watcher reads, so it keeps full use of its stdin over any pipe — on
134
+ Windows a read pending on a synchronous pipe holds the pipe's file-object
135
+ lock, and opening stdin after it (as the first import of `node:process` does)
136
+ would otherwise wait until the parent is gone. Without the flag, stdin is left
137
+ alone.
138
+
139
+ ```bash
140
+ east-node run ./task.beast2 --exit-with-parent -p @elaraai/east-node-std --emit dict -o out.beast2
141
+ ```
142
+
50
143
  ### Version Information
51
144
 
52
145
  ```bash
@@ -103,6 +196,37 @@ Options:
103
196
  -i, --input <file> Input data file (can be repeated)
104
197
  -o, --output <file> Output file path for result
105
198
  -v, --verbose Enable verbose output
199
+ --emit <kind> Write the output incrementally from the function's
200
+ trailing emit parameter (array|set|dict)
201
+ --merge <file> With --emit dict: fold equal keys with the East function
202
+ (K, V, V) -> V in <file>, in emission order
203
+ --union With --emit set: collapse equal elements
204
+ --stream <index> Feed the given -i input (0-based) lazily, segment by
205
+ segment (can be repeated)
206
+ --exit-with-parent Exit as soon as stdin reaches end of file — for a parent
207
+ that holds a stdin pipe it never writes to
208
+ -h, --help Display help
209
+ ```
210
+
211
+ ### `east-node merge`
212
+
213
+ Merge sorted Set or Dict blobs of one type into one, in a single pass.
214
+
215
+ ```
216
+ east-node merge -i <file>... -o <file> [options]
217
+
218
+ Options:
219
+ -i, --input <file...> The input blobs (equal keys fold in this order)
220
+ -o, --output <file> The merged blob
221
+ -p, --package <package...> Platform packages the --merge function's platform calls need
222
+ -v, --verbose Enable verbose output
223
+ --merge <file> Dict inputs: fold equal keys with the East function
224
+ (K, V, V) -> V in <file>, in input order
225
+ --union Set inputs: the first of equal elements stands
226
+ --range <file> Merge only the keys in [from, to): a beast2 blob of
227
+ Struct{from: Option<K>, to: Option<K>} over the inputs'
228
+ key type; an absent bound is open
229
+ --exit-with-parent Exit as soon as stdin reaches end of file
106
230
  -h, --help Display help
107
231
  ```
108
232
 
@@ -171,8 +295,8 @@ operation transparently decodes the whole value once. Semantics are identical
171
295
  to an eager decode, so the threshold is a memory knob, not a behavior toggle.
172
296
 
173
297
  Control it with the `EAST_LAZY_INPUT_BYTES` environment variable: a byte
174
- threshold, or `0` to disable lazy opening entirely. The `--stream` input of a
175
- streaming task always opens lazily regardless of size.
298
+ threshold, or `0` to disable lazy opening entirely. Every `--stream` input of
299
+ a streaming task opens lazily regardless of size.
176
300
 
177
301
  Lazy opening applies only to **value-semantic element shapes** (scalars,
178
302
  structs, variants). An element type that transitively contains an Array, Set,
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6PH,wBAAgB,IAAI,IAAI,IAAI,CAsF3B"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgYH,wBAAgB,IAAI,IAAI,IAAI,CA0G3B"}
package/dist/cli.js CHANGED
@@ -4,10 +4,13 @@
4
4
  */
5
5
  import { Command } from 'commander';
6
6
  import { writeFileSync } from 'node:fs';
7
+ import { extname } from 'node:path';
8
+ import { Worker } from 'node:worker_threads';
7
9
  import { createRequire } from 'module';
8
10
  import { EastError } from '@elaraai/east/internal';
9
11
  import { loadPlatforms, loadPlatformWithMetadata } from './loader.js';
10
- import { runProgram } from './runner.js';
12
+ import { runProgram, UsageError } from './runner.js';
13
+ import { mergeBlobs } from './merge.js';
11
14
  import { writeSnapshot, readSnapshot } from './snapshot.js';
12
15
  import { encodeRebuilt, isDirectory, transpile, transpileDir } from './transpile.js';
13
16
  import { exportFunctionsFromModule } from './export-functions.js';
@@ -16,26 +19,52 @@ import { checkModule, formatFinding } from './check.js';
16
19
  import { East } from '@elaraai/east';
17
20
  const require = createRequire(import.meta.url);
18
21
  const pkg = require('../package.json');
22
+ /**
23
+ * Collects a repeated option's values.
24
+ *
25
+ * Every repeatable flag takes ONE value and is given again for the next —
26
+ * `-i a -i b`, `--stream 0 --stream 1` — which is the grammar east-c and
27
+ * east-py accept and all three READMEs document. Commander's variadic form
28
+ * (`<file...>`) would also swallow the following positional, so
29
+ * `run --stream 0 program.beast2` lost its IR file and reported it missing.
30
+ */
31
+ function collect(value, previous) {
32
+ return [...previous, value];
33
+ }
34
+ /** The `--exit-with-parent` flag's help, shared by `run` and `merge`. */
35
+ const EXIT_WITH_PARENT_HELP = 'Exit as soon as stdin reaches end of file — for a parent that holds a stdin pipe it never writes to, and takes the runner down with it';
19
36
  /** Parses the streaming-execution flags into runner options. */
20
37
  function streamingOptions(options) {
21
38
  const out = {};
22
39
  if (options.emit !== undefined) {
23
40
  if (options.emit !== 'array' && options.emit !== 'set' && options.emit !== 'dict') {
24
- throw new Error(`--emit must be one of array, set or dict, got '${options.emit}'`);
41
+ throw new UsageError(`--emit must be one of array, set or dict, got '${options.emit}'`);
25
42
  }
26
43
  out.emit = options.emit;
27
44
  }
45
+ if (options.merge !== undefined) {
46
+ if (out.emit !== 'dict')
47
+ throw new UsageError('--merge applies to --emit dict only');
48
+ out.merge = options.merge;
49
+ }
50
+ if (options.union) {
51
+ if (out.emit !== 'set')
52
+ throw new UsageError('--union applies to --emit set only');
53
+ out.union = true;
54
+ }
28
55
  if (options.stream !== undefined) {
29
- const index = Number(options.stream);
30
- if (!Number.isInteger(index) || index < 0) {
31
- throw new Error(`--stream must be a non-negative input index, got '${options.stream}'`);
32
- }
33
- out.streamInput = index;
56
+ out.streamInputs = options.stream.map((raw) => {
57
+ const index = Number(raw);
58
+ if (!Number.isInteger(index) || index < 0) {
59
+ throw new UsageError(`--stream must be a non-negative input index, got '${raw}'`);
60
+ }
61
+ return index;
62
+ });
34
63
  }
35
64
  if (options.lazyInputs !== undefined) {
36
65
  const bytes = Number(options.lazyInputs);
37
66
  if (!Number.isFinite(bytes) || bytes < 0) {
38
- throw new Error(`--lazy-inputs must be a byte threshold (0 disables), got '${options.lazyInputs}'`);
67
+ throw new UsageError(`--lazy-inputs must be a byte threshold (0 disables), got '${options.lazyInputs}'`);
39
68
  }
40
69
  out.lazyInputBytes = bytes;
41
70
  }
@@ -44,12 +73,13 @@ function streamingOptions(options) {
44
73
  /**
45
74
  * Print `message` to stderr and exit 1 once the write has FLUSHED.
46
75
  *
47
- * Piped stdio is asynchronous on Windows, so `console.error(...)` followed by
48
- * `process.exit(1)` can truncate the message before a parent process ever
49
- * reads it — e3 spawns this CLI with stdio pipes and surfaces the stderr tail
50
- * on failure, and on windows-latest that tail arrived empty. The returned
51
- * promise never resolves (the process exits from the write callback), so
52
- * `return fail(...)` ends the caller exactly like the exit it replaces.
76
+ * A write to `process.stderr` is asynchronous on a POSIX pipe (and on a
77
+ * Windows terminal), so `console.error(...)` followed by `process.exit(1)` can
78
+ * end the process before the message is written — and e3 spawns this CLI with
79
+ * stdio pipes and surfaces the stderr tail on failure. Exiting from the write
80
+ * callback lets the whole message through. The returned promise never
81
+ * resolves (the process exits from the write callback), so `return fail(...)`
82
+ * ends the caller exactly like the exit it replaces.
53
83
  */
54
84
  function fail(message) {
55
85
  process.exitCode = 1;
@@ -57,7 +87,52 @@ function fail(message) {
57
87
  process.stderr.write(`${message}\n`, () => process.exit(1));
58
88
  });
59
89
  }
90
+ /**
91
+ * The exit-with-parent watcher (issue #770), run on a worker thread: it reads
92
+ * stdin through a socket on the worker's own event loop, and once stdin ends,
93
+ * closes or cannot be read it kills the whole process — `process.exit` inside
94
+ * a worker ends only the worker.
95
+ *
96
+ * It never blocks in a read. Process exit joins worker threads, so a worker
97
+ * blocked in `fs.readSync(0)` keeps the runner from ever exiting: a read that
98
+ * starts before stdin is non-blocking stays blocked, and on Windows libuv
99
+ * keeps pipes in blocking mode. An evented read stops with the worker's loop
100
+ * (on a synchronous Windows pipe libuv cancels its blocking read).
101
+ */
102
+ const EXIT_WITH_PARENT_WATCHER = `
103
+ const { Socket } = require('node:net');
104
+ const stop = () => process.kill(process.pid, 'SIGKILL');
105
+ try {
106
+ const stdin = new Socket({ fd: 0, readable: true, writable: false });
107
+ stdin.on('end', stop);
108
+ stdin.on('close', stop);
109
+ stdin.on('error', stop);
110
+ stdin.resume();
111
+ } catch {
112
+ stop();
113
+ }
114
+ `;
115
+ /**
116
+ * Exit with the parent (issue #770): with `--exit-with-parent` on the
117
+ * command line, start the watcher on an unref'd worker thread. A parent
118
+ * passes the flag only when it gives the runner a stdin pipe it never writes
119
+ * to, so stdin ends only when that parent is gone. The main thread never
120
+ * reads `process.stdin`, but it opens it first: on Windows a read pending on
121
+ * a synchronous pipe holds the pipe's file-object lock, so once the watcher
122
+ * reads, opening stdin — which the first ESM import of `node:process` does,
123
+ * the builtin's facade reading every export — would wait for the parent to
124
+ * go. Opened now, stdin is one stream every later use shares. (e3 hands its
125
+ * runners an overlapped pipe, whose reads take no such lock; this keeps the
126
+ * runner whole under any parent.)
127
+ */
128
+ function startLifeline(options) {
129
+ if (!options.exitWithParent)
130
+ return;
131
+ void process.stdin;
132
+ new Worker(EXIT_WITH_PARENT_WATCHER, { eval: true }).unref();
133
+ }
60
134
  async function cmdRun(irFile, options) {
135
+ startLifeline(options);
61
136
  try {
62
137
  // --from-snapshot is exclusive with <ir_file>, -i, -p
63
138
  if (options.fromSnapshot) {
@@ -112,11 +187,52 @@ async function cmdRun(irFile, options) {
112
187
  // threw + the East call site), and the message alone drops them. The
113
188
  // stack already begins with `Error: <message>`, so don't re-prefix.
114
189
  const e = err;
190
+ // A refusal of the command line is the user's error: one sentence, as
191
+ // east-c and east-py give it. A stack belongs only to an error thrown
192
+ // from East or a platform function, where the frames ARE the answer.
193
+ if (err instanceof UsageError)
194
+ return fail(`Error: ${e.message}`);
115
195
  return fail(err instanceof EastError
116
196
  ? `Error: ${err.toString()}`
117
197
  : (e.stack ?? `Error: ${e.message ?? String(err)}`));
118
198
  }
119
199
  }
200
+ /**
201
+ * `east-node merge` (#770): k sorted Set/Dict blobs of one type into one
202
+ * canonical blob, in a single pass — the fan-in of a partitioned task's
203
+ * keyed partials.
204
+ */
205
+ async function cmdMerge(options) {
206
+ startLifeline(options);
207
+ try {
208
+ // The same rules, in the same words, as east-c and east-py: a merge
209
+ // needs at least one input, an output, one fold at most, and writes a
210
+ // beast2 stream exactly as `run --emit` does.
211
+ if (options.input.length === 0) {
212
+ return fail('Error: merge requires at least one -i input');
213
+ }
214
+ if (options.output === undefined) {
215
+ return fail('Error: merge requires -o FILE');
216
+ }
217
+ if (options.merge !== undefined && options.union) {
218
+ return fail('Error: --merge and --union are two folds — give one');
219
+ }
220
+ if (extname(options.output).toLowerCase() !== '.beast2') {
221
+ return fail('Error: merge requires a .beast2 output file (-o)');
222
+ }
223
+ const platformFns = await loadPlatforms(options.package ?? []);
224
+ mergeBlobs(options.input, options.output, {
225
+ ...(options.merge !== undefined && { mergePath: options.merge }),
226
+ ...(options.range !== undefined && { rangePath: options.range }),
227
+ union: options.union ?? false,
228
+ platformFns,
229
+ verbose: options.verbose ?? false,
230
+ });
231
+ }
232
+ catch (err) {
233
+ return fail(`Error: ${err.message}`);
234
+ }
235
+ }
120
236
  /**
121
237
  * `east-node transpile` (#628): print an IR file — or every IR file in a
122
238
  * directory — as the TypeScript `East.function` builder surface. With
@@ -211,16 +327,33 @@ export function main() {
211
327
  .command('run')
212
328
  .description('Run an East IR program')
213
329
  .argument('[ir_file]', 'Path to IR file (.beast2, .beast, .east, or .json)')
214
- .option('-p, --package <package...>', 'Platform packages to load (can be repeated)')
215
- .option('-i, --input <file...>', 'Input data files (order matches function parameters)')
330
+ .option('-p, --package <package>', 'Platform package to load (can be repeated)', collect, [])
331
+ .option('-i, --input <file>', 'Input data file (can be repeated, order matches function parameters)', collect, [])
216
332
  .option('-o, --output <file>', 'Output file path for result')
217
333
  .option('-v, --verbose', 'Enable verbose output')
218
334
  .option('--snapshot <path>', 'Write a .east-snapshot bundle (IR + inputs + manifest)')
219
335
  .option('--from-snapshot <path>', 'Replay from a .east-snapshot bundle (exclusive with <ir_file>, -i, -p)')
220
336
  .option('--emit <kind>', "Write the output incrementally from the function's trailing emit parameter (array|set|dict)")
221
- .option('--stream <index>', 'Feed the given -i input (0-based) lazily, segment-by-segment')
337
+ .option('--merge <file>', 'With --emit dict: fold equal keys with the East function (K, V, V) -> V in <file>, in emission order')
338
+ .option('--union', 'With --emit set: collapse equal elements')
339
+ .option('--stream <index>', 'Feed the given -i input (0-based) lazily, segment-by-segment (can be repeated)', collect, [])
222
340
  .option('--lazy-inputs <bytes>', 'Open indexed collection inputs at or above this size lazily (0 disables; default 64 MiB)')
341
+ .option('--exit-with-parent', EXIT_WITH_PARENT_HELP)
223
342
  .action(cmdRun);
343
+ program
344
+ .command('merge')
345
+ .description('Merge sorted Set or Dict blobs of one type into one, in a single pass: equal keys fold with ' +
346
+ 'the East function (K, V, V) -> V in --merge <file> (Dict), or collapse under --union (Set); without ' +
347
+ 'a fold an equal key is an error. The output is what `run --emit` writes for the same entries emitted ascending')
348
+ .option('-i, --input <file>', 'An input blob (can be repeated; equal keys fold in this order)', collect, [])
349
+ .option('-o, --output <file>', 'The merged blob')
350
+ .option('-p, --package <package>', "Platform package the --merge function's platform calls need (can be repeated)", collect, [])
351
+ .option('-v, --verbose', 'Enable verbose output')
352
+ .option('--merge <file>', 'Dict inputs: fold equal keys with the East function (K, V, V) -> V in <file>, in input order')
353
+ .option('--union', 'Set inputs: the first of equal elements stands')
354
+ .option('--range <file>', "Merge only the keys in [from, to): a beast2 blob of Struct{from: Option<K>, to: Option<K>} over the inputs' key type; an absent bound is open")
355
+ .option('--exit-with-parent', EXIT_WITH_PARENT_HELP)
356
+ .action(cmdMerge);
224
357
  program
225
358
  .command('transpile')
226
359
  .description('Print an East IR program as TypeScript East.function builder source')
@@ -276,7 +409,7 @@ export function main() {
276
409
  program
277
410
  .command('version')
278
411
  .description('Show version information')
279
- .option('-p, --package <package...>', 'Platform packages to check')
412
+ .option('-p, --package <package>', 'Platform package to check (can be repeated)', collect, [])
280
413
  .action(cmdVersion);
281
414
  program.parse();
282
415
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
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
+ import type { EastTypeValue } from '@elaraai/east/internal';
6
+ /** The output collection kind an emit writer batches for. */
7
+ export type EmitKind = 'array' | 'set' | 'dict';
8
+ /**
9
+ * A streaming, byte-adaptively batched writer of one canonical collection
10
+ * blob. Entries are elements (Array and Set) or `[key, value]` pairs (Dict).
11
+ */
12
+ export declare class EmitFileWriter {
13
+ private readonly kind;
14
+ private readonly outType;
15
+ private readonly fd;
16
+ private readonly writer;
17
+ private headerBytes;
18
+ private batch;
19
+ private written;
20
+ private nextBatch;
21
+ private probed;
22
+ /**
23
+ * Opens `path` for writing and emits the blob's header.
24
+ *
25
+ * @param kind - the collection kind
26
+ * @param outType - the collection's wire type
27
+ * @param path - the output file
28
+ */
29
+ constructor(kind: EmitKind, outType: EastTypeValue, path: string);
30
+ /**
31
+ * Appends `entry` under the flush rule: a full batch goes out only now
32
+ * that an entry which will not fold into it has arrived, so the batch's
33
+ * last entry is always still open for a fold.
34
+ *
35
+ * @param entry - the element, or the `[key, value]` pair
36
+ */
37
+ push(entry: unknown): void;
38
+ /**
39
+ * Seeds the batch size from a throwaway encode of the first entries, as
40
+ * `encodeBeast2PagedFor` does — the same probe, over the same count, so
41
+ * one value segments the same whether it was returned or emitted.
42
+ *
43
+ * Opening at the element cap instead made the first segment as many
44
+ * elements as the cap whatever they weighed: for rows above the target's
45
+ * share that is one oversized segment and every later boundary shifted,
46
+ * so the same Dict written both ways hashed differently. The probed
47
+ * entries are then drained through the refined size, exactly as the
48
+ * paged encoder pumps its own probe.
49
+ */
50
+ private probe;
51
+ /**
52
+ * Replaces the open batch's last entry — where an adjacent equal key's
53
+ * fold lands.
54
+ *
55
+ * @param update - maps the last entry to its folded form
56
+ */
57
+ foldLast(update: (last: unknown) => unknown): void;
58
+ /** Writes the open batch and finalizes the blob (terminator + index). */
59
+ finishClose(): void;
60
+ /** Closes the file without finalizing it — after an error, the partial
61
+ * output carries no terminator or index. */
62
+ closeAbandoned(): void;
63
+ private flush;
64
+ private toValue;
65
+ /** The batch size the paged encoder would choose after `bytes` of body
66
+ * for `this.written` elements. */
67
+ private refine;
68
+ /** The next batch size. With frames deflating on workers the bytes
69
+ * written are only known within bounds; the refinement is monotone in
70
+ * them, so agreeing bounds are the serial decision and disagreeing ones
71
+ * wait for the frames — the segmentation never depends on timing. */
72
+ private refineNext;
73
+ }
74
+ //# sourceMappingURL=emit-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-writer.d.ts","sourceRoot":"","sources":["../src/emit-writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAW5D,6DAA6D;AAC7D,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEhD;;;GAGG;AACH,qBAAa,cAAc;IAgBX,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAY,OAAO,CAAC,QAAQ,CAAC,OAAO;IAfrE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;;;OAMG;gBAC0B,IAAI,EAAE,QAAQ,EAAmB,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM;IAUlG;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAM1B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,KAAK;IAoBb;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI;IAKlD,yEAAyE;IACzE,WAAW,IAAI,IAAI;IAMnB;iDAC6C;IAC7C,cAAc,IAAI,IAAI;IAItB,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,OAAO;IAIf;uCACmC;IACnC,OAAO,CAAC,MAAM;IAKd;;;0EAGsE;IACtE,OAAO,CAAC,UAAU;CAOrB"}