kysely 0.21.6 → 0.23.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 (380) hide show
  1. package/CONTRIBUTING.md +70 -0
  2. package/README.md +27 -4
  3. package/dist/cjs/dialect/database-introspector.d.ts +4 -0
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +6 -3
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-driver.js +7 -2
  7. package/dist/cjs/dialect/postgres/postgres-introspector.js +8 -0
  8. package/dist/cjs/dialect/sqlite/sqlite-driver.js +4 -3
  9. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
  10. package/dist/cjs/driver/database-connection.d.ts +6 -2
  11. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +2 -3
  12. package/dist/cjs/dynamic/dynamic-reference-builder.js +1 -1
  13. package/dist/cjs/expression/expression.d.ts +100 -0
  14. package/dist/cjs/expression/expression.js +16 -0
  15. package/dist/cjs/index.d.ts +17 -8
  16. package/dist/cjs/index.js +15 -4
  17. package/dist/cjs/kysely.d.ts +3 -3
  18. package/dist/cjs/kysely.js +3 -3
  19. package/dist/cjs/migration/file-migration-provider.js +11 -4
  20. package/dist/cjs/operation-node/aggregate-function-node.d.ts +25 -0
  21. package/dist/cjs/operation-node/aggregate-function-node.js +48 -0
  22. package/dist/cjs/operation-node/alias-node.d.ts +3 -10
  23. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
  24. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
  25. package/dist/cjs/operation-node/alter-table-node.js +9 -1
  26. package/dist/cjs/operation-node/and-node.d.ts +3 -4
  27. package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
  28. package/dist/cjs/operation-node/binary-operation-node.js +20 -0
  29. package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
  30. package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
  31. package/dist/cjs/operation-node/column-definition-node.js +16 -0
  32. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  33. package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
  34. package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
  35. package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
  36. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  37. package/dist/cjs/operation-node/create-type-node.js +1 -2
  38. package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
  39. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
  40. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/drop-type-node.js +1 -2
  42. package/dist/cjs/operation-node/explain-node.d.ts +2 -4
  43. package/dist/cjs/operation-node/explain-node.js +1 -1
  44. package/dist/cjs/operation-node/from-node.d.ts +3 -4
  45. package/dist/cjs/operation-node/generated-node.d.ts +2 -3
  46. package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
  47. package/dist/cjs/operation-node/group-by-node.d.ts +1 -1
  48. package/dist/cjs/operation-node/group-by-node.js +3 -3
  49. package/dist/cjs/operation-node/having-node.d.ts +3 -4
  50. package/dist/cjs/operation-node/having-node.js +4 -4
  51. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -4
  52. package/dist/cjs/operation-node/join-node.d.ts +5 -9
  53. package/dist/cjs/operation-node/join-node.js +6 -6
  54. package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
  55. package/dist/cjs/operation-node/on-conflict-node.js +12 -12
  56. package/dist/cjs/operation-node/on-node.d.ts +3 -4
  57. package/dist/cjs/operation-node/on-node.js +4 -4
  58. package/dist/cjs/operation-node/operation-node-transformer.d.ts +14 -4
  59. package/dist/cjs/operation-node/operation-node-transformer.js +60 -20
  60. package/dist/cjs/operation-node/operation-node-visitor.d.ts +14 -4
  61. package/dist/cjs/operation-node/operation-node-visitor.js +7 -2
  62. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  63. package/dist/cjs/operation-node/operator-node.d.ts +5 -3
  64. package/dist/cjs/operation-node/operator-node.js +3 -5
  65. package/dist/cjs/operation-node/or-node.d.ts +3 -4
  66. package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
  67. package/dist/cjs/operation-node/over-node.d.ts +19 -0
  68. package/dist/cjs/operation-node/over-node.js +35 -0
  69. package/dist/cjs/operation-node/parens-node.d.ts +2 -3
  70. package/dist/cjs/operation-node/partition-by-item-node.d.ts +13 -0
  71. package/dist/cjs/operation-node/{filter-node.js → partition-by-item-node.js} +6 -8
  72. package/dist/cjs/operation-node/partition-by-node.d.ts +14 -0
  73. package/dist/cjs/operation-node/partition-by-node.js +24 -0
  74. package/dist/cjs/operation-node/query-node.d.ts +2 -3
  75. package/dist/cjs/operation-node/query-node.js +6 -6
  76. package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
  77. package/dist/cjs/operation-node/select-modifier-node.js +1 -1
  78. package/dist/cjs/operation-node/select-query-node.d.ts +8 -9
  79. package/dist/cjs/operation-node/select-query-node.js +14 -14
  80. package/dist/cjs/operation-node/selection-node.d.ts +2 -3
  81. package/dist/cjs/operation-node/set-operation-node.d.ts +15 -0
  82. package/dist/cjs/operation-node/{union-node.js → set-operation-node.js} +7 -6
  83. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
  84. package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
  85. package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
  86. package/dist/cjs/operation-node/unary-operation-node.js +19 -0
  87. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  88. package/dist/cjs/operation-node/value-list-node.d.ts +2 -8
  89. package/dist/cjs/operation-node/where-node.d.ts +3 -4
  90. package/dist/cjs/operation-node/where-node.js +4 -4
  91. package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
  92. package/dist/cjs/parser/binary-operation-parser.js +99 -0
  93. package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
  94. package/dist/cjs/parser/coalesce-parser.js +11 -0
  95. package/dist/cjs/parser/data-type-parser.d.ts +5 -5
  96. package/dist/cjs/parser/default-value-parser.d.ts +4 -5
  97. package/dist/cjs/parser/default-value-parser.js +2 -2
  98. package/dist/cjs/parser/expression-parser.d.ts +10 -0
  99. package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
  100. package/dist/cjs/parser/group-by-parser.d.ts +1 -1
  101. package/dist/cjs/parser/group-by-parser.js +2 -2
  102. package/dist/cjs/parser/identifier-parser.d.ts +2 -0
  103. package/dist/cjs/parser/identifier-parser.js +23 -0
  104. package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
  105. package/dist/cjs/parser/insert-values-parser.js +2 -2
  106. package/dist/cjs/parser/join-parser.js +2 -2
  107. package/dist/cjs/parser/order-by-parser.d.ts +2 -2
  108. package/dist/cjs/parser/parse-utils.d.ts +2 -0
  109. package/dist/cjs/parser/parse-utils.js +9 -1
  110. package/dist/cjs/parser/partition-by-parser.d.ts +6 -0
  111. package/dist/cjs/parser/partition-by-parser.js +9 -0
  112. package/dist/cjs/parser/reference-parser.d.ts +14 -13
  113. package/dist/cjs/parser/reference-parser.js +12 -9
  114. package/dist/cjs/parser/select-parser.d.ts +6 -6
  115. package/dist/cjs/parser/select-parser.js +2 -2
  116. package/dist/cjs/parser/set-operation-parser.d.ts +3 -0
  117. package/dist/cjs/parser/set-operation-parser.js +8 -0
  118. package/dist/cjs/parser/table-parser.d.ts +11 -12
  119. package/dist/cjs/parser/table-parser.js +2 -2
  120. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
  121. package/dist/cjs/parser/unary-operation-parser.js +17 -0
  122. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  123. package/dist/cjs/parser/value-parser.d.ts +5 -8
  124. package/dist/cjs/parser/value-parser.js +4 -4
  125. package/dist/cjs/parser/with-parser.d.ts +3 -4
  126. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  127. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +348 -0
  128. package/dist/cjs/query-builder/aggregate-function-builder.js +298 -0
  129. package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
  130. package/dist/cjs/query-builder/delete-query-builder.js +19 -16
  131. package/dist/cjs/query-builder/expression-builder.d.ts +3 -3
  132. package/dist/cjs/query-builder/expression-builder.js +3 -3
  133. package/dist/cjs/query-builder/function-module.d.ts +241 -0
  134. package/dist/cjs/query-builder/function-module.js +214 -0
  135. package/dist/cjs/query-builder/having-interface.d.ts +9 -8
  136. package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
  137. package/dist/cjs/query-builder/insert-query-builder.js +11 -9
  138. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  139. package/dist/cjs/query-builder/insert-result.js +12 -1
  140. package/dist/cjs/query-builder/join-builder.d.ts +9 -8
  141. package/dist/cjs/query-builder/join-builder.js +10 -9
  142. package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
  143. package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
  144. package/dist/cjs/query-builder/over-builder.d.ts +59 -0
  145. package/dist/cjs/query-builder/over-builder.js +50 -0
  146. package/dist/cjs/query-builder/select-query-builder.d.ts +138 -47
  147. package/dist/cjs/query-builder/select-query-builder.js +122 -40
  148. package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
  149. package/dist/cjs/query-builder/update-query-builder.js +19 -16
  150. package/dist/cjs/query-builder/where-interface.d.ts +12 -11
  151. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  152. package/dist/cjs/query-compiler/default-query-compiler.d.ts +15 -5
  153. package/dist/cjs/query-compiler/default-query-compiler.js +78 -47
  154. package/dist/cjs/query-executor/query-executor-base.js +16 -1
  155. package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
  156. package/dist/cjs/raw-builder/raw-builder.js +24 -14
  157. package/dist/cjs/raw-builder/sql.d.ts +15 -7
  158. package/dist/cjs/raw-builder/sql.js +6 -0
  159. package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
  160. package/dist/cjs/schema/alter-column-builder.js +55 -0
  161. package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
  162. package/dist/cjs/schema/alter-table-builder.js +65 -280
  163. package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
  164. package/dist/cjs/schema/column-definition-builder.js +189 -0
  165. package/dist/cjs/schema/create-index-builder.d.ts +2 -2
  166. package/dist/cjs/schema/create-table-builder.d.ts +38 -5
  167. package/dist/cjs/schema/create-table-builder.js +36 -1
  168. package/dist/cjs/schema/create-view-builder.d.ts +3 -2
  169. package/dist/cjs/schema/schema.d.ts +2 -2
  170. package/dist/cjs/schema/schema.js +6 -5
  171. package/dist/cjs/util/compilable.d.ts +2 -2
  172. package/dist/cjs/util/explainable.d.ts +2 -2
  173. package/dist/cjs/util/infer-result.d.ts +46 -0
  174. package/dist/cjs/util/infer-result.js +2 -0
  175. package/dist/cjs/util/log-once.d.ts +5 -0
  176. package/dist/cjs/util/log-once.js +16 -0
  177. package/dist/cjs/util/object-utils.d.ts +1 -0
  178. package/dist/cjs/util/object-utils.js +5 -1
  179. package/dist/cjs/util/type-utils.d.ts +3 -13
  180. package/dist/esm/dialect/database-introspector.d.ts +4 -0
  181. package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
  182. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  183. package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
  184. package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
  185. package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
  186. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  187. package/dist/esm/driver/database-connection.d.ts +6 -2
  188. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
  189. package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
  190. package/dist/esm/expression/expression.d.ts +100 -0
  191. package/dist/esm/expression/expression.js +12 -0
  192. package/dist/esm/index.d.ts +17 -8
  193. package/dist/esm/index.js +13 -4
  194. package/dist/esm/kysely.d.ts +3 -3
  195. package/dist/esm/kysely.js +3 -3
  196. package/dist/esm/migration/file-migration-provider.js +11 -4
  197. package/dist/esm/operation-node/aggregate-function-node.d.ts +25 -0
  198. package/dist/esm/operation-node/aggregate-function-node.js +46 -0
  199. package/dist/esm/operation-node/alias-node.d.ts +3 -10
  200. package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
  201. package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
  202. package/dist/esm/operation-node/alter-table-node.js +9 -1
  203. package/dist/esm/operation-node/and-node.d.ts +3 -4
  204. package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
  205. package/dist/esm/operation-node/binary-operation-node.js +18 -0
  206. package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
  207. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  208. package/dist/esm/operation-node/column-definition-node.js +16 -0
  209. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  210. package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
  211. package/dist/esm/operation-node/create-index-node.d.ts +1 -3
  212. package/dist/esm/operation-node/create-table-node.d.ts +4 -5
  213. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  214. package/dist/esm/operation-node/create-type-node.js +1 -2
  215. package/dist/esm/operation-node/default-value-node.d.ts +2 -4
  216. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  217. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  218. package/dist/esm/operation-node/drop-type-node.js +1 -2
  219. package/dist/esm/operation-node/explain-node.d.ts +2 -4
  220. package/dist/esm/operation-node/explain-node.js +1 -1
  221. package/dist/esm/operation-node/from-node.d.ts +3 -4
  222. package/dist/esm/operation-node/generated-node.d.ts +2 -3
  223. package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
  224. package/dist/esm/operation-node/group-by-node.d.ts +1 -1
  225. package/dist/esm/operation-node/group-by-node.js +3 -3
  226. package/dist/esm/operation-node/having-node.d.ts +3 -4
  227. package/dist/esm/operation-node/having-node.js +4 -4
  228. package/dist/esm/operation-node/insert-query-node.d.ts +1 -4
  229. package/dist/esm/operation-node/join-node.d.ts +5 -9
  230. package/dist/esm/operation-node/join-node.js +6 -6
  231. package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
  232. package/dist/esm/operation-node/on-conflict-node.js +12 -12
  233. package/dist/esm/operation-node/on-node.d.ts +3 -4
  234. package/dist/esm/operation-node/on-node.js +4 -4
  235. package/dist/esm/operation-node/operation-node-transformer.d.ts +14 -4
  236. package/dist/esm/operation-node/operation-node-transformer.js +60 -20
  237. package/dist/esm/operation-node/operation-node-visitor.d.ts +14 -4
  238. package/dist/esm/operation-node/operation-node-visitor.js +7 -2
  239. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  240. package/dist/esm/operation-node/operator-node.d.ts +5 -3
  241. package/dist/esm/operation-node/operator-node.js +2 -4
  242. package/dist/esm/operation-node/or-node.d.ts +3 -4
  243. package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
  244. package/dist/esm/operation-node/over-node.d.ts +19 -0
  245. package/dist/esm/operation-node/over-node.js +33 -0
  246. package/dist/esm/operation-node/parens-node.d.ts +2 -3
  247. package/dist/esm/operation-node/partition-by-item-node.d.ts +13 -0
  248. package/dist/esm/operation-node/partition-by-item-node.js +16 -0
  249. package/dist/esm/operation-node/partition-by-node.d.ts +14 -0
  250. package/dist/esm/operation-node/partition-by-node.js +22 -0
  251. package/dist/esm/operation-node/query-node.d.ts +2 -3
  252. package/dist/esm/operation-node/query-node.js +6 -6
  253. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
  254. package/dist/esm/operation-node/select-modifier-node.js +1 -1
  255. package/dist/esm/operation-node/select-query-node.d.ts +8 -9
  256. package/dist/esm/operation-node/select-query-node.js +14 -14
  257. package/dist/esm/operation-node/selection-node.d.ts +2 -3
  258. package/dist/esm/operation-node/set-operation-node.d.ts +15 -0
  259. package/dist/esm/operation-node/set-operation-node.js +18 -0
  260. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
  261. package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
  262. package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
  263. package/dist/esm/operation-node/unary-operation-node.js +17 -0
  264. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  265. package/dist/esm/operation-node/value-list-node.d.ts +2 -8
  266. package/dist/esm/operation-node/where-node.d.ts +3 -4
  267. package/dist/esm/operation-node/where-node.js +4 -4
  268. package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
  269. package/dist/esm/parser/binary-operation-parser.js +92 -0
  270. package/dist/esm/parser/coalesce-parser.d.ts +4 -0
  271. package/dist/esm/parser/coalesce-parser.js +8 -0
  272. package/dist/esm/parser/data-type-parser.d.ts +5 -5
  273. package/dist/esm/parser/default-value-parser.d.ts +4 -5
  274. package/dist/esm/parser/default-value-parser.js +2 -2
  275. package/dist/esm/parser/expression-parser.d.ts +10 -0
  276. package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
  277. package/dist/esm/parser/group-by-parser.d.ts +1 -1
  278. package/dist/esm/parser/group-by-parser.js +2 -2
  279. package/dist/esm/parser/identifier-parser.d.ts +2 -0
  280. package/dist/esm/parser/identifier-parser.js +20 -0
  281. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  282. package/dist/esm/parser/insert-values-parser.js +2 -2
  283. package/dist/esm/parser/join-parser.js +2 -2
  284. package/dist/esm/parser/order-by-parser.d.ts +2 -2
  285. package/dist/esm/parser/parse-utils.d.ts +2 -0
  286. package/dist/esm/parser/parse-utils.js +7 -0
  287. package/dist/esm/parser/partition-by-parser.d.ts +6 -0
  288. package/dist/esm/parser/partition-by-parser.js +6 -0
  289. package/dist/esm/parser/reference-parser.d.ts +14 -13
  290. package/dist/esm/parser/reference-parser.js +10 -8
  291. package/dist/esm/parser/select-parser.d.ts +6 -6
  292. package/dist/esm/parser/select-parser.js +2 -2
  293. package/dist/esm/parser/set-operation-parser.d.ts +3 -0
  294. package/dist/esm/parser/set-operation-parser.js +5 -0
  295. package/dist/esm/parser/table-parser.d.ts +11 -12
  296. package/dist/esm/parser/table-parser.js +2 -2
  297. package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
  298. package/dist/esm/parser/unary-operation-parser.js +13 -0
  299. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  300. package/dist/esm/parser/value-parser.d.ts +5 -8
  301. package/dist/esm/parser/value-parser.js +4 -4
  302. package/dist/esm/parser/with-parser.d.ts +3 -4
  303. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  304. package/dist/esm/query-builder/aggregate-function-builder.d.ts +348 -0
  305. package/dist/esm/query-builder/aggregate-function-builder.js +294 -0
  306. package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
  307. package/dist/esm/query-builder/delete-query-builder.js +19 -16
  308. package/dist/esm/query-builder/expression-builder.d.ts +3 -3
  309. package/dist/esm/query-builder/expression-builder.js +3 -3
  310. package/dist/esm/query-builder/function-module.d.ts +241 -0
  311. package/dist/esm/query-builder/function-module.js +211 -0
  312. package/dist/esm/query-builder/having-interface.d.ts +9 -8
  313. package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
  314. package/dist/esm/query-builder/insert-query-builder.js +11 -9
  315. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  316. package/dist/esm/query-builder/insert-result.js +12 -1
  317. package/dist/esm/query-builder/join-builder.d.ts +9 -8
  318. package/dist/esm/query-builder/join-builder.js +10 -9
  319. package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
  320. package/dist/esm/query-builder/on-conflict-builder.js +18 -17
  321. package/dist/esm/query-builder/over-builder.d.ts +59 -0
  322. package/dist/esm/query-builder/over-builder.js +47 -0
  323. package/dist/esm/query-builder/select-query-builder.d.ts +138 -47
  324. package/dist/esm/query-builder/select-query-builder.js +120 -38
  325. package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
  326. package/dist/esm/query-builder/update-query-builder.js +19 -16
  327. package/dist/esm/query-builder/where-interface.d.ts +12 -11
  328. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  329. package/dist/esm/query-compiler/default-query-compiler.d.ts +15 -5
  330. package/dist/esm/query-compiler/default-query-compiler.js +79 -48
  331. package/dist/esm/query-executor/query-executor-base.js +16 -1
  332. package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
  333. package/dist/esm/raw-builder/raw-builder.js +23 -14
  334. package/dist/esm/raw-builder/sql.d.ts +15 -7
  335. package/dist/esm/raw-builder/sql.js +6 -0
  336. package/dist/esm/schema/alter-column-builder.d.ts +28 -0
  337. package/dist/esm/schema/alter-column-builder.js +51 -0
  338. package/dist/esm/schema/alter-table-builder.d.ts +39 -341
  339. package/dist/esm/schema/alter-table-builder.js +61 -274
  340. package/dist/esm/schema/column-definition-builder.d.ts +43 -155
  341. package/dist/esm/schema/column-definition-builder.js +189 -0
  342. package/dist/esm/schema/create-index-builder.d.ts +2 -2
  343. package/dist/esm/schema/create-table-builder.d.ts +38 -5
  344. package/dist/esm/schema/create-table-builder.js +36 -1
  345. package/dist/esm/schema/create-view-builder.d.ts +3 -2
  346. package/dist/esm/schema/schema.d.ts +2 -2
  347. package/dist/esm/schema/schema.js +6 -5
  348. package/dist/esm/util/compilable.d.ts +2 -2
  349. package/dist/esm/util/explainable.d.ts +2 -2
  350. package/dist/esm/util/infer-result.d.ts +46 -0
  351. package/dist/esm/util/infer-result.js +2 -0
  352. package/dist/esm/util/log-once.d.ts +5 -0
  353. package/dist/esm/util/log-once.js +13 -0
  354. package/dist/esm/util/object-utils.d.ts +1 -0
  355. package/dist/esm/util/object-utils.js +3 -0
  356. package/dist/esm/util/type-utils.d.ts +3 -13
  357. package/package.json +4 -1
  358. package/dist/cjs/operation-node/filter-node.d.ts +0 -18
  359. package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -17
  360. package/dist/cjs/operation-node/union-node.d.ts +0 -16
  361. package/dist/cjs/parser/complex-expression-parser.d.ts +0 -10
  362. package/dist/cjs/parser/filter-parser.d.ts +0 -24
  363. package/dist/cjs/parser/filter-parser.js +0 -109
  364. package/dist/cjs/parser/union-parser.d.ts +0 -5
  365. package/dist/cjs/parser/union-parser.js +0 -8
  366. package/dist/cjs/query-builder/function-builder.d.ts +0 -133
  367. package/dist/cjs/query-builder/function-builder.js +0 -160
  368. package/dist/esm/operation-node/filter-node.d.ts +0 -18
  369. package/dist/esm/operation-node/filter-node.js +0 -18
  370. package/dist/esm/operation-node/operation-node-utils.d.ts +0 -17
  371. package/dist/esm/operation-node/operation-node-utils.js +0 -2
  372. package/dist/esm/operation-node/union-node.d.ts +0 -16
  373. package/dist/esm/operation-node/union-node.js +0 -17
  374. package/dist/esm/parser/complex-expression-parser.d.ts +0 -10
  375. package/dist/esm/parser/filter-parser.d.ts +0 -24
  376. package/dist/esm/parser/filter-parser.js +0 -100
  377. package/dist/esm/parser/union-parser.d.ts +0 -5
  378. package/dist/esm/parser/union-parser.js +0 -5
  379. package/dist/esm/query-builder/function-builder.d.ts +0 -133
  380. package/dist/esm/query-builder/function-builder.js +0 -157
@@ -17,12 +17,12 @@ exports.HavingNode = (0, object_utils_js_1.freeze)({
17
17
  having: filter,
18
18
  });
19
19
  },
20
- cloneWithFilter(havingNode, op, filter) {
20
+ cloneWithOperation(havingNode, operator, operation) {
21
21
  return (0, object_utils_js_1.freeze)({
22
22
  ...havingNode,
23
- having: op === 'And'
24
- ? and_node_js_1.AndNode.create(havingNode.having, filter)
25
- : or_node_js_1.OrNode.create(havingNode.having, filter),
23
+ having: operator === 'And'
24
+ ? and_node_js_1.AndNode.create(havingNode.having, operation)
25
+ : or_node_js_1.OrNode.create(havingNode.having, operation),
26
26
  });
27
27
  },
28
28
  });
@@ -3,18 +3,15 @@ import { ExplainNode } from './explain-node.js';
3
3
  import { OnConflictNode } from './on-conflict-node.js';
4
4
  import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
5
5
  import { OperationNode } from './operation-node.js';
6
- import { RawNode } from './raw-node.js';
7
6
  import { ReturningNode } from './returning-node.js';
8
- import { SelectQueryNode } from './select-query-node.js';
9
7
  import { TableNode } from './table-node.js';
10
- import { ValuesNode } from './values-node.js';
11
8
  import { WithNode } from './with-node.js';
12
9
  export declare type InsertQueryNodeProps = Omit<InsertQueryNode, 'kind' | 'into'>;
13
10
  export interface InsertQueryNode extends OperationNode {
14
11
  readonly kind: 'InsertQueryNode';
15
12
  readonly into: TableNode;
16
13
  readonly columns?: ReadonlyArray<ColumnNode>;
17
- readonly values?: ValuesNode | SelectQueryNode | RawNode;
14
+ readonly values?: OperationNode;
18
15
  readonly returning?: ReturningNode;
19
16
  readonly onConflict?: OnConflictNode;
20
17
  readonly onDuplicateKey?: OnDuplicateKeyNode;
@@ -1,14 +1,10 @@
1
- import { AliasNode } from './alias-node.js';
2
1
  import { OnNode } from './on-node.js';
3
- import { FilterExpressionNode } from './operation-node-utils.js';
4
2
  import { OperationNode } from './operation-node.js';
5
- import { TableNode } from './table-node.js';
6
- export declare type JoinTableNode = TableNode | AliasNode;
7
3
  export declare type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin' | 'LateralInnerJoin' | 'LateralLeftJoin';
8
4
  export interface JoinNode extends OperationNode {
9
5
  readonly kind: 'JoinNode';
10
6
  readonly joinType: JoinType;
11
- readonly table: JoinTableNode;
7
+ readonly table: OperationNode;
12
8
  readonly on?: OnNode;
13
9
  }
14
10
  /**
@@ -16,8 +12,8 @@ export interface JoinNode extends OperationNode {
16
12
  */
17
13
  export declare const JoinNode: Readonly<{
18
14
  is(node: OperationNode): node is JoinNode;
19
- create(joinType: JoinType, table: JoinTableNode): JoinNode;
20
- createWithOn(joinType: JoinType, table: JoinTableNode, on: FilterExpressionNode): JoinNode;
21
- cloneWithOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
22
- cloneWithOrOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
15
+ create(joinType: JoinType, table: OperationNode): JoinNode;
16
+ createWithOn(joinType: JoinType, table: OperationNode, on: OperationNode): JoinNode;
17
+ cloneWithOn(joinNode: JoinNode, operation: OperationNode): JoinNode;
18
+ cloneWithOrOn(joinNode: JoinNode, operation: OperationNode): JoinNode;
23
19
  }>;
@@ -26,20 +26,20 @@ exports.JoinNode = (0, object_utils_js_1.freeze)({
26
26
  on: on_node_js_1.OnNode.create(on),
27
27
  });
28
28
  },
29
- cloneWithOn(joinNode, filter) {
29
+ cloneWithOn(joinNode, operation) {
30
30
  return (0, object_utils_js_1.freeze)({
31
31
  ...joinNode,
32
32
  on: joinNode.on
33
- ? on_node_js_1.OnNode.cloneWithFilter(joinNode.on, 'And', filter)
34
- : on_node_js_1.OnNode.create(filter),
33
+ ? on_node_js_1.OnNode.cloneWithOperation(joinNode.on, 'And', operation)
34
+ : on_node_js_1.OnNode.create(operation),
35
35
  });
36
36
  },
37
- cloneWithOrOn(joinNode, filter) {
37
+ cloneWithOrOn(joinNode, operation) {
38
38
  return (0, object_utils_js_1.freeze)({
39
39
  ...joinNode,
40
40
  on: joinNode.on
41
- ? on_node_js_1.OnNode.cloneWithFilter(joinNode.on, 'Or', filter)
42
- : on_node_js_1.OnNode.create(filter),
41
+ ? on_node_js_1.OnNode.cloneWithOperation(joinNode.on, 'Or', operation)
42
+ : on_node_js_1.OnNode.create(operation),
43
43
  });
44
44
  },
45
45
  });
@@ -1,16 +1,14 @@
1
1
  import { ColumnNode } from './column-node.js';
2
2
  import { ColumnUpdateNode } from './column-update-node.js';
3
3
  import { IdentifierNode } from './identifier-node.js';
4
- import { FilterExpressionNode } from './operation-node-utils.js';
5
4
  import { OperationNode } from './operation-node.js';
6
- import { RawNode } from './raw-node.js';
7
5
  import { WhereNode } from './where-node.js';
8
6
  export declare type OnConflictNodeProps = Omit<OnConflictNode, 'kind' | 'indexWhere' | 'updateWhere'>;
9
7
  export interface OnConflictNode extends OperationNode {
10
8
  readonly kind: 'OnConflictNode';
11
9
  readonly columns?: ReadonlyArray<ColumnNode>;
12
10
  readonly constraint?: IdentifierNode;
13
- readonly indexExpression?: RawNode;
11
+ readonly indexExpression?: OperationNode;
14
12
  readonly indexWhere?: WhereNode;
15
13
  readonly updates?: ReadonlyArray<ColumnUpdateNode>;
16
14
  readonly updateWhere?: WhereNode;
@@ -23,8 +21,8 @@ export declare const OnConflictNode: Readonly<{
23
21
  is(node: OperationNode): node is OnConflictNode;
24
22
  create(): OnConflictNode;
25
23
  cloneWith(node: OnConflictNode, props: OnConflictNodeProps): OnConflictNode;
26
- cloneWithIndexWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
27
- cloneWithIndexOrWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
28
- cloneWithUpdateWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
29
- cloneWithUpdateOrWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
24
+ cloneWithIndexWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
25
+ cloneWithIndexOrWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
26
+ cloneWithUpdateWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
27
+ cloneWithUpdateOrWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
30
28
  }>;
@@ -21,36 +21,36 @@ exports.OnConflictNode = (0, object_utils_js_1.freeze)({
21
21
  ...props,
22
22
  });
23
23
  },
24
- cloneWithIndexWhere(node, filter) {
24
+ cloneWithIndexWhere(node, operation) {
25
25
  return (0, object_utils_js_1.freeze)({
26
26
  ...node,
27
27
  indexWhere: node.indexWhere
28
- ? where_node_js_1.WhereNode.cloneWithFilter(node.indexWhere, 'And', filter)
29
- : where_node_js_1.WhereNode.create(filter),
28
+ ? where_node_js_1.WhereNode.cloneWithOperation(node.indexWhere, 'And', operation)
29
+ : where_node_js_1.WhereNode.create(operation),
30
30
  });
31
31
  },
32
- cloneWithIndexOrWhere(node, filter) {
32
+ cloneWithIndexOrWhere(node, operation) {
33
33
  return (0, object_utils_js_1.freeze)({
34
34
  ...node,
35
35
  indexWhere: node.indexWhere
36
- ? where_node_js_1.WhereNode.cloneWithFilter(node.indexWhere, 'Or', filter)
37
- : where_node_js_1.WhereNode.create(filter),
36
+ ? where_node_js_1.WhereNode.cloneWithOperation(node.indexWhere, 'Or', operation)
37
+ : where_node_js_1.WhereNode.create(operation),
38
38
  });
39
39
  },
40
- cloneWithUpdateWhere(node, filter) {
40
+ cloneWithUpdateWhere(node, operation) {
41
41
  return (0, object_utils_js_1.freeze)({
42
42
  ...node,
43
43
  updateWhere: node.updateWhere
44
- ? where_node_js_1.WhereNode.cloneWithFilter(node.updateWhere, 'And', filter)
45
- : where_node_js_1.WhereNode.create(filter),
44
+ ? where_node_js_1.WhereNode.cloneWithOperation(node.updateWhere, 'And', operation)
45
+ : where_node_js_1.WhereNode.create(operation),
46
46
  });
47
47
  },
48
- cloneWithUpdateOrWhere(node, filter) {
48
+ cloneWithUpdateOrWhere(node, operation) {
49
49
  return (0, object_utils_js_1.freeze)({
50
50
  ...node,
51
51
  updateWhere: node.updateWhere
52
- ? where_node_js_1.WhereNode.cloneWithFilter(node.updateWhere, 'Or', filter)
53
- : where_node_js_1.WhereNode.create(filter),
52
+ ? where_node_js_1.WhereNode.cloneWithOperation(node.updateWhere, 'Or', operation)
53
+ : where_node_js_1.WhereNode.create(operation),
54
54
  });
55
55
  },
56
56
  });
@@ -1,14 +1,13 @@
1
- import { FilterExpressionNode } from './operation-node-utils.js';
2
1
  import { OperationNode } from './operation-node.js';
3
2
  export interface OnNode extends OperationNode {
4
3
  readonly kind: 'OnNode';
5
- readonly on: FilterExpressionNode;
4
+ readonly on: OperationNode;
6
5
  }
7
6
  /**
8
7
  * @internal
9
8
  */
10
9
  export declare const OnNode: Readonly<{
11
10
  is(node: OperationNode): node is OnNode;
12
- create(filter: FilterExpressionNode): OnNode;
13
- cloneWithFilter(onNode: OnNode, op: 'And' | 'Or', filter: FilterExpressionNode): OnNode;
11
+ create(filter: OperationNode): OnNode;
12
+ cloneWithOperation(onNode: OnNode, operator: 'And' | 'Or', operation: OperationNode): OnNode;
14
13
  }>;
@@ -17,12 +17,12 @@ exports.OnNode = (0, object_utils_js_1.freeze)({
17
17
  on: filter,
18
18
  });
19
19
  },
20
- cloneWithFilter(onNode, op, filter) {
20
+ cloneWithOperation(onNode, operator, operation) {
21
21
  return (0, object_utils_js_1.freeze)({
22
22
  ...onNode,
23
- on: op === 'And'
24
- ? and_node_js_1.AndNode.create(onNode.on, filter)
25
- : or_node_js_1.OrNode.create(onNode.on, filter),
23
+ on: operator === 'And'
24
+ ? and_node_js_1.AndNode.create(onNode.on, operation)
25
+ : or_node_js_1.OrNode.create(onNode.on, operation),
26
26
  });
27
27
  },
28
28
  });
@@ -15,7 +15,6 @@ import { RawNode } from './raw-node.js';
15
15
  import { SelectQueryNode } from './select-query-node.js';
16
16
  import { ValueListNode } from './value-list-node.js';
17
17
  import { ValueNode } from './value-node.js';
18
- import { FilterNode } from './filter-node.js';
19
18
  import { OperatorNode } from './operator-node.js';
20
19
  import { FromNode } from './from-node.js';
21
20
  import { WhereNode } from './where-node.js';
@@ -58,7 +57,6 @@ import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
58
57
  import { ColumnDefinitionNode } from './column-definition-node.js';
59
58
  import { ModifyColumnNode } from './modify-column-node.js';
60
59
  import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
61
- import { UnionNode } from './union-node.js';
62
60
  import { CreateViewNode } from './create-view-node.js';
63
61
  import { DropViewNode } from './drop-view-node.js';
64
62
  import { GeneratedNode } from './generated-node.js';
@@ -71,6 +69,13 @@ import { DropTypeNode } from './drop-type-node.js';
71
69
  import { ExplainNode } from './explain-node.js';
72
70
  import { SchemableIdentifierNode } from './schemable-identifier-node.js';
73
71
  import { DefaultInsertValueNode } from './default-insert-value-node.js';
72
+ import { AggregateFunctionNode } from './aggregate-function-node.js';
73
+ import { OverNode } from './over-node.js';
74
+ import { PartitionByNode } from './partition-by-node.js';
75
+ import { PartitionByItemNode } from './partition-by-item-node.js';
76
+ import { SetOperationNode } from './set-operation-node.js';
77
+ import { BinaryOperationNode } from './binary-operation-node.js';
78
+ import { UnaryOperationNode } from './unary-operation-node.js';
74
79
  /**
75
80
  * Transforms an operation node tree into another one.
76
81
  *
@@ -113,7 +118,6 @@ export declare class OperationNodeTransformer {
113
118
  protected transformTable(node: TableNode): TableNode;
114
119
  protected transformFrom(node: FromNode): FromNode;
115
120
  protected transformReference(node: ReferenceNode): ReferenceNode;
116
- protected transformFilter(node: FilterNode): FilterNode;
117
121
  protected transformAnd(node: AndNode): AndNode;
118
122
  protected transformOr(node: OrNode): OrNode;
119
123
  protected transformValueList(node: ValueListNode): ValueListNode;
@@ -145,7 +149,7 @@ export declare class OperationNodeTransformer {
145
149
  protected transformPrimaryKeyConstraint(node: PrimaryKeyConstraintNode): PrimaryKeyConstraintNode;
146
150
  protected transformUniqueConstraint(node: UniqueConstraintNode): UniqueConstraintNode;
147
151
  protected transformForeignKeyConstraint(node: ForeignKeyConstraintNode): ForeignKeyConstraintNode;
148
- protected transformUnion(node: UnionNode): UnionNode;
152
+ protected transformSetOperation(node: SetOperationNode): SetOperationNode;
149
153
  protected transformReferences(node: ReferencesNode): ReferencesNode;
150
154
  protected transformCheckConstraint(node: CheckConstraintNode): CheckConstraintNode;
151
155
  protected transformWith(node: WithNode): WithNode;
@@ -171,6 +175,12 @@ export declare class OperationNodeTransformer {
171
175
  protected transformDropType(node: DropTypeNode): DropTypeNode;
172
176
  protected transformExplain(node: ExplainNode): ExplainNode;
173
177
  protected transformSchemableIdentifier(node: SchemableIdentifierNode): SchemableIdentifierNode;
178
+ protected transformAggregateFunction(node: AggregateFunctionNode): AggregateFunctionNode;
179
+ protected transformOver(node: OverNode): OverNode;
180
+ protected transformPartitionBy(node: PartitionByNode): PartitionByNode;
181
+ protected transformPartitionByItem(node: PartitionByItemNode): PartitionByItemNode;
182
+ protected transformBinaryOperation(node: BinaryOperationNode): BinaryOperationNode;
183
+ protected transformUnaryOperation(node: UnaryOperationNode): UnaryOperationNode;
174
184
  protected transformDataType(node: DataTypeNode): DataTypeNode;
175
185
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
176
186
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -46,7 +46,6 @@ class OperationNodeTransformer {
46
46
  TableNode: this.transformTable.bind(this),
47
47
  FromNode: this.transformFrom.bind(this),
48
48
  SelectAllNode: this.transformSelectAll.bind(this),
49
- FilterNode: this.transformFilter.bind(this),
50
49
  AndNode: this.transformAnd.bind(this),
51
50
  OrNode: this.transformOr.bind(this),
52
51
  ValueNode: this.transformValue.bind(this),
@@ -95,7 +94,6 @@ class OperationNodeTransformer {
95
94
  AddConstraintNode: this.transformAddConstraint.bind(this),
96
95
  DropConstraintNode: this.transformDropConstraint.bind(this),
97
96
  ForeignKeyConstraintNode: this.transformForeignKeyConstraint.bind(this),
98
- UnionNode: this.transformUnion.bind(this),
99
97
  CreateViewNode: this.transformCreateView.bind(this),
100
98
  DropViewNode: this.transformDropView.bind(this),
101
99
  GeneratedNode: this.transformGenerated.bind(this),
@@ -107,6 +105,13 @@ class OperationNodeTransformer {
107
105
  DropTypeNode: this.transformDropType.bind(this),
108
106
  ExplainNode: this.transformExplain.bind(this),
109
107
  DefaultInsertValueNode: this.transformDefaultInsertValue.bind(this),
108
+ AggregateFunctionNode: this.transformAggregateFunction.bind(this),
109
+ OverNode: this.transformOver.bind(this),
110
+ PartitionByNode: this.transformPartitionBy.bind(this),
111
+ PartitionByItemNode: this.transformPartitionByItem.bind(this),
112
+ SetOperationNode: this.transformSetOperation.bind(this),
113
+ BinaryOperationNode: this.transformBinaryOperation.bind(this),
114
+ UnaryOperationNode: this.transformUnaryOperation.bind(this),
110
115
  });
111
116
  transformNode(node) {
112
117
  if (!node) {
@@ -131,7 +136,7 @@ class OperationNodeTransformer {
131
136
  kind: 'SelectQueryNode',
132
137
  from: this.transformNode(node.from),
133
138
  selections: this.transformNodeList(node.selections),
134
- distinctOnSelections: this.transformNodeList(node.distinctOnSelections),
139
+ distinctOn: this.transformNodeList(node.distinctOn),
135
140
  joins: this.transformNodeList(node.joins),
136
141
  groupBy: this.transformNode(node.groupBy),
137
142
  orderBy: this.transformNode(node.orderBy),
@@ -142,8 +147,8 @@ class OperationNodeTransformer {
142
147
  offset: this.transformNode(node.offset),
143
148
  with: this.transformNode(node.with),
144
149
  having: this.transformNode(node.having),
145
- union: this.transformNodeList(node.union),
146
150
  explain: this.transformNode(node.explain),
151
+ setOperations: this.transformNodeList(node.setOperations),
147
152
  });
148
153
  }
149
154
  transformSelection(node) {
@@ -184,14 +189,6 @@ class OperationNodeTransformer {
184
189
  column: this.transformNode(node.column),
185
190
  });
186
191
  }
187
- transformFilter(node) {
188
- return (0, require_all_props_js_1.requireAllProps)({
189
- kind: 'FilterNode',
190
- left: this.transformNode(node.left),
191
- op: this.transformNode(node.op),
192
- right: this.transformNode(node.right),
193
- });
194
- }
195
192
  transformAnd(node) {
196
193
  return (0, require_all_props_js_1.requireAllProps)({
197
194
  kind: 'AndNode',
@@ -306,6 +303,8 @@ class OperationNodeTransformer {
306
303
  defaultTo: this.transformNode(node.defaultTo),
307
304
  check: this.transformNode(node.check),
308
305
  generated: this.transformNode(node.generated),
306
+ frontModifiers: this.transformNodeList(node.frontModifiers),
307
+ endModifiers: this.transformNodeList(node.endModifiers),
309
308
  });
310
309
  }
311
310
  transformAddColumn(node) {
@@ -446,10 +445,11 @@ class OperationNodeTransformer {
446
445
  onUpdate: node.onUpdate,
447
446
  });
448
447
  }
449
- transformUnion(node) {
448
+ transformSetOperation(node) {
450
449
  return (0, require_all_props_js_1.requireAllProps)({
451
- kind: 'UnionNode',
452
- union: this.transformNode(node.union),
450
+ kind: 'SetOperationNode',
451
+ operator: node.operator,
452
+ expression: this.transformNode(node.expression),
453
453
  all: node.all,
454
454
  });
455
455
  }
@@ -517,11 +517,7 @@ class OperationNodeTransformer {
517
517
  table: this.transformNode(node.table),
518
518
  renameTo: this.transformNode(node.renameTo),
519
519
  setSchema: this.transformNode(node.setSchema),
520
- renameColumn: this.transformNode(node.renameColumn),
521
- addColumn: this.transformNode(node.addColumn),
522
- dropColumn: this.transformNode(node.dropColumn),
523
- alterColumn: this.transformNode(node.alterColumn),
524
- modifyColumn: this.transformNode(node.modifyColumn),
520
+ columnAlterations: this.transformNodeList(node.columnAlterations),
525
521
  addConstraint: this.transformNode(node.addConstraint),
526
522
  dropConstraint: this.transformNode(node.dropConstraint),
527
523
  });
@@ -649,6 +645,50 @@ class OperationNodeTransformer {
649
645
  identifier: this.transformNode(node.identifier),
650
646
  });
651
647
  }
648
+ transformAggregateFunction(node) {
649
+ return (0, require_all_props_js_1.requireAllProps)({
650
+ kind: 'AggregateFunctionNode',
651
+ column: this.transformNode(node.column),
652
+ distinct: node.distinct,
653
+ filter: this.transformNode(node.filter),
654
+ func: node.func,
655
+ over: this.transformNode(node.over),
656
+ });
657
+ }
658
+ transformOver(node) {
659
+ return (0, require_all_props_js_1.requireAllProps)({
660
+ kind: 'OverNode',
661
+ orderBy: this.transformNode(node.orderBy),
662
+ partitionBy: this.transformNode(node.partitionBy),
663
+ });
664
+ }
665
+ transformPartitionBy(node) {
666
+ return (0, require_all_props_js_1.requireAllProps)({
667
+ kind: 'PartitionByNode',
668
+ items: this.transformNodeList(node.items),
669
+ });
670
+ }
671
+ transformPartitionByItem(node) {
672
+ return (0, require_all_props_js_1.requireAllProps)({
673
+ kind: 'PartitionByItemNode',
674
+ partitionBy: this.transformNode(node.partitionBy),
675
+ });
676
+ }
677
+ transformBinaryOperation(node) {
678
+ return (0, require_all_props_js_1.requireAllProps)({
679
+ kind: 'BinaryOperationNode',
680
+ leftOperand: this.transformNode(node.leftOperand),
681
+ operator: this.transformNode(node.operator),
682
+ rightOperand: this.transformNode(node.rightOperand),
683
+ });
684
+ }
685
+ transformUnaryOperation(node) {
686
+ return (0, require_all_props_js_1.requireAllProps)({
687
+ kind: 'UnaryOperationNode',
688
+ operator: this.transformNode(node.operator),
689
+ operand: this.transformNode(node.operand),
690
+ });
691
+ }
652
692
  transformDataType(node) {
653
693
  // An Object.freezed leaf node. No need to clone.
654
694
  return node;
@@ -15,7 +15,6 @@ import { RawNode } from './raw-node.js';
15
15
  import { SelectQueryNode } from './select-query-node.js';
16
16
  import { ValueListNode } from './value-list-node.js';
17
17
  import { ValueNode } from './value-node.js';
18
- import { FilterNode } from './filter-node.js';
19
18
  import { OperatorNode } from './operator-node.js';
20
19
  import { FromNode } from './from-node.js';
21
20
  import { WhereNode } from './where-node.js';
@@ -58,7 +57,6 @@ import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
58
57
  import { ColumnDefinitionNode } from './column-definition-node.js';
59
58
  import { ModifyColumnNode } from './modify-column-node.js';
60
59
  import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
61
- import { UnionNode } from './union-node.js';
62
60
  import { CreateViewNode } from './create-view-node.js';
63
61
  import { DropViewNode } from './drop-view-node.js';
64
62
  import { GeneratedNode } from './generated-node.js';
@@ -71,6 +69,13 @@ import { DropTypeNode } from './drop-type-node.js';
71
69
  import { ExplainNode } from './explain-node.js';
72
70
  import { SchemableIdentifierNode } from './schemable-identifier-node.js';
73
71
  import { DefaultInsertValueNode } from './default-insert-value-node.js';
72
+ import { AggregateFunctionNode } from './aggregate-function-node.js';
73
+ import { OverNode } from './over-node.js';
74
+ import { PartitionByNode } from './partition-by-node.js';
75
+ import { PartitionByItemNode } from './partition-by-item-node.js';
76
+ import { SetOperationNode } from './set-operation-node.js';
77
+ import { BinaryOperationNode } from './binary-operation-node.js';
78
+ import { UnaryOperationNode } from './unary-operation-node.js';
74
79
  export declare abstract class OperationNodeVisitor {
75
80
  #private;
76
81
  protected readonly nodeStack: OperationNode[];
@@ -83,7 +88,6 @@ export declare abstract class OperationNodeVisitor {
83
88
  protected abstract visitTable(node: TableNode): void;
84
89
  protected abstract visitFrom(node: FromNode): void;
85
90
  protected abstract visitReference(node: ReferenceNode): void;
86
- protected abstract visitFilter(node: FilterNode): void;
87
91
  protected abstract visitAnd(node: AndNode): void;
88
92
  protected abstract visitOr(node: OrNode): void;
89
93
  protected abstract visitValueList(node: ValueListNode): void;
@@ -129,7 +133,6 @@ export declare abstract class OperationNodeVisitor {
129
133
  protected abstract visitAddConstraint(node: AddConstraintNode): void;
130
134
  protected abstract visitDropConstraint(node: DropConstraintNode): void;
131
135
  protected abstract visitForeignKeyConstraint(node: ForeignKeyConstraintNode): void;
132
- protected abstract visitUnion(node: UnionNode): void;
133
136
  protected abstract visitDataType(node: DataTypeNode): void;
134
137
  protected abstract visitSelectAll(node: SelectAllNode): void;
135
138
  protected abstract visitIdentifier(node: IdentifierNode): void;
@@ -148,4 +151,11 @@ export declare abstract class OperationNodeVisitor {
148
151
  protected abstract visitDropType(node: DropTypeNode): void;
149
152
  protected abstract visitExplain(node: ExplainNode): void;
150
153
  protected abstract visitDefaultInsertValue(node: DefaultInsertValueNode): void;
154
+ protected abstract visitAggregateFunction(node: AggregateFunctionNode): void;
155
+ protected abstract visitOver(node: OverNode): void;
156
+ protected abstract visitPartitionBy(node: PartitionByNode): void;
157
+ protected abstract visitPartitionByItem(node: PartitionByItemNode): void;
158
+ protected abstract visitSetOperation(node: SetOperationNode): void;
159
+ protected abstract visitBinaryOperation(node: BinaryOperationNode): void;
160
+ protected abstract visitUnaryOperation(node: UnaryOperationNode): void;
151
161
  }
@@ -19,7 +19,6 @@ class OperationNodeVisitor {
19
19
  TableNode: this.visitTable.bind(this),
20
20
  FromNode: this.visitFrom.bind(this),
21
21
  SelectAllNode: this.visitSelectAll.bind(this),
22
- FilterNode: this.visitFilter.bind(this),
23
22
  AndNode: this.visitAnd.bind(this),
24
23
  OrNode: this.visitOr.bind(this),
25
24
  ValueNode: this.visitValue.bind(this),
@@ -68,7 +67,6 @@ class OperationNodeVisitor {
68
67
  AddConstraintNode: this.visitAddConstraint.bind(this),
69
68
  DropConstraintNode: this.visitDropConstraint.bind(this),
70
69
  ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),
71
- UnionNode: this.visitUnion.bind(this),
72
70
  CreateViewNode: this.visitCreateView.bind(this),
73
71
  DropViewNode: this.visitDropView.bind(this),
74
72
  GeneratedNode: this.visitGenerated.bind(this),
@@ -80,6 +78,13 @@ class OperationNodeVisitor {
80
78
  DropTypeNode: this.visitDropType.bind(this),
81
79
  ExplainNode: this.visitExplain.bind(this),
82
80
  DefaultInsertValueNode: this.visitDefaultInsertValue.bind(this),
81
+ AggregateFunctionNode: this.visitAggregateFunction.bind(this),
82
+ OverNode: this.visitOver.bind(this),
83
+ PartitionByNode: this.visitPartitionBy.bind(this),
84
+ PartitionByItemNode: this.visitPartitionByItem.bind(this),
85
+ SetOperationNode: this.visitSetOperation.bind(this),
86
+ BinaryOperationNode: this.visitBinaryOperation.bind(this),
87
+ UnaryOperationNode: this.visitUnaryOperation.bind(this),
83
88
  });
84
89
  visitNode = (node) => {
85
90
  this.nodeStack.push(node);
@@ -1,4 +1,4 @@
1
- export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | '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' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode';
1
+ export declare 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';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -1,7 +1,9 @@
1
- import { ArrayItemType } from '../util/type-utils.js';
2
1
  import { OperationNode } from './operation-node.js';
3
- export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "ilike", "not ilike", "@>", "<@", "?", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "exists", "not exists", "&&", "||", "@@", "@@@", "!!", "<->"];
4
- export declare type Operator = ArrayItemType<typeof OPERATORS>;
2
+ export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "&&", "||", "@@", "@@@", "!!", "<->"];
3
+ export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
4
+ export declare type ComparisonOperator = typeof COMPARISON_OPERATORS[number];
5
+ export declare type UnaryFilterOperator = typeof UNARY_FILTER_OPERATORS[number];
6
+ export declare type Operator = ComparisonOperator | UnaryFilterOperator;
5
7
  export interface OperatorNode extends OperationNode {
6
8
  readonly kind: 'OperatorNode';
7
9
  readonly operator: Operator;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperatorNode = exports.OPERATORS = void 0;
3
+ exports.OperatorNode = exports.UNARY_FILTER_OPERATORS = exports.COMPARISON_OPERATORS = void 0;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
- exports.OPERATORS = [
5
+ exports.COMPARISON_OPERATORS = [
6
6
  '=',
7
7
  '==',
8
8
  '!=',
@@ -22,7 +22,6 @@ exports.OPERATORS = [
22
22
  '@>',
23
23
  '<@',
24
24
  '?',
25
- '?',
26
25
  '?&',
27
26
  '!<',
28
27
  '!>',
@@ -31,8 +30,6 @@ exports.OPERATORS = [
31
30
  '~',
32
31
  '~*',
33
32
  '!~*',
34
- 'exists',
35
- 'not exists',
36
33
  '&&',
37
34
  '||',
38
35
  '@@',
@@ -40,6 +37,7 @@ exports.OPERATORS = [
40
37
  '!!',
41
38
  '<->',
42
39
  ];
40
+ exports.UNARY_FILTER_OPERATORS = ['exists', 'not exists'];
43
41
  /**
44
42
  * @internal
45
43
  */
@@ -1,14 +1,13 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { FilterExpressionNode } from './operation-node-utils.js';
3
2
  export interface OrNode extends OperationNode {
4
3
  readonly kind: 'OrNode';
5
- readonly left: FilterExpressionNode;
6
- readonly right: FilterExpressionNode;
4
+ readonly left: OperationNode;
5
+ readonly right: OperationNode;
7
6
  }
8
7
  /**
9
8
  * @internal
10
9
  */
11
10
  export declare const OrNode: Readonly<{
12
11
  is(node: OperationNode): node is OrNode;
13
- create(left: FilterExpressionNode, right: FilterExpressionNode): OrNode;
12
+ create(left: OperationNode, right: OperationNode): OrNode;
14
13
  }>;
@@ -1,15 +1,13 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { ReferenceExpressionNode } from './operation-node-utils.js';
3
- import { RawNode } from './raw-node.js';
4
2
  export interface OrderByItemNode extends OperationNode {
5
3
  readonly kind: 'OrderByItemNode';
6
- readonly orderBy: ReferenceExpressionNode;
7
- readonly direction?: RawNode;
4
+ readonly orderBy: OperationNode;
5
+ readonly direction?: OperationNode;
8
6
  }
9
7
  /**
10
8
  * @internal
11
9
  */
12
10
  export declare const OrderByItemNode: Readonly<{
13
11
  is(node: OperationNode): node is OrderByItemNode;
14
- create(orderBy: ReferenceExpressionNode, direction?: RawNode): OrderByItemNode;
12
+ create(orderBy: OperationNode, direction?: OperationNode): OrderByItemNode;
15
13
  }>;
@@ -0,0 +1,19 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { OrderByItemNode } from './order-by-item-node.js';
3
+ import { OrderByNode } from './order-by-node.js';
4
+ import { PartitionByItemNode } from './partition-by-item-node.js';
5
+ import { PartitionByNode } from './partition-by-node.js';
6
+ export interface OverNode extends OperationNode {
7
+ readonly kind: 'OverNode';
8
+ readonly orderBy?: OrderByNode;
9
+ readonly partitionBy?: PartitionByNode;
10
+ }
11
+ /**
12
+ * @internal
13
+ */
14
+ export declare const OverNode: Readonly<{
15
+ is(node: OperationNode): node is OverNode;
16
+ create(): OverNode;
17
+ cloneWithOrderByItem(overNode: OverNode, item: OrderByItemNode): OverNode;
18
+ cloneWithPartitionByItems(overNode: OverNode, items: ReadonlyArray<PartitionByItemNode>): OverNode;
19
+ }>;