@cavelang/query 0.27.14 → 0.29.0

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.
@@ -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 (depth-capped at 32).
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, Uuidv7, Value } from '@cavelang/core';
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 bare date covers the
25
- * whole UTC day, a timestamp covers one second. Interval semantics keep
26
- * adjacent operators distinguishable (`<=` includes the boundary day that
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 hasTime = text.includes('T');
31
- const start = Date.parse(hasTime ? text : `${text}T00:00:00Z`);
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
- const end = start + (hasTime ? 1_000 : 86_400_000);
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 or
41
- * timestamp is inclusive of the whole named day/second, the same interval
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 comes from
44
- * `Uuidv7.at` — no free-form text reaches the SQL, and a literal keeps
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 asOfCondition = (asOf) => {
49
- const id = asOf.toLowerCase();
50
- return Uuidv7.is(id) ? `tx <= '${id}'` : `tx < '${txBounds(asOf, 'as-of boundary').hi}'`;
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 ? 'cave_claim' : `(SELECT * FROM cave_claim WHERE ${asOfCondition(asOf)})`;
54
- const currentSql = (asOf) => `
55
- SELECT c.* FROM cave_claim c
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) => `alias_edge(a, b) AS (
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) => `(${left} = ${right} OR EXISTS (SELECT 1 FROM alias_pair p WHERE p.a = ${left} AND p.b = ${right}))`;
106
- const compile = (pattern, registry, options, policy) => {
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
- conditions.push(same('h.src', '?'));
306
- params.push(subjectSlot.text);
307
- if (aliases) {
308
- params.push(subjectSlot.text);
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
- params.push(objectSlot.text);
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
- const hopsSql = `hops(src, dst, depth) AS (
326
- SELECT src, dst, 1 FROM cur
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
- SELECT h.src, cur.dst, h.depth + 1 FROM hops h JOIN cur ON ${same('cur.src', 'h.dst')}
329
- WHERE h.depth < 32
367
+ ${supportRecursiveSql}
330
368
  )`;
331
- // Support (an opt-in): an edge row backs a pair when its endpoints sit
332
- // on some path between them — reflexive or through the same hop
333
- // closure, so alias-equal endpoints connect exactly as matching did.
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 DISTINCT subject AS src, object AS dst FROM edge
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 edge e
346
- ON (${same('e.subject', 'p.src')} OR EXISTS (SELECT 1 FROM hops f WHERE ${same('f.src', 'p.src')} AND ${same('f.dst', 'e.subject')}))
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
- SELECT DISTINCT h.src AS src, h.dst AS dst FROM hops h
401
+ ${aliasedSelect}
355
402
  ${conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : ''}
356
- ORDER BY h.src, h.dst`;
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 [...matches.values()].map(entry => ({ bindings: entry.bindings, rows: entry.rows }));
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
- const bindings = compiled.bind(row);
457
- const key = JSON.stringify(bindings);
458
- if (seen.has(key)) {
459
- return [];
460
- }
461
- seen.add(key);
462
- return [{ bindings }];
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 rows.map(row => ({ bindings: compiled.bind(row), row: row }));
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
- const contexts = contextsOf.all(String(row['id']))
476
- .map(entry => entry.context);
477
- if (!Time.appliesAt(contexts, instant)) {
478
- return [];
479
- }
480
- const at = evaluateAt(row, contexts, instant);
481
- const bindings = compiled.bind(row);
482
- if (at === undefined) {
483
- return [{ bindings, row: row }];
484
- }
485
- for (const name of compiled.valueVars) {
486
- bindings[name] = at.text;
487
- }
488
- return [{ bindings, row: row, at }];
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
@@ -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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"}
@@ -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
@@ -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
@@ -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"}
@@ -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