kysely 0.8.0 → 0.9.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 (94) hide show
  1. package/README.md +47 -8
  2. package/dist/cjs/dialect/mysql/mysql-driver.js +7 -7
  3. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  4. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -29
  5. package/dist/cjs/dialect/postgres/postgres-driver.js +5 -5
  6. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
  7. package/dist/cjs/operation-node/create-schema-node.js +2 -2
  8. package/dist/cjs/operation-node/create-table-node.d.ts +1 -5
  9. package/dist/cjs/operation-node/create-table-node.js +1 -31
  10. package/dist/cjs/operation-node/join-node.d.ts +2 -1
  11. package/dist/cjs/operation-node/join-node.js +8 -6
  12. package/dist/cjs/operation-node/operation-node-source.d.ts +1 -1
  13. package/dist/cjs/operation-node/operation-node-transformer.js +2 -1
  14. package/dist/cjs/operation-node/primitive-value-list-node.js +1 -1
  15. package/dist/cjs/operation-node/query-node.d.ts +4 -3
  16. package/dist/cjs/operation-node/query-node.js +10 -2
  17. package/dist/cjs/operation-node/select-query-node.d.ts +2 -1
  18. package/dist/cjs/operation-node/select-query-node.js +10 -2
  19. package/dist/cjs/parser/group-by-parser.d.ts +4 -0
  20. package/dist/cjs/parser/group-by-parser.js +9 -0
  21. package/dist/cjs/parser/join-parser.d.ts +6 -3
  22. package/dist/cjs/parser/order-by-parser.d.ts +2 -4
  23. package/dist/cjs/parser/order-by-parser.js +6 -3
  24. package/dist/cjs/parser/reference-parser.d.ts +1 -1
  25. package/dist/cjs/parser/reference-parser.js +1 -1
  26. package/dist/cjs/parser/table-parser.d.ts +8 -8
  27. package/dist/cjs/query-builder/function-builder.d.ts +6 -6
  28. package/dist/cjs/query-builder/function-builder.js +7 -7
  29. package/dist/cjs/query-builder/join-builder.js +8 -8
  30. package/dist/cjs/query-builder/query-builder.js +20 -22
  31. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  32. package/dist/cjs/query-compiler/default-query-compiler.d.ts +4 -3
  33. package/dist/cjs/query-compiler/default-query-compiler.js +23 -29
  34. package/dist/cjs/query-creator.d.ts +14 -11
  35. package/dist/cjs/query-creator.js +14 -11
  36. package/dist/cjs/raw-builder/raw-builder.d.ts +1 -1
  37. package/dist/cjs/raw-builder/raw-builder.js +6 -6
  38. package/dist/cjs/schema/alter-table-builder.d.ts +3 -0
  39. package/dist/cjs/schema/alter-table-builder.js +3 -0
  40. package/dist/cjs/schema/column-definition-builder.d.ts +14 -5
  41. package/dist/cjs/schema/create-schema-builder.js +1 -1
  42. package/dist/cjs/schema/create-table-builder.d.ts +55 -10
  43. package/dist/cjs/schema/create-table-builder.js +59 -17
  44. package/dist/cjs/schema/schema.d.ts +37 -2
  45. package/dist/cjs/schema/schema.js +36 -1
  46. package/dist/cjs/util/object-utils.d.ts +12 -11
  47. package/dist/cjs/util/object-utils.js +6 -2
  48. package/dist/esm/dialect/mysql/mysql-driver.js +8 -8
  49. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  50. package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -29
  51. package/dist/esm/dialect/postgres/postgres-driver.js +5 -5
  52. package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
  53. package/dist/esm/operation-node/create-schema-node.js +2 -2
  54. package/dist/esm/operation-node/create-table-node.d.ts +1 -5
  55. package/dist/esm/operation-node/create-table-node.js +1 -31
  56. package/dist/esm/operation-node/join-node.d.ts +2 -1
  57. package/dist/esm/operation-node/join-node.js +8 -6
  58. package/dist/esm/operation-node/operation-node-source.d.ts +1 -1
  59. package/dist/esm/operation-node/operation-node-transformer.js +2 -1
  60. package/dist/esm/operation-node/primitive-value-list-node.js +1 -1
  61. package/dist/esm/operation-node/query-node.d.ts +4 -3
  62. package/dist/esm/operation-node/query-node.js +10 -2
  63. package/dist/esm/operation-node/select-query-node.d.ts +2 -1
  64. package/dist/esm/operation-node/select-query-node.js +10 -2
  65. package/dist/esm/parser/group-by-parser.d.ts +4 -0
  66. package/dist/esm/parser/group-by-parser.js +5 -0
  67. package/dist/esm/parser/join-parser.d.ts +6 -3
  68. package/dist/esm/parser/order-by-parser.d.ts +2 -4
  69. package/dist/esm/parser/order-by-parser.js +6 -2
  70. package/dist/esm/parser/reference-parser.d.ts +1 -1
  71. package/dist/esm/parser/reference-parser.js +2 -2
  72. package/dist/esm/parser/table-parser.d.ts +8 -8
  73. package/dist/esm/query-builder/function-builder.d.ts +6 -6
  74. package/dist/esm/query-builder/function-builder.js +7 -7
  75. package/dist/esm/query-builder/join-builder.js +8 -8
  76. package/dist/esm/query-builder/query-builder.js +21 -23
  77. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  78. package/dist/esm/query-compiler/default-query-compiler.d.ts +4 -3
  79. package/dist/esm/query-compiler/default-query-compiler.js +23 -29
  80. package/dist/esm/query-creator.d.ts +14 -11
  81. package/dist/esm/query-creator.js +14 -11
  82. package/dist/esm/raw-builder/raw-builder.d.ts +1 -1
  83. package/dist/esm/raw-builder/raw-builder.js +6 -6
  84. package/dist/esm/schema/alter-table-builder.d.ts +3 -0
  85. package/dist/esm/schema/alter-table-builder.js +3 -0
  86. package/dist/esm/schema/column-definition-builder.d.ts +14 -5
  87. package/dist/esm/schema/create-schema-builder.js +1 -1
  88. package/dist/esm/schema/create-table-builder.d.ts +55 -10
  89. package/dist/esm/schema/create-table-builder.js +60 -18
  90. package/dist/esm/schema/schema.d.ts +37 -2
  91. package/dist/esm/schema/schema.js +36 -1
  92. package/dist/esm/util/object-utils.d.ts +12 -11
  93. package/dist/esm/util/object-utils.js +4 -1
  94. package/package.json +1 -1
@@ -1,6 +1,5 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { TableNode } from './table-node.js';
3
- import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
4
3
  import { ConstraintNode } from './constraint-node.js';
5
4
  import { ColumnDefinitionNode } from './column-definition-node.js';
6
5
  export declare type CreateTableNodeModifier = 'IfNotExists';
@@ -19,8 +18,5 @@ export declare const CreateTableNode: Readonly<{
19
18
  create(table: TableNode): CreateTableNode;
20
19
  cloneWithColumn(createTable: CreateTableNode, column: ColumnDefinitionNode): CreateTableNode;
21
20
  cloneWithModifier(createTable: CreateTableNode, modifier: CreateTableNodeModifier): CreateTableNode;
22
- cloneWithPrimaryKeyConstraint(createTable: CreateTableNode, constraintName: string, columns: string[]): CreateTableNode;
23
- cloneWithUniqueConstraint(createTable: CreateTableNode, constraintName: string, columns: string[]): CreateTableNode;
24
- cloneWithCheckConstraint(createTable: CreateTableNode, constraintName: string, sql: string): CreateTableNode;
25
- cloneWithForeignKeyConstraint(createTable: CreateTableNode, constraint: ForeignKeyConstraintNode): CreateTableNode;
21
+ cloneWithConstraint(createTable: CreateTableNode, constraint: ConstraintNode): CreateTableNode;
26
22
  }>;
@@ -1,7 +1,4 @@
1
1
  import { freeze } from '../util/object-utils.js';
2
- import { CheckConstraintNode } from './check-constraint-node.js';
3
- import { PrimaryConstraintNode } from './primary-constraint-node.js';
4
- import { UniqueConstraintNode } from './unique-constraint-node.js';
5
2
  /**
6
3
  * @internal
7
4
  */
@@ -28,34 +25,7 @@ export const CreateTableNode = freeze({
28
25
  modifier,
29
26
  });
30
27
  },
31
- cloneWithPrimaryKeyConstraint(createTable, constraintName, columns) {
32
- const constraint = PrimaryConstraintNode.create(columns, constraintName);
33
- return freeze({
34
- ...createTable,
35
- constraints: createTable.constraints
36
- ? freeze([...createTable.constraints, constraint])
37
- : freeze([constraint]),
38
- });
39
- },
40
- cloneWithUniqueConstraint(createTable, constraintName, columns) {
41
- const constraint = UniqueConstraintNode.create(columns, constraintName);
42
- return freeze({
43
- ...createTable,
44
- constraints: createTable.constraints
45
- ? freeze([...createTable.constraints, constraint])
46
- : freeze([constraint]),
47
- });
48
- },
49
- cloneWithCheckConstraint(createTable, constraintName, sql) {
50
- const constraint = CheckConstraintNode.create(sql, constraintName);
51
- return freeze({
52
- ...createTable,
53
- constraints: createTable.constraints
54
- ? freeze([...createTable.constraints, constraint])
55
- : freeze([constraint]),
56
- });
57
- },
58
- cloneWithForeignKeyConstraint(createTable, constraint) {
28
+ cloneWithConstraint(createTable, constraint) {
59
29
  return freeze({
60
30
  ...createTable,
61
31
  constraints: createTable.constraints
@@ -21,5 +21,6 @@ export declare const JoinNode: Readonly<{
21
21
  is(node: OperationNode): node is JoinNode;
22
22
  create(joinType: JoinType, table: JoinTableNode): JoinNode;
23
23
  createWithOn(joinType: JoinType, table: JoinTableNode, on: JoinNodeOnNode): JoinNode;
24
- cloneWithOn(joinNode: JoinNode, op: 'And' | 'Or', on: JoinNodeOnNode): JoinNode;
24
+ cloneWithOn(joinNode: JoinNode, on: JoinNodeOnNode): JoinNode;
25
+ cloneWithOrOn(joinNode: JoinNode, on: JoinNodeOnNode): JoinNode;
25
26
  }>;
@@ -24,14 +24,16 @@ export const JoinNode = freeze({
24
24
  on,
25
25
  });
26
26
  },
27
- cloneWithOn(joinNode, op, on) {
27
+ cloneWithOn(joinNode, on) {
28
28
  return freeze({
29
29
  ...joinNode,
30
- on: joinNode.on
31
- ? op === 'And'
32
- ? AndNode.create(joinNode.on, on)
33
- : OrNode.create(joinNode.on, on)
34
- : on,
30
+ on: joinNode.on ? AndNode.create(joinNode.on, on) : on,
31
+ });
32
+ },
33
+ cloneWithOrOn(joinNode, on) {
34
+ return freeze({
35
+ ...joinNode,
36
+ on: joinNode.on ? OrNode.create(joinNode.on, on) : on,
35
37
  });
36
38
  },
37
39
  });
@@ -2,4 +2,4 @@ import { OperationNode } from './operation-node.js';
2
2
  export interface OperationNodeSource {
3
3
  toOperationNode(): OperationNode;
4
4
  }
5
- export declare function isOperationNodeSource(obj: any): obj is OperationNodeSource;
5
+ export declare function isOperationNodeSource(obj: unknown): obj is OperationNodeSource;
@@ -453,11 +453,12 @@ export class OperationNodeTransformer {
453
453
  kind: 'AlterTableNode',
454
454
  table: this.transformNode(node.table),
455
455
  renameTo: this.transformNode(node.renameTo),
456
- renameColumn: this.transformNode(node.renameColumn),
457
456
  setSchema: this.transformNode(node.setSchema),
457
+ renameColumn: this.transformNode(node.renameColumn),
458
458
  addColumn: this.transformNode(node.addColumn),
459
459
  dropColumn: this.transformNode(node.dropColumn),
460
460
  alterColumn: this.transformNode(node.alterColumn),
461
+ modifyColumn: this.transformNode(node.modifyColumn),
461
462
  addConstraint: this.transformNode(node.addConstraint),
462
463
  dropConstraint: this.transformNode(node.dropConstraint),
463
464
  };
@@ -9,7 +9,7 @@ export const PrimitiveValueListNode = freeze({
9
9
  create(values) {
10
10
  return freeze({
11
11
  kind: 'PrimitiveValueListNode',
12
- values: freeze(values),
12
+ values: freeze([...values]),
13
13
  });
14
14
  },
15
15
  });
@@ -16,7 +16,8 @@ export declare const QueryNode: Readonly<{
16
16
  is(node: OperationNode): node is QueryNode;
17
17
  isMutating(node: OperationNode): node is MutatingQueryNode;
18
18
  isFilterable(node: OperationNode): node is FilterableQueryNode;
19
- cloneWithWhere<T extends FilterableQueryNode>(node: T, op: 'And' | 'Or', filter: WhereChildNode): T;
20
- cloneWithJoin<T_1 extends FilterableQueryNode>(node: T_1, join: JoinNode): T_1;
21
- cloneWithReturning<T_2 extends MutatingQueryNode>(node: T_2, selections: ReadonlyArray<SelectionNode>): T_2;
19
+ cloneWithWhere<T extends FilterableQueryNode>(node: T, filter: WhereChildNode): T;
20
+ cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, filter: WhereChildNode): T_1;
21
+ cloneWithJoin<T_2 extends FilterableQueryNode>(node: T_2, join: JoinNode): T_2;
22
+ cloneWithReturning<T_3 extends MutatingQueryNode>(node: T_3, selections: ReadonlyArray<SelectionNode>): T_3;
22
23
  }>;
@@ -25,11 +25,19 @@ export const QueryNode = freeze({
25
25
  DeleteQueryNode.is(node) ||
26
26
  UpdateQueryNode.is(node));
27
27
  },
28
- cloneWithWhere(node, op, filter) {
28
+ cloneWithWhere(node, filter) {
29
29
  return freeze({
30
30
  ...node,
31
31
  where: node.where
32
- ? WhereNode.cloneWithFilter(node.where, op, filter)
32
+ ? WhereNode.cloneWithFilter(node.where, 'And', filter)
33
+ : WhereNode.create(filter),
34
+ });
35
+ },
36
+ cloneWithOrWhere(node, filter) {
37
+ return freeze({
38
+ ...node,
39
+ where: node.where
40
+ ? WhereNode.cloneWithFilter(node.where, 'Or', filter)
33
41
  : WhereNode.create(filter),
34
42
  });
35
43
  },
@@ -42,6 +42,7 @@ export declare const SelectQueryNode: Readonly<{
42
42
  cloneWithGroupByItems(selectNode: SelectQueryNode, items: ReadonlyArray<GroupByItemNode>): SelectQueryNode;
43
43
  cloneWithLimit(selectNode: SelectQueryNode, limit: LimitNode): SelectQueryNode;
44
44
  cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
45
- cloneWithHaving(selectNode: SelectQueryNode, op: 'And' | 'Or', filter: HavingNodeChild): SelectQueryNode;
45
+ cloneWithHaving(selectNode: SelectQueryNode, filter: HavingNodeChild): SelectQueryNode;
46
+ cloneWithOrHaving(selectNode: SelectQueryNode, filter: HavingNodeChild): SelectQueryNode;
46
47
  cloneWithDistinct(selectNode: SelectQueryNode): SelectQueryNode;
47
48
  }>;
@@ -69,11 +69,19 @@ export const SelectQueryNode = freeze({
69
69
  offset,
70
70
  });
71
71
  },
72
- cloneWithHaving(selectNode, op, filter) {
72
+ cloneWithHaving(selectNode, filter) {
73
73
  return freeze({
74
74
  ...selectNode,
75
75
  having: selectNode.having
76
- ? HavingNode.cloneWithFilter(selectNode.having, op, filter)
76
+ ? HavingNode.cloneWithFilter(selectNode.having, 'And', filter)
77
+ : HavingNode.create(filter),
78
+ });
79
+ },
80
+ cloneWithOrHaving(selectNode, filter) {
81
+ return freeze({
82
+ ...selectNode,
83
+ having: selectNode.having
84
+ ? HavingNode.cloneWithFilter(selectNode.having, 'Or', filter)
77
85
  : HavingNode.create(filter),
78
86
  });
79
87
  },
@@ -0,0 +1,4 @@
1
+ import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
2
+ import { ParseContext } from './parse-context.js';
3
+ import { ReferenceExpressionOrList } from './reference-parser.js';
4
+ export declare function parseGroupBy(ctx: ParseContext, orderBy: ReferenceExpressionOrList<any, any>): GroupByItemNode[];
@@ -0,0 +1,5 @@
1
+ import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
2
+ import { parseReferenceExpressionOrList, } from './reference-parser.js';
3
+ export function parseGroupBy(ctx, orderBy) {
4
+ return parseReferenceExpressionOrList(ctx, orderBy).map(GroupByItemNode.create);
5
+ }
@@ -1,8 +1,11 @@
1
1
  import { JoinNode, JoinType } from '../operation-node/join-node.js';
2
2
  import { AnyColumn, AnyColumnWithTable } from '../util/type-utils.js';
3
- import { ExtractAliasFromTableExpression, TableExpressionDatabaseType } from './table-parser.js';
3
+ import { ExtractAliasFromTableExpression, TableExpressionDatabase } from './table-parser.js';
4
4
  import { JoinBuilder } from '../query-builder/join-builder.js';
5
5
  import { ParseContext } from './parse-context.js';
6
- export declare type JoinReferenceExpression<DB, TB extends keyof DB, F> = AnyColumn<TableExpressionDatabaseType<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>> | AnyColumnWithTable<TableExpressionDatabaseType<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>>;
7
- export declare type JoinCallbackExpression<DB, TB extends keyof DB, F> = (join: JoinBuilder<TableExpressionDatabaseType<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>>) => JoinBuilder<any, any>;
6
+ export declare type JoinReferenceExpression<DB, TB extends keyof DB, F> = AnyJoinColumn<DB, TB, F> | AnyJoinColumnWithTable<DB, TB, F>;
7
+ export declare type JoinCallbackExpression<DB, TB extends keyof DB, F> = (join: JoinBuilder<TableExpressionDatabase<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>>) => JoinBuilder<any, any>;
8
+ declare type AnyJoinColumn<DB, TB extends keyof DB, F> = AnyColumn<TableExpressionDatabase<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>>;
9
+ declare type AnyJoinColumnWithTable<DB, TB extends keyof DB, F> = AnyColumnWithTable<TableExpressionDatabase<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>>;
8
10
  export declare function parseJoin(ctx: ParseContext, joinType: JoinType, args: any[]): JoinNode;
11
+ export {};
@@ -1,10 +1,8 @@
1
- import { ReferenceExpressionNode } from '../operation-node/operation-node-utils.js';
2
- import { RawNode } from '../operation-node/raw-node.js';
1
+ import { OrderByItemNode } from '../operation-node/order-by-item-node.js';
3
2
  import { AnyRawBuilder } from '../util/type-utils.js';
4
3
  import { ParseContext } from './parse-context.js';
5
4
  import { ReferenceExpression } from './reference-parser.js';
6
5
  export declare type OrderByDirection = 'asc' | 'desc';
7
6
  export declare type OrderByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | keyof O;
8
7
  export declare type OrderByDirectionExpression = OrderByDirection | AnyRawBuilder;
9
- export declare function parseOrderByExpression(ctx: ParseContext, expr: OrderByExpression<any, any, any>): ReferenceExpressionNode;
10
- export declare function parseOrderByDirectionExpression(expr?: OrderByDirectionExpression): RawNode | undefined;
8
+ export declare function parseOrderBy(ctx: ParseContext, orderBy: OrderByExpression<any, any, any>, direction?: OrderByDirectionExpression): OrderByItemNode;
@@ -1,9 +1,13 @@
1
+ import { OrderByItemNode } from '../operation-node/order-by-item-node.js';
1
2
  import { RawNode } from '../operation-node/raw-node.js';
2
3
  import { parseReferenceExpression, } from './reference-parser.js';
3
- export function parseOrderByExpression(ctx, expr) {
4
+ export function parseOrderBy(ctx, orderBy, direction) {
5
+ return OrderByItemNode.create(parseOrderByExpression(ctx, orderBy), parseOrderByDirectionExpression(direction));
6
+ }
7
+ function parseOrderByExpression(ctx, expr) {
4
8
  return parseReferenceExpression(ctx, expr);
5
9
  }
6
- export function parseOrderByDirectionExpression(expr) {
10
+ function parseOrderByDirectionExpression(expr) {
7
11
  if (!expr) {
8
12
  return undefined;
9
13
  }
@@ -9,7 +9,7 @@ import { RawBuilder } from '../raw-builder/raw-builder.js';
9
9
  import { QueryBuilder } from '../query-builder/query-builder.js';
10
10
  import { ParseContext } from './parse-context.js';
11
11
  export declare type ReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | AnyQueryBuilder | QueryBuilderFactory<DB, TB> | AnyRawBuilder | RawBuilderFactory<DB, TB> | DynamicReferenceBuilder<any>;
12
- export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReferenceExpression<DB, TB>[];
12
+ export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
13
13
  export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
14
14
  export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? ExtractTypeFromStringReference<DB, TB, RE> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends QueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => QueryBuilder<any, any, infer O> ? ValueType<O> : PrimitiveValue;
15
15
  declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, S extends string, R = RowType<DB, TB>> = S extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : S extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : S extends keyof R ? R[S] : PrimitiveValue;
@@ -3,10 +3,10 @@ import { ColumnNode } from '../operation-node/column-node.js';
3
3
  import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
4
4
  import { ReferenceNode } from '../operation-node/reference-node.js';
5
5
  import { TableNode } from '../operation-node/table-node.js';
6
- import { isFunction, isString } from '../util/object-utils.js';
6
+ import { isFunction, isReadonlyArray, isString, } from '../util/object-utils.js';
7
7
  import { QueryNode } from '../operation-node/query-node.js';
8
8
  export function parseReferenceExpressionOrList(ctx, arg) {
9
- if (Array.isArray(arg)) {
9
+ if (isReadonlyArray(arg)) {
10
10
  return arg.map((it) => parseReferenceExpression(ctx, it));
11
11
  }
12
12
  else {
@@ -7,20 +7,20 @@ import { ParseContext } from './parse-context.js';
7
7
  export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB>;
8
8
  export declare type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
9
9
  export declare type TableReference<DB> = AnyAliasedTable<DB, any, any> | AnyTable<DB> | AnyAliasedRawBuilder;
10
- export declare type QueryBuilderWithTable<DB, TB extends keyof DB, O, TE> = QueryBuilder<TableExpressionDatabaseType<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
11
- export declare type TableExpressionDatabaseType<DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
10
+ export declare type QueryBuilderWithTable<DB, TB extends keyof DB, O, TE> = QueryBuilder<TableExpressionDatabase<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
11
+ export declare type TableExpressionDatabase<DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
12
12
  [C in keyof DB | A]: C extends A ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? DB[C] : never;
13
13
  };
14
- export declare type QueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<LeftJoinTableExpressionDatabaseType<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
15
- export declare type LeftJoinTableExpressionDatabaseType<DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
14
+ export declare type QueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
15
+ export declare type LeftJoinTableExpressionDatabase<DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
16
16
  [C in keyof DB | A]: C extends A ? Nullable<ExtractRowTypeFromTableExpression<DB, TE, C>> : C extends keyof DB ? DB[C] : never;
17
17
  };
18
- export declare type QueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<RightJoinTableExpressionDatabaseType<DB, TB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
19
- export declare type RightJoinTableExpressionDatabaseType<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
18
+ export declare type QueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
19
+ export declare type RightJoinTableExpressionDatabase<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
20
20
  [C in keyof DB | A]: C extends A ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? C extends TB ? Nullable<DB[C]> : DB[C] : never;
21
21
  };
22
- export declare type QueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<FullJoinTableExpressionDatabaseType<DB, TB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
23
- export declare type FullJoinTableExpressionDatabaseType<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
22
+ export declare type QueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
23
+ export declare type FullJoinTableExpressionDatabase<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
24
24
  [C in keyof DB | A]: C extends A ? Nullable<ExtractRowTypeFromTableExpression<DB, TE, C>> : C extends keyof DB ? C extends TB ? Nullable<DB[C]> : DB[C] : never;
25
25
  };
26
26
  export declare type ExtractAliasFromTableExpression<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : TE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends AliasedRawBuilder<any, infer RA> ? RA : TE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : never;
@@ -66,9 +66,9 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
66
66
  * Calls the `sum` function for the column given as the argument.
67
67
  *
68
68
  * If this is used in a `select` statement the type of the selected expression
69
- * will be `number | string` by default. This is because Kysely can't know the
70
- * type the db driver outputs. Sometimes the output can be larger than the
71
- * largest javascript number and a string is returned instead. Most drivers
69
+ * will be `number | string | BigInt` by default. This is because Kysely can't
70
+ * know the type the db driver outputs. Sometimes the output can be larger than
71
+ * the largest javascript number and a string is returned instead. Most drivers
72
72
  * allow you to configure the output type of large numbers and Kysely can't
73
73
  * know if you've done so.
74
74
  *
@@ -88,9 +88,9 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
88
88
  * Calls the `count` function for the column given as the argument.
89
89
  *
90
90
  * If this is used in a `select` statement the type of the selected expression
91
- * will be `number | string` by default. This is because Kysely can't know the
92
- * type the db driver outputs. Sometimes the output can be larger than the
93
- * largest javascript number and a string is returned instead. Most drivers
91
+ * will be `number | string | BigInt` by default. This is because Kysely can't
92
+ * know the type the db driver outputs. Sometimes the output can be larger than
93
+ * the largest javascript number and a string is returned instead. Most drivers
94
94
  * allow you to configure the output type of large numbers and Kysely can't
95
95
  * know if you've done so.
96
96
  *
@@ -79,9 +79,9 @@ export class FunctionBuilder {
79
79
  * Calls the `sum` function for the column given as the argument.
80
80
  *
81
81
  * If this is used in a `select` statement the type of the selected expression
82
- * will be `number | string` by default. This is because Kysely can't know the
83
- * type the db driver outputs. Sometimes the output can be larger than the
84
- * largest javascript number and a string is returned instead. Most drivers
82
+ * will be `number | string | BigInt` by default. This is because Kysely can't
83
+ * know the type the db driver outputs. Sometimes the output can be larger than
84
+ * the largest javascript number and a string is returned instead. Most drivers
85
85
  * allow you to configure the output type of large numbers and Kysely can't
86
86
  * know if you've done so.
87
87
  *
@@ -103,9 +103,9 @@ export class FunctionBuilder {
103
103
  * Calls the `count` function for the column given as the argument.
104
104
  *
105
105
  * If this is used in a `select` statement the type of the selected expression
106
- * will be `number | string` by default. This is because Kysely can't know the
107
- * type the db driver outputs. Sometimes the output can be larger than the
108
- * largest javascript number and a string is returned instead. Most drivers
106
+ * will be `number | string | BigInt` by default. This is because Kysely can't
107
+ * know the type the db driver outputs. Sometimes the output can be larger than
108
+ * the largest javascript number and a string is returned instead. Most drivers
109
109
  * allow you to configure the output type of large numbers and Kysely can't
110
110
  * know if you've done so.
111
111
  *
@@ -128,7 +128,7 @@ export class FunctionBuilder {
128
128
  queryId: createQueryId(),
129
129
  executor: this.#props.executor,
130
130
  sql: `${fn}(??)`,
131
- params: [column],
131
+ parameters: [column],
132
132
  });
133
133
  }
134
134
  }
@@ -10,13 +10,13 @@ export class JoinBuilder {
10
10
  on(...args) {
11
11
  return new JoinBuilder({
12
12
  ...this.#props,
13
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And', parseOnFilter(this.#props.parseContext, args)),
13
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseOnFilter(this.#props.parseContext, args)),
14
14
  });
15
15
  }
16
16
  orOn(...args) {
17
17
  return new JoinBuilder({
18
18
  ...this.#props,
19
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or', parseOnFilter(this.#props.parseContext, args)),
19
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseOnFilter(this.#props.parseContext, args)),
20
20
  });
21
21
  }
22
22
  /**
@@ -28,7 +28,7 @@ export class JoinBuilder {
28
28
  onRef(lhs, op, rhs) {
29
29
  return new JoinBuilder({
30
30
  ...this.#props,
31
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
31
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
32
32
  });
33
33
  }
34
34
  /**
@@ -40,7 +40,7 @@ export class JoinBuilder {
40
40
  orOnRef(lhs, op, rhs) {
41
41
  return new JoinBuilder({
42
42
  ...this.#props,
43
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
43
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
44
44
  });
45
45
  }
46
46
  /**
@@ -52,7 +52,7 @@ export class JoinBuilder {
52
52
  onExists(arg) {
53
53
  return new JoinBuilder({
54
54
  ...this.#props,
55
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And', parseExistFilter(this.#props.parseContext, arg)),
55
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseExistFilter(this.#props.parseContext, arg)),
56
56
  });
57
57
  }
58
58
  /**
@@ -64,7 +64,7 @@ export class JoinBuilder {
64
64
  onNotExists(arg) {
65
65
  return new JoinBuilder({
66
66
  ...this.#props,
67
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And', parseNotExistFilter(this.#props.parseContext, arg)),
67
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseNotExistFilter(this.#props.parseContext, arg)),
68
68
  });
69
69
  }
70
70
  /**
@@ -76,7 +76,7 @@ export class JoinBuilder {
76
76
  orOnExists(arg) {
77
77
  return new JoinBuilder({
78
78
  ...this.#props,
79
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or', parseExistFilter(this.#props.parseContext, arg)),
79
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseExistFilter(this.#props.parseContext, arg)),
80
80
  });
81
81
  }
82
82
  /**
@@ -88,7 +88,7 @@ export class JoinBuilder {
88
88
  orOnNotExists(arg) {
89
89
  return new JoinBuilder({
90
90
  ...this.#props,
91
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or', parseNotExistFilter(this.#props.parseContext, arg)),
91
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseNotExistFilter(this.#props.parseContext, arg)),
92
92
  });
93
93
  }
94
94
  toOperationNode() {
@@ -3,13 +3,10 @@ import { parseJoin, } from '../parser/join-parser.js';
3
3
  import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
4
4
  import { parseExistFilter, parseReferenceFilter, parseWhereFilter, parseHavingFilter, parseNotExistFilter, } from '../parser/filter-parser.js';
5
5
  import { parseInsertObjectOrList, } from '../parser/insert-values-parser.js';
6
- import { parseReferenceExpressionOrList, } from '../parser/reference-parser.js';
7
- import { OrderByItemNode } from '../operation-node/order-by-item-node.js';
8
6
  import { SelectQueryNode } from '../operation-node/select-query-node.js';
9
7
  import { InsertQueryNode } from '../operation-node/insert-query-node.js';
10
8
  import { QueryNode, } from '../operation-node/query-node.js';
11
- import { parseOrderByDirectionExpression, parseOrderByExpression, } from '../parser/order-by-parser.js';
12
- import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
9
+ import { parseOrderBy, } from '../parser/order-by-parser.js';
13
10
  import { UpdateQueryNode } from '../operation-node/update-query-node.js';
14
11
  import { parseUpdateObject, } from '../parser/update-set-parser.js';
15
12
  import { preventAwait } from '../util/prevent-await.js';
@@ -19,6 +16,7 @@ import { parseOnConflictDoNothing, parseOnConflictUpdate, } from '../parser/on-c
19
16
  import { freeze } from '../util/object-utils.js';
20
17
  import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
21
18
  import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
19
+ import { parseGroupBy } from '../parser/group-by-parser.js';
22
20
  /**
23
21
  * The main query builder class.
24
22
  *
@@ -43,7 +41,7 @@ export class QueryBuilder {
43
41
  assertCanHaveWhereClause(this.#props.queryNode);
44
42
  return new QueryBuilder({
45
43
  ...this.#props,
46
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And', parseWhereFilter(this.#props.parseContext, args)),
44
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhereFilter(this.#props.parseContext, args)),
47
45
  });
48
46
  }
49
47
  /**
@@ -101,14 +99,14 @@ export class QueryBuilder {
101
99
  assertCanHaveWhereClause(this.#props.queryNode);
102
100
  return new QueryBuilder({
103
101
  ...this.#props,
104
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
102
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
105
103
  });
106
104
  }
107
105
  orWhere(...args) {
108
106
  assertCanHaveWhereClause(this.#props.queryNode);
109
107
  return new QueryBuilder({
110
108
  ...this.#props,
111
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', parseWhereFilter(this.#props.parseContext, args)),
109
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhereFilter(this.#props.parseContext, args)),
112
110
  });
113
111
  }
114
112
  /**
@@ -121,7 +119,7 @@ export class QueryBuilder {
121
119
  assertCanHaveWhereClause(this.#props.queryNode);
122
120
  return new QueryBuilder({
123
121
  ...this.#props,
124
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
122
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
125
123
  });
126
124
  }
127
125
  /**
@@ -187,7 +185,7 @@ export class QueryBuilder {
187
185
  assertCanHaveWhereClause(this.#props.queryNode);
188
186
  return new QueryBuilder({
189
187
  ...this.#props,
190
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And', parseExistFilter(this.#props.parseContext, arg)),
188
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
191
189
  });
192
190
  }
193
191
  /**
@@ -197,7 +195,7 @@ export class QueryBuilder {
197
195
  assertCanHaveWhereClause(this.#props.queryNode);
198
196
  return new QueryBuilder({
199
197
  ...this.#props,
200
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'And', parseNotExistFilter(this.#props.parseContext, arg)),
198
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
201
199
  });
202
200
  }
203
201
  /**
@@ -207,7 +205,7 @@ export class QueryBuilder {
207
205
  assertCanHaveWhereClause(this.#props.queryNode);
208
206
  return new QueryBuilder({
209
207
  ...this.#props,
210
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', parseExistFilter(this.#props.parseContext, arg)),
208
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
211
209
  });
212
210
  }
213
211
  /**
@@ -217,14 +215,14 @@ export class QueryBuilder {
217
215
  assertCanHaveWhereClause(this.#props.queryNode);
218
216
  return new QueryBuilder({
219
217
  ...this.#props,
220
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', parseNotExistFilter(this.#props.parseContext, arg)),
218
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
221
219
  });
222
220
  }
223
221
  having(...args) {
224
222
  assertCanHaveHavingClause(this.#props.queryNode);
225
223
  return new QueryBuilder({
226
224
  ...this.#props,
227
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', parseHavingFilter(this.#props.parseContext, args)),
225
+ queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseHavingFilter(this.#props.parseContext, args)),
228
226
  });
229
227
  }
230
228
  /**
@@ -235,14 +233,14 @@ export class QueryBuilder {
235
233
  assertCanHaveHavingClause(this.#props.queryNode);
236
234
  return new QueryBuilder({
237
235
  ...this.#props,
238
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
236
+ queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
239
237
  });
240
238
  }
241
239
  orHaving(...args) {
242
240
  assertCanHaveHavingClause(this.#props.queryNode);
243
241
  return new QueryBuilder({
244
242
  ...this.#props,
245
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', parseHavingFilter(this.#props.parseContext, args)),
243
+ queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseHavingFilter(this.#props.parseContext, args)),
246
244
  });
247
245
  }
248
246
  /**
@@ -253,7 +251,7 @@ export class QueryBuilder {
253
251
  assertCanHaveHavingClause(this.#props.queryNode);
254
252
  return new QueryBuilder({
255
253
  ...this.#props,
256
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
254
+ queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
257
255
  });
258
256
  }
259
257
  /**
@@ -264,7 +262,7 @@ export class QueryBuilder {
264
262
  assertCanHaveHavingClause(this.#props.queryNode);
265
263
  return new QueryBuilder({
266
264
  ...this.#props,
267
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', parseExistFilter(this.#props.parseContext, arg)),
265
+ queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
268
266
  });
269
267
  }
270
268
  /**
@@ -275,7 +273,7 @@ export class QueryBuilder {
275
273
  assertCanHaveHavingClause(this.#props.queryNode);
276
274
  return new QueryBuilder({
277
275
  ...this.#props,
278
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', parseNotExistFilter(this.#props.parseContext, arg)),
276
+ queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
279
277
  });
280
278
  }
281
279
  /**
@@ -286,7 +284,7 @@ export class QueryBuilder {
286
284
  assertCanHaveHavingClause(this.#props.queryNode);
287
285
  return new QueryBuilder({
288
286
  ...this.#props,
289
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', parseExistFilter(this.#props.parseContext, arg)),
287
+ queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseExistFilter(this.#props.parseContext, arg)),
290
288
  });
291
289
  }
292
290
  /**
@@ -297,7 +295,7 @@ export class QueryBuilder {
297
295
  assertCanHaveHavingClause(this.#props.queryNode);
298
296
  return new QueryBuilder({
299
297
  ...this.#props,
300
- queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', parseNotExistFilter(this.#props.parseContext, arg)),
298
+ queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseNotExistFilter(this.#props.parseContext, arg)),
301
299
  });
302
300
  }
303
301
  select(selection) {
@@ -714,14 +712,14 @@ export class QueryBuilder {
714
712
  assertCanHaveOrderByClause(this.#props.queryNode);
715
713
  return new QueryBuilder({
716
714
  ...this.#props,
717
- queryNode: SelectQueryNode.cloneWithOrderByItem(this.#props.queryNode, OrderByItemNode.create(parseOrderByExpression(this.#props.parseContext, orderBy), parseOrderByDirectionExpression(direction))),
715
+ queryNode: SelectQueryNode.cloneWithOrderByItem(this.#props.queryNode, parseOrderBy(this.#props.parseContext, orderBy, direction)),
718
716
  });
719
717
  }
720
718
  groupBy(orderBy) {
721
719
  assertCanHaveGroupByClause(this.#props.queryNode);
722
720
  return new QueryBuilder({
723
721
  ...this.#props,
724
- queryNode: SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, parseReferenceExpressionOrList(this.#props.parseContext, orderBy).map(GroupByItemNode.create)),
722
+ queryNode: SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, parseGroupBy(this.#props.parseContext, orderBy)),
725
723
  });
726
724
  }
727
725
  /**
@@ -958,7 +956,7 @@ function assertCanHaveUpdates(node) {
958
956
  }
959
957
  function assertCanHaveReturningClause(node) {
960
958
  if (!QueryNode.isMutating(node)) {
961
- throw new Error('only an insert, delete and update queries can have a returning clause');
959
+ throw new Error('only insert, delete and update queries can have a returning clause');
962
960
  }
963
961
  }
964
962
  function assertCanHaveOrderByClause(node) {