@elaraai/east-node-cli 1.0.78 → 1.0.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -105
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +37 -135
- package/dist/cli.js.map +1 -1
- package/dist/exec.d.ts +36 -0
- package/dist/exec.d.ts.map +1 -0
- package/dist/exec.js +296 -0
- package/dist/exec.js.map +1 -0
- package/dist/exec.spec.d.ts +6 -0
- package/dist/exec.spec.d.ts.map +1 -0
- package/dist/exec.spec.js +91 -0
- package/dist/exec.spec.js.map +1 -0
- package/dist/loader.d.ts +23 -3
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +190 -36
- package/dist/loader.js.map +1 -1
- package/dist/loader.spec.js +188 -4
- package/dist/loader.spec.js.map +1 -1
- package/dist/merge.d.ts +8 -8
- package/dist/merge.d.ts.map +1 -1
- package/dist/merge.js +167 -221
- package/dist/merge.js.map +1 -1
- package/dist/runner.d.ts +25 -49
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +76 -214
- package/dist/runner.js.map +1 -1
- package/dist/runner.spec.js +191 -336
- package/dist/runner.spec.js.map +1 -1
- package/package.json +4 -6
- package/dist/emit-writer.d.ts +0 -74
- package/dist/emit-writer.d.ts.map +0 -1
- package/dist/emit-writer.js +0 -159
- package/dist/emit-writer.js.map +0 -1
- package/dist/snapshot.d.ts +0 -19
- package/dist/snapshot.d.ts.map +0 -1
- package/dist/snapshot.js +0 -116
- package/dist/snapshot.js.map +0 -1
package/dist/merge.js
CHANGED
|
@@ -3,54 +3,112 @@
|
|
|
3
3
|
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* The blob merge behind `
|
|
6
|
+
* The blob merge behind an `exec` merge unit (issue #770).
|
|
7
7
|
*
|
|
8
|
-
* Canonical Set or Dict
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
8
|
+
* Canonical Set or Dict collections of one type in — sorted, indexed beast2 v5
|
|
9
|
+
* blobs, or manifest directories, as a unit's parts are staged — and one
|
|
10
|
+
* canonical collection out, merged by the library's `mergeBeast2For`: every
|
|
11
|
+
* input is read segment by segment through positioned reads, and the output is
|
|
12
|
+
* written through the canonical element writer, so it is byte-identical to
|
|
13
|
+
* what that writer writes for the merged value. Memory is one decoded segment
|
|
14
|
+
* per input plus one open output segment; no temporary file is ever written.
|
|
15
|
+
* This module opens and checks the inputs, reads the key range and loads the
|
|
16
|
+
* fold, refusing each in the words east-c and east-py use.
|
|
16
17
|
*
|
|
17
18
|
* Equal keys across inputs fold in input order: with a merge function (Dict
|
|
18
19
|
* inputs) `acc = merge(key, acc, value)`; in union mode (Set inputs) the
|
|
19
|
-
* first element stands. Without a fold, an equal key is the
|
|
20
|
-
*
|
|
21
|
-
*
|
|
20
|
+
* first element stands. Without a fold, an equal key is the library's
|
|
21
|
+
* duplicate error. An input whose keys do not ascend, an input whose type is
|
|
22
|
+
* not input 0's, and an Array input are refused.
|
|
22
23
|
*
|
|
23
|
-
* With a key range (
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
24
|
+
* With a key range (a blob of `Struct{from: Option<K>, to: Option<K>}` over
|
|
25
|
+
* the inputs' key type) only the keys in `[from, to)` merge: every input is
|
|
26
|
+
* sought to the segment owning `from` through its fences and read up to the
|
|
27
|
+
* first key at or past `to`, so a unit over a range of a large output reads
|
|
28
|
+
* that range's share of each input, plus at most one segment. An absent bound
|
|
29
|
+
* is open; both absent is the whole merge.
|
|
29
30
|
*
|
|
30
|
-
* This is the fan-in of a
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
31
|
+
* This is the fan-in of a split task's set and dict parts: e3 runs it as a
|
|
32
|
+
* merge unit on the task's runner, one per key range of a group of parts, and
|
|
33
|
+
* never decodes a part itself. east-c and east-py merge through the same
|
|
34
|
+
* contract, so the three runners write the same bytes.
|
|
34
35
|
*/
|
|
35
|
-
import { closeSync, fstatSync, openSync, readFileSync, readSync } from 'fs';
|
|
36
|
-
import { OptionType,
|
|
36
|
+
import { closeSync, fstatSync, openSync, readFileSync, readSync, statSync, writeSync } from 'fs';
|
|
37
|
+
import { OptionType, StructType, decodeBeast2For, fromEastTypeValue, isTypeValueEqual, mergeBeast2For, readBeast2Extents, readBeast2HeaderType, readBeast2Manifest, readBeast2Type, toEastTypeValue, } from '@elaraai/east';
|
|
37
38
|
import { printTypeValue } from '@elaraai/east/internal';
|
|
38
|
-
import {
|
|
39
|
-
import {
|
|
39
|
+
import { segmentDirFor } from './loader.js';
|
|
40
|
+
import { loadMergeFunction } from './runner.js';
|
|
41
|
+
/** Writes all of `bytes` to `fd` — `writeSync` may write fewer bytes than
|
|
42
|
+
* asked, and a silently short write would corrupt the file. */
|
|
43
|
+
function writeAll(fd, bytes) {
|
|
44
|
+
let written = 0;
|
|
45
|
+
while (written < bytes.length) {
|
|
46
|
+
written += writeSync(fd, bytes, written, bytes.length - written);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Exactly `length` bytes of the file open as `fd`, from `offset`. */
|
|
50
|
+
function readExactly(fd, offset, length) {
|
|
51
|
+
const out = new Uint8Array(length);
|
|
52
|
+
let done = 0;
|
|
53
|
+
while (done < length) {
|
|
54
|
+
const n = readSync(fd, out, done, length - done, offset + done);
|
|
55
|
+
if (n === 0)
|
|
56
|
+
throw new Error(`beast2: short read at offset ${offset + done}`);
|
|
57
|
+
done += n;
|
|
58
|
+
}
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
40
61
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
62
|
+
* The segments of the manifest directory at `path`, each read through
|
|
63
|
+
* positioned reads on its file in `<path>.segments/`, the convention e3 stages
|
|
64
|
+
* inputs in. A segment's file is opened for each read and closed after it, so
|
|
65
|
+
* a merge of a large manifest holds no descriptor per segment.
|
|
45
66
|
*
|
|
46
|
-
* @param path - the
|
|
67
|
+
* @param path - the manifest's file
|
|
68
|
+
* @param manifest - its decoded manifest
|
|
69
|
+
* @returns the source the merge reads the input through
|
|
70
|
+
*/
|
|
71
|
+
function manifestSource(path, manifest) {
|
|
72
|
+
const dir = segmentDirFor(path);
|
|
73
|
+
return {
|
|
74
|
+
manifest,
|
|
75
|
+
segment(i) {
|
|
76
|
+
const file = `${dir}/${manifest.entries[i].hash}.beast2`;
|
|
77
|
+
let size;
|
|
78
|
+
try {
|
|
79
|
+
size = statSync(file).size;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
throw new Error(`beast2 v5: manifest segment ${file} cannot be read`);
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
size,
|
|
86
|
+
read(offset, length) {
|
|
87
|
+
const fd = openSync(file, 'r');
|
|
88
|
+
try {
|
|
89
|
+
return readExactly(fd, offset, length);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
closeSync(fd);
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Opens input `index` at `path` and checks it is a canonical Set or Dict
|
|
101
|
+
* collection of `expected`'s type: a blob, read through positioned reads on
|
|
102
|
+
* its descriptor, or a manifest directory, read through its segment files.
|
|
103
|
+
*
|
|
104
|
+
* @param path - the blob, or the manifest's file
|
|
47
105
|
* @param index - the input's position, for messages
|
|
48
106
|
* @param expected - input 0's type, or `null` for input 0 itself
|
|
49
107
|
* @returns the opened input and its type
|
|
50
108
|
* @throws {Error} When the file cannot be opened (missing, unreadable, not
|
|
51
109
|
* a regular file), is not a blob (too short, or without the magic — the
|
|
52
|
-
* reader's own words), cannot be read as a canonical collection blob
|
|
53
|
-
* its type is not `expected`.
|
|
110
|
+
* reader's own words), cannot be read as a canonical collection blob or a
|
|
111
|
+
* manifest, or its type is not `expected`.
|
|
54
112
|
*/
|
|
55
113
|
function openInput(path, index, expected) {
|
|
56
114
|
let fd;
|
|
@@ -71,100 +129,54 @@ function openInput(path, index, expected) {
|
|
|
71
129
|
closeSync(fd);
|
|
72
130
|
throw new Error(`merge: input ${index} (${path}): cannot open the file`);
|
|
73
131
|
}
|
|
74
|
-
const reader = {
|
|
75
|
-
|
|
76
|
-
read(offset, length) {
|
|
77
|
-
const out = new Uint8Array(length);
|
|
78
|
-
let done = 0;
|
|
79
|
-
while (done < length) {
|
|
80
|
-
const n = readSync(fd, out, done, length - done, offset + done);
|
|
81
|
-
if (n === 0)
|
|
82
|
-
throw new Error(`beast2: short read at offset ${offset + done}`);
|
|
83
|
-
done += n;
|
|
84
|
-
}
|
|
85
|
-
return out;
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
|
-
const prefixed = (err) => new Error(`merge: input ${index} (${path}): ${err.message ?? String(err)}`);
|
|
132
|
+
const reader = { size, read: (offset, length) => readExactly(fd, offset, length) };
|
|
133
|
+
let manifest;
|
|
89
134
|
let type;
|
|
90
|
-
let
|
|
135
|
+
let selfContained;
|
|
91
136
|
try {
|
|
92
137
|
// The header first: a file too short for a blob, or one without the
|
|
93
138
|
// magic, is refused in the reader's words — the sentence east-c and
|
|
94
139
|
// east-py give for the same bytes — before the index is looked for.
|
|
95
140
|
readBeast2HeaderType(reader);
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
141
|
+
// A manifest directory is the collection its manifest names, its
|
|
142
|
+
// segments standalone blobs, each self-contained.
|
|
143
|
+
manifest = readBeast2Manifest(reader);
|
|
144
|
+
if (manifest !== null) {
|
|
145
|
+
type = manifest.type;
|
|
146
|
+
selfContained = true;
|
|
101
147
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
148
|
+
else {
|
|
149
|
+
const extents = readBeast2Extents(reader);
|
|
150
|
+
type = extents.typeValue;
|
|
151
|
+
selfContained = extents.selfContained;
|
|
105
152
|
}
|
|
106
|
-
if (!extents.selfContained)
|
|
107
|
-
throw new Error('the blob is not self-contained');
|
|
108
|
-
lazy = openBeast2LazyFor(type, { frozen: true })(reader);
|
|
109
153
|
}
|
|
110
154
|
catch (err) {
|
|
111
|
-
const message = err.message ?? '';
|
|
112
|
-
if (message.startsWith('merge: '))
|
|
113
|
-
throw err;
|
|
114
155
|
closeSync(fd);
|
|
115
|
-
throw
|
|
156
|
+
throw new Error(`merge: input ${index} (${path}): ${err.message ?? String(err)}`);
|
|
116
157
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
type,
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
head: null,
|
|
137
|
-
advance: () => {
|
|
138
|
-
if (exhausted)
|
|
139
|
-
return;
|
|
140
|
-
let next;
|
|
141
|
-
try {
|
|
142
|
-
next = iterator.next();
|
|
143
|
-
}
|
|
144
|
-
catch (err) {
|
|
145
|
-
throw prefixed(err);
|
|
146
|
-
}
|
|
147
|
-
if (next.done) {
|
|
148
|
-
exhausted = true;
|
|
149
|
-
input.head = null;
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
const [key, value] = dict ? next.value : [next.value, undefined];
|
|
153
|
-
// The first key at or past the upper bound ends the input.
|
|
154
|
-
if (range.to !== undefined && cmp(key, range.to) >= 0) {
|
|
155
|
-
exhausted = true;
|
|
156
|
-
input.head = null;
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
input.head = { key, value };
|
|
160
|
-
},
|
|
161
|
-
};
|
|
162
|
-
return input;
|
|
163
|
-
},
|
|
164
|
-
};
|
|
158
|
+
let refusal = null;
|
|
159
|
+
if (expected !== null && !isTypeValueEqual(type, expected)) {
|
|
160
|
+
refusal = `merge: input ${index} (${path}) has type ${printTypeValue(type)}, expected ${printTypeValue(expected)} (input 0)`;
|
|
161
|
+
}
|
|
162
|
+
else if (type.type !== 'Set' && type.type !== 'Dict') {
|
|
163
|
+
refusal = `merge: inputs must be Set or Dict blobs, got ${type.type}`;
|
|
164
|
+
}
|
|
165
|
+
else if (!selfContained) {
|
|
166
|
+
refusal = `merge: input ${index} (${path}): the blob is not self-contained`;
|
|
167
|
+
}
|
|
168
|
+
if (refusal !== null) {
|
|
169
|
+
closeSync(fd);
|
|
170
|
+
throw new Error(refusal);
|
|
171
|
+
}
|
|
172
|
+
if (manifest === null)
|
|
173
|
+
return { type, source: reader, close: () => closeSync(fd) };
|
|
174
|
+
// The manifest is read; the segments are read from their own files.
|
|
175
|
+
closeSync(fd);
|
|
176
|
+
return { type, source: manifestSource(path, manifest), close: () => { } };
|
|
165
177
|
}
|
|
166
178
|
/**
|
|
167
|
-
* Reads a
|
|
179
|
+
* Reads a range blob: `Struct{from: Option<K>, to: Option<K>}` over the
|
|
168
180
|
* inputs' key type, self-describing, checked against that type.
|
|
169
181
|
*
|
|
170
182
|
* @param path - the blob
|
|
@@ -179,10 +191,10 @@ function readRange(path, keyType) {
|
|
|
179
191
|
bytes = new Uint8Array(readFileSync(path));
|
|
180
192
|
}
|
|
181
193
|
catch {
|
|
182
|
-
throw new Error(`merge:
|
|
194
|
+
throw new Error(`merge: range (${path}): cannot open the file`);
|
|
183
195
|
}
|
|
184
196
|
// The same shape east-c builds (merge.c) and e3-core writes
|
|
185
|
-
// (
|
|
197
|
+
// (execution/steps.ts): the bounds struct over the key type.
|
|
186
198
|
const key = fromEastTypeValue(keyType);
|
|
187
199
|
const rangeType = toEastTypeValue(StructType({ from: OptionType(key), to: OptionType(key) }));
|
|
188
200
|
let type;
|
|
@@ -190,17 +202,17 @@ function readRange(path, keyType) {
|
|
|
190
202
|
type = readBeast2Type(bytes);
|
|
191
203
|
}
|
|
192
204
|
catch (err) {
|
|
193
|
-
throw new Error(`merge:
|
|
205
|
+
throw new Error(`merge: range (${path}): ${err.message ?? String(err)}`);
|
|
194
206
|
}
|
|
195
207
|
if (!isTypeValueEqual(type, rangeType)) {
|
|
196
|
-
throw new Error(`merge:
|
|
208
|
+
throw new Error(`merge: range (${path}) has type ${printTypeValue(type)}, expected ${printTypeValue(rangeType)} (bounds over the inputs' key type)`);
|
|
197
209
|
}
|
|
198
210
|
let bounds;
|
|
199
211
|
try {
|
|
200
212
|
bounds = decodeBeast2For(rangeType)(bytes);
|
|
201
213
|
}
|
|
202
214
|
catch (err) {
|
|
203
|
-
throw new Error(`merge:
|
|
215
|
+
throw new Error(`merge: range (${path}): ${err.message ?? String(err)}`);
|
|
204
216
|
}
|
|
205
217
|
return {
|
|
206
218
|
from: bounds.from.type === 'some' ? bounds.from.value : undefined,
|
|
@@ -208,135 +220,69 @@ function readRange(path, keyType) {
|
|
|
208
220
|
};
|
|
209
221
|
}
|
|
210
222
|
/**
|
|
211
|
-
* Merges sorted Set or Dict blobs of one type into one canonical
|
|
212
|
-
* `
|
|
223
|
+
* Merges sorted Set or Dict blobs of one type into one canonical collection —
|
|
224
|
+
* an `exec` merge unit's set or dict parts.
|
|
213
225
|
*
|
|
214
226
|
* @param inputPaths - the inputs, in the order equal keys fold; at least one
|
|
215
|
-
* @param
|
|
216
|
-
*
|
|
227
|
+
* @param output - the output blob's path, or the sink a manifest directory is
|
|
228
|
+
* written through
|
|
229
|
+
* @param options - the fold, its platforms, the key range
|
|
217
230
|
* @returns the account: inputs merged, entries written, keys folded
|
|
218
231
|
* @throws {Error} With the merge's message — an input of another type than
|
|
219
232
|
* input 0's, an Array input, keys that do not ascend, a fold whose
|
|
220
233
|
* signature does not match the inputs, a range blob of another shape than
|
|
221
234
|
* the bounds over the inputs' key type, a file that cannot be opened, a
|
|
222
235
|
* shared key without a fold — leaving the output unfinalised (no
|
|
223
|
-
* terminator or index).
|
|
236
|
+
* terminator or index, or no manifest).
|
|
224
237
|
*/
|
|
225
|
-
export function mergeBlobs(inputPaths,
|
|
226
|
-
const started = performance.now();
|
|
238
|
+
export function mergeBlobs(inputPaths, output, options = {}) {
|
|
227
239
|
if (inputPaths.length === 0)
|
|
228
240
|
throw new Error('merge: at least one input is needed');
|
|
229
241
|
if (options.mergePath !== undefined && options.union) {
|
|
230
|
-
throw new Error('merge:
|
|
242
|
+
throw new Error('merge: a merge function and union are two folds — give one');
|
|
231
243
|
}
|
|
232
244
|
const opened = [];
|
|
233
|
-
|
|
234
|
-
let
|
|
235
|
-
let finished = false;
|
|
245
|
+
let fd = -1;
|
|
246
|
+
let stats;
|
|
236
247
|
try {
|
|
237
248
|
const first = openInput(inputPaths[0], 0, null);
|
|
238
249
|
opened.push(first);
|
|
239
250
|
const type = first.type;
|
|
240
|
-
const
|
|
241
|
-
if (options.mergePath !== undefined &&
|
|
242
|
-
throw new Error('
|
|
243
|
-
if (options.union &&
|
|
244
|
-
throw new Error('
|
|
245
|
-
const keyType = (
|
|
246
|
-
const valueType = (kind === 'dict' ? type.value.value : null);
|
|
251
|
+
const dict = type.type === 'Dict';
|
|
252
|
+
if (options.mergePath !== undefined && !dict)
|
|
253
|
+
throw new Error('merge: a merge function applies to Dict inputs only');
|
|
254
|
+
if (options.union && dict)
|
|
255
|
+
throw new Error('merge: union applies to Set inputs only');
|
|
256
|
+
const keyType = (dict ? type.value.key : type.value);
|
|
247
257
|
const merge = options.mergePath !== undefined
|
|
248
|
-
? loadMergeFunction(options.mergePath, keyType,
|
|
249
|
-
:
|
|
250
|
-
const union = options.union ?? false;
|
|
258
|
+
? loadMergeFunction(options.mergePath, keyType, type.value.value, options.platformFns ?? [], 'the inputs')
|
|
259
|
+
: undefined;
|
|
251
260
|
const range = options.rangePath !== undefined ? readRange(options.rangePath, keyType) : { from: undefined, to: undefined };
|
|
252
261
|
for (let i = 1; i < inputPaths.length; i++)
|
|
253
262
|
opened.push(openInput(inputPaths[i], i, type));
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
};
|
|
270
|
-
const siftDown = (at) => {
|
|
271
|
-
for (;;) {
|
|
272
|
-
const l = 2 * at + 1;
|
|
273
|
-
const r = l + 1;
|
|
274
|
-
let least = at;
|
|
275
|
-
if (l < heap.length && before(heap[l], heap[least]))
|
|
276
|
-
least = l;
|
|
277
|
-
if (r < heap.length && before(heap[r], heap[least]))
|
|
278
|
-
least = r;
|
|
279
|
-
if (least === at)
|
|
280
|
-
return;
|
|
281
|
-
[heap[at], heap[least]] = [heap[least], heap[at]];
|
|
282
|
-
at = least;
|
|
283
|
-
}
|
|
284
|
-
};
|
|
285
|
-
for (let i = (heap.length >> 1) - 1; i >= 0; i--)
|
|
286
|
-
siftDown(i);
|
|
287
|
-
out = new EmitFileWriter(kind, type, outputPath);
|
|
288
|
-
let entries = 0;
|
|
289
|
-
let folds = 0;
|
|
290
|
-
// The current key's entry is held until a greater key arrives, so
|
|
291
|
-
// every equal key folds into it before it is written.
|
|
292
|
-
let held = null;
|
|
293
|
-
const put = (entry) => {
|
|
294
|
-
out.push(kind === 'dict' ? [entry.key, entry.value] : entry.key);
|
|
295
|
-
entries++;
|
|
296
|
-
};
|
|
297
|
-
while (heap.length > 0) {
|
|
298
|
-
const input = inputs[heap[0]];
|
|
299
|
-
const { key, value } = input.head;
|
|
300
|
-
if (held !== null && cmp(held.key, key) === 0) {
|
|
301
|
-
if (merge !== null) {
|
|
302
|
-
held.value = merge(key, held.value, value);
|
|
303
|
-
}
|
|
304
|
-
else if (!union) {
|
|
305
|
-
throw new Error(duplicateMessage(kind, printKey, key));
|
|
306
|
-
}
|
|
307
|
-
folds++;
|
|
308
|
-
}
|
|
309
|
-
else {
|
|
310
|
-
if (held !== null)
|
|
311
|
-
put(held);
|
|
312
|
-
held = { key, value };
|
|
313
|
-
}
|
|
314
|
-
input.advance();
|
|
315
|
-
if (input.head === null) {
|
|
316
|
-
heap[0] = heap[heap.length - 1];
|
|
317
|
-
heap.pop();
|
|
318
|
-
}
|
|
319
|
-
if (heap.length > 0)
|
|
320
|
-
siftDown(0);
|
|
321
|
-
}
|
|
322
|
-
if (held !== null)
|
|
323
|
-
put(held);
|
|
324
|
-
out.finishClose();
|
|
325
|
-
finished = true;
|
|
326
|
-
const stats = { inputs: inputs.length, entries, folds };
|
|
327
|
-
if (options.verbose) {
|
|
328
|
-
console.error(`merge: ${stats.inputs} input(s), ${stats.entries} entries, ${stats.folds} fold(s)`);
|
|
329
|
-
console.error(`Output: ${outputPath} (${formatFileSize(outputPath)})`);
|
|
330
|
-
console.error('\nTiming:');
|
|
331
|
-
console.error(` Total: ${(performance.now() - started).toFixed(1).padStart(8)} ms`);
|
|
332
|
-
}
|
|
333
|
-
return stats;
|
|
263
|
+
stats = mergeBeast2For(type, {
|
|
264
|
+
...(merge !== undefined && { merge }),
|
|
265
|
+
union: options.union ?? false,
|
|
266
|
+
from: range.from,
|
|
267
|
+
to: range.to,
|
|
268
|
+
labels: inputPaths,
|
|
269
|
+
// Frames deflate on worker threads (#763).
|
|
270
|
+
parallel: true,
|
|
271
|
+
})(opened.map((input) => input.source), typeof output !== 'string' ? output : (bytes) => {
|
|
272
|
+
// The output is created with its first bytes, which the merge
|
|
273
|
+
// writes once every input has opened, so a refused input leaves
|
|
274
|
+
// no file behind.
|
|
275
|
+
if (fd < 0)
|
|
276
|
+
fd = openSync(output, 'w');
|
|
277
|
+
writeAll(fd, bytes);
|
|
278
|
+
});
|
|
334
279
|
}
|
|
335
280
|
finally {
|
|
336
281
|
for (const input of opened)
|
|
337
282
|
input.close();
|
|
338
|
-
if (
|
|
339
|
-
|
|
283
|
+
if (fd >= 0)
|
|
284
|
+
closeSync(fd);
|
|
340
285
|
}
|
|
286
|
+
return stats;
|
|
341
287
|
}
|
|
342
288
|
//# sourceMappingURL=merge.js.map
|
package/dist/merge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
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 { type UnitResult } from '@elaraai/east';
|
|
5
6
|
import type { PlatformFunction, EastTypeValue } from '@elaraai/east/internal';
|
|
6
7
|
/** A file's size for the verbose account, or `?` when it cannot be read. @internal */
|
|
7
8
|
export declare function formatFileSize(path: string): string;
|
|
8
|
-
/** Streaming-execution options accepted by {@link runProgram}. */
|
|
9
9
|
/**
|
|
10
|
-
* A refusal of the command line itself — a
|
|
11
|
-
*
|
|
10
|
+
* A refusal of the command line itself — a function the inputs given do not
|
|
11
|
+
* fit.
|
|
12
12
|
*
|
|
13
13
|
* These are the user's errors, not the program's, and east-c and east-py
|
|
14
14
|
* answer them with one sentence on stderr. Marking them lets the CLI do the
|
|
@@ -18,55 +18,27 @@ export declare function formatFileSize(path: string): string;
|
|
|
18
18
|
export declare class UsageError extends Error {
|
|
19
19
|
constructor(message: string);
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
* parameter's function type. */
|
|
28
|
-
emit?: 'array' | 'set' | 'dict';
|
|
29
|
-
/** Feed these `-i` inputs (0-based) lazily — segment-by-segment
|
|
30
|
-
* iteration with O(segment) decoded memory — regardless of size.
|
|
31
|
-
* Element shapes the lazy contract excludes (nested mutable
|
|
32
|
-
* containers, vectors/matrices, functions) decode whole instead. */
|
|
33
|
-
streamInputs?: number[];
|
|
34
|
-
/** With `emit: 'dict'`: an IR file (any format the IR positional
|
|
35
|
-
* accepts) holding a `(K, V, V) -> V` East function over the emit
|
|
36
|
-
* parameter's key and value types, compiled with the run's platforms.
|
|
37
|
-
* Adjacent emissions with an equal key fold left with it, in emission
|
|
38
|
-
* order. */
|
|
39
|
-
merge?: string;
|
|
40
|
-
/** With `emit: 'set'`: adjacent equal elements collapse to the first. */
|
|
41
|
-
union?: boolean;
|
|
42
|
-
/** Open indexed beast2 collection inputs at or above this many bytes as
|
|
43
|
-
* lazy pager-backed values (0 disables). Defaults to 64 MiB, or the
|
|
44
|
-
* `EAST_LAZY_INPUT_BYTES` environment variable. Applies only to
|
|
45
|
-
* shape-gate-safe element types (see `loadInputLazy`) — others always
|
|
46
|
-
* decode whole. */
|
|
47
|
-
lazyInputBytes?: number;
|
|
48
|
-
}
|
|
49
|
-
/** Resolves the lazy-open threshold: explicit option, else environment, else
|
|
50
|
-
* the default. An unset or empty `EAST_LAZY_INPUT_BYTES` falls through to
|
|
51
|
-
* the 64 MiB default (`Number('')` is `0`, which would silently DISABLE
|
|
52
|
-
* lazy opening); invalid or negative values fall through too, matching
|
|
53
|
-
* east-c and east-py. Exported for the spec only. @internal */
|
|
54
|
-
export declare function lazyThreshold(options: RunProgramOptions): number;
|
|
21
|
+
/** Resolves the lazy-open threshold: the environment, else the default. An
|
|
22
|
+
* unset or empty `EAST_LAZY_INPUT_BYTES` falls through to the 64 MiB default
|
|
23
|
+
* (`Number('')` is `0`, which would silently DISABLE lazy opening); invalid
|
|
24
|
+
* or negative values fall through too, matching east-c and east-py. Exported
|
|
25
|
+
* for `exec` and the spec. @internal */
|
|
26
|
+
export declare function lazyThreshold(): number;
|
|
55
27
|
/**
|
|
56
28
|
* Runs an East IR program.
|
|
57
29
|
*/
|
|
58
|
-
export declare function runProgram(irPath: string, platformFns: PlatformFunction[], packages: string[], inputPaths: string[], outputPath?: string,
|
|
30
|
+
export declare function runProgram(irPath: string, platformFns: PlatformFunction[], packages: string[], inputPaths: string[], outputPath?: string, verbose?: boolean): Promise<unknown>;
|
|
59
31
|
/** A compiled `(K, V, V) -> V` fold of equal keys. */
|
|
60
32
|
export type MergeFunction = (key: unknown, acc: unknown, value: unknown) => unknown;
|
|
61
33
|
/**
|
|
62
|
-
* Loads a
|
|
63
|
-
*
|
|
64
|
-
*
|
|
34
|
+
* Loads a merge function: an IR file holding a `(K, V, V) -> V` East function
|
|
35
|
+
* over the given key and value types, compiled with the unit's platforms.
|
|
36
|
+
* Shared by `exec`'s dict output and the blob merge.
|
|
65
37
|
*
|
|
66
38
|
* @param path - the IR file (any format the IR positional accepts)
|
|
67
39
|
* @param keyType - the key type
|
|
68
40
|
* @param valueType - the value type
|
|
69
|
-
* @param platformFns - the
|
|
41
|
+
* @param platformFns - the unit's platforms
|
|
70
42
|
* @param subject - what the function must match, for the message: `the emit
|
|
71
43
|
* parameter` or `the inputs`
|
|
72
44
|
* @returns the compiled merge function
|
|
@@ -75,13 +47,17 @@ export type MergeFunction = (key: unknown, acc: unknown, value: unknown) => unkn
|
|
|
75
47
|
*/
|
|
76
48
|
export declare function loadMergeFunction(path: string, keyType: EastTypeValue, valueType: EastTypeValue, platformFns: PlatformFunction[], subject: string): MergeFunction;
|
|
77
49
|
/**
|
|
78
|
-
*
|
|
79
|
-
*
|
|
50
|
+
* Prints a unit's result as `-v` shows it: where the time went, and the
|
|
51
|
+
* process's peak memory.
|
|
52
|
+
*
|
|
53
|
+
* @param result - the result
|
|
54
|
+
*/
|
|
55
|
+
export declare function printResult(result: UnitResult): void;
|
|
56
|
+
/**
|
|
57
|
+
* The process's peak resident memory in bytes: VmHWM on Linux, where
|
|
58
|
+
* `ru_maxrss` carries a parent's peak across exec, and `ru_maxrss` elsewhere.
|
|
80
59
|
*
|
|
81
|
-
* @
|
|
82
|
-
* @param printKey - the key type's printer
|
|
83
|
-
* @param key - the repeated key
|
|
84
|
-
* @returns the message
|
|
60
|
+
* @returns the peak
|
|
85
61
|
*/
|
|
86
|
-
export declare function
|
|
62
|
+
export declare function peakBytes(): bigint;
|
|
87
63
|
//# sourceMappingURL=runner.d.ts.map
|