uql-orm 0.19.0 → 0.20.1

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 (120) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +1 -1
  3. package/dist/browser/uql-browser.min.js +2 -2
  4. package/dist/browser/uql-browser.min.js.map +3 -3
  5. package/dist/bunSql/bunSqlCockroachDialect.d.ts +1 -1
  6. package/dist/bunSql/bunSqlCockroachDialect.js +1 -1
  7. package/dist/dialect/abstractSqlDialect.d.ts +130 -58
  8. package/dist/dialect/abstractSqlDialect.d.ts.map +1 -1
  9. package/dist/dialect/abstractSqlDialect.js +226 -178
  10. package/dist/dialect/abstractSqlDialect.js.map +1 -1
  11. package/dist/dialect/jsonArrayElemMatchUtils.d.ts +5 -6
  12. package/dist/dialect/jsonArrayElemMatchUtils.d.ts.map +1 -1
  13. package/dist/dialect/jsonArrayElemMatchUtils.js +9 -19
  14. package/dist/dialect/jsonArrayElemMatchUtils.js.map +1 -1
  15. package/dist/dialect/jsonSql.d.ts +44 -0
  16. package/dist/dialect/jsonSql.d.ts.map +1 -0
  17. package/dist/dialect/jsonSql.js +57 -0
  18. package/dist/dialect/jsonSql.js.map +1 -0
  19. package/dist/dialect/mysqlLikeSqlDialect.d.ts +42 -2
  20. package/dist/dialect/mysqlLikeSqlDialect.d.ts.map +1 -1
  21. package/dist/dialect/mysqlLikeSqlDialect.js +73 -22
  22. package/dist/dialect/mysqlLikeSqlDialect.js.map +1 -1
  23. package/dist/dialect/pgLikeSqlDialect.d.ts +28 -10
  24. package/dist/dialect/pgLikeSqlDialect.d.ts.map +1 -1
  25. package/dist/dialect/pgLikeSqlDialect.js +56 -49
  26. package/dist/dialect/pgLikeSqlDialect.js.map +1 -1
  27. package/dist/dialect/queryContext.d.ts +13 -1
  28. package/dist/dialect/queryContext.d.ts.map +1 -1
  29. package/dist/dialect/queryContext.js +17 -2
  30. package/dist/dialect/queryContext.js.map +1 -1
  31. package/dist/dialect/vectorSqlDialect.d.ts +54 -0
  32. package/dist/dialect/vectorSqlDialect.d.ts.map +1 -0
  33. package/dist/dialect/vectorSqlDialect.js +70 -0
  34. package/dist/dialect/vectorSqlDialect.js.map +1 -0
  35. package/dist/entity/decorator/index-decorator.d.ts +6 -13
  36. package/dist/entity/decorator/index-decorator.d.ts.map +1 -1
  37. package/dist/entity/decorator/index-decorator.js.map +1 -1
  38. package/dist/http/handler.d.ts +5 -1
  39. package/dist/http/handler.d.ts.map +1 -1
  40. package/dist/http/handler.js.map +1 -1
  41. package/dist/maria/mariaDialect.d.ts +15 -4
  42. package/dist/maria/mariaDialect.d.ts.map +1 -1
  43. package/dist/maria/mariaDialect.js +25 -13
  44. package/dist/maria/mariaDialect.js.map +1 -1
  45. package/dist/migrate/generator/mongoSchemaGenerator.d.ts +1 -1
  46. package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -1
  47. package/dist/mongo/mongoDialect.d.ts +27 -6
  48. package/dist/mongo/mongoDialect.d.ts.map +1 -1
  49. package/dist/mongo/mongoDialect.js +107 -14
  50. package/dist/mongo/mongoDialect.js.map +1 -1
  51. package/dist/mongo/mongodbQuerier.d.ts.map +1 -1
  52. package/dist/mongo/mongodbQuerier.js +5 -4
  53. package/dist/mongo/mongodbQuerier.js.map +1 -1
  54. package/dist/mysql/mysqlDialect.d.ts +0 -1
  55. package/dist/mysql/mysqlDialect.d.ts.map +1 -1
  56. package/dist/mysql/mysqlDialect.js +0 -1
  57. package/dist/mysql/mysqlDialect.js.map +1 -1
  58. package/dist/postgres/postgresWireDriverCapabilities.d.ts +1 -1
  59. package/dist/postgres/postgresWireDriverCapabilities.js +1 -1
  60. package/dist/schema/schemaAST.d.ts.map +1 -1
  61. package/dist/schema/schemaAST.js +7 -19
  62. package/dist/schema/schemaAST.js.map +1 -1
  63. package/dist/schema/types.d.ts +1 -1
  64. package/dist/sqlite/sqliteDialect.d.ts +28 -8
  65. package/dist/sqlite/sqliteDialect.d.ts.map +1 -1
  66. package/dist/sqlite/sqliteDialect.js +65 -80
  67. package/dist/sqlite/sqliteDialect.js.map +1 -1
  68. package/dist/type/dialect.d.ts +199 -0
  69. package/dist/type/dialect.d.ts.map +1 -0
  70. package/dist/type/dialect.js +2 -0
  71. package/dist/type/dialect.js.map +1 -0
  72. package/dist/type/entity.d.ts +64 -43
  73. package/dist/type/entity.d.ts.map +1 -1
  74. package/dist/type/entity.js.map +1 -1
  75. package/dist/type/index.d.ts +5 -0
  76. package/dist/type/index.d.ts.map +1 -1
  77. package/dist/type/index.js +5 -0
  78. package/dist/type/index.js.map +1 -1
  79. package/dist/type/querier.d.ts +3 -5
  80. package/dist/type/querier.d.ts.map +1 -1
  81. package/dist/type/querier.js.map +1 -1
  82. package/dist/type/query.d.ts +5 -711
  83. package/dist/type/query.d.ts.map +1 -1
  84. package/dist/type/query.js +1 -51
  85. package/dist/type/query.js.map +1 -1
  86. package/dist/type/queryAggregate.d.ts +191 -0
  87. package/dist/type/queryAggregate.d.ts.map +1 -0
  88. package/dist/type/queryAggregate.js +39 -0
  89. package/dist/type/queryAggregate.js.map +1 -0
  90. package/dist/type/queryRaw.d.ts +35 -0
  91. package/dist/type/queryRaw.d.ts.map +1 -0
  92. package/dist/type/queryRaw.js +11 -0
  93. package/dist/type/queryRaw.js.map +1 -0
  94. package/dist/type/queryWhere.d.ts +271 -0
  95. package/dist/type/queryWhere.d.ts.map +1 -0
  96. package/dist/type/queryWhere.js +2 -0
  97. package/dist/type/queryWhere.js.map +1 -0
  98. package/dist/type/universalQuerier.d.ts +2 -1
  99. package/dist/type/universalQuerier.d.ts.map +1 -1
  100. package/dist/type/utility.d.ts +8 -1
  101. package/dist/type/utility.d.ts.map +1 -1
  102. package/dist/type/vector.d.ts +55 -0
  103. package/dist/type/vector.d.ts.map +1 -0
  104. package/dist/type/vector.js +2 -0
  105. package/dist/type/vector.js.map +1 -0
  106. package/dist/util/ansiSqlLiteral.d.ts +2 -0
  107. package/dist/util/ansiSqlLiteral.d.ts.map +1 -1
  108. package/dist/util/ansiSqlLiteral.js +5 -1
  109. package/dist/util/ansiSqlLiteral.js.map +1 -1
  110. package/dist/util/dialect.util.d.ts +5 -5
  111. package/dist/util/dialect.util.d.ts.map +1 -1
  112. package/dist/util/dialect.util.js +15 -10
  113. package/dist/util/dialect.util.js.map +1 -1
  114. package/dist/util/object.util.d.ts +12 -1
  115. package/dist/util/object.util.d.ts.map +1 -1
  116. package/dist/util/object.util.js +18 -0
  117. package/dist/util/object.util.js.map +1 -1
  118. package/dist/util/relationQuery.util.js +1 -1
  119. package/dist/util/relationQuery.util.js.map +1 -1
  120. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -4,6 +4,72 @@ 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.20.1] - 2026-07-27
8
+
9
+ ### Fixes
10
+
11
+ - **A `security: true` filter on a joined (m1/11) relation was skipped by `$populate` with no explicit `$where` on it, on every driver. ** Now we enforced unconditionally, same as an explicit `$where` already was.
12
+ - **PostgreSQL/CockroachDB: `$size` misbound its value when it wasn't the first condition in `$where`.** `{ name: 'Acme', tags: { $size: 3 } }` reused placeholder `$1` for both conditions.
13
+ - **PostgreSQL/CockroachDB: `upsertOne`/`upsertMany` bound the wrong value to the 2nd+ auto-filled `onUpdate` column omitted from the payload.**
14
+ - **SQLite/MySQL/MariaDB: a nested `$elemMatch` on an array-of-arrays field could return zero rows instead of the matching ones** (only reachable by bypassing the type system - no typed query is affected).
15
+
16
+ ## [0.20.0] - 2026-07-26
17
+
18
+ ### `$merge` renamed to `$set` (breaking)
19
+
20
+ "Merge" was misleading: the operator is a *shallow*, non-recursive key assignment (`null` stores a null, unlike RFC 7396 merge patch), and UQL already used an actual merge function - `JSON_MERGE_PRESERVE` - for `$push`. `$set` now matches MongoDB's own update `$set` and the `$unset`/`$push`/`$pull` vocabulary around it. `JsonPushFields` is renamed `JsonArrayFields` to match.
21
+
22
+ ```ts
23
+ querier.updateOneById(Company, id, { kind: { $merge: { public: 1 } } }); // before
24
+ querier.updateOneById(Company, id, { kind: { $set: { public: 1 } } }); // after
25
+ ```
26
+
27
+ ### `$pull`: remove elements from a JSON array
28
+
29
+ The counterpart to `$push` - removes every element equal to the given value, on PostgreSQL, CockroachDB, MySQL, MariaDB, SQLite and MongoDB. A `$pull` on an absent key (or `NULL` column) is a no-op: it never creates the key or nulls the document. Operators apply in a fixed order - `$pull` -> `$set` -> `$push` -> `$unset` - so `$pull` and `$push` on the same key atomically replace an element:
30
+
31
+ ```ts
32
+ await querier.updateOneById(Company, id, { kind: { $pull: { tags: 'old' }, $push: { tags: 'new' } } });
33
+ ```
34
+
35
+ ### `$push` semantics unified (breaking)
36
+
37
+ Appending to a missing key now creates the array on every dialect. Previously MariaDB's `JSON_ARRAY_APPEND` returned `NULL` for a missing path and **wrote that `NULL` back, destroying the document**; MySQL silently no-opped. Both now use `JSON_MERGE_PRESERVE`, matching PostgreSQL and SQLite's existing behavior.
38
+
39
+ ### MongoDB JSON operators (breaking)
40
+
41
+ `$set`/`$unset`/`$push`/`$pull` now map onto MongoDB's own update operators. Previously they were **written into the document as literal data** - `{ kind: { $push: { tags: 'x' } } }` stored the operator object itself. MongoDB rejects two operators on one path in a single update document, so a payload that needs it is emitted as an aggregation-pipeline update instead, composed in the same `$pull -> $set -> $push -> $unset` order the SQL dialects apply.
42
+
43
+ ### Vector indexes must declare their metric (breaking)
44
+
45
+ `distance` is now required for `hnsw`/`ivfflat`/`vector` index types, and rejected for every other type:
46
+
47
+ ```ts
48
+ @Index(['embedding'], { type: 'hnsw' }) // compile error: missing distance
49
+ @Index(['embedding'], { type: 'btree', distance: 'cosine' }) // compile error: distance on a non-vector index
50
+ @Index(['embedding'], { type: 'hnsw', distance: 'cosine' }) // ok
51
+ ```
52
+
53
+ Omitting it silently changed the generated DDL: MariaDB's `DISTANCE=` defaults to euclidean (a cosine query full-scans instead of using the index) and pgvector has no default operator class. MongoDB's `vectorSearch` is exempt (its generator emits no metric).
54
+
55
+ ### JSON dot-path and `$elemMatch` querying (fixes)
56
+
57
+ Filtering/sorting by a JSON dot-path (`{ 'kind.tags': { $size: 2 } }`) and matching array elements (`$elemMatch`) now behave consistently across all 8 drivers:
58
+
59
+ - **MySQL/MariaDB dot-paths.** MySQL's `->`/`->>` need a full `'$.path'`, not a bare key (`` `kind`->>'public' `` raised "Invalid JSON path expression"). MariaDB's `$all`/`$size`/`$elemMatch` need `JSON_EXTRACT`, not `->` (a syntax error there).
60
+ - **Typed comparisons.** A JSON scalar now compares in the representation every engine agrees on: numbers numerically, booleans as JSON, strings as text - fixes silent MySQL boolean mismatches (`'true'` vs `1`) and `operator does not exist: text = integer` on typed-parameter drivers. Applies to `$eq`/`$ne`/`$in`/`$nin`, both on dot-paths and inside `$elemMatch`.
61
+ - **`$elemMatch: { count: 5 }` and `$elemMatch: { count: { $eq: 5 } }` are now identical.** The plain-value form used to skip the numeric cast and turn `{ field: null }` into `= NULL` (which never matches).
62
+ - **MongoDB's `$elemMatch`** now translates its inner UQL operators (`$startsWith`, `$ilike`, `$between`, ...) instead of passing them straight to the server, which rejected them as unknown.
63
+
64
+ ### Fixes
65
+
66
+ - **`$includes` was case-insensitive on PostgreSQL and CockroachDB** - it rendered as `ILIKE` instead of `LIKE`, because the operator name happens to start with `$i`. `$iincludes` (the actually-case-insensitive one) is unaffected; MySQL/MariaDB/SQLite were never affected, since their `LIKE`/`ILIKE` render identically there.
67
+ - **PostgreSQL full-text search on multi-word queries**: `$text` now uses `websearch_to_tsquery` instead of `to_tsquery`, which raised `syntax error in tsquery` for input it couldn't parse (including a plain two-word search). `$text` also accepts an optional `$config` (e.g. `'english'`).
68
+ - **JSON operators on a `NOT NULL` column** no longer wrap it in `COALESCE`, keeping MySQL 9's partial in-place JSON update applicable.
69
+ - **`$unset` on PostgreSQL** removes all keys with one `- $N::text[]` (one bound parameter) instead of chaining one `-` per key.
70
+ - **`$unset` on an untyped `Json<unknown>` field** was typed `never[]` (no key could be named); it's now `string[]`.
71
+ - **JSON operators on an array payload** (`Json<T[]>`) are now a compile error - none of the four operators is meaningful on an array column (PostgreSQL's `||` would concatenate arrays, `JSON_SET(arr, '$.k', v)` is a no-op on MySQL/SQLite); replace the whole value instead.
72
+
7
73
  ## [0.19.0] - 2026-07-24
8
74
 
9
75
  ### Operators typed per field (breaking)
package/README.md CHANGED
@@ -65,7 +65,7 @@ import { Entity, Id, Field, OneToOne, OneToMany, type Relation } from 'uql-orm';
65
65
 
66
66
  @Entity()
67
67
  export class User {
68
- @Id({ type: 'uuid', onInsert: () => uuidv7() })
68
+ @Id({ type: 'uuid', onInsert: uuidv7 })
69
69
  id?: string;
70
70
 
71
71
  @Field({ index: true, unique: true })
@@ -1,4 +1,4 @@
1
- var H=[];function I(Q){for(let B of H)B(Q)}function O(Q){H.push(Q);let B=H.length-1;return()=>{H.splice(B,1)}}class f extends Error{status;constructor(Q,B){super(Q);this.status=B;this.name="RequestError"}}function z(Q,B){return $(Q,{method:"get"},B)}function A(Q,B,x){let V=JSON.stringify(B);return $(Q,{method:"post",body:V},x)}function N(Q,B,x){let V=JSON.stringify(B);return $(Q,{method:"patch",body:V},x)}function J(Q,B,x){let V=JSON.stringify(B);return $(Q,{method:"put",body:V},x)}function K(Q,B){return $(Q,{method:"delete"},B)}function Y(Q,B,x){let V=JSON.stringify(B);return $(Q,{method:"QUERY",body:V},x)}function $(Q,B,x){if(I({phase:"start",opts:x}),B.headers={accept:"application/json","content-type":"application/json",...x?.headers},x?.signal)B.signal=x.signal;return fetch(Q,B).then((V)=>V.json().then((X)=>{if(V.status>=200&&V.status<300)return I({phase:"success",opts:x}),X;let C=X,M={message:C?.error?.message??V.statusText,code:C?.error?.code??V.status};throw I({phase:"error",error:M,opts:x}),new f(M.message,M.code)})).finally(()=>{I({phase:"complete",opts:x})})}function W(Q){return Q?Object.keys(Q):[]}function T(Q){let B=Q.charAt(0).toLowerCase();for(let x=1;x<Q.length;++x)B+=Q[x]===Q[x].toUpperCase()?"-"+Q[x].toLowerCase():Q[x];return B}var Z={findMany:{method:"GET",path:""},findOne:{method:"GET",path:"/one"},count:{method:"GET",path:"/count"},findOneById:{method:"GET",path:"/:id"},insertOne:{method:"POST",path:""},insertMany:{method:"POST",path:"/many"},saveOne:{method:"PUT",path:""},saveMany:{method:"PUT",path:"/many"},updateMany:{method:"PATCH",path:""},updateOneById:{method:"PATCH",path:"/:id"},deleteOneById:{method:"DELETE",path:"/:id"},deleteMany:{method:"DELETE",path:""}},P=W(Z),h=new Map(P.filter((Q)=>Z[Q].method==="GET"&&Z[Q].path!=="/:id").map((Q)=>[Z[Q].path,Q]));function k(Q){return T(Q.name)}var _=["$select","$populate","$exclude","$where","$sort"],u=new Set([..._,"$skip","$limit","hardDelete","count"]);function G(Q){if(!Q)return"";let B=new URLSearchParams;for(let V of W(Q)){let X=Q[V];if(X===void 0)continue;B.append(V,typeof X==="object"&&X!==null?JSON.stringify(X):String(X))}let x=B.toString();return x?`?${x}`:""}class L{basePath;defaults;constructor(Q,B={}){this.basePath=Q;this.defaults=B}findOneById(Q,B,x,V){let X=this.getBasePath(Q),F=G(x);return z(`${X}/${B}${F}`,this.buildOptions(V))}findOne(Q,B,x){return this.read(`${this.getBasePath(Q)}${Z.findOne.path}`,B,x)}findMany(Q,B,x){let V={...B};if(x?.count)V.count=!0;return this.read(this.getBasePath(Q),V,x)}async findManyAndCount(Q,B,x){let V=await this.findMany(Q,B,{...x,count:!0});if(typeof V.count!=="number")throw TypeError("findManyAndCount response has an invalid count");return{...V,count:V.count}}count(Q,B,x){return this.read(`${this.getBasePath(Q)}${Z.count.path}`,B,x)}insertOne(Q,B,x){let V=this.getBasePath(Q);return A(V,B,this.buildOptions(x))}insertMany(Q,B,x){let V=this.getBasePath(Q);return A(`${V}${Z.insertMany.path}`,B,this.buildOptions(x))}updateOneById(Q,B,x,V){let X=this.getBasePath(Q);return N(`${X}/${B}`,x,this.buildOptions(V))}updateMany(Q,B,x,V){let X=this.getBasePath(Q),F=G(B);return N(`${X}${F}`,x,this.buildOptions(V))}saveOne(Q,B,x){let V=this.getBasePath(Q);return J(V,B,this.buildOptions(x))}saveMany(Q,B,x){let V=this.getBasePath(Q);return J(`${V}${Z.saveMany.path}`,B,this.buildOptions(x))}deleteOneById(Q,B,x={}){let V=this.getBasePath(Q),X=x.hardDelete?G({hardDelete:x.hardDelete}):"";return K(`${V}/${B}${X}`,this.buildOptions(x))}deleteMany(Q,B,x={}){let V=this.getBasePath(Q),X=G(x.hardDelete?{...B,hardDelete:x.hardDelete}:B);return K(`${V}${X}`,this.buildOptions(x))}getBasePath(Q){return`${this.basePath}/${k(Q)}`}read(Q,B,x){if(this.defaults.readMethod==="QUERY")return Y(Q,B??{},this.buildOptions(x));return z(`${Q}${G(B)}`,this.buildOptions(x))}buildOptions(Q){if(!this.defaults.headers&&!Q?.headers)return Q;return{...Q,headers:{...this.defaults.headers,...Q?.headers}}}}var D={getQuerier:()=>new L("/api")};function r(Q){D=Q}function j(){return D}function s(){return j().getQuerier()}export{r as setQuerierPool,K as remove,Y as query,J as put,A as post,N as patch,O as on,I as notify,j as getQuerierPool,s as getQuerier,z as get,f as RequestError,L as HttpQuerier};
1
+ var H=[];function I(Q){for(let V of H)V(Q)}function S(Q){H.push(Q);let V=H.length-1;return()=>{H.splice(V,1)}}class Y extends Error{status;constructor(Q,V){super(Q);this.status=V;this.name="RequestError"}}function M(Q,V){return x(Q,{method:"get"},V)}function A(Q,V,B){let X=JSON.stringify(V);return x(Q,{method:"post",body:X},B)}function N(Q,V,B){let X=JSON.stringify(V);return x(Q,{method:"patch",body:X},B)}function J(Q,V,B){let X=JSON.stringify(V);return x(Q,{method:"put",body:X},B)}function L(Q,V){return x(Q,{method:"delete"},V)}function K(Q,V,B){let X=JSON.stringify(V);return x(Q,{method:"QUERY",body:X},B)}function x(Q,V,B){if(I({phase:"start",opts:B}),V.headers={accept:"application/json","content-type":"application/json",...B?.headers},B?.signal)V.signal=B.signal;return fetch(Q,V).then((X)=>X.json().then((Z)=>{if(X.status>=200&&X.status<300)return I({phase:"success",opts:B}),Z;let C=Z,z={message:C?.error?.message??X.statusText,code:C?.error?.code??X.status};throw I({phase:"error",error:z,opts:B}),new Y(z.message,z.code)})).finally(()=>{I({phase:"complete",opts:B})})}function W(Q){return Q?Object.keys(Q):[]}function T(Q){let V=Q.charAt(0).toLowerCase();for(let B=1;B<Q.length;++B)V+=Q[B]===Q[B].toUpperCase()?"-"+Q[B].toLowerCase():Q[B];return V}var $={findMany:{method:"GET",path:""},findOne:{method:"GET",path:"/one"},count:{method:"GET",path:"/count"},findOneById:{method:"GET",path:"/:id"},insertOne:{method:"POST",path:""},insertMany:{method:"POST",path:"/many"},saveOne:{method:"PUT",path:""},saveMany:{method:"PUT",path:"/many"},updateMany:{method:"PATCH",path:""},updateOneById:{method:"PATCH",path:"/:id"},deleteOneById:{method:"DELETE",path:"/:id"},deleteMany:{method:"DELETE",path:""}},k=W($),v=new Map(k.filter((Q)=>$[Q].method==="GET"&&$[Q].path!=="/:id").map((Q)=>[$[Q].path,Q]));function D(Q){return T(Q.name)}var _=["$select","$populate","$exclude","$where","$sort"],u=new Set([..._,"$skip","$limit","hardDelete","count"]);function G(Q){if(!Q)return"";let V=new URLSearchParams;for(let X of W(Q)){let Z=Q[X];if(Z===void 0)continue;V.append(X,typeof Z==="object"&&Z!==null?JSON.stringify(Z):String(Z))}let B=V.toString();return B?`?${B}`:""}class f{basePath;defaults;constructor(Q,V={}){this.basePath=Q;this.defaults=V}findOneById(Q,V,B,X){let Z=this.getBasePath(Q),F=G(B);return M(`${Z}/${V}${F}`,this.buildOptions(X))}findOne(Q,V,B){return this.read(`${this.getBasePath(Q)}${$.findOne.path}`,V,B)}findMany(Q,V,B){let X={...V};if(B?.count)X.count=!0;return this.read(this.getBasePath(Q),X,B)}async findManyAndCount(Q,V,B){let X=await this.findMany(Q,V,{...B,count:!0});if(typeof X.count!=="number")throw TypeError("findManyAndCount response has an invalid count");return{...X,count:X.count}}count(Q,V,B){return this.read(`${this.getBasePath(Q)}${$.count.path}`,V,B)}insertOne(Q,V,B){let X=this.getBasePath(Q);return A(X,V,this.buildOptions(B))}insertMany(Q,V,B){let X=this.getBasePath(Q);return A(`${X}${$.insertMany.path}`,V,this.buildOptions(B))}updateOneById(Q,V,B,X){let Z=this.getBasePath(Q);return N(`${Z}/${V}`,B,this.buildOptions(X))}updateMany(Q,V,B,X){let Z=this.getBasePath(Q),F=G(V);return N(`${Z}${F}`,B,this.buildOptions(X))}saveOne(Q,V,B){let X=this.getBasePath(Q);return J(X,V,this.buildOptions(B))}saveMany(Q,V,B){let X=this.getBasePath(Q);return J(`${X}${$.saveMany.path}`,V,this.buildOptions(B))}deleteOneById(Q,V,B={}){let X=this.getBasePath(Q),Z=B.hardDelete?G({hardDelete:B.hardDelete}):"";return L(`${X}/${V}${Z}`,this.buildOptions(B))}deleteMany(Q,V,B={}){let X=this.getBasePath(Q),Z=G(B.hardDelete?{...V,hardDelete:B.hardDelete}:V);return L(`${X}${Z}`,this.buildOptions(B))}getBasePath(Q){return`${this.basePath}/${D(Q)}`}read(Q,V,B){if(this.defaults.readMethod==="QUERY")return K(Q,V??{},this.buildOptions(B));return M(`${Q}${G(V)}`,this.buildOptions(B))}buildOptions(Q){if(!this.defaults.headers&&!Q?.headers)return Q;return{...Q,headers:{...this.defaults.headers,...Q?.headers}}}}var P={getQuerier:()=>new f("/api")};function r(Q){P=Q}function c(){return P}function s(){return c().getQuerier()}export{r as setQuerierPool,L as remove,K as query,J as put,A as post,N as patch,S as on,I as notify,c as getQuerierPool,s as getQuerier,M as get,Y as RequestError,f as HttpQuerier};
2
2
 
3
- //# debugId=F94E60563512D92164756E2164756E21
3
+ //# debugId=0AC20FD4BEDEBDE564756E2164756E21
4
4
  //# sourceMappingURL=uql-browser.min.js.map
@@ -4,14 +4,14 @@
4
4
  "sourcesContent": [
5
5
  "import type { RequestCallback, RequestNotification } from '../type/index.js';\n\nconst subscriptors: RequestCallback[] = [];\n\nexport function notify(notification: RequestNotification): void {\n for (const subscriptor of subscriptors) {\n subscriptor(notification);\n }\n}\n\nexport function on(cb: RequestCallback): () => void {\n subscriptors.push(cb);\n const index = subscriptors.length - 1;\n return (): void => {\n subscriptors.splice(index, 1);\n };\n}\n",
6
6
  "import type { RequestErrorResponse, RequestSuccessResponse } from '../../http/contract.js';\nimport type { RequestOptions } from '../type/index.js';\nimport { notify } from './bus.js';\n\n/**\n * Error thrown for non-2xx responses. Carries the HTTP status so callers can key\n * behavior on it (401 redirects, 402 payment flows, error-boundary routing).\n */\nexport class RequestError extends Error {\n constructor(\n message: string,\n readonly status: number,\n ) {\n super(message);\n this.name = 'RequestError';\n }\n}\n\nexport function get<T>(url: string, opts?: RequestOptions) {\n return request<T>(url, { method: 'get' }, opts);\n}\n\nexport function post<T>(url: string, payload: unknown, opts?: RequestOptions) {\n const body = JSON.stringify(payload);\n return request<T>(url, { method: 'post', body }, opts);\n}\n\nexport function patch<T>(url: string, payload: unknown, opts?: RequestOptions) {\n const body = JSON.stringify(payload);\n return request<T>(url, { method: 'patch', body }, opts);\n}\n\nexport function put<T>(url: string, payload: unknown, opts?: RequestOptions) {\n const body = JSON.stringify(payload);\n return request<T>(url, { method: 'put', body }, opts);\n}\n\nexport function remove<T>(url: string, opts?: RequestOptions) {\n return request<T>(url, { method: 'delete' }, opts);\n}\n\n/**\n * HTTP QUERY (RFC 10008): a safe, idempotent read whose JSON query travels in the\n * request body, avoiding URL-length limits. Method name must stay uppercase\n * (fetch only normalizes the classic verbs).\n */\nexport function query<T>(url: string, payload: unknown, opts?: RequestOptions) {\n const body = JSON.stringify(payload);\n return request<T>(url, { method: 'QUERY', body }, opts);\n}\n\nfunction request<T>(url: string, init: RequestInit, opts?: RequestOptions) {\n notify({ phase: 'start', opts });\n\n init.headers = {\n accept: 'application/json',\n 'content-type': 'application/json',\n ...opts?.headers,\n };\n if (opts?.signal) {\n init.signal = opts.signal;\n }\n\n return fetch(url, init)\n .then((rawResp) =>\n rawResp.json().then((resp: unknown) => {\n const isSuccess = rawResp.status >= 200 && rawResp.status < 300;\n if (isSuccess) {\n notify({ phase: 'success', opts });\n return resp as RequestSuccessResponse<T>;\n }\n const errorResp = resp as Partial<RequestErrorResponse> | undefined;\n const error = {\n message: errorResp?.error?.message ?? rawResp.statusText,\n code: errorResp?.error?.code ?? rawResp.status,\n };\n notify({ phase: 'error', error, opts });\n throw new RequestError(error.message, error.code);\n }),\n )\n .finally(() => {\n notify({ phase: 'complete', opts });\n });\n}\n",
7
- "import type { FieldKey, FieldOptions } from '../type/index.js';\n\nexport function throwPendingTransaction(): never {\n throw TypeError('pending transaction');\n}\n\nexport function throwNoPendingTransaction(): never {\n throw TypeError('not a pending transaction');\n}\n\nexport function clone<T>(value: T): T {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map((it) => clone(it)) as T;\n }\n return { ...value };\n}\n\nexport function hasKeys(obj: unknown): boolean {\n if (typeof obj !== 'object' || obj === null) return false;\n for (const _ in obj) return true;\n return false;\n}\n\n/** Whether `obj` has at least two enumerable keys. */\nexport function hasMultipleKeys(obj: object): boolean {\n let count = 0;\n for (const _ in obj) {\n if (++count > 1) return true;\n }\n return false;\n}\n\n/**\n * Whether any enumerable key of `obj` satisfies `pred`, short-circuiting on the first match\n * without materializing a key array (unlike `Object.keys(obj).some(pred)`).\n */\nexport function someKey(obj: object, pred: (key: string) => boolean): boolean {\n for (const key in obj) {\n if (pred(key)) return true;\n }\n return false;\n}\n\nexport function getKeys<T extends object>(obj: T): (keyof T & string)[] {\n return obj ? (Object.keys(obj) as (keyof T & string)[]) : [];\n}\n\nexport function getFieldKeys<E>(\n fields: {\n [K in FieldKey<E>]?: FieldOptions;\n },\n): FieldKey<E>[] {\n return getKeys(fields).filter((field) => fields[field]!.eager ?? true);\n}\n",
7
+ "import type { FieldKey, FieldOptions } from '../type/index.js';\n\nexport function throwPendingTransaction(): never {\n throw TypeError('pending transaction');\n}\n\nexport function throwNoPendingTransaction(): never {\n throw TypeError('not a pending transaction');\n}\n\nexport function clone<T>(value: T): T {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map((it) => clone(it)) as T;\n }\n return { ...value };\n}\n\n/** Whether `obj` has at least one enumerable key. Narrows away `undefined`/`null` for callers. */\nexport function hasKeys<T>(obj: T): obj is NonNullable<T> {\n if (typeof obj !== 'object' || obj === null) return false;\n for (const _ in obj) return true;\n return false;\n}\n\n/** Whether `obj` has at least two enumerable keys. */\nexport function hasMultipleKeys(obj: object): boolean {\n let count = 0;\n for (const _ in obj) {\n if (++count > 1) return true;\n }\n return false;\n}\n\n/**\n * Whether any enumerable key of `obj` satisfies `pred`, short-circuiting on the first match\n * without materializing a key array (unlike `Object.keys(obj).some(pred)`).\n */\nexport function someKey(obj: object, pred: (key: string) => boolean): boolean {\n for (const key in obj) {\n if (pred(key)) return true;\n }\n return false;\n}\n\n/** Whether any enumerable value of `obj` satisfies `pred`, short-circuiting like {@link someKey}. */\nexport function someValue(obj: object, pred: (value: unknown) => boolean): boolean {\n return someKey(obj, (key) => pred((obj as Record<string, unknown>)[key]));\n}\n\nconst isOperatorKey = (key: string) => key.startsWith('$');\n\n/**\n * Whether `value` is a non-empty object whose keys are query/update operators (`$eq`, `$push`, ...).\n * The single source of this test: the SQL dialects, the MongoDB dialect and the `$elemMatch` walker\n * all classify operator objects with it, and they used to disagree about `{}`.\n */\nexport function isOperatorObject(value: unknown): value is Record<string, unknown> {\n return hasKeys(value) && !Array.isArray(value) && someKey(value, isOperatorKey);\n}\n\n/** Whether every key of the non-empty object `value` is an operator (no plain field names mixed in). */\nexport function isOperatorOnlyObject(value: unknown): value is Record<string, unknown> {\n return hasKeys(value) && !Array.isArray(value) && !someKey(value, (key) => !isOperatorKey(key));\n}\n\nexport function getKeys<T extends object>(obj: T): (keyof T & string)[] {\n return obj ? (Object.keys(obj) as (keyof T & string)[]) : [];\n}\n\nexport function getFieldKeys<E>(\n fields: {\n [K in FieldKey<E>]?: FieldOptions;\n },\n): FieldKey<E>[] {\n return getKeys(fields).filter((field) => fields[field]!.eager ?? true);\n}\n",
8
8
  "export function kebabCase(val: string): string {\n let resp = val.charAt(0).toLowerCase();\n for (let i = 1; i < val.length; ++i) {\n resp += val[i] === val[i].toUpperCase() ? '-' + val[i].toLowerCase() : val[i];\n }\n return resp;\n}\n\nexport function upperFirst(text: string): string {\n if (!text) return text;\n return text[0].toUpperCase() + text.slice(1);\n}\n\nexport function lowerFirst(text: string): string {\n if (!text) return text;\n return text[0].toLowerCase() + text.slice(1);\n}\n\nexport function snakeCase(val: string): string {\n if (val === null || val === undefined) return val as string;\n if (!val) return '';\n let resp = val.charAt(0).toLowerCase();\n for (let i = 1; i < val.length; ++i) {\n const char = val[i];\n const charLower = char.toLowerCase();\n if (char !== charLower && char === char.toUpperCase()) {\n resp += '_' + charLower;\n } else {\n resp += char;\n }\n }\n return resp;\n}\n\n/**\n * Convert a string to PascalCase (UpperCamelCase).\n * @example 'user_profile' -> 'UserProfile'\n * @example 'some-text' -> 'SomeText'\n */\nexport function pascalCase(str: string): string {\n if (!str) return '';\n return str\n .split(/[_\\s-]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join('');\n}\n\n/**\n * Convert a string to camelCase.\n * @example 'user_profile' -> 'userProfile'\n * @example 'SomeText' -> 'someText'\n */\nexport function camelCase(str: string): string {\n const pascal = pascalCase(str);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n}\n\n/**\n * Simple singularize function for English words.\n * @example 'users' -> 'user'\n * @example 'categories' -> 'category'\n */\nexport function singularize(name: string): string {\n if (!name) return '';\n if (name.endsWith('ies')) {\n return name.slice(0, -3) + 'y';\n }\n if (name.endsWith('ses') || name.endsWith('xes') || name.endsWith('zes')) {\n return name.slice(0, -2);\n }\n if (name.endsWith('s') && !name.endsWith('ss')) {\n return name.slice(0, -1);\n }\n return name;\n}\n\n/**\n * Simple pluralize function for English words.\n * @example 'user' -> 'users'\n * @example 'category' -> 'categories'\n */\nexport function pluralize(name: string): string {\n if (!name) return '';\n if (name.endsWith('y') && name.length > 1 && !/[aeiou]/.test(name[name.length - 2])) {\n return name.slice(0, -1) + 'ies';\n }\n if (name.endsWith('s') || name.endsWith('x') || name.endsWith('z') || name.endsWith('ch') || name.endsWith('sh')) {\n return name + 'es';\n }\n return name + 's';\n}\n",
9
9
  "import type { Type, UniversalQuerier } from '../type/index.js';\n// import from the specific util modules (not the barrel) to keep entity\n// metadata and reflect-metadata out of the browser bundle\nimport { getKeys } from '../util/object.util.js';\nimport { kebabCase } from '../util/string.util.js';\n\ntype RouteShape = {\n readonly method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n readonly path: '' | `/${string}`;\n};\n\n/**\n * Single source of truth for the CRUD-over-HTTP surface, shared by server adapters and the browser client.\n * Keys are constrained to {@link UniversalQuerier} method names, so renaming a querier method\n * (or routing a non-existent one) is a compile error.\n */\nexport const CRUD_ROUTES = {\n findMany: { method: 'GET', path: '' },\n findOne: { method: 'GET', path: '/one' },\n count: { method: 'GET', path: '/count' },\n findOneById: { method: 'GET', path: '/:id' },\n insertOne: { method: 'POST', path: '' },\n insertMany: { method: 'POST', path: '/many' },\n saveOne: { method: 'PUT', path: '' },\n saveMany: { method: 'PUT', path: '/many' },\n updateMany: { method: 'PATCH', path: '' },\n updateOneById: { method: 'PATCH', path: '/:id' },\n deleteOneById: { method: 'DELETE', path: '/:id' },\n deleteMany: { method: 'DELETE', path: '' },\n} as const satisfies Partial<Record<keyof UniversalQuerier, RouteShape>>;\n\nexport type CrudOperation = keyof typeof CRUD_ROUTES;\n\nexport type CrudRoute = (typeof CRUD_ROUTES)[CrudOperation];\n\n/**\n * `QUERY` (RFC 10008) is an alternate transport for the read operations: same semantics as the\n * GET routes, but the JSON query travels in the request body instead of the query string,\n * avoiding URL-length limits for large queries.\n */\nexport type HttpMethod = CrudRoute['method'] | 'QUERY';\n\nconst CRUD_OPS = getKeys(CRUD_ROUTES);\n\n// derived from CRUD_ROUTES (the literal-path GET routes) so the sub-paths live in exactly one place\nconst QUERY_READ_OPS: ReadonlyMap<string, CrudOperation> = new Map(\n CRUD_OPS.filter((op) => CRUD_ROUTES[op].method === 'GET' && CRUD_ROUTES[op].path !== '/:id').map((op) => [\n CRUD_ROUTES[op].path,\n op,\n ]),\n);\n\n/**\n * URL segment for an entity, e.g. `entityPath(UserProfile) === 'user-profile'`.\n */\nexport function entityPath<E>(entity: Type<E>): string {\n return kebabCase(entity.name);\n}\n\nexport type RouteMatch = {\n readonly op: CrudOperation;\n /**\n * the resolved transport method - differs from the op's canonical route method for QUERY.\n */\n readonly method: HttpMethod;\n readonly id?: string;\n};\n\n/**\n * Resolve a (method, sub-path) pair to a CRUD operation. Literal sub-paths win over `:id`.\n */\nexport function matchRoute(method: string, subPath: string | undefined): RouteMatch | undefined {\n const raw = method.toUpperCase();\n const literal = subPath === undefined ? '' : `/${subPath}`;\n if (raw === 'QUERY') {\n const op = QUERY_READ_OPS.get(literal);\n return op ? { op, method: 'QUERY' } : undefined;\n }\n // HEAD reads like GET per HTTP semantics; the server runtime omits the response body\n const verb = raw === 'HEAD' ? 'GET' : raw;\n let idOp: CrudOperation | undefined;\n for (const op of CRUD_OPS) {\n const route = CRUD_ROUTES[op];\n if (route.method !== verb) {\n continue;\n }\n if (route.path === literal) {\n return { op, method: route.method };\n }\n if (route.path === '/:id') {\n idOp = op;\n }\n }\n return idOp && subPath !== undefined ? { op: idOp, method: CRUD_ROUTES[idOp].method, id: subPath } : undefined;\n}\n\nexport type RequestSuccessResponse<E> = {\n data: E;\n count?: number;\n};\n\nexport type RequestCountedSuccessResponse<E> = RequestSuccessResponse<E> & {\n count: number;\n};\n\nexport type RequestErrorResponse = {\n readonly error: {\n readonly message: string;\n readonly code: number;\n };\n};\n\n/**\n * Map a thrown error to the wire error envelope. Honors a numeric `status` on the error\n * (e.g. hooks throwing 403), defaults to 500; `code` mirrors the HTTP status.\n */\nexport function toErrorResponse(err: unknown): { status: number; body: RequestErrorResponse } {\n const status = err instanceof Error && 'status' in err && typeof err.status === 'number' ? err.status : 500;\n const message = err instanceof Error ? err.message : 'Internal Server Error';\n return { status, body: { error: { message, code: status } } };\n}\n",
10
10
  "import type { Query, QueryOptions } from '../type/index.js';\n// specific util module (not the barrel) to keep reflect-metadata out of the browser bundle\nimport { getKeys } from '../util/object.util.js';\n\nconst JSON_QUERY_KEYS = [\n '$select',\n '$populate',\n '$exclude',\n '$where',\n '$sort',\n] as const satisfies readonly (keyof Query<unknown>)[];\n\n/**\n * Keys accepted from the wire - query structure ({@link Query}) plus the `hardDelete`/`count` scalar\n * flags. Anything else (e.g. `filters`, `context`, `$entity`) is dropped so a remote client can't\n * bypass a security filter or inject ambient context - those are server-only. The `satisfies` ties\n * every entry to a real query/option key, so a typo or a renamed option fails to compile.\n */\nconst ALLOWED_QUERY_KEYS = new Set<string>([...JSON_QUERY_KEYS, '$skip', '$limit', 'hardDelete', 'count'] satisfies (\n | keyof Query<unknown>\n | keyof Pick<QueryOptions, 'hardDelete'>\n | 'count'\n)[]);\n\n/**\n * Parse raw query-string entries (with JSON-stringified values) into a UQL query object.\n * Symmetric counterpart of {@link stringifyQuery}. Only {@link ALLOWED_QUERY_KEYS} are honored.\n */\nexport function parseQueryParams(params: Record<string, unknown> = {}): Query<unknown> {\n const query: Record<string, unknown> = {};\n for (const key of getKeys(params)) {\n if (ALLOWED_QUERY_KEYS.has(key)) {\n query[key] = params[key];\n }\n }\n\n for (const key of JSON_QUERY_KEYS) {\n const value = query[key];\n if (typeof value === 'string') {\n try {\n query[key] = JSON.parse(value);\n } catch {\n throw Object.assign(new SyntaxError(`invalid JSON in '${key}'`), { status: 400 });\n }\n }\n }\n\n query['$where'] ??= {};\n\n if (query['$skip']) {\n query['$skip'] = Number(query['$skip']);\n }\n if (query['$limit']) {\n query['$limit'] = Number(query['$limit']);\n }\n\n return query as Query<unknown>;\n}\n\n/**\n * Serialize a UQL query object into a percent-encoded query string where object values\n * are JSON-stringified. Symmetric counterpart of {@link parseQueryParams}.\n */\nexport function stringifyQuery(query?: Record<string, unknown>): string {\n if (!query) {\n return '';\n }\n const params = new URLSearchParams();\n for (const key of getKeys(query)) {\n const value = query[key];\n if (value === undefined) {\n continue;\n }\n params.append(key, typeof value === 'object' && value !== null ? JSON.stringify(value) : String(value));\n }\n const qs = params.toString();\n return qs ? `?${qs}` : '';\n}\n",
11
11
  "import {\n CRUD_ROUTES,\n entityPath,\n type HttpMethod,\n type RequestCountedSuccessResponse,\n type RequestSuccessResponse,\n} from '../../http/contract.js';\nimport { stringifyQuery } from '../../http/query.js';\nimport type { IdValue, Query, QueryOne, QueryOptions, QuerySearch, Type, UpdatePayload } from '../../type/index.js';\nimport { get, query as httpQuery, patch, post, put, remove } from '../http/index.js';\nimport type { ClientQuerier, RequestFindOptions, RequestOptions } from '../type/index.js';\n\nexport type HttpQuerierDefaults = {\n /**\n * headers sent with every request from this instance, merged under per-call headers.\n * Create one instance per request (e.g. during SSR) to scope auth headers safely.\n */\n readonly headers?: Record<string, string>;\n /**\n * transport for read queries (findOne, findMany, count). 'QUERY' (RFC 10008) sends the\n * JSON query in the request body, avoiding URL-length limits for large queries; requires\n * infrastructure (proxies, CDNs) that forwards the QUERY method. Defaults to 'GET'.\n */\n readonly readMethod?: Extract<HttpMethod, 'GET' | 'QUERY'>;\n};\n\nexport class HttpQuerier implements ClientQuerier {\n constructor(\n readonly basePath: string,\n readonly defaults: HttpQuerierDefaults = {},\n ) {}\n\n findOneById<E extends object>(\n entity: Type<E>,\n id: IdValue<E>,\n q?: QueryOne<E>,\n opts?: RequestOptions,\n ): Promise<RequestSuccessResponse<E | undefined>> {\n const basePath = this.getBasePath(entity);\n const qs = stringifyQuery(q);\n return get<E | undefined>(`${basePath}/${id}${qs}`, this.buildOptions(opts));\n }\n\n findOne<E extends object>(\n entity: Type<E>,\n q: QueryOne<E>,\n opts?: RequestOptions,\n ): Promise<RequestSuccessResponse<E | undefined>> {\n return this.read<E | undefined>(`${this.getBasePath(entity)}${CRUD_ROUTES.findOne.path}`, q, opts);\n }\n\n findMany<E extends object>(\n entity: Type<E>,\n q: Query<E>,\n opts?: RequestFindOptions,\n ): Promise<RequestSuccessResponse<E[]>> {\n const data: Query<E> & { count?: boolean } = { ...q };\n if (opts?.count) {\n data.count = true;\n }\n return this.read<E[]>(this.getBasePath(entity), data, opts);\n }\n\n async findManyAndCount<E extends object>(\n entity: Type<E>,\n q: Query<E>,\n opts?: RequestFindOptions,\n ): Promise<RequestCountedSuccessResponse<E[]>> {\n const response = await this.findMany(entity, q, { ...opts, count: true });\n if (typeof response.count !== 'number') {\n throw new TypeError('findManyAndCount response has an invalid count');\n }\n return { ...response, count: response.count };\n }\n\n count<E extends object>(entity: Type<E>, q?: QuerySearch<E>, opts?: RequestOptions) {\n return this.read<number>(`${this.getBasePath(entity)}${CRUD_ROUTES.count.path}`, q, opts);\n }\n\n insertOne<E extends object>(entity: Type<E>, payload: E, opts?: RequestOptions) {\n const basePath = this.getBasePath(entity);\n return post<IdValue<E> | undefined>(basePath, payload, this.buildOptions(opts));\n }\n\n insertMany<E extends object>(entity: Type<E>, payload: E[], opts?: RequestOptions) {\n const basePath = this.getBasePath(entity);\n return post<IdValue<E>[]>(`${basePath}${CRUD_ROUTES.insertMany.path}`, payload, this.buildOptions(opts));\n }\n\n updateOneById<E extends object>(entity: Type<E>, id: IdValue<E>, payload: UpdatePayload<E>, opts?: RequestOptions) {\n const basePath = this.getBasePath(entity);\n return patch<number>(`${basePath}/${id}`, payload, this.buildOptions(opts));\n }\n\n updateMany<E extends object>(entity: Type<E>, q: QuerySearch<E>, payload: UpdatePayload<E>, opts?: RequestOptions) {\n const basePath = this.getBasePath(entity);\n const qs = stringifyQuery(q);\n return patch<number>(`${basePath}${qs}`, payload, this.buildOptions(opts));\n }\n\n saveOne<E extends object>(entity: Type<E>, payload: E, opts?: RequestOptions) {\n const basePath = this.getBasePath(entity);\n return put<IdValue<E>>(basePath, payload, this.buildOptions(opts));\n }\n\n saveMany<E extends object>(entity: Type<E>, payload: E[], opts?: RequestOptions) {\n const basePath = this.getBasePath(entity);\n return put<IdValue<E>[]>(`${basePath}${CRUD_ROUTES.saveMany.path}`, payload, this.buildOptions(opts));\n }\n\n deleteOneById<E extends object>(entity: Type<E>, id: IdValue<E>, opts: QueryOptions & RequestOptions = {}) {\n const basePath = this.getBasePath(entity);\n const qs = opts.hardDelete ? stringifyQuery({ hardDelete: opts.hardDelete }) : '';\n return remove<number>(`${basePath}/${id}${qs}`, this.buildOptions(opts));\n }\n\n deleteMany<E extends object>(entity: Type<E>, q: QuerySearch<E>, opts: QueryOptions & RequestOptions = {}) {\n const basePath = this.getBasePath(entity);\n const qs = stringifyQuery(opts.hardDelete ? { ...q, hardDelete: opts.hardDelete } : q);\n return remove<number>(`${basePath}${qs}`, this.buildOptions(opts));\n }\n\n getBasePath<E>(entity: Type<E>) {\n return `${this.basePath}/${entityPath(entity)}`;\n }\n\n protected read<T>(path: string, q: Record<string, unknown> | undefined, opts?: RequestOptions) {\n if (this.defaults.readMethod === 'QUERY') {\n return httpQuery<T>(path, q ?? {}, this.buildOptions(opts));\n }\n return get<T>(`${path}${stringifyQuery(q)}`, this.buildOptions(opts));\n }\n\n protected buildOptions(opts?: RequestOptions): RequestOptions | undefined {\n if (!this.defaults.headers && !opts?.headers) {\n return opts;\n }\n return { ...opts, headers: { ...this.defaults.headers, ...opts?.headers } };\n }\n}\n",
12
12
  "import { HttpQuerier } from './querier/httpQuerier.js';\nimport type { ClientQuerier, ClientQuerierPool } from './type/index.js';\n\nlet defaultPool: ClientQuerierPool = {\n getQuerier: () => new HttpQuerier('/api'),\n};\n\nexport function setQuerierPool<T extends ClientQuerierPool>(pool: T) {\n defaultPool = pool;\n}\n\nexport function getQuerierPool(): ClientQuerierPool {\n return defaultPool;\n}\n\nexport function getQuerier(): ClientQuerier {\n return getQuerierPool().getQuerier();\n}\n"
13
13
  ],
14
- "mappings": "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",
15
- "debugId": "F94E60563512D92164756E2164756E21",
14
+ "mappings": "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",
15
+ "debugId": "0AC20FD4BEDEBDE564756E2164756E21",
16
16
  "names": []
17
17
  }
@@ -4,7 +4,7 @@ import type { DialectOptions } from '../dialect/abstractDialect.js';
4
4
  * CockroachDB Dialect specialization for the `bun:sql` driver, which routes CockroachDB
5
5
  * connections through its own Postgres wire-protocol implementation (see
6
6
  * `bunSql.util.ts#normalizeBunOpts`), so it needs the identical fix as {@link BunSqlPostgresDialect}:
7
- * without it, `$merge`/`$push` on a JSONB column silently produce the wrong value or throw
7
+ * without it, `$set`/`$push` on a JSONB column silently produce the wrong value or throw
8
8
  * (verified directly against a live CockroachDB instance via `bun:sql`).
9
9
  */
10
10
  export declare class BunSqlCockroachDialect extends CockroachDialect {
@@ -4,7 +4,7 @@ import { POSTGRES_WIRE_DRIVER_CAPABILITIES } from '../postgres/postgresWireDrive
4
4
  * CockroachDB Dialect specialization for the `bun:sql` driver, which routes CockroachDB
5
5
  * connections through its own Postgres wire-protocol implementation (see
6
6
  * `bunSql.util.ts#normalizeBunOpts`), so it needs the identical fix as {@link BunSqlPostgresDialect}:
7
- * without it, `$merge`/`$push` on a JSONB column silently produce the wrong value or throw
7
+ * without it, `$set`/`$push` on a JSONB column silently produce the wrong value or throw
8
8
  * (verified directly against a live CockroachDB instance via `bun:sql`).
9
9
  */
10
10
  export class BunSqlCockroachDialect extends CockroachDialect {
@@ -1,8 +1,6 @@
1
- import { type VectorCast } from '../schema/canonicalType.js';
2
- import { type EntityMeta, type FieldKey, type FieldOptions, type IsolationLevel, type JsonUpdateOp, type Query, type QueryAggMap, type QueryAggregate, type QueryComparisonOptions, type QueryConflictPaths, type QueryContext, type QueryDialect, type QueryExclude, type QueryGroupMap, type QueryHavingMap, type QueryOptions, type QueryPager, type QueryPopulate, QueryRaw, type QueryRawFnOptions, type QuerySearch, type QuerySelect, type QuerySelectOptions, type QuerySelectValue, type QuerySizeComparisonOps, type QuerySortMap, type QueryVectorSearch, type QueryWhere, type QueryWhereArray, type QueryWhereFieldOperatorMap, type QueryWhereMap, type QueryWhereOptions, type RelationOptions, type SqlDialectName, type SqlQueryDialect, type Type, type UpdatePayload, type VectorDistance } from '../type/index.js';
3
- import { type CallbackKey } from '../util/index.js';
4
- import { AbstractDialect } from './abstractDialect.js';
5
- export declare abstract class AbstractSqlDialect extends AbstractDialect implements QueryDialect, SqlQueryDialect {
1
+ import { type EntityMeta, type FieldKey, type FieldOptions, type IsolationLevel, type JsonUpdateOp, type Query, type QueryAggMap, type QueryAggregate, type QueryComparisonOptions, type QueryConflictPaths, type QueryContext, type QueryDialect, type QueryExclude, type QueryGroupMap, type QueryHavingMap, type QueryOptions, type QueryPager, type QueryPopulate, QueryRaw, type QueryRawFnOptions, type QuerySearch, type QuerySelect, type QuerySelectOptions, type QuerySelectValue, type QuerySizeComparisonOps, type QuerySortMap, type QueryWhere, type QueryWhereArray, type QueryWhereFieldOperatorMap, type QueryWhereMap, type QueryWhereOptions, type RelationOptions, type SqlDialectName, type SqlQueryDialect, type Type, type UpdatePayload } from '../type/index.js';
2
+ import { VectorSqlDialect } from './vectorSqlDialect.js';
3
+ export declare abstract class AbstractSqlDialect extends VectorSqlDialect implements QueryDialect, SqlQueryDialect {
6
4
  abstract readonly dialectName: SqlDialectName;
7
5
  abstract readonly escapeIdChar: '"' | '`';
8
6
  abstract readonly serialPrimaryKey: string;
@@ -22,11 +20,17 @@ export declare abstract class AbstractSqlDialect extends AbstractDialect impleme
22
20
  * `insertMany` splits larger batches into multiple statements based on this limit.
23
21
  */
24
22
  readonly maxBindValues: number;
25
- /** Vector index operator classes, keyed by distance metric. Partial: not every dialect supports every metric. */
26
- readonly vectorOpsClass: ReadonlyMap<VectorDistance, string> | undefined;
27
- readonly vectorExtension: string | undefined;
28
23
  getBeginTransactionStatements(isolationLevel?: IsolationLevel): string[];
29
24
  createContext(): QueryContext;
25
+ /**
26
+ * Builds SQL text in isolation via `build`, so the caller can embed it inline (e.g.
27
+ * `"col" = <text>`) instead of appending it at the end of `ctx`. The fragment binds any value
28
+ * straight into `ctx`'s own values array - shared by reference, not copied - so `addValue` numbers
29
+ * its placeholder correctly against the real query from the start; a fresh, empty array would
30
+ * instead number from `1` regardless of how many values `ctx` already has, misnumbering every
31
+ * bound value on `$n`-placeholder dialects once `ctx` isn't otherwise empty.
32
+ */
33
+ protected buildFragment(ctx: QueryContext, build: (fragmentCtx: QueryContext) => void): string;
30
34
  addValue(values: unknown[], value: unknown): string;
31
35
  /**
32
36
  * Normalizes a parameter value for the database driver.
@@ -65,6 +69,12 @@ export declare abstract class AbstractSqlDialect extends AbstractDialect impleme
65
69
  private static readonly NEGATE_OP_MAP;
66
70
  private static readonly COMPARE_OP_MAP;
67
71
  private static readonly LIKE_OP_MAP;
72
+ /**
73
+ * The case-insensitive `LIKE_OP_MAP` keys - the value is lowercased, so the comparison must use
74
+ * `ilikeExpr` (Postgres's `ILIKE`) rather than `LIKE`. `$includes` is deliberately excluded even
75
+ * though it starts with the substring `$i`: it is case-sensitive, unlike `$iincludes`.
76
+ */
77
+ private static readonly LIKE_CASE_INSENSITIVE_OPS;
68
78
  /** Builds `prefix.column` from an already-resolved field. */
69
79
  private columnWithPrefix;
70
80
  /**
@@ -82,45 +92,88 @@ export declare abstract class AbstractSqlDialect extends AbstractDialect impleme
82
92
  * Used by both `$elemMatch` and dot-notation paths.
83
93
  * All dialect-specific behavior comes from overridable methods on `this`.
84
94
  */
85
- protected buildJsonFieldCondition(ctx: QueryContext, fieldAccessor: (f: string) => string, jsonPath: string, op: string, value: unknown): string;
95
+ protected buildJsonFieldCondition(ctx: QueryContext, fieldAccessor: (f: string) => string, jsonPath: string, op: string, value: unknown, asJson?: boolean): string;
86
96
  private jsonInNin;
87
- protected jsonAll(ctx: QueryContext, jsonField: string, value: unknown): string;
88
- protected jsonSize(ctx: QueryContext, jsonField: string, value: number | QuerySizeComparisonOps): string;
89
- protected jsonElemMatch(ctx: QueryContext, jsonField: string, value: Record<string, unknown>): string;
90
- protected isJsonbOp(op: string): boolean;
91
- getComparisonKey<E>(ctx: QueryContext, entity: Type<E>, key: FieldKey<E>, { prefix }?: QueryOptions): void;
92
- sort<E>(ctx: QueryContext, entity: Type<E>, sort: QuerySortMap<E> | undefined, { prefix }: QueryOptions): void;
97
+ /** The bound operand of a JSON comparison: JSON-encoded when comparing against the JSON value. */
98
+ protected jsonOperand(ctx: QueryContext, value: unknown, asJson: boolean): string;
99
+ /**
100
+ * The left side of a comparison against a JSON scalar, cast when the operand is numeric - see
101
+ * {@link jsonCompareMode} for why each mode exists.
102
+ */
103
+ protected jsonComparand(jsonField: string, value: unknown): string;
104
+ /**
105
+ * How a JSON scalar has to be compared against `value` (or, for `$in`/`$nin`, against every element
106
+ * of it). Extracting a JSON value yields *text*, which loses the type, so each operand type is
107
+ * compared in the representation every engine agrees on:
108
+ * - `numeric` - cast the accessor. Keeps `1` equal to a stored `1.0`, which strict JSON equality
109
+ * would not, and satisfies drivers that send typed parameters (`text = integer` otherwise).
110
+ * - `json` - compare the JSON value against a JSON-encoded parameter. No cast recovers a boolean
111
+ * portably: PostgreSQL raises `text = boolean` and MySQL matches `'true'` against `1`.
112
+ * - `text` - compare as extracted, which is also what the string operators need.
113
+ *
114
+ * Mixed operand types fall back to `text`, since one comparison cannot be two shapes at once.
115
+ */
116
+ protected jsonCompareMode(value: unknown): 'json' | 'numeric' | 'text';
117
+ /** `$all`: the JSON array at `jsonField` contains every value (also serves element containment). */
118
+ protected abstract jsonAll(ctx: QueryContext, jsonField: string, value: unknown): string;
119
+ /** `$size`: the length of the JSON array at `jsonField`, compared against `value`. */
120
+ protected abstract jsonSize(ctx: QueryContext, jsonField: string, value: number | QuerySizeComparisonOps): string;
93
121
  /**
94
- * Resolve common parameters for a vector similarity ORDER BY expression.
95
- * Shared by all dialect overrides of `appendVectorSort`.
122
+ * Explodes the JSON array at `jsonField` into rows, as the `FROM` of an `EXISTS` subquery, under
123
+ * `alias` (from {@link QueryContext.nextAlias} - a fresh name per call, since `$elemMatch`/`$all`
124
+ * can recurse into this on a nested array and a fixed, reused alias would let the inner occurrence
125
+ * shadow the outer one it needs to correlate against). An empty `fields` means the elements are
126
+ * scalars, in which case `asJson` says whether they are read as JSON or as text; otherwise they
127
+ * are objects and `fields` are the keys the conditions will read (MySQL needs them upfront for its
128
+ * `JSON_TABLE` column list).
96
129
  */
97
- protected resolveVectorSortParams<E>(meta: EntityMeta<E>, key: string, search: QueryVectorSearch): {
98
- colName: string;
99
- distance: VectorDistance;
100
- field: FieldOptions | undefined;
101
- vectorCast: VectorCast;
102
- };
130
+ protected abstract jsonElemFrom(jsonField: string, fields: readonly string[], alias: string, asJson?: boolean): string;
103
131
  /**
104
- * Mapping of UQL vector distance metrics to native SQL functions.
105
- * Override in dialects that use function-call syntax (e.g. SQLite, MariaDB).
106
- * Dialects with operator-based syntax (e.g. Postgres) leave this empty and override `appendVectorSort` directly.
132
+ * References an exploded element under `alias` (the same one passed to the {@link jsonElemFrom}
133
+ * call it explodes): the element itself, or one `field` of it. `asJson` asks for the JSON-valued
134
+ * form instead of the text one - see {@link isJsonbOp} for when that matters.
107
135
  */
108
- protected readonly vectorDistanceFns: ReadonlyMap<VectorDistance, string>;
136
+ protected abstract jsonElemRef(alias: string, field?: string, asJson?: boolean): string;
109
137
  /**
110
- * Append a vector similarity function call: `fn(col, ?)`.
111
- * Used by dialects that express vector distance via SQL functions (SQLite, MariaDB).
138
+ * Whether the dialect's array containment ({@link jsonAll}) matches an object element that merely
139
+ * *includes* the given keys, as PostgreSQL's `@>` and MySQL's `JSON_CONTAINS` do. SQLite compares
140
+ * elements as whole JSON text, so it cannot express a partial match and always expands the
141
+ * per-field form below.
112
142
  */
113
- protected appendFunctionVectorSort<E>(ctx: QueryContext, meta: EntityMeta<E>, key: string, search: QueryVectorSearch, dialectName: string): void;
143
+ protected readonly jsonContainmentIsPartial: boolean;
114
144
  /**
115
- * Append a vector distance projection.
145
+ * Whether an exploded *scalar* element keeps its SQL type. SQLite's `json_each` yields JSON
146
+ * booleans as `0`/`1` integers and numbers as numbers, so such an element compares directly to a
147
+ * bound value; PostgreSQL and MySQL explode scalars to text, losing the type, so a non-string
148
+ * operand there has to compare as JSON (see {@link isJsonbOp}).
116
149
  */
117
- protected appendVectorProjection<E>(ctx: QueryContext, meta: EntityMeta<E>, key: string, search: QueryVectorSearch): void;
150
+ protected readonly jsonScalarElemKeepsType: boolean;
118
151
  /**
119
- * Append a vector similarity ORDER BY expression.
120
- * Default: auto-delegates to `appendFunctionVectorSort` when `vectorDistanceFns` has entries.
121
- * Override for operator-based syntax (e.g. PostgreSQL `<=>`, `<->` operators).
152
+ * `$elemMatch`: at least one element of the JSON array satisfies `match`. Three shapes, decided
153
+ * here so every dialect only supplies {@link jsonElemFrom} / {@link jsonElemRef}:
154
+ * - keys are operators (`{ $startsWith: 'ad' }`) - scalar elements, conditions on the element;
155
+ * - a plain object with no nested operators - containment, which is the only form an index serves;
156
+ * - otherwise - per-field conditions over the exploded objects.
157
+ */
158
+ protected jsonElemMatch(ctx: QueryContext, jsonField: string, match: Record<string, unknown>): string;
159
+ /**
160
+ * Whether the operator reads the JSON *value* instead of its text form. The array operators always
161
+ * do. Equality joins them for boolean operands, because extracting JSON as text loses the type in
162
+ * a way no cast recovers portably: PostgreSQL raises `operator does not exist: text = boolean`,
163
+ * MySQL compares `'true'` to `1` and silently matches nothing, and SQLite's `json_extract` yields
164
+ * `1`. Comparing the JSON value against a JSON-encoded parameter is exact on every dialect.
165
+ *
166
+ * Numbers stay on the text accessor with a numeric cast ({@link jsonComparand}), which keeps
167
+ * `1` equal to `1.0` - JSON equality would not.
122
168
  */
123
- protected appendVectorSort<E>(ctx: QueryContext, meta: EntityMeta<E>, key: string, search: QueryVectorSearch): void;
169
+ protected isJsonbOp(op: string, value?: unknown): boolean;
170
+ /**
171
+ * A JSON-encoded bound parameter, cast to the dialect's JSON type. Only the positional-placeholder
172
+ * dialects use this - PostgreSQL binds JSON through {@link PgLikeSqlDialect.jsonScalarParam} instead.
173
+ */
174
+ protected jsonScalarParam(ctx: QueryContext, value: unknown): string;
175
+ getComparisonKey<E>(ctx: QueryContext, entity: Type<E>, key: FieldKey<E>, { prefix }?: QueryOptions): void;
176
+ sort<E>(ctx: QueryContext, entity: Type<E>, sort: QuerySortMap<E> | undefined, { prefix }: QueryOptions): void;
124
177
  pager(ctx: QueryContext, opts: QueryPager): void;
125
178
  count<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): void;
126
179
  /** `$group` aggregate operator → SQL function name. An allowlist, not a formatter: the op key
@@ -148,32 +201,44 @@ export declare abstract class AbstractSqlDialect extends AbstractDialect impleme
148
201
  update<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, payload: UpdatePayload<E>, opts?: QueryOptions): void;
149
202
  upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[]): void;
150
203
  protected getUpsertUpdateAssignments<E>(ctx: QueryContext, meta: EntityMeta<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[], callback?: (columnName: string) => string): string;
151
- /**
152
- * Shared ON CONFLICT ... DO UPDATE / DO NOTHING ... RETURNING logic for positional-placeholder
153
- * dialects (SQLite). Uses a deferred context for update params so they follow INSERT params.
154
- * PG uses its own implementation since `$N` numbered placeholders handle param ordering natively.
155
- */
156
- protected onConflictUpsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[], insertFn: (ctx: QueryContext, entity: Type<E>, payload: E | E[]) => void): void;
157
204
  protected getUpsertConflictPathsStr<E>(meta: EntityMeta<E>, conflictPaths: QueryConflictPaths<E>): string;
158
205
  delete<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): void;
159
206
  escapeId(val: string, forbidQualified?: boolean, addDot?: boolean): string;
160
- protected getPersistables<E>(ctx: QueryContext, meta: EntityMeta<E>, payload: E | E[], callbackKey: CallbackKey): Record<string, unknown>[];
161
- protected getPersistable<E>(ctx: QueryContext, meta: EntityMeta<E>, payload: E, callbackKey: CallbackKey): Record<string, unknown>;
162
207
  protected formatPersistableValue<E>(ctx: QueryContext, field: FieldOptions | undefined, value: unknown): void;
163
208
  /**
164
- * Generate SQL for a JSONB merge and/or unset operation.
165
- * Called from `update()` when a field value has `$merge`, `$unset`, and/or `$push` operators.
166
- * Generates the full `"col" = <expression>` assignment.
209
+ * Reads `operand` as a JSON value. Passing the `?` placeholder yields the cast for a bound
210
+ * parameter, and passing an expression re-reads text as JSON - the same SQL either way, which is
211
+ * why this is one hook rather than a placeholder variant plus an expression variant.
212
+ */
213
+ protected jsonCast(operand: string): string;
214
+ /**
215
+ * Generate the full `"col" = <expression>` assignment for a JSON update operator payload.
216
+ * Called from `update()` when a field value is a {@link JsonUpdateOp}.
167
217
  *
168
- * Base implementation uses MySQL-compatible syntax with *shallow* merge semantics
169
- * (RHS top-level keys replace LHS top-level keys, matching PostgreSQL's `jsonb || jsonb`).
170
- * Override in dialect subclasses when a dialect needs different JSON function semantics.
171
- */
172
- protected getJsonCastExpr(): string;
173
- protected formatJsonUpdate<E>(ctx: QueryContext, escapedCol: string, value: JsonUpdateOp<E>): void;
174
- protected isJsonUpdateOp(value: unknown): value is JsonUpdateOp;
175
- /** Escapes a JSON key for safe interpolation into SQL string literals. */
176
- protected escapeJsonKey(key: string): string;
218
+ * Each operator wraps the expression built so far, innermost-first in the order stated on
219
+ * {@link JsonUpdateOp} (`$pull` -> `$set` -> `$push` -> `$unset`), so dialects only supply the
220
+ * four SQL fragments below. Two invariants keep every dialect consistent and keep bound values in
221
+ * step with their placeholders:
222
+ * - `$pull` is innermost and its subquery reads `escapedCol`, so its value binds exactly once.
223
+ * - Later fragments reference `expr` at most once, so a `$pull` subquery is never duplicated
224
+ * (which would bind its value twice on positional-placeholder dialects). PostgreSQL's `$push`
225
+ * is the one exception, and is safe there because its placeholders are numbered.
226
+ */
227
+ protected formatJsonUpdate(ctx: QueryContext, escapedCol: string, value: JsonUpdateOp, field?: FieldOptions): void;
228
+ /**
229
+ * Remove every element equal to the given value, per array key. Each key wraps the expression
230
+ * built so far, so dialects only supply {@link jsonPullKey} - and because every key reads
231
+ * `escapedCol` rather than the accumulated expression, values bind once, in key order.
232
+ */
233
+ protected jsonPull(ctx: QueryContext, expr: string, escapedCol: string, pull: Record<string, unknown>): string;
234
+ /** Wrap `expr` so the array at `key` no longer contains `value`. */
235
+ protected abstract jsonPullKey(ctx: QueryContext, expr: string, escapedCol: string, key: string, value: unknown): string;
236
+ /** Shallow assignment of top-level keys, matching PostgreSQL's `jsonb || jsonb`. */
237
+ protected abstract jsonSet(ctx: QueryContext, expr: string, set: Record<string, unknown>, field?: FieldOptions): string;
238
+ /** Append one value per array key, creating the array when the key is absent. */
239
+ protected abstract jsonPush(ctx: QueryContext, expr: string, push: Record<string, unknown>): string;
240
+ /** Remove object keys. */
241
+ protected abstract jsonUnset(ctx: QueryContext, expr: string, unset: readonly string[]): string;
177
242
  getRawValue(ctx: QueryContext, opts: QueryRawFnOptions & {
178
243
  value: QueryRaw;
179
244
  autoPrefixAlias?: boolean;
@@ -185,7 +250,6 @@ export declare abstract class AbstractSqlDialect extends AbstractDialect impleme
185
250
  * @returns resolved metadata or `undefined` if the key is not a JSON dot-notation path
186
251
  */
187
252
  protected resolveJsonDotPath<E>(meta: EntityMeta<E>, key: string, prefix?: string): {
188
- root: string;
189
253
  jsonPath: string;
190
254
  accessor: (asJsonb?: boolean) => string;
191
255
  } | undefined;
@@ -213,6 +277,13 @@ export declare abstract class AbstractSqlDialect extends AbstractDialect impleme
213
277
  * Filter by relation using an EXISTS subquery.
214
278
  * Supports all cardinalities: mm (via junction), 1m, m1, and 11.
215
279
  */
280
+ /**
281
+ * The parent side of a relation-filtering subquery: its table name, escaped id reference, and a
282
+ * guard against a relation with no configured references. Shared by
283
+ * `compareRelation`/`compareRelationSize`. `rel.references` is asserted non-null at call sites
284
+ * relying on this guard, since the check lives here instead of in the caller's own scope.
285
+ */
286
+ private resolveRelationParent;
216
287
  protected compareRelation<E>(ctx: QueryContext, entity: Type<E>, key: string, val: QueryWhereMap<unknown>, rel: RelationOptions, opts: QueryComparisonOptions): void;
217
288
  /**
218
289
  * Filter by relation size using a `COUNT(*)` subquery.
@@ -229,7 +300,8 @@ export declare abstract class AbstractSqlDialect extends AbstractDialect impleme
229
300
  * Append a single size comparison operator and value to the context.
230
301
  */
231
302
  private appendSizeOp;
232
- abstract escape(value: unknown): string;
303
+ /** ANSI-style single-quote escaping. MySQL-family dialects override this for backslash escaping. */
304
+ escape(value: unknown): string;
233
305
  protected get regexpOp(): string;
234
306
  protected get likeFn(): string;
235
307
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"abstractSqlDialect.d.ts","sourceRoot":"","sources":["../../src/dialect/abstractSqlDialect.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,EAEjB,KAAK,cAAc,EACnB,KAAK,YAAY,EAEjB,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,cAAc,EAGnB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EAInB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,QAAQ,EACR,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE3B,KAAK,YAAY,EAEjB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAGtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAKL,KAAK,WAAW,EAqBjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,8BAAsB,kBAAmB,SAAQ,eAAgB,YAAW,YAAY,EAAE,eAAe;IAEvG,kBAA2B,WAAW,EAAE,cAAc,CAAC;IAEvD,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,GAAG,GAAG,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAClD,QAAQ,CAAC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IACnD,QAAQ,CAAC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAErD,QAAQ,CAAC,sBAAsB,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAY;IAE7E,QAAQ,CAAC,mBAAmB,EAAE,kBAAkB,GAAG,kBAAkB,CAAsB;IAE3F,QAAQ,CAAC,iBAAiB,EAAE,cAAc,GAAG,eAAe,GAAG,MAAM,CAAkB;IAEvF,QAAQ,CAAC,oBAAoB,EAAE,iBAAiB,GAAG,kBAAkB,CAAqB;IAE1F,QAAQ,CAAC,eAAe,EAAE,UAAU,GAAG,YAAY,CAAgB;IAEnE,QAAQ,CAAC,iBAAiB,EAAE,cAAc,GAAG,aAAa,CAAiB;IAE3E,QAAQ,CAAC,cAAc,EAAE,QAAQ,GAAG,SAAS,CAAY;IAEzD;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAS;IAEvC,iHAAiH;IACjH,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,SAAS,CAAa;IAErF,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAa;IAEzD,6BAA6B,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CAWvE;IAED,aAAa,IAAI,YAAY,CAE5B;IAED,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAGlD;IAED;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAWtC;IAED;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE,GAAG,SAAS,CAEpE;IAED,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElC;IAED,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAKtC;IAED,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAE,KAAK,CAAC,CAAC,CAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,IAAI,CAU7F;IAED,YAAY,CAAC,CAAC,EACZ,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,EACvC,IAAI,GAAE,kBAAuB,EAC7B,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACxB,IAAI,CAyDN;IAED,MAAM,CAAC,CAAC,EACN,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,EACvC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAC3B,IAAI,GAAE,YAAiB,EACvB,QAAQ,CAAC,EAAE,OAAO,EAClB,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACrB,IAAI,CAuBN;IAED,OAAO,CAAC,0BAA0B;IAUlC,SAAS,CAAC,oBAAoB,CAAC,CAAC,EAC9B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,EAClC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,EACtC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAC7B,IAAI,CAYN;IAED,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAC7B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,EAClC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,EACtC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAC7B,IAAI,CAkCN;IAED;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAkC/B,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,UAAU,CAAC,CAAC,CAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,IAAI,CAK1G;IAED,4GAA4G;IAC5G,SAAS,CAAC,WAAW,CAAC,CAAC,EACrB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,KAAK,GAAE,UAAU,CAAC,CAAC,CAAM,EACzB,IAAI,GAAE,iBAAsB,GAC3B,IAAI,CAsCN;IAED,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,GAAE,sBAA2B,GAAG,IAAI,CA8FjH;IAED,SAAS,CAAC,sBAAsB,CAAC,CAAC,EAChC,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,EACrC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,EACvB,IAAI,EAAE,sBAAsB,GAC3B,IAAI,CAiCN;IAED,uEAAuE;IACvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAGlC;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAKnC;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAShC;IAEH,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB;IAMxB;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAC7B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,YAAY,GACjB,MAAM,GAAG,SAAS,CAUpB;IAED,OAAO,CAAC,cAAc;IAItB,oBAAoB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,0BAA0B,CAAC,CAAC,CAAC,EACnE,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAChB,EAAE,EAAE,CAAC,EACL,GAAG,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrC,IAAI,GAAE,YAAiB,GACtB,IAAI,CA2DN;IAED,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,WAAW;IAInB;;;;OAIG;IACH,SAAS,CAAC,uBAAuB,CAC/B,GAAG,EAAE,YAAY,EACjB,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EACpC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,GACb,MAAM,CA8CR;IAED,OAAO,CAAC,SAAS;IAIjB,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAE9E;IAED,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,sBAAsB,GAAG,MAAM,CAEvG;IAED,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAEpG;IAED,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEvC;IAED,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAE,YAAiB,GAAG,IAAI,CAgB7G;IAED,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,YAAY,GAAG,IAAI,CAwD7G;IAED;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,CAAC,EACjC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,GACxB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAMxG;IAED;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAa;IAEtF;;;OAGG;IACH,SAAS,CAAC,wBAAwB,CAAC,CAAC,EAClC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,MAAM,GAClB,IAAI,CAcN;IAED;;OAEG;IACH,SAAS,CAAC,sBAAsB,CAAC,CAAC,EAChC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,GACxB,IAAI,CAGN;IAED;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAMlH;IAED,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAO/C;IAED,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAKzF;IAED;;6CAEyC;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAMrC;IAEH,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAC/D,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC1B,IAAI,GAAE,YAAiB,GACtB,IAAI,CA8CN;IAED;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAU9G;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAKvC;IAEH,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAOhC;IAEH,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAgClG;IAED,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAE,KAAK,CAAC,CAAC,CAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAGvF;IAED,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CA6BzF;IAED;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAE5F;IAED,MAAM,CAAC,CAAC,EACN,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EACjB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,IAAI,CAAC,EAAE,YAAY,GAClB,IAAI,CAyBN;IAED,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAqB1G;IAED,SAAS,CAAC,0BAA0B,CAAC,CAAC,EACpC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,EACpC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAChB,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GACxC,MAAM,CAmBR;IAED;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAC1B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,EACpC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,GACvE,IAAI,CAeN;IAED,SAAS,CAAC,yBAAyB,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,CAQxG;IAED,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,GAAE,YAAiB,GAAG,IAAI,CAqB9F;IAED,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAEzE;IAED,SAAS,CAAC,eAAe,CAAC,CAAC,EACzB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAChB,WAAW,EAAE,WAAW,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAG3B;IAED,SAAS,CAAC,cAAc,CAAC,CAAC,EACxB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,CAAC,EACV,WAAW,EAAE,WAAW,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;IAED,SAAS,CAAC,sBAAsB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAc5G;IAED;;;;;;;;OAQG;IACH,SAAS,CAAC,eAAe,IAAI,MAAM,CAElC;IAED,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CA0BjG;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAE9D;IAED,0EAA0E;IAC1E,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;IAED,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,GAAG;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,QAsBtG;IAED;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAC5B,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,GAEb;QACE,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;KACzC,GACD,SAAS,CAmBZ;IAED;;;OAGG;IACH,SAAS,CAAC,eAAe,CACvB,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;KACzC,EACD,GAAG,EAAE,OAAO,GACX,IAAI,CAoBN;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ/E;IAED,SAAS,CAAC,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO9E;IAED;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,EACzB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,EAC3B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,sBAAsB,GAC3B,IAAI,CA4DN;IAED;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAC7B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAAG,sBAAsB,EACxC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,sBAAsB,GAC3B,IAAI,CAqCN;IAED;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAC3B,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,IAAI,EACtB,OAAO,EAAE,MAAM,GAAG,sBAAsB,GACvC,IAAI,CAyBN;IAED;;OAEG;IACH,OAAO,CAAC,YAAY;IAuCpB,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAExC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;IAED,SAAS,KAAK,MAAM,IAAI,MAAM,CAE7B;IAED;;;OAGG;IACH,SAAS,KAAK,IAAI,IAAI,MAAM,CAE3B;IAED,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAElD;IAED,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjD;IAED;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAIhF;IAED,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1C;IAEQ,QAAQ,IAAI,MAAM,CAE1B;CACF"}
1
+ {"version":3,"file":"abstractSqlDialect.d.ts","sourceRoot":"","sources":["../../src/dialect/abstractSqlDialect.ts"],"names":[],"mappings":"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"}