@elaraai/e3 1.0.58 → 1.0.59

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.
@@ -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;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,cAAc,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"}
@@ -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
@@ -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;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,cAAc,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"}
@@ -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';
@@ -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;AAC7C,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;;;;;;;;;CASP,CAAC;AAEF,eAAe,EAAE,CAAC;AAGlB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,IAAI,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC;AAGxG,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"}
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';
@@ -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;AAC7C,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,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,SAAS,EAAE,QAAQ,IAAI,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC;AAExG,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"}
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"}
@@ -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,214 @@ 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. Dict/Set outputs must be emitted in
220
+ * strictly ascending (key) order — the streaming writer enforces the
221
+ * canonical-segment contract at runtime; Array outputs emit freely. */
222
+ readonly output: Output;
223
+ /** Runtime the body runs on; defaults to {@link DEFAULT_RUNNER}. Every
224
+ * stock runtime streams the output through `emit` and feeds the `stream`
225
+ * input lazily (segment-fed iteration and keyed reads at O(segment)
226
+ * decoded memory; any other operation on it decodes the whole value
227
+ * once). The `custom` runtime is rejected — its argv cannot carry the
228
+ * streaming flags. */
229
+ readonly runner?: Runner;
230
+ /** Execution environment declaration, as for {@link task}. */
231
+ readonly environment?: EnvironmentDecl;
232
+ }
233
+ /** The body parameters of a {@link streamTask}: the stream value when
234
+ * declared, the ordinary inputs, then the `emit` capability. */
235
+ 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>>];
236
+ /**
237
+ * Defines a streaming task: one execution whose runner feeds the `stream`
238
+ * input segment-by-segment in canonical order (state is ordinary `$.let`
239
+ * locals) and writes the output incrementally through the `emit` capability
240
+ * — bounded memory at both ends, exact left-fold semantics, no parallelism
241
+ * and no partial recompute.
242
+ *
243
+ * `emit` is a runner-implemented function value: `emit(key, value)` for Dict
244
+ * outputs, `emit(element)` for Array/Set outputs. The streaming writer
245
+ * re-batches emissions byte-adaptively; Dict/Set outputs must be emitted in
246
+ * strictly ascending (key) order (the canonical-segment contract, enforced
247
+ * at runtime), Array outputs emit freely. The body's return value is unused
248
+ * — the output dataset is what `emit` wrote.
249
+ *
250
+ * With no `stream`, the task is a producer: its body loops over
251
+ * platform-function sources (paginated APIs, database cursors) and emits.
252
+ * A producer's real input is the outside world, so it follows the existing
253
+ * integration-task conventions for re-run semantics — `emit` changes nothing
254
+ * about that.
255
+ *
256
+ * @typeParam Name - Task name (literal type)
257
+ * @typeParam Output - Output collection type
258
+ * @typeParam Stream - Streamed input dataset def, when present
259
+ * @typeParam Inputs - Ordinary input dataset defs
260
+ * @param name - Task name
261
+ * @param spec - The declaration: stream input, ordinary inputs, output
262
+ * collection type, runner and environment
263
+ * @param fn - Implementation body; receives the stream value (when
264
+ * declared), the inputs, then `emit`, and returns nothing
265
+ * @returns A TaskDef with `.output` for chaining
266
+ * @throws {Error} When the output is not a collection type or the runner is
267
+ * the `custom` runtime.
268
+ *
269
+ * @example
270
+ * ```ts
271
+ * const events = e3.input('events', ArrayType(EventType));
272
+ *
273
+ * const balances = e3.streamTask('balances', {
274
+ * stream: events,
275
+ * output: ArrayType(BalanceType),
276
+ * }, ($, events, emit) => {
277
+ * const balance = $.let(0.0);
278
+ * $.for(events, ($, event) => {
279
+ * $.assign(balance, balance.add(event.amount));
280
+ * $(emit({ at: event.at, balance }));
281
+ * });
282
+ * });
283
+ * ```
284
+ */
285
+ 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
286
  export {};
78
287
  //# sourceMappingURL=task.d.ts.map
@@ -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;AACxJ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAqC,MAAM,eAAe,CAAC;AACxG,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAmC,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEjF;;;GAGG;AACH,KAAK,mBAAmB,CAAC,CAAC,SAAS,SAAS,UAAU,EAAE,IAAI;KACzD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAC7D,GAAG,QAAQ,EAAE,CAAC;AAEf;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,WAKvB,CAAC;AAgGF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,IAAI,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,SAAS,SAAS,UAAU,EAAE,EAAE,MAAM,SAAS,QAAQ,EACrG,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,EACnB,EAAE,EAAE,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjD,oBAAoB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACzD,iBAAiB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACtD,yBAAyB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAClE,MAAM,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IAAC,WAAW,CAAC,EAAE,eAAe,CAAA;CAAE,GAChG,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAiFpG,wBAAgB,UAAU,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,SAAS,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,SAAS,QAAQ,EACvG,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,EAClJ,MAAM,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,eAAe,CAAA;CAAE,GACzC,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAsClG"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/task.ts"],"names":[],"mappings":"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"}