@elaraai/east-node-cli 1.0.84 → 1.0.86
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 +9 -6
- package/dist/cli.js +4 -4
- package/dist/cli.js.map +1 -1
- package/dist/exec.d.ts +14 -19
- package/dist/exec.d.ts.map +1 -1
- package/dist/exec.js +40 -330
- package/dist/exec.js.map +1 -1
- package/dist/exec.spec.js +263 -6
- package/dist/exec.spec.js.map +1 -1
- package/dist/loader.d.ts +81 -38
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +180 -305
- package/dist/loader.js.map +1 -1
- package/dist/loader.spec.js +42 -2
- package/dist/loader.spec.js.map +1 -1
- package/dist/merge.d.ts +5 -1
- package/dist/merge.d.ts.map +1 -1
- package/dist/merge.js +24 -241
- package/dist/merge.js.map +1 -1
- package/dist/runner.d.ts +36 -28
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +59 -57
- package/dist/runner.js.map +1 -1
- package/dist/runner.spec.js +29 -4
- package/dist/runner.spec.js.map +1 -1
- package/package.json +3 -3
package/dist/loader.spec.js
CHANGED
|
@@ -15,10 +15,12 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { describe, it } from 'node:test';
|
|
17
17
|
import assert from 'node:assert/strict';
|
|
18
|
-
import { existsSync, mkdtempSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, writeFileSync, rmSync } from 'node:fs';
|
|
18
|
+
import { cpSync, existsSync, mkdtempSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, symlinkSync, writeFileSync, rmSync } from 'node:fs';
|
|
19
19
|
import { tmpdir } from 'node:os';
|
|
20
20
|
import { join, dirname } from 'node:path';
|
|
21
21
|
import { createHash } from 'node:crypto';
|
|
22
|
+
import { spawnSync } from 'node:child_process';
|
|
23
|
+
import { fileURLToPath } from 'node:url';
|
|
22
24
|
import { Worker } from 'node:worker_threads';
|
|
23
25
|
import { DictType, East, IntegerType, StringType, SortedMap, compareFor, decodeBeast2For, encodeBeast2For, encodeBeast2PagedFor, encodeEastIR, isFrozenValue, Beast2Pages, COLLECTION_MANIFEST_KIND, carveBeast2, encodeBeast2FenceFor, encodeCollectionManifest, openBeast2PagesFor, readBeast2Extents, segmentRuleFor, toEastTypeValue, variant, } from '@elaraai/east';
|
|
24
26
|
import { inputBytes, loadPlatform, loadPlatformWithMetadata, loadInput, loadInputLazy, lazyInputBytesRead } from './loader.js';
|
|
@@ -126,6 +128,41 @@ describe('loadPlatform — E3_RUNNER_SEARCH_DIRS (the e3 dataflow-run path)', ()
|
|
|
126
128
|
}
|
|
127
129
|
});
|
|
128
130
|
});
|
|
131
|
+
describe('loadPlatform — a global install, whose bin links into the install', () => {
|
|
132
|
+
it("resolves a package installed beside the CLI from its script's real path, with no NODE_PATH", () => {
|
|
133
|
+
// npm's global layout: <prefix>/lib/node_modules holds the CLI and the
|
|
134
|
+
// packages installed beside it, and the bin node is started with links
|
|
135
|
+
// into the CLI's own. The walk up from the link's directory reaches no
|
|
136
|
+
// node_modules; the walk up from the script's real path does. A link to
|
|
137
|
+
// the CLI's bin directory stands for npm's link to its script: as a
|
|
138
|
+
// junction, it links on Windows too.
|
|
139
|
+
const packageDir = join(dirname(fileURLToPath(import.meta.url)), '..');
|
|
140
|
+
const prefix = mkdtempSync(join(tmpdir(), 'enc-global-'));
|
|
141
|
+
const scratch = mkdtempSync(join(tmpdir(), 'enc-scratch-'));
|
|
142
|
+
const platform = makeFakeProject('acme-global', 'export default [{ name: "acme.global", inputs: [], output: { type: "String" }, type: "sync", fn: () => "" }];\n');
|
|
143
|
+
try {
|
|
144
|
+
const modules = join(prefix, 'lib', 'node_modules');
|
|
145
|
+
const cli = join(modules, '@elaraai', 'east-node-cli');
|
|
146
|
+
mkdirSync(cli, { recursive: true });
|
|
147
|
+
cpSync(join(packageDir, 'package.json'), join(cli, 'package.json'));
|
|
148
|
+
cpSync(join(packageDir, 'bin'), join(cli, 'bin'), { recursive: true });
|
|
149
|
+
symlinkSync(join(packageDir, 'dist'), join(cli, 'dist'), 'junction');
|
|
150
|
+
cpSync(platform, join(modules, 'acme-global'), { recursive: true });
|
|
151
|
+
symlinkSync(join(cli, 'bin'), join(prefix, 'bin'), 'junction');
|
|
152
|
+
const env = { ...process.env };
|
|
153
|
+
delete env.NODE_PATH;
|
|
154
|
+
delete env.E3_RUNNER_SEARCH_DIRS;
|
|
155
|
+
const result = spawnSync(process.execPath, [join(prefix, 'bin', 'east-node.mjs'), 'version', '-p', 'acme-global'], { cwd: scratch, env, encoding: 'utf8' });
|
|
156
|
+
assert.equal(result.status, 0, result.stderr);
|
|
157
|
+
assert.match(result.stdout, /^ {2}acme-global 2\.3\.4 \(1 platform functions\)$/m, result.stdout);
|
|
158
|
+
}
|
|
159
|
+
finally {
|
|
160
|
+
rmSync(prefix, { recursive: true, force: true });
|
|
161
|
+
rmSync(scratch, { recursive: true, force: true });
|
|
162
|
+
rmSync(dirname(platform), { recursive: true, force: true });
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
});
|
|
129
166
|
describe('loadPlatformWithMetadata — project-root resolution fallback', () => {
|
|
130
167
|
it("reads name/version from the project's own package.json via the cwd fallback", async () => {
|
|
131
168
|
const proj = makeFakeProject('acme-meta', 'export default [];\n');
|
|
@@ -304,7 +341,10 @@ describe('loadInputLazy — an input staged as a manifest over segment files', (
|
|
|
304
341
|
if (placed.includes(segment) || existsSync(file)) continue;
|
|
305
342
|
placed.push(segment);
|
|
306
343
|
if (refusal !== undefined) {
|
|
307
|
-
|
|
344
|
+
// Written whole, as e3's host writes it: under a name of its own,
|
|
345
|
+
// then renamed into place, so a runner that finds it reads all of it.
|
|
346
|
+
writeFileSync(file + '.error.partial', refusal);
|
|
347
|
+
renameSync(file + '.error.partial', file + '.error');
|
|
308
348
|
} else {
|
|
309
349
|
copyFileSync(join(store, segment), file + '.placing');
|
|
310
350
|
renameSync(file + '.placing', file);
|
package/dist/loader.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.spec.js","sourceRoot":"","sources":["../src/loader.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loader.spec.js","sourceRoot":"","sources":["../src/loader.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/merge.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
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 {
|
|
5
|
+
import type { Beast2ManifestSink } from '@elaraai/east';
|
|
6
6
|
import type { PlatformFunction } from '@elaraai/east/internal';
|
|
7
7
|
/** Options accepted by {@link mergeBlobs}. */
|
|
8
8
|
export interface MergeBlobsOptions {
|
|
@@ -32,6 +32,10 @@ export interface MergeBlobsStats {
|
|
|
32
32
|
* Merges sorted Set or Dict blobs of one type into one canonical collection —
|
|
33
33
|
* an `exec` merge unit's set or dict parts.
|
|
34
34
|
*
|
|
35
|
+
* @remarks
|
|
36
|
+
* A manifest input's segment the process's host places as it is read
|
|
37
|
+
* ({@link fetchingSegments}) is asked for when the merge first reads it.
|
|
38
|
+
*
|
|
35
39
|
* @param inputPaths - the inputs, in the order equal keys fold; at least one
|
|
36
40
|
* @param output - the output blob's path, or the sink a manifest directory is
|
|
37
41
|
* written through
|
package/dist/merge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAC9B;;+EAE2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;yBAEqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,4BAA4B;AAC5B,MAAM,WAAW,eAAe;IAC5B,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;CACjB;AAWD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,EAAE,OAAO,GAAE,iBAAsB,GAAG,eAAe,CAmB/I"}
|
package/dist/merge.js
CHANGED
|
@@ -3,41 +3,21 @@
|
|
|
3
3
|
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* The blob merge behind an `exec` merge unit (issue #770)
|
|
6
|
+
* The blob merge behind an `exec` merge unit (issue #770), over this
|
|
7
|
+
* machine's files.
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* fold, refusing each in the words east-c and east-py use.
|
|
17
|
-
*
|
|
18
|
-
* Equal keys across inputs fold in input order: with a merge function (Dict
|
|
19
|
-
* inputs) `acc = merge(key, acc, value)`; in union mode (Set inputs) the
|
|
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.
|
|
23
|
-
*
|
|
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.
|
|
30
|
-
*
|
|
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.
|
|
9
|
+
* The merge is east's `mergeUnitParts`, which `executeUnit` runs for a merge
|
|
10
|
+
* unit's set and dict parts: canonical Set or Dict collections of one type in —
|
|
11
|
+
* sorted, indexed beast2 v5 blobs, or manifest directories, as a unit's parts
|
|
12
|
+
* are staged — and one canonical collection out, byte-identical to what the
|
|
13
|
+
* canonical element writer writes for the merged value, read segment by
|
|
14
|
+
* segment and refused in the words east-c and east-py use. This is its file
|
|
15
|
+
* wrapper: the parts are files, and the output a blob file or a manifest
|
|
16
|
+
* directory's sink.
|
|
35
17
|
*/
|
|
36
|
-
import { closeSync,
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
39
|
-
import { segmentDirFor, segmentFile } from './loader.js';
|
|
40
|
-
import { loadMergeFunction } from './runner.js';
|
|
18
|
+
import { closeSync, openSync, writeSync } from 'fs';
|
|
19
|
+
import { mergeUnitParts } from '@elaraai/east/internal';
|
|
20
|
+
import { fetchingSegments, nodeUnitIO } from './loader.js';
|
|
41
21
|
/** Writes all of `bytes` to `fd` — `writeSync` may write fewer bytes than
|
|
42
22
|
* asked, and a silently short write would corrupt the file. */
|
|
43
23
|
function writeAll(fd, bytes) {
|
|
@@ -46,184 +26,14 @@ function writeAll(fd, bytes) {
|
|
|
46
26
|
written += writeSync(fd, bytes, written, bytes.length - written);
|
|
47
27
|
}
|
|
48
28
|
}
|
|
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
|
-
}
|
|
61
|
-
/**
|
|
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; one the host
|
|
66
|
-
* places as it is read is asked for when it is first read.
|
|
67
|
-
*
|
|
68
|
-
* @param path - the manifest's file
|
|
69
|
-
* @param manifest - its decoded manifest
|
|
70
|
-
* @returns the source the merge reads the input through
|
|
71
|
-
*/
|
|
72
|
-
function manifestSource(path, manifest) {
|
|
73
|
-
const dir = segmentDirFor(path);
|
|
74
|
-
return {
|
|
75
|
-
manifest,
|
|
76
|
-
segment(i) {
|
|
77
|
-
const file = segmentFile(`${dir}/${manifest.entries[i].hash}.beast2`);
|
|
78
|
-
let size;
|
|
79
|
-
try {
|
|
80
|
-
size = statSync(file).size;
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
throw new Error(`beast2 v5: manifest segment ${file} cannot be read`);
|
|
84
|
-
}
|
|
85
|
-
return {
|
|
86
|
-
size,
|
|
87
|
-
read(offset, length) {
|
|
88
|
-
const fd = openSync(file, 'r');
|
|
89
|
-
try {
|
|
90
|
-
return readExactly(fd, offset, length);
|
|
91
|
-
}
|
|
92
|
-
finally {
|
|
93
|
-
closeSync(fd);
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
};
|
|
97
|
-
},
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Opens input `index` at `path` and checks it is a canonical Set or Dict
|
|
102
|
-
* collection of `expected`'s type: a blob, read through positioned reads on
|
|
103
|
-
* its descriptor, or a manifest directory, read through its segment files.
|
|
104
|
-
*
|
|
105
|
-
* @param path - the blob, or the manifest's file
|
|
106
|
-
* @param index - the input's position, for messages
|
|
107
|
-
* @param expected - input 0's type, or `null` for input 0 itself
|
|
108
|
-
* @returns the opened input and its type
|
|
109
|
-
* @throws {Error} When the file cannot be opened (missing, unreadable, not
|
|
110
|
-
* a regular file), is not a blob (too short, or without the magic — the
|
|
111
|
-
* reader's own words), cannot be read as a canonical collection blob or a
|
|
112
|
-
* manifest, or its type is not `expected`.
|
|
113
|
-
*/
|
|
114
|
-
function openInput(path, index, expected) {
|
|
115
|
-
let fd;
|
|
116
|
-
let size;
|
|
117
|
-
try {
|
|
118
|
-
fd = openSync(path, 'r');
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
throw new Error(`merge: input ${index} (${path}): cannot open the file`);
|
|
122
|
-
}
|
|
123
|
-
try {
|
|
124
|
-
const stat = fstatSync(fd);
|
|
125
|
-
if (!stat.isFile())
|
|
126
|
-
throw new Error('not a regular file');
|
|
127
|
-
size = stat.size;
|
|
128
|
-
}
|
|
129
|
-
catch {
|
|
130
|
-
closeSync(fd);
|
|
131
|
-
throw new Error(`merge: input ${index} (${path}): cannot open the file`);
|
|
132
|
-
}
|
|
133
|
-
const reader = { size, read: (offset, length) => readExactly(fd, offset, length) };
|
|
134
|
-
let manifest;
|
|
135
|
-
let type;
|
|
136
|
-
let selfContained;
|
|
137
|
-
try {
|
|
138
|
-
// The header first: a file too short for a blob, or one without the
|
|
139
|
-
// magic, is refused in the reader's words — the sentence east-c and
|
|
140
|
-
// east-py give for the same bytes — before the index is looked for.
|
|
141
|
-
readBeast2HeaderType(reader);
|
|
142
|
-
// A manifest directory is the collection its manifest names, its
|
|
143
|
-
// segments standalone blobs, each self-contained.
|
|
144
|
-
manifest = readBeast2Manifest(reader);
|
|
145
|
-
if (manifest !== null) {
|
|
146
|
-
type = manifest.type;
|
|
147
|
-
selfContained = true;
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
const extents = readBeast2Extents(reader);
|
|
151
|
-
type = extents.typeValue;
|
|
152
|
-
selfContained = extents.selfContained;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
catch (err) {
|
|
156
|
-
closeSync(fd);
|
|
157
|
-
throw new Error(`merge: input ${index} (${path}): ${err.message ?? String(err)}`);
|
|
158
|
-
}
|
|
159
|
-
let refusal = null;
|
|
160
|
-
if (expected !== null && !isTypeValueEqual(type, expected)) {
|
|
161
|
-
refusal = `merge: input ${index} (${path}) has type ${printTypeValue(type)}, expected ${printTypeValue(expected)} (input 0)`;
|
|
162
|
-
}
|
|
163
|
-
else if (type.type !== 'Set' && type.type !== 'Dict') {
|
|
164
|
-
refusal = `merge: inputs must be Set or Dict blobs, got ${type.type}`;
|
|
165
|
-
}
|
|
166
|
-
else if (!selfContained) {
|
|
167
|
-
refusal = `merge: input ${index} (${path}): the blob is not self-contained`;
|
|
168
|
-
}
|
|
169
|
-
if (refusal !== null) {
|
|
170
|
-
closeSync(fd);
|
|
171
|
-
throw new Error(refusal);
|
|
172
|
-
}
|
|
173
|
-
if (manifest === null)
|
|
174
|
-
return { type, source: reader, close: () => closeSync(fd) };
|
|
175
|
-
// The manifest is read; the segments are read from their own files.
|
|
176
|
-
closeSync(fd);
|
|
177
|
-
return { type, source: manifestSource(path, manifest), close: () => { } };
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Reads a range blob: `Struct{from: Option<K>, to: Option<K>}` over the
|
|
181
|
-
* inputs' key type, self-describing, checked against that type.
|
|
182
|
-
*
|
|
183
|
-
* @param path - the blob
|
|
184
|
-
* @param keyType - the inputs' key (Dict) or element (Set) type
|
|
185
|
-
* @returns the bounds, an absent one `undefined`
|
|
186
|
-
* @throws {Error} When the file cannot be opened or read as a beast2 blob,
|
|
187
|
-
* or its type is not the bounds struct over the inputs' key type.
|
|
188
|
-
*/
|
|
189
|
-
function readRange(path, keyType) {
|
|
190
|
-
let bytes;
|
|
191
|
-
try {
|
|
192
|
-
bytes = new Uint8Array(readFileSync(path));
|
|
193
|
-
}
|
|
194
|
-
catch {
|
|
195
|
-
throw new Error(`merge: range (${path}): cannot open the file`);
|
|
196
|
-
}
|
|
197
|
-
// The same shape east-c builds (merge.c) and e3-core writes
|
|
198
|
-
// (execution/steps.ts): the bounds struct over the key type.
|
|
199
|
-
const key = fromEastTypeValue(keyType);
|
|
200
|
-
const rangeType = toEastTypeValue(StructType({ from: OptionType(key), to: OptionType(key) }));
|
|
201
|
-
let type;
|
|
202
|
-
try {
|
|
203
|
-
type = readBeast2Type(bytes);
|
|
204
|
-
}
|
|
205
|
-
catch (err) {
|
|
206
|
-
throw new Error(`merge: range (${path}): ${err.message ?? String(err)}`);
|
|
207
|
-
}
|
|
208
|
-
if (!isTypeValueEqual(type, rangeType)) {
|
|
209
|
-
throw new Error(`merge: range (${path}) has type ${printTypeValue(type)}, expected ${printTypeValue(rangeType)} (bounds over the inputs' key type)`);
|
|
210
|
-
}
|
|
211
|
-
let bounds;
|
|
212
|
-
try {
|
|
213
|
-
bounds = decodeBeast2For(rangeType)(bytes);
|
|
214
|
-
}
|
|
215
|
-
catch (err) {
|
|
216
|
-
throw new Error(`merge: range (${path}): ${err.message ?? String(err)}`);
|
|
217
|
-
}
|
|
218
|
-
return {
|
|
219
|
-
from: bounds.from.type === 'some' ? bounds.from.value : undefined,
|
|
220
|
-
to: bounds.to.type === 'some' ? bounds.to.value : undefined,
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
29
|
/**
|
|
224
30
|
* Merges sorted Set or Dict blobs of one type into one canonical collection —
|
|
225
31
|
* an `exec` merge unit's set or dict parts.
|
|
226
32
|
*
|
|
33
|
+
* @remarks
|
|
34
|
+
* A manifest input's segment the process's host places as it is read
|
|
35
|
+
* ({@link fetchingSegments}) is asked for when the merge first reads it.
|
|
36
|
+
*
|
|
227
37
|
* @param inputPaths - the inputs, in the order equal keys fold; at least one
|
|
228
38
|
* @param output - the output blob's path, or the sink a manifest directory is
|
|
229
39
|
* written through
|
|
@@ -237,53 +47,26 @@ function readRange(path, keyType) {
|
|
|
237
47
|
* terminator or index, or no manifest).
|
|
238
48
|
*/
|
|
239
49
|
export function mergeBlobs(inputPaths, output, options = {}) {
|
|
240
|
-
if (inputPaths.length === 0)
|
|
241
|
-
throw new Error('merge: at least one input is needed');
|
|
242
|
-
if (options.mergePath !== undefined && options.union) {
|
|
243
|
-
throw new Error('merge: a merge function and union are two folds — give one');
|
|
244
|
-
}
|
|
245
|
-
const opened = [];
|
|
246
50
|
let fd = -1;
|
|
247
|
-
let stats;
|
|
248
51
|
try {
|
|
249
|
-
|
|
250
|
-
opened.push(first);
|
|
251
|
-
const type = first.type;
|
|
252
|
-
const dict = type.type === 'Dict';
|
|
253
|
-
if (options.mergePath !== undefined && !dict)
|
|
254
|
-
throw new Error('merge: a merge function applies to Dict inputs only');
|
|
255
|
-
if (options.union && dict)
|
|
256
|
-
throw new Error('merge: union applies to Set inputs only');
|
|
257
|
-
const keyType = (dict ? type.value.key : type.value);
|
|
258
|
-
const merge = options.mergePath !== undefined
|
|
259
|
-
? loadMergeFunction(options.mergePath, keyType, type.value.value, options.platformFns ?? [], 'the inputs')
|
|
260
|
-
: undefined;
|
|
261
|
-
const range = options.rangePath !== undefined ? readRange(options.rangePath, keyType) : { from: undefined, to: undefined };
|
|
262
|
-
for (let i = 1; i < inputPaths.length; i++)
|
|
263
|
-
opened.push(openInput(inputPaths[i], i, type));
|
|
264
|
-
stats = mergeBeast2For(type, {
|
|
265
|
-
...(merge !== undefined && { merge }),
|
|
266
|
-
union: options.union ?? false,
|
|
267
|
-
from: range.from,
|
|
268
|
-
to: range.to,
|
|
269
|
-
labels: inputPaths,
|
|
270
|
-
// Frames deflate on worker threads (#763).
|
|
271
|
-
parallel: true,
|
|
272
|
-
})(opened.map((input) => input.source), typeof output !== 'string' ? output : (bytes) => {
|
|
52
|
+
return mergeUnitParts(nodeUnitIO, inputPaths, typeof output !== 'string' ? output : (bytes) => {
|
|
273
53
|
// The output is created with its first bytes, which the merge
|
|
274
54
|
// writes once every input has opened, so a refused input leaves
|
|
275
55
|
// no file behind.
|
|
276
56
|
if (fd < 0)
|
|
277
57
|
fd = openSync(output, 'w');
|
|
278
58
|
writeAll(fd, bytes);
|
|
59
|
+
}, {
|
|
60
|
+
...(options.mergePath !== undefined && { merge: options.mergePath }),
|
|
61
|
+
...(options.union !== undefined && { union: options.union }),
|
|
62
|
+
...(options.rangePath !== undefined && { range: options.rangePath }),
|
|
63
|
+
...(options.platformFns !== undefined && { platforms: options.platformFns }),
|
|
64
|
+
fetch: fetchingSegments(),
|
|
279
65
|
});
|
|
280
66
|
}
|
|
281
67
|
finally {
|
|
282
|
-
for (const input of opened)
|
|
283
|
-
input.close();
|
|
284
68
|
if (fd >= 0)
|
|
285
69
|
closeSync(fd);
|
|
286
70
|
}
|
|
287
|
-
return stats;
|
|
288
71
|
}
|
|
289
72
|
//# 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":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA4B3D;gEACgE;AAChE,SAAS,QAAQ,CAAC,EAAU,EAAE,KAAiB;IAC3C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,IAAI,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IACrE,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,UAAU,CAAC,UAA6B,EAAE,MAAmC,EAAE,UAA6B,EAAE;IAC1H,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,IAAI,CAAC;QACD,OAAO,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1F,8DAA8D;YAC9D,gEAAgE;YAChE,kBAAkB;YAClB,IAAI,EAAE,GAAG,CAAC;gBAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACvC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC,EAAE;YACC,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5D,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5E,KAAK,EAAE,gBAAgB,EAAE;SAC5B,CAAC,CAAC;IACP,CAAC;YAAS,CAAC;QACP,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;AACL,CAAC"}
|
package/dist/runner.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
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 UnitDecode, type UnitResult } from '@elaraai/east';
|
|
5
|
+
import { type Beast2LazyStats, type UnitDecode, type UnitResult, type UnitRunReport } from '@elaraai/east';
|
|
6
6
|
import type { PlatformFunction, EastTypeValue } from '@elaraai/east/internal';
|
|
7
7
|
/** A file's size for the verbose account, or `?` when it cannot be read. @internal */
|
|
8
8
|
export declare function formatFileSize(path: string): string;
|
|
@@ -46,7 +46,11 @@ export declare function reportInputWhole(i: number, bytes: number): void;
|
|
|
46
46
|
* too. With `whole`, every input is decoded before the program runs. An input
|
|
47
47
|
* that cannot open lazily — another format, an index-less blob, an element
|
|
48
48
|
* shape holding a Ref or a function — is decoded whole either way. A manifest
|
|
49
|
-
* is the collection it names, its segments the files beside it.
|
|
49
|
+
* is the collection it names, its segments the files beside it. A lazy input's
|
|
50
|
+
* pager keeps the segments keyed and index reads decode, up to
|
|
51
|
+
* `EAST_PAGED_CACHE_BYTES` of decoded weight ({@link pagedCacheBytes}). It is
|
|
52
|
+
* east's `openUnitInputs` — what `exec` opens a run unit's inputs by — over
|
|
53
|
+
* this machine's files.
|
|
50
54
|
*
|
|
51
55
|
* @param paths - the input files, in parameter order
|
|
52
56
|
* @param types - the parameters' types
|
|
@@ -59,14 +63,7 @@ export declare function reportInputWhole(i: number, bytes: number): void;
|
|
|
59
63
|
export declare function openInputs(paths: readonly string[], types: readonly EastTypeValue[], decode: UnitDecode, verbose: boolean): unknown[];
|
|
60
64
|
/**
|
|
61
65
|
* Prints what reading a lazily opened input came to; nothing for an input
|
|
62
|
-
* decoded whole as it loaded.
|
|
63
|
-
*
|
|
64
|
-
* An operation the pager cannot serve decoded the input whole, and says what
|
|
65
|
-
* that added to resident memory; reads that decoded segments again, beyond the
|
|
66
|
-
* ones the pager keeps, say so, since decoding the input whole would decode
|
|
67
|
-
* each once; any other reads say the segments they decoded and the fences
|
|
68
|
-
* they probed, and then the bytes they read, against what the input weighs.
|
|
69
|
-
* east-c and east-py say each in the same words, but for the bytes read.
|
|
66
|
+
* decoded whole as it loaded ({@link reportLazyReads}).
|
|
70
67
|
*
|
|
71
68
|
* @param i - the input's position
|
|
72
69
|
* @param path - its file
|
|
@@ -74,6 +71,35 @@ export declare function openInputs(paths: readonly string[], types: readonly Eas
|
|
|
74
71
|
* @internal
|
|
75
72
|
*/
|
|
76
73
|
export declare function reportInputReads(i: number, path: string, value: unknown): void;
|
|
74
|
+
/**
|
|
75
|
+
* Prints what reading a lazily opened input came to.
|
|
76
|
+
*
|
|
77
|
+
* An operation the pager cannot serve decoded the input whole, and says what
|
|
78
|
+
* that added to resident memory; reads that decoded segments again — a scan
|
|
79
|
+
* repeated, which keeps no segment it has passed (#1129), or reads at random
|
|
80
|
+
* beyond the ones the pager keeps — say so, and that decoding the input whole
|
|
81
|
+
* would decode each once but hold all of it; any other reads say the segments
|
|
82
|
+
* they decoded and the fences they probed, and then the bytes they read,
|
|
83
|
+
* against what the input weighs. east-c and east-py say each in the same
|
|
84
|
+
* words, but for the bytes read.
|
|
85
|
+
*
|
|
86
|
+
* @param i - the input's position
|
|
87
|
+
* @param path - its file
|
|
88
|
+
* @param stats - its segment decodes and fence probes, and whether it was read
|
|
89
|
+
* whole
|
|
90
|
+
* @param read - the bytes its reads read from its files
|
|
91
|
+
* @internal
|
|
92
|
+
*/
|
|
93
|
+
export declare function reportLazyReads(i: number, path: string, stats: Beast2LazyStats, read: number): void;
|
|
94
|
+
/**
|
|
95
|
+
* The account `exec -v` gives of a run unit's inputs, on stderr: the program
|
|
96
|
+
* and what its file weighs, then each input as `run -v` gives it — its file,
|
|
97
|
+
* what it weighs and its type, whether it opened lazily or was decoded whole,
|
|
98
|
+
* and what reading it came to. It is what reaches a task's log.
|
|
99
|
+
*
|
|
100
|
+
* @internal
|
|
101
|
+
*/
|
|
102
|
+
export declare const unitRunReport: UnitRunReport;
|
|
77
103
|
/**
|
|
78
104
|
* A refusal of the command line itself — a function the inputs given do not
|
|
79
105
|
* fit.
|
|
@@ -103,24 +129,6 @@ export declare class UsageError extends Error {
|
|
|
103
129
|
* @returns the result, when it is not written to `outputPath`
|
|
104
130
|
*/
|
|
105
131
|
export declare function runProgram(irPath: string, platformFns: PlatformFunction[], packages: string[], inputPaths: string[], outputPath?: string, verbose?: boolean, decode?: UnitDecode): Promise<unknown>;
|
|
106
|
-
/** A compiled `(K, V, V) -> V` fold of equal keys. */
|
|
107
|
-
export type MergeFunction = (key: unknown, acc: unknown, value: unknown) => unknown;
|
|
108
|
-
/**
|
|
109
|
-
* Loads a merge function: an IR file holding a `(K, V, V) -> V` East function
|
|
110
|
-
* over the given key and value types, compiled with the unit's platforms.
|
|
111
|
-
* Shared by `exec`'s dict output and the blob merge.
|
|
112
|
-
*
|
|
113
|
-
* @param path - the IR file (any format the IR positional accepts)
|
|
114
|
-
* @param keyType - the key type
|
|
115
|
-
* @param valueType - the value type
|
|
116
|
-
* @param platformFns - the unit's platforms
|
|
117
|
-
* @param subject - what the function must match, for the message: `the emit
|
|
118
|
-
* parameter` or `the inputs`
|
|
119
|
-
* @returns the compiled merge function
|
|
120
|
-
* @throws {Error} When the IR is not a function of that shape, naming the
|
|
121
|
-
* expected and the actual types.
|
|
122
|
-
*/
|
|
123
|
-
export declare function loadMergeFunction(path: string, keyType: EastTypeValue, valueType: EastTypeValue, platformFns: PlatformFunction[], subject: string): MergeFunction;
|
|
124
132
|
/**
|
|
125
133
|
* Prints a unit's result as `-v` shows it: where the time went, and the
|
|
126
134
|
* process's peak memory.
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EASH,KAAK,eAAe,EACpB,KAAK,UAAU,EAEf,KAAK,UAAU,EACf,KAAK,aAAa,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAa9E,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAQD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAG9E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAE/C;AAeD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAE/D;AAKD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,aAAa,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,CAQrI;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAI9E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAWnG;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,aAQ3B,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI9B;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,UAAQ,EACf,MAAM,GAAE,UAAkC,GAC3C,OAAO,CAAC,OAAO,CAAC,CAyFlB;AAqBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAUpD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAQlC"}
|