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
@@ -1,10 +1,9 @@
1
1
  import { StringReference, ExtractTypeFromReferenceExpression } from '../parser/reference-parser.js';
2
- import { QueryExecutor } from '../query-executor/query-executor.js';
3
2
  import { RawBuilder } from '../raw-builder/raw-builder.js';
4
3
  /**
5
4
  * Helpers for type safe SQL function calls.
6
5
  *
7
- * You can always use {@link Kysely.raw} to call functions and build arbitrary
6
+ * You can always use the {@link sql} tag to call functions and build arbitrary
8
7
  * expressions. This module simply has shortcuts for most common function calls.
9
8
  *
10
9
  * ### Examples
@@ -35,7 +34,7 @@ import { RawBuilder } from '../raw-builder/raw-builder.js';
35
34
  */
36
35
  export declare class FunctionBuilder<DB, TB extends keyof DB> {
37
36
  #private;
38
- constructor(props: FunctionBuilderProps);
37
+ constructor();
39
38
  /**
40
39
  * Calls the `max` function for the column given as the argument.
41
40
  *
@@ -132,6 +131,3 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
132
131
  */
133
132
  count<O extends number | string | bigint, C extends StringReference<DB, TB> = any>(column: C): RawBuilder<O>;
134
133
  }
135
- export interface FunctionBuilderProps {
136
- readonly executor: QueryExecutor;
137
- }
@@ -1,11 +1,12 @@
1
1
  /// <reference types="./function-builder.d.ts" />
2
+ import { RawNode } from '../operation-node/raw-node.js';
3
+ import { parseStringReference, } from '../parser/reference-parser.js';
2
4
  import { RawBuilder } from '../raw-builder/raw-builder.js';
3
- import { freeze } from '../util/object-utils.js';
4
5
  import { createQueryId } from '../util/query-id.js';
5
6
  /**
6
7
  * Helpers for type safe SQL function calls.
7
8
  *
8
- * You can always use {@link Kysely.raw} to call functions and build arbitrary
9
+ * You can always use the {@link sql} tag to call functions and build arbitrary
9
10
  * expressions. This module simply has shortcuts for most common function calls.
10
11
  *
11
12
  * ### Examples
@@ -35,9 +36,7 @@ import { createQueryId } from '../util/query-id.js';
35
36
  * ```
36
37
  */
37
38
  export class FunctionBuilder {
38
- #props;
39
- constructor(props) {
40
- this.#props = freeze(props);
39
+ constructor() {
41
40
  this.min = this.min.bind(this);
42
41
  this.max = this.max.bind(this);
43
42
  this.avg = this.avg.bind(this);
@@ -152,9 +151,7 @@ export class FunctionBuilder {
152
151
  #oneArgFunction(fn, column) {
153
152
  return new RawBuilder({
154
153
  queryId: createQueryId(),
155
- executor: this.#props.executor,
156
- sql: `${fn}(??)`,
157
- parameters: [column],
154
+ rawNode: RawNode.create([`${fn}(`, ')'], [parseStringReference(column)]),
158
155
  });
159
156
  }
160
157
  }
@@ -8,7 +8,6 @@ import { MutationObject } from '../parser/update-set-parser.js';
8
8
  import { Compilable } from '../util/compilable.js';
9
9
  import { QueryExecutor } from '../query-executor/query-executor.js';
10
10
  import { QueryId } from '../util/query-id.js';
11
- import { ParseContext } from '../parser/parse-context.js';
12
11
  import { InsertResult } from './insert-result.js';
13
12
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
14
13
  import { ReturningRow } from '../parser/returning-parser.js';
@@ -25,7 +24,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
25
24
  *
26
25
  * This method takes an object whose keys are column names and values are
27
26
  * values to insert. In addition to the column's type, the values can be
28
- * {@link Kysely.raw | raw} instances or select queries.
27
+ * raw {@link sql} snippets or select queries.
29
28
  *
30
29
  * You must provide all fields you haven't explicitly marked as nullable
31
30
  * or optional using {@link Generated} or {@link ColumnType}.
@@ -106,16 +105,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
106
105
  * insert into "person" ("first_name", "last_name") values ($1, $2) returning "id"
107
106
  * ```
108
107
  *
109
- * In addition to primitives, the values can also be `raw` expressions or
108
+ * In addition to primitives, the values can also be raw sql expressions or
110
109
  * select queries:
111
110
  *
112
111
  * ```ts
112
+ * import { sql } from 'kysely'
113
+ *
113
114
  * const result = await db
114
115
  * .insertInto('person')
115
116
  * .values({
116
117
  * first_name: 'Jennifer',
117
- * last_name: db.raw('? || ?', ['Ani', 'ston']),
118
- * age: db.selectFrom('person').select(raw('avg(age)')),
118
+ * last_name: sql`${'Ani'} || ${'ston'}`,
119
+ * age: db.selectFrom('person').select(sql`avg(age)`),
119
120
  * })
120
121
  * .executeTakeFirst()
121
122
  *
@@ -271,6 +272,8 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
271
272
  * the unique index is an expression index:
272
273
  *
273
274
  * ```ts
275
+ * import { sql } from 'kysely'
276
+ *
274
277
  * await db
275
278
  * .insertInto('pet')
276
279
  * .values({
@@ -278,7 +281,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
278
281
  * species: 'cat',
279
282
  * })
280
283
  * .onConflict((oc) => oc
281
- * .expression(db.raw('lower(name)'))
284
+ * .expression(sql`lower(name)`)
282
285
  * .doUpdateSet({ species: 'hamster' })
283
286
  * )
284
287
  * .execute()
@@ -423,6 +426,8 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
423
426
  * Return arbitrary expressions:
424
427
  *
425
428
  * ```ts
429
+ * import { sql } from 'kysely'
430
+ *
426
431
  * const { id, full_name, first_pet_id } = await db
427
432
  * .insertInto('person')
428
433
  * .values({
@@ -431,7 +436,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
431
436
  * })
432
437
  * .returning([
433
438
  * 'id as id',
434
- * db.raw<string>(`concat(first_name, ' ', last_name)`).as('full_name'),
439
+ * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
435
440
  * (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
436
441
  * ])
437
442
  * .executeTakeFirst()
@@ -541,5 +546,4 @@ export interface InsertQueryBuilderProps {
541
546
  readonly queryId: QueryId;
542
547
  readonly queryNode: InsertQueryNode;
543
548
  readonly executor: QueryExecutor;
544
- readonly parseContext: ParseContext;
545
549
  }
@@ -19,7 +19,7 @@ export class InsertQueryBuilder {
19
19
  this.#props = freeze(props);
20
20
  }
21
21
  values(args) {
22
- const [columns, values] = parseInsertObjectOrList(this.#props.parseContext, args);
22
+ const [columns, values] = parseInsertObjectOrList(args);
23
23
  return new InsertQueryBuilder({
24
24
  ...this.#props,
25
25
  queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
@@ -80,7 +80,7 @@ export class InsertQueryBuilder {
80
80
  return new InsertQueryBuilder({
81
81
  ...this.#props,
82
82
  queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
83
- values: parseComplexExpression(this.#props.parseContext, expression),
83
+ values: parseComplexExpression(expression),
84
84
  }),
85
85
  });
86
86
  }
@@ -174,6 +174,8 @@ export class InsertQueryBuilder {
174
174
  * the unique index is an expression index:
175
175
  *
176
176
  * ```ts
177
+ * import { sql } from 'kysely'
178
+ *
177
179
  * await db
178
180
  * .insertInto('pet')
179
181
  * .values({
@@ -181,7 +183,7 @@ export class InsertQueryBuilder {
181
183
  * species: 'cat',
182
184
  * })
183
185
  * .onConflict((oc) => oc
184
- * .expression(db.raw('lower(name)'))
186
+ * .expression(sql`lower(name)`)
185
187
  * .doUpdateSet({ species: 'hamster' })
186
188
  * )
187
189
  * .execute()
@@ -269,7 +271,6 @@ export class InsertQueryBuilder {
269
271
  queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
270
272
  onConflict: callback(new OnConflictBuilder({
271
273
  onConflictNode: OnConflictNode.create(),
272
- parseContext: this.#props.parseContext,
273
274
  })).toOperationNode(),
274
275
  }),
275
276
  });
@@ -296,14 +297,14 @@ export class InsertQueryBuilder {
296
297
  return new InsertQueryBuilder({
297
298
  ...this.#props,
298
299
  queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
299
- onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateObject(this.#props.parseContext, updates)),
300
+ onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateObject(updates)),
300
301
  }),
301
302
  });
302
303
  }
303
304
  returning(selection) {
304
305
  return new InsertQueryBuilder({
305
306
  ...this.#props,
306
- queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectExpressionOrList(this.#props.parseContext, selection)),
307
+ queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectExpressionOrList(selection)),
307
308
  });
308
309
  }
309
310
  returningAll() {
@@ -413,7 +414,7 @@ export class InsertQueryBuilder {
413
414
  const compildQuery = this.compile();
414
415
  const query = compildQuery.query;
415
416
  const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
416
- if (this.#props.parseContext.adapter.supportsReturning && query.returning) {
417
+ if (this.#props.executor.adapter.supportsReturning && query.returning) {
417
418
  return result.rows;
418
419
  }
419
420
  else {
@@ -1,7 +1,6 @@
1
1
  import { JoinNode } from '../operation-node/join-node.js';
2
2
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
3
  import { ExistsExpression, FilterOperator, FilterValueExpressionOrList } from '../parser/filter-parser.js';
4
- import { ParseContext } from '../parser/parse-context.js';
5
4
  import { ReferenceExpression } from '../parser/reference-parser.js';
6
5
  import { AnyRawBuilder } from '../util/type-utils.js';
7
6
  export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
@@ -71,5 +70,4 @@ export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNo
71
70
  }
72
71
  export interface JoinBuilderProps {
73
72
  readonly joinNode: JoinNode;
74
- readonly parseContext: ParseContext;
75
73
  }
@@ -11,13 +11,13 @@ export class JoinBuilder {
11
11
  on(...args) {
12
12
  return new JoinBuilder({
13
13
  ...this.#props,
14
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseOnFilter(this.#props.parseContext, args)),
14
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseOnFilter(args)),
15
15
  });
16
16
  }
17
17
  orOn(...args) {
18
18
  return new JoinBuilder({
19
19
  ...this.#props,
20
- joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseOnFilter(this.#props.parseContext, args)),
20
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseOnFilter(args)),
21
21
  });
22
22
  }
23
23
  /**
@@ -29,7 +29,7 @@ export class JoinBuilder {
29
29
  onRef(lhs, op, rhs) {
30
30
  return new JoinBuilder({
31
31
  ...this.#props,
32
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
32
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseReferenceFilter(lhs, op, rhs)),
33
33
  });
34
34
  }
35
35
  /**
@@ -41,7 +41,7 @@ export class JoinBuilder {
41
41
  orOnRef(lhs, op, rhs) {
42
42
  return new JoinBuilder({
43
43
  ...this.#props,
44
- joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
44
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseReferenceFilter(lhs, op, rhs)),
45
45
  });
46
46
  }
47
47
  /**
@@ -53,7 +53,7 @@ export class JoinBuilder {
53
53
  onExists(arg) {
54
54
  return new JoinBuilder({
55
55
  ...this.#props,
56
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseExistFilter(this.#props.parseContext, arg)),
56
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseExistFilter(arg)),
57
57
  });
58
58
  }
59
59
  /**
@@ -65,7 +65,7 @@ export class JoinBuilder {
65
65
  onNotExists(arg) {
66
66
  return new JoinBuilder({
67
67
  ...this.#props,
68
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseNotExistFilter(this.#props.parseContext, arg)),
68
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseNotExistFilter(arg)),
69
69
  });
70
70
  }
71
71
  /**
@@ -77,7 +77,7 @@ export class JoinBuilder {
77
77
  orOnExists(arg) {
78
78
  return new JoinBuilder({
79
79
  ...this.#props,
80
- joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseExistFilter(this.#props.parseContext, arg)),
80
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseExistFilter(arg)),
81
81
  });
82
82
  }
83
83
  /**
@@ -89,7 +89,7 @@ export class JoinBuilder {
89
89
  orOnNotExists(arg) {
90
90
  return new JoinBuilder({
91
91
  ...this.#props,
92
- joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseNotExistFilter(this.#props.parseContext, arg)),
92
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseNotExistFilter(arg)),
93
93
  });
94
94
  }
95
95
  toOperationNode() {
@@ -2,7 +2,6 @@ import { OnConflictNode } from '../operation-node/on-conflict-node.js';
2
2
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
3
  import { ComplexExpression } from '../parser/complex-expression-parser.js';
4
4
  import { WhereGrouper, FilterOperator, FilterValueExpressionOrList } from '../parser/filter-parser.js';
5
- import { ParseContext } from '../parser/parse-context.js';
6
5
  import { ReferenceExpression } from '../parser/reference-parser.js';
7
6
  import { MutationObject } from '../parser/update-set-parser.js';
8
7
  import { AnyColumn, AnyRawBuilder } from '../util/type-utils.js';
@@ -70,7 +69,13 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
70
69
  * ```
71
70
  *
72
71
  * Operator can be any supported operator or if the typings don't support it
73
- * you can always use `db.raw('your operator')`.
72
+ * you can always use
73
+ *
74
+ * ```ts
75
+ * sql`your operator`
76
+ * ```
77
+ *
78
+ * The next example uses the `>` operator:
74
79
  *
75
80
  * ```ts
76
81
  * const persons = await db
@@ -86,8 +91,8 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
86
91
  * select * from "person" where "id" > $1
87
92
  * ```
88
93
  *
89
- * The `where` methods don't change the type of the query. You can add
90
- * conditional `where`s easily by doing something like this:
94
+ * `where` methods don't change the type of the query. You can add
95
+ * conditional statements easily by doing something like this:
91
96
  *
92
97
  * ```ts
93
98
  * let query = db
@@ -95,6 +100,8 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
95
100
  * .selectAll()
96
101
  *
97
102
  * if (firstName) {
103
+ * // The query builder is immutable. Remember to reassign
104
+ * // the result back to the query variable.
98
105
  * query = query.where('first_name', '=', firstName)
99
106
  * }
100
107
  *
@@ -102,8 +109,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
102
109
  * ```
103
110
  *
104
111
  * This is true for basically all methods execpt the `select` and
105
- * `returning` methods, which DO change the return type of the
106
- * query.
112
+ * `returning`, that __do__ change the return type of the query.
107
113
  *
108
114
  * Both the first and third argument can also be subqueries.
109
115
  * A subquery is defined by passing a function and calling
@@ -140,7 +146,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
140
146
  *
141
147
  * A `where in` query can be built by using the `in` operator and an array
142
148
  * of values. The values in the array can also be subqueries or raw
143
- * instances.
149
+ * {@link sql} expressions.
144
150
  *
145
151
  * ```ts
146
152
  * const persons = await db
@@ -156,15 +162,17 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
156
162
  * select * from "person" where "id" in ($1, $2, $3)
157
163
  * ```
158
164
  *
159
- * If everything else fails, you can always pass {@link Kysely.raw | raw}
165
+ * If everything else fails, you can always use the {@link sql} tag
160
166
  * as any of the arguments, including the operator:
161
167
  *
162
168
  * ```ts
169
+ * import { sql } from 'kysely'
170
+ *
163
171
  * const persons = await db
164
172
  * .selectFrom('person')
165
173
  * .selectAll()
166
174
  * .where(
167
- * db.raw('coalesce(first_name, last_name)'),
175
+ * sql`coalesce(first_name, last_name)`,
168
176
  * 'like',
169
177
  * '%' + name + '%',
170
178
  * )
@@ -199,24 +207,25 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
199
207
  * ```
200
208
  *
201
209
  * In all examples above the columns were known at compile time
202
- * (except for the `raw` expressions). By default kysely only allows
203
- * you to refer to columns that exist in the database **and** can be
204
- * referred to in the current query and context.
210
+ * (except for the raw {@link sql} expressions). By default kysely only
211
+ * allows you to refer to columns that exist in the database **and**
212
+ * can be referred to in the current query and context.
205
213
  *
206
214
  * Sometimes you may want to refer to columns that come from the user
207
215
  * input and thus are not available at compile time.
208
216
  *
209
- * You have two options, `db.raw` or `db.dynamic`. The example below
217
+ * You have two options, the {@link sql} tag or `db.dynamic`. The example below
210
218
  * uses both:
211
219
  *
212
220
  * ```ts
221
+ * import { sql } from 'kysely'
213
222
  * const { ref } = db.dynamic
214
223
  *
215
224
  * const persons = await db
216
225
  * .selectFrom('person')
217
226
  * .selectAll()
218
227
  * .where(ref(columnFromUserInput), '=', 1)
219
- * .orWhere(db.raw('??', [columnFromUserInput]), '=', 2)
228
+ * .orWhere(sql.id(columnFromUserInput), '=', 2)
220
229
  * .execute()
221
230
  * ```
222
231
  */
@@ -381,7 +390,6 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
381
390
  }
382
391
  export interface OnConflictBuilderProps {
383
392
  readonly onConflictNode: OnConflictNode;
384
- readonly parseContext: ParseContext;
385
393
  }
386
394
  export declare type OnConflictDatabase<DB, TB extends keyof DB> = {
387
395
  [K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
@@ -425,7 +433,13 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
425
433
  * ```
426
434
  *
427
435
  * Operator can be any supported operator or if the typings don't support it
428
- * you can always use `db.raw('your operator')`.
436
+ * you can always use
437
+ *
438
+ * ```ts
439
+ * sql`your operator`
440
+ * ```
441
+ *
442
+ * The next example uses the `>` operator:
429
443
  *
430
444
  * ```ts
431
445
  * const persons = await db
@@ -441,8 +455,8 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
441
455
  * select * from "person" where "id" > $1
442
456
  * ```
443
457
  *
444
- * The `where` methods don't change the type of the query. You can add
445
- * conditional `where`s easily by doing something like this:
458
+ * `where` methods don't change the type of the query. You can add
459
+ * conditional statements easily by doing something like this:
446
460
  *
447
461
  * ```ts
448
462
  * let query = db
@@ -450,6 +464,8 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
450
464
  * .selectAll()
451
465
  *
452
466
  * if (firstName) {
467
+ * // The query builder is immutable. Remember to reassign
468
+ * // the result back to the query variable.
453
469
  * query = query.where('first_name', '=', firstName)
454
470
  * }
455
471
  *
@@ -457,8 +473,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
457
473
  * ```
458
474
  *
459
475
  * This is true for basically all methods execpt the `select` and
460
- * `returning` methods, which DO change the return type of the
461
- * query.
476
+ * `returning`, that __do__ change the return type of the query.
462
477
  *
463
478
  * Both the first and third argument can also be subqueries.
464
479
  * A subquery is defined by passing a function and calling
@@ -495,7 +510,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
495
510
  *
496
511
  * A `where in` query can be built by using the `in` operator and an array
497
512
  * of values. The values in the array can also be subqueries or raw
498
- * instances.
513
+ * {@link sql} expressions.
499
514
  *
500
515
  * ```ts
501
516
  * const persons = await db
@@ -511,15 +526,17 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
511
526
  * select * from "person" where "id" in ($1, $2, $3)
512
527
  * ```
513
528
  *
514
- * If everything else fails, you can always pass {@link Kysely.raw | raw}
529
+ * If everything else fails, you can always use the {@link sql} tag
515
530
  * as any of the arguments, including the operator:
516
531
  *
517
532
  * ```ts
533
+ * import { sql } from 'kysely'
534
+ *
518
535
  * const persons = await db
519
536
  * .selectFrom('person')
520
537
  * .selectAll()
521
538
  * .where(
522
- * db.raw('coalesce(first_name, last_name)'),
539
+ * sql`coalesce(first_name, last_name)`,
523
540
  * 'like',
524
541
  * '%' + name + '%',
525
542
  * )
@@ -554,24 +571,25 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
554
571
  * ```
555
572
  *
556
573
  * In all examples above the columns were known at compile time
557
- * (except for the `raw` expressions). By default kysely only allows
558
- * you to refer to columns that exist in the database **and** can be
559
- * referred to in the current query and context.
574
+ * (except for the raw {@link sql} expressions). By default kysely only
575
+ * allows you to refer to columns that exist in the database **and**
576
+ * can be referred to in the current query and context.
560
577
  *
561
578
  * Sometimes you may want to refer to columns that come from the user
562
579
  * input and thus are not available at compile time.
563
580
  *
564
- * You have two options, `db.raw` or `db.dynamic`. The example below
581
+ * You have two options, the {@link sql} tag or `db.dynamic`. The example below
565
582
  * uses both:
566
583
  *
567
584
  * ```ts
585
+ * import { sql } from 'kysely'
568
586
  * const { ref } = db.dynamic
569
587
  *
570
588
  * const persons = await db
571
589
  * .selectFrom('person')
572
590
  * .selectAll()
573
591
  * .where(ref(columnFromUserInput), '=', 1)
574
- * .orWhere(db.raw('??', [columnFromUserInput]), '=', 2)
592
+ * .orWhere(sql.id(columnFromUserInput), '=', 2)
575
593
  * .execute()
576
594
  * ```
577
595
  */
@@ -78,7 +78,7 @@ export class OnConflictBuilder {
78
78
  where(...args) {
79
79
  return new OnConflictBuilder({
80
80
  ...this.#props,
81
- onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseWhereFilter(this.#props.parseContext, args)),
81
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseWhereFilter(args)),
82
82
  });
83
83
  }
84
84
  /**
@@ -89,13 +89,13 @@ export class OnConflictBuilder {
89
89
  whereRef(lhs, op, rhs) {
90
90
  return new OnConflictBuilder({
91
91
  ...this.#props,
92
- onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
92
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseReferenceFilter(lhs, op, rhs)),
93
93
  });
94
94
  }
95
95
  orWhere(...args) {
96
96
  return new OnConflictBuilder({
97
97
  ...this.#props,
98
- onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseWhereFilter(this.#props.parseContext, args)),
98
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseWhereFilter(args)),
99
99
  });
100
100
  }
101
101
  /**
@@ -106,7 +106,7 @@ export class OnConflictBuilder {
106
106
  orWhereRef(lhs, op, rhs) {
107
107
  return new OnConflictBuilder({
108
108
  ...this.#props,
109
- onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
109
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseReferenceFilter(lhs, op, rhs)),
110
110
  });
111
111
  }
112
112
  /**
@@ -117,7 +117,7 @@ export class OnConflictBuilder {
117
117
  whereExists(arg) {
118
118
  return new OnConflictBuilder({
119
119
  ...this.#props,
120
- onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseExistFilter(this.#props.parseContext, arg)),
120
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseExistFilter(arg)),
121
121
  });
122
122
  }
123
123
  /**
@@ -128,7 +128,7 @@ export class OnConflictBuilder {
128
128
  whereNotExists(arg) {
129
129
  return new OnConflictBuilder({
130
130
  ...this.#props,
131
- onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseNotExistFilter(this.#props.parseContext, arg)),
131
+ onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseNotExistFilter(arg)),
132
132
  });
133
133
  }
134
134
  /**
@@ -139,7 +139,7 @@ export class OnConflictBuilder {
139
139
  orWhereExists(arg) {
140
140
  return new OnConflictBuilder({
141
141
  ...this.#props,
142
- onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseExistFilter(this.#props.parseContext, arg)),
142
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseExistFilter(arg)),
143
143
  });
144
144
  }
145
145
  /**
@@ -150,7 +150,7 @@ export class OnConflictBuilder {
150
150
  orWhereNotExists(arg) {
151
151
  return new OnConflictBuilder({
152
152
  ...this.#props,
153
- onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseNotExistFilter(this.#props.parseContext, arg)),
153
+ onConflictNode: OnConflictNode.cloneWithIndexOrWhere(this.#props.onConflictNode, parseNotExistFilter(arg)),
154
154
  });
155
155
  }
156
156
  /**
@@ -212,7 +212,7 @@ export class OnConflictBuilder {
212
212
  return new OnConflictUpdateBuilder({
213
213
  ...this.#props,
214
214
  onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {
215
- updates: parseUpdateObject(this.#props.parseContext, updates),
215
+ updates: parseUpdateObject(updates),
216
216
  }),
217
217
  });
218
218
  }
@@ -236,7 +236,7 @@ export class OnConflictUpdateBuilder {
236
236
  where(...args) {
237
237
  return new OnConflictUpdateBuilder({
238
238
  ...this.#props,
239
- onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseWhereFilter(this.#props.parseContext, args)),
239
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseWhereFilter(args)),
240
240
  });
241
241
  }
242
242
  /**
@@ -247,13 +247,13 @@ export class OnConflictUpdateBuilder {
247
247
  whereRef(lhs, op, rhs) {
248
248
  return new OnConflictUpdateBuilder({
249
249
  ...this.#props,
250
- onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
250
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseReferenceFilter(lhs, op, rhs)),
251
251
  });
252
252
  }
253
253
  orWhere(...args) {
254
254
  return new OnConflictUpdateBuilder({
255
255
  ...this.#props,
256
- onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseWhereFilter(this.#props.parseContext, args)),
256
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseWhereFilter(args)),
257
257
  });
258
258
  }
259
259
  /**
@@ -264,7 +264,7 @@ export class OnConflictUpdateBuilder {
264
264
  orWhereRef(lhs, op, rhs) {
265
265
  return new OnConflictUpdateBuilder({
266
266
  ...this.#props,
267
- onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
267
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseReferenceFilter(lhs, op, rhs)),
268
268
  });
269
269
  }
270
270
  /**
@@ -275,7 +275,7 @@ export class OnConflictUpdateBuilder {
275
275
  whereExists(arg) {
276
276
  return new OnConflictUpdateBuilder({
277
277
  ...this.#props,
278
- onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseExistFilter(this.#props.parseContext, arg)),
278
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseExistFilter(arg)),
279
279
  });
280
280
  }
281
281
  /**
@@ -286,7 +286,7 @@ export class OnConflictUpdateBuilder {
286
286
  whereNotExists(arg) {
287
287
  return new OnConflictUpdateBuilder({
288
288
  ...this.#props,
289
- onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseNotExistFilter(this.#props.parseContext, arg)),
289
+ onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseNotExistFilter(arg)),
290
290
  });
291
291
  }
292
292
  /**
@@ -297,7 +297,7 @@ export class OnConflictUpdateBuilder {
297
297
  orWhereExists(arg) {
298
298
  return new OnConflictUpdateBuilder({
299
299
  ...this.#props,
300
- onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseExistFilter(this.#props.parseContext, arg)),
300
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseExistFilter(arg)),
301
301
  });
302
302
  }
303
303
  /**
@@ -308,7 +308,7 @@ export class OnConflictUpdateBuilder {
308
308
  orWhereNotExists(arg) {
309
309
  return new OnConflictUpdateBuilder({
310
310
  ...this.#props,
311
- onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseNotExistFilter(this.#props.parseContext, arg)),
311
+ onConflictNode: OnConflictNode.cloneWithUpdateOrWhere(this.#props.onConflictNode, parseNotExistFilter(arg)),
312
312
  });
313
313
  }
314
314
  toOperationNode() {