kysely 0.27.6 → 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 (363) hide show
  1. package/README.md +169 -1
  2. package/deno.check.d.ts +7 -0
  3. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
  4. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
  5. package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
  6. package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
  7. package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
  8. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
  9. package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
  10. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
  11. package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
  12. package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
  13. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
  14. package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
  15. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  16. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
  17. package/dist/cjs/driver/database-connection.d.ts +0 -4
  18. package/dist/cjs/driver/driver.d.ts +17 -0
  19. package/dist/cjs/driver/driver.js +13 -1
  20. package/dist/cjs/driver/dummy-driver.d.ts +3 -0
  21. package/dist/cjs/driver/dummy-driver.js +9 -0
  22. package/dist/cjs/driver/runtime-driver.d.ts +4 -0
  23. package/dist/cjs/driver/runtime-driver.js +43 -3
  24. package/dist/cjs/expression/expression-builder.d.ts +7 -10
  25. package/dist/cjs/helpers/postgres.d.ts +48 -0
  26. package/dist/cjs/helpers/postgres.js +50 -0
  27. package/dist/cjs/index.d.ts +13 -2
  28. package/dist/cjs/index.js +13 -2
  29. package/dist/cjs/kysely.d.ts +339 -2
  30. package/dist/cjs/kysely.js +465 -11
  31. package/dist/cjs/migration/migrator.d.ts +8 -0
  32. package/dist/cjs/migration/migrator.js +1 -1
  33. package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
  34. package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
  35. package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
  36. package/dist/cjs/operation-node/collate-node.d.ts +13 -0
  37. package/dist/cjs/operation-node/collate-node.js +19 -0
  38. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  40. package/dist/cjs/operation-node/create-type-node.js +1 -1
  41. package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
  42. package/dist/cjs/operation-node/delete-query-node.js +11 -15
  43. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
  44. package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
  45. package/dist/cjs/operation-node/join-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
  47. package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
  48. package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
  49. package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
  50. package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
  51. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
  53. package/dist/cjs/operation-node/or-action-node.js +18 -0
  54. package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
  55. package/dist/cjs/operation-node/order-by-item-node.js +6 -0
  56. package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
  57. package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
  58. package/dist/cjs/operation-node/query-node.d.ts +7 -0
  59. package/dist/cjs/operation-node/query-node.js +15 -0
  60. package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
  61. package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
  62. package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
  63. package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
  64. package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
  65. package/dist/cjs/operation-node/select-query-node.js +11 -15
  66. package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
  67. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  68. package/dist/cjs/operation-node/update-query-node.js +5 -2
  69. package/dist/cjs/parser/collate-parser.d.ts +1 -0
  70. package/dist/cjs/parser/collate-parser.js +2 -0
  71. package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
  72. package/dist/cjs/parser/delete-from-parser.js +2 -0
  73. package/dist/cjs/parser/join-parser.d.ts +1 -1
  74. package/dist/cjs/parser/join-parser.js +7 -1
  75. package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
  76. package/dist/cjs/parser/merge-into-parser.js +2 -0
  77. package/dist/cjs/parser/order-by-parser.d.ts +18 -5
  78. package/dist/cjs/parser/order-by-parser.js +24 -14
  79. package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
  80. package/dist/cjs/parser/savepoint-parser.js +11 -0
  81. package/dist/cjs/parser/select-from-parser.d.ts +4 -0
  82. package/dist/cjs/parser/select-from-parser.js +2 -0
  83. package/dist/cjs/parser/table-parser.d.ts +2 -5
  84. package/dist/cjs/parser/update-parser.d.ts +5 -0
  85. package/dist/cjs/parser/update-parser.js +2 -0
  86. package/dist/cjs/parser/update-set-parser.d.ts +7 -4
  87. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  88. package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
  89. package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
  90. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  91. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
  92. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
  93. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
  94. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
  95. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
  96. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
  97. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
  98. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
  99. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
  100. package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
  101. package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
  102. package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
  103. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +6 -5
  104. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +29 -24
  105. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
  106. package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
  107. package/dist/cjs/query-builder/cte-builder.js +0 -2
  108. package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
  109. package/dist/cjs/query-builder/delete-query-builder.js +12 -78
  110. package/dist/cjs/query-builder/function-module.d.ts +31 -4
  111. package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
  112. package/dist/cjs/query-builder/insert-query-builder.js +197 -10
  113. package/dist/cjs/query-builder/join-builder.js +0 -2
  114. package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
  115. package/dist/cjs/query-builder/merge-query-builder.js +28 -7
  116. package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
  117. package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
  118. package/dist/cjs/query-builder/order-by-interface.js +2 -0
  119. package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
  120. package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
  121. package/dist/cjs/query-builder/over-builder.d.ts +43 -6
  122. package/dist/cjs/query-builder/over-builder.js +8 -25
  123. package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
  124. package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
  125. package/dist/cjs/query-builder/select-query-builder.js +26 -26
  126. package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
  127. package/dist/cjs/query-builder/update-query-builder.js +17 -15
  128. package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
  129. package/dist/cjs/query-compiler/compiled-query.js +2 -0
  130. package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
  131. package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
  132. package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
  133. package/dist/cjs/query-creator.d.ts +23 -25
  134. package/dist/cjs/query-creator.js +280 -8
  135. package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
  136. package/dist/cjs/query-executor/default-query-executor.js +2 -2
  137. package/dist/cjs/query-executor/query-executor-base.js +7 -25
  138. package/dist/cjs/raw-builder/raw-builder.js +0 -3
  139. package/dist/cjs/raw-builder/sql.d.ts +3 -3
  140. package/dist/cjs/raw-builder/sql.js +1 -1
  141. package/dist/cjs/schema/alter-column-builder.js +0 -3
  142. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
  143. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
  144. package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
  145. package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
  146. package/dist/cjs/schema/alter-table-builder.js +21 -10
  147. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
  148. package/dist/cjs/schema/alter-table-executor.js +0 -2
  149. package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
  150. package/dist/cjs/schema/check-constraint-builder.js +20 -0
  151. package/dist/cjs/schema/column-definition-builder.js +0 -2
  152. package/dist/cjs/schema/create-index-builder.js +1 -3
  153. package/dist/cjs/schema/create-schema-builder.js +0 -2
  154. package/dist/cjs/schema/create-table-builder.d.ts +5 -4
  155. package/dist/cjs/schema/create-table-builder.js +9 -7
  156. package/dist/cjs/schema/create-type-builder.d.ts +1 -1
  157. package/dist/cjs/schema/create-type-builder.js +0 -2
  158. package/dist/cjs/schema/create-view-builder.js +0 -2
  159. package/dist/cjs/schema/drop-index-builder.js +0 -2
  160. package/dist/cjs/schema/drop-schema-builder.js +0 -2
  161. package/dist/cjs/schema/drop-table-builder.js +0 -2
  162. package/dist/cjs/schema/drop-type-builder.js +0 -2
  163. package/dist/cjs/schema/drop-view-builder.js +0 -2
  164. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
  165. package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
  166. package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
  167. package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
  168. package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
  169. package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
  170. package/dist/cjs/schema/schema.d.ts +14 -0
  171. package/dist/cjs/schema/schema.js +21 -0
  172. package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
  173. package/dist/cjs/schema/unique-constraint-builder.js +26 -5
  174. package/dist/cjs/util/infer-result.d.ts +1 -1
  175. package/dist/cjs/util/log.d.ts +1 -0
  176. package/dist/cjs/util/log.js +3 -2
  177. package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
  178. package/dist/cjs/util/provide-controlled-connection.js +24 -0
  179. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
  180. package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
  181. package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
  182. package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
  183. package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
  184. package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
  185. package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
  186. package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
  187. package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
  188. package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
  189. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
  190. package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
  191. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  192. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
  193. package/dist/esm/driver/database-connection.d.ts +0 -4
  194. package/dist/esm/driver/driver.d.ts +17 -0
  195. package/dist/esm/driver/driver.js +11 -0
  196. package/dist/esm/driver/dummy-driver.d.ts +3 -0
  197. package/dist/esm/driver/dummy-driver.js +9 -0
  198. package/dist/esm/driver/runtime-driver.d.ts +4 -0
  199. package/dist/esm/driver/runtime-driver.js +43 -3
  200. package/dist/esm/expression/expression-builder.d.ts +7 -10
  201. package/dist/esm/helpers/postgres.d.ts +48 -0
  202. package/dist/esm/helpers/postgres.js +49 -0
  203. package/dist/esm/index.d.ts +13 -2
  204. package/dist/esm/index.js +11 -1
  205. package/dist/esm/kysely.d.ts +339 -2
  206. package/dist/esm/kysely.js +461 -10
  207. package/dist/esm/migration/migrator.d.ts +8 -0
  208. package/dist/esm/migration/migrator.js +1 -1
  209. package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
  210. package/dist/esm/operation-node/aggregate-function-node.js +4 -3
  211. package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
  212. package/dist/esm/operation-node/collate-node.d.ts +13 -0
  213. package/dist/esm/operation-node/collate-node.js +17 -0
  214. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  215. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  216. package/dist/esm/operation-node/create-type-node.js +1 -1
  217. package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
  218. package/dist/esm/operation-node/delete-query-node.js +11 -15
  219. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
  220. package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
  221. package/dist/esm/operation-node/join-node.d.ts +1 -1
  222. package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
  223. package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
  224. package/dist/esm/operation-node/operation-node-transformer.js +352 -312
  225. package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
  226. package/dist/esm/operation-node/operation-node-visitor.js +4 -0
  227. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  228. package/dist/esm/operation-node/or-action-node.d.ts +12 -0
  229. package/dist/esm/operation-node/or-action-node.js +16 -0
  230. package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
  231. package/dist/esm/operation-node/order-by-item-node.js +6 -0
  232. package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
  233. package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
  234. package/dist/esm/operation-node/query-node.d.ts +7 -0
  235. package/dist/esm/operation-node/query-node.js +15 -0
  236. package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
  237. package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
  238. package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
  239. package/dist/esm/operation-node/rename-constraint-node.js +18 -0
  240. package/dist/esm/operation-node/select-query-node.d.ts +8 -2
  241. package/dist/esm/operation-node/select-query-node.js +11 -15
  242. package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
  243. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  244. package/dist/esm/operation-node/update-query-node.js +5 -2
  245. package/dist/esm/parser/collate-parser.d.ts +1 -0
  246. package/dist/esm/parser/collate-parser.js +2 -0
  247. package/dist/esm/parser/delete-from-parser.d.ts +5 -0
  248. package/dist/esm/parser/delete-from-parser.js +2 -0
  249. package/dist/esm/parser/join-parser.d.ts +1 -1
  250. package/dist/esm/parser/join-parser.js +7 -1
  251. package/dist/esm/parser/merge-into-parser.d.ts +5 -0
  252. package/dist/esm/parser/merge-into-parser.js +2 -0
  253. package/dist/esm/parser/order-by-parser.d.ts +18 -5
  254. package/dist/esm/parser/order-by-parser.js +27 -17
  255. package/dist/esm/parser/savepoint-parser.d.ts +4 -0
  256. package/dist/esm/parser/savepoint-parser.js +9 -0
  257. package/dist/esm/parser/select-from-parser.d.ts +4 -0
  258. package/dist/esm/parser/select-from-parser.js +2 -0
  259. package/dist/esm/parser/table-parser.d.ts +2 -5
  260. package/dist/esm/parser/update-parser.d.ts +5 -0
  261. package/dist/esm/parser/update-parser.js +2 -0
  262. package/dist/esm/parser/update-set-parser.d.ts +7 -4
  263. package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
  264. package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
  265. package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
  266. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  267. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
  268. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
  269. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
  270. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
  271. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
  272. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
  273. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
  274. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
  275. package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
  276. package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
  277. package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
  278. package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
  279. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +6 -5
  280. package/dist/esm/plugin/with-schema/with-schema-transformer.js +29 -24
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
  282. package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
  283. package/dist/esm/query-builder/cte-builder.js +0 -2
  284. package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
  285. package/dist/esm/query-builder/delete-query-builder.js +12 -78
  286. package/dist/esm/query-builder/function-module.d.ts +31 -4
  287. package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
  288. package/dist/esm/query-builder/insert-query-builder.js +197 -10
  289. package/dist/esm/query-builder/join-builder.js +0 -2
  290. package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
  291. package/dist/esm/query-builder/merge-query-builder.js +29 -8
  292. package/dist/esm/query-builder/on-conflict-builder.js +0 -4
  293. package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
  294. package/dist/esm/query-builder/order-by-interface.js +2 -0
  295. package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
  296. package/dist/esm/query-builder/order-by-item-builder.js +72 -0
  297. package/dist/esm/query-builder/over-builder.d.ts +43 -6
  298. package/dist/esm/query-builder/over-builder.js +8 -25
  299. package/dist/esm/query-builder/returning-interface.d.ts +20 -3
  300. package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
  301. package/dist/esm/query-builder/select-query-builder.js +26 -26
  302. package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
  303. package/dist/esm/query-builder/update-query-builder.js +17 -15
  304. package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
  305. package/dist/esm/query-compiler/compiled-query.js +2 -0
  306. package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
  307. package/dist/esm/query-compiler/default-query-compiler.js +97 -2
  308. package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
  309. package/dist/esm/query-creator.d.ts +23 -25
  310. package/dist/esm/query-creator.js +281 -9
  311. package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
  312. package/dist/esm/query-executor/default-query-executor.js +2 -2
  313. package/dist/esm/query-executor/query-executor-base.js +7 -25
  314. package/dist/esm/raw-builder/raw-builder.js +0 -3
  315. package/dist/esm/raw-builder/sql.d.ts +3 -3
  316. package/dist/esm/raw-builder/sql.js +1 -1
  317. package/dist/esm/schema/alter-column-builder.js +0 -3
  318. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
  319. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
  320. package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
  321. package/dist/esm/schema/alter-table-builder.d.ts +7 -3
  322. package/dist/esm/schema/alter-table-builder.js +22 -11
  323. package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
  324. package/dist/esm/schema/alter-table-executor.js +0 -2
  325. package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
  326. package/dist/esm/schema/check-constraint-builder.js +17 -0
  327. package/dist/esm/schema/column-definition-builder.js +0 -2
  328. package/dist/esm/schema/create-index-builder.js +1 -3
  329. package/dist/esm/schema/create-schema-builder.js +0 -2
  330. package/dist/esm/schema/create-table-builder.d.ts +5 -4
  331. package/dist/esm/schema/create-table-builder.js +10 -8
  332. package/dist/esm/schema/create-type-builder.d.ts +1 -1
  333. package/dist/esm/schema/create-type-builder.js +0 -2
  334. package/dist/esm/schema/create-view-builder.js +0 -2
  335. package/dist/esm/schema/drop-index-builder.js +0 -2
  336. package/dist/esm/schema/drop-schema-builder.js +0 -2
  337. package/dist/esm/schema/drop-table-builder.js +0 -2
  338. package/dist/esm/schema/drop-type-builder.js +0 -2
  339. package/dist/esm/schema/drop-view-builder.js +0 -2
  340. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
  341. package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
  342. package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
  343. package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
  344. package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
  345. package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
  346. package/dist/esm/schema/schema.d.ts +14 -0
  347. package/dist/esm/schema/schema.js +21 -0
  348. package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
  349. package/dist/esm/schema/unique-constraint-builder.js +26 -5
  350. package/dist/esm/util/infer-result.d.ts +1 -1
  351. package/dist/esm/util/log.d.ts +1 -0
  352. package/dist/esm/util/log.js +3 -2
  353. package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
  354. package/dist/esm/util/provide-controlled-connection.js +22 -0
  355. package/outdated-typescript.d.ts +5 -0
  356. package/package.json +16 -2
  357. package/CONTRIBUTING.md +0 -168
  358. package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
  359. package/dist/cjs/util/prevent-await.d.ts +0 -1
  360. package/dist/cjs/util/prevent-await.js +0 -13
  361. package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
  362. package/dist/esm/util/prevent-await.d.ts +0 -1
  363. package/dist/esm/util/prevent-await.js +0 -11
package/dist/cjs/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.logOnce = exports.expressionBuilder = void 0;
17
+ exports.createQueryId = exports.logOnce = exports.expressionBuilder = void 0;
18
18
  __exportStar(require("./kysely.js"), exports);
19
19
  __exportStar(require("./query-creator.js"), exports);
20
20
  __exportStar(require("./expression/expression.js"), exports);
@@ -25,6 +25,7 @@ __exportStar(require("./query-builder/where-interface.js"), exports);
25
25
  __exportStar(require("./query-builder/returning-interface.js"), exports);
26
26
  __exportStar(require("./query-builder/output-interface.js"), exports);
27
27
  __exportStar(require("./query-builder/having-interface.js"), exports);
28
+ __exportStar(require("./query-builder/order-by-interface.js"), exports);
28
29
  __exportStar(require("./query-builder/select-query-builder.js"), exports);
29
30
  __exportStar(require("./query-builder/insert-query-builder.js"), exports);
30
31
  __exportStar(require("./query-builder/update-query-builder.js"), exports);
@@ -41,6 +42,7 @@ __exportStar(require("./query-builder/case-builder.js"), exports);
41
42
  __exportStar(require("./query-builder/json-path-builder.js"), exports);
42
43
  __exportStar(require("./query-builder/merge-query-builder.js"), exports);
43
44
  __exportStar(require("./query-builder/merge-result.js"), exports);
45
+ __exportStar(require("./query-builder/order-by-item-builder.js"), exports);
44
46
  __exportStar(require("./raw-builder/raw-builder.js"), exports);
45
47
  __exportStar(require("./raw-builder/sql.js"), exports);
46
48
  __exportStar(require("./query-executor/query-executor.js"), exports);
@@ -62,6 +64,7 @@ __exportStar(require("./schema/column-definition-builder.js"), exports);
62
64
  __exportStar(require("./schema/foreign-key-constraint-builder.js"), exports);
63
65
  __exportStar(require("./schema/alter-table-builder.js"), exports);
64
66
  __exportStar(require("./schema/create-view-builder.js"), exports);
67
+ __exportStar(require("./schema/refresh-materialized-view-builder.js"), exports);
65
68
  __exportStar(require("./schema/drop-view-builder.js"), exports);
66
69
  __exportStar(require("./schema/alter-column-builder.js"), exports);
67
70
  __exportStar(require("./dynamic/dynamic.js"), exports);
@@ -108,6 +111,8 @@ __exportStar(require("./plugin/camel-case/camel-case-plugin.js"), exports);
108
111
  __exportStar(require("./plugin/deduplicate-joins/deduplicate-joins-plugin.js"), exports);
109
112
  __exportStar(require("./plugin/with-schema/with-schema-plugin.js"), exports);
110
113
  __exportStar(require("./plugin/parse-json-results/parse-json-results-plugin.js"), exports);
114
+ __exportStar(require("./plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js"), exports);
115
+ __exportStar(require("./plugin/handle-empty-in-lists/handle-empty-in-lists.js"), exports);
111
116
  __exportStar(require("./operation-node/add-column-node.js"), exports);
112
117
  __exportStar(require("./operation-node/add-constraint-node.js"), exports);
113
118
  __exportStar(require("./operation-node/add-index-node.js"), exports);
@@ -120,6 +125,7 @@ __exportStar(require("./operation-node/binary-operation-node.js"), exports);
120
125
  __exportStar(require("./operation-node/case-node.js"), exports);
121
126
  __exportStar(require("./operation-node/cast-node.js"), exports);
122
127
  __exportStar(require("./operation-node/check-constraint-node.js"), exports);
128
+ __exportStar(require("./operation-node/collate-node.js"), exports);
123
129
  __exportStar(require("./operation-node/column-definition-node.js"), exports);
124
130
  __exportStar(require("./operation-node/column-node.js"), exports);
125
131
  __exportStar(require("./operation-node/column-update-node.js"), exports);
@@ -131,6 +137,7 @@ __exportStar(require("./operation-node/create-schema-node.js"), exports);
131
137
  __exportStar(require("./operation-node/create-table-node.js"), exports);
132
138
  __exportStar(require("./operation-node/create-type-node.js"), exports);
133
139
  __exportStar(require("./operation-node/create-view-node.js"), exports);
140
+ __exportStar(require("./operation-node/refresh-materialized-view-node.js"), exports);
134
141
  __exportStar(require("./operation-node/data-type-node.js"), exports);
135
142
  __exportStar(require("./operation-node/default-insert-value-node.js"), exports);
136
143
  __exportStar(require("./operation-node/default-value-node.js"), exports);
@@ -172,6 +179,7 @@ __exportStar(require("./operation-node/operation-node-transformer.js"), exports)
172
179
  __exportStar(require("./operation-node/operation-node-visitor.js"), exports);
173
180
  __exportStar(require("./operation-node/operation-node.js"), exports);
174
181
  __exportStar(require("./operation-node/operator-node.js"), exports);
182
+ __exportStar(require("./operation-node/or-action-node.js"), exports);
175
183
  __exportStar(require("./operation-node/or-node.js"), exports);
176
184
  __exportStar(require("./operation-node/order-by-item-node.js"), exports);
177
185
  __exportStar(require("./operation-node/order-by-node.js"), exports);
@@ -180,13 +188,14 @@ __exportStar(require("./operation-node/over-node.js"), exports);
180
188
  __exportStar(require("./operation-node/parens-node.js"), exports);
181
189
  __exportStar(require("./operation-node/partition-by-item-node.js"), exports);
182
190
  __exportStar(require("./operation-node/partition-by-node.js"), exports);
183
- __exportStar(require("./operation-node/primary-constraint-node.js"), exports);
191
+ __exportStar(require("./operation-node/primary-key-constraint-node.js"), exports);
184
192
  __exportStar(require("./operation-node/primitive-value-list-node.js"), exports);
185
193
  __exportStar(require("./operation-node/query-node.js"), exports);
186
194
  __exportStar(require("./operation-node/raw-node.js"), exports);
187
195
  __exportStar(require("./operation-node/reference-node.js"), exports);
188
196
  __exportStar(require("./operation-node/references-node.js"), exports);
189
197
  __exportStar(require("./operation-node/rename-column-node.js"), exports);
198
+ __exportStar(require("./operation-node/rename-constraint-node.js"), exports);
190
199
  __exportStar(require("./operation-node/returning-node.js"), exports);
191
200
  __exportStar(require("./operation-node/schemable-identifier-node.js"), exports);
192
201
  __exportStar(require("./operation-node/select-all-node.js"), exports);
@@ -216,3 +225,5 @@ __exportStar(require("./util/log.js"), exports);
216
225
  __exportStar(require("./util/infer-result.js"), exports);
217
226
  var log_once_js_1 = require("./util/log-once.js");
218
227
  Object.defineProperty(exports, "logOnce", { enumerable: true, get: function () { return log_once_js_1.logOnce; } });
228
+ var query_id_js_1 = require("./util/query-id.js");
229
+ Object.defineProperty(exports, "createQueryId", { enumerable: true, get: function () { return query_id_js_1.createQueryId; } });
@@ -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 {};