@elaraai/e3 1.0.58 → 1.0.60
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/src/browser.d.ts +2 -1
- package/dist/src/browser.d.ts.map +1 -1
- package/dist/src/browser.js +1 -1
- package/dist/src/browser.js.map +1 -1
- package/dist/src/index.d.ts +5 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/task.d.ts +217 -2
- package/dist/src/task.d.ts.map +1 -1
- package/dist/src/task.js +422 -1
- package/dist/src/task.js.map +1 -1
- package/dist/src/task.spec.js +325 -2
- package/dist/src/task.spec.js.map +1 -1
- package/package.json +3 -3
package/dist/src/browser.d.ts
CHANGED
|
@@ -24,7 +24,8 @@ export { runnerToCommand, runnerToVariant, DEFAULT_RUNNER } from './runner.js';
|
|
|
24
24
|
export { input, inputsTree } from './input.js';
|
|
25
25
|
export { record, recordsTree } from './record.js';
|
|
26
26
|
export { mutation } from './mutation.js';
|
|
27
|
-
export { task, customTask, tasksTree } from './task.js';
|
|
27
|
+
export { task, customTask, partitionTask, streamTask, tasksTree } from './task.js';
|
|
28
|
+
export type { PartitionTaskSpec, StreamTaskSpec, EmitOf } from './task.js';
|
|
28
29
|
export { function_ } from './function.js';
|
|
29
30
|
export { package_ as package } from './package.js';
|
|
30
31
|
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,MAAM,EACN,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI/E,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,MAAM,EACN,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI/E,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/src/browser.js
CHANGED
|
@@ -8,7 +8,7 @@ export { runnerToCommand, runnerToVariant, DEFAULT_RUNNER } from './runner.js';
|
|
|
8
8
|
export { input, inputsTree } from './input.js';
|
|
9
9
|
export { record, recordsTree } from './record.js';
|
|
10
10
|
export { mutation } from './mutation.js';
|
|
11
|
-
export { task, customTask, tasksTree } from './task.js';
|
|
11
|
+
export { task, customTask, partitionTask, streamTask, tasksTree } from './task.js';
|
|
12
12
|
export { function_ } from './function.js';
|
|
13
13
|
export { package_ as package } from './package.js';
|
|
14
14
|
//# sourceMappingURL=browser.js.map
|
package/dist/src/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyCH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/E,4EAA4E;AAC5E,8EAA8E;AAC9E,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyCH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/E,4EAA4E;AAC5E,8EAA8E;AAC9E,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -46,7 +46,7 @@ import type { DatasetDef, DataTreeDef, DatasetsOf, FunctionDef, MergeDatasets, M
|
|
|
46
46
|
import { input } from './input.js';
|
|
47
47
|
import { record } from './record.js';
|
|
48
48
|
import { mutation } from './mutation.js';
|
|
49
|
-
import { task, customTask } from './task.js';
|
|
49
|
+
import { task, customTask, partitionTask, streamTask } from './task.js';
|
|
50
50
|
import { function_ } from './function.js';
|
|
51
51
|
import { package_ } from './package.js';
|
|
52
52
|
import { export_ } from './export.js';
|
|
@@ -64,12 +64,15 @@ declare const e3: {
|
|
|
64
64
|
mutation: typeof mutation;
|
|
65
65
|
task: typeof task;
|
|
66
66
|
customTask: typeof customTask;
|
|
67
|
+
partitionTask: typeof partitionTask;
|
|
68
|
+
streamTask: typeof streamTask;
|
|
67
69
|
function: typeof function_;
|
|
68
70
|
package: typeof package_;
|
|
69
71
|
export: typeof export_;
|
|
70
72
|
};
|
|
71
73
|
export default e3;
|
|
72
|
-
export { input, record, mutation, task, customTask, function_, package_ as package, export_ as export };
|
|
74
|
+
export { input, record, mutation, task, customTask, partitionTask, streamTask, function_, package_ as package, export_ as export };
|
|
75
|
+
export type { PartitionTaskSpec, StreamTaskSpec, EmitOf } from './task.js';
|
|
73
76
|
export { inputsTree } from './input.js';
|
|
74
77
|
export { recordsTree } from './record.js';
|
|
75
78
|
export { tasksTree } from './task.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,GACd,CAAC;AAGF,YAAY,EACV,MAAM,EACN,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/E;;;;GAIG;AACH,QAAA,MAAM,EAAE;;;;;;;;;;;CAWP,CAAC;AAEF,eAAe,EAAE,CAAC;AAGlB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,IAAI,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC;AACnI,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAG3E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,KAAK,eAAe,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { input } from './input.js';
|
|
6
6
|
import { record } from './record.js';
|
|
7
7
|
import { mutation } from './mutation.js';
|
|
8
|
-
import { task, customTask } from './task.js';
|
|
8
|
+
import { task, customTask, partitionTask, streamTask } from './task.js';
|
|
9
9
|
import { function_ } from './function.js';
|
|
10
10
|
import { package_ } from './package.js';
|
|
11
11
|
import { export_ } from './export.js';
|
|
@@ -21,13 +21,15 @@ const e3 = {
|
|
|
21
21
|
mutation,
|
|
22
22
|
task,
|
|
23
23
|
customTask,
|
|
24
|
+
partitionTask,
|
|
25
|
+
streamTask,
|
|
24
26
|
function: function_,
|
|
25
27
|
package: package_,
|
|
26
28
|
export: export_,
|
|
27
29
|
};
|
|
28
30
|
export default e3;
|
|
29
31
|
// Also export individual functions for tree-shaking
|
|
30
|
-
export { input, record, mutation, task, customTask, function_, package_ as package, export_ as export };
|
|
32
|
+
export { input, record, mutation, task, customTask, partitionTask, streamTask, function_, package_ as package, export_ as export };
|
|
31
33
|
// Singleton tree definitions
|
|
32
34
|
export { inputsTree } from './input.js';
|
|
33
35
|
export { recordsTree } from './record.js';
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuDH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuDH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAwBtC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/E;;;;GAIG;AACH,MAAM,EAAE,GAAG;IACT,KAAK;IACL,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,UAAU;IACV,aAAa;IACb,UAAU;IACV,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,OAAO;CAChB,CAAC;AAEF,eAAe,EAAE,CAAC;AAElB,oDAAoD;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,IAAI,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC;AAGnI,6BAA6B;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,kBAAkB;AAClB,OAAO,EAAwB,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/src/task.d.ts
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* - `.tasks.${name}.function_ir` - The compiled IR (private)
|
|
10
10
|
* - `.tasks.${name}.output` - The output dataset (public)
|
|
11
11
|
*/
|
|
12
|
-
import type { AsyncFunctionExpr, BlockBuilder, CallableAsyncFunctionExpr, CallableFunctionExpr, EastType, ExprType, FunctionExpr } from '@elaraai/east';
|
|
13
|
-
import { Expr, variant, ArrayType, StringType } from '@elaraai/east';
|
|
12
|
+
import type { AsyncFunctionExpr, BlockBuilder, CallableAsyncFunctionExpr, CallableFunctionExpr, DictType, EastType, ExprType, FunctionExpr, NeverType, SetType, SubtypeExprOrValue } from '@elaraai/east';
|
|
13
|
+
import { Expr, variant, ArrayType, StringType, NullType, FunctionType, StructType } from '@elaraai/east';
|
|
14
14
|
import type { DatasetDef, DataTreeDef, TaskDef } from './types.js';
|
|
15
15
|
import { type Runner } from './runner.js';
|
|
16
16
|
import { type EnvironmentDecl } from './environment.js';
|
|
@@ -74,5 +74,220 @@ export declare function task<Name extends string, Inputs extends readonly Datase
|
|
|
74
74
|
export declare function customTask<Name extends string, Inputs extends Array<DatasetDef>, Output extends EastType>(name: Name, inputs: Inputs, outputType: Output, command: ($: BlockBuilder<StringType>, input_paths: ExprType<ArrayType<StringType>>, output_path: ExprType<StringType>) => Expr<StringType> | void, config?: {
|
|
75
75
|
environment?: EnvironmentDecl;
|
|
76
76
|
}): TaskDef<Output, [variant<'field', 'tasks'>, variant<'field', Name>, variant<'field', 'output'>]>;
|
|
77
|
+
/** The task-output path tuple for task `Name`. */
|
|
78
|
+
type TaskOutputPath<Name extends string> = [variant<'field', 'tasks'>, variant<'field', Name>, variant<'field', 'output'>];
|
|
79
|
+
/** The expression parameters a body callback receives for a dataset tuple. */
|
|
80
|
+
type DatasetExprs<T extends readonly DatasetDef[]> = {
|
|
81
|
+
[K in keyof T]: T[K] extends DatasetDef<infer U> ? ExprType<U> : never;
|
|
82
|
+
};
|
|
83
|
+
/** The key type a partitioned collection is carved by: Dict keys, Set
|
|
84
|
+
* elements, or Array elements. */
|
|
85
|
+
type CollectionKeyType<T> = T extends DictType<infer K, any> ? K : T extends SetType<infer E> ? E : T extends ArrayType<infer E> ? E : never;
|
|
86
|
+
/** The per-dataset key types of a partition tuple. */
|
|
87
|
+
type PartitionKeyTypes<Ps extends readonly DatasetDef[]> = {
|
|
88
|
+
[K in keyof Ps]: Ps[K] extends DatasetDef<infer T> ? CollectionKeyType<T> : never;
|
|
89
|
+
};
|
|
90
|
+
/** Field-wise intersection of two key types: for struct keys, the fields
|
|
91
|
+
* present in both with the identical East type; otherwise the types must
|
|
92
|
+
* agree exactly. */
|
|
93
|
+
type IntersectKeys<A, B> = A extends StructType<infer FA> ? B extends StructType<infer FB> ? StructType<{
|
|
94
|
+
[F in keyof FA & keyof FB as FA[F] extends FB[F] ? (FB[F] extends FA[F] ? F : never) : never]: FA[F];
|
|
95
|
+
}> : never : A extends B ? (B extends A ? A : never) : never;
|
|
96
|
+
/** The strict field-wise intersection of every partitioned dataset's key
|
|
97
|
+
* type — what a co-partitioned `by` projection receives. */
|
|
98
|
+
type PartitionByKey<Ps extends readonly DatasetDef[]> = PartitionKeyTypes<Ps> extends readonly [infer Only] ? Only : PartitionKeyTypes<Ps> extends readonly [infer A, ...infer Rest] ? IntersectKeysAll<A, Rest> : never;
|
|
99
|
+
/** Folds {@link IntersectKeys} over the remaining key types. */
|
|
100
|
+
type IntersectKeysAll<A, Rest> = Rest extends readonly [] ? A : Rest extends readonly [infer B, ...infer More] ? IntersectKeysAll<IntersectKeys<A, B>, More> : never;
|
|
101
|
+
/** What a `by` projection may return: an expression over the key (the
|
|
102
|
+
* identity, a field read, or a nested path — leading-prefix ORDER is
|
|
103
|
+
* validated at build time, since TypeScript types carry no field order), or
|
|
104
|
+
* a struct literal drawn from the key's own fields with their own
|
|
105
|
+
* expression types. Anything else is a type error at the call site. */
|
|
106
|
+
type ByResult<K> = Expr<any> | (K extends StructType<infer F> ? {
|
|
107
|
+
[P in keyof F]?: ExprType<F[P]>;
|
|
108
|
+
} : never);
|
|
109
|
+
/**
|
|
110
|
+
* The declaration half of {@link partitionTask} — everything structural about
|
|
111
|
+
* the task; the body comes last as the `fn` argument.
|
|
112
|
+
*
|
|
113
|
+
* @typeParam Partitions - The partitioned (huge, co-partitioned) input datasets
|
|
114
|
+
* @typeParam Inputs - The ordinary input datasets
|
|
115
|
+
* @typeParam Output - The output dataset's East type
|
|
116
|
+
*/
|
|
117
|
+
export interface PartitionTaskSpec<Partitions extends readonly [DatasetDef, ...DatasetDef[]], Inputs extends readonly DatasetDef[], Output extends EastType> {
|
|
118
|
+
/** One or more huge collection inputs, carved into shared key-range
|
|
119
|
+
* partitions. Two or more entries co-partition: all must be Dict or all
|
|
120
|
+
* Set roots with a shared key space. */
|
|
121
|
+
readonly partitions: [...Partitions];
|
|
122
|
+
/** Boundary-alignment projection: rows with equal `by(key)` never split
|
|
123
|
+
* across partitions. Must read a leading prefix of every partitioned
|
|
124
|
+
* dataset's key, so aligned runs stay contiguous in canonical order.
|
|
125
|
+
* Accepted shapes (validated at build time): the key itself; a leading
|
|
126
|
+
* field (`key.f`); a nested leading-field path (`key.a.b`, each step the
|
|
127
|
+
* first field of its level); or a struct literal of leading fields in
|
|
128
|
+
* declared order (`{ f1: key.f1, f2: key.f2 }`). Any other body is
|
|
129
|
+
* rejected at build time — semantically monotone projections outside
|
|
130
|
+
* these shapes are deliberately not inferred. The return type admits
|
|
131
|
+
* only expressions over the key or a struct literal of the key's own
|
|
132
|
+
* fields ({@link ByResult}); field ORDER is the build-time half. */
|
|
133
|
+
readonly by?: ($: BlockBuilder<NeverType>, key: ExprType<PartitionByKey<Partitions>>) => ByResult<PartitionByKey<Partitions>>;
|
|
134
|
+
/** Ordinary inputs, passed whole to every partition execution (small ⇒
|
|
135
|
+
* broadcast; huge + indexed ⇒ opened lazily by the runner). Any change to
|
|
136
|
+
* them re-runs all partitions. */
|
|
137
|
+
readonly inputs?: [...Inputs];
|
|
138
|
+
/** The output dataset's East type. */
|
|
139
|
+
readonly output: Output;
|
|
140
|
+
/** Associative fold merging two partials into one. When present, each
|
|
141
|
+
* partition execution returns a partial of the output and partials fold
|
|
142
|
+
* pairwise in a fixed tree order; when absent, each execution returns its
|
|
143
|
+
* shard of the output and the shards splice in partition order. */
|
|
144
|
+
readonly combine?: ($: BlockBuilder<Output>, a: ExprType<Output>, b: ExprType<Output>) => SubtypeExprOrValue<Output> | void;
|
|
145
|
+
/** Target carved-slice size in wire bytes. Defaults to 256 MiB. */
|
|
146
|
+
readonly targetPartitionBytes?: number;
|
|
147
|
+
/** Runtime the body runs on; defaults to {@link DEFAULT_RUNNER}. */
|
|
148
|
+
readonly runner?: Runner;
|
|
149
|
+
/** Execution environment declaration, as for {@link task}. */
|
|
150
|
+
readonly environment?: EnvironmentDecl;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Defines a partitioned task: e3 carves the huge partitioned input(s) into
|
|
154
|
+
* key-range slices, runs `fn` once per partition as an ordinary
|
|
155
|
+
* content-addressed execution (parallel, memoized per partition), and
|
|
156
|
+
* assembles the output — by splicing shards in partition order, or by
|
|
157
|
+
* folding partials pairwise when `combine` is given.
|
|
158
|
+
*
|
|
159
|
+
* `fn` always returns the output type: without `combine` each execution
|
|
160
|
+
* returns its *shard* of the output (Array shards concatenate freely;
|
|
161
|
+
* Dict/Set shard key ranges must ascend disjointly in partition order — any
|
|
162
|
+
* key-preserving or monotone re-keying transform qualifies). The shard
|
|
163
|
+
* contract is deliberately enforced at SPLICE TIME, not build time: whether
|
|
164
|
+
* an arbitrary body preserves key order is not decidable from types, and a
|
|
165
|
+
* static rule would false-reject permitted monotone re-keys — a violation
|
|
166
|
+
* fails the task deterministically at splice, naming the offending
|
|
167
|
+
* partitions and the remedies (`combine` / `customTask`). With `combine`
|
|
168
|
+
* each execution returns a *partial* and the partials fold.
|
|
169
|
+
*
|
|
170
|
+
* Parameter order is fixed and fully typed: the partition slices first (in
|
|
171
|
+
* declared order, each typed as its dataset's own collection type), then the
|
|
172
|
+
* ordinary `inputs` in order.
|
|
173
|
+
*
|
|
174
|
+
* @typeParam Name - Task name (literal type)
|
|
175
|
+
* @typeParam Partitions - Partitioned input dataset defs
|
|
176
|
+
* @typeParam Inputs - Ordinary input dataset defs
|
|
177
|
+
* @typeParam Output - Output type
|
|
178
|
+
* @param name - Task name
|
|
179
|
+
* @param spec - The declaration: partitioned inputs, alignment, output type,
|
|
180
|
+
* combine mode, sizing, runner and environment
|
|
181
|
+
* @param fn - Implementation body, run once per partition
|
|
182
|
+
* @returns A TaskDef with `.output` for chaining
|
|
183
|
+
* @throws {Error} When a partitioned dataset is not a collection, partitions
|
|
184
|
+
* mix collection kinds (or include Arrays) under co-partitioning, key
|
|
185
|
+
* types cannot align, `by` (explicit or the implicit alignment under
|
|
186
|
+
* co-partitioning) does not read a leading prefix of every partitioned
|
|
187
|
+
* dataset's key, or the output is not a collection in splice mode (no
|
|
188
|
+
* `combine`).
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```ts
|
|
192
|
+
* const sales = e3.input('sales', DictType(StringType, SaleType));
|
|
193
|
+
*
|
|
194
|
+
* const cleaned = e3.partitionTask('cleaned', {
|
|
195
|
+
* partitions: [sales],
|
|
196
|
+
* output: DictType(StringType, SaleType),
|
|
197
|
+
* }, ($, slice) => slice.filter(($, sale) => East.greater(sale.qty, 0n)));
|
|
198
|
+
* ```
|
|
199
|
+
*/
|
|
200
|
+
export declare function partitionTask<Name extends string, const Partitions extends readonly [DatasetDef, ...DatasetDef[]], const Inputs extends readonly DatasetDef[] = [], Output extends EastType = EastType>(name: Name, spec: PartitionTaskSpec<Partitions, Inputs, Output>, fn: ($: BlockBuilder<Output>, ...args: [...DatasetExprs<Partitions>, ...DatasetExprs<Inputs>]) => SubtypeExprOrValue<Output> | void): TaskDef<Output, TaskOutputPath<Name>>;
|
|
201
|
+
/** The `emit` capability's function type for an output collection: Dict
|
|
202
|
+
* outputs emit `(key, value)`, Array/Set outputs emit `(element)`. */
|
|
203
|
+
export type EmitOf<Out extends EastType> = Out extends DictType<infer K, infer V> ? FunctionType<[K, V], NullType> : Out extends SetType<infer E> ? FunctionType<[E], NullType> : Out extends ArrayType<infer E> ? FunctionType<[E], NullType> : never;
|
|
204
|
+
/**
|
|
205
|
+
* The declaration half of {@link streamTask} — everything structural about
|
|
206
|
+
* the task; the body comes last as the `fn` argument.
|
|
207
|
+
*
|
|
208
|
+
* @typeParam Stream - The streamed input dataset def, when present
|
|
209
|
+
* @typeParam Inputs - The ordinary input datasets
|
|
210
|
+
* @typeParam Output - The output collection's East type
|
|
211
|
+
*/
|
|
212
|
+
export interface StreamTaskSpec<Stream extends DatasetDef | undefined, Inputs extends readonly DatasetDef[], Output extends EastType> {
|
|
213
|
+
/** The input the runner feeds through the body in canonical order with
|
|
214
|
+
* O(segment) memory. Omit entirely for a producer task (the body loops
|
|
215
|
+
* over platform-function sources and emits). */
|
|
216
|
+
readonly stream?: Stream;
|
|
217
|
+
/** Ordinary inputs, decoded whole. */
|
|
218
|
+
readonly inputs?: [...Inputs];
|
|
219
|
+
/** The output collection type. Emission order is unconstrained: ascending
|
|
220
|
+
* Set/Dict emission streams straight to the output, and out-of-order
|
|
221
|
+
* emission is sorted by the runner's sink (bounded-memory spill/merge)
|
|
222
|
+
* before the file is finalized — the stored dataset is always the
|
|
223
|
+
* canonical collection. Duplicate Set/Dict keys are a runtime error. */
|
|
224
|
+
readonly output: Output;
|
|
225
|
+
/** Runtime the body runs on; defaults to {@link DEFAULT_RUNNER}. Every
|
|
226
|
+
* stock runtime streams the output through `emit` and feeds the `stream`
|
|
227
|
+
* input lazily (segment-fed iteration and keyed reads at O(segment)
|
|
228
|
+
* decoded memory; any other operation on it decodes the whole value
|
|
229
|
+
* once). The `custom` runtime is rejected — its argv cannot carry the
|
|
230
|
+
* streaming flags. */
|
|
231
|
+
readonly runner?: Runner;
|
|
232
|
+
/** Execution environment declaration, as for {@link task}. */
|
|
233
|
+
readonly environment?: EnvironmentDecl;
|
|
234
|
+
}
|
|
235
|
+
/** The body parameters of a {@link streamTask}: the stream value when
|
|
236
|
+
* declared, the ordinary inputs, then the `emit` capability. */
|
|
237
|
+
type StreamTaskArgs<Stream extends DatasetDef | undefined, Inputs extends readonly DatasetDef[], Output extends EastType> = Stream extends DatasetDef<infer S> ? [ExprType<S>, ...DatasetExprs<Inputs>, ExprType<EmitOf<Output>>] : [...DatasetExprs<Inputs>, ExprType<EmitOf<Output>>];
|
|
238
|
+
/**
|
|
239
|
+
* Defines a streaming task: one execution whose runner feeds the `stream`
|
|
240
|
+
* input segment-by-segment in canonical order (state is ordinary `$.let`
|
|
241
|
+
* locals) and writes the output incrementally through the `emit` capability
|
|
242
|
+
* — bounded memory at both ends, exact left-fold semantics, no parallelism
|
|
243
|
+
* and no partial recompute.
|
|
244
|
+
*
|
|
245
|
+
* `emit` is a runner-implemented function value: `emit(key, value)` for Dict
|
|
246
|
+
* outputs, `emit(element)` for Array/Set outputs. The streaming writer
|
|
247
|
+
* re-batches emissions byte-adaptively, and emission order is unconstrained:
|
|
248
|
+
* emissions arriving in ascending (key) order stream straight to the output
|
|
249
|
+
* file, and out-of-order emissions are sorted by the sink (bounded-memory
|
|
250
|
+
* spill/merge, reported on stderr when it engages) before the file is
|
|
251
|
+
* finalized — either way the stored dataset is the canonical collection, so
|
|
252
|
+
* a re-keying producer can emit as it reads. Duplicate Set/Dict keys are a
|
|
253
|
+
* runtime error. The body's return value is unused — the output dataset is
|
|
254
|
+
* what `emit` wrote.
|
|
255
|
+
*
|
|
256
|
+
* With no `stream`, the task is a producer: its body loops over
|
|
257
|
+
* platform-function sources (paginated APIs, database cursors) and emits.
|
|
258
|
+
* A producer's real input is the outside world, so it follows the existing
|
|
259
|
+
* integration-task conventions for re-run semantics — `emit` changes nothing
|
|
260
|
+
* about that.
|
|
261
|
+
*
|
|
262
|
+
* @typeParam Name - Task name (literal type)
|
|
263
|
+
* @typeParam Output - Output collection type
|
|
264
|
+
* @typeParam Stream - Streamed input dataset def, when present
|
|
265
|
+
* @typeParam Inputs - Ordinary input dataset defs
|
|
266
|
+
* @param name - Task name
|
|
267
|
+
* @param spec - The declaration: stream input, ordinary inputs, output
|
|
268
|
+
* collection type, runner and environment
|
|
269
|
+
* @param fn - Implementation body; receives the stream value (when
|
|
270
|
+
* declared), the inputs, then `emit`, and returns nothing
|
|
271
|
+
* @returns A TaskDef with `.output` for chaining
|
|
272
|
+
* @throws {Error} When the output is not a collection type or the runner is
|
|
273
|
+
* the `custom` runtime.
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* ```ts
|
|
277
|
+
* const events = e3.input('events', ArrayType(EventType));
|
|
278
|
+
*
|
|
279
|
+
* const balances = e3.streamTask('balances', {
|
|
280
|
+
* stream: events,
|
|
281
|
+
* output: ArrayType(BalanceType),
|
|
282
|
+
* }, ($, events, emit) => {
|
|
283
|
+
* const balance = $.let(0.0);
|
|
284
|
+
* $.for(events, ($, event) => {
|
|
285
|
+
* $.assign(balance, balance.add(event.amount));
|
|
286
|
+
* $(emit({ at: event.at, balance }));
|
|
287
|
+
* });
|
|
288
|
+
* });
|
|
289
|
+
* ```
|
|
290
|
+
*/
|
|
291
|
+
export declare function streamTask<Name extends string, Output extends EastType, const Stream extends DatasetDef | undefined = undefined, const Inputs extends readonly DatasetDef[] = []>(name: Name, spec: StreamTaskSpec<Stream, Inputs, Output>, fn: ($: BlockBuilder<NullType>, ...args: StreamTaskArgs<Stream, Inputs, Output>) => void): TaskDef<Output, TaskOutputPath<Name>>;
|
|
77
292
|
export {};
|
|
78
293
|
//# sourceMappingURL=task.d.ts.map
|
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,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/task.ts"],"names":[],"mappings":"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"}
|