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
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CreateIndexBuilder = void 0;
4
4
  const create_index_node_js_1 = require("../operation-node/create-index-node.js");
5
- const list_node_js_1 = require("../operation-node/list-node.js");
6
5
  const raw_node_js_1 = require("../operation-node/raw-node.js");
7
6
  const reference_parser_js_1 = require("../parser/reference-parser.js");
8
7
  const table_parser_js_1 = require("../parser/table-parser.js");
@@ -52,29 +51,62 @@ class CreateIndexBuilder {
52
51
  });
53
52
  }
54
53
  /**
55
- * Specifies the column for the index.
54
+ * Adds a column to the index.
56
55
  *
57
- * Also see the `expression` for specifying an arbitrary expression.
56
+ * Also see {@link columns} for adding multiple columns at once or {@link expression}
57
+ * for specifying an arbitrary expression.
58
+ *
59
+ * ### Examples
60
+ *
61
+ * ```ts
62
+ * await db.schema
63
+ * .createIndex('person_first_name_and_age_index')
64
+ * .on('person')
65
+ * .column('first_name')
66
+ * .column('age desc')
67
+ * .execute()
68
+ * ```
69
+ *
70
+ * The generated SQL (PostgreSQL):
71
+ *
72
+ * ```sql
73
+ * create index "person_first_name_and_age_index" on "person" ("first_name", "age" desc)
74
+ * ```
58
75
  */
59
76
  column(column) {
60
77
  return new CreateIndexBuilder({
61
78
  ...this.#props,
62
- node: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.node, {
63
- expression: (0, reference_parser_js_1.parseColumnName)(column),
64
- }),
79
+ node: create_index_node_js_1.CreateIndexNode.cloneWithColumns(this.#props.node, [
80
+ (0, reference_parser_js_1.parseOrderedColumnName)(column),
81
+ ]),
65
82
  });
66
83
  }
67
84
  /**
68
85
  * Specifies a list of columns for the index.
69
86
  *
70
- * Also see the `expression` for specifying an arbitrary expression.
87
+ * Also see {@link column} for adding a single column or {@link expression} for
88
+ * specifying an arbitrary expression.
89
+ *
90
+ * ### Examples
91
+ *
92
+ * ```ts
93
+ * await db.schema
94
+ * .createIndex('person_first_name_and_age_index')
95
+ * .on('person')
96
+ * .columns(['first_name', 'age desc'])
97
+ * .execute()
98
+ * ```
99
+ *
100
+ * The generated SQL (PostgreSQL):
101
+ *
102
+ * ```sql
103
+ * create index "person_first_name_and_age_index" on "person" ("first_name", "age" desc)
104
+ * ```
71
105
  */
72
106
  columns(columns) {
73
107
  return new CreateIndexBuilder({
74
108
  ...this.#props,
75
- node: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.node, {
76
- expression: list_node_js_1.ListNode.create(columns.map(reference_parser_js_1.parseColumnName)),
77
- }),
109
+ node: create_index_node_js_1.CreateIndexNode.cloneWithColumns(this.#props.node, columns.map(reference_parser_js_1.parseOrderedColumnName)),
78
110
  });
79
111
  }
80
112
  /**
@@ -91,13 +123,19 @@ class CreateIndexBuilder {
91
123
  * .expression(sql`first_name COLLATE "fi_FI"`)
92
124
  * .execute()
93
125
  * ```
126
+ *
127
+ * The generated SQL (PostgreSQL):
128
+ *
129
+ * ```sql
130
+ * create index "person_first_name_index" on "person" (first_name COLLATE "fi_FI")
131
+ * ```
94
132
  */
95
133
  expression(expression) {
96
134
  return new CreateIndexBuilder({
97
135
  ...this.#props,
98
- node: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.node, {
99
- expression: expression.toOperationNode(),
100
- }),
136
+ node: create_index_node_js_1.CreateIndexNode.cloneWithColumns(this.#props.node, [
137
+ expression.toOperationNode(),
138
+ ]),
101
139
  });
102
140
  }
103
141
  using(indexType) {
@@ -112,7 +150,7 @@ class CreateIndexBuilder {
112
150
  const transformer = new immediate_value_transformer_js_1.ImmediateValueTransformer();
113
151
  return new CreateIndexBuilder({
114
152
  ...this.#props,
115
- node: query_node_js_1.QueryNode.cloneWithWhere(this.#props.node, transformer.transformNode((0, binary_operation_parser_js_1.parseWhere)(args))),
153
+ node: query_node_js_1.QueryNode.cloneWithWhere(this.#props.node, transformer.transformNode((0, binary_operation_parser_js_1.parseFilter)(args))),
116
154
  });
117
155
  }
118
156
  /**
@@ -238,10 +238,6 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
238
238
  * ```
239
239
  */
240
240
  $call<T>(func: (qb: this) => T): T;
241
- /**
242
- * @deprecated Use `$call` instead
243
- */
244
- call<T>(func: (qb: this) => T): T;
245
241
  toOperationNode(): CreateTableNode;
246
242
  compile(): CompiledQuery;
247
243
  execute(): Promise<void>;
@@ -251,5 +247,5 @@ export interface CreateTableBuilderProps {
251
247
  readonly executor: QueryExecutor;
252
248
  readonly node: CreateTableNode;
253
249
  }
254
- export declare type ColumnBuilderCallback = (builder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
255
- export declare type ForeignKeyConstraintBuilderCallback = (builder: ForeignKeyConstraintBuilder) => ForeignKeyConstraintBuilder;
250
+ export type ColumnBuilderCallback = (builder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
251
+ export type ForeignKeyConstraintBuilderCallback = (builder: ForeignKeyConstraintBuilder) => ForeignKeyConstraintBuilder;
@@ -307,12 +307,6 @@ class CreateTableBuilder {
307
307
  $call(func) {
308
308
  return func(this);
309
309
  }
310
- /**
311
- * @deprecated Use `$call` instead
312
- */
313
- call(func) {
314
- return this.$call(func);
315
- }
316
310
  toOperationNode() {
317
311
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
318
312
  }
@@ -139,8 +139,7 @@ export declare class SchemaModule {
139
139
  * ```ts
140
140
  * await db.schema
141
141
  * .alterTable('person')
142
- * .alterColumn('first_name')
143
- * .setDataType('text')
142
+ * .alterColumn('first_name', (ac) => ac.setDataType('text'))
144
143
  * .execute()
145
144
  * ```
146
145
  */
@@ -193,8 +193,7 @@ class SchemaModule {
193
193
  * ```ts
194
194
  * await db.schema
195
195
  * .alterTable('person')
196
- * .alterColumn('first_name')
197
- * .setDataType('text')
196
+ * .alterColumn('first_name', (ac) => ac.setDataType('text'))
198
197
  * .execute()
199
198
  * ```
200
199
  */
@@ -202,7 +201,7 @@ class SchemaModule {
202
201
  return new alter_table_builder_js_1.AlterTableBuilder({
203
202
  queryId: (0, query_id_js_1.createQueryId)(),
204
203
  executor: this.#executor,
205
- node: alter_table_node_js_1.AlterTableNode.create(table),
204
+ node: alter_table_node_js_1.AlterTableNode.create((0, table_parser_js_1.parseTable)(table)),
206
205
  });
207
206
  }
208
207
  /**
@@ -33,7 +33,7 @@
33
33
  * ColumnType<Date, string, never>
34
34
  * ```
35
35
  */
36
- export declare type ColumnType<SelectType, InsertType = SelectType, UpdateType = SelectType> = {
36
+ export type ColumnType<SelectType, InsertType = SelectType, UpdateType = SelectType> = {
37
37
  readonly __select__: SelectType;
38
38
  readonly __insert__: InsertType;
39
39
  readonly __update__: UpdateType;
@@ -51,50 +51,55 @@ export declare type ColumnType<SelectType, InsertType = SelectType, UpdateType =
51
51
  * type Generated<S> = ColumnType<S, S | undefined, S>
52
52
  * ```
53
53
  */
54
- export declare type Generated<S> = ColumnType<S, S | undefined, S>;
54
+ export type Generated<S> = ColumnType<S, S | undefined, S>;
55
55
  /**
56
56
  * A shortcut for defining columns that are only database-generated
57
57
  * (like postgres GENERATED ALWAYS AS IDENTITY). No insert/update
58
58
  * is allowed.
59
59
  */
60
- export declare type GeneratedAlways<S> = ColumnType<S, never, never>;
60
+ export type GeneratedAlways<S> = ColumnType<S, never, never>;
61
+ /**
62
+ * A shortcut for defining JSON columns, which are by default inserted/updated
63
+ * as stringified JSON strings.
64
+ */
65
+ export type JSONColumnType<SelectType extends object | null, InsertType = string, UpdateType = string> = ColumnType<SelectType, InsertType, UpdateType>;
61
66
  /**
62
67
  * Evaluates to `K` if `T` can be `null` or `undefined`.
63
68
  */
64
- declare type IfNullable<T, K> = undefined extends T ? K : null extends T ? K : never;
69
+ type IfNullable<T, K> = undefined extends T ? K : null extends T ? K : never;
65
70
  /**
66
71
  * Evaluates to `K` if `T` can't be `null` or `undefined`.
67
72
  */
68
- declare type IfNotNullable<T, K> = undefined extends T ? never : null extends T ? never : T extends never ? never : K;
73
+ type IfNotNullable<T, K> = undefined extends T ? never : null extends T ? never : T extends never ? never : K;
69
74
  /**
70
75
  * Evaluates to `K` if `T` isn't `never`.
71
76
  */
72
- declare type IfNotNever<T, K> = T extends never ? never : K;
73
- export declare type SelectType<T> = T extends ColumnType<infer S, any, any> ? S : T;
74
- export declare type InsertType<T> = T extends ColumnType<any, infer I, any> ? I : T;
75
- export declare type UpdateType<T> = T extends ColumnType<any, any, infer U> ? U : T;
77
+ type IfNotNever<T, K> = T extends never ? never : K;
78
+ export type SelectType<T> = T extends ColumnType<infer S, any, any> ? S : T;
79
+ export type InsertType<T> = T extends ColumnType<any, infer I, any> ? I : T;
80
+ export type UpdateType<T> = T extends ColumnType<any, any, infer U> ? U : T;
76
81
  /**
77
82
  * Keys of `R` whose `InsertType` values can be `null` or `undefined`.
78
83
  */
79
- export declare type NullableInsertKeys<R> = {
84
+ export type NullableInsertKeys<R> = {
80
85
  [K in keyof R]: IfNullable<InsertType<R[K]>, K>;
81
86
  }[keyof R];
82
87
  /**
83
88
  * Keys of `R` whose `InsertType` values can't be `null` or `undefined`.
84
89
  */
85
- export declare type NonNullableInsertKeys<R> = {
90
+ export type NonNullableInsertKeys<R> = {
86
91
  [K in keyof R]: IfNotNullable<InsertType<R[K]>, K>;
87
92
  }[keyof R];
88
93
  /**
89
94
  * Keys of `R` whose `SelectType` values are not `never`
90
95
  */
91
- declare type NonNeverSelectKeys<R> = {
96
+ type NonNeverSelectKeys<R> = {
92
97
  [K in keyof R]: IfNotNever<SelectType<R[K]>, K>;
93
98
  }[keyof R];
94
99
  /**
95
100
  * Keys of `R` whose `UpdateType` values are not `never`
96
101
  */
97
- export declare type UpdateKeys<R> = {
102
+ export type UpdateKeys<R> = {
98
103
  [K in keyof R]: IfNotNever<UpdateType<R[K]>, K>;
99
104
  }[keyof R];
100
105
  /**
@@ -118,7 +123,7 @@ export declare type UpdateKeys<R> = {
118
123
  * // }
119
124
  * ```
120
125
  */
121
- export declare type Selectable<R> = {
126
+ export type Selectable<R> = {
122
127
  [K in NonNeverSelectKeys<R>]: SelectType<R[K]>;
123
128
  };
124
129
  /**
@@ -142,7 +147,7 @@ export declare type Selectable<R> = {
142
147
  * // }
143
148
  * ```
144
149
  */
145
- export declare type Insertable<R> = {
150
+ export type Insertable<R> = {
146
151
  [K in NonNullableInsertKeys<R>]: InsertType<R[K]>;
147
152
  } & {
148
153
  [K in NullableInsertKeys<R>]?: InsertType<R[K]>;
@@ -167,7 +172,7 @@ export declare type Insertable<R> = {
167
172
  * // }
168
173
  * ```
169
174
  */
170
- export declare type Updateable<R> = {
175
+ export type Updateable<R> = {
171
176
  [K in UpdateKeys<R>]?: UpdateType<R[K]>;
172
177
  };
173
178
  export {};
@@ -1,5 +1,5 @@
1
1
  import { Expression } from '../expression/expression.js';
2
- export declare type ExplainFormat = 'text' | 'xml' | 'json' | 'yaml' | 'traditional' | 'tree';
2
+ export type ExplainFormat = 'text' | 'xml' | 'json' | 'yaml' | 'traditional' | 'tree';
3
3
  export interface Explainable {
4
4
  /**
5
5
  * Executes query with `explain` statement before the main query.
@@ -41,6 +41,6 @@ import { Compilable } from './compilable.js';
41
41
  * type QueryResult = InferResult<typeof compiledQuery> // Selectable<Person>[]
42
42
  * ```
43
43
  */
44
- export declare type InferResult<C extends Compilable<any> | CompiledQuery<any>> = C extends Compilable<infer O> ? ResolveResult<O> : C extends CompiledQuery<infer O> ? ResolveResult<O> : never;
45
- declare type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult ? O : O[];
44
+ export type InferResult<C extends Compilable<any> | CompiledQuery<any>> = C extends Compilable<infer O> ? ResolveResult<O> : C extends CompiledQuery<infer O> ? ResolveResult<O> : never;
45
+ type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult ? O : O[];
46
46
  export {};
@@ -1,7 +1,7 @@
1
1
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
2
2
  import { ArrayItemType } from './type-utils.js';
3
3
  export declare const LOG_LEVELS: readonly ["query", "error"];
4
- export declare type LogLevel = ArrayItemType<typeof LOG_LEVELS>;
4
+ export type LogLevel = ArrayItemType<typeof LOG_LEVELS>;
5
5
  export interface QueryLogEvent {
6
6
  readonly level: 'query';
7
7
  readonly query: CompiledQuery;
@@ -13,13 +13,13 @@ export interface ErrorLogEvent {
13
13
  readonly query: CompiledQuery;
14
14
  readonly queryDurationMillis: number;
15
15
  }
16
- export declare type LogEvent = QueryLogEvent | ErrorLogEvent;
17
- export declare type Logger = (event: LogEvent) => void;
18
- export declare type LogConfig = ReadonlyArray<LogLevel> | Logger;
16
+ export type LogEvent = QueryLogEvent | ErrorLogEvent;
17
+ export type Logger = (event: LogEvent) => void | Promise<void>;
18
+ export type LogConfig = ReadonlyArray<LogLevel> | Logger;
19
19
  export declare class Log {
20
20
  #private;
21
21
  constructor(config: LogConfig);
22
22
  isLevelEnabled(level: LogLevel): boolean;
23
- query(getEvent: () => QueryLogEvent): void;
24
- error(getEvent: () => ErrorLogEvent): void;
23
+ query(getEvent: () => QueryLogEvent): Promise<void>;
24
+ error(getEvent: () => ErrorLogEvent): Promise<void>;
25
25
  }
@@ -25,14 +25,14 @@ class Log {
25
25
  isLevelEnabled(level) {
26
26
  return this.#levels[level];
27
27
  }
28
- query(getEvent) {
28
+ async query(getEvent) {
29
29
  if (this.#levels.query) {
30
- this.#logger(getEvent());
30
+ await this.#logger(getEvent());
31
31
  }
32
32
  }
33
- error(getEvent) {
33
+ async error(getEvent) {
34
34
  if (this.#levels.error) {
35
- this.#logger(getEvent());
35
+ await this.#logger(getEvent());
36
36
  }
37
37
  }
38
38
  }
@@ -1,3 +1,4 @@
1
+ import { ShallowRecord } from './type-utils.js';
1
2
  export declare function isEmpty(obj: ArrayLike<unknown> | string | object): boolean;
2
3
  export declare function isUndefined(obj: unknown): obj is undefined;
3
4
  export declare function isString(obj: unknown): obj is string;
@@ -10,7 +11,7 @@ export declare function isBuffer(obj: unknown): obj is {
10
11
  length: number;
11
12
  };
12
13
  export declare function isFunction(obj: unknown): obj is Function;
13
- export declare function isObject(obj: unknown): obj is Record<string, unknown>;
14
+ export declare function isObject(obj: unknown): obj is ShallowRecord<string, unknown>;
14
15
  export declare function isArrayBufferOrView(obj: unknown): obj is ArrayBuffer | ArrayBufferView;
15
16
  export declare function getLast<T>(arr: ArrayLike<T>): T | undefined;
16
17
  export declare function freeze<T>(obj: T): Readonly<T>;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Similar to Required<T> build-in type, but allows `undefined` values.
5
5
  */
6
- declare type AllProps<T> = T & {
6
+ type AllProps<T> = T & {
7
7
  [P in keyof T]-?: unknown;
8
8
  };
9
9
  /**
@@ -2,10 +2,7 @@ import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
2
2
  import { InsertResult } from '../query-builder/insert-result.js';
3
3
  import { DeleteResult } from '../query-builder/delete-result.js';
4
4
  import { UpdateResult } from '../query-builder/update-result.js';
5
- /**
6
- * Given an object type, extracts the union of all value types.
7
- */
8
- export declare type ValueType<T> = T[keyof T];
5
+ import { KyselyTypeError } from './type-error.js';
9
6
  /**
10
7
  * Given a database type and a union of table names in that db, returns
11
8
  * a union type with all possible column names.
@@ -37,13 +34,13 @@ export declare type ValueType<T> = T[keyof T];
37
34
  * // Columns == 'id' | 'name' | 'species'
38
35
  * ```
39
36
  */
40
- export declare type AnyColumn<DB, TB extends keyof DB> = {
37
+ export type AnyColumn<DB, TB extends keyof DB> = DrainOuterGeneric<{
41
38
  [T in TB]: keyof DB[T];
42
- }[TB] & string;
39
+ }[TB] & string>;
43
40
  /**
44
41
  * Extracts a column type.
45
42
  */
46
- export declare type ExtractColumnType<DB, TB extends keyof DB, C> = {
43
+ export type ExtractColumnType<DB, TB extends keyof DB, C> = {
47
44
  [T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
48
45
  }[TB];
49
46
  /**
@@ -77,71 +74,88 @@ export declare type ExtractColumnType<DB, TB extends keyof DB, C> = {
77
74
  * // Columns == 'person.id' | 'pet.name' | 'pet.species'
78
75
  * ```
79
76
  */
80
- export declare type AnyColumnWithTable<DB, TB extends keyof DB> = {
77
+ export type AnyColumnWithTable<DB, TB extends keyof DB> = {
81
78
  [T in TB]: T extends string ? keyof DB[T] extends string ? `${T}.${keyof DB[T]}` : never : never;
82
79
  }[TB];
83
80
  /**
84
81
  * Just like {@link AnyColumn} but with a ` as <string>` suffix.
85
82
  */
86
- export declare type AnyAliasedColumn<DB, TB extends keyof DB> = {
83
+ export type AnyAliasedColumn<DB, TB extends keyof DB> = {
87
84
  [T in TB]: T extends string ? keyof DB[T] extends string ? `${keyof DB[T]} as ${string}` : never : never;
88
85
  }[TB];
89
86
  /**
90
87
  * Just like {@link AnyColumnWithTable} but with a ` as <string>` suffix.
91
88
  */
92
- export declare type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
89
+ export type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
93
90
  [T in TB]: T extends string ? keyof DB[T] extends string ? `${T}.${keyof DB[T]} as ${string}` : never : never;
94
91
  }[TB];
95
92
  /**
96
93
  * Extracts the item type of an array.
97
94
  */
98
- export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
95
+ export type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
99
96
  /**
100
97
  * Any select query builder.
101
98
  */
102
- export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
103
- export declare type SimplifySingleResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O> | undefined;
104
- export declare type SimplifyResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O>;
105
- export declare type Simplify<T> = {
99
+ export type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
100
+ export type SimplifySingleResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O> | undefined;
101
+ export type SimplifyResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O>;
102
+ export type Simplify<T> = DrainOuterGeneric<{
106
103
  [K in keyof T]: T[K];
107
- } & {};
104
+ } & {}>;
108
105
  /**
109
106
  * Represents a database row whose column names and their types are unknown.
110
107
  */
111
- export declare type UnknownRow = Record<string, unknown>;
108
+ export type UnknownRow = Record<string, unknown>;
112
109
  /**
113
110
  * Makes all properties of object type `T` nullable.
114
111
  */
115
- export declare type Nullable<T> = {
112
+ export type Nullable<T> = {
116
113
  [P in keyof T]: T[P] | null;
117
114
  };
118
115
  /**
119
- * Takes all properties from T1 and merges all properties from T2
120
- * that don't exist in T1 as optional properties.
116
+ * Evaluates to `true` if `T` is `never`.
117
+ */
118
+ export type IsNever<T> = [T] extends [never] ? true : false;
119
+ /**
120
+ * Evaluates to `true` if `T` is `any`.
121
+ */
122
+ export type IsAny<T> = 0 extends T & 1 ? true : false;
123
+ /**
124
+ * Evaluates to `true` if the types `T` and `U` are equal.
125
+ */
126
+ export type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
127
+ export type NarrowPartial<S, T> = DrainOuterGeneric<{
128
+ [K in keyof S & string]: K extends keyof T ? T[K] extends S[K] ? T[K] : KyselyTypeError<`$narrowType() call failed: passed type does not exist in '${K}'s type union`> : S[K];
129
+ }>;
130
+ export type SqlBool = boolean | 0 | 1;
131
+ /**
132
+ * Utility to reduce depth of TypeScript's internal type instantiation stack.
121
133
  *
122
134
  * Example:
123
135
  *
124
- * interface Person {
125
- * name: string
126
- * age: number
127
- * }
136
+ * ```ts
137
+ * type A<T> = { item: T }
128
138
  *
129
- * interface Pet {
130
- * name: string
131
- * species: 'cat' | 'dog'
132
- * }
139
+ * type Test<T> = A<
140
+ * A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<T>>>>>>>>>>>>>>>>>>>>>>>>
141
+ * >
133
142
  *
134
- * type Merged = MergePartial<Person, Pet>
143
+ * type Error = Test<number> // Type instantiation is excessively deep and possibly infinite.ts (2589)
144
+ * ```
135
145
  *
136
- * // { name: string, age: number, species?: 'cat' | 'dog' }
137
- */
138
- export declare type MergePartial<T1, T2> = T1 & Partial<Omit<T2, keyof T1>>;
139
- /**
140
- * Evaluates to `true` if `T` is `never`.
141
- */
142
- export declare type IsNever<T> = [T] extends [never] ? true : false;
143
- /**
144
- * Evaluates to `true` if the types `T` and `U` are equal.
146
+ * To fix this, we can use `DrainOuterGeneric`:
147
+ *
148
+ * ```ts
149
+ * type A<T> = DrainOuterGeneric<{ item: T }>
150
+ *
151
+ * type Test<T> = A<
152
+ * A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<T>>>>>>>>>>>>>>>>>>>>>>>>
153
+ * >
154
+ *
155
+ * type Ok = Test<number> // Ok
156
+ * ```
145
157
  */
146
- export declare type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
147
- export declare type SqlBool = boolean | 0 | 1;
158
+ export type DrainOuterGeneric<T> = [T] extends [unknown] ? T : never;
159
+ export type ShallowRecord<K extends keyof any, T> = DrainOuterGeneric<{
160
+ [P in K]: T;
161
+ }>;
@@ -30,7 +30,7 @@ export interface SchemaMetadata {
30
30
  export interface DatabaseMetadata {
31
31
  /**
32
32
  * The tables and views found in the database.
33
- * * The propery isView can be used to tell them apart.
33
+ * The propery isView can be used to tell them apart.
34
34
  */
35
35
  readonly tables: TableMetadata[];
36
36
  }
@@ -46,6 +46,7 @@ export interface MysqlStream<T> {
46
46
  }
47
47
  export interface MysqlOkPacket {
48
48
  affectedRows: number;
49
+ changedRows: number;
49
50
  insertId: number;
50
51
  }
51
- export declare type MysqlQueryResult = MysqlOkPacket | Record<string, unknown>[];
52
+ export type MysqlQueryResult = MysqlOkPacket | Record<string, unknown>[];
@@ -83,10 +83,13 @@ class MysqlConnection {
83
83
  try {
84
84
  const result = await this.#executeQuery(compiledQuery);
85
85
  if (isOkPacket(result)) {
86
- const { insertId, affectedRows } = result;
86
+ const { insertId, affectedRows, changedRows } = result;
87
87
  const numAffectedRows = affectedRows !== undefined && affectedRows !== null
88
88
  ? BigInt(affectedRows)
89
89
  : undefined;
90
+ const numChangedRows = changedRows !== undefined && changedRows !== null
91
+ ? BigInt(changedRows)
92
+ : undefined;
90
93
  return {
91
94
  insertId: insertId !== undefined &&
92
95
  insertId !== null &&
@@ -96,6 +99,7 @@ class MysqlConnection {
96
99
  // TODO: remove.
97
100
  numUpdatedOrDeletedRows: numAffectedRows,
98
101
  numAffectedRows,
102
+ numChangedRows,
99
103
  rows: [],
100
104
  };
101
105
  }
@@ -50,7 +50,7 @@ export interface PostgresCursor<T> {
50
50
  read(rowsCount: number): Promise<T[]>;
51
51
  close(): Promise<void>;
52
52
  }
53
- export declare type PostgresCursorConstructor = new <T>(sql: string, parameters: unknown[]) => PostgresCursor<T>;
53
+ export type PostgresCursorConstructor = new <T>(sql: string, parameters: unknown[]) => PostgresCursor<T>;
54
54
  export interface PostgresQueryResult<R> {
55
55
  command: 'UPDATE' | 'DELETE' | 'INSERT' | 'SELECT';
56
56
  rowCount: number;
@@ -48,7 +48,7 @@ export class PostgresIntrospector {
48
48
  .as('auto_incrementing'),
49
49
  ])
50
50
  // r == normal table
51
- .where('c.relkind', 'in', ['r', 'v'])
51
+ .where((eb) => eb.or([eb('c.relkind', '=', 'r'), eb('c.relkind', '=', 'v')]))
52
52
  .where('ns.nspname', '!~', '^pg_')
53
53
  .where('ns.nspname', '!=', 'information_schema')
54
54
  // No system columns
@@ -12,7 +12,7 @@ export class SqliteIntrospector {
12
12
  }
13
13
  async getTables(options = { withInternalKyselyTables: false }) {
14
14
  let query = this.#db
15
- .selectFrom('sqlite_schema')
15
+ .selectFrom('sqlite_master')
16
16
  .where('type', 'in', ['table', 'view'])
17
17
  .where('name', 'not like', 'sqlite_%')
18
18
  .select('name')
@@ -18,6 +18,12 @@ export interface QueryResult<O> {
18
18
  * the number of rows the query inserted/updated/deleted.
19
19
  */
20
20
  readonly numAffectedRows?: bigint;
21
+ /**
22
+ * This is defined for update queries and contains the number of rows
23
+ * the query changed.
24
+ * This is optional and only provided by some drivers like node-mysql2.
25
+ */
26
+ readonly numChangedRows?: bigint;
21
27
  /**
22
28
  * This is defined for insert queries on dialects that return
23
29
  * the auto incrementing primary key from an insert.
@@ -41,4 +41,4 @@ export interface TransactionSettings {
41
41
  readonly isolationLevel?: IsolationLevel;
42
42
  }
43
43
  export declare const TRANSACTION_ISOLATION_LEVELS: readonly ["read uncommitted", "read committed", "repeatable read", "serializable"];
44
- export declare type IsolationLevel = ArrayItemType<typeof TRANSACTION_ISOLATION_LEVELS>;
44
+ export type IsolationLevel = ArrayItemType<typeof TRANSACTION_ISOLATION_LEVELS>;
@@ -74,24 +74,24 @@ export class RuntimeDriver {
74
74
  return await executeQuery.call(connection, compiledQuery);
75
75
  }
76
76
  catch (error) {
77
- this.#logError(error, compiledQuery, startTime);
77
+ await this.#logError(error, compiledQuery, startTime);
78
78
  throw error;
79
79
  }
80
80
  finally {
81
- this.#logQuery(compiledQuery, startTime);
81
+ await this.#logQuery(compiledQuery, startTime);
82
82
  }
83
83
  };
84
84
  }
85
- #logError(error, compiledQuery, startTime) {
86
- this.#log.error(() => ({
85
+ async #logError(error, compiledQuery, startTime) {
86
+ await this.#log.error(() => ({
87
87
  level: 'error',
88
88
  error,
89
89
  query: compiledQuery,
90
90
  queryDurationMillis: this.#calculateDurationMillis(startTime),
91
91
  }));
92
92
  }
93
- #logQuery(compiledQuery, startTime) {
94
- this.#log.query(() => ({
93
+ async #logQuery(compiledQuery, startTime) {
94
+ await this.#log.query(() => ({
95
95
  level: 'query',
96
96
  query: compiledQuery,
97
97
  queryDurationMillis: this.#calculateDurationMillis(startTime),