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
@@ -37,7 +37,7 @@ import { OnConflictNode } from './on-conflict-node.js';
37
37
  import { CreateIndexNode } from './create-index-node.js';
38
38
  import { ListNode } from './list-node.js';
39
39
  import { DropIndexNode } from './drop-index-node.js';
40
- import { PrimaryKeyConstraintNode } from './primary-constraint-node.js';
40
+ import { PrimaryKeyConstraintNode } from './primary-key-constraint-node.js';
41
41
  import { UniqueConstraintNode } from './unique-constraint-node.js';
42
42
  import { ReferencesNode } from './references-node.js';
43
43
  import { CheckConstraintNode } from './check-constraint-node.js';
@@ -92,6 +92,10 @@ import { CastNode } from './cast-node.js';
92
92
  import { FetchNode } from './fetch-node.js';
93
93
  import { TopNode } from './top-node.js';
94
94
  import { OutputNode } from './output-node.js';
95
+ import { RefreshMaterializedViewNode } from './refresh-materialized-view-node.js';
96
+ import { OrActionNode } from './or-action-node.js';
97
+ import { CollateNode } from './collate-node.js';
98
+ import { RenameConstraintNode } from './rename-constraint-node.js';
95
99
  export declare abstract class OperationNodeVisitor {
96
100
  #private;
97
101
  protected readonly nodeStack: OperationNode[];
@@ -148,6 +152,7 @@ export declare abstract class OperationNodeVisitor {
148
152
  protected abstract visitModifyColumn(node: ModifyColumnNode): void;
149
153
  protected abstract visitAddConstraint(node: AddConstraintNode): void;
150
154
  protected abstract visitDropConstraint(node: DropConstraintNode): void;
155
+ protected abstract visitRenameConstraint(node: RenameConstraintNode): void;
151
156
  protected abstract visitForeignKeyConstraint(node: ForeignKeyConstraintNode): void;
152
157
  protected abstract visitDataType(node: DataTypeNode): void;
153
158
  protected abstract visitSelectAll(node: SelectAllNode): void;
@@ -157,6 +162,7 @@ export declare abstract class OperationNodeVisitor {
157
162
  protected abstract visitPrimitiveValueList(node: PrimitiveValueListNode): void;
158
163
  protected abstract visitOperator(node: OperatorNode): void;
159
164
  protected abstract visitCreateView(node: CreateViewNode): void;
165
+ protected abstract visitRefreshMaterializedView(node: RefreshMaterializedViewNode): void;
160
166
  protected abstract visitDropView(node: DropViewNode): void;
161
167
  protected abstract visitGenerated(node: GeneratedNode): void;
162
168
  protected abstract visitDefaultValue(node: DefaultValueNode): void;
@@ -190,4 +196,6 @@ export declare abstract class OperationNodeVisitor {
190
196
  protected abstract visitFetch(node: FetchNode): void;
191
197
  protected abstract visitTop(node: TopNode): void;
192
198
  protected abstract visitOutput(node: OutputNode): void;
199
+ protected abstract visitOrAction(node: OrActionNode): void;
200
+ protected abstract visitCollate(node: CollateNode): void;
193
201
  }
@@ -66,8 +66,10 @@ class OperationNodeVisitor {
66
66
  ModifyColumnNode: this.visitModifyColumn.bind(this),
67
67
  AddConstraintNode: this.visitAddConstraint.bind(this),
68
68
  DropConstraintNode: this.visitDropConstraint.bind(this),
69
+ RenameConstraintNode: this.visitRenameConstraint.bind(this),
69
70
  ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),
70
71
  CreateViewNode: this.visitCreateView.bind(this),
72
+ RefreshMaterializedViewNode: this.visitRefreshMaterializedView.bind(this),
71
73
  DropViewNode: this.visitDropView.bind(this),
72
74
  GeneratedNode: this.visitGenerated.bind(this),
73
75
  DefaultValueNode: this.visitDefaultValue.bind(this),
@@ -101,6 +103,8 @@ class OperationNodeVisitor {
101
103
  FetchNode: this.visitFetch.bind(this),
102
104
  TopNode: this.visitTop.bind(this),
103
105
  OutputNode: this.visitOutput.bind(this),
106
+ OrActionNode: this.visitOrAction.bind(this),
107
+ CollateNode: this.visitCollate.bind(this),
104
108
  });
105
109
  visitNode = (node) => {
106
110
  this.nodeStack.push(node);
@@ -1,4 +1,4 @@
1
- export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode' | 'OutputNode';
1
+ export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'RefreshMaterializedViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode' | 'OutputNode' | 'OrActionNode' | 'CollateNode' | 'RenameConstraintNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -0,0 +1,12 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ export interface OrActionNode extends OperationNode {
3
+ readonly kind: 'OrActionNode';
4
+ readonly action: string;
5
+ }
6
+ /**
7
+ * @internal
8
+ */
9
+ export declare const OrActionNode: Readonly<{
10
+ is(node: OperationNode): node is OrActionNode;
11
+ create(action: string): OrActionNode;
12
+ }>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrActionNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ /**
6
+ * @internal
7
+ */
8
+ exports.OrActionNode = (0, object_utils_js_1.freeze)({
9
+ is(node) {
10
+ return node.kind === 'OrActionNode';
11
+ },
12
+ create(action) {
13
+ return (0, object_utils_js_1.freeze)({
14
+ kind: 'OrActionNode',
15
+ action,
16
+ });
17
+ },
18
+ });
@@ -1,8 +1,12 @@
1
+ import { CollateNode } from './collate-node.js';
1
2
  import { OperationNode } from './operation-node.js';
3
+ export type OrderByItemNodeProps = Omit<OrderByItemNode, 'kind' | 'orderBy'>;
2
4
  export interface OrderByItemNode extends OperationNode {
3
5
  readonly kind: 'OrderByItemNode';
4
6
  readonly orderBy: OperationNode;
5
7
  readonly direction?: OperationNode;
8
+ readonly nulls?: 'first' | 'last';
9
+ readonly collation?: CollateNode;
6
10
  }
7
11
  /**
8
12
  * @internal
@@ -10,4 +14,5 @@ export interface OrderByItemNode extends OperationNode {
10
14
  export declare const OrderByItemNode: Readonly<{
11
15
  is(node: OperationNode): node is OrderByItemNode;
12
16
  create(orderBy: OperationNode, direction?: OperationNode): OrderByItemNode;
17
+ cloneWith(node: OrderByItemNode, props: OrderByItemNodeProps): OrderByItemNode;
13
18
  }>;
@@ -16,4 +16,10 @@ exports.OrderByItemNode = (0, object_utils_js_1.freeze)({
16
16
  direction,
17
17
  });
18
18
  },
19
+ cloneWith(node, props) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...node,
22
+ ...props,
23
+ });
24
+ },
19
25
  });
@@ -0,0 +1,29 @@
1
+ import { ColumnNode } from './column-node.js';
2
+ import { IdentifierNode } from './identifier-node.js';
3
+ import { OperationNode } from './operation-node.js';
4
+ export interface PrimaryKeyConstraintNode extends OperationNode {
5
+ readonly kind: 'PrimaryKeyConstraintNode';
6
+ readonly columns: ReadonlyArray<ColumnNode>;
7
+ readonly name?: IdentifierNode;
8
+ readonly deferrable?: boolean;
9
+ readonly initiallyDeferred?: boolean;
10
+ }
11
+ export type PrimaryKeyConstraintNodeProps = Omit<Partial<PrimaryKeyConstraintNode>, 'kind'>;
12
+ /**
13
+ * @internal
14
+ */
15
+ export declare const PrimaryKeyConstraintNode: Readonly<{
16
+ is(node: OperationNode): node is PrimaryKeyConstraintNode;
17
+ create(columns: string[], constraintName?: string): PrimaryKeyConstraintNode;
18
+ cloneWith(node: PrimaryKeyConstraintNode, props: PrimaryKeyConstraintNodeProps): PrimaryKeyConstraintNode;
19
+ }>;
20
+ /**
21
+ * Backwards compatibility for a typo in the codebase.
22
+ *
23
+ * @deprecated Use {@link PrimaryKeyConstraintNode} instead.
24
+ */
25
+ export declare const PrimaryConstraintNode: Readonly<{
26
+ is(node: OperationNode): node is PrimaryKeyConstraintNode;
27
+ create(columns: string[], constraintName?: string): PrimaryKeyConstraintNode;
28
+ cloneWith(node: PrimaryKeyConstraintNode, props: PrimaryKeyConstraintNodeProps): PrimaryKeyConstraintNode;
29
+ }>;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PrimaryConstraintNode = void 0;
3
+ exports.PrimaryConstraintNode = exports.PrimaryKeyConstraintNode = void 0;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
5
  const column_node_js_1 = require("./column-node.js");
6
6
  const identifier_node_js_1 = require("./identifier-node.js");
7
7
  /**
8
8
  * @internal
9
9
  */
10
- exports.PrimaryConstraintNode = (0, object_utils_js_1.freeze)({
10
+ exports.PrimaryKeyConstraintNode = (0, object_utils_js_1.freeze)({
11
11
  is(node) {
12
12
  return node.kind === 'PrimaryKeyConstraintNode';
13
13
  },
@@ -18,4 +18,13 @@ exports.PrimaryConstraintNode = (0, object_utils_js_1.freeze)({
18
18
  name: constraintName ? identifier_node_js_1.IdentifierNode.create(constraintName) : undefined,
19
19
  });
20
20
  },
21
+ cloneWith(node, props) {
22
+ return (0, object_utils_js_1.freeze)({ ...node, ...props });
23
+ },
21
24
  });
25
+ /**
26
+ * Backwards compatibility for a typo in the codebase.
27
+ *
28
+ * @deprecated Use {@link PrimaryKeyConstraintNode} instead.
29
+ */
30
+ exports.PrimaryConstraintNode = exports.PrimaryKeyConstraintNode;
@@ -13,6 +13,8 @@ import { Expression } from '../expression/expression.js';
13
13
  import { MergeQueryNode } from './merge-query-node.js';
14
14
  import { TopNode } from './top-node.js';
15
15
  import { OutputNode } from './output-node.js';
16
+ import { OrderByNode } from './order-by-node.js';
17
+ import { OrderByItemNode } from './order-by-item-node.js';
16
18
  export type QueryNode = SelectQueryNode | InsertQueryNode | UpdateQueryNode | DeleteQueryNode | MergeQueryNode;
17
19
  type HasJoins = {
18
20
  joins?: ReadonlyArray<JoinNode>;
@@ -35,6 +37,9 @@ type HasOutput = {
35
37
  type HasEndModifiers = {
36
38
  endModifiers?: ReadonlyArray<OperationNode>;
37
39
  };
40
+ type HasOrderBy = {
41
+ orderBy?: OrderByNode;
42
+ };
38
43
  /**
39
44
  * @internal
40
45
  */
@@ -49,5 +54,7 @@ export declare const QueryNode: Readonly<{
49
54
  cloneWithExplain<T extends HasExplain>(node: T, format: ExplainFormat | undefined, options: Expression<any> | undefined): T;
50
55
  cloneWithTop<T extends HasTop>(node: T, top: TopNode): T;
51
56
  cloneWithOutput<T extends HasOutput>(node: T, selections: ReadonlyArray<SelectionNode>): T;
57
+ cloneWithOrderByItems<T extends HasOrderBy>(node: T, items: ReadonlyArray<OrderByItemNode>): T;
58
+ cloneWithoutOrderBy<T extends HasOrderBy>(node: T): T;
52
59
  }>;
53
60
  export {};
@@ -11,6 +11,7 @@ const returning_node_js_1 = require("./returning-node.js");
11
11
  const explain_node_js_1 = require("./explain-node.js");
12
12
  const merge_query_node_js_1 = require("./merge-query-node.js");
13
13
  const output_node_js_1 = require("./output-node.js");
14
+ const order_by_node_js_1 = require("./order-by-node.js");
14
15
  /**
15
16
  * @internal
16
17
  */
@@ -84,4 +85,18 @@ exports.QueryNode = (0, object_utils_js_1.freeze)({
84
85
  : output_node_js_1.OutputNode.create(selections),
85
86
  });
86
87
  },
88
+ cloneWithOrderByItems(node, items) {
89
+ return (0, object_utils_js_1.freeze)({
90
+ ...node,
91
+ orderBy: node.orderBy
92
+ ? order_by_node_js_1.OrderByNode.cloneWithItems(node.orderBy, items)
93
+ : order_by_node_js_1.OrderByNode.create(items),
94
+ });
95
+ },
96
+ cloneWithoutOrderBy(node) {
97
+ return (0, object_utils_js_1.freeze)({
98
+ ...node,
99
+ orderBy: undefined,
100
+ });
101
+ },
87
102
  });
@@ -0,0 +1,17 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { SchemableIdentifierNode } from './schemable-identifier-node.js';
3
+ export type RefreshMaterializedViewNodeParams = Omit<Partial<RefreshMaterializedViewNode>, 'kind' | 'name'>;
4
+ export interface RefreshMaterializedViewNode extends OperationNode {
5
+ readonly kind: 'RefreshMaterializedViewNode';
6
+ readonly name: SchemableIdentifierNode;
7
+ readonly concurrently?: boolean;
8
+ readonly withNoData?: boolean;
9
+ }
10
+ /**
11
+ * @internal
12
+ */
13
+ export declare const RefreshMaterializedViewNode: Readonly<{
14
+ is(node: OperationNode): node is RefreshMaterializedViewNode;
15
+ create(name: string): RefreshMaterializedViewNode;
16
+ cloneWith(createView: RefreshMaterializedViewNode, params: RefreshMaterializedViewNodeParams): RefreshMaterializedViewNode;
17
+ }>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RefreshMaterializedViewNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const schemable_identifier_node_js_1 = require("./schemable-identifier-node.js");
6
+ /**
7
+ * @internal
8
+ */
9
+ exports.RefreshMaterializedViewNode = (0, object_utils_js_1.freeze)({
10
+ is(node) {
11
+ return node.kind === 'RefreshMaterializedViewNode';
12
+ },
13
+ create(name) {
14
+ return (0, object_utils_js_1.freeze)({
15
+ kind: 'RefreshMaterializedViewNode',
16
+ name: schemable_identifier_node_js_1.SchemableIdentifierNode.create(name),
17
+ });
18
+ },
19
+ cloneWith(createView, params) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...createView,
22
+ ...params,
23
+ });
24
+ },
25
+ });
@@ -0,0 +1,14 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { IdentifierNode } from './identifier-node.js';
3
+ export interface RenameConstraintNode extends OperationNode {
4
+ readonly kind: 'RenameConstraintNode';
5
+ readonly oldName: IdentifierNode;
6
+ readonly newName: IdentifierNode;
7
+ }
8
+ /**
9
+ * @internal
10
+ */
11
+ export declare const RenameConstraintNode: Readonly<{
12
+ is(node: OperationNode): node is RenameConstraintNode;
13
+ create(oldName: string, newName: string): RenameConstraintNode;
14
+ }>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RenameConstraintNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const identifier_node_js_1 = require("./identifier-node.js");
6
+ /**
7
+ * @internal
8
+ */
9
+ exports.RenameConstraintNode = (0, object_utils_js_1.freeze)({
10
+ is(node) {
11
+ return node.kind === 'RenameConstraintNode';
12
+ },
13
+ create(oldName, newName) {
14
+ return (0, object_utils_js_1.freeze)({
15
+ kind: 'RenameConstraintNode',
16
+ oldName: identifier_node_js_1.IdentifierNode.create(oldName),
17
+ newName: identifier_node_js_1.IdentifierNode.create(newName),
18
+ });
19
+ },
20
+ });
@@ -46,7 +46,10 @@ export declare const SelectQueryNode: Readonly<{
46
46
  cloneWithSelections(select: SelectQueryNode, selections: ReadonlyArray<SelectionNode>): SelectQueryNode;
47
47
  cloneWithDistinctOn(select: SelectQueryNode, expressions: ReadonlyArray<OperationNode>): SelectQueryNode;
48
48
  cloneWithFrontModifier(select: SelectQueryNode, modifier: SelectModifierNode): SelectQueryNode;
49
- cloneWithOrderByItems(selectNode: SelectQueryNode, items: ReadonlyArray<OrderByItemNode>): SelectQueryNode;
49
+ /**
50
+ * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.
51
+ */
52
+ cloneWithOrderByItems: (node: SelectQueryNode, items: ReadonlyArray<OrderByItemNode>) => SelectQueryNode;
50
53
  cloneWithGroupByItems(selectNode: SelectQueryNode, items: ReadonlyArray<GroupByItemNode>): SelectQueryNode;
51
54
  cloneWithLimit(selectNode: SelectQueryNode, limit: LimitNode): SelectQueryNode;
52
55
  cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
@@ -56,6 +59,9 @@ export declare const SelectQueryNode: Readonly<{
56
59
  cloneWithoutSelections(select: SelectQueryNode): SelectQueryNode;
57
60
  cloneWithoutLimit(select: SelectQueryNode): SelectQueryNode;
58
61
  cloneWithoutOffset(select: SelectQueryNode): SelectQueryNode;
59
- cloneWithoutOrderBy(select: SelectQueryNode): SelectQueryNode;
62
+ /**
63
+ * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.
64
+ */
65
+ cloneWithoutOrderBy: (node: SelectQueryNode) => SelectQueryNode;
60
66
  cloneWithoutGroupBy(select: SelectQueryNode): SelectQueryNode;
61
67
  }>;
@@ -5,7 +5,7 @@ const object_utils_js_1 = require("../util/object-utils.js");
5
5
  const from_node_js_1 = require("./from-node.js");
6
6
  const group_by_node_js_1 = require("./group-by-node.js");
7
7
  const having_node_js_1 = require("./having-node.js");
8
- const order_by_node_js_1 = require("./order-by-node.js");
8
+ const query_node_js_1 = require("./query-node.js");
9
9
  /**
10
10
  * @internal
11
11
  */
@@ -50,14 +50,11 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
50
50
  : (0, object_utils_js_1.freeze)([modifier]),
51
51
  });
52
52
  },
53
- cloneWithOrderByItems(selectNode, items) {
54
- return (0, object_utils_js_1.freeze)({
55
- ...selectNode,
56
- orderBy: selectNode.orderBy
57
- ? order_by_node_js_1.OrderByNode.cloneWithItems(selectNode.orderBy, items)
58
- : order_by_node_js_1.OrderByNode.create(items),
59
- });
60
- },
53
+ // TODO: remove in v0.29
54
+ /**
55
+ * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.
56
+ */
57
+ cloneWithOrderByItems: (node, items) => query_node_js_1.QueryNode.cloneWithOrderByItems(node, items),
61
58
  cloneWithGroupByItems(selectNode, items) {
62
59
  return (0, object_utils_js_1.freeze)({
63
60
  ...selectNode,
@@ -118,12 +115,11 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
118
115
  offset: undefined,
119
116
  });
120
117
  },
121
- cloneWithoutOrderBy(select) {
122
- return (0, object_utils_js_1.freeze)({
123
- ...select,
124
- orderBy: undefined,
125
- });
126
- },
118
+ // TODO: remove in v0.29
119
+ /**
120
+ * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.
121
+ */
122
+ cloneWithoutOrderBy: (node) => query_node_js_1.QueryNode.cloneWithoutOrderBy(node),
127
123
  cloneWithoutGroupBy(select) {
128
124
  return (0, object_utils_js_1.freeze)({
129
125
  ...select,
@@ -6,6 +6,8 @@ export interface UniqueConstraintNode extends OperationNode {
6
6
  readonly columns: ReadonlyArray<ColumnNode>;
7
7
  readonly name?: IdentifierNode;
8
8
  readonly nullsNotDistinct?: boolean;
9
+ readonly deferrable?: boolean;
10
+ readonly initiallyDeferred?: boolean;
9
11
  }
10
12
  export type UniqueConstraintNodeProps = Omit<Partial<UniqueConstraintNode>, 'kind'>;
11
13
  /**
@@ -1,9 +1,7 @@
1
1
  import { ColumnUpdateNode } from './column-update-node.js';
2
2
  import { JoinNode } from './join-node.js';
3
3
  import { OperationNode } from './operation-node.js';
4
- import { PrimitiveValueListNode } from './primitive-value-list-node.js';
5
4
  import { ReturningNode } from './returning-node.js';
6
- import { ValueListNode } from './value-list-node.js';
7
5
  import { WhereNode } from './where-node.js';
8
6
  import { WithNode } from './with-node.js';
9
7
  import { FromNode } from './from-node.js';
@@ -11,7 +9,7 @@ import { ExplainNode } from './explain-node.js';
11
9
  import { LimitNode } from './limit-node.js';
12
10
  import { TopNode } from './top-node.js';
13
11
  import { OutputNode } from './output-node.js';
14
- export type UpdateValuesNode = ValueListNode | PrimitiveValueListNode;
12
+ import { OrderByNode } from './order-by-node.js';
15
13
  export interface UpdateQueryNode extends OperationNode {
16
14
  readonly kind: 'UpdateQueryNode';
17
15
  readonly table?: OperationNode;
@@ -26,13 +24,14 @@ export interface UpdateQueryNode extends OperationNode {
26
24
  readonly limit?: LimitNode;
27
25
  readonly top?: TopNode;
28
26
  readonly output?: OutputNode;
27
+ readonly orderBy?: OrderByNode;
29
28
  }
30
29
  /**
31
30
  * @internal
32
31
  */
33
32
  export declare const UpdateQueryNode: Readonly<{
34
33
  is(node: OperationNode): node is UpdateQueryNode;
35
- create(table: OperationNode, withNode?: WithNode): UpdateQueryNode;
34
+ create(tables: ReadonlyArray<OperationNode>, withNode?: WithNode): UpdateQueryNode;
36
35
  createWithoutTable(): UpdateQueryNode;
37
36
  cloneWithFromItems(updateQuery: UpdateQueryNode, fromItems: ReadonlyArray<OperationNode>): UpdateQueryNode;
38
37
  cloneWithUpdates(updateQuery: UpdateQueryNode, updates: ReadonlyArray<ColumnUpdateNode>): UpdateQueryNode;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UpdateQueryNode = void 0;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
5
  const from_node_js_1 = require("./from-node.js");
6
+ const list_node_js_1 = require("./list-node.js");
6
7
  /**
7
8
  * @internal
8
9
  */
@@ -10,10 +11,12 @@ exports.UpdateQueryNode = (0, object_utils_js_1.freeze)({
10
11
  is(node) {
11
12
  return node.kind === 'UpdateQueryNode';
12
13
  },
13
- create(table, withNode) {
14
+ create(tables, withNode) {
14
15
  return (0, object_utils_js_1.freeze)({
15
16
  kind: 'UpdateQueryNode',
16
- table,
17
+ // For backwards compatibility, use the raw table node when there's only one table
18
+ // and don't rename the property to something like `tables`.
19
+ table: tables.length === 1 ? tables[0] : list_node_js_1.ListNode.create(tables),
17
20
  ...(withNode && { with: withNode }),
18
21
  });
19
22
  },
@@ -0,0 +1 @@
1
+ export type Collation = 'nocase' | 'binary' | 'rtrim' | (string & {});
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import type { DeleteQueryBuilder } from '../query-builder/delete-query-builder.js';
2
+ import type { DeleteResult } from '../query-builder/delete-result.js';
3
+ import type { ShallowRecord } from '../util/type-utils.js';
4
+ import type { ExtractTableAlias, From, FromTables, TableExpressionOrList } from './table-parser.js';
5
+ export type DeleteFrom<DB, TE extends TableExpressionOrList<DB, never>> = TE extends ReadonlyArray<infer T> ? DeleteQueryBuilder<From<DB, T>, FromTables<DB, never, T>, DeleteResult> : TE extends keyof DB & string ? DeleteQueryBuilder<DB, ExtractTableAlias<DB, TE>, DeleteResult> : TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? DeleteQueryBuilder<DB & ShallowRecord<A, DB[T]>, A, DeleteResult> : never : DeleteQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, DeleteResult>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -42,9 +42,11 @@ function parseRowValues(row, columns) {
42
42
  length: columns.size,
43
43
  });
44
44
  let hasUndefinedOrComplexColumns = false;
45
+ let indexedRowColumns = rowColumns.length;
45
46
  for (const col of rowColumns) {
46
47
  const columnIdx = columns.get(col);
47
48
  if ((0, object_utils_js_1.isUndefined)(columnIdx)) {
49
+ indexedRowColumns--;
48
50
  continue;
49
51
  }
50
52
  const value = row[col];
@@ -53,7 +55,7 @@ function parseRowValues(row, columns) {
53
55
  }
54
56
  rowValues[columnIdx] = value;
55
57
  }
56
- const hasMissingColumns = rowColumns.length < columns.size;
58
+ const hasMissingColumns = indexedRowColumns < columns.size;
57
59
  if (hasMissingColumns || hasUndefinedOrComplexColumns) {
58
60
  const defaultValue = default_insert_value_node_js_1.DefaultInsertValueNode.create();
59
61
  return value_list_node_js_1.ValueListNode.create(rowValues.map((it) => (0, object_utils_js_1.isUndefined)(it) ? defaultValue : (0, value_parser_js_1.parseValueExpression)(it)));
@@ -1,7 +1,7 @@
1
1
  import { JoinNode, JoinType } from '../operation-node/join-node.js';
2
+ import { JoinBuilder } from '../query-builder/join-builder.js';
2
3
  import { AnyColumn, AnyColumnWithTable, DrainOuterGeneric } from '../util/type-utils.js';
3
4
  import { From, FromTables } from './table-parser.js';
4
- import { JoinBuilder } from '../query-builder/join-builder.js';
5
5
  export type JoinReferenceExpression<DB, TB extends keyof DB, TE> = DrainOuterGeneric<AnyJoinColumn<DB, TB, TE> | AnyJoinColumnWithTable<DB, TB, TE>>;
6
6
  export type JoinCallbackExpression<DB, TB extends keyof DB, TE> = (join: JoinBuilder<From<DB, TE>, FromTables<DB, TB, TE>>) => JoinBuilder<any, any>;
7
7
  type AnyJoinColumn<DB, TB extends keyof DB, TE> = AnyColumn<From<DB, TE>, FromTables<DB, TB, TE>>;
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseJoin = parseJoin;
4
4
  const join_node_js_1 = require("../operation-node/join-node.js");
5
- const table_parser_js_1 = require("./table-parser.js");
6
5
  const binary_operation_parser_js_1 = require("./binary-operation-parser.js");
7
6
  const parse_utils_js_1 = require("./parse-utils.js");
7
+ const table_parser_js_1 = require("./table-parser.js");
8
8
  function parseJoin(joinType, args) {
9
9
  if (args.length === 3) {
10
10
  return parseSingleOnJoin(joinType, args[0], args[1], args[2]);
@@ -12,6 +12,9 @@ function parseJoin(joinType, args) {
12
12
  else if (args.length === 2) {
13
13
  return parseCallbackJoin(joinType, args[0], args[1]);
14
14
  }
15
+ else if (args.length === 1) {
16
+ return parseOnlessJoin(joinType, args[0]);
17
+ }
15
18
  else {
16
19
  throw new Error('not implemented');
17
20
  }
@@ -22,3 +25,6 @@ function parseCallbackJoin(joinType, from, callback) {
22
25
  function parseSingleOnJoin(joinType, from, lhsColumn, rhsColumn) {
23
26
  return join_node_js_1.JoinNode.createWithOn(joinType, (0, table_parser_js_1.parseTableExpression)(from), (0, binary_operation_parser_js_1.parseReferentialBinaryOperation)(lhsColumn, '=', rhsColumn));
24
27
  }
28
+ function parseOnlessJoin(joinType, from) {
29
+ return join_node_js_1.JoinNode.create(joinType, (0, table_parser_js_1.parseTableExpression)(from));
30
+ }
@@ -0,0 +1,5 @@
1
+ import type { MergeQueryBuilder } from '../query-builder/merge-query-builder.js';
2
+ import type { MergeResult } from '../query-builder/merge-result.js';
3
+ import type { ShallowRecord } from '../util/type-utils.js';
4
+ import type { ExtractTableAlias, SimpleTableReference } from './table-parser.js';
5
+ export type MergeInto<DB, TE extends SimpleTableReference<DB>> = TE extends keyof DB & string ? MergeQueryBuilder<DB, ExtractTableAlias<DB, TE>, MergeResult> : TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? MergeQueryBuilder<DB & ShallowRecord<A, DB[T]>, A, MergeResult> : never : never;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,12 +1,25 @@
1
+ import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
1
2
  import { Expression } from '../expression/expression.js';
2
3
  import { OrderByItemNode } from '../operation-node/order-by-item-node.js';
3
- import { StringReference } from './reference-parser.js';
4
- import { ReferenceExpression } from './reference-parser.js';
4
+ import { OrderByItemBuilder } from '../query-builder/order-by-item-builder.js';
5
+ import { ExpressionOrFactory } from './expression-parser.js';
6
+ import { ReferenceExpression, StringReference } from './reference-parser.js';
7
+ export type OrderByExpression<DB, TB extends keyof DB, O> = StringReference<DB, TB> | (keyof O & string) | ExpressionOrFactory<DB, TB, any> | DynamicReferenceBuilder<any>;
8
+ export type OrderByModifiers = OrderByDirection | OrderByModifiersCallbackExpression;
5
9
  export type OrderByDirection = 'asc' | 'desc';
6
10
  export declare function isOrderByDirection(thing: unknown): thing is OrderByDirection;
11
+ export type OrderByModifiersCallbackExpression = (builder: OrderByItemBuilder) => OrderByItemBuilder;
12
+ /**
13
+ * @deprecated performance reasons, use {@link OrderByExpression} instead.
14
+ */
7
15
  export type DirectedOrderByStringReference<DB, TB extends keyof DB, O> = `${StringReference<DB, TB> | (keyof O & string)} ${OrderByDirection}`;
8
- export type UndirectedOrderByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | (keyof O & string);
9
- export type OrderByExpression<DB, TB extends keyof DB, O> = UndirectedOrderByExpression<DB, TB, O> | DirectedOrderByStringReference<DB, TB, O>;
16
+ /**
17
+ * @deprecated replaced with {@link OrderByModifiers}
18
+ */
10
19
  export type OrderByDirectionExpression = OrderByDirection | Expression<any>;
20
+ /**
21
+ * @deprecated use {@link OrderByExpression} instead.
22
+ */
23
+ export type UndirectedOrderByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | (keyof O & string);
11
24
  export declare function parseOrderBy(args: any[]): OrderByItemNode[];
12
- export declare function parseOrderByItem(ref: ReferenceExpression<any, any>, direction?: OrderByDirectionExpression): OrderByItemNode;
25
+ export declare function parseOrderByItem(expr: OrderByExpression<any, any, any>, modifiers?: OrderByModifiers): OrderByItemNode;