kysely 0.22.0 → 0.23.1

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 (358) hide show
  1. package/CONTRIBUTING.md +70 -0
  2. package/README.md +25 -2
  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 +10 -6
  16. package/dist/cjs/index.js +8 -2
  17. package/dist/cjs/migration/file-migration-provider.js +5 -3
  18. package/dist/cjs/operation-node/aggregate-function-node.d.ts +7 -4
  19. package/dist/cjs/operation-node/aggregate-function-node.js +17 -0
  20. package/dist/cjs/operation-node/alias-node.d.ts +3 -11
  21. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
  22. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
  23. package/dist/cjs/operation-node/alter-table-node.js +9 -1
  24. package/dist/cjs/operation-node/and-node.d.ts +3 -4
  25. package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
  26. package/dist/cjs/operation-node/binary-operation-node.js +20 -0
  27. package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
  28. package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
  29. package/dist/cjs/operation-node/column-definition-node.js +16 -0
  30. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  31. package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
  32. package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
  33. package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
  34. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/create-type-node.js +1 -2
  36. package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
  37. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
  38. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/drop-type-node.js +1 -2
  40. package/dist/cjs/operation-node/explain-node.d.ts +2 -4
  41. package/dist/cjs/operation-node/explain-node.js +1 -1
  42. package/dist/cjs/operation-node/from-node.d.ts +3 -4
  43. package/dist/cjs/operation-node/generated-node.d.ts +2 -3
  44. package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
  45. package/dist/cjs/operation-node/having-node.d.ts +3 -4
  46. package/dist/cjs/operation-node/having-node.js +4 -4
  47. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -5
  48. package/dist/cjs/operation-node/join-node.d.ts +5 -9
  49. package/dist/cjs/operation-node/join-node.js +6 -6
  50. package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
  51. package/dist/cjs/operation-node/on-conflict-node.js +12 -12
  52. package/dist/cjs/operation-node/on-node.d.ts +3 -4
  53. package/dist/cjs/operation-node/on-node.js +4 -4
  54. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -2
  55. package/dist/cjs/operation-node/operation-node-transformer.js +22 -15
  56. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
  57. package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
  58. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  59. package/dist/cjs/operation-node/operator-node.d.ts +5 -3
  60. package/dist/cjs/operation-node/operator-node.js +3 -5
  61. package/dist/cjs/operation-node/or-node.d.ts +3 -4
  62. package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
  63. package/dist/cjs/operation-node/parens-node.d.ts +2 -3
  64. package/dist/cjs/operation-node/partition-by-item-node.d.ts +3 -4
  65. package/dist/cjs/operation-node/query-node.d.ts +2 -3
  66. package/dist/cjs/operation-node/query-node.js +6 -6
  67. package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
  68. package/dist/cjs/operation-node/select-modifier-node.js +1 -1
  69. package/dist/cjs/operation-node/select-query-node.d.ts +5 -6
  70. package/dist/cjs/operation-node/select-query-node.js +10 -10
  71. package/dist/cjs/operation-node/selection-node.d.ts +2 -3
  72. package/dist/cjs/operation-node/set-operation-node.d.ts +2 -5
  73. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
  74. package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
  75. package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
  76. package/dist/cjs/operation-node/unary-operation-node.js +19 -0
  77. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  78. package/dist/cjs/operation-node/value-list-node.d.ts +2 -9
  79. package/dist/cjs/operation-node/where-node.d.ts +3 -4
  80. package/dist/cjs/operation-node/where-node.js +4 -4
  81. package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
  82. package/dist/cjs/parser/binary-operation-parser.js +99 -0
  83. package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
  84. package/dist/cjs/parser/coalesce-parser.js +11 -0
  85. package/dist/cjs/parser/data-type-parser.d.ts +5 -5
  86. package/dist/cjs/parser/default-value-parser.d.ts +4 -5
  87. package/dist/cjs/parser/default-value-parser.js +2 -2
  88. package/dist/cjs/parser/expression-parser.d.ts +10 -0
  89. package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
  90. package/dist/cjs/parser/identifier-parser.d.ts +2 -0
  91. package/dist/cjs/parser/identifier-parser.js +23 -0
  92. package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
  93. package/dist/cjs/parser/insert-values-parser.js +2 -2
  94. package/dist/cjs/parser/join-parser.js +2 -2
  95. package/dist/cjs/parser/order-by-parser.d.ts +2 -2
  96. package/dist/cjs/parser/reference-parser.d.ts +14 -14
  97. package/dist/cjs/parser/reference-parser.js +12 -9
  98. package/dist/cjs/parser/select-parser.d.ts +6 -7
  99. package/dist/cjs/parser/select-parser.js +2 -2
  100. package/dist/cjs/parser/set-operation-parser.d.ts +2 -4
  101. package/dist/cjs/parser/table-parser.d.ts +11 -12
  102. package/dist/cjs/parser/table-parser.js +2 -2
  103. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
  104. package/dist/cjs/parser/unary-operation-parser.js +17 -0
  105. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  106. package/dist/cjs/parser/value-parser.d.ts +5 -9
  107. package/dist/cjs/parser/value-parser.js +4 -4
  108. package/dist/cjs/parser/with-parser.d.ts +3 -4
  109. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  110. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +245 -14
  111. package/dist/cjs/query-builder/aggregate-function-builder.js +164 -12
  112. package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
  113. package/dist/cjs/query-builder/delete-query-builder.js +19 -16
  114. package/dist/cjs/query-builder/function-module.d.ts +123 -22
  115. package/dist/cjs/query-builder/function-module.js +91 -48
  116. package/dist/cjs/query-builder/having-interface.d.ts +9 -8
  117. package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
  118. package/dist/cjs/query-builder/insert-query-builder.js +11 -9
  119. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  120. package/dist/cjs/query-builder/insert-result.js +12 -1
  121. package/dist/cjs/query-builder/join-builder.d.ts +9 -8
  122. package/dist/cjs/query-builder/join-builder.js +10 -9
  123. package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
  124. package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
  125. package/dist/cjs/query-builder/select-query-builder.d.ts +82 -51
  126. package/dist/cjs/query-builder/select-query-builder.js +39 -37
  127. package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
  128. package/dist/cjs/query-builder/update-query-builder.js +19 -16
  129. package/dist/cjs/query-builder/where-interface.d.ts +12 -11
  130. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  131. package/dist/cjs/query-compiler/default-query-compiler.d.ts +5 -3
  132. package/dist/cjs/query-compiler/default-query-compiler.js +37 -33
  133. package/dist/cjs/query-executor/query-executor-base.js +16 -1
  134. package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
  135. package/dist/cjs/raw-builder/raw-builder.js +24 -14
  136. package/dist/cjs/raw-builder/sql.d.ts +4 -4
  137. package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
  138. package/dist/cjs/schema/alter-column-builder.js +55 -0
  139. package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
  140. package/dist/cjs/schema/alter-table-builder.js +63 -278
  141. package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
  142. package/dist/cjs/schema/column-definition-builder.js +189 -0
  143. package/dist/cjs/schema/create-index-builder.d.ts +3 -3
  144. package/dist/cjs/schema/create-index-builder.js +7 -7
  145. package/dist/cjs/schema/create-schema-builder.d.ts +1 -1
  146. package/dist/cjs/schema/create-schema-builder.js +2 -2
  147. package/dist/cjs/schema/create-table-builder.d.ts +39 -6
  148. package/dist/cjs/schema/create-table-builder.js +47 -12
  149. package/dist/cjs/schema/create-type-builder.d.ts +1 -1
  150. package/dist/cjs/schema/create-type-builder.js +2 -2
  151. package/dist/cjs/schema/create-view-builder.d.ts +4 -3
  152. package/dist/cjs/schema/create-view-builder.js +7 -7
  153. package/dist/cjs/schema/drop-index-builder.d.ts +1 -1
  154. package/dist/cjs/schema/drop-index-builder.js +4 -4
  155. package/dist/cjs/schema/drop-schema-builder.d.ts +1 -1
  156. package/dist/cjs/schema/drop-schema-builder.js +3 -3
  157. package/dist/cjs/schema/drop-table-builder.d.ts +1 -1
  158. package/dist/cjs/schema/drop-table-builder.js +3 -3
  159. package/dist/cjs/schema/drop-type-builder.d.ts +1 -1
  160. package/dist/cjs/schema/drop-type-builder.js +2 -2
  161. package/dist/cjs/schema/drop-view-builder.d.ts +1 -1
  162. package/dist/cjs/schema/drop-view-builder.js +4 -4
  163. package/dist/cjs/schema/schema.d.ts +2 -2
  164. package/dist/cjs/schema/schema.js +14 -13
  165. package/dist/cjs/util/compilable.d.ts +2 -2
  166. package/dist/cjs/util/explainable.d.ts +2 -2
  167. package/dist/cjs/util/infer-result.d.ts +46 -0
  168. package/dist/cjs/util/infer-result.js +2 -0
  169. package/dist/cjs/util/log-once.d.ts +5 -0
  170. package/dist/cjs/util/log-once.js +16 -0
  171. package/dist/cjs/util/object-utils.d.ts +1 -0
  172. package/dist/cjs/util/object-utils.js +5 -1
  173. package/dist/cjs/util/type-utils.d.ts +3 -17
  174. package/dist/esm/dialect/database-introspector.d.ts +4 -0
  175. package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
  176. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  177. package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
  178. package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
  179. package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
  180. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  181. package/dist/esm/driver/database-connection.d.ts +6 -2
  182. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
  183. package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
  184. package/dist/esm/expression/expression.d.ts +100 -0
  185. package/dist/esm/expression/expression.js +12 -0
  186. package/dist/esm/index.d.ts +10 -6
  187. package/dist/esm/index.js +6 -2
  188. package/dist/esm/migration/file-migration-provider.js +5 -3
  189. package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
  190. package/dist/esm/operation-node/aggregate-function-node.js +17 -0
  191. package/dist/esm/operation-node/alias-node.d.ts +3 -11
  192. package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
  193. package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
  194. package/dist/esm/operation-node/alter-table-node.js +9 -1
  195. package/dist/esm/operation-node/and-node.d.ts +3 -4
  196. package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
  197. package/dist/esm/operation-node/binary-operation-node.js +18 -0
  198. package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
  199. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  200. package/dist/esm/operation-node/column-definition-node.js +16 -0
  201. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  202. package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
  203. package/dist/esm/operation-node/create-index-node.d.ts +1 -3
  204. package/dist/esm/operation-node/create-table-node.d.ts +4 -5
  205. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  206. package/dist/esm/operation-node/create-type-node.js +1 -2
  207. package/dist/esm/operation-node/default-value-node.d.ts +2 -4
  208. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  209. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  210. package/dist/esm/operation-node/drop-type-node.js +1 -2
  211. package/dist/esm/operation-node/explain-node.d.ts +2 -4
  212. package/dist/esm/operation-node/explain-node.js +1 -1
  213. package/dist/esm/operation-node/from-node.d.ts +3 -4
  214. package/dist/esm/operation-node/generated-node.d.ts +2 -3
  215. package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
  216. package/dist/esm/operation-node/having-node.d.ts +3 -4
  217. package/dist/esm/operation-node/having-node.js +4 -4
  218. package/dist/esm/operation-node/insert-query-node.d.ts +1 -5
  219. package/dist/esm/operation-node/join-node.d.ts +5 -9
  220. package/dist/esm/operation-node/join-node.js +6 -6
  221. package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
  222. package/dist/esm/operation-node/on-conflict-node.js +12 -12
  223. package/dist/esm/operation-node/on-node.d.ts +3 -4
  224. package/dist/esm/operation-node/on-node.js +4 -4
  225. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
  226. package/dist/esm/operation-node/operation-node-transformer.js +22 -15
  227. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
  228. package/dist/esm/operation-node/operation-node-visitor.js +2 -1
  229. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  230. package/dist/esm/operation-node/operator-node.d.ts +5 -3
  231. package/dist/esm/operation-node/operator-node.js +2 -4
  232. package/dist/esm/operation-node/or-node.d.ts +3 -4
  233. package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
  234. package/dist/esm/operation-node/parens-node.d.ts +2 -3
  235. package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
  236. package/dist/esm/operation-node/query-node.d.ts +2 -3
  237. package/dist/esm/operation-node/query-node.js +6 -6
  238. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
  239. package/dist/esm/operation-node/select-modifier-node.js +1 -1
  240. package/dist/esm/operation-node/select-query-node.d.ts +5 -6
  241. package/dist/esm/operation-node/select-query-node.js +10 -10
  242. package/dist/esm/operation-node/selection-node.d.ts +2 -3
  243. package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
  244. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
  245. package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
  246. package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
  247. package/dist/esm/operation-node/unary-operation-node.js +17 -0
  248. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  249. package/dist/esm/operation-node/value-list-node.d.ts +2 -9
  250. package/dist/esm/operation-node/where-node.d.ts +3 -4
  251. package/dist/esm/operation-node/where-node.js +4 -4
  252. package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
  253. package/dist/esm/parser/binary-operation-parser.js +92 -0
  254. package/dist/esm/parser/coalesce-parser.d.ts +4 -0
  255. package/dist/esm/parser/coalesce-parser.js +8 -0
  256. package/dist/esm/parser/data-type-parser.d.ts +5 -5
  257. package/dist/esm/parser/default-value-parser.d.ts +4 -5
  258. package/dist/esm/parser/default-value-parser.js +2 -2
  259. package/dist/esm/parser/expression-parser.d.ts +10 -0
  260. package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
  261. package/dist/esm/parser/identifier-parser.d.ts +2 -0
  262. package/dist/esm/parser/identifier-parser.js +20 -0
  263. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  264. package/dist/esm/parser/insert-values-parser.js +2 -2
  265. package/dist/esm/parser/join-parser.js +2 -2
  266. package/dist/esm/parser/order-by-parser.d.ts +2 -2
  267. package/dist/esm/parser/reference-parser.d.ts +14 -14
  268. package/dist/esm/parser/reference-parser.js +10 -8
  269. package/dist/esm/parser/select-parser.d.ts +6 -7
  270. package/dist/esm/parser/select-parser.js +2 -2
  271. package/dist/esm/parser/set-operation-parser.d.ts +2 -4
  272. package/dist/esm/parser/table-parser.d.ts +11 -12
  273. package/dist/esm/parser/table-parser.js +2 -2
  274. package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
  275. package/dist/esm/parser/unary-operation-parser.js +13 -0
  276. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  277. package/dist/esm/parser/value-parser.d.ts +5 -9
  278. package/dist/esm/parser/value-parser.js +4 -4
  279. package/dist/esm/parser/with-parser.d.ts +3 -4
  280. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +245 -14
  282. package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
  283. package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
  284. package/dist/esm/query-builder/delete-query-builder.js +19 -16
  285. package/dist/esm/query-builder/function-module.d.ts +123 -22
  286. package/dist/esm/query-builder/function-module.js +92 -49
  287. package/dist/esm/query-builder/having-interface.d.ts +9 -8
  288. package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
  289. package/dist/esm/query-builder/insert-query-builder.js +11 -9
  290. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  291. package/dist/esm/query-builder/insert-result.js +12 -1
  292. package/dist/esm/query-builder/join-builder.d.ts +9 -8
  293. package/dist/esm/query-builder/join-builder.js +10 -9
  294. package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
  295. package/dist/esm/query-builder/on-conflict-builder.js +18 -17
  296. package/dist/esm/query-builder/select-query-builder.d.ts +82 -51
  297. package/dist/esm/query-builder/select-query-builder.js +38 -36
  298. package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
  299. package/dist/esm/query-builder/update-query-builder.js +19 -16
  300. package/dist/esm/query-builder/where-interface.d.ts +12 -11
  301. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  302. package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -3
  303. package/dist/esm/query-compiler/default-query-compiler.js +38 -34
  304. package/dist/esm/query-executor/query-executor-base.js +16 -1
  305. package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
  306. package/dist/esm/raw-builder/raw-builder.js +23 -14
  307. package/dist/esm/raw-builder/sql.d.ts +4 -4
  308. package/dist/esm/schema/alter-column-builder.d.ts +28 -0
  309. package/dist/esm/schema/alter-column-builder.js +51 -0
  310. package/dist/esm/schema/alter-table-builder.d.ts +39 -341
  311. package/dist/esm/schema/alter-table-builder.js +59 -272
  312. package/dist/esm/schema/column-definition-builder.d.ts +43 -155
  313. package/dist/esm/schema/column-definition-builder.js +189 -0
  314. package/dist/esm/schema/create-index-builder.d.ts +3 -3
  315. package/dist/esm/schema/create-index-builder.js +7 -7
  316. package/dist/esm/schema/create-schema-builder.d.ts +1 -1
  317. package/dist/esm/schema/create-schema-builder.js +2 -2
  318. package/dist/esm/schema/create-table-builder.d.ts +39 -6
  319. package/dist/esm/schema/create-table-builder.js +47 -12
  320. package/dist/esm/schema/create-type-builder.d.ts +1 -1
  321. package/dist/esm/schema/create-type-builder.js +2 -2
  322. package/dist/esm/schema/create-view-builder.d.ts +4 -3
  323. package/dist/esm/schema/create-view-builder.js +7 -7
  324. package/dist/esm/schema/drop-index-builder.d.ts +1 -1
  325. package/dist/esm/schema/drop-index-builder.js +4 -4
  326. package/dist/esm/schema/drop-schema-builder.d.ts +1 -1
  327. package/dist/esm/schema/drop-schema-builder.js +3 -3
  328. package/dist/esm/schema/drop-table-builder.d.ts +1 -1
  329. package/dist/esm/schema/drop-table-builder.js +3 -3
  330. package/dist/esm/schema/drop-type-builder.d.ts +1 -1
  331. package/dist/esm/schema/drop-type-builder.js +2 -2
  332. package/dist/esm/schema/drop-view-builder.d.ts +1 -1
  333. package/dist/esm/schema/drop-view-builder.js +4 -4
  334. package/dist/esm/schema/schema.d.ts +2 -2
  335. package/dist/esm/schema/schema.js +14 -13
  336. package/dist/esm/util/compilable.d.ts +2 -2
  337. package/dist/esm/util/explainable.d.ts +2 -2
  338. package/dist/esm/util/infer-result.d.ts +46 -0
  339. package/dist/esm/util/infer-result.js +2 -0
  340. package/dist/esm/util/log-once.d.ts +5 -0
  341. package/dist/esm/util/log-once.js +13 -0
  342. package/dist/esm/util/object-utils.d.ts +1 -0
  343. package/dist/esm/util/object-utils.js +3 -0
  344. package/dist/esm/util/type-utils.d.ts +3 -17
  345. package/package.json +1 -1
  346. package/dist/cjs/operation-node/filter-node.d.ts +0 -18
  347. package/dist/cjs/operation-node/filter-node.js +0 -20
  348. package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
  349. package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
  350. package/dist/cjs/parser/filter-parser.d.ts +0 -24
  351. package/dist/cjs/parser/filter-parser.js +0 -109
  352. package/dist/esm/operation-node/filter-node.d.ts +0 -18
  353. package/dist/esm/operation-node/filter-node.js +0 -18
  354. package/dist/esm/operation-node/operation-node-utils.d.ts +0 -18
  355. package/dist/esm/operation-node/operation-node-utils.js +0 -2
  356. package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
  357. package/dist/esm/parser/filter-parser.d.ts +0 -24
  358. package/dist/esm/parser/filter-parser.js +0 -100
@@ -3,10 +3,9 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
3
3
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
4
4
  import { TableExpression, From, FromTables } from '../parser/table-parser.js';
5
5
  import { SelectExpression } from '../parser/select-parser.js';
6
- import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
7
6
  import { ReturningRow } from '../parser/returning-parser.js';
8
7
  import { ReferenceExpression } from '../parser/reference-parser.js';
9
- import { AnyRawBuilder, MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
8
+ import { MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
10
9
  import { UpdateQueryNode } from '../operation-node/update-query-node.js';
11
10
  import { MutationObject } from '../parser/update-set-parser.js';
12
11
  import { Compilable } from '../util/compilable.js';
@@ -18,10 +17,11 @@ import { WhereInterface } from './where-interface.js';
18
17
  import { ReturningInterface } from './returning-interface.js';
19
18
  import { NoResultErrorConstructor } from './no-result-error.js';
20
19
  import { Selectable } from '../util/column-type.js';
21
- import { AliasedQueryBuilder } from './select-query-builder.js';
22
- import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
23
20
  import { Explainable, ExplainFormat } from '../util/explainable.js';
24
- export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable, Explainable {
21
+ import { AliasedExpression, Expression } from '../expression/expression.js';
22
+ import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
23
+ import { ExistsExpression } from '../parser/unary-operation-parser.js';
24
+ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable {
25
25
  #private;
26
26
  constructor(props: UpdateQueryBuilderProps);
27
27
  /**
@@ -208,16 +208,16 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
208
208
  * .execute()
209
209
  * ```
210
210
  */
211
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
211
+ where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
212
212
  where(grouper: WhereGrouper<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
213
- where(raw: AnyRawBuilder): UpdateQueryBuilder<DB, UT, TB, O>;
213
+ where(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
214
214
  /**
215
215
  * Adds a `where` clause where both sides of the operator are references
216
216
  * to columns.
217
217
  *
218
218
  * The normal `where` method treats the right hand side argument as a
219
219
  * value by default. `whereRef` treats it as a column reference. This method is
220
- * expecially useful with joins and correclated subqueries.
220
+ * expecially useful with joins and correlated subqueries.
221
221
  *
222
222
  * ### Examples
223
223
  *
@@ -262,7 +262,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
262
262
  * ) as "pet_name"
263
263
  * from "person"
264
264
  */
265
- whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
265
+ whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
266
266
  /**
267
267
  * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
268
268
  *
@@ -326,15 +326,15 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
326
326
  * select * from "person" (where "id" = 1 or "id" = 2)
327
327
  * ```
328
328
  */
329
- orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
329
+ orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
330
330
  orWhere(grouper: WhereGrouper<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
331
- orWhere(raw: AnyRawBuilder): UpdateQueryBuilder<DB, UT, TB, O>;
331
+ orWhere(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
332
332
  /**
333
333
  * Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
334
334
  *
335
335
  * Also see {@link orWhere} and {@link where}.
336
336
  */
337
- orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
337
+ orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
338
338
  /**
339
339
  * Adds a `where exists` clause to the query.
340
340
  *
@@ -401,11 +401,11 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
401
401
  */
402
402
  whereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
403
403
  /**
404
- * Just like {@link whereExists} but creates a `or exists` clause.
404
+ * Just like {@link whereExists} but creates an `or exists` clause.
405
405
  */
406
406
  orWhereExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
407
407
  /**
408
- * Just like {@link whereExists} but creates a `or not exists` clause.
408
+ * Just like {@link whereExists} but creates an `or not exists` clause.
409
409
  */
410
410
  orWhereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
411
411
  /**
@@ -789,7 +789,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
789
789
  */
790
790
  withPlugin(plugin: KyselyPlugin): UpdateQueryBuilder<DB, UT, TB, O>;
791
791
  toOperationNode(): UpdateQueryNode;
792
- compile(): CompiledQuery;
792
+ compile(): CompiledQuery<O>;
793
793
  /**
794
794
  * Executes the query and returns an array of rows.
795
795
  *
@@ -827,29 +827,29 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
827
827
  * explain format=json update `person` set `first_name` = ?, `last_name` = ? where `id` = ?
828
828
  * ```
829
829
  */
830
- explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: AnyRawBuilder): Promise<ER[]>;
830
+ explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<ER[]>;
831
831
  }
832
832
  export interface UpdateQueryBuilderProps {
833
833
  readonly queryId: QueryId;
834
834
  readonly queryNode: UpdateQueryNode;
835
835
  readonly executor: QueryExecutor;
836
836
  }
837
- export declare type UpdateQueryBuilderWithInnerJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? UpdateQueryBuilder<DB, UT, TB | TE, O> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
837
+ export declare type UpdateQueryBuilderWithInnerJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? UpdateQueryBuilder<DB, UT, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
838
838
  declare type InnerJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? UpdateQueryBuilder<InnerJoinedDB<DB, A, R>, UT, TB | A, O> : UpdateQueryBuilder<DB & Record<A, R>, UT, TB | A, O>;
839
839
  declare type InnerJoinedDB<DB, A extends string, R> = {
840
840
  [C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
841
841
  };
842
- export declare type UpdateQueryBuilderWithLeftJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
842
+ export declare type UpdateQueryBuilderWithLeftJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
843
843
  declare type LeftJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? UpdateQueryBuilder<LeftJoinedDB<DB, A, R>, UT, TB | A, O> : UpdateQueryBuilder<DB & Record<A, Nullable<R>>, UT, TB | A, O>;
844
844
  declare type LeftJoinedDB<DB, A extends keyof any, R> = {
845
845
  [C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
846
846
  };
847
- export declare type UpdateQueryBuilderWithRightJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
847
+ export declare type UpdateQueryBuilderWithRightJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
848
848
  declare type RightJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = UpdateQueryBuilder<RightJoinedDB<DB, TB, A, R>, UT, TB | A, O>;
849
849
  declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
850
850
  [C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
851
851
  };
852
- export declare type UpdateQueryBuilderWithFullJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
852
+ export declare type UpdateQueryBuilderWithFullJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
853
853
  declare type OuterJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = UpdateQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, UT, TB | A, O>;
854
854
  declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
855
855
  [C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
@@ -4,7 +4,6 @@ exports.UpdateQueryBuilder = void 0;
4
4
  const join_parser_js_1 = require("../parser/join-parser.js");
5
5
  const table_parser_js_1 = require("../parser/table-parser.js");
6
6
  const select_parser_js_1 = require("../parser/select-parser.js");
7
- const filter_parser_js_1 = require("../parser/filter-parser.js");
8
7
  const query_node_js_1 = require("../operation-node/query-node.js");
9
8
  const update_query_node_js_1 = require("../operation-node/update-query-node.js");
10
9
  const update_set_parser_js_1 = require("../parser/update-set-parser.js");
@@ -13,6 +12,8 @@ const object_utils_js_1 = require("../util/object-utils.js");
13
12
  const update_result_js_1 = require("./update-result.js");
14
13
  const no_result_error_js_1 = require("./no-result-error.js");
15
14
  const explain_node_js_1 = require("../operation-node/explain-node.js");
15
+ const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
16
+ const unary_operation_parser_js_1 = require("../parser/unary-operation-parser.js");
16
17
  class UpdateQueryBuilder {
17
18
  #props;
18
19
  constructor(props) {
@@ -21,49 +22,49 @@ class UpdateQueryBuilder {
21
22
  where(...args) {
22
23
  return new UpdateQueryBuilder({
23
24
  ...this.#props,
24
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(args)),
25
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseWhere)(args)),
25
26
  });
26
27
  }
27
28
  whereRef(lhs, op, rhs) {
28
29
  return new UpdateQueryBuilder({
29
30
  ...this.#props,
30
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
31
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
31
32
  });
32
33
  }
33
34
  orWhere(...args) {
34
35
  return new UpdateQueryBuilder({
35
36
  ...this.#props,
36
- queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseWhereFilter)(args)),
37
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseWhere)(args)),
37
38
  });
38
39
  }
39
40
  orWhereRef(lhs, op, rhs) {
40
41
  return new UpdateQueryBuilder({
41
42
  ...this.#props,
42
- queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseReferenceFilter)(lhs, op, rhs)),
43
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
43
44
  });
44
45
  }
45
46
  whereExists(arg) {
46
47
  return new UpdateQueryBuilder({
47
48
  ...this.#props,
48
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
49
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
49
50
  });
50
51
  }
51
52
  whereNotExists(arg) {
52
53
  return new UpdateQueryBuilder({
53
54
  ...this.#props,
54
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
55
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
55
56
  });
56
57
  }
57
58
  orWhereExists(arg) {
58
59
  return new UpdateQueryBuilder({
59
60
  ...this.#props,
60
- queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseExistFilter)(arg)),
61
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
61
62
  });
62
63
  }
63
64
  orWhereNotExists(arg) {
64
65
  return new UpdateQueryBuilder({
65
66
  ...this.#props,
66
- queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
67
+ queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
67
68
  });
68
69
  }
69
70
  from(from) {
@@ -300,15 +301,17 @@ class UpdateQueryBuilder {
300
301
  * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
301
302
  */
302
303
  async execute() {
303
- const compildQuery = this.compile();
304
- const query = compildQuery.query;
305
- const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
304
+ const compiledQuery = this.compile();
305
+ const query = compiledQuery.query;
306
+ const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
306
307
  if (this.#props.executor.adapter.supportsReturning && query.returning) {
307
308
  return result.rows;
308
309
  }
309
- else {
310
- return [new update_result_js_1.UpdateResult(result.numUpdatedOrDeletedRows)];
311
- }
310
+ return [
311
+ new update_result_js_1.UpdateResult(
312
+ // TODO: remove numUpdatedOrDeletedRows.
313
+ (result.numAffectedRows ?? result.numUpdatedOrDeletedRows)),
314
+ ];
312
315
  }
313
316
  /**
314
317
  * Executes the query and returns the first result or undefined if
@@ -353,7 +356,7 @@ class UpdateQueryBuilder {
353
356
  async explain(format, options) {
354
357
  const builder = new UpdateQueryBuilder({
355
358
  ...this.#props,
356
- queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithExplain(this.#props.queryNode, explain_node_js_1.ExplainNode.create(format, options)),
359
+ queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithExplain(this.#props.queryNode, explain_node_js_1.ExplainNode.create(format, options?.toOperationNode())),
357
360
  });
358
361
  return await builder.execute();
359
362
  }
@@ -1,6 +1,7 @@
1
- import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
1
+ import { Expression } from '../expression/expression.js';
2
+ import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
2
3
  import { ReferenceExpression } from '../parser/reference-parser.js';
3
- import { AnyRawBuilder } from '../util/type-utils.js';
4
+ import { ExistsExpression } from '../parser/unary-operation-parser.js';
4
5
  export interface WhereInterface<DB, TB extends keyof DB> {
5
6
  /**
6
7
  * Adds a `where` clause to the query.
@@ -186,16 +187,16 @@ export interface WhereInterface<DB, TB extends keyof DB> {
186
187
  * .execute()
187
188
  * ```
188
189
  */
189
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
190
+ where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
190
191
  where(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
191
- where(raw: AnyRawBuilder): WhereInterface<DB, TB>;
192
+ where(expression: Expression<any>): WhereInterface<DB, TB>;
192
193
  /**
193
194
  * Adds a `where` clause where both sides of the operator are references
194
195
  * to columns.
195
196
  *
196
197
  * The normal `where` method treats the right hand side argument as a
197
198
  * value by default. `whereRef` treats it as a column reference. This method is
198
- * expecially useful with joins and correclated subqueries.
199
+ * expecially useful with joins and correlated subqueries.
199
200
  *
200
201
  * ### Examples
201
202
  *
@@ -240,7 +241,7 @@ export interface WhereInterface<DB, TB extends keyof DB> {
240
241
  * ) as "pet_name"
241
242
  * from "person"
242
243
  */
243
- whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
244
+ whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
244
245
  /**
245
246
  * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
246
247
  *
@@ -304,15 +305,15 @@ export interface WhereInterface<DB, TB extends keyof DB> {
304
305
  * select * from "person" (where "id" = 1 or "id" = 2)
305
306
  * ```
306
307
  */
307
- orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
308
+ orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
308
309
  orWhere(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
309
- orWhere(raw: AnyRawBuilder): WhereInterface<DB, TB>;
310
+ orWhere(expression: Expression<any>): WhereInterface<DB, TB>;
310
311
  /**
311
312
  * Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
312
313
  *
313
314
  * Also see {@link orWhere} and {@link where}.
314
315
  */
315
- orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
316
+ orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
316
317
  /**
317
318
  * Adds a `where exists` clause to the query.
318
319
  *
@@ -379,11 +380,11 @@ export interface WhereInterface<DB, TB extends keyof DB> {
379
380
  */
380
381
  whereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
381
382
  /**
382
- * Just like {@link whereExists} but creates a `or exists` clause.
383
+ * Just like {@link whereExists} but creates an `or exists` clause.
383
384
  */
384
385
  orWhereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
385
386
  /**
386
- * Just like {@link whereExists} but creates a `or not exists` clause.
387
+ * Just like {@link whereExists} but creates an `or not exists` clause.
387
388
  */
388
389
  orWhereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
389
390
  }
@@ -1,5 +1,5 @@
1
1
  import { RootOperationNode } from './query-compiler.js';
2
- export interface CompiledQuery {
2
+ export interface CompiledQuery<O = unknown> {
3
3
  readonly query: RootOperationNode;
4
4
  readonly sql: string;
5
5
  readonly parameters: ReadonlyArray<unknown>;
@@ -9,7 +9,6 @@ import { DataTypeNode } from '../operation-node/data-type-node.js';
9
9
  import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
10
10
  import { DropIndexNode } from '../operation-node/drop-index-node.js';
11
11
  import { DropTableNode } from '../operation-node/drop-table-node.js';
12
- import { FilterNode } from '../operation-node/filter-node.js';
13
12
  import { FromNode } from '../operation-node/from-node.js';
14
13
  import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
15
14
  import { GroupByNode } from '../operation-node/group-by-node.js';
@@ -78,6 +77,8 @@ import { OverNode } from '../operation-node/over-node.js';
78
77
  import { PartitionByNode } from '../operation-node/partition-by-node.js';
79
78
  import { PartitionByItemNode } from '../operation-node/partition-by-item-node.js';
80
79
  import { SetOperationNode } from '../operation-node/set-operation-node.js';
80
+ import { BinaryOperationNode } from '../operation-node/binary-operation-node.js';
81
+ import { UnaryOperationNode } from '../operation-node/unary-operation-node.js';
81
82
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
82
83
  #private;
83
84
  protected get numParameters(): number;
@@ -87,7 +88,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
87
88
  protected visitFrom(node: FromNode): void;
88
89
  protected visitSelection(node: SelectionNode): void;
89
90
  protected visitColumn(node: ColumnNode): void;
90
- protected compileDistinctOn(selections: ReadonlyArray<SelectionNode>): void;
91
+ protected compileDistinctOn(expressions: ReadonlyArray<OperationNode>): void;
91
92
  protected compileList(nodes: ReadonlyArray<OperationNode>, separator?: string): void;
92
93
  protected visitWhere(node: WhereNode): void;
93
94
  protected visitHaving(node: HavingNode): void;
@@ -100,7 +101,6 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
100
101
  protected visitSelectAll(_: SelectAllNode): void;
101
102
  protected visitIdentifier(node: IdentifierNode): void;
102
103
  protected compileUnwrappedIdentifier(node: IdentifierNode): void;
103
- protected visitFilter(node: FilterNode): void;
104
104
  protected visitAnd(node: AndNode): void;
105
105
  protected visitOr(node: OrNode): void;
106
106
  protected visitValue(node: ValueNode): void;
@@ -163,6 +163,8 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
163
163
  protected visitOver(node: OverNode): void;
164
164
  protected visitPartitionBy(node: PartitionByNode): void;
165
165
  protected visitPartitionByItem(node: PartitionByItemNode): void;
166
+ protected visitBinaryOperation(node: BinaryOperationNode): void;
167
+ protected visitUnaryOperation(node: UnaryOperationNode): void;
166
168
  protected append(str: string): void;
167
169
  protected appendValue(parameter: unknown): void;
168
170
  protected getLeftIdentifierWrapper(): string;
@@ -43,8 +43,8 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
43
43
  this.append(' ');
44
44
  }
45
45
  this.append('select ');
46
- if (node.distinctOnSelections) {
47
- this.compileDistinctOn(node.distinctOnSelections);
46
+ if (node.distinctOn) {
47
+ this.compileDistinctOn(node.distinctOn);
48
48
  this.append(' ');
49
49
  }
50
50
  if (node.frontModifiers && node.frontModifiers.length > 0) {
@@ -106,16 +106,16 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
106
106
  visitColumn(node) {
107
107
  this.visitNode(node.column);
108
108
  }
109
- compileDistinctOn(selections) {
109
+ compileDistinctOn(expressions) {
110
110
  this.append('distinct on (');
111
- this.compileList(selections);
111
+ this.compileList(expressions);
112
112
  this.append(')');
113
113
  }
114
114
  compileList(nodes, separator = ', ') {
115
- const lastNode = (0, object_utils_js_1.getLast)(nodes);
116
- for (const node of nodes) {
117
- this.visitNode(node);
118
- if (node !== lastNode) {
115
+ const lastIndex = nodes.length - 1;
116
+ for (let i = 0; i <= lastIndex; i++) {
117
+ this.visitNode(nodes[i]);
118
+ if (i < lastIndex) {
119
119
  this.append(separator);
120
120
  }
121
121
  }
@@ -243,15 +243,6 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
243
243
  }
244
244
  this.append(this.sanitizeIdentifier(node.name));
245
245
  }
246
- visitFilter(node) {
247
- if (node.left) {
248
- this.visitNode(node.left);
249
- this.append(' ');
250
- }
251
- this.visitNode(node.op);
252
- this.append(' ');
253
- this.visitNode(node.right);
254
- }
255
246
  visitAnd(node) {
256
247
  this.visitNode(node.left);
257
248
  this.append(' and ');
@@ -328,7 +319,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
328
319
  }
329
320
  visitCreateTable(node) {
330
321
  this.append('create ');
331
- if (node.frontModifiers) {
322
+ if (node.frontModifiers && node.frontModifiers.length > 0) {
332
323
  this.compileList(node.frontModifiers, ' ');
333
324
  this.append(' ');
334
325
  }
@@ -347,7 +338,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
347
338
  this.append(' on commit ');
348
339
  this.append(node.onCommit);
349
340
  }
350
- if (node.endModifiers) {
341
+ if (node.endModifiers && node.endModifiers.length > 0) {
351
342
  this.append(' ');
352
343
  this.compileList(node.endModifiers, ' ');
353
344
  }
@@ -359,6 +350,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
359
350
  if (node.unsigned) {
360
351
  this.append(' unsigned');
361
352
  }
353
+ if (node.frontModifiers && node.frontModifiers.length > 0) {
354
+ this.append(' ');
355
+ this.compileList(node.frontModifiers, ' ');
356
+ }
362
357
  if (node.generated) {
363
358
  this.append(' ');
364
359
  this.visitNode(node.generated);
@@ -388,6 +383,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
388
383
  this.append(' ');
389
384
  this.visitNode(node.check);
390
385
  }
386
+ if (node.endModifiers && node.endModifiers.length > 0) {
387
+ this.append(' ');
388
+ this.compileList(node.endModifiers, ' ');
389
+ }
391
390
  }
392
391
  getAutoIncrement() {
393
392
  return 'auto_increment';
@@ -668,20 +667,8 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
668
667
  if (node.dropConstraint) {
669
668
  this.visitNode(node.dropConstraint);
670
669
  }
671
- if (node.renameColumn) {
672
- this.visitNode(node.renameColumn);
673
- }
674
- if (node.addColumn) {
675
- this.visitNode(node.addColumn);
676
- }
677
- if (node.dropColumn) {
678
- this.visitNode(node.dropColumn);
679
- }
680
- if (node.alterColumn) {
681
- this.visitNode(node.alterColumn);
682
- }
683
- if (node.modifyColumn) {
684
- this.visitNode(node.modifyColumn);
670
+ if (node.columnAlterations) {
671
+ this.compileList(node.columnAlterations);
685
672
  }
686
673
  }
687
674
  visitAddColumn(node) {
@@ -872,6 +859,11 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
872
859
  }
873
860
  this.visitNode(node.column);
874
861
  this.append(')');
862
+ if (node.filter) {
863
+ this.append(' filter(');
864
+ this.visitNode(node.filter);
865
+ this.append(')');
866
+ }
875
867
  if (node.over) {
876
868
  this.append(' ');
877
869
  this.visitNode(node.over);
@@ -897,6 +889,18 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
897
889
  visitPartitionByItem(node) {
898
890
  this.visitNode(node.partitionBy);
899
891
  }
892
+ visitBinaryOperation(node) {
893
+ this.visitNode(node.leftOperand);
894
+ this.append(' ');
895
+ this.visitNode(node.operator);
896
+ this.append(' ');
897
+ this.visitNode(node.rightOperand);
898
+ }
899
+ visitUnaryOperation(node) {
900
+ this.visitNode(node.operator);
901
+ this.append(' ');
902
+ this.visitNode(node.operand);
903
+ }
900
904
  append(str) {
901
905
  this.#sql += str;
902
906
  }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.QueryExecutorBase = void 0;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
5
  const deferred_js_1 = require("../util/deferred.js");
6
+ const log_once_js_1 = require("../util/log-once.js");
6
7
  const NO_PLUGINS = (0, object_utils_js_1.freeze)([]);
7
8
  class QueryExecutorBase {
8
9
  #plugins;
@@ -34,7 +35,10 @@ class QueryExecutorBase {
34
35
  async executeQuery(compiledQuery, queryId) {
35
36
  return await this.provideConnection(async (connection) => {
36
37
  const result = await connection.executeQuery(compiledQuery);
37
- return this.#transformResult(result, queryId);
38
+ const transformedResult = await this.#transformResult(result, queryId);
39
+ // TODO: remove.
40
+ warnOfOutdatedDriverOrPlugins(result, transformedResult);
41
+ return transformedResult;
38
42
  });
39
43
  }
40
44
  async *stream(compiledQuery, chunkSize, queryId) {
@@ -63,3 +67,14 @@ class QueryExecutorBase {
63
67
  }
64
68
  }
65
69
  exports.QueryExecutorBase = QueryExecutorBase;
70
+ // TODO: remove.
71
+ function warnOfOutdatedDriverOrPlugins(result, transformedResult) {
72
+ const { numAffectedRows } = result;
73
+ if ((numAffectedRows === undefined &&
74
+ result.numUpdatedOrDeletedRows === undefined) ||
75
+ (numAffectedRows !== undefined &&
76
+ transformedResult.numAffectedRows !== undefined)) {
77
+ return;
78
+ }
79
+ (0, log_once_js_1.logOnce)('kysely:warning: outdated driver/plugin detected! QueryResult.numUpdatedOrDeletedRows is deprecated and will be removed in a future release.');
80
+ }
@@ -1,20 +1,37 @@
1
1
  import { QueryResult } from '../driver/database-connection.js';
2
2
  import { AliasNode } from '../operation-node/alias-node.js';
3
- import { OperationNodeSource } from '../operation-node/operation-node-source.js';
4
3
  import { RawNode } from '../operation-node/raw-node.js';
5
4
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
6
5
  import { QueryExecutorProvider } from '../query-executor/query-executor-provider.js';
7
6
  import { QueryId } from '../util/query-id.js';
8
- import { AnyRawBuilder } from '../util/type-utils.js';
7
+ import { AliasedExpression, Expression } from '../expression/expression.js';
9
8
  /**
10
9
  * An instance of this class can be used to create raw SQL snippets or queries.
11
10
  *
12
11
  * You shouldn't need to create `RawBuilder` instances directly. Instead you should
13
12
  * use the {@link sql} template tag.
14
13
  */
15
- export declare class RawBuilder<O = unknown> implements OperationNodeSource {
14
+ export declare class RawBuilder<O> implements Expression<O> {
16
15
  #private;
17
16
  constructor(props: RawBuilderProps);
17
+ /** @private */
18
+ /**
19
+ * All expressions need to have this getter for complicated type-related reasons.
20
+ * Simply add this getter for your expression and always return `undefined` from it:
21
+ *
22
+ * ```ts
23
+ * class SomeExpression<T> implements Expression<T> {
24
+ * get expressionType(): T | undefined {
25
+ * return undefined
26
+ * }
27
+ * }
28
+ * ```
29
+ *
30
+ * The getter is needed to make the expression assignable to another expression only
31
+ * if the types `T` are assignable. Without this property (or some other property
32
+ * that references `T`), you could assing `Expression<string>` to `Expression<number>`.
33
+ */
34
+ get expressionType(): O | undefined;
18
35
  /**
19
36
  * Returns an aliased version of the SQL expression.
20
37
  *
@@ -69,7 +86,7 @@ export declare class RawBuilder<O = unknown> implements OperationNodeSource {
69
86
  * ```
70
87
  */
71
88
  as<A extends string>(alias: A): AliasedRawBuilder<O, A>;
72
- as<A extends string = never>(alias: AnyRawBuilder): AliasedRawBuilder<O, A>;
89
+ as<A extends string = never>(alias: Expression<any>): AliasedRawBuilder<O, A>;
73
90
  /**
74
91
  * Change the output type of the raw expression.
75
92
  *
@@ -81,25 +98,44 @@ export declare class RawBuilder<O = unknown> implements OperationNodeSource {
81
98
  * Adds a plugin for this SQL snippet.
82
99
  */
83
100
  withPlugin(plugin: KyselyPlugin): RawBuilder<O>;
101
+ /**
102
+ * Creates the OperationNode that describes how to compile this expression into SQL.
103
+ *
104
+ * If you are creating a custom expression, it's often easiest to use the {@link sql}
105
+ * template tag to build the node:
106
+ *
107
+ * ```ts
108
+ * class SomeExpression<T> implements Expression<T> {
109
+ * toOperationNode(): OperationNode {
110
+ * return sql`some sql here`.toOperationNode()
111
+ * }
112
+ * }
113
+ * ```
114
+ */
84
115
  toOperationNode(): RawNode;
85
116
  execute(executorProvider: QueryExecutorProvider): Promise<QueryResult<O>>;
86
117
  }
118
+ export declare function isRawBuilder(obj: unknown): obj is RawBuilder<unknown>;
87
119
  /**
88
120
  * {@link RawBuilder} with an alias. The result of calling {@link RawBuilder.as}.
89
121
  */
90
- export declare class AliasedRawBuilder<O = unknown, A extends string = never> implements OperationNodeSource {
122
+ export declare class AliasedRawBuilder<O = unknown, A extends string = never> implements AliasedExpression<O, A> {
91
123
  #private;
124
+ constructor(rawBuilder: RawBuilder<O>, alias: A | Expression<any>);
125
+ /** @private */
92
126
  /**
93
- * @private
94
- *
95
- * This needs to be here just so that the typings work. Without this
96
- * the generated .d.ts file contains no reference to the type param A
97
- * which causes this type to be equal to AliasedRawBuilder with any A
98
- * as long as O is the same.
127
+ * Returns the aliased expression.
128
+ */
129
+ get expression(): Expression<O>;
130
+ /** @private */
131
+ /**
132
+ * Returns the alias.
133
+ */
134
+ get alias(): A;
135
+ /**
136
+ * Creates the OperationNode that describes how to compile this expression into SQL.
99
137
  */
100
- protected get alias(): A | AnyRawBuilder;
101
138
  toOperationNode(): AliasNode;
102
- constructor(rawBuilder: RawBuilder<O>, alias: A | AnyRawBuilder);
103
139
  }
104
140
  export interface RawBuilderProps {
105
141
  readonly queryId: QueryId;