uql-orm 0.6.0 → 0.7.2

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 (150) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +6 -5
  3. package/dist/bunSql/bunSql.util.d.ts +30 -0
  4. package/dist/bunSql/bunSql.util.d.ts.map +1 -0
  5. package/dist/bunSql/bunSql.util.js +91 -0
  6. package/dist/bunSql/bunSql.util.js.map +1 -0
  7. package/dist/bunSql/bunSqlQuerier.d.ts +14 -0
  8. package/dist/bunSql/bunSqlQuerier.d.ts.map +1 -0
  9. package/dist/bunSql/bunSqlQuerier.js +37 -0
  10. package/dist/bunSql/bunSqlQuerier.js.map +1 -0
  11. package/dist/bunSql/bunSqlQuerierPool.d.ts +19 -0
  12. package/dist/bunSql/bunSqlQuerierPool.d.ts.map +1 -0
  13. package/dist/bunSql/bunSqlQuerierPool.js +58 -0
  14. package/dist/bunSql/bunSqlQuerierPool.js.map +1 -0
  15. package/dist/bunSql/index.d.ts +3 -0
  16. package/dist/bunSql/index.d.ts.map +1 -0
  17. package/dist/bunSql/index.js +3 -0
  18. package/dist/bunSql/index.js.map +1 -0
  19. package/dist/cockroachdb/crdbQuerier.d.ts +3 -8
  20. package/dist/cockroachdb/crdbQuerier.d.ts.map +1 -1
  21. package/dist/cockroachdb/crdbQuerier.js +2 -30
  22. package/dist/cockroachdb/crdbQuerier.js.map +1 -1
  23. package/dist/cockroachdb/crdbQuerierPool.d.ts +4 -4
  24. package/dist/cockroachdb/crdbQuerierPool.d.ts.map +1 -1
  25. package/dist/cockroachdb/crdbQuerierPool.js +5 -7
  26. package/dist/cockroachdb/crdbQuerierPool.js.map +1 -1
  27. package/dist/d1/d1Querier.d.ts +2 -1
  28. package/dist/d1/d1Querier.d.ts.map +1 -1
  29. package/dist/d1/d1Querier.js +3 -4
  30. package/dist/d1/d1Querier.js.map +1 -1
  31. package/dist/d1/d1QuerierPool.d.ts +2 -1
  32. package/dist/d1/d1QuerierPool.d.ts.map +1 -1
  33. package/dist/d1/d1QuerierPool.js +3 -2
  34. package/dist/d1/d1QuerierPool.js.map +1 -1
  35. package/dist/dialect/abstractDialect.d.ts +1 -0
  36. package/dist/dialect/abstractDialect.d.ts.map +1 -1
  37. package/dist/dialect/abstractDialect.js +3 -0
  38. package/dist/dialect/abstractDialect.js.map +1 -1
  39. package/dist/dialect/abstractSqlDialect.d.ts +57 -52
  40. package/dist/dialect/abstractSqlDialect.d.ts.map +1 -1
  41. package/dist/dialect/abstractSqlDialect.js +194 -142
  42. package/dist/dialect/abstractSqlDialect.js.map +1 -1
  43. package/dist/dialect/dialectConfig.d.ts +19 -8
  44. package/dist/dialect/dialectConfig.d.ts.map +1 -1
  45. package/dist/dialect/dialectConfig.js +6 -0
  46. package/dist/dialect/dialectConfig.js.map +1 -1
  47. package/dist/dialect/mysqlLikeSqlDialect.d.ts +3 -5
  48. package/dist/dialect/mysqlLikeSqlDialect.d.ts.map +1 -1
  49. package/dist/dialect/mysqlLikeSqlDialect.js +12 -24
  50. package/dist/dialect/mysqlLikeSqlDialect.js.map +1 -1
  51. package/dist/dialect/queryContext.js +1 -1
  52. package/dist/dialect/queryContext.js.map +1 -1
  53. package/dist/express/querierMiddleware.d.ts.map +1 -1
  54. package/dist/express/querierMiddleware.js +13 -20
  55. package/dist/express/querierMiddleware.js.map +1 -1
  56. package/dist/libsql/libsqlQuerier.d.ts +2 -1
  57. package/dist/libsql/libsqlQuerier.d.ts.map +1 -1
  58. package/dist/libsql/libsqlQuerier.js +3 -4
  59. package/dist/libsql/libsqlQuerier.js.map +1 -1
  60. package/dist/libsql/libsqlQuerierPool.d.ts +2 -1
  61. package/dist/libsql/libsqlQuerierPool.d.ts.map +1 -1
  62. package/dist/libsql/libsqlQuerierPool.js +3 -2
  63. package/dist/libsql/libsqlQuerierPool.js.map +1 -1
  64. package/dist/maria/mariaDialect.d.ts +2 -4
  65. package/dist/maria/mariaDialect.d.ts.map +1 -1
  66. package/dist/maria/mariaDialect.js +1 -5
  67. package/dist/maria/mariaDialect.js.map +1 -1
  68. package/dist/maria/mariadbQuerier.d.ts +2 -1
  69. package/dist/maria/mariadbQuerier.d.ts.map +1 -1
  70. package/dist/maria/mariadbQuerier.js +4 -6
  71. package/dist/maria/mariadbQuerier.js.map +1 -1
  72. package/dist/maria/mariadbQuerierPool.d.ts +2 -1
  73. package/dist/maria/mariadbQuerierPool.d.ts.map +1 -1
  74. package/dist/maria/mariadbQuerierPool.js +3 -2
  75. package/dist/maria/mariadbQuerierPool.js.map +1 -1
  76. package/dist/mongo/mongodbQuerierPool.d.ts +2 -1
  77. package/dist/mongo/mongodbQuerierPool.d.ts.map +1 -1
  78. package/dist/mongo/mongodbQuerierPool.js +2 -3
  79. package/dist/mongo/mongodbQuerierPool.js.map +1 -1
  80. package/dist/mysql/mysql2Querier.d.ts +2 -1
  81. package/dist/mysql/mysql2Querier.d.ts.map +1 -1
  82. package/dist/mysql/mysql2Querier.js +7 -11
  83. package/dist/mysql/mysql2Querier.js.map +1 -1
  84. package/dist/mysql/mysql2QuerierPool.d.ts +2 -1
  85. package/dist/mysql/mysql2QuerierPool.d.ts.map +1 -1
  86. package/dist/mysql/mysql2QuerierPool.js +3 -2
  87. package/dist/mysql/mysql2QuerierPool.js.map +1 -1
  88. package/dist/neon/neonQuerier.d.ts +3 -7
  89. package/dist/neon/neonQuerier.d.ts.map +1 -1
  90. package/dist/neon/neonQuerier.js +2 -18
  91. package/dist/neon/neonQuerier.js.map +1 -1
  92. package/dist/neon/neonQuerierPool.d.ts +4 -4
  93. package/dist/neon/neonQuerierPool.d.ts.map +1 -1
  94. package/dist/neon/neonQuerierPool.js +5 -7
  95. package/dist/neon/neonQuerierPool.js.map +1 -1
  96. package/dist/postgres/abstractPgQuerier.d.ts +18 -0
  97. package/dist/postgres/abstractPgQuerier.d.ts.map +1 -0
  98. package/dist/postgres/abstractPgQuerier.js +33 -0
  99. package/dist/postgres/abstractPgQuerier.js.map +1 -0
  100. package/dist/postgres/abstractPgQuerierPool.d.ts +15 -0
  101. package/dist/postgres/abstractPgQuerierPool.d.ts.map +1 -0
  102. package/dist/postgres/abstractPgQuerierPool.js +10 -0
  103. package/dist/postgres/abstractPgQuerierPool.js.map +1 -0
  104. package/dist/postgres/pgQuerier.d.ts +3 -8
  105. package/dist/postgres/pgQuerier.d.ts.map +1 -1
  106. package/dist/postgres/pgQuerier.js +2 -30
  107. package/dist/postgres/pgQuerier.js.map +1 -1
  108. package/dist/postgres/pgQuerierPool.d.ts +6 -6
  109. package/dist/postgres/pgQuerierPool.d.ts.map +1 -1
  110. package/dist/postgres/pgQuerierPool.js +7 -9
  111. package/dist/postgres/pgQuerierPool.js.map +1 -1
  112. package/dist/postgres/postgresDialect.d.ts +6 -16
  113. package/dist/postgres/postgresDialect.d.ts.map +1 -1
  114. package/dist/postgres/postgresDialect.js +49 -72
  115. package/dist/postgres/postgresDialect.js.map +1 -1
  116. package/dist/querier/abstractQuerierPool.d.ts +5 -3
  117. package/dist/querier/abstractQuerierPool.d.ts.map +1 -1
  118. package/dist/querier/abstractQuerierPool.js +6 -3
  119. package/dist/querier/abstractQuerierPool.js.map +1 -1
  120. package/dist/querier/abstractSqlQuerier.d.ts +5 -0
  121. package/dist/querier/abstractSqlQuerier.d.ts.map +1 -1
  122. package/dist/querier/abstractSqlQuerier.js +15 -5
  123. package/dist/querier/abstractSqlQuerier.js.map +1 -1
  124. package/dist/sqlite/abstractSqliteQuerier.d.ts +0 -2
  125. package/dist/sqlite/abstractSqliteQuerier.d.ts.map +1 -1
  126. package/dist/sqlite/abstractSqliteQuerier.js +0 -9
  127. package/dist/sqlite/abstractSqliteQuerier.js.map +1 -1
  128. package/dist/sqlite/sqliteDialect.d.ts +6 -20
  129. package/dist/sqlite/sqliteDialect.d.ts.map +1 -1
  130. package/dist/sqlite/sqliteDialect.js +20 -33
  131. package/dist/sqlite/sqliteDialect.js.map +1 -1
  132. package/dist/sqlite/sqliteQuerier.d.ts +2 -1
  133. package/dist/sqlite/sqliteQuerier.d.ts.map +1 -1
  134. package/dist/sqlite/sqliteQuerier.js +3 -4
  135. package/dist/sqlite/sqliteQuerier.js.map +1 -1
  136. package/dist/sqlite/sqliteQuerierPool.d.ts +2 -1
  137. package/dist/sqlite/sqliteQuerierPool.d.ts.map +1 -1
  138. package/dist/sqlite/sqliteQuerierPool.js +3 -2
  139. package/dist/sqlite/sqliteQuerierPool.js.map +1 -1
  140. package/dist/type/querierPool.d.ts +16 -0
  141. package/dist/type/querierPool.d.ts.map +1 -1
  142. package/dist/type/query.d.ts +8 -3
  143. package/dist/type/query.d.ts.map +1 -1
  144. package/dist/type/utility.d.ts +4 -0
  145. package/dist/type/utility.d.ts.map +1 -1
  146. package/dist/util/sql.util.d.ts +26 -3
  147. package/dist/util/sql.util.d.ts.map +1 -1
  148. package/dist/util/sql.util.js +51 -9
  149. package/dist/util/sql.util.js.map +1 -1
  150. package/package.json +6 -5
package/CHANGELOG.md CHANGED
@@ -4,6 +4,31 @@ All notable changes to this project will be documented in this file. Please add
4
4
 
5
5
  date format is [yyyy-mm-dd]
6
6
 
7
+ ## [0.7.0] - 2026-03-21
8
+ ### New Features
9
+ - **Bun SQL Support**: Added a first-class adapter for Bun's unified `sql` driver (`uql-orm/bunSql`). A single `BunSqlQuerierPool` infers the UQL dialect from `SQL.Options` (URL, `adapter`, or `filename`) and routes SQL generation to PostgreSQL, MySQL, MariaDB, SQLite, or CockroachDB ASTs. Includes dialect-aware option normalization (`inferDialect`, `normalizeBunOpts`), row/insert-id normalization for Bun result shapes, and a minimal `pool.query` shim for pg-compatible consumers.
10
+
11
+ ### Breaking Changes
12
+ - **`$ne` is null-safe everywhere**: Non-null `$ne` now uses dialect-native null-safe inequality so rows with `NULL` in the compared column are included when they differ from the bound value (PostgreSQL/CockroachDB: `IS DISTINCT FROM`; SQLite: `IS NOT`; MySQL/MariaDB: `NOT (col <=> ?)`). This matches typical ORM expectations and fixes subtle “missing rows” bugs versus plain `<>` SQL. Queries that relied on SQL’s three-valued logic excluding `NULL` from `$ne` matches may return more rows; use `{$ne: null}` / `$isNull` / `$isNotNull` explicitly for null-only filters.
13
+
14
+ ### Security
15
+ - **SQL Injection Prevention for JSON**: Hardened JSON-path operators across all SQL dialects with strict identifier and key escaping.
16
+
17
+ ### Improvements
18
+ - **Standardized Architecture**: Unified `PrimaryKey` type and improved `buildUpdateResult` for precise batch-insert ID mapping.
19
+ - **Dialect parameter normalization**: `QueryDialect.normalizeValue` / `normalizeValues` centralize bound-parameter shaping (e.g. Postgres array literals and booleans, JSON stringify for text-JSON columns on SQLite/MySQL-like dialects, `Date` preserved for driver binding). Applied at the querier boundary and in `SqlQueryContext.pushValue` for consistency with Bun SQL and other drivers.
20
+ - **SQL dialect simplification**: Consolidated `$in` / `$nin` formatting via `formatIn` (including empty-array `IN (NULL)` handling), streamlined JSON field conditions (removed redundant config indirection), and unified null-safe `$ne` through `neExpr` / `havingCondition`.
21
+ - **Bun SQL Resilience**: SQLite uses an unpooled handle when Bun does not support `reserve()`; reserved connections use `await release()` where required.
22
+ - **Dialect inference**: Improved Bun URL handling (`:memory:`, `mysql2://`, `sqlite3://`, `postgresql://`, etc.).
23
+
24
+ ### Bug Fixes
25
+ - **MySQL/MariaDB Upsert Detection**: Fine-tuned the `created` flag detection by correctly interpreting the MySQL `affectedRows` convention (1 for insert, 2 for update, 0 for no-op).
26
+ - **Express Route ID Resolution**: Removed rigid `req.params.id` string-bindings in autogenerated API endpoints. Routes now correctly infer and map dynamic parameters utilizing the `meta.id` schema definition, increasing type-safety drastically.
27
+
28
+ ## [0.6.1] - 2026-03-18
29
+ ### Chore
30
+ - **Documentation**: Improve intro of readme.md
31
+
7
32
  ## [0.6.0] - 2026-03-18
8
33
  ### Features
9
34
  - **JSON update operators expanded**: Added `$push` for atomic JSON array append in update payloads across SQL dialects.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![tests](https://github.com/rogerpadilla/uql/actions/workflows/tests.yml/badge.svg)](https://github.com/rogerpadilla/uql) [![Coverage Status](https://coveralls.io/repos/github/rogerpadilla/uql/badge.svg?branch=main)](https://coveralls.io/github/rogerpadilla/uql?branch=main) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/rogerpadilla/uql/blob/main/LICENSE) [![npm version](https://img.shields.io/npm/v/uql-orm.svg)](https://www.npmjs.com/package/uql-orm)
6
6
 
7
- **[UQL](https://uql-orm.dev)** is a TypeScript ORM focused on portability, performance, and a consistent query model across SQL and MongoDB. In our open benchmark, SQL generation reaches [**3.9M+ ops/s**](https://github.com/rogerpadilla/ts-orm-benchmark). UQL is designed for teams that want type safety and dialect portability without introducing a proprietary query DSL.
7
+ **[UQL](https://uql-orm.dev)** is the best ORM for TypeScript and modern JavaScript designed to be fast, safe, and easy to integrate into any application especially AI and data‑heavy workloads. Built with a unified API across SQL and MongoDB.
8
8
 
9
9
  ```ts
10
10
  const results = await querier.findMany(User, {
@@ -91,6 +91,7 @@ npm install uql-orm # or bun add / pnpm add
91
91
  | **LibSQL** (incl. Turso) | `npm install @libsql/client` |
92
92
  | **MongoDB** | `npm install mongodb` |
93
93
  | **Cloudflare D1** | _Native (no driver needed)_ |
94
+ | **Bun SQL Native** (Incl. Postgres, MySQL, SQLite) | _Native (no driver needed)_ |
94
95
 
95
96
  ### TypeScript Configuration
96
97
 
@@ -261,7 +262,7 @@ A pool manages connections (queriers). Initialize it once at application bootstr
261
262
 
262
263
  ```ts
263
264
  import { SnakeCaseNamingStrategy, type Config } from 'uql-orm';
264
- import { PgQuerierPool } from 'uql-orm/postgres'; // or mysql2, sqlite, etc.
265
+ import { PgQuerierPool } from 'uql-orm/postgres'; // or mysql2, sqlite, bunSql, etc.
265
266
  import { User, Profile, Post } from './entities';
266
267
 
267
268
  export const pool = new PgQuerierPool(
@@ -367,9 +368,9 @@ const items = await querier.findMany(Company, {
367
368
  });
368
369
  ```
369
370
 
370
- **PostgreSQL:** `WHERE ("settings"->>'isArchived') IS DISTINCT FROM $1 AND (("settings"->>'priority'))::numeric >= $2`
371
- **MySQL:** `WHERE (\`settings\`->>'isArchived') <> ? AND CAST((\`settings\`->>'priority') AS DECIMAL) >= ?`
372
- **MariaDB:** `WHERE JSON_VALUE(\`settings\`, '$.isArchived') <> ? AND CAST(JSON_VALUE(\`settings\`, '$.priority') AS DECIMAL) >= ?`
371
+ **PostgreSQL:** `WHERE ("settings"->>'isArchived') IS DISTINCT FROM $1 AND (("settings"->>'priority'))::numeric >= $2`
372
+ **MySQL:** `WHERE (\`settings\`->>'isArchived') <> ? AND CAST((\`settings\`->>'priority') AS DECIMAL) >= ?`
373
+ **MariaDB:** `WHERE JSON_VALUE(\`settings\`, '$.isArchived') <> ? AND CAST(JSON_VALUE(\`settings\`, '$.priority') AS DECIMAL) >= ?`
373
374
  **SQLite:** `WHERE json_extract("settings", '$.isArchived') IS NOT ? AND CAST(json_extract("settings", '$.priority') AS REAL) >= ?`
374
375
 
375
376
  Atomic JSON updates support `$merge`, `$unset`, and `$push`:
@@ -0,0 +1,30 @@
1
+ import type { ReservedSQL, SQL } from 'bun';
2
+ import type { PrimaryKey, RawRow, SqlDialect } from '../type/index.js';
3
+ export type BunSqlResult<T = RawRow> = T[] & {
4
+ count?: number;
5
+ affectedRows?: number;
6
+ lastInsertRowid?: PrimaryKey;
7
+ };
8
+ export declare function getAffectedRows(res: BunSqlResult): number;
9
+ export declare function isReservedConnection(conn: unknown): conn is ReservedSQL;
10
+ export declare function isPoolableDialect(dialect: SqlDialect): boolean;
11
+ /**
12
+ * Robustly infers the UQL SqlDialect from a Bun SQL.Options object.
13
+ */
14
+ export declare function inferDialect(config: SQL.Options): SqlDialect;
15
+ /**
16
+ * Normalizes SQL.Options into a structure that Bun's SQL engine expects for a given dialect.
17
+ * Crucially handles 'filename' mapping for SQLite and alias resolution for Cockroach/MariaDB.
18
+ */
19
+ export declare function normalizeBunOpts(config: SQL.Options, dialect: SqlDialect): SQL.Options;
20
+ /**
21
+ * Normalizes Bun result rows into plain JavaScript objects and coerces BigInts to numbers.
22
+ * This ensures compatibility with UQL's expected return types and reliable JSON serialization.
23
+ */
24
+ export declare function normalizeRows<T>(res: BunSqlResult<T>): T[];
25
+ /**
26
+ * Robustly extracts the last inserted ID from a Bun SQL result.
27
+ * Handles BigInt-to-number coercion for cross-dialect consistency.
28
+ */
29
+ export declare function getInsertId(res: BunSqlResult): PrimaryKey | undefined;
30
+ //# sourceMappingURL=bunSql.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bunSql.util.d.ts","sourceRoot":"","sources":["../../src/bunSql/bunSql.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEvE,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,GAAG;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,UAAU,CAAC;CAC9B,CAAC;AAEF,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAEzD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,WAAW,CAEvE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,UAAU,CAc5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,GAAG,CAAC,OAAO,CA4BtF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAgB1D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAErE"}
@@ -0,0 +1,91 @@
1
+ export function getAffectedRows(res) {
2
+ return res.affectedRows ?? res.count ?? 0;
3
+ }
4
+ export function isReservedConnection(conn) {
5
+ return !!(conn && typeof conn.release === 'function');
6
+ }
7
+ export function isPoolableDialect(dialect) {
8
+ return dialect !== 'sqlite';
9
+ }
10
+ /**
11
+ * Robustly infers the UQL SqlDialect from a Bun SQL.Options object.
12
+ */
13
+ export function inferDialect(config) {
14
+ if (config.filename)
15
+ return 'sqlite';
16
+ const opts = config;
17
+ if (opts.url) {
18
+ const urlStr = opts.url.toString();
19
+ if (urlStr === ':memory:')
20
+ return 'sqlite';
21
+ const scheme = urlStr.split(':')[0];
22
+ if (scheme === 'sqlite3')
23
+ return 'sqlite';
24
+ if (scheme === 'mysql2')
25
+ return 'mysql';
26
+ if (scheme === 'postgresql')
27
+ return 'postgres';
28
+ return scheme;
29
+ }
30
+ if (opts.adapter)
31
+ return opts.adapter;
32
+ return 'postgres';
33
+ }
34
+ /**
35
+ * Normalizes SQL.Options into a structure that Bun's SQL engine expects for a given dialect.
36
+ * Crucially handles 'filename' mapping for SQLite and alias resolution for Cockroach/MariaDB.
37
+ */
38
+ export function normalizeBunOpts(config, dialect) {
39
+ if (dialect === 'sqlite') {
40
+ const rawFilename = ('filename' in config ? config.filename : null) || ('url' in config ? config.url : null) || ':memory:';
41
+ return {
42
+ ...config,
43
+ adapter: 'sqlite',
44
+ filename: rawFilename.toString(),
45
+ };
46
+ }
47
+ const bunAdapter = dialect === 'cockroachdb' ? 'postgres' : dialect;
48
+ const opts = { bigint: true, ...config, adapter: bunAdapter };
49
+ if (!opts.url) {
50
+ return opts;
51
+ }
52
+ try {
53
+ const url = opts.url instanceof URL ? opts.url : new URL(opts.url);
54
+ if (url.searchParams.get('sslmode') === 'no-verify') {
55
+ url.searchParams.delete('sslmode');
56
+ opts.url = url.toString();
57
+ opts.tls = { rejectUnauthorized: false, ...(typeof opts.tls === 'object' ? opts.tls : undefined) };
58
+ }
59
+ }
60
+ catch (_) { }
61
+ return opts;
62
+ }
63
+ /**
64
+ * Normalizes Bun result rows into plain JavaScript objects and coerces BigInts to numbers.
65
+ * This ensures compatibility with UQL's expected return types and reliable JSON serialization.
66
+ */
67
+ export function normalizeRows(res) {
68
+ const rows = [];
69
+ for (const row of res) {
70
+ let cleanRow;
71
+ const sourceRow = row;
72
+ for (const key in sourceRow) {
73
+ const value = sourceRow[key];
74
+ if (typeof value === 'bigint') {
75
+ // Clone only when needed so non-bigint rows can pass through untouched.
76
+ cleanRow ??= { ...sourceRow };
77
+ cleanRow[key] = Number(value);
78
+ }
79
+ }
80
+ rows.push((cleanRow ?? sourceRow));
81
+ }
82
+ return rows;
83
+ }
84
+ /**
85
+ * Robustly extracts the last inserted ID from a Bun SQL result.
86
+ * Handles BigInt-to-number coercion for cross-dialect consistency.
87
+ */
88
+ export function getInsertId(res) {
89
+ return typeof res.lastInsertRowid === 'bigint' ? Number(res.lastInsertRowid) : res.lastInsertRowid;
90
+ }
91
+ //# sourceMappingURL=bunSql.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bunSql.util.js","sourceRoot":"","sources":["../../src/bunSql/bunSql.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ReservedSQL, SQL } from 'bun';
2
+ import type { AbstractSqlDialect } from '../dialect/index.js';
3
+ import { AbstractPoolQuerier } from '../querier/abstractPoolQuerier.js';
4
+ import type { ExtraOptions } from '../type/index.js';
5
+ export declare class BunSqlQuerier extends AbstractPoolQuerier<ReservedSQL> {
6
+ readonly sql: SQL;
7
+ readonly extra?: ExtraOptions | undefined;
8
+ constructor(sql: SQL, dialect: AbstractSqlDialect, connFactory: () => Promise<ReservedSQL>, extra?: ExtraOptions | undefined);
9
+ internalAll<T>(query: string, values?: unknown[]): Promise<T[]>;
10
+ internalRun(query: string, values?: unknown[]): Promise<import("../type/query.js").QueryUpdateResult>;
11
+ private execute;
12
+ protected releaseConn(conn: ReservedSQL): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=bunSqlQuerier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bunSqlQuerier.d.ts","sourceRoot":"","sources":["../../src/bunSql/bunSqlQuerier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAU,MAAM,kBAAkB,CAAC;AAG7D,qBAAa,aAAc,SAAQ,mBAAmB,CAAC,WAAW,CAAC;IAE/D,QAAQ,CAAC,GAAG,EAAE,GAAG;aAGC,KAAK,CAAC,EAAE,YAAY;gBAH7B,GAAG,EAAE,GAAG,EACjB,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,EACrB,KAAK,CAAC,EAAE,YAAY,YAAA;IAKzB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAKhD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;YAa9C,OAAO;cAMI,WAAW,CAAC,IAAI,EAAE,WAAW;CAKvD"}
@@ -0,0 +1,37 @@
1
+ import { AbstractPoolQuerier } from '../querier/abstractPoolQuerier.js';
2
+ import { getAffectedRows, getInsertId, isReservedConnection, normalizeRows } from './bunSql.util.js';
3
+ export class BunSqlQuerier extends AbstractPoolQuerier {
4
+ sql;
5
+ extra;
6
+ constructor(sql, dialect, connFactory, extra) {
7
+ super(dialect, connFactory, extra);
8
+ this.sql = sql;
9
+ this.extra = extra;
10
+ }
11
+ async internalAll(query, values) {
12
+ const res = await this.execute(query, values);
13
+ return normalizeRows(res);
14
+ }
15
+ async internalRun(query, values) {
16
+ const res = await this.execute(query, values);
17
+ const rows = normalizeRows(res);
18
+ // Bun's result metadata varies by query type; use the base builder to map safely.
19
+ return this.buildUpdateResult({
20
+ rows,
21
+ changes: getAffectedRows(res),
22
+ id: getInsertId(res),
23
+ upsertStatus: res.affectedRows,
24
+ });
25
+ }
26
+ async execute(query, values) {
27
+ // Safe: UQL parameters are strictly bound. .unsafe() correctly bypasses Bun's tagged template
28
+ // literal parsing requirement so we can execute our dynamically compiled AST strings natively.
29
+ return this.conn.unsafe(query, values);
30
+ }
31
+ async releaseConn(conn) {
32
+ if (isReservedConnection(conn)) {
33
+ await conn.release();
34
+ }
35
+ }
36
+ }
37
+ //# sourceMappingURL=bunSqlQuerier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bunSqlQuerier.js","sourceRoot":"","sources":["../../src/bunSql/bunSqlQuerier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,EAAqB,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAExH,MAAM,OAAO,aAAc,SAAQ,mBAAgC;IAEtD;IAGS;IAJpB,YACW,GAAQ,EACjB,OAA2B,EAC3B,WAAuC,EACrB,KAAoB;QAEtC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAL1B,QAAG,GAAH,GAAG,CAAK;QAGC,UAAK,GAAL,KAAK,CAAe;IAGxC,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAI,KAAa,EAAE,MAAkB;QAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,MAAkB;QAC1D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAS,KAAK,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAEhC,kFAAkF;QAClF,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAC5B,IAAI;YACJ,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC;YAC7B,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC;YACpB,YAAY,EAAE,GAAG,CAAC,YAAY;SAC/B,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,KAAa,EAAE,MAAkB;QACxD,8FAA8F;QAC9F,+FAA+F;QAC/F,OAAO,IAAI,CAAC,IAAK,CAAC,MAAM,CAAkB,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAEkB,KAAK,CAAC,WAAW,CAAC,IAAiB;QACpD,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { SQL } from 'bun';
2
+ import type { AbstractSqlDialect } from '../dialect/index.js';
3
+ import { AbstractQuerierPool } from '../querier/index.js';
4
+ import type { ExtraOptions, SqlDialect, SqlPoolCompat } from '../type/index.js';
5
+ import { BunSqlQuerier } from './bunSqlQuerier.js';
6
+ export declare class BunSqlQuerierPool extends AbstractQuerierPool<AbstractSqlDialect, BunSqlQuerier> {
7
+ readonly config: SQL.Options;
8
+ readonly sql: SQL;
9
+ readonly sqlDialect: SqlDialect;
10
+ constructor(config: SQL.Options, extra?: ExtraOptions);
11
+ /**
12
+ * Provides a pg-compatible interface for libraries like connect-pg-simple.
13
+ * Connection release is handled automatically by Bun's native pool.
14
+ */
15
+ get pool(): SqlPoolCompat;
16
+ getQuerier(): Promise<BunSqlQuerier>;
17
+ end(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=bunSqlQuerierPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bunSqlQuerierPool.d.ts","sourceRoot":"","sources":["../../src/bunSql/bunSqlQuerierPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,GAAG,EAAE,MAAM,KAAK,CAAC;AAE5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAkB,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAShG,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD,qBAAa,iBAAkB,SAAQ,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,CAAC;IAKzF,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO;IAJ9B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;gBAGrB,MAAM,EAAE,GAAG,CAAC,OAAO,EAC5B,KAAK,CAAC,EAAE,YAAY;IAUtB;;;OAGG;IACH,IAAI,IAAI,IAAI,aAAa,CAWxB;IAEK,UAAU;IAWV,GAAG;CAGV"}
@@ -0,0 +1,58 @@
1
+ import { SQL } from 'bun';
2
+ import { CockroachDialect } from '../cockroachdb/index.js';
3
+ import { MariaDialect } from '../maria/index.js';
4
+ import { MySqlDialect } from '../mysql/index.js';
5
+ import { PostgresDialect } from '../postgres/index.js';
6
+ import { AbstractQuerierPool } from '../querier/index.js';
7
+ import { SqliteDialect } from '../sqlite/index.js';
8
+ import { getAffectedRows, inferDialect, isPoolableDialect, normalizeBunOpts, normalizeRows, } from './bunSql.util.js';
9
+ import { BunSqlQuerier } from './bunSqlQuerier.js';
10
+ const DialectMap = {
11
+ postgres: PostgresDialect,
12
+ mysql: MySqlDialect,
13
+ mariadb: MariaDialect,
14
+ sqlite: SqliteDialect,
15
+ cockroachdb: CockroachDialect,
16
+ };
17
+ export class BunSqlQuerierPool extends AbstractQuerierPool {
18
+ config;
19
+ sql;
20
+ sqlDialect;
21
+ constructor(config, extra) {
22
+ const dialect = inferDialect(config);
23
+ super(new DialectMap[dialect](extra?.namingStrategy), extra);
24
+ this.config = config;
25
+ this.sqlDialect = dialect;
26
+ const opts = normalizeBunOpts(config, dialect);
27
+ this.sql = new SQL(opts);
28
+ }
29
+ /**
30
+ * Provides a pg-compatible interface for libraries like connect-pg-simple.
31
+ * Connection release is handled automatically by Bun's native pool.
32
+ */
33
+ get pool() {
34
+ return {
35
+ query: (text, values) => this.sql.unsafe(text, this.dialectInstance.normalizeValues(values)).then((res) => ({
36
+ rows: normalizeRows(res),
37
+ rowCount: getAffectedRows(res),
38
+ })),
39
+ on: () => {
40
+ /* no-op for event listeners */
41
+ },
42
+ };
43
+ }
44
+ async getQuerier() {
45
+ const connFactory = async () => {
46
+ // Bun's SQLite adapter does not support connection reservation (it's unpooled).
47
+ if (!isPoolableDialect(this.sqlDialect)) {
48
+ return this.sql;
49
+ }
50
+ return this.sql.reserve();
51
+ };
52
+ return new BunSqlQuerier(this.sql, this.dialectInstance, connFactory, this.extra);
53
+ }
54
+ async end() {
55
+ await this.sql.close();
56
+ }
57
+ }
58
+ //# sourceMappingURL=bunSqlQuerierPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bunSqlQuerierPool.js","sourceRoot":"","sources":["../../src/bunSql/bunSqlQuerierPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAEL,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,UAAU,GAA8F;IAC5G,QAAQ,EAAE,eAAe;IACzB,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,aAAa;IACrB,WAAW,EAAE,gBAAgB;CAC9B,CAAC;AAEF,MAAM,OAAO,iBAAkB,SAAQ,mBAAsD;IAKhF;IAJF,GAAG,CAAM;IACT,UAAU,CAAa;IAEhC,YACW,MAAmB,EAC5B,KAAoB;QAEpB,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;QAJpD,WAAM,GAAN,MAAM,CAAa;QAK5B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAE1B,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,OAAO;YACL,KAAK,EAAE,CAAC,IAAY,EAAE,MAAkB,EAAE,EAAE,CAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAe,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/F,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC;gBACxB,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC;aAC/B,CAAC,CAAC;YACL,EAAE,EAAE,GAAG,EAAE;gBACP,+BAA+B;YACjC,CAAC;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC7B,gFAAgF;YAChF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC,GAAkB,CAAC;YACjC,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC,CAAC;QACF,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export * from './bunSqlQuerier.js';
2
+ export * from './bunSqlQuerierPool.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bunSql/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './bunSqlQuerier.js';
2
+ export * from './bunSqlQuerierPool.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bunSql/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
@@ -1,14 +1,9 @@
1
1
  import type { PoolClient } from 'pg';
2
- import { AbstractPoolQuerier } from '../querier/abstractPoolQuerier.js';
3
- import type { ExtraOptions, RawRow } from '../type/index.js';
2
+ import { AbstractPgQuerier } from '../postgres/abstractPgQuerier.js';
3
+ import type { CockroachDialect } from './cockroachDialect.js';
4
4
  /**
5
5
  * Querier for CockroachDB utilizing the standard `pg` PoolClient.
6
6
  */
7
- export declare class CrdbQuerier extends AbstractPoolQuerier<PoolClient> {
8
- constructor(connect: () => Promise<PoolClient>, extra?: ExtraOptions);
9
- internalAll<T>(query: string, values?: unknown[]): Promise<(T & RawRow)[]>;
10
- internalRun(query: string, values?: unknown[]): Promise<import("../type/query.js").QueryUpdateResult>;
11
- internalStream<T>(query: string, values?: unknown[]): AsyncGenerator<Awaited<T>, void, unknown>;
12
- protected releaseConn(conn: PoolClient): Promise<void>;
7
+ export declare class CrdbQuerier extends AbstractPgQuerier<PoolClient, CockroachDialect> {
13
8
  }
14
9
  //# sourceMappingURL=crdbQuerier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crdbQuerier.d.ts","sourceRoot":"","sources":["../../src/cockroachdb/crdbQuerier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI7D;;GAEG;AACH,qBAAa,WAAY,SAAQ,mBAAmB,CAAC,UAAU,CAAC;gBAClD,OAAO,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;IAIrD,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAKhD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAK5C,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;cAY1C,WAAW,CAAC,IAAI,EAAE,UAAU;CAGtD"}
1
+ {"version":3,"file":"crdbQuerier.d.ts","sourceRoot":"","sources":["../../src/cockroachdb/crdbQuerier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,qBAAa,WAAY,SAAQ,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,CAAC;CAAG"}
@@ -1,35 +1,7 @@
1
- import { AbstractPoolQuerier } from '../querier/abstractPoolQuerier.js';
2
- import { extractInsertResult } from '../util/sql.util.js';
3
- import { CockroachDialect } from './cockroachDialect.js';
1
+ import { AbstractPgQuerier } from '../postgres/abstractPgQuerier.js';
4
2
  /**
5
3
  * Querier for CockroachDB utilizing the standard `pg` PoolClient.
6
4
  */
7
- export class CrdbQuerier extends AbstractPoolQuerier {
8
- constructor(connect, extra) {
9
- super(new CockroachDialect(extra?.namingStrategy), connect, extra);
10
- }
11
- async internalAll(query, values) {
12
- const res = await this.conn.query(query, values);
13
- return res.rows;
14
- }
15
- async internalRun(query, values) {
16
- const { rowCount, rows = [] } = await this.conn.query(query, values);
17
- return extractInsertResult(rows, rowCount ?? undefined);
18
- }
19
- async *internalStream(query, values) {
20
- const { default: QueryStream } = await import('pg-query-stream');
21
- const stream = this.conn.query(new QueryStream(query, values));
22
- try {
23
- for await (const row of stream) {
24
- yield row;
25
- }
26
- }
27
- finally {
28
- stream.destroy();
29
- }
30
- }
31
- async releaseConn(conn) {
32
- await conn.release();
33
- }
5
+ export class CrdbQuerier extends AbstractPgQuerier {
34
6
  }
35
7
  //# sourceMappingURL=crdbQuerier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crdbQuerier.js","sourceRoot":"","sources":["../../src/cockroachdb/crdbQuerier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,mBAA+B;IAC9D,YAAY,OAAkC,EAAE,KAAoB;QAClE,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAI,KAAa,EAAE,MAAkB;QAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAK,CAAC,KAAK,CAAa,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,MAAkB;QAC1D,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,IAAK,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACtE,OAAO,mBAAmB,CAAC,IAAI,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;IAC1D,CAAC;IAEQ,KAAK,CAAC,CAAC,cAAc,CAAI,KAAa,EAAE,MAAkB;QACjE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAK,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,GAAQ,CAAC;YACjB,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAEkB,KAAK,CAAC,WAAW,CAAC,IAAgB;QACnD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"crdbQuerier.js","sourceRoot":"","sources":["../../src/cockroachdb/crdbQuerier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,iBAA+C;CAAG"}
@@ -1,14 +1,14 @@
1
- import { Pool, type PoolConfig } from 'pg';
2
- import { AbstractQuerierPool } from '../querier/index.js';
1
+ import { Pool, type PoolClient, type PoolConfig } from 'pg';
2
+ import { AbstractPgQuerierPool } from '../postgres/abstractPgQuerierPool.js';
3
3
  import type { ExtraOptions } from '../type/index.js';
4
+ import { CockroachDialect } from './cockroachDialect.js';
4
5
  import { CrdbQuerier } from './crdbQuerier.js';
5
6
  /**
6
7
  * QuerierPool for CockroachDB using the `pg` driver Pool.
7
8
  */
8
- export declare class CrdbQuerierPool extends AbstractQuerierPool<CrdbQuerier> {
9
+ export declare class CrdbQuerierPool extends AbstractPgQuerierPool<PoolClient, CockroachDialect, CrdbQuerier> {
9
10
  readonly pool: Pool;
10
11
  constructor(opts: PoolConfig, extra?: ExtraOptions);
11
12
  getQuerier(): Promise<CrdbQuerier>;
12
- end(): Promise<void>;
13
13
  }
14
14
  //# sourceMappingURL=crdbQuerierPool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crdbQuerierPool.d.ts","sourceRoot":"","sources":["../../src/cockroachdb/crdbQuerierPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,mBAAmB,CAAC,WAAW,CAAC;IACnE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;gBAER,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,YAAY;IAK5C,UAAU;IAIV,GAAG;CAGV"}
1
+ {"version":3,"file":"crdbQuerierPool.d.ts","sourceRoot":"","sources":["../../src/cockroachdb/crdbQuerierPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,qBAAqB,CAAC,UAAU,EAAE,gBAAgB,EAAE,WAAW,CAAC;IACnG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;gBAER,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,YAAY;IAK5C,UAAU;CAGjB"}
@@ -1,20 +1,18 @@
1
1
  import { Pool } from 'pg';
2
- import { AbstractQuerierPool } from '../querier/index.js';
2
+ import { AbstractPgQuerierPool } from '../postgres/abstractPgQuerierPool.js';
3
+ import { CockroachDialect } from './cockroachDialect.js';
3
4
  import { CrdbQuerier } from './crdbQuerier.js';
4
5
  /**
5
6
  * QuerierPool for CockroachDB using the `pg` driver Pool.
6
7
  */
7
- export class CrdbQuerierPool extends AbstractQuerierPool {
8
+ export class CrdbQuerierPool extends AbstractPgQuerierPool {
8
9
  pool;
9
10
  constructor(opts, extra) {
10
- super('cockroachdb', extra);
11
+ super(new CockroachDialect(extra?.namingStrategy), extra);
11
12
  this.pool = new Pool(opts);
12
13
  }
13
14
  async getQuerier() {
14
- return new CrdbQuerier(() => this.pool.connect(), this.extra);
15
- }
16
- async end() {
17
- await this.pool.end();
15
+ return new CrdbQuerier(() => this.pool.connect(), this.dialectInstance, this.extra);
18
16
  }
19
17
  }
20
18
  //# sourceMappingURL=crdbQuerierPool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crdbQuerierPool.js","sourceRoot":"","sources":["../../src/cockroachdb/crdbQuerierPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,mBAAgC;IAC1D,IAAI,CAAO;IAEpB,YAAY,IAAgB,EAAE,KAAoB;QAChD,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"crdbQuerierPool.js","sourceRoot":"","sources":["../../src/cockroachdb/crdbQuerierPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoC,MAAM,IAAI,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,qBAAgE;IAC1F,IAAI,CAAO;IAEpB,YAAY,IAAgB,EAAE,KAAoB;QAChD,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { AbstractSqliteQuerier } from '../sqlite/abstractSqliteQuerier.js';
2
+ import type { SqliteDialect } from '../sqlite/index.js';
2
3
  import type { ExtraOptions } from '../type/index.js';
3
4
  export interface D1Meta {
4
5
  duration?: number;
@@ -37,7 +38,7 @@ export interface D1Database {
37
38
  export declare class D1Querier extends AbstractSqliteQuerier {
38
39
  readonly db: D1Database;
39
40
  readonly extra?: ExtraOptions | undefined;
40
- constructor(db: D1Database, extra?: ExtraOptions | undefined);
41
+ constructor(db: D1Database, dialect: SqliteDialect, extra?: ExtraOptions | undefined);
41
42
  internalAll<T>(query: string, values?: unknown[]): Promise<T[]>;
42
43
  internalRun(query: string, values?: unknown[]): Promise<import("../type/query.js").QueryUpdateResult>;
43
44
  internalRelease(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"d1Querier.d.ts","sourceRoot":"","sources":["../../src/d1/d1Querier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACnC,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC;IAChD,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7B,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC5C,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7B,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED,qBAAa,SAAU,SAAQ,qBAAqB;IAEhD,QAAQ,CAAC,EAAE,EAAE,UAAU;aACL,KAAK,CAAC,EAAE,YAAY;gBAD7B,EAAE,EAAE,UAAU,EACL,KAAK,CAAC,EAAE,YAAY,YAAA;IAKzB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAOhD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAW7C,eAAe;CAG/B"}
1
+ {"version":3,"file":"d1Querier.d.ts","sourceRoot":"","sources":["../../src/d1/d1Querier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACnC,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC;IAChD,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7B,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC5C,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7B,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED,qBAAa,SAAU,SAAQ,qBAAqB;IAEhD,QAAQ,CAAC,EAAE,EAAE,UAAU;aAEL,KAAK,CAAC,EAAE,YAAY;gBAF7B,EAAE,EAAE,UAAU,EACvB,OAAO,EAAE,aAAa,EACJ,KAAK,CAAC,EAAE,YAAY,YAAA;IAKzB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAOhD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAW7C,eAAe;CAG/B"}
@@ -1,10 +1,9 @@
1
1
  import { AbstractSqliteQuerier } from '../sqlite/abstractSqliteQuerier.js';
2
- import { SqliteDialect } from '../sqlite/index.js';
3
2
  export class D1Querier extends AbstractSqliteQuerier {
4
3
  db;
5
4
  extra;
6
- constructor(db, extra) {
7
- super(new SqliteDialect(extra?.namingStrategy), extra);
5
+ constructor(db, dialect, extra) {
6
+ super(dialect, extra);
8
7
  this.db = db;
9
8
  this.extra = extra;
10
9
  }
@@ -22,7 +21,7 @@ export class D1Querier extends AbstractSqliteQuerier {
22
21
  // though the runtime meta often has it.
23
22
  const changes = res.meta?.changes ?? res.count ?? 0;
24
23
  const lastInsertRowid = res.meta?.last_row_id;
25
- return this.buildUpdateResult(changes, lastInsertRowid);
24
+ return this.buildUpdateResult({ changes, id: lastInsertRowid });
26
25
  }
27
26
  async internalRelease() {
28
27
  // no-op
@@ -1 +1 @@
1
- {"version":3,"file":"d1Querier.js","sourceRoot":"","sources":["../../src/d1/d1Querier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA0CnD,MAAM,OAAO,SAAU,SAAQ,qBAAqB;IAEvC;IACS;IAFpB,YACW,EAAc,EACL,KAAoB;QAEtC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;QAH9C,OAAE,GAAF,EAAE,CAAY;QACL,UAAK,GAAL,KAAK,CAAe;IAGxC,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAI,KAAa,EAAE,MAAkB;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAK,CAAC;QACjC,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,MAAkB;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;QAC9B,yEAAyE;QACzE,wCAAwC;QACxC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;QAC9C,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC1D,CAAC;IAEQ,KAAK,CAAC,eAAe;QAC5B,QAAQ;IACV,CAAC;CACF"}
1
+ {"version":3,"file":"d1Querier.js","sourceRoot":"","sources":["../../src/d1/d1Querier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AA2C3E,MAAM,OAAO,SAAU,SAAQ,qBAAqB;IAEvC;IAES;IAHpB,YACW,EAAc,EACvB,OAAsB,EACJ,KAAoB;QAEtC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAJb,OAAE,GAAF,EAAE,CAAY;QAEL,UAAK,GAAL,KAAK,CAAe;IAGxC,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAI,KAAa,EAAE,MAAkB;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAK,CAAC;QACjC,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,MAAkB;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;QAC9B,yEAAyE;QACzE,wCAAwC;QACxC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;QAC9C,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAClE,CAAC;IAEQ,KAAK,CAAC,eAAe;QAC5B,QAAQ;IACV,CAAC;CACF"}
@@ -1,7 +1,8 @@
1
1
  import { AbstractQuerierPool } from '../querier/index.js';
2
+ import { SqliteDialect } from '../sqlite/index.js';
2
3
  import type { ExtraOptions } from '../type/index.js';
3
4
  import { type D1Database, D1Querier } from './d1Querier.js';
4
- export declare class D1QuerierPool extends AbstractQuerierPool<D1Querier> {
5
+ export declare class D1QuerierPool extends AbstractQuerierPool<SqliteDialect, D1Querier> {
5
6
  readonly db: D1Database;
6
7
  constructor(db: D1Database, extra?: ExtraOptions);
7
8
  getQuerier(): Promise<D1Querier>;
@@ -1 +1 @@
1
- {"version":3,"file":"d1QuerierPool.d.ts","sourceRoot":"","sources":["../../src/d1/d1QuerierPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5D,qBAAa,aAAc,SAAQ,mBAAmB,CAAC,SAAS,CAAC;IAE7D,QAAQ,CAAC,EAAE,EAAE,UAAU;gBAAd,EAAE,EAAE,UAAU,EACvB,KAAK,CAAC,EAAE,YAAY;IAKhB,UAAU;IAIV,GAAG;CAGV"}
1
+ {"version":3,"file":"d1QuerierPool.d.ts","sourceRoot":"","sources":["../../src/d1/d1QuerierPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5D,qBAAa,aAAc,SAAQ,mBAAmB,CAAC,aAAa,EAAE,SAAS,CAAC;IAE5E,QAAQ,CAAC,EAAE,EAAE,UAAU;gBAAd,EAAE,EAAE,UAAU,EACvB,KAAK,CAAC,EAAE,YAAY;IAKhB,UAAU;IAIV,GAAG;CAGV"}
@@ -1,13 +1,14 @@
1
1
  import { AbstractQuerierPool } from '../querier/index.js';
2
+ import { SqliteDialect } from '../sqlite/index.js';
2
3
  import { D1Querier } from './d1Querier.js';
3
4
  export class D1QuerierPool extends AbstractQuerierPool {
4
5
  db;
5
6
  constructor(db, extra) {
6
- super('sqlite', extra);
7
+ super(new SqliteDialect(extra?.namingStrategy), extra);
7
8
  this.db = db;
8
9
  }
9
10
  async getQuerier() {
10
- return new D1Querier(this.db, this.extra);
11
+ return new D1Querier(this.db, this.dialectInstance, this.extra);
11
12
  }
12
13
  async end() {
13
14
  // no-op for D1 bindings
@@ -1 +1 @@
1
- {"version":3,"file":"d1QuerierPool.js","sourceRoot":"","sources":["../../src/d1/d1QuerierPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAmB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,OAAO,aAAc,SAAQ,mBAA8B;IAEpD;IADX,YACW,EAAc,EACvB,KAAoB;QAEpB,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAHd,OAAE,GAAF,EAAE,CAAY;IAIzB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG;QACP,wBAAwB;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"d1QuerierPool.js","sourceRoot":"","sources":["../../src/d1/d1QuerierPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAmB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,OAAO,aAAc,SAAQ,mBAA6C;IAEnE;IADX,YACW,EAAc,EACvB,KAAoB;QAEpB,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;QAH9C,OAAE,GAAF,EAAE,CAAY;IAIzB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,wBAAwB;IAC1B,CAAC;CACF"}