@elaraai/e3 1.0.76 → 1.0.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/src/dataset-file.d.ts +68 -0
- package/dist/src/dataset-file.d.ts.map +1 -0
- package/dist/src/dataset-file.js +159 -0
- package/dist/src/dataset-file.js.map +1 -0
- package/dist/src/export.d.ts.map +1 -1
- package/dist/src/export.js +39 -15
- package/dist/src/export.js.map +1 -1
- package/dist/src/export.spec.js +89 -7
- package/dist/src/export.spec.js.map +1 -1
- package/dist/src/function.spec.js +28 -2
- package/dist/src/function.spec.js.map +1 -1
- package/dist/src/functions-link.spec.js +13 -13
- package/dist/src/functions-link.spec.js.map +1 -1
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/input.d.ts +42 -7
- package/dist/src/input.d.ts.map +1 -1
- package/dist/src/input.js +38 -8
- package/dist/src/input.js.map +1 -1
- package/dist/src/open-beast-link.spec.js +3 -3
- package/dist/src/open-beast-link.spec.js.map +1 -1
- package/dist/src/package.d.ts +1 -1
- package/dist/src/package.js +1 -1
- package/dist/src/task.d.ts +75 -21
- package/dist/src/task.d.ts.map +1 -1
- package/dist/src/task.js +105 -108
- package/dist/src/task.js.map +1 -1
- package/dist/src/task.spec.js +183 -23
- package/dist/src/task.spec.js.map +1 -1
- package/dist/src/types.d.ts +21 -1
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/src/input.js
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 { variant } from '@elaraai/east';
|
|
5
|
+
import { isVariant, StringType, VariantType, variant } from '@elaraai/east';
|
|
6
6
|
/**
|
|
7
7
|
* Singleton datatree definition for `.inputs`.
|
|
8
8
|
*
|
|
@@ -14,6 +14,22 @@ export const inputsTree = {
|
|
|
14
14
|
path: [variant('field', 'inputs')],
|
|
15
15
|
deps: new Set(),
|
|
16
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Where an input's initial value comes from.
|
|
19
|
+
*
|
|
20
|
+
* @remarks
|
|
21
|
+
* Two cases, one shape: `value` holds the value inline (it travels in the
|
|
22
|
+
* package), while `file` names a beast2 file that stays where it is and is
|
|
23
|
+
* adopted into the object store by hash at deploy. A 2 GB delivery is therefore
|
|
24
|
+
* an ordinary content-addressed dataset — in the inputs hash, paged by every
|
|
25
|
+
* runner, carved by `partitionTask` — instead of a String input plus a
|
|
26
|
+
* `FileSystem.openBeast` inside a task body.
|
|
27
|
+
*
|
|
28
|
+
* @typeParam T - The East type of the input value
|
|
29
|
+
*/
|
|
30
|
+
export const DatasetSourceType = (type) => VariantType({ value: type, file: StringType });
|
|
31
|
+
/** The tags {@link input} accepts, for the definition-time refusal. */
|
|
32
|
+
const SOURCE_TAGS = new Set(['value', 'file']);
|
|
17
33
|
/**
|
|
18
34
|
* Defines an input dataset.
|
|
19
35
|
*
|
|
@@ -22,27 +38,41 @@ export const inputsTree = {
|
|
|
22
38
|
* @typeParam T - The East type of the input value
|
|
23
39
|
* @param name - Dataset name (used as path segment in the tree)
|
|
24
40
|
* @param type - East type of the input value
|
|
25
|
-
* @param
|
|
41
|
+
* @param source - Where the initial value comes from: `variant('value', v)`
|
|
42
|
+
* inline, or `variant('file', path)` for a beast2 file on the deploying
|
|
43
|
+
* machine. Omit it for an input that is unassigned until something sets it.
|
|
26
44
|
* @returns A DatasetDef that can be used in dataflows and packages
|
|
27
45
|
*
|
|
46
|
+
* @throws {Error} When the third argument is not one of those two variants —
|
|
47
|
+
* the bare-value form (`input('n', StringType, 'World')`) is no longer
|
|
48
|
+
* accepted, because a value and a path are not distinguishable once the type is
|
|
49
|
+
* `StringType`.
|
|
50
|
+
*
|
|
28
51
|
* @example
|
|
29
52
|
* ```ts
|
|
30
|
-
* import {
|
|
53
|
+
* import { ArrayType, DictType, FloatType, IntegerType, StringType, variant } from '@elaraai/east';
|
|
54
|
+
*
|
|
55
|
+
* // A small value, inline in the package
|
|
56
|
+
* const rates = input('rates', DictType(StringType, FloatType), variant('value', new Map([['AUD', 1.0]])));
|
|
31
57
|
*
|
|
32
|
-
* //
|
|
33
|
-
* const
|
|
58
|
+
* // A large delivery, adopted by hash at deploy — the file is the value
|
|
59
|
+
* const table = input('table', ArrayType(RowType), variant('file', './deliveries/TABLE.beast2'));
|
|
34
60
|
*
|
|
35
|
-
* //
|
|
61
|
+
* // Unassigned until something sets it
|
|
36
62
|
* const count = input('count', IntegerType);
|
|
37
63
|
* ```
|
|
38
64
|
*/
|
|
39
|
-
export function input(name, type,
|
|
65
|
+
export function input(name, type, source) {
|
|
66
|
+
if (source !== undefined && !(isVariant(source) && SOURCE_TAGS.has(source.type))) {
|
|
67
|
+
throw new Error(`e3.input('${name}'): the third argument is a source — variant('value', v) ` +
|
|
68
|
+
`or variant('file', path)`);
|
|
69
|
+
}
|
|
40
70
|
return {
|
|
41
71
|
kind: 'dataset',
|
|
42
72
|
name,
|
|
43
73
|
path: [variant('field', 'inputs'), variant('field', name)],
|
|
44
74
|
type,
|
|
45
|
-
|
|
75
|
+
source,
|
|
46
76
|
writable: true,
|
|
47
77
|
deps: new Set([...inputsTree.deps, inputsTree]),
|
|
48
78
|
};
|
package/dist/src/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG5E;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClC,IAAI,EAAE,IAAI,GAAG,EAAE;CAChB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAqB,IAAO,EAAE,EAAE,CAC/D,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAWjD,uEAAuE;AACvE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,KAAK,CACnB,IAAU,EACV,IAAO,EACP,MAAyB;IAEzB,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,2DAA2D;YAC5E,0BAA0B,CAC3B,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI;QACJ,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI;QACJ,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KAChD,CAAC;AACJ,CAAC"}
|
|
@@ -18,7 +18,7 @@ import * as fs from 'node:fs';
|
|
|
18
18
|
import * as os from 'node:os';
|
|
19
19
|
import * as path from 'node:path';
|
|
20
20
|
import yauzl from 'yauzl';
|
|
21
|
-
import { East, DictType, FunctionType, IntegerType, StringType, StructType, decodeBeast2For, decodeEastIR, walkIR, IMPORT_PLATFORM, } from '@elaraai/east';
|
|
21
|
+
import { East, DictType, FunctionType, IntegerType, StringType, StructType, decodeBeast2For, decodeEastIR, walkIR, IMPORT_PLATFORM, variant } from '@elaraai/east';
|
|
22
22
|
import { DatasetRefType } from '@elaraai/e3-types';
|
|
23
23
|
import { export_ } from './export.js';
|
|
24
24
|
import { package_ } from './package.js';
|
|
@@ -112,7 +112,7 @@ describe('FileSystem.openBeast links on every stock runner (#660)', () => {
|
|
|
112
112
|
});
|
|
113
113
|
for (const runner of STOCK_RUNNERS) {
|
|
114
114
|
it(`embeds the imported function for the ${runner.runtime} runner, its generic platform call intact`, async () => {
|
|
115
|
-
const file = input('file', StringType, 'rows.beast2');
|
|
115
|
+
const file = input('file', StringType, variant('value', 'rows.beast2'));
|
|
116
116
|
const use = task('sum_rows', [file], East.function([StringType], IntegerType, ($, p) => tot(p)), { runner });
|
|
117
117
|
const pkg = package_('importer', '1.0.0', use);
|
|
118
118
|
const zipPath = path.join(tempDir, `importer-${runner.runtime}.zip`);
|
|
@@ -123,7 +123,7 @@ describe('FileSystem.openBeast links on every stock runner (#660)', () => {
|
|
|
123
123
|
});
|
|
124
124
|
}
|
|
125
125
|
it("refuses a runner whose packages do not provide the call, naming it", async () => {
|
|
126
|
-
const file = input('file', StringType, 'rows.beast2');
|
|
126
|
+
const file = input('file', StringType, variant('value', 'rows.beast2'));
|
|
127
127
|
const use = task('sum_rows', [file], East.function([StringType], IntegerType, ($, p) => tot(p)), {
|
|
128
128
|
runner: { runtime: 'east-node', platforms: ['@elaraai/east-node-io'] },
|
|
129
129
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-beast-link.spec.js","sourceRoot":"","sources":["../../src/open-beast-link.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EACjE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"open-beast-link.spec.js","sourceRoot":"","sources":["../../src/open-beast-link.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EACjE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAe,MAAM,aAAa,CAAC;AAE1D,+DAA+D;AAC/D,+CAA+C;AAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;AACtF,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AAE3F,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;IACjE,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QACtB,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,CAAC;AACH,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;AACrH,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AAE5F,SAAS,YAAY,CAAC,EAAW;IAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,CAAC,EAAS,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe;QAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,oBAAoB,CAAC,EAAW;IACvC,MAAM,KAAK,GAAoD,EAAE,CAAC;IAClE,MAAM,CAAC,EAAS,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,2CAA2C;AAC3C,KAAK,UAAU,OAAO,CAAC,OAAe;IACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YAC1D,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC1C,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;wBAChD,IAAI,GAAG;4BAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC5B,IAAI,CAAC,UAAU;4BAAE,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;wBAC5D,MAAM,MAAM,GAAa,EAAE,CAAC;wBAC5B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;wBACrD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;4BACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;4BACnD,OAAO,CAAC,SAAS,EAAE,CAAC;wBACtB,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6DAA6D;AAC7D,SAAS,IAAI,CAAC,OAA4B,EAAE,OAAe;IACzD,MAAM,GAAG,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,OAAO,MAAM,CAAE,CAAC,CAAC,CAAC;IACjG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,MAAM,IAAI,GAAI,GAAW,CAAC,KAAK,CAAC,IAAc,CAAC;IAC/C,OAAO,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAE,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED,MAAM,aAAa,GAA0B;IAC3C,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,wBAAwB,CAAC,EAAE;IAC/D,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE;IAChD,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,aAAa,CAAC,EAAE;CACnD,CAAC;AAEF,QAAQ,CAAC,yDAAyD,EAAE,GAAG,EAAE;IACvE,IAAI,OAAe,CAAC;IACpB,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,EAAE,CAAC,wCAAwC,MAAM,CAAC,OAAO,2CAA2C,EAAE,KAAK,IAAI,EAAE;YAC/G,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;YACxE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7G,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC;YACrE,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,4BAA4B,CAAC,CAAC;YAC1E,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,oCAAoC,CAAC,CAAC;YACrF,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1G,CAAC,CAAC,CAAC;IACL,CAAC;IAED,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YAC/F,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,uBAAuB,CAAC,EAAE;SACvE,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,OAAO,CAClB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAC7E,qKAAqK,CACtK,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/src/package.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ import type { FunctionDef, MutationDef, PackageDef, PackageItem } from './types.
|
|
|
25
25
|
*
|
|
26
26
|
* @example
|
|
27
27
|
* ```ts
|
|
28
|
-
* const input_name = e3.input('name', StringType, 'World');
|
|
28
|
+
* const input_name = e3.input('name', StringType, variant('value', 'World'));
|
|
29
29
|
* const say_hello = e3.task('say_hello', [input_name], ...);
|
|
30
30
|
*
|
|
31
31
|
* // Only need to pass the final task - input_name is included automatically
|
package/dist/src/package.js
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
*
|
|
22
22
|
* @example
|
|
23
23
|
* ```ts
|
|
24
|
-
* const input_name = e3.input('name', StringType, 'World');
|
|
24
|
+
* const input_name = e3.input('name', StringType, variant('value', 'World'));
|
|
25
25
|
* const say_hello = e3.task('say_hello', [input_name], ...);
|
|
26
26
|
*
|
|
27
27
|
* // Only need to pass the final task - input_name is included automatically
|
package/dist/src/task.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export declare const tasksTree: DataTreeDef;
|
|
|
49
49
|
*
|
|
50
50
|
* @example
|
|
51
51
|
* ```ts
|
|
52
|
-
* const input_name = e3.input('name', StringType, 'World');
|
|
52
|
+
* const input_name = e3.input('name', StringType, variant('value', 'World'));
|
|
53
53
|
*
|
|
54
54
|
* const say_hello = e3.task(
|
|
55
55
|
* 'say_hello',
|
|
@@ -106,6 +106,11 @@ type IntersectKeysAll<A, Rest> = Rest extends readonly [] ? A : Rest extends rea
|
|
|
106
106
|
type ByResult<K> = Expr<any> | (K extends StructType<infer F> ? {
|
|
107
107
|
[P in keyof F]?: ExprType<F[P]>;
|
|
108
108
|
} : never);
|
|
109
|
+
/** What `merge` takes for a keyed output: a Dict output folds the values of
|
|
110
|
+
* equal keys with a function of the key and two values, a Set output
|
|
111
|
+
* collapses equal elements with the literal `'union'`, and no other output
|
|
112
|
+
* takes one. */
|
|
113
|
+
type OutputMerge<Output extends EastType> = Output extends DictType<infer K, infer V> ? ($: BlockBuilder<V>, key: ExprType<K>, a: ExprType<V>, b: ExprType<V>) => SubtypeExprOrValue<V> | void : Output extends SetType<any> ? 'union' : never;
|
|
109
114
|
/**
|
|
110
115
|
* The declaration half of {@link partitionTask} — everything structural about
|
|
111
116
|
* the task; the body comes last as the `fn` argument.
|
|
@@ -142,6 +147,34 @@ export interface PartitionTaskSpec<Partitions extends readonly [DatasetDef, ...D
|
|
|
142
147
|
* pairwise in a fixed tree order; when absent, each execution returns its
|
|
143
148
|
* shard of the output and the shards splice in partition order. */
|
|
144
149
|
readonly combine?: ($: BlockBuilder<Output>, a: ExprType<Output>, b: ExprType<Output>) => SubtypeExprOrValue<Output> | void;
|
|
150
|
+
/**
|
|
151
|
+
* Per-key resolution for keyed partials that may collide — the third
|
|
152
|
+
* assembly mode, alongside splice and `combine`.
|
|
153
|
+
*
|
|
154
|
+
* @remarks
|
|
155
|
+
* The partials are merged by the task's runner — its `merge` command, over
|
|
156
|
+
* sorted partials, in one pass; the orchestrator never decodes them.
|
|
157
|
+
* Partials whose key ranges overlap are grouped, and each group merges
|
|
158
|
+
* through a tree of merge executions (up to 32 partials each) folding equal
|
|
159
|
+
* keys in partition order; partials no other partial reaches take no merge
|
|
160
|
+
* at all, and the results splice. Every merge unit is an ordinary cached
|
|
161
|
+
* execution: a re-run with unchanged partials merges nothing again, and the
|
|
162
|
+
* intermediate results of the tree are stored like any other execution
|
|
163
|
+
* output. The merge command is built here, at export, and carried in the
|
|
164
|
+
* package's metadata like any other command IR.
|
|
165
|
+
*
|
|
166
|
+
* A `Dict` output takes a function of the key and two of its values, over
|
|
167
|
+
* the output's own key and value types; a `Set` output takes the literal
|
|
168
|
+
* `'union'`. The function must be associative — a key's values may fold in
|
|
169
|
+
* any grouping, though never out of partition order. Mutually exclusive with
|
|
170
|
+
* {@link combine}, which stays the mode for non-collection outputs (KPIs,
|
|
171
|
+
* counts) and for authors who want a whole-value fold.
|
|
172
|
+
*
|
|
173
|
+
* Needs a stock runtime: the merge units run the runner's `merge` command,
|
|
174
|
+
* which the `custom` runtime does not have and an older runner does not
|
|
175
|
+
* ship.
|
|
176
|
+
*/
|
|
177
|
+
readonly merge?: OutputMerge<Output>;
|
|
145
178
|
/** Target carved-slice size in wire bytes. Defaults to 256 MiB. */
|
|
146
179
|
readonly targetPartitionBytes?: number;
|
|
147
180
|
/** Runtime the body runs on; defaults to {@link DEFAULT_RUNNER}. */
|
|
@@ -153,8 +186,9 @@ export interface PartitionTaskSpec<Partitions extends readonly [DatasetDef, ...D
|
|
|
153
186
|
* Defines a partitioned task: e3 carves the huge partitioned input(s) into
|
|
154
187
|
* key-range slices, runs `fn` once per partition as an ordinary
|
|
155
188
|
* content-addressed execution (parallel, memoized per partition), and
|
|
156
|
-
* assembles the output — by splicing shards in partition order,
|
|
157
|
-
*
|
|
189
|
+
* assembles the output — by splicing shards in partition order, by merging
|
|
190
|
+
* keyed partials on the task's runner when `merge` is given, or by folding
|
|
191
|
+
* partials pairwise when `combine` is given.
|
|
158
192
|
*
|
|
159
193
|
* `fn` always returns the output type: without `combine` each execution
|
|
160
194
|
* returns its *shard* of the output (Array shards concatenate freely;
|
|
@@ -184,8 +218,9 @@ export interface PartitionTaskSpec<Partitions extends readonly [DatasetDef, ...D
|
|
|
184
218
|
* mix collection kinds (or include Arrays) under co-partitioning, key
|
|
185
219
|
* types cannot align, `by` (explicit or the implicit alignment under
|
|
186
220
|
* co-partitioning) does not read a leading prefix of every partitioned
|
|
187
|
-
* dataset's key,
|
|
188
|
-
* `combine`)
|
|
221
|
+
* dataset's key, the output is not a collection in splice mode (no
|
|
222
|
+
* `combine`), or `merge` is given alongside `combine`, on an Array output,
|
|
223
|
+
* in the wrong form for the output's kind, or with the `custom` runtime.
|
|
189
224
|
*
|
|
190
225
|
* @example
|
|
191
226
|
* ```ts
|
|
@@ -216,12 +251,27 @@ export interface StreamTaskSpec<Stream extends DatasetDef | undefined, Inputs ex
|
|
|
216
251
|
readonly stream?: Stream;
|
|
217
252
|
/** Ordinary inputs, decoded whole. */
|
|
218
253
|
readonly inputs?: [...Inputs];
|
|
219
|
-
/** The output collection type.
|
|
220
|
-
* Set
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
254
|
+
/** The output collection type. An Array output stores its elements in
|
|
255
|
+
* emission order. A Set or Dict output must be emitted in ascending key
|
|
256
|
+
* order (East's total order): the runner writes it in one pass, segment by
|
|
257
|
+
* segment, and an out-of-order key fails the task with the same message
|
|
258
|
+
* on every runtime. Duplicate Set/Dict keys are a runtime error unless
|
|
259
|
+
* {@link merge} folds them. */
|
|
224
260
|
readonly output: Output;
|
|
261
|
+
/**
|
|
262
|
+
* How the runner's sink folds emissions with equal keys that arrive
|
|
263
|
+
* together, instead of failing on the duplicate.
|
|
264
|
+
*
|
|
265
|
+
* @remarks
|
|
266
|
+
* A `Dict` output takes a function of the key and two values: adjacent
|
|
267
|
+
* equal keys fold left in emission order, `acc = merge(key, acc, value)`. A
|
|
268
|
+
* `Set` output takes the literal `'union'`: adjacent equal elements collapse
|
|
269
|
+
* to the first. The ascending contract stands — `merge` folds the equal keys
|
|
270
|
+
* of a grouped stream; keys that collide across the stream are a
|
|
271
|
+
* `partitionTask` with `merge`. The stored dataset is exactly the output the
|
|
272
|
+
* folded emissions would write. An Array output takes no `merge`.
|
|
273
|
+
*/
|
|
274
|
+
readonly merge?: OutputMerge<Output>;
|
|
225
275
|
/** Runtime the body runs on; defaults to {@link DEFAULT_RUNNER}. Every
|
|
226
276
|
* stock runtime streams the output through `emit` and feeds the `stream`
|
|
227
277
|
* input lazily (segment-fed iteration and keyed reads at O(segment)
|
|
@@ -244,14 +294,17 @@ type StreamTaskArgs<Stream extends DatasetDef | undefined, Inputs extends readon
|
|
|
244
294
|
*
|
|
245
295
|
* `emit` is a runner-implemented function value: `emit(key, value)` for Dict
|
|
246
296
|
* outputs, `emit(element)` for Array/Set outputs. The streaming writer
|
|
247
|
-
* re-batches emissions byte-adaptively
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
252
|
-
*
|
|
253
|
-
*
|
|
254
|
-
*
|
|
297
|
+
* re-batches emissions byte-adaptively and writes the output in one pass,
|
|
298
|
+
* with one open batch in memory whatever the output's size. An Array output
|
|
299
|
+
* takes its elements in emission order; a Set or Dict output must be emitted
|
|
300
|
+
* in ascending key order, and an out-of-order key fails the task (`beast2
|
|
301
|
+
* v5: Dict key emitted out of order: 1 after 2 — Set/Dict emissions must
|
|
302
|
+
* ascend in East order`, the same words on every runtime). A re-key whose
|
|
303
|
+
* output keys do not arrive in order is a `partitionTask` with `merge`.
|
|
304
|
+
* Duplicate Set/Dict keys are a runtime error unless `merge` folds them: a
|
|
305
|
+
* function for a Dict output (adjacent equal keys fold left in emission
|
|
306
|
+
* order), `'union'` for a Set output. The body's return value is unused —
|
|
307
|
+
* the output dataset is what `emit` wrote.
|
|
255
308
|
*
|
|
256
309
|
* With no `stream`, the task is a producer: its body loops over
|
|
257
310
|
* platform-function sources (paginated APIs, database cursors) and emits.
|
|
@@ -265,12 +318,13 @@ type StreamTaskArgs<Stream extends DatasetDef | undefined, Inputs extends readon
|
|
|
265
318
|
* @typeParam Inputs - Ordinary input dataset defs
|
|
266
319
|
* @param name - Task name
|
|
267
320
|
* @param spec - The declaration: stream input, ordinary inputs, output
|
|
268
|
-
* collection type, runner and environment
|
|
321
|
+
* collection type, merge, runner and environment
|
|
269
322
|
* @param fn - Implementation body; receives the stream value (when
|
|
270
323
|
* declared), the inputs, then `emit`, and returns nothing
|
|
271
324
|
* @returns A TaskDef with `.output` for chaining
|
|
272
|
-
* @throws {Error} When the output is not a collection type
|
|
273
|
-
* the `custom` runtime
|
|
325
|
+
* @throws {Error} When the output is not a collection type, the runner is
|
|
326
|
+
* the `custom` runtime, or `merge` is given for an Array output or in the
|
|
327
|
+
* wrong form for the output's kind.
|
|
274
328
|
*
|
|
275
329
|
* @example
|
|
276
330
|
* ```ts
|
package/dist/src/task.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAc,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACtN,OAAO,EAAE,IAAI,EAAE,OAAO,EAAc,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAsF,MAAM,eAAe,CAAC;AAEzM,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/task.ts"],"names":[],"mappings":"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"}
|