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
@@ -1,12 +1,11 @@
1
1
  /// <reference types="./create-index-builder.d.ts" />
2
2
  import { CreateIndexNode, } from '../operation-node/create-index-node.js';
3
- import { ListNode } from '../operation-node/list-node.js';
4
3
  import { RawNode } from '../operation-node/raw-node.js';
5
- import { parseColumnName } from '../parser/reference-parser.js';
4
+ import { parseOrderedColumnName, } from '../parser/reference-parser.js';
6
5
  import { parseTable } from '../parser/table-parser.js';
7
6
  import { preventAwait } from '../util/prevent-await.js';
8
7
  import { freeze } from '../util/object-utils.js';
9
- import { parseWhere, } from '../parser/binary-operation-parser.js';
8
+ import { parseFilter, } from '../parser/binary-operation-parser.js';
10
9
  import { QueryNode } from '../operation-node/query-node.js';
11
10
  import { ImmediateValueTransformer } from '../plugin/immediate-value/immediate-value-transformer.js';
12
11
  export class CreateIndexBuilder {
@@ -50,29 +49,62 @@ export class CreateIndexBuilder {
50
49
  });
51
50
  }
52
51
  /**
53
- * Specifies the column for the index.
52
+ * Adds a column to the index.
54
53
  *
55
- * Also see the `expression` for specifying an arbitrary expression.
54
+ * Also see {@link columns} for adding multiple columns at once or {@link expression}
55
+ * for specifying an arbitrary expression.
56
+ *
57
+ * ### Examples
58
+ *
59
+ * ```ts
60
+ * await db.schema
61
+ * .createIndex('person_first_name_and_age_index')
62
+ * .on('person')
63
+ * .column('first_name')
64
+ * .column('age desc')
65
+ * .execute()
66
+ * ```
67
+ *
68
+ * The generated SQL (PostgreSQL):
69
+ *
70
+ * ```sql
71
+ * create index "person_first_name_and_age_index" on "person" ("first_name", "age" desc)
72
+ * ```
56
73
  */
57
74
  column(column) {
58
75
  return new CreateIndexBuilder({
59
76
  ...this.#props,
60
- node: CreateIndexNode.cloneWith(this.#props.node, {
61
- expression: parseColumnName(column),
62
- }),
77
+ node: CreateIndexNode.cloneWithColumns(this.#props.node, [
78
+ parseOrderedColumnName(column),
79
+ ]),
63
80
  });
64
81
  }
65
82
  /**
66
83
  * Specifies a list of columns for the index.
67
84
  *
68
- * Also see the `expression` for specifying an arbitrary expression.
85
+ * Also see {@link column} for adding a single column or {@link expression} for
86
+ * specifying an arbitrary expression.
87
+ *
88
+ * ### Examples
89
+ *
90
+ * ```ts
91
+ * await db.schema
92
+ * .createIndex('person_first_name_and_age_index')
93
+ * .on('person')
94
+ * .columns(['first_name', 'age desc'])
95
+ * .execute()
96
+ * ```
97
+ *
98
+ * The generated SQL (PostgreSQL):
99
+ *
100
+ * ```sql
101
+ * create index "person_first_name_and_age_index" on "person" ("first_name", "age" desc)
102
+ * ```
69
103
  */
70
104
  columns(columns) {
71
105
  return new CreateIndexBuilder({
72
106
  ...this.#props,
73
- node: CreateIndexNode.cloneWith(this.#props.node, {
74
- expression: ListNode.create(columns.map(parseColumnName)),
75
- }),
107
+ node: CreateIndexNode.cloneWithColumns(this.#props.node, columns.map(parseOrderedColumnName)),
76
108
  });
77
109
  }
78
110
  /**
@@ -89,13 +121,19 @@ export class CreateIndexBuilder {
89
121
  * .expression(sql`first_name COLLATE "fi_FI"`)
90
122
  * .execute()
91
123
  * ```
124
+ *
125
+ * The generated SQL (PostgreSQL):
126
+ *
127
+ * ```sql
128
+ * create index "person_first_name_index" on "person" (first_name COLLATE "fi_FI")
129
+ * ```
92
130
  */
93
131
  expression(expression) {
94
132
  return new CreateIndexBuilder({
95
133
  ...this.#props,
96
- node: CreateIndexNode.cloneWith(this.#props.node, {
97
- expression: expression.toOperationNode(),
98
- }),
134
+ node: CreateIndexNode.cloneWithColumns(this.#props.node, [
135
+ expression.toOperationNode(),
136
+ ]),
99
137
  });
100
138
  }
101
139
  using(indexType) {
@@ -110,7 +148,7 @@ export class CreateIndexBuilder {
110
148
  const transformer = new ImmediateValueTransformer();
111
149
  return new CreateIndexBuilder({
112
150
  ...this.#props,
113
- node: QueryNode.cloneWithWhere(this.#props.node, transformer.transformNode(parseWhere(args))),
151
+ node: QueryNode.cloneWithWhere(this.#props.node, transformer.transformNode(parseFilter(args))),
114
152
  });
115
153
  }
116
154
  /**
@@ -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;
@@ -305,12 +305,6 @@ export class CreateTableBuilder {
305
305
  $call(func) {
306
306
  return func(this);
307
307
  }
308
- /**
309
- * @deprecated Use `$call` instead
310
- */
311
- call(func) {
312
- return this.$call(func);
313
- }
314
308
  toOperationNode() {
315
309
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
316
310
  }
@@ -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
  */
@@ -191,8 +191,7 @@ export class SchemaModule {
191
191
  * ```ts
192
192
  * await db.schema
193
193
  * .alterTable('person')
194
- * .alterColumn('first_name')
195
- * .setDataType('text')
194
+ * .alterColumn('first_name', (ac) => ac.setDataType('text'))
196
195
  * .execute()
197
196
  * ```
198
197
  */
@@ -200,7 +199,7 @@ export class SchemaModule {
200
199
  return new AlterTableBuilder({
201
200
  queryId: createQueryId(),
202
201
  executor: this.#executor,
203
- node: AlterTableNode.create(table),
202
+ node: AlterTableNode.create(parseTable(table)),
204
203
  });
205
204
  }
206
205
  /**
@@ -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
  }
@@ -23,14 +23,14 @@ export class Log {
23
23
  isLevelEnabled(level) {
24
24
  return this.#levels[level];
25
25
  }
26
- query(getEvent) {
26
+ async query(getEvent) {
27
27
  if (this.#levels.query) {
28
- this.#logger(getEvent());
28
+ await this.#logger(getEvent());
29
29
  }
30
30
  }
31
- error(getEvent) {
31
+ async error(getEvent) {
32
32
  if (this.#levels.error) {
33
- this.#logger(getEvent());
33
+ await this.#logger(getEvent());
34
34
  }
35
35
  }
36
36
  }
@@ -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
+ }>;
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "kysely",
3
- "version": "0.24.2",
3
+ "version": "0.26.0",
4
4
  "description": "Type safe SQL query builder",
5
5
  "repository": {
6
6
  "type": "git",
7
- "url": "git://github.com/koskimas/kysely.git"
7
+ "url": "git://github.com/kysely-org/kysely.git"
8
8
  },
9
9
  "engines": {
10
10
  "node": ">=14.0.0"
@@ -36,10 +36,11 @@
36
36
  "test:node:postgres": "DIALECT=postgres npm run test:node:run",
37
37
  "test:node:mysql": "DIALECT=mysql npm run test:node:run",
38
38
  "test:node:sqlite": "DIALECT=sqlite npm run test:node:run",
39
- "test:node:run": "mocha --timeout 15000 test/node/dist/**/*.test.js",
39
+ "test:node:run": "mocha --reporter min --timeout 15000 test/node/dist/**/*.test.js",
40
40
  "test:browser:build": "rm -rf test/browser/bundle.js && esbuild test/browser/main.ts --bundle --outfile=test/browser/bundle.js",
41
41
  "test:browser": "npm run build && npm run test:browser:build && node test/browser/test.js",
42
- "test:deno": "npm run build && deno run test/deno/local.test.ts && deno run test/deno/cdn.test.ts",
42
+ "test:bun": "npm run build && cd test/bun && bun install && bun run test",
43
+ "test:deno": "npm run build && deno run --allow-env --allow-read --allow-net test/deno/local.test.ts && deno run --allow-env --allow-read --allow-net test/deno/cdn.test.ts",
43
44
  "test:typings": "tsd test/typings",
44
45
  "test:esmimports": "node scripts/check-esm-imports.js",
45
46
  "test:esbuild": "esbuild --bundle --platform=node --external:pg-native dist/esm/index.js --outfile=/dev/null",
@@ -52,6 +53,7 @@
52
53
  "script:module-fixup": "node scripts/module-fixup.js",
53
54
  "script:copy-interface-doc": "node scripts/copy-interface-documentation.js",
54
55
  "script:add-deno-type-references": "node scripts/add-deno-type-references.js",
56
+ "script:align-site-version": "node scripts/align-site-version.js",
55
57
  "prepublishOnly": "npm run build"
56
58
  },
57
59
  "author": "Sami Koskimäki <sami@jakso.me>",
@@ -60,30 +62,30 @@
60
62
  "Igal Klebanov <igalklebanov@gmail.com>"
61
63
  ],
62
64
  "devDependencies": {
63
- "@types/better-sqlite3": "^7.5.0",
64
- "@types/chai": "^4.3.1",
65
+ "@types/better-sqlite3": "^7.6.4",
66
+ "@types/chai": "^4.3.5",
65
67
  "@types/chai-as-promised": "^7.1.5",
66
68
  "@types/chai-subset": "^1.3.3",
67
- "@types/mocha": "^9.1.1",
69
+ "@types/mocha": "^10.0.1",
68
70
  "@types/node": "^18.15.11",
69
- "@types/pg": "^8.6.5",
71
+ "@types/pg": "^8.10.2",
70
72
  "@types/pg-cursor": "^2.7.0",
71
- "@types/sinon": "^10.0.13",
72
- "better-sqlite3": "^7.5.3",
73
- "chai": "^4.3.6",
73
+ "@types/sinon": "^10.0.15",
74
+ "better-sqlite3": "^8.4.0",
75
+ "chai": "^4.3.7",
74
76
  "chai-as-promised": "^7.1.1",
75
77
  "chai-subset": "^1.6.0",
76
- "concurrently": "^7.6.0",
77
- "esbuild": "^0.14.47",
78
- "mocha": "^10.0.0",
79
- "mysql2": "^2.3.3",
80
- "pg": "^8.7.3",
81
- "pg-cursor": "^2.7.3",
82
- "playwright": "^1.22.2",
83
- "prettier": "^2.7.1",
84
- "sinon": "^14.0.0",
85
- "tsd": "^0.21.0",
86
- "typedoc": "^0.23.28",
87
- "typescript": "5.0.2"
78
+ "concurrently": "^8.1.0",
79
+ "esbuild": "^0.17.19",
80
+ "mocha": "^10.2.0",
81
+ "mysql2": "^3.3.3",
82
+ "pg": "^8.11.0",
83
+ "pg-cursor": "^2.10.0",
84
+ "playwright": "^1.34.3",
85
+ "prettier": "^2.8.8",
86
+ "sinon": "^15.1.0",
87
+ "tsd": "^0.28.1",
88
+ "typedoc": "^0.24.8",
89
+ "typescript": "^5.1.6"
88
90
  }
89
91
  }