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
@@ -45,6 +45,8 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
45
45
  * Return arbitrary expressions:
46
46
  *
47
47
  * ```ts
48
+ * import { sql } from 'kysely'
49
+ *
48
50
  * const { id, full_name, first_pet_id } = await db
49
51
  * .insertInto('person')
50
52
  * .values({
@@ -53,7 +55,7 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
53
55
  * })
54
56
  * .returning([
55
57
  * 'id as id',
56
- * db.raw<string>(`concat(first_name, ' ', last_name)`).as('full_name'),
58
+ * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
57
59
  * (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
58
60
  * ])
59
61
  * .executeTakeFirst()
@@ -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}.
@@ -21,109 +21,109 @@ export class SelectQueryBuilder {
21
21
  where(...args) {
22
22
  return new SelectQueryBuilder({
23
23
  ...this.#props,
24
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhereFilter(this.#props.parseContext, args)),
24
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhereFilter(args)),
25
25
  });
26
26
  }
27
27
  whereRef(lhs, op, rhs) {
28
28
  return new SelectQueryBuilder({
29
29
  ...this.#props,
30
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
30
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferenceFilter(lhs, op, rhs)),
31
31
  });
32
32
  }
33
33
  orWhere(...args) {
34
34
  return new SelectQueryBuilder({
35
35
  ...this.#props,
36
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhereFilter(this.#props.parseContext, args)),
36
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhereFilter(args)),
37
37
  });
38
38
  }
39
39
  orWhereRef(lhs, op, rhs) {
40
40
  return new SelectQueryBuilder({
41
41
  ...this.#props,
42
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
42
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferenceFilter(lhs, op, rhs)),
43
43
  });
44
44
  }
45
45
  whereExists(arg) {
46
46
  return new SelectQueryBuilder({
47
47
  ...this.#props,
48
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
48
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExistFilter(arg)),
49
49
  });
50
50
  }
51
51
  whereNotExists(arg) {
52
52
  return new SelectQueryBuilder({
53
53
  ...this.#props,
54
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
54
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExistFilter(arg)),
55
55
  });
56
56
  }
57
57
  orWhereExists(arg) {
58
58
  return new SelectQueryBuilder({
59
59
  ...this.#props,
60
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
60
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExistFilter(arg)),
61
61
  });
62
62
  }
63
63
  orWhereNotExists(arg) {
64
64
  return new SelectQueryBuilder({
65
65
  ...this.#props,
66
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
66
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExistFilter(arg)),
67
67
  });
68
68
  }
69
69
  having(...args) {
70
70
  return new SelectQueryBuilder({
71
71
  ...this.#props,
72
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseHavingFilter(this.#props.parseContext, args)),
72
+ queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseHavingFilter(args)),
73
73
  });
74
74
  }
75
75
  havingRef(lhs, op, rhs) {
76
76
  return new SelectQueryBuilder({
77
77
  ...this.#props,
78
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
78
+ queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseReferenceFilter(lhs, op, rhs)),
79
79
  });
80
80
  }
81
81
  orHaving(...args) {
82
82
  return new SelectQueryBuilder({
83
83
  ...this.#props,
84
- queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseHavingFilter(this.#props.parseContext, args)),
84
+ queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseHavingFilter(args)),
85
85
  });
86
86
  }
87
87
  orHavingRef(lhs, op, rhs) {
88
88
  return new SelectQueryBuilder({
89
89
  ...this.#props,
90
- queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
90
+ queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseReferenceFilter(lhs, op, rhs)),
91
91
  });
92
92
  }
93
93
  havingExists(arg) {
94
94
  return new SelectQueryBuilder({
95
95
  ...this.#props,
96
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
96
+ queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseExistFilter(arg)),
97
97
  });
98
98
  }
99
99
  havingNotExist(arg) {
100
100
  return new SelectQueryBuilder({
101
101
  ...this.#props,
102
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
102
+ queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseNotExistFilter(arg)),
103
103
  });
104
104
  }
105
105
  orHavingExists(arg) {
106
106
  return new SelectQueryBuilder({
107
107
  ...this.#props,
108
- queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
108
+ queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseExistFilter(arg)),
109
109
  });
110
110
  }
111
111
  orHavingNotExists(arg) {
112
112
  return new SelectQueryBuilder({
113
113
  ...this.#props,
114
- queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
114
+ queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseNotExistFilter(arg)),
115
115
  });
116
116
  }
117
117
  select(selection) {
118
118
  return new SelectQueryBuilder({
119
119
  ...this.#props,
120
- queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectExpressionOrList(this.#props.parseContext, selection)),
120
+ queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectExpressionOrList(selection)),
121
121
  });
122
122
  }
123
123
  distinctOn(selection) {
124
124
  return new SelectQueryBuilder({
125
125
  ...this.#props,
126
- queryNode: SelectQueryNode.cloneWithDistinctOnSelections(this.#props.queryNode, parseSelectExpressionOrList(this.#props.parseContext, selection)),
126
+ queryNode: SelectQueryNode.cloneWithDistinctOnSelections(this.#props.queryNode, parseSelectExpressionOrList(selection)),
127
127
  });
128
128
  }
129
129
  /**
@@ -213,25 +213,25 @@ export class SelectQueryBuilder {
213
213
  innerJoin(...args) {
214
214
  return new SelectQueryBuilder({
215
215
  ...this.#props,
216
- queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'InnerJoin', args)),
216
+ queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('InnerJoin', args)),
217
217
  });
218
218
  }
219
219
  leftJoin(...args) {
220
220
  return new SelectQueryBuilder({
221
221
  ...this.#props,
222
- queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'LeftJoin', args)),
222
+ queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('LeftJoin', args)),
223
223
  });
224
224
  }
225
225
  rightJoin(...args) {
226
226
  return new SelectQueryBuilder({
227
227
  ...this.#props,
228
- queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'RightJoin', args)),
228
+ queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('RightJoin', args)),
229
229
  });
230
230
  }
231
231
  fullJoin(...args) {
232
232
  return new SelectQueryBuilder({
233
233
  ...this.#props,
234
- queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'FullJoin', args)),
234
+ queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('FullJoin', args)),
235
235
  });
236
236
  }
237
237
  /**
@@ -262,10 +262,12 @@ export class SelectQueryBuilder {
262
262
  * order by "id" asc, "fn" desc
263
263
  * ```
264
264
  *
265
- * The order by expression can also be a `raw` expression or a subquery
265
+ * The order by expression can also be a raw sql expression or a subquery
266
266
  * in addition to column references:
267
267
  *
268
268
  * ```ts
269
+ * import { sql } from 'kysely'
270
+ *
269
271
  * await db
270
272
  * .selectFrom('person')
271
273
  * .selectAll()
@@ -275,7 +277,7 @@ export class SelectQueryBuilder {
275
277
  * .limit(1)
276
278
  * )
277
279
  * .orderBy(
278
- * db.raw('concat(first_name, last_name)')
280
+ * sql`concat(first_name, last_name)`
279
281
  * )
280
282
  * .execute()
281
283
  * ```
@@ -322,13 +324,13 @@ export class SelectQueryBuilder {
322
324
  orderBy(orderBy, direction) {
323
325
  return new SelectQueryBuilder({
324
326
  ...this.#props,
325
- queryNode: SelectQueryNode.cloneWithOrderByItem(this.#props.queryNode, parseOrderBy(this.#props.parseContext, orderBy, direction)),
327
+ queryNode: SelectQueryNode.cloneWithOrderByItem(this.#props.queryNode, parseOrderBy(orderBy, direction)),
326
328
  });
327
329
  }
328
330
  groupBy(groupBy) {
329
331
  return new SelectQueryBuilder({
330
332
  ...this.#props,
331
- queryNode: SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, parseGroupBy(this.#props.parseContext, groupBy)),
333
+ queryNode: SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, parseGroupBy(groupBy)),
332
334
  });
333
335
  }
334
336
  /**