@elaraai/east-node-cli 1.0.83 → 1.0.85

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/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 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;
@@ -25,8 +25,45 @@ export declare function reportInput(i: number, path: string, type: EastTypeValue
25
25
  */
26
26
  export declare function reportInputLazy(i: number): void;
27
27
  /**
28
- * Prints what reading a lazily opened input came to, against what it weighs;
29
- * nothing for an input read whole.
28
+ * Prints the verbose account of an input decoded whole as it loaded: the
29
+ * growth in resident memory across its decode — what it holds in memory, as a
30
+ * runner that loads its inputs first sees it — beside what it weighs on disk,
31
+ * since a nested collection decodes at many times that.
32
+ *
33
+ * @param i - the input's position
34
+ * @param bytes - the growth in resident memory, in bytes
35
+ * @internal
36
+ */
37
+ export declare function reportInputWhole(i: number, bytes: number): void;
38
+ /**
39
+ * Opens a program's inputs, always frozen: task inputs are immutable, and
40
+ * mutating one throws the uniform copy-first error.
41
+ *
42
+ * With `decode` lazy, each beast2 collection input opens as a paged value
43
+ * whatever it weighs, so a read decodes only the segments it reaches and an
44
+ * operation the pager cannot serve decodes it whole, once, when it first needs
45
+ * it; frozen collapses the shape gate, so nested element shapes open lazily
46
+ * too. With `whole`, every input is decoded before the program runs. An input
47
+ * that cannot open lazily — another format, an index-less blob, an element
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. 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.
54
+ *
55
+ * @param paths - the input files, in parameter order
56
+ * @param types - the parameters' types
57
+ * @param decode - how the collection inputs are read
58
+ * @param verbose - print how each input opened: lazily, or decoded whole and
59
+ * the resident memory it added
60
+ * @returns the inputs, in parameter order
61
+ * @internal
62
+ */
63
+ export declare function openInputs(paths: readonly string[], types: readonly EastTypeValue[], decode: UnitDecode, verbose: boolean): unknown[];
64
+ /**
65
+ * Prints what reading a lazily opened input came to; nothing for an input
66
+ * decoded whole as it loaded ({@link reportLazyReads}).
30
67
  *
31
68
  * @param i - the input's position
32
69
  * @param path - its file
@@ -34,6 +71,35 @@ export declare function reportInputLazy(i: number): void;
34
71
  * @internal
35
72
  */
36
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;
37
103
  /**
38
104
  * A refusal of the command line itself — a function the inputs given do not
39
105
  * fit.
@@ -46,34 +112,23 @@ export declare function reportInputReads(i: number, path: string, value: unknown
46
112
  export declare class UsageError extends Error {
47
113
  constructor(message: string);
48
114
  }
49
- /** Resolves the lazy-open threshold: the environment, else the default. An
50
- * unset or empty `EAST_LAZY_INPUT_BYTES` falls through to the 64 MiB default
51
- * (`Number('')` is `0`, which would silently DISABLE lazy opening); invalid
52
- * or negative values fall through too, matching east-c and east-py. Exported
53
- * for `exec` and the spec. @internal */
54
- export declare function lazyThreshold(): number;
55
115
  /**
56
116
  * Runs an East IR program.
57
- */
58
- export declare function runProgram(irPath: string, platformFns: PlatformFunction[], packages: string[], inputPaths: string[], outputPath?: string, verbose?: boolean): Promise<unknown>;
59
- /** A compiled `(K, V, V) -> V` fold of equal keys. */
60
- export type MergeFunction = (key: unknown, acc: unknown, value: unknown) => unknown;
61
- /**
62
- * Loads a merge function: an IR file holding a `(K, V, V) -> V` East function
63
- * over the given key and value types, compiled with the unit's platforms.
64
- * Shared by `exec`'s dict output and the blob merge.
65
117
  *
66
- * @param path - the IR file (any format the IR positional accepts)
67
- * @param keyType - the key type
68
- * @param valueType - the value type
69
- * @param platformFns - the unit's platforms
70
- * @param subject - what the function must match, for the message: `the emit
71
- * parameter` or `the inputs`
72
- * @returns the compiled merge function
73
- * @throws {Error} When the IR is not a function of that shape, naming the
74
- * expected and the actual types.
118
+ * @param irPath - the program's IR file
119
+ * @param platformFns - the platform functions it may call
120
+ * @param packages - the platform packages they came from, for the verbose
121
+ * account
122
+ * @param inputPaths - one input file per parameter, in order
123
+ * @param outputPath - where the result is written, in its extension's format;
124
+ * without it the result prints as East text
125
+ * @param verbose - print where the time went, the peak memory and how each
126
+ * input opened
127
+ * @param decode - how the collection inputs are read: lazily (the default), or
128
+ * decoded whole before the program runs
129
+ * @returns the result, when it is not written to `outputPath`
75
130
  */
76
- export declare function loadMergeFunction(path: string, keyType: EastTypeValue, valueType: EastTypeValue, platformFns: PlatformFunction[], subject: string): MergeFunction;
131
+ export declare function runProgram(irPath: string, platformFns: PlatformFunction[], packages: string[], inputPaths: string[], outputPath?: string, verbose?: boolean, decode?: UnitDecode): Promise<unknown>;
77
132
  /**
78
133
  * Prints a unit's result as `-v` shows it: where the time went, and the
79
134
  * process's peak memory.
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EASH,KAAK,UAAU,EAClB,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;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAG9E;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI9B;AAKD;;;;yCAIyC;AACzC,wBAAgB,aAAa,IAAI,MAAM,CAOtC;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,GAChB,OAAO,CAAC,OAAO,CAAC,CAoGlB;AAED,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;AAqBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAUpD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAQlC"}
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"}
package/dist/runner.js CHANGED
@@ -4,9 +4,9 @@
4
4
  */
5
5
  import { readFileSync, statSync, writeFileSync } from 'fs';
6
6
  import { extname } from 'path';
7
- import { EastIR, encodeBeast2For, encodeBeast2PagedFor, encodeEastFor, encodeJSONFor, isTypeValueEqual, printFor, variant, } from '@elaraai/east';
8
- import { printTypeValue } from '@elaraai/east/internal';
9
- import { inputBytes, lazyInputBytesRead, loadEastIR, loadInput, loadInputLazy } from './loader.js';
7
+ import { EastIR, beast2LazyStats, encodeBeast2For, encodeBeast2PagedFor, encodeEastFor, encodeJSONFor, printFor, variant, } from '@elaraai/east';
8
+ import { openUnitInputs, printTypeValue } from '@elaraai/east/internal';
9
+ import { fetchingSegments, inputBytes, lazyInputBytesRead, loadEastIR, nodeUnitIO, pagedCacheBytes, residentBytes } from './loader.js';
10
10
  function now() { return process.hrtime.bigint(); }
11
11
  function elapsed(start, end) { return Number(end - start) / 1e6; }
12
12
  function formatSize(bytes) {
@@ -59,8 +59,69 @@ export function reportInputLazy(i) {
59
59
  console.error(` input ${i}: opened lazily — paged from the file`);
60
60
  }
61
61
  /**
62
- * Prints what reading a lazily opened input came to, against what it weighs;
63
- * nothing for an input read whole.
62
+ * What a whole decode added to resident memory, as the verbose account says
63
+ * it: `+X resident`, never below 0 B, since memory freed across the decode can
64
+ * leave the process smaller after it. The load-time and the mid-run
65
+ * whole-decode accounts both say it through here.
66
+ *
67
+ * @param bytes - the growth in resident memory, in bytes
68
+ * @returns the account's words for it
69
+ */
70
+ function formatResident(bytes) {
71
+ return `+${formatSize(Math.max(0, bytes))} resident`;
72
+ }
73
+ /**
74
+ * Prints the verbose account of an input decoded whole as it loaded: the
75
+ * growth in resident memory across its decode — what it holds in memory, as a
76
+ * runner that loads its inputs first sees it — beside what it weighs on disk,
77
+ * since a nested collection decodes at many times that.
78
+ *
79
+ * @param i - the input's position
80
+ * @param bytes - the growth in resident memory, in bytes
81
+ * @internal
82
+ */
83
+ export function reportInputWhole(i, bytes) {
84
+ console.error(` input ${i}: decoded whole — ${formatResident(bytes)}`);
85
+ }
86
+ /** The verbose account of how each input opened, as it opens. */
87
+ const INPUT_REPORT = { openedLazily: reportInputLazy, decodedWhole: reportInputWhole };
88
+ /**
89
+ * Opens a program's inputs, always frozen: task inputs are immutable, and
90
+ * mutating one throws the uniform copy-first error.
91
+ *
92
+ * With `decode` lazy, each beast2 collection input opens as a paged value
93
+ * whatever it weighs, so a read decodes only the segments it reaches and an
94
+ * operation the pager cannot serve decodes it whole, once, when it first needs
95
+ * it; frozen collapses the shape gate, so nested element shapes open lazily
96
+ * too. With `whole`, every input is decoded before the program runs. An input
97
+ * that cannot open lazily — another format, an index-less blob, an element
98
+ * shape holding a Ref or a function — is decoded whole either way. A manifest
99
+ * is the collection it names, its segments the files beside it. A lazy input's
100
+ * pager keeps the segments keyed and index reads decode, up to
101
+ * `EAST_PAGED_CACHE_BYTES` of decoded weight ({@link pagedCacheBytes}). It is
102
+ * east's `openUnitInputs` — what `exec` opens a run unit's inputs by — over
103
+ * this machine's files.
104
+ *
105
+ * @param paths - the input files, in parameter order
106
+ * @param types - the parameters' types
107
+ * @param decode - how the collection inputs are read
108
+ * @param verbose - print how each input opened: lazily, or decoded whole and
109
+ * the resident memory it added
110
+ * @returns the inputs, in parameter order
111
+ * @internal
112
+ */
113
+ export function openInputs(paths, types, decode, verbose) {
114
+ const cacheBytes = pagedCacheBytes();
115
+ return openUnitInputs(nodeUnitIO, paths, types, decode, {
116
+ fetch: fetchingSegments(),
117
+ resident: residentBytes,
118
+ ...(cacheBytes !== undefined && { cacheBytes }),
119
+ ...(verbose && { report: INPUT_REPORT }),
120
+ });
121
+ }
122
+ /**
123
+ * Prints what reading a lazily opened input came to; nothing for an input
124
+ * decoded whole as it loaded ({@link reportLazyReads}).
64
125
  *
65
126
  * @param i - the input's position
66
127
  * @param path - its file
@@ -69,9 +130,60 @@ export function reportInputLazy(i) {
69
130
  */
70
131
  export function reportInputReads(i, path, value) {
71
132
  const read = lazyInputBytesRead(value);
72
- if (read !== undefined)
73
- console.error(` input ${i}: ${formatSize(read)} read of ${formatInputSize(path)}`);
133
+ const stats = beast2LazyStats(value);
134
+ if (read !== undefined && stats !== undefined)
135
+ reportLazyReads(i, path, stats, read);
74
136
  }
137
+ /**
138
+ * Prints what reading a lazily opened input came to.
139
+ *
140
+ * An operation the pager cannot serve decoded the input whole, and says what
141
+ * that added to resident memory; reads that decoded segments again — a scan
142
+ * repeated, which keeps no segment it has passed (#1129), or reads at random
143
+ * beyond the ones the pager keeps — say so, and that decoding the input whole
144
+ * would decode each once but hold all of it; any other reads say the segments
145
+ * they decoded and the fences they probed, and then the bytes they read,
146
+ * against what the input weighs. east-c and east-py say each in the same
147
+ * words, but for the bytes read.
148
+ *
149
+ * @param i - the input's position
150
+ * @param path - its file
151
+ * @param stats - its segment decodes and fence probes, and whether it was read
152
+ * whole
153
+ * @param read - the bytes its reads read from its files
154
+ * @internal
155
+ */
156
+ export function reportLazyReads(i, path, stats, read) {
157
+ if (stats.hydrated) {
158
+ console.error(` input ${i}: decoded whole (an operation the pager cannot serve) — ${formatResident(stats.hydratedBytes)}`);
159
+ }
160
+ else if (stats.segmentsDecoded > stats.segments) {
161
+ console.error(` input ${i}: ${stats.segmentsDecoded} segment decodes of its ${stats.segments} segments, ` +
162
+ `${stats.fencesProbed} fences probed — it read segments again that the pager no longer held (a scan ` +
163
+ 'repeated, or reads at random); decoding it whole would decode each once, but hold the whole input at once');
164
+ }
165
+ else {
166
+ console.error(` input ${i}: ${stats.segmentsDecoded} of ${stats.segments} segments decoded, ${stats.fencesProbed} fences probed — ` +
167
+ `${formatSize(read)} read of ${formatInputSize(path)}`);
168
+ }
169
+ }
170
+ /**
171
+ * The account `exec -v` gives of a run unit's inputs, on stderr: the program
172
+ * and what its file weighs, then each input as `run -v` gives it — its file,
173
+ * what it weighs and its type, whether it opened lazily or was decoded whole,
174
+ * and what reading it came to. It is what reaches a task's log.
175
+ *
176
+ * @internal
177
+ */
178
+ export const unitRunReport = {
179
+ running: (program, inputs) => {
180
+ console.error(`Running: ${program} (${formatFileSize(program)})`);
181
+ inputs.forEach((input, i) => reportInput(i, input.path, input.type));
182
+ },
183
+ openedLazily: reportInputLazy,
184
+ decodedWhole: reportInputWhole,
185
+ lazyReads: reportLazyReads,
186
+ };
75
187
  /**
76
188
  * A refusal of the command line itself — a function the inputs given do not
77
189
  * fit.
@@ -87,26 +199,23 @@ export class UsageError extends Error {
87
199
  this.name = 'UsageError';
88
200
  }
89
201
  }
90
- /** Default size threshold above which collection inputs open lazily. */
91
- const LAZY_INPUT_BYTES_DEFAULT = 64 * 1024 * 1024;
92
- /** Resolves the lazy-open threshold: the environment, else the default. An
93
- * unset or empty `EAST_LAZY_INPUT_BYTES` falls through to the 64 MiB default
94
- * (`Number('')` is `0`, which would silently DISABLE lazy opening); invalid
95
- * or negative values fall through too, matching east-c and east-py. Exported
96
- * for `exec` and the spec. @internal */
97
- export function lazyThreshold() {
98
- const raw = process.env.EAST_LAZY_INPUT_BYTES;
99
- if (raw !== undefined && raw !== '') {
100
- const env = Number(raw);
101
- if (Number.isFinite(env) && env >= 0)
102
- return env;
103
- }
104
- return LAZY_INPUT_BYTES_DEFAULT;
105
- }
106
202
  /**
107
203
  * Runs an East IR program.
204
+ *
205
+ * @param irPath - the program's IR file
206
+ * @param platformFns - the platform functions it may call
207
+ * @param packages - the platform packages they came from, for the verbose
208
+ * account
209
+ * @param inputPaths - one input file per parameter, in order
210
+ * @param outputPath - where the result is written, in its extension's format;
211
+ * without it the result prints as East text
212
+ * @param verbose - print where the time went, the peak memory and how each
213
+ * input opened
214
+ * @param decode - how the collection inputs are read: lazily (the default), or
215
+ * decoded whole before the program runs
216
+ * @returns the result, when it is not written to `outputPath`
108
217
  */
109
- export async function runProgram(irPath, platformFns, packages, inputPaths, outputPath, verbose = false) {
218
+ export async function runProgram(irPath, platformFns, packages, inputPaths, outputPath, verbose = false, decode = variant('lazy', null)) {
110
219
  const t0 = now();
111
220
  // Load as an EastIR bundle so source_map travels with the IR and error
112
221
  // frames resolve end-to-end.
@@ -139,21 +248,9 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
139
248
  console.error(` ${printTypeValue(outputType)}`);
140
249
  }
141
250
  }
142
- // Load inputs — always frozen (task inputs are immutable; mutating one
143
- // throws the uniform copy-first error). Beast2 collection inputs open
144
- // lazily at or above the size threshold, so a sparse read into a huge
145
- // indexed input stops paying a whole decode — and because frozen collapses
146
- // the shape gate, nested-container element shapes open lazily too. The
147
- // size is the value's: an input staged as a manifest is a small file
148
- // naming large ones.
149
- const threshold = lazyThreshold();
150
- const inputs = [];
151
- for (let i = 0; i < inputPaths.length; i++) {
152
- const lazy = threshold > 0 && inputBytes(inputPaths[i]) >= threshold ? loadInputLazy(inputPaths[i]) : undefined;
153
- if (lazy !== undefined && verbose)
154
- reportInputLazy(i);
155
- inputs.push(lazy !== undefined ? lazy : loadInput(inputPaths[i], inputTypes[i]));
156
- }
251
+ // Load inputs, frozen: each collection lazily, unless --decode whole says
252
+ // to decode them before the program runs.
253
+ const inputs = openInputs(inputPaths, inputTypes, decode, verbose);
157
254
  /** The verbose summary's account of each lazy input: what paging came
158
255
  * to, against the size of the value. */
159
256
  const reportLazyReads = () => {
@@ -194,35 +291,6 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
194
291
  }
195
292
  return outputPath ? undefined : result;
196
293
  }
197
- /**
198
- * Loads a merge function: an IR file holding a `(K, V, V) -> V` East function
199
- * over the given key and value types, compiled with the unit's platforms.
200
- * Shared by `exec`'s dict output and the blob merge.
201
- *
202
- * @param path - the IR file (any format the IR positional accepts)
203
- * @param keyType - the key type
204
- * @param valueType - the value type
205
- * @param platformFns - the unit's platforms
206
- * @param subject - what the function must match, for the message: `the emit
207
- * parameter` or `the inputs`
208
- * @returns the compiled merge function
209
- * @throws {Error} When the IR is not a function of that shape, naming the
210
- * expected and the actual types.
211
- */
212
- export function loadMergeFunction(path, keyType, valueType, platformFns, subject) {
213
- const bundle = loadEastIR(path);
214
- const fnType = bundle.ir.value.type;
215
- const shape = fnType.type === 'Function' ? fnType.value : null;
216
- if (shape === null || shape.inputs.length !== 3 ||
217
- !isTypeValueEqual(shape.inputs[0], keyType) ||
218
- !isTypeValueEqual(shape.inputs[1], valueType) ||
219
- !isTypeValueEqual(shape.inputs[2], valueType) ||
220
- !isTypeValueEqual(shape.output, valueType)) {
221
- throw new Error(`merge function: expected a function (K, V, V) -> V matching ${subject} ` +
222
- `(K = ${printTypeValue(keyType)}, V = ${printTypeValue(valueType)}), got ${printTypeValue(fnType)}`);
223
- }
224
- return bundle.compile(platformFns);
225
- }
226
294
  function maybeWriteOutput(outputPath, result, outputType, verbose) {
227
295
  if (!outputPath) {
228
296
  // Print to stdout as .east format (matches east-c / east-py)
@@ -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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"}