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
package/dist/esm/index.js CHANGED
@@ -6,6 +6,7 @@ export { expressionBuilder, } from './expression/expression-builder.js';
6
6
  export * from './expression/expression-wrapper.js';
7
7
  export * from './query-builder/where-interface.js';
8
8
  export * from './query-builder/returning-interface.js';
9
+ export * from './query-builder/output-interface.js';
9
10
  export * from './query-builder/having-interface.js';
10
11
  export * from './query-builder/select-query-builder.js';
11
12
  export * from './query-builder/insert-query-builder.js';
@@ -92,17 +93,21 @@ export * from './plugin/with-schema/with-schema-plugin.js';
92
93
  export * from './plugin/parse-json-results/parse-json-results-plugin.js';
93
94
  export * from './operation-node/add-column-node.js';
94
95
  export * from './operation-node/add-constraint-node.js';
96
+ export * from './operation-node/add-index-node.js';
97
+ export * from './operation-node/aggregate-function-node.js';
95
98
  export * from './operation-node/alias-node.js';
96
99
  export * from './operation-node/alter-column-node.js';
97
100
  export * from './operation-node/alter-table-node.js';
98
101
  export * from './operation-node/and-node.js';
102
+ export * from './operation-node/binary-operation-node.js';
99
103
  export * from './operation-node/case-node.js';
104
+ export * from './operation-node/cast-node.js';
100
105
  export * from './operation-node/check-constraint-node.js';
101
106
  export * from './operation-node/column-definition-node.js';
102
107
  export * from './operation-node/column-node.js';
103
108
  export * from './operation-node/column-update-node.js';
104
- export * from './operation-node/common-table-expression-node.js';
105
109
  export * from './operation-node/common-table-expression-name-node.js';
110
+ export * from './operation-node/common-table-expression-node.js';
106
111
  export * from './operation-node/constraint-node.js';
107
112
  export * from './operation-node/create-index-node.js';
108
113
  export * from './operation-node/create-schema-node.js';
@@ -110,6 +115,7 @@ export * from './operation-node/create-table-node.js';
110
115
  export * from './operation-node/create-type-node.js';
111
116
  export * from './operation-node/create-view-node.js';
112
117
  export * from './operation-node/data-type-node.js';
118
+ export * from './operation-node/default-insert-value-node.js';
113
119
  export * from './operation-node/default-value-node.js';
114
120
  export * from './operation-node/delete-query-node.js';
115
121
  export * from './operation-node/drop-column-node.js';
@@ -119,8 +125,11 @@ export * from './operation-node/drop-schema-node.js';
119
125
  export * from './operation-node/drop-table-node.js';
120
126
  export * from './operation-node/drop-type-node.js';
121
127
  export * from './operation-node/drop-view-node.js';
128
+ export * from './operation-node/explain-node.js';
129
+ export * from './operation-node/fetch-node.js';
122
130
  export * from './operation-node/foreign-key-constraint-node.js';
123
131
  export * from './operation-node/from-node.js';
132
+ export * from './operation-node/function-node.js';
124
133
  export * from './operation-node/generated-node.js';
125
134
  export * from './operation-node/group-by-item-node.js';
126
135
  export * from './operation-node/group-by-node.js';
@@ -128,8 +137,14 @@ export * from './operation-node/having-node.js';
128
137
  export * from './operation-node/identifier-node.js';
129
138
  export * from './operation-node/insert-query-node.js';
130
139
  export * from './operation-node/join-node.js';
140
+ export * from './operation-node/json-operator-chain-node.js';
141
+ export * from './operation-node/json-path-leg-node.js';
142
+ export * from './operation-node/json-path-node.js';
143
+ export * from './operation-node/json-reference-node.js';
131
144
  export * from './operation-node/limit-node.js';
132
145
  export * from './operation-node/list-node.js';
146
+ export * from './operation-node/matched-node.js';
147
+ export * from './operation-node/merge-query-node.js';
133
148
  export * from './operation-node/modify-column-node.js';
134
149
  export * from './operation-node/offset-node.js';
135
150
  export * from './operation-node/on-conflict-node.js';
@@ -143,7 +158,11 @@ export * from './operation-node/operator-node.js';
143
158
  export * from './operation-node/or-node.js';
144
159
  export * from './operation-node/order-by-item-node.js';
145
160
  export * from './operation-node/order-by-node.js';
161
+ export * from './operation-node/output-node.js';
162
+ export * from './operation-node/over-node.js';
146
163
  export * from './operation-node/parens-node.js';
164
+ export * from './operation-node/partition-by-item-node.js';
165
+ export * from './operation-node/partition-by-node.js';
147
166
  export * from './operation-node/primary-constraint-node.js';
148
167
  export * from './operation-node/primitive-value-list-node.js';
149
168
  export * from './operation-node/query-node.js';
@@ -152,38 +171,26 @@ export * from './operation-node/reference-node.js';
152
171
  export * from './operation-node/references-node.js';
153
172
  export * from './operation-node/rename-column-node.js';
154
173
  export * from './operation-node/returning-node.js';
174
+ export * from './operation-node/schemable-identifier-node.js';
155
175
  export * from './operation-node/select-all-node.js';
156
- export * from './operation-node/select-query-node.js';
176
+ export * from './operation-node/select-modifier-node.js';
157
177
  export * from './operation-node/select-query-node.js';
158
178
  export * from './operation-node/selection-node.js';
179
+ export * from './operation-node/set-operation-node.js';
180
+ export * from './operation-node/simple-reference-expression-node.js';
159
181
  export * from './operation-node/table-node.js';
182
+ export * from './operation-node/top-node.js';
183
+ export * from './operation-node/tuple-node.js';
184
+ export * from './operation-node/unary-operation-node.js';
160
185
  export * from './operation-node/unique-constraint-node.js';
161
186
  export * from './operation-node/update-query-node.js';
187
+ export * from './operation-node/using-node.js';
162
188
  export * from './operation-node/value-list-node.js';
163
189
  export * from './operation-node/value-node.js';
164
190
  export * from './operation-node/values-node.js';
165
191
  export * from './operation-node/when-node.js';
166
192
  export * from './operation-node/where-node.js';
167
193
  export * from './operation-node/with-node.js';
168
- export * from './operation-node/explain-node.js';
169
- export * from './operation-node/default-insert-value-node.js';
170
- export * from './operation-node/aggregate-function-node.js';
171
- export * from './operation-node/over-node.js';
172
- export * from './operation-node/partition-by-node.js';
173
- export * from './operation-node/partition-by-item-node.js';
174
- export * from './operation-node/set-operation-node.js';
175
- export * from './operation-node/binary-operation-node.js';
176
- export * from './operation-node/unary-operation-node.js';
177
- export * from './operation-node/using-node.js';
178
- export * from './operation-node/json-reference-node.js';
179
- export * from './operation-node/json-path-leg-node.js';
180
- export * from './operation-node/json-path-node.js';
181
- export * from './operation-node/json-operator-chain-node.js';
182
- export * from './operation-node/tuple-node.js';
183
- export * from './operation-node/merge-query-node.js';
184
- export * from './operation-node/matched-node.js';
185
- export * from './operation-node/fetch-node.js';
186
- export * from './operation-node/top-node.js';
187
194
  export * from './util/column-type.js';
188
195
  export * from './util/compilable.js';
189
196
  export * from './util/explainable.js';
@@ -20,7 +20,7 @@ import { DrainOuterGeneric } from './util/type-utils.js';
20
20
  * The main Kysely class.
21
21
  *
22
22
  * You should create one instance of `Kysely` per database using the {@link Kysely}
23
- * constructor. Each `Kysely` instance maintains it's own connection pool.
23
+ * constructor. Each `Kysely` instance maintains its own connection pool.
24
24
  *
25
25
  * ### Examples
26
26
  *
@@ -21,7 +21,7 @@ import { WithSchemaPlugin } from './plugin/with-schema/with-schema-plugin.js';
21
21
  * The main Kysely class.
22
22
  *
23
23
  * You should create one instance of `Kysely` per database using the {@link Kysely}
24
- * constructor. Each `Kysely` instance maintains it's own connection pool.
24
+ * constructor. Each `Kysely` instance maintains its own connection pool.
25
25
  *
26
26
  * ### Examples
27
27
  *
@@ -17,5 +17,5 @@ export interface AlterColumnNode extends OperationNode {
17
17
  */
18
18
  export declare const AlterColumnNode: Readonly<{
19
19
  is(node: OperationNode): node is AlterColumnNode;
20
- create<T extends "dataType" | "dataTypeExpression" | "setDefault" | "dropDefault" | "setNotNull" | "dropNotNull">(column: string, prop: T, value: Required<AlterColumnNodeProps>[T]): AlterColumnNode;
20
+ create<T extends keyof AlterColumnNodeProps>(column: string, prop: T, value: Required<AlterColumnNodeProps>[T]): AlterColumnNode;
21
21
  }>;
@@ -15,5 +15,5 @@ export declare const CaseNode: Readonly<{
15
15
  create(value?: OperationNode): CaseNode;
16
16
  cloneWithWhen(caseNode: CaseNode, when: WhenNode): CaseNode;
17
17
  cloneWithThen(caseNode: CaseNode, then: OperationNode): CaseNode;
18
- cloneWith(caseNode: CaseNode, props: Partial<Pick<CaseNode, 'else' | 'isStatement'>>): CaseNode;
18
+ cloneWith(caseNode: CaseNode, props: Partial<Pick<CaseNode, "else" | "isStatement">>): CaseNode;
19
19
  }>;
@@ -22,6 +22,7 @@ export interface ColumnDefinitionNode extends OperationNode {
22
22
  readonly endModifiers?: ReadonlyArray<OperationNode>;
23
23
  readonly nullsNotDistinct?: boolean;
24
24
  readonly identity?: boolean;
25
+ readonly ifNotExists?: boolean;
25
26
  }
26
27
  /**
27
28
  * @internal
@@ -1,7 +1,7 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- declare const SIMPLE_COLUMN_DATA_TYPES: readonly ["varchar", "char", "text", "integer", "int2", "int4", "int8", "smallint", "bigint", "boolean", "real", "double precision", "float4", "float8", "decimal", "numeric", "binary", "bytea", "date", "datetime", "time", "timetz", "timestamp", "timestamptz", "serial", "bigserial", "uuid", "json", "jsonb", "blob"];
2
+ declare const SIMPLE_COLUMN_DATA_TYPES: readonly ["varchar", "char", "text", "integer", "int2", "int4", "int8", "smallint", "bigint", "boolean", "real", "double precision", "float4", "float8", "decimal", "numeric", "binary", "bytea", "date", "datetime", "time", "timetz", "timestamp", "timestamptz", "serial", "bigserial", "uuid", "json", "jsonb", "blob", "varbinary"];
3
3
  type SimpleColumnDataType = (typeof SIMPLE_COLUMN_DATA_TYPES)[number];
4
- export type ColumnDataType = SimpleColumnDataType | `varchar(${number})` | `char(${number})` | `decimal(${number}, ${number})` | `numeric(${number}, ${number})` | `binary(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})`;
4
+ export type ColumnDataType = SimpleColumnDataType | `varchar(${number})` | `char(${number})` | `decimal(${number}, ${number})` | `numeric(${number}, ${number})` | `binary(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`;
5
5
  export type DataTypeParams = Omit<DataTypeNode, 'kind' | 'dataType'>;
6
6
  export interface DataTypeNode extends OperationNode {
7
7
  readonly kind: 'DataTypeNode';
@@ -31,6 +31,7 @@ const SIMPLE_COLUMN_DATA_TYPES = [
31
31
  'json',
32
32
  'jsonb',
33
33
  'blob',
34
+ 'varbinary',
34
35
  ];
35
36
  const COLUMN_DATA_TYPE_REGEX = [
36
37
  /^varchar\(\d+\)$/,
@@ -40,9 +41,10 @@ const COLUMN_DATA_TYPE_REGEX = [
40
41
  /^binary\(\d+\)$/,
41
42
  /^datetime\(\d+\)$/,
42
43
  /^time\(\d+\)$/,
43
- /^timez\(\d+\)$/,
44
+ /^timetz\(\d+\)$/,
44
45
  /^timestamp\(\d+\)$/,
45
46
  /^timestamptz\(\d+\)$/,
47
+ /^varbinary\(\d+\)$/,
46
48
  ];
47
49
  /**
48
50
  * @internal
@@ -10,6 +10,7 @@ import { OrderByItemNode } from './order-by-item-node.js';
10
10
  import { ExplainNode } from './explain-node.js';
11
11
  import { UsingNode } from './using-node.js';
12
12
  import { TopNode } from './top-node.js';
13
+ import { OutputNode } from './output-node.js';
13
14
  export interface DeleteQueryNode extends OperationNode {
14
15
  readonly kind: 'DeleteQueryNode';
15
16
  readonly from: FromNode;
@@ -22,6 +23,7 @@ export interface DeleteQueryNode extends OperationNode {
22
23
  readonly limit?: LimitNode;
23
24
  readonly explain?: ExplainNode;
24
25
  readonly top?: TopNode;
26
+ readonly output?: OutputNode;
25
27
  }
26
28
  /**
27
29
  * @internal
@@ -19,10 +19,10 @@ export declare const ForeignKeyConstraintNode: Readonly<{
19
19
  is(node: OperationNode): node is ForeignKeyConstraintNode;
20
20
  create(sourceColumns: ReadonlyArray<ColumnNode>, targetTable: TableNode, targetColumns: ReadonlyArray<ColumnNode>, constraintName?: string): ForeignKeyConstraintNode;
21
21
  cloneWith(node: ForeignKeyConstraintNode, props: ForeignKeyConstraintNodeProps): Readonly<{
22
- name?: IdentifierNode | undefined;
23
- onDelete?: "no action" | "restrict" | "cascade" | "set null" | "set default" | undefined;
24
- onUpdate?: "no action" | "restrict" | "cascade" | "set null" | "set default" | undefined;
25
- kind: 'ForeignKeyConstraintNode';
22
+ name?: IdentifierNode;
23
+ onDelete?: OnModifyForeignAction;
24
+ onUpdate?: OnModifyForeignAction;
25
+ kind: "ForeignKeyConstraintNode";
26
26
  columns: ReadonlyArray<ColumnNode>;
27
27
  references: ReferencesNode;
28
28
  }>;
@@ -9,5 +9,5 @@ export interface HavingNode extends OperationNode {
9
9
  export declare const HavingNode: Readonly<{
10
10
  is(node: OperationNode): node is HavingNode;
11
11
  create(filter: OperationNode): HavingNode;
12
- cloneWithOperation(havingNode: HavingNode, operator: 'And' | 'Or', operation: OperationNode): HavingNode;
12
+ cloneWithOperation(havingNode: HavingNode, operator: "And" | "Or", operation: OperationNode): HavingNode;
13
13
  }>;
@@ -3,6 +3,7 @@ import { ExplainNode } from './explain-node.js';
3
3
  import { OnConflictNode } from './on-conflict-node.js';
4
4
  import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
5
5
  import { OperationNode } from './operation-node.js';
6
+ import { OutputNode } from './output-node.js';
6
7
  import { ReturningNode } from './returning-node.js';
7
8
  import { TableNode } from './table-node.js';
8
9
  import { TopNode } from './top-node.js';
@@ -22,6 +23,7 @@ export interface InsertQueryNode extends OperationNode {
22
23
  readonly explain?: ExplainNode;
23
24
  readonly defaultValues?: boolean;
24
25
  readonly top?: TopNode;
26
+ readonly output?: OutputNode;
25
27
  }
26
28
  /**
27
29
  * @internal
@@ -1,6 +1,7 @@
1
1
  import { AliasNode } from './alias-node.js';
2
2
  import { JoinNode } from './join-node.js';
3
3
  import { OperationNode } from './operation-node.js';
4
+ import { OutputNode } from './output-node.js';
4
5
  import { TableNode } from './table-node.js';
5
6
  import { TopNode } from './top-node.js';
6
7
  import { WhenNode } from './when-node.js';
@@ -12,6 +13,7 @@ export interface MergeQueryNode extends OperationNode {
12
13
  readonly whens?: ReadonlyArray<WhenNode>;
13
14
  readonly with?: WithNode;
14
15
  readonly top?: TopNode;
16
+ readonly output?: OutputNode;
15
17
  }
16
18
  /**
17
19
  * @internal
@@ -9,5 +9,5 @@ export interface OnNode extends OperationNode {
9
9
  export declare const OnNode: Readonly<{
10
10
  is(node: OperationNode): node is OnNode;
11
11
  create(filter: OperationNode): OnNode;
12
- cloneWithOperation(onNode: OnNode, operator: 'And' | 'Or', operation: OperationNode): OnNode;
12
+ cloneWithOperation(onNode: OnNode, operator: "And" | "Or", operation: OperationNode): OnNode;
13
13
  }>;
@@ -91,6 +91,7 @@ import { AddIndexNode } from './add-index-node.js';
91
91
  import { CastNode } from './cast-node.js';
92
92
  import { FetchNode } from './fetch-node.js';
93
93
  import { TopNode } from './top-node.js';
94
+ import { OutputNode } from './output-node.js';
94
95
  /**
95
96
  * Transforms an operation node tree into another one.
96
97
  *
@@ -211,6 +212,7 @@ export declare class OperationNodeTransformer {
211
212
  protected transformCast(node: CastNode): CastNode;
212
213
  protected transformFetch(node: FetchNode): FetchNode;
213
214
  protected transformTop(node: TopNode): TopNode;
215
+ protected transformOutput(node: OutputNode): OutputNode;
214
216
  protected transformDataType(node: DataTypeNode): DataTypeNode;
215
217
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
216
218
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -125,6 +125,7 @@ export class OperationNodeTransformer {
125
125
  CastNode: this.transformCast.bind(this),
126
126
  FetchNode: this.transformFetch.bind(this),
127
127
  TopNode: this.transformTop.bind(this),
128
+ OutputNode: this.transformOutput.bind(this),
128
129
  });
129
130
  transformNode(node) {
130
131
  if (!node) {
@@ -266,6 +267,7 @@ export class OperationNodeTransformer {
266
267
  explain: this.transformNode(node.explain),
267
268
  defaultValues: node.defaultValues,
268
269
  top: this.transformNode(node.top),
270
+ output: this.transformNode(node.output),
269
271
  });
270
272
  }
271
273
  transformValues(node) {
@@ -287,6 +289,7 @@ export class OperationNodeTransformer {
287
289
  limit: this.transformNode(node.limit),
288
290
  explain: this.transformNode(node.explain),
289
291
  top: this.transformNode(node.top),
292
+ output: this.transformNode(node.output),
290
293
  });
291
294
  }
292
295
  transformReturning(node) {
@@ -327,6 +330,7 @@ export class OperationNodeTransformer {
327
330
  endModifiers: this.transformNodeList(node.endModifiers),
328
331
  nullsNotDistinct: node.nullsNotDistinct,
329
332
  identity: node.identity,
333
+ ifNotExists: node.ifNotExists,
330
334
  });
331
335
  }
332
336
  transformAddColumn(node) {
@@ -381,6 +385,7 @@ export class OperationNodeTransformer {
381
385
  explain: this.transformNode(node.explain),
382
386
  limit: this.transformNode(node.limit),
383
387
  top: this.transformNode(node.top),
388
+ output: this.transformNode(node.output),
384
389
  });
385
390
  }
386
391
  transformColumnUpdate(node) {
@@ -792,6 +797,7 @@ export class OperationNodeTransformer {
792
797
  whens: this.transformNodeList(node.whens),
793
798
  with: this.transformNode(node.with),
794
799
  top: this.transformNode(node.top),
800
+ output: this.transformNode(node.output),
795
801
  });
796
802
  }
797
803
  transformMatched(node) {
@@ -832,6 +838,12 @@ export class OperationNodeTransformer {
832
838
  modifiers: node.modifiers,
833
839
  });
834
840
  }
841
+ transformOutput(node) {
842
+ return requireAllProps({
843
+ kind: 'OutputNode',
844
+ selections: this.transformNodeList(node.selections),
845
+ });
846
+ }
835
847
  transformDataType(node) {
836
848
  // An Object.freezed leaf node. No need to clone.
837
849
  return node;
@@ -91,6 +91,7 @@ import { AddIndexNode } from './add-index-node.js';
91
91
  import { CastNode } from './cast-node.js';
92
92
  import { FetchNode } from './fetch-node.js';
93
93
  import { TopNode } from './top-node.js';
94
+ import { OutputNode } from './output-node.js';
94
95
  export declare abstract class OperationNodeVisitor {
95
96
  #private;
96
97
  protected readonly nodeStack: OperationNode[];
@@ -188,4 +189,5 @@ export declare abstract class OperationNodeVisitor {
188
189
  protected abstract visitCast(node: CastNode): void;
189
190
  protected abstract visitFetch(node: FetchNode): void;
190
191
  protected abstract visitTop(node: TopNode): void;
192
+ protected abstract visitOutput(node: OutputNode): void;
191
193
  }
@@ -98,6 +98,7 @@ export class OperationNodeVisitor {
98
98
  CastNode: this.visitCast.bind(this),
99
99
  FetchNode: this.visitFetch.bind(this),
100
100
  TopNode: this.visitTop.bind(this),
101
+ OutputNode: this.visitOutput.bind(this),
101
102
  });
102
103
  visitNode = (node) => {
103
104
  this.nodeStack.push(node);
@@ -1,4 +1,4 @@
1
- export 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' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode';
1
+ export 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' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode' | 'OutputNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -1,11 +1,11 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from"];
2
+ export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "^@", "&&", "?", "?&", "?|", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from"];
3
3
  export declare const ARITHMETIC_OPERATORS: readonly ["+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>"];
4
4
  export declare const JSON_OPERATORS: readonly ["->", "->>"];
5
- export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
5
+ export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "^@", "&&", "?", "?&", "?|", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
6
6
  export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
7
7
  export declare const UNARY_OPERATORS: readonly ["not", "-", "exists", "not exists"];
8
- export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
8
+ export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "^@", "&&", "?", "?&", "?|", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
9
9
  export type ComparisonOperator = (typeof COMPARISON_OPERATORS)[number];
10
10
  export type ArithmeticOperator = (typeof ARITHMETIC_OPERATORS)[number];
11
11
  export type JSONOperator = (typeof JSON_OPERATORS)[number];
@@ -20,9 +20,11 @@ export const COMPARISON_OPERATORS = [
20
20
  'not ilike',
21
21
  '@>',
22
22
  '<@',
23
+ '^@',
23
24
  '&&',
24
25
  '?',
25
26
  '?&',
27
+ '?|',
26
28
  '!<',
27
29
  '!>',
28
30
  '<=>',
@@ -0,0 +1,13 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ export interface OutputNode extends OperationNode {
3
+ readonly kind: 'OutputNode';
4
+ readonly selections: ReadonlyArray<OperationNode>;
5
+ }
6
+ /**
7
+ * @internal
8
+ */
9
+ export declare const OutputNode: Readonly<{
10
+ is(node: OperationNode): node is OutputNode;
11
+ create(selections: ReadonlyArray<OperationNode>): OutputNode;
12
+ cloneWithSelections(output: OutputNode, selections: ReadonlyArray<OperationNode>): OutputNode;
13
+ }>;
@@ -0,0 +1,24 @@
1
+ /// <reference types="./output-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const OutputNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'OutputNode';
9
+ },
10
+ create(selections) {
11
+ return freeze({
12
+ kind: 'OutputNode',
13
+ selections: freeze(selections),
14
+ });
15
+ },
16
+ cloneWithSelections(output, selections) {
17
+ return freeze({
18
+ ...output,
19
+ selections: output.selections
20
+ ? freeze([...output.selections, ...selections])
21
+ : freeze(selections),
22
+ });
23
+ },
24
+ });
@@ -12,6 +12,7 @@ import { ExplainFormat } from '../util/explainable.js';
12
12
  import { Expression } from '../expression/expression.js';
13
13
  import { MergeQueryNode } from './merge-query-node.js';
14
14
  import { TopNode } from './top-node.js';
15
+ import { OutputNode } from './output-node.js';
15
16
  export type QueryNode = SelectQueryNode | InsertQueryNode | UpdateQueryNode | DeleteQueryNode | MergeQueryNode;
16
17
  type HasJoins = {
17
18
  joins?: ReadonlyArray<JoinNode>;
@@ -28,17 +29,21 @@ type HasExplain = {
28
29
  type HasTop = {
29
30
  top?: TopNode;
30
31
  };
32
+ type HasOutput = {
33
+ output?: OutputNode;
34
+ };
31
35
  /**
32
36
  * @internal
33
37
  */
34
38
  export declare const QueryNode: Readonly<{
35
39
  is(node: OperationNode): node is QueryNode;
36
40
  cloneWithWhere<T extends HasWhere>(node: T, operation: OperationNode): T;
37
- cloneWithJoin<T_1 extends HasJoins>(node: T_1, join: JoinNode): T_1;
38
- cloneWithReturning<T_2 extends HasReturning>(node: T_2, selections: ReadonlyArray<SelectionNode>): T_2;
39
- cloneWithoutReturning<T_3 extends HasReturning>(node: T_3): T_3;
40
- cloneWithoutWhere<T_4 extends HasWhere>(node: T_4): T_4;
41
- cloneWithExplain<T_5 extends HasExplain>(node: T_5, format: ExplainFormat | undefined, options: Expression<any> | undefined): T_5;
42
- cloneWithTop<T_6 extends HasTop>(node: T_6, top: TopNode): T_6;
41
+ cloneWithJoin<T extends HasJoins>(node: T, join: JoinNode): T;
42
+ cloneWithReturning<T extends HasReturning>(node: T, selections: ReadonlyArray<SelectionNode>): T;
43
+ cloneWithoutReturning<T extends HasReturning>(node: T): T;
44
+ cloneWithoutWhere<T extends HasWhere>(node: T): T;
45
+ cloneWithExplain<T extends HasExplain>(node: T, format: ExplainFormat | undefined, options: Expression<any> | undefined): T;
46
+ cloneWithTop<T extends HasTop>(node: T, top: TopNode): T;
47
+ cloneWithOutput<T extends HasOutput>(node: T, selections: ReadonlyArray<SelectionNode>): T;
43
48
  }>;
44
49
  export {};
@@ -8,6 +8,7 @@ import { freeze } from '../util/object-utils.js';
8
8
  import { ReturningNode } from './returning-node.js';
9
9
  import { ExplainNode } from './explain-node.js';
10
10
  import { MergeQueryNode } from './merge-query-node.js';
11
+ import { OutputNode } from './output-node.js';
11
12
  /**
12
13
  * @internal
13
14
  */
@@ -65,4 +66,12 @@ export const QueryNode = freeze({
65
66
  top,
66
67
  });
67
68
  },
69
+ cloneWithOutput(node, selections) {
70
+ return freeze({
71
+ ...node,
72
+ output: node.output
73
+ ? OutputNode.cloneWithSelections(node.output, selections)
74
+ : OutputNode.create(selections),
75
+ });
76
+ },
68
77
  });
@@ -58,4 +58,5 @@ export declare const SelectQueryNode: Readonly<{
58
58
  cloneWithoutLimit(select: SelectQueryNode): SelectQueryNode;
59
59
  cloneWithoutOffset(select: SelectQueryNode): SelectQueryNode;
60
60
  cloneWithoutOrderBy(select: SelectQueryNode): SelectQueryNode;
61
+ cloneWithoutGroupBy(select: SelectQueryNode): SelectQueryNode;
61
62
  }>;
@@ -130,4 +130,10 @@ export const SelectQueryNode = freeze({
130
130
  orderBy: undefined,
131
131
  });
132
132
  },
133
+ cloneWithoutGroupBy(select) {
134
+ return freeze({
135
+ ...select,
136
+ groupBy: undefined,
137
+ });
138
+ },
133
139
  });
@@ -10,6 +10,7 @@ import { FromNode } from './from-node.js';
10
10
  import { ExplainNode } from './explain-node.js';
11
11
  import { LimitNode } from './limit-node.js';
12
12
  import { TopNode } from './top-node.js';
13
+ import { OutputNode } from './output-node.js';
13
14
  export type UpdateValuesNode = ValueListNode | PrimitiveValueListNode;
14
15
  export interface UpdateQueryNode extends OperationNode {
15
16
  readonly kind: 'UpdateQueryNode';
@@ -23,6 +24,7 @@ export interface UpdateQueryNode extends OperationNode {
23
24
  readonly explain?: ExplainNode;
24
25
  readonly limit?: LimitNode;
25
26
  readonly top?: TopNode;
27
+ readonly output?: OutputNode;
26
28
  }
27
29
  /**
28
30
  * @internal
@@ -9,5 +9,5 @@ export interface WhereNode extends OperationNode {
9
9
  export declare const WhereNode: Readonly<{
10
10
  is(node: OperationNode): node is WhereNode;
11
11
  create(filter: OperationNode): WhereNode;
12
- cloneWithOperation(whereNode: WhereNode, operator: 'And' | 'Or', operation: OperationNode): WhereNode;
12
+ cloneWithOperation(whereNode: WhereNode, operator: "And" | "Or", operation: OperationNode): WhereNode;
13
13
  }>;
@@ -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>;
@@ -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
  *