kysely 0.16.11 → 0.17.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 (198) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/dialect/mysql/mysql-adapter.js +3 -4
  3. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +19 -0
  4. package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -1
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +3 -2
  6. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -1
  7. package/dist/cjs/driver/connection-provider.d.ts +1 -1
  8. package/dist/cjs/driver/default-connection-provider.d.ts +1 -1
  9. package/dist/cjs/driver/default-connection-provider.js +2 -2
  10. package/dist/cjs/driver/dummy-driver.d.ts +8 -0
  11. package/dist/cjs/driver/dummy-driver.js +8 -0
  12. package/dist/cjs/driver/single-connection-provider.d.ts +1 -1
  13. package/dist/cjs/driver/single-connection-provider.js +2 -2
  14. package/dist/cjs/index-nodeless.d.ts +2 -0
  15. package/dist/cjs/index-nodeless.js +2 -0
  16. package/dist/cjs/kysely.d.ts +3 -6
  17. package/dist/cjs/kysely.js +30 -41
  18. package/dist/cjs/migration/migrator.js +4 -4
  19. package/dist/cjs/operation-node/operation-node-transformer.js +1 -1
  20. package/dist/cjs/operation-node/raw-node.d.ts +4 -2
  21. package/dist/cjs/operation-node/raw-node.js +8 -2
  22. package/dist/cjs/parser/complex-expression-parser.d.ts +5 -5
  23. package/dist/cjs/parser/complex-expression-parser.js +5 -4
  24. package/dist/cjs/parser/filter-parser.d.ts +9 -9
  25. package/dist/cjs/parser/filter-parser.js +31 -30
  26. package/dist/cjs/parser/group-by-parser.d.ts +1 -2
  27. package/dist/cjs/parser/group-by-parser.js +2 -2
  28. package/dist/cjs/parser/insert-values-parser.d.ts +1 -2
  29. package/dist/cjs/parser/insert-values-parser.js +6 -6
  30. package/dist/cjs/parser/join-parser.d.ts +1 -2
  31. package/dist/cjs/parser/join-parser.js +8 -7
  32. package/dist/cjs/parser/order-by-parser.d.ts +1 -2
  33. package/dist/cjs/parser/order-by-parser.js +4 -4
  34. package/dist/cjs/parser/parse-utils.d.ts +10 -0
  35. package/dist/cjs/parser/parse-utils.js +38 -0
  36. package/dist/cjs/parser/reference-parser.d.ts +2 -3
  37. package/dist/cjs/parser/reference-parser.js +5 -5
  38. package/dist/cjs/parser/select-parser.d.ts +1 -2
  39. package/dist/cjs/parser/select-parser.js +5 -5
  40. package/dist/cjs/parser/table-parser.d.ts +2 -3
  41. package/dist/cjs/parser/table-parser.js +5 -5
  42. package/dist/cjs/parser/update-set-parser.d.ts +1 -2
  43. package/dist/cjs/parser/update-set-parser.js +2 -2
  44. package/dist/cjs/parser/value-parser.d.ts +3 -4
  45. package/dist/cjs/parser/value-parser.js +7 -7
  46. package/dist/cjs/parser/with-parser.d.ts +1 -2
  47. package/dist/cjs/parser/with-parser.js +3 -2
  48. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +2 -1
  49. package/dist/cjs/query-builder/delete-query-builder.d.ts +34 -23
  50. package/dist/cjs/query-builder/delete-query-builder.js +15 -15
  51. package/dist/cjs/query-builder/expression-builder.d.ts +4 -13
  52. package/dist/cjs/query-builder/expression-builder.js +12 -21
  53. package/dist/cjs/query-builder/function-builder.d.ts +2 -6
  54. package/dist/cjs/query-builder/function-builder.js +5 -8
  55. package/dist/cjs/query-builder/insert-query-builder.d.ts +12 -8
  56. package/dist/cjs/query-builder/insert-query-builder.js +8 -7
  57. package/dist/cjs/query-builder/join-builder.d.ts +0 -2
  58. package/dist/cjs/query-builder/join-builder.js +8 -8
  59. package/dist/cjs/query-builder/on-conflict-builder.d.ts +46 -28
  60. package/dist/cjs/query-builder/on-conflict-builder.js +17 -17
  61. package/dist/cjs/query-builder/returning-interface.d.ts +3 -1
  62. package/dist/cjs/query-builder/select-query-builder.d.ts +52 -33
  63. package/dist/cjs/query-builder/select-query-builder.js +28 -26
  64. package/dist/cjs/query-builder/update-query-builder.d.ts +41 -28
  65. package/dist/cjs/query-builder/update-query-builder.js +22 -20
  66. package/dist/cjs/query-builder/where-interface.d.ts +31 -20
  67. package/dist/cjs/query-compiler/default-query-compiler.js +1 -1
  68. package/dist/cjs/query-creator.d.ts +10 -129
  69. package/dist/cjs/query-creator.js +5 -136
  70. package/dist/cjs/query-executor/default-query-executor.d.ts +21 -7
  71. package/dist/cjs/query-executor/default-query-executor.js +17 -19
  72. package/dist/cjs/query-executor/noop-query-executor.d.ts +20 -6
  73. package/dist/cjs/query-executor/noop-query-executor.js +11 -4
  74. package/dist/cjs/query-executor/query-executor-base.d.ts +62 -0
  75. package/dist/cjs/query-executor/query-executor-base.js +46 -0
  76. package/dist/cjs/query-executor/query-executor-provider.d.ts +8 -0
  77. package/dist/cjs/query-executor/query-executor-provider.js +2 -0
  78. package/dist/cjs/query-executor/query-executor.d.ts +20 -13
  79. package/dist/cjs/query-executor/query-executor.js +0 -57
  80. package/dist/cjs/raw-builder/raw-builder.d.ts +42 -11
  81. package/dist/cjs/raw-builder/raw-builder.js +55 -56
  82. package/dist/cjs/raw-builder/sql.d.ts +331 -0
  83. package/dist/cjs/raw-builder/sql.js +161 -0
  84. package/dist/cjs/schema/alter-table-builder.d.ts +42 -8
  85. package/dist/cjs/schema/alter-table-builder.js +20 -0
  86. package/dist/cjs/schema/column-definition-builder.d.ts +22 -8
  87. package/dist/cjs/schema/create-index-builder.d.ts +3 -1
  88. package/dist/cjs/schema/create-index-builder.js +3 -1
  89. package/dist/cjs/schema/create-table-builder.d.ts +7 -3
  90. package/dist/cjs/schema/create-table-builder.js +7 -3
  91. package/dist/cjs/schema/create-view-builder.d.ts +3 -3
  92. package/dist/cjs/schema/create-view-builder.js +3 -3
  93. package/dist/cjs/util/query-id.js +10 -4
  94. package/dist/cjs/util/random-string.js +65 -2
  95. package/dist/cjs/util/type-utils.d.ts +1 -1
  96. package/dist/esm/dialect/mysql/mysql-adapter.js +3 -4
  97. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +19 -0
  98. package/dist/esm/dialect/mysql/mysql-introspector.js +2 -1
  99. package/dist/esm/dialect/postgres/postgres-adapter.js +3 -2
  100. package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -1
  101. package/dist/esm/driver/connection-provider.d.ts +1 -1
  102. package/dist/esm/driver/default-connection-provider.d.ts +1 -1
  103. package/dist/esm/driver/default-connection-provider.js +2 -2
  104. package/dist/esm/driver/dummy-driver.d.ts +8 -0
  105. package/dist/esm/driver/dummy-driver.js +8 -0
  106. package/dist/esm/driver/single-connection-provider.d.ts +1 -1
  107. package/dist/esm/driver/single-connection-provider.js +2 -2
  108. package/dist/esm/index-nodeless.d.ts +2 -0
  109. package/dist/esm/index-nodeless.js +2 -0
  110. package/dist/esm/kysely.d.ts +3 -6
  111. package/dist/esm/kysely.js +30 -41
  112. package/dist/esm/migration/migrator.js +4 -4
  113. package/dist/esm/operation-node/operation-node-transformer.js +1 -1
  114. package/dist/esm/operation-node/raw-node.d.ts +4 -2
  115. package/dist/esm/operation-node/raw-node.js +8 -2
  116. package/dist/esm/parser/complex-expression-parser.d.ts +5 -5
  117. package/dist/esm/parser/complex-expression-parser.js +5 -4
  118. package/dist/esm/parser/filter-parser.d.ts +9 -9
  119. package/dist/esm/parser/filter-parser.js +31 -30
  120. package/dist/esm/parser/group-by-parser.d.ts +1 -2
  121. package/dist/esm/parser/group-by-parser.js +2 -2
  122. package/dist/esm/parser/insert-values-parser.d.ts +1 -2
  123. package/dist/esm/parser/insert-values-parser.js +6 -6
  124. package/dist/esm/parser/join-parser.d.ts +1 -2
  125. package/dist/esm/parser/join-parser.js +8 -7
  126. package/dist/esm/parser/order-by-parser.d.ts +1 -2
  127. package/dist/esm/parser/order-by-parser.js +4 -4
  128. package/dist/esm/parser/parse-utils.d.ts +10 -0
  129. package/dist/esm/parser/parse-utils.js +32 -0
  130. package/dist/esm/parser/reference-parser.d.ts +2 -3
  131. package/dist/esm/parser/reference-parser.js +5 -5
  132. package/dist/esm/parser/select-parser.d.ts +1 -2
  133. package/dist/esm/parser/select-parser.js +5 -5
  134. package/dist/esm/parser/table-parser.d.ts +2 -3
  135. package/dist/esm/parser/table-parser.js +5 -5
  136. package/dist/esm/parser/update-set-parser.d.ts +1 -2
  137. package/dist/esm/parser/update-set-parser.js +2 -2
  138. package/dist/esm/parser/value-parser.d.ts +3 -4
  139. package/dist/esm/parser/value-parser.js +7 -7
  140. package/dist/esm/parser/with-parser.d.ts +1 -2
  141. package/dist/esm/parser/with-parser.js +3 -2
  142. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +2 -1
  143. package/dist/esm/query-builder/delete-query-builder.d.ts +34 -23
  144. package/dist/esm/query-builder/delete-query-builder.js +15 -15
  145. package/dist/esm/query-builder/expression-builder.d.ts +4 -13
  146. package/dist/esm/query-builder/expression-builder.js +12 -21
  147. package/dist/esm/query-builder/function-builder.d.ts +2 -6
  148. package/dist/esm/query-builder/function-builder.js +5 -8
  149. package/dist/esm/query-builder/insert-query-builder.d.ts +12 -8
  150. package/dist/esm/query-builder/insert-query-builder.js +8 -7
  151. package/dist/esm/query-builder/join-builder.d.ts +0 -2
  152. package/dist/esm/query-builder/join-builder.js +8 -8
  153. package/dist/esm/query-builder/on-conflict-builder.d.ts +46 -28
  154. package/dist/esm/query-builder/on-conflict-builder.js +17 -17
  155. package/dist/esm/query-builder/returning-interface.d.ts +3 -1
  156. package/dist/esm/query-builder/select-query-builder.d.ts +52 -33
  157. package/dist/esm/query-builder/select-query-builder.js +28 -26
  158. package/dist/esm/query-builder/update-query-builder.d.ts +41 -28
  159. package/dist/esm/query-builder/update-query-builder.js +22 -20
  160. package/dist/esm/query-builder/where-interface.d.ts +31 -20
  161. package/dist/esm/query-compiler/default-query-compiler.js +1 -1
  162. package/dist/esm/query-creator.d.ts +10 -129
  163. package/dist/esm/query-creator.js +5 -136
  164. package/dist/esm/query-executor/default-query-executor.d.ts +21 -7
  165. package/dist/esm/query-executor/default-query-executor.js +17 -19
  166. package/dist/esm/query-executor/noop-query-executor.d.ts +20 -6
  167. package/dist/esm/query-executor/noop-query-executor.js +10 -3
  168. package/dist/esm/query-executor/query-executor-base.d.ts +62 -0
  169. package/dist/esm/query-executor/query-executor-base.js +43 -0
  170. package/dist/esm/query-executor/query-executor-provider.d.ts +8 -0
  171. package/dist/esm/query-executor/query-executor-provider.js +2 -0
  172. package/dist/esm/query-executor/query-executor.d.ts +20 -13
  173. package/dist/esm/query-executor/query-executor.js +1 -55
  174. package/dist/esm/raw-builder/raw-builder.d.ts +42 -11
  175. package/dist/esm/raw-builder/raw-builder.js +56 -57
  176. package/dist/esm/raw-builder/sql.d.ts +331 -0
  177. package/dist/esm/raw-builder/sql.js +159 -0
  178. package/dist/esm/schema/alter-table-builder.d.ts +42 -8
  179. package/dist/esm/schema/alter-table-builder.js +20 -0
  180. package/dist/esm/schema/column-definition-builder.d.ts +22 -8
  181. package/dist/esm/schema/create-index-builder.d.ts +3 -1
  182. package/dist/esm/schema/create-index-builder.js +3 -1
  183. package/dist/esm/schema/create-table-builder.d.ts +7 -3
  184. package/dist/esm/schema/create-table-builder.js +7 -3
  185. package/dist/esm/schema/create-view-builder.d.ts +3 -3
  186. package/dist/esm/schema/create-view-builder.js +3 -3
  187. package/dist/esm/util/query-id.js +10 -4
  188. package/dist/esm/util/random-string.js +65 -2
  189. package/dist/esm/util/type-utils.d.ts +1 -1
  190. package/package.json +14 -14
  191. package/dist/cjs/parser/parse-context.d.ts +0 -55
  192. package/dist/cjs/parser/parse-context.js +0 -50
  193. package/dist/cjs/util/private-symbols.d.ts +0 -5
  194. package/dist/cjs/util/private-symbols.js +0 -8
  195. package/dist/esm/parser/parse-context.d.ts +0 -55
  196. package/dist/esm/parser/parse-context.js +0 -47
  197. package/dist/esm/util/private-symbols.d.ts +0 -5
  198. package/dist/esm/util/private-symbols.js +0 -6
@@ -12,7 +12,6 @@ import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-b
12
12
  import { Compilable } from '../util/compilable.js';
13
13
  import { QueryExecutor } from '../query-executor/query-executor.js';
14
14
  import { QueryId } from '../util/query-id.js';
15
- import { ParseContext } from '../parser/parse-context.js';
16
15
  import { UnionExpression } from '../parser/union-parser.js';
17
16
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
18
17
  import { WhereInterface } from './where-interface.js';
@@ -46,7 +45,13 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
46
45
  * ```
47
46
  *
48
47
  * Operator can be any supported operator or if the typings don't support it
49
- * you can always use `db.raw('your operator')`.
48
+ * you can always use
49
+ *
50
+ * ```ts
51
+ * sql`your operator`
52
+ * ```
53
+ *
54
+ * The next example uses the `>` operator:
50
55
  *
51
56
  * ```ts
52
57
  * const persons = await db
@@ -62,8 +67,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
62
67
  * select * from "person" where "id" > $1
63
68
  * ```
64
69
  *
65
- * The `where` methods don't change the type of the query. You can add
66
- * conditional `where`s easily by doing something like this:
70
+ * `where` methods don't change the type of the query. You can add
71
+ * conditional statements easily by doing something like this:
67
72
  *
68
73
  * ```ts
69
74
  * let query = db
@@ -71,6 +76,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
71
76
  * .selectAll()
72
77
  *
73
78
  * if (firstName) {
79
+ * // The query builder is immutable. Remember to reassign
80
+ * // the result back to the query variable.
74
81
  * query = query.where('first_name', '=', firstName)
75
82
  * }
76
83
  *
@@ -78,8 +85,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
78
85
  * ```
79
86
  *
80
87
  * This is true for basically all methods execpt the `select` and
81
- * `returning` methods, which DO change the return type of the
82
- * query.
88
+ * `returning`, that __do__ change the return type of the query.
83
89
  *
84
90
  * Both the first and third argument can also be subqueries.
85
91
  * A subquery is defined by passing a function and calling
@@ -116,7 +122,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
116
122
  *
117
123
  * A `where in` query can be built by using the `in` operator and an array
118
124
  * of values. The values in the array can also be subqueries or raw
119
- * instances.
125
+ * {@link sql} expressions.
120
126
  *
121
127
  * ```ts
122
128
  * const persons = await db
@@ -132,15 +138,17 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
132
138
  * select * from "person" where "id" in ($1, $2, $3)
133
139
  * ```
134
140
  *
135
- * If everything else fails, you can always pass {@link Kysely.raw | raw}
141
+ * If everything else fails, you can always use the {@link sql} tag
136
142
  * as any of the arguments, including the operator:
137
143
  *
138
144
  * ```ts
145
+ * import { sql } from 'kysely'
146
+ *
139
147
  * const persons = await db
140
148
  * .selectFrom('person')
141
149
  * .selectAll()
142
150
  * .where(
143
- * db.raw('coalesce(first_name, last_name)'),
151
+ * sql`coalesce(first_name, last_name)`,
144
152
  * 'like',
145
153
  * '%' + name + '%',
146
154
  * )
@@ -175,24 +183,25 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
175
183
  * ```
176
184
  *
177
185
  * In all examples above the columns were known at compile time
178
- * (except for the `raw` expressions). By default kysely only allows
179
- * you to refer to columns that exist in the database **and** can be
180
- * referred to in the current query and context.
186
+ * (except for the raw {@link sql} expressions). By default kysely only
187
+ * allows you to refer to columns that exist in the database **and**
188
+ * can be referred to in the current query and context.
181
189
  *
182
190
  * Sometimes you may want to refer to columns that come from the user
183
191
  * input and thus are not available at compile time.
184
192
  *
185
- * You have two options, `db.raw` or `db.dynamic`. The example below
193
+ * You have two options, the {@link sql} tag or `db.dynamic`. The example below
186
194
  * uses both:
187
195
  *
188
196
  * ```ts
197
+ * import { sql } from 'kysely'
189
198
  * const { ref } = db.dynamic
190
199
  *
191
200
  * const persons = await db
192
201
  * .selectFrom('person')
193
202
  * .selectAll()
194
203
  * .where(ref(columnFromUserInput), '=', 1)
195
- * .orWhere(db.raw('??', [columnFromUserInput]), '=', 2)
204
+ * .orWhere(sql.id(columnFromUserInput), '=', 2)
196
205
  * .execute()
197
206
  * ```
198
207
  */
@@ -326,13 +335,14 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
326
335
  /**
327
336
  * Adds a `where exists` clause to the query.
328
337
  *
329
- * You can either use a subquery or a raw instance.
338
+ * You can either use a subquery or a raw {@link sql} snippet.
330
339
  *
331
340
  * ### Examples
332
341
  *
333
342
  * The query below selets all persons that own a pet named Catto:
334
343
  *
335
344
  * ```ts
345
+ * const petName = 'Catto'
336
346
  * const persons = await db
337
347
  * .selectFrom('person')
338
348
  * .selectAll()
@@ -340,7 +350,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
340
350
  * .selectFrom('pet')
341
351
  * .select('pet.id')
342
352
  * .whereRef('person.id', '=', 'pet.owner_id')
343
- * .where('pet.name', '=', 'Catto')
353
+ * .where('pet.name', '=', petName)
344
354
  * )
345
355
  * .execute()
346
356
  * ```
@@ -357,16 +367,16 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
357
367
  * )
358
368
  * ```
359
369
  *
360
- * The same query as in the previous example but with using raw:
370
+ * The same query as in the previous example but with using raw {@link sql}:
361
371
  *
362
372
  * ```ts
373
+ * import { sql } from 'kysely'
374
+ *
375
+ * const petName = 'Catto'
363
376
  * db.selectFrom('person')
364
377
  * .selectAll()
365
378
  * .whereExists(
366
- * db.raw(
367
- * '(select pet.id from pet where person.id = pet.owner_id and pet.name = ?)',
368
- * ['Catto']
369
- * )
379
+ * sql`(select pet.id from pet where person.id = pet.owner_id and pet.name = ${petName})`
370
380
  * )
371
381
  * ```
372
382
  *
@@ -449,7 +459,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
449
459
  * Kysely only allows you to select columns and expressions that exist and would
450
460
  * produce valid SQL. However, Kysely is not perfect and there may be cases where
451
461
  * the type inference doesn't work and you need to override it. You can always
452
- * use the {@link Kysely.dynamic | dynamic} module and {@link Kysely.raw | raw}
462
+ * use the {@link Kysely.dynamic | dynamic} module and the {@link sql} tag
453
463
  * to override the types.
454
464
  *
455
465
  * Select calls are additive. Calling `select('id').select('first_name')` is the
@@ -536,11 +546,13 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
536
546
  * from "person"
537
547
  * ```
538
548
  *
539
- * You can also select subqueries and raw expressions. Note that you
549
+ * You can also select subqueries and raw sql expressions. Note that you
540
550
  * always need to give a name for the selections using the `as`
541
551
  * method:
542
552
  *
543
553
  * ```ts
554
+ * import { sql } from 'kysely'
555
+ *
544
556
  * const persons = await db.selectFrom('person')
545
557
  * .select([
546
558
  * (qb) => qb
@@ -549,7 +561,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
549
561
  * .select('pet.name')
550
562
  * .limit(1)
551
563
  * .as('pet_name')
552
- * db.raw<string>("concat(first_name, ' ', last_name)").as('full_name')
564
+ * sql<string>`concat(first_name, ' ', last_name)`.as('full_name')
553
565
  * ])
554
566
  * .execute()
555
567
  *
@@ -571,7 +583,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
571
583
  * from "person"
572
584
  * ```
573
585
  *
574
- * In case you use `raw` you need to specify the type of the expression
586
+ * In case you use the {@link sql} tag you need to specify the type of the expression
575
587
  * (in this example `string`).
576
588
  *
577
589
  * All the examples above assume you know the column names at compile time.
@@ -889,10 +901,12 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
889
901
  * order by "id" asc, "fn" desc
890
902
  * ```
891
903
  *
892
- * The order by expression can also be a `raw` expression or a subquery
904
+ * The order by expression can also be a raw sql expression or a subquery
893
905
  * in addition to column references:
894
906
  *
895
907
  * ```ts
908
+ * import { sql } from 'kysely'
909
+ *
896
910
  * await db
897
911
  * .selectFrom('person')
898
912
  * .selectAll()
@@ -902,7 +916,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
902
916
  * .limit(1)
903
917
  * )
904
918
  * .orderBy(
905
- * db.raw('concat(first_name, last_name)')
919
+ * sql`concat(first_name, last_name)`
906
920
  * )
907
921
  * .execute()
908
922
  * ```
@@ -953,11 +967,13 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
953
967
  * ### Examples
954
968
  *
955
969
  * ```ts
970
+ * import { sql } from 'kysely'
971
+ *
956
972
  * await db
957
973
  * .selectFrom('person')
958
974
  * .select([
959
975
  * 'first_name',
960
- * db.raw('max(id)').as('max_id')
976
+ * sql`max(id)`.as('max_id')
961
977
  * ])
962
978
  * .groupBy('first_name')
963
979
  * .execute()
@@ -974,12 +990,14 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
974
990
  * `groupBy` also accepts an array:
975
991
  *
976
992
  * ```ts
993
+ * import { sql } from 'kysely'
994
+ *
977
995
  * await db
978
996
  * .selectFrom('person')
979
997
  * .select([
980
998
  * 'first_name',
981
999
  * 'last_name',
982
- * db.raw('max(id)').as('max_id')
1000
+ * sql`max(id)`.as('max_id')
983
1001
  * ])
984
1002
  * .groupBy([
985
1003
  * 'first_name',
@@ -997,18 +1015,20 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
997
1015
  * ```
998
1016
  *
999
1017
  * The group by expressions can also be subqueries or
1000
- * raw expressions:
1018
+ * raw sql expressions:
1001
1019
  *
1002
1020
  * ```ts
1021
+ * import { sql } from 'kysely'
1022
+ *
1003
1023
  * await db
1004
1024
  * .selectFrom('person')
1005
1025
  * .select([
1006
1026
  * 'first_name',
1007
1027
  * 'last_name',
1008
- * db.raw('max(id)').as('max_id')
1028
+ * sql`max(id)`.as('max_id')
1009
1029
  * ])
1010
1030
  * .groupBy([
1011
- * db.raw('concat(first_name, last_name)'),
1031
+ * sql`concat(first_name, last_name)`,
1012
1032
  * (qb) => qb.selectFrom('pet').select('id').limit(1)
1013
1033
  * ])
1014
1034
  * .execute()
@@ -1242,7 +1262,6 @@ export interface SelectQueryBuilderProps {
1242
1262
  readonly queryId: QueryId;
1243
1263
  readonly queryNode: SelectQueryNode;
1244
1264
  readonly executor: QueryExecutor;
1245
- readonly parseContext: ParseContext;
1246
1265
  }
1247
1266
  /**
1248
1267
  * {@link SelectQueryBuilder} with an alias. The result of calling {@link SelectQueryBuilder.as}.
@@ -23,109 +23,109 @@ class SelectQueryBuilder {
23
23
  where(...args) {
24
24
  return new SelectQueryBuilder({
25
25
  ...this.#props,
26
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
26
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(args)),
27
27
  });
28
28
  }
29
29
  whereRef(lhs, op, rhs) {
30
30
  return new SelectQueryBuilder({
31
31
  ...this.#props,
32
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
32
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
33
33
  });
34
34
  }
35
35
  orWhere(...args) {
36
36
  return new SelectQueryBuilder({
37
37
  ...this.#props,
38
- queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
38
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(args)),
39
39
  });
40
40
  }
41
41
  orWhereRef(lhs, op, rhs) {
42
42
  return new SelectQueryBuilder({
43
43
  ...this.#props,
44
- queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
44
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
45
45
  });
46
46
  }
47
47
  whereExists(arg) {
48
48
  return new SelectQueryBuilder({
49
49
  ...this.#props,
50
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
50
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
51
51
  });
52
52
  }
53
53
  whereNotExists(arg) {
54
54
  return new SelectQueryBuilder({
55
55
  ...this.#props,
56
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
56
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
57
57
  });
58
58
  }
59
59
  orWhereExists(arg) {
60
60
  return new SelectQueryBuilder({
61
61
  ...this.#props,
62
- queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
62
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
63
63
  });
64
64
  }
65
65
  orWhereNotExists(arg) {
66
66
  return new SelectQueryBuilder({
67
67
  ...this.#props,
68
- queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
68
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
69
69
  });
70
70
  }
71
71
  having(...args) {
72
72
  return new SelectQueryBuilder({
73
73
  ...this.#props,
74
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, filter_parser_js_1.parseHavingFilter)(this.#props.parseContext, args)),
74
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, filter_parser_js_1.parseHavingFilter)(args)),
75
75
  });
76
76
  }
77
77
  havingRef(lhs, op, rhs) {
78
78
  return new SelectQueryBuilder({
79
79
  ...this.#props,
80
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
80
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
81
81
  });
82
82
  }
83
83
  orHaving(...args) {
84
84
  return new SelectQueryBuilder({
85
85
  ...this.#props,
86
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, filter_parser_js_1.parseHavingFilter)(this.#props.parseContext, args)),
86
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, filter_parser_js_1.parseHavingFilter)(args)),
87
87
  });
88
88
  }
89
89
  orHavingRef(lhs, op, rhs) {
90
90
  return new SelectQueryBuilder({
91
91
  ...this.#props,
92
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
92
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
93
93
  });
94
94
  }
95
95
  havingExists(arg) {
96
96
  return new SelectQueryBuilder({
97
97
  ...this.#props,
98
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
98
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
99
99
  });
100
100
  }
101
101
  havingNotExist(arg) {
102
102
  return new SelectQueryBuilder({
103
103
  ...this.#props,
104
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
104
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
105
105
  });
106
106
  }
107
107
  orHavingExists(arg) {
108
108
  return new SelectQueryBuilder({
109
109
  ...this.#props,
110
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
110
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
111
111
  });
112
112
  }
113
113
  orHavingNotExists(arg) {
114
114
  return new SelectQueryBuilder({
115
115
  ...this.#props,
116
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
116
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
117
117
  });
118
118
  }
119
119
  select(selection) {
120
120
  return new SelectQueryBuilder({
121
121
  ...this.#props,
122
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSelections(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(this.#props.parseContext, selection)),
122
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSelections(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(selection)),
123
123
  });
124
124
  }
125
125
  distinctOn(selection) {
126
126
  return new SelectQueryBuilder({
127
127
  ...this.#props,
128
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithDistinctOnSelections(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(this.#props.parseContext, selection)),
128
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithDistinctOnSelections(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(selection)),
129
129
  });
130
130
  }
131
131
  /**
@@ -215,25 +215,25 @@ class SelectQueryBuilder {
215
215
  innerJoin(...args) {
216
216
  return new SelectQueryBuilder({
217
217
  ...this.#props,
218
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'InnerJoin', args)),
218
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('InnerJoin', args)),
219
219
  });
220
220
  }
221
221
  leftJoin(...args) {
222
222
  return new SelectQueryBuilder({
223
223
  ...this.#props,
224
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'LeftJoin', args)),
224
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('LeftJoin', args)),
225
225
  });
226
226
  }
227
227
  rightJoin(...args) {
228
228
  return new SelectQueryBuilder({
229
229
  ...this.#props,
230
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'RightJoin', args)),
230
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('RightJoin', args)),
231
231
  });
232
232
  }
233
233
  fullJoin(...args) {
234
234
  return new SelectQueryBuilder({
235
235
  ...this.#props,
236
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'FullJoin', args)),
236
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('FullJoin', args)),
237
237
  });
238
238
  }
239
239
  /**
@@ -264,10 +264,12 @@ class SelectQueryBuilder {
264
264
  * order by "id" asc, "fn" desc
265
265
  * ```
266
266
  *
267
- * The order by expression can also be a `raw` expression or a subquery
267
+ * The order by expression can also be a raw sql expression or a subquery
268
268
  * in addition to column references:
269
269
  *
270
270
  * ```ts
271
+ * import { sql } from 'kysely'
272
+ *
271
273
  * await db
272
274
  * .selectFrom('person')
273
275
  * .selectAll()
@@ -277,7 +279,7 @@ class SelectQueryBuilder {
277
279
  * .limit(1)
278
280
  * )
279
281
  * .orderBy(
280
- * db.raw('concat(first_name, last_name)')
282
+ * sql`concat(first_name, last_name)`
281
283
  * )
282
284
  * .execute()
283
285
  * ```
@@ -324,13 +326,13 @@ class SelectQueryBuilder {
324
326
  orderBy(orderBy, direction) {
325
327
  return new SelectQueryBuilder({
326
328
  ...this.#props,
327
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrderByItem(this.#props.queryNode, (0, order_by_parser_js_1.parseOrderBy)(this.#props.parseContext, orderBy, direction)),
329
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrderByItem(this.#props.queryNode, (0, order_by_parser_js_1.parseOrderBy)(orderBy, direction)),
328
330
  });
329
331
  }
330
332
  groupBy(groupBy) {
331
333
  return new SelectQueryBuilder({
332
334
  ...this.#props,
333
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, (0, group_by_parser_js_1.parseGroupBy)(this.#props.parseContext, groupBy)),
335
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, (0, group_by_parser_js_1.parseGroupBy)(groupBy)),
334
336
  });
335
337
  }
336
338
  /**