kysely 0.16.11 → 0.17.0

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 (170) 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-introspector.js +2 -1
  4. package/dist/cjs/dialect/postgres/postgres-adapter.js +3 -2
  5. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -1
  6. package/dist/cjs/index-nodeless.d.ts +2 -0
  7. package/dist/cjs/index-nodeless.js +2 -0
  8. package/dist/cjs/kysely.d.ts +3 -6
  9. package/dist/cjs/kysely.js +7 -12
  10. package/dist/cjs/migration/migrator.js +4 -4
  11. package/dist/cjs/operation-node/operation-node-transformer.js +1 -1
  12. package/dist/cjs/operation-node/raw-node.d.ts +4 -2
  13. package/dist/cjs/operation-node/raw-node.js +8 -2
  14. package/dist/cjs/parser/complex-expression-parser.d.ts +5 -5
  15. package/dist/cjs/parser/complex-expression-parser.js +5 -4
  16. package/dist/cjs/parser/filter-parser.d.ts +9 -9
  17. package/dist/cjs/parser/filter-parser.js +31 -30
  18. package/dist/cjs/parser/group-by-parser.d.ts +1 -2
  19. package/dist/cjs/parser/group-by-parser.js +2 -2
  20. package/dist/cjs/parser/insert-values-parser.d.ts +1 -2
  21. package/dist/cjs/parser/insert-values-parser.js +6 -6
  22. package/dist/cjs/parser/join-parser.d.ts +1 -2
  23. package/dist/cjs/parser/join-parser.js +8 -7
  24. package/dist/cjs/parser/order-by-parser.d.ts +1 -2
  25. package/dist/cjs/parser/order-by-parser.js +4 -4
  26. package/dist/cjs/parser/parse-utils.d.ts +10 -0
  27. package/dist/cjs/parser/parse-utils.js +38 -0
  28. package/dist/cjs/parser/reference-parser.d.ts +2 -3
  29. package/dist/cjs/parser/reference-parser.js +5 -5
  30. package/dist/cjs/parser/select-parser.d.ts +1 -2
  31. package/dist/cjs/parser/select-parser.js +5 -5
  32. package/dist/cjs/parser/table-parser.d.ts +2 -3
  33. package/dist/cjs/parser/table-parser.js +5 -5
  34. package/dist/cjs/parser/update-set-parser.d.ts +1 -2
  35. package/dist/cjs/parser/update-set-parser.js +2 -2
  36. package/dist/cjs/parser/value-parser.d.ts +3 -4
  37. package/dist/cjs/parser/value-parser.js +7 -7
  38. package/dist/cjs/parser/with-parser.d.ts +1 -2
  39. package/dist/cjs/parser/with-parser.js +3 -2
  40. package/dist/cjs/query-builder/delete-query-builder.d.ts +23 -19
  41. package/dist/cjs/query-builder/delete-query-builder.js +15 -15
  42. package/dist/cjs/query-builder/expression-builder.d.ts +4 -13
  43. package/dist/cjs/query-builder/expression-builder.js +12 -21
  44. package/dist/cjs/query-builder/function-builder.d.ts +2 -6
  45. package/dist/cjs/query-builder/function-builder.js +5 -8
  46. package/dist/cjs/query-builder/insert-query-builder.d.ts +12 -8
  47. package/dist/cjs/query-builder/insert-query-builder.js +8 -7
  48. package/dist/cjs/query-builder/join-builder.d.ts +0 -2
  49. package/dist/cjs/query-builder/join-builder.js +8 -8
  50. package/dist/cjs/query-builder/on-conflict-builder.d.ts +24 -20
  51. package/dist/cjs/query-builder/on-conflict-builder.js +17 -17
  52. package/dist/cjs/query-builder/returning-interface.d.ts +3 -1
  53. package/dist/cjs/query-builder/select-query-builder.d.ts +41 -29
  54. package/dist/cjs/query-builder/select-query-builder.js +28 -26
  55. package/dist/cjs/query-builder/update-query-builder.d.ts +30 -24
  56. package/dist/cjs/query-builder/update-query-builder.js +22 -20
  57. package/dist/cjs/query-builder/where-interface.d.ts +20 -16
  58. package/dist/cjs/query-compiler/default-query-compiler.js +1 -1
  59. package/dist/cjs/query-creator.d.ts +10 -129
  60. package/dist/cjs/query-creator.js +5 -136
  61. package/dist/cjs/query-executor/default-query-executor.d.ts +8 -1
  62. package/dist/cjs/query-executor/default-query-executor.js +13 -13
  63. package/dist/cjs/query-executor/noop-query-executor.d.ts +8 -0
  64. package/dist/cjs/query-executor/noop-query-executor.js +8 -1
  65. package/dist/cjs/query-executor/query-executor-provider.d.ts +8 -0
  66. package/dist/cjs/query-executor/query-executor-provider.js +2 -0
  67. package/dist/cjs/query-executor/query-executor.d.ts +7 -0
  68. package/dist/cjs/raw-builder/raw-builder.d.ts +42 -11
  69. package/dist/cjs/raw-builder/raw-builder.js +55 -56
  70. package/dist/cjs/raw-builder/sql.d.ts +323 -0
  71. package/dist/cjs/raw-builder/sql.js +153 -0
  72. package/dist/cjs/schema/alter-table-builder.d.ts +20 -8
  73. package/dist/cjs/schema/column-definition-builder.d.ts +20 -8
  74. package/dist/cjs/schema/create-index-builder.d.ts +3 -1
  75. package/dist/cjs/schema/create-index-builder.js +3 -1
  76. package/dist/cjs/schema/create-table-builder.d.ts +6 -2
  77. package/dist/cjs/schema/create-table-builder.js +6 -2
  78. package/dist/cjs/schema/create-view-builder.d.ts +3 -3
  79. package/dist/cjs/schema/create-view-builder.js +3 -3
  80. package/dist/cjs/util/query-id.js +10 -4
  81. package/dist/cjs/util/random-string.js +65 -2
  82. package/dist/esm/dialect/mysql/mysql-adapter.js +3 -4
  83. package/dist/esm/dialect/mysql/mysql-introspector.js +2 -1
  84. package/dist/esm/dialect/postgres/postgres-adapter.js +3 -2
  85. package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -1
  86. package/dist/esm/index-nodeless.d.ts +2 -0
  87. package/dist/esm/index-nodeless.js +2 -0
  88. package/dist/esm/kysely.d.ts +3 -6
  89. package/dist/esm/kysely.js +7 -12
  90. package/dist/esm/migration/migrator.js +4 -4
  91. package/dist/esm/operation-node/operation-node-transformer.js +1 -1
  92. package/dist/esm/operation-node/raw-node.d.ts +4 -2
  93. package/dist/esm/operation-node/raw-node.js +8 -2
  94. package/dist/esm/parser/complex-expression-parser.d.ts +5 -5
  95. package/dist/esm/parser/complex-expression-parser.js +5 -4
  96. package/dist/esm/parser/filter-parser.d.ts +9 -9
  97. package/dist/esm/parser/filter-parser.js +31 -30
  98. package/dist/esm/parser/group-by-parser.d.ts +1 -2
  99. package/dist/esm/parser/group-by-parser.js +2 -2
  100. package/dist/esm/parser/insert-values-parser.d.ts +1 -2
  101. package/dist/esm/parser/insert-values-parser.js +6 -6
  102. package/dist/esm/parser/join-parser.d.ts +1 -2
  103. package/dist/esm/parser/join-parser.js +8 -7
  104. package/dist/esm/parser/order-by-parser.d.ts +1 -2
  105. package/dist/esm/parser/order-by-parser.js +4 -4
  106. package/dist/esm/parser/parse-utils.d.ts +10 -0
  107. package/dist/esm/parser/parse-utils.js +32 -0
  108. package/dist/esm/parser/reference-parser.d.ts +2 -3
  109. package/dist/esm/parser/reference-parser.js +5 -5
  110. package/dist/esm/parser/select-parser.d.ts +1 -2
  111. package/dist/esm/parser/select-parser.js +5 -5
  112. package/dist/esm/parser/table-parser.d.ts +2 -3
  113. package/dist/esm/parser/table-parser.js +5 -5
  114. package/dist/esm/parser/update-set-parser.d.ts +1 -2
  115. package/dist/esm/parser/update-set-parser.js +2 -2
  116. package/dist/esm/parser/value-parser.d.ts +3 -4
  117. package/dist/esm/parser/value-parser.js +7 -7
  118. package/dist/esm/parser/with-parser.d.ts +1 -2
  119. package/dist/esm/parser/with-parser.js +3 -2
  120. package/dist/esm/query-builder/delete-query-builder.d.ts +23 -19
  121. package/dist/esm/query-builder/delete-query-builder.js +15 -15
  122. package/dist/esm/query-builder/expression-builder.d.ts +4 -13
  123. package/dist/esm/query-builder/expression-builder.js +12 -21
  124. package/dist/esm/query-builder/function-builder.d.ts +2 -6
  125. package/dist/esm/query-builder/function-builder.js +5 -8
  126. package/dist/esm/query-builder/insert-query-builder.d.ts +12 -8
  127. package/dist/esm/query-builder/insert-query-builder.js +8 -7
  128. package/dist/esm/query-builder/join-builder.d.ts +0 -2
  129. package/dist/esm/query-builder/join-builder.js +8 -8
  130. package/dist/esm/query-builder/on-conflict-builder.d.ts +24 -20
  131. package/dist/esm/query-builder/on-conflict-builder.js +17 -17
  132. package/dist/esm/query-builder/returning-interface.d.ts +3 -1
  133. package/dist/esm/query-builder/select-query-builder.d.ts +41 -29
  134. package/dist/esm/query-builder/select-query-builder.js +28 -26
  135. package/dist/esm/query-builder/update-query-builder.d.ts +30 -24
  136. package/dist/esm/query-builder/update-query-builder.js +22 -20
  137. package/dist/esm/query-builder/where-interface.d.ts +20 -16
  138. package/dist/esm/query-compiler/default-query-compiler.js +1 -1
  139. package/dist/esm/query-creator.d.ts +10 -129
  140. package/dist/esm/query-creator.js +5 -136
  141. package/dist/esm/query-executor/default-query-executor.d.ts +8 -1
  142. package/dist/esm/query-executor/default-query-executor.js +13 -13
  143. package/dist/esm/query-executor/noop-query-executor.d.ts +8 -0
  144. package/dist/esm/query-executor/noop-query-executor.js +7 -0
  145. package/dist/esm/query-executor/query-executor-provider.d.ts +8 -0
  146. package/dist/esm/query-executor/query-executor-provider.js +2 -0
  147. package/dist/esm/query-executor/query-executor.d.ts +7 -0
  148. package/dist/esm/raw-builder/raw-builder.d.ts +42 -11
  149. package/dist/esm/raw-builder/raw-builder.js +56 -57
  150. package/dist/esm/raw-builder/sql.d.ts +323 -0
  151. package/dist/esm/raw-builder/sql.js +151 -0
  152. package/dist/esm/schema/alter-table-builder.d.ts +20 -8
  153. package/dist/esm/schema/column-definition-builder.d.ts +20 -8
  154. package/dist/esm/schema/create-index-builder.d.ts +3 -1
  155. package/dist/esm/schema/create-index-builder.js +3 -1
  156. package/dist/esm/schema/create-table-builder.d.ts +6 -2
  157. package/dist/esm/schema/create-table-builder.js +6 -2
  158. package/dist/esm/schema/create-view-builder.d.ts +3 -3
  159. package/dist/esm/schema/create-view-builder.js +3 -3
  160. package/dist/esm/util/query-id.js +10 -4
  161. package/dist/esm/util/random-string.js +65 -2
  162. package/package.json +13 -13
  163. package/dist/cjs/parser/parse-context.d.ts +0 -55
  164. package/dist/cjs/parser/parse-context.js +0 -50
  165. package/dist/cjs/util/private-symbols.d.ts +0 -5
  166. package/dist/cjs/util/private-symbols.js +0 -8
  167. package/dist/esm/parser/parse-context.d.ts +0 -55
  168. package/dist/esm/parser/parse-context.js +0 -47
  169. package/dist/esm/util/private-symbols.d.ts +0 -5
  170. package/dist/esm/util/private-symbols.js +0 -6
@@ -6,9 +6,11 @@ const select_query_node_js_1 = require("../operation-node/select-query-node.js")
6
6
  const table_parser_js_1 = require("../parser/table-parser.js");
7
7
  const with_schema_plugin_js_1 = require("../plugin/with-schema/with-schema-plugin.js");
8
8
  const query_id_js_1 = require("../util/query-id.js");
9
- const object_utils_js_1 = require("../util/object-utils.js");
10
9
  const function_builder_js_1 = require("./function-builder.js");
10
+ const reference_parser_js_1 = require("../parser/reference-parser.js");
11
11
  const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
12
+ const index_nodeless_js_1 = require("../index-nodeless.js");
13
+ const object_utils_js_1 = require("../util/object-utils.js");
12
14
  class ExpressionBuilder {
13
15
  #props;
14
16
  constructor(props) {
@@ -46,14 +48,13 @@ class ExpressionBuilder {
46
48
  * ```
47
49
  */
48
50
  get fn() {
49
- return new function_builder_js_1.FunctionBuilder({ executor: this.#props.executor });
51
+ return new function_builder_js_1.FunctionBuilder();
50
52
  }
51
53
  selectFrom(table) {
52
54
  return new select_query_builder_js_1.SelectQueryBuilder({
53
55
  queryId: (0, query_id_js_1.createQueryId)(),
54
56
  executor: this.#props.executor,
55
- parseContext: this.#props.parseContext,
56
- queryNode: select_query_node_js_1.SelectQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(this.#props.parseContext, table)),
57
+ queryNode: select_query_node_js_1.SelectQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(table)),
57
58
  });
58
59
  }
59
60
  /**
@@ -65,17 +66,6 @@ class ExpressionBuilder {
65
66
  executor: this.#props.executor.withPluginAtFront(new with_schema_plugin_js_1.WithSchemaPlugin(schema)),
66
67
  });
67
68
  }
68
- /**
69
- * See {@link QueryCreator.raw}.
70
- */
71
- raw(sql, parameters) {
72
- return new raw_builder_js_1.RawBuilder({
73
- queryId: (0, query_id_js_1.createQueryId)(),
74
- executor: this.#props.executor,
75
- sql,
76
- parameters,
77
- });
78
- }
79
69
  /**
80
70
  * This can be used to reference columns.
81
71
  *
@@ -97,20 +87,21 @@ class ExpressionBuilder {
97
87
  * )
98
88
  * ```
99
89
  *
100
- * In the next example we use `ref` in a raw expression. Unless you
90
+ * In the next example we use `ref` in a raw sql expression. Unless you
101
91
  * want to be as type-safe as possible, this is probably overkill:
102
92
  *
103
93
  * ```ts
104
94
  * db.update('pet').set({
105
- * name: (eb) => eb.raw('concat(?, ?)', [
106
- * eb.ref('pet.name'),
107
- * suffix,
108
- * ])
95
+ * name: (eb) => sql`concat(${eb.ref('pet.name')}, ${suffix})`
109
96
  * })
110
97
  * ```
111
98
  */
112
99
  ref(reference) {
113
- return this.raw('??', [reference]);
100
+ return new raw_builder_js_1.RawBuilder({
101
+ queryId: (0, query_id_js_1.createQueryId)(),
102
+ plugins: this.#props.executor.plugins,
103
+ rawNode: index_nodeless_js_1.RawNode.createWithChild((0, reference_parser_js_1.parseStringReference)(reference)),
104
+ });
114
105
  }
115
106
  }
116
107
  exports.ExpressionBuilder = ExpressionBuilder;
@@ -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,13 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FunctionBuilder = void 0;
4
+ const index_nodeless_js_1 = require("../index-nodeless.js");
5
+ const reference_parser_js_1 = require("../parser/reference-parser.js");
4
6
  const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
5
- const object_utils_js_1 = require("../util/object-utils.js");
6
7
  const query_id_js_1 = require("../util/query-id.js");
7
8
  /**
8
9
  * Helpers for type safe SQL function calls.
9
10
  *
10
- * You can always use {@link Kysely.raw} to call functions and build arbitrary
11
+ * You can always use the {@link sql} tag to call functions and build arbitrary
11
12
  * expressions. This module simply has shortcuts for most common function calls.
12
13
  *
13
14
  * ### Examples
@@ -37,9 +38,7 @@ const query_id_js_1 = require("../util/query-id.js");
37
38
  * ```
38
39
  */
39
40
  class FunctionBuilder {
40
- #props;
41
- constructor(props) {
42
- this.#props = (0, object_utils_js_1.freeze)(props);
41
+ constructor() {
43
42
  this.min = this.min.bind(this);
44
43
  this.max = this.max.bind(this);
45
44
  this.avg = this.avg.bind(this);
@@ -154,9 +153,7 @@ class FunctionBuilder {
154
153
  #oneArgFunction(fn, column) {
155
154
  return new raw_builder_js_1.RawBuilder({
156
155
  queryId: (0, query_id_js_1.createQueryId)(),
157
- executor: this.#props.executor,
158
- sql: `${fn}(??)`,
159
- parameters: [column],
156
+ rawNode: index_nodeless_js_1.RawNode.create([`${fn}(`, ')'], [(0, reference_parser_js_1.parseStringReference)(column)]),
160
157
  });
161
158
  }
162
159
  }
@@ -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
  }
@@ -21,7 +21,7 @@ class InsertQueryBuilder {
21
21
  this.#props = (0, object_utils_js_1.freeze)(props);
22
22
  }
23
23
  values(args) {
24
- const [columns, values] = (0, insert_values_parser_js_1.parseInsertObjectOrList)(this.#props.parseContext, args);
24
+ const [columns, values] = (0, insert_values_parser_js_1.parseInsertObjectOrList)(args);
25
25
  return new InsertQueryBuilder({
26
26
  ...this.#props,
27
27
  queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
@@ -82,7 +82,7 @@ class InsertQueryBuilder {
82
82
  return new InsertQueryBuilder({
83
83
  ...this.#props,
84
84
  queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
85
- values: (0, complex_expression_parser_js_1.parseComplexExpression)(this.#props.parseContext, expression),
85
+ values: (0, complex_expression_parser_js_1.parseComplexExpression)(expression),
86
86
  }),
87
87
  });
88
88
  }
@@ -176,6 +176,8 @@ class InsertQueryBuilder {
176
176
  * the unique index is an expression index:
177
177
  *
178
178
  * ```ts
179
+ * import { sql } from 'kysely'
180
+ *
179
181
  * await db
180
182
  * .insertInto('pet')
181
183
  * .values({
@@ -183,7 +185,7 @@ class InsertQueryBuilder {
183
185
  * species: 'cat',
184
186
  * })
185
187
  * .onConflict((oc) => oc
186
- * .expression(db.raw('lower(name)'))
188
+ * .expression(sql`lower(name)`)
187
189
  * .doUpdateSet({ species: 'hamster' })
188
190
  * )
189
191
  * .execute()
@@ -271,7 +273,6 @@ class InsertQueryBuilder {
271
273
  queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
272
274
  onConflict: callback(new on_conflict_builder_js_1.OnConflictBuilder({
273
275
  onConflictNode: on_conflict_node_js_1.OnConflictNode.create(),
274
- parseContext: this.#props.parseContext,
275
276
  })).toOperationNode(),
276
277
  }),
277
278
  });
@@ -298,14 +299,14 @@ class InsertQueryBuilder {
298
299
  return new InsertQueryBuilder({
299
300
  ...this.#props,
300
301
  queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
301
- onDuplicateKey: on_duplicate_key_node_js_1.OnDuplicateKeyNode.create((0, update_set_parser_js_1.parseUpdateObject)(this.#props.parseContext, updates)),
302
+ onDuplicateKey: on_duplicate_key_node_js_1.OnDuplicateKeyNode.create((0, update_set_parser_js_1.parseUpdateObject)(updates)),
302
303
  }),
303
304
  });
304
305
  }
305
306
  returning(selection) {
306
307
  return new InsertQueryBuilder({
307
308
  ...this.#props,
308
- queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(this.#props.parseContext, selection)),
309
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(selection)),
309
310
  });
310
311
  }
311
312
  returningAll() {
@@ -415,7 +416,7 @@ class InsertQueryBuilder {
415
416
  const compildQuery = this.compile();
416
417
  const query = compildQuery.query;
417
418
  const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
418
- if (this.#props.parseContext.adapter.supportsReturning && query.returning) {
419
+ if (this.#props.executor.adapter.supportsReturning && query.returning) {
419
420
  return result.rows;
420
421
  }
421
422
  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
  }
@@ -13,13 +13,13 @@ class JoinBuilder {
13
13
  on(...args) {
14
14
  return new JoinBuilder({
15
15
  ...this.#props,
16
- joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseOnFilter)(this.#props.parseContext, args)),
16
+ joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseOnFilter)(args)),
17
17
  });
18
18
  }
19
19
  orOn(...args) {
20
20
  return new JoinBuilder({
21
21
  ...this.#props,
22
- joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseOnFilter)(this.#props.parseContext, args)),
22
+ joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseOnFilter)(args)),
23
23
  });
24
24
  }
25
25
  /**
@@ -31,7 +31,7 @@ class JoinBuilder {
31
31
  onRef(lhs, op, rhs) {
32
32
  return new JoinBuilder({
33
33
  ...this.#props,
34
- joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
34
+ joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
35
35
  });
36
36
  }
37
37
  /**
@@ -43,7 +43,7 @@ class JoinBuilder {
43
43
  orOnRef(lhs, op, rhs) {
44
44
  return new JoinBuilder({
45
45
  ...this.#props,
46
- joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
46
+ joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
47
47
  });
48
48
  }
49
49
  /**
@@ -55,7 +55,7 @@ class JoinBuilder {
55
55
  onExists(arg) {
56
56
  return new JoinBuilder({
57
57
  ...this.#props,
58
- joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
58
+ joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
59
59
  });
60
60
  }
61
61
  /**
@@ -67,7 +67,7 @@ class JoinBuilder {
67
67
  onNotExists(arg) {
68
68
  return new JoinBuilder({
69
69
  ...this.#props,
70
- joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
70
+ joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
71
71
  });
72
72
  }
73
73
  /**
@@ -79,7 +79,7 @@ class JoinBuilder {
79
79
  orOnExists(arg) {
80
80
  return new JoinBuilder({
81
81
  ...this.#props,
82
- joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
82
+ joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
83
83
  });
84
84
  }
85
85
  /**
@@ -91,7 +91,7 @@ class JoinBuilder {
91
91
  orOnNotExists(arg) {
92
92
  return new JoinBuilder({
93
93
  ...this.#props,
94
- joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
94
+ joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
95
95
  });
96
96
  }
97
97
  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,7 @@ 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 `sql\`your operator\``.
74
73
  *
75
74
  * ```ts
76
75
  * const persons = await db
@@ -140,7 +139,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
140
139
  *
141
140
  * A `where in` query can be built by using the `in` operator and an array
142
141
  * of values. The values in the array can also be subqueries or raw
143
- * instances.
142
+ * {@link sql} expressions.
144
143
  *
145
144
  * ```ts
146
145
  * const persons = await db
@@ -156,15 +155,17 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
156
155
  * select * from "person" where "id" in ($1, $2, $3)
157
156
  * ```
158
157
  *
159
- * If everything else fails, you can always pass {@link Kysely.raw | raw}
158
+ * If everything else fails, you can always use the {@link sql} tag
160
159
  * as any of the arguments, including the operator:
161
160
  *
162
161
  * ```ts
162
+ * import { sql } from 'kysely'
163
+ *
163
164
  * const persons = await db
164
165
  * .selectFrom('person')
165
166
  * .selectAll()
166
167
  * .where(
167
- * db.raw('coalesce(first_name, last_name)'),
168
+ * sql`coalesce(first_name, last_name)`,
168
169
  * 'like',
169
170
  * '%' + name + '%',
170
171
  * )
@@ -199,24 +200,25 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
199
200
  * ```
200
201
  *
201
202
  * 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.
203
+ * (except for the raw {@link sql} expressions). By default kysely only
204
+ * allows you to refer to columns that exist in the database **and**
205
+ * can be referred to in the current query and context.
205
206
  *
206
207
  * Sometimes you may want to refer to columns that come from the user
207
208
  * input and thus are not available at compile time.
208
209
  *
209
- * You have two options, `db.raw` or `db.dynamic`. The example below
210
+ * You have two options, the {@link sql} tag or `db.dynamic`. The example below
210
211
  * uses both:
211
212
  *
212
213
  * ```ts
214
+ * import { sql } from 'kysely'
213
215
  * const { ref } = db.dynamic
214
216
  *
215
217
  * const persons = await db
216
218
  * .selectFrom('person')
217
219
  * .selectAll()
218
220
  * .where(ref(columnFromUserInput), '=', 1)
219
- * .orWhere(db.raw('??', [columnFromUserInput]), '=', 2)
221
+ * .orWhere(sql.id(columnFromUserInput), '=', 2)
220
222
  * .execute()
221
223
  * ```
222
224
  */
@@ -381,7 +383,6 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
381
383
  }
382
384
  export interface OnConflictBuilderProps {
383
385
  readonly onConflictNode: OnConflictNode;
384
- readonly parseContext: ParseContext;
385
386
  }
386
387
  export declare type OnConflictDatabase<DB, TB extends keyof DB> = {
387
388
  [K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
@@ -425,7 +426,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
425
426
  * ```
426
427
  *
427
428
  * Operator can be any supported operator or if the typings don't support it
428
- * you can always use `db.raw('your operator')`.
429
+ * you can always use `sql\`your operator\``.
429
430
  *
430
431
  * ```ts
431
432
  * const persons = await db
@@ -495,7 +496,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
495
496
  *
496
497
  * A `where in` query can be built by using the `in` operator and an array
497
498
  * of values. The values in the array can also be subqueries or raw
498
- * instances.
499
+ * {@link sql} expressions.
499
500
  *
500
501
  * ```ts
501
502
  * const persons = await db
@@ -511,15 +512,17 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
511
512
  * select * from "person" where "id" in ($1, $2, $3)
512
513
  * ```
513
514
  *
514
- * If everything else fails, you can always pass {@link Kysely.raw | raw}
515
+ * If everything else fails, you can always use the {@link sql} tag
515
516
  * as any of the arguments, including the operator:
516
517
  *
517
518
  * ```ts
519
+ * import { sql } from 'kysely'
520
+ *
518
521
  * const persons = await db
519
522
  * .selectFrom('person')
520
523
  * .selectAll()
521
524
  * .where(
522
- * db.raw('coalesce(first_name, last_name)'),
525
+ * sql`coalesce(first_name, last_name)`,
523
526
  * 'like',
524
527
  * '%' + name + '%',
525
528
  * )
@@ -554,24 +557,25 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
554
557
  * ```
555
558
  *
556
559
  * 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.
560
+ * (except for the raw {@link sql} expressions). By default kysely only
561
+ * allows you to refer to columns that exist in the database **and**
562
+ * can be referred to in the current query and context.
560
563
  *
561
564
  * Sometimes you may want to refer to columns that come from the user
562
565
  * input and thus are not available at compile time.
563
566
  *
564
- * You have two options, `db.raw` or `db.dynamic`. The example below
567
+ * You have two options, the {@link sql} tag or `db.dynamic`. The example below
565
568
  * uses both:
566
569
  *
567
570
  * ```ts
571
+ * import { sql } from 'kysely'
568
572
  * const { ref } = db.dynamic
569
573
  *
570
574
  * const persons = await db
571
575
  * .selectFrom('person')
572
576
  * .selectAll()
573
577
  * .where(ref(columnFromUserInput), '=', 1)
574
- * .orWhere(db.raw('??', [columnFromUserInput]), '=', 2)
578
+ * .orWhere(sql.id(columnFromUserInput), '=', 2)
575
579
  * .execute()
576
580
  * ```
577
581
  */