@askdb/sqlite 0.1.0-beta.2 → 0.1.0-beta.21

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/NOTICE ADDED
@@ -0,0 +1,10 @@
1
+ AskDB
2
+ Copyright 2026 Yahya Gilany
3
+
4
+ This product includes software developed by Yahya Gilany and contributors.
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
package/README.md CHANGED
@@ -9,15 +9,24 @@ SQLite integration for AskDB. Bundles three pieces:
9
9
  ## Install
10
10
 
11
11
  ```bash
12
- pnpm add @askdb/core @askdb/introspect @askdb/sqlite
12
+ pnpm add @askdb/core @askdb/introspect @askdb/sqlite ai
13
13
  ```
14
14
 
15
+ `ai` (Vercel AI SDK 6 or 7) is a required peer dependency of `@askdb/core`; your app owns its version.
16
+
15
17
  `better-sqlite3` is an **optional peer dependency** — install it only when using live introspection mode:
16
18
 
17
19
  ```bash
18
20
  pnpm add better-sqlite3
19
21
  ```
20
22
 
23
+ For one-off CLI introspection, include the driver in the same ephemeral command:
24
+
25
+ ```bash
26
+ pnpm dlx -p askdb -p better-sqlite3 askdb introspect --engine sqlite --url ./my-database.db
27
+ npx -p askdb -p better-sqlite3 askdb introspect --engine sqlite --url ./my-database.db
28
+ ```
29
+
21
30
  ## Usage
22
31
 
23
32
  ### NL→SQL
@@ -51,8 +60,10 @@ const result = await introspect(
51
60
 
52
61
  ## Captured metadata
53
62
 
54
- Tables, views, columns (SQLite affinity type strings), primary keys, unique constraints, foreign keys, and indexes. Requires SQLite ≥ 3.16 for `pragma_*` table-valued functions.
63
+ Tables, views, columns (SQLite affinity type strings), primary keys, unique constraints, foreign keys, and indexes. Requires SQLite ≥ 3.16 for `pragma_*` table-valued functions. A foreign key declared without a column list (`REFERENCES authors`) resolves to the parent table's primary key. Internal `sqlite_*` objects are skipped.
64
+
65
+ `sqliteConnectorProvider` gives a connector registry's `connectionLabel()` (and the `sourceLabel` from `resolveConnection()`) the file path. A plain path is returned unchanged unless it contains `?`, `#`, `;`, `=`, `@`, `://` or a control character; for a `file:` URI only the path is shown and the query string (where encryption keys go) is never read (`file:app.db?mode=ro&key=S3cret` → `app.db`), and a `file:` URI that contains `#` or names a host other than `localhost` gets no path. Anything else becomes `configured sqlite connection`.
55
66
 
56
67
  ## License
57
68
 
58
- Apache-2.0
69
+ Apache-2.0 © [Yahya Gilany](https://yahyagilany.io). See [LICENSE](./LICENSE) and [NOTICE](./NOTICE).
@@ -1,67 +1,17 @@
1
1
  import type { CatalogQueryRunner, IntrospectionFilters, IntrospectionResult } from "@askdb/introspect";
2
- import { compileTableFilters } from "./glob.js";
3
2
  export type DescribeSqliteInput = {
4
3
  runner: CatalogQueryRunner;
5
4
  filters?: IntrospectionFilters;
6
5
  /** Optional `schemaId` for the resulting `SqlSchema`. Defaults to `"introspected"`. */
7
6
  schemaId?: string;
8
7
  };
9
- /** Internal: the catalog SQL strings, exposed for snapshot-based tests. */
8
+ /** The catalog SQL strings the connector issues, keyed by query name. */
10
9
  export declare const SQLITE_CATALOG_SQL: {
11
- readonly objects: "SELECT\n name AS name,\n type AS type,\n sql AS sql\nFROM sqlite_master\nWHERE type IN ('table', 'view') AND name NOT LIKE 'sqlite_%'\nORDER BY name";
12
- readonly columns: "SELECT\n m.name AS table_name,\n p.cid AS cid,\n p.name AS column_name,\n p.type AS type,\n p.\"notnull\" AS \"notnull\",\n p.dflt_value AS dflt_value,\n p.pk AS pk\nFROM sqlite_master m, pragma_table_info(m.name) p\nWHERE m.type IN ('table', 'view') AND m.name NOT LIKE 'sqlite_%'\nORDER BY m.name, p.cid";
13
- readonly foreign_keys: "SELECT\n m.name AS table_name,\n fk.id AS fk_id,\n fk.seq AS seq,\n fk.\"table\" AS referenced_table,\n fk.\"from\" AS column_name,\n fk.\"to\" AS referenced_column,\n fk.on_update AS on_update,\n fk.on_delete AS on_delete\nFROM sqlite_master m, pragma_foreign_key_list(m.name) fk\nWHERE m.type = 'table' AND m.name NOT LIKE 'sqlite_%'\nORDER BY m.name, fk.id, fk.seq";
14
- readonly index_list: "SELECT\n m.name AS table_name,\n il.name AS index_name,\n il.\"unique\" AS is_unique,\n il.origin AS origin\nFROM sqlite_master m, pragma_index_list(m.name) il\nWHERE m.type = 'table' AND m.name NOT LIKE 'sqlite_%'\nORDER BY m.name, il.seq";
15
- readonly index_info: "SELECT\n m.name AS table_name,\n il.name AS index_name,\n ii.seqno AS seqno,\n ii.cid AS cid,\n ii.name AS column_name\nFROM sqlite_master m, pragma_index_list(m.name) il, pragma_index_info(il.name) ii\nWHERE m.type = 'table' AND m.name NOT LIKE 'sqlite_%'\nORDER BY m.name, il.name, ii.seqno";
16
- };
17
- type ObjectRow = {
18
- name: string;
19
- type: "table" | "view" | string;
20
- sql: string | null;
21
- };
22
- type ColumnRow = {
23
- table_name: string;
24
- cid: number;
25
- column_name: string;
26
- type: string;
27
- notnull: 0 | 1 | number;
28
- dflt_value: string | null;
29
- pk: number;
30
- };
31
- type ForeignKeyRow = {
32
- table_name: string;
33
- fk_id: number;
34
- seq: number;
35
- referenced_table: string;
36
- column_name: string;
37
- referenced_column: string | null;
38
- on_update: string | null;
39
- on_delete: string | null;
40
- };
41
- type IndexListRow = {
42
- table_name: string;
43
- index_name: string;
44
- is_unique: 0 | 1 | number;
45
- origin: "c" | "u" | "pk" | string;
46
- };
47
- type IndexInfoRow = {
48
- table_name: string;
49
- index_name: string;
50
- seqno: number;
51
- cid: number;
52
- column_name: string;
10
+ readonly objects: string;
11
+ readonly columns: string;
12
+ readonly foreign_keys: string;
13
+ readonly index_list: string;
14
+ readonly index_info: string;
53
15
  };
54
16
  export declare function describeSqlite(input: DescribeSqliteInput): Promise<IntrospectionResult>;
55
- type FoldInput = {
56
- schemaId: string;
57
- tableFilter: ReturnType<typeof compileTableFilters>;
58
- objectRows: ObjectRow[];
59
- columnRows: ColumnRow[];
60
- fkRows: ForeignKeyRow[];
61
- indexListRows: IndexListRow[];
62
- indexInfoRows: IndexInfoRow[];
63
- declaredFilters: ReadonlyArray<string>;
64
- };
65
- export declare function foldSqliteResult(input: FoldInput): IntrospectionResult;
66
- export {};
67
17
  //# sourceMappingURL=describe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/connector/describe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EAWpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAShD,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AA2DF,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB;;;;;;CAMrB,CAAC;AAEX,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AACvF,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AACF,KAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AACF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAE1B,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;CACnC,CAAC;AACF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkC7F;AAED,KAAK,SAAS,GAAG;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACpD,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,mBAAmB,CA8FtE"}
1
+ {"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/connector/describe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EAUpB,MAAM,mBAAmB,CAAC;AAoB3B,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAiEF,yEAAyE;AACzE,eAAO,MAAM,kBAAkB;;;;;;CAMrB,CAAC;AAsCX,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwB7F"}
@@ -1,20 +1,26 @@
1
- import { compileTableFilters } from "./glob.js";
2
- import { makeColumnId, makeTableId } from "./ids.js";
1
+ import { SINGLE_NAMESPACE_LABEL } from "@askdb/core";
2
+ import { ambiguousFilterWarnings, buildOrderedGroups, byName, compileTableFilters, groupBy, makeColumnId, makeTableId, mapFkAction, rowsToRecords, } from "@askdb/introspect/kit";
3
3
  /**
4
4
  * SQLite has a single namespace per database file. We emit it as `"public"`
5
5
  * to match `@askdb/prisma`'s convention and keep table ids cross-engine stable.
6
6
  */
7
- const NAMESPACE = "public";
7
+ const NAMESPACE = SINGLE_NAMESPACE_LABEL;
8
8
  // SQLite catalog SQL — relies on the table-valued PRAGMA functions
9
9
  // (`pragma_table_info`, `pragma_foreign_key_list`, `pragma_index_list`,
10
- // `pragma_index_info`) available since SQLite 3.16. The `sqlite_%` prefix
11
- // covers internal objects (`sqlite_sequence`, FTS shadow tables, etc.).
10
+ // `pragma_index_info`) available since SQLite 3.16.
11
+ //
12
+ // Internal objects (`sqlite_sequence`, `sqlite_stat1`, `sqlite_autoindex_*`)
13
+ // all start with the literal, lowercase prefix `sqlite_`. We match it with
14
+ // `substr(name, 1, 7) <> 'sqlite_'` rather than `NOT LIKE 'sqlite_%'`: in LIKE
15
+ // the `_` is a single-char wildcard and matching is ASCII case-insensitive, so
16
+ // `NOT LIKE 'sqlite_%'` silently drops user tables such as `SqliteUsers`.
17
+ const NOT_INTERNAL = (col) => `substr(${col}, 1, 7) <> 'sqlite_'`;
12
18
  const SQL_OBJECTS = `SELECT
13
19
  name AS name,
14
20
  type AS type,
15
21
  sql AS sql
16
22
  FROM sqlite_master
17
- WHERE type IN ('table', 'view') AND name NOT LIKE 'sqlite_%'
23
+ WHERE type IN ('table', 'view') AND ${NOT_INTERNAL("name")}
18
24
  ORDER BY name`;
19
25
  const SQL_COLUMNS = `SELECT
20
26
  m.name AS table_name,
@@ -25,7 +31,7 @@ const SQL_COLUMNS = `SELECT
25
31
  p.dflt_value AS dflt_value,
26
32
  p.pk AS pk
27
33
  FROM sqlite_master m, pragma_table_info(m.name) p
28
- WHERE m.type IN ('table', 'view') AND m.name NOT LIKE 'sqlite_%'
34
+ WHERE m.type IN ('table', 'view') AND ${NOT_INTERNAL("m.name")}
29
35
  ORDER BY m.name, p.cid`;
30
36
  const SQL_FOREIGN_KEYS = `SELECT
31
37
  m.name AS table_name,
@@ -37,7 +43,7 @@ const SQL_FOREIGN_KEYS = `SELECT
37
43
  fk.on_update AS on_update,
38
44
  fk.on_delete AS on_delete
39
45
  FROM sqlite_master m, pragma_foreign_key_list(m.name) fk
40
- WHERE m.type = 'table' AND m.name NOT LIKE 'sqlite_%'
46
+ WHERE m.type = 'table' AND ${NOT_INTERNAL("m.name")}
41
47
  ORDER BY m.name, fk.id, fk.seq`;
42
48
  const SQL_INDEX_LIST = `SELECT
43
49
  m.name AS table_name,
@@ -45,7 +51,7 @@ const SQL_INDEX_LIST = `SELECT
45
51
  il."unique" AS is_unique,
46
52
  il.origin AS origin
47
53
  FROM sqlite_master m, pragma_index_list(m.name) il
48
- WHERE m.type = 'table' AND m.name NOT LIKE 'sqlite_%'
54
+ WHERE m.type = 'table' AND ${NOT_INTERNAL("m.name")}
49
55
  ORDER BY m.name, il.seq`;
50
56
  const SQL_INDEX_INFO = `SELECT
51
57
  m.name AS table_name,
@@ -54,9 +60,9 @@ const SQL_INDEX_INFO = `SELECT
54
60
  ii.cid AS cid,
55
61
  ii.name AS column_name
56
62
  FROM sqlite_master m, pragma_index_list(m.name) il, pragma_index_info(il.name) ii
57
- WHERE m.type = 'table' AND m.name NOT LIKE 'sqlite_%'
63
+ WHERE m.type = 'table' AND ${NOT_INTERNAL("m.name")}
58
64
  ORDER BY m.name, il.name, ii.seqno`;
59
- /** Internal: the catalog SQL strings, exposed for snapshot-based tests. */
65
+ /** The catalog SQL strings the connector issues, keyed by query name. */
60
66
  export const SQLITE_CATALOG_SQL = {
61
67
  objects: SQL_OBJECTS,
62
68
  columns: SQL_COLUMNS,
@@ -67,20 +73,7 @@ export const SQLITE_CATALOG_SQL = {
67
73
  export async function describeSqlite(input) {
68
74
  const runner = input.runner;
69
75
  const tableFilter = compileTableFilters(input.filters?.tables);
70
- const run = async (sql) => {
71
- const result = await runner(sql);
72
- if (result.rows.length === 0)
73
- return [];
74
- const idx = new Map();
75
- for (let i = 0; i < result.columns.length; i++)
76
- idx.set(result.columns[i], i);
77
- return result.rows.map((row) => {
78
- const record = {};
79
- for (const [name, i] of idx)
80
- record[name] = row[i];
81
- return record;
82
- });
83
- };
76
+ const run = async (sql) => rowsToRecords(await runner(sql));
84
77
  const [objectRows, columnRows, fkRows, indexListRows, indexInfoRows] = await Promise.all([
85
78
  run(SQL_OBJECTS),
86
79
  run(SQL_COLUMNS),
@@ -99,19 +92,14 @@ export async function describeSqlite(input) {
99
92
  declaredFilters: input.filters?.tables ?? [],
100
93
  });
101
94
  }
102
- export function foldSqliteResult(input) {
95
+ function foldSqliteResult(input) {
103
96
  const warnings = [];
104
97
  const columnsByTable = groupBy(input.columnRows, (r) => r.table_name);
105
98
  const fksByTable = groupBy(input.fkRows, (r) => r.table_name);
106
99
  const indexListByTable = groupBy(input.indexListRows, (r) => r.table_name);
107
100
  // index info is keyed by `(table_name, index_name)` so we group per index.
108
- const indexInfoByIndex = new Map();
109
- for (const r of input.indexInfoRows) {
110
- const key = `${r.table_name}::${r.index_name}`;
111
- const list = indexInfoByIndex.get(key) ?? [];
112
- list.push(r);
113
- indexInfoByIndex.set(key, list);
114
- }
101
+ const indexInfoByIndex = groupBy(input.indexInfoRows, (r) => `${r.table_name}::${r.index_name}`);
102
+ const tableRefs = buildTableRefIndex(input.objectRows, columnsByTable);
115
103
  const tables = [];
116
104
  const views = [];
117
105
  const viewDefinitions = {};
@@ -150,7 +138,7 @@ export function foldSqliteResult(input) {
150
138
  comment: undefined,
151
139
  columns,
152
140
  primaryKey: pkColumns.length > 0 ? { columns: pkColumns } : undefined,
153
- foreignKeys: buildForeignKeys(fksByTable.get(obj.name) ?? []),
141
+ foreignKeys: buildForeignKeys(fksByTable.get(obj.name) ?? [], tableRefs),
154
142
  uniqueConstraints,
155
143
  indexes,
156
144
  checkConstraints: [],
@@ -166,12 +154,7 @@ export function foldSqliteResult(input) {
166
154
  sequences: [],
167
155
  };
168
156
  const isEmpty = tables.length === 0 && views.length === 0;
169
- for (const pattern of input.declaredFilters) {
170
- const matched = tables.some((t) => compileTableFilters([pattern])(`${NAMESPACE}.${t.name}`)) ||
171
- views.some((v) => compileTableFilters([pattern])(`${NAMESPACE}.${v.name}`));
172
- if (!matched)
173
- warnings.push({ code: "ambiguous_filter", filter: pattern });
174
- }
157
+ warnings.push(...ambiguousFilterWarnings(input.declaredFilters, [...tables, ...views].map((t) => `${NAMESPACE}.${t.name}`)));
175
158
  const schema = {
176
159
  schemaId: input.schemaId,
177
160
  schemas: isEmpty ? [] : [namespace],
@@ -193,36 +176,53 @@ function buildColumn(table, c, pkSet) {
193
176
  comment: undefined,
194
177
  };
195
178
  }
196
- function buildForeignKeys(rows) {
197
- // `fk_id` is unique per table; rows with the same id form one multi-column FK.
198
- const byFk = new Map();
199
- for (const r of rows) {
200
- const list = byFk.get(r.fk_id) ?? [];
201
- list.push(r);
202
- byFk.set(r.fk_id, list);
179
+ /**
180
+ * Case-insensitive index of every table's canonical name and ordered PK
181
+ * columns. SQLite identifiers are case-insensitive for ASCII letters only, so
182
+ * `REFERENCES Authors` resolves to a table created as `authors`, while `Ä` and
183
+ * `ä` stay two tables.
184
+ */
185
+ function buildTableRefIndex(objectRows, columnsByTable) {
186
+ const refs = new Map();
187
+ for (const obj of objectRows) {
188
+ if (obj.type !== "table")
189
+ continue;
190
+ const pkColumns = (columnsByTable.get(obj.name) ?? [])
191
+ .filter((c) => c.pk > 0)
192
+ .sort((a, b) => a.pk - b.pk)
193
+ .map((c) => c.column_name);
194
+ refs.set(foldIdentifier(obj.name), { name: obj.name, pkColumns });
203
195
  }
204
- const fks = [];
205
- for (const [, list] of byFk) {
206
- const ordered = list.slice().sort((a, b) => a.seq - b.seq);
196
+ return refs;
197
+ }
198
+ /** SQLite's identifier case folding: ASCII `A`–`Z` only. */
199
+ function foldIdentifier(name) {
200
+ return name.replace(/[A-Z]/g, (c) => c.toLowerCase());
201
+ }
202
+ function buildForeignKeys(rows, tableRefs) {
203
+ // `fk_id` is unique per table; rows with the same id form one multi-column FK.
204
+ return buildOrderedGroups(rows, (r) => r.fk_id, (r) => r.seq, (_fkId, ordered) => {
207
205
  const sample = ordered[0];
206
+ const target = tableRefs.get(foldIdentifier(sample.referenced_table));
208
207
  // SQLite doesn't name foreign keys; synthesize a stable name.
209
208
  const name = `${sample.table_name}_${ordered.map((r) => r.column_name).join("_")}_fkey`;
210
- fks.push({
209
+ return {
211
210
  name,
212
211
  columns: ordered.map((r) => r.column_name),
213
212
  references: {
214
213
  schema: NAMESPACE,
215
- table: sample.referenced_table,
216
- // SQLite returns NULL `to` columns when the FK references the PK by
217
- // position — fall back to the source column name in that case (the
218
- // model is approximate either way for grounding NL→SQL).
219
- columns: ordered.map((r) => r.referenced_column ?? r.column_name),
214
+ table: target?.name ?? sample.referenced_table,
215
+ // `REFERENCES parent` without a column list targets the parent's
216
+ // PRIMARY KEY; pragma_foreign_key_list reports `to` as NULL then.
217
+ // Resolve it to the parent's PK column at the same position (PK
218
+ // ordinal order). Only when the parent's PK is unknown (e.g. a
219
+ // dangling reference) do we fall back to the child column name.
220
+ columns: ordered.map((r, i) => r.referenced_column ?? target?.pkColumns[i] ?? r.column_name),
220
221
  },
221
- onDelete: mapAction(sample.on_delete),
222
- onUpdate: mapAction(sample.on_update),
223
- });
224
- }
225
- return fks.sort((a, b) => a.name.localeCompare(b.name));
222
+ onDelete: mapFkAction(sample.on_delete),
223
+ onUpdate: mapFkAction(sample.on_update),
224
+ };
225
+ });
226
226
  }
227
227
  function buildIndexesAndUniques(tableName, indexList, indexInfoByIndex) {
228
228
  const uniqueConstraints = [];
@@ -246,37 +246,8 @@ function buildIndexesAndUniques(tableName, indexList, indexInfoByIndex) {
246
246
  method: "btree",
247
247
  });
248
248
  }
249
- uniqueConstraints.sort((a, b) => a.name.localeCompare(b.name));
250
- indexes.sort((a, b) => a.name.localeCompare(b.name));
249
+ uniqueConstraints.sort(byName);
250
+ indexes.sort(byName);
251
251
  return { uniqueConstraints, indexes };
252
252
  }
253
- function mapAction(rule) {
254
- if (!rule)
255
- return undefined;
256
- const r = rule.toLowerCase();
257
- if (r === "cascade")
258
- return "cascade";
259
- if (r === "restrict")
260
- return "restrict";
261
- if (r === "set null")
262
- return "set null";
263
- if (r === "set default")
264
- return "set default";
265
- if (r === "no action")
266
- return "no action";
267
- return undefined;
268
- }
269
- function groupBy(rows, key) {
270
- const out = new Map();
271
- for (const row of rows) {
272
- const k = key(row);
273
- const list = out.get(k) ?? [];
274
- list.push(row);
275
- out.set(k, list);
276
- }
277
- return out;
278
- }
279
- function byName(a, b) {
280
- return a.name.localeCompare(b.name);
281
- }
282
253
  //# sourceMappingURL=describe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/connector/describe.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErD;;;GAGG;AACH,MAAM,SAAS,GAAG,QAAQ,CAAC;AAS3B,mEAAmE;AACnE,wEAAwE;AACxE,0EAA0E;AAC1E,wEAAwE;AAExE,MAAM,WAAW,GAAG;;;;;;cAMN,CAAC;AAEf,MAAM,WAAW,GAAG;;;;;;;;;;uBAUG,CAAC;AAExB,MAAM,gBAAgB,GAAG;;;;;;;;;;;+BAWM,CAAC;AAEhC,MAAM,cAAc,GAAG;;;;;;;wBAOC,CAAC;AAEzB,MAAM,cAAc,GAAG;;;;;;;;mCAQY,CAAC;AAEpC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,WAAW;IACpB,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,cAAc;IAC1B,UAAU,EAAE,cAAc;CAClB,CAAC;AAqCX,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAA0B;IAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE/D,MAAM,GAAG,GAAG,KAAK,EAAK,GAAW,EAAgB,EAAE;QACjD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;QAC/E,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7B,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACnD,OAAO,MAAW,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvF,GAAG,CAAY,WAAW,CAAC;QAC3B,GAAG,CAAY,WAAW,CAAC;QAC3B,GAAG,CAAgB,gBAAgB,CAAC;QACpC,GAAG,CAAe,cAAc,CAAC;QACjC,GAAG,CAAe,cAAc,CAAC;KAClC,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,cAAc;QAC1C,WAAW;QACX,UAAU;QACV,UAAU;QACV,MAAM;QACN,aAAa;QACb,aAAa;QACb,eAAe,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC;AAaD,MAAM,UAAU,gBAAgB,CAAC,KAAgB;IAC/C,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3E,2EAA2E;IAC3E,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC3D,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,eAAe,GAA2B,EAAE,CAAC;IAEnD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,GAAG,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;YAAE,SAAS;QAE5C,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAExF,2EAA2E;QAC3E,qDAAqD;QACrD,MAAM,SAAS,GAAG,IAAI;aACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aACvB,KAAK,EAAE;aACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAgB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAE9E,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAY;gBACpB,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,UAAU,EAAE,GAAG;gBACf,OAAO;aACR,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,eAAe,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;YACxD,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,sBAAsB,CAC3D,GAAG,CAAC,IAAI,EACR,SAAS,EACT,gBAAgB,CACjB,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC;YACpC,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,SAAS;YAClB,OAAO;YACP,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;YACrE,WAAW,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7D,iBAAiB;YACjB,OAAO;YACP,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEnB,MAAM,SAAS,GAAiB;QAC9B,IAAI,EAAE,SAAS;QACf,MAAM;QACN,KAAK;QACL,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAC1D,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC5C,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5E,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAc;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;KACpC,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,CAAY,EAAE,KAAkB;IAClE,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,OAAO;QACL,EAAE,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC;QACjD,IAAI,EAAE,CAAC,CAAC,WAAW;QACnB,eAAe,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,mCAAmC;QAC/D,QAAQ;QACR,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC;QACzB,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC;QAChD,iBAAiB,EAAE,CAAC,CAAC,UAAU,IAAI,SAAS;QAC5C,OAAO,EAAE,SAAS;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAqB;IAC7C,+EAA+E;IAC/E,MAAM,IAAI,GAAG,IAAI,GAAG,EAA2B,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAC3B,8DAA8D;QAC9D,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QACxF,GAAG,CAAC,IAAI,CAAC;YACP,IAAI;YACJ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAC1C,UAAU,EAAE;gBACV,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,MAAM,CAAC,gBAAgB;gBAC9B,oEAAoE;gBACpE,mEAAmE;gBACnE,yDAAyD;gBACzD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,WAAW,CAAC;aAClE;YACD,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;YACrC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,sBAAsB,CAC7B,SAAiB,EACjB,SAAyB,EACzB,gBAA6C;IAE7C,MAAM,iBAAiB,GAAgB,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAe,EAAE,CAAC;IAE/B,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI;YAAE,SAAS,CAAC,0DAA0D;QAC5F,MAAM,GAAG,GAAG,GAAG,SAAS,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACzF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEhC,IAAI,EAAE,CAAC,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5C,8BAA8B;YAC9B,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,EAAE,CAAC,UAAU;YACnB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC;YAC1B,MAAM,EAAE,OAAO;SAChB,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,SAAS,CAAC,IAAmB;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,CAAC,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IACxC,IAAI,CAAC,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IACxC,IAAI,CAAC,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IAC9C,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAC1C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,OAAO,CAAO,IAAS,EAAE,GAAkB;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,MAAM,CAA6B,CAAI,EAAE,CAAI;IACpD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/connector/describe.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,6 @@ export type SqliteIntrospectionInput = {
9
9
  filters?: IntrospectionFilters;
10
10
  };
11
11
  export declare function createSqliteConnector(): Connector<SqliteIntrospectionInput>;
12
- export { describeSqlite, SQLITE_CATALOG_SQL } from "./describe.js";
12
+ export { describeSqlite } from "./describe.js";
13
13
  export type { DescribeSqliteInput } from "./describe.js";
14
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connector/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAErB,MAAM,mBAAmB,CAAC;AAG3B;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,wBAAgB,qBAAqB,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAM3E;AAED,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connector/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAErB,MAAM,mBAAmB,CAAC;AAG3B;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,wBAAgB,qBAAqB,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAM3E;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
@@ -6,5 +6,5 @@ export function createSqliteConnector() {
6
6
  },
7
7
  };
8
8
  }
9
- export { describeSqlite, SQLITE_CATALOG_SQL } from "./describe.js";
9
+ export { describeSqlite } from "./describe.js";
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connector/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAY/C,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,KAA+B;YAC5C,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connector/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAY/C,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,KAA+B;YAC5C,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The configured file path is passed to `better-sqlite3` unchanged, so a
3
+ * relative path resolves against the process cwd — the project root for the
4
+ * `askdb` CLI and Studio, which discover `askdb.config.*` in the cwd.
5
+ */
6
+ export declare const sqliteConnectorProvider: import("@askdb/introspect").ConnectorProviderAdapter;
7
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/connector/provider.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,sDAalC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { defineLiveConnectorProvider } from "@askdb/introspect/kit";
2
+ import { createSqliteConnector } from "./index.js";
3
+ import { createSqliteCatalogQueryRunner } from "../exec/sqlite.js";
4
+ import { parseSqliteConnection } from "../label.js";
5
+ /**
6
+ * The configured file path is passed to `better-sqlite3` unchanged, so a
7
+ * relative path resolves against the process cwd — the project root for the
8
+ * `askdb` CLI and Studio, which discover `askdb.config.*` in the cwd.
9
+ */
10
+ export const sqliteConnectorProvider = defineLiveConnectorProvider({
11
+ provider: "sqlite",
12
+ displayName: "SQLite",
13
+ runtimeKey: "sqliteFile",
14
+ connectionNoun: "a file path",
15
+ missingConnection: {
16
+ cli: "Provide --url <path-to-sqlite-file> (or set introspection.provider: \"sqlite\" and introspection.providerConfig.sqlite.file in askdb.config).",
17
+ config: "No SQLite file configured. Set introspection.providerConfig.sqlite.file in askdb.config.ts.",
18
+ },
19
+ fromExportUnsupported: "--from-export is currently supported only for --engine postgres (got sqlite).",
20
+ createConnector: createSqliteConnector,
21
+ createRunner: (file) => createSqliteCatalogQueryRunner(file),
22
+ connectionLabelParts: parseSqliteConnection,
23
+ });
24
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/connector/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;IACjE,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,aAAa;IAC7B,iBAAiB,EAAE;QACjB,GAAG,EAAE,+IAA+I;QACpJ,MAAM,EAAE,6FAA6F;KACtG;IACD,qBAAqB,EAAE,+EAA+E;IACtG,eAAe,EAAE,qBAAqB;IACtC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,8BAA8B,CAAC,IAAI,CAAC;IAC5D,oBAAoB,EAAE,qBAAqB;CAC5C,CAAC,CAAC"}
@@ -1,11 +1,21 @@
1
1
  import type { CatalogQueryRunner } from "@askdb/introspect";
2
+ import { type DriverLoadOptions } from "@askdb/introspect/kit";
3
+ import type DatabaseCtor from "better-sqlite3";
2
4
  export type { CatalogQueryResult, CatalogQueryRunner } from "@askdb/introspect";
3
- /** @internal exposed for tests that need to reset the lazy `better-sqlite3` cache. */
4
- export declare function __resetBetterSqlite3ModuleCacheForTests(): void;
5
+ type Bs3Namespace = {
6
+ default: typeof DatabaseCtor;
7
+ };
8
+ export type { Bs3Namespace };
9
+ /**
10
+ * Resolve and cache the optional `better-sqlite3` peer driver, with the same
11
+ * lazy-import + project-root fallback behavior as the catalog runner.
12
+ */
13
+ export declare function loadBetterSqlite3Driver(options?: DriverLoadOptions): Promise<Bs3Namespace>;
14
+ export declare function isBetterSqlite3DriverInstalled(options?: DriverLoadOptions): boolean;
5
15
  /**
6
16
  * Build the built-in `better-sqlite3`-backed catalog query runner used by live
7
17
  * SQLite introspection. `filename` is a path to a `.db` / `.sqlite` file (or
8
18
  * `:memory:` for an empty DB; useful only in tests). The DB is opened readonly.
9
19
  */
10
- export declare function createSqliteCatalogQueryRunner(filename: string): CatalogQueryRunner;
20
+ export declare function createSqliteCatalogQueryRunner(filename: string, options?: DriverLoadOptions): CatalogQueryRunner;
11
21
  //# sourceMappingURL=sqlite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/exec/sqlite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAMhF,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AA2BhF,sFAAsF;AACtF,wBAAgB,uCAAuC,IAAI,IAAI,CAE9D;AA6BD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAEnF"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/exec/sqlite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAE/C,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,KAAK,YAAY,GAAG;IAAE,OAAO,EAAE,OAAO,YAAY,CAAA;CAAE,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,CAAC;AAQ7B;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAEhG;AAED,wBAAgB,8BAA8B,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAEnF;AA8BD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,kBAAkB,CAEpB"}
@@ -1,26 +1,22 @@
1
1
  import { AskDbError } from "@askdb/core";
2
+ import { createOptionalDriverLoader, rethrowDriverImportError, isDriverInstalled, missingDriverMessage, } from "@askdb/introspect/kit";
3
+ const betterSqlite3Loader = createOptionalDriverLoader({
4
+ packageName: "better-sqlite3",
5
+ importDriver: () => import("better-sqlite3").catch(rethrowDriverImportError),
6
+ missingMessage: missingDriverMessage({ engine: "SQLite", packageName: "better-sqlite3" }),
7
+ });
2
8
  /**
3
- * Lazily resolve the optional `better-sqlite3` peer dependency. Mirrors the
4
- * pattern in `@askdb/postgres` / `@askdb/mysql` so consumers with a custom
5
- * `CatalogQueryRunner` can use `@askdb/sqlite` without installing the driver.
9
+ * Resolve and cache the optional `better-sqlite3` peer driver, with the same
10
+ * lazy-import + project-root fallback behavior as the catalog runner.
6
11
  */
7
- let bs3ModulePromise;
8
- async function loadBetterSqlite3OrThrow() {
9
- if (!bs3ModulePromise) {
10
- bs3ModulePromise = import("better-sqlite3").catch((cause) => {
11
- bs3ModulePromise = undefined;
12
- throw new AskDbError("The built-in SQLite catalog query runner requires the optional `better-sqlite3` peer dependency. " +
13
- "Install it (e.g. `pnpm add better-sqlite3`) or pass a custom catalog query runner to the SQLite connector.", cause);
14
- });
15
- }
16
- return bs3ModulePromise;
12
+ export async function loadBetterSqlite3Driver(options) {
13
+ return betterSqlite3Loader.load(options);
17
14
  }
18
- /** @internal exposed for tests that need to reset the lazy `better-sqlite3` cache. */
19
- export function __resetBetterSqlite3ModuleCacheForTests() {
20
- bs3ModulePromise = undefined;
15
+ export function isBetterSqlite3DriverInstalled(options) {
16
+ return isDriverInstalled("better-sqlite3", options);
21
17
  }
22
- async function runSqliteCatalogQuery(filename, sql, params) {
23
- const mod = await loadBetterSqlite3OrThrow();
18
+ async function runSqliteCatalogQuery(filename, sql, params, options) {
19
+ const mod = await betterSqlite3Loader.load(options);
24
20
  const Database = mod.default;
25
21
  const db = new Database(filename, { readonly: true, fileMustExist: true });
26
22
  try {
@@ -49,7 +45,7 @@ async function runSqliteCatalogQuery(filename, sql, params) {
49
45
  * SQLite introspection. `filename` is a path to a `.db` / `.sqlite` file (or
50
46
  * `:memory:` for an empty DB; useful only in tests). The DB is opened readonly.
51
47
  */
52
- export function createSqliteCatalogQueryRunner(filename) {
53
- return (sql, params) => runSqliteCatalogQuery(filename, sql, params);
48
+ export function createSqliteCatalogQueryRunner(filename, options) {
49
+ return (sql, params) => runSqliteCatalogQuery(filename, sql, params, options);
54
50
  }
55
51
  //# sourceMappingURL=sqlite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/exec/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAWzC;;;;GAIG;AACH,IAAI,gBAAmD,CAAC;AAExD,KAAK,UAAU,wBAAwB;IACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GACd,MAAM,CAAC,gBAAgB,CACxB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAChB,gBAAgB,GAAG,SAAS,CAAC;YAC7B,MAAM,IAAI,UAAU,CAClB,mGAAmG;gBACjG,4GAA4G,EAC9G,KAAK,CACN,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,uCAAuC;IACrD,gBAAgB,GAAG,SAAS,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,QAAgB,EAChB,GAAW,EACX,MAA+B;IAE/B,MAAM,GAAG,GAAG,MAAM,wBAAwB,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,yEAAyE;QACzE,oEAAoE;QACpE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,MAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3F,MAAM,UAAU,GAAoC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAI,IAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,UAAU;YAAE,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,UAAU,CAAC,gCAAgC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,QAAgB;IAC7D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/exec/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,GAErB,MAAM,uBAAuB,CAAC;AAW/B,MAAM,mBAAmB,GAAG,0BAA0B,CAAe;IACnE,WAAW,EAAE,gBAAgB;IAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAqC;IAChH,cAAc,EAAE,oBAAoB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;CAC1F,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAA2B;IACvE,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,OAA2B;IACxE,OAAO,iBAAiB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,QAAgB,EAChB,GAAW,EACX,MAA0C,EAC1C,OAA2B;IAE3B,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,yEAAyE;QACzE,oEAAoE;QACpE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,MAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3F,MAAM,UAAU,GAAoC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAI,IAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,UAAU;YAAE,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,UAAU,CAAC,gCAAgC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAgB,EAChB,OAA2B;IAE3B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAChF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@
6
6
  * NL→SQL prompt + validator live in `@askdb/core`.
7
7
  */
8
8
  export { SQLITE_DIALECT, type DialectSpec as SqliteDialect, } from "@askdb/core";
9
- export { createSqliteConnector, describeSqlite, SQLITE_CATALOG_SQL, type DescribeSqliteInput, type SqliteIntrospectionInput, } from "./connector/index.js";
10
- export { createSqliteCatalogQueryRunner, type CatalogQueryResult, type CatalogQueryRunner, } from "./exec/sqlite.js";
9
+ export { createSqliteConnector, describeSqlite, type DescribeSqliteInput, type SqliteIntrospectionInput, } from "./connector/index.js";
10
+ export { createSqliteCatalogQueryRunner, loadBetterSqlite3Driver, isBetterSqlite3DriverInstalled, type Bs3Namespace, type CatalogQueryResult, type CatalogQueryRunner, } from "./exec/sqlite.js";
11
+ export { sqliteConnectorProvider } from "./connector/provider.js";
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,WAAW,IAAI,aAAa,GAClC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,8BAA8B,EAC9B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,WAAW,IAAI,aAAa,GAClC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACvB,8BAA8B,EAC9B,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@
6
6
  * NL→SQL prompt + validator live in `@askdb/core`.
7
7
  */
8
8
  export { SQLITE_DIALECT, } from "@askdb/core";
9
- export { createSqliteConnector, describeSqlite, SQLITE_CATALOG_SQL, } from "./connector/index.js";
10
- export { createSqliteCatalogQueryRunner, } from "./exec/sqlite.js";
9
+ export { createSqliteConnector, describeSqlite, } from "./connector/index.js";
10
+ export { createSqliteCatalogQueryRunner, loadBetterSqlite3Driver, isBetterSqlite3DriverInstalled, } from "./exec/sqlite.js";
11
+ export { sqliteConnectorProvider } from "./connector/provider.js";
11
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,cAAc,GAEf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,kBAAkB,GAGnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,8BAA8B,GAG/B,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,cAAc,GAEf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACvB,8BAA8B,GAI/B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ConnectionLabelParts } from "@askdb/introspect/kit";
2
+ /**
3
+ * The display-safe part of a SQLite "connection string": the file path. A
4
+ * plain path (or `:memory:`) is returned as-is; `formatConnectionLabel` then
5
+ * rejects one that contains `? # ; = @` or a control character. For a `file:`
6
+ * URI only the path is returned; its query string (where encryption keys live)
7
+ * is never read. Anything else returns `undefined`, so the registry labels it
8
+ * `configured sqlite connection`.
9
+ */
10
+ export declare function parseSqliteConnection(input: string): ConnectionLabelParts | undefined;
11
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../src/label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAgBrF"}
package/dist/label.js ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The display-safe part of a SQLite "connection string": the file path. A
3
+ * plain path (or `:memory:`) is returned as-is; `formatConnectionLabel` then
4
+ * rejects one that contains `? # ; = @` or a control character. For a `file:`
5
+ * URI only the path is returned; its query string (where encryption keys live)
6
+ * is never read. Anything else returns `undefined`, so the registry labels it
7
+ * `configured sqlite connection`.
8
+ */
9
+ export function parseSqliteConnection(input) {
10
+ if (!/^file:/i.test(input)) {
11
+ return input.includes("://") ? undefined : { file: input };
12
+ }
13
+ const uri = input.slice("file:".length);
14
+ if (uri.includes("#"))
15
+ return undefined;
16
+ const query = uri.indexOf("?");
17
+ let path = query === -1 ? uri : uri.slice(0, query);
18
+ if (path.startsWith("//")) {
19
+ // file://[localhost]/path — any other authority is not a local file.
20
+ const slash = path.indexOf("/", 2);
21
+ const authority = slash === -1 ? path.slice(2) : path.slice(2, slash);
22
+ if (authority !== "" && authority.toLowerCase() !== "localhost")
23
+ return undefined;
24
+ path = slash === -1 ? "" : path.slice(slash);
25
+ }
26
+ return path === "" ? undefined : { file: path };
27
+ }
28
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../src/label.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7D,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,qEAAqE;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtE,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,WAAW;YAAE,OAAO,SAAS,CAAC;QAClF,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askdb/sqlite",
3
- "version": "0.1.0-beta.2",
3
+ "version": "0.1.0-beta.21",
4
4
  "description": "AskDB SQLite integration: introspection connector via sqlite_master + PRAGMA functions and a better-sqlite3-backed catalog query runner. Pairs with @askdb/core's SQLITE_DIALECT.",
5
5
  "keywords": [
6
6
  "askdb",
@@ -11,7 +11,7 @@
11
11
  "introspection",
12
12
  "better-sqlite3"
13
13
  ],
14
- "homepage": "https://github.com/Ygilany/AskDB#readme",
14
+ "homepage": "https://askdb.tools/guides/switch-engines/",
15
15
  "bugs": {
16
16
  "url": "https://github.com/Ygilany/AskDB/issues"
17
17
  },
@@ -23,12 +23,14 @@
23
23
  "license": "Apache-2.0",
24
24
  "author": "Yahya Gilany",
25
25
  "type": "module",
26
+ "sideEffects": false,
26
27
  "main": "./dist/index.js",
27
28
  "types": "./dist/index.d.ts",
28
29
  "exports": {
29
30
  ".": {
30
31
  "types": "./dist/index.d.ts",
31
- "import": "./dist/index.js"
32
+ "import": "./dist/index.js",
33
+ "default": "./dist/index.js"
32
34
  }
33
35
  },
34
36
  "files": [
@@ -38,14 +40,14 @@
38
40
  "NOTICE"
39
41
  ],
40
42
  "engines": {
41
- "node": ">=20"
43
+ "node": ">=22.23.4"
42
44
  },
43
45
  "dependencies": {
44
- "@askdb/introspect": "0.3.0-beta.3",
45
- "@askdb/core": "0.5.0-beta.10"
46
+ "@askdb/core": "1.0.0-beta.46",
47
+ "@askdb/introspect": "0.3.0-beta.20"
46
48
  },
47
49
  "peerDependencies": {
48
- "better-sqlite3": ">=11"
50
+ "better-sqlite3": ">=12"
49
51
  },
50
52
  "peerDependenciesMeta": {
51
53
  "better-sqlite3": {
@@ -53,10 +55,10 @@
53
55
  }
54
56
  },
55
57
  "devDependencies": {
56
- "@types/better-sqlite3": "^7.6.12",
57
- "better-sqlite3": "^11.5.0",
58
- "typescript": "^5.7.3",
59
- "vitest": "^3.0.9"
58
+ "@types/better-sqlite3": "^7.6.13",
59
+ "better-sqlite3": "^12.11.1",
60
+ "typescript": "^6.0.3",
61
+ "vitest": "^5.0.5"
60
62
  },
61
63
  "scripts": {
62
64
  "build": "tsc -p tsconfig.build.json",
@@ -1,3 +0,0 @@
1
- export type GlobMatcher = (qualifiedName: string) => boolean;
2
- export declare function compileTableFilters(patterns: ReadonlyArray<string> | undefined): GlobMatcher;
3
- //# sourceMappingURL=glob.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/connector/glob.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;AAE7D,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,GAC1C,WAAW,CAIb"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Minimal glob matcher for `IntrospectionFilters.tables`. Matches against
3
- * `"<schema>.<name>"`; supports `*` (any run) and `?` (single char).
4
- */
5
- function compileGlob(pattern) {
6
- let out = "^";
7
- for (const ch of pattern) {
8
- if (ch === "*")
9
- out += ".*";
10
- else if (ch === "?")
11
- out += ".";
12
- else if (/[.+^${}()|[\]\\]/.test(ch))
13
- out += "\\" + ch;
14
- else
15
- out += ch;
16
- }
17
- out += "$";
18
- return new RegExp(out);
19
- }
20
- export function compileTableFilters(patterns) {
21
- if (!patterns || patterns.length === 0)
22
- return () => true;
23
- const compiled = patterns.map(compileGlob);
24
- return (qualifiedName) => compiled.some((re) => re.test(qualifiedName));
25
- }
26
- //# sourceMappingURL=glob.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/connector/glob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,SAAS,WAAW,CAAC,OAAe;IAClC,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,IAAI,EAAE,KAAK,GAAG;YAAE,GAAG,IAAI,IAAI,CAAC;aACvB,IAAI,EAAE,KAAK,GAAG;YAAE,GAAG,IAAI,GAAG,CAAC;aAC3B,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;;YAClD,GAAG,IAAI,EAAE,CAAC;IACjB,CAAC;IACD,GAAG,IAAI,GAAG,CAAC;IACX,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAID,MAAM,UAAU,mBAAmB,CACjC,QAA2C;IAE3C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;IAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1E,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Schema v2 ID conventions — kept aligned with the postgres / mysql connectors.
3
- * SQLite has a single namespace per database; we emit `"public"` to match
4
- * `@askdb/prisma`'s default and keep table ids cross-engine stable.
5
- */
6
- export declare function makeTableId(schemaName: string, tableName: string): string;
7
- export declare function makeColumnId(schemaName: string, tableName: string, columnName: string): string;
8
- //# sourceMappingURL=ids.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/connector/ids.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,CAER"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Schema v2 ID conventions — kept aligned with the postgres / mysql connectors.
3
- * SQLite has a single namespace per database; we emit `"public"` to match
4
- * `@askdb/prisma`'s default and keep table ids cross-engine stable.
5
- */
6
- export function makeTableId(schemaName, tableName) {
7
- return `table:${schemaName}.${tableName}`;
8
- }
9
- export function makeColumnId(schemaName, tableName, columnName) {
10
- return `table:${schemaName}.${tableName}#${columnName}`;
11
- }
12
- //# sourceMappingURL=ids.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/connector/ids.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,SAAiB;IAC/D,OAAO,SAAS,UAAU,IAAI,SAAS,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,UAAkB,EAClB,SAAiB,EACjB,UAAkB;IAElB,OAAO,SAAS,UAAU,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;AAC1D,CAAC"}