kysely 0.27.5 → 0.28.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 (371) hide show
  1. package/CODE_OF_CONDUCT.md +183 -0
  2. package/FUNDING.md +25 -0
  3. package/README.md +182 -3
  4. package/deno.check.d.ts +7 -0
  5. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
  6. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
  7. package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
  8. package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
  9. package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
  10. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
  11. package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
  12. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
  13. package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
  14. package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
  15. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
  16. package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
  17. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +66 -44
  18. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  19. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
  20. package/dist/cjs/driver/database-connection.d.ts +0 -4
  21. package/dist/cjs/driver/driver.d.ts +17 -0
  22. package/dist/cjs/driver/driver.js +13 -1
  23. package/dist/cjs/driver/dummy-driver.d.ts +3 -0
  24. package/dist/cjs/driver/dummy-driver.js +9 -0
  25. package/dist/cjs/driver/runtime-driver.d.ts +4 -0
  26. package/dist/cjs/driver/runtime-driver.js +43 -3
  27. package/dist/cjs/expression/expression-builder.d.ts +9 -10
  28. package/dist/cjs/helpers/postgres.d.ts +48 -0
  29. package/dist/cjs/helpers/postgres.js +50 -0
  30. package/dist/cjs/index.d.ts +13 -2
  31. package/dist/cjs/index.js +13 -2
  32. package/dist/cjs/kysely.d.ts +339 -2
  33. package/dist/cjs/kysely.js +465 -11
  34. package/dist/cjs/migration/migrator.d.ts +16 -1
  35. package/dist/cjs/migration/migrator.js +14 -4
  36. package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
  37. package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
  38. package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
  39. package/dist/cjs/operation-node/collate-node.d.ts +13 -0
  40. package/dist/cjs/operation-node/collate-node.js +19 -0
  41. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  42. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  43. package/dist/cjs/operation-node/create-type-node.js +1 -1
  44. package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
  45. package/dist/cjs/operation-node/delete-query-node.js +11 -15
  46. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
  47. package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
  48. package/dist/cjs/operation-node/join-node.d.ts +1 -1
  49. package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
  50. package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
  51. package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
  52. package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
  53. package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
  54. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  55. package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
  56. package/dist/cjs/operation-node/or-action-node.js +18 -0
  57. package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
  58. package/dist/cjs/operation-node/order-by-item-node.js +6 -0
  59. package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
  60. package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
  61. package/dist/cjs/operation-node/query-node.d.ts +7 -0
  62. package/dist/cjs/operation-node/query-node.js +15 -0
  63. package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
  64. package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
  65. package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
  66. package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
  67. package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
  68. package/dist/cjs/operation-node/select-query-node.js +11 -15
  69. package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
  70. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  71. package/dist/cjs/operation-node/update-query-node.js +5 -2
  72. package/dist/cjs/parser/collate-parser.d.ts +1 -0
  73. package/dist/cjs/parser/collate-parser.js +2 -0
  74. package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
  75. package/dist/cjs/parser/delete-from-parser.js +2 -0
  76. package/dist/cjs/parser/insert-values-parser.js +3 -1
  77. package/dist/cjs/parser/join-parser.d.ts +1 -1
  78. package/dist/cjs/parser/join-parser.js +7 -1
  79. package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
  80. package/dist/cjs/parser/merge-into-parser.js +2 -0
  81. package/dist/cjs/parser/order-by-parser.d.ts +18 -5
  82. package/dist/cjs/parser/order-by-parser.js +24 -14
  83. package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
  84. package/dist/cjs/parser/savepoint-parser.js +11 -0
  85. package/dist/cjs/parser/select-from-parser.d.ts +4 -0
  86. package/dist/cjs/parser/select-from-parser.js +2 -0
  87. package/dist/cjs/parser/table-parser.d.ts +2 -5
  88. package/dist/cjs/parser/update-parser.d.ts +5 -0
  89. package/dist/cjs/parser/update-parser.js +2 -0
  90. package/dist/cjs/parser/update-set-parser.d.ts +7 -4
  91. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  92. package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
  93. package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
  94. package/dist/cjs/plugin/camel-case/camel-case.js +4 -1
  95. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  96. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
  97. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
  98. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
  99. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
  100. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
  101. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
  102. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
  103. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
  104. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
  105. package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
  106. package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
  107. package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
  108. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +8 -3
  109. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +45 -14
  110. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
  111. package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
  112. package/dist/cjs/query-builder/cte-builder.js +0 -2
  113. package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
  114. package/dist/cjs/query-builder/delete-query-builder.js +12 -78
  115. package/dist/cjs/query-builder/function-module.d.ts +31 -4
  116. package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
  117. package/dist/cjs/query-builder/insert-query-builder.js +197 -10
  118. package/dist/cjs/query-builder/join-builder.js +0 -2
  119. package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
  120. package/dist/cjs/query-builder/merge-query-builder.js +28 -7
  121. package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
  122. package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
  123. package/dist/cjs/query-builder/order-by-interface.js +2 -0
  124. package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
  125. package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
  126. package/dist/cjs/query-builder/over-builder.d.ts +43 -6
  127. package/dist/cjs/query-builder/over-builder.js +8 -25
  128. package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
  129. package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
  130. package/dist/cjs/query-builder/select-query-builder.js +26 -26
  131. package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
  132. package/dist/cjs/query-builder/update-query-builder.js +17 -15
  133. package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
  134. package/dist/cjs/query-compiler/compiled-query.js +2 -0
  135. package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
  136. package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
  137. package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
  138. package/dist/cjs/query-creator.d.ts +23 -25
  139. package/dist/cjs/query-creator.js +280 -8
  140. package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
  141. package/dist/cjs/query-executor/default-query-executor.js +2 -2
  142. package/dist/cjs/query-executor/query-executor-base.js +7 -25
  143. package/dist/cjs/raw-builder/raw-builder.js +0 -3
  144. package/dist/cjs/raw-builder/sql.d.ts +4 -4
  145. package/dist/cjs/raw-builder/sql.js +1 -1
  146. package/dist/cjs/schema/alter-column-builder.js +0 -3
  147. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
  148. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
  149. package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
  150. package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
  151. package/dist/cjs/schema/alter-table-builder.js +21 -10
  152. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
  153. package/dist/cjs/schema/alter-table-executor.js +0 -2
  154. package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
  155. package/dist/cjs/schema/check-constraint-builder.js +20 -0
  156. package/dist/cjs/schema/column-definition-builder.js +0 -2
  157. package/dist/cjs/schema/create-index-builder.js +1 -3
  158. package/dist/cjs/schema/create-schema-builder.js +0 -2
  159. package/dist/cjs/schema/create-table-builder.d.ts +5 -4
  160. package/dist/cjs/schema/create-table-builder.js +9 -7
  161. package/dist/cjs/schema/create-type-builder.d.ts +1 -1
  162. package/dist/cjs/schema/create-type-builder.js +0 -2
  163. package/dist/cjs/schema/create-view-builder.js +0 -2
  164. package/dist/cjs/schema/drop-index-builder.js +0 -2
  165. package/dist/cjs/schema/drop-schema-builder.js +0 -2
  166. package/dist/cjs/schema/drop-table-builder.js +0 -2
  167. package/dist/cjs/schema/drop-type-builder.js +0 -2
  168. package/dist/cjs/schema/drop-view-builder.js +0 -2
  169. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
  170. package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
  171. package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
  172. package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
  173. package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
  174. package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
  175. package/dist/cjs/schema/schema.d.ts +14 -0
  176. package/dist/cjs/schema/schema.js +21 -0
  177. package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
  178. package/dist/cjs/schema/unique-constraint-builder.js +26 -5
  179. package/dist/cjs/util/infer-result.d.ts +1 -1
  180. package/dist/cjs/util/log.d.ts +1 -0
  181. package/dist/cjs/util/log.js +3 -2
  182. package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
  183. package/dist/cjs/util/provide-controlled-connection.js +24 -0
  184. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
  185. package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
  186. package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
  187. package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
  188. package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
  189. package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
  190. package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
  191. package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
  192. package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
  193. package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
  194. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
  195. package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
  196. package/dist/esm/dialect/sqlite/sqlite-introspector.js +66 -44
  197. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  198. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
  199. package/dist/esm/driver/database-connection.d.ts +0 -4
  200. package/dist/esm/driver/driver.d.ts +17 -0
  201. package/dist/esm/driver/driver.js +11 -0
  202. package/dist/esm/driver/dummy-driver.d.ts +3 -0
  203. package/dist/esm/driver/dummy-driver.js +9 -0
  204. package/dist/esm/driver/runtime-driver.d.ts +4 -0
  205. package/dist/esm/driver/runtime-driver.js +43 -3
  206. package/dist/esm/expression/expression-builder.d.ts +9 -10
  207. package/dist/esm/helpers/postgres.d.ts +48 -0
  208. package/dist/esm/helpers/postgres.js +49 -0
  209. package/dist/esm/index.d.ts +13 -2
  210. package/dist/esm/index.js +11 -1
  211. package/dist/esm/kysely.d.ts +339 -2
  212. package/dist/esm/kysely.js +461 -10
  213. package/dist/esm/migration/migrator.d.ts +16 -1
  214. package/dist/esm/migration/migrator.js +14 -4
  215. package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
  216. package/dist/esm/operation-node/aggregate-function-node.js +4 -3
  217. package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
  218. package/dist/esm/operation-node/collate-node.d.ts +13 -0
  219. package/dist/esm/operation-node/collate-node.js +17 -0
  220. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  221. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  222. package/dist/esm/operation-node/create-type-node.js +1 -1
  223. package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
  224. package/dist/esm/operation-node/delete-query-node.js +11 -15
  225. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
  226. package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
  227. package/dist/esm/operation-node/join-node.d.ts +1 -1
  228. package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
  229. package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
  230. package/dist/esm/operation-node/operation-node-transformer.js +352 -312
  231. package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
  232. package/dist/esm/operation-node/operation-node-visitor.js +4 -0
  233. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  234. package/dist/esm/operation-node/or-action-node.d.ts +12 -0
  235. package/dist/esm/operation-node/or-action-node.js +16 -0
  236. package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
  237. package/dist/esm/operation-node/order-by-item-node.js +6 -0
  238. package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
  239. package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
  240. package/dist/esm/operation-node/query-node.d.ts +7 -0
  241. package/dist/esm/operation-node/query-node.js +15 -0
  242. package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
  243. package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
  244. package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
  245. package/dist/esm/operation-node/rename-constraint-node.js +18 -0
  246. package/dist/esm/operation-node/select-query-node.d.ts +8 -2
  247. package/dist/esm/operation-node/select-query-node.js +11 -15
  248. package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
  249. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  250. package/dist/esm/operation-node/update-query-node.js +5 -2
  251. package/dist/esm/parser/collate-parser.d.ts +1 -0
  252. package/dist/esm/parser/collate-parser.js +2 -0
  253. package/dist/esm/parser/delete-from-parser.d.ts +5 -0
  254. package/dist/esm/parser/delete-from-parser.js +2 -0
  255. package/dist/esm/parser/insert-values-parser.js +3 -1
  256. package/dist/esm/parser/join-parser.d.ts +1 -1
  257. package/dist/esm/parser/join-parser.js +7 -1
  258. package/dist/esm/parser/merge-into-parser.d.ts +5 -0
  259. package/dist/esm/parser/merge-into-parser.js +2 -0
  260. package/dist/esm/parser/order-by-parser.d.ts +18 -5
  261. package/dist/esm/parser/order-by-parser.js +27 -17
  262. package/dist/esm/parser/savepoint-parser.d.ts +4 -0
  263. package/dist/esm/parser/savepoint-parser.js +9 -0
  264. package/dist/esm/parser/select-from-parser.d.ts +4 -0
  265. package/dist/esm/parser/select-from-parser.js +2 -0
  266. package/dist/esm/parser/table-parser.d.ts +2 -5
  267. package/dist/esm/parser/update-parser.d.ts +5 -0
  268. package/dist/esm/parser/update-parser.js +2 -0
  269. package/dist/esm/parser/update-set-parser.d.ts +7 -4
  270. package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
  271. package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
  272. package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
  273. package/dist/esm/plugin/camel-case/camel-case.js +4 -1
  274. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  275. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
  276. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
  277. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
  278. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
  279. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
  280. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
  281. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
  282. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
  283. package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
  284. package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
  285. package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
  286. package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
  287. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +8 -3
  288. package/dist/esm/plugin/with-schema/with-schema-transformer.js +45 -14
  289. package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
  290. package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
  291. package/dist/esm/query-builder/cte-builder.js +0 -2
  292. package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
  293. package/dist/esm/query-builder/delete-query-builder.js +12 -78
  294. package/dist/esm/query-builder/function-module.d.ts +31 -4
  295. package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
  296. package/dist/esm/query-builder/insert-query-builder.js +197 -10
  297. package/dist/esm/query-builder/join-builder.js +0 -2
  298. package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
  299. package/dist/esm/query-builder/merge-query-builder.js +29 -8
  300. package/dist/esm/query-builder/on-conflict-builder.js +0 -4
  301. package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
  302. package/dist/esm/query-builder/order-by-interface.js +2 -0
  303. package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
  304. package/dist/esm/query-builder/order-by-item-builder.js +72 -0
  305. package/dist/esm/query-builder/over-builder.d.ts +43 -6
  306. package/dist/esm/query-builder/over-builder.js +8 -25
  307. package/dist/esm/query-builder/returning-interface.d.ts +20 -3
  308. package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
  309. package/dist/esm/query-builder/select-query-builder.js +26 -26
  310. package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
  311. package/dist/esm/query-builder/update-query-builder.js +17 -15
  312. package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
  313. package/dist/esm/query-compiler/compiled-query.js +2 -0
  314. package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
  315. package/dist/esm/query-compiler/default-query-compiler.js +97 -2
  316. package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
  317. package/dist/esm/query-creator.d.ts +23 -25
  318. package/dist/esm/query-creator.js +281 -9
  319. package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
  320. package/dist/esm/query-executor/default-query-executor.js +2 -2
  321. package/dist/esm/query-executor/query-executor-base.js +7 -25
  322. package/dist/esm/raw-builder/raw-builder.js +0 -3
  323. package/dist/esm/raw-builder/sql.d.ts +4 -4
  324. package/dist/esm/raw-builder/sql.js +1 -1
  325. package/dist/esm/schema/alter-column-builder.js +0 -3
  326. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
  327. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
  328. package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
  329. package/dist/esm/schema/alter-table-builder.d.ts +7 -3
  330. package/dist/esm/schema/alter-table-builder.js +22 -11
  331. package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
  332. package/dist/esm/schema/alter-table-executor.js +0 -2
  333. package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
  334. package/dist/esm/schema/check-constraint-builder.js +17 -0
  335. package/dist/esm/schema/column-definition-builder.js +0 -2
  336. package/dist/esm/schema/create-index-builder.js +1 -3
  337. package/dist/esm/schema/create-schema-builder.js +0 -2
  338. package/dist/esm/schema/create-table-builder.d.ts +5 -4
  339. package/dist/esm/schema/create-table-builder.js +10 -8
  340. package/dist/esm/schema/create-type-builder.d.ts +1 -1
  341. package/dist/esm/schema/create-type-builder.js +0 -2
  342. package/dist/esm/schema/create-view-builder.js +0 -2
  343. package/dist/esm/schema/drop-index-builder.js +0 -2
  344. package/dist/esm/schema/drop-schema-builder.js +0 -2
  345. package/dist/esm/schema/drop-table-builder.js +0 -2
  346. package/dist/esm/schema/drop-type-builder.js +0 -2
  347. package/dist/esm/schema/drop-view-builder.js +0 -2
  348. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
  349. package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
  350. package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
  351. package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
  352. package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
  353. package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
  354. package/dist/esm/schema/schema.d.ts +14 -0
  355. package/dist/esm/schema/schema.js +21 -0
  356. package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
  357. package/dist/esm/schema/unique-constraint-builder.js +26 -5
  358. package/dist/esm/util/infer-result.d.ts +1 -1
  359. package/dist/esm/util/log.d.ts +1 -0
  360. package/dist/esm/util/log.js +3 -2
  361. package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
  362. package/dist/esm/util/provide-controlled-connection.js +22 -0
  363. package/outdated-typescript.d.ts +5 -0
  364. package/package.json +16 -2
  365. package/CONTRIBUTING.md +0 -70
  366. package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
  367. package/dist/cjs/util/prevent-await.d.ts +0 -1
  368. package/dist/cjs/util/prevent-await.js +0 -13
  369. package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
  370. package/dist/esm/util/prevent-await.d.ts +0 -1
  371. package/dist/esm/util/prevent-await.js +0 -11
@@ -5,7 +5,7 @@ import { QueryExecutor } from './query-executor/query-executor.js';
5
5
  import { QueryCreator } from './query-creator.js';
6
6
  import { KyselyPlugin } from './plugin/kysely-plugin.js';
7
7
  import { DatabaseIntrospector } from './dialect/database-introspector.js';
8
- import { Driver, IsolationLevel } from './driver/driver.js';
8
+ import { Driver, IsolationLevel, AccessMode } from './driver/driver.js';
9
9
  import { FunctionModule } from './query-builder/function-module.js';
10
10
  import { LogConfig } from './util/log.js';
11
11
  import { QueryExecutorProvider } from './query-executor/query-executor-provider.js';
@@ -16,6 +16,8 @@ import { Compilable } from './util/compilable.js';
16
16
  import { CaseBuilder } from './query-builder/case-builder.js';
17
17
  import { Expression } from './expression/expression.js';
18
18
  import { DrainOuterGeneric } from './util/type-utils.js';
19
+ import { ReleaseSavepoint, RollbackToSavepoint } from './parser/savepoint-parser.js';
20
+ import { ControlledConnection } from './util/provide-controlled-connection.js';
19
21
  /**
20
22
  * The main Kysely class.
21
23
  *
@@ -49,7 +51,7 @@ import { DrainOuterGeneric } from './util/type-utils.js';
49
51
  * in the database and values must be interfaces that describe the rows in those
50
52
  * tables. See the examples above.
51
53
  */
52
- export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecutorProvider {
54
+ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecutorProvider, AsyncDisposable {
53
55
  #private;
54
56
  constructor(args: KyselyConfig);
55
57
  constructor(args: KyselyProps);
@@ -141,6 +143,9 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
141
143
  * of type {@link Transaction} which inherits {@link Kysely}. Any query
142
144
  * started through the transaction object is executed inside the transaction.
143
145
  *
146
+ * To run a controlled transaction, allowing you to commit and rollback manually,
147
+ * use {@link startTransaction} instead.
148
+ *
144
149
  * ### Examples
145
150
  *
146
151
  * <!-- siteExample("transactions", "Simple transaction", 10) -->
@@ -193,6 +198,118 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
193
198
  * ```
194
199
  */
195
200
  transaction(): TransactionBuilder<DB>;
201
+ /**
202
+ * Creates a {@link ControlledTransactionBuilder} that can be used to run queries inside a controlled transaction.
203
+ *
204
+ * The returned {@link ControlledTransactionBuilder} can be used to configure the transaction.
205
+ * The {@link ControlledTransactionBuilder.execute} method can then be called
206
+ * to start the transaction and return a {@link ControlledTransaction}.
207
+ *
208
+ * A {@link ControlledTransaction} allows you to commit and rollback manually,
209
+ * execute savepoint commands. It extends {@link Transaction} which extends {@link Kysely},
210
+ * so you can run queries inside the transaction. Once the transaction is committed,
211
+ * or rolled back, it can't be used anymore - all queries will throw an error.
212
+ * This is to prevent accidentally running queries outside the transaction - where
213
+ * atomicity is not guaranteed anymore.
214
+ *
215
+ * ### Examples
216
+ *
217
+ * <!-- siteExample("transactions", "Controlled transaction", 11) -->
218
+ *
219
+ * A controlled transaction allows you to commit and rollback manually, execute
220
+ * savepoint commands, and queries in general.
221
+ *
222
+ * In this example we start a transaction, use it to insert two rows and then commit
223
+ * the transaction. If an error is thrown, we catch it and rollback the transaction.
224
+ *
225
+ * ```ts
226
+ * const trx = await db.startTransaction().execute()
227
+ *
228
+ * try {
229
+ * const jennifer = await trx.insertInto('person')
230
+ * .values({
231
+ * first_name: 'Jennifer',
232
+ * last_name: 'Aniston',
233
+ * age: 40,
234
+ * })
235
+ * .returning('id')
236
+ * .executeTakeFirstOrThrow()
237
+ *
238
+ * const catto = await trx.insertInto('pet')
239
+ * .values({
240
+ * owner_id: jennifer.id,
241
+ * name: 'Catto',
242
+ * species: 'cat',
243
+ * is_favorite: false,
244
+ * })
245
+ * .returningAll()
246
+ * .executeTakeFirstOrThrow()
247
+ *
248
+ * await trx.commit().execute()
249
+ *
250
+ * // ...
251
+ * } catch (error) {
252
+ * await trx.rollback().execute()
253
+ * }
254
+ * ```
255
+ *
256
+ * <!-- siteExample("transactions", "Controlled transaction /w savepoints", 12) -->
257
+ *
258
+ * A controlled transaction allows you to commit and rollback manually, execute
259
+ * savepoint commands, and queries in general.
260
+ *
261
+ * In this example we start a transaction, insert a person, create a savepoint,
262
+ * try inserting a toy and a pet, and if an error is thrown, we rollback to the
263
+ * savepoint. Eventually we release the savepoint, insert an audit record and
264
+ * commit the transaction. If an error is thrown, we catch it and rollback the
265
+ * transaction.
266
+ *
267
+ * ```ts
268
+ * const trx = await db.startTransaction().execute()
269
+ *
270
+ * try {
271
+ * const jennifer = await trx
272
+ * .insertInto('person')
273
+ * .values({
274
+ * first_name: 'Jennifer',
275
+ * last_name: 'Aniston',
276
+ * age: 40,
277
+ * })
278
+ * .returning('id')
279
+ * .executeTakeFirstOrThrow()
280
+ *
281
+ * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()
282
+ *
283
+ * try {
284
+ * const catto = await trxAfterJennifer
285
+ * .insertInto('pet')
286
+ * .values({
287
+ * owner_id: jennifer.id,
288
+ * name: 'Catto',
289
+ * species: 'cat',
290
+ * })
291
+ * .returning('id')
292
+ * .executeTakeFirstOrThrow()
293
+ *
294
+ * await trxAfterJennifer
295
+ * .insertInto('toy')
296
+ * .values({ name: 'Bone', price: 1.99, pet_id: catto.id })
297
+ * .execute()
298
+ * } catch (error) {
299
+ * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()
300
+ * }
301
+ *
302
+ * await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()
303
+ *
304
+ * await trx.insertInto('audit').values({ action: 'added Jennifer' }).execute()
305
+ *
306
+ * await trx.commit().execute()
307
+ * } catch (error) {
308
+ * await trx.rollback().execute()
309
+ * }
310
+ * ```
311
+ */
312
+ startTransaction(): ControlledTransactionBuilder<DB>;
196
313
  /**
197
314
  * Provides a kysely instance bound to a single database connection.
198
315
  *
@@ -280,6 +397,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
280
397
  * See {@link https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0004-splitting-query-building-and-execution.md#execute-compiled-queries splitting build, compile and execute code recipe} for more information.
281
398
  */
282
399
  executeQuery<R>(query: CompiledQuery<R> | Compilable<R>, queryId?: QueryId): Promise<QueryResult<R>>;
400
+ [Symbol.asyncDispose](): Promise<void>;
283
401
  }
284
402
  export declare class Transaction<DB> extends Kysely<DB> {
285
403
  #private;
@@ -307,6 +425,9 @@ export declare class Transaction<DB> extends Kysely<DB> {
307
425
  * of type {@link Transaction} which inherits {@link Kysely}. Any query
308
426
  * started through the transaction object is executed inside the transaction.
309
427
  *
428
+ * To run a controlled transaction, allowing you to commit and rollback manually,
429
+ * use {@link startTransaction} instead.
430
+ *
310
431
  * ### Examples
311
432
  *
312
433
  * <!-- siteExample("transactions", "Simple transaction", 10) -->
@@ -495,10 +616,226 @@ interface ConnectionBuilderProps extends KyselyProps {
495
616
  export declare class TransactionBuilder<DB> {
496
617
  #private;
497
618
  constructor(props: TransactionBuilderProps);
619
+ setAccessMode(accessMode: AccessMode): TransactionBuilder<DB>;
498
620
  setIsolationLevel(isolationLevel: IsolationLevel): TransactionBuilder<DB>;
499
621
  execute<T>(callback: (trx: Transaction<DB>) => Promise<T>): Promise<T>;
500
622
  }
501
623
  interface TransactionBuilderProps extends KyselyProps {
624
+ readonly accessMode?: AccessMode;
502
625
  readonly isolationLevel?: IsolationLevel;
503
626
  }
627
+ export declare class ControlledTransactionBuilder<DB> {
628
+ #private;
629
+ constructor(props: TransactionBuilderProps);
630
+ setAccessMode(accessMode: AccessMode): ControlledTransactionBuilder<DB>;
631
+ setIsolationLevel(isolationLevel: IsolationLevel): ControlledTransactionBuilder<DB>;
632
+ execute(): Promise<ControlledTransaction<DB>>;
633
+ }
634
+ export declare class ControlledTransaction<DB, S extends string[] = []> extends Transaction<DB> {
635
+ #private;
636
+ constructor(props: ControlledTransactionProps);
637
+ get isCommitted(): boolean;
638
+ get isRolledBack(): boolean;
639
+ /**
640
+ * Commits the transaction.
641
+ *
642
+ * See {@link rollback}.
643
+ *
644
+ * ### Examples
645
+ *
646
+ * ```ts
647
+ * import type { Kysely } from 'kysely'
648
+ * import type { Database } from 'type-editor' // imaginary module
649
+ *
650
+ * const trx = await db.startTransaction().execute()
651
+ *
652
+ * try {
653
+ * await doSomething(trx)
654
+ *
655
+ * await trx.commit().execute()
656
+ * } catch (error) {
657
+ * await trx.rollback().execute()
658
+ * }
659
+ *
660
+ * async function doSomething(kysely: Kysely<Database>) {}
661
+ * ```
662
+ */
663
+ commit(): Command<void>;
664
+ /**
665
+ * Rolls back the transaction.
666
+ *
667
+ * See {@link commit} and {@link rollbackToSavepoint}.
668
+ *
669
+ * ### Examples
670
+ *
671
+ * ```ts
672
+ * import type { Kysely } from 'kysely'
673
+ * import type { Database } from 'type-editor' // imaginary module
674
+ *
675
+ * const trx = await db.startTransaction().execute()
676
+ *
677
+ * try {
678
+ * await doSomething(trx)
679
+ *
680
+ * await trx.commit().execute()
681
+ * } catch (error) {
682
+ * await trx.rollback().execute()
683
+ * }
684
+ *
685
+ * async function doSomething(kysely: Kysely<Database>) {}
686
+ * ```
687
+ */
688
+ rollback(): Command<void>;
689
+ /**
690
+ * Creates a savepoint with a given name.
691
+ *
692
+ * See {@link rollbackToSavepoint} and {@link releaseSavepoint}.
693
+ *
694
+ * For a type-safe experience, you should use the returned instance from now on.
695
+ *
696
+ * ### Examples
697
+ *
698
+ * ```ts
699
+ * import type { Kysely } from 'kysely'
700
+ * import type { Database } from 'type-editor' // imaginary module
701
+ *
702
+ * const trx = await db.startTransaction().execute()
703
+ *
704
+ * await insertJennifer(trx)
705
+ *
706
+ * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()
707
+ *
708
+ * try {
709
+ * await doSomething(trxAfterJennifer)
710
+ * } catch (error) {
711
+ * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()
712
+ * }
713
+ *
714
+ * async function insertJennifer(kysely: Kysely<Database>) {}
715
+ * async function doSomething(kysely: Kysely<Database>) {}
716
+ * ```
717
+ */
718
+ savepoint<SN extends string>(savepointName: SN extends S ? never : SN): Command<ControlledTransaction<DB, [...S, SN]>>;
719
+ /**
720
+ * Rolls back to a savepoint with a given name.
721
+ *
722
+ * See {@link savepoint} and {@link releaseSavepoint}.
723
+ *
724
+ * You must use the same instance returned by {@link savepoint}, or
725
+ * escape the type-check by using `as any`.
726
+ *
727
+ * ### Examples
728
+ *
729
+ * ```ts
730
+ * import type { Kysely } from 'kysely'
731
+ * import type { Database } from 'type-editor' // imaginary module
732
+ *
733
+ * const trx = await db.startTransaction().execute()
734
+ *
735
+ * await insertJennifer(trx)
736
+ *
737
+ * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()
738
+ *
739
+ * try {
740
+ * await doSomething(trxAfterJennifer)
741
+ * } catch (error) {
742
+ * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()
743
+ * }
744
+ *
745
+ * async function insertJennifer(kysely: Kysely<Database>) {}
746
+ * async function doSomething(kysely: Kysely<Database>) {}
747
+ * ```
748
+ */
749
+ rollbackToSavepoint<SN extends S[number]>(savepointName: SN): RollbackToSavepoint<S, SN> extends string[] ? Command<ControlledTransaction<DB, RollbackToSavepoint<S, SN>>> : never;
750
+ /**
751
+ * Releases a savepoint with a given name.
752
+ *
753
+ * See {@link savepoint} and {@link rollbackToSavepoint}.
754
+ *
755
+ * You must use the same instance returned by {@link savepoint}, or
756
+ * escape the type-check by using `as any`.
757
+ *
758
+ * ### Examples
759
+ *
760
+ * ```ts
761
+ * import type { Kysely } from 'kysely'
762
+ * import type { Database } from 'type-editor' // imaginary module
763
+ *
764
+ * const trx = await db.startTransaction().execute()
765
+ *
766
+ * await insertJennifer(trx)
767
+ *
768
+ * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()
769
+ *
770
+ * try {
771
+ * await doSomething(trxAfterJennifer)
772
+ * } catch (error) {
773
+ * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()
774
+ * }
775
+ *
776
+ * await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()
777
+ *
778
+ * await doSomethingElse(trx)
779
+ *
780
+ * async function insertJennifer(kysely: Kysely<Database>) {}
781
+ * async function doSomething(kysely: Kysely<Database>) {}
782
+ * async function doSomethingElse(kysely: Kysely<Database>) {}
783
+ * ```
784
+ */
785
+ releaseSavepoint<SN extends S[number]>(savepointName: SN): ReleaseSavepoint<S, SN> extends string[] ? Command<ControlledTransaction<DB, ReleaseSavepoint<S, SN>>> : never;
786
+ /**
787
+ * Returns a copy of this Kysely instance with the given plugin installed.
788
+ */
789
+ withPlugin(plugin: KyselyPlugin): ControlledTransaction<DB, S>;
790
+ /**
791
+ * Returns a copy of this Kysely instance without any plugins.
792
+ */
793
+ withoutPlugins(): ControlledTransaction<DB, S>;
794
+ /**
795
+ * @override
796
+ */
797
+ withSchema(schema: string): ControlledTransaction<DB, S>;
798
+ /**
799
+ * Returns a copy of this Kysely instance with tables added to its
800
+ * database type.
801
+ *
802
+ * This method only modifies the types and doesn't affect any of the
803
+ * executed queries in any way.
804
+ *
805
+ * ### Examples
806
+ *
807
+ * The following example adds and uses a temporary table:
808
+ *
809
+ * ```ts
810
+ * await db.schema
811
+ * .createTable('temp_table')
812
+ * .temporary()
813
+ * .addColumn('some_column', 'integer')
814
+ * .execute()
815
+ *
816
+ * const tempDb = db.withTables<{
817
+ * temp_table: {
818
+ * some_column: number
819
+ * }
820
+ * }>()
821
+ *
822
+ * await tempDb
823
+ * .insertInto('temp_table')
824
+ * .values({ some_column: 100 })
825
+ * .execute()
826
+ * ```
827
+ */
828
+ withTables<T extends Record<string, Record<string, any>>>(): ControlledTransaction<DrainOuterGeneric<DB & T>, S>;
829
+ }
830
+ interface ControlledTransactionProps extends KyselyProps {
831
+ readonly connection: ControlledConnection;
832
+ }
833
+ export declare class Command<T> {
834
+ #private;
835
+ constructor(cb: () => Promise<T>);
836
+ /**
837
+ * Executes the command.
838
+ */
839
+ execute(): Promise<T>;
840
+ }
504
841
  export {};