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,28 +1,45 @@
1
1
  import { AliasNode } from '../operation-node/alias-node.js';
2
- import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
2
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
3
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
5
4
  import { TableExpression } from '../parser/table-parser.js';
6
5
  import { SelectExpression, QueryBuilderWithSelection, SelectAllQueryBuilder } from '../parser/select-parser.js';
7
- import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper, HavingGrouper } from '../parser/filter-parser.js';
8
6
  import { ReferenceExpression } from '../parser/reference-parser.js';
9
7
  import { SelectQueryNode } from '../operation-node/select-query-node.js';
10
- import { AnyRawBuilder, MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
8
+ import { MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
11
9
  import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
12
10
  import { Compilable } from '../util/compilable.js';
13
11
  import { QueryExecutor } from '../query-executor/query-executor.js';
14
12
  import { QueryId } from '../util/query-id.js';
15
13
  import { GroupByExpression } from '../parser/group-by-parser.js';
16
- import { UnionExpression } from '../parser/union-parser.js';
17
14
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
18
15
  import { WhereInterface } from './where-interface.js';
19
16
  import { NoResultErrorConstructor } from './no-result-error.js';
20
17
  import { HavingInterface } from './having-interface.js';
21
- import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
22
18
  import { Explainable, ExplainFormat } from '../util/explainable.js';
23
- export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, HavingInterface<DB, TB>, OperationNodeSource, Compilable, Explainable {
19
+ import { AliasedExpression, Expression } from '../expression/expression.js';
20
+ import { ComparisonOperatorExpression, HavingGrouper, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
21
+ import { ExistsExpression } from '../parser/unary-operation-parser.js';
22
+ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, HavingInterface<DB, TB>, Expression<O>, Compilable<O>, Explainable {
24
23
  #private;
25
24
  constructor(props: SelectQueryBuilderProps);
25
+ /** @private */
26
+ /**
27
+ * All expressions need to have this getter for complicated type-related reasons.
28
+ * Simply add this getter for your expression and always return `undefined` from it:
29
+ *
30
+ * ```ts
31
+ * class SomeExpression<T> implements Expression<T> {
32
+ * get expressionType(): T | undefined {
33
+ * return undefined
34
+ * }
35
+ * }
36
+ * ```
37
+ *
38
+ * The getter is needed to make the expression assignable to another expression only
39
+ * if the types `T` are assignable. Without this property (or some other property
40
+ * that references `T`), you could assing `Expression<string>` to `Expression<number>`.
41
+ */
42
+ get expressionType(): O | undefined;
26
43
  /**
27
44
  * Adds a `where` clause to the query.
28
45
  *
@@ -207,16 +224,16 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
207
224
  * .execute()
208
225
  * ```
209
226
  */
210
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
227
+ where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
211
228
  where(grouper: WhereGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
212
- where(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
229
+ where(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
213
230
  /**
214
231
  * Adds a `where` clause where both sides of the operator are references
215
232
  * to columns.
216
233
  *
217
234
  * The normal `where` method treats the right hand side argument as a
218
235
  * value by default. `whereRef` treats it as a column reference. This method is
219
- * expecially useful with joins and correclated subqueries.
236
+ * expecially useful with joins and correlated subqueries.
220
237
  *
221
238
  * ### Examples
222
239
  *
@@ -261,7 +278,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
261
278
  * ) as "pet_name"
262
279
  * from "person"
263
280
  */
264
- whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
281
+ whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
265
282
  /**
266
283
  * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
267
284
  *
@@ -325,15 +342,15 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
325
342
  * select * from "person" (where "id" = 1 or "id" = 2)
326
343
  * ```
327
344
  */
328
- orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
345
+ orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
329
346
  orWhere(grouper: WhereGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
330
- orWhere(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
347
+ orWhere(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
331
348
  /**
332
349
  * Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
333
350
  *
334
351
  * Also see {@link orWhere} and {@link where}.
335
352
  */
336
- orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
353
+ orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
337
354
  /**
338
355
  * Adds a `where exists` clause to the query.
339
356
  *
@@ -400,37 +417,37 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
400
417
  */
401
418
  whereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
402
419
  /**
403
- * Just like {@link whereExists} but creates a `or exists` clause.
420
+ * Just like {@link whereExists} but creates an `or exists` clause.
404
421
  */
405
422
  orWhereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
406
423
  /**
407
- * Just like {@link whereExists} but creates a `or not exists` clause.
424
+ * Just like {@link whereExists} but creates an `or not exists` clause.
408
425
  */
409
426
  orWhereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
410
427
  /**
411
428
  * Just like {@link WhereInterface.where | where} but adds a `having` statement
412
429
  * instead of a `where` statement.
413
430
  */
414
- having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
431
+ having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
415
432
  having(grouper: HavingGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
416
- having(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
433
+ having(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
417
434
  /**
418
435
  * Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
419
436
  * instead of a `where` statement.
420
437
  */
421
- havingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
438
+ havingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
422
439
  /**
423
440
  * Just like {@link WhereInterface.orWhere | orWhere} but adds a `having` statement
424
441
  * instead of a `where` statement.
425
442
  */
426
- orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
443
+ orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
427
444
  orHaving(grouper: HavingGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
428
- orHaving(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
445
+ orHaving(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
429
446
  /**
430
447
  * Just like {@link WhereInterface.orWhereRef | orWhereRef} but adds a `having` statement
431
448
  * instead of a `where` statement.
432
449
  */
433
- orHavingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
450
+ orHavingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
434
451
  /**
435
452
  * Just like {@link WhereInterface.whereExists | whereExists} but adds a `having` statement
436
453
  * instead of a `where` statement.
@@ -627,11 +644,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
627
644
  select<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): QueryBuilderWithSelection<DB, TB, O, SE>;
628
645
  select<SE extends SelectExpression<DB, TB>>(selection: SE): QueryBuilderWithSelection<DB, TB, O, SE>;
629
646
  /**
630
- * Adds `distinct on` selections to the select clause.
631
- *
632
- * Takes the same inputs as the {@link SelectQueryBuilder.select | select} method.
633
- * See the {@link SelectQueryBuilder.select | select} method's documentation for
634
- * more examples.
647
+ * Adds `distinct on` expressions to the select clause.
635
648
  *
636
649
  * ### Examples
637
650
  *
@@ -653,8 +666,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
653
666
  * where "pet"."name" = $1
654
667
  * ```
655
668
  */
656
- distinctOn<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): SelectQueryBuilder<DB, TB, O>;
657
- distinctOn<SE extends SelectExpression<DB, TB>>(selection: SE): SelectQueryBuilder<DB, TB, O>;
669
+ distinctOn<RE extends ReferenceExpression<DB, TB>>(selections: ReadonlyArray<RE>): SelectQueryBuilder<DB, TB, O>;
670
+ distinctOn<RE extends ReferenceExpression<DB, TB>>(selection: RE): SelectQueryBuilder<DB, TB, O>;
658
671
  /**
659
672
  * This can be used to add any additional SQL to the front of the query __after__ the `select` keyword.
660
673
  *
@@ -674,7 +687,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
674
687
  * from `person`
675
688
  * ```
676
689
  */
677
- modifyFront(modifier: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
690
+ modifyFront(modifier: Expression<any>): SelectQueryBuilder<DB, TB, O>;
678
691
  /**
679
692
  * This can be used to add any additional SQL to the end of the query.
680
693
  *
@@ -698,7 +711,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
698
711
  * for update
699
712
  * ```
700
713
  */
701
- modifyEnd(modifier: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
714
+ modifyEnd(modifier: Expression<any>): SelectQueryBuilder<DB, TB, O>;
702
715
  /**
703
716
  * Makes the selection distinct.
704
717
  *
@@ -1202,7 +1215,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1202
1215
  * .orderBy('name')
1203
1216
  * ```
1204
1217
  */
1205
- union(expression: UnionExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1218
+ union(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
1206
1219
  /**
1207
1220
  * Combines another select query or raw expression to this query using `union all`.
1208
1221
  *
@@ -1217,7 +1230,67 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1217
1230
  * .orderBy('name')
1218
1231
  * ```
1219
1232
  */
1220
- unionAll(expression: UnionExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1233
+ unionAll(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
1234
+ /**
1235
+ * Combines another select query or raw expression to this query using `intersect`.
1236
+ *
1237
+ * The output row type of the combined query must match `this` query.
1238
+ *
1239
+ * ### Examples
1240
+ *
1241
+ * ```ts
1242
+ * db.selectFrom('person')
1243
+ * .select(['id', 'first_name as name'])
1244
+ * .intersect(db.selectFrom('pet').select(['id', 'name']))
1245
+ * .orderBy('name')
1246
+ * ```
1247
+ */
1248
+ intersect(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
1249
+ /**
1250
+ * Combines another select query or raw expression to this query using `intersect all`.
1251
+ *
1252
+ * The output row type of the combined query must match `this` query.
1253
+ *
1254
+ * ### Examples
1255
+ *
1256
+ * ```ts
1257
+ * db.selectFrom('person')
1258
+ * .select(['id', 'first_name as name'])
1259
+ * .intersectAll(db.selectFrom('pet').select(['id', 'name']))
1260
+ * .orderBy('name')
1261
+ * ```
1262
+ */
1263
+ intersectAll(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
1264
+ /**
1265
+ * Combines another select query or raw expression to this query using `except`.
1266
+ *
1267
+ * The output row type of the combined query must match `this` query.
1268
+ *
1269
+ * ### Examples
1270
+ *
1271
+ * ```ts
1272
+ * db.selectFrom('person')
1273
+ * .select(['id', 'first_name as name'])
1274
+ * .except(db.selectFrom('pet').select(['id', 'name']))
1275
+ * .orderBy('name')
1276
+ * ```
1277
+ */
1278
+ except(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
1279
+ /**
1280
+ * Combines another select query or raw expression to this query using `except all`.
1281
+ *
1282
+ * The output row type of the combined query must match `this` query.
1283
+ *
1284
+ * ### Examples
1285
+ *
1286
+ * ```ts
1287
+ * db.selectFrom('person')
1288
+ * .select(['id', 'first_name as name'])
1289
+ * .exceptAll(db.selectFrom('pet').select(['id', 'name']))
1290
+ * .orderBy('name')
1291
+ * ```
1292
+ */
1293
+ exceptAll(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
1221
1294
  /**
1222
1295
  * Simply calls the given function passing `this` as the only argument.
1223
1296
  *
@@ -1311,7 +1384,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1311
1384
  * pets[0].owner_first_name
1312
1385
  * ```
1313
1386
  */
1314
- as<A extends string>(alias: A): AliasedQueryBuilder<DB, TB, O, A>;
1387
+ as<A extends string>(alias: A): AliasedSelectQueryBuilder<DB, TB, O, A>;
1315
1388
  /**
1316
1389
  * Change the output type of the query.
1317
1390
  *
@@ -1323,8 +1396,22 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1323
1396
  * Returns a copy of this SelectQueryBuilder instance with the given plugin installed.
1324
1397
  */
1325
1398
  withPlugin(plugin: KyselyPlugin): SelectQueryBuilder<DB, TB, O>;
1399
+ /**
1400
+ * Creates the OperationNode that describes how to compile this expression into SQL.
1401
+ *
1402
+ * If you are creating a custom expression, it's often easiest to use the {@link sql}
1403
+ * template tag to build the node:
1404
+ *
1405
+ * ```ts
1406
+ * class SomeExpression<T> implements Expression<T> {
1407
+ * toOperationNode(): OperationNode {
1408
+ * return sql`some sql here`.toOperationNode()
1409
+ * }
1410
+ * }
1411
+ * ```
1412
+ */
1326
1413
  toOperationNode(): SelectQueryNode;
1327
- compile(): CompiledQuery;
1414
+ compile(): CompiledQuery<O>;
1328
1415
  /**
1329
1416
  * Executes the query and returns an array of rows.
1330
1417
  *
@@ -1407,7 +1494,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1407
1494
  * explain (analyze, format json) select * from "person" where "gender" = $1
1408
1495
  * ```
1409
1496
  */
1410
- explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: AnyRawBuilder): Promise<ER[]>;
1497
+ explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<ER[]>;
1411
1498
  }
1412
1499
  export interface SelectQueryBuilderProps {
1413
1500
  readonly queryId: QueryId;
@@ -1417,36 +1504,40 @@ export interface SelectQueryBuilderProps {
1417
1504
  /**
1418
1505
  * {@link SelectQueryBuilder} with an alias. The result of calling {@link SelectQueryBuilder.as}.
1419
1506
  */
1420
- export declare class AliasedQueryBuilder<DB, TB extends keyof DB, O = undefined, A extends string = never> {
1507
+ export declare class AliasedSelectQueryBuilder<DB, TB extends keyof DB, O = undefined, A extends string = never> implements AliasedExpression<O, A> {
1421
1508
  #private;
1422
1509
  constructor(queryBuilder: SelectQueryBuilder<DB, TB, O>, alias: A);
1510
+ /** @private */
1423
1511
  /**
1424
- * @private
1425
- *
1426
- * This needs to be here just so that the typings work. Without this
1427
- * the generated .d.ts file contains no reference to the type param A
1428
- * which causes this type to be equal to AliasedQueryBuilder with any A
1429
- * as long as D, TB and O are the same.
1512
+ * Returns the aliased expression.
1513
+ */
1514
+ get expression(): Expression<O>;
1515
+ /** @private */
1516
+ /**
1517
+ * Returns the alias.
1518
+ */
1519
+ get alias(): A;
1520
+ /**
1521
+ * Creates the OperationNode that describes how to compile this expression into SQL.
1430
1522
  */
1431
- protected get alias(): A;
1432
1523
  toOperationNode(): AliasNode;
1433
1524
  }
1434
- export declare type SelectQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? SelectQueryBuilder<DB, TB | TE, O> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, TB, O, RA, RO> : never;
1525
+ export declare type SelectQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? SelectQueryBuilder<DB, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : never;
1435
1526
  declare type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? SelectQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & Record<A, R>, TB | A, O>;
1436
1527
  declare type InnerJoinedDB<DB, A extends string, R> = {
1437
1528
  [C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
1438
1529
  };
1439
- export declare type SelectQueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, TB, O, RA, RO> : never;
1530
+ export declare type SelectQueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : never;
1440
1531
  declare type LeftJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? SelectQueryBuilder<LeftJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & Record<A, Nullable<R>>, TB | A, O>;
1441
1532
  declare type LeftJoinedDB<DB, A extends keyof any, R> = {
1442
1533
  [C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
1443
1534
  };
1444
- export declare type SelectQueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, TB, O, RA, RO> : never;
1535
+ export declare type SelectQueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : never;
1445
1536
  declare type RightJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<RightJoinedDB<DB, TB, A, R>, TB | A, O>;
1446
1537
  declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
1447
1538
  [C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
1448
1539
  };
1449
- export declare type SelectQueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, TB, O, RA, RO> : never;
1540
+ export declare type SelectQueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : never;
1450
1541
  declare type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, TB | A, O>;
1451
1542
  declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
1452
1543
  [C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;