@elaraai/e3 1.0.86 → 1.0.87
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/record-index.d.ts +73 -12
- package/dist/src/record-index.d.ts.map +1 -1
- package/dist/src/record-index.js +62 -7
- package/dist/src/record-index.js.map +1 -1
- package/dist/src/record-index.spec.js +82 -6
- package/dist/src/record-index.spec.js.map +1 -1
- package/dist/src/record-interval.d.ts +54 -0
- package/dist/src/record-interval.d.ts.map +1 -0
- package/dist/src/record-interval.js +111 -0
- package/dist/src/record-interval.js.map +1 -0
- package/dist/src/record-interval.spec.d.ts +2 -0
- package/dist/src/record-interval.spec.d.ts.map +1 -0
- package/dist/src/record-interval.spec.js +78 -0
- package/dist/src/record-interval.spec.js.map +1 -0
- package/dist/src/types.d.ts +12 -1
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
* commit and in every bulk build, and a maintained index must equal a rebuilt
|
|
19
19
|
* one to the byte.
|
|
20
20
|
*/
|
|
21
|
-
import type { EastType, FunctionExpr,
|
|
22
|
-
import { NullType } from '@elaraai/east';
|
|
21
|
+
import type { DateTimeType, DictType, EastType, FunctionExpr, IntegerType, OptionType } from '@elaraai/east';
|
|
22
|
+
import { NullType, SetType, StructType } from '@elaraai/east';
|
|
23
23
|
import type { RecordDef, RecordIndexDef } from './types.js';
|
|
24
24
|
import { type FunctionRunner } from './runner.js';
|
|
25
25
|
/**
|
|
@@ -42,9 +42,48 @@ export interface IndexFunction {
|
|
|
42
42
|
/** The function's IR bundle, as `EastIR` or `AsyncEastIR`. */
|
|
43
43
|
toIR(): unknown;
|
|
44
44
|
}
|
|
45
|
-
/**
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
/** The own fields of a Dict record's struct row. */
|
|
46
|
+
type RowFields<T> = T extends DictType<any, StructType<infer F>> ? F : Record<never, never>;
|
|
47
|
+
/** A Set field indexes its elements; every other field indexes its value. */
|
|
48
|
+
type FieldKey<T> = T extends SetType<infer K extends EastType> ? K : T extends EastType ? T : never;
|
|
49
|
+
/** The field names carried by a field-index declaration. */
|
|
50
|
+
type IndexOn<S> = S extends {
|
|
51
|
+
interval: {
|
|
52
|
+
from: infer F extends string;
|
|
53
|
+
};
|
|
54
|
+
} ? S extends {
|
|
55
|
+
on: infer On extends readonly string[];
|
|
56
|
+
} ? readonly [...On, F] : readonly [F] : S extends {
|
|
57
|
+
on: infer On extends readonly string[];
|
|
58
|
+
} ? On : undefined;
|
|
59
|
+
type IndexInterval<S> = S extends {
|
|
60
|
+
interval: infer I;
|
|
61
|
+
} ? I : undefined;
|
|
62
|
+
type IntervalField<T> = {
|
|
63
|
+
[F in keyof RowFields<T>]: RowFields<T>[F] extends DateTimeType | OptionType<DateTimeType> ? F : never;
|
|
64
|
+
}[keyof RowFields<T>] & string;
|
|
65
|
+
type IntervalPrefix<S, T> = S extends {
|
|
66
|
+
on: infer On extends readonly (keyof RowFields<T> & string)[];
|
|
67
|
+
} ? {
|
|
68
|
+
[F in On[number]]: FieldKey<RowFields<T>[F]>;
|
|
69
|
+
} : Record<never, never>;
|
|
70
|
+
/** What an index keys on: `on` (row fields), `interval` with optional leading
|
|
71
|
+
* `on` fields, `key` (one computed entry per row), or `keys` (one per Set
|
|
72
|
+
* element), and an optional covering projection.
|
|
73
|
+
* @typeParam T - The owning record's state type
|
|
74
|
+
*/
|
|
75
|
+
export type RecordIndexSpec<T extends EastType = EastType> = {
|
|
76
|
+
/** Row fields in index order. One field uses its value as the key; several
|
|
77
|
+
* use a struct in this order. Set fields fan out over their elements. */
|
|
78
|
+
on?: readonly (keyof RowFields<T> & string)[];
|
|
79
|
+
/** Preserve intervals intersecting a half-open time window, including
|
|
80
|
+
* carry-in events, without day fan-out or duration lookbacks. `on`, when
|
|
81
|
+
* present, names exact leading fields before this interval. Missing starts
|
|
82
|
+
* remain selectable as Unset; missing or non-positive ends are instants. */
|
|
83
|
+
interval?: {
|
|
84
|
+
from: IntervalField<T>;
|
|
85
|
+
to: IntervalField<T>;
|
|
86
|
+
};
|
|
48
87
|
/** `(K, V) -> IK` — one index entry per row. */
|
|
49
88
|
key?: IndexFunction;
|
|
50
89
|
/** `(K, V) -> Set<IK>` — one index entry per element, so a row that names
|
|
@@ -58,8 +97,11 @@ export type RecordIndexSpec = {
|
|
|
58
97
|
/** The type an East function returns, read off the expression itself. */
|
|
59
98
|
type OutputOf<F> = F extends FunctionExpr<any, infer O> ? (O extends EastType ? O : EastType) : EastType;
|
|
60
99
|
/**
|
|
61
|
-
* The index key a spec declares: `key`'s return, or the
|
|
62
|
-
* `keys` returns.
|
|
100
|
+
* The index key a spec declares: its row fields, `key`'s return, or the
|
|
101
|
+
* element of the Set `keys` returns.
|
|
102
|
+
*
|
|
103
|
+
* @typeParam S - The index spec as written
|
|
104
|
+
* @typeParam T - The owning record's state type, for field indexes
|
|
63
105
|
*
|
|
64
106
|
* @remarks
|
|
65
107
|
* Read off the spec the caller actually wrote, so the factory's parameter
|
|
@@ -67,7 +109,21 @@ type OutputOf<F> = F extends FunctionExpr<any, infer O> ? (O extends EastType ?
|
|
|
67
109
|
* its result carries the precise key type — which is what types a window read
|
|
68
110
|
* through the index, and so every component that renders one.
|
|
69
111
|
*/
|
|
70
|
-
export type IndexKeyOf<S> = S extends {
|
|
112
|
+
export type IndexKeyOf<S, T extends EastType = EastType> = S extends {
|
|
113
|
+
interval: {
|
|
114
|
+
from: infer F extends keyof RowFields<T> & string;
|
|
115
|
+
};
|
|
116
|
+
} ? StructType<IntervalPrefix<S, T> & {
|
|
117
|
+
__interval: IntegerType;
|
|
118
|
+
} & {
|
|
119
|
+
[K in F]: RowFields<T>[K];
|
|
120
|
+
}> : S extends {
|
|
121
|
+
on: readonly [infer F extends keyof RowFields<T>];
|
|
122
|
+
} ? FieldKey<RowFields<T>[F]> : S extends {
|
|
123
|
+
on: infer On extends readonly (keyof RowFields<T> & string)[];
|
|
124
|
+
} ? number extends On['length'] ? EastType : StructType<{
|
|
125
|
+
[K in On[number]]: FieldKey<RowFields<T>[K]>;
|
|
126
|
+
}> : S extends {
|
|
71
127
|
key: infer F;
|
|
72
128
|
} ? OutputOf<F> : S extends {
|
|
73
129
|
keys: infer F;
|
|
@@ -96,7 +152,7 @@ export type ProjectionOf<S> = S extends {
|
|
|
96
152
|
* @param name - Index name: never `primary`, and one declaration per name on
|
|
97
153
|
* the record, which `e3.package` enforces when it folds indexes onto it
|
|
98
154
|
* @param rec - The record to index
|
|
99
|
-
* @param spec -
|
|
155
|
+
* @param spec - `on`, `key`, `keys`, or `interval` with optional leading `on`; optional covering `value`
|
|
100
156
|
* @param config - Optional runner selection (known runtimes only)
|
|
101
157
|
* @returns A RecordIndexDef to pass to `e3.package`
|
|
102
158
|
*
|
|
@@ -113,17 +169,22 @@ export type ProjectionOf<S> = S extends {
|
|
|
113
169
|
* ($, k, v) => ({ title: v.title, owner: v.owner })),
|
|
114
170
|
* });
|
|
115
171
|
*
|
|
172
|
+
* // A row field supplies its own key type.
|
|
173
|
+
* const byDue = e3.recordIndex('by_due', plans, { on: ['due'] });
|
|
174
|
+
*
|
|
116
175
|
* // Many keys per row: a Set return.
|
|
117
176
|
* const byResource = e3.recordIndex('by_resource', plans, {
|
|
118
177
|
* keys: East.function([PlanKeyType, PlanRowType], SetType(ResourceRefType),
|
|
119
178
|
* ($, k, v) => v.resources),
|
|
120
179
|
* });
|
|
121
180
|
*
|
|
122
|
-
* const pkg = e3.package('planning', '1.0.0', plans, byStatus, byResource);
|
|
181
|
+
* const pkg = e3.package('planning', '1.0.0', plans, byStatus, byDue, byResource);
|
|
123
182
|
* ```
|
|
124
183
|
*/
|
|
125
|
-
export declare function recordIndex<Name extends string, T extends EastType, S extends RecordIndexSpec
|
|
184
|
+
export declare function recordIndex<Name extends string, T extends EastType, const S extends RecordIndexSpec<T>>(name: Name, rec: RecordDef<T>, spec: S, config?: {
|
|
126
185
|
runner?: FunctionRunner;
|
|
127
|
-
}): RecordIndexDef<Name, T, IndexKeyOf<S>, ProjectionOf<S
|
|
186
|
+
}): RecordIndexDef<Name, T, IndexKeyOf<S, T>, ProjectionOf<S>, IndexOn<S>> & {
|
|
187
|
+
interval: IndexInterval<S>;
|
|
188
|
+
};
|
|
128
189
|
export {};
|
|
129
190
|
//# sourceMappingURL=record-index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-index.d.ts","sourceRoot":"","sources":["../../src/record-index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"record-index.d.ts","sourceRoot":"","sources":["../../src/record-index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/record-index.js
CHANGED
|
@@ -2,12 +2,58 @@
|
|
|
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 { Expr, NullType, printType } from '@elaraai/east';
|
|
5
|
+
import { East, Expr, NullType, SetType, StructType, printType } from '@elaraai/east';
|
|
6
|
+
import { intervalKey } from './record-interval.js';
|
|
6
7
|
import { checkPure, sameEastType } from './record-guards.js';
|
|
7
8
|
import { DEFAULT_RUNNER, runnerToVariant } from './runner.js';
|
|
8
9
|
/** The index name reserved for the record's own collection wherever an index
|
|
9
10
|
* is selected — a page, a key search, an arm of the mutation delta. */
|
|
10
11
|
const RESERVED_INDEX_NAME = 'primary';
|
|
12
|
+
/** Generate a pure key function from a field declaration. The normal index
|
|
13
|
+
* build and mutation programs call it exactly as they call an authored key. */
|
|
14
|
+
function fieldKey(name, keyType, valueType, on) {
|
|
15
|
+
const rowType = valueType;
|
|
16
|
+
if (rowType.type !== 'Struct')
|
|
17
|
+
throw new Error(`e3.recordIndex '${name}' on requires a record with Struct rows`);
|
|
18
|
+
if (on.length === 0)
|
|
19
|
+
throw new Error(`e3.recordIndex '${name}' on requires at least one field`);
|
|
20
|
+
if (new Set(on).size !== on.length)
|
|
21
|
+
throw new Error(`e3.recordIndex '${name}' on must not repeat a field`);
|
|
22
|
+
const fields = on.map((field) => {
|
|
23
|
+
if (!Object.hasOwn(rowType.fields, field))
|
|
24
|
+
throw new Error(`e3.recordIndex '${name}' on names unknown row field '${field}'`);
|
|
25
|
+
const type = rowType.fields[field];
|
|
26
|
+
const set = type.type === 'Set';
|
|
27
|
+
return { field, type: set ? type.key : type, set };
|
|
28
|
+
});
|
|
29
|
+
const indexType = fields.length === 1 ? fields[0].type : StructType(Object.fromEntries(fields.map((f) => [f.field, f.type])));
|
|
30
|
+
const multi = fields.some((f) => f.set);
|
|
31
|
+
const output = multi ? SetType(indexType) : indexType;
|
|
32
|
+
// Types are checked above; the row's dynamic field names are erased only
|
|
33
|
+
// inside this generated East body, as in record-programs.ts.
|
|
34
|
+
const fn = East.function([keyType, rowType], output, ($, _key, row) => {
|
|
35
|
+
if (fields.length === 1)
|
|
36
|
+
return row[fields[0].field];
|
|
37
|
+
if (!multi)
|
|
38
|
+
return Object.fromEntries(fields.map((f) => [f.field, row[f.field]]));
|
|
39
|
+
const keys = $.let(new Set(), SetType(indexType));
|
|
40
|
+
const append = ($, at, values) => {
|
|
41
|
+
const field = fields[at];
|
|
42
|
+
if (field === undefined) {
|
|
43
|
+
$(keys.insert(values));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (field.set) {
|
|
47
|
+
$.for(row[field.field], ($, element) => append($, at + 1, { ...values, [field.field]: element }));
|
|
48
|
+
}
|
|
49
|
+
else
|
|
50
|
+
append($, at + 1, { ...values, [field.field]: row[field.field] });
|
|
51
|
+
};
|
|
52
|
+
append($, 0, {});
|
|
53
|
+
return keys;
|
|
54
|
+
});
|
|
55
|
+
return { fn, multi };
|
|
56
|
+
}
|
|
11
57
|
/** The signature of a function an index declares, as the guards see it. */
|
|
12
58
|
function signatureOf(fn) {
|
|
13
59
|
return Expr.type(fn);
|
|
@@ -47,7 +93,7 @@ function checkEntryParams(name, role, keyType, valueType, inputs) {
|
|
|
47
93
|
* @param name - Index name: never `primary`, and one declaration per name on
|
|
48
94
|
* the record, which `e3.package` enforces when it folds indexes onto it
|
|
49
95
|
* @param rec - The record to index
|
|
50
|
-
* @param spec -
|
|
96
|
+
* @param spec - `on`, `key`, `keys`, or `interval` with optional leading `on`; optional covering `value`
|
|
51
97
|
* @param config - Optional runner selection (known runtimes only)
|
|
52
98
|
* @returns A RecordIndexDef to pass to `e3.package`
|
|
53
99
|
*
|
|
@@ -64,13 +110,16 @@ function checkEntryParams(name, role, keyType, valueType, inputs) {
|
|
|
64
110
|
* ($, k, v) => ({ title: v.title, owner: v.owner })),
|
|
65
111
|
* });
|
|
66
112
|
*
|
|
113
|
+
* // A row field supplies its own key type.
|
|
114
|
+
* const byDue = e3.recordIndex('by_due', plans, { on: ['due'] });
|
|
115
|
+
*
|
|
67
116
|
* // Many keys per row: a Set return.
|
|
68
117
|
* const byResource = e3.recordIndex('by_resource', plans, {
|
|
69
118
|
* keys: East.function([PlanKeyType, PlanRowType], SetType(ResourceRefType),
|
|
70
119
|
* ($, k, v) => v.resources),
|
|
71
120
|
* });
|
|
72
121
|
*
|
|
73
|
-
* const pkg = e3.package('planning', '1.0.0', plans, byStatus, byResource);
|
|
122
|
+
* const pkg = e3.package('planning', '1.0.0', plans, byStatus, byDue, byResource);
|
|
74
123
|
* ```
|
|
75
124
|
*/
|
|
76
125
|
export function recordIndex(name, rec, spec, config) {
|
|
@@ -98,12 +147,15 @@ export function recordIndex(name, rec, spec, config) {
|
|
|
98
147
|
}
|
|
99
148
|
const keyType = recordType.key;
|
|
100
149
|
const valueType = recordType.value;
|
|
101
|
-
if (
|
|
150
|
+
if ([spec.interval ?? spec.on, spec.key, spec.keys].filter((part) => part !== undefined).length !== 1) {
|
|
102
151
|
throw new Error(`e3.recordIndex '${name}' takes exactly one of 'key' (one entry per row) ` +
|
|
103
|
-
`or 'keys' (one per element of a returned Set)`);
|
|
152
|
+
`or 'keys' (one per element of a returned Set), 'on' (row fields), or 'interval' (with optional leading 'on' fields)`);
|
|
104
153
|
}
|
|
105
|
-
const
|
|
106
|
-
const
|
|
154
|
+
const prefix = spec.on === undefined ? undefined : fieldKey(name, keyType, valueType, spec.on);
|
|
155
|
+
const generated = spec.interval === undefined ? prefix
|
|
156
|
+
: intervalKey(name, keyType, valueType, spec.on ?? [], spec.interval, prefix);
|
|
157
|
+
const multi = generated?.multi ?? (spec.keys !== undefined);
|
|
158
|
+
const keyFn = generated?.fn ?? (spec.key ?? spec.keys);
|
|
107
159
|
const runner = config?.runner ?? DEFAULT_RUNNER;
|
|
108
160
|
// Validate eagerly so a bad runner fails at definition time, not export time.
|
|
109
161
|
runnerToVariant(runner);
|
|
@@ -131,6 +183,9 @@ export function recordIndex(name, rec, spec, config) {
|
|
|
131
183
|
kind: 'recordIndex',
|
|
132
184
|
name,
|
|
133
185
|
record: rec,
|
|
186
|
+
on: (spec.interval !== undefined ? Object.freeze([...(spec.on ?? []), spec.interval.from])
|
|
187
|
+
: spec.on === undefined ? undefined : Object.freeze([...spec.on])),
|
|
188
|
+
interval: (spec.interval === undefined ? undefined : Object.freeze({ ...spec.interval })),
|
|
134
189
|
keyFn,
|
|
135
190
|
...(spec.value !== undefined && { valueFn: spec.value }),
|
|
136
191
|
multi,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-index.js","sourceRoot":"","sources":["../../src/record-index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"record-index.js","sourceRoot":"","sources":["../../src/record-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,12 +17,13 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { describe, it } from 'node:test';
|
|
19
19
|
import assert from 'node:assert/strict';
|
|
20
|
-
import { DictType, East, IntegerType, NullType, SetType, SortedMap, StringType, StructType, compareFor, printType, } from '@elaraai/east';
|
|
20
|
+
import { DateTimeType, DictType, East, IntegerType, NullType, OptionType, PatchType, SetType, SortedMap, StringType, StructType, compareFor, equalFor, none, some, printType, variant, } from '@elaraai/east';
|
|
21
21
|
import { record } from './record.js';
|
|
22
22
|
import { recordIndex } from './record-index.js';
|
|
23
|
-
import { indexBuildProgram } from './record-programs.js';
|
|
23
|
+
import { buildMutationProgram, indexBuildProgram } from './record-programs.js';
|
|
24
|
+
import { mutation } from './mutation.js';
|
|
24
25
|
import { package_ } from './package.js';
|
|
25
|
-
const RowType = StructType({ status: StringType, due: IntegerType, title: StringType, tags: SetType(StringType) });
|
|
26
|
+
const RowType = StructType({ status: StringType, due: IntegerType, title: StringType, tags: SetType(StringType), start: OptionType(DateTimeType), end: OptionType(DateTimeType) });
|
|
26
27
|
const StatusKeyType = StructType({ status: StringType, due: IntegerType });
|
|
27
28
|
const PlansType = DictType(StringType, RowType);
|
|
28
29
|
/** The `by_status` declaration: one key per row, with a covering projection. */
|
|
@@ -42,9 +43,9 @@ function emitted(recordType, def, rows) {
|
|
|
42
43
|
return out;
|
|
43
44
|
}
|
|
44
45
|
const rows = new SortedMap([
|
|
45
|
-
['p1', { status: 'late', due: 3n, title: 'One', tags: new Set(['a', 'b']) }],
|
|
46
|
-
['p2', { status: 'ok', due: 1n, title: 'Two', tags: new Set(['b']) }],
|
|
47
|
-
['p3', { status: 'late', due: 2n, title: 'Three', tags: new Set() }],
|
|
46
|
+
['p1', { status: 'late', due: 3n, title: 'One', tags: new Set(['a', 'b']), start: some(new Date(0)), end: some(new Date(86_400_000)) }],
|
|
47
|
+
['p2', { status: 'ok', due: 1n, title: 'Two', tags: new Set(['b']), start: some(new Date(100)), end: some(new Date(500)) }],
|
|
48
|
+
['p3', { status: 'late', due: 2n, title: 'Three', tags: new Set(), start: none, end: none }],
|
|
48
49
|
], compareFor(StringType));
|
|
49
50
|
describe('recordIndex — the declaration', () => {
|
|
50
51
|
// The typed bindings below are half of each test: they compile only when the
|
|
@@ -69,6 +70,35 @@ describe('recordIndex — the declaration', () => {
|
|
|
69
70
|
assert.equal(printType(keyType), printType(StringType), 'the SET is unwrapped to its element');
|
|
70
71
|
assert.equal(printType(valueType), printType(NullType));
|
|
71
72
|
});
|
|
73
|
+
it('types field indexes and keeps their declared field order', () => {
|
|
74
|
+
const one = recordIndex('by_status', plans(), { on: ['status'] });
|
|
75
|
+
const oneType = one.keyType;
|
|
76
|
+
const fields = one.on;
|
|
77
|
+
assert.equal(printType(oneType), printType(StringType));
|
|
78
|
+
assert.deepEqual(fields, ['status']);
|
|
79
|
+
const pair = recordIndex('by_status_due', plans(), { on: ['status', 'due'], value: titleOf });
|
|
80
|
+
const pairType = pair.keyType;
|
|
81
|
+
const projection = pair.valueType;
|
|
82
|
+
assert.equal(printType(pairType), printType(StatusKeyType));
|
|
83
|
+
assert.equal(printType(projection), printType(StringType));
|
|
84
|
+
assert.deepEqual(emitted(PlansType, pair, rows), emitted(PlansType, recordIndex('computed', plans(), { key: statusKey, value: titleOf }), rows));
|
|
85
|
+
const reversed = recordIndex('by_due_status', plans(), { on: ['due', 'status'] });
|
|
86
|
+
assert.deepEqual(Object.keys(reversed.keyType.fields), ['due', 'status']);
|
|
87
|
+
assert.equal(recordIndex('computed', plans(), { key: statusKey }).on, undefined);
|
|
88
|
+
});
|
|
89
|
+
it('fans a Set field out, alone and inside a compound key, and omits empty sets', () => {
|
|
90
|
+
const one = recordIndex('by_tag', plans(), { on: ['tags'] });
|
|
91
|
+
const keyType = one.keyType;
|
|
92
|
+
assert.equal(printType(keyType), printType(StringType));
|
|
93
|
+
assert.equal(one.multi, true);
|
|
94
|
+
assert.deepEqual(emitted(PlansType, one, rows), emitted(PlansType, recordIndex('computed', plans(), { keys: tagKeys }), rows));
|
|
95
|
+
const pair = recordIndex('by_status_tag', plans(), { on: ['status', 'tags'] });
|
|
96
|
+
assert.deepEqual(emitted(PlansType, pair, rows), [
|
|
97
|
+
[{ ik: { status: 'late', tags: 'a' }, k: 'p1' }, null],
|
|
98
|
+
[{ ik: { status: 'late', tags: 'b' }, k: 'p1' }, null],
|
|
99
|
+
[{ ik: { status: 'ok', tags: 'b' }, k: 'p2' }, null],
|
|
100
|
+
]);
|
|
101
|
+
});
|
|
72
102
|
it('is collected onto its record by the package', () => {
|
|
73
103
|
const rec = plans();
|
|
74
104
|
const pkg = package_('planning', '1.0.0', rec, recordIndex('by_status', rec, { key: statusKey }), recordIndex('by_tag', rec, { keys: tagKeys }));
|
|
@@ -97,6 +127,16 @@ describe('recordIndex — the declaration', () => {
|
|
|
97
127
|
assert.throws(() => recordIndex('both', plans(), { key: statusKey, keys: tagKeys }), /exactly one of 'key'/);
|
|
98
128
|
assert.throws(() => recordIndex('neither', plans(), {}), /exactly one of 'key'/);
|
|
99
129
|
});
|
|
130
|
+
it('invalid field declarations and a field declaration beside a computed key', () => {
|
|
131
|
+
assert.throws(() => recordIndex('empty', plans(), { on: [] }), /at least one field/);
|
|
132
|
+
assert.throws(() => recordIndex('repeat', plans(), { on: ['status', 'status'] }), /must not repeat/);
|
|
133
|
+
assert.throws(() => recordIndex('both', plans(), { on: ['status'], key: statusKey }), /exactly one/);
|
|
134
|
+
// @ts-expect-error — on names the record row's own fields
|
|
135
|
+
assert.throws(() => recordIndex('unknown', plans(), { on: ['missing'] }), /unknown row field 'missing'/);
|
|
136
|
+
const scalar = record('scalar', DictType(StringType, IntegerType), new Map());
|
|
137
|
+
// @ts-expect-error — scalar rows have no field to index
|
|
138
|
+
assert.throws(() => recordIndex('scalar', scalar, { on: ['status'] }), /Struct rows/);
|
|
139
|
+
});
|
|
100
140
|
it('a keys function that does not return a Set', () => {
|
|
101
141
|
assert.throws(() => recordIndex('flat', plans(), { keys: statusKey }), /must return a Set of index keys/);
|
|
102
142
|
});
|
|
@@ -157,4 +197,40 @@ describe('recordIndex — the build program', () => {
|
|
|
157
197
|
assert.deepEqual(emitted(PlansType, recordIndex('by_status', plans(), { key: statusKey }), new Map()), []);
|
|
158
198
|
});
|
|
159
199
|
});
|
|
200
|
+
describe('recordIndex — fields through mutation and rebuild', () => {
|
|
201
|
+
it('maintains the same collections that a rebuild emits after insert, update and delete', () => {
|
|
202
|
+
const rec = plans();
|
|
203
|
+
const indexes = [
|
|
204
|
+
recordIndex('by_status_due', rec, { on: ['status', 'due'], value: titleOf }),
|
|
205
|
+
recordIndex('by_tag', rec, { on: ['tags'] }),
|
|
206
|
+
recordIndex('by_time', rec, { interval: { from: 'start', to: 'end' } }),
|
|
207
|
+
recordIndex('by_status_time', rec, { on: ['status'], interval: { from: 'start', to: 'end' } }),
|
|
208
|
+
recordIndex('by_tag_time', rec, { on: ['tags'], interval: { from: 'start', to: 'end' } }),
|
|
209
|
+
];
|
|
210
|
+
const patch = mutation.patch(rec);
|
|
211
|
+
const assembled = package_('field_indexes', '1.0.0', rec, patch, ...indexes).records.plans;
|
|
212
|
+
assert.deepEqual(assembled.indexes.by_status_due.on, ['status', 'due']);
|
|
213
|
+
const after = new SortedMap([
|
|
214
|
+
['p1', { status: 'ok', due: 4n, title: 'Updated', tags: new Set(['b', 'c']), start: none, end: none }],
|
|
215
|
+
['p3', { ...rows.get('p3'), start: some(new Date(500)), end: some(new Date(1500)) }],
|
|
216
|
+
['p4', { status: 'new', due: 2n, title: 'Four', tags: new Set(['d']), start: some(new Date(1000)), end: some(new Date(2000)) }],
|
|
217
|
+
], compareFor(StringType));
|
|
218
|
+
const diff = East.compile(East.function([PlansType, PlansType], PatchType(PlansType), (_$, before, after) => East.diff(before, after)), []);
|
|
219
|
+
const changes = [];
|
|
220
|
+
const run = buildMutationProgram(assembled, patch).compile([]);
|
|
221
|
+
run(rows, diff(rows, after), (key, op) => {
|
|
222
|
+
changes.push({ index: key.type, key: key.value, op: op.value });
|
|
223
|
+
return null;
|
|
224
|
+
});
|
|
225
|
+
for (const index of indexes) {
|
|
226
|
+
const keyType = StructType({ ik: index.keyType, k: StringType });
|
|
227
|
+
const collection = DictType(keyType, index.valueType);
|
|
228
|
+
const before = new SortedMap(emitted(PlansType, index, rows), compareFor(keyType));
|
|
229
|
+
const rebuilt = new SortedMap(emitted(PlansType, index, after), compareFor(keyType));
|
|
230
|
+
const ops = new SortedMap(changes.filter((change) => change.index === index.name).map((change) => [change.key, change.op]), compareFor(keyType));
|
|
231
|
+
const apply = East.compile(East.function([collection, PatchType(collection)], collection, (_$, value, patch) => East.applyPatch(value, patch)), []);
|
|
232
|
+
assert.equal(equalFor(collection)(apply(before, variant('patch', ops)), rebuilt), true, index.name);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
});
|
|
160
236
|
//# sourceMappingURL=record-index.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-index.spec.js","sourceRoot":"","sources":["../../src/record-index.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"record-index.spec.js","sourceRoot":"","sources":["../../src/record-index.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
/** Centred interval-tree keys for ordinary maintained record indexes. */
|
|
6
|
+
import { IntegerType, SetType, StructType, type EastType } from '@elaraai/east';
|
|
7
|
+
import type { IndexFunction } from './record-index.js';
|
|
8
|
+
/** Internal millisecond key before the row's declared DateTime type is restored. */
|
|
9
|
+
export declare const IntervalEntryType: StructType<{
|
|
10
|
+
readonly node: IntegerType;
|
|
11
|
+
readonly at: IntegerType;
|
|
12
|
+
}>;
|
|
13
|
+
/**
|
|
14
|
+
* Node zero stores the start. A positive-duration event is stored at the
|
|
15
|
+
* lowest common ancestor of its first and last included milliseconds, once
|
|
16
|
+
* ordered by start (even node code), once by end (odd node code).
|
|
17
|
+
*
|
|
18
|
+
* Every interval at a node crosses its centre. A carry-in query walks the
|
|
19
|
+
* ancestors of its lower bound: to the left of a centre it needs start < from;
|
|
20
|
+
* to the right it needs end > from. Each event lives at just one ancestor,
|
|
21
|
+
* and these carry-in results are disjoint from starts inside the window.
|
|
22
|
+
* At most 54 iterations and THREE entries, independent of event duration.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export declare const intervalEntries: import("@elaraai/east").CallableFunctionExpr<[IntegerType, IntegerType], SetType<StructType<{
|
|
26
|
+
readonly node: IntegerType;
|
|
27
|
+
readonly at: IntegerType;
|
|
28
|
+
}>>>;
|
|
29
|
+
/**
|
|
30
|
+
* Generate the pure key function, using the existing field-index function for
|
|
31
|
+
* all leading fields (including Set membership). This stays an ordinary
|
|
32
|
+
* multi-entry index: mutation, rebuild, storage and transport are shared.
|
|
33
|
+
* @param name - Index name for authoring errors.
|
|
34
|
+
* @param keyType - Primary key type.
|
|
35
|
+
* @param valueType - Record row type.
|
|
36
|
+
* @param on - Exact leading fields.
|
|
37
|
+
* @param interval - Start and end row fields.
|
|
38
|
+
* @param prefix - The standard generated field-index key function.
|
|
39
|
+
* @returns The generated keys and its fan-out flag.
|
|
40
|
+
*/
|
|
41
|
+
export declare function intervalKey(name: string, keyType: EastType, valueType: EastType, on: readonly string[], interval: {
|
|
42
|
+
from: string;
|
|
43
|
+
to: string;
|
|
44
|
+
}, prefix?: {
|
|
45
|
+
fn: IndexFunction;
|
|
46
|
+
multi: boolean;
|
|
47
|
+
}): {
|
|
48
|
+
fn: import("@elaraai/east").CallableFunctionExpr<[never, StructType<Record<string, EastType>>], SetType<StructType<{
|
|
49
|
+
readonly [x: string]: any;
|
|
50
|
+
readonly __interval: IntegerType;
|
|
51
|
+
}>>>;
|
|
52
|
+
multi: boolean;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=record-interval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-interval.d.ts","sourceRoot":"","sources":["../../src/record-interval.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yEAAyE;AACzE,OAAO,EAA4B,WAAW,EAAc,OAAO,EAAE,UAAU,EAC7E,KAAK,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAMvD,oFAAoF;AACpF,eAAO,MAAM,iBAAiB;;;EAAqD,CAAC;AAEpF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe;;;IAmB1B,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,MAAM,EAAE,EACrG,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAAC,EAAE;IAAE,EAAE,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE;;;;;;EAkDvF"}
|
|
@@ -0,0 +1,111 @@
|
|
|
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
|
+
/** Centred interval-tree keys for ordinary maintained record indexes. */
|
|
6
|
+
import { DateTimeType, East, Expr, IntegerType, OptionType, SetType, StructType, isTypeEqual, none, some } from '@elaraai/east';
|
|
7
|
+
/** The signed millisecond domain containing every valid JavaScript Date. */
|
|
8
|
+
const BIAS = 1n << 53n;
|
|
9
|
+
const LEAVES = 1n << 54n;
|
|
10
|
+
/** Internal millisecond key before the row's declared DateTime type is restored. */
|
|
11
|
+
export const IntervalEntryType = StructType({ node: IntegerType, at: IntegerType });
|
|
12
|
+
/**
|
|
13
|
+
* Node zero stores the start. A positive-duration event is stored at the
|
|
14
|
+
* lowest common ancestor of its first and last included milliseconds, once
|
|
15
|
+
* ordered by start (even node code), once by end (odd node code).
|
|
16
|
+
*
|
|
17
|
+
* Every interval at a node crosses its centre. A carry-in query walks the
|
|
18
|
+
* ancestors of its lower bound: to the left of a centre it needs start < from;
|
|
19
|
+
* to the right it needs end > from. Each event lives at just one ancestor,
|
|
20
|
+
* and these carry-in results are disjoint from starts inside the window.
|
|
21
|
+
* At most 54 iterations and THREE entries, independent of event duration.
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export const intervalEntries = East.function([IntegerType, IntegerType], SetType(IntervalEntryType), ($, start, end) => {
|
|
25
|
+
const entries = $.let(new Set(), SetType(IntervalEntryType));
|
|
26
|
+
$(entries.insert({ node: 0n, at: start }));
|
|
27
|
+
$.if(start.less(-BIAS).or(() => start.greaterEqual(BIAS)).or(() => end.less(-BIAS)).or(() => end.greaterEqual(BIAS)), ($) => {
|
|
28
|
+
$.error('Interval endpoints must be valid DateTime milliseconds');
|
|
29
|
+
});
|
|
30
|
+
// Instants and one-millisecond intervals cannot carry into another
|
|
31
|
+
// millisecond. A missing or non-positive end keeps instant semantics.
|
|
32
|
+
$.if(end.greater(start.add(1n)), ($) => {
|
|
33
|
+
const left = $.let(start.add(BIAS + LEAVES));
|
|
34
|
+
const right = $.let(end.subtract(1n).add(BIAS + LEAVES));
|
|
35
|
+
$.while(left.notEqual(right), ($) => {
|
|
36
|
+
$.assign(left, left.divide(2n));
|
|
37
|
+
$.assign(right, right.divide(2n));
|
|
38
|
+
});
|
|
39
|
+
$(entries.insert({ node: left.multiply(2n), at: start }));
|
|
40
|
+
$(entries.insert({ node: left.multiply(2n).add(1n), at: end }));
|
|
41
|
+
});
|
|
42
|
+
return entries;
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Generate the pure key function, using the existing field-index function for
|
|
46
|
+
* all leading fields (including Set membership). This stays an ordinary
|
|
47
|
+
* multi-entry index: mutation, rebuild, storage and transport are shared.
|
|
48
|
+
* @param name - Index name for authoring errors.
|
|
49
|
+
* @param keyType - Primary key type.
|
|
50
|
+
* @param valueType - Record row type.
|
|
51
|
+
* @param on - Exact leading fields.
|
|
52
|
+
* @param interval - Start and end row fields.
|
|
53
|
+
* @param prefix - The standard generated field-index key function.
|
|
54
|
+
* @returns The generated keys and its fan-out flag.
|
|
55
|
+
*/
|
|
56
|
+
export function intervalKey(name, keyType, valueType, on, interval, prefix) {
|
|
57
|
+
if (valueType.type !== 'Struct')
|
|
58
|
+
throw new Error(`e3.recordIndex '${name}' interval requires Struct rows`);
|
|
59
|
+
const rowType = valueType;
|
|
60
|
+
const startType = rowType.fields[interval.from];
|
|
61
|
+
const endType = rowType.fields[interval.to];
|
|
62
|
+
for (const [field, type] of [[interval.from, startType], [interval.to, endType]]) {
|
|
63
|
+
if (type === undefined || (!isTypeEqual(type, DateTimeType) && !isTypeEqual(type, OptionType(DateTimeType)))) {
|
|
64
|
+
throw new Error(`e3.recordIndex '${name}' interval field '${field}' must be DateTime or Option<DateTime>`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (on.includes(interval.from) || on.includes('__interval') || interval.from === '__interval') {
|
|
68
|
+
throw new Error(`e3.recordIndex '${name}' interval start and reserved '__interval' cannot be leading fields`);
|
|
69
|
+
}
|
|
70
|
+
const fields = Object.fromEntries(on.map(field => {
|
|
71
|
+
const type = rowType.fields[field];
|
|
72
|
+
return [field, type.type === 'Set' ? type.key : type];
|
|
73
|
+
}));
|
|
74
|
+
const indexType = StructType({ ...fields, __interval: IntegerType, [interval.from]: startType });
|
|
75
|
+
const prefixType = prefix === undefined ? undefined : Expr.type(prefix.fn);
|
|
76
|
+
// Dynamic field names are erased only inside this generated East function,
|
|
77
|
+
// as in the standard field-key generator; all types were checked above.
|
|
78
|
+
const fn = East.function([keyType, rowType], SetType(indexType), ($, key, row) => {
|
|
79
|
+
const locate = $.const(intervalEntries);
|
|
80
|
+
const start = $.let(startType.type === 'DateTime' ? some(row[interval.from]) : row[interval.from], OptionType(DateTimeType));
|
|
81
|
+
const end = $.let(endType.type === 'DateTime' ? some(row[interval.to]) : row[interval.to], OptionType(DateTimeType));
|
|
82
|
+
const entries = $.let(new Set([{ node: 0n, at: 0n }]), SetType(IntervalEntryType));
|
|
83
|
+
$.match(start, { some: ($, from) => {
|
|
84
|
+
const to = $.let(end.match({ some: (_$, to) => to, none: () => from }));
|
|
85
|
+
$.assign(entries, locate(from.toEpochMilliseconds(), to.toEpochMilliseconds()));
|
|
86
|
+
} });
|
|
87
|
+
const keys = $.let(new Set(), SetType(indexType));
|
|
88
|
+
const append = ($, values) => {
|
|
89
|
+
const leading = Object.fromEntries(on.map(field => [field, on.length === 1 ? values : values[field]]));
|
|
90
|
+
$.for(entries, ($, entry) => {
|
|
91
|
+
const date = $.let(East.DateTime.fromEpochMilliseconds(entry.at));
|
|
92
|
+
const at = startType.type === 'DateTime' ? date
|
|
93
|
+
: start.match({ some: () => some(date), none: () => none });
|
|
94
|
+
$(keys.insert({ ...leading, __interval: entry.node, [interval.from]: at }));
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
if (prefix === undefined)
|
|
98
|
+
append($, undefined);
|
|
99
|
+
else {
|
|
100
|
+
const make = $.const(prefix.fn);
|
|
101
|
+
const values = $.let(make(key, row), prefixType.output);
|
|
102
|
+
if (prefix.multi)
|
|
103
|
+
$.for(values, ($, value) => append($, value));
|
|
104
|
+
else
|
|
105
|
+
append($, values);
|
|
106
|
+
}
|
|
107
|
+
return keys;
|
|
108
|
+
});
|
|
109
|
+
return { fn, multi: true };
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=record-interval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-interval.js","sourceRoot":"","sources":["../../src/record-interval.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yEAAyE;AACzE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EACpE,MAAM,eAAe,CAAC;AAG1D,4EAA4E;AAC5E,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,CAAC;AACvB,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,CAAC;AAEzB,oFAAoF;AACpF,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;AAEpF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACrH,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAgC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1H,CAAC,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,mEAAmE;IACnE,sEAAsE;IACtE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAClC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAiB,EAAE,SAAmB,EAAE,EAAqB,EACrG,QAAsC,EAAE,MAA8C;IACtF,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,iCAAiC,CAAC,CAAC;IAC3G,MAAM,OAAO,GAAG,SAAiD,CAAC;IAClE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5C,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAU,EAAE,CAAC;QAC1F,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7G,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,qBAAqB,KAAK,wCAAwC,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC9F,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,qEAAqE,CAAC,CAAC;IAChH,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;QACpC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC,CAAC;IACJ,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAU,EAAE,CAAC,CAAC;IAClG,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAqB,CAAyB,CAAC;IACtH,2EAA2E;IAC3E,wEAAwE;IACxE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAgB,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAM,EAAE,GAAQ,EAAE,GAAQ,EAAE,EAAE;QACvG,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,SAAU,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAC9H,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,OAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QACtH,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAM,EAAE,IAAS,EAAE,EAAE;gBAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAO,EAAE,EAAO,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;YAClF,CAAC,EAAE,CAAC,CAAC;QACL,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,CAAC,CAAM,EAAE,MAAW,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvG,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAM,EAAE,KAAU,EAAE,EAAE;gBACpC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClE,MAAM,EAAE,GAAG,SAAU,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI;oBAC9C,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;aAC1C,CAAC;YACJ,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAA4B,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,UAAW,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,KAAK;gBAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAM,EAAE,KAAU,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;;gBACrE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-interval.spec.d.ts","sourceRoot":"","sources":["../../src/record-interval.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,78 @@
|
|
|
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
|
+
import { test } from 'node:test';
|
|
6
|
+
import assert from 'node:assert/strict';
|
|
7
|
+
import { DateTimeType, DictType, East, OptionType, SetType, StringType, StructType, decodeBeast2For, encodeBeast2For, none, some } from '@elaraai/east';
|
|
8
|
+
import { record } from './record.js';
|
|
9
|
+
import { recordIndex } from './record-index.js';
|
|
10
|
+
import { IntervalEntryType, intervalEntries } from './record-interval.js';
|
|
11
|
+
const entriesOf = East.compile(intervalEntries, []);
|
|
12
|
+
const leaf = 3n * (1n << 53n);
|
|
13
|
+
// Compare real, decoded generated keys against the direct interval oracle.
|
|
14
|
+
// Include the full supported domain, carry-in, epoch crossing and instants.
|
|
15
|
+
test('interval index preserves half-open overlap with at most three entries', () => {
|
|
16
|
+
const extremes = 8640000000000000n;
|
|
17
|
+
const spans = [[-extremes, extremes], [-86400000n, 86400000n], [-1n, 1n], [0n, 0n], [1n, 0n], [0n, 1n]];
|
|
18
|
+
for (let i = 0n; i < 100n; i++) {
|
|
19
|
+
const start = (i * 7919n) % 4000000n - 2000000n;
|
|
20
|
+
spans.push([start, start + (i * 104729n) % 10000000n]);
|
|
21
|
+
}
|
|
22
|
+
for (const [start, end] of spans) {
|
|
23
|
+
const entries = [...decodeBeast2For(SetType(IntervalEntryType))(encodeBeast2For(SetType(IntervalEntryType))(entriesOf(start, end)))];
|
|
24
|
+
assert.equal(entries.filter(entry => entry.node === 0n).length, 1);
|
|
25
|
+
assert.ok(entries.length <= 3);
|
|
26
|
+
for (const from of [start - 1n, start, start + 1n, end - 1n, end, end + 1n, 0n]) {
|
|
27
|
+
for (const width of [1n, 86400000n]) {
|
|
28
|
+
const to = from + width;
|
|
29
|
+
let hits = entries.filter(entry => entry.node === 0n && entry.at >= from && entry.at < to).length;
|
|
30
|
+
for (let child = leaf + from; child > 1n; child /= 2n) {
|
|
31
|
+
const parent = child / 2n;
|
|
32
|
+
const right = child % 2n === 1n;
|
|
33
|
+
hits += entries.filter(entry => entry.node === 2n * parent + (right ? 1n : 0n)
|
|
34
|
+
&& (right ? entry.at > from : entry.at < from)).length;
|
|
35
|
+
}
|
|
36
|
+
const expected = end <= start ? start >= from && start < to : start < to && end > from;
|
|
37
|
+
assert.equal(hits, expected ? 1 : 0, `interval ${start}..${end} in ${from}..${to}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
test('interval indexes retain declared fields, optional backlog and Set-member prefixes through real East IR', () => {
|
|
43
|
+
const Row = StructType({ resources: SetType(StringType), start: OptionType(DateTimeType), end: OptionType(DateTimeType) });
|
|
44
|
+
const records = record('interval_events', DictType(StringType, Row), new Map());
|
|
45
|
+
const index = recordIndex('by_resource_time', records, { on: ['resources'], interval: { from: 'start', to: 'end' } });
|
|
46
|
+
assert.deepEqual(index.on, ['resources', 'start']);
|
|
47
|
+
assert.deepEqual(index.interval, { from: 'start', to: 'end' });
|
|
48
|
+
assert.equal(index.multi, true);
|
|
49
|
+
const fn = East.compile(index.keyFn, []);
|
|
50
|
+
const start = new Date('2026-10-01T22:00:00Z');
|
|
51
|
+
const end = new Date('2026-10-03T06:00:00Z');
|
|
52
|
+
const decode = decodeBeast2For(Row);
|
|
53
|
+
const encode = encodeBeast2For(Row);
|
|
54
|
+
const scheduled = fn('night', decode(encode({ resources: new Set(['A', 'B']), start: some(start), end: some(end) })));
|
|
55
|
+
assert.equal([...scheduled].filter(key => key.__interval === 0n).length, 2);
|
|
56
|
+
assert.equal(scheduled.size, 6);
|
|
57
|
+
const from = BigInt(new Date('2026-10-02T00:00:00Z').getTime());
|
|
58
|
+
for (const resource of ['A', 'B']) {
|
|
59
|
+
let hits = 0;
|
|
60
|
+
for (let child = leaf + from; child > 1n; child /= 2n) {
|
|
61
|
+
const right = child % 2n === 1n;
|
|
62
|
+
hits += [...scheduled].filter(key => key.resources === resource && key.__interval === 2n * (child / 2n) + (right ? 1n : 0n)
|
|
63
|
+
&& key.start.type === 'some' && (right ? BigInt(key.start.value.getTime()) > from : BigInt(key.start.value.getTime()) < from)).length;
|
|
64
|
+
}
|
|
65
|
+
assert.equal(hits, 1);
|
|
66
|
+
}
|
|
67
|
+
const backlog = fn('backlog', decode(encode({ resources: new Set(['A']), start: none, end: none })));
|
|
68
|
+
assert.deepEqual([...backlog], [{ resources: 'A', __interval: 0n, start: none }]);
|
|
69
|
+
const simple = recordIndex('by_time', records, { interval: { from: 'start', to: 'end' } });
|
|
70
|
+
assert.deepEqual(simple.on, ['start']);
|
|
71
|
+
const simpleFn = East.compile(simple.keyFn, []);
|
|
72
|
+
assert.equal(simpleFn('instant', { resources: new Set(), start: some(start), end: none }).size, 1);
|
|
73
|
+
assert.throws(() => recordIndex('bad_interval', records, {
|
|
74
|
+
// @ts-expect-error Only DateTime fields are interval endpoints.
|
|
75
|
+
interval: { from: 'resources', to: 'end' },
|
|
76
|
+
}), /DateTime/);
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=record-interval.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-interval.spec.js","sourceRoot":"","sources":["../../src/record-interval.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -272,14 +272,25 @@ export interface RecordDef<T extends EastType = EastType, Path extends TreePath
|
|
|
272
272
|
* @typeParam T - The owning record's state type
|
|
273
273
|
* @typeParam IK - The index key an entry sorts under
|
|
274
274
|
* @typeParam P - The covering projection's type (`NullType` when there is none)
|
|
275
|
+
* @typeParam On - The row fields in index order, or undefined for a computed key
|
|
275
276
|
*/
|
|
276
|
-
export interface RecordIndexDef<Name extends string = string, T extends EastType = EastType, IK extends EastType = EastType, P extends EastType = EastType> {
|
|
277
|
+
export interface RecordIndexDef<Name extends string = string, T extends EastType = EastType, IK extends EastType = EastType, P extends EastType = EastType, On extends readonly string[] | undefined = readonly string[] | undefined> {
|
|
277
278
|
readonly kind: 'recordIndex';
|
|
278
279
|
/** Index name — unique on the record, and never `primary`, which names the
|
|
279
280
|
* record's own collection wherever an index is selected. */
|
|
280
281
|
readonly name: Name;
|
|
281
282
|
/** The record this index is over. */
|
|
282
283
|
readonly record: RecordDef<T>;
|
|
284
|
+
/** Row fields in key order for a field index; undefined for a computed key.
|
|
285
|
+
* Authoring metadata: the generated key function remains the stored contract. */
|
|
286
|
+
readonly on: On;
|
|
287
|
+
/** Interval endpoints for an overlap index. Its final logical field is
|
|
288
|
+
* `from`; the generated key inserts an internal interval node before it.
|
|
289
|
+
* Authoring metadata only: ordinary maintained index programs store it. */
|
|
290
|
+
readonly interval?: {
|
|
291
|
+
readonly from: string;
|
|
292
|
+
readonly to: string;
|
|
293
|
+
} | undefined;
|
|
283
294
|
/** `(K, V) -> IK`, or `(K, V) -> Set<IK>` when {@link multi}. Kept as the
|
|
284
295
|
* expression so export can compose it into the generated programs, which
|
|
285
296
|
* reach it through its IR alone — so no call signature is claimed here. */
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elaraai/e3",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.87",
|
|
4
4
|
"description": "TypeScript SDK for authoring e3 packages",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"smol-toml": "^1.3.1",
|
|
21
21
|
"yazl": "^2.5.1",
|
|
22
|
-
"@elaraai/e3-types": "1.0.
|
|
22
|
+
"@elaraai/e3-types": "1.0.87"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"@elaraai/east": "1.0.
|
|
25
|
+
"@elaraai/east": "1.0.87"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.10.1",
|