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
@@ -6,22 +6,22 @@ import { TableNode } from '../operation-node/table-node.js';
6
6
  import { isReadonlyArray, isString } from '../util/object-utils.js';
7
7
  import { parseComplexExpression, } from './complex-expression-parser.js';
8
8
  import { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';
9
- export function parseReferenceExpressionOrList(ctx, arg) {
9
+ export function parseReferenceExpressionOrList(arg) {
10
10
  if (isReadonlyArray(arg)) {
11
- return arg.map((it) => parseReferenceExpression(ctx, it));
11
+ return arg.map((it) => parseReferenceExpression(it));
12
12
  }
13
13
  else {
14
- return [parseReferenceExpression(ctx, arg)];
14
+ return [parseReferenceExpression(arg)];
15
15
  }
16
16
  }
17
- export function parseReferenceExpression(ctx, exp) {
17
+ export function parseReferenceExpression(exp) {
18
18
  if (isString(exp)) {
19
19
  return parseStringReference(exp);
20
20
  }
21
21
  else if (isDynamicReferenceBuilder(exp)) {
22
22
  return exp.toOperationNode();
23
23
  }
24
- return parseComplexExpression(ctx, exp);
24
+ return parseComplexExpression(exp);
25
25
  }
26
26
  export function parseStringReference(ref) {
27
27
  const COLUMN_SEPARATOR = '.';
@@ -3,7 +3,6 @@ import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select
3
3
  import { SelectionNode } from '../operation-node/selection-node.js';
4
4
  import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
5
5
  import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
6
- import { ParseContext } from './parse-context.js';
7
6
  import { AliasedComplexExpression } from './complex-expression-parser.js';
8
7
  import { Selectable, SelectType } from '../util/column-type.js';
9
8
  export declare type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | DynamicReferenceBuilder<any> | AliasedComplexExpression<DB, TB>;
@@ -29,6 +28,6 @@ declare type AllSelection<DB, TB extends keyof DB> = Selectable<{
29
28
  [T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
30
29
  }[TB];
31
30
  }>;
32
- export declare function parseSelectExpressionOrList(ctx: ParseContext, selection: SelectExpressionOrList<any, any>): SelectionNode[];
31
+ export declare function parseSelectExpressionOrList(selection: SelectExpressionOrList<any, any>): SelectionNode[];
33
32
  export declare function parseSelectAll(table?: string | string[]): SelectionNode[];
34
33
  export {};
@@ -4,15 +4,15 @@ import { SelectionNode } from '../operation-node/selection-node.js';
4
4
  import { parseAliasedStringReference } from './reference-parser.js';
5
5
  import { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';
6
6
  import { parseAliasedComplexExpression, } from './complex-expression-parser.js';
7
- export function parseSelectExpressionOrList(ctx, selection) {
7
+ export function parseSelectExpressionOrList(selection) {
8
8
  if (isReadonlyArray(selection)) {
9
- return selection.map((it) => parseSelectExpression(ctx, it));
9
+ return selection.map((it) => parseSelectExpression(it));
10
10
  }
11
11
  else {
12
- return [parseSelectExpression(ctx, selection)];
12
+ return [parseSelectExpression(selection)];
13
13
  }
14
14
  }
15
- function parseSelectExpression(ctx, selection) {
15
+ function parseSelectExpression(selection) {
16
16
  if (isString(selection)) {
17
17
  return SelectionNode.create(parseAliasedStringReference(selection));
18
18
  }
@@ -20,7 +20,7 @@ function parseSelectExpression(ctx, selection) {
20
20
  return SelectionNode.create(selection.toOperationNode());
21
21
  }
22
22
  else {
23
- return SelectionNode.create(parseAliasedComplexExpression(ctx, selection));
23
+ return SelectionNode.create(parseAliasedComplexExpression(selection));
24
24
  }
25
25
  }
26
26
  export function parseSelectAll(table) {
@@ -3,7 +3,6 @@ import { TableNode } from '../operation-node/table-node.js';
3
3
  import { AnyAliasedRawBuilder, Nullable } from '../util/type-utils.js';
4
4
  import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
5
5
  import { TableExpressionNode } from '../operation-node/operation-node-utils.js';
6
- import { ParseContext } from './parse-context.js';
7
6
  import { AliasedComplexExpression } from './complex-expression-parser.js';
8
7
  export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AliasedComplexExpression<DB, TB>;
9
8
  export declare type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
@@ -25,8 +24,8 @@ export declare type TableExpressionTables<DB, TB extends keyof DB, TE> = TB | Ex
25
24
  declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : TE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : never;
26
25
  declare type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
27
26
  declare type AnyTable<DB> = keyof DB & string;
28
- export declare function parseTableExpressionOrList(ctx: ParseContext, table: TableExpressionOrList<any, any>): TableExpressionNode[];
29
- export declare function parseTableExpression(ctx: ParseContext, table: TableExpression<any, any>): TableExpressionNode;
27
+ export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): TableExpressionNode[];
28
+ export declare function parseTableExpression(table: TableExpression<any, any>): TableExpressionNode;
30
29
  export declare function parseAliasedTable(from: string): TableExpressionNode;
31
30
  export declare function parseTable(from: string): TableNode;
32
31
  export {};
@@ -3,20 +3,20 @@ import { isReadonlyArray, isString } from '../util/object-utils.js';
3
3
  import { AliasNode } from '../operation-node/alias-node.js';
4
4
  import { TableNode } from '../operation-node/table-node.js';
5
5
  import { parseAliasedComplexExpression, } from './complex-expression-parser.js';
6
- export function parseTableExpressionOrList(ctx, table) {
6
+ export function parseTableExpressionOrList(table) {
7
7
  if (isReadonlyArray(table)) {
8
- return table.map((it) => parseTableExpression(ctx, it));
8
+ return table.map((it) => parseTableExpression(it));
9
9
  }
10
10
  else {
11
- return [parseTableExpression(ctx, table)];
11
+ return [parseTableExpression(table)];
12
12
  }
13
13
  }
14
- export function parseTableExpression(ctx, table) {
14
+ export function parseTableExpression(table) {
15
15
  if (isString(table)) {
16
16
  return parseAliasedTable(table);
17
17
  }
18
18
  else {
19
- return parseAliasedComplexExpression(ctx, table);
19
+ return parseAliasedComplexExpression(table);
20
20
  }
21
21
  }
22
22
  export function parseAliasedTable(from) {
@@ -1,8 +1,7 @@
1
1
  import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
2
2
  import { UpdateKeys, UpdateType } from '../util/column-type.js';
3
- import { ParseContext } from './parse-context.js';
4
3
  import { ValueExpression } from './value-parser.js';
5
4
  export declare type MutationObject<DB, TB extends keyof DB> = {
6
5
  [C in UpdateKeys<DB[TB]>]?: ValueExpression<DB, TB, UpdateType<DB[TB][C]>>;
7
6
  };
8
- export declare function parseUpdateObject(ctx: ParseContext, row: MutationObject<any, any>): ReadonlyArray<ColumnUpdateNode>;
7
+ export declare function parseUpdateObject(row: MutationObject<any, any>): ReadonlyArray<ColumnUpdateNode>;
@@ -2,10 +2,10 @@
2
2
  import { ColumnNode } from '../operation-node/column-node.js';
3
3
  import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
4
4
  import { parseValueExpression } from './value-parser.js';
5
- export function parseUpdateObject(ctx, row) {
5
+ export function parseUpdateObject(row) {
6
6
  return Object.entries(row)
7
7
  .filter(([_, value]) => value !== undefined)
8
8
  .map(([key, value]) => {
9
- return ColumnUpdateNode.create(ColumnNode.create(key), parseValueExpression(ctx, value));
9
+ return ColumnUpdateNode.create(ColumnNode.create(key), parseValueExpression(value));
10
10
  });
11
11
  }
@@ -1,10 +1,9 @@
1
1
  import { ValueExpressionNode } from '../operation-node/operation-node-utils.js';
2
2
  import { ValueNode } from '../operation-node/value-node.js';
3
- import { ParseContext } from './parse-context.js';
4
3
  import { SelectQueryNode } from '../operation-node/select-query-node.js';
5
4
  import { RawNode } from '../operation-node/raw-node.js';
6
5
  import { ComplexExpression } from './complex-expression-parser.js';
7
- export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ComplexExpression<DB, TB>;
6
+ export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ComplexExpression<DB, TB, V>;
8
7
  export declare type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
9
- export declare function parseValueExpressionOrList(ctx: ParseContext, arg: ValueExpressionOrList<any, any, unknown>): ValueExpressionNode;
10
- export declare function parseValueExpression(ctx: ParseContext, exp: ValueExpression<any, any, unknown>): ValueNode | SelectQueryNode | RawNode;
8
+ export declare function parseValueExpressionOrList(arg: ValueExpressionOrList<any, any, unknown>): ValueExpressionNode;
9
+ export declare function parseValueExpression(exp: ValueExpression<any, any, unknown>): ValueNode | SelectQueryNode | RawNode;
@@ -4,23 +4,23 @@ import { ValueListNode } from '../operation-node/value-list-node.js';
4
4
  import { ValueNode } from '../operation-node/value-node.js';
5
5
  import { isReadonlyArray } from '../util/object-utils.js';
6
6
  import { parseComplexExpression, isComplexExpression, } from './complex-expression-parser.js';
7
- export function parseValueExpressionOrList(ctx, arg) {
7
+ export function parseValueExpressionOrList(arg) {
8
8
  if (isReadonlyArray(arg)) {
9
- return parseValueExpressionList(ctx, arg);
9
+ return parseValueExpressionList(arg);
10
10
  }
11
11
  else {
12
- return parseValueExpression(ctx, arg);
12
+ return parseValueExpression(arg);
13
13
  }
14
14
  }
15
- export function parseValueExpression(ctx, exp) {
15
+ export function parseValueExpression(exp) {
16
16
  if (isComplexExpression(exp)) {
17
- return parseComplexExpression(ctx, exp);
17
+ return parseComplexExpression(exp);
18
18
  }
19
19
  return ValueNode.create(exp);
20
20
  }
21
- function parseValueExpressionList(ctx, arg) {
21
+ function parseValueExpressionList(arg) {
22
22
  if (arg.some(isComplexExpression)) {
23
- return ValueListNode.create(arg.map((it) => parseValueExpression(ctx, it)));
23
+ return ValueListNode.create(arg.map((it) => parseValueExpression(it)));
24
24
  }
25
25
  return PrimitiveValueListNode.create(arg);
26
26
  }
@@ -5,7 +5,6 @@ import { InsertQueryBuilder } from '../query-builder/insert-query-builder.js';
5
5
  import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
6
6
  import { QueryCreator } from '../query-creator.js';
7
7
  import { RawBuilder } from '../raw-builder/raw-builder.js';
8
- import { ParseContext } from './parse-context.js';
9
8
  export declare type CommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB>) => CommonTableExpressionOutput<DB, CN>;
10
9
  export declare type RecursiveCommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB & Record<ExtractTableFromCommonTableExpressionName<CN>, ExtractRowFromCommonTableExpressionName<CN>>>) => CommonTableExpressionOutput<DB, CN>;
11
10
  export declare type QueryCreatorWithCommonTableExpression<DB, CN extends string, CTE> = QueryCreator<DB & Record<ExtractTableFromCommonTableExpressionName<CN>, ExtractRowFromCommonTableExpression<CTE>>>;
@@ -37,5 +36,5 @@ declare type ExtractRowFromCommonTableExpressionName<CN extends string> = CN ext
37
36
  * Parses a string like 'id, first_name' into a type 'id' | 'first_name'
38
37
  */
39
38
  declare type ExtractColumnNamesFromColumnList<R extends string> = R extends `${infer C}, ${infer RS}` ? C | ExtractColumnNamesFromColumnList<RS> : R;
40
- export declare function parseCommonTableExpression(ctx: ParseContext, name: string, expression: CommonTableExpression<any, any>): CommonTableExpressionNode;
39
+ export declare function parseCommonTableExpression(name: string, expression: CommonTableExpression<any, any>): CommonTableExpressionNode;
41
40
  export {};
@@ -1,8 +1,9 @@
1
1
  /// <reference types="./with-parser.d.ts" />
2
2
  import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
3
3
  import { CommonTableExpressionNameNode } from '../operation-node/common-table-expression-name-node.js';
4
- export function parseCommonTableExpression(ctx, name, expression) {
5
- const builder = expression(ctx.createQueryCreator());
4
+ import { createQueryCreator } from './parse-utils.js';
5
+ export function parseCommonTableExpression(name, expression) {
6
+ const builder = expression(createQueryCreator());
6
7
  return CommonTableExpressionNode.create(parseCommonTableExpressionName(name), builder.toOperationNode());
7
8
  }
8
9
  function parseCommonTableExpressionName(name) {
@@ -1,6 +1,7 @@
1
- import { DeleteQueryNode, UpdateQueryNode } from '../../index-nodeless.js';
1
+ import { DeleteQueryNode } from '../../operation-node/delete-query-node.js';
2
2
  import { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';
3
3
  import { SelectQueryNode } from '../../operation-node/select-query-node.js';
4
+ import { UpdateQueryNode } from '../../operation-node/update-query-node.js';
4
5
  export declare class DeduplicateJoinsTransformer extends OperationNodeTransformer {
5
6
  #private;
6
7
  protected transformSelectQuery(node: SelectQueryNode): SelectQueryNode;
@@ -10,7 +10,6 @@ import { AnyRawBuilder, MergePartial, SingleResultType } from '../util/type-util
10
10
  import { Compilable } from '../util/compilable.js';
11
11
  import { QueryExecutor } from '../query-executor/query-executor.js';
12
12
  import { QueryId } from '../util/query-id.js';
13
- import { ParseContext } from '../parser/parse-context.js';
14
13
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
15
14
  import { WhereInterface } from './where-interface.js';
16
15
  import { JoinInterface } from './join-interface.js';
@@ -47,7 +46,13 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
47
46
  * ```
48
47
  *
49
48
  * Operator can be any supported operator or if the typings don't support it
50
- * you can always use `db.raw('your operator')`.
49
+ * you can always use
50
+ *
51
+ * ```ts
52
+ * sql`your operator`
53
+ * ```
54
+ *
55
+ * The next example uses the `>` operator:
51
56
  *
52
57
  * ```ts
53
58
  * const persons = await db
@@ -63,8 +68,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
63
68
  * select * from "person" where "id" > $1
64
69
  * ```
65
70
  *
66
- * The `where` methods don't change the type of the query. You can add
67
- * conditional `where`s easily by doing something like this:
71
+ * `where` methods don't change the type of the query. You can add
72
+ * conditional statements easily by doing something like this:
68
73
  *
69
74
  * ```ts
70
75
  * let query = db
@@ -72,6 +77,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
72
77
  * .selectAll()
73
78
  *
74
79
  * if (firstName) {
80
+ * // The query builder is immutable. Remember to reassign
81
+ * // the result back to the query variable.
75
82
  * query = query.where('first_name', '=', firstName)
76
83
  * }
77
84
  *
@@ -79,8 +86,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
79
86
  * ```
80
87
  *
81
88
  * This is true for basically all methods execpt the `select` and
82
- * `returning` methods, which DO change the return type of the
83
- * query.
89
+ * `returning`, that __do__ change the return type of the query.
84
90
  *
85
91
  * Both the first and third argument can also be subqueries.
86
92
  * A subquery is defined by passing a function and calling
@@ -117,7 +123,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
117
123
  *
118
124
  * A `where in` query can be built by using the `in` operator and an array
119
125
  * of values. The values in the array can also be subqueries or raw
120
- * instances.
126
+ * {@link sql} expressions.
121
127
  *
122
128
  * ```ts
123
129
  * const persons = await db
@@ -133,15 +139,17 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
133
139
  * select * from "person" where "id" in ($1, $2, $3)
134
140
  * ```
135
141
  *
136
- * If everything else fails, you can always pass {@link Kysely.raw | raw}
142
+ * If everything else fails, you can always use the {@link sql} tag
137
143
  * as any of the arguments, including the operator:
138
144
  *
139
145
  * ```ts
146
+ * import { sql } from 'kysely'
147
+ *
140
148
  * const persons = await db
141
149
  * .selectFrom('person')
142
150
  * .selectAll()
143
151
  * .where(
144
- * db.raw('coalesce(first_name, last_name)'),
152
+ * sql`coalesce(first_name, last_name)`,
145
153
  * 'like',
146
154
  * '%' + name + '%',
147
155
  * )
@@ -176,24 +184,25 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
176
184
  * ```
177
185
  *
178
186
  * In all examples above the columns were known at compile time
179
- * (except for the `raw` expressions). By default kysely only allows
180
- * you to refer to columns that exist in the database **and** can be
181
- * referred to in the current query and context.
187
+ * (except for the raw {@link sql} expressions). By default kysely only
188
+ * allows you to refer to columns that exist in the database **and**
189
+ * can be referred to in the current query and context.
182
190
  *
183
191
  * Sometimes you may want to refer to columns that come from the user
184
192
  * input and thus are not available at compile time.
185
193
  *
186
- * You have two options, `db.raw` or `db.dynamic`. The example below
194
+ * You have two options, the {@link sql} tag or `db.dynamic`. The example below
187
195
  * uses both:
188
196
  *
189
197
  * ```ts
198
+ * import { sql } from 'kysely'
190
199
  * const { ref } = db.dynamic
191
200
  *
192
201
  * const persons = await db
193
202
  * .selectFrom('person')
194
203
  * .selectAll()
195
204
  * .where(ref(columnFromUserInput), '=', 1)
196
- * .orWhere(db.raw('??', [columnFromUserInput]), '=', 2)
205
+ * .orWhere(sql.id(columnFromUserInput), '=', 2)
197
206
  * .execute()
198
207
  * ```
199
208
  */
@@ -327,13 +336,14 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
327
336
  /**
328
337
  * Adds a `where exists` clause to the query.
329
338
  *
330
- * You can either use a subquery or a raw instance.
339
+ * You can either use a subquery or a raw {@link sql} snippet.
331
340
  *
332
341
  * ### Examples
333
342
  *
334
343
  * The query below selets all persons that own a pet named Catto:
335
344
  *
336
345
  * ```ts
346
+ * const petName = 'Catto'
337
347
  * const persons = await db
338
348
  * .selectFrom('person')
339
349
  * .selectAll()
@@ -341,7 +351,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
341
351
  * .selectFrom('pet')
342
352
  * .select('pet.id')
343
353
  * .whereRef('person.id', '=', 'pet.owner_id')
344
- * .where('pet.name', '=', 'Catto')
354
+ * .where('pet.name', '=', petName)
345
355
  * )
346
356
  * .execute()
347
357
  * ```
@@ -358,16 +368,16 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
358
368
  * )
359
369
  * ```
360
370
  *
361
- * The same query as in the previous example but with using raw:
371
+ * The same query as in the previous example but with using raw {@link sql}:
362
372
  *
363
373
  * ```ts
374
+ * import { sql } from 'kysely'
375
+ *
376
+ * const petName = 'Catto'
364
377
  * db.selectFrom('person')
365
378
  * .selectAll()
366
379
  * .whereExists(
367
- * db.raw(
368
- * '(select pet.id from pet where person.id = pet.owner_id and pet.name = ?)',
369
- * ['Catto']
370
- * )
380
+ * sql`(select pet.id from pet where person.id = pet.owner_id and pet.name = ${petName})`
371
381
  * )
372
382
  * ```
373
383
  *
@@ -565,6 +575,8 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
565
575
  * Return arbitrary expressions:
566
576
  *
567
577
  * ```ts
578
+ * import { sql } from 'kysely'
579
+ *
568
580
  * const { id, full_name, first_pet_id } = await db
569
581
  * .insertInto('person')
570
582
  * .values({
@@ -573,7 +585,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
573
585
  * })
574
586
  * .returning([
575
587
  * 'id as id',
576
- * db.raw<string>(`concat(first_name, ' ', last_name)`).as('full_name'),
588
+ * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
577
589
  * (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
578
590
  * ])
579
591
  * .executeTakeFirst()
@@ -736,5 +748,4 @@ export interface DeleteQueryBuilderProps {
736
748
  readonly queryId: QueryId;
737
749
  readonly queryNode: DeleteQueryNode;
738
750
  readonly executor: QueryExecutor;
739
- readonly parseContext: ParseContext;
740
751
  }
@@ -18,79 +18,79 @@ export class DeleteQueryBuilder {
18
18
  where(...args) {
19
19
  return new DeleteQueryBuilder({
20
20
  ...this.#props,
21
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhereFilter(this.#props.parseContext, args)),
21
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhereFilter(args)),
22
22
  });
23
23
  }
24
24
  whereRef(lhs, op, rhs) {
25
25
  return new DeleteQueryBuilder({
26
26
  ...this.#props,
27
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
27
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferenceFilter(lhs, op, rhs)),
28
28
  });
29
29
  }
30
30
  orWhere(...args) {
31
31
  return new DeleteQueryBuilder({
32
32
  ...this.#props,
33
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhereFilter(this.#props.parseContext, args)),
33
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhereFilter(args)),
34
34
  });
35
35
  }
36
36
  orWhereRef(lhs, op, rhs) {
37
37
  return new DeleteQueryBuilder({
38
38
  ...this.#props,
39
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
39
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferenceFilter(lhs, op, rhs)),
40
40
  });
41
41
  }
42
42
  whereExists(arg) {
43
43
  return new DeleteQueryBuilder({
44
44
  ...this.#props,
45
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
45
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExistFilter(arg)),
46
46
  });
47
47
  }
48
48
  whereNotExists(arg) {
49
49
  return new DeleteQueryBuilder({
50
50
  ...this.#props,
51
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
51
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExistFilter(arg)),
52
52
  });
53
53
  }
54
54
  orWhereExists(arg) {
55
55
  return new DeleteQueryBuilder({
56
56
  ...this.#props,
57
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
57
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExistFilter(arg)),
58
58
  });
59
59
  }
60
60
  orWhereNotExists(arg) {
61
61
  return new DeleteQueryBuilder({
62
62
  ...this.#props,
63
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
63
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExistFilter(arg)),
64
64
  });
65
65
  }
66
66
  innerJoin(...args) {
67
67
  return new DeleteQueryBuilder({
68
68
  ...this.#props,
69
- queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'InnerJoin', args)),
69
+ queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('InnerJoin', args)),
70
70
  });
71
71
  }
72
72
  leftJoin(...args) {
73
73
  return new DeleteQueryBuilder({
74
74
  ...this.#props,
75
- queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'LeftJoin', args)),
75
+ queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('LeftJoin', args)),
76
76
  });
77
77
  }
78
78
  rightJoin(...args) {
79
79
  return new DeleteQueryBuilder({
80
80
  ...this.#props,
81
- queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'RightJoin', args)),
81
+ queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('RightJoin', args)),
82
82
  });
83
83
  }
84
84
  fullJoin(...args) {
85
85
  return new DeleteQueryBuilder({
86
86
  ...this.#props,
87
- queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(this.#props.parseContext, 'FullJoin', args)),
87
+ queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('FullJoin', args)),
88
88
  });
89
89
  }
90
90
  returning(selection) {
91
91
  return new DeleteQueryBuilder({
92
92
  ...this.#props,
93
- queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectExpressionOrList(this.#props.parseContext, selection)),
93
+ queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectExpressionOrList(selection)),
94
94
  });
95
95
  }
96
96
  returningAll() {
@@ -136,7 +136,7 @@ export class DeleteQueryBuilder {
136
136
  orderBy(orderBy, direction) {
137
137
  return new DeleteQueryBuilder({
138
138
  ...this.#props,
139
- queryNode: DeleteQueryNode.cloneWithOrderByItem(this.#props.queryNode, parseOrderBy(this.#props.parseContext, orderBy, direction)),
139
+ queryNode: DeleteQueryNode.cloneWithOrderByItem(this.#props.queryNode, parseOrderBy(orderBy, direction)),
140
140
  });
141
141
  }
142
142
  /**
@@ -263,7 +263,7 @@ export class DeleteQueryBuilder {
263
263
  const compildQuery = this.compile();
264
264
  const query = compildQuery.query;
265
265
  const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
266
- if (this.#props.parseContext.adapter.supportsReturning && query.returning) {
266
+ if (this.#props.executor.adapter.supportsReturning && query.returning) {
267
267
  return result.rows;
268
268
  }
269
269
  else {
@@ -1,10 +1,9 @@
1
1
  import { SelectQueryBuilder } from './select-query-builder.js';
2
2
  import { TableExpression, TableExpressionDatabase, TableExpressionTables } from '../parser/table-parser.js';
3
- import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
4
- import { ParseContext } from '../parser/parse-context.js';
5
3
  import { FunctionBuilder } from './function-builder.js';
6
4
  import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
7
5
  import { RawBuilder } from '../raw-builder/raw-builder.js';
6
+ import { QueryExecutor } from '../query-executor/query-executor.js';
8
7
  export declare class ExpressionBuilder<DB, TB extends keyof DB> {
9
8
  #private;
10
9
  constructor(props: ExpressionBuilderProps);
@@ -90,10 +89,6 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
90
89
  * See {@link QueryCreator.withSchema}
91
90
  */
92
91
  withSchema(schema: string): ExpressionBuilder<DB, TB>;
93
- /**
94
- * See {@link QueryCreator.raw}.
95
- */
96
- raw<T = unknown>(sql: string, parameters?: unknown[]): RawBuilder<T>;
97
92
  /**
98
93
  * This can be used to reference columns.
99
94
  *
@@ -115,21 +110,17 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
115
110
  * )
116
111
  * ```
117
112
  *
118
- * In the next example we use `ref` in a raw expression. Unless you
113
+ * In the next example we use `ref` in a raw sql expression. Unless you
119
114
  * want to be as type-safe as possible, this is probably overkill:
120
115
  *
121
116
  * ```ts
122
117
  * db.update('pet').set({
123
- * name: (eb) => eb.raw('concat(?, ?)', [
124
- * eb.ref('pet.name'),
125
- * suffix,
126
- * ])
118
+ * name: (eb) => sql`concat(${eb.ref('pet.name')}, ${suffix})`
127
119
  * })
128
120
  * ```
129
121
  */
130
122
  ref<RE extends StringReference<DB, TB>>(reference: RE): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
131
123
  }
132
124
  export interface ExpressionBuilderProps {
133
- readonly executor: NoopQueryExecutor;
134
- readonly parseContext: ParseContext;
125
+ readonly executor: QueryExecutor;
135
126
  }
@@ -4,9 +4,11 @@ import { SelectQueryNode } from '../operation-node/select-query-node.js';
4
4
  import { parseTableExpressionOrList, } from '../parser/table-parser.js';
5
5
  import { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';
6
6
  import { createQueryId } from '../util/query-id.js';
7
- import { freeze } from '../util/object-utils.js';
8
7
  import { FunctionBuilder } from './function-builder.js';
8
+ import { parseStringReference, } from '../parser/reference-parser.js';
9
9
  import { RawBuilder } from '../raw-builder/raw-builder.js';
10
+ import { freeze } from '../util/object-utils.js';
11
+ import { RawNode } from '../operation-node/raw-node.js';
10
12
  export class ExpressionBuilder {
11
13
  #props;
12
14
  constructor(props) {
@@ -44,14 +46,13 @@ export class ExpressionBuilder {
44
46
  * ```
45
47
  */
46
48
  get fn() {
47
- return new FunctionBuilder({ executor: this.#props.executor });
49
+ return new FunctionBuilder();
48
50
  }
49
51
  selectFrom(table) {
50
52
  return new SelectQueryBuilder({
51
53
  queryId: createQueryId(),
52
54
  executor: this.#props.executor,
53
- parseContext: this.#props.parseContext,
54
- queryNode: SelectQueryNode.create(parseTableExpressionOrList(this.#props.parseContext, table)),
55
+ queryNode: SelectQueryNode.create(parseTableExpressionOrList(table)),
55
56
  });
56
57
  }
57
58
  /**
@@ -63,17 +64,6 @@ export class ExpressionBuilder {
63
64
  executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),
64
65
  });
65
66
  }
66
- /**
67
- * See {@link QueryCreator.raw}.
68
- */
69
- raw(sql, parameters) {
70
- return new RawBuilder({
71
- queryId: createQueryId(),
72
- executor: this.#props.executor,
73
- sql,
74
- parameters,
75
- });
76
- }
77
67
  /**
78
68
  * This can be used to reference columns.
79
69
  *
@@ -95,19 +85,20 @@ export class ExpressionBuilder {
95
85
  * )
96
86
  * ```
97
87
  *
98
- * In the next example we use `ref` in a raw expression. Unless you
88
+ * In the next example we use `ref` in a raw sql expression. Unless you
99
89
  * want to be as type-safe as possible, this is probably overkill:
100
90
  *
101
91
  * ```ts
102
92
  * db.update('pet').set({
103
- * name: (eb) => eb.raw('concat(?, ?)', [
104
- * eb.ref('pet.name'),
105
- * suffix,
106
- * ])
93
+ * name: (eb) => sql`concat(${eb.ref('pet.name')}, ${suffix})`
107
94
  * })
108
95
  * ```
109
96
  */
110
97
  ref(reference) {
111
- return this.raw('??', [reference]);
98
+ return new RawBuilder({
99
+ queryId: createQueryId(),
100
+ plugins: this.#props.executor.plugins,
101
+ rawNode: RawNode.createWithChild(parseStringReference(reference)),
102
+ });
112
103
  }
113
104
  }