@elaraai/e3-types 1.0.77 → 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.
Files changed (41) hide show
  1. package/dist/src/dataflow.d.ts +10 -6
  2. package/dist/src/dataflow.d.ts.map +1 -1
  3. package/dist/src/dataflow.js.map +1 -1
  4. package/dist/src/execution.d.ts +17 -0
  5. package/dist/src/execution.d.ts.map +1 -1
  6. package/dist/src/index.d.ts +4 -3
  7. package/dist/src/index.d.ts.map +1 -1
  8. package/dist/src/index.js +4 -2
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/runner.d.ts +35 -9
  11. package/dist/src/runner.d.ts.map +1 -1
  12. package/dist/src/runner.js +46 -13
  13. package/dist/src/runner.js.map +1 -1
  14. package/dist/src/runner.spec.js +50 -1
  15. package/dist/src/runner.spec.js.map +1 -1
  16. package/dist/src/stream.d.ts +97 -0
  17. package/dist/src/stream.d.ts.map +1 -0
  18. package/dist/src/stream.js +134 -0
  19. package/dist/src/stream.js.map +1 -0
  20. package/dist/src/stream.spec.d.ts +6 -0
  21. package/dist/src/stream.spec.d.ts.map +1 -0
  22. package/dist/src/stream.spec.js +60 -0
  23. package/dist/src/stream.spec.js.map +1 -0
  24. package/dist/src/task.d.ts +183 -17
  25. package/dist/src/task.d.ts.map +1 -1
  26. package/dist/src/task.js +302 -20
  27. package/dist/src/task.js.map +1 -1
  28. package/dist/src/task.spec.d.ts +6 -0
  29. package/dist/src/task.spec.d.ts.map +1 -0
  30. package/dist/src/task.spec.js +169 -0
  31. package/dist/src/task.spec.js.map +1 -0
  32. package/package.json +2 -2
  33. package/src/dataflow.ts +10 -6
  34. package/src/execution.ts +18 -0
  35. package/src/index.ts +21 -0
  36. package/src/runner.spec.ts +56 -1
  37. package/src/runner.ts +45 -13
  38. package/src/stream.spec.ts +88 -0
  39. package/src/stream.ts +170 -0
  40. package/src/task.spec.ts +208 -0
  41. package/src/task.ts +336 -21
package/dist/src/task.js CHANGED
@@ -14,7 +14,7 @@
14
14
  * Input and output types are inferred from the package's structure at the
15
15
  * specified paths - the task just references locations, not types.
16
16
  */
17
- import { StructType, StringType, ArrayType, BlobType, BooleanType, IntegerType, OptionType, decodeBeast2For, encodeBeast2For, none } from '@elaraai/east';
17
+ import { StructType, StringType, ArrayType, BlobType, BooleanType, IntegerType, OptionType, decodeBeast2For, encodeBeast2For, none, variant } from '@elaraai/east';
18
18
  import { TreePathType } from './structure.js';
19
19
  import { RunnerType } from './runner.js';
20
20
  /**
@@ -130,6 +130,13 @@ export const TASK_KIND_PARTITION = 'partition';
130
130
  * capability. The spec rides {@link TaskObjectType}'s `metadata` slot as a
131
131
  * beast2-encoded {@link StreamTaskMetadataType}. */
132
132
  export const TASK_KIND_STREAM = 'stream';
133
+ /** Task kind of a merge unit — the runner's `merge` command over sorted
134
+ * partials of a partitioned task's keyed output (issue #770). The
135
+ * orchestrator writes one such task per partitioned task from the
136
+ * package's {@link PartitionTaskMetadataType} `mergeCommand`, and runs it
137
+ * as an ordinary content-addressed execution per group of partials. It
138
+ * carries no metadata. */
139
+ export const TASK_KIND_MERGE = 'merge';
133
140
  /**
134
141
  * Metadata of a {@link TASK_KIND_PARTITION} task.
135
142
  *
@@ -160,17 +167,29 @@ export const PartitionTaskMetadataType = StructType({
160
167
  * `encodeEastIR` bundle of the per-key merge `(Key, Value, Value) -> Value`
161
168
  * for a Dict output; `none` otherwise.
162
169
  *
163
- * Its presence (or {@link mergeSets}) selects the SEGMENT-MERGE assembly:
164
- * partials are walked by their segment fences in the orchestrator, disjoint
165
- * segments are byte-copied exactly as a splice does, and only overlapping
166
- * ones are decoded, merged and re-encoded. Appended LAST (BEAST2 encodes
170
+ * Its presence (or {@link mergeSets}) selects the MERGE-TREE assembly:
171
+ * partials whose key ranges overlap are merged by the task's own runner, in
172
+ * a tree of merge executions ({@link mergeCommand}) folding equal keys with
173
+ * this function; disjoint partials are spliced; the orchestrator never
174
+ * decodes a partial. Appended after `targetPartitionBytes` (BEAST2 encodes
167
175
  * struct fields positionally) with a dual decoder — see
168
176
  * {@link decodePartitionTaskMetadata}.
169
177
  */
170
178
  merge: OptionType(BlobType),
171
- /** Whether a Set output assembles by segment merge (union). The Set twin of
172
- * {@link merge}, which needs no function. Appended LAST. */
179
+ /** Whether a Set output assembles by the merge tree, keeping one of equal
180
+ * elements (`--union`). The Set twin of {@link merge}, which needs no
181
+ * function. */
173
182
  mergeSets: BooleanType,
183
+ /**
184
+ * `encodeEastIR` bundle of the merge command `(input_paths, output_path) ->
185
+ * argv` — `mergeCommandIr` over the task's runner, in `function` mode with
186
+ * {@link merge} and `union` mode with {@link mergeSets} — that the
187
+ * orchestrator's merge units execute; `none` in splice and combine modes.
188
+ * Built at export, so the merge unit task is a package object like any
189
+ * other and nothing is synthesized at run time. Appended LAST with a
190
+ * triple decoder — see {@link decodePartitionTaskMetadata}.
191
+ */
192
+ mergeCommand: OptionType(BlobType),
174
193
  });
175
194
  /**
176
195
  * The pre-`merge` partition metadata wire shape, kept only so
@@ -183,17 +202,32 @@ const PreMergePartitionTaskMetadataType = StructType({
183
202
  combine: OptionType(BlobType),
184
203
  targetPartitionBytes: IntegerType,
185
204
  });
205
+ /**
206
+ * The v1.0.77 partition metadata wire shape — `merge` and `mergeSets` but no
207
+ * `mergeCommand` — kept only so {@link decodePartitionTaskMetadata} can read
208
+ * tasks exported by that SDK; their merge units cannot run.
209
+ */
210
+ const PreMergeCommandPartitionTaskMetadataType = StructType({
211
+ partitions: IntegerType,
212
+ by: OptionType(BlobType),
213
+ combine: OptionType(BlobType),
214
+ targetPartitionBytes: IntegerType,
215
+ merge: OptionType(BlobType),
216
+ mergeSets: BooleanType,
217
+ });
186
218
  /** Encode a {@link PartitionTaskMetadataType} value for `TaskObject.metadata`. */
187
219
  export const encodePartitionTaskMetadata = encodeBeast2For(PartitionTaskMetadataType);
188
220
  const decodeCurrentPartitionMetadata = decodeBeast2For(PartitionTaskMetadataType);
221
+ const decodePreMergeCommandPartitionMetadata = decodeBeast2For(PreMergeCommandPartitionTaskMetadataType);
189
222
  const decodePreMergePartitionMetadata = decodeBeast2For(PreMergePartitionTaskMetadataType);
190
223
  /**
191
224
  * Decode a `TaskObject.metadata` blob of a {@link TASK_KIND_PARTITION} task,
192
- * tolerating the pre-`merge` wire format (dual-decode migration).
225
+ * tolerating the two older wire formats: the v1.0.77 shape without
226
+ * `mergeCommand`, and the pre-`merge` shape.
193
227
  *
194
228
  * @param data - the metadata blob
195
- * @returns the decoded metadata, with `merge`/`mergeSets` defaulted off for
196
- * older bytes
229
+ * @returns the decoded metadata, with `mergeCommand` (and, for the oldest
230
+ * bytes, `merge`/`mergeSets`) defaulted off
197
231
  */
198
232
  export function decodePartitionTaskMetadata(data) {
199
233
  try {
@@ -201,32 +235,280 @@ export function decodePartitionTaskMetadata(data) {
201
235
  }
202
236
  catch (err) {
203
237
  try {
204
- return { ...decodePreMergePartitionMetadata(data), merge: none, mergeSets: false };
238
+ return { ...decodePreMergeCommandPartitionMetadata(data), mergeCommand: none };
205
239
  }
206
240
  catch {
207
- throw err; // no known shape — surface the current-format error
241
+ try {
242
+ return { ...decodePreMergePartitionMetadata(data), merge: none, mergeSets: false, mergeCommand: none };
243
+ }
244
+ catch {
245
+ throw err; // no known shape — surface the current-format error
246
+ }
208
247
  }
209
248
  }
210
249
  }
211
250
  /**
212
251
  * Metadata of a {@link TASK_KIND_STREAM} task.
213
252
  *
214
- * The task's wire `inputs` are laid out `[function_ir, stream?, ...inputs]`;
215
- * the compiled body takes one trailing `emit` parameter beyond the wire
216
- * inputs, and the runner writes the `-o` file from the emit sink instead of
217
- * the body's (Null) return value.
253
+ * The task's wire `inputs` are laid out `[function_ir, merge_ir?, stream?,
254
+ * ...inputs]` — `merge_ir` only in `function` merge mode; the compiled body
255
+ * takes one trailing `emit` parameter beyond the wire inputs, and the runner
256
+ * writes the `-o` file from the emit sink instead of the body's (Null) return
257
+ * value.
218
258
  */
219
259
  export const StreamTaskMetadataType = StructType({
220
- /** Whether wire input index 1 is the streamed input (producer tasks have
221
- * no streamed input). */
260
+ /** Whether the first input after the IRs is the streamed input (producer
261
+ * tasks have no streamed input). */
222
262
  stream: BooleanType,
223
263
  /** The output collection kind the emit sink writes: `"array"`, `"set"`, or
224
264
  * `"dict"` — element/key/value types come from the body IR's emit
225
265
  * parameter. */
226
266
  emit: StringType,
267
+ /**
268
+ * How the emit sink treats equal keys, a `StreamMergeMode`: `"none"` —
269
+ * a duplicate key is an error; `"function"` — wire input 1 is the merge IR
270
+ * `(K, V, V) -> V`, folding equal Dict keys; `"union"` — equal Set elements
271
+ * collapse. Appended LAST (BEAST2 encodes struct fields positionally) with a
272
+ * dual decoder — see {@link decodeStreamTaskMetadata}.
273
+ */
274
+ merge: StringType,
275
+ });
276
+ /**
277
+ * The pre-`merge` stream metadata wire shape, kept only so
278
+ * {@link decodeStreamTaskMetadata} can read tasks exported before folding
279
+ * emit sinks existed.
280
+ */
281
+ const PreMergeStreamTaskMetadataType = StructType({
282
+ stream: BooleanType,
283
+ emit: StringType,
227
284
  });
228
285
  /** Encode a {@link StreamTaskMetadataType} value for `TaskObject.metadata`. */
229
286
  export const encodeStreamTaskMetadata = encodeBeast2For(StreamTaskMetadataType);
230
- /** Decode a `TaskObject.metadata` blob of a {@link TASK_KIND_STREAM} task. */
231
- export const decodeStreamTaskMetadata = decodeBeast2For(StreamTaskMetadataType);
287
+ const decodeCurrentStreamMetadata = decodeBeast2For(StreamTaskMetadataType);
288
+ const decodePreMergeStreamMetadata = decodeBeast2For(PreMergeStreamTaskMetadataType);
289
+ /**
290
+ * Decode a `TaskObject.metadata` blob of a {@link TASK_KIND_STREAM} task,
291
+ * tolerating the pre-`merge` wire format (dual-decode migration).
292
+ *
293
+ * @param data - the metadata blob
294
+ * @returns the decoded metadata, with `merge` defaulted to `"none"` for older
295
+ * bytes
296
+ */
297
+ export function decodeStreamTaskMetadata(data) {
298
+ try {
299
+ return decodeCurrentStreamMetadata(data);
300
+ }
301
+ catch (err) {
302
+ try {
303
+ return { ...decodePreMergeStreamMetadata(data), merge: 'none' };
304
+ }
305
+ catch {
306
+ throw err; // no known shape — surface the current-format error
307
+ }
308
+ }
309
+ }
310
+ // =============================================================================
311
+ // Partition plan
312
+ // =============================================================================
313
+ /** A carve position: a segment index and an element offset within it. */
314
+ const SplitPointType = StructType({ seg: IntegerType, offset: IntegerType });
315
+ /**
316
+ * The plan of one merged component's fan-in (issue #770): the partials whose
317
+ * key ranges overlap, and the key ranges its merge units run over, as the
318
+ * hashes of the range blobs the units take as their input.
319
+ *
320
+ * @remarks
321
+ * The ranges are a pure function of the partials and the task's
322
+ * `targetPartitionBytes` — the boundary keys are fences of the largest
323
+ * partial — so a re-run whose partials are the same objects plans the same
324
+ * ranges; recording them lets it skip the planning probes, and because
325
+ * every unit's inputs are then the same objects, every merge unit
326
+ * cache-hits.
327
+ */
328
+ export const MergeRangePlanType = StructType({
329
+ /** The component's partial hashes, in partition order. */
330
+ partials: ArrayType(StringType),
331
+ /** The hashes of the component's range blobs — `Struct{from: Option<K>,
332
+ * to: Option<K>}` over the output's key type — in key order; one open
333
+ * range for a component that merges whole. */
334
+ ranges: ArrayType(StringType),
335
+ });
336
+ /**
337
+ * The plan of a partitioned execution (issue #770): the partitioned inputs,
338
+ * where each partition starts in every one of them, the carved slices, and
339
+ * the ranged fan-in of each merged component.
340
+ *
341
+ * @remarks
342
+ * The step interpreter writes it to the object store as the run goes —
343
+ * after the map step with the carved slices, and again after the reduce
344
+ * step has planned each component's merge ranges — and points the `plan`
345
+ * sidecar of the execution's `(taskHash, inputsHash)` directory at it, so a
346
+ * re-plan or a resume that computes the same `partitions`/`boundaries`/
347
+ * `splits` reuses the slices instead of carving them again, partition by
348
+ * partition, and a component of the same partials reuses its ranges.
349
+ */
350
+ export const PartitionPlanType = StructType({
351
+ /** Partitioned input hashes, wire order. */
352
+ partitions: ArrayType(StringType),
353
+ /** First segment index of each partition of the primary; boundaries[0] = 0. */
354
+ boundaries: ArrayType(IntegerType),
355
+ /** Per secondary (partitions[1..]): the split point of every partition plus the end; length boundaries.length + 1. */
356
+ splits: ArrayType(ArrayType(SplitPointType)),
357
+ /** slices[input][partition] object hashes; empty until carved. */
358
+ slices: ArrayType(ArrayType(StringType)),
359
+ /** The ranged fan-in of each merged component, once its ranges are
360
+ * planned. Appended LAST (BEAST2 encodes struct fields positionally) with
361
+ * a dual decoder — see {@link decodePartitionPlan}. */
362
+ merges: ArrayType(MergeRangePlanType),
363
+ });
364
+ /**
365
+ * The pre-`merges` plan wire shape, kept only so {@link decodePartitionPlan}
366
+ * can read plans a run recorded before the fan-in ran per key range.
367
+ */
368
+ const PreMergesPartitionPlanType = StructType({
369
+ partitions: ArrayType(StringType),
370
+ boundaries: ArrayType(IntegerType),
371
+ splits: ArrayType(ArrayType(SplitPointType)),
372
+ slices: ArrayType(ArrayType(StringType)),
373
+ });
374
+ /** Encode a {@link PartitionPlanType} value for the object store. */
375
+ export const encodePartitionPlan = encodeBeast2For(PartitionPlanType);
376
+ const decodeCurrentPlan = decodeBeast2For(PartitionPlanType);
377
+ const decodePreMergesPlan = decodeBeast2For(PreMergesPartitionPlanType);
378
+ /**
379
+ * Decode a {@link PartitionPlanType} object, tolerating the pre-`merges`
380
+ * wire shape (dual-decode migration): an older plan decodes with no recorded
381
+ * merge ranges, so its partition slices are reused and its ranges planned.
382
+ *
383
+ * @param data - the plan object's bytes
384
+ * @returns the decoded plan
385
+ */
386
+ export function decodePartitionPlan(data) {
387
+ try {
388
+ return decodeCurrentPlan(data);
389
+ }
390
+ catch (err) {
391
+ try {
392
+ return { ...decodePreMergesPlan(data), merges: [] };
393
+ }
394
+ catch {
395
+ throw err; // no known shape — surface the current-format error
396
+ }
397
+ }
398
+ }
399
+ /**
400
+ * Extracts the shape a `by` projection reads — see {@link ProjectionShape} —
401
+ * or `null` for any other (unaccepted) shape.
402
+ *
403
+ * @param ir - the projection's function IR, `(Key) -> Projection`
404
+ * @returns the shape, or `null` when the body is not an accepted projection
405
+ */
406
+ export function partitionProjectionShape(ir) {
407
+ const param = ir.value.parameters[0]?.value.name;
408
+ if (param === undefined)
409
+ return null;
410
+ // Chase wrappers to the expression the body evaluates to.
411
+ const unwrap = (node) => {
412
+ for (;;) {
413
+ if (node.type === 'Block') {
414
+ const statements = node.value.statements;
415
+ if (statements.length === 0)
416
+ return node;
417
+ node = statements[statements.length - 1];
418
+ }
419
+ else if (node.type === 'Return') {
420
+ node = node.value.value;
421
+ }
422
+ else if (node.type === 'As' || node.type === 'WrapRecursive' || node.type === 'UnwrapRecursive') {
423
+ node = node.value.value;
424
+ }
425
+ else {
426
+ return node;
427
+ }
428
+ }
429
+ };
430
+ const isParam = (node) => node.type === 'Variable' && node.value.name === param;
431
+ const fieldOf = (node) => node.type === 'GetField' && isParam(unwrap(node.value.struct)) ? node.value.field : null;
432
+ // Walks a GetField chain down to the parameter: `key.a.b` → ['a', 'b'].
433
+ const pathOf = (node) => {
434
+ const path = [];
435
+ let cur = node;
436
+ while (cur.type === 'GetField') {
437
+ path.unshift(cur.value.field);
438
+ cur = unwrap(cur.value.struct);
439
+ }
440
+ return isParam(cur) && path.length > 0 ? path : null;
441
+ };
442
+ const body = unwrap(ir.value.body);
443
+ if (isParam(body))
444
+ return { kind: 'fields', names: [] };
445
+ const chain = pathOf(body);
446
+ if (chain !== null) {
447
+ // A one-step chain is a top-level field read — the `fields` family.
448
+ return chain.length === 1 ? { kind: 'fields', names: chain } : { kind: 'path', names: chain };
449
+ }
450
+ if (body.type === 'Struct') {
451
+ const fields = [];
452
+ for (const { value } of body.value.fields) {
453
+ const f = fieldOf(unwrap(value));
454
+ if (f === null)
455
+ return null;
456
+ fields.push(f);
457
+ }
458
+ return { kind: 'fields', names: fields };
459
+ }
460
+ return null;
461
+ }
462
+ /**
463
+ * The East type of a projected key — the type {@link projectKey} values have,
464
+ * and the one to build their comparator for: the key type itself for the
465
+ * identity, a struct of the named leading fields in declared order, or the
466
+ * type at the end of a nested first-field path.
467
+ *
468
+ * @param shape - the projection's shape
469
+ * @param keyType - the partitioned dataset's key type
470
+ * @returns the projected key type
471
+ * @throws {Error} When the shape reads a field the key type does not have.
472
+ *
473
+ * @example
474
+ * ```ts
475
+ * const cmp = compareFor(projectedKeyType(shape, keyTypeValue));
476
+ * cmp(projectKey(shape, a), projectKey(shape, b));
477
+ * ```
478
+ */
479
+ export function projectedKeyType(shape, keyType) {
480
+ if (shape.names.length === 0)
481
+ return keyType;
482
+ const fieldType = (level, name) => {
483
+ const field = level.type === 'Struct' ? level.value.find((f) => f.name === name) : undefined;
484
+ if (field === undefined) {
485
+ throw new Error(`partition projection reads field '${name}' of a key level that has no such field`);
486
+ }
487
+ return field.type;
488
+ };
489
+ if (shape.kind === 'path')
490
+ return shape.names.reduce(fieldType, keyType);
491
+ return variant('Struct', shape.names.map((name) => ({ name, type: fieldType(keyType, name) })));
492
+ }
493
+ /**
494
+ * Projects a partition key through a `by` shape, without compiling the
495
+ * projection: the key itself for the identity, a struct of the named leading
496
+ * fields built field by field in declared order, or the value at the end of a
497
+ * nested first-field path.
498
+ *
499
+ * @param shape - the projection's shape
500
+ * @param key - a key of the partitioned dataset
501
+ * @returns the projected key, a value of {@link projectedKeyType}
502
+ */
503
+ export function projectKey(shape, key) {
504
+ if (shape.names.length === 0)
505
+ return key;
506
+ if (shape.kind === 'path') {
507
+ return shape.names.reduce((level, name) => level[name], key);
508
+ }
509
+ const projected = {};
510
+ for (const name of shape.names)
511
+ projected[name] = key[name];
512
+ return projected;
513
+ }
232
514
  //# sourceMappingURL=task.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=task.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.spec.d.ts","sourceRoot":"","sources":["../../src/task.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Partition and stream task wire helpers (issue #770): the partition
7
+ * metadata's merge fields and its triple decoder, the stream metadata's
8
+ * `merge` mode and its dual decoder, the partition plan round trip, and the
9
+ * `by` projection shapes the orchestrator evaluates by reading key fields
10
+ * instead of compiling the projection.
11
+ */
12
+ import { describe, it } from 'node:test';
13
+ import assert from 'node:assert/strict';
14
+ import { ArrayType, BlobType, BooleanType, East, IntegerType, OptionType, StringType, StructType, compareFor, encodeBeast2For, encodeEastIR, isTypeValueEqual, none, some, toEastTypeValue, variant } from '@elaraai/east';
15
+ import { decodePartitionPlan, decodePartitionTaskMetadata, decodeStreamTaskMetadata, encodePartitionPlan, encodePartitionTaskMetadata, encodeStreamTaskMetadata, partitionProjectionShape, projectKey, projectedKeyType, } from './task.js';
16
+ import { mergeCommandIr } from './stream.js';
17
+ describe('PartitionTaskMetadataType', () => {
18
+ const mergeIr = encodeEastIR(East.function([IntegerType, StringType, StringType], StringType, (_$, _key, acc, value) => acc.concat(value)).toIR());
19
+ const mergeCommand = encodeEastIR(mergeCommandIr(variant('east_c', { platforms: ['east-c-std'] }), 'function'));
20
+ /** The metadata with every blob as a plain Uint8Array — the decoder hands
21
+ * back Buffers, whose prototype strict deep equality would reject. */
22
+ function plain(meta) {
23
+ const blob = (option) => option.type === 'some' ? some(new Uint8Array(option.value)) : none;
24
+ return { ...meta, by: blob(meta.by), combine: blob(meta.combine), merge: blob(meta.merge), mergeCommand: blob(meta.mergeCommand) };
25
+ }
26
+ it('round-trips the merge fields and the merge command', () => {
27
+ const meta = {
28
+ partitions: 1n, by: none, combine: none, targetPartitionBytes: 1024n,
29
+ merge: some(mergeIr), mergeSets: false, mergeCommand: some(mergeCommand),
30
+ };
31
+ assert.deepEqual(plain(decodePartitionTaskMetadata(encodePartitionTaskMetadata(meta))), meta);
32
+ });
33
+ it('decodes v1.0.77 metadata, exported before merge commands, with mergeCommand none', () => {
34
+ const shape = StructType({
35
+ partitions: IntegerType, by: OptionType(BlobType), combine: OptionType(BlobType), targetPartitionBytes: IntegerType,
36
+ merge: OptionType(BlobType), mergeSets: BooleanType,
37
+ });
38
+ const legacy = encodeBeast2For(shape)({ partitions: 2n, by: none, combine: none, targetPartitionBytes: 512n, merge: some(mergeIr), mergeSets: false });
39
+ assert.deepEqual(plain(decodePartitionTaskMetadata(legacy)), {
40
+ partitions: 2n, by: none, combine: none, targetPartitionBytes: 512n, merge: some(mergeIr), mergeSets: false, mergeCommand: none,
41
+ });
42
+ });
43
+ it('decodes metadata exported before merge assembly with every merge field off', () => {
44
+ const shape = StructType({ partitions: IntegerType, by: OptionType(BlobType), combine: OptionType(BlobType), targetPartitionBytes: IntegerType });
45
+ const legacy = encodeBeast2For(shape)({ partitions: 1n, by: none, combine: none, targetPartitionBytes: 256n });
46
+ assert.deepEqual(decodePartitionTaskMetadata(legacy), {
47
+ partitions: 1n, by: none, combine: none, targetPartitionBytes: 256n, merge: none, mergeSets: false, mergeCommand: none,
48
+ });
49
+ });
50
+ it('throws for bytes of no known metadata shape', () => {
51
+ assert.throws(() => decodePartitionTaskMetadata(encodeBeast2For(IntegerType)(7n)));
52
+ });
53
+ });
54
+ describe('StreamTaskMetadataType', () => {
55
+ it('round-trips the merge mode', () => {
56
+ const meta = { stream: true, emit: 'dict', merge: 'function' };
57
+ assert.deepEqual(decodeStreamTaskMetadata(encodeStreamTaskMetadata(meta)), meta);
58
+ });
59
+ it('decodes metadata exported before merge modes as merge none', () => {
60
+ const legacy = encodeBeast2For(StructType({ stream: BooleanType, emit: StringType }))({ stream: false, emit: 'set' });
61
+ assert.deepEqual(decodeStreamTaskMetadata(legacy), { stream: false, emit: 'set', merge: 'none' });
62
+ });
63
+ it('throws for bytes of no known metadata shape', () => {
64
+ assert.throws(() => decodeStreamTaskMetadata(encodeBeast2For(IntegerType)(7n)));
65
+ });
66
+ });
67
+ describe('PartitionPlanType', () => {
68
+ it('round-trips a plan, before and after its slices are carved and its merge ranges planned', () => {
69
+ const plan = {
70
+ partitions: ['a'.repeat(64), 'b'.repeat(64)],
71
+ boundaries: [0n, 4n, 9n],
72
+ splits: [[{ seg: 0n, offset: 0n }, { seg: 3n, offset: 17n }, { seg: 8n, offset: 0n }, { seg: 12n, offset: 0n }]],
73
+ slices: [],
74
+ merges: [],
75
+ };
76
+ assert.deepEqual(decodePartitionPlan(encodePartitionPlan(plan)), plan);
77
+ const carved = { ...plan, slices: [['c'.repeat(64), 'd'.repeat(64), 'e'.repeat(64)], ['f'.repeat(64), '0'.repeat(64), '1'.repeat(64)]] };
78
+ assert.deepEqual(decodePartitionPlan(encodePartitionPlan(carved)), carved);
79
+ const merged = {
80
+ ...carved,
81
+ merges: [{ partials: ['2'.repeat(64), '3'.repeat(64)], ranges: ['4'.repeat(64), '5'.repeat(64)] }],
82
+ };
83
+ assert.deepEqual(decodePartitionPlan(encodePartitionPlan(merged)), merged);
84
+ });
85
+ it('decodes a plan recorded before merge ranges existed, with none', () => {
86
+ // The pre-`merges` wire shape, encoded directly.
87
+ const PreMergesPlanType = StructType({
88
+ partitions: ArrayType(StringType),
89
+ boundaries: ArrayType(IntegerType),
90
+ splits: ArrayType(ArrayType(StructType({ seg: IntegerType, offset: IntegerType }))),
91
+ slices: ArrayType(ArrayType(StringType)),
92
+ });
93
+ const older = encodeBeast2For(PreMergesPlanType)({
94
+ partitions: ['a'.repeat(64)],
95
+ boundaries: [0n, 2n],
96
+ splits: [],
97
+ slices: [['b'.repeat(64), 'c'.repeat(64)]],
98
+ });
99
+ assert.deepEqual(decodePartitionPlan(older), {
100
+ partitions: ['a'.repeat(64)],
101
+ boundaries: [0n, 2n],
102
+ splits: [],
103
+ slices: [['b'.repeat(64), 'c'.repeat(64)]],
104
+ merges: [],
105
+ });
106
+ });
107
+ });
108
+ describe('partition projections', () => {
109
+ const AtType = StructType({ day: IntegerType, hour: IntegerType });
110
+ const KeyType = StructType({ region: StringType, at: AtType, sku: StringType });
111
+ const keyTypeValue = toEastTypeValue(KeyType);
112
+ const keys = [
113
+ { region: 'eu', at: { day: 2n, hour: 7n }, sku: 'b' },
114
+ { region: 'eu', at: { day: 2n, hour: 7n }, sku: 'a' },
115
+ { region: 'eu', at: { day: 1n, hour: 9n }, sku: 'c' },
116
+ { region: 'ap', at: { day: 3n, hour: 0n }, sku: 'a' },
117
+ ];
118
+ /** A `by` projection over the key, compiled, and its shape. */
119
+ function projection(by) {
120
+ const bundle = East.function([KeyType], undefined, by).toIR();
121
+ return {
122
+ compiled: bundle.compile([]),
123
+ shape: partitionProjectionShape(bundle.ir),
124
+ };
125
+ }
126
+ /** Whether two comparisons agree in sign. */
127
+ const sameSign = (a, b) => Math.sign(a) === Math.sign(b);
128
+ it('reads the identity, a leading field, a struct literal of leading fields and a nested first-field path', () => {
129
+ assert.deepEqual(projection(($, key) => key).shape, { kind: 'fields', names: [] });
130
+ assert.deepEqual(projection(($, key) => key.region).shape, { kind: 'fields', names: ['region'] });
131
+ assert.deepEqual(projection(($, key) => ({ region: key.region, at: key.at })).shape, { kind: 'fields', names: ['region', 'at'] });
132
+ assert.deepEqual(projection(($, key) => key.at.day).shape, { kind: 'path', names: ['at', 'day'] });
133
+ });
134
+ it('returns null for a projection that computes', () => {
135
+ assert.equal(projection(($, key) => key.region.concat('-')).shape, null);
136
+ });
137
+ it('projects the identity to the key itself', () => {
138
+ const shape = { kind: 'fields', names: [] };
139
+ assert.ok(isTypeValueEqual(projectedKeyType(shape, keyTypeValue), keyTypeValue));
140
+ assert.equal(projectKey(shape, keys[0]), keys[0]);
141
+ });
142
+ it('projects a struct literal of leading fields exactly as the compiled projection does', () => {
143
+ const { compiled, shape } = projection(($, key) => ({ region: key.region, at: key.at }));
144
+ assert.ok(isTypeValueEqual(projectedKeyType(shape, keyTypeValue), toEastTypeValue(StructType({ region: StringType, at: AtType }))));
145
+ for (const key of keys)
146
+ assert.deepEqual(projectKey(shape, key), compiled(key));
147
+ });
148
+ it('projects a nested first-field path exactly as the compiled projection does', () => {
149
+ const { compiled, shape } = projection(($, key) => key.at.day);
150
+ assert.ok(isTypeValueEqual(projectedKeyType(shape, keyTypeValue), toEastTypeValue(IntegerType)));
151
+ for (const key of keys)
152
+ assert.equal(projectKey(shape, key), compiled(key));
153
+ });
154
+ it('orders a single leading field as the compiled projection does', () => {
155
+ const { compiled, shape } = projection(($, key) => key.region);
156
+ const cmp = compareFor(projectedKeyType(shape, keyTypeValue));
157
+ const cmpCompiled = compareFor(StringType);
158
+ for (const a of keys) {
159
+ for (const b of keys) {
160
+ assert.ok(sameSign(cmp(projectKey(shape, a), projectKey(shape, b)), cmpCompiled(compiled(a), compiled(b))));
161
+ }
162
+ }
163
+ });
164
+ it('throws when a shape reads a field the key type does not have', () => {
165
+ assert.throws(() => projectedKeyType({ kind: 'fields', names: ['store'] }, keyTypeValue), /field 'store'/);
166
+ assert.throws(() => projectedKeyType({ kind: 'path', names: ['at', 'minute'] }, keyTypeValue), /field 'minute'/);
167
+ });
168
+ });
169
+ //# sourceMappingURL=task.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.spec.js","sourceRoot":"","sources":["../../src/task.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elaraai/e3-types",
3
- "version": "1.0.77",
3
+ "version": "1.0.78",
4
4
  "description": "Shared type definitions for e3 (East Execution Engine)",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -18,7 +18,7 @@
18
18
  "directory": "libs/e3/packages/e3-types"
19
19
  },
20
20
  "peerDependencies": {
21
- "@elaraai/east": "1.0.77"
21
+ "@elaraai/east": "1.0.78"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "^22.0.0",