kysely 0.25.0 → 0.26.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 (315) hide show
  1. package/README.md +10 -563
  2. package/dist/cjs/dialect/database-introspector.d.ts +1 -1
  3. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -2
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +5 -1
  5. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -4
  7. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
  8. package/dist/cjs/driver/database-connection.d.ts +6 -0
  9. package/dist/cjs/driver/driver.d.ts +1 -1
  10. package/dist/cjs/expression/expression-builder.d.ts +207 -108
  11. package/dist/cjs/expression/expression-builder.js +28 -7
  12. package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
  13. package/dist/cjs/expression/expression-wrapper.js +70 -2
  14. package/dist/cjs/helpers/postgres.d.ts +30 -18
  15. package/dist/cjs/helpers/postgres.js +30 -18
  16. package/dist/cjs/index.d.ts +6 -0
  17. package/dist/cjs/index.js +6 -0
  18. package/dist/cjs/kysely.d.ts +23 -13
  19. package/dist/cjs/kysely.js +13 -9
  20. package/dist/cjs/migration/file-migration-provider.js +2 -2
  21. package/dist/cjs/operation-node/alter-column-node.d.ts +2 -3
  22. package/dist/cjs/operation-node/alter-column-node.js +2 -7
  23. package/dist/cjs/operation-node/alter-table-node.d.ts +2 -2
  24. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -1
  25. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  26. package/dist/cjs/operation-node/create-index-node.d.ts +2 -2
  27. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
  28. package/dist/cjs/operation-node/create-table-node.d.ts +2 -2
  29. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  30. package/dist/cjs/operation-node/create-view-node.d.ts +1 -1
  31. package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
  32. package/dist/cjs/operation-node/drop-constraint-node.d.ts +1 -1
  33. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
  34. package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
  36. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  37. package/dist/cjs/operation-node/drop-view-node.d.ts +1 -1
  38. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/generated-node.d.ts +1 -1
  40. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/join-node.d.ts +1 -2
  42. package/dist/cjs/operation-node/join-node.js +0 -8
  43. package/dist/cjs/operation-node/json-operator-chain-node.d.ts +16 -0
  44. package/dist/cjs/operation-node/json-operator-chain-node.js +25 -0
  45. package/dist/cjs/operation-node/json-path-leg-node.d.ts +14 -0
  46. package/dist/cjs/operation-node/json-path-leg-node.js +19 -0
  47. package/dist/cjs/operation-node/json-path-node.d.ts +16 -0
  48. package/dist/cjs/operation-node/json-path-node.js +25 -0
  49. package/dist/cjs/operation-node/json-reference-node.d.ts +17 -0
  50. package/dist/cjs/operation-node/json-reference-node.js +25 -0
  51. package/dist/cjs/operation-node/on-conflict-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +1 -1
  53. package/dist/cjs/operation-node/operation-node-transformer.d.ts +8 -0
  54. package/dist/cjs/operation-node/operation-node-transformer.js +33 -1
  55. package/dist/cjs/operation-node/operation-node-visitor.d.ts +8 -0
  56. package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
  57. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  58. package/dist/cjs/operation-node/operator-node.d.ts +13 -9
  59. package/dist/cjs/operation-node/operator-node.js +12 -2
  60. package/dist/cjs/operation-node/query-node.d.ts +9 -10
  61. package/dist/cjs/operation-node/query-node.js +0 -8
  62. package/dist/cjs/operation-node/reference-node.d.ts +2 -2
  63. package/dist/cjs/operation-node/reference-node.js +1 -1
  64. package/dist/cjs/operation-node/references-node.d.ts +1 -1
  65. package/dist/cjs/operation-node/select-modifier-node.d.ts +1 -1
  66. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  67. package/dist/cjs/operation-node/select-query-node.js +0 -8
  68. package/dist/cjs/operation-node/selection-node.d.ts +1 -1
  69. package/dist/cjs/operation-node/set-operation-node.d.ts +1 -1
  70. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +1 -1
  71. package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
  72. package/dist/cjs/operation-node/values-node.d.ts +1 -1
  73. package/dist/cjs/operation-node/with-node.d.ts +1 -1
  74. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -12
  75. package/dist/cjs/parser/binary-operation-parser.js +40 -119
  76. package/dist/cjs/parser/coalesce-parser.d.ts +1 -1
  77. package/dist/cjs/parser/data-type-parser.d.ts +1 -1
  78. package/dist/cjs/parser/default-value-parser.d.ts +1 -1
  79. package/dist/cjs/parser/expression-parser.d.ts +5 -5
  80. package/dist/cjs/parser/group-by-parser.d.ts +2 -2
  81. package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
  82. package/dist/cjs/parser/join-parser.d.ts +4 -4
  83. package/dist/cjs/parser/order-by-parser.d.ts +3 -3
  84. package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
  85. package/dist/cjs/parser/reference-parser.d.ts +13 -9
  86. package/dist/cjs/parser/reference-parser.js +28 -16
  87. package/dist/cjs/parser/returning-parser.d.ts +2 -2
  88. package/dist/cjs/parser/select-parser.d.ts +10 -10
  89. package/dist/cjs/parser/table-parser.d.ts +12 -12
  90. package/dist/cjs/parser/unary-operation-parser.d.ts +1 -1
  91. package/dist/cjs/parser/update-set-parser.d.ts +3 -3
  92. package/dist/cjs/parser/update-set-parser.js +1 -3
  93. package/dist/cjs/parser/value-parser.d.ts +4 -4
  94. package/dist/cjs/parser/with-parser.d.ts +12 -8
  95. package/dist/cjs/plugin/camel-case/camel-case.d.ts +1 -1
  96. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  97. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +32 -0
  98. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +22 -6
  99. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -38
  100. package/dist/cjs/query-builder/aggregate-function-builder.js +4 -59
  101. package/dist/cjs/query-builder/case-builder.d.ts +11 -11
  102. package/dist/cjs/query-builder/case-builder.js +2 -2
  103. package/dist/cjs/query-builder/delete-query-builder.d.ts +84 -59
  104. package/dist/cjs/query-builder/delete-query-builder.js +1 -62
  105. package/dist/cjs/query-builder/delete-result.d.ts +1 -2
  106. package/dist/cjs/query-builder/delete-result.js +2 -8
  107. package/dist/cjs/query-builder/function-module.d.ts +44 -66
  108. package/dist/cjs/query-builder/having-interface.d.ts +2 -35
  109. package/dist/cjs/query-builder/insert-query-builder.d.ts +58 -47
  110. package/dist/cjs/query-builder/insert-query-builder.js +17 -34
  111. package/dist/cjs/query-builder/insert-result.d.ts +3 -4
  112. package/dist/cjs/query-builder/insert-result.js +5 -14
  113. package/dist/cjs/query-builder/join-builder.d.ts +2 -35
  114. package/dist/cjs/query-builder/join-builder.js +1 -56
  115. package/dist/cjs/query-builder/json-path-builder.d.ts +212 -0
  116. package/dist/cjs/query-builder/json-path-builder.js +191 -0
  117. package/dist/cjs/query-builder/no-result-error.d.ts +1 -1
  118. package/dist/cjs/query-builder/on-conflict-builder.d.ts +144 -73
  119. package/dist/cjs/query-builder/on-conflict-builder.js +2 -111
  120. package/dist/cjs/query-builder/over-builder.d.ts +2 -2
  121. package/dist/cjs/query-builder/over-builder.js +1 -1
  122. package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
  123. package/dist/cjs/query-builder/select-query-builder.d.ts +139 -134
  124. package/dist/cjs/query-builder/select-query-builder.js +24 -133
  125. package/dist/cjs/query-builder/update-query-builder.d.ts +89 -62
  126. package/dist/cjs/query-builder/update-query-builder.js +3 -63
  127. package/dist/cjs/query-builder/update-result.d.ts +3 -3
  128. package/dist/cjs/query-builder/update-result.js +5 -9
  129. package/dist/cjs/query-builder/where-interface.d.ts +73 -38
  130. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  131. package/dist/cjs/query-compiler/compiled-query.js +2 -2
  132. package/dist/cjs/query-compiler/default-query-compiler.d.ts +8 -0
  133. package/dist/cjs/query-compiler/default-query-compiler.js +37 -2
  134. package/dist/cjs/query-compiler/query-compiler.d.ts +1 -1
  135. package/dist/cjs/query-creator.d.ts +4 -2
  136. package/dist/cjs/schema/alter-column-builder.d.ts +11 -5
  137. package/dist/cjs/schema/alter-column-builder.js +19 -21
  138. package/dist/cjs/schema/alter-table-builder.d.ts +0 -4
  139. package/dist/cjs/schema/alter-table-builder.js +2 -9
  140. package/dist/cjs/schema/column-definition-builder.d.ts +1 -1
  141. package/dist/cjs/schema/column-definition-builder.js +1 -2
  142. package/dist/cjs/schema/create-index-builder.js +1 -1
  143. package/dist/cjs/schema/create-table-builder.d.ts +2 -6
  144. package/dist/cjs/schema/create-table-builder.js +0 -6
  145. package/dist/cjs/schema/schema.d.ts +1 -2
  146. package/dist/cjs/schema/schema.js +1 -2
  147. package/dist/cjs/util/column-type.d.ts +22 -18
  148. package/dist/cjs/util/explainable.d.ts +1 -1
  149. package/dist/cjs/util/infer-result.d.ts +2 -2
  150. package/dist/cjs/util/log.d.ts +4 -4
  151. package/dist/cjs/util/require-all-props.d.ts +1 -1
  152. package/dist/cjs/util/type-utils.d.ts +19 -19
  153. package/dist/esm/dialect/database-introspector.d.ts +1 -1
  154. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -2
  155. package/dist/esm/dialect/mysql/mysql-driver.js +5 -1
  156. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  157. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -4
  158. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
  159. package/dist/esm/driver/database-connection.d.ts +6 -0
  160. package/dist/esm/driver/driver.d.ts +1 -1
  161. package/dist/esm/expression/expression-builder.d.ts +207 -108
  162. package/dist/esm/expression/expression-builder.js +30 -9
  163. package/dist/esm/expression/expression-wrapper.d.ts +296 -5
  164. package/dist/esm/expression/expression-wrapper.js +67 -1
  165. package/dist/esm/helpers/postgres.d.ts +30 -18
  166. package/dist/esm/helpers/postgres.js +30 -18
  167. package/dist/esm/index.d.ts +6 -0
  168. package/dist/esm/index.js +6 -0
  169. package/dist/esm/kysely.d.ts +23 -13
  170. package/dist/esm/kysely.js +13 -9
  171. package/dist/esm/operation-node/alter-column-node.d.ts +2 -3
  172. package/dist/esm/operation-node/alter-column-node.js +2 -7
  173. package/dist/esm/operation-node/alter-table-node.d.ts +2 -2
  174. package/dist/esm/operation-node/column-definition-node.d.ts +1 -1
  175. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  176. package/dist/esm/operation-node/create-index-node.d.ts +2 -2
  177. package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
  178. package/dist/esm/operation-node/create-table-node.d.ts +2 -2
  179. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  180. package/dist/esm/operation-node/create-view-node.d.ts +1 -1
  181. package/dist/esm/operation-node/data-type-node.d.ts +2 -2
  182. package/dist/esm/operation-node/drop-constraint-node.d.ts +1 -1
  183. package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
  184. package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
  185. package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
  186. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  187. package/dist/esm/operation-node/drop-view-node.d.ts +1 -1
  188. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
  189. package/dist/esm/operation-node/generated-node.d.ts +1 -1
  190. package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
  191. package/dist/esm/operation-node/join-node.d.ts +1 -2
  192. package/dist/esm/operation-node/join-node.js +0 -8
  193. package/dist/esm/operation-node/json-operator-chain-node.d.ts +16 -0
  194. package/dist/esm/operation-node/json-operator-chain-node.js +23 -0
  195. package/dist/esm/operation-node/json-path-leg-node.d.ts +14 -0
  196. package/dist/esm/operation-node/json-path-leg-node.js +17 -0
  197. package/dist/esm/operation-node/json-path-node.d.ts +16 -0
  198. package/dist/esm/operation-node/json-path-node.js +23 -0
  199. package/dist/esm/operation-node/json-reference-node.d.ts +17 -0
  200. package/dist/esm/operation-node/json-reference-node.js +23 -0
  201. package/dist/esm/operation-node/on-conflict-node.d.ts +1 -1
  202. package/dist/esm/operation-node/on-duplicate-key-node.d.ts +1 -1
  203. package/dist/esm/operation-node/operation-node-transformer.d.ts +8 -0
  204. package/dist/esm/operation-node/operation-node-transformer.js +33 -1
  205. package/dist/esm/operation-node/operation-node-visitor.d.ts +8 -0
  206. package/dist/esm/operation-node/operation-node-visitor.js +4 -0
  207. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  208. package/dist/esm/operation-node/operator-node.d.ts +13 -9
  209. package/dist/esm/operation-node/operator-node.js +10 -1
  210. package/dist/esm/operation-node/query-node.d.ts +9 -10
  211. package/dist/esm/operation-node/query-node.js +0 -8
  212. package/dist/esm/operation-node/reference-node.d.ts +2 -2
  213. package/dist/esm/operation-node/reference-node.js +1 -1
  214. package/dist/esm/operation-node/references-node.d.ts +1 -1
  215. package/dist/esm/operation-node/select-modifier-node.d.ts +1 -1
  216. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  217. package/dist/esm/operation-node/select-query-node.js +0 -8
  218. package/dist/esm/operation-node/selection-node.d.ts +1 -1
  219. package/dist/esm/operation-node/set-operation-node.d.ts +1 -1
  220. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +1 -1
  221. package/dist/esm/operation-node/update-query-node.d.ts +1 -1
  222. package/dist/esm/operation-node/values-node.d.ts +1 -1
  223. package/dist/esm/operation-node/with-node.d.ts +1 -1
  224. package/dist/esm/parser/binary-operation-parser.d.ts +9 -12
  225. package/dist/esm/parser/binary-operation-parser.js +38 -114
  226. package/dist/esm/parser/coalesce-parser.d.ts +1 -1
  227. package/dist/esm/parser/data-type-parser.d.ts +1 -1
  228. package/dist/esm/parser/default-value-parser.d.ts +1 -1
  229. package/dist/esm/parser/expression-parser.d.ts +5 -5
  230. package/dist/esm/parser/group-by-parser.d.ts +2 -2
  231. package/dist/esm/parser/insert-values-parser.d.ts +4 -4
  232. package/dist/esm/parser/join-parser.d.ts +4 -4
  233. package/dist/esm/parser/order-by-parser.d.ts +3 -3
  234. package/dist/esm/parser/partition-by-parser.d.ts +2 -2
  235. package/dist/esm/parser/reference-parser.d.ts +13 -9
  236. package/dist/esm/parser/reference-parser.js +26 -15
  237. package/dist/esm/parser/returning-parser.d.ts +2 -2
  238. package/dist/esm/parser/select-parser.d.ts +10 -10
  239. package/dist/esm/parser/table-parser.d.ts +12 -12
  240. package/dist/esm/parser/unary-operation-parser.d.ts +1 -1
  241. package/dist/esm/parser/update-set-parser.d.ts +3 -3
  242. package/dist/esm/parser/update-set-parser.js +2 -4
  243. package/dist/esm/parser/value-parser.d.ts +4 -4
  244. package/dist/esm/parser/with-parser.d.ts +12 -8
  245. package/dist/esm/plugin/camel-case/camel-case.d.ts +1 -1
  246. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  247. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +29 -0
  248. package/dist/esm/plugin/with-schema/with-schema-transformer.js +22 -6
  249. package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -38
  250. package/dist/esm/query-builder/aggregate-function-builder.js +5 -60
  251. package/dist/esm/query-builder/case-builder.d.ts +11 -11
  252. package/dist/esm/query-builder/case-builder.js +3 -3
  253. package/dist/esm/query-builder/delete-query-builder.d.ts +84 -59
  254. package/dist/esm/query-builder/delete-query-builder.js +2 -63
  255. package/dist/esm/query-builder/delete-result.d.ts +1 -2
  256. package/dist/esm/query-builder/delete-result.js +2 -8
  257. package/dist/esm/query-builder/function-module.d.ts +44 -66
  258. package/dist/esm/query-builder/having-interface.d.ts +2 -35
  259. package/dist/esm/query-builder/insert-query-builder.d.ts +58 -47
  260. package/dist/esm/query-builder/insert-query-builder.js +17 -34
  261. package/dist/esm/query-builder/insert-result.d.ts +3 -4
  262. package/dist/esm/query-builder/insert-result.js +5 -14
  263. package/dist/esm/query-builder/join-builder.d.ts +2 -35
  264. package/dist/esm/query-builder/join-builder.js +2 -57
  265. package/dist/esm/query-builder/json-path-builder.d.ts +212 -0
  266. package/dist/esm/query-builder/json-path-builder.js +186 -0
  267. package/dist/esm/query-builder/no-result-error.d.ts +1 -1
  268. package/dist/esm/query-builder/on-conflict-builder.d.ts +144 -73
  269. package/dist/esm/query-builder/on-conflict-builder.js +3 -112
  270. package/dist/esm/query-builder/over-builder.d.ts +2 -2
  271. package/dist/esm/query-builder/over-builder.js +1 -1
  272. package/dist/esm/query-builder/returning-interface.d.ts +1 -1
  273. package/dist/esm/query-builder/select-query-builder.d.ts +139 -134
  274. package/dist/esm/query-builder/select-query-builder.js +25 -134
  275. package/dist/esm/query-builder/update-query-builder.d.ts +89 -62
  276. package/dist/esm/query-builder/update-query-builder.js +4 -64
  277. package/dist/esm/query-builder/update-result.d.ts +3 -3
  278. package/dist/esm/query-builder/update-result.js +5 -9
  279. package/dist/esm/query-builder/where-interface.d.ts +73 -38
  280. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  281. package/dist/esm/query-compiler/compiled-query.js +2 -2
  282. package/dist/esm/query-compiler/default-query-compiler.d.ts +8 -0
  283. package/dist/esm/query-compiler/default-query-compiler.js +37 -2
  284. package/dist/esm/query-compiler/query-compiler.d.ts +1 -1
  285. package/dist/esm/query-creator.d.ts +4 -2
  286. package/dist/esm/schema/alter-column-builder.d.ts +11 -5
  287. package/dist/esm/schema/alter-column-builder.js +19 -21
  288. package/dist/esm/schema/alter-table-builder.d.ts +0 -4
  289. package/dist/esm/schema/alter-table-builder.js +2 -9
  290. package/dist/esm/schema/column-definition-builder.d.ts +1 -1
  291. package/dist/esm/schema/column-definition-builder.js +1 -2
  292. package/dist/esm/schema/create-index-builder.js +2 -2
  293. package/dist/esm/schema/create-table-builder.d.ts +2 -6
  294. package/dist/esm/schema/create-table-builder.js +0 -6
  295. package/dist/esm/schema/schema.d.ts +1 -2
  296. package/dist/esm/schema/schema.js +1 -2
  297. package/dist/esm/util/column-type.d.ts +22 -18
  298. package/dist/esm/util/explainable.d.ts +1 -1
  299. package/dist/esm/util/infer-result.d.ts +2 -2
  300. package/dist/esm/util/log.d.ts +4 -4
  301. package/dist/esm/util/require-all-props.d.ts +1 -1
  302. package/dist/esm/util/type-utils.d.ts +19 -19
  303. package/package.json +25 -23
  304. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  305. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +0 -2
  306. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  307. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +0 -2
  308. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  309. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +0 -2
  310. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  311. package/dist/esm/query-builder/deprecated-having-expression-builder.js +0 -2
  312. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  313. package/dist/esm/query-builder/deprecated-on-expression-builder.js +0 -2
  314. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  315. package/dist/esm/query-builder/deprecated-where-expression-builder.js +0 -2
@@ -19,7 +19,6 @@ import { HavingExpressionFactory, HavingInterface } from './having-interface.js'
19
19
  import { Explainable, ExplainFormat } from '../util/explainable.js';
20
20
  import { AliasedExpression, Expression } from '../expression/expression.js';
21
21
  import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
22
- import { ExistsExpression } from '../parser/unary-operation-parser.js';
23
22
  import { KyselyTypeError } from '../util/type-error.js';
24
23
  import { Selectable } from '../util/column-type.js';
25
24
  import { Streamable } from '../util/streamable.js';
@@ -53,6 +52,10 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
53
52
  *
54
53
  * ### Examples
55
54
  *
55
+ * <!-- siteExample("where", "Simple where clause", 10) -->
56
+ *
57
+ * `where` method calls are combined with `AND`:
58
+ *
56
59
  * ```ts
57
60
  * const person = await db
58
61
  * .selectFrom('person')
@@ -75,9 +78,65 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
75
78
  * sql`your operator`
76
79
  * ```
77
80
  *
81
+ * <!-- siteExample("where", "Where in", 20) -->
82
+ *
83
+ * Find multiple items using a list of identifiers:
84
+ *
85
+ * ```ts
86
+ * const persons = await db
87
+ * .selectFrom('person')
88
+ * .selectAll()
89
+ * .where('id', 'in', ['1', '2', '3'])
90
+ * .execute()
91
+ * ```
92
+ *
93
+ * The generated SQL (PostgreSQL):
94
+ *
95
+ * ```sql
96
+ * select * from "person" where "id" in ($1, $2, $3)
97
+ * ```
98
+ *
99
+ * <!-- siteExample("where", "OR where", 30) -->
100
+ *
101
+ * To combine conditions using `OR`, you can use the expression builder:
102
+ *
103
+ * ```ts
104
+ * const persons = await db
105
+ * .selectFrom('person')
106
+ * .selectAll()
107
+ * .where(({ or, and, cmpr }) => or([
108
+ * and([
109
+ * cmpr('first_name', '=', 'Jennifer'),
110
+ * cmpr('last_name', '=', 'Aniston')
111
+ * ]),
112
+ * and([
113
+ * cmpr('first_name', '=', 'Sylvester'),
114
+ * cmpr('last_name', '=', 'Stallone')
115
+ * ])
116
+ * ]))
117
+ * .execute()
118
+ * ```
119
+ *
120
+ * The generated SQL (PostgreSQL):
121
+ *
122
+ * ```sql
123
+ * select *
124
+ * from "person"
125
+ * where (
126
+ * ("first_name" = $1 AND "last_name" = $2)
127
+ * OR
128
+ * ("first_name" = $3 AND "last_name" = $4)
129
+ * )
130
+ * ```
131
+ *
132
+ * <!-- siteExample("where", "Conditional where calls", 40) -->
133
+ *
78
134
  * You can add expressions conditionally like this:
79
135
  *
80
136
  * ```ts
137
+ * const firstName: string | undefined = 'Jennifer'
138
+ * const lastName: string | undefined = 'Aniston'
139
+ *
81
140
  * let query = db
82
141
  * .selectFrom('person')
83
142
  * .selectAll()
@@ -144,22 +203,30 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
144
203
  * select * from "person" where "id" in ($1, $2, $3)
145
204
  * ```
146
205
  *
206
+ * <!-- siteExample("where", "Complex where clause", 50) -->
207
+ *
147
208
  * For complex `where` expressions you can pass in a single callback and
148
- * use the {@link ExpressionBuilder} to build your expression:
209
+ * use the `ExpressionBuilder` to build your expression:
149
210
  *
150
211
  * ```ts
212
+ * const firstName = 'Jennifer'
213
+ * const maxAge = 60
214
+ *
151
215
  * const persons = await db
152
216
  * .selectFrom('person')
153
217
  * .selectAll('person')
154
- * .where(({ cmpr, or, and, not, exists, selectFrom, val }) => and([
218
+ * .where(({ cmpr, or, and, not, exists, selectFrom }) => and([
155
219
  * or([
156
220
  * cmpr('first_name', '=', firstName),
157
221
  * cmpr('age', '<', maxAge)
158
222
  * ]),
159
223
  * not(exists(
160
- * selectFrom('pet').select('pet.id').whereRef('pet.owner_id', '=', 'person.id')
224
+ * selectFrom('pet')
225
+ * .select('pet.id')
226
+ * .whereRef('pet.owner_id', '=', 'person.id')
161
227
  * ))
162
228
  * ]))
229
+ * .execute()
163
230
  * ```
164
231
  *
165
232
  * The generated SQL (PostgreSQL):
@@ -280,32 +347,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
280
347
  * from "person"
281
348
  */
282
349
  whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
283
- /**
284
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
285
- */
286
- orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
287
- orWhere(factory: WhereExpressionFactory<DB, TB>): SelectQueryBuilder<DB, TB, O>;
288
- orWhere(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
289
- /**
290
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
291
- */
292
- orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
293
- /**
294
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
295
- */
296
- whereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
297
- /**
298
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
299
- */
300
- whereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
301
- /**
302
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
303
- */
304
- orWhereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
305
- /**
306
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
307
- */
308
- orWhereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
309
350
  /**
310
351
  * Just like {@link WhereInterface.where | where} but adds a `having` statement
311
352
  * instead of a `where` statement.
@@ -318,36 +359,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
318
359
  * instead of a `where` statement.
319
360
  */
320
361
  havingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
321
- /**
322
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
323
- */
324
- orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
325
- orHaving(factory: HavingExpressionFactory<DB, TB>): SelectQueryBuilder<DB, TB, O>;
326
- orHaving(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
327
- /**
328
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
329
- */
330
- orHavingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
331
- /**
332
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
333
- */
334
- havingExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
335
- /**
336
- * @deprecated Use {@link havingNotExists} instead.
337
- */
338
- havingNotExist(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
339
- /**
340
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
341
- */
342
- havingNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
343
- /**
344
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
345
- */
346
- orHavingExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
347
- /**
348
- * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
349
- */
350
- orHavingNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
351
362
  /**
352
363
  * Adds a select statement to the query.
353
364
  *
@@ -372,6 +383,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
372
383
  *
373
384
  * ### Examples
374
385
  *
386
+ * <!-- siteExample("select", "A single column", 10) -->
387
+ *
375
388
  * Select a single column:
376
389
  *
377
390
  * ```ts
@@ -380,8 +393,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
380
393
  * .select('id')
381
394
  * .where('first_name', '=', 'Arnold')
382
395
  * .execute()
383
- *
384
- * persons[0].id
385
396
  * ```
386
397
  *
387
398
  * The generated SQL (PostgreSQL):
@@ -390,6 +401,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
390
401
  * select "id" from "person" where "first_name" = $1
391
402
  * ```
392
403
  *
404
+ * <!-- siteExample("select", "Column with a table", 20) -->
405
+ *
393
406
  * Select a single column and specify a table:
394
407
  *
395
408
  * ```ts
@@ -397,8 +410,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
397
410
  * .selectFrom(['person', 'pet'])
398
411
  * .select('person.id')
399
412
  * .execute()
400
- *
401
- * persons[0].id
402
413
  * ```
403
414
  *
404
415
  * The generated SQL (PostgreSQL):
@@ -407,6 +418,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
407
418
  * select "person"."id" from "person", "pet"
408
419
  * ```
409
420
  *
421
+ * <!-- siteExample("select", "Multiple columns", 30) -->
422
+ *
410
423
  * Select multiple columns:
411
424
  *
412
425
  * ```ts
@@ -414,9 +427,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
414
427
  * .selectFrom('person')
415
428
  * .select(['person.id', 'first_name'])
416
429
  * .execute()
417
- *
418
- * persons[0].id
419
- * persons[0].first_name
420
430
  * ```
421
431
  *
422
432
  * The generated SQL (PostgreSQL):
@@ -425,35 +435,36 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
425
435
  * select "person"."id", "first_name" from "person"
426
436
  * ```
427
437
  *
428
- * Aliased selections:
438
+ * <!-- siteExample("select", "Aliases", 40) -->
439
+ *
440
+ * You can provide an alias for the selections by appending `as the_alias` to the selection.
429
441
  *
430
442
  * ```ts
431
443
  * const persons = await db
432
444
  * .selectFrom('person')
433
445
  * .select([
434
- * 'person.first_name as fn',
446
+ * 'first_name as fn',
435
447
  * 'person.last_name as ln'
436
448
  * ])
437
449
  * .execute()
438
- *
439
- * persons[0].fn
440
- * persons[0].ln
441
450
  * ```
442
451
  *
443
452
  * The generated SQL (PostgreSQL):
444
453
  *
445
454
  * ```sql
446
455
  * select
447
- * "person"."first_name" as "fn",
456
+ * "first_name" as "fn",
448
457
  * "person"."last_name" as "ln"
449
458
  * from "person"
450
459
  * ```
451
460
  *
452
- * You can also select arbitrary expression including subqueries and raw sql snippets.
453
- * When you do that, you need to give a name for the selections using the {@link as} method:
461
+ * <!-- siteExample("select", "Complex selections", 50) -->
462
+ *
463
+ * You can select arbitrary expression including subqueries and raw sql snippets.
464
+ * When you do that, you need to give a name for the selections using the `as` method:
454
465
  *
455
466
  * ```ts
456
- * import { sql } from 'kysely'
467
+ * import { sql } from 'kysely'
457
468
  *
458
469
  * const persons = await db.selectFrom('person')
459
470
  * .select(({ selectFrom, or, cmpr }) => [
@@ -465,7 +476,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
465
476
  * .limit(1)
466
477
  * .as('first_pet_name'),
467
478
  *
468
- * // Build and select an expression using the expression builder
479
+ * // Build and select an expression using
480
+ * // the expression builder
469
481
  * or([
470
482
  * cmpr('first_name', '=', 'Jennifer'),
471
483
  * cmpr('first_name', '=', 'Arnold')
@@ -475,10 +487,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
475
487
  * sql<string>`concat(first_name, ' ', last_name)`.as('full_name')
476
488
  * ])
477
489
  * .execute()
478
- *
479
- * persons[0].first_pet_name
480
- * persons[0].is_jennifer_or_arnold
481
- * persons[0].full_name
482
490
  * ```
483
491
  *
484
492
  * The generated SQL (PostgreSQL):
@@ -543,8 +551,10 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
543
551
  *
544
552
  * ### Examples
545
553
  *
554
+ * <!-- siteExample("select", "Distinct on", 80) -->
555
+ *
546
556
  * ```ts
547
- * await db.selectFrom('person')
557
+ * const persons = await db.selectFrom('person')
548
558
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
549
559
  * .where('pet.name', '=', 'Doggo')
550
560
  * .distinctOn('person.id')
@@ -610,10 +620,12 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
610
620
  /**
611
621
  * Makes the selection distinct.
612
622
  *
623
+ * <!-- siteExample("select", "Distinct", 70) -->
624
+ *
613
625
  * ### Examples
614
626
  *
615
627
  * ```ts
616
- * await db.selectFrom('person')
628
+ * const persons = await db.selectFrom('person')
617
629
  * .select('first_name')
618
630
  * .distinct()
619
631
  * .execute()
@@ -655,6 +667,10 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
655
667
  *
656
668
  * ### Examples
657
669
  *
670
+ * <!-- siteExample("select", "All columns", 90) -->
671
+ *
672
+ * The `selectAll` method generates `SELECT *`:
673
+ *
658
674
  * ```ts
659
675
  * const persons = await db
660
676
  * .selectFrom('person')
@@ -668,6 +684,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
668
684
  * select * from "person"
669
685
  * ```
670
686
  *
687
+ * <!-- siteExample("select", "All columns of a table", 100) -->
688
+ *
671
689
  * Select all columns of a table:
672
690
  *
673
691
  * ```ts
@@ -706,7 +724,9 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
706
724
  *
707
725
  * ### Examples
708
726
  *
709
- * Simple usage by providing a table name and two columns to join:
727
+ * <!-- siteExample("join", "Simple inner join", 10) -->
728
+ *
729
+ * Simple inner joins can be done by providing a table name and two columns to join:
710
730
  *
711
731
  * ```ts
712
732
  * const result = await db
@@ -714,22 +734,21 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
714
734
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
715
735
  * // `select` needs to come after the call to `innerJoin` so
716
736
  * // that you can select from the joined table.
717
- * .select('person.id', 'pet.name')
737
+ * .select(['person.id', 'pet.name as pet_name'])
718
738
  * .execute()
719
- *
720
- * result[0].id
721
- * result[0].name
722
739
  * ```
723
740
  *
724
741
  * The generated SQL (PostgreSQL):
725
742
  *
726
743
  * ```sql
727
- * select "person"."id", "pet"."name"
744
+ * select "person"."id", "pet"."name" as "pet_name"
728
745
  * from "person"
729
746
  * inner join "pet"
730
747
  * on "pet"."owner_id" = "person"."id"
731
748
  * ```
732
749
  *
750
+ * <!-- siteExample("join", "Aliased inner join", 20) -->
751
+ *
733
752
  * You can give an alias for the joined table like this:
734
753
  *
735
754
  * ```ts
@@ -750,13 +769,15 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
750
769
  * where "p".name" = $1
751
770
  * ```
752
771
  *
772
+ * <!-- siteExample("join", "Complex join", 30) -->
773
+ *
753
774
  * You can provide a function as the second argument to get a join
754
775
  * builder for creating more complex joins. The join builder has a
755
776
  * bunch of `on*` methods for building the `on` clause of the join.
756
777
  * There's basically an equivalent for every `where` method
757
- * (`on`, `onRef`, `onExists` etc.). You can do all the same things
758
- * with the `on` method that you can with the corresponding `where`
759
- * method. See the `where` method documentation for more examples.
778
+ * (`on`, `onRef` etc.). You can do all the same things with the
779
+ * `on` method that you can with the corresponding `where` method.
780
+ * See the `where` method documentation for more examples.
760
781
  *
761
782
  * ```ts
762
783
  * await db.selectFrom('person')
@@ -780,34 +801,36 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
780
801
  * and "pet"."name" = $1
781
802
  * ```
782
803
  *
783
- * You can join a subquery by providing a select query (or a callback)
784
- * as the first argument:
804
+ * <!-- siteExample("join", "Subquery join", 40) -->
805
+ *
806
+ * You can join a subquery by providing two callbacks:
785
807
  *
786
808
  * ```ts
787
- * await db.selectFrom('person')
809
+ * const result = await db.selectFrom('person')
788
810
  * .innerJoin(
789
- * db.selectFrom('pet')
790
- * .select(['owner_id', 'name'])
811
+ * (eb) => eb
812
+ * .selectFrom('pet')
813
+ * .select(['owner_id as owner', 'name'])
791
814
  * .where('name', '=', 'Doggo')
792
815
  * .as('doggos'),
793
- * 'doggos.owner_id',
794
- * 'person.id',
816
+ * (join) => join
817
+ * .onRef('doggos.owner', '=', 'person.id'),
795
818
  * )
796
- * .selectAll()
819
+ * .selectAll('doggos')
797
820
  * .execute()
798
821
  * ```
799
822
  *
800
823
  * The generated SQL (PostgreSQL):
801
824
  *
802
825
  * ```sql
803
- * select *
826
+ * select "doggos".*
804
827
  * from "person"
805
828
  * inner join (
806
- * select "owner_id", "name"
829
+ * select "owner_id" as "owner", "name"
807
830
  * from "pet"
808
831
  * where "name" = $1
809
832
  * ) as "doggos"
810
- * on "doggos"."owner_id" = "person"."id"
833
+ * on "doggos"."owner" = "person"."id"
811
834
  * ```
812
835
  */
813
836
  innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
@@ -1326,10 +1349,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1326
1349
  * ```
1327
1350
  */
1328
1351
  $call<T>(func: (qb: this) => T): T;
1329
- /**
1330
- * @deprecated Use `$call` instead
1331
- */
1332
- call<T>(func: (qb: this) => T): T;
1333
1352
  /**
1334
1353
  * Call `func(this)` if `condition` is true.
1335
1354
  *
@@ -1385,23 +1404,17 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1385
1404
  * You can also call any other methods inside the callback:
1386
1405
  *
1387
1406
  * ```ts
1388
- * const { count } = db.fn
1389
- *
1390
1407
  * db.selectFrom('person')
1391
1408
  * .select('person.id')
1392
1409
  * .$if(filterByFirstName, (qb) => qb.where('first_name', '=', firstName))
1393
1410
  * .$if(filterByPetCount, (qb) => qb
1394
1411
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
1395
- * .having(count('pet.id'), '>', petCountLimit)
1412
+ * .having((eb) => eb.fn.count('pet.id'), '>', petCountLimit)
1396
1413
  * .groupBy('person.id')
1397
1414
  * )
1398
1415
  * ```
1399
1416
  */
1400
1417
  $if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<DB, TB, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<O2>>;
1401
- /**
1402
- * @deprecated Use `$if` instead
1403
- */
1404
- if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<DB, TB, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<O2>>;
1405
1418
  /**
1406
1419
  * Change the output type of the query.
1407
1420
  *
@@ -1409,10 +1422,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1409
1422
  * don't support your use case.
1410
1423
  */
1411
1424
  $castTo<T>(): SelectQueryBuilder<DB, TB, T>;
1412
- /**
1413
- * @deprecated Use `$castTo` instead.
1414
- */
1415
- castTo<T>(): SelectQueryBuilder<DB, TB, T>;
1416
1425
  /**
1417
1426
  * Narrows (parts of) the output type of the query.
1418
1427
  *
@@ -1494,10 +1503,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1494
1503
  * ```
1495
1504
  */
1496
1505
  $assertType<T extends O>(): O extends T ? SelectQueryBuilder<DB, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
1497
- /**
1498
- * @deprecated Use `$assertType` instead.
1499
- */
1500
- assertType<T extends O>(): O extends T ? SelectQueryBuilder<DB, TB, T> : KyselyTypeError<`assertType() call failed: The type passed in is not equal to the output type of the query.`>;
1501
1506
  /**
1502
1507
  * Returns a copy of this SelectQueryBuilder instance with the given plugin installed.
1503
1508
  */
@@ -1628,24 +1633,24 @@ export declare class AliasedSelectQueryBuilder<DB, TB extends keyof DB, O = unde
1628
1633
  */
1629
1634
  toOperationNode(): AliasNode;
1630
1635
  }
1631
- 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;
1632
- 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 & ShallowRecord<A, R>, TB | A, O>;
1633
- declare type InnerJoinedDB<DB, A extends string, R> = DrainOuterGeneric<{
1636
+ export 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;
1637
+ 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 & ShallowRecord<A, R>, TB | A, O>;
1638
+ type InnerJoinedDB<DB, A extends string, R> = DrainOuterGeneric<{
1634
1639
  [C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
1635
1640
  }>;
1636
- 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;
1637
- 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 & ShallowRecord<A, Nullable<R>>, TB | A, O>;
1638
- declare type LeftJoinedDB<DB, A extends keyof any, R> = DrainOuterGeneric<{
1641
+ export 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;
1642
+ 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 & ShallowRecord<A, Nullable<R>>, TB | A, O>;
1643
+ type LeftJoinedDB<DB, A extends keyof any, R> = DrainOuterGeneric<{
1639
1644
  [C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
1640
1645
  }>;
1641
- 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;
1642
- declare type RightJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<RightJoinedDB<DB, TB, A, R>, TB | A, O>;
1643
- declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
1646
+ export 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;
1647
+ type RightJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<RightJoinedDB<DB, TB, A, R>, TB | A, O>;
1648
+ type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
1644
1649
  [C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
1645
1650
  }>;
1646
- 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;
1647
- declare type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, TB | A, O>;
1648
- declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
1651
+ export 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;
1652
+ type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, TB | A, O>;
1653
+ type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
1649
1654
  [C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
1650
1655
  }>;
1651
1656
  export {};