@cavelang/query 0.27.14 → 0.29.1
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/Authors.md +5 -0
- package/License.md +6 -0
- package/README.md +76 -11
- package/bench/transitive.ts +42 -0
- package/dist/bench/transitive.d.ts +3 -0
- package/dist/bench/transitive.d.ts.map +1 -0
- package/dist/bench/transitive.js +38 -0
- package/dist/bench/transitive.js.map +1 -0
- package/dist/src/bounded.d.ts +3 -8
- package/dist/src/bounded.d.ts.map +1 -1
- package/dist/src/bounded.js +13 -11
- package/dist/src/bounded.js.map +1 -1
- package/dist/src/compile.d.ts +33 -4
- package/dist/src/compile.d.ts.map +1 -1
- package/dist/src/compile.js +153 -103
- package/dist/src/compile.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/page.d.ts +23 -0
- package/dist/src/page.d.ts.map +1 -0
- package/dist/src/page.js +131 -0
- package/dist/src/page.js.map +1 -0
- package/dist/src/record.d.ts +21 -0
- package/dist/src/record.d.ts.map +1 -0
- package/dist/src/record.js +41 -0
- package/dist/src/record.js.map +1 -0
- package/package.json +21 -8
- package/src/bounded.ts +26 -13
- package/src/compile.ts +151 -78
- package/src/index.ts +4 -0
- package/src/page.ts +149 -0
- package/src/record.ts +64 -0
package/dist/src/compile.js
CHANGED
|
@@ -14,50 +14,48 @@
|
|
|
14
14
|
* on the object side.
|
|
15
15
|
*
|
|
16
16
|
* Transitive patterns (`terrier EXTENDS+ animal`) compile to a recursive
|
|
17
|
-
* CTE over current, positive, non-retracted edges
|
|
17
|
+
* CTE over current, positive, non-retracted edges. Recursive state is the
|
|
18
|
+
* reachable endpoint pair itself, so SQL `UNION` deduplication terminates
|
|
19
|
+
* cycles without an arbitrary semantic depth cap.
|
|
18
20
|
*/
|
|
19
|
-
import { Time,
|
|
21
|
+
import { Time, Value } from '@cavelang/core';
|
|
20
22
|
import { Registry } from '@cavelang/canonical';
|
|
21
|
-
import { Resolve, Row } from '@cavelang/store';
|
|
23
|
+
import { QuerySql, Resolve, Row } from '@cavelang/store/adapter';
|
|
22
24
|
import * as Pattern from "./pattern.js";
|
|
23
25
|
/**
|
|
24
|
-
* UUIDv7 interval `[lo, hi)` for a tx filter value: a
|
|
25
|
-
* whole UTC
|
|
26
|
-
* adjacent operators distinguishable (`<=` includes the boundary
|
|
27
|
-
* `<` excludes) and make `WHERE tx = 2026-01-01` mean "recorded that day".
|
|
26
|
+
* UUIDv7 interval `[lo, hi)` for a tx filter value: a date-like value covers
|
|
27
|
+
* its whole UTC period and a timestamp covers one second. Interval semantics
|
|
28
|
+
* keep adjacent operators distinguishable (`<=` includes the boundary period
|
|
29
|
+
* that `<` excludes) and make `WHERE tx = 2026-01-01` mean "recorded that day".
|
|
28
30
|
*/
|
|
29
31
|
const txBounds = (text, label = 'tx date') => {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
if (Number.isNaN(start)) {
|
|
32
|
+
const bounds = QuerySql.transactionBounds(text);
|
|
33
|
+
if (bounds === undefined) {
|
|
33
34
|
throw new Error(`CAVE-Q: cannot parse ${label} ${JSON.stringify(text)}`);
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
-
return { lo: Uuidv7.at(start, 0, new Uint8Array(8)), hi: Uuidv7.at(end, 0, new Uint8Array(8)) };
|
|
36
|
+
return bounds;
|
|
37
37
|
};
|
|
38
38
|
/**
|
|
39
39
|
* SQL tx condition for an as-of boundary (spec §12.3). A UUIDv7 names an
|
|
40
|
-
* exact transaction, included — belief as of that append; a date
|
|
41
|
-
* timestamp is inclusive of the whole named
|
|
40
|
+
* exact transaction, included — belief as of that append; a date-like value
|
|
41
|
+
* or timestamp is inclusive of the whole named period/second, the same interval
|
|
42
42
|
* semantics as `WHERE tx <=` (§12.2). Both forms inline as literals: the
|
|
43
|
-
* id is shape-validated hex-and-dashes and the interval bound
|
|
44
|
-
*
|
|
43
|
+
* id is shape-validated hex-and-dashes and the interval bound is a generated
|
|
44
|
+
* UUIDv7 — no free-form text reaches the SQL, and a literal keeps
|
|
45
45
|
* the fragment embeddable in CTEs that positional parameters would
|
|
46
46
|
* complicate.
|
|
47
47
|
*/
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
|
|
48
|
+
const asOfBoundary = (asOf) => {
|
|
49
|
+
const boundary = QuerySql.asOfBoundary(asOf);
|
|
50
|
+
if (boundary === undefined) {
|
|
51
|
+
throw new Error(`CAVE-Q: cannot parse as-of boundary ${JSON.stringify(asOf)}`);
|
|
52
|
+
}
|
|
53
|
+
return boundary;
|
|
51
54
|
};
|
|
52
55
|
/** Row universe under resolution: every appended row, or only rows recorded up to the as-of boundary. */
|
|
53
|
-
const claimsSql = (asOf) => asOf === undefined ?
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
JOIN (
|
|
57
|
-
SELECT claim_key, MAX(tx) AS max_tx
|
|
58
|
-
FROM ${claimsSql(asOf)} GROUP BY claim_key
|
|
59
|
-
) latest ON c.claim_key = latest.claim_key AND c.tx = latest.max_tx
|
|
60
|
-
`;
|
|
56
|
+
const claimsSql = (asOf) => asOf === undefined ? QuerySql.claims() :
|
|
57
|
+
QuerySql.claims(asOfBoundary(asOf));
|
|
58
|
+
const currentSql = (asOf) => QuerySql.current(claimsSql(asOf));
|
|
61
59
|
/**
|
|
62
60
|
* Row universe a pattern matches over: the full history under `all`,
|
|
63
61
|
* current beliefs by default, or the §26 resolved winners among them
|
|
@@ -88,22 +86,23 @@ const baseSql = (options, policy) => {
|
|
|
88
86
|
* and the closure reconstructs entity resolution as believed then
|
|
89
87
|
* (spec §12.3).
|
|
90
88
|
*/
|
|
91
|
-
const aliasPairSql = (asOf) =>
|
|
92
|
-
SELECT c.subject, c.object FROM (${currentSql(asOf)}) c
|
|
93
|
-
WHERE c.verb = 'ALIAS' AND c.negated = 0 AND c.conf > 0 AND c.object IS NOT NULL
|
|
94
|
-
AND ${Row.entityTermSql('c.subject')} AND ${Row.entityTermSql('c.object')}
|
|
95
|
-
UNION
|
|
96
|
-
SELECT c.object, c.subject FROM (${currentSql(asOf)}) c
|
|
97
|
-
WHERE c.verb = 'ALIAS' AND c.negated = 0 AND c.conf > 0 AND c.object IS NOT NULL
|
|
98
|
-
AND ${Row.entityTermSql('c.subject')} AND ${Row.entityTermSql('c.object')}
|
|
99
|
-
), alias_pair(a, b) AS (
|
|
100
|
-
SELECT a, b FROM alias_edge
|
|
101
|
-
UNION
|
|
102
|
-
SELECT p.a, e.b FROM alias_pair p JOIN alias_edge e ON e.a = p.b
|
|
103
|
-
)`;
|
|
89
|
+
const aliasPairSql = (asOf) => QuerySql.aliasPairs(currentSql(asOf));
|
|
104
90
|
/** SQL for "these two expressions name the same entity" under the closure. */
|
|
105
|
-
const aliasSame = (left, right) =>
|
|
106
|
-
const
|
|
91
|
+
const aliasSame = (left, right) => QuerySql.aliasSame(left, right);
|
|
92
|
+
const bounded = (compiled, options) => {
|
|
93
|
+
if (options.limit === undefined)
|
|
94
|
+
return compiled;
|
|
95
|
+
if (!Number.isInteger(options.limit) || options.limit < 1 ||
|
|
96
|
+
!Number.isInteger(options.offset ?? 0) || (options.offset ?? 0) < 0) {
|
|
97
|
+
throw new Error('CAVE-Q: limit must be positive and offset must be non-negative');
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
...compiled,
|
|
101
|
+
sql: `${compiled.sql}\nLIMIT ? OFFSET ?`,
|
|
102
|
+
params: [...compiled.params, options.limit, options.offset ?? 0]
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
export const compile = (pattern, registry, options, policy) => {
|
|
107
106
|
// Inverse resolution (spec §12.1): swap the pattern's endpoint slots and
|
|
108
107
|
// query the primary verb.
|
|
109
108
|
let verb = pattern.verb;
|
|
@@ -120,9 +119,14 @@ const compile = (pattern, registry, options, policy) => {
|
|
|
120
119
|
subjectSlot = swapped;
|
|
121
120
|
verb = { kind: 'verb', name: primary, transitive: verb.transitive };
|
|
122
121
|
}
|
|
122
|
+
else {
|
|
123
|
+
// A lifecycle alias keeps direction but resolves to the stable
|
|
124
|
+
// storage spelling before SQL is compiled (spec §5.8).
|
|
125
|
+
verb = { kind: 'verb', name: primary, transitive: verb.transitive };
|
|
126
|
+
}
|
|
123
127
|
}
|
|
124
128
|
if (verb.kind === 'verb' && verb.transitive) {
|
|
125
|
-
return compileTransitive(pattern, verb.name, subjectSlot, objectSlot, options, policy);
|
|
129
|
+
return bounded(compileTransitive(pattern, verb.name, subjectSlot, objectSlot, options, policy), options);
|
|
126
130
|
}
|
|
127
131
|
const aliases = options.aliases === true;
|
|
128
132
|
// Alias closure applies to entity columns only: values and attribute
|
|
@@ -288,7 +292,7 @@ const compile = (pattern, registry, options, policy) => {
|
|
|
288
292
|
const valueVars = [...varColumns]
|
|
289
293
|
.filter(([, columns]) => columns[0] === 'value_text')
|
|
290
294
|
.map(([name]) => name);
|
|
291
|
-
return { sql, params, bind, transitive: false, valueVars };
|
|
295
|
+
return bounded({ sql, params, bind, transitive: false, valueVars }, options);
|
|
292
296
|
};
|
|
293
297
|
const compileTransitive = (pattern, verb, subjectSlot, objectSlot, options, policy) => {
|
|
294
298
|
if (pattern.negated || pattern.filters.length > 0 || pattern.contexts.length > 0 || pattern.tags.length > 0 ||
|
|
@@ -301,19 +305,25 @@ const compileTransitive = (pattern, verb, subjectSlot, objectSlot, options, poli
|
|
|
301
305
|
const same = (left, right) => aliases ? aliasSame(left, right) : `${left} = ${right}`;
|
|
302
306
|
const conditions = [];
|
|
303
307
|
const params = [verb];
|
|
308
|
+
const pushTerm = (term) => {
|
|
309
|
+
params.push(term);
|
|
310
|
+
if (aliases)
|
|
311
|
+
params.push(term);
|
|
312
|
+
};
|
|
313
|
+
// A concrete source gives forward recursion its smallest seed. If only the
|
|
314
|
+
// destination is concrete, recurse backwards over the object index. Both
|
|
315
|
+
// forms retain normal (src, dst) orientation in their output.
|
|
316
|
+
const direction = subjectSlot.kind === 'term' ? 'forward' :
|
|
317
|
+
objectSlot?.kind === 'term' ? 'reverse' : 'all-pairs';
|
|
304
318
|
if (subjectSlot.kind === 'term') {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
}
|
|
319
|
+
pushTerm(subjectSlot.text);
|
|
320
|
+
}
|
|
321
|
+
else if (objectSlot?.kind === 'term') {
|
|
322
|
+
pushTerm(objectSlot.text);
|
|
310
323
|
}
|
|
311
|
-
if (objectSlot?.kind === 'term') {
|
|
324
|
+
if (objectSlot?.kind === 'term' && direction !== 'reverse') {
|
|
312
325
|
conditions.push(same('h.dst', '?'));
|
|
313
|
-
|
|
314
|
-
if (aliases) {
|
|
315
|
-
params.push(objectSlot.text);
|
|
316
|
-
}
|
|
326
|
+
pushTerm(objectSlot.text);
|
|
317
327
|
}
|
|
318
328
|
// A repeated variable forces equality here just as in single-hop
|
|
319
329
|
// patterns: `?x EXTENDS+ ?x` asks for nodes on a cycle, not for every
|
|
@@ -322,38 +332,75 @@ const compileTransitive = (pattern, verb, subjectSlot, objectSlot, options, poli
|
|
|
322
332
|
conditions.push(same('h.src', 'h.dst'));
|
|
323
333
|
}
|
|
324
334
|
const withRecursive = `WITH RECURSIVE ${aliases ? `${aliasPairSql(options.asOf)}, ` : ''}`;
|
|
325
|
-
|
|
326
|
-
|
|
335
|
+
// Reachable pairs are the complete recursive state. UNION (not UNION ALL)
|
|
336
|
+
// deduplicates each pair before it can be expanded again, so a finite graph
|
|
337
|
+
// reaches a fixed point even with cycles and no hop-depth cutoff.
|
|
338
|
+
const seedSql = direction === 'forward' ?
|
|
339
|
+
`SELECT src, dst FROM cur WHERE ${same('src', '?')}` :
|
|
340
|
+
direction === 'reverse' ?
|
|
341
|
+
`SELECT src, dst FROM cur WHERE ${same('dst', '?')}` :
|
|
342
|
+
'SELECT src, dst FROM cur';
|
|
343
|
+
const recursiveSql = direction === 'reverse' ?
|
|
344
|
+
`SELECT cur.src, h.dst FROM hops h JOIN cur ON ${same('cur.dst', 'h.src')}` :
|
|
345
|
+
`SELECT h.src, cur.dst FROM hops h JOIN cur ON ${same('cur.src', 'h.dst')}`;
|
|
346
|
+
const hopsSql = `hops(src, dst) AS (
|
|
347
|
+
${seedSql}
|
|
348
|
+
UNION
|
|
349
|
+
${recursiveSql}
|
|
350
|
+
)`;
|
|
351
|
+
// Support (an opt-in): propagate each edge id with every reachable pair it
|
|
352
|
+
// supports. The triple is finite and UNION-deduplicated like `hops`, while
|
|
353
|
+
// preserving forward/reverse seeding instead of rebuilding all-pairs
|
|
354
|
+
// reachability merely to recover path evidence.
|
|
355
|
+
const supportAddedSql = direction === 'reverse' ?
|
|
356
|
+
`SELECT cur.src, h.dst, cur.edge_id FROM hops h JOIN cur ON ${same('cur.dst', 'h.src')}` :
|
|
357
|
+
`SELECT h.src, cur.dst, cur.edge_id FROM hops h JOIN cur ON ${same('cur.src', 'h.dst')}`;
|
|
358
|
+
const supportRecursiveSql = direction === 'reverse' ?
|
|
359
|
+
`SELECT cur.src, s.dst, s.edge_id FROM support s JOIN cur ON ${same('cur.dst', 's.src')}` :
|
|
360
|
+
`SELECT s.src, cur.dst, s.edge_id FROM support s JOIN cur ON ${same('cur.src', 's.dst')}`;
|
|
361
|
+
const supportSql = `support(src, dst, edge_id) AS (
|
|
362
|
+
SELECT h.src, h.dst, cur.edge_id FROM hops h JOIN cur
|
|
363
|
+
ON ${same('cur.src', 'h.src')} AND ${same('cur.dst', 'h.dst')}
|
|
364
|
+
UNION
|
|
365
|
+
${supportAddedSql}
|
|
327
366
|
UNION
|
|
328
|
-
|
|
329
|
-
WHERE h.depth < 32
|
|
367
|
+
${supportRecursiveSql}
|
|
330
368
|
)`;
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
369
|
+
const aliasedSelect = (() => {
|
|
370
|
+
if (!aliases)
|
|
371
|
+
return 'SELECT DISTINCT h.src AS src, h.dst AS dst FROM hops h';
|
|
372
|
+
// Alias widening can produce several physical endpoint pairs with the
|
|
373
|
+
// same visible bindings. Project unbound slots to constants before
|
|
374
|
+
// DISTINCT so SQL-level pagination sees the same solutions match()
|
|
375
|
+
// exposes, rather than duplicate pairs that only collapse afterwards.
|
|
376
|
+
const repeated = subjectSlot.kind === 'var' && objectSlot?.kind === 'var' &&
|
|
377
|
+
subjectSlot.name === objectSlot.name;
|
|
378
|
+
const src = subjectSlot.kind === 'var' ? repeated ? 'h.dst' : 'h.src' : "''";
|
|
379
|
+
const dst = objectSlot?.kind === 'var' ? 'h.dst' : "''";
|
|
380
|
+
return `SELECT DISTINCT ${src} AS src, ${dst} AS dst FROM hops h`;
|
|
381
|
+
})();
|
|
334
382
|
const sql = options.support === true ? `
|
|
335
383
|
${withRecursive}edge AS (
|
|
336
384
|
SELECT c.* FROM (${base}) c
|
|
337
385
|
WHERE c.verb = ? AND c.negated = 0 AND c.conf > 0 AND c.object IS NOT NULL
|
|
338
386
|
), cur AS (
|
|
339
|
-
SELECT
|
|
340
|
-
), ${hopsSql}, pair(src, dst) AS (
|
|
387
|
+
SELECT subject AS src, object AS dst, id AS edge_id FROM edge
|
|
388
|
+
), ${hopsSql}, ${supportSql}, pair(src, dst) AS (
|
|
341
389
|
SELECT DISTINCT h.src, h.dst FROM hops h
|
|
342
390
|
${conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : ''}
|
|
343
391
|
)
|
|
344
392
|
SELECT p.src AS src, p.dst AS dst, e.*
|
|
345
|
-
FROM pair p JOIN
|
|
346
|
-
|
|
347
|
-
AND (${same('e.object', 'p.dst')} OR EXISTS (SELECT 1 FROM hops b WHERE ${same('b.src', 'e.object')} AND ${same('b.dst', 'p.dst')}))
|
|
393
|
+
FROM pair p JOIN support s ON ${same('s.src', 'p.src')} AND ${same('s.dst', 'p.dst')}
|
|
394
|
+
JOIN edge e ON e.id = s.edge_id
|
|
348
395
|
ORDER BY p.src, p.dst, e.tx` : `
|
|
349
396
|
${withRecursive}cur AS (
|
|
350
397
|
SELECT c.subject AS src, c.object AS dst
|
|
351
398
|
FROM (${base}) c
|
|
352
399
|
WHERE c.verb = ? AND c.negated = 0 AND c.conf > 0 AND c.object IS NOT NULL
|
|
353
400
|
), ${hopsSql}
|
|
354
|
-
|
|
401
|
+
${aliasedSelect}
|
|
355
402
|
${conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : ''}
|
|
356
|
-
ORDER BY
|
|
403
|
+
ORDER BY src, dst`;
|
|
357
404
|
const bind = (row) => {
|
|
358
405
|
const bindings = {};
|
|
359
406
|
if (subjectSlot.kind === 'var') {
|
|
@@ -403,13 +450,7 @@ const evaluateAt = (row, contexts, instant) => {
|
|
|
403
450
|
...value.unit === undefined ? {} : { unit: value.unit }
|
|
404
451
|
};
|
|
405
452
|
};
|
|
406
|
-
|
|
407
|
-
* Runs an already-parsed pattern against a store — the programmatic
|
|
408
|
-
* entry point for callers that build or specialize patterns as values
|
|
409
|
-
* (the §24 rules engine substitutes bindings into premise patterns
|
|
410
|
-
* between joins) rather than as text.
|
|
411
|
-
*/
|
|
412
|
-
export const match = (store, pattern, options = {}) => {
|
|
453
|
+
const run = (store, pattern, options = {}) => {
|
|
413
454
|
const instant = options.at === undefined ? undefined : Time.parseInstant(options.at);
|
|
414
455
|
if (options.at !== undefined && instant === undefined) {
|
|
415
456
|
throw new Error(`CAVE-Q: cannot parse at anchor ${JSON.stringify(options.at)} — a date-like period or a timestamp (spec §32.4)`);
|
|
@@ -444,7 +485,10 @@ export const match = (store, pattern, options = {}) => {
|
|
|
444
485
|
entry.rows.push(row);
|
|
445
486
|
}
|
|
446
487
|
}
|
|
447
|
-
return
|
|
488
|
+
return {
|
|
489
|
+
scanned: rows.length,
|
|
490
|
+
matches: [...matches.values()].map(entry => ({ bindings: entry.bindings, rows: entry.rows }))
|
|
491
|
+
};
|
|
448
492
|
}
|
|
449
493
|
if (compiled.transitive && options.aliases === true) {
|
|
450
494
|
// Distinct (src, dst) pairs can repeat a binding set when an endpoint
|
|
@@ -452,40 +496,46 @@ export const match = (store, pattern, options = {}) => {
|
|
|
452
496
|
// transitive match carries no row, so identical bindings are identical
|
|
453
497
|
// answers.
|
|
454
498
|
const seen = new Set();
|
|
455
|
-
return rows.flatMap(row => {
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
499
|
+
return { scanned: rows.length, matches: rows.flatMap(row => {
|
|
500
|
+
const bindings = compiled.bind(row);
|
|
501
|
+
const key = JSON.stringify(bindings);
|
|
502
|
+
if (seen.has(key)) {
|
|
503
|
+
return [];
|
|
504
|
+
}
|
|
505
|
+
seen.add(key);
|
|
506
|
+
return [{ bindings }];
|
|
507
|
+
}) };
|
|
464
508
|
}
|
|
465
509
|
if (compiled.transitive) {
|
|
466
|
-
return rows.map(row => ({ bindings: compiled.bind(row) }));
|
|
510
|
+
return { scanned: rows.length, matches: rows.map(row => ({ bindings: compiled.bind(row) })) };
|
|
467
511
|
}
|
|
468
512
|
if (instant === undefined) {
|
|
469
|
-
return
|
|
513
|
+
return {
|
|
514
|
+
scanned: rows.length,
|
|
515
|
+
matches: rows.map(row => ({ bindings: compiled.bind(row), row: row }))
|
|
516
|
+
};
|
|
470
517
|
}
|
|
471
518
|
// Valid-time pass (spec §32.4): contexts are read per row — coverage
|
|
472
519
|
// needs period interpretation no SQL expression can do.
|
|
473
520
|
const contextsOf = store.db.prepare('SELECT context FROM cave_context WHERE claim_id = ?');
|
|
474
|
-
return rows.flatMap(row => {
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
521
|
+
return { scanned: rows.length, matches: rows.flatMap(row => {
|
|
522
|
+
const contexts = contextsOf.all(String(row['id']))
|
|
523
|
+
.map(entry => entry.context);
|
|
524
|
+
if (!Time.appliesAt(contexts, instant)) {
|
|
525
|
+
return [];
|
|
526
|
+
}
|
|
527
|
+
const at = evaluateAt(row, contexts, instant);
|
|
528
|
+
const bindings = compiled.bind(row);
|
|
529
|
+
if (at === undefined) {
|
|
530
|
+
return [{ bindings, row: row }];
|
|
531
|
+
}
|
|
532
|
+
for (const name of compiled.valueVars) {
|
|
533
|
+
bindings[name] = at.text;
|
|
534
|
+
}
|
|
535
|
+
return [{ bindings, row: row, at }];
|
|
536
|
+
}) };
|
|
490
537
|
};
|
|
538
|
+
/** Execute one SQL window and report how many pre-filter rows it consumed. */
|
|
539
|
+
export const window = (store, pattern, options = {}) => run(store, pattern, options);
|
|
540
|
+
export const match = (store, pattern, options = {}) => run(store, pattern, options).matches;
|
|
491
541
|
//# sourceMappingURL=compile.js.map
|
package/dist/src/compile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/compile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/compile.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -15,4 +15,8 @@
|
|
|
15
15
|
export * as Pattern from './pattern.ts';
|
|
16
16
|
export { match, query } from './bounded.ts';
|
|
17
17
|
export type { Match, Options } from './bounded.ts';
|
|
18
|
+
export { queryRecords } from './record.ts';
|
|
19
|
+
export * as Record from './record.ts';
|
|
20
|
+
export { defaultLimit, maxLimit, page } from './page.ts';
|
|
21
|
+
export type { Page, PageOptions } from './page.ts';
|
|
18
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAC3C,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAC3C,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACxD,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA"}
|
package/dist/src/index.js
CHANGED
|
@@ -14,4 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
export * as Pattern from "./pattern.js";
|
|
16
16
|
export { match, query } from "./bounded.js";
|
|
17
|
+
export { queryRecords } from "./record.js";
|
|
18
|
+
export * as Record from "./record.js";
|
|
19
|
+
export { defaultLimit, maxLimit, page } from "./page.js";
|
|
17
20
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Snapshot-stable, bounded CAVE-Q pages. */
|
|
2
|
+
import type { Store } from '@cavelang/store/adapter';
|
|
3
|
+
import type { Options } from './compile.ts';
|
|
4
|
+
import type { t as QueryRecord } from './record.ts';
|
|
5
|
+
export declare const format: "cave.query-page";
|
|
6
|
+
export declare const version: 1;
|
|
7
|
+
export declare const defaultLimit = 100;
|
|
8
|
+
export declare const maxLimit = 1000;
|
|
9
|
+
export type PageOptions = Omit<Options, 'limit' | 'offset' | 'asOf' | 'support'> & {
|
|
10
|
+
readonly asOf?: string;
|
|
11
|
+
readonly limit?: number;
|
|
12
|
+
readonly cursor?: string;
|
|
13
|
+
};
|
|
14
|
+
export type Page = {
|
|
15
|
+
readonly format: typeof format;
|
|
16
|
+
readonly version: typeof version;
|
|
17
|
+
readonly snapshot: null | string;
|
|
18
|
+
readonly matches: readonly QueryRecord[];
|
|
19
|
+
readonly next?: string;
|
|
20
|
+
};
|
|
21
|
+
/** Read one SQL-bounded page frozen at the first page's transaction boundary. */
|
|
22
|
+
export declare const page: (store: Store, input: string, options?: PageOptions) => Page;
|
|
23
|
+
//# sourceMappingURL=page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/page.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAG7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAG3C,OAAO,KAAK,EAAE,CAAC,IAAI,WAAW,EAAE,MAAM,aAAa,CAAA;AAInD,eAAO,MAAM,MAAM,EAAG,iBAA0B,CAAA;AAChD,eAAO,MAAM,OAAO,EAAG,CAAU,CAAA;AACjC,eAAO,MAAM,YAAY,MAAM,CAAA;AAC/B,eAAO,MAAM,QAAQ,OAAQ,CAAA;AAE7B,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG;IACjF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,QAAQ,CAAC,MAAM,EAAE,OAAO,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,OAAO,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAyCD,iFAAiF;AACjF,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,OAAO,MAAM,EAAE,UAAS,WAAgB,KAAG,IA6E7E,CAAA"}
|
package/dist/src/page.js
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/** Snapshot-stable, bounded CAVE-Q pages. */
|
|
2
|
+
import { QuerySql } from '@cavelang/store/adapter';
|
|
3
|
+
import { Value } from '@cavelang/core';
|
|
4
|
+
import { queryRecords } from "./record.js";
|
|
5
|
+
import { of as recordOf } from "./record.js";
|
|
6
|
+
import { window } from "./bounded.js";
|
|
7
|
+
import * as Pattern from "./pattern.js";
|
|
8
|
+
export const format = 'cave.query-page';
|
|
9
|
+
export const version = 1;
|
|
10
|
+
export const defaultLimit = 100;
|
|
11
|
+
export const maxLimit = 1_000;
|
|
12
|
+
const fingerprint = (input, options, limit) => {
|
|
13
|
+
const text = JSON.stringify({
|
|
14
|
+
input, limit,
|
|
15
|
+
all: options.all === true,
|
|
16
|
+
aliases: options.aliases === true,
|
|
17
|
+
asOf: options.asOf ?? null,
|
|
18
|
+
at: options.at ?? null,
|
|
19
|
+
resolve: options.resolve === true,
|
|
20
|
+
});
|
|
21
|
+
let hash = 0xcbf29ce484222325n;
|
|
22
|
+
for (const byte of new TextEncoder().encode(text)) {
|
|
23
|
+
hash = BigInt.asUintN(64, (hash ^ BigInt(byte)) * 0x100000001b3n);
|
|
24
|
+
}
|
|
25
|
+
return hash.toString(16).padStart(16, '0');
|
|
26
|
+
};
|
|
27
|
+
const encodeCursor = (cursor) => encodeURIComponent(JSON.stringify(cursor));
|
|
28
|
+
const decodeCursor = (text) => {
|
|
29
|
+
try {
|
|
30
|
+
const value = JSON.parse(decodeURIComponent(text));
|
|
31
|
+
if (value.v !== 1 || typeof value.fingerprint !== 'string' || typeof value.snapshot !== 'string' ||
|
|
32
|
+
!Number.isInteger(value.offset) || value.offset < 0)
|
|
33
|
+
throw new Error('invalid');
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
throw new Error('CAVE-Q: invalid pagination cursor');
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const snapshotOf = (store, asOf) => {
|
|
41
|
+
const boundary = asOf === undefined ? undefined : QuerySql.asOfBoundary(asOf);
|
|
42
|
+
if (asOf !== undefined && boundary === undefined)
|
|
43
|
+
throw new Error(`CAVE-Q: cannot parse as-of boundary ${JSON.stringify(asOf)}`);
|
|
44
|
+
const where = boundary === undefined ? '' : ` WHERE ${QuerySql.asOfCondition(boundary)}`;
|
|
45
|
+
const row = store.db.prepare(`SELECT MAX(tx) AS tx FROM cave_claim${where}`).get();
|
|
46
|
+
return typeof row?.['tx'] === 'string' ? row['tx'] : null;
|
|
47
|
+
};
|
|
48
|
+
/** Read one SQL-bounded page frozen at the first page's transaction boundary. */
|
|
49
|
+
export const page = (store, input, options = {}) => {
|
|
50
|
+
const limit = options.limit ?? defaultLimit;
|
|
51
|
+
if (!Number.isInteger(limit) || limit < 1 || limit > maxLimit) {
|
|
52
|
+
throw new Error(`CAVE-Q: page limit must be an integer from 1 to ${maxLimit}`);
|
|
53
|
+
}
|
|
54
|
+
const expected = fingerprint(input, options, limit);
|
|
55
|
+
const cursor = options.cursor === undefined ? undefined : decodeCursor(options.cursor);
|
|
56
|
+
if (cursor !== undefined && cursor.fingerprint !== expected) {
|
|
57
|
+
throw new Error('CAVE-Q: pagination cursor does not match this query and its options');
|
|
58
|
+
}
|
|
59
|
+
const snapshot = cursor?.snapshot ?? snapshotOf(store, options.asOf);
|
|
60
|
+
if (snapshot === null)
|
|
61
|
+
return { format, version, snapshot, matches: [] };
|
|
62
|
+
const offset = cursor?.offset ?? 0;
|
|
63
|
+
const { cursor: _cursor, limit: _limit, ...queryOptions } = options;
|
|
64
|
+
const pattern = Pattern.parse(input);
|
|
65
|
+
const exactNumeric = pattern.payload.kind === 'attribute' && pattern.payload.value.kind === 'term' &&
|
|
66
|
+
Value.parse(pattern.payload.value.text).kind === 'number';
|
|
67
|
+
let matches;
|
|
68
|
+
let nextOffset;
|
|
69
|
+
if (options.at === undefined && !exactNumeric) {
|
|
70
|
+
const found = queryRecords(store, input, {
|
|
71
|
+
...queryOptions,
|
|
72
|
+
asOf: snapshot,
|
|
73
|
+
limit: limit + 1,
|
|
74
|
+
offset,
|
|
75
|
+
});
|
|
76
|
+
matches = found.slice(0, limit);
|
|
77
|
+
if (found.length > limit)
|
|
78
|
+
nextOffset = offset + limit;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Valid-time coverage and exact numeric approximation checks happen
|
|
82
|
+
// after SQLite returns. Consume one SQL row at a time so a rejected row
|
|
83
|
+
// advances the cursor while the first match of the next page does not.
|
|
84
|
+
const found = [];
|
|
85
|
+
let rawOffset = offset;
|
|
86
|
+
let scanned = 0;
|
|
87
|
+
const scanBudget = Math.max(defaultLimit, limit);
|
|
88
|
+
let exhausted = false;
|
|
89
|
+
while (found.length < limit && scanned < scanBudget) {
|
|
90
|
+
const result = window(store, pattern, {
|
|
91
|
+
...queryOptions,
|
|
92
|
+
asOf: snapshot,
|
|
93
|
+
limit: 1,
|
|
94
|
+
offset: rawOffset,
|
|
95
|
+
});
|
|
96
|
+
if (result.scanned === 0) {
|
|
97
|
+
exhausted = true;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
if (result.matches.length > 0) {
|
|
101
|
+
found.push(recordOf(store, result.matches[0]));
|
|
102
|
+
}
|
|
103
|
+
rawOffset += result.scanned;
|
|
104
|
+
scanned += result.scanned;
|
|
105
|
+
}
|
|
106
|
+
if (!exhausted) {
|
|
107
|
+
// A single bounded probe distinguishes a genuinely finished page from
|
|
108
|
+
// one that filled its match/scan budget. It need not pass post-filters:
|
|
109
|
+
// the continuation resumes before it and applies them normally.
|
|
110
|
+
const probe = window(store, pattern, {
|
|
111
|
+
...queryOptions,
|
|
112
|
+
asOf: snapshot,
|
|
113
|
+
limit: 1,
|
|
114
|
+
offset: rawOffset,
|
|
115
|
+
});
|
|
116
|
+
if (probe.scanned > 0)
|
|
117
|
+
nextOffset = rawOffset;
|
|
118
|
+
}
|
|
119
|
+
matches = found;
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
format,
|
|
123
|
+
version,
|
|
124
|
+
snapshot,
|
|
125
|
+
matches,
|
|
126
|
+
...nextOffset === undefined ? {} : {
|
|
127
|
+
next: encodeCursor({ v: 1, fingerprint: expected, snapshot, offset: nextOffset })
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=page.js.map
|