uql-orm 0.6.1 → 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 (152) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +2 -1
  3. package/dist/browser/uql-browser.min.js +0 -1695
  4. package/dist/browser/uql-browser.min.js.map +1 -1
  5. package/dist/bunSql/bunSql.util.d.ts +30 -0
  6. package/dist/bunSql/bunSql.util.d.ts.map +1 -0
  7. package/dist/bunSql/bunSql.util.js +91 -0
  8. package/dist/bunSql/bunSql.util.js.map +1 -0
  9. package/dist/bunSql/bunSqlQuerier.d.ts +14 -0
  10. package/dist/bunSql/bunSqlQuerier.d.ts.map +1 -0
  11. package/dist/bunSql/bunSqlQuerier.js +37 -0
  12. package/dist/bunSql/bunSqlQuerier.js.map +1 -0
  13. package/dist/bunSql/bunSqlQuerierPool.d.ts +19 -0
  14. package/dist/bunSql/bunSqlQuerierPool.d.ts.map +1 -0
  15. package/dist/bunSql/bunSqlQuerierPool.js +58 -0
  16. package/dist/bunSql/bunSqlQuerierPool.js.map +1 -0
  17. package/dist/bunSql/index.d.ts +3 -0
  18. package/dist/bunSql/index.d.ts.map +1 -0
  19. package/dist/bunSql/index.js +3 -0
  20. package/dist/bunSql/index.js.map +1 -0
  21. package/dist/cockroachdb/crdbQuerier.d.ts +3 -8
  22. package/dist/cockroachdb/crdbQuerier.d.ts.map +1 -1
  23. package/dist/cockroachdb/crdbQuerier.js +2 -30
  24. package/dist/cockroachdb/crdbQuerier.js.map +1 -1
  25. package/dist/cockroachdb/crdbQuerierPool.d.ts +4 -4
  26. package/dist/cockroachdb/crdbQuerierPool.d.ts.map +1 -1
  27. package/dist/cockroachdb/crdbQuerierPool.js +5 -7
  28. package/dist/cockroachdb/crdbQuerierPool.js.map +1 -1
  29. package/dist/d1/d1Querier.d.ts +2 -1
  30. package/dist/d1/d1Querier.d.ts.map +1 -1
  31. package/dist/d1/d1Querier.js +3 -4
  32. package/dist/d1/d1Querier.js.map +1 -1
  33. package/dist/d1/d1QuerierPool.d.ts +2 -1
  34. package/dist/d1/d1QuerierPool.d.ts.map +1 -1
  35. package/dist/d1/d1QuerierPool.js +3 -2
  36. package/dist/d1/d1QuerierPool.js.map +1 -1
  37. package/dist/dialect/abstractDialect.d.ts +1 -0
  38. package/dist/dialect/abstractDialect.d.ts.map +1 -1
  39. package/dist/dialect/abstractDialect.js +3 -0
  40. package/dist/dialect/abstractDialect.js.map +1 -1
  41. package/dist/dialect/abstractSqlDialect.d.ts +57 -52
  42. package/dist/dialect/abstractSqlDialect.d.ts.map +1 -1
  43. package/dist/dialect/abstractSqlDialect.js +194 -142
  44. package/dist/dialect/abstractSqlDialect.js.map +1 -1
  45. package/dist/dialect/dialectConfig.d.ts +19 -8
  46. package/dist/dialect/dialectConfig.d.ts.map +1 -1
  47. package/dist/dialect/dialectConfig.js +6 -0
  48. package/dist/dialect/dialectConfig.js.map +1 -1
  49. package/dist/dialect/mysqlLikeSqlDialect.d.ts +3 -5
  50. package/dist/dialect/mysqlLikeSqlDialect.d.ts.map +1 -1
  51. package/dist/dialect/mysqlLikeSqlDialect.js +12 -24
  52. package/dist/dialect/mysqlLikeSqlDialect.js.map +1 -1
  53. package/dist/dialect/queryContext.js +1 -1
  54. package/dist/dialect/queryContext.js.map +1 -1
  55. package/dist/express/querierMiddleware.d.ts.map +1 -1
  56. package/dist/express/querierMiddleware.js +13 -20
  57. package/dist/express/querierMiddleware.js.map +1 -1
  58. package/dist/libsql/libsqlQuerier.d.ts +2 -1
  59. package/dist/libsql/libsqlQuerier.d.ts.map +1 -1
  60. package/dist/libsql/libsqlQuerier.js +3 -4
  61. package/dist/libsql/libsqlQuerier.js.map +1 -1
  62. package/dist/libsql/libsqlQuerierPool.d.ts +2 -1
  63. package/dist/libsql/libsqlQuerierPool.d.ts.map +1 -1
  64. package/dist/libsql/libsqlQuerierPool.js +3 -2
  65. package/dist/libsql/libsqlQuerierPool.js.map +1 -1
  66. package/dist/maria/mariaDialect.d.ts +2 -4
  67. package/dist/maria/mariaDialect.d.ts.map +1 -1
  68. package/dist/maria/mariaDialect.js +1 -5
  69. package/dist/maria/mariaDialect.js.map +1 -1
  70. package/dist/maria/mariadbQuerier.d.ts +2 -1
  71. package/dist/maria/mariadbQuerier.d.ts.map +1 -1
  72. package/dist/maria/mariadbQuerier.js +4 -6
  73. package/dist/maria/mariadbQuerier.js.map +1 -1
  74. package/dist/maria/mariadbQuerierPool.d.ts +2 -1
  75. package/dist/maria/mariadbQuerierPool.d.ts.map +1 -1
  76. package/dist/maria/mariadbQuerierPool.js +3 -2
  77. package/dist/maria/mariadbQuerierPool.js.map +1 -1
  78. package/dist/mongo/mongodbQuerierPool.d.ts +2 -1
  79. package/dist/mongo/mongodbQuerierPool.d.ts.map +1 -1
  80. package/dist/mongo/mongodbQuerierPool.js +2 -3
  81. package/dist/mongo/mongodbQuerierPool.js.map +1 -1
  82. package/dist/mysql/mysql2Querier.d.ts +2 -1
  83. package/dist/mysql/mysql2Querier.d.ts.map +1 -1
  84. package/dist/mysql/mysql2Querier.js +7 -11
  85. package/dist/mysql/mysql2Querier.js.map +1 -1
  86. package/dist/mysql/mysql2QuerierPool.d.ts +2 -1
  87. package/dist/mysql/mysql2QuerierPool.d.ts.map +1 -1
  88. package/dist/mysql/mysql2QuerierPool.js +3 -2
  89. package/dist/mysql/mysql2QuerierPool.js.map +1 -1
  90. package/dist/neon/neonQuerier.d.ts +3 -7
  91. package/dist/neon/neonQuerier.d.ts.map +1 -1
  92. package/dist/neon/neonQuerier.js +2 -18
  93. package/dist/neon/neonQuerier.js.map +1 -1
  94. package/dist/neon/neonQuerierPool.d.ts +4 -4
  95. package/dist/neon/neonQuerierPool.d.ts.map +1 -1
  96. package/dist/neon/neonQuerierPool.js +5 -7
  97. package/dist/neon/neonQuerierPool.js.map +1 -1
  98. package/dist/postgres/abstractPgQuerier.d.ts +18 -0
  99. package/dist/postgres/abstractPgQuerier.d.ts.map +1 -0
  100. package/dist/postgres/abstractPgQuerier.js +33 -0
  101. package/dist/postgres/abstractPgQuerier.js.map +1 -0
  102. package/dist/postgres/abstractPgQuerierPool.d.ts +15 -0
  103. package/dist/postgres/abstractPgQuerierPool.d.ts.map +1 -0
  104. package/dist/postgres/abstractPgQuerierPool.js +10 -0
  105. package/dist/postgres/abstractPgQuerierPool.js.map +1 -0
  106. package/dist/postgres/pgQuerier.d.ts +3 -8
  107. package/dist/postgres/pgQuerier.d.ts.map +1 -1
  108. package/dist/postgres/pgQuerier.js +2 -30
  109. package/dist/postgres/pgQuerier.js.map +1 -1
  110. package/dist/postgres/pgQuerierPool.d.ts +6 -6
  111. package/dist/postgres/pgQuerierPool.d.ts.map +1 -1
  112. package/dist/postgres/pgQuerierPool.js +7 -9
  113. package/dist/postgres/pgQuerierPool.js.map +1 -1
  114. package/dist/postgres/postgresDialect.d.ts +6 -16
  115. package/dist/postgres/postgresDialect.d.ts.map +1 -1
  116. package/dist/postgres/postgresDialect.js +49 -72
  117. package/dist/postgres/postgresDialect.js.map +1 -1
  118. package/dist/querier/abstractQuerierPool.d.ts +5 -3
  119. package/dist/querier/abstractQuerierPool.d.ts.map +1 -1
  120. package/dist/querier/abstractQuerierPool.js +6 -3
  121. package/dist/querier/abstractQuerierPool.js.map +1 -1
  122. package/dist/querier/abstractSqlQuerier.d.ts +5 -0
  123. package/dist/querier/abstractSqlQuerier.d.ts.map +1 -1
  124. package/dist/querier/abstractSqlQuerier.js +15 -5
  125. package/dist/querier/abstractSqlQuerier.js.map +1 -1
  126. package/dist/sqlite/abstractSqliteQuerier.d.ts +0 -2
  127. package/dist/sqlite/abstractSqliteQuerier.d.ts.map +1 -1
  128. package/dist/sqlite/abstractSqliteQuerier.js +0 -9
  129. package/dist/sqlite/abstractSqliteQuerier.js.map +1 -1
  130. package/dist/sqlite/sqliteDialect.d.ts +6 -20
  131. package/dist/sqlite/sqliteDialect.d.ts.map +1 -1
  132. package/dist/sqlite/sqliteDialect.js +20 -33
  133. package/dist/sqlite/sqliteDialect.js.map +1 -1
  134. package/dist/sqlite/sqliteQuerier.d.ts +2 -1
  135. package/dist/sqlite/sqliteQuerier.d.ts.map +1 -1
  136. package/dist/sqlite/sqliteQuerier.js +3 -4
  137. package/dist/sqlite/sqliteQuerier.js.map +1 -1
  138. package/dist/sqlite/sqliteQuerierPool.d.ts +2 -1
  139. package/dist/sqlite/sqliteQuerierPool.d.ts.map +1 -1
  140. package/dist/sqlite/sqliteQuerierPool.js +3 -2
  141. package/dist/sqlite/sqliteQuerierPool.js.map +1 -1
  142. package/dist/type/querierPool.d.ts +16 -0
  143. package/dist/type/querierPool.d.ts.map +1 -1
  144. package/dist/type/query.d.ts +8 -3
  145. package/dist/type/query.d.ts.map +1 -1
  146. package/dist/type/utility.d.ts +4 -0
  147. package/dist/type/utility.d.ts.map +1 -1
  148. package/dist/util/sql.util.d.ts +26 -3
  149. package/dist/util/sql.util.d.ts.map +1 -1
  150. package/dist/util/sql.util.js +51 -9
  151. package/dist/util/sql.util.js.map +1 -1
  152. package/package.json +6 -5
package/CHANGELOG.md CHANGED
@@ -4,6 +4,27 @@ 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
+
7
28
  ## [0.6.1] - 2026-03-18
8
29
  ### Chore
9
30
  - **Documentation**: Improve intro of readme.md
package/README.md CHANGED
@@ -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(