kysely 0.24.2 → 0.26.0

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 (351) hide show
  1. package/README.md +31 -567
  2. package/dist/cjs/dialect/database-introspector.d.ts +1 -1
  3. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +5 -1
  5. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -1
  7. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
  8. package/dist/cjs/driver/database-connection.d.ts +6 -0
  9. package/dist/cjs/driver/driver.d.ts +1 -1
  10. package/dist/cjs/driver/runtime-driver.js +6 -6
  11. package/dist/cjs/dynamic/dynamic.d.ts +1 -1
  12. package/dist/cjs/dynamic/dynamic.js +1 -1
  13. package/dist/cjs/expression/expression-builder.d.ts +263 -109
  14. package/dist/cjs/expression/expression-builder.js +38 -7
  15. package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
  16. package/dist/cjs/expression/expression-wrapper.js +70 -2
  17. package/dist/cjs/helpers/mysql.d.ts +3 -3
  18. package/dist/cjs/helpers/mysql.js +2 -2
  19. package/dist/cjs/helpers/postgres.d.ts +31 -19
  20. package/dist/cjs/helpers/postgres.js +30 -18
  21. package/dist/cjs/index.d.ts +10 -0
  22. package/dist/cjs/index.js +10 -0
  23. package/dist/cjs/kysely.d.ts +42 -15
  24. package/dist/cjs/kysely.js +41 -10
  25. package/dist/cjs/migration/file-migration-provider.js +2 -2
  26. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -7
  27. package/dist/cjs/operation-node/aggregate-function-node.js +1 -1
  28. package/dist/cjs/operation-node/alter-column-node.d.ts +3 -5
  29. package/dist/cjs/operation-node/alter-column-node.js +2 -7
  30. package/dist/cjs/operation-node/alter-table-node.d.ts +3 -3
  31. package/dist/cjs/operation-node/alter-table-node.js +1 -2
  32. package/dist/cjs/operation-node/case-node.d.ts +19 -0
  33. package/dist/cjs/operation-node/case-node.js +42 -0
  34. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  36. package/dist/cjs/operation-node/create-index-node.d.ts +4 -3
  37. package/dist/cjs/operation-node/create-index-node.js +6 -0
  38. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/create-table-node.d.ts +2 -2
  40. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/create-view-node.d.ts +1 -1
  42. package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
  43. package/dist/cjs/operation-node/drop-constraint-node.d.ts +1 -1
  44. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
  45. package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
  47. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  48. package/dist/cjs/operation-node/drop-view-node.d.ts +1 -1
  49. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
  50. package/dist/cjs/operation-node/generated-node.d.ts +1 -1
  51. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/join-node.d.ts +1 -2
  53. package/dist/cjs/operation-node/join-node.js +0 -8
  54. package/dist/cjs/operation-node/json-operator-chain-node.d.ts +16 -0
  55. package/dist/cjs/operation-node/json-operator-chain-node.js +25 -0
  56. package/dist/cjs/operation-node/json-path-leg-node.d.ts +14 -0
  57. package/dist/cjs/operation-node/json-path-leg-node.js +19 -0
  58. package/dist/cjs/operation-node/json-path-node.d.ts +16 -0
  59. package/dist/cjs/operation-node/json-path-node.js +25 -0
  60. package/dist/cjs/operation-node/json-reference-node.d.ts +17 -0
  61. package/dist/cjs/operation-node/json-reference-node.js +25 -0
  62. package/dist/cjs/operation-node/on-conflict-node.d.ts +1 -1
  63. package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +1 -1
  64. package/dist/cjs/operation-node/operation-node-transformer.d.ts +12 -0
  65. package/dist/cjs/operation-node/operation-node-transformer.js +53 -3
  66. package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -0
  67. package/dist/cjs/operation-node/operation-node-visitor.js +6 -0
  68. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  69. package/dist/cjs/operation-node/operator-node.d.ts +13 -9
  70. package/dist/cjs/operation-node/operator-node.js +12 -2
  71. package/dist/cjs/operation-node/query-node.d.ts +9 -10
  72. package/dist/cjs/operation-node/query-node.js +0 -8
  73. package/dist/cjs/operation-node/reference-node.d.ts +2 -2
  74. package/dist/cjs/operation-node/reference-node.js +1 -1
  75. package/dist/cjs/operation-node/references-node.d.ts +1 -1
  76. package/dist/cjs/operation-node/select-modifier-node.d.ts +1 -1
  77. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  78. package/dist/cjs/operation-node/select-query-node.js +0 -8
  79. package/dist/cjs/operation-node/selection-node.d.ts +1 -1
  80. package/dist/cjs/operation-node/set-operation-node.d.ts +1 -1
  81. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +1 -1
  82. package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
  83. package/dist/cjs/operation-node/values-node.d.ts +1 -1
  84. package/dist/cjs/operation-node/when-node.d.ts +14 -0
  85. package/dist/cjs/operation-node/when-node.js +24 -0
  86. package/dist/cjs/operation-node/with-node.d.ts +1 -1
  87. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -11
  88. package/dist/cjs/parser/binary-operation-parser.js +40 -103
  89. package/dist/cjs/parser/coalesce-parser.d.ts +1 -1
  90. package/dist/cjs/parser/data-type-parser.d.ts +1 -1
  91. package/dist/cjs/parser/default-value-parser.d.ts +1 -1
  92. package/dist/cjs/parser/expression-parser.d.ts +6 -5
  93. package/dist/cjs/parser/group-by-parser.d.ts +2 -2
  94. package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
  95. package/dist/cjs/parser/join-parser.d.ts +4 -4
  96. package/dist/cjs/parser/order-by-parser.d.ts +4 -3
  97. package/dist/cjs/parser/order-by-parser.js +5 -1
  98. package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
  99. package/dist/cjs/parser/reference-parser.d.ts +16 -8
  100. package/dist/cjs/parser/reference-parser.js +43 -16
  101. package/dist/cjs/parser/returning-parser.d.ts +2 -2
  102. package/dist/cjs/parser/select-parser.d.ts +9 -9
  103. package/dist/cjs/parser/table-parser.d.ts +14 -13
  104. package/dist/cjs/parser/unary-operation-parser.d.ts +1 -1
  105. package/dist/cjs/parser/update-set-parser.d.ts +3 -3
  106. package/dist/cjs/parser/update-set-parser.js +1 -3
  107. package/dist/cjs/parser/value-parser.d.ts +4 -4
  108. package/dist/cjs/parser/with-parser.d.ts +14 -9
  109. package/dist/cjs/plugin/camel-case/camel-case.d.ts +1 -1
  110. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  111. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +32 -0
  112. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +22 -6
  113. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -38
  114. package/dist/cjs/query-builder/aggregate-function-builder.js +4 -59
  115. package/dist/cjs/query-builder/case-builder.d.ts +111 -0
  116. package/dist/cjs/query-builder/case-builder.js +75 -0
  117. package/dist/cjs/query-builder/delete-query-builder.d.ts +130 -63
  118. package/dist/cjs/query-builder/delete-query-builder.js +42 -59
  119. package/dist/cjs/query-builder/delete-result.d.ts +1 -2
  120. package/dist/cjs/query-builder/delete-result.js +2 -8
  121. package/dist/cjs/query-builder/function-module.d.ts +78 -69
  122. package/dist/cjs/query-builder/function-module.js +12 -16
  123. package/dist/cjs/query-builder/having-interface.d.ts +2 -35
  124. package/dist/cjs/query-builder/insert-query-builder.d.ts +99 -47
  125. package/dist/cjs/query-builder/insert-query-builder.js +57 -26
  126. package/dist/cjs/query-builder/insert-result.d.ts +3 -4
  127. package/dist/cjs/query-builder/insert-result.js +5 -14
  128. package/dist/cjs/query-builder/join-builder.d.ts +2 -35
  129. package/dist/cjs/query-builder/join-builder.js +1 -56
  130. package/dist/cjs/query-builder/json-path-builder.d.ts +212 -0
  131. package/dist/cjs/query-builder/json-path-builder.js +191 -0
  132. package/dist/cjs/query-builder/no-result-error.d.ts +1 -1
  133. package/dist/cjs/query-builder/on-conflict-builder.d.ts +144 -73
  134. package/dist/cjs/query-builder/on-conflict-builder.js +2 -111
  135. package/dist/cjs/query-builder/over-builder.d.ts +2 -2
  136. package/dist/cjs/query-builder/over-builder.js +1 -1
  137. package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
  138. package/dist/cjs/query-builder/select-query-builder.d.ts +184 -138
  139. package/dist/cjs/query-builder/select-query-builder.js +64 -130
  140. package/dist/cjs/query-builder/update-query-builder.d.ts +143 -71
  141. package/dist/cjs/query-builder/update-query-builder.js +47 -60
  142. package/dist/cjs/query-builder/update-result.d.ts +3 -3
  143. package/dist/cjs/query-builder/update-result.js +5 -9
  144. package/dist/cjs/query-builder/where-interface.d.ts +73 -38
  145. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  146. package/dist/cjs/query-compiler/compiled-query.js +2 -2
  147. package/dist/cjs/query-compiler/default-query-compiler.d.ts +12 -0
  148. package/dist/cjs/query-compiler/default-query-compiler.js +67 -5
  149. package/dist/cjs/query-compiler/query-compiler.d.ts +1 -1
  150. package/dist/cjs/query-creator.d.ts +4 -2
  151. package/dist/cjs/schema/alter-column-builder.d.ts +13 -7
  152. package/dist/cjs/schema/alter-column-builder.js +20 -22
  153. package/dist/cjs/schema/alter-table-builder.d.ts +0 -4
  154. package/dist/cjs/schema/alter-table-builder.js +2 -9
  155. package/dist/cjs/schema/column-definition-builder.d.ts +1 -1
  156. package/dist/cjs/schema/column-definition-builder.js +1 -2
  157. package/dist/cjs/schema/create-index-builder.d.ts +49 -7
  158. package/dist/cjs/schema/create-index-builder.js +52 -14
  159. package/dist/cjs/schema/create-table-builder.d.ts +2 -6
  160. package/dist/cjs/schema/create-table-builder.js +0 -6
  161. package/dist/cjs/schema/schema.d.ts +1 -2
  162. package/dist/cjs/schema/schema.js +2 -3
  163. package/dist/cjs/util/column-type.d.ts +21 -16
  164. package/dist/cjs/util/explainable.d.ts +1 -1
  165. package/dist/cjs/util/infer-result.d.ts +2 -2
  166. package/dist/cjs/util/log.d.ts +6 -6
  167. package/dist/cjs/util/log.js +4 -4
  168. package/dist/cjs/util/object-utils.d.ts +2 -1
  169. package/dist/cjs/util/require-all-props.d.ts +1 -1
  170. package/dist/cjs/util/type-utils.d.ts +54 -40
  171. package/dist/esm/dialect/database-introspector.d.ts +1 -1
  172. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -1
  173. package/dist/esm/dialect/mysql/mysql-driver.js +5 -1
  174. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  175. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
  176. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
  177. package/dist/esm/driver/database-connection.d.ts +6 -0
  178. package/dist/esm/driver/driver.d.ts +1 -1
  179. package/dist/esm/driver/runtime-driver.js +6 -6
  180. package/dist/esm/dynamic/dynamic.d.ts +1 -1
  181. package/dist/esm/dynamic/dynamic.js +1 -1
  182. package/dist/esm/expression/expression-builder.d.ts +263 -109
  183. package/dist/esm/expression/expression-builder.js +40 -9
  184. package/dist/esm/expression/expression-wrapper.d.ts +296 -5
  185. package/dist/esm/expression/expression-wrapper.js +67 -1
  186. package/dist/esm/helpers/mysql.d.ts +3 -3
  187. package/dist/esm/helpers/mysql.js +2 -2
  188. package/dist/esm/helpers/postgres.d.ts +31 -19
  189. package/dist/esm/helpers/postgres.js +30 -18
  190. package/dist/esm/index.d.ts +10 -0
  191. package/dist/esm/index.js +10 -0
  192. package/dist/esm/kysely.d.ts +42 -15
  193. package/dist/esm/kysely.js +42 -11
  194. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -7
  195. package/dist/esm/operation-node/aggregate-function-node.js +1 -1
  196. package/dist/esm/operation-node/alter-column-node.d.ts +3 -5
  197. package/dist/esm/operation-node/alter-column-node.js +2 -7
  198. package/dist/esm/operation-node/alter-table-node.d.ts +3 -3
  199. package/dist/esm/operation-node/alter-table-node.js +1 -2
  200. package/dist/esm/operation-node/case-node.d.ts +19 -0
  201. package/dist/esm/operation-node/case-node.js +40 -0
  202. package/dist/esm/operation-node/column-definition-node.d.ts +1 -1
  203. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  204. package/dist/esm/operation-node/create-index-node.d.ts +4 -3
  205. package/dist/esm/operation-node/create-index-node.js +6 -0
  206. package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
  207. package/dist/esm/operation-node/create-table-node.d.ts +2 -2
  208. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  209. package/dist/esm/operation-node/create-view-node.d.ts +1 -1
  210. package/dist/esm/operation-node/data-type-node.d.ts +2 -2
  211. package/dist/esm/operation-node/drop-constraint-node.d.ts +1 -1
  212. package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
  213. package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
  214. package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
  215. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  216. package/dist/esm/operation-node/drop-view-node.d.ts +1 -1
  217. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
  218. package/dist/esm/operation-node/generated-node.d.ts +1 -1
  219. package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
  220. package/dist/esm/operation-node/join-node.d.ts +1 -2
  221. package/dist/esm/operation-node/join-node.js +0 -8
  222. package/dist/esm/operation-node/json-operator-chain-node.d.ts +16 -0
  223. package/dist/esm/operation-node/json-operator-chain-node.js +23 -0
  224. package/dist/esm/operation-node/json-path-leg-node.d.ts +14 -0
  225. package/dist/esm/operation-node/json-path-leg-node.js +17 -0
  226. package/dist/esm/operation-node/json-path-node.d.ts +16 -0
  227. package/dist/esm/operation-node/json-path-node.js +23 -0
  228. package/dist/esm/operation-node/json-reference-node.d.ts +17 -0
  229. package/dist/esm/operation-node/json-reference-node.js +23 -0
  230. package/dist/esm/operation-node/on-conflict-node.d.ts +1 -1
  231. package/dist/esm/operation-node/on-duplicate-key-node.d.ts +1 -1
  232. package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -0
  233. package/dist/esm/operation-node/operation-node-transformer.js +53 -3
  234. package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -0
  235. package/dist/esm/operation-node/operation-node-visitor.js +6 -0
  236. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  237. package/dist/esm/operation-node/operator-node.d.ts +13 -9
  238. package/dist/esm/operation-node/operator-node.js +10 -1
  239. package/dist/esm/operation-node/query-node.d.ts +9 -10
  240. package/dist/esm/operation-node/query-node.js +0 -8
  241. package/dist/esm/operation-node/reference-node.d.ts +2 -2
  242. package/dist/esm/operation-node/reference-node.js +1 -1
  243. package/dist/esm/operation-node/references-node.d.ts +1 -1
  244. package/dist/esm/operation-node/select-modifier-node.d.ts +1 -1
  245. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  246. package/dist/esm/operation-node/select-query-node.js +0 -8
  247. package/dist/esm/operation-node/selection-node.d.ts +1 -1
  248. package/dist/esm/operation-node/set-operation-node.d.ts +1 -1
  249. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +1 -1
  250. package/dist/esm/operation-node/update-query-node.d.ts +1 -1
  251. package/dist/esm/operation-node/values-node.d.ts +1 -1
  252. package/dist/esm/operation-node/when-node.d.ts +14 -0
  253. package/dist/esm/operation-node/when-node.js +22 -0
  254. package/dist/esm/operation-node/with-node.d.ts +1 -1
  255. package/dist/esm/parser/binary-operation-parser.d.ts +9 -11
  256. package/dist/esm/parser/binary-operation-parser.js +38 -99
  257. package/dist/esm/parser/coalesce-parser.d.ts +1 -1
  258. package/dist/esm/parser/data-type-parser.d.ts +1 -1
  259. package/dist/esm/parser/default-value-parser.d.ts +1 -1
  260. package/dist/esm/parser/expression-parser.d.ts +6 -5
  261. package/dist/esm/parser/group-by-parser.d.ts +2 -2
  262. package/dist/esm/parser/insert-values-parser.d.ts +4 -4
  263. package/dist/esm/parser/join-parser.d.ts +4 -4
  264. package/dist/esm/parser/order-by-parser.d.ts +4 -3
  265. package/dist/esm/parser/order-by-parser.js +3 -0
  266. package/dist/esm/parser/partition-by-parser.d.ts +2 -2
  267. package/dist/esm/parser/reference-parser.d.ts +16 -8
  268. package/dist/esm/parser/reference-parser.js +40 -15
  269. package/dist/esm/parser/returning-parser.d.ts +2 -2
  270. package/dist/esm/parser/select-parser.d.ts +9 -9
  271. package/dist/esm/parser/table-parser.d.ts +14 -13
  272. package/dist/esm/parser/unary-operation-parser.d.ts +1 -1
  273. package/dist/esm/parser/update-set-parser.d.ts +3 -3
  274. package/dist/esm/parser/update-set-parser.js +2 -4
  275. package/dist/esm/parser/value-parser.d.ts +4 -4
  276. package/dist/esm/parser/with-parser.d.ts +14 -9
  277. package/dist/esm/plugin/camel-case/camel-case.d.ts +1 -1
  278. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  279. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +29 -0
  280. package/dist/esm/plugin/with-schema/with-schema-transformer.js +22 -6
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -38
  282. package/dist/esm/query-builder/aggregate-function-builder.js +5 -60
  283. package/dist/esm/query-builder/case-builder.d.ts +111 -0
  284. package/dist/esm/query-builder/case-builder.js +69 -0
  285. package/dist/esm/query-builder/delete-query-builder.d.ts +130 -63
  286. package/dist/esm/query-builder/delete-query-builder.js +43 -60
  287. package/dist/esm/query-builder/delete-result.d.ts +1 -2
  288. package/dist/esm/query-builder/delete-result.js +2 -8
  289. package/dist/esm/query-builder/function-module.d.ts +78 -69
  290. package/dist/esm/query-builder/function-module.js +13 -17
  291. package/dist/esm/query-builder/having-interface.d.ts +2 -35
  292. package/dist/esm/query-builder/insert-query-builder.d.ts +99 -47
  293. package/dist/esm/query-builder/insert-query-builder.js +57 -26
  294. package/dist/esm/query-builder/insert-result.d.ts +3 -4
  295. package/dist/esm/query-builder/insert-result.js +5 -14
  296. package/dist/esm/query-builder/join-builder.d.ts +2 -35
  297. package/dist/esm/query-builder/join-builder.js +2 -57
  298. package/dist/esm/query-builder/json-path-builder.d.ts +212 -0
  299. package/dist/esm/query-builder/json-path-builder.js +186 -0
  300. package/dist/esm/query-builder/no-result-error.d.ts +1 -1
  301. package/dist/esm/query-builder/on-conflict-builder.d.ts +144 -73
  302. package/dist/esm/query-builder/on-conflict-builder.js +3 -112
  303. package/dist/esm/query-builder/over-builder.d.ts +2 -2
  304. package/dist/esm/query-builder/over-builder.js +1 -1
  305. package/dist/esm/query-builder/returning-interface.d.ts +1 -1
  306. package/dist/esm/query-builder/select-query-builder.d.ts +184 -138
  307. package/dist/esm/query-builder/select-query-builder.js +65 -131
  308. package/dist/esm/query-builder/update-query-builder.d.ts +143 -71
  309. package/dist/esm/query-builder/update-query-builder.js +48 -61
  310. package/dist/esm/query-builder/update-result.d.ts +3 -3
  311. package/dist/esm/query-builder/update-result.js +5 -9
  312. package/dist/esm/query-builder/where-interface.d.ts +73 -38
  313. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  314. package/dist/esm/query-compiler/compiled-query.js +2 -2
  315. package/dist/esm/query-compiler/default-query-compiler.d.ts +12 -0
  316. package/dist/esm/query-compiler/default-query-compiler.js +67 -5
  317. package/dist/esm/query-compiler/query-compiler.d.ts +1 -1
  318. package/dist/esm/query-creator.d.ts +4 -2
  319. package/dist/esm/schema/alter-column-builder.d.ts +13 -7
  320. package/dist/esm/schema/alter-column-builder.js +20 -22
  321. package/dist/esm/schema/alter-table-builder.d.ts +0 -4
  322. package/dist/esm/schema/alter-table-builder.js +2 -9
  323. package/dist/esm/schema/column-definition-builder.d.ts +1 -1
  324. package/dist/esm/schema/column-definition-builder.js +1 -2
  325. package/dist/esm/schema/create-index-builder.d.ts +49 -7
  326. package/dist/esm/schema/create-index-builder.js +54 -16
  327. package/dist/esm/schema/create-table-builder.d.ts +2 -6
  328. package/dist/esm/schema/create-table-builder.js +0 -6
  329. package/dist/esm/schema/schema.d.ts +1 -2
  330. package/dist/esm/schema/schema.js +2 -3
  331. package/dist/esm/util/column-type.d.ts +21 -16
  332. package/dist/esm/util/explainable.d.ts +1 -1
  333. package/dist/esm/util/infer-result.d.ts +2 -2
  334. package/dist/esm/util/log.d.ts +6 -6
  335. package/dist/esm/util/log.js +4 -4
  336. package/dist/esm/util/object-utils.d.ts +2 -1
  337. package/dist/esm/util/require-all-props.d.ts +1 -1
  338. package/dist/esm/util/type-utils.d.ts +54 -40
  339. package/package.json +25 -23
  340. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  341. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +0 -2
  342. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  343. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +0 -2
  344. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  345. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +0 -2
  346. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  347. package/dist/esm/query-builder/deprecated-having-expression-builder.js +0 -2
  348. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  349. package/dist/esm/query-builder/deprecated-on-expression-builder.js +0 -2
  350. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  351. package/dist/esm/query-builder/deprecated-where-expression-builder.js +0 -2
@@ -0,0 +1,111 @@
1
+ import { Expression } from '../expression/expression.js';
2
+ import { ExpressionWrapper } from '../expression/expression-wrapper.js';
3
+ import { ReferenceExpression } from '../parser/reference-parser.js';
4
+ import { CaseNode } from '../operation-node/case-node.js';
5
+ import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
6
+ import { KyselyTypeError } from '../util/type-error.js';
7
+ export declare class CaseBuilder<DB, TB extends keyof DB, W = unknown, O = never> implements Whenable<DB, TB, W, O> {
8
+ #private;
9
+ constructor(props: CaseBuilderProps);
10
+ /**
11
+ * Adds a `when` clause to the case statement.
12
+ *
13
+ * A `when` call must be followed by a {@link CaseThenBuilder.then} call.
14
+ */
15
+ when<RE extends ReferenceExpression<DB, TB>>(lhs: unknown extends W ? RE : KyselyTypeError<'when(lhs, op, rhs) is not supported when using case(value)'>, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): CaseThenBuilder<DB, TB, W, O>;
16
+ when(expression: Expression<W>): CaseThenBuilder<DB, TB, W, O>;
17
+ when(value: unknown extends W ? KyselyTypeError<'when(value) is only supported when using case(value)'> : W): CaseThenBuilder<DB, TB, W, O>;
18
+ }
19
+ interface CaseBuilderProps {
20
+ readonly node: CaseNode;
21
+ }
22
+ export declare class CaseThenBuilder<DB, TB extends keyof DB, W, O> {
23
+ #private;
24
+ constructor(props: CaseBuilderProps);
25
+ /**
26
+ * Adds a `then` clause to the `case` statement.
27
+ *
28
+ * A `then` call can be followed by {@link Whenable.when}, {@link CaseWhenBuilder.else},
29
+ * {@link CaseWhenBuilder.end} or {@link CaseWhenBuilder.endCase} call.
30
+ */
31
+ then<O2>(expression: Expression<O2>): CaseWhenBuilder<DB, TB, W, O | O2>;
32
+ then<V>(value: V): CaseWhenBuilder<DB, TB, W, O | V>;
33
+ }
34
+ export declare class CaseWhenBuilder<DB, TB extends keyof DB, W, O> implements Whenable<DB, TB, W, O>, Endable<DB, TB, O | null> {
35
+ #private;
36
+ constructor(props: CaseBuilderProps);
37
+ /**
38
+ * Adds a `when` clause to the case statement.
39
+ *
40
+ * A `when` call must be followed by a {@link CaseThenBuilder.then} call.
41
+ */
42
+ when<RE extends ReferenceExpression<DB, TB>>(lhs: unknown extends W ? RE : KyselyTypeError<'when(lhs, op, rhs) is not supported when using case(value)'>, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): CaseThenBuilder<DB, TB, W, O>;
43
+ when(expression: Expression<W>): CaseThenBuilder<DB, TB, W, O>;
44
+ when(value: unknown extends W ? KyselyTypeError<'when(value) is only supported when using case(value)'> : W): CaseThenBuilder<DB, TB, W, O>;
45
+ /**
46
+ * Adds an `else` clause to the `case` statement.
47
+ *
48
+ * An `else` call must be followed by an {@link Endable.end} or {@link Endable.endCase} call.
49
+ */
50
+ else<O2>(expression: Expression<O2>): CaseEndBuilder<DB, TB, O | O2>;
51
+ else<V>(value: V): CaseEndBuilder<DB, TB, O | V>;
52
+ /**
53
+ * Adds an `end` keyword to the case operator.
54
+ *
55
+ * `case` operators can only be used as part of a query.
56
+ * For a `case` statement used as part of a stored program, use {@link endCase} instead.
57
+ */
58
+ end(): ExpressionWrapper<DB, TB, O | null>;
59
+ /**
60
+ * Adds `end case` keywords to the case statement.
61
+ *
62
+ * `case` statements can only be used for flow control in stored programs.
63
+ * For a `case` operator used as part of a query, use {@link end} instead.
64
+ */
65
+ endCase(): ExpressionWrapper<DB, TB, O | null>;
66
+ }
67
+ export declare class CaseEndBuilder<DB, TB extends keyof DB, O> implements Endable<DB, TB, O> {
68
+ #private;
69
+ constructor(props: CaseBuilderProps);
70
+ /**
71
+ * Adds an `end` keyword to the case operator.
72
+ *
73
+ * `case` operators can only be used as part of a query.
74
+ * For a `case` statement used as part of a stored program, use {@link endCase} instead.
75
+ */
76
+ end(): ExpressionWrapper<DB, TB, O>;
77
+ /**
78
+ * Adds `end case` keywords to the case statement.
79
+ *
80
+ * `case` statements can only be used for flow control in stored programs.
81
+ * For a `case` operator used as part of a query, use {@link end} instead.
82
+ */
83
+ endCase(): ExpressionWrapper<DB, TB, O>;
84
+ }
85
+ interface Whenable<DB, TB extends keyof DB, W, O> {
86
+ /**
87
+ * Adds a `when` clause to the case statement.
88
+ *
89
+ * A `when` call must be followed by a {@link CaseThenBuilder.then} call.
90
+ */
91
+ when<RE extends ReferenceExpression<DB, TB>>(lhs: unknown extends W ? RE : KyselyTypeError<'when(lhs, op, rhs) is not supported when using case(value)'>, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): CaseThenBuilder<DB, TB, W, O>;
92
+ when(expression: Expression<W>): CaseThenBuilder<DB, TB, W, O>;
93
+ when(value: unknown extends W ? KyselyTypeError<'when(value) is only supported when using case(value)'> : W): CaseThenBuilder<DB, TB, W, O>;
94
+ }
95
+ interface Endable<DB, TB extends keyof DB, O> {
96
+ /**
97
+ * Adds an `end` keyword to the case operator.
98
+ *
99
+ * `case` operators can only be used as part of a query.
100
+ * For a `case` statement used as part of a stored program, use {@link endCase} instead.
101
+ */
102
+ end(): ExpressionWrapper<DB, TB, O>;
103
+ /**
104
+ * Adds `end case` keywords to the case statement.
105
+ *
106
+ * `case` statements can only be used for flow control in stored programs.
107
+ * For a `case` operator used as part of a query, use {@link end} instead.
108
+ */
109
+ endCase(): ExpressionWrapper<DB, TB, O>;
110
+ }
111
+ export {};
@@ -0,0 +1,69 @@
1
+ /// <reference types="./case-builder.d.ts" />
2
+ import { ExpressionWrapper } from '../expression/expression-wrapper.js';
3
+ import { freeze } from '../util/object-utils.js';
4
+ import { CaseNode } from '../operation-node/case-node.js';
5
+ import { WhenNode } from '../operation-node/when-node.js';
6
+ import { parseFilter, } from '../parser/binary-operation-parser.js';
7
+ import { parseValueExpression } from '../parser/value-parser.js';
8
+ export class CaseBuilder {
9
+ #props;
10
+ constructor(props) {
11
+ this.#props = freeze(props);
12
+ }
13
+ when(...args) {
14
+ return new CaseThenBuilder({
15
+ ...this.#props,
16
+ node: CaseNode.cloneWithWhen(this.#props.node, WhenNode.create(parseFilter(args))),
17
+ });
18
+ }
19
+ }
20
+ export class CaseThenBuilder {
21
+ #props;
22
+ constructor(props) {
23
+ this.#props = freeze(props);
24
+ }
25
+ then(valueExpression) {
26
+ return new CaseWhenBuilder({
27
+ ...this.#props,
28
+ node: CaseNode.cloneWithThen(this.#props.node, parseValueExpression(valueExpression)),
29
+ });
30
+ }
31
+ }
32
+ export class CaseWhenBuilder {
33
+ #props;
34
+ constructor(props) {
35
+ this.#props = freeze(props);
36
+ }
37
+ when(...args) {
38
+ return new CaseThenBuilder({
39
+ ...this.#props,
40
+ node: CaseNode.cloneWithWhen(this.#props.node, WhenNode.create(parseFilter(args))),
41
+ });
42
+ }
43
+ else(valueExpression) {
44
+ return new CaseEndBuilder({
45
+ ...this.#props,
46
+ node: CaseNode.cloneWith(this.#props.node, {
47
+ else: parseValueExpression(valueExpression),
48
+ }),
49
+ });
50
+ }
51
+ end() {
52
+ return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: false }));
53
+ }
54
+ endCase() {
55
+ return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: true }));
56
+ }
57
+ }
58
+ export class CaseEndBuilder {
59
+ #props;
60
+ constructor(props) {
61
+ this.#props = freeze(props);
62
+ }
63
+ end() {
64
+ return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: false }));
65
+ }
66
+ endCase() {
67
+ return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: true }));
68
+ }
69
+ }
@@ -6,7 +6,7 @@ import { SelectExpression, SelectArg } from '../parser/select-parser.js';
6
6
  import { ReturningAllRow, ReturningRow } from '../parser/returning-parser.js';
7
7
  import { ReferenceExpression } from '../parser/reference-parser.js';
8
8
  import { QueryNode } from '../operation-node/query-node.js';
9
- import { MergePartial, Nullable, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
9
+ import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
10
10
  import { Compilable } from '../util/compilable.js';
11
11
  import { QueryExecutor } from '../query-executor/query-executor.js';
12
12
  import { QueryId } from '../util/query-id.js';
@@ -20,7 +20,6 @@ import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-b
20
20
  import { Explainable, ExplainFormat } from '../util/explainable.js';
21
21
  import { AliasedExpression, Expression } from '../expression/expression.js';
22
22
  import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
23
- import { ExistsExpression } from '../parser/unary-operation-parser.js';
24
23
  import { KyselyTypeError } from '../util/type-error.js';
25
24
  import { Streamable } from '../util/streamable.js';
26
25
  export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
@@ -35,6 +34,10 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
35
34
  *
36
35
  * ### Examples
37
36
  *
37
+ * <!-- siteExample("where", "Simple where clause", 10) -->
38
+ *
39
+ * `where` method calls are combined with `AND`:
40
+ *
38
41
  * ```ts
39
42
  * const person = await db
40
43
  * .selectFrom('person')
@@ -57,9 +60,65 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
57
60
  * sql`your operator`
58
61
  * ```
59
62
  *
63
+ * <!-- siteExample("where", "Where in", 20) -->
64
+ *
65
+ * Find multiple items using a list of identifiers:
66
+ *
67
+ * ```ts
68
+ * const persons = await db
69
+ * .selectFrom('person')
70
+ * .selectAll()
71
+ * .where('id', 'in', ['1', '2', '3'])
72
+ * .execute()
73
+ * ```
74
+ *
75
+ * The generated SQL (PostgreSQL):
76
+ *
77
+ * ```sql
78
+ * select * from "person" where "id" in ($1, $2, $3)
79
+ * ```
80
+ *
81
+ * <!-- siteExample("where", "OR where", 30) -->
82
+ *
83
+ * To combine conditions using `OR`, you can use the expression builder:
84
+ *
85
+ * ```ts
86
+ * const persons = await db
87
+ * .selectFrom('person')
88
+ * .selectAll()
89
+ * .where(({ or, and, cmpr }) => or([
90
+ * and([
91
+ * cmpr('first_name', '=', 'Jennifer'),
92
+ * cmpr('last_name', '=', 'Aniston')
93
+ * ]),
94
+ * and([
95
+ * cmpr('first_name', '=', 'Sylvester'),
96
+ * cmpr('last_name', '=', 'Stallone')
97
+ * ])
98
+ * ]))
99
+ * .execute()
100
+ * ```
101
+ *
102
+ * The generated SQL (PostgreSQL):
103
+ *
104
+ * ```sql
105
+ * select *
106
+ * from "person"
107
+ * where (
108
+ * ("first_name" = $1 AND "last_name" = $2)
109
+ * OR
110
+ * ("first_name" = $3 AND "last_name" = $4)
111
+ * )
112
+ * ```
113
+ *
114
+ * <!-- siteExample("where", "Conditional where calls", 40) -->
115
+ *
60
116
  * You can add expressions conditionally like this:
61
117
  *
62
118
  * ```ts
119
+ * const firstName: string | undefined = 'Jennifer'
120
+ * const lastName: string | undefined = 'Aniston'
121
+ *
63
122
  * let query = db
64
123
  * .selectFrom('person')
65
124
  * .selectAll()
@@ -126,22 +185,30 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
126
185
  * select * from "person" where "id" in ($1, $2, $3)
127
186
  * ```
128
187
  *
188
+ * <!-- siteExample("where", "Complex where clause", 50) -->
189
+ *
129
190
  * For complex `where` expressions you can pass in a single callback and
130
- * use the {@link ExpressionBuilder} to build your expression:
191
+ * use the `ExpressionBuilder` to build your expression:
131
192
  *
132
193
  * ```ts
194
+ * const firstName = 'Jennifer'
195
+ * const maxAge = 60
196
+ *
133
197
  * const persons = await db
134
198
  * .selectFrom('person')
135
199
  * .selectAll('person')
136
- * .where(({ cmpr, or, and, not, exists, selectFrom, val }) => and([
200
+ * .where(({ cmpr, or, and, not, exists, selectFrom }) => and([
137
201
  * or([
138
202
  * cmpr('first_name', '=', firstName),
139
203
  * cmpr('age', '<', maxAge)
140
204
  * ]),
141
205
  * not(exists(
142
- * selectFrom('pet').select('pet.id').whereRef('pet.owner_id', '=', 'person.id')
206
+ * selectFrom('pet')
207
+ * .select('pet.id')
208
+ * .whereRef('pet.owner_id', '=', 'person.id')
143
209
  * ))
144
210
  * ]))
211
+ * .execute()
145
212
  * ```
146
213
  *
147
214
  * The generated SQL (PostgreSQL):
@@ -262,32 +329,6 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
262
329
  * from "person"
263
330
  */
264
331
  whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
265
- /**
266
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
267
- */
268
- orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): DeleteQueryBuilder<DB, TB, O>;
269
- orWhere(factory: WhereExpressionFactory<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
270
- orWhere(expression: Expression<any>): DeleteQueryBuilder<DB, TB, O>;
271
- /**
272
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
273
- */
274
- orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
275
- /**
276
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
277
- */
278
- whereExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
279
- /**
280
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
281
- */
282
- whereNotExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
283
- /**
284
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
285
- */
286
- orWhereExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
287
- /**
288
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
289
- */
290
- orWhereNotExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
291
332
  /**
292
333
  * Clears all where expressions from the query.
293
334
  *
@@ -560,7 +601,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
560
601
  * first_name: 'Jennifer',
561
602
  * last_name: 'Aniston'
562
603
  * })
563
- * .returning(eb => [
604
+ * .returning((eb) => [
564
605
  * 'id as id',
565
606
  * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
566
607
  * eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
@@ -745,10 +786,6 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
745
786
  * ```
746
787
  */
747
788
  $call<T>(func: (qb: this) => T): T;
748
- /**
749
- * @deprecated Use `$call` instead
750
- */
751
- call<T>(func: (qb: this) => T): T;
752
789
  /**
753
790
  * Call `func(this)` if `condition` is true.
754
791
  *
@@ -784,11 +821,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
784
821
  * }
785
822
  * ```
786
823
  */
787
- $if<O2>(condition: boolean, func: (qb: this) => DeleteQueryBuilder<DB, TB, O2>): DeleteQueryBuilder<DB, TB, O2 extends DeleteResult ? DeleteResult : O extends DeleteResult ? Partial<O2> : MergePartial<O, O2>>;
788
- /**
789
- * @deprecated Use `$if` instead
790
- */
791
- if<O2>(condition: boolean, func: (qb: this) => DeleteQueryBuilder<DB, TB, O2>): DeleteQueryBuilder<DB, TB, O2 extends DeleteResult ? DeleteResult : O extends DeleteResult ? Partial<O2> : MergePartial<O, O2>>;
824
+ $if<O2>(condition: boolean, func: (qb: this) => DeleteQueryBuilder<DB, TB, O2>): O2 extends DeleteResult ? DeleteQueryBuilder<DB, TB, DeleteResult> : O2 extends O & infer E ? DeleteQueryBuilder<DB, TB, O & Partial<E>> : DeleteQueryBuilder<DB, TB, Partial<O2>>;
792
825
  /**
793
826
  * Change the output type of the query.
794
827
  *
@@ -797,9 +830,47 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
797
830
  */
798
831
  $castTo<T>(): DeleteQueryBuilder<DB, TB, T>;
799
832
  /**
800
- * @deprecated Use `$castTo` instead.
833
+ * Narrows (parts of) the output type of the query.
834
+ *
835
+ * Kysely tries to be as type-safe as possible, but in some cases we have to make
836
+ * compromises for better maintainability and compilation performance. At present,
837
+ * Kysely doesn't narrow the output type of the query when using {@link where} and {@link returning} or {@link returningAll}.
838
+ *
839
+ * This utility method is very useful for these situations, as it removes unncessary
840
+ * runtime assertion/guard code. Its input type is limited to the output type
841
+ * of the query, so you can't add a column that doesn't exist, or change a column's
842
+ * type to something that doesn't exist in its union type.
843
+ *
844
+ * ### Examples
845
+ *
846
+ * Turn this code:
847
+ *
848
+ * ```ts
849
+ * const person = await db.deleteFrom('person')
850
+ * .where('id', '=', id)
851
+ * .where('nullable_column', 'is not', null)
852
+ * .returningAll()
853
+ * .executeTakeFirstOrThrow()
854
+ *
855
+ * if (person.nullable_column) {
856
+ * functionThatExpectsPersonWithNonNullValue(person)
857
+ * }
858
+ * ```
859
+ *
860
+ * Into this:
861
+ *
862
+ * ```ts
863
+ * const person = await db.deleteFrom('person')
864
+ * .where('id', '=', id)
865
+ * .where('nullable_column', 'is not', null)
866
+ * .returningAll()
867
+ * .$narrowType<{ nullable_column: string }>()
868
+ * .executeTakeFirstOrThrow()
869
+ *
870
+ * functionThatExpectsPersonWithNonNullValue(person)
871
+ * ```
801
872
  */
802
- castTo<T>(): DeleteQueryBuilder<DB, TB, T>;
873
+ $narrowType<T>(): DeleteQueryBuilder<DB, TB, NarrowPartial<O, T>>;
803
874
  /**
804
875
  * Asserts that query's output row type equals the given type `T`.
805
876
  *
@@ -842,10 +913,6 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
842
913
  * ```
843
914
  */
844
915
  $assertType<T extends O>(): O extends T ? DeleteQueryBuilder<DB, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
845
- /**
846
- * @deprecated Use `$assertType` instead.
847
- */
848
- assertType<T extends O>(): O extends T ? DeleteQueryBuilder<DB, TB, T> : KyselyTypeError<`assertType() call failed: The type passed in is not equal to the output type of the query.`>;
849
916
  /**
850
917
  * Returns a copy of this DeleteQueryBuilder instance with the given plugin installed.
851
918
  */
@@ -941,24 +1008,24 @@ export interface DeleteQueryBuilderProps {
941
1008
  readonly queryNode: DeleteQueryNode;
942
1009
  readonly executor: QueryExecutor;
943
1010
  }
944
- export declare type DeleteQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? DeleteQueryBuilder<DB, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : never;
945
- declare type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? DeleteQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : DeleteQueryBuilder<DB & Record<A, R>, TB | A, O>;
946
- declare type InnerJoinedDB<DB, A extends string, R> = {
1011
+ export type DeleteQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? DeleteQueryBuilder<DB, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : never;
1012
+ type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? DeleteQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : DeleteQueryBuilder<DB & ShallowRecord<A, R>, TB | A, O>;
1013
+ type InnerJoinedDB<DB, A extends string, R> = DrainOuterGeneric<{
947
1014
  [C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
948
- };
949
- export declare type DeleteQueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : never;
950
- declare type LeftJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? DeleteQueryBuilder<LeftJoinedDB<DB, A, R>, TB | A, O> : DeleteQueryBuilder<DB & Record<A, Nullable<R>>, TB | A, O>;
951
- declare type LeftJoinedDB<DB, A extends keyof any, R> = {
1015
+ }>;
1016
+ export type DeleteQueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : never;
1017
+ type LeftJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? DeleteQueryBuilder<LeftJoinedDB<DB, A, R>, TB | A, O> : DeleteQueryBuilder<DB & ShallowRecord<A, Nullable<R>>, TB | A, O>;
1018
+ type LeftJoinedDB<DB, A extends keyof any, R> = DrainOuterGeneric<{
952
1019
  [C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
953
- };
954
- export declare type DeleteQueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : never;
955
- declare type RightJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = DeleteQueryBuilder<RightJoinedDB<DB, TB, A, R>, TB | A, O>;
956
- declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
1020
+ }>;
1021
+ export type DeleteQueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : never;
1022
+ type RightJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = DeleteQueryBuilder<RightJoinedDB<DB, TB, A, R>, TB | A, O>;
1023
+ type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
957
1024
  [C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
958
- };
959
- export declare type DeleteQueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : never;
960
- declare type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = DeleteQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, TB | A, O>;
961
- declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
1025
+ }>;
1026
+ export type DeleteQueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : never;
1027
+ type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = DeleteQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, TB | A, O>;
1028
+ type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
962
1029
  [C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
963
- };
1030
+ }>;
964
1031
  export {};
@@ -10,8 +10,7 @@ import { DeleteResult } from './delete-result.js';
10
10
  import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
11
11
  import { LimitNode } from '../operation-node/limit-node.js';
12
12
  import { parseOrderBy, } from '../parser/order-by-parser.js';
13
- import { parseReferentialComparison, parseWhere, } from '../parser/binary-operation-parser.js';
14
- import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
13
+ import { parseFilter, parseReferentialComparison, } from '../parser/binary-operation-parser.js';
15
14
  export class DeleteQueryBuilder {
16
15
  #props;
17
16
  constructor(props) {
@@ -20,7 +19,7 @@ export class DeleteQueryBuilder {
20
19
  where(...args) {
21
20
  return new DeleteQueryBuilder({
22
21
  ...this.#props,
23
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhere(args)),
22
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseFilter(args)),
24
23
  });
25
24
  }
26
25
  whereRef(lhs, op, rhs) {
@@ -29,42 +28,6 @@ export class DeleteQueryBuilder {
29
28
  queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialComparison(lhs, op, rhs)),
30
29
  });
31
30
  }
32
- orWhere(...args) {
33
- return new DeleteQueryBuilder({
34
- ...this.#props,
35
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhere(args)),
36
- });
37
- }
38
- orWhereRef(lhs, op, rhs) {
39
- return new DeleteQueryBuilder({
40
- ...this.#props,
41
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferentialComparison(lhs, op, rhs)),
42
- });
43
- }
44
- whereExists(arg) {
45
- return new DeleteQueryBuilder({
46
- ...this.#props,
47
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExists(arg)),
48
- });
49
- }
50
- whereNotExists(arg) {
51
- return new DeleteQueryBuilder({
52
- ...this.#props,
53
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExists(arg)),
54
- });
55
- }
56
- orWhereExists(arg) {
57
- return new DeleteQueryBuilder({
58
- ...this.#props,
59
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExists(arg)),
60
- });
61
- }
62
- orWhereNotExists(arg) {
63
- return new DeleteQueryBuilder({
64
- ...this.#props,
65
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExists(arg)),
66
- });
67
- }
68
31
  clearWhere() {
69
32
  return new DeleteQueryBuilder({
70
33
  ...this.#props,
@@ -202,12 +165,6 @@ export class DeleteQueryBuilder {
202
165
  $call(func) {
203
166
  return func(this);
204
167
  }
205
- /**
206
- * @deprecated Use `$call` instead
207
- */
208
- call(func) {
209
- return this.$call(func);
210
- }
211
168
  /**
212
169
  * Call `func(this)` if `condition` is true.
213
170
  *
@@ -251,12 +208,6 @@ export class DeleteQueryBuilder {
251
208
  ...this.#props,
252
209
  });
253
210
  }
254
- /**
255
- * @deprecated Use `$if` instead
256
- */
257
- if(condition, func) {
258
- return this.$if(condition, func);
259
- }
260
211
  /**
261
212
  * Change the output type of the query.
262
213
  *
@@ -267,10 +218,48 @@ export class DeleteQueryBuilder {
267
218
  return new DeleteQueryBuilder(this.#props);
268
219
  }
269
220
  /**
270
- * @deprecated Use `$castTo` instead.
221
+ * Narrows (parts of) the output type of the query.
222
+ *
223
+ * Kysely tries to be as type-safe as possible, but in some cases we have to make
224
+ * compromises for better maintainability and compilation performance. At present,
225
+ * Kysely doesn't narrow the output type of the query when using {@link where} and {@link returning} or {@link returningAll}.
226
+ *
227
+ * This utility method is very useful for these situations, as it removes unncessary
228
+ * runtime assertion/guard code. Its input type is limited to the output type
229
+ * of the query, so you can't add a column that doesn't exist, or change a column's
230
+ * type to something that doesn't exist in its union type.
231
+ *
232
+ * ### Examples
233
+ *
234
+ * Turn this code:
235
+ *
236
+ * ```ts
237
+ * const person = await db.deleteFrom('person')
238
+ * .where('id', '=', id)
239
+ * .where('nullable_column', 'is not', null)
240
+ * .returningAll()
241
+ * .executeTakeFirstOrThrow()
242
+ *
243
+ * if (person.nullable_column) {
244
+ * functionThatExpectsPersonWithNonNullValue(person)
245
+ * }
246
+ * ```
247
+ *
248
+ * Into this:
249
+ *
250
+ * ```ts
251
+ * const person = await db.deleteFrom('person')
252
+ * .where('id', '=', id)
253
+ * .where('nullable_column', 'is not', null)
254
+ * .returningAll()
255
+ * .$narrowType<{ nullable_column: string }>()
256
+ * .executeTakeFirstOrThrow()
257
+ *
258
+ * functionThatExpectsPersonWithNonNullValue(person)
259
+ * ```
271
260
  */
272
- castTo() {
273
- return this.$castTo();
261
+ $narrowType() {
262
+ return new DeleteQueryBuilder(this.#props);
274
263
  }
275
264
  /**
276
265
  * Asserts that query's output row type equals the given type `T`.
@@ -316,12 +305,6 @@ export class DeleteQueryBuilder {
316
305
  $assertType() {
317
306
  return new DeleteQueryBuilder(this.#props);
318
307
  }
319
- /**
320
- * @deprecated Use `$assertType` instead.
321
- */
322
- assertType() {
323
- return new DeleteQueryBuilder(this.#props);
324
- }
325
308
  /**
326
309
  * Returns a copy of this DeleteQueryBuilder instance with the given plugin installed.
327
310
  */
@@ -1,5 +1,4 @@
1
1
  export declare class DeleteResult {
2
- #private;
2
+ readonly numDeletedRows: bigint;
3
3
  constructor(numDeletedRows: bigint);
4
- get numDeletedRows(): bigint;
5
4
  }
@@ -1,13 +1,7 @@
1
1
  /// <reference types="./delete-result.d.ts" />
2
2
  export class DeleteResult {
3
- #numDeletedRows;
3
+ numDeletedRows;
4
4
  constructor(numDeletedRows) {
5
- this.#numDeletedRows = numDeletedRows;
6
- }
7
- get numDeletedRows() {
8
- return this.#numDeletedRows;
5
+ this.numDeletedRows = numDeletedRows;
9
6
  }
10
7
  }
11
- Object.defineProperty(DeleteResult.prototype, 'numDeletedRows', {
12
- enumerable: true,
13
- });