@jaepil/uqa 0.1.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.
Files changed (233) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +788 -0
  3. package/dist/types/src/analysis/analyzer.d.ts +27 -0
  4. package/dist/types/src/analysis/analyzer.d.ts.map +1 -0
  5. package/dist/types/src/analysis/char-filter.d.ts +27 -0
  6. package/dist/types/src/analysis/char-filter.d.ts.map +1 -0
  7. package/dist/types/src/analysis/token-filter.d.ts +73 -0
  8. package/dist/types/src/analysis/token-filter.d.ts.map +1 -0
  9. package/dist/types/src/analysis/tokenizer.d.ts +42 -0
  10. package/dist/types/src/analysis/tokenizer.d.ts.map +1 -0
  11. package/dist/types/src/api/query-builder.d.ts +103 -0
  12. package/dist/types/src/api/query-builder.d.ts.map +1 -0
  13. package/dist/types/src/cli/repl.d.ts +42 -0
  14. package/dist/types/src/cli/repl.d.ts.map +1 -0
  15. package/dist/types/src/core/functor.d.ts +38 -0
  16. package/dist/types/src/core/functor.d.ts.map +1 -0
  17. package/dist/types/src/core/hierarchical.d.ts +24 -0
  18. package/dist/types/src/core/hierarchical.d.ts.map +1 -0
  19. package/dist/types/src/core/posting-list.d.ts +43 -0
  20. package/dist/types/src/core/posting-list.d.ts.map +1 -0
  21. package/dist/types/src/core/types.d.ts +116 -0
  22. package/dist/types/src/core/types.d.ts.map +1 -0
  23. package/dist/types/src/engine.d.ts +130 -0
  24. package/dist/types/src/engine.d.ts.map +1 -0
  25. package/dist/types/src/execution/batch.d.ts +144 -0
  26. package/dist/types/src/execution/batch.d.ts.map +1 -0
  27. package/dist/types/src/execution/physical.d.ts +18 -0
  28. package/dist/types/src/execution/physical.d.ts.map +1 -0
  29. package/dist/types/src/execution/relational.d.ts +174 -0
  30. package/dist/types/src/execution/relational.d.ts.map +1 -0
  31. package/dist/types/src/execution/scan.d.ts +41 -0
  32. package/dist/types/src/execution/scan.d.ts.map +1 -0
  33. package/dist/types/src/execution/spill.d.ts +39 -0
  34. package/dist/types/src/execution/spill.d.ts.map +1 -0
  35. package/dist/types/src/fdw/arrow-handler.d.ts +28 -0
  36. package/dist/types/src/fdw/arrow-handler.d.ts.map +1 -0
  37. package/dist/types/src/fdw/duckdb-handler.d.ts +32 -0
  38. package/dist/types/src/fdw/duckdb-handler.d.ts.map +1 -0
  39. package/dist/types/src/fdw/foreign-table.d.ts +47 -0
  40. package/dist/types/src/fdw/foreign-table.d.ts.map +1 -0
  41. package/dist/types/src/fdw/handler.d.ts +52 -0
  42. package/dist/types/src/fdw/handler.d.ts.map +1 -0
  43. package/dist/types/src/fusion/attention.d.ts +23 -0
  44. package/dist/types/src/fusion/attention.d.ts.map +1 -0
  45. package/dist/types/src/fusion/boolean.d.ts +6 -0
  46. package/dist/types/src/fusion/boolean.d.ts.map +1 -0
  47. package/dist/types/src/fusion/learned.d.ts +12 -0
  48. package/dist/types/src/fusion/learned.d.ts.map +1 -0
  49. package/dist/types/src/fusion/log-odds.d.ts +87 -0
  50. package/dist/types/src/fusion/log-odds.d.ts.map +1 -0
  51. package/dist/types/src/fusion/query-features.d.ts +8 -0
  52. package/dist/types/src/fusion/query-features.d.ts.map +1 -0
  53. package/dist/types/src/graph/centrality.d.ts +35 -0
  54. package/dist/types/src/graph/centrality.d.ts.map +1 -0
  55. package/dist/types/src/graph/cross-paradigm.d.ts +68 -0
  56. package/dist/types/src/graph/cross-paradigm.d.ts.map +1 -0
  57. package/dist/types/src/graph/cypher/ast.d.ts +175 -0
  58. package/dist/types/src/graph/cypher/ast.d.ts.map +1 -0
  59. package/dist/types/src/graph/cypher/compiler.d.ts +60 -0
  60. package/dist/types/src/graph/cypher/compiler.d.ts.map +1 -0
  61. package/dist/types/src/graph/cypher/lexer.d.ts +82 -0
  62. package/dist/types/src/graph/cypher/lexer.d.ts.map +1 -0
  63. package/dist/types/src/graph/cypher/parser.d.ts +50 -0
  64. package/dist/types/src/graph/cypher/parser.d.ts.map +1 -0
  65. package/dist/types/src/graph/delta.d.ts +31 -0
  66. package/dist/types/src/graph/delta.d.ts.map +1 -0
  67. package/dist/types/src/graph/graph-embedding.d.ts +13 -0
  68. package/dist/types/src/graph/graph-embedding.d.ts.map +1 -0
  69. package/dist/types/src/graph/incremental-match.d.ts +16 -0
  70. package/dist/types/src/graph/incremental-match.d.ts.map +1 -0
  71. package/dist/types/src/graph/index.d.ts +58 -0
  72. package/dist/types/src/graph/index.d.ts.map +1 -0
  73. package/dist/types/src/graph/join.d.ts +18 -0
  74. package/dist/types/src/graph/join.d.ts.map +1 -0
  75. package/dist/types/src/graph/message-passing.d.ts +17 -0
  76. package/dist/types/src/graph/message-passing.d.ts.map +1 -0
  77. package/dist/types/src/graph/operators.d.ts +81 -0
  78. package/dist/types/src/graph/operators.d.ts.map +1 -0
  79. package/dist/types/src/graph/pattern.d.ts +63 -0
  80. package/dist/types/src/graph/pattern.d.ts.map +1 -0
  81. package/dist/types/src/graph/posting-list.d.ts +24 -0
  82. package/dist/types/src/graph/posting-list.d.ts.map +1 -0
  83. package/dist/types/src/graph/rpq-optimizer.d.ts +25 -0
  84. package/dist/types/src/graph/rpq-optimizer.d.ts.map +1 -0
  85. package/dist/types/src/graph/store.d.ts +61 -0
  86. package/dist/types/src/graph/store.d.ts.map +1 -0
  87. package/dist/types/src/graph/temporal-filter.d.ts +12 -0
  88. package/dist/types/src/graph/temporal-filter.d.ts.map +1 -0
  89. package/dist/types/src/graph/temporal-pattern-match.d.ts +26 -0
  90. package/dist/types/src/graph/temporal-pattern-match.d.ts.map +1 -0
  91. package/dist/types/src/graph/temporal-traverse.d.ts +25 -0
  92. package/dist/types/src/graph/temporal-traverse.d.ts.map +1 -0
  93. package/dist/types/src/graph/versioned-store.d.ts +64 -0
  94. package/dist/types/src/graph/versioned-store.d.ts.map +1 -0
  95. package/dist/types/src/index.d.ts +20 -0
  96. package/dist/types/src/index.d.ts.map +1 -0
  97. package/dist/types/src/joins/base.d.ts +18 -0
  98. package/dist/types/src/joins/base.d.ts.map +1 -0
  99. package/dist/types/src/joins/cross-paradigm.d.ts +46 -0
  100. package/dist/types/src/joins/cross-paradigm.d.ts.map +1 -0
  101. package/dist/types/src/joins/cross.d.ts +9 -0
  102. package/dist/types/src/joins/cross.d.ts.map +1 -0
  103. package/dist/types/src/joins/index.d.ts +7 -0
  104. package/dist/types/src/joins/index.d.ts.map +1 -0
  105. package/dist/types/src/joins/inner.d.ts +7 -0
  106. package/dist/types/src/joins/inner.d.ts.map +1 -0
  107. package/dist/types/src/joins/outer.d.ts +16 -0
  108. package/dist/types/src/joins/outer.d.ts.map +1 -0
  109. package/dist/types/src/joins/semi.d.ts +22 -0
  110. package/dist/types/src/joins/semi.d.ts.map +1 -0
  111. package/dist/types/src/joins/sort-merge.d.ts +7 -0
  112. package/dist/types/src/joins/sort-merge.d.ts.map +1 -0
  113. package/dist/types/src/math/linalg.d.ts +27 -0
  114. package/dist/types/src/math/linalg.d.ts.map +1 -0
  115. package/dist/types/src/math/random.d.ts +15 -0
  116. package/dist/types/src/math/random.d.ts.map +1 -0
  117. package/dist/types/src/operators/aggregation.d.ts +65 -0
  118. package/dist/types/src/operators/aggregation.d.ts.map +1 -0
  119. package/dist/types/src/operators/attention.d.ts +16 -0
  120. package/dist/types/src/operators/attention.d.ts.map +1 -0
  121. package/dist/types/src/operators/backend.d.ts +52 -0
  122. package/dist/types/src/operators/backend.d.ts.map +1 -0
  123. package/dist/types/src/operators/base.d.ts +32 -0
  124. package/dist/types/src/operators/base.d.ts.map +1 -0
  125. package/dist/types/src/operators/boolean.d.ts +23 -0
  126. package/dist/types/src/operators/boolean.d.ts.map +1 -0
  127. package/dist/types/src/operators/calibrated-vector.d.ts +56 -0
  128. package/dist/types/src/operators/calibrated-vector.d.ts.map +1 -0
  129. package/dist/types/src/operators/deep-fusion.d.ts +104 -0
  130. package/dist/types/src/operators/deep-fusion.d.ts.map +1 -0
  131. package/dist/types/src/operators/deep-learn.d.ts +87 -0
  132. package/dist/types/src/operators/deep-learn.d.ts.map +1 -0
  133. package/dist/types/src/operators/hierarchical.d.ts +44 -0
  134. package/dist/types/src/operators/hierarchical.d.ts.map +1 -0
  135. package/dist/types/src/operators/hybrid.d.ts +75 -0
  136. package/dist/types/src/operators/hybrid.d.ts.map +1 -0
  137. package/dist/types/src/operators/learned-fusion.d.ts +15 -0
  138. package/dist/types/src/operators/learned-fusion.d.ts.map +1 -0
  139. package/dist/types/src/operators/multi-field.d.ts +13 -0
  140. package/dist/types/src/operators/multi-field.d.ts.map +1 -0
  141. package/dist/types/src/operators/multi-stage.d.ts +12 -0
  142. package/dist/types/src/operators/multi-stage.d.ts.map +1 -0
  143. package/dist/types/src/operators/primitive.d.ts +75 -0
  144. package/dist/types/src/operators/primitive.d.ts.map +1 -0
  145. package/dist/types/src/operators/progressive-fusion.d.ts +13 -0
  146. package/dist/types/src/operators/progressive-fusion.d.ts.map +1 -0
  147. package/dist/types/src/operators/sparse.d.ts +12 -0
  148. package/dist/types/src/operators/sparse.d.ts.map +1 -0
  149. package/dist/types/src/planner/cardinality.d.ts +110 -0
  150. package/dist/types/src/planner/cardinality.d.ts.map +1 -0
  151. package/dist/types/src/planner/cost-model.d.ts +16 -0
  152. package/dist/types/src/planner/cost-model.d.ts.map +1 -0
  153. package/dist/types/src/planner/executor.d.ts +48 -0
  154. package/dist/types/src/planner/executor.d.ts.map +1 -0
  155. package/dist/types/src/planner/join-enumerator.d.ts +76 -0
  156. package/dist/types/src/planner/join-enumerator.d.ts.map +1 -0
  157. package/dist/types/src/planner/join-graph.d.ts +61 -0
  158. package/dist/types/src/planner/join-graph.d.ts.map +1 -0
  159. package/dist/types/src/planner/join-order.d.ts +24 -0
  160. package/dist/types/src/planner/join-order.d.ts.map +1 -0
  161. package/dist/types/src/planner/optimizer.d.ts +62 -0
  162. package/dist/types/src/planner/optimizer.d.ts.map +1 -0
  163. package/dist/types/src/planner/parallel.d.ts +43 -0
  164. package/dist/types/src/planner/parallel.d.ts.map +1 -0
  165. package/dist/types/src/scoring/bayesian-bm25.d.ts +22 -0
  166. package/dist/types/src/scoring/bayesian-bm25.d.ts.map +1 -0
  167. package/dist/types/src/scoring/bm25.d.ts +20 -0
  168. package/dist/types/src/scoring/bm25.d.ts.map +1 -0
  169. package/dist/types/src/scoring/calibration.d.ts +68 -0
  170. package/dist/types/src/scoring/calibration.d.ts.map +1 -0
  171. package/dist/types/src/scoring/external-prior.d.ts +55 -0
  172. package/dist/types/src/scoring/external-prior.d.ts.map +1 -0
  173. package/dist/types/src/scoring/fusion-wand.d.ts +19 -0
  174. package/dist/types/src/scoring/fusion-wand.d.ts.map +1 -0
  175. package/dist/types/src/scoring/multi-field.d.ts +10 -0
  176. package/dist/types/src/scoring/multi-field.d.ts.map +1 -0
  177. package/dist/types/src/scoring/parameter-learner.d.ts +42 -0
  178. package/dist/types/src/scoring/parameter-learner.d.ts.map +1 -0
  179. package/dist/types/src/scoring/vector.d.ts +42 -0
  180. package/dist/types/src/scoring/vector.d.ts.map +1 -0
  181. package/dist/types/src/scoring/wand.d.ts +51 -0
  182. package/dist/types/src/scoring/wand.d.ts.map +1 -0
  183. package/dist/types/src/sql/compiler.d.ts +551 -0
  184. package/dist/types/src/sql/compiler.d.ts.map +1 -0
  185. package/dist/types/src/sql/expr-evaluator.d.ts +43 -0
  186. package/dist/types/src/sql/expr-evaluator.d.ts.map +1 -0
  187. package/dist/types/src/sql/fts-query.d.ts +60 -0
  188. package/dist/types/src/sql/fts-query.d.ts.map +1 -0
  189. package/dist/types/src/sql/table.d.ts +72 -0
  190. package/dist/types/src/sql/table.d.ts.map +1 -0
  191. package/dist/types/src/storage/abc/document-store.d.ts +44 -0
  192. package/dist/types/src/storage/abc/document-store.d.ts.map +1 -0
  193. package/dist/types/src/storage/abc/graph-store.d.ts +109 -0
  194. package/dist/types/src/storage/abc/graph-store.d.ts.map +1 -0
  195. package/dist/types/src/storage/abc/inverted-index.d.ts +118 -0
  196. package/dist/types/src/storage/abc/inverted-index.d.ts.map +1 -0
  197. package/dist/types/src/storage/block-max-index.d.ts +45 -0
  198. package/dist/types/src/storage/block-max-index.d.ts.map +1 -0
  199. package/dist/types/src/storage/btree-index.d.ts +18 -0
  200. package/dist/types/src/storage/btree-index.d.ts.map +1 -0
  201. package/dist/types/src/storage/catalog.d.ts +87 -0
  202. package/dist/types/src/storage/catalog.d.ts.map +1 -0
  203. package/dist/types/src/storage/document-store.d.ts +20 -0
  204. package/dist/types/src/storage/document-store.d.ts.map +1 -0
  205. package/dist/types/src/storage/index-abc.d.ts +16 -0
  206. package/dist/types/src/storage/index-abc.d.ts.map +1 -0
  207. package/dist/types/src/storage/index-manager.d.ts +19 -0
  208. package/dist/types/src/storage/index-manager.d.ts.map +1 -0
  209. package/dist/types/src/storage/index-types.d.ts +10 -0
  210. package/dist/types/src/storage/index-types.d.ts.map +1 -0
  211. package/dist/types/src/storage/inverted-index.d.ts +55 -0
  212. package/dist/types/src/storage/inverted-index.d.ts.map +1 -0
  213. package/dist/types/src/storage/ivf-index.d.ts +57 -0
  214. package/dist/types/src/storage/ivf-index.d.ts.map +1 -0
  215. package/dist/types/src/storage/managed-connection.d.ts +64 -0
  216. package/dist/types/src/storage/managed-connection.d.ts.map +1 -0
  217. package/dist/types/src/storage/spatial-index.d.ts +18 -0
  218. package/dist/types/src/storage/spatial-index.d.ts.map +1 -0
  219. package/dist/types/src/storage/sqlite-document-store.d.ts +54 -0
  220. package/dist/types/src/storage/sqlite-document-store.d.ts.map +1 -0
  221. package/dist/types/src/storage/sqlite-graph-store.d.ts +59 -0
  222. package/dist/types/src/storage/sqlite-graph-store.d.ts.map +1 -0
  223. package/dist/types/src/storage/sqlite-inverted-index.d.ts +75 -0
  224. package/dist/types/src/storage/sqlite-inverted-index.d.ts.map +1 -0
  225. package/dist/types/src/storage/transaction.d.ts +15 -0
  226. package/dist/types/src/storage/transaction.d.ts.map +1 -0
  227. package/dist/types/src/storage/vector-index.d.ts +23 -0
  228. package/dist/types/src/storage/vector-index.d.ts.map +1 -0
  229. package/dist/uqa.es.js +16156 -0
  230. package/dist/uqa.es.js.map +1 -0
  231. package/dist/uqa.umd.js +11 -0
  232. package/dist/uqa.umd.js.map +1 -0
  233. package/package.json +73 -0
@@ -0,0 +1,72 @@
1
+ import type { IndexedTerms } from "../storage/abc/inverted-index.js";
2
+ import type { DocumentStore } from "../storage/abc/document-store.js";
3
+ import type { InvertedIndex } from "../storage/abc/inverted-index.js";
4
+ import type { VectorIndex } from "../storage/vector-index.js";
5
+ import { SpatialIndex } from "../storage/spatial-index.js";
6
+ export interface ColumnStats {
7
+ distinctCount: number;
8
+ nullCount: number;
9
+ minValue: unknown;
10
+ maxValue: unknown;
11
+ rowCount: number;
12
+ histogram: unknown[];
13
+ mcvValues: unknown[];
14
+ mcvFrequencies: number[];
15
+ }
16
+ export declare function columnStatsSelectivity(stats: ColumnStats): number;
17
+ export interface ColumnDef {
18
+ readonly name: string;
19
+ readonly typeName: string;
20
+ readonly pythonType: string;
21
+ readonly primaryKey: boolean;
22
+ readonly notNull: boolean;
23
+ readonly autoIncrement: boolean;
24
+ readonly defaultValue: unknown;
25
+ readonly vectorDimensions: number | null;
26
+ readonly unique: boolean;
27
+ readonly numericPrecision: number | null;
28
+ readonly numericScale: number | null;
29
+ }
30
+ export declare function createColumnDef(name: string, typeName: string, opts?: Partial<Omit<ColumnDef, "name" | "typeName">>): ColumnDef;
31
+ export interface ForeignKeyDef {
32
+ readonly column: string;
33
+ readonly refTable: string;
34
+ readonly refColumn: string;
35
+ }
36
+ /**
37
+ * Resolve an array of SQL type name tokens into a canonical [typeName, jsTypeCategory] pair.
38
+ */
39
+ export declare function resolveType(typeNames: string[], arrayBounds?: unknown[] | null): [string, string];
40
+ export declare class Table {
41
+ readonly name: string;
42
+ readonly columns: Map<string, ColumnDef>;
43
+ readonly primaryKey: string | null;
44
+ checkConstraints: [string, (row: Record<string, unknown>) => boolean][];
45
+ foreignKeys: ForeignKeyDef[];
46
+ fkInsertValidators: ((row: Record<string, unknown>) => void)[];
47
+ fkDeleteValidators: ((docId: number) => void)[];
48
+ fkUpdateValidators: ((oldDoc: Record<string, unknown>, newDoc: Record<string, unknown>) => void)[];
49
+ documentStore: DocumentStore;
50
+ invertedIndex: InvertedIndex;
51
+ vectorIndexes: Map<string, VectorIndex>;
52
+ spatialIndexes: Map<string, SpatialIndex>;
53
+ private _stats;
54
+ _nextDocId: number;
55
+ private _uniqueIndexes;
56
+ private _uniqueIndexesBuilt;
57
+ constructor(name: string, columns: ColumnDef[], conn?: unknown);
58
+ get columnNames(): string[];
59
+ get rowCount(): number;
60
+ /**
61
+ * Insert a row into the table. Returns [docId, indexedTerms].
62
+ */
63
+ insert(row: Record<string, unknown>): [number, IndexedTerms | null];
64
+ private _buildUniqueIndexes;
65
+ removeFromUniqueIndexes(docId: number): void;
66
+ /**
67
+ * Compute column statistics for the query optimizer.
68
+ */
69
+ analyze(): Map<string, ColumnStats>;
70
+ getColumnStats(colName: string): ColumnStats | null;
71
+ }
72
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/sql/table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { DocId, FieldName, PathExpr } from "../../core/types.js";
2
+ /**
3
+ * Abstract interface for document storage backends.
4
+ *
5
+ * A document store maps DocId keys to dict values and supports
6
+ * field-level access, bulk retrieval, and hierarchical path evaluation.
7
+ * Concrete implementations include in-memory and SQLite-backed stores.
8
+ */
9
+ export declare abstract class DocumentStore {
10
+ /** Insert or replace a document keyed by docId. */
11
+ abstract put(docId: DocId, document: Record<string, unknown>): void;
12
+ /** Return the document as a dict, or null if absent. */
13
+ abstract get(docId: DocId): Record<string, unknown> | null;
14
+ /** Delete a document. No error if docId does not exist. */
15
+ abstract delete(docId: DocId): void;
16
+ /** Remove all documents. */
17
+ abstract clear(): void;
18
+ /** Return a single field value, or null/undefined if absent. */
19
+ abstract getField(docId: DocId, field: FieldName): unknown;
20
+ /** Return field values for multiple docIds in a single call. */
21
+ abstract getFieldsBulk(docIds: DocId[], field: FieldName): Map<DocId, unknown>;
22
+ /** Return true if any document has the given field equal to value. */
23
+ abstract hasValue(field: FieldName, value: unknown): boolean;
24
+ /** Evaluate a hierarchical path expression against a document. */
25
+ abstract evalPath(docId: DocId, path: PathExpr): unknown;
26
+ /** Return the set of all stored document IDs. */
27
+ abstract get docIds(): Set<DocId>;
28
+ /** Return the number of stored documents. */
29
+ abstract get length(): number;
30
+ /** Return the maximum document ID in the store, or -1 if empty. */
31
+ abstract maxDocId(): number;
32
+ /** Bulk insert or replace multiple documents. */
33
+ abstract putBulk(docs: Array<[DocId, Record<string, unknown>]>): void;
34
+ /** Bulk delete multiple documents. */
35
+ abstract deleteBulk(docIds: DocId[]): void;
36
+ /**
37
+ * Yield all (docId, document) pairs in ID order.
38
+ *
39
+ * The default implementation fetches each document individually.
40
+ * SQLite-backed stores override this with a single query.
41
+ */
42
+ iterAll(): IterableIterator<[DocId, Record<string, unknown>]>;
43
+ }
44
+ //# sourceMappingURL=document-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-store.d.ts","sourceRoot":"","sources":["../../../../../src/storage/abc/document-store.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEtE;;;;;;GAMG;AACH,8BAAsB,aAAa;IACjC,mDAAmD;IACnD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAEnE,wDAAwD;IACxD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAE1D,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAEnC,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,IAAI,IAAI;IAEtB,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO;IAE1D,gEAAgE;IAChE,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC;IAE9E,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAE5D,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO;IAExD,iDAAiD;IACjD,QAAQ,KAAK,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAElC,6CAA6C;IAC7C,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC;IAE9B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,IAAI,MAAM;IAE3B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAErE,sCAAsC;IACtC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAE1C;;;;;OAKG;IACF,OAAO,IAAI,gBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAS/D"}
@@ -0,0 +1,109 @@
1
+ import type { Edge, Vertex } from "../../core/types.js";
2
+ /**
3
+ * Abstract interface for graph storage backends.
4
+ *
5
+ * A graph store manages named graphs with vertices and edges, supporting
6
+ * graph lifecycle, mutations, queries, adjacency access, and statistics.
7
+ * Concrete implementations include in-memory and SQLite-backed stores.
8
+ */
9
+ export declare abstract class GraphStore {
10
+ /** Create a new named graph. */
11
+ abstract createGraph(name: string): void;
12
+ /** Drop a named graph and its data. */
13
+ abstract dropGraph(name: string): void;
14
+ /** Return sorted list of graph names. */
15
+ abstract graphNames(): string[];
16
+ /** Return true if graph exists. */
17
+ abstract hasGraph(name: string): boolean;
18
+ /** Create target graph as union of g1 and g2. */
19
+ abstract unionGraphs(g1: string, g2: string, target: string): void;
20
+ /** Create target graph as intersection of g1 and g2. */
21
+ abstract intersectGraphs(g1: string, g2: string, target: string): void;
22
+ /** Create target graph as g1 - g2. */
23
+ abstract differenceGraphs(g1: string, g2: string, target: string): void;
24
+ /** Copy source graph to target graph. */
25
+ abstract copyGraph(source: string, target: string): void;
26
+ /** Add a vertex to a named graph. */
27
+ abstract addVertex(vertex: Vertex, graph: string): void;
28
+ /** Add an edge to a named graph. */
29
+ abstract addEdge(edge: Edge, graph: string): void;
30
+ /** Remove a vertex from a named graph. */
31
+ abstract removeVertex(vertexId: number, graph: string): void;
32
+ /** Remove an edge from a named graph. */
33
+ abstract removeEdge(edgeId: number, graph: string): void;
34
+ /** Return neighbor vertex IDs. */
35
+ abstract neighbors(vertexId: number, graph: string, label?: string | null, direction?: "out" | "in"): number[];
36
+ /** Return vertices with a given label in a graph. */
37
+ abstract verticesByLabel(label: string, graph: string): Vertex[];
38
+ /** Return all vertices in a graph. */
39
+ abstract verticesInGraph(graph: string): Vertex[];
40
+ /** Return all edges in a graph. */
41
+ abstract edgesInGraph(graph: string): Edge[];
42
+ /** Return set of graph names a vertex belongs to. */
43
+ abstract vertexGraphs(vertexId: number): Set<string>;
44
+ /** Return outgoing edge IDs for vertex in a specific graph. */
45
+ abstract outEdgeIds(vertexId: number, graph: string): Set<number>;
46
+ /** Return incoming edge IDs for vertex in a specific graph. */
47
+ abstract inEdgeIds(vertexId: number, graph: string): Set<number>;
48
+ /** Return edge IDs with a given label in a specific graph. */
49
+ abstract edgeIdsByLabel(label: string, graph: string): Set<number>;
50
+ /** Return all vertex IDs in a specific graph. */
51
+ abstract vertexIdsInGraph(graph: string): Set<number>;
52
+ /** Out-degree distribution for vertices in graph. */
53
+ abstract degreeDistribution(graph: string): Map<number, number>;
54
+ /** Average out-degree for edges with given label in graph. */
55
+ abstract labelDegree(label: string, graph: string): number;
56
+ /** Count of vertices per vertex label in graph. */
57
+ abstract vertexLabelCounts(graph: string): Map<string, number>;
58
+ /** Add multiple vertices to a named graph in a single batch. */
59
+ abstract addVertices(vertices: Vertex[], graph: string): void;
60
+ /** Add multiple edges to a named graph in a single batch. */
61
+ abstract addEdges(edges: Edge[], graph: string): void;
62
+ /** Return a property value from a vertex. */
63
+ abstract vertexProperty(vertexId: number, key: string): unknown;
64
+ /** Set a property value on a vertex. */
65
+ abstract setVertexProperty(vertexId: number, key: string, value: unknown): void;
66
+ /** Return a property value from an edge. */
67
+ abstract edgeProperty(edgeId: number, key: string): unknown;
68
+ /** Set a property value on an edge. */
69
+ abstract setEdgeProperty(edgeId: number, key: string, value: unknown): void;
70
+ /** Return edges with a given label in a specific graph. */
71
+ abstract edgesByLabel(label: string, graph: string): Edge[];
72
+ /** Return the set of all vertex labels in a graph. */
73
+ abstract vertexLabels(graph: string): Set<string>;
74
+ /** Return the set of all edge labels in a graph. */
75
+ abstract edgeLabels(graph: string): Set<string>;
76
+ /** Return the out-degree of a vertex in a graph. */
77
+ abstract outDegree(vertexId: number, graph: string): number;
78
+ /** Return the in-degree of a vertex in a graph. */
79
+ abstract inDegree(vertexId: number, graph: string): number;
80
+ /** Return edges between two specific vertices, optionally filtered by label. */
81
+ abstract edgesBetween(sourceId: number, targetId: number, graph: string, label?: string | null): Edge[];
82
+ /** Extract a subgraph containing only the specified vertex IDs. */
83
+ abstract subgraph(vertexIds: Set<number>, graph: string, target: string): void;
84
+ /** Return the minimum timestamp across all edges in the graph. */
85
+ abstract minTimestamp(graph: string): number | null;
86
+ /** Return the maximum timestamp across all edges in the graph. */
87
+ abstract maxTimestamp(graph: string): number | null;
88
+ /** Return edges within a time range in the graph. */
89
+ abstract edgesInTimeRange(graph: string, startTime: number, endTime: number): Edge[];
90
+ /** Return vertex by ID, or null if not found. */
91
+ abstract getVertex(vertexId: number): Vertex | null;
92
+ /** Return edge by ID, or null if not found. */
93
+ abstract getEdge(edgeId: number): Edge | null;
94
+ /** Return and advance the next available vertex ID. */
95
+ abstract nextVertexId(): number;
96
+ /** Return and advance the next available edge ID. */
97
+ abstract nextEdgeId(): number;
98
+ /** Remove all vertices, edges, and graphs. */
99
+ abstract clear(): void;
100
+ /** Return a copy of all vertices. */
101
+ abstract get vertices(): Map<number, Vertex>;
102
+ /** Return a copy of all edges. */
103
+ abstract get edges(): Map<number, Edge>;
104
+ /** Return the total number of vertices. */
105
+ abstract get vertexCount(): number;
106
+ /** Return the total number of edges. */
107
+ abstract get edgeCount(): number;
108
+ }
109
+ //# sourceMappingURL=graph-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-store.d.ts","sourceRoot":"","sources":["../../../../../src/storage/abc/graph-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import type { DocId, FieldName, IndexStats } from "../../core/types.js";
2
+ import type { PostingEntry } from "../../core/types.js";
3
+ import type { PostingList } from "../../core/posting-list.js";
4
+ /**
5
+ * Minimal analyzer interface -- full implementation in analysis module.
6
+ * Analyzers tokenize text into a list of terms for indexing and search.
7
+ */
8
+ export interface AnalyzerLike {
9
+ analyze(text: string): string[];
10
+ }
11
+ /**
12
+ * Metadata returned from indexing a document.
13
+ *
14
+ * Used by the persistence layer to store posting entries and per-field
15
+ * token lengths without duplicating tokenization logic.
16
+ */
17
+ export interface IndexedTerms {
18
+ /** Per-field token counts after analysis. */
19
+ readonly fieldLengths: Record<string, number>;
20
+ /**
21
+ * Posting data keyed by "${field}\0${term}" -> positions.
22
+ * Each entry maps a (field, term) pair to the list of token positions
23
+ * where the term occurred in the document.
24
+ */
25
+ readonly postings: Map<string, readonly number[]>;
26
+ }
27
+ /**
28
+ * Abstract interface for inverted index backends.
29
+ *
30
+ * An inverted index maps (field, term) pairs to posting lists and
31
+ * maintains per-document token lengths and corpus statistics for scoring.
32
+ * Concrete implementations include in-memory and SQLite-backed stores.
33
+ */
34
+ export declare abstract class InvertedIndex {
35
+ /**
36
+ * Index a document by tokenizing each field.
37
+ *
38
+ * Returns an IndexedTerms with per-field lengths and posting data
39
+ * so the caller can persist them without re-tokenizing.
40
+ */
41
+ abstract addDocument(docId: DocId, fields: Record<FieldName, string>): IndexedTerms;
42
+ /** Add a single posting entry directly (for catalog restore). */
43
+ abstract addPosting(field: string, term: string, entry: PostingEntry): void;
44
+ /** Set per-field token lengths for a document (for catalog restore). */
45
+ abstract setDocLength(docId: DocId, lengths: Record<FieldName, number>): void;
46
+ /** Set the indexed document count (for catalog restore). */
47
+ abstract setDocCount(count: number): void;
48
+ /** Accumulate total token length for a field (for catalog restore). */
49
+ abstract addTotalLength(field: FieldName, length: number): void;
50
+ /** Remove all entries for a document from the index. */
51
+ abstract removeDocument(docId: DocId): void;
52
+ /** Remove all indexed data. */
53
+ abstract clear(): void;
54
+ /** Return the posting list for a specific (field, term) pair. */
55
+ abstract getPostingList(field: string, term: string): PostingList;
56
+ /** Return the posting list matching term across any field. */
57
+ abstract getPostingListAnyField(term: string): PostingList;
58
+ /** Return the document frequency for a (field, term) pair. */
59
+ abstract docFreq(field: string, term: string): number;
60
+ /** Return the document frequency across all fields. */
61
+ abstract docFreqAnyField(term: string): number;
62
+ /** Return the token count for docId in field. */
63
+ abstract getDocLength(docId: DocId, field: FieldName): number;
64
+ /** Return doc lengths for multiple docIds in a single call. */
65
+ abstract getDocLengthsBulk(docIds: DocId[], field: FieldName): Map<DocId, number>;
66
+ /** Return the total document length across all fields. */
67
+ abstract getTotalDocLength(docId: DocId): number;
68
+ /** Return term frequency for a specific doc in a specific field. */
69
+ abstract getTermFreq(docId: DocId, field: string, term: string): number;
70
+ /** Return term frequencies for multiple docIds in a single call. */
71
+ abstract getTermFreqsBulk(docIds: DocId[], field: string, term: string): Map<DocId, number>;
72
+ /** Return total term frequency for a doc across all fields. */
73
+ abstract getTotalTermFreq(docId: DocId, term: string): number;
74
+ /** Return the default analyzer. */
75
+ abstract get analyzer(): AnalyzerLike;
76
+ /** Return the per-field index-time analyzer overrides. */
77
+ abstract get fieldAnalyzers(): Record<string, AnalyzerLike>;
78
+ /**
79
+ * Set a per-field analyzer override.
80
+ *
81
+ * phase controls which phase the analyzer applies to:
82
+ * "index" for indexing only, "search" for search only,
83
+ * or "both" (default) for both phases.
84
+ */
85
+ abstract setFieldAnalyzer(field: string, analyzer: AnalyzerLike, phase?: "index" | "search" | "both"): void;
86
+ /** Return the index-time analyzer for a specific field. */
87
+ abstract getFieldAnalyzer(field: string): AnalyzerLike;
88
+ /**
89
+ * Return the search-time analyzer for a specific field.
90
+ * Falls back to the index-time analyzer, then the default analyzer.
91
+ */
92
+ abstract getSearchAnalyzer(field: string): AnalyzerLike;
93
+ /** Add multiple documents in a single batch. */
94
+ abstract addDocuments(docs: Array<[DocId, Record<FieldName, string>]>): void;
95
+ /** Remove multiple documents in a single batch. */
96
+ abstract removeDocuments(docIds: DocId[]): void;
97
+ /** Return all distinct terms indexed under a specific field. */
98
+ abstract terms(field: string): Iterable<string>;
99
+ /** Return all (field, term) pairs in the index. */
100
+ abstract allTerms(): Iterable<[string, string]>;
101
+ /** Return all field names that have been indexed. */
102
+ abstract fieldNames(): Iterable<string>;
103
+ /** Return true if the given (field, term) pair has any postings. */
104
+ abstract hasTerm(field: string, term: string): boolean;
105
+ /** Return true if the given document ID is indexed. */
106
+ abstract hasDoc(docId: DocId): boolean;
107
+ /** Return the average document length for a field. */
108
+ abstract avgDocLength(field: FieldName): number;
109
+ /** Return the total number of indexed documents. */
110
+ abstract totalDocCount(): number;
111
+ /** Return the total token length across all documents for a field. */
112
+ abstract totalFieldLength(field: FieldName): number;
113
+ /** Return the token positions for a term in a specific document and field. */
114
+ abstract getPositions(docId: DocId, field: string, term: string): readonly number[];
115
+ /** Return corpus-level statistics for scoring. */
116
+ abstract get stats(): IndexStats;
117
+ }
118
+ //# sourceMappingURL=inverted-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inverted-index.d.ts","sourceRoot":"","sources":["../../../../../src/storage/abc/inverted-index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;CACnD;AAED;;;;;;GAMG;AACH,8BAAsB,aAAa;IAGjC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,YAAY;IAEnF,iEAAiE;IACjE,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI;IAE3E,wEAAwE;IACxE,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,IAAI;IAE7E,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAEzC,uEAAuE;IACvE,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAE/D,wDAAwD;IACxD,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAE3C,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,IAAI,IAAI;IAItB,iEAAiE;IACjE,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW;IAEjE,8DAA8D;IAC9D,QAAQ,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAE1D,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAErD,uDAAuD;IACvD,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAE9C,iDAAiD;IACjD,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM;IAE7D,+DAA+D;IAC/D,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;IAEjF,0DAA0D;IAC1D,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAEhD,oEAAoE;IACpE,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAEvE,oEAAoE;IACpE,QAAQ,CAAC,gBAAgB,CACvB,MAAM,EAAE,KAAK,EAAE,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;IAErB,+DAA+D;IAC/D,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7D,mCAAmC;IACnC,QAAQ,KAAK,QAAQ,IAAI,YAAY,CAAC;IAEtC,0DAA0D;IAC1D,QAAQ,KAAK,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAE5D;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,CACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,YAAY,EACtB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAClC,IAAI;IAEP,2DAA2D;IAC3D,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IAEtD;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IAIvD,gDAAgD;IAChD,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;IAE5E,mDAAmD;IACnD,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;IAI/C,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE/C,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE/C,qDAAqD;IACrD,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAC;IAIvC,oEAAoE;IACpE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAEtD,uDAAuD;IACvD,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAItC,sDAAsD;IACtD,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAE/C,oDAAoD;IACpD,QAAQ,CAAC,aAAa,IAAI,MAAM;IAEhC,sEAAsE;IACtE,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAInD,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;IAInF,kDAAkD;IAClD,QAAQ,KAAK,KAAK,IAAI,UAAU,CAAC;CAClC"}
@@ -0,0 +1,45 @@
1
+ import type { PostingList } from "../core/posting-list.js";
2
+ export interface BM25ScorerLike {
3
+ score(termFreq: number, docLength: number, docFreq: number): number;
4
+ }
5
+ export declare class BlockMaxIndex {
6
+ readonly blockSize: number;
7
+ private _blockMaxes;
8
+ constructor(blockSize?: number);
9
+ private _key;
10
+ build(postingList: PostingList, scorer: BM25ScorerLike, field: string, term: string, tableName?: string): void;
11
+ getBlockMax(field: string, term: string, blockIdx: number, tableName?: string): number;
12
+ numBlocks(field: string, term: string, tableName?: string): number;
13
+ /**
14
+ * Persist the block-max index data to a SQLite database via ManagedConnection.
15
+ */
16
+ saveToSQLite(conn: {
17
+ execute(sql: string, params?: unknown[]): void;
18
+ query(sql: string, params?: unknown[]): Record<string, unknown>[];
19
+ }): void;
20
+ /**
21
+ * Load block-max index data from a SQLite database via ManagedConnection.
22
+ */
23
+ static loadFromSQLite(conn: {
24
+ execute(sql: string, params?: unknown[]): void;
25
+ query(sql: string, params?: unknown[]): Record<string, unknown>[];
26
+ }): BlockMaxIndex;
27
+ /**
28
+ * Migrate from legacy block-max table schema (table, field, term, block_idx, max_score)
29
+ * to the current compact format.
30
+ */
31
+ private static _migrateLegacyBlockmax;
32
+ /**
33
+ * Clear all block-max data.
34
+ */
35
+ clear(): void;
36
+ /**
37
+ * Return all stored keys.
38
+ */
39
+ keys(): string[];
40
+ /**
41
+ * Return the global maximum score across all blocks for a given term.
42
+ */
43
+ globalMax(field: string, term: string, tableName?: string): number;
44
+ }
45
+ //# sourceMappingURL=block-max-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-max-index.d.ts","sourceRoot":"","sources":["../../../../src/storage/block-max-index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CACrE;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,WAAW,CAAwB;gBAE/B,SAAS,SAAM;IAK3B,OAAO,CAAC,IAAI;IAIZ,KAAK,CACH,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,SAAK,GACb,IAAI;IAkCP,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM;IAMlF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM;IAK9D;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE;QACjB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;KACnE,GAAG,IAAI;IAiBR;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAC1B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;KACnE,GAAG,aAAa;IAiCjB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA+CrC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM;CAS/D"}
@@ -0,0 +1,18 @@
1
+ import type { Predicate } from "../core/types.js";
2
+ import { PostingList } from "../core/posting-list.js";
3
+ import type { IndexDef } from "./index-types.js";
4
+ import type { SQLiteConnection } from "./index-abc.js";
5
+ import { Index } from "./index-abc.js";
6
+ export declare class BTreeIndex extends Index {
7
+ readonly _dataTable: string;
8
+ constructor(indexDef: IndexDef, conn: SQLiteConnection);
9
+ private get _mc();
10
+ build(): void;
11
+ drop(): void;
12
+ scan(predicate: Predicate): PostingList;
13
+ estimateCardinality(predicate: Predicate): number;
14
+ scanCost(predicate: Predicate): number;
15
+ private _totalRows;
16
+ private _predicateToSQL;
17
+ }
18
+ //# sourceMappingURL=btree-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"btree-index.d.ts","sourceRoot":"","sources":["../../../../src/storage/btree-index.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC,qBAAa,UAAW,SAAQ,KAAK;IACnB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB;IAKtD,OAAO,KAAK,GAAG,GAEd;IAED,KAAK,IAAI,IAAI;IAQb,IAAI,IAAI,IAAI;IAKZ,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW;IAavC,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAOjD,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAOtC,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,eAAe;CAmCxB"}
@@ -0,0 +1,87 @@
1
+ import type { ManagedConnection } from "./managed-connection.js";
2
+ export interface IndexDef {
3
+ name: string;
4
+ indexType: string;
5
+ tableName: string;
6
+ columns: string[];
7
+ parameters: Record<string, unknown>;
8
+ }
9
+ export declare class Catalog {
10
+ private _conn;
11
+ private _inTransaction;
12
+ constructor(conn: ManagedConnection);
13
+ get conn(): ManagedConnection;
14
+ private _initSchema;
15
+ begin(): void;
16
+ commit(): void;
17
+ rollback(): void;
18
+ private _autoCommit;
19
+ setMetadata(key: string, value: string): void;
20
+ getMetadata(key: string): string | null;
21
+ saveTableSchema(name: string, columns: Record<string, unknown>[]): void;
22
+ dropTableSchema(name: string): void;
23
+ loadTableSchemas(): [string, Record<string, unknown>[]][];
24
+ saveDocument(tableName: string, docId: number, data: Record<string, unknown>): void;
25
+ deleteDocument(tableName: string, docId: number): void;
26
+ loadDocuments(tableName: string): [number, Record<string, unknown>][];
27
+ savePostings(tableName: string, docId: number, fieldLengths: Record<string, number>, postings: Map<string, number[]>): void;
28
+ deletePostings(tableName: string, docId: number): void;
29
+ loadPostings(tableName: string): [string, string, number, number[]][];
30
+ loadDocLengths(tableName: string): [number, Record<string, number>][];
31
+ saveVertex(vertexId: number, properties: Record<string, unknown>): void;
32
+ saveEdge(edgeId: number, sourceId: number, targetId: number, label: string, properties: Record<string, unknown>): void;
33
+ loadVertices(): [number, Record<string, unknown>][];
34
+ loadEdges(): [number, number, number, string, Record<string, unknown>][];
35
+ saveVector(docId: number, embedding: Float64Array): void;
36
+ deleteVector(docId: number): void;
37
+ loadVectors(): [number, Float64Array][];
38
+ saveColumnStats(tableName: string, columnName: string, distinctCount: number, nullCount: number, minValue: unknown, maxValue: unknown, rowCount: number, histogram?: unknown[] | null, mcvValues?: unknown[] | null, mcvFrequencies?: number[] | null): void;
39
+ loadColumnStats(tableName: string): [
40
+ string,
41
+ number,
42
+ number,
43
+ unknown,
44
+ unknown,
45
+ number,
46
+ unknown[],
47
+ unknown[],
48
+ number[]
49
+ ][];
50
+ deleteColumnStats(tableName: string): void;
51
+ saveScoringParams(name: string, params: Record<string, unknown>): void;
52
+ loadScoringParams(name: string): Record<string, unknown> | null;
53
+ loadAllScoringParams(): [string, Record<string, unknown>][];
54
+ deleteScoringParams(name: string): void;
55
+ saveIndex(indexDef: IndexDef): void;
56
+ dropIndex(name: string): void;
57
+ loadIndexes(): [string, string, string, string[], Record<string, unknown>][];
58
+ loadIndexesForTable(tableName: string): [string, string, string, string[], Record<string, unknown>][];
59
+ saveNamedGraph(name: string): void;
60
+ dropNamedGraph(name: string): void;
61
+ loadNamedGraphs(): string[];
62
+ savePathIndex(graphName: string, labelSequences: string[][]): void;
63
+ loadPathIndexes(): [string, string[][]][];
64
+ dropPathIndex(graphName: string): void;
65
+ saveModel(modelName: string, config: Record<string, unknown>): void;
66
+ loadModel(modelName: string): Record<string, unknown> | null;
67
+ deleteModel(modelName: string): void;
68
+ saveAnalyzer(name: string, config: Record<string, unknown>): void;
69
+ dropAnalyzer(name: string): void;
70
+ loadAnalyzers(): [string, Record<string, unknown>][];
71
+ saveTableFieldAnalyzer(tableName: string, field: string, phase: string, analyzerName: string): void;
72
+ loadTableFieldAnalyzers(): [string, string, string, string][];
73
+ dropTableFieldAnalyzers(tableName: string): void;
74
+ saveForeignServer(name: string, fdwType: string, options: Record<string, string>): void;
75
+ dropForeignServer(name: string): void;
76
+ loadForeignServers(): [string, string, Record<string, string>][];
77
+ saveForeignTable(name: string, serverName: string, columnsJSON: Record<string, unknown>[], options: Record<string, string>): void;
78
+ dropForeignTable(name: string): void;
79
+ loadForeignTables(): [
80
+ string,
81
+ string,
82
+ Record<string, unknown>[],
83
+ Record<string, string>
84
+ ][];
85
+ close(): void;
86
+ }
87
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../../src/storage/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { DocId, FieldName, PathExpr } from "../core/types.js";
2
+ import { DocumentStore } from "./abc/document-store.js";
3
+ export declare class MemoryDocumentStore extends DocumentStore {
4
+ private _documents;
5
+ constructor();
6
+ put(docId: DocId, document: Record<string, unknown>): void;
7
+ get(docId: DocId): Record<string, unknown> | null;
8
+ delete(docId: DocId): void;
9
+ clear(): void;
10
+ getField(docId: DocId, field: FieldName): unknown;
11
+ getFieldsBulk(docIds: DocId[], field: FieldName): Map<DocId, unknown>;
12
+ hasValue(field: FieldName, value: unknown): boolean;
13
+ evalPath(docId: DocId, path: PathExpr): unknown;
14
+ get docIds(): Set<DocId>;
15
+ get length(): number;
16
+ maxDocId(): number;
17
+ putBulk(docs: Array<[DocId, Record<string, unknown>]>): void;
18
+ deleteBulk(docIds: DocId[]): void;
19
+ }
20
+ //# sourceMappingURL=document-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-store.d.ts","sourceRoot":"","sources":["../../../../src/storage/document-store.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AA2BxD,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,OAAO,CAAC,UAAU,CAAsC;;IAOxD,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI1D,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjD,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI1B,KAAK,IAAI,IAAI;IAIb,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO;IAMjD,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC;IASrE,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAOnD,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO;IAM/C,IAAI,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAEvB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,QAAQ,IAAI,MAAM;IAQlB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAM5D,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;CAKlC"}
@@ -0,0 +1,16 @@
1
+ import type { Predicate } from "../core/types.js";
2
+ import type { PostingList } from "../core/posting-list.js";
3
+ import type { IndexDef } from "./index-types.js";
4
+ export type SQLiteConnection = unknown;
5
+ export declare abstract class Index {
6
+ protected readonly _indexDef: IndexDef;
7
+ protected readonly _conn: SQLiteConnection;
8
+ constructor(indexDef: IndexDef, conn: SQLiteConnection);
9
+ get indexDef(): IndexDef;
10
+ abstract scan(predicate: Predicate): PostingList;
11
+ abstract estimateCardinality(predicate: Predicate): number;
12
+ abstract scanCost(predicate: Predicate): number;
13
+ abstract build(): void;
14
+ abstract drop(): void;
15
+ }
16
+ //# sourceMappingURL=index-abc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-abc.d.ts","sourceRoot":"","sources":["../../../../src/storage/index-abc.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEvC,8BAAsB,KAAK;IACzB,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IACvC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;gBAE/B,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB;IAKtD,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW;IAChD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAC1D,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAC/C,QAAQ,CAAC,KAAK,IAAI,IAAI;IACtB,QAAQ,CAAC,IAAI,IAAI,IAAI;CACtB"}
@@ -0,0 +1,19 @@
1
+ import type { Predicate } from "../core/types.js";
2
+ import type { IndexDef } from "./index-types.js";
3
+ import type { SQLiteConnection, Index } from "./index-abc.js";
4
+ export type CatalogLike = unknown;
5
+ export declare class IndexManager {
6
+ private readonly _conn;
7
+ readonly _catalog: CatalogLike;
8
+ private readonly _indexes;
9
+ constructor(conn: SQLiteConnection, catalog: CatalogLike);
10
+ createIndex(indexDef: IndexDef): Index;
11
+ dropIndex(name: string): void;
12
+ dropIndexIfExists(name: string): void;
13
+ dropIndexesForTable(tableName: string): void;
14
+ findCoveringIndex(tableName: string, column: string, predicate: Predicate): Index | null;
15
+ getIndexesForTable(tableName: string): Index[];
16
+ hasIndex(name: string): boolean;
17
+ private _makeIndex;
18
+ }
19
+ //# sourceMappingURL=index-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-manager.d.ts","sourceRoot":"","sources":["../../../../src/storage/index-manager.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAI9D,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC;AAElC,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAElC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW;IAMxD,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK;IAWtC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAU7B,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMrC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAa5C,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,GACnB,KAAK,GAAG,IAAI;IAkBf,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE;IAU9C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,OAAO,CAAC,UAAU;CAMnB"}
@@ -0,0 +1,10 @@
1
+ export type IndexType = "btree" | "inverted" | "hnsw" | "ivf" | "graph" | "rtree";
2
+ export interface IndexDef {
3
+ readonly name: string;
4
+ readonly indexType: IndexType;
5
+ readonly tableName: string;
6
+ readonly columns: readonly string[];
7
+ readonly parameters: Readonly<Record<string, unknown>>;
8
+ }
9
+ export declare function createIndexDef(name: string, indexType: IndexType, tableName: string, columns: readonly string[], parameters?: Record<string, unknown>): IndexDef;
10
+ //# sourceMappingURL=index-types.d.ts.map