kysely 0.9.9 → 0.11.1

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 (206) hide show
  1. package/README.md +22 -16
  2. package/dist/cjs/dialect/dialect-adapter.d.ts +3 -2
  3. package/dist/cjs/dialect/mysql/mysql-adapter.js +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +3 -3
  5. package/dist/cjs/dialect/mysql/mysql-driver.js +25 -32
  6. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +2 -2
  7. package/dist/cjs/dialect/postgres/postgres-driver.js +8 -19
  8. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +7 -0
  9. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +18 -0
  10. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +64 -0
  11. package/dist/cjs/dialect/sqlite/sqlite-dialect.js +33 -0
  12. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +14 -0
  13. package/dist/cjs/dialect/sqlite/sqlite-driver.js +116 -0
  14. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +7 -0
  15. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +44 -0
  16. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
  17. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +19 -0
  18. package/dist/cjs/driver/database-connection.d.ts +2 -2
  19. package/dist/cjs/driver/runtime-driver.js +3 -4
  20. package/dist/cjs/index.d.ts +8 -0
  21. package/dist/cjs/index.js +8 -0
  22. package/dist/cjs/kysely.d.ts +6 -4
  23. package/dist/cjs/kysely.js +6 -4
  24. package/dist/cjs/migration/migration.d.ts +1 -1
  25. package/dist/cjs/migration/migration.js +3 -3
  26. package/dist/cjs/operation-node/column-definition-node.d.ts +8 -6
  27. package/dist/cjs/operation-node/column-definition-node.js +4 -4
  28. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -2
  29. package/dist/cjs/operation-node/create-table-node.d.ts +2 -3
  30. package/dist/cjs/operation-node/create-table-node.js +2 -2
  31. package/dist/cjs/operation-node/create-view-node.d.ts +3 -2
  32. package/dist/cjs/operation-node/default-value-node.d.ts +14 -0
  33. package/dist/cjs/operation-node/default-value-node.js +18 -0
  34. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -2
  35. package/dist/cjs/operation-node/drop-schema-node.d.ts +2 -3
  36. package/dist/cjs/operation-node/drop-schema-node.js +2 -2
  37. package/dist/cjs/operation-node/drop-table-node.d.ts +2 -3
  38. package/dist/cjs/operation-node/drop-table-node.js +2 -2
  39. package/dist/cjs/operation-node/drop-view-node.d.ts +3 -3
  40. package/dist/cjs/operation-node/drop-view-node.js +2 -2
  41. package/dist/cjs/operation-node/generated-always-as-node.d.ts +16 -0
  42. package/dist/cjs/operation-node/generated-always-as-node.js +25 -0
  43. package/dist/cjs/operation-node/having-node.d.ts +4 -8
  44. package/dist/cjs/operation-node/having-node.js +3 -3
  45. package/dist/cjs/operation-node/join-node.d.ts +6 -9
  46. package/dist/cjs/operation-node/join-node.js +10 -7
  47. package/dist/cjs/operation-node/on-node.d.ts +14 -0
  48. package/dist/cjs/operation-node/on-node.js +28 -0
  49. package/dist/cjs/operation-node/operation-node-transformer.d.ts +6 -0
  50. package/dist/cjs/operation-node/operation-node-transformer.js +39 -13
  51. package/dist/cjs/operation-node/operation-node-visitor.d.ts +7 -0
  52. package/dist/cjs/operation-node/operation-node-visitor.js +9 -2
  53. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  54. package/dist/cjs/operation-node/query-node.d.ts +3 -3
  55. package/dist/cjs/operation-node/raw-node.d.ts +1 -1
  56. package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
  57. package/dist/cjs/operation-node/select-query-node.js +1 -1
  58. package/dist/cjs/operation-node/where-node.d.ts +4 -8
  59. package/dist/cjs/operation-node/where-node.js +3 -3
  60. package/dist/cjs/parser/filter-parser.js +1 -1
  61. package/dist/cjs/parser/returning-parser.d.ts +4 -2
  62. package/dist/cjs/parser/select-parser.d.ts +2 -2
  63. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +1 -1
  64. package/dist/cjs/query-builder/delete-result.d.ts +5 -0
  65. package/dist/cjs/query-builder/delete-result.js +13 -0
  66. package/dist/cjs/query-builder/expression-builder.d.ts +2 -2
  67. package/dist/cjs/query-builder/expression-builder.js +1 -1
  68. package/dist/cjs/query-builder/function-builder.d.ts +5 -5
  69. package/dist/cjs/query-builder/function-builder.js +3 -3
  70. package/dist/cjs/query-builder/insert-result.d.ts +27 -0
  71. package/dist/cjs/query-builder/insert-result.js +35 -0
  72. package/dist/cjs/query-builder/query-builder.d.ts +91 -81
  73. package/dist/cjs/query-builder/query-builder.js +38 -41
  74. package/dist/cjs/query-builder/update-result.d.ts +5 -0
  75. package/dist/cjs/query-builder/update-result.js +13 -0
  76. package/dist/cjs/query-compiler/compiled-query.d.ts +5 -0
  77. package/dist/cjs/query-compiler/compiled-query.js +12 -0
  78. package/dist/cjs/query-compiler/default-query-compiler.d.ts +6 -0
  79. package/dist/cjs/query-compiler/default-query-compiler.js +60 -26
  80. package/dist/cjs/query-creator.d.ts +36 -26
  81. package/dist/cjs/query-creator.js +25 -17
  82. package/dist/cjs/raw-builder/raw-builder.d.ts +1 -1
  83. package/dist/cjs/schema/alter-table-builder.d.ts +6 -2
  84. package/dist/cjs/schema/alter-table-builder.js +28 -4
  85. package/dist/cjs/schema/column-definition-builder.d.ts +43 -2
  86. package/dist/cjs/schema/column-definition-builder.js +23 -6
  87. package/dist/cjs/schema/create-schema-builder.js +1 -1
  88. package/dist/cjs/schema/create-table-builder.d.ts +7 -8
  89. package/dist/cjs/schema/create-table-builder.js +8 -9
  90. package/dist/cjs/schema/create-view-builder.d.ts +5 -0
  91. package/dist/cjs/schema/create-view-builder.js +20 -1
  92. package/dist/cjs/schema/drop-index-builder.js +1 -1
  93. package/dist/cjs/schema/drop-schema-builder.js +3 -1
  94. package/dist/cjs/schema/drop-table-builder.js +3 -1
  95. package/dist/cjs/schema/drop-view-builder.d.ts +1 -0
  96. package/dist/cjs/schema/drop-view-builder.js +11 -1
  97. package/dist/cjs/schema/schema.d.ts +3 -3
  98. package/dist/cjs/schema/schema.js +3 -3
  99. package/dist/cjs/util/dynamic-import.d.ts +2 -0
  100. package/dist/cjs/util/dynamic-import.js +32 -0
  101. package/dist/cjs/util/performance-now.d.ts +1 -0
  102. package/dist/cjs/util/performance-now.js +13 -0
  103. package/dist/cjs/util/type-utils.d.ts +4 -15
  104. package/dist/esm/dialect/dialect-adapter.d.ts +3 -2
  105. package/dist/esm/dialect/mysql/mysql-adapter.js +1 -1
  106. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +3 -3
  107. package/dist/esm/dialect/mysql/mysql-driver.js +26 -33
  108. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +2 -2
  109. package/dist/esm/dialect/postgres/postgres-driver.js +8 -19
  110. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +7 -0
  111. package/dist/esm/dialect/sqlite/sqlite-adapter.js +14 -0
  112. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +64 -0
  113. package/dist/esm/dialect/sqlite/sqlite-dialect.js +29 -0
  114. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +14 -0
  115. package/dist/esm/dialect/sqlite/sqlite-driver.js +112 -0
  116. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +7 -0
  117. package/dist/esm/dialect/sqlite/sqlite-introspector.js +40 -0
  118. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
  119. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +15 -0
  120. package/dist/esm/driver/database-connection.d.ts +2 -2
  121. package/dist/esm/driver/runtime-driver.js +3 -4
  122. package/dist/esm/index.d.ts +8 -0
  123. package/dist/esm/index.js +8 -0
  124. package/dist/esm/kysely.d.ts +6 -4
  125. package/dist/esm/kysely.js +6 -4
  126. package/dist/esm/migration/migration.d.ts +1 -1
  127. package/dist/esm/migration/migration.js +3 -3
  128. package/dist/esm/operation-node/column-definition-node.d.ts +8 -6
  129. package/dist/esm/operation-node/column-definition-node.js +4 -4
  130. package/dist/esm/operation-node/create-schema-node.d.ts +1 -2
  131. package/dist/esm/operation-node/create-table-node.d.ts +2 -3
  132. package/dist/esm/operation-node/create-table-node.js +2 -2
  133. package/dist/esm/operation-node/create-view-node.d.ts +3 -2
  134. package/dist/esm/operation-node/default-value-node.d.ts +14 -0
  135. package/dist/esm/operation-node/default-value-node.js +15 -0
  136. package/dist/esm/operation-node/drop-index-node.d.ts +1 -2
  137. package/dist/esm/operation-node/drop-schema-node.d.ts +2 -3
  138. package/dist/esm/operation-node/drop-schema-node.js +2 -2
  139. package/dist/esm/operation-node/drop-table-node.d.ts +2 -3
  140. package/dist/esm/operation-node/drop-table-node.js +2 -2
  141. package/dist/esm/operation-node/drop-view-node.d.ts +3 -3
  142. package/dist/esm/operation-node/drop-view-node.js +2 -2
  143. package/dist/esm/operation-node/generated-always-as-node.d.ts +16 -0
  144. package/dist/esm/operation-node/generated-always-as-node.js +22 -0
  145. package/dist/esm/operation-node/having-node.d.ts +4 -8
  146. package/dist/esm/operation-node/having-node.js +3 -3
  147. package/dist/esm/operation-node/join-node.d.ts +6 -9
  148. package/dist/esm/operation-node/join-node.js +10 -7
  149. package/dist/esm/operation-node/on-node.d.ts +14 -0
  150. package/dist/esm/operation-node/on-node.js +25 -0
  151. package/dist/esm/operation-node/operation-node-transformer.d.ts +6 -0
  152. package/dist/esm/operation-node/operation-node-transformer.js +39 -13
  153. package/dist/esm/operation-node/operation-node-visitor.d.ts +7 -0
  154. package/dist/esm/operation-node/operation-node-visitor.js +9 -2
  155. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  156. package/dist/esm/operation-node/query-node.d.ts +3 -3
  157. package/dist/esm/operation-node/raw-node.d.ts +1 -1
  158. package/dist/esm/operation-node/select-query-node.d.ts +5 -5
  159. package/dist/esm/operation-node/select-query-node.js +1 -1
  160. package/dist/esm/operation-node/where-node.d.ts +4 -8
  161. package/dist/esm/operation-node/where-node.js +3 -3
  162. package/dist/esm/parser/filter-parser.js +1 -1
  163. package/dist/esm/parser/returning-parser.d.ts +4 -2
  164. package/dist/esm/parser/select-parser.d.ts +2 -2
  165. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +1 -1
  166. package/dist/esm/query-builder/delete-result.d.ts +5 -0
  167. package/dist/esm/query-builder/delete-result.js +9 -0
  168. package/dist/esm/query-builder/expression-builder.d.ts +2 -2
  169. package/dist/esm/query-builder/expression-builder.js +1 -1
  170. package/dist/esm/query-builder/function-builder.d.ts +5 -5
  171. package/dist/esm/query-builder/function-builder.js +3 -3
  172. package/dist/esm/query-builder/insert-result.d.ts +27 -0
  173. package/dist/esm/query-builder/insert-result.js +31 -0
  174. package/dist/esm/query-builder/query-builder.d.ts +91 -81
  175. package/dist/esm/query-builder/query-builder.js +38 -41
  176. package/dist/esm/query-builder/update-result.d.ts +5 -0
  177. package/dist/esm/query-builder/update-result.js +9 -0
  178. package/dist/esm/query-compiler/compiled-query.d.ts +5 -0
  179. package/dist/esm/query-compiler/compiled-query.js +11 -1
  180. package/dist/esm/query-compiler/default-query-compiler.d.ts +6 -0
  181. package/dist/esm/query-compiler/default-query-compiler.js +60 -26
  182. package/dist/esm/query-creator.d.ts +36 -26
  183. package/dist/esm/query-creator.js +25 -17
  184. package/dist/esm/raw-builder/raw-builder.d.ts +1 -1
  185. package/dist/esm/schema/alter-table-builder.d.ts +6 -2
  186. package/dist/esm/schema/alter-table-builder.js +28 -4
  187. package/dist/esm/schema/column-definition-builder.d.ts +43 -2
  188. package/dist/esm/schema/column-definition-builder.js +23 -6
  189. package/dist/esm/schema/create-schema-builder.js +1 -1
  190. package/dist/esm/schema/create-table-builder.d.ts +7 -8
  191. package/dist/esm/schema/create-table-builder.js +8 -9
  192. package/dist/esm/schema/create-view-builder.d.ts +5 -0
  193. package/dist/esm/schema/create-view-builder.js +20 -1
  194. package/dist/esm/schema/drop-index-builder.js +1 -1
  195. package/dist/esm/schema/drop-schema-builder.js +3 -1
  196. package/dist/esm/schema/drop-table-builder.js +3 -1
  197. package/dist/esm/schema/drop-view-builder.d.ts +1 -0
  198. package/dist/esm/schema/drop-view-builder.js +11 -1
  199. package/dist/esm/schema/schema.d.ts +3 -3
  200. package/dist/esm/schema/schema.js +3 -3
  201. package/dist/esm/util/dynamic-import.d.ts +2 -0
  202. package/dist/esm/util/dynamic-import.js +27 -0
  203. package/dist/esm/util/performance-now.d.ts +1 -0
  204. package/dist/esm/util/performance-now.js +9 -0
  205. package/dist/esm/util/type-utils.d.ts +4 -15
  206. package/package.json +5 -3
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const and_node_js_1 = require("./and-node.js");
6
+ const or_node_js_1 = require("./or-node.js");
7
+ /**
8
+ * @internal
9
+ */
10
+ exports.OnNode = (0, object_utils_js_1.freeze)({
11
+ is(node) {
12
+ return node.kind === 'OnNode';
13
+ },
14
+ create(filter) {
15
+ return (0, object_utils_js_1.freeze)({
16
+ kind: 'OnNode',
17
+ on: filter,
18
+ });
19
+ },
20
+ cloneWithFilter(onNode, op, filter) {
21
+ return (0, object_utils_js_1.freeze)({
22
+ ...onNode,
23
+ on: op === 'And'
24
+ ? and_node_js_1.AndNode.create(onNode.on, filter)
25
+ : or_node_js_1.OrNode.create(onNode.on, filter),
26
+ });
27
+ },
28
+ });
@@ -60,6 +60,9 @@ import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
60
60
  import { UnionNode } from './union-node.js';
61
61
  import { CreateViewNode } from './create-view-node.js';
62
62
  import { DropViewNode } from './drop-view-node.js';
63
+ import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
64
+ import { DefaultValueNode } from './default-value-node.js';
65
+ import { OnNode } from './on-node.js';
63
66
  /**
64
67
  * Transforms an operation node tree into another one.
65
68
  *
@@ -149,6 +152,9 @@ export declare class OperationNodeTransformer {
149
152
  protected transformDropConstraint(node: DropConstraintNode): DropConstraintNode;
150
153
  protected transformCreateView(node: CreateViewNode): CreateViewNode;
151
154
  protected transformDropView(node: DropViewNode): DropViewNode;
155
+ protected transformGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): GeneratedAlwaysAsNode;
156
+ protected transformDefaultValue(node: DefaultValueNode): DefaultValueNode;
157
+ protected transformOn(node: OnNode): OnNode;
152
158
  protected transformDataType(node: DataTypeNode): DataTypeNode;
153
159
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
154
160
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -33,7 +33,7 @@ const object_utils_js_1 = require("../util/object-utils.js");
33
33
  */
34
34
  class OperationNodeTransformer {
35
35
  nodeStack = [];
36
- #transformers = {
36
+ #transformers = (0, object_utils_js_1.freeze)({
37
37
  AliasNode: this.transformAlias.bind(this),
38
38
  ColumnNode: this.transformColumn.bind(this),
39
39
  IdentifierNode: this.transformIdentifier.bind(this),
@@ -95,7 +95,10 @@ class OperationNodeTransformer {
95
95
  UnionNode: this.transformUnion.bind(this),
96
96
  CreateViewNode: this.transformCreateView.bind(this),
97
97
  DropViewNode: this.transformDropView.bind(this),
98
- };
98
+ GeneratedAlwaysAsNode: this.transformGeneratedAlwaysAs.bind(this),
99
+ DefaultValueNode: this.transformDefaultValue.bind(this),
100
+ OnNode: this.transformOn.bind(this),
101
+ });
99
102
  transformNode = (node) => {
100
103
  if (!node) {
101
104
  return undefined;
@@ -117,7 +120,7 @@ class OperationNodeTransformer {
117
120
  from: this.transformNode(node.from),
118
121
  selections: this.transformNodeList(node.selections),
119
122
  distinctOnSelections: this.transformNodeList(node.distinctOnSelections),
120
- isDistinct: node.isDistinct,
123
+ distinct: node.distinct,
121
124
  joins: this.transformNodeList(node.joins),
122
125
  groupBy: this.transformNode(node.groupBy),
123
126
  orderBy: this.transformNode(node.orderBy),
@@ -259,7 +262,7 @@ class OperationNodeTransformer {
259
262
  table: this.transformNode(node.table),
260
263
  columns: this.transformNodeList(node.columns),
261
264
  constraints: this.transformNodeList(node.constraints),
262
- modifier: node.modifier,
265
+ ifNotExists: node.ifNotExists,
263
266
  };
264
267
  }
265
268
  transformColumnDefinition(node) {
@@ -268,12 +271,13 @@ class OperationNodeTransformer {
268
271
  column: this.transformNode(node.column),
269
272
  dataType: this.transformNode(node.dataType),
270
273
  references: this.transformNode(node.references),
271
- isPrimaryKey: node.isPrimaryKey,
272
- isAutoIncrementing: node.isAutoIncrementing,
273
- isUnique: node.isUnique,
274
- isNullable: node.isNullable,
274
+ primaryKey: node.primaryKey,
275
+ autoIncrement: node.autoIncrement,
276
+ unique: node.unique,
277
+ nullable: node.nullable,
275
278
  defaultTo: this.transformNode(node.defaultTo),
276
279
  check: this.transformNode(node.check),
280
+ generatedAlwaysAs: this.transformNode(node.generatedAlwaysAs),
277
281
  };
278
282
  }
279
283
  transformAddColumn(node) {
@@ -286,7 +290,7 @@ class OperationNodeTransformer {
286
290
  return {
287
291
  kind: 'DropTableNode',
288
292
  table: this.transformNode(node.table),
289
- modifier: node.modifier,
293
+ ifExists: node.ifExists,
290
294
  };
291
295
  }
292
296
  transformOrderBy(node) {
@@ -380,7 +384,7 @@ class OperationNodeTransformer {
380
384
  kind: 'DropIndexNode',
381
385
  name: this.transformNode(node.name),
382
386
  table: this.transformNode(node.table),
383
- modifier: node.modifier,
387
+ ifExists: node.ifExists,
384
388
  };
385
389
  }
386
390
  transformPrimaryKeyConstraint(node) {
@@ -459,7 +463,7 @@ class OperationNodeTransformer {
459
463
  return {
460
464
  kind: 'DropSchemaNode',
461
465
  schema: this.transformNode(node.schema),
462
- modifier: node.modifier,
466
+ ifExists: node.ifExists,
463
467
  };
464
468
  }
465
469
  transformAlterTable(node) {
@@ -524,7 +528,9 @@ class OperationNodeTransformer {
524
528
  return {
525
529
  kind: 'CreateViewNode',
526
530
  name: this.transformNode(node.name),
527
- modifier: node.modifier,
531
+ orReplace: node.orReplace,
532
+ ifNotExists: node.ifNotExists,
533
+ materialized: node.materialized,
528
534
  columns: this.transformNodeList(node.columns),
529
535
  as: this.transformNode(node.as),
530
536
  };
@@ -533,7 +539,27 @@ class OperationNodeTransformer {
533
539
  return {
534
540
  kind: 'DropViewNode',
535
541
  name: this.transformNode(node.name),
536
- modifier: node.modifier,
542
+ ifExists: node.ifExists,
543
+ materialized: node.materialized,
544
+ };
545
+ }
546
+ transformGeneratedAlwaysAs(node) {
547
+ return {
548
+ kind: 'GeneratedAlwaysAsNode',
549
+ expression: this.transformNode(node.expression),
550
+ stored: node.stored,
551
+ };
552
+ }
553
+ transformDefaultValue(node) {
554
+ return {
555
+ kind: 'DefaultValueNode',
556
+ defaultValue: this.transformNode(node.defaultValue),
557
+ };
558
+ }
559
+ transformOn(node) {
560
+ return {
561
+ kind: 'OnNode',
562
+ on: this.transformNode(node.on),
537
563
  };
538
564
  }
539
565
  transformDataType(node) {
@@ -60,9 +60,13 @@ import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
60
60
  import { UnionNode } from './union-node.js';
61
61
  import { CreateViewNode } from './create-view-node.js';
62
62
  import { DropViewNode } from './drop-view-node.js';
63
+ import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
64
+ import { DefaultValueNode } from './default-value-node.js';
65
+ import { OnNode } from './on-node.js';
63
66
  export declare abstract class OperationNodeVisitor {
64
67
  #private;
65
68
  protected readonly nodeStack: OperationNode[];
69
+ protected get parentNode(): OperationNode | undefined;
66
70
  protected readonly visitNode: (node: OperationNode) => void;
67
71
  protected abstract visitSelectQuery(node: SelectQueryNode): void;
68
72
  protected abstract visitSelection(node: SelectionNode): void;
@@ -125,4 +129,7 @@ export declare abstract class OperationNodeVisitor {
125
129
  protected abstract visitOperator(node: OperatorNode): void;
126
130
  protected abstract visitCreateView(node: CreateViewNode): void;
127
131
  protected abstract visitDropView(node: DropViewNode): void;
132
+ protected abstract visitGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): void;
133
+ protected abstract visitDefaultValue(node: DefaultValueNode): void;
134
+ protected abstract visitOn(node: OnNode): void;
128
135
  }
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OperationNodeVisitor = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
4
5
  class OperationNodeVisitor {
5
6
  nodeStack = [];
6
- #visitors = {
7
+ get parentNode() {
8
+ return this.nodeStack[this.nodeStack.length - 2];
9
+ }
10
+ #visitors = (0, object_utils_js_1.freeze)({
7
11
  AliasNode: this.visitAlias.bind(this),
8
12
  ColumnNode: this.visitColumn.bind(this),
9
13
  IdentifierNode: this.visitIdentifier.bind(this),
@@ -65,7 +69,10 @@ class OperationNodeVisitor {
65
69
  UnionNode: this.visitUnion.bind(this),
66
70
  CreateViewNode: this.visitCreateView.bind(this),
67
71
  DropViewNode: this.visitDropView.bind(this),
68
- };
72
+ GeneratedAlwaysAsNode: this.visitGeneratedAlwaysAs.bind(this),
73
+ DefaultValueNode: this.visitDefaultValue.bind(this),
74
+ OnNode: this.visitOn.bind(this),
75
+ });
69
76
  visitNode = (node) => {
70
77
  this.nodeStack.push(node);
71
78
  this.#visitors[node.kind](node);
@@ -1,4 +1,4 @@
1
- export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | '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' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode';
1
+ export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | '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' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedAlwaysAsNode' | 'DefaultValueNode' | 'OnNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -2,10 +2,10 @@ import { InsertQueryNode } from './insert-query-node.js';
2
2
  import { SelectQueryNode } from './select-query-node.js';
3
3
  import { UpdateQueryNode } from './update-query-node.js';
4
4
  import { DeleteQueryNode } from './delete-query-node.js';
5
- import { WhereChildNode } from './where-node.js';
6
5
  import { JoinNode } from './join-node.js';
7
6
  import { SelectionNode } from './selection-node.js';
8
7
  import { OperationNode } from './operation-node.js';
8
+ import { FilterExpressionNode } from './operation-node-utils.js';
9
9
  export declare type QueryNode = SelectQueryNode | DeleteQueryNode | InsertQueryNode | UpdateQueryNode;
10
10
  export declare type MutatingQueryNode = DeleteQueryNode | InsertQueryNode | UpdateQueryNode;
11
11
  export declare type FilterableQueryNode = SelectQueryNode | DeleteQueryNode | UpdateQueryNode;
@@ -16,8 +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, filter: WhereChildNode): T;
20
- cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, filter: WhereChildNode): T_1;
19
+ cloneWithWhere<T extends FilterableQueryNode>(node: T, filter: FilterExpressionNode): T;
20
+ cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, filter: FilterExpressionNode): T_1;
21
21
  cloneWithJoin<T_2 extends FilterableQueryNode>(node: T_2, join: JoinNode): T_2;
22
22
  cloneWithReturning<T_3 extends MutatingQueryNode>(node: T_3, selections: ReadonlyArray<SelectionNode>): T_3;
23
23
  }>;
@@ -9,6 +9,6 @@ export interface RawNode extends OperationNode {
9
9
  */
10
10
  export declare const RawNode: Readonly<{
11
11
  is(node: OperationNode): node is RawNode;
12
- create(sqlFragments: string[], params: ReadonlyArray<OperationNode>): RawNode;
12
+ create(sqlFragments: ReadonlyArray<string>, params: ReadonlyArray<OperationNode>): RawNode;
13
13
  createWithSql(sql: string): RawNode;
14
14
  }>;
@@ -1,12 +1,12 @@
1
1
  import { FromNode } from './from-node.js';
2
2
  import { GroupByItemNode } from './group-by-item-node.js';
3
3
  import { GroupByNode } from './group-by-node.js';
4
- import { HavingNode, HavingNodeChild } from './having-node.js';
4
+ import { HavingNode } from './having-node.js';
5
5
  import { JoinNode } from './join-node.js';
6
6
  import { LimitNode } from './limit-node.js';
7
7
  import { OffsetNode } from './offset-node.js';
8
8
  import { OperationNode } from './operation-node.js';
9
- import { TableExpressionNode } from './operation-node-utils.js';
9
+ import { FilterExpressionNode, TableExpressionNode } from './operation-node-utils.js';
10
10
  import { OrderByItemNode } from './order-by-item-node.js';
11
11
  import { OrderByNode } from './order-by-node.js';
12
12
  import { SelectionNode } from './selection-node.js';
@@ -19,7 +19,7 @@ export interface SelectQueryNode extends OperationNode {
19
19
  readonly from: FromNode;
20
20
  readonly selections?: ReadonlyArray<SelectionNode>;
21
21
  readonly distinctOnSelections?: ReadonlyArray<SelectionNode>;
22
- readonly isDistinct?: boolean;
22
+ readonly distinct?: boolean;
23
23
  readonly joins?: ReadonlyArray<JoinNode>;
24
24
  readonly groupBy?: GroupByNode;
25
25
  readonly orderBy?: OrderByNode;
@@ -44,8 +44,8 @@ export declare const SelectQueryNode: Readonly<{
44
44
  cloneWithGroupByItems(selectNode: SelectQueryNode, items: ReadonlyArray<GroupByItemNode>): SelectQueryNode;
45
45
  cloneWithLimit(selectNode: SelectQueryNode, limit: LimitNode): SelectQueryNode;
46
46
  cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
47
- cloneWithHaving(selectNode: SelectQueryNode, filter: HavingNodeChild): SelectQueryNode;
48
- cloneWithOrHaving(selectNode: SelectQueryNode, filter: HavingNodeChild): SelectQueryNode;
47
+ cloneWithHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
48
+ cloneWithOrHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
49
49
  cloneWithDistinct(selectNode: SelectQueryNode): SelectQueryNode;
50
50
  cloneWithUnion(selectNode: SelectQueryNode, union: UnionNode): SelectQueryNode;
51
51
  }>;
@@ -91,7 +91,7 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
91
91
  cloneWithDistinct(selectNode) {
92
92
  return (0, object_utils_js_1.freeze)({
93
93
  ...selectNode,
94
- isDistinct: true,
94
+ distinct: true,
95
95
  });
96
96
  },
97
97
  cloneWithUnion(selectNode, union) {
@@ -1,18 +1,14 @@
1
- import { AndNode } from './and-node.js';
2
- import { FilterNode } from './filter-node.js';
1
+ import { FilterExpressionNode } from './operation-node-utils.js';
3
2
  import { OperationNode } from './operation-node.js';
4
- import { OrNode } from './or-node.js';
5
- import { ParensNode } from './parens-node.js';
6
- export declare type WhereChildNode = FilterNode | AndNode | OrNode | ParensNode;
7
3
  export interface WhereNode extends OperationNode {
8
4
  readonly kind: 'WhereNode';
9
- readonly where: WhereChildNode;
5
+ readonly where: FilterExpressionNode;
10
6
  }
11
7
  /**
12
8
  * @internal
13
9
  */
14
10
  export declare const WhereNode: Readonly<{
15
11
  is(node: OperationNode): node is WhereNode;
16
- create(filter: WhereChildNode): WhereNode;
17
- cloneWithFilter(whereNode: WhereNode, op: 'And' | 'Or', where: WhereChildNode): WhereNode;
12
+ create(filter: FilterExpressionNode): WhereNode;
13
+ cloneWithFilter(whereNode: WhereNode, op: 'And' | 'Or', filter: FilterExpressionNode): WhereNode;
18
14
  }>;
@@ -17,12 +17,12 @@ exports.WhereNode = (0, object_utils_js_1.freeze)({
17
17
  where: filter,
18
18
  });
19
19
  },
20
- cloneWithFilter(whereNode, op, where) {
20
+ cloneWithFilter(whereNode, op, filter) {
21
21
  return (0, object_utils_js_1.freeze)({
22
22
  ...whereNode,
23
23
  where: op === 'And'
24
- ? and_node_js_1.AndNode.create(whereNode.where, where)
25
- : or_node_js_1.OrNode.create(whereNode.where, where),
24
+ ? and_node_js_1.AndNode.create(whereNode.where, filter)
25
+ : or_node_js_1.OrNode.create(whereNode.where, filter),
26
26
  });
27
27
  },
28
28
  });
@@ -101,7 +101,7 @@ function parseOnGroup(ctx, callback) {
101
101
  if (!joinNode.on) {
102
102
  throw new Error('no `on*` methods called insided a group callback');
103
103
  }
104
- return parens_node_js_1.ParensNode.create(joinNode.on);
104
+ return parens_node_js_1.ParensNode.create(joinNode.on.on);
105
105
  }
106
106
  function parseExistExpression(ctx, type, arg) {
107
107
  const node = (0, object_utils_js_1.isFunction)(arg)
@@ -1,7 +1,9 @@
1
+ import { DeleteResult } from '../query-builder/delete-result.js';
2
+ import { InsertResult } from '../query-builder/insert-result.js';
1
3
  import { QueryBuilder } from '../query-builder/query-builder.js';
2
- import { DeleteResultTypeTag, InsertResultTypeTag, UpdateResultTypeTag } from '../util/type-utils.js';
4
+ import { UpdateResult } from '../query-builder/update-result.js';
3
5
  import { Selection } from './select-parser.js';
4
6
  /**
5
7
  * `returning` method output query builder type
6
8
  */
7
- export declare type QueryBuilderWithReturning<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O extends InsertResultTypeTag ? Selection<DB, TB, S> : O extends DeleteResultTypeTag ? Selection<DB, TB, S> : O extends UpdateResultTypeTag ? Selection<DB, TB, S> : O & Selection<DB, TB, S>>;
9
+ export declare type QueryBuilderWithReturning<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O extends InsertResult ? Selection<DB, TB, S> : O extends DeleteResult ? Selection<DB, TB, S> : O extends UpdateResult ? Selection<DB, TB, S> : O & Selection<DB, TB, S>>;
@@ -1,7 +1,7 @@
1
1
  import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
2
2
  import { AliasedQueryBuilder, QueryBuilder } from '../query-builder/query-builder.js';
3
3
  import { SelectionNode } from '../operation-node/selection-node.js';
4
- import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedColumn, AnyAliasedColumnWithTable, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnyColumn, AnyColumnWithTable, InsertResultTypeTag, RowType, ValueType } from '../util/type-utils.js';
4
+ import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedColumn, AnyAliasedColumnWithTable, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnyColumn, AnyColumnWithTable, RowType, ValueType } from '../util/type-utils.js';
5
5
  import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
6
6
  import { ParseContext } from './parse-context.js';
7
7
  /**
@@ -13,7 +13,7 @@ export declare type SelectExpressionOrList<DB, TB extends keyof DB> = SelectExpr
13
13
  * Given a selection expression returns a query builder type that
14
14
  * has the selection.
15
15
  */
16
- export declare type QueryBuilderWithSelection<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O extends InsertResultTypeTag ? InsertResultTypeTag : O & Selection<DB, TB, S>>;
16
+ export declare type QueryBuilderWithSelection<DB, TB extends keyof DB, O, S> = QueryBuilder<DB, TB, O & Selection<DB, TB, S>>;
17
17
  /**
18
18
  * `selectAll` output query builder type.
19
19
  */
@@ -1,6 +1,6 @@
1
1
  import { QueryResult } from '../../driver/database-connection.js';
2
- import { UnknownRow } from '../../index.js';
3
2
  import { RootOperationNode } from '../../query-compiler/query-compiler.js';
3
+ import { UnknownRow } from '../../util/type-utils.js';
4
4
  import { KyselyPlugin, PluginTransformQueryArgs, PluginTransformResultArgs } from '../kysely-plugin.js';
5
5
  /**
6
6
  * Transforms all ValueNodes to immediate.
@@ -0,0 +1,5 @@
1
+ export declare class DeleteResult {
2
+ #private;
3
+ constructor(numDeletedRows: bigint);
4
+ get numDeletedRows(): bigint;
5
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeleteResult = void 0;
4
+ class DeleteResult {
5
+ #numDeletedRows;
6
+ constructor(numDeletedRows) {
7
+ this.#numDeletedRows = numDeletedRows;
8
+ }
9
+ get numDeletedRows() {
10
+ return this.#numDeletedRows;
11
+ }
12
+ }
13
+ exports.DeleteResult = DeleteResult;
@@ -26,7 +26,7 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
26
26
  * .execute()
27
27
  * ```
28
28
  *
29
- * The generated SQL (postgresql):
29
+ * The generated SQL (PostgreSQL):
30
30
  *
31
31
  * ```sql
32
32
  * select "person"."id", count("pet"."id") as "pet_count"
@@ -62,7 +62,7 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
62
62
  * console.log(result[0].owner_name)
63
63
  * ```
64
64
  *
65
- * The generated SQL (postgresql):
65
+ * The generated SQL (PostgreSQL):
66
66
  *
67
67
  * ```sql
68
68
  * select
@@ -34,7 +34,7 @@ class ExpressionBuilder {
34
34
  * .execute()
35
35
  * ```
36
36
  *
37
- * The generated SQL (postgresql):
37
+ * The generated SQL (PostgreSQL):
38
38
  *
39
39
  * ```sql
40
40
  * select "person"."id", count("pet"."id") as "pet_count"
@@ -19,7 +19,7 @@ import { RawBuilder } from '../raw-builder/raw-builder.js';
19
19
  * .execute()
20
20
  * ```
21
21
  *
22
- * The generated SQL (postgresql):
22
+ * The generated SQL (PostgreSQL):
23
23
  *
24
24
  * ```sql
25
25
  * select "person"."id", count("pet"."id") as "pet_count"
@@ -66,7 +66,7 @@ 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 | BigInt` by default. This is because Kysely can't
69
+ * will be `number | string | bigint` by default. This is because Kysely can't
70
70
  * know the type the db driver outputs. Sometimes the output can be larger than
71
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
@@ -83,12 +83,12 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
83
83
  * .execute()
84
84
  * ```
85
85
  */
86
- sum<O extends number | string | BigInt, C extends StringReference<DB, TB> = any>(column: C): RawBuilder<O>;
86
+ sum<O extends number | string | bigint, C extends StringReference<DB, TB> = any>(column: C): RawBuilder<O>;
87
87
  /**
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 | BigInt` by default. This is because Kysely can't
91
+ * will be `number | string |bigint` by default. This is because Kysely can't
92
92
  * know the type the db driver outputs. Sometimes the output can be larger than
93
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
@@ -105,7 +105,7 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
105
105
  * .execute()
106
106
  * ```
107
107
  */
108
- count<O extends number | string | BigInt, C extends StringReference<DB, TB> = any>(column: C): RawBuilder<O>;
108
+ count<O extends number | string | bigint, C extends StringReference<DB, TB> = any>(column: C): RawBuilder<O>;
109
109
  }
110
110
  export interface FunctionBuilderProps {
111
111
  readonly executor: QueryExecutor;
@@ -22,7 +22,7 @@ const query_id_js_1 = require("../util/query-id.js");
22
22
  * .execute()
23
23
  * ```
24
24
  *
25
- * The generated SQL (postgresql):
25
+ * The generated SQL (PostgreSQL):
26
26
  *
27
27
  * ```sql
28
28
  * select "person"."id", count("pet"."id") as "pet_count"
@@ -82,7 +82,7 @@ class FunctionBuilder {
82
82
  * Calls the `sum` function for the column given as the argument.
83
83
  *
84
84
  * If this is used in a `select` statement the type of the selected expression
85
- * will be `number | string | BigInt` by default. This is because Kysely can't
85
+ * will be `number | string | bigint` by default. This is because Kysely can't
86
86
  * know the type the db driver outputs. Sometimes the output can be larger than
87
87
  * the largest javascript number and a string is returned instead. Most drivers
88
88
  * allow you to configure the output type of large numbers and Kysely can't
@@ -106,7 +106,7 @@ class FunctionBuilder {
106
106
  * Calls the `count` function for the column given as the argument.
107
107
  *
108
108
  * If this is used in a `select` statement the type of the selected expression
109
- * will be `number | string | BigInt` by default. This is because Kysely can't
109
+ * will be `number | string |bigint` by default. This is because Kysely can't
110
110
  * know the type the db driver outputs. Sometimes the output can be larger than
111
111
  * the largest javascript number and a string is returned instead. Most drivers
112
112
  * allow you to configure the output type of large numbers and Kysely can't
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The result of an insert query.
3
+ *
4
+ * If the table has an auto incrementing primary key {@link insertId} will hold
5
+ * the generated id on dialects that support it. For example PostgreSQL doesn't
6
+ * return the id by default and {@link insertId} is undefined. On PostgreSQL you
7
+ * need to use {@link QueryBuilder.returning} or {@link QueryBuilder.returningAll}
8
+ * to get out the inserted id.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const result = await db
13
+ * .insertInto('person')
14
+ * .values(person)
15
+ * .executeTakeFirst()
16
+ *
17
+ * console.log(result.insertId)
18
+ * ```
19
+ */
20
+ export declare class InsertResult {
21
+ #private;
22
+ constructor(insertId: bigint | undefined);
23
+ /**
24
+ * The auto incrementing primary key
25
+ */
26
+ get insertId(): bigint | undefined;
27
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InsertResult = void 0;
4
+ /**
5
+ * The result of an insert query.
6
+ *
7
+ * If the table has an auto incrementing primary key {@link insertId} will hold
8
+ * the generated id on dialects that support it. For example PostgreSQL doesn't
9
+ * return the id by default and {@link insertId} is undefined. On PostgreSQL you
10
+ * need to use {@link QueryBuilder.returning} or {@link QueryBuilder.returningAll}
11
+ * to get out the inserted id.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const result = await db
16
+ * .insertInto('person')
17
+ * .values(person)
18
+ * .executeTakeFirst()
19
+ *
20
+ * console.log(result.insertId)
21
+ * ```
22
+ */
23
+ class InsertResult {
24
+ #insertId;
25
+ constructor(insertId) {
26
+ this.#insertId = insertId;
27
+ }
28
+ /**
29
+ * The auto incrementing primary key
30
+ */
31
+ get insertId() {
32
+ return this.#insertId;
33
+ }
34
+ }
35
+ exports.InsertResult = InsertResult;