kysely 0.27.3 → 0.27.4

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 (211) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/README.md +7 -7
  3. package/dist/cjs/dialect/dialect-adapter-base.d.ts +2 -1
  4. package/dist/cjs/dialect/dialect-adapter-base.js +4 -1
  5. package/dist/cjs/dialect/dialect-adapter.d.ts +5 -0
  6. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +1 -5
  7. package/dist/cjs/dialect/mssql/mssql-adapter.js +2 -4
  8. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +46 -26
  9. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +1 -0
  10. package/dist/cjs/dialect/mssql/mssql-driver.js +95 -36
  11. package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -1
  12. package/dist/cjs/driver/database-connection.d.ts +3 -1
  13. package/dist/cjs/dynamic/dynamic-reference-builder.js +2 -2
  14. package/dist/cjs/dynamic/dynamic.d.ts +1 -1
  15. package/dist/cjs/dynamic/dynamic.js +1 -1
  16. package/dist/cjs/expression/expression-builder.d.ts +2 -2
  17. package/dist/cjs/expression/expression-builder.js +2 -3
  18. package/dist/cjs/expression/expression.js +2 -3
  19. package/dist/cjs/helpers/mssql.js +3 -4
  20. package/dist/cjs/helpers/mysql.d.ts +3 -3
  21. package/dist/cjs/helpers/mysql.js +6 -7
  22. package/dist/cjs/helpers/postgres.d.ts +4 -4
  23. package/dist/cjs/helpers/postgres.js +7 -8
  24. package/dist/cjs/helpers/sqlite.js +3 -4
  25. package/dist/cjs/index.d.ts +28 -21
  26. package/dist/cjs/index.js +28 -21
  27. package/dist/cjs/kysely.d.ts +1 -1
  28. package/dist/cjs/kysely.js +3 -3
  29. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -1
  30. package/dist/cjs/operation-node/case-node.d.ts +1 -1
  31. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
  32. package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
  33. package/dist/cjs/operation-node/data-type-node.js +5 -3
  34. package/dist/cjs/operation-node/delete-query-node.d.ts +2 -0
  35. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -4
  36. package/dist/cjs/operation-node/having-node.d.ts +1 -1
  37. package/dist/cjs/operation-node/insert-query-node.d.ts +2 -0
  38. package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
  39. package/dist/cjs/operation-node/on-node.d.ts +1 -1
  40. package/dist/cjs/operation-node/operation-node-source.js +1 -2
  41. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  42. package/dist/cjs/operation-node/operation-node-transformer.js +12 -0
  43. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  44. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  45. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/operator-node.d.ts +3 -3
  47. package/dist/cjs/operation-node/operator-node.js +8 -6
  48. package/dist/cjs/operation-node/output-node.d.ts +13 -0
  49. package/dist/cjs/operation-node/output-node.js +26 -0
  50. package/dist/cjs/operation-node/query-node.d.ts +11 -6
  51. package/dist/cjs/operation-node/query-node.js +9 -0
  52. package/dist/cjs/operation-node/select-query-node.d.ts +1 -0
  53. package/dist/cjs/operation-node/select-query-node.js +6 -0
  54. package/dist/cjs/operation-node/update-query-node.d.ts +2 -0
  55. package/dist/cjs/operation-node/where-node.d.ts +1 -1
  56. package/dist/cjs/parser/binary-operation-parser.js +5 -6
  57. package/dist/cjs/parser/data-type-parser.js +1 -2
  58. package/dist/cjs/parser/default-value-parser.js +1 -2
  59. package/dist/cjs/parser/expression-parser.js +3 -4
  60. package/dist/cjs/parser/fetch-parser.js +1 -2
  61. package/dist/cjs/parser/group-by-parser.js +1 -2
  62. package/dist/cjs/parser/identifier-parser.js +1 -2
  63. package/dist/cjs/parser/insert-values-parser.js +1 -2
  64. package/dist/cjs/parser/join-parser.js +1 -2
  65. package/dist/cjs/parser/merge-parser.js +2 -3
  66. package/dist/cjs/parser/on-commit-action-parse.js +1 -2
  67. package/dist/cjs/parser/on-modify-action-parser.js +1 -2
  68. package/dist/cjs/parser/order-by-parser.js +3 -4
  69. package/dist/cjs/parser/parse-utils.js +4 -5
  70. package/dist/cjs/parser/partition-by-parser.js +1 -2
  71. package/dist/cjs/parser/reference-parser.js +8 -9
  72. package/dist/cjs/parser/returning-parser.d.ts +4 -3
  73. package/dist/cjs/parser/select-parser.js +2 -3
  74. package/dist/cjs/parser/set-operation-parser.js +1 -2
  75. package/dist/cjs/parser/table-parser.js +4 -5
  76. package/dist/cjs/parser/top-parser.js +1 -2
  77. package/dist/cjs/parser/unary-operation-parser.js +3 -4
  78. package/dist/cjs/parser/update-set-parser.js +2 -3
  79. package/dist/cjs/parser/value-parser.js +4 -5
  80. package/dist/cjs/parser/with-parser.js +1 -2
  81. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +2 -2
  82. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +2 -2
  83. package/dist/cjs/plugin/camel-case/camel-case.js +2 -3
  84. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +18 -0
  85. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +19 -11
  86. package/dist/cjs/query-builder/delete-query-builder.d.ts +89 -5
  87. package/dist/cjs/query-builder/delete-query-builder.js +19 -5
  88. package/dist/cjs/query-builder/function-module.d.ts +5 -5
  89. package/dist/cjs/query-builder/function-module.js +1 -2
  90. package/dist/cjs/query-builder/insert-query-builder.d.ts +95 -10
  91. package/dist/cjs/query-builder/insert-query-builder.js +25 -10
  92. package/dist/cjs/query-builder/merge-query-builder.d.ts +167 -3
  93. package/dist/cjs/query-builder/merge-query-builder.js +30 -1
  94. package/dist/cjs/query-builder/no-result-error.js +2 -2
  95. package/dist/cjs/query-builder/on-conflict-builder.d.ts +2 -2
  96. package/dist/cjs/query-builder/output-interface.d.ts +95 -0
  97. package/dist/cjs/query-builder/output-interface.js +2 -0
  98. package/dist/cjs/query-builder/returning-interface.d.ts +2 -0
  99. package/dist/cjs/query-builder/select-query-builder.d.ts +76 -11
  100. package/dist/cjs/query-builder/select-query-builder.js +7 -2
  101. package/dist/cjs/query-builder/update-query-builder.d.ts +95 -10
  102. package/dist/cjs/query-builder/update-query-builder.js +21 -7
  103. package/dist/cjs/query-builder/update-result.d.ts +9 -0
  104. package/dist/cjs/query-builder/update-result.js +9 -0
  105. package/dist/cjs/query-builder/where-interface.d.ts +1 -1
  106. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  107. package/dist/cjs/query-compiler/default-query-compiler.js +25 -1
  108. package/dist/cjs/query-creator.d.ts +56 -3
  109. package/dist/cjs/query-creator.js +54 -1
  110. package/dist/cjs/raw-builder/raw-builder.js +1 -2
  111. package/dist/cjs/raw-builder/sql.d.ts +5 -5
  112. package/dist/cjs/schema/alter-column-builder.js +3 -0
  113. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +1 -1
  114. package/dist/cjs/schema/alter-table-add-index-builder.js +1 -1
  115. package/dist/cjs/schema/alter-table-builder.js +1 -2
  116. package/dist/cjs/schema/column-definition-builder.d.ts +5 -0
  117. package/dist/cjs/schema/column-definition-builder.js +7 -0
  118. package/dist/cjs/util/assert.js +2 -3
  119. package/dist/cjs/util/compilable.js +1 -2
  120. package/dist/cjs/util/json-object-args.js +1 -2
  121. package/dist/cjs/util/log-once.js +1 -2
  122. package/dist/cjs/util/object-utils.js +38 -26
  123. package/dist/cjs/util/performance-now.js +1 -2
  124. package/dist/cjs/util/prevent-await.js +1 -2
  125. package/dist/cjs/util/query-id.js +1 -2
  126. package/dist/cjs/util/random-string.js +1 -2
  127. package/dist/cjs/util/require-all-props.js +1 -2
  128. package/dist/cjs/util/stack-trace-utils.js +1 -2
  129. package/dist/esm/dialect/dialect-adapter-base.d.ts +2 -1
  130. package/dist/esm/dialect/dialect-adapter-base.js +4 -1
  131. package/dist/esm/dialect/dialect-adapter.d.ts +5 -0
  132. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +1 -5
  133. package/dist/esm/dialect/mssql/mssql-adapter.js +2 -4
  134. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +46 -26
  135. package/dist/esm/dialect/mssql/mssql-driver.d.ts +1 -0
  136. package/dist/esm/dialect/mssql/mssql-driver.js +95 -36
  137. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
  138. package/dist/esm/driver/database-connection.d.ts +3 -1
  139. package/dist/esm/dynamic/dynamic.d.ts +1 -1
  140. package/dist/esm/dynamic/dynamic.js +1 -1
  141. package/dist/esm/expression/expression-builder.d.ts +2 -2
  142. package/dist/esm/helpers/mysql.d.ts +3 -3
  143. package/dist/esm/helpers/mysql.js +3 -3
  144. package/dist/esm/helpers/postgres.d.ts +4 -4
  145. package/dist/esm/helpers/postgres.js +4 -4
  146. package/dist/esm/index.d.ts +28 -21
  147. package/dist/esm/index.js +28 -21
  148. package/dist/esm/kysely.d.ts +1 -1
  149. package/dist/esm/kysely.js +1 -1
  150. package/dist/esm/operation-node/alter-column-node.d.ts +1 -1
  151. package/dist/esm/operation-node/case-node.d.ts +1 -1
  152. package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
  153. package/dist/esm/operation-node/data-type-node.d.ts +2 -2
  154. package/dist/esm/operation-node/data-type-node.js +3 -1
  155. package/dist/esm/operation-node/delete-query-node.d.ts +2 -0
  156. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -4
  157. package/dist/esm/operation-node/having-node.d.ts +1 -1
  158. package/dist/esm/operation-node/insert-query-node.d.ts +2 -0
  159. package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
  160. package/dist/esm/operation-node/on-node.d.ts +1 -1
  161. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  162. package/dist/esm/operation-node/operation-node-transformer.js +12 -0
  163. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  164. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  165. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  166. package/dist/esm/operation-node/operator-node.d.ts +3 -3
  167. package/dist/esm/operation-node/operator-node.js +2 -0
  168. package/dist/esm/operation-node/output-node.d.ts +13 -0
  169. package/dist/esm/operation-node/output-node.js +24 -0
  170. package/dist/esm/operation-node/query-node.d.ts +11 -6
  171. package/dist/esm/operation-node/query-node.js +9 -0
  172. package/dist/esm/operation-node/select-query-node.d.ts +1 -0
  173. package/dist/esm/operation-node/select-query-node.js +6 -0
  174. package/dist/esm/operation-node/update-query-node.d.ts +2 -0
  175. package/dist/esm/operation-node/where-node.d.ts +1 -1
  176. package/dist/esm/parser/returning-parser.d.ts +4 -3
  177. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +2 -2
  178. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  179. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +18 -0
  180. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +19 -11
  181. package/dist/esm/query-builder/delete-query-builder.d.ts +89 -5
  182. package/dist/esm/query-builder/delete-query-builder.js +19 -5
  183. package/dist/esm/query-builder/function-module.d.ts +5 -5
  184. package/dist/esm/query-builder/insert-query-builder.d.ts +95 -10
  185. package/dist/esm/query-builder/insert-query-builder.js +25 -10
  186. package/dist/esm/query-builder/merge-query-builder.d.ts +167 -3
  187. package/dist/esm/query-builder/merge-query-builder.js +30 -1
  188. package/dist/esm/query-builder/on-conflict-builder.d.ts +2 -2
  189. package/dist/esm/query-builder/output-interface.d.ts +95 -0
  190. package/dist/esm/query-builder/output-interface.js +2 -0
  191. package/dist/esm/query-builder/returning-interface.d.ts +2 -0
  192. package/dist/esm/query-builder/select-query-builder.d.ts +76 -11
  193. package/dist/esm/query-builder/select-query-builder.js +6 -0
  194. package/dist/esm/query-builder/update-query-builder.d.ts +95 -10
  195. package/dist/esm/query-builder/update-query-builder.js +21 -7
  196. package/dist/esm/query-builder/update-result.d.ts +9 -0
  197. package/dist/esm/query-builder/update-result.js +9 -0
  198. package/dist/esm/query-builder/where-interface.d.ts +1 -1
  199. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  200. package/dist/esm/query-compiler/default-query-compiler.js +25 -1
  201. package/dist/esm/query-creator.d.ts +56 -3
  202. package/dist/esm/query-creator.js +54 -1
  203. package/dist/esm/raw-builder/sql.d.ts +5 -5
  204. package/dist/esm/schema/alter-column-builder.js +3 -0
  205. package/dist/esm/schema/alter-table-add-index-builder.d.ts +1 -1
  206. package/dist/esm/schema/alter-table-add-index-builder.js +1 -1
  207. package/dist/esm/schema/alter-table-builder.js +1 -2
  208. package/dist/esm/schema/column-definition-builder.d.ts +5 -0
  209. package/dist/esm/schema/column-definition-builder.js +7 -0
  210. package/dist/esm/util/object-utils.js +18 -5
  211. package/package.json +7 -6
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parsePartitionBy = void 0;
3
+ exports.parsePartitionBy = parsePartitionBy;
4
4
  const partition_by_item_node_js_1 = require("../operation-node/partition-by-item-node.js");
5
5
  const reference_parser_js_1 = require("./reference-parser.js");
6
6
  function parsePartitionBy(partitionBy) {
7
7
  return (0, reference_parser_js_1.parseReferenceExpressionOrList)(partitionBy).map(partition_by_item_node_js_1.PartitionByItemNode.create);
8
8
  }
9
- exports.parsePartitionBy = parsePartitionBy;
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseOrderedColumnName = exports.parseColumnName = exports.parseAliasedStringReference = exports.parseStringReference = exports.parseJSONReference = exports.parseReferenceExpression = exports.parseReferenceExpressionOrList = exports.parseSimpleReferenceExpression = void 0;
3
+ exports.parseSimpleReferenceExpression = parseSimpleReferenceExpression;
4
+ exports.parseReferenceExpressionOrList = parseReferenceExpressionOrList;
5
+ exports.parseReferenceExpression = parseReferenceExpression;
6
+ exports.parseJSONReference = parseJSONReference;
7
+ exports.parseStringReference = parseStringReference;
8
+ exports.parseAliasedStringReference = parseAliasedStringReference;
9
+ exports.parseColumnName = parseColumnName;
10
+ exports.parseOrderedColumnName = parseOrderedColumnName;
4
11
  const alias_node_js_1 = require("../operation-node/alias-node.js");
5
12
  const column_node_js_1 = require("../operation-node/column-node.js");
6
13
  const reference_node_js_1 = require("../operation-node/reference-node.js");
@@ -19,7 +26,6 @@ function parseSimpleReferenceExpression(exp) {
19
26
  }
20
27
  return exp.toOperationNode();
21
28
  }
22
- exports.parseSimpleReferenceExpression = parseSimpleReferenceExpression;
23
29
  function parseReferenceExpressionOrList(arg) {
24
30
  if ((0, object_utils_js_1.isReadonlyArray)(arg)) {
25
31
  return arg.map((it) => parseReferenceExpression(it));
@@ -28,14 +34,12 @@ function parseReferenceExpressionOrList(arg) {
28
34
  return [parseReferenceExpression(arg)];
29
35
  }
30
36
  }
31
- exports.parseReferenceExpressionOrList = parseReferenceExpressionOrList;
32
37
  function parseReferenceExpression(exp) {
33
38
  if ((0, expression_parser_js_1.isExpressionOrFactory)(exp)) {
34
39
  return (0, expression_parser_js_1.parseExpression)(exp);
35
40
  }
36
41
  return parseSimpleReferenceExpression(exp);
37
42
  }
38
- exports.parseReferenceExpression = parseReferenceExpression;
39
43
  function parseJSONReference(ref, op) {
40
44
  const referenceNode = parseStringReference(ref);
41
45
  if ((0, operator_node_js_1.isJSONOperator)(op)) {
@@ -47,7 +51,6 @@ function parseJSONReference(ref, op) {
47
51
  }
48
52
  throw new Error(`Invalid JSON operator: ${op}`);
49
53
  }
50
- exports.parseJSONReference = parseJSONReference;
51
54
  function parseStringReference(ref) {
52
55
  const COLUMN_SEPARATOR = '.';
53
56
  if (!ref.includes(COLUMN_SEPARATOR)) {
@@ -62,7 +65,6 @@ function parseStringReference(ref) {
62
65
  }
63
66
  throw new Error(`invalid column reference ${ref}`);
64
67
  }
65
- exports.parseStringReference = parseStringReference;
66
68
  function parseAliasedStringReference(ref) {
67
69
  const ALIAS_SEPARATOR = ' as ';
68
70
  if (ref.includes(ALIAS_SEPARATOR)) {
@@ -73,11 +75,9 @@ function parseAliasedStringReference(ref) {
73
75
  return parseStringReference(ref);
74
76
  }
75
77
  }
76
- exports.parseAliasedStringReference = parseAliasedStringReference;
77
78
  function parseColumnName(column) {
78
79
  return column_node_js_1.ColumnNode.create(column);
79
80
  }
80
- exports.parseColumnName = parseColumnName;
81
81
  function parseOrderedColumnName(column) {
82
82
  const ORDER_SEPARATOR = ' ';
83
83
  if (column.includes(ORDER_SEPARATOR)) {
@@ -91,7 +91,6 @@ function parseOrderedColumnName(column) {
91
91
  return parseColumnName(column);
92
92
  }
93
93
  }
94
- exports.parseOrderedColumnName = parseOrderedColumnName;
95
94
  function parseStringReferenceWithTableAndSchema(parts) {
96
95
  const [schema, table, column] = parts;
97
96
  return reference_node_js_1.ReferenceNode.create(column_node_js_1.ColumnNode.create(column), table_node_js_1.TableNode.createWithSchema(schema, table));
@@ -1,7 +1,8 @@
1
1
  import { DeleteResult } from '../query-builder/delete-result.js';
2
2
  import { InsertResult } from '../query-builder/insert-result.js';
3
+ import { MergeResult } from '../query-builder/merge-result.js';
3
4
  import { UpdateResult } from '../query-builder/update-result.js';
4
5
  import { Selection, AllSelection, CallbackSelection } from './select-parser.js';
5
- export type ReturningRow<DB, TB extends keyof DB, O, SE> = O extends InsertResult ? Selection<DB, TB, SE> : O extends DeleteResult ? Selection<DB, TB, SE> : O extends UpdateResult ? Selection<DB, TB, SE> : O & Selection<DB, TB, SE>;
6
- export type ReturningCallbackRow<DB, TB extends keyof DB, O, CB> = O extends InsertResult ? CallbackSelection<DB, TB, CB> : O extends DeleteResult ? CallbackSelection<DB, TB, CB> : O extends UpdateResult ? CallbackSelection<DB, TB, CB> : O & CallbackSelection<DB, TB, CB>;
7
- export type ReturningAllRow<DB, TB extends keyof DB, O> = O extends InsertResult ? AllSelection<DB, TB> : O extends DeleteResult ? AllSelection<DB, TB> : O extends UpdateResult ? AllSelection<DB, TB> : O & AllSelection<DB, TB>;
6
+ export type ReturningRow<DB, TB extends keyof DB, O, SE> = O extends InsertResult | DeleteResult | UpdateResult | MergeResult ? Selection<DB, TB, SE> : O & Selection<DB, TB, SE>;
7
+ export type ReturningCallbackRow<DB, TB extends keyof DB, O, CB> = O extends InsertResult | DeleteResult | UpdateResult | MergeResult ? CallbackSelection<DB, TB, CB> : O & CallbackSelection<DB, TB, CB>;
8
+ export type ReturningAllRow<DB, TB extends keyof DB, O> = O extends InsertResult | DeleteResult | UpdateResult | MergeResult ? AllSelection<DB, TB> : O & AllSelection<DB, TB>;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseSelectAll = exports.parseSelectArg = void 0;
3
+ exports.parseSelectArg = parseSelectArg;
4
+ exports.parseSelectAll = parseSelectAll;
4
5
  const object_utils_js_1 = require("../util/object-utils.js");
5
6
  const selection_node_js_1 = require("../operation-node/selection-node.js");
6
7
  const reference_parser_js_1 = require("./reference-parser.js");
@@ -19,7 +20,6 @@ function parseSelectArg(selection) {
19
20
  return [parseSelectExpression(selection)];
20
21
  }
21
22
  }
22
- exports.parseSelectArg = parseSelectArg;
23
23
  function parseSelectExpression(selection) {
24
24
  if ((0, object_utils_js_1.isString)(selection)) {
25
25
  return selection_node_js_1.SelectionNode.create((0, reference_parser_js_1.parseAliasedStringReference)(selection));
@@ -42,7 +42,6 @@ function parseSelectAll(table) {
42
42
  return [parseSelectAllArg(table)];
43
43
  }
44
44
  }
45
- exports.parseSelectAll = parseSelectAll;
46
45
  function parseSelectAllArg(table) {
47
46
  if ((0, object_utils_js_1.isString)(table)) {
48
47
  return selection_node_js_1.SelectionNode.createSelectAllFromTable((0, table_parser_js_1.parseTable)(table));
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseSetOperations = void 0;
3
+ exports.parseSetOperations = parseSetOperations;
4
4
  const expression_builder_js_1 = require("../expression/expression-builder.js");
5
5
  const set_operation_node_js_1 = require("../operation-node/set-operation-node.js");
6
6
  const object_utils_js_1 = require("../util/object-utils.js");
@@ -14,4 +14,3 @@ function parseSetOperations(operator, expression, all) {
14
14
  }
15
15
  return expression.map((expr) => set_operation_node_js_1.SetOperationNode.create(operator, (0, expression_parser_js_1.parseExpression)(expr), all));
16
16
  }
17
- exports.parseSetOperations = parseSetOperations;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseTable = exports.parseAliasedTable = exports.parseTableExpression = exports.parseTableExpressionOrList = void 0;
3
+ exports.parseTableExpressionOrList = parseTableExpressionOrList;
4
+ exports.parseTableExpression = parseTableExpression;
5
+ exports.parseAliasedTable = parseAliasedTable;
6
+ exports.parseTable = parseTable;
4
7
  const object_utils_js_1 = require("../util/object-utils.js");
5
8
  const alias_node_js_1 = require("../operation-node/alias-node.js");
6
9
  const table_node_js_1 = require("../operation-node/table-node.js");
@@ -14,7 +17,6 @@ function parseTableExpressionOrList(table) {
14
17
  return [parseTableExpression(table)];
15
18
  }
16
19
  }
17
- exports.parseTableExpressionOrList = parseTableExpressionOrList;
18
20
  function parseTableExpression(table) {
19
21
  if ((0, object_utils_js_1.isString)(table)) {
20
22
  return parseAliasedTable(table);
@@ -23,7 +25,6 @@ function parseTableExpression(table) {
23
25
  return (0, expression_parser_js_1.parseAliasedExpression)(table);
24
26
  }
25
27
  }
26
- exports.parseTableExpression = parseTableExpression;
27
28
  function parseAliasedTable(from) {
28
29
  const ALIAS_SEPARATOR = ' as ';
29
30
  if (from.includes(ALIAS_SEPARATOR)) {
@@ -34,7 +35,6 @@ function parseAliasedTable(from) {
34
35
  return parseTable(from);
35
36
  }
36
37
  }
37
- exports.parseAliasedTable = parseAliasedTable;
38
38
  function parseTable(from) {
39
39
  const SCHEMA_SEPARATOR = '.';
40
40
  if (from.includes(SCHEMA_SEPARATOR)) {
@@ -45,7 +45,6 @@ function parseTable(from) {
45
45
  return table_node_js_1.TableNode.create(from);
46
46
  }
47
47
  }
48
- exports.parseTable = parseTable;
49
48
  function trim(str) {
50
49
  return str.trim();
51
50
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseTop = void 0;
3
+ exports.parseTop = parseTop;
4
4
  const top_node_js_1 = require("../operation-node/top-node.js");
5
5
  const object_utils_js_1 = require("../util/object-utils.js");
6
6
  function parseTop(expression, modifiers) {
@@ -12,7 +12,6 @@ function parseTop(expression, modifiers) {
12
12
  }
13
13
  return top_node_js_1.TopNode.create(expression, modifiers);
14
14
  }
15
- exports.parseTop = parseTop;
16
15
  function isTopModifiers(modifiers) {
17
16
  return (modifiers === 'percent' ||
18
17
  modifiers === 'with ties' ||
@@ -1,18 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseUnaryOperation = exports.parseNotExists = exports.parseExists = void 0;
3
+ exports.parseExists = parseExists;
4
+ exports.parseNotExists = parseNotExists;
5
+ exports.parseUnaryOperation = parseUnaryOperation;
4
6
  const operator_node_js_1 = require("../operation-node/operator-node.js");
5
7
  const unary_operation_node_js_1 = require("../operation-node/unary-operation-node.js");
6
8
  const reference_parser_js_1 = require("./reference-parser.js");
7
9
  function parseExists(operand) {
8
10
  return parseUnaryOperation('exists', operand);
9
11
  }
10
- exports.parseExists = parseExists;
11
12
  function parseNotExists(operand) {
12
13
  return parseUnaryOperation('not exists', operand);
13
14
  }
14
- exports.parseNotExists = parseNotExists;
15
15
  function parseUnaryOperation(operator, operand) {
16
16
  return unary_operation_node_js_1.UnaryOperationNode.create(operator_node_js_1.OperatorNode.create(operator), (0, reference_parser_js_1.parseReferenceExpression)(operand));
17
17
  }
18
- exports.parseUnaryOperation = parseUnaryOperation;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseUpdateObjectExpression = exports.parseUpdate = void 0;
3
+ exports.parseUpdate = parseUpdate;
4
+ exports.parseUpdateObjectExpression = parseUpdateObjectExpression;
4
5
  const column_node_js_1 = require("../operation-node/column-node.js");
5
6
  const column_update_node_js_1 = require("../operation-node/column-update-node.js");
6
7
  const expression_builder_js_1 = require("../expression/expression-builder.js");
@@ -15,7 +16,6 @@ function parseUpdate(...args) {
15
16
  }
16
17
  return parseUpdateObjectExpression(args[0]);
17
18
  }
18
- exports.parseUpdate = parseUpdate;
19
19
  function parseUpdateObjectExpression(update) {
20
20
  const updateObj = (0, object_utils_js_1.isFunction)(update) ? update((0, expression_builder_js_1.expressionBuilder)()) : update;
21
21
  return Object.entries(updateObj)
@@ -24,4 +24,3 @@ function parseUpdateObjectExpression(update) {
24
24
  return column_update_node_js_1.ColumnUpdateNode.create(column_node_js_1.ColumnNode.create(key), (0, value_parser_js_1.parseValueExpression)(value));
25
25
  });
26
26
  }
27
- exports.parseUpdateObjectExpression = parseUpdateObjectExpression;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseSafeImmediateValue = exports.isSafeImmediateValue = exports.parseValueExpression = exports.parseValueExpressionOrList = void 0;
3
+ exports.parseValueExpressionOrList = parseValueExpressionOrList;
4
+ exports.parseValueExpression = parseValueExpression;
5
+ exports.isSafeImmediateValue = isSafeImmediateValue;
6
+ exports.parseSafeImmediateValue = parseSafeImmediateValue;
4
7
  const primitive_value_list_node_js_1 = require("../operation-node/primitive-value-list-node.js");
5
8
  const value_list_node_js_1 = require("../operation-node/value-list-node.js");
6
9
  const value_node_js_1 = require("../operation-node/value-node.js");
@@ -12,25 +15,21 @@ function parseValueExpressionOrList(arg) {
12
15
  }
13
16
  return parseValueExpression(arg);
14
17
  }
15
- exports.parseValueExpressionOrList = parseValueExpressionOrList;
16
18
  function parseValueExpression(exp) {
17
19
  if ((0, expression_parser_js_1.isExpressionOrFactory)(exp)) {
18
20
  return (0, expression_parser_js_1.parseExpression)(exp);
19
21
  }
20
22
  return value_node_js_1.ValueNode.create(exp);
21
23
  }
22
- exports.parseValueExpression = parseValueExpression;
23
24
  function isSafeImmediateValue(value) {
24
25
  return (0, object_utils_js_1.isNumber)(value) || (0, object_utils_js_1.isBoolean)(value) || (0, object_utils_js_1.isNull)(value);
25
26
  }
26
- exports.isSafeImmediateValue = isSafeImmediateValue;
27
27
  function parseSafeImmediateValue(value) {
28
28
  if (!isSafeImmediateValue(value)) {
29
29
  throw new Error(`unsafe immediate value ${JSON.stringify(value)}`);
30
30
  }
31
31
  return value_node_js_1.ValueNode.createImmediate(value);
32
32
  }
33
- exports.parseSafeImmediateValue = parseSafeImmediateValue;
34
33
  function parseValueExpressionList(arg) {
35
34
  if (arg.some(expression_parser_js_1.isExpressionOrFactory)) {
36
35
  return value_list_node_js_1.ValueListNode.create(arg.map((it) => parseValueExpression(it)));
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseCommonTableExpression = void 0;
3
+ exports.parseCommonTableExpression = parseCommonTableExpression;
4
4
  const common_table_expression_name_node_js_1 = require("../operation-node/common-table-expression-name-node.js");
5
5
  const parse_utils_js_1 = require("./parse-utils.js");
6
6
  const object_utils_js_1 = require("../util/object-utils.js");
@@ -13,7 +13,6 @@ function parseCommonTableExpression(nameOrBuilderCallback, expression) {
13
13
  }
14
14
  return common_table_expression_node_js_1.CommonTableExpressionNode.create(parseCommonTableExpressionName(nameOrBuilderCallback), expressionNode);
15
15
  }
16
- exports.parseCommonTableExpression = parseCommonTableExpression;
17
16
  function cteBuilderFactory(expressionNode) {
18
17
  return (name) => {
19
18
  return new cte_builder_js_1.CTEBuilder({
@@ -35,7 +35,7 @@ export interface CamelCasePluginOptions {
35
35
  }
36
36
  /**
37
37
  * A plugin that converts snake_case identifiers in the database into
38
- * camelCase in the javascript side.
38
+ * camelCase in the JavaScript side.
39
39
  *
40
40
  * For example let's assume we have a table called `person_table`
41
41
  * with columns `first_name` and `last_name` in the database. When
@@ -75,7 +75,7 @@ export interface CamelCasePluginOptions {
75
75
  * ```
76
76
  *
77
77
  * As you can see from the example, __everything__ needs to be defined
78
- * in camelCase in the typescript code: table names, columns, schemas,
78
+ * in camelCase in the TypeScript code: table names, columns, schemas,
79
79
  * __everything__. When using the `CamelCasePlugin` Kysely works as if
80
80
  * the database was defined in camelCase.
81
81
  *
@@ -6,7 +6,7 @@ const camel_case_transformer_js_1 = require("./camel-case-transformer.js");
6
6
  const camel_case_js_1 = require("./camel-case.js");
7
7
  /**
8
8
  * A plugin that converts snake_case identifiers in the database into
9
- * camelCase in the javascript side.
9
+ * camelCase in the JavaScript side.
10
10
  *
11
11
  * For example let's assume we have a table called `person_table`
12
12
  * with columns `first_name` and `last_name` in the database. When
@@ -46,7 +46,7 @@ const camel_case_js_1 = require("./camel-case.js");
46
46
  * ```
47
47
  *
48
48
  * As you can see from the example, __everything__ needs to be defined
49
- * in camelCase in the typescript code: table names, columns, schemas,
49
+ * in camelCase in the TypeScript code: table names, columns, schemas,
50
50
  * __everything__. When using the `CamelCasePlugin` Kysely works as if
51
51
  * the database was defined in camelCase.
52
52
  *
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createCamelCaseMapper = exports.createSnakeCaseMapper = void 0;
3
+ exports.createSnakeCaseMapper = createSnakeCaseMapper;
4
+ exports.createCamelCaseMapper = createCamelCaseMapper;
4
5
  /**
5
6
  * Creates a function that transforms camel case strings to snake case.
6
7
  */
@@ -52,7 +53,6 @@ function createSnakeCaseMapper({ upperCase = false, underscoreBeforeDigits = fal
52
53
  }
53
54
  });
54
55
  }
55
- exports.createSnakeCaseMapper = createSnakeCaseMapper;
56
56
  /**
57
57
  * Creates a function that transforms snake case strings to camel case.
58
58
  */
@@ -83,7 +83,6 @@ function createCamelCaseMapper({ upperCase = false, } = {}) {
83
83
  return out;
84
84
  });
85
85
  }
86
- exports.createCamelCaseMapper = createCamelCaseMapper;
87
86
  function isAllUpperCaseSnakeCase(str) {
88
87
  for (let i = 1, l = str.length; i < l; ++i) {
89
88
  const char = str[i];
@@ -2,6 +2,20 @@ import { QueryResult } from '../../driver/database-connection.js';
2
2
  import { RootOperationNode } from '../../query-compiler/query-compiler.js';
3
3
  import { UnknownRow } from '../../util/type-utils.js';
4
4
  import { KyselyPlugin, PluginTransformQueryArgs, PluginTransformResultArgs } from '../kysely-plugin.js';
5
+ export interface ParseJSONResultsPluginOptions {
6
+ /**
7
+ * When `'in-place'`, arrays' and objects' values are parsed in-place. This is
8
+ * the most time and space efficient option.
9
+ *
10
+ * This can result in runtime errors if some objects/arrays are readonly.
11
+ *
12
+ * When `'create'`, new arrays and objects are created to avoid such errors.
13
+ *
14
+ * Defaults to `'in-place'`.
15
+ */
16
+ objectStrategy?: ObjectStrategy;
17
+ }
18
+ type ObjectStrategy = 'in-place' | 'create';
5
19
  /**
6
20
  * Parses JSON strings in query results into JSON objects.
7
21
  *
@@ -16,6 +30,9 @@ import { KyselyPlugin, PluginTransformQueryArgs, PluginTransformResultArgs } fro
16
30
  * ```
17
31
  */
18
32
  export declare class ParseJSONResultsPlugin implements KyselyPlugin {
33
+ #private;
34
+ readonly opt: ParseJSONResultsPluginOptions;
35
+ constructor(opt?: ParseJSONResultsPluginOptions);
19
36
  /**
20
37
  * This is called for each query before it is executed. You can modify the query by
21
38
  * transforming its {@link OperationNode} tree provided in {@link PluginTransformQueryArgs.node | args.node}
@@ -53,3 +70,4 @@ export declare class ParseJSONResultsPlugin implements KyselyPlugin {
53
70
  */
54
71
  transformResult(args: PluginTransformResultArgs): Promise<QueryResult<UnknownRow>>;
55
72
  }
73
+ export {};
@@ -16,6 +16,12 @@ const object_utils_js_1 = require("../../util/object-utils.js");
16
16
  * ```
17
17
  */
18
18
  class ParseJSONResultsPlugin {
19
+ opt;
20
+ #objectStrategy;
21
+ constructor(opt = {}) {
22
+ this.opt = opt;
23
+ this.#objectStrategy = opt.objectStrategy || 'in-place';
24
+ }
19
25
  // noop
20
26
  transformQuery(args) {
21
27
  return args.node;
@@ -23,33 +29,34 @@ class ParseJSONResultsPlugin {
23
29
  async transformResult(args) {
24
30
  return {
25
31
  ...args.result,
26
- rows: parseArray(args.result.rows),
32
+ rows: parseArray(args.result.rows, this.#objectStrategy),
27
33
  };
28
34
  }
29
35
  }
30
36
  exports.ParseJSONResultsPlugin = ParseJSONResultsPlugin;
31
- function parseArray(arr) {
37
+ function parseArray(arr, objectStrategy) {
38
+ const target = objectStrategy === 'create' ? new Array(arr.length) : arr;
32
39
  for (let i = 0; i < arr.length; ++i) {
33
- arr[i] = parse(arr[i]);
40
+ target[i] = parse(arr[i], objectStrategy);
34
41
  }
35
- return arr;
42
+ return target;
36
43
  }
37
- function parse(obj) {
44
+ function parse(obj, objectStrategy) {
38
45
  if ((0, object_utils_js_1.isString)(obj)) {
39
46
  return parseString(obj);
40
47
  }
41
48
  if (Array.isArray(obj)) {
42
- return parseArray(obj);
49
+ return parseArray(obj, objectStrategy);
43
50
  }
44
51
  if ((0, object_utils_js_1.isPlainObject)(obj)) {
45
- return parseObject(obj);
52
+ return parseObject(obj, objectStrategy);
46
53
  }
47
54
  return obj;
48
55
  }
49
56
  function parseString(str) {
50
57
  if (maybeJson(str)) {
51
58
  try {
52
- return parse(JSON.parse(str));
59
+ return parse(JSON.parse(str), 'in-place');
53
60
  }
54
61
  catch (err) {
55
62
  // this catch block is intentionally empty.
@@ -60,9 +67,10 @@ function parseString(str) {
60
67
  function maybeJson(value) {
61
68
  return value.match(/^[\[\{]/) != null;
62
69
  }
63
- function parseObject(obj) {
70
+ function parseObject(obj, objectStrategy) {
71
+ const target = objectStrategy === 'create' ? {} : obj;
64
72
  for (const key in obj) {
65
- obj[key] = parse(obj[key]);
73
+ target[key] = parse(obj[key], objectStrategy);
66
74
  }
67
- return obj;
75
+ return target;
68
76
  }
@@ -24,7 +24,8 @@ import { KyselyTypeError } from '../util/type-error.js';
24
24
  import { Streamable } from '../util/streamable.js';
25
25
  import { ExpressionOrFactory } from '../parser/expression-parser.js';
26
26
  import { ValueExpression } from '../parser/value-parser.js';
27
- export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
27
+ import { OutputCallback, OutputExpression, OutputInterface, SelectExpressionFromOutputCallback, SelectExpressionFromOutputExpression } from './output-interface.js';
28
+ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OutputInterface<DB, TB, O, 'deleted'>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
28
29
  #private;
29
30
  constructor(props: DeleteQueryBuilderProps);
30
31
  /**
@@ -289,7 +290,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
289
290
  * .selectFrom('person')
290
291
  * .selectAll()
291
292
  * .where(
292
- * sql`coalesce(first_name, last_name)`,
293
+ * sql<string>`coalesce(first_name, last_name)`,
293
294
  * 'like',
294
295
  * '%' + name + '%',
295
296
  * )
@@ -799,9 +800,92 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
799
800
  /**
800
801
  * Adds a `returning *` to an insert/update/delete query on databases
801
802
  * that support `returning` such as PostgreSQL.
803
+ *
804
+ * Also see the {@link returning} method.
802
805
  */
803
806
  returningAll<T extends TB>(table: T): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, T, O>>;
804
807
  returningAll(): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, TB, O>>;
808
+ /**
809
+ * Allows you to return data from modified rows.
810
+ *
811
+ * On supported databases like MS SQL Server (MSSQL), this method can be chained
812
+ * to `insert`, `update`, `delete` and `merge` queries to return data.
813
+ *
814
+ * Also see the {@link outputAll} method.
815
+ *
816
+ * ### Examples
817
+ *
818
+ * Return one column:
819
+ *
820
+ * ```ts
821
+ * const { id } = await db
822
+ * .insertInto('person')
823
+ * .output('inserted.id')
824
+ * .values({
825
+ * first_name: 'Jennifer',
826
+ * last_name: 'Aniston'
827
+ * })
828
+ * .executeTakeFirst()
829
+ * ```
830
+ *
831
+ * Return multiple columns:
832
+ *
833
+ * ```ts
834
+ * const { id, first_name } = await db
835
+ * .updateTable('person')
836
+ * .set({ first_name: 'John', last_name: 'Doe' })
837
+ * .output([
838
+ * 'deleted.first_name as old_first_name',
839
+ * 'deleted.last_name as old_last_name',
840
+ * 'inserted.first_name as new_first_name',
841
+ * 'inserted.last_name as new_last_name',
842
+ * ])
843
+ * .where('created_at', '<', new Date())
844
+ * .executeTakeFirst()
845
+ * ```
846
+ *
847
+ * Return arbitrary expressions:
848
+ *
849
+ * ```ts
850
+ * import { sql } from 'kysely'
851
+ *
852
+ * const { id, full_name } = await db
853
+ * .deleteFrom('person')
854
+ * .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name')
855
+ * .where('created_at', '<', new Date())
856
+ * .executeTakeFirst()
857
+ * ```
858
+ *
859
+ * Return the action performed on the row:
860
+ *
861
+ * ```ts
862
+ * await db
863
+ * .mergeInto('person')
864
+ * .using('pet', 'pet.owner_id', 'person.id')
865
+ * .whenMatched()
866
+ * .thenDelete()
867
+ * .whenNotMatched()
868
+ * .thenInsertValues({
869
+ * first_name: 'John',
870
+ * last_name: 'Doe',
871
+ * gender: 'male'
872
+ * })
873
+ * .output([
874
+ * 'inserted.id as inserted_id',
875
+ * 'deleted.id as deleted_id',
876
+ * ])
877
+ * ```
878
+ */
879
+ output<OE extends OutputExpression<DB, TB, 'deleted'>>(selections: readonly OE[]): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>>;
880
+ output<CB extends OutputCallback<DB, TB, 'deleted'>>(callback: CB): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputCallback<CB>>>;
881
+ output<OE extends OutputExpression<DB, TB, 'deleted'>>(selection: OE): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>>;
882
+ /**
883
+ * Adds an `output {prefix}.*` to an `insert`/`update`/`delete`/`merge` query on databases
884
+ * that support `output` such as MS SQL Server (MSSQL).
885
+ *
886
+ * Also see the {@link output} method.
887
+ */
888
+ outputAll(table: 'deleted'): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, TB, O>>;
805
889
  /**
806
890
  * Clears all `returning` clauses from the query.
807
891
  *
@@ -1026,17 +1110,17 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
1026
1110
  /**
1027
1111
  * Asserts that query's output row type equals the given type `T`.
1028
1112
  *
1029
- * This method can be used to simplify excessively complex types to make typescript happy
1113
+ * This method can be used to simplify excessively complex types to make TypeScript happy
1030
1114
  * and much faster.
1031
1115
  *
1032
1116
  * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
1033
- * for typescript and you get errors like this:
1117
+ * for TypeScript and you get errors like this:
1034
1118
  *
1035
1119
  * ```
1036
1120
  * error TS2589: Type instantiation is excessively deep and possibly infinite.
1037
1121
  * ```
1038
1122
  *
1039
- * In these case you can often use this method to help typescript a little bit. When you use this
1123
+ * In these case you can often use this method to help TypeScript a little bit. When you use this
1040
1124
  * method to assert the output type of a query, Kysely can drop the complex output type that
1041
1125
  * consists of multiple nested helper types and replace it with the simple asserted type.
1042
1126
  *
@@ -125,6 +125,18 @@ class DeleteQueryBuilder {
125
125
  queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
126
126
  });
127
127
  }
128
+ output(args) {
129
+ return new DeleteQueryBuilder({
130
+ ...this.#props,
131
+ queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectArg)(args)),
132
+ });
133
+ }
134
+ outputAll(table) {
135
+ return new DeleteQueryBuilder({
136
+ ...this.#props,
137
+ queryNode: query_node_js_1.QueryNode.cloneWithOutput(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
138
+ });
139
+ }
128
140
  /**
129
141
  * Clears all `returning` clauses from the query.
130
142
  *
@@ -387,17 +399,17 @@ class DeleteQueryBuilder {
387
399
  /**
388
400
  * Asserts that query's output row type equals the given type `T`.
389
401
  *
390
- * This method can be used to simplify excessively complex types to make typescript happy
402
+ * This method can be used to simplify excessively complex types to make TypeScript happy
391
403
  * and much faster.
392
404
  *
393
405
  * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
394
- * for typescript and you get errors like this:
406
+ * for TypeScript and you get errors like this:
395
407
  *
396
408
  * ```
397
409
  * error TS2589: Type instantiation is excessively deep and possibly infinite.
398
410
  * ```
399
411
  *
400
- * In these case you can often use this method to help typescript a little bit. When you use this
412
+ * In these case you can often use this method to help TypeScript a little bit. When you use this
401
413
  * method to assert the output type of a query, Kysely can drop the complex output type that
402
414
  * consists of multiple nested helper types and replace it with the simple asserted type.
403
415
  *
@@ -450,9 +462,11 @@ class DeleteQueryBuilder {
450
462
  */
451
463
  async execute() {
452
464
  const compiledQuery = this.compile();
453
- const query = compiledQuery.query;
454
465
  const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
455
- if (this.#props.executor.adapter.supportsReturning && query.returning) {
466
+ const { adapter } = this.#props.executor;
467
+ const query = compiledQuery.query;
468
+ if ((query.returning && adapter.supportsReturning) ||
469
+ (query.output && adapter.supportsOutput)) {
456
470
  return result.rows;
457
471
  }
458
472
  return [