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
@@ -1,5 +1,6 @@
1
1
  export * from './kysely.js';
2
2
  export * from './query-creator.js';
3
+ export * from './expression/expression.js';
3
4
  export * from './query-builder/where-interface.js';
4
5
  export * from './query-builder/returning-interface.js';
5
6
  export * from './query-builder/having-interface.js';
@@ -10,11 +11,12 @@ export * from './query-builder/delete-query-builder.js';
10
11
  export * from './query-builder/no-result-error.js';
11
12
  export * from './query-builder/join-builder.js';
12
13
  export * from './query-builder/expression-builder.js';
13
- export * from './query-builder/function-builder.js';
14
+ export * from './query-builder/function-module.js';
14
15
  export * from './query-builder/insert-result.js';
15
16
  export * from './query-builder/delete-result.js';
16
17
  export * from './query-builder/update-result.js';
17
18
  export * from './query-builder/on-conflict-builder.js';
19
+ export * from './query-builder/aggregate-function-builder.js';
18
20
  export * from './raw-builder/raw-builder.js';
19
21
  export * from './raw-builder/sql.js';
20
22
  export * from './query-executor/query-executor.js';
@@ -37,6 +39,7 @@ export * from './schema/foreign-key-constraint-builder.js';
37
39
  export * from './schema/alter-table-builder.js';
38
40
  export * from './schema/create-view-builder.js';
39
41
  export * from './schema/drop-view-builder.js';
42
+ export * from './schema/alter-column-builder.js';
40
43
  export * from './dynamic/dynamic.js';
41
44
  export * from './driver/driver.js';
42
45
  export * from './driver/database-connection.js';
@@ -102,7 +105,6 @@ export * from './operation-node/drop-schema-node.js';
102
105
  export * from './operation-node/drop-table-node.js';
103
106
  export * from './operation-node/drop-type-node.js';
104
107
  export * from './operation-node/drop-view-node.js';
105
- export * from './operation-node/filter-node.js';
106
108
  export * from './operation-node/foreign-key-constraint-node.js';
107
109
  export * from './operation-node/from-node.js';
108
110
  export * from './operation-node/generated-node.js';
@@ -121,7 +123,6 @@ export * from './operation-node/on-duplicate-key-node.js';
121
123
  export * from './operation-node/on-node.js';
122
124
  export * from './operation-node/operation-node-source.js';
123
125
  export * from './operation-node/operation-node-transformer.js';
124
- export * from './operation-node/operation-node-utils.js';
125
126
  export * from './operation-node/operation-node-visitor.js';
126
127
  export * from './operation-node/operation-node.js';
127
128
  export * from './operation-node/operator-node.js';
@@ -142,7 +143,6 @@ export * from './operation-node/select-query-node.js';
142
143
  export * from './operation-node/select-query-node.js';
143
144
  export * from './operation-node/selection-node.js';
144
145
  export * from './operation-node/table-node.js';
145
- export * from './operation-node/union-node.js';
146
146
  export * from './operation-node/unique-constraint-node.js';
147
147
  export * from './operation-node/update-query-node.js';
148
148
  export * from './operation-node/value-list-node.js';
@@ -152,18 +152,27 @@ export * from './operation-node/where-node.js';
152
152
  export * from './operation-node/with-node.js';
153
153
  export * from './operation-node/explain-node.js';
154
154
  export * from './operation-node/default-insert-value-node.js';
155
+ export * from './operation-node/aggregate-function-node.js';
156
+ export * from './operation-node/over-node.js';
157
+ export * from './operation-node/partition-by-node.js';
158
+ export * from './operation-node/partition-by-item-node.js';
159
+ export * from './operation-node/set-operation-node.js';
160
+ export * from './operation-node/binary-operation-node.js';
161
+ export * from './operation-node/unary-operation-node.js';
155
162
  export * from './util/column-type.js';
156
163
  export * from './util/compilable.js';
157
164
  export * from './util/explainable.js';
158
165
  export * from './util/log.js';
159
- export { AnyColumn, UnknownRow, AnySelectQueryBuilder, } from './util/type-utils.js';
166
+ export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, AnySelectQueryBuilder, Equals, UnknownRow, } from './util/type-utils.js';
167
+ export * from './util/infer-result.js';
168
+ export { logOnce } from './util/log-once.js';
160
169
  export { SelectExpression, SelectExpressionOrList, Selection, } from './parser/select-parser.js';
161
- export { ReferenceExpression, ReferenceExpressionOrList, } from './parser/reference-parser.js';
170
+ export { ReferenceExpression, ReferenceExpressionOrList, SimpleReferenceExpression, StringReference, ExtractTypeFromStringReference, ExtractTypeFromReferenceExpression, } from './parser/reference-parser.js';
162
171
  export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
163
- export { FilterValueExpression, FilterValueExpressionOrList, ExistsExpression, FilterOperator, } from './parser/filter-parser.js';
164
172
  export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
165
173
  export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-parser.js';
166
174
  export { InsertObject } from './parser/insert-values-parser.js';
167
175
  export { MutationObject } from './parser/update-set-parser.js';
168
176
  export { OrderByExpression, OrderByDirectionExpression, } from './parser/order-by-parser.js';
169
- export { UnionExpression } from './parser/union-parser.js';
177
+ export { ComparisonOperatorExpression, OperandValueExpression, OperandValueExpressionOrList, } from './parser/binary-operation-parser.js';
178
+ export { ExistsExpression } from './parser/unary-operation-parser.js';
package/dist/esm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /// <reference types="./index.d.ts" />
2
2
  export * from './kysely.js';
3
3
  export * from './query-creator.js';
4
+ export * from './expression/expression.js';
4
5
  export * from './query-builder/where-interface.js';
5
6
  export * from './query-builder/returning-interface.js';
6
7
  export * from './query-builder/having-interface.js';
@@ -11,11 +12,12 @@ export * from './query-builder/delete-query-builder.js';
11
12
  export * from './query-builder/no-result-error.js';
12
13
  export * from './query-builder/join-builder.js';
13
14
  export * from './query-builder/expression-builder.js';
14
- export * from './query-builder/function-builder.js';
15
+ export * from './query-builder/function-module.js';
15
16
  export * from './query-builder/insert-result.js';
16
17
  export * from './query-builder/delete-result.js';
17
18
  export * from './query-builder/update-result.js';
18
19
  export * from './query-builder/on-conflict-builder.js';
20
+ export * from './query-builder/aggregate-function-builder.js';
19
21
  export * from './raw-builder/raw-builder.js';
20
22
  export * from './raw-builder/sql.js';
21
23
  export * from './query-executor/query-executor.js';
@@ -38,6 +40,7 @@ export * from './schema/foreign-key-constraint-builder.js';
38
40
  export * from './schema/alter-table-builder.js';
39
41
  export * from './schema/create-view-builder.js';
40
42
  export * from './schema/drop-view-builder.js';
43
+ export * from './schema/alter-column-builder.js';
41
44
  export * from './dynamic/dynamic.js';
42
45
  export * from './driver/driver.js';
43
46
  export * from './driver/database-connection.js';
@@ -103,7 +106,6 @@ export * from './operation-node/drop-schema-node.js';
103
106
  export * from './operation-node/drop-table-node.js';
104
107
  export * from './operation-node/drop-type-node.js';
105
108
  export * from './operation-node/drop-view-node.js';
106
- export * from './operation-node/filter-node.js';
107
109
  export * from './operation-node/foreign-key-constraint-node.js';
108
110
  export * from './operation-node/from-node.js';
109
111
  export * from './operation-node/generated-node.js';
@@ -122,7 +124,6 @@ export * from './operation-node/on-duplicate-key-node.js';
122
124
  export * from './operation-node/on-node.js';
123
125
  export * from './operation-node/operation-node-source.js';
124
126
  export * from './operation-node/operation-node-transformer.js';
125
- export * from './operation-node/operation-node-utils.js';
126
127
  export * from './operation-node/operation-node-visitor.js';
127
128
  export * from './operation-node/operation-node.js';
128
129
  export * from './operation-node/operator-node.js';
@@ -143,7 +144,6 @@ export * from './operation-node/select-query-node.js';
143
144
  export * from './operation-node/select-query-node.js';
144
145
  export * from './operation-node/selection-node.js';
145
146
  export * from './operation-node/table-node.js';
146
- export * from './operation-node/union-node.js';
147
147
  export * from './operation-node/unique-constraint-node.js';
148
148
  export * from './operation-node/update-query-node.js';
149
149
  export * from './operation-node/value-list-node.js';
@@ -153,7 +153,16 @@ export * from './operation-node/where-node.js';
153
153
  export * from './operation-node/with-node.js';
154
154
  export * from './operation-node/explain-node.js';
155
155
  export * from './operation-node/default-insert-value-node.js';
156
+ export * from './operation-node/aggregate-function-node.js';
157
+ export * from './operation-node/over-node.js';
158
+ export * from './operation-node/partition-by-node.js';
159
+ export * from './operation-node/partition-by-item-node.js';
160
+ export * from './operation-node/set-operation-node.js';
161
+ export * from './operation-node/binary-operation-node.js';
162
+ export * from './operation-node/unary-operation-node.js';
156
163
  export * from './util/column-type.js';
157
164
  export * from './util/compilable.js';
158
165
  export * from './util/explainable.js';
159
166
  export * from './util/log.js';
167
+ export * from './util/infer-result.js';
168
+ export { logOnce } from './util/log-once.js';
@@ -6,7 +6,7 @@ import { QueryCreator } from './query-creator.js';
6
6
  import { KyselyPlugin } from './plugin/kysely-plugin.js';
7
7
  import { DatabaseIntrospector } from './dialect/database-introspector.js';
8
8
  import { Driver, IsolationLevel } from './driver/driver.js';
9
- import { FunctionBuilder } from './query-builder/function-builder.js';
9
+ import { FunctionModule } from './query-builder/function-module.js';
10
10
  import { LogConfig } from './util/log.js';
11
11
  import { QueryExecutorProvider } from './query-executor/query-executor-provider.js';
12
12
  /**
@@ -72,7 +72,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
72
72
  */
73
73
  get introspection(): DatabaseIntrospector;
74
74
  /**
75
- * Returns a {@link FunctionBuilder} that can be used to write type safe function
75
+ * Returns a {@link FunctionModule} that can be used to write type safe function
76
76
  * calls.
77
77
  *
78
78
  * ```ts
@@ -99,7 +99,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
99
99
  * having count("pet"."id") > $1
100
100
  * ```
101
101
  */
102
- get fn(): FunctionBuilder<DB, keyof DB>;
102
+ get fn(): FunctionModule<DB, keyof DB>;
103
103
  /**
104
104
  * Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.
105
105
  *
@@ -9,7 +9,7 @@ import { RuntimeDriver } from './driver/runtime-driver.js';
9
9
  import { SingleConnectionProvider } from './driver/single-connection-provider.js';
10
10
  import { TRANSACTION_ISOLATION_LEVELS, } from './driver/driver.js';
11
11
  import { preventAwait } from './util/prevent-await.js';
12
- import { FunctionBuilder } from './query-builder/function-builder.js';
12
+ import { FunctionModule } from './query-builder/function-module.js';
13
13
  import { Log } from './util/log.js';
14
14
  /**
15
15
  * The main Kysely class.
@@ -105,7 +105,7 @@ export class Kysely extends QueryCreator {
105
105
  return this.#props.dialect.createIntrospector(this.withoutPlugins());
106
106
  }
107
107
  /**
108
- * Returns a {@link FunctionBuilder} that can be used to write type safe function
108
+ * Returns a {@link FunctionModule} that can be used to write type safe function
109
109
  * calls.
110
110
  *
111
111
  * ```ts
@@ -133,7 +133,7 @@ export class Kysely extends QueryCreator {
133
133
  * ```
134
134
  */
135
135
  get fn() {
136
- return new FunctionBuilder();
136
+ return new FunctionModule();
137
137
  }
138
138
  /**
139
139
  * Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.
@@ -25,12 +25,19 @@ export class FileMigrationProvider {
25
25
  const migrations = {};
26
26
  const files = await this.#props.fs.readdir(this.#props.migrationFolder);
27
27
  for (const fileName of files) {
28
- if ((fileName.endsWith('.js') || fileName.endsWith('.ts') || fileName.endsWith('.mjs')) &&
29
- !fileName.endsWith('.d.ts')) {
28
+ if (fileName.endsWith('.js') ||
29
+ (fileName.endsWith('.ts') && !fileName.endsWith('.d.ts')) ||
30
+ fileName.endsWith('.mjs') ||
31
+ (fileName.endsWith('.mts') && !fileName.endsWith('.d.mts'))) {
30
32
  const migration = await import(
31
33
  /* webpackIgnore: true */ this.#props.path.join(this.#props.migrationFolder, fileName));
32
- if (isMigration(migration)) {
33
- migrations[fileName.substring(0, fileName.length - 3)] = migration;
34
+ const migrationKey = fileName.substring(0, fileName.lastIndexOf('.'));
35
+ // Handle esModuleInterop export's `default` prop...
36
+ if (isMigration(migration?.default)) {
37
+ migrations[migrationKey] = migration.default;
38
+ }
39
+ else if (isMigration(migration)) {
40
+ migrations[migrationKey] = migration;
34
41
  }
35
42
  }
36
43
  }
@@ -0,0 +1,25 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { OverNode } from './over-node.js';
3
+ import { SimpleReferenceExpressionNode } from './simple-reference-expression-node.js';
4
+ import { WhereNode } from './where-node.js';
5
+ declare type AggregateFunction = 'avg' | 'count' | 'max' | 'min' | 'sum';
6
+ export interface AggregateFunctionNode extends OperationNode {
7
+ readonly kind: 'AggregateFunctionNode';
8
+ readonly func: AggregateFunction;
9
+ readonly column: SimpleReferenceExpressionNode;
10
+ readonly distinct?: boolean;
11
+ readonly filter?: WhereNode;
12
+ readonly over?: OverNode;
13
+ }
14
+ /**
15
+ * @internal
16
+ */
17
+ export declare const AggregateFunctionNode: Readonly<{
18
+ is(node: OperationNode): node is AggregateFunctionNode;
19
+ create(aggregateFunction: AggregateFunction, column: SimpleReferenceExpressionNode): AggregateFunctionNode;
20
+ cloneWithDistinct(aggregateFunctionNode: AggregateFunctionNode): AggregateFunctionNode;
21
+ cloneWithFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
22
+ cloneWithOrFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
23
+ cloneWithOver(aggregateFunctionNode: AggregateFunctionNode, over?: OverNode): AggregateFunctionNode;
24
+ }>;
25
+ export {};
@@ -0,0 +1,46 @@
1
+ /// <reference types="./aggregate-function-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ import { WhereNode } from './where-node.js';
4
+ /**
5
+ * @internal
6
+ */
7
+ export const AggregateFunctionNode = freeze({
8
+ is(node) {
9
+ return node.kind === 'AggregateFunctionNode';
10
+ },
11
+ create(aggregateFunction, column) {
12
+ return freeze({
13
+ kind: 'AggregateFunctionNode',
14
+ func: aggregateFunction,
15
+ column,
16
+ });
17
+ },
18
+ cloneWithDistinct(aggregateFunctionNode) {
19
+ return freeze({
20
+ ...aggregateFunctionNode,
21
+ distinct: true,
22
+ });
23
+ },
24
+ cloneWithFilter(aggregateFunctionNode, filter) {
25
+ return freeze({
26
+ ...aggregateFunctionNode,
27
+ filter: aggregateFunctionNode.filter
28
+ ? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, 'And', filter)
29
+ : WhereNode.create(filter),
30
+ });
31
+ },
32
+ cloneWithOrFilter(aggregateFunctionNode, filter) {
33
+ return freeze({
34
+ ...aggregateFunctionNode,
35
+ filter: aggregateFunctionNode.filter
36
+ ? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, 'Or', filter)
37
+ : WhereNode.create(filter),
38
+ });
39
+ },
40
+ cloneWithOver(aggregateFunctionNode, over) {
41
+ return freeze({
42
+ ...aggregateFunctionNode,
43
+ over,
44
+ });
45
+ },
46
+ });
@@ -1,20 +1,13 @@
1
- import { ColumnNode } from './column-node.js';
2
- import { IdentifierNode } from './identifier-node.js';
3
1
  import { OperationNode } from './operation-node.js';
4
- import { RawNode } from './raw-node.js';
5
- import { ReferenceNode } from './reference-node.js';
6
- import { SelectQueryNode } from './select-query-node.js';
7
- import { TableNode } from './table-node.js';
8
- export declare type AliasNodeChild = ColumnNode | ReferenceNode | TableNode | SelectQueryNode | RawNode;
9
2
  export interface AliasNode extends OperationNode {
10
3
  readonly kind: 'AliasNode';
11
- readonly node: AliasNodeChild;
12
- readonly alias: IdentifierNode | RawNode;
4
+ readonly node: OperationNode;
5
+ readonly alias: OperationNode;
13
6
  }
14
7
  /**
15
8
  * @internal
16
9
  */
17
10
  export declare const AliasNode: Readonly<{
18
11
  is(node: OperationNode): node is AliasNode;
19
- create(node: AliasNodeChild, alias: IdentifierNode | RawNode): AliasNode;
12
+ create(node: OperationNode, alias: OperationNode): AliasNode;
20
13
  }>;
@@ -1,7 +1,6 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { ColumnNode } from './column-node.js';
3
3
  import { DataTypeNode } from './data-type-node.js';
4
- import { ValueNode } from './value-node.js';
5
4
  import { RawNode } from './raw-node.js';
6
5
  export declare type AlterColumnNodeProps = Omit<AlterColumnNode, 'kind' | 'column'>;
7
6
  export interface AlterColumnNode extends OperationNode {
@@ -9,7 +8,7 @@ export interface AlterColumnNode extends OperationNode {
9
8
  readonly column: ColumnNode;
10
9
  readonly dataType?: DataTypeNode;
11
10
  readonly dataTypeExpression?: RawNode;
12
- readonly setDefault?: ValueNode | RawNode;
11
+ readonly setDefault?: OperationNode;
13
12
  readonly dropDefault?: true;
14
13
  readonly setNotNull?: true;
15
14
  readonly dropNotNull?: true;
@@ -8,17 +8,14 @@ import { AlterColumnNode } from './alter-column-node.js';
8
8
  import { AddConstraintNode } from './add-constraint-node.js';
9
9
  import { DropConstraintNode } from './drop-constraint-node.js';
10
10
  import { ModifyColumnNode } from './modify-column-node.js';
11
- export declare type AlterTableNodeProps = Omit<AlterTableNode, 'kind' | 'table'>;
11
+ export declare type AlterTableNodeTableProps = Pick<AlterTableNode, 'renameTo' | 'setSchema' | 'addConstraint' | 'dropConstraint'>;
12
+ export declare type AlterTableColumnAlterationNode = RenameColumnNode | AddColumnNode | DropColumnNode | AlterColumnNode | ModifyColumnNode;
12
13
  export interface AlterTableNode extends OperationNode {
13
14
  readonly kind: 'AlterTableNode';
14
15
  readonly table: TableNode;
15
16
  readonly renameTo?: TableNode;
16
17
  readonly setSchema?: IdentifierNode;
17
- readonly renameColumn?: RenameColumnNode;
18
- readonly addColumn?: AddColumnNode;
19
- readonly dropColumn?: DropColumnNode;
20
- readonly alterColumn?: AlterColumnNode;
21
- readonly modifyColumn?: ModifyColumnNode;
18
+ readonly columnAlterations?: ReadonlyArray<AlterTableColumnAlterationNode>;
22
19
  readonly addConstraint?: AddConstraintNode;
23
20
  readonly dropConstraint?: DropConstraintNode;
24
21
  }
@@ -28,5 +25,6 @@ export interface AlterTableNode extends OperationNode {
28
25
  export declare const AlterTableNode: Readonly<{
29
26
  is(node: OperationNode): node is AlterTableNode;
30
27
  create(table: string): AlterTableNode;
31
- cloneWith(node: AlterTableNode, props: AlterTableNodeProps): AlterTableNode;
28
+ cloneWithTableProps(node: AlterTableNode, props: AlterTableNodeTableProps): AlterTableNode;
29
+ cloneWithColumnAlteration(node: AlterTableNode, columnAlteration: AlterTableColumnAlterationNode): AlterTableNode;
32
30
  }>;
@@ -14,10 +14,18 @@ export const AlterTableNode = freeze({
14
14
  table: TableNode.create(table),
15
15
  });
16
16
  },
17
- cloneWith(node, props) {
17
+ cloneWithTableProps(node, props) {
18
18
  return freeze({
19
19
  ...node,
20
20
  ...props,
21
21
  });
22
22
  },
23
+ cloneWithColumnAlteration(node, columnAlteration) {
24
+ return freeze({
25
+ ...node,
26
+ columnAlterations: node.columnAlterations
27
+ ? [...node.columnAlterations, columnAlteration]
28
+ : [columnAlteration],
29
+ });
30
+ },
23
31
  });
@@ -1,14 +1,13 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { FilterExpressionNode } from './operation-node-utils.js';
3
2
  export interface AndNode extends OperationNode {
4
3
  readonly kind: 'AndNode';
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 AndNode: Readonly<{
12
11
  is(node: OperationNode): node is AndNode;
13
- create(left: FilterExpressionNode, right: FilterExpressionNode): AndNode;
12
+ create(left: OperationNode, right: OperationNode): AndNode;
14
13
  }>;
@@ -0,0 +1,14 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ export interface BinaryOperationNode extends OperationNode {
3
+ readonly kind: 'BinaryOperationNode';
4
+ readonly leftOperand: OperationNode;
5
+ readonly operator: OperationNode;
6
+ readonly rightOperand: OperationNode;
7
+ }
8
+ /**
9
+ * @internal
10
+ */
11
+ export declare const BinaryOperationNode: Readonly<{
12
+ is(node: OperationNode): node is BinaryOperationNode;
13
+ create(leftOperand: OperationNode, operator: OperationNode, rightOperand: OperationNode): BinaryOperationNode;
14
+ }>;
@@ -0,0 +1,18 @@
1
+ /// <reference types="./binary-operation-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const BinaryOperationNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'BinaryOperationNode';
9
+ },
10
+ create(leftOperand, operator, rightOperand) {
11
+ return freeze({
12
+ kind: 'BinaryOperationNode',
13
+ leftOperand,
14
+ operator,
15
+ rightOperand,
16
+ });
17
+ },
18
+ });
@@ -1,9 +1,8 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { RawNode } from './raw-node.js';
3
2
  import { IdentifierNode } from './identifier-node.js';
4
3
  export interface CheckConstraintNode extends OperationNode {
5
4
  readonly kind: 'CheckConstraintNode';
6
- readonly expression: RawNode;
5
+ readonly expression: OperationNode;
7
6
  readonly name?: IdentifierNode;
8
7
  }
9
8
  /**
@@ -11,5 +10,5 @@ export interface CheckConstraintNode extends OperationNode {
11
10
  */
12
11
  export declare const CheckConstraintNode: Readonly<{
13
12
  is(node: OperationNode): node is CheckConstraintNode;
14
- create(expression: RawNode, constraintName?: string): CheckConstraintNode;
13
+ create(expression: OperationNode, constraintName?: string): CheckConstraintNode;
15
14
  }>;
@@ -1,17 +1,14 @@
1
1
  import { CheckConstraintNode } from './check-constraint-node.js';
2
2
  import { ColumnNode } from './column-node.js';
3
- import { DataTypeNode } from './data-type-node.js';
4
3
  import { DefaultValueNode } from './default-value-node.js';
5
4
  import { GeneratedNode } from './generated-node.js';
6
5
  import { OperationNode } from './operation-node.js';
7
- import { RawNode } from './raw-node.js';
8
6
  import { ReferencesNode } from './references-node.js';
9
7
  export declare type ColumnDefinitionNodeProps = Omit<Partial<ColumnDefinitionNode>, 'kind' | 'dataType'>;
10
- export declare type ColumnDataTypeNode = DataTypeNode | RawNode;
11
8
  export interface ColumnDefinitionNode extends OperationNode {
12
9
  readonly kind: 'ColumnDefinitionNode';
13
10
  readonly column: ColumnNode;
14
- readonly dataType: ColumnDataTypeNode;
11
+ readonly dataType: OperationNode;
15
12
  readonly references?: ReferencesNode;
16
13
  readonly primaryKey?: boolean;
17
14
  readonly autoIncrement?: boolean;
@@ -21,12 +18,16 @@ export interface ColumnDefinitionNode extends OperationNode {
21
18
  readonly check?: CheckConstraintNode;
22
19
  readonly generated?: GeneratedNode;
23
20
  readonly unsigned?: boolean;
21
+ readonly frontModifiers?: ReadonlyArray<OperationNode>;
22
+ readonly endModifiers?: ReadonlyArray<OperationNode>;
24
23
  }
25
24
  /**
26
25
  * @internal
27
26
  */
28
27
  export declare const ColumnDefinitionNode: Readonly<{
29
28
  is(node: OperationNode): node is ColumnDefinitionNode;
30
- create(column: string, dataType: ColumnDataTypeNode): ColumnDefinitionNode;
29
+ create(column: string, dataType: OperationNode): ColumnDefinitionNode;
30
+ cloneWithFrontModifier(node: ColumnDefinitionNode, modifier: OperationNode): ColumnDefinitionNode;
31
+ cloneWithEndModifier(node: ColumnDefinitionNode, modifier: OperationNode): ColumnDefinitionNode;
31
32
  cloneWith(node: ColumnDefinitionNode, props: ColumnDefinitionNodeProps): ColumnDefinitionNode;
32
33
  }>;
@@ -15,6 +15,22 @@ export const ColumnDefinitionNode = freeze({
15
15
  dataType,
16
16
  });
17
17
  },
18
+ cloneWithFrontModifier(node, modifier) {
19
+ return freeze({
20
+ ...node,
21
+ frontModifiers: node.frontModifiers
22
+ ? freeze([...node.frontModifiers, modifier])
23
+ : [modifier],
24
+ });
25
+ },
26
+ cloneWithEndModifier(node, modifier) {
27
+ return freeze({
28
+ ...node,
29
+ endModifiers: node.endModifiers
30
+ ? freeze([...node.endModifiers, modifier])
31
+ : [modifier],
32
+ });
33
+ },
18
34
  cloneWith(node, props) {
19
35
  return freeze({
20
36
  ...node,
@@ -1,15 +1,14 @@
1
1
  import { ColumnNode } from './column-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- import { ValueExpressionNode } from './operation-node-utils.js';
4
3
  export interface ColumnUpdateNode extends OperationNode {
5
4
  readonly kind: 'ColumnUpdateNode';
6
5
  readonly column: ColumnNode;
7
- readonly value: ValueExpressionNode;
6
+ readonly value: OperationNode;
8
7
  }
9
8
  /**
10
9
  * @internal
11
10
  */
12
11
  export declare const ColumnUpdateNode: Readonly<{
13
12
  is(node: OperationNode): node is ColumnUpdateNode;
14
- create(column: ColumnNode, value: ValueExpressionNode): ColumnUpdateNode;
13
+ create(column: ColumnNode, value: OperationNode): ColumnUpdateNode;
15
14
  }>;
@@ -1,16 +1,14 @@
1
1
  import { CommonTableExpressionNameNode } from './common-table-expression-name-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- import { QueryNode } from './query-node.js';
4
- import { RawNode } from './raw-node.js';
5
3
  export interface CommonTableExpressionNode extends OperationNode {
6
4
  readonly kind: 'CommonTableExpressionNode';
7
5
  readonly name: CommonTableExpressionNameNode;
8
- readonly expression: QueryNode | RawNode;
6
+ readonly expression: OperationNode;
9
7
  }
10
8
  /**
11
9
  * @internal
12
10
  */
13
11
  export declare const CommonTableExpressionNode: Readonly<{
14
12
  is(node: OperationNode): node is CommonTableExpressionNode;
15
- create(name: CommonTableExpressionNameNode, expression: QueryNode | RawNode): CommonTableExpressionNode;
13
+ create(name: CommonTableExpressionNameNode, expression: OperationNode): CommonTableExpressionNode;
16
14
  }>;
@@ -1,6 +1,4 @@
1
- import { ColumnNode } from './column-node.js';
2
1
  import { IdentifierNode } from './identifier-node.js';
3
- import { ListNode } from './list-node.js';
4
2
  import { OperationNode } from './operation-node.js';
5
3
  import { RawNode } from './raw-node.js';
6
4
  import { TableNode } from './table-node.js';
@@ -10,7 +8,7 @@ export interface CreateIndexNode extends OperationNode {
10
8
  readonly kind: 'CreateIndexNode';
11
9
  readonly name: IdentifierNode;
12
10
  readonly table?: TableNode;
13
- readonly expression?: ColumnNode | ListNode | RawNode;
11
+ readonly expression?: OperationNode;
14
12
  readonly unique?: boolean;
15
13
  readonly using?: RawNode;
16
14
  }
@@ -3,7 +3,6 @@ import { TableNode } from './table-node.js';
3
3
  import { ConstraintNode } from './constraint-node.js';
4
4
  import { ColumnDefinitionNode } from './column-definition-node.js';
5
5
  import { ArrayItemType } from '../util/type-utils.js';
6
- import { RawNode } from './raw-node.js';
7
6
  export declare const ON_COMMIT_ACTIONS: string[];
8
7
  export declare type OnCommitAction = ArrayItemType<typeof ON_COMMIT_ACTIONS>;
9
8
  export declare type CreateTableNodeParams = Omit<CreateTableNode, 'kind' | 'table' | 'columns' | 'constraints' | 'frontModifiers' | 'endModifiers'>;
@@ -15,8 +14,8 @@ export interface CreateTableNode extends OperationNode {
15
14
  readonly temporary?: boolean;
16
15
  readonly ifNotExists?: boolean;
17
16
  readonly onCommit?: OnCommitAction;
18
- readonly frontModifiers?: ReadonlyArray<RawNode>;
19
- readonly endModifiers?: ReadonlyArray<RawNode>;
17
+ readonly frontModifiers?: ReadonlyArray<OperationNode>;
18
+ readonly endModifiers?: ReadonlyArray<OperationNode>;
20
19
  }
21
20
  /**
22
21
  * @internal
@@ -26,7 +25,7 @@ export declare const CreateTableNode: Readonly<{
26
25
  create(table: TableNode): CreateTableNode;
27
26
  cloneWithColumn(createTable: CreateTableNode, column: ColumnDefinitionNode): CreateTableNode;
28
27
  cloneWithConstraint(createTable: CreateTableNode, constraint: ConstraintNode): CreateTableNode;
29
- cloneWithFrontModifier(createTable: CreateTableNode, modifier: RawNode): CreateTableNode;
30
- cloneWithEndModifier(createTable: CreateTableNode, modifier: RawNode): CreateTableNode;
28
+ cloneWithFrontModifier(createTable: CreateTableNode, modifier: OperationNode): CreateTableNode;
29
+ cloneWithEndModifier(createTable: CreateTableNode, modifier: OperationNode): CreateTableNode;
31
30
  cloneWith(createTable: CreateTableNode, params: CreateTableNodeParams): CreateTableNode;
32
31
  }>;
@@ -12,6 +12,6 @@ export interface CreateTypeNode extends OperationNode {
12
12
  */
13
13
  export declare const CreateTypeNode: Readonly<{
14
14
  is(node: OperationNode): node is CreateTypeNode;
15
- create(name: string): CreateTypeNode;
15
+ create(name: SchemableIdentifierNode): CreateTypeNode;
16
16
  cloneWithEnum(createType: CreateTypeNode, values: string[]): CreateTypeNode;
17
17
  }>;
@@ -1,6 +1,5 @@
1
1
  /// <reference types="./create-type-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
- import { SchemableIdentifierNode } from './schemable-identifier-node.js';
4
3
  import { ValueListNode } from './value-list-node.js';
5
4
  import { ValueNode } from './value-node.js';
6
5
  /**
@@ -13,7 +12,7 @@ export const CreateTypeNode = freeze({
13
12
  create(name) {
14
13
  return freeze({
15
14
  kind: 'CreateTypeNode',
16
- name: SchemableIdentifierNode.create(name),
15
+ name,
17
16
  });
18
17
  },
19
18
  cloneWithEnum(createType, values) {