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
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCoalesce = void 0;
4
+ const raw_node_js_1 = require("../operation-node/raw-node.js");
5
+ const reference_parser_js_1 = require("./reference-parser.js");
6
+ function parseCoalesce(values) {
7
+ return raw_node_js_1.RawNode.create(values.length > 1
8
+ ? ['coalesce(', ...new Array(values.length - 1).fill(', '), ')']
9
+ : ['coalesce(', ')'], (0, reference_parser_js_1.parseReferenceExpressionOrList)(values));
10
+ }
11
+ exports.parseCoalesce = parseCoalesce;
@@ -1,5 +1,5 @@
1
- import { ColumnDataType, DataTypeNode } from '../operation-node/data-type-node.js';
2
- import { RawNode } from '../operation-node/raw-node.js';
3
- import { AnyRawBuilder } from '../util/type-utils.js';
4
- export declare type DataTypeExpression = ColumnDataType | AnyRawBuilder;
5
- export declare function parseDataTypeExpression(dataType: DataTypeExpression): DataTypeNode | RawNode;
1
+ import { Expression } from '../expression/expression.js';
2
+ import { ColumnDataType } from '../operation-node/data-type-node.js';
3
+ import { OperationNode } from '../operation-node/operation-node.js';
4
+ export declare type DataTypeExpression = ColumnDataType | Expression<any>;
5
+ export declare function parseDataTypeExpression(dataType: DataTypeExpression): OperationNode;
@@ -1,5 +1,4 @@
1
- import { RawNode } from '../operation-node/raw-node.js';
2
- import { ValueNode } from '../operation-node/value-node.js';
3
- import { RawBuilder } from '../raw-builder/raw-builder.js';
4
- export declare type DefaultValueExpression = unknown | RawBuilder;
5
- export declare function parseDefaultValueExpression(value: DefaultValueExpression): ValueNode | RawNode;
1
+ import { Expression } from '../expression/expression.js';
2
+ import { OperationNode } from '../operation-node/operation-node.js';
3
+ export declare type DefaultValueExpression = unknown | Expression<unknown>;
4
+ export declare function parseDefaultValueExpression(value: DefaultValueExpression): OperationNode;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseDefaultValueExpression = void 0;
4
+ const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
4
5
  const value_node_js_1 = require("../operation-node/value-node.js");
5
- const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
6
6
  function parseDefaultValueExpression(value) {
7
- return value instanceof raw_builder_js_1.RawBuilder
7
+ return (0, operation_node_source_js_1.isOperationNodeSource)(value)
8
8
  ? value.toOperationNode()
9
9
  : value_node_js_1.ValueNode.createImmediate(value);
10
10
  }
@@ -0,0 +1,10 @@
1
+ import { AliasedExpression, Expression } from '../expression/expression.js';
2
+ import { AliasNode } from '../operation-node/alias-node.js';
3
+ import { OperationNode } from '../operation-node/operation-node.js';
4
+ import { ExpressionBuilder } from '../query-builder/expression-builder.js';
5
+ import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
6
+ export declare type ExpressionOrFactory<DB, TB extends keyof DB, V> = SelectQueryBuilder<any, any, Record<string, V>> | ((eb: ExpressionBuilder<DB, TB>) => SelectQueryBuilder<any, any, Record<string, V>>) | Expression<V> | ((eb: ExpressionBuilder<DB, TB>) => Expression<V>);
7
+ export declare type AliasedExpressionOrFactory<DB, TB extends keyof DB> = AliasedExpression<any, any> | ((qb: ExpressionBuilder<DB, TB>) => AliasedExpression<any, any>);
8
+ export declare function parseExpression(exp: ExpressionOrFactory<any, any, any>): OperationNode;
9
+ export declare function parseAliasedExpression(exp: AliasedExpressionOrFactory<any, any>): AliasNode;
10
+ export declare function isExpressionOrFactory(obj: unknown): obj is ExpressionOrFactory<any, any, any>;
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isComplexExpression = exports.parseAliasedComplexExpression = exports.parseComplexExpression = void 0;
3
+ exports.isExpressionOrFactory = exports.parseAliasedExpression = exports.parseExpression = void 0;
4
+ const expression_js_1 = require("../expression/expression.js");
4
5
  const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
5
6
  const object_utils_js_1 = require("../util/object-utils.js");
6
7
  const parse_utils_js_1 = require("./parse-utils.js");
7
- function parseComplexExpression(exp) {
8
+ function parseExpression(exp) {
8
9
  if ((0, operation_node_source_js_1.isOperationNodeSource)(exp)) {
9
10
  return exp.toOperationNode();
10
11
  }
@@ -13,8 +14,8 @@ function parseComplexExpression(exp) {
13
14
  }
14
15
  throw new Error(`invalid expression: ${JSON.stringify(exp)}`);
15
16
  }
16
- exports.parseComplexExpression = parseComplexExpression;
17
- function parseAliasedComplexExpression(exp) {
17
+ exports.parseExpression = parseExpression;
18
+ function parseAliasedExpression(exp) {
18
19
  if ((0, operation_node_source_js_1.isOperationNodeSource)(exp)) {
19
20
  return exp.toOperationNode();
20
21
  }
@@ -23,8 +24,8 @@ function parseAliasedComplexExpression(exp) {
23
24
  }
24
25
  throw new Error(`invalid aliased expression: ${JSON.stringify(exp)}`);
25
26
  }
26
- exports.parseAliasedComplexExpression = parseAliasedComplexExpression;
27
- function isComplexExpression(obj) {
28
- return (0, operation_node_source_js_1.isOperationNodeSource)(obj) || (0, object_utils_js_1.isFunction)(obj);
27
+ exports.parseAliasedExpression = parseAliasedExpression;
28
+ function isExpressionOrFactory(obj) {
29
+ return (0, expression_js_1.isExpression)(obj) || (0, object_utils_js_1.isFunction)(obj);
29
30
  }
30
- exports.isComplexExpression = isComplexExpression;
31
+ exports.isExpressionOrFactory = isExpressionOrFactory;
@@ -2,4 +2,4 @@ import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
2
2
  import { ReferenceExpression } from './reference-parser.js';
3
3
  export declare type GroupByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | (keyof O & string);
4
4
  export declare type GroupByExpressionOrList<DB, TB extends keyof DB, O> = ReadonlyArray<GroupByExpression<DB, TB, O>> | GroupByExpression<DB, TB, O>;
5
- export declare function parseGroupBy(orderBy: GroupByExpressionOrList<any, any, any>): GroupByItemNode[];
5
+ export declare function parseGroupBy(groupBy: GroupByExpressionOrList<any, any, any>): GroupByItemNode[];
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseGroupBy = void 0;
4
4
  const group_by_item_node_js_1 = require("../operation-node/group-by-item-node.js");
5
5
  const reference_parser_js_1 = require("./reference-parser.js");
6
- function parseGroupBy(orderBy) {
7
- return (0, reference_parser_js_1.parseReferenceExpressionOrList)(orderBy).map(group_by_item_node_js_1.GroupByItemNode.create);
6
+ function parseGroupBy(groupBy) {
7
+ return (0, reference_parser_js_1.parseReferenceExpressionOrList)(groupBy).map(group_by_item_node_js_1.GroupByItemNode.create);
8
8
  }
9
9
  exports.parseGroupBy = parseGroupBy;
@@ -0,0 +1,2 @@
1
+ import { SchemableIdentifierNode } from '../operation-node/schemable-identifier-node.js';
2
+ export declare function parseSchemableIdentifier(id: string): SchemableIdentifierNode;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSchemableIdentifier = void 0;
4
+ const schemable_identifier_node_js_1 = require("../operation-node/schemable-identifier-node.js");
5
+ function parseSchemableIdentifier(id) {
6
+ const SCHEMA_SEPARATOR = '.';
7
+ if (id.includes(SCHEMA_SEPARATOR)) {
8
+ const parts = id.split(SCHEMA_SEPARATOR).map(trim);
9
+ if (parts.length === 2) {
10
+ return schemable_identifier_node_js_1.SchemableIdentifierNode.createWithSchema(parts[0], parts[1]);
11
+ }
12
+ else {
13
+ throw new Error(`invalid schemable identifier ${id}`);
14
+ }
15
+ }
16
+ else {
17
+ return schemable_identifier_node_js_1.SchemableIdentifierNode.create(id);
18
+ }
19
+ }
20
+ exports.parseSchemableIdentifier = parseSchemableIdentifier;
21
+ function trim(str) {
22
+ return str.trim();
23
+ }
@@ -5,7 +5,7 @@ import { NonNullableInsertKeys, NullableInsertKeys, InsertType } from '../util/c
5
5
  export declare type InsertObject<DB, TB extends keyof DB> = {
6
6
  [C in NonNullableInsertKeys<DB[TB]>]: ValueExpression<DB, TB, InsertType<DB[TB][C]>>;
7
7
  } & {
8
- [C in NullableInsertKeys<DB[TB]>]?: ValueExpression<DB, TB, InsertType<DB[TB][C]>>;
8
+ [C in NullableInsertKeys<DB[TB]>]?: ValueExpression<DB, TB, InsertType<DB[TB][C]>> | undefined;
9
9
  };
10
10
  export declare type InsertObjectOrList<DB, TB extends keyof DB> = InsertObject<DB, TB> | ReadonlyArray<InsertObject<DB, TB>>;
11
11
  export declare function parseInsertObjectOrList(args: InsertObjectOrList<any, any>): [ReadonlyArray<ColumnNode>, ValuesNode];
@@ -7,7 +7,7 @@ const value_list_node_js_1 = require("../operation-node/value-list-node.js");
7
7
  const object_utils_js_1 = require("../util/object-utils.js");
8
8
  const value_parser_js_1 = require("./value-parser.js");
9
9
  const values_node_js_1 = require("../operation-node/values-node.js");
10
- const complex_expression_parser_js_1 = require("./complex-expression-parser.js");
10
+ const expression_parser_js_1 = require("./expression-parser.js");
11
11
  const default_insert_value_node_js_1 = require("../operation-node/default-insert-value-node.js");
12
12
  function parseInsertObjectOrList(args) {
13
13
  return parseInsertColumnsAndValues(Array.isArray(args) ? args : [args]);
@@ -42,7 +42,7 @@ function parseRowValues(row, columns) {
42
42
  const columnIdx = columns.get(col);
43
43
  if (columnIdx !== undefined) {
44
44
  const value = row[col];
45
- if ((0, complex_expression_parser_js_1.isComplexExpression)(value)) {
45
+ if ((0, expression_parser_js_1.isExpressionOrFactory)(value)) {
46
46
  complexColumn = true;
47
47
  }
48
48
  rowValues[columnIdx] = value;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseJoin = void 0;
4
4
  const join_node_js_1 = require("../operation-node/join-node.js");
5
5
  const table_parser_js_1 = require("./table-parser.js");
6
- const filter_parser_js_1 = require("./filter-parser.js");
6
+ const binary_operation_parser_js_1 = require("./binary-operation-parser.js");
7
7
  const parse_utils_js_1 = require("./parse-utils.js");
8
8
  function parseJoin(joinType, args) {
9
9
  if (args.length === 3) {
@@ -22,5 +22,5 @@ function parseCallbackJoin(joinType, from, callback) {
22
22
  return joinBuilder.toOperationNode();
23
23
  }
24
24
  function parseSingleOnJoin(joinType, from, lhsColumn, rhsColumn) {
25
- return join_node_js_1.JoinNode.createWithOn(joinType, (0, table_parser_js_1.parseTableExpression)(from), (0, filter_parser_js_1.parseReferenceFilter)(lhsColumn, '=', rhsColumn));
25
+ return join_node_js_1.JoinNode.createWithOn(joinType, (0, table_parser_js_1.parseTableExpression)(from), (0, binary_operation_parser_js_1.parseReferentialFilter)(lhsColumn, '=', rhsColumn));
26
26
  }
@@ -1,7 +1,7 @@
1
+ import { Expression } from '../expression/expression.js';
1
2
  import { OrderByItemNode } from '../operation-node/order-by-item-node.js';
2
- import { AnyRawBuilder } from '../util/type-utils.js';
3
3
  import { ReferenceExpression } from './reference-parser.js';
4
4
  export declare type OrderByDirection = 'asc' | 'desc';
5
5
  export declare type OrderByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | (keyof O & string);
6
- export declare type OrderByDirectionExpression = OrderByDirection | AnyRawBuilder;
6
+ export declare type OrderByDirectionExpression = OrderByDirection | Expression<any>;
7
7
  export declare function parseOrderBy(orderBy: OrderByExpression<any, any, any>, direction?: OrderByDirectionExpression): OrderByItemNode;
@@ -1,6 +1,7 @@
1
1
  import { JoinType } from '../operation-node/join-node.js';
2
2
  import { ExpressionBuilder } from '../query-builder/expression-builder.js';
3
3
  import { JoinBuilder } from '../query-builder/join-builder.js';
4
+ import { OverBuilder } from '../query-builder/over-builder.js';
4
5
  import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
5
6
  import { QueryCreator } from '../query-creator.js';
6
7
  import { TableExpression } from './table-parser.js';
@@ -8,3 +9,4 @@ export declare function createSelectQueryBuilder(): SelectQueryBuilder<any, any,
8
9
  export declare function createExpressionBuilder(): ExpressionBuilder<any, any>;
9
10
  export declare function createQueryCreator(): QueryCreator<any>;
10
11
  export declare function createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
12
+ export declare function createOverBuilder(): OverBuilder<any, any>;
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createJoinBuilder = exports.createQueryCreator = exports.createExpressionBuilder = exports.createSelectQueryBuilder = void 0;
3
+ exports.createOverBuilder = exports.createJoinBuilder = exports.createQueryCreator = exports.createExpressionBuilder = exports.createSelectQueryBuilder = void 0;
4
4
  const join_node_js_1 = require("../operation-node/join-node.js");
5
+ const over_node_js_1 = require("../operation-node/over-node.js");
5
6
  const select_query_node_js_1 = require("../operation-node/select-query-node.js");
6
7
  const expression_builder_js_1 = require("../query-builder/expression-builder.js");
7
8
  const join_builder_js_1 = require("../query-builder/join-builder.js");
9
+ const over_builder_js_1 = require("../query-builder/over-builder.js");
8
10
  const select_query_builder_js_1 = require("../query-builder/select-query-builder.js");
9
11
  const query_creator_js_1 = require("../query-creator.js");
10
12
  const noop_query_executor_js_1 = require("../query-executor/noop-query-executor.js");
@@ -36,3 +38,9 @@ function createJoinBuilder(joinType, table) {
36
38
  });
37
39
  }
38
40
  exports.createJoinBuilder = createJoinBuilder;
41
+ function createOverBuilder() {
42
+ return new over_builder_js_1.OverBuilder({
43
+ overNode: over_node_js_1.OverNode.create(),
44
+ });
45
+ }
46
+ exports.createOverBuilder = createOverBuilder;
@@ -0,0 +1,6 @@
1
+ import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
2
+ import { PartitionByItemNode } from '../operation-node/partition-by-item-node.js';
3
+ import { StringReference } from './reference-parser.js';
4
+ export declare type PartitionByExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any>;
5
+ export declare type PartitionByExpressionOrList<DB, TB extends keyof DB> = ReadonlyArray<PartitionByExpression<DB, TB>> | PartitionByExpression<DB, TB>;
6
+ export declare function parsePartitionBy(partitionBy: PartitionByExpressionOrList<any, any>): PartitionByItemNode[];
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parsePartitionBy = void 0;
4
+ const partition_by_item_node_js_1 = require("../operation-node/partition-by-item-node.js");
5
+ const reference_parser_js_1 = require("./reference-parser.js");
6
+ function parsePartitionBy(partitionBy) {
7
+ return (0, reference_parser_js_1.parseReferenceExpressionOrList)(partitionBy).map(partition_by_item_node_js_1.PartitionByItemNode.create);
8
+ }
9
+ exports.parsePartitionBy = parsePartitionBy;
@@ -1,21 +1,22 @@
1
1
  import { AliasNode } from '../operation-node/alias-node.js';
2
2
  import { ColumnNode } from '../operation-node/column-node.js';
3
- import { ReferenceExpressionNode } from '../operation-node/operation-node-utils.js';
4
- import { ReferenceNode } from '../operation-node/reference-node.js';
5
3
  import { AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
6
- import { RawBuilder } from '../raw-builder/raw-builder.js';
7
4
  import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
8
- import { ComplexExpression } from './complex-expression-parser.js';
5
+ import { ExpressionOrFactory } from './expression-parser.js';
9
6
  import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
10
7
  import { SelectType } from '../util/column-type.js';
11
- export declare type ReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any> | ComplexExpression<DB, TB>;
12
- export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
8
+ import { OperationNode } from '../operation-node/operation-node.js';
9
+ import { Expression } from '../expression/expression.js';
10
+ import { SimpleReferenceExpressionNode } from '../operation-node/simple-reference-expression-node.js';
13
11
  export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
14
- export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : unknown;
15
- declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : unknown;
16
- export declare function parseReferenceExpressionOrList(arg: ReferenceExpressionOrList<any, any>): ReferenceExpressionNode[];
17
- export declare function parseReferenceExpression(exp: ReferenceExpression<any, any>): ReferenceExpressionNode;
18
- export declare function parseStringReference(ref: string): ColumnNode | ReferenceNode;
19
- export declare function parseAliasedStringReference(ref: string): ColumnNode | ReferenceNode | AliasNode;
12
+ export declare type SimpleReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any>;
13
+ export declare type ReferenceExpression<DB, TB extends keyof DB> = SimpleReferenceExpression<DB, TB> | ExpressionOrFactory<DB, TB, any>;
14
+ export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
15
+ export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends Expression<infer O> ? O : RE extends (qb: any) => Expression<infer O> ? O : DV;
16
+ export declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string, DV = unknown> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : DV;
17
+ export declare function parseSimpleReferenceExpression(exp: SimpleReferenceExpression<any, any>): SimpleReferenceExpressionNode;
18
+ export declare function parseReferenceExpressionOrList(arg: ReferenceExpressionOrList<any, any>): OperationNode[];
19
+ export declare function parseReferenceExpression(exp: ReferenceExpression<any, any>): OperationNode;
20
+ export declare function parseStringReference(ref: string): SimpleReferenceExpressionNode;
21
+ export declare function parseAliasedStringReference(ref: string): SimpleReferenceExpressionNode | AliasNode;
20
22
  export declare function parseColumnName(column: AnyColumn<any, any>): ColumnNode;
21
- export {};
@@ -1,14 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseColumnName = exports.parseAliasedStringReference = exports.parseStringReference = exports.parseReferenceExpression = exports.parseReferenceExpressionOrList = void 0;
3
+ exports.parseColumnName = exports.parseAliasedStringReference = exports.parseStringReference = exports.parseReferenceExpression = exports.parseReferenceExpressionOrList = exports.parseSimpleReferenceExpression = void 0;
4
4
  const alias_node_js_1 = require("../operation-node/alias-node.js");
5
5
  const column_node_js_1 = require("../operation-node/column-node.js");
6
6
  const reference_node_js_1 = require("../operation-node/reference-node.js");
7
7
  const table_node_js_1 = require("../operation-node/table-node.js");
8
8
  const object_utils_js_1 = require("../util/object-utils.js");
9
- const complex_expression_parser_js_1 = require("./complex-expression-parser.js");
10
- const dynamic_reference_builder_js_1 = require("../dynamic/dynamic-reference-builder.js");
9
+ const expression_parser_js_1 = require("./expression-parser.js");
11
10
  const identifier_node_js_1 = require("../operation-node/identifier-node.js");
11
+ function parseSimpleReferenceExpression(exp) {
12
+ if ((0, object_utils_js_1.isString)(exp)) {
13
+ return parseStringReference(exp);
14
+ }
15
+ return exp.toOperationNode();
16
+ }
17
+ exports.parseSimpleReferenceExpression = parseSimpleReferenceExpression;
12
18
  function parseReferenceExpressionOrList(arg) {
13
19
  if ((0, object_utils_js_1.isReadonlyArray)(arg)) {
14
20
  return arg.map((it) => parseReferenceExpression(it));
@@ -19,13 +25,10 @@ function parseReferenceExpressionOrList(arg) {
19
25
  }
20
26
  exports.parseReferenceExpressionOrList = parseReferenceExpressionOrList;
21
27
  function parseReferenceExpression(exp) {
22
- if ((0, object_utils_js_1.isString)(exp)) {
23
- return parseStringReference(exp);
24
- }
25
- else if ((0, dynamic_reference_builder_js_1.isDynamicReferenceBuilder)(exp)) {
26
- return exp.toOperationNode();
28
+ if ((0, expression_parser_js_1.isExpressionOrFactory)(exp)) {
29
+ return (0, expression_parser_js_1.parseExpression)(exp);
27
30
  }
28
- return (0, complex_expression_parser_js_1.parseComplexExpression)(exp);
31
+ return parseSimpleReferenceExpression(exp);
29
32
  }
30
33
  exports.parseReferenceExpression = parseReferenceExpression;
31
34
  function parseStringReference(ref) {
@@ -1,11 +1,11 @@
1
- import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
2
- import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
1
+ import { AliasedSelectQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
3
2
  import { SelectionNode } from '../operation-node/selection-node.js';
4
3
  import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
5
4
  import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
6
- import { AliasedComplexExpression } from './complex-expression-parser.js';
5
+ import { AliasedExpressionOrFactory } from './expression-parser.js';
7
6
  import { Selectable, SelectType } from '../util/column-type.js';
8
- export declare type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | DynamicReferenceBuilder<any> | AliasedComplexExpression<DB, TB>;
7
+ import { AliasedExpression } from '../expression/expression.js';
8
+ export declare type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | DynamicReferenceBuilder<any> | AliasedExpressionOrFactory<DB, TB>;
9
9
  export declare type SelectExpressionOrList<DB, TB extends keyof DB> = SelectExpression<DB, TB> | ReadonlyArray<SelectExpression<DB, TB>>;
10
10
  /**
11
11
  * Given a selection expression returns a query builder type that
@@ -19,9 +19,9 @@ export declare type SelectAllQueryBuilder<DB, TB extends keyof DB, O, S extends
19
19
  export declare type Selection<DB, TB extends keyof DB, SE> = {
20
20
  [A in ExtractAliasFromSelectExpression<SE>]: SelectType<ExtractTypeFromSelectExpression<DB, TB, SE, A>>;
21
21
  };
22
- declare type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedRawBuilder<any, infer RA> ? RA : SE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : SE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : never;
22
+ declare type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedExpression<any, infer EA> ? EA : SE extends (qb: any) => AliasedExpression<any, infer EA> ? EA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : never;
23
23
  declare type ExtractAliasFromStringSelectExpression<SE extends string> = SE extends `${string}.${string}.${string} as ${infer A}` ? A : SE extends `${string}.${string} as ${infer A}` ? A : SE extends `${string} as ${infer A}` ? A : SE extends `${string}.${string}.${infer C}` ? C : SE extends `${string}.${infer C}` ? C : SE;
24
- declare type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE, A extends keyof any> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE, A> : SE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends DynamicReferenceBuilder<infer RA> ? A extends ExtractAliasFromStringSelectExpression<RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA, A> | undefined : never : never;
24
+ declare type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE, A extends keyof any> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE, A> : SE extends AliasedSelectQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends (qb: any) => AliasedSelectQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends AliasedExpression<infer O, infer EA> ? EA extends A ? O : never : SE extends (qb: any) => AliasedExpression<infer O, infer EA> ? EA extends A ? O : never : SE extends DynamicReferenceBuilder<infer RA> ? A extends ExtractAliasFromStringSelectExpression<RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA, A> | undefined : never : never;
25
25
  declare type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string, A extends keyof any> = SE extends `${infer SC}.${infer T}.${infer C} as ${infer RA}` ? RA extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C} as ${infer RA}` ? RA extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends `${infer C} as ${infer RA}` ? RA extends A ? C extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, C> : never : never : SE extends `${infer SC}.${infer T}.${infer C}` ? C extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C}` ? C extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends A ? SE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, SE> : never : never;
26
26
  declare type AllSelection<DB, TB extends keyof DB> = Selectable<{
27
27
  [C in AnyColumn<DB, TB>]: {
@@ -5,7 +5,7 @@ const object_utils_js_1 = require("../util/object-utils.js");
5
5
  const selection_node_js_1 = require("../operation-node/selection-node.js");
6
6
  const reference_parser_js_1 = require("./reference-parser.js");
7
7
  const dynamic_reference_builder_js_1 = require("../dynamic/dynamic-reference-builder.js");
8
- const complex_expression_parser_js_1 = require("./complex-expression-parser.js");
8
+ const expression_parser_js_1 = require("./expression-parser.js");
9
9
  const table_parser_js_1 = require("./table-parser.js");
10
10
  function parseSelectExpressionOrList(selection) {
11
11
  if ((0, object_utils_js_1.isReadonlyArray)(selection)) {
@@ -24,7 +24,7 @@ function parseSelectExpression(selection) {
24
24
  return selection_node_js_1.SelectionNode.create(selection.toOperationNode());
25
25
  }
26
26
  else {
27
- return selection_node_js_1.SelectionNode.create((0, complex_expression_parser_js_1.parseAliasedComplexExpression)(selection));
27
+ return selection_node_js_1.SelectionNode.create((0, expression_parser_js_1.parseAliasedExpression)(selection));
28
28
  }
29
29
  }
30
30
  function parseSelectAll(table) {
@@ -0,0 +1,3 @@
1
+ import { Expression } from '../expression/expression.js';
2
+ import { SetOperator, SetOperationNode } from '../operation-node/set-operation-node.js';
3
+ export declare function parseSetOperation(operator: SetOperator, expression: Expression<any>, all: boolean): SetOperationNode;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSetOperation = void 0;
4
+ const set_operation_node_js_1 = require("../operation-node/set-operation-node.js");
5
+ function parseSetOperation(operator, expression, all) {
6
+ return set_operation_node_js_1.SetOperationNode.create(operator, expression.toOperationNode(), all);
7
+ }
8
+ exports.parseSetOperation = parseSetOperation;
@@ -1,22 +1,21 @@
1
- import { AliasedQueryBuilder } from '../query-builder/select-query-builder.js';
1
+ import { AliasNode } from '../operation-node/alias-node.js';
2
2
  import { TableNode } from '../operation-node/table-node.js';
3
- import { AnyAliasedRawBuilder } from '../util/type-utils.js';
4
- import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
5
- import { TableExpressionNode } from '../operation-node/operation-node-utils.js';
6
- import { AliasedComplexExpression } from './complex-expression-parser.js';
7
- export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AliasedComplexExpression<DB, TB>;
3
+ import { AliasedExpressionOrFactory } from './expression-parser.js';
4
+ import { OperationNode } from '../operation-node/operation-node.js';
5
+ import { AliasedExpression } from '../expression/expression.js';
6
+ export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AliasedExpressionOrFactory<DB, TB>;
8
7
  export declare type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
9
- export declare type TableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB> | AnyAliasedRawBuilder;
8
+ export declare type TableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB> | AliasedExpression<any, any>;
10
9
  export declare type From<DB, TE> = {
11
10
  [C in keyof DB | ExtractAliasFromTableExpression<DB, TE>]: C extends ExtractAliasFromTableExpression<DB, TE> ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? DB[C] : never;
12
11
  };
13
12
  export declare type FromTables<DB, TB extends keyof DB, TE> = TB | ExtractAliasFromTableExpression<DB, TE>;
14
- declare type ExtractAliasFromTableExpression<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : TE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends AliasedRawBuilder<any, infer RA> ? RA : TE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : never;
15
- declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : TE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : never;
13
+ declare type ExtractAliasFromTableExpression<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : TE extends AliasedExpression<any, infer QA> ? QA : TE extends (qb: any) => AliasedExpression<any, infer QA> ? QA : never;
14
+ declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : never;
16
15
  declare type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
17
16
  declare type AnyTable<DB> = keyof DB & string;
18
- export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): TableExpressionNode[];
19
- export declare function parseTableExpression(table: TableExpression<any, any>): TableExpressionNode;
20
- export declare function parseAliasedTable(from: string): TableExpressionNode;
17
+ export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): OperationNode[];
18
+ export declare function parseTableExpression(table: TableExpression<any, any>): OperationNode;
19
+ export declare function parseAliasedTable(from: string): TableNode | AliasNode;
21
20
  export declare function parseTable(from: string): TableNode;
22
21
  export {};
@@ -4,7 +4,7 @@ exports.parseTable = exports.parseAliasedTable = exports.parseTableExpression =
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
5
  const alias_node_js_1 = require("../operation-node/alias-node.js");
6
6
  const table_node_js_1 = require("../operation-node/table-node.js");
7
- const complex_expression_parser_js_1 = require("./complex-expression-parser.js");
7
+ const expression_parser_js_1 = require("./expression-parser.js");
8
8
  const identifier_node_js_1 = require("../operation-node/identifier-node.js");
9
9
  function parseTableExpressionOrList(table) {
10
10
  if ((0, object_utils_js_1.isReadonlyArray)(table)) {
@@ -20,7 +20,7 @@ function parseTableExpression(table) {
20
20
  return parseAliasedTable(table);
21
21
  }
22
22
  else {
23
- return (0, complex_expression_parser_js_1.parseAliasedComplexExpression)(table);
23
+ return (0, expression_parser_js_1.parseAliasedExpression)(table);
24
24
  }
25
25
  }
26
26
  exports.parseTableExpression = parseTableExpression;
@@ -0,0 +1,5 @@
1
+ import { UnaryOperationNode } from '../operation-node/unary-operation-node.js';
2
+ import { ExpressionOrFactory } from './expression-parser.js';
3
+ export declare type ExistsExpression<DB, TB extends keyof DB> = ExpressionOrFactory<DB, TB, any>;
4
+ export declare function parseExists(arg: ExistsExpression<any, any>): UnaryOperationNode;
5
+ export declare function parseNotExists(arg: ExistsExpression<any, any>): UnaryOperationNode;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseNotExists = exports.parseExists = void 0;
4
+ const operator_node_js_1 = require("../operation-node/operator-node.js");
5
+ const unary_operation_node_js_1 = require("../operation-node/unary-operation-node.js");
6
+ const value_parser_js_1 = require("./value-parser.js");
7
+ function parseExists(arg) {
8
+ return parseUnaryOperation('exists', arg);
9
+ }
10
+ exports.parseExists = parseExists;
11
+ function parseNotExists(arg) {
12
+ return parseUnaryOperation('not exists', arg);
13
+ }
14
+ exports.parseNotExists = parseNotExists;
15
+ function parseUnaryOperation(type, arg) {
16
+ return unary_operation_node_js_1.UnaryOperationNode.create(operator_node_js_1.OperatorNode.create(type), (0, value_parser_js_1.parseValueExpressionOrList)(arg));
17
+ }
@@ -2,6 +2,6 @@ import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
2
2
  import { UpdateKeys, UpdateType } from '../util/column-type.js';
3
3
  import { ValueExpression } from './value-parser.js';
4
4
  export declare type MutationObject<DB, TB extends keyof DB, TM extends keyof DB> = {
5
- [C in UpdateKeys<DB[TM]>]?: ValueExpression<DB, TB, UpdateType<DB[TM][C]>>;
5
+ [C in UpdateKeys<DB[TM]>]?: ValueExpression<DB, TB, UpdateType<DB[TM][C]>> | undefined;
6
6
  };
7
7
  export declare function parseUpdateObject(row: MutationObject<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
@@ -1,9 +1,6 @@
1
- import { ValueExpressionNode } from '../operation-node/operation-node-utils.js';
2
- import { ValueNode } from '../operation-node/value-node.js';
3
- import { SelectQueryNode } from '../operation-node/select-query-node.js';
4
- import { RawNode } from '../operation-node/raw-node.js';
5
- import { ComplexExpression } from './complex-expression-parser.js';
6
- export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ComplexExpression<DB, TB, V>;
1
+ import { ExpressionOrFactory } from './expression-parser.js';
2
+ import { OperationNode } from '../operation-node/operation-node.js';
3
+ export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ExpressionOrFactory<DB, TB, V>;
7
4
  export declare type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
8
- export declare function parseValueExpressionOrList(arg: ValueExpressionOrList<any, any, unknown>): ValueExpressionNode;
9
- export declare function parseValueExpression(exp: ValueExpression<any, any, unknown>): ValueNode | SelectQueryNode | RawNode;
5
+ export declare function parseValueExpressionOrList(arg: ValueExpressionOrList<any, any, unknown>): OperationNode;
6
+ export declare function parseValueExpression(exp: ValueExpression<any, any, unknown>): OperationNode;
@@ -5,7 +5,7 @@ const primitive_value_list_node_js_1 = require("../operation-node/primitive-valu
5
5
  const value_list_node_js_1 = require("../operation-node/value-list-node.js");
6
6
  const value_node_js_1 = require("../operation-node/value-node.js");
7
7
  const object_utils_js_1 = require("../util/object-utils.js");
8
- const complex_expression_parser_js_1 = require("./complex-expression-parser.js");
8
+ const expression_parser_js_1 = require("./expression-parser.js");
9
9
  function parseValueExpressionOrList(arg) {
10
10
  if ((0, object_utils_js_1.isReadonlyArray)(arg)) {
11
11
  return parseValueExpressionList(arg);
@@ -16,14 +16,14 @@ function parseValueExpressionOrList(arg) {
16
16
  }
17
17
  exports.parseValueExpressionOrList = parseValueExpressionOrList;
18
18
  function parseValueExpression(exp) {
19
- if ((0, complex_expression_parser_js_1.isComplexExpression)(exp)) {
20
- return (0, complex_expression_parser_js_1.parseComplexExpression)(exp);
19
+ if ((0, expression_parser_js_1.isExpressionOrFactory)(exp)) {
20
+ return (0, expression_parser_js_1.parseExpression)(exp);
21
21
  }
22
22
  return value_node_js_1.ValueNode.create(exp);
23
23
  }
24
24
  exports.parseValueExpression = parseValueExpression;
25
25
  function parseValueExpressionList(arg) {
26
- if (arg.some(complex_expression_parser_js_1.isComplexExpression)) {
26
+ if (arg.some(expression_parser_js_1.isExpressionOrFactory)) {
27
27
  return value_list_node_js_1.ValueListNode.create(arg.map((it) => parseValueExpression(it)));
28
28
  }
29
29
  return primitive_value_list_node_js_1.PrimitiveValueListNode.create(arg);
@@ -1,21 +1,20 @@
1
- import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
2
1
  import { UpdateQueryBuilder } from '../query-builder/update-query-builder.js';
3
2
  import { DeleteQueryBuilder } from '../query-builder/delete-query-builder.js';
4
3
  import { InsertQueryBuilder } from '../query-builder/insert-query-builder.js';
5
4
  import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
6
5
  import { QueryCreator } from '../query-creator.js';
7
- import { RawBuilder } from '../raw-builder/raw-builder.js';
6
+ import { Expression } from '../expression/expression.js';
8
7
  export declare type CommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB>) => CommonTableExpressionOutput<DB, CN>;
9
8
  export declare type RecursiveCommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB & Record<ExtractTableFromCommonTableExpressionName<CN>, ExtractRowFromCommonTableExpressionName<CN>>>) => CommonTableExpressionOutput<DB, CN>;
10
9
  export declare type QueryCreatorWithCommonTableExpression<DB, CN extends string, CTE> = QueryCreator<DB & Record<ExtractTableFromCommonTableExpressionName<CN>, ExtractRowFromCommonTableExpression<CTE>>>;
11
- declare type CommonTableExpressionOutput<DB, CN extends string> = SelectQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | InsertQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | UpdateQueryBuilder<DB, any, any, ExtractRowFromCommonTableExpressionName<CN>> | DeleteQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | RawBuilder<ExtractRowFromCommonTableExpressionName<CN>>;
10
+ declare type CommonTableExpressionOutput<DB, CN extends string> = Expression<ExtractRowFromCommonTableExpressionName<CN>> | InsertQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | UpdateQueryBuilder<DB, any, any, ExtractRowFromCommonTableExpressionName<CN>> | DeleteQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>>;
12
11
  /**
13
12
  * Given a common CommonTableExpression CTE extracts the row type from it.
14
13
  *
15
14
  * For example a CTE `(db) => db.selectFrom('person').select(['id', 'first_name'])`
16
15
  * would result in `Pick<Person, 'id' | 'first_name'>`.
17
16
  */
18
- declare type ExtractRowFromCommonTableExpression<CTE> = CTE extends (creator: QueryCreator<any>) => infer Q ? Q extends SelectQueryBuilder<any, any, infer QO> ? QO : Q extends InsertQueryBuilder<any, any, infer QO> ? QO : Q extends UpdateQueryBuilder<any, any, any, infer QO> ? QO : Q extends DeleteQueryBuilder<any, any, infer QO> ? QO : Q extends RawBuilder<infer RO> ? RO : never : never;
17
+ declare type ExtractRowFromCommonTableExpression<CTE> = CTE extends (creator: QueryCreator<any>) => infer Q ? Q extends Expression<infer QO> ? QO : Q extends InsertQueryBuilder<any, any, infer QO> ? QO : Q extends UpdateQueryBuilder<any, any, any, infer QO> ? QO : Q extends DeleteQueryBuilder<any, any, infer QO> ? QO : never : never;
19
18
  /**
20
19
  * Extracts 'person' from a string like 'person(id, first_name)'.
21
20
  */
@@ -111,5 +111,5 @@ class CamelCasePlugin {
111
111
  }
112
112
  exports.CamelCasePlugin = CamelCasePlugin;
113
113
  function canMap(obj) {
114
- return (0, object_utils_js_1.isObject)(obj) && !(0, object_utils_js_1.isDate)(obj) && !(0, object_utils_js_1.isBuffer)(obj);
114
+ return ((0, object_utils_js_1.isObject)(obj) && !(0, object_utils_js_1.isDate)(obj) && !(0, object_utils_js_1.isBuffer)(obj) && !(0, object_utils_js_1.isArrayBufferOrView)(obj));
115
115
  }