@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.
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,wBAAwB,CAAC;AAiB9E,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAC9B,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;qCAGiC;IACjC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAChC;;;yEAGqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;wBAIoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAKD;;;;gEAIgE;AAChE,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAQhE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAiB,GAAG,OAAY,GAC1C,OAAO,CAAC,OAAO,CAAC,CAmIlB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAc9E,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,kEAAkE;AAClE;;;;;;;;GAQG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI9B;AAED,MAAM,WAAW,iBAAiB;IAC9B,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;qCAGiC;IACjC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAChC;;;yEAGqE;IACrE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;iBAIa;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;wBAIoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAKD;;;;gEAIgE;AAChE,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAQhE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAiB,GAAG,OAAY,GAC1C,OAAO,CAAC,OAAO,CAAC,CAqJlB;AAoBD,sDAAsD;AACtD,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAEpF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAejK;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAI7G"}
package/dist/runner.js CHANGED
@@ -2,10 +2,11 @@
2
2
  * Copyright (c) 2025 Elara AI Pty Ltd
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
- import { closeSync, openSync, readFileSync, renameSync, statSync, unlinkSync, writeFileSync, writeSync } from 'fs';
5
+ import { statSync, writeFileSync } from 'fs';
6
6
  import { extname } from 'path';
7
- import { EastIR, Beast2Writer, BEAST2_PAGED_BATCH_DEFAULT, BEAST2_PAGED_TARGET_BYTES_DEFAULT, compareFor, encodeBeast2For, encodeBeast2PagedFor, encodeEastFor, encodeJSONFor, iterBeast2SegmentsFor, printFor, variant, } from '@elaraai/east';
7
+ import { EastIR, compareFor, encodeBeast2For, encodeBeast2PagedFor, encodeEastFor, encodeJSONFor, isTypeValueEqual, printFor, variant, } from '@elaraai/east';
8
8
  import { printTypeValue } from '@elaraai/east/internal';
9
+ import { EmitFileWriter } from './emit-writer.js';
9
10
  import { lazyInputBytesRead, loadEastIR, loadInput, loadInputLazy } from './loader.js';
10
11
  function now() { return process.hrtime.bigint(); }
11
12
  function elapsed(start, end) { return Number(end - start) / 1e6; }
@@ -16,7 +17,8 @@ function formatSize(bytes) {
16
17
  return `${(bytes / 1024).toFixed(1)} KB`;
17
18
  return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
18
19
  }
19
- function formatFileSize(path) {
20
+ /** A file's size for the verbose account, or `?` when it cannot be read. @internal */
21
+ export function formatFileSize(path) {
20
22
  try {
21
23
  return formatSize(statSync(path).size);
22
24
  }
@@ -24,6 +26,22 @@ function formatFileSize(path) {
24
26
  return '?';
25
27
  }
26
28
  }
29
+ /** Streaming-execution options accepted by {@link runProgram}. */
30
+ /**
31
+ * A refusal of the command line itself — a flag combination, an output
32
+ * destination, a function shape the flags do not fit.
33
+ *
34
+ * These are the user's errors, not the program's, and east-c and east-py
35
+ * answer them with one sentence on stderr. Marking them lets the CLI do the
36
+ * same instead of printing the JS stack it prints for an error thrown from
37
+ * East or from a platform function, where the frames are the diagnosis.
38
+ */
39
+ export class UsageError extends Error {
40
+ constructor(message) {
41
+ super(message);
42
+ this.name = 'UsageError';
43
+ }
44
+ }
27
45
  /** Default size threshold above which collection inputs open lazily. */
28
46
  const LAZY_INPUT_BYTES_DEFAULT = 64 * 1024 * 1024;
29
47
  /** Resolves the lazy-open threshold: explicit option, else environment, else
@@ -50,6 +68,12 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
50
68
  const opts = typeof options === 'boolean' ? { verbose: options } : options;
51
69
  const verbose = opts.verbose ?? false;
52
70
  const t0 = now();
71
+ if (opts.merge !== undefined && opts.emit !== 'dict') {
72
+ throw new UsageError('--merge applies to --emit dict only');
73
+ }
74
+ if (opts.union && opts.emit !== 'set') {
75
+ throw new UsageError('--union applies to --emit set only');
76
+ }
53
77
  // Load as an EastIR bundle so source_map travels with the IR and error
54
78
  // frames resolve end-to-end.
55
79
  const eastIR = loadEastIR(irPath);
@@ -63,22 +87,33 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
63
87
  // has no trailing parameter to be it — the shaped emit error, not a
64
88
  // negative arity count.
65
89
  if (opts.emit !== undefined && inputTypes.length === 0) {
66
- throw new Error(`--emit requires the function's trailing parameter to be the emit capability (a function type), but the function takes no parameters`);
90
+ throw new UsageError(`--emit requires the function's trailing parameter to be the emit capability (a function type)`);
67
91
  }
68
92
  const fileParamCount = opts.emit !== undefined ? inputTypes.length - 1 : inputTypes.length;
69
93
  if (inputPaths.length !== fileParamCount) {
70
- throw new Error(`Function expects ${fileParamCount} input(s), but ${inputPaths.length} input file(s) provided`);
94
+ // east-c / east-py parity, down to the signature line: one sentence
95
+ // for one condition, whichever runner the task declares.
96
+ const signature = `(${inputTypes.map((t) => printTypeValue(t)).join(', ')}) -> ` +
97
+ `${outputType !== null ? printTypeValue(outputType) : '?'}`;
98
+ throw new UsageError(`Function expects ${fileParamCount} inputs, got ${inputPaths.length}\nSignature: ${signature}`);
71
99
  }
72
100
  if (opts.emit !== undefined && (outputPath === undefined || extname(outputPath).toLowerCase() !== '.beast2')) {
73
101
  // east-c / east-py parity: the emitted blob is a beast2 stream, so
74
102
  // any other output extension is refused up front.
75
- throw new Error(`--emit requires a .beast2 output file (-o)`);
103
+ throw new UsageError(`--emit requires a .beast2 output file (-o)`);
76
104
  }
77
- if (opts.streamInput !== undefined && (opts.streamInput < 0 || opts.streamInput >= inputPaths.length)) {
78
- throw new Error(`--stream index ${opts.streamInput} out of range (${inputPaths.length} inputs)`);
105
+ const streamInputs = opts.streamInputs ?? [];
106
+ for (const index of streamInputs) {
107
+ if (index < 0 || index >= inputPaths.length) {
108
+ throw new UsageError(`--stream index ${index} out of range (${inputPaths.length} inputs)`);
109
+ }
79
110
  }
80
111
  const emitSink = opts.emit !== undefined
81
- ? createEmitSink(opts.emit, inputTypes[inputTypes.length - 1], outputPath, verbose)
112
+ ? createEmitSink(opts.emit, inputTypes[inputTypes.length - 1], outputPath, {
113
+ ...(opts.merge !== undefined && { mergePath: opts.merge }),
114
+ union: opts.union ?? false,
115
+ platformFns,
116
+ })
82
117
  : null;
83
118
  // Verbose header
84
119
  if (verbose) {
@@ -102,7 +137,7 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
102
137
  }
103
138
  }
104
139
  // Load inputs — always frozen (task inputs are immutable; mutating one
105
- // throws the uniform copy-first error). The streamed input always opens
140
+ // throws the uniform copy-first error). Streamed inputs always open
106
141
  // lazily; other beast2 collection inputs open lazily at or above the
107
142
  // size threshold, so a sparse read into a huge indexed input stops
108
143
  // paying a whole decode — and because frozen collapses the shape gate,
@@ -111,7 +146,7 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
111
146
  const inputs = [];
112
147
  const lazyInputs = [];
113
148
  for (let i = 0; i < inputPaths.length; i++) {
114
- const wantLazy = i === opts.streamInput ||
149
+ const wantLazy = streamInputs.includes(i) ||
115
150
  (threshold > 0 && statSync(inputPaths[i]).size >= threshold);
116
151
  const lazy = wantLazy ? loadInputLazy(inputPaths[i]) : undefined;
117
152
  if (lazy !== undefined) {
@@ -164,276 +199,142 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
164
199
  }
165
200
  return outputPath ? undefined : result;
166
201
  }
167
- /** Out-of-order Set/Dict emission buffers and spills sorted runs of at most
168
- * this many elements (`EAST_EMIT_RUN_ELEMENTS` overrides; minimum 1) — the
169
- * in-memory bound of the sink's spill/merge path (issue #518). */
170
- const EMIT_RUN_ELEMENTS_DEFAULT = 100_000;
171
- /** Resolves the spill-run element cap: environment override, else the
172
- * default. Invalid or sub-1 values fall back, matching east-py / east-c. */
173
- function emitRunElements() {
174
- const raw = process.env.EAST_EMIT_RUN_ELEMENTS;
175
- if (raw !== undefined && raw !== '') {
176
- const env = Number(raw);
177
- if (Number.isInteger(env) && env >= 1)
178
- return env;
202
+ /**
203
+ * Loads a `--merge` function: an IR file holding a `(K, V, V) -> V` East
204
+ * function over the given key and value types, compiled with the run's
205
+ * platforms. Shared by the emit sink and the blob merge.
206
+ *
207
+ * @param path - the IR file (any format the IR positional accepts)
208
+ * @param keyType - the key type
209
+ * @param valueType - the value type
210
+ * @param platformFns - the run's platforms
211
+ * @param subject - what the function must match, for the message: `the emit
212
+ * parameter` or `the inputs`
213
+ * @returns the compiled merge function
214
+ * @throws {Error} When the IR is not a function of that shape, naming the
215
+ * expected and the actual types.
216
+ */
217
+ export function loadMergeFunction(path, keyType, valueType, platformFns, subject) {
218
+ const bundle = loadEastIR(path);
219
+ const fnType = bundle.ir.value.type;
220
+ const shape = fnType.type === 'Function' ? fnType.value : null;
221
+ if (shape === null || shape.inputs.length !== 3 ||
222
+ !isTypeValueEqual(shape.inputs[0], keyType) ||
223
+ !isTypeValueEqual(shape.inputs[1], valueType) ||
224
+ !isTypeValueEqual(shape.inputs[2], valueType) ||
225
+ !isTypeValueEqual(shape.output, valueType)) {
226
+ throw new Error(`--merge: expected a function (K, V, V) -> V matching ${subject} ` +
227
+ `(K = ${printTypeValue(keyType)}, V = ${printTypeValue(valueType)}), got ${printTypeValue(fnType)}`);
179
228
  }
180
- return EMIT_RUN_ELEMENTS_DEFAULT;
229
+ return bundle.compile(platformFns);
230
+ }
231
+ /**
232
+ * The canonical duplicate-key error, identical across runners: the emit
233
+ * sink's, and the blob merge's when a key is shared without a fold.
234
+ *
235
+ * @param kind - the collection kind
236
+ * @param printKey - the key type's printer
237
+ * @param key - the repeated key
238
+ * @returns the message
239
+ */
240
+ export function duplicateMessage(kind, printKey, key) {
241
+ const noun = kind === 'dict' ? 'Dict' : 'Set';
242
+ const part = kind === 'dict' ? 'key' : 'element';
243
+ return `beast2 v5: duplicate ${noun} ${part} emitted: ${printKey(key)} — ${noun} ${part}s must be unique`;
244
+ }
245
+ /**
246
+ * The canonical out-of-order error, identical across runners: a Set/Dict
247
+ * emission below the previous one.
248
+ *
249
+ * @param kind - the collection kind
250
+ * @param printKey - the key type's printer
251
+ * @param key - the offending key
252
+ * @param previous - the key emitted before it
253
+ * @returns the message
254
+ */
255
+ function disorderMessage(kind, printKey, key, previous) {
256
+ const noun = kind === 'dict' ? 'Dict' : 'Set';
257
+ const part = kind === 'dict' ? 'key' : 'element';
258
+ return `beast2 v5: ${noun} ${part} emitted out of order: ${printKey(key)} after ${printKey(previous)} — Set/Dict emissions must ascend in East order`;
181
259
  }
182
260
  /**
183
261
  * Builds the emit capability: a host function value that re-batches elements
184
262
  * byte-adaptively and appends segments to the output file through a
185
- * streaming writer.
263
+ * streaming writer ({@link EmitFileWriter}) — one pass, with one open batch
264
+ * in memory whatever the output's size.
186
265
  *
187
- * Emission order is unconstrained (issue #518). While Set/Dict emissions
188
- * stay strictly ascending in East (key) order, segments stream straight to
189
- * the output file — O(batch) memory, byte-identical to an always-ascending
190
- * producer. On the first out-of-order key the file written so far is
191
- * finalized (a complete canonical beast2 file of the prefix) and demoted to
192
- * spill run #0; emissions then buffer to a bounded element cap
193
- * (`EAST_EMIT_RUN_ELEMENTS`) and spill as sorted runs beside the output, and
194
- * `finish` k-way merges runs + tail into the canonical output. Duplicate
195
- * Set/Dict keys are a hard error in every path: immediately when adjacent in
196
- * the stream, at spill/merge time otherwise.
266
+ * Set/Dict emissions must ascend in East (key) order (issue #770): a key
267
+ * below the previous one is an error naming both, in the same words on every
268
+ * runner, and so is an equal key unless the sink folds it. With a merge
269
+ * function an adjacent equal dict key folds into the batch's last entry,
270
+ * `acc = merge(key, acc, value)`; with union an adjacent equal set element
271
+ * collapses into the previous one. The output is then byte-identical to what
272
+ * the non-folding sink writes for the already-folded sequence.
197
273
  */
198
- function createEmitSink(kind, emitParamType, outputPath, verbose) {
274
+ function createEmitSink(kind, emitParamType, outputPath, fold) {
199
275
  if (emitParamType.type !== 'Function') {
200
- throw new Error(`--emit requires the function's trailing parameter to be the emit capability (a function type), got ${emitParamType.type}`);
276
+ throw new UsageError(`--emit requires the function's trailing parameter to be the emit capability (a function type)`);
201
277
  }
202
278
  const emitInputs = emitParamType.value.inputs;
203
279
  const expectedArity = kind === 'dict' ? 2 : 1;
204
280
  if (emitInputs.length !== expectedArity) {
205
- throw new Error(`--emit ${kind} expects an emit parameter taking ${expectedArity} argument(s), got ${emitInputs.length}`);
281
+ throw new UsageError(`--emit ${kind} expects an emit parameter taking ${expectedArity} argument(s), got ${emitInputs.length}`);
282
+ }
283
+ if (fold.mergePath !== undefined && kind !== 'dict') {
284
+ throw new UsageError('--merge applies to --emit dict only');
285
+ }
286
+ if (fold.union && kind !== 'set') {
287
+ throw new UsageError('--union applies to --emit set only');
206
288
  }
289
+ const merge = fold.mergePath !== undefined
290
+ ? loadMergeFunction(fold.mergePath, emitInputs[0], emitInputs[1], fold.platformFns, 'the emit parameter')
291
+ : null;
207
292
  // The output collection's wire type is reconstructed from the emit
208
293
  // parameter's argument types.
209
294
  const outTypeValue = kind === 'dict' ? variant('Dict', { key: emitInputs[0], value: emitInputs[1] }) :
210
295
  kind === 'set' ? variant('Set', emitInputs[0]) :
211
296
  variant('Array', emitInputs[0]);
212
- /** Opens a streaming file writer: header at open, terminator + index at
213
- * `finishClose` — every finished file is a complete canonical blob. */
214
- function openFileWriter(path, parallel = false) {
215
- const fd = openSync(path, 'w');
216
- let headerBytes = -1;
217
- const writer = new Beast2Writer(outTypeValue, (bytes) => {
218
- // writeSync may return a short count; loop until the chunk is
219
- // fully on disk — a silently truncated write would corrupt the
220
- // blob while the process still exits 0.
221
- let written = 0;
222
- while (written < bytes.length) {
223
- written += writeSync(fd, bytes, written, bytes.length - written);
224
- }
225
- if (headerBytes < 0)
226
- headerBytes = bytes.length;
227
- }, { parallel });
228
- const refine = (bytes, elements) => {
229
- const avg = Math.max(1, Math.max(1, bytes - Math.max(0, headerBytes)) / elements);
230
- return Math.max(1, Math.min(BEAST2_PAGED_BATCH_DEFAULT, Math.floor(BEAST2_PAGED_TARGET_BYTES_DEFAULT / avg)));
231
- };
232
- return {
233
- writer,
234
- // The next batch size after `elements` have been written. With
235
- // frames deflating on workers (#763) the bytes written are only
236
- // known within bounds; the refinement is monotone in them, so
237
- // agreeing bounds are the serial decision and disagreeing ones
238
- // wait for the frames — the segmentation never depends on timing.
239
- nextBatch: (elements) => {
240
- const { lo, hi } = writer.emittedBounds();
241
- const next = refine(lo, elements);
242
- if (next === refine(hi, elements))
243
- return next;
244
- writer.settle();
245
- return refine(writer.emittedBounds().lo, elements);
246
- },
247
- finishClose: () => { writer.finish(); closeSync(fd); },
248
- closeAbandoned: () => { closeSync(fd); },
249
- };
250
- }
251
297
  // Canonical-order tracking per element, ahead of the writer's own
252
- // batch-level check, so an adjacent duplicate names the offending emit
253
- // call and can never collapse silently inside a batch container.
298
+ // batch-level check, so an adjacent duplicate or an out-of-order key
299
+ // names the offending emit call and can never collapse silently inside a
300
+ // batch container.
254
301
  const orderCmp = kind === 'array' ? null : compareFor(emitInputs[0]);
255
302
  const printKey = kind === 'array' ? null : printFor(emitInputs[0]);
256
- const duplicateMessage = (key) => {
257
- const noun = kind === 'dict' ? 'Dict' : 'Set';
258
- const part = kind === 'dict' ? 'key' : 'element';
259
- return `beast2 v5: duplicate ${noun} ${part} emitted: ${printKey(key)} — ${noun} ${part}s must be unique`;
260
- };
261
- const itemKey = (item) => kind === 'dict' ? item[0] : item;
262
- const toValue = (items) => kind === 'dict' ? new Map(items) : kind === 'set' ? new Set(items) : items;
263
- let out = openFileWriter(outputPath, true);
303
+ const out = new EmitFileWriter(kind, outTypeValue, outputPath);
264
304
  let hasLast = false;
265
305
  let lastKey;
266
- let emitted = 0;
267
- // Byte-adaptive re-batching toward the paged-encode segment target,
268
- // refined from the writer's actual output as segments flush.
269
- let batch = [];
270
- let written = 0;
271
- let nextBatch = BEAST2_PAGED_BATCH_DEFAULT;
272
- const flush = () => {
273
- if (batch.length === 0)
274
- return;
275
- out.writer.write(toValue(batch));
276
- written += batch.length;
277
- batch = [];
278
- nextBatch = out.nextBatch(written);
279
- };
280
- // Out-of-order (spill/merge) state; `buffer === null` means the
281
- // ascending fast path is still live.
282
- let buffer = null;
283
- const runs = [];
284
- const runCap = emitRunElements();
285
- let spilledBytes = 0;
286
- /** East-order sort of buffered items with the adjacent-duplicate check —
287
- * equality is East equality (`compareFor`) throughout. */
288
- const sortRun = (items) => {
289
- const sorted = items.slice().sort((a, b) => orderCmp(itemKey(a), itemKey(b)));
290
- for (let i = 1; i < sorted.length; i++) {
291
- if (orderCmp(itemKey(sorted[i - 1]), itemKey(sorted[i])) === 0) {
292
- throw new Error(duplicateMessage(itemKey(sorted[i])));
293
- }
294
- }
295
- return sorted;
296
- };
297
- const spill = () => {
298
- if (buffer.length === 0)
299
- return;
300
- const sorted = sortRun(buffer);
301
- const path = `${outputPath}.run${runs.length}`;
302
- const run = openFileWriter(path);
303
- for (let i = 0; i < sorted.length; i += BEAST2_PAGED_BATCH_DEFAULT) {
304
- run.writer.write(toValue(sorted.slice(i, i + BEAST2_PAGED_BATCH_DEFAULT)));
305
- }
306
- run.finishClose();
307
- runs.push(path);
308
- spilledBytes += statSync(path).size;
309
- buffer = [];
310
- };
311
- const demote = () => {
312
- // The prefix written so far is ascending, so finishing the writer
313
- // yields a complete canonical beast2 file — demote it to run #0 and
314
- // switch to buffered (sort-in-the-sink) emission.
315
- flush();
316
- out.finishClose();
317
- const run0 = `${outputPath}.run0`;
318
- renameSync(outputPath, run0);
319
- if (written > 0) {
320
- runs.push(run0);
321
- spilledBytes += statSync(run0).size;
322
- }
323
- else {
324
- unlinkSync(run0);
325
- }
326
- buffer = [];
327
- console.error(`east emit: ${kind === 'dict' ? 'Dict keys' : 'Set elements'} left ascending order at ` +
328
- `element ${emitted}; establishing canonical order in the sink (spill/merge)`);
329
- };
330
- const mergeRuns = () => {
331
- // K-way merge the spilled runs and the in-memory tail into the
332
- // canonical output — O(run cap + one decoded segment per run)
333
- // memory, with the cross-run duplicate check on the merged stream.
334
- const tail = buffer.length > 0 ? sortRun(buffer) : [];
335
- buffer = [];
336
- const iters = runs.map((path) => {
337
- const bytes = new Uint8Array(readFileSync(path));
338
- return (function* () {
339
- for (const segment of iterBeast2SegmentsFor(outTypeValue)(bytes)) {
340
- if (kind === 'dict')
341
- yield* segment.entries();
342
- else
343
- yield* segment;
344
- }
345
- })();
346
- });
347
- iters.push(tail[Symbol.iterator]());
348
- const heads = iters.map((it) => it.next());
349
- out = openFileWriter(outputPath, true);
350
- let finished = false;
351
- try {
352
- let prevKey;
353
- let hasPrev = false;
354
- let mergedBatch = [];
355
- let merged = 0;
356
- let next = BEAST2_PAGED_BATCH_DEFAULT;
357
- for (;;) {
358
- let min = -1;
359
- for (let i = 0; i < heads.length; i++) {
360
- if (!heads[i].done && (min < 0 || orderCmp(itemKey(heads[i].value), itemKey(heads[min].value)) < 0)) {
361
- min = i;
362
- }
363
- }
364
- if (min < 0)
365
- break;
366
- const item = heads[min].value;
367
- heads[min] = iters[min].next();
368
- const key = itemKey(item);
369
- if (hasPrev && orderCmp(prevKey, key) === 0)
370
- throw new Error(duplicateMessage(key));
371
- prevKey = key;
372
- hasPrev = true;
373
- mergedBatch.push(item);
374
- if (mergedBatch.length >= next) {
375
- out.writer.write(toValue(mergedBatch));
376
- merged += mergedBatch.length;
377
- mergedBatch = [];
378
- next = out.nextBatch(merged);
379
- }
380
- }
381
- if (mergedBatch.length > 0)
382
- out.writer.write(toValue(mergedBatch));
383
- out.finishClose();
384
- finished = true;
385
- }
386
- finally {
387
- // An error (a cross-run duplicate) leaves the partial output
388
- // unfinalized — no terminator or index — exactly like an error
389
- // on the straight-through path.
390
- if (!finished)
391
- out.closeAbandoned();
392
- }
393
- for (const path of runs)
394
- unlinkSync(path);
395
- if (verbose) {
396
- console.error(` emit: merged ${runs.length} spilled run(s) + in-memory tail (${formatSize(spilledBytes)} temp)`);
397
- }
398
- };
399
306
  const emit = (...args) => {
400
- if (buffer !== null) {
401
- buffer.push(kind === 'dict' ? [args[0], args[1]] : args[0]);
402
- emitted++;
403
- if (buffer.length >= runCap)
404
- spill();
405
- return null;
406
- }
407
307
  const key = args[0];
408
308
  if (orderCmp !== null && hasLast) {
409
309
  const order = orderCmp(lastKey, key);
410
- if (order === 0)
411
- throw new Error(duplicateMessage(key));
412
- if (order > 0) {
413
- demote();
414
- return emit(...args);
310
+ if (order === 0 && fold.union) {
311
+ // The first element stands.
312
+ return null;
415
313
  }
314
+ if (order === 0 && merge !== null) {
315
+ // The flush rule keeps the last entry in the open batch, so
316
+ // the fold lands in place.
317
+ out.foldLast((last) => {
318
+ const [k, acc] = last;
319
+ return [k, merge(key, acc, args[1])];
320
+ });
321
+ return null;
322
+ }
323
+ if (order === 0)
324
+ throw new Error(duplicateMessage(kind, printKey, key));
325
+ if (order > 0)
326
+ throw new Error(disorderMessage(kind, printKey, key, lastKey));
416
327
  }
328
+ out.push(kind === 'dict' ? [key, args[1]] : key);
417
329
  if (orderCmp !== null) {
418
330
  lastKey = key;
419
331
  hasLast = true;
420
332
  }
421
- batch.push(kind === 'dict' ? [args[0], args[1]] : args[0]);
422
- emitted++;
423
- if (batch.length >= nextBatch)
424
- flush();
425
333
  return null;
426
334
  };
427
335
  return {
428
336
  emit,
429
- finish: () => {
430
- if (buffer === null) {
431
- flush();
432
- out.finishClose();
433
- return;
434
- }
435
- mergeRuns();
436
- },
337
+ finish: () => out.finishClose(),
437
338
  };
438
339
  }
439
340
  /** Finalizes the emit sink and reports the output like the return-value path. */
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}