kysely 0.23.3 → 0.23.5

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 (118) hide show
  1. package/README.md +25 -25
  2. package/dist/cjs/dialect/database-introspector.d.ts +4 -2
  3. package/dist/cjs/dialect/dialect-adapter-base.d.ts +32 -6
  4. package/dist/cjs/dialect/dialect-adapter.d.ts +50 -8
  5. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +32 -6
  6. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
  7. package/dist/cjs/dialect/mysql/mysql-introspector.js +21 -15
  8. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +32 -6
  9. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
  10. package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -3
  11. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +32 -6
  12. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  13. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +8 -7
  14. package/dist/cjs/index.d.ts +1 -0
  15. package/dist/cjs/index.js +1 -0
  16. package/dist/cjs/migration/migrator.d.ts +8 -3
  17. package/dist/cjs/migration/migrator.js +15 -5
  18. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -2
  19. package/dist/cjs/operation-node/aggregate-function-node.js +2 -2
  20. package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
  21. package/dist/cjs/operation-node/delete-query-node.d.ts +4 -1
  22. package/dist/cjs/operation-node/delete-query-node.js +11 -2
  23. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  24. package/dist/cjs/operation-node/operation-node-transformer.js +10 -1
  25. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  26. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  27. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  28. package/dist/cjs/operation-node/operator-node.d.ts +1 -1
  29. package/dist/cjs/operation-node/operator-node.js +1 -0
  30. package/dist/cjs/operation-node/using-node.d.ts +13 -0
  31. package/dist/cjs/operation-node/using-node.js +24 -0
  32. package/dist/cjs/parser/expression-parser.js +1 -1
  33. package/dist/cjs/parser/table-parser.d.ts +1 -0
  34. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  35. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  36. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +10 -4
  37. package/dist/cjs/query-builder/delete-query-builder.d.ts +103 -11
  38. package/dist/cjs/query-builder/delete-query-builder.js +40 -9
  39. package/dist/cjs/query-builder/function-module.d.ts +273 -39
  40. package/dist/cjs/query-builder/function-module.js +156 -34
  41. package/dist/cjs/query-builder/insert-query-builder.d.ts +25 -10
  42. package/dist/cjs/query-builder/insert-query-builder.js +32 -9
  43. package/dist/cjs/query-builder/select-query-builder.d.ts +51 -34
  44. package/dist/cjs/query-builder/select-query-builder.js +53 -29
  45. package/dist/cjs/query-builder/update-query-builder.d.ts +26 -10
  46. package/dist/cjs/query-builder/update-query-builder.js +33 -9
  47. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  48. package/dist/cjs/query-compiler/default-query-compiler.js +12 -1
  49. package/dist/cjs/query-creator.d.ts +29 -0
  50. package/dist/cjs/query-creator.js +2 -21
  51. package/dist/cjs/raw-builder/raw-builder.d.ts +4 -0
  52. package/dist/cjs/raw-builder/raw-builder.js +8 -2
  53. package/dist/cjs/schema/alter-table-builder.d.ts +5 -1
  54. package/dist/cjs/schema/alter-table-builder.js +8 -2
  55. package/dist/cjs/schema/create-index-builder.d.ts +6 -0
  56. package/dist/cjs/schema/create-index-builder.js +13 -0
  57. package/dist/cjs/schema/create-table-builder.d.ts +6 -2
  58. package/dist/cjs/schema/create-table-builder.js +9 -3
  59. package/dist/cjs/util/type-utils.d.ts +20 -1
  60. package/dist/esm/dialect/database-introspector.d.ts +4 -2
  61. package/dist/esm/dialect/dialect-adapter-base.d.ts +32 -6
  62. package/dist/esm/dialect/dialect-adapter.d.ts +50 -8
  63. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +32 -6
  64. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
  65. package/dist/esm/dialect/mysql/mysql-introspector.js +21 -15
  66. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +32 -6
  67. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
  68. package/dist/esm/dialect/postgres/postgres-introspector.js +5 -3
  69. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +32 -6
  70. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  71. package/dist/esm/dialect/sqlite/sqlite-introspector.js +8 -7
  72. package/dist/esm/index.d.ts +1 -0
  73. package/dist/esm/index.js +1 -0
  74. package/dist/esm/migration/migrator.d.ts +8 -3
  75. package/dist/esm/migration/migrator.js +15 -5
  76. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -2
  77. package/dist/esm/operation-node/aggregate-function-node.js +2 -2
  78. package/dist/esm/operation-node/create-index-node.d.ts +1 -0
  79. package/dist/esm/operation-node/delete-query-node.d.ts +4 -1
  80. package/dist/esm/operation-node/delete-query-node.js +11 -2
  81. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  82. package/dist/esm/operation-node/operation-node-transformer.js +10 -1
  83. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  84. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  85. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  86. package/dist/esm/operation-node/operator-node.d.ts +1 -1
  87. package/dist/esm/operation-node/operator-node.js +1 -0
  88. package/dist/esm/operation-node/using-node.d.ts +13 -0
  89. package/dist/esm/operation-node/using-node.js +22 -0
  90. package/dist/esm/parser/expression-parser.js +2 -2
  91. package/dist/esm/parser/table-parser.d.ts +1 -0
  92. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  93. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  94. package/dist/esm/plugin/camel-case/camel-case-plugin.js +10 -4
  95. package/dist/esm/query-builder/delete-query-builder.d.ts +103 -11
  96. package/dist/esm/query-builder/delete-query-builder.js +40 -9
  97. package/dist/esm/query-builder/function-module.d.ts +273 -39
  98. package/dist/esm/query-builder/function-module.js +156 -34
  99. package/dist/esm/query-builder/insert-query-builder.d.ts +25 -10
  100. package/dist/esm/query-builder/insert-query-builder.js +33 -10
  101. package/dist/esm/query-builder/select-query-builder.d.ts +51 -34
  102. package/dist/esm/query-builder/select-query-builder.js +53 -29
  103. package/dist/esm/query-builder/update-query-builder.d.ts +26 -10
  104. package/dist/esm/query-builder/update-query-builder.js +33 -9
  105. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  106. package/dist/esm/query-compiler/default-query-compiler.js +12 -1
  107. package/dist/esm/query-creator.d.ts +29 -0
  108. package/dist/esm/query-creator.js +2 -21
  109. package/dist/esm/raw-builder/raw-builder.d.ts +4 -0
  110. package/dist/esm/raw-builder/raw-builder.js +8 -2
  111. package/dist/esm/schema/alter-table-builder.d.ts +5 -1
  112. package/dist/esm/schema/alter-table-builder.js +8 -2
  113. package/dist/esm/schema/create-index-builder.d.ts +6 -0
  114. package/dist/esm/schema/create-index-builder.js +13 -0
  115. package/dist/esm/schema/create-table-builder.d.ts +6 -2
  116. package/dist/esm/schema/create-table-builder.js +9 -3
  117. package/dist/esm/util/type-utils.d.ts +20 -1
  118. package/package.json +1 -1
@@ -1,12 +1,13 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { OverNode } from './over-node.js';
3
+ import { SelectAllNode } from './select-all-node.js';
3
4
  import { SimpleReferenceExpressionNode } from './simple-reference-expression-node.js';
4
5
  import { WhereNode } from './where-node.js';
5
6
  declare type AggregateFunction = 'avg' | 'count' | 'max' | 'min' | 'sum';
6
7
  export interface AggregateFunctionNode extends OperationNode {
7
8
  readonly kind: 'AggregateFunctionNode';
8
9
  readonly func: AggregateFunction;
9
- readonly column: SimpleReferenceExpressionNode;
10
+ readonly aggregated: SimpleReferenceExpressionNode | SelectAllNode;
10
11
  readonly distinct?: boolean;
11
12
  readonly filter?: WhereNode;
12
13
  readonly over?: OverNode;
@@ -16,7 +17,7 @@ export interface AggregateFunctionNode extends OperationNode {
16
17
  */
17
18
  export declare const AggregateFunctionNode: Readonly<{
18
19
  is(node: OperationNode): node is AggregateFunctionNode;
19
- create(aggregateFunction: AggregateFunction, column: SimpleReferenceExpressionNode): AggregateFunctionNode;
20
+ create(aggregateFunction: AggregateFunction, aggregated: SimpleReferenceExpressionNode | SelectAllNode): AggregateFunctionNode;
20
21
  cloneWithDistinct(aggregateFunctionNode: AggregateFunctionNode): AggregateFunctionNode;
21
22
  cloneWithFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
22
23
  cloneWithOrFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
@@ -10,11 +10,11 @@ exports.AggregateFunctionNode = (0, object_utils_js_1.freeze)({
10
10
  is(node) {
11
11
  return node.kind === 'AggregateFunctionNode';
12
12
  },
13
- create(aggregateFunction, column) {
13
+ create(aggregateFunction, aggregated) {
14
14
  return (0, object_utils_js_1.freeze)({
15
15
  kind: 'AggregateFunctionNode',
16
16
  func: aggregateFunction,
17
- column,
17
+ aggregated,
18
18
  });
19
19
  },
20
20
  cloneWithDistinct(aggregateFunctionNode) {
@@ -11,6 +11,7 @@ export interface CreateIndexNode extends OperationNode {
11
11
  readonly expression?: OperationNode;
12
12
  readonly unique?: boolean;
13
13
  readonly using?: RawNode;
14
+ readonly ifNotExists?: boolean;
14
15
  }
15
16
  /**
16
17
  * @internal
@@ -8,9 +8,11 @@ import { LimitNode } from './limit-node.js';
8
8
  import { OrderByNode } from './order-by-node.js';
9
9
  import { OrderByItemNode } from './order-by-item-node.js';
10
10
  import { ExplainNode } from './explain-node.js';
11
+ import { UsingNode } from './using-node.js';
11
12
  export interface DeleteQueryNode extends OperationNode {
12
13
  readonly kind: 'DeleteQueryNode';
13
14
  readonly from: FromNode;
15
+ readonly using?: UsingNode;
14
16
  readonly joins?: ReadonlyArray<JoinNode>;
15
17
  readonly where?: WhereNode;
16
18
  readonly returning?: ReturningNode;
@@ -24,8 +26,9 @@ export interface DeleteQueryNode extends OperationNode {
24
26
  */
25
27
  export declare const DeleteQueryNode: Readonly<{
26
28
  is(node: OperationNode): node is DeleteQueryNode;
27
- create(fromItem: OperationNode, withNode?: WithNode): DeleteQueryNode;
29
+ create(fromItems: OperationNode[], withNode?: WithNode): DeleteQueryNode;
28
30
  cloneWithOrderByItem(deleteNode: DeleteQueryNode, item: OrderByItemNode): DeleteQueryNode;
29
31
  cloneWithLimit(deleteNode: DeleteQueryNode, limit: LimitNode): DeleteQueryNode;
30
32
  cloneWithExplain(deleteNode: DeleteQueryNode, explain: ExplainNode): DeleteQueryNode;
33
+ cloneWithUsing(deleteNode: DeleteQueryNode, tables: OperationNode[]): DeleteQueryNode;
31
34
  }>;
@@ -4,6 +4,7 @@ exports.DeleteQueryNode = void 0;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
5
  const from_node_js_1 = require("./from-node.js");
6
6
  const order_by_node_js_1 = require("./order-by-node.js");
7
+ const using_node_js_1 = require("./using-node.js");
7
8
  /**
8
9
  * @internal
9
10
  */
@@ -11,10 +12,10 @@ exports.DeleteQueryNode = (0, object_utils_js_1.freeze)({
11
12
  is(node) {
12
13
  return node.kind === 'DeleteQueryNode';
13
14
  },
14
- create(fromItem, withNode) {
15
+ create(fromItems, withNode) {
15
16
  return (0, object_utils_js_1.freeze)({
16
17
  kind: 'DeleteQueryNode',
17
- from: from_node_js_1.FromNode.create([fromItem]),
18
+ from: from_node_js_1.FromNode.create(fromItems),
18
19
  ...(withNode && { with: withNode }),
19
20
  });
20
21
  },
@@ -38,4 +39,12 @@ exports.DeleteQueryNode = (0, object_utils_js_1.freeze)({
38
39
  explain,
39
40
  });
40
41
  },
42
+ cloneWithUsing(deleteNode, tables) {
43
+ return (0, object_utils_js_1.freeze)({
44
+ ...deleteNode,
45
+ using: deleteNode.using !== undefined
46
+ ? using_node_js_1.UsingNode.cloneWithTables(deleteNode.using, tables)
47
+ : using_node_js_1.UsingNode.create(tables),
48
+ });
49
+ },
41
50
  });
@@ -76,6 +76,7 @@ import { PartitionByItemNode } from './partition-by-item-node.js';
76
76
  import { SetOperationNode } from './set-operation-node.js';
77
77
  import { BinaryOperationNode } from './binary-operation-node.js';
78
78
  import { UnaryOperationNode } from './unary-operation-node.js';
79
+ import { UsingNode } from './using-node.js';
79
80
  /**
80
81
  * Transforms an operation node tree into another one.
81
82
  *
@@ -181,6 +182,7 @@ export declare class OperationNodeTransformer {
181
182
  protected transformPartitionByItem(node: PartitionByItemNode): PartitionByItemNode;
182
183
  protected transformBinaryOperation(node: BinaryOperationNode): BinaryOperationNode;
183
184
  protected transformUnaryOperation(node: UnaryOperationNode): UnaryOperationNode;
185
+ protected transformUsing(node: UsingNode): UsingNode;
184
186
  protected transformDataType(node: DataTypeNode): DataTypeNode;
185
187
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
186
188
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -112,6 +112,7 @@ class OperationNodeTransformer {
112
112
  SetOperationNode: this.transformSetOperation.bind(this),
113
113
  BinaryOperationNode: this.transformBinaryOperation.bind(this),
114
114
  UnaryOperationNode: this.transformUnaryOperation.bind(this),
115
+ UsingNode: this.transformUsing.bind(this),
115
116
  });
116
117
  transformNode(node) {
117
118
  if (!node) {
@@ -261,6 +262,7 @@ class OperationNodeTransformer {
261
262
  return (0, require_all_props_js_1.requireAllProps)({
262
263
  kind: 'DeleteQueryNode',
263
264
  from: this.transformNode(node.from),
265
+ using: this.transformNode(node.using),
264
266
  joins: this.transformNodeList(node.joins),
265
267
  where: this.transformNode(node.where),
266
268
  returning: this.transformNode(node.returning),
@@ -404,6 +406,7 @@ class OperationNodeTransformer {
404
406
  expression: this.transformNode(node.expression),
405
407
  unique: node.unique,
406
408
  using: this.transformNode(node.using),
409
+ ifNotExists: node.ifNotExists,
407
410
  });
408
411
  }
409
412
  transformList(node) {
@@ -648,7 +651,7 @@ class OperationNodeTransformer {
648
651
  transformAggregateFunction(node) {
649
652
  return (0, require_all_props_js_1.requireAllProps)({
650
653
  kind: 'AggregateFunctionNode',
651
- column: this.transformNode(node.column),
654
+ aggregated: this.transformNode(node.aggregated),
652
655
  distinct: node.distinct,
653
656
  filter: this.transformNode(node.filter),
654
657
  func: node.func,
@@ -689,6 +692,12 @@ class OperationNodeTransformer {
689
692
  operand: this.transformNode(node.operand),
690
693
  });
691
694
  }
695
+ transformUsing(node) {
696
+ return (0, require_all_props_js_1.requireAllProps)({
697
+ kind: 'UsingNode',
698
+ tables: this.transformNodeList(node.tables),
699
+ });
700
+ }
692
701
  transformDataType(node) {
693
702
  // An Object.freezed leaf node. No need to clone.
694
703
  return node;
@@ -76,6 +76,7 @@ import { PartitionByItemNode } from './partition-by-item-node.js';
76
76
  import { SetOperationNode } from './set-operation-node.js';
77
77
  import { BinaryOperationNode } from './binary-operation-node.js';
78
78
  import { UnaryOperationNode } from './unary-operation-node.js';
79
+ import { UsingNode } from './using-node.js';
79
80
  export declare abstract class OperationNodeVisitor {
80
81
  #private;
81
82
  protected readonly nodeStack: OperationNode[];
@@ -158,4 +159,5 @@ export declare abstract class OperationNodeVisitor {
158
159
  protected abstract visitSetOperation(node: SetOperationNode): void;
159
160
  protected abstract visitBinaryOperation(node: BinaryOperationNode): void;
160
161
  protected abstract visitUnaryOperation(node: UnaryOperationNode): void;
162
+ protected abstract visitUsing(node: UsingNode): void;
161
163
  }
@@ -85,6 +85,7 @@ class OperationNodeVisitor {
85
85
  SetOperationNode: this.visitSetOperation.bind(this),
86
86
  BinaryOperationNode: this.visitBinaryOperation.bind(this),
87
87
  UnaryOperationNode: this.visitUnaryOperation.bind(this),
88
+ UsingNode: this.visitUsing.bind(this),
88
89
  });
89
90
  visitNode = (node) => {
90
91
  this.nodeStack.push(node);
@@ -1,4 +1,4 @@
1
- export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode';
1
+ export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -1,5 +1,5 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "&&", "||", "@@", "@@@", "!!", "<->"];
2
+ export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "&&", "||", "@@", "@@@", "!!", "<->"];
3
3
  export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
4
4
  export declare type ComparisonOperator = typeof COMPARISON_OPERATORS[number];
5
5
  export declare type UnaryFilterOperator = typeof UNARY_FILTER_OPERATORS[number];
@@ -17,6 +17,7 @@ exports.COMPARISON_OPERATORS = [
17
17
  'is not',
18
18
  'like',
19
19
  'not like',
20
+ 'match',
20
21
  'ilike',
21
22
  'not ilike',
22
23
  '@>',
@@ -0,0 +1,13 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ export interface UsingNode extends OperationNode {
3
+ readonly kind: 'UsingNode';
4
+ readonly tables: ReadonlyArray<OperationNode>;
5
+ }
6
+ /**
7
+ * @internal
8
+ */
9
+ export declare const UsingNode: Readonly<{
10
+ is(node: OperationNode): node is UsingNode;
11
+ create(tables: ReadonlyArray<OperationNode>): UsingNode;
12
+ cloneWithTables(using: UsingNode, tables: ReadonlyArray<OperationNode>): UsingNode;
13
+ }>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UsingNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ /**
6
+ * @internal
7
+ */
8
+ exports.UsingNode = (0, object_utils_js_1.freeze)({
9
+ is(node) {
10
+ return node.kind === 'UsingNode';
11
+ },
12
+ create(tables) {
13
+ return (0, object_utils_js_1.freeze)({
14
+ kind: 'UsingNode',
15
+ tables: (0, object_utils_js_1.freeze)(tables),
16
+ });
17
+ },
18
+ cloneWithTables(using, tables) {
19
+ return (0, object_utils_js_1.freeze)({
20
+ ...using,
21
+ tables: (0, object_utils_js_1.freeze)([...using.tables, ...tables]),
22
+ });
23
+ },
24
+ });
@@ -26,6 +26,6 @@ function parseAliasedExpression(exp) {
26
26
  }
27
27
  exports.parseAliasedExpression = parseAliasedExpression;
28
28
  function isExpressionOrFactory(obj) {
29
- return (0, expression_js_1.isExpression)(obj) || (0, object_utils_js_1.isFunction)(obj);
29
+ return (0, expression_js_1.isExpression)(obj) || (0, expression_js_1.isAliasedExpression)(obj) || (0, object_utils_js_1.isFunction)(obj);
30
30
  }
31
31
  exports.isExpressionOrFactory = isExpressionOrFactory;
@@ -6,6 +6,7 @@ import { AliasedExpression } from '../expression/expression.js';
6
6
  export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AliasedExpressionOrFactory<DB, TB>;
7
7
  export declare type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
8
8
  export declare type TableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB> | AliasedExpression<any, any>;
9
+ export declare type TableReferenceOrList<DB> = TableReference<DB> | ReadonlyArray<TableReference<DB>>;
9
10
  export declare type From<DB, TE> = {
10
11
  [C in keyof DB | ExtractAliasFromTableExpression<DB, TE>]: C extends ExtractAliasFromTableExpression<DB, TE> ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? DB[C] : never;
11
12
  };
@@ -1,7 +1,7 @@
1
1
  import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
2
2
  import { UpdateKeys, UpdateType } from '../util/column-type.js';
3
3
  import { ValueExpression } from './value-parser.js';
4
- export declare type UpdateObject<DB, TB extends keyof DB, UT extends keyof DB> = {
4
+ export declare type UpdateObject<DB, TB extends keyof DB, UT extends keyof DB = TB> = {
5
5
  [C in UpdateKeys<DB[UT]>]?: ValueExpression<DB, TB, UpdateType<DB[UT][C]>> | undefined;
6
6
  };
7
7
  export declare function parseUpdateObject(update: UpdateObject<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
@@ -26,6 +26,12 @@ export interface CamelCasePluginOptions {
26
26
  * Defaults to false.
27
27
  */
28
28
  underscoreBetweenUppercaseLetters?: boolean;
29
+ /**
30
+ * If true, nested object's keys will not be converted to camel case.
31
+ *
32
+ * Defaults to false.
33
+ */
34
+ maintainNestedObjectKeys?: boolean;
29
35
  }
30
36
  /**
31
37
  * A plugin that converts snake_case identifiers in the database into
@@ -93,6 +99,7 @@ export interface CamelCasePluginOptions {
93
99
  */
94
100
  export declare class CamelCasePlugin implements KyselyPlugin {
95
101
  #private;
102
+ readonly opt: CamelCasePluginOptions;
96
103
  constructor(opt?: CamelCasePluginOptions);
97
104
  /**
98
105
  * This is called for each query before it is executed. You can modify the query by
@@ -69,10 +69,12 @@ const camel_case_js_1 = require("./camel-case.js");
69
69
  * ```
70
70
  */
71
71
  class CamelCasePlugin {
72
+ opt;
72
73
  #camelCase;
73
74
  #snakeCase;
74
75
  #snakeCaseTransformer;
75
76
  constructor(opt = {}) {
77
+ this.opt = opt;
76
78
  this.#camelCase = (0, camel_case_js_1.createCamelCaseMapper)(opt);
77
79
  this.#snakeCase = (0, camel_case_js_1.createSnakeCaseMapper)(opt);
78
80
  this.#snakeCaseTransformer = new camel_case_transformer_js_1.SnakeCaseTransformer(this.snakeCase.bind(this));
@@ -93,9 +95,9 @@ class CamelCasePlugin {
93
95
  return Object.keys(row).reduce((obj, key) => {
94
96
  let value = row[key];
95
97
  if (Array.isArray(value)) {
96
- value = value.map((it) => (canMap(it) ? this.mapRow(it) : it));
98
+ value = value.map((it) => (canMap(it, this.opt) ? this.mapRow(it) : it));
97
99
  }
98
- else if (canMap(value)) {
100
+ else if (canMap(value, this.opt)) {
99
101
  value = this.mapRow(value);
100
102
  }
101
103
  obj[this.camelCase(key)] = value;
@@ -110,6 +112,10 @@ class CamelCasePlugin {
110
112
  }
111
113
  }
112
114
  exports.CamelCasePlugin = CamelCasePlugin;
113
- function canMap(obj) {
114
- return ((0, object_utils_js_1.isObject)(obj) && !(0, object_utils_js_1.isDate)(obj) && !(0, object_utils_js_1.isBuffer)(obj) && !(0, object_utils_js_1.isArrayBufferOrView)(obj));
115
+ function canMap(obj, opt) {
116
+ return ((0, object_utils_js_1.isObject)(obj) &&
117
+ !(0, object_utils_js_1.isDate)(obj) &&
118
+ !(0, object_utils_js_1.isBuffer)(obj) &&
119
+ !(0, object_utils_js_1.isArrayBufferOrView)(obj) &&
120
+ !opt?.maintainNestedObjectKeys);
115
121
  }
@@ -1,11 +1,11 @@
1
1
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
2
2
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
3
3
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
4
- import { TableExpression } from '../parser/table-parser.js';
4
+ import { From, FromTables, TableExpression } from '../parser/table-parser.js';
5
5
  import { SelectExpression } from '../parser/select-parser.js';
6
6
  import { ReturningRow } from '../parser/returning-parser.js';
7
7
  import { ReferenceExpression } from '../parser/reference-parser.js';
8
- import { MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
8
+ import { MergePartial, Nullable, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
9
9
  import { Compilable } from '../util/compilable.js';
10
10
  import { QueryExecutor } from '../query-executor/query-executor.js';
11
11
  import { QueryId } from '../util/query-id.js';
@@ -428,6 +428,82 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
428
428
  * ```
429
429
  */
430
430
  clearWhere(): DeleteQueryBuilder<DB, TB, O>;
431
+ /**
432
+ * Adds a `using` clause to the query.
433
+ *
434
+ * This clause allows adding additional tables to the query for filtering/returning
435
+ * only. Usually a non-standard syntactic-sugar alternative to a `where` with a sub-query.
436
+ *
437
+ * ### Examples:
438
+ *
439
+ * ```ts
440
+ * await db
441
+ * .deleteFrom('pet')
442
+ * .using('person')
443
+ * .whereRef('pet.owner_id', '=', 'person.id')
444
+ * .where('person.first_name', '=', 'Bob')
445
+ * .executeTakeFirstOrThrow()
446
+ * ```
447
+ *
448
+ * The generated SQL (PostgreSQL):
449
+ *
450
+ * ```sql
451
+ * delete from "pet"
452
+ * using "person"
453
+ * where "pet"."owner_id" = "person"."id"
454
+ * and "person"."first_name" = $1
455
+ * ```
456
+ *
457
+ * On supported databases such as MySQL, this clause allows using joins, but requires
458
+ * at least one of the tables after the `from` keyword to be also named after
459
+ * the `using` keyword. See also {@link innerJoin}, {@link leftJoin}, {@link rightJoin}
460
+ * and {@link fullJoin}.
461
+ *
462
+ * ```ts
463
+ * await db
464
+ * .deleteFrom('pet')
465
+ * .using('pet')
466
+ * .leftJoin('person', 'person.id', 'pet.owner_id')
467
+ * .where('person.first_name', '=', 'Bob')
468
+ * .executeTakeFirstOrThrow()
469
+ * ```
470
+ *
471
+ * The generated SQL (MySQL):
472
+ *
473
+ * ```sql
474
+ * delete from `pet`
475
+ * using `pet`
476
+ * left join `person` on `person`.`id` = `pet`.`owner_id`
477
+ * where `person`.`first_name` = ?
478
+ * ```
479
+ *
480
+ * You can also chain multiple invocations of this method, or pass an array to
481
+ * a single invocation to name multiple tables.
482
+ *
483
+ * ```ts
484
+ * await db
485
+ * .deleteFrom('toy')
486
+ * .using(['pet', 'person'])
487
+ * .whereRef('toy.pet_id', '=', 'pet.id')
488
+ * .whereRef('pet.owner_id', '=', 'person.id')
489
+ * .where('person.first_name', '=', 'Bob')
490
+ * .returning('pet.name')
491
+ * .executeTakeFirstOrThrow()
492
+ * ```
493
+ *
494
+ * The generated SQL (PostgreSQL):
495
+ *
496
+ * ```sql
497
+ * delete from "toy"
498
+ * using "pet", "person"
499
+ * where "toy"."pet_id" = "pet"."id"
500
+ * and "pet"."owner_id" = "person"."id"
501
+ * and "person"."first_name" = $1
502
+ * returning "pet"."name"
503
+ * ```
504
+ */
505
+ using<TE extends TableExpression<DB, keyof DB>>(tables: TE[]): DeleteQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, O>;
506
+ using<TE extends TableExpression<DB, keyof DB>>(table: TE): DeleteQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, O>;
431
507
  /**
432
508
  * Joins another table to the query using an inner join.
433
509
  *
@@ -678,7 +754,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
678
754
  * Simply calls the given function passing `this` as the only argument.
679
755
  *
680
756
  * If you want to conditionally call a method on `this`, see
681
- * the {@link if} method.
757
+ * the {@link $if} method.
682
758
  *
683
759
  * ### Examples
684
760
  *
@@ -691,10 +767,14 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
691
767
  * }
692
768
  *
693
769
  * db.deleteFrom('person')
694
- * .call(log)
770
+ * .$call(log)
695
771
  * .execute()
696
772
  * ```
697
773
  */
774
+ $call<T>(func: (qb: this) => T): T;
775
+ /**
776
+ * @deprecated Use `$call` instead
777
+ */
698
778
  call<T>(func: (qb: this) => T): T;
699
779
  /**
700
780
  * Call `func(this)` if `condition` is true.
@@ -714,7 +794,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
714
794
  * .deleteFrom('person')
715
795
  * .where('id', '=', id)
716
796
  * .returning(['id', 'first_name'])
717
- * .if(returnLastName, (qb) => qb.returning('last_name'))
797
+ * .$if(returnLastName, (qb) => qb.returning('last_name'))
718
798
  * .executeTakeFirstOrThrow()
719
799
  * }
720
800
  * ```
@@ -731,6 +811,10 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
731
811
  * }
732
812
  * ```
733
813
  */
814
+ $if<O2>(condition: boolean, func: (qb: this) => DeleteQueryBuilder<DB, TB, O2>): DeleteQueryBuilder<DB, TB, O2 extends DeleteResult ? DeleteResult : O extends DeleteResult ? Partial<O2> : MergePartial<O, O2>>;
815
+ /**
816
+ * @deprecated Use `$if` instead
817
+ */
734
818
  if<O2>(condition: boolean, func: (qb: this) => DeleteQueryBuilder<DB, TB, O2>): DeleteQueryBuilder<DB, TB, O2 extends DeleteResult ? DeleteResult : O extends DeleteResult ? Partial<O2> : MergePartial<O, O2>>;
735
819
  /**
736
820
  * Change the output type of the query.
@@ -738,6 +822,10 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
738
822
  * You should only use this method as the last resort if the types
739
823
  * don't support your use case.
740
824
  */
825
+ $castTo<T>(): DeleteQueryBuilder<DB, TB, T>;
826
+ /**
827
+ * @deprecated Use `$castTo` instead.
828
+ */
741
829
  castTo<T>(): DeleteQueryBuilder<DB, TB, T>;
742
830
  /**
743
831
  * Asserts that query's output row type equals the given type `T`.
@@ -767,37 +855,41 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
767
855
  * .deleteFrom('person')
768
856
  * .where('id', '=', person.id)
769
857
  * .returning('first_name')
770
- * .assertType<{ first_name: string }>()
858
+ * .$assertType<{ first_name: string }>()
771
859
  * )
772
860
  * .with('deleted_pet', (qb) => qb
773
861
  * .deleteFrom('pet')
774
862
  * .where('owner_id', '=', person.id)
775
863
  * .returning(['name as pet_name', 'species'])
776
- * .assertType<{ pet_name: string, species: Species }>()
864
+ * .$assertType<{ pet_name: string, species: Species }>()
777
865
  * )
778
866
  * .selectFrom(['deleted_person', 'deleted_pet'])
779
867
  * .selectAll()
780
868
  * .executeTakeFirstOrThrow()
781
869
  * ```
782
870
  */
871
+ $assertType<T extends O>(): O extends T ? DeleteQueryBuilder<DB, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
872
+ /**
873
+ * @deprecated Use `$assertType` instead.
874
+ */
783
875
  assertType<T extends O>(): O extends T ? DeleteQueryBuilder<DB, TB, T> : KyselyTypeError<`assertType() call failed: The type passed in is not equal to the output type of the query.`>;
784
876
  /**
785
877
  * Returns a copy of this DeleteQueryBuilder instance with the given plugin installed.
786
878
  */
787
879
  withPlugin(plugin: KyselyPlugin): DeleteQueryBuilder<DB, TB, O>;
788
880
  toOperationNode(): DeleteQueryNode;
789
- compile(): CompiledQuery<O>;
881
+ compile(): CompiledQuery<SimplifyResult<O>>;
790
882
  /**
791
883
  * Executes the query and returns an array of rows.
792
884
  *
793
885
  * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
794
886
  */
795
- execute(): Promise<O[]>;
887
+ execute(): Promise<SimplifyResult<O>[]>;
796
888
  /**
797
889
  * Executes the query and returns the first result or undefined if
798
890
  * the query returned no result.
799
891
  */
800
- executeTakeFirst(): Promise<SingleResultType<O>>;
892
+ executeTakeFirst(): Promise<SimplifySingleResult<O>>;
801
893
  /**
802
894
  * Executes the query and returns the first result or throws if
803
895
  * the query returned no result.
@@ -806,7 +898,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
806
898
  * provide a custom error class as the only argument to throw a different
807
899
  * error.
808
900
  */
809
- executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<O>;
901
+ executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<SimplifyResult<O>>;
810
902
  /**
811
903
  * Executes query with `explain` statement before `delete` keyword.
812
904
  *