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
@@ -21,36 +21,36 @@ exports.OnConflictNode = (0, object_utils_js_1.freeze)({
21
21
  ...props,
22
22
  });
23
23
  },
24
- cloneWithIndexWhere(node, filter) {
24
+ cloneWithIndexWhere(node, operation) {
25
25
  return (0, object_utils_js_1.freeze)({
26
26
  ...node,
27
27
  indexWhere: node.indexWhere
28
- ? where_node_js_1.WhereNode.cloneWithFilter(node.indexWhere, 'And', filter)
29
- : where_node_js_1.WhereNode.create(filter),
28
+ ? where_node_js_1.WhereNode.cloneWithOperation(node.indexWhere, 'And', operation)
29
+ : where_node_js_1.WhereNode.create(operation),
30
30
  });
31
31
  },
32
- cloneWithIndexOrWhere(node, filter) {
32
+ cloneWithIndexOrWhere(node, operation) {
33
33
  return (0, object_utils_js_1.freeze)({
34
34
  ...node,
35
35
  indexWhere: node.indexWhere
36
- ? where_node_js_1.WhereNode.cloneWithFilter(node.indexWhere, 'Or', filter)
37
- : where_node_js_1.WhereNode.create(filter),
36
+ ? where_node_js_1.WhereNode.cloneWithOperation(node.indexWhere, 'Or', operation)
37
+ : where_node_js_1.WhereNode.create(operation),
38
38
  });
39
39
  },
40
- cloneWithUpdateWhere(node, filter) {
40
+ cloneWithUpdateWhere(node, operation) {
41
41
  return (0, object_utils_js_1.freeze)({
42
42
  ...node,
43
43
  updateWhere: node.updateWhere
44
- ? where_node_js_1.WhereNode.cloneWithFilter(node.updateWhere, 'And', filter)
45
- : where_node_js_1.WhereNode.create(filter),
44
+ ? where_node_js_1.WhereNode.cloneWithOperation(node.updateWhere, 'And', operation)
45
+ : where_node_js_1.WhereNode.create(operation),
46
46
  });
47
47
  },
48
- cloneWithUpdateOrWhere(node, filter) {
48
+ cloneWithUpdateOrWhere(node, operation) {
49
49
  return (0, object_utils_js_1.freeze)({
50
50
  ...node,
51
51
  updateWhere: node.updateWhere
52
- ? where_node_js_1.WhereNode.cloneWithFilter(node.updateWhere, 'Or', filter)
53
- : where_node_js_1.WhereNode.create(filter),
52
+ ? where_node_js_1.WhereNode.cloneWithOperation(node.updateWhere, 'Or', operation)
53
+ : where_node_js_1.WhereNode.create(operation),
54
54
  });
55
55
  },
56
56
  });
@@ -1,14 +1,13 @@
1
- import { FilterExpressionNode } from './operation-node-utils.js';
2
1
  import { OperationNode } from './operation-node.js';
3
2
  export interface OnNode extends OperationNode {
4
3
  readonly kind: 'OnNode';
5
- readonly on: FilterExpressionNode;
4
+ readonly on: OperationNode;
6
5
  }
7
6
  /**
8
7
  * @internal
9
8
  */
10
9
  export declare const OnNode: Readonly<{
11
10
  is(node: OperationNode): node is OnNode;
12
- create(filter: FilterExpressionNode): OnNode;
13
- cloneWithFilter(onNode: OnNode, op: 'And' | 'Or', filter: FilterExpressionNode): OnNode;
11
+ create(filter: OperationNode): OnNode;
12
+ cloneWithOperation(onNode: OnNode, operator: 'And' | 'Or', operation: OperationNode): OnNode;
14
13
  }>;
@@ -17,12 +17,12 @@ exports.OnNode = (0, object_utils_js_1.freeze)({
17
17
  on: filter,
18
18
  });
19
19
  },
20
- cloneWithFilter(onNode, op, filter) {
20
+ cloneWithOperation(onNode, operator, operation) {
21
21
  return (0, object_utils_js_1.freeze)({
22
22
  ...onNode,
23
- on: op === 'And'
24
- ? and_node_js_1.AndNode.create(onNode.on, filter)
25
- : or_node_js_1.OrNode.create(onNode.on, filter),
23
+ on: operator === 'And'
24
+ ? and_node_js_1.AndNode.create(onNode.on, operation)
25
+ : or_node_js_1.OrNode.create(onNode.on, operation),
26
26
  });
27
27
  },
28
28
  });
@@ -15,7 +15,6 @@ import { RawNode } from './raw-node.js';
15
15
  import { SelectQueryNode } from './select-query-node.js';
16
16
  import { ValueListNode } from './value-list-node.js';
17
17
  import { ValueNode } from './value-node.js';
18
- import { FilterNode } from './filter-node.js';
19
18
  import { OperatorNode } from './operator-node.js';
20
19
  import { FromNode } from './from-node.js';
21
20
  import { WhereNode } from './where-node.js';
@@ -75,6 +74,8 @@ import { OverNode } from './over-node.js';
75
74
  import { PartitionByNode } from './partition-by-node.js';
76
75
  import { PartitionByItemNode } from './partition-by-item-node.js';
77
76
  import { SetOperationNode } from './set-operation-node.js';
77
+ import { BinaryOperationNode } from './binary-operation-node.js';
78
+ import { UnaryOperationNode } from './unary-operation-node.js';
78
79
  /**
79
80
  * Transforms an operation node tree into another one.
80
81
  *
@@ -117,7 +118,6 @@ export declare class OperationNodeTransformer {
117
118
  protected transformTable(node: TableNode): TableNode;
118
119
  protected transformFrom(node: FromNode): FromNode;
119
120
  protected transformReference(node: ReferenceNode): ReferenceNode;
120
- protected transformFilter(node: FilterNode): FilterNode;
121
121
  protected transformAnd(node: AndNode): AndNode;
122
122
  protected transformOr(node: OrNode): OrNode;
123
123
  protected transformValueList(node: ValueListNode): ValueListNode;
@@ -179,6 +179,8 @@ export declare class OperationNodeTransformer {
179
179
  protected transformOver(node: OverNode): OverNode;
180
180
  protected transformPartitionBy(node: PartitionByNode): PartitionByNode;
181
181
  protected transformPartitionByItem(node: PartitionByItemNode): PartitionByItemNode;
182
+ protected transformBinaryOperation(node: BinaryOperationNode): BinaryOperationNode;
183
+ protected transformUnaryOperation(node: UnaryOperationNode): UnaryOperationNode;
182
184
  protected transformDataType(node: DataTypeNode): DataTypeNode;
183
185
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
184
186
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -46,7 +46,6 @@ class OperationNodeTransformer {
46
46
  TableNode: this.transformTable.bind(this),
47
47
  FromNode: this.transformFrom.bind(this),
48
48
  SelectAllNode: this.transformSelectAll.bind(this),
49
- FilterNode: this.transformFilter.bind(this),
50
49
  AndNode: this.transformAnd.bind(this),
51
50
  OrNode: this.transformOr.bind(this),
52
51
  ValueNode: this.transformValue.bind(this),
@@ -111,6 +110,8 @@ class OperationNodeTransformer {
111
110
  PartitionByNode: this.transformPartitionBy.bind(this),
112
111
  PartitionByItemNode: this.transformPartitionByItem.bind(this),
113
112
  SetOperationNode: this.transformSetOperation.bind(this),
113
+ BinaryOperationNode: this.transformBinaryOperation.bind(this),
114
+ UnaryOperationNode: this.transformUnaryOperation.bind(this),
114
115
  });
115
116
  transformNode(node) {
116
117
  if (!node) {
@@ -135,7 +136,7 @@ class OperationNodeTransformer {
135
136
  kind: 'SelectQueryNode',
136
137
  from: this.transformNode(node.from),
137
138
  selections: this.transformNodeList(node.selections),
138
- distinctOnSelections: this.transformNodeList(node.distinctOnSelections),
139
+ distinctOn: this.transformNodeList(node.distinctOn),
139
140
  joins: this.transformNodeList(node.joins),
140
141
  groupBy: this.transformNode(node.groupBy),
141
142
  orderBy: this.transformNode(node.orderBy),
@@ -188,14 +189,6 @@ class OperationNodeTransformer {
188
189
  column: this.transformNode(node.column),
189
190
  });
190
191
  }
191
- transformFilter(node) {
192
- return (0, require_all_props_js_1.requireAllProps)({
193
- kind: 'FilterNode',
194
- left: this.transformNode(node.left),
195
- op: this.transformNode(node.op),
196
- right: this.transformNode(node.right),
197
- });
198
- }
199
192
  transformAnd(node) {
200
193
  return (0, require_all_props_js_1.requireAllProps)({
201
194
  kind: 'AndNode',
@@ -310,6 +303,8 @@ class OperationNodeTransformer {
310
303
  defaultTo: this.transformNode(node.defaultTo),
311
304
  check: this.transformNode(node.check),
312
305
  generated: this.transformNode(node.generated),
306
+ frontModifiers: this.transformNodeList(node.frontModifiers),
307
+ endModifiers: this.transformNodeList(node.endModifiers),
313
308
  });
314
309
  }
315
310
  transformAddColumn(node) {
@@ -522,11 +517,7 @@ class OperationNodeTransformer {
522
517
  table: this.transformNode(node.table),
523
518
  renameTo: this.transformNode(node.renameTo),
524
519
  setSchema: this.transformNode(node.setSchema),
525
- renameColumn: this.transformNode(node.renameColumn),
526
- addColumn: this.transformNode(node.addColumn),
527
- dropColumn: this.transformNode(node.dropColumn),
528
- alterColumn: this.transformNode(node.alterColumn),
529
- modifyColumn: this.transformNode(node.modifyColumn),
520
+ columnAlterations: this.transformNodeList(node.columnAlterations),
530
521
  addConstraint: this.transformNode(node.addConstraint),
531
522
  dropConstraint: this.transformNode(node.dropConstraint),
532
523
  });
@@ -659,6 +650,7 @@ class OperationNodeTransformer {
659
650
  kind: 'AggregateFunctionNode',
660
651
  column: this.transformNode(node.column),
661
652
  distinct: node.distinct,
653
+ filter: this.transformNode(node.filter),
662
654
  func: node.func,
663
655
  over: this.transformNode(node.over),
664
656
  });
@@ -682,6 +674,21 @@ class OperationNodeTransformer {
682
674
  partitionBy: this.transformNode(node.partitionBy),
683
675
  });
684
676
  }
677
+ transformBinaryOperation(node) {
678
+ return (0, require_all_props_js_1.requireAllProps)({
679
+ kind: 'BinaryOperationNode',
680
+ leftOperand: this.transformNode(node.leftOperand),
681
+ operator: this.transformNode(node.operator),
682
+ rightOperand: this.transformNode(node.rightOperand),
683
+ });
684
+ }
685
+ transformUnaryOperation(node) {
686
+ return (0, require_all_props_js_1.requireAllProps)({
687
+ kind: 'UnaryOperationNode',
688
+ operator: this.transformNode(node.operator),
689
+ operand: this.transformNode(node.operand),
690
+ });
691
+ }
685
692
  transformDataType(node) {
686
693
  // An Object.freezed leaf node. No need to clone.
687
694
  return node;
@@ -15,7 +15,6 @@ import { RawNode } from './raw-node.js';
15
15
  import { SelectQueryNode } from './select-query-node.js';
16
16
  import { ValueListNode } from './value-list-node.js';
17
17
  import { ValueNode } from './value-node.js';
18
- import { FilterNode } from './filter-node.js';
19
18
  import { OperatorNode } from './operator-node.js';
20
19
  import { FromNode } from './from-node.js';
21
20
  import { WhereNode } from './where-node.js';
@@ -75,6 +74,8 @@ import { OverNode } from './over-node.js';
75
74
  import { PartitionByNode } from './partition-by-node.js';
76
75
  import { PartitionByItemNode } from './partition-by-item-node.js';
77
76
  import { SetOperationNode } from './set-operation-node.js';
77
+ import { BinaryOperationNode } from './binary-operation-node.js';
78
+ import { UnaryOperationNode } from './unary-operation-node.js';
78
79
  export declare abstract class OperationNodeVisitor {
79
80
  #private;
80
81
  protected readonly nodeStack: OperationNode[];
@@ -87,7 +88,6 @@ export declare abstract class OperationNodeVisitor {
87
88
  protected abstract visitTable(node: TableNode): void;
88
89
  protected abstract visitFrom(node: FromNode): void;
89
90
  protected abstract visitReference(node: ReferenceNode): void;
90
- protected abstract visitFilter(node: FilterNode): void;
91
91
  protected abstract visitAnd(node: AndNode): void;
92
92
  protected abstract visitOr(node: OrNode): void;
93
93
  protected abstract visitValueList(node: ValueListNode): void;
@@ -156,4 +156,6 @@ export declare abstract class OperationNodeVisitor {
156
156
  protected abstract visitPartitionBy(node: PartitionByNode): void;
157
157
  protected abstract visitPartitionByItem(node: PartitionByItemNode): void;
158
158
  protected abstract visitSetOperation(node: SetOperationNode): void;
159
+ protected abstract visitBinaryOperation(node: BinaryOperationNode): void;
160
+ protected abstract visitUnaryOperation(node: UnaryOperationNode): void;
159
161
  }
@@ -19,7 +19,6 @@ class OperationNodeVisitor {
19
19
  TableNode: this.visitTable.bind(this),
20
20
  FromNode: this.visitFrom.bind(this),
21
21
  SelectAllNode: this.visitSelectAll.bind(this),
22
- FilterNode: this.visitFilter.bind(this),
23
22
  AndNode: this.visitAnd.bind(this),
24
23
  OrNode: this.visitOr.bind(this),
25
24
  ValueNode: this.visitValue.bind(this),
@@ -84,6 +83,8 @@ class OperationNodeVisitor {
84
83
  PartitionByNode: this.visitPartitionBy.bind(this),
85
84
  PartitionByItemNode: this.visitPartitionByItem.bind(this),
86
85
  SetOperationNode: this.visitSetOperation.bind(this),
86
+ BinaryOperationNode: this.visitBinaryOperation.bind(this),
87
+ UnaryOperationNode: this.visitUnaryOperation.bind(this),
87
88
  });
88
89
  visitNode = (node) => {
89
90
  this.nodeStack.push(node);
@@ -1,4 +1,4 @@
1
- export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode';
1
+ export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -1,7 +1,9 @@
1
- import { ArrayItemType } from '../util/type-utils.js';
2
1
  import { OperationNode } from './operation-node.js';
3
- export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "ilike", "not ilike", "@>", "<@", "?", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "exists", "not exists", "&&", "||", "@@", "@@@", "!!", "<->"];
4
- export declare type Operator = ArrayItemType<typeof OPERATORS>;
2
+ export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "&&", "||", "@@", "@@@", "!!", "<->"];
3
+ export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
4
+ export declare type ComparisonOperator = typeof COMPARISON_OPERATORS[number];
5
+ export declare type UnaryFilterOperator = typeof UNARY_FILTER_OPERATORS[number];
6
+ export declare type Operator = ComparisonOperator | UnaryFilterOperator;
5
7
  export interface OperatorNode extends OperationNode {
6
8
  readonly kind: 'OperatorNode';
7
9
  readonly operator: Operator;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperatorNode = exports.OPERATORS = void 0;
3
+ exports.OperatorNode = exports.UNARY_FILTER_OPERATORS = exports.COMPARISON_OPERATORS = void 0;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
- exports.OPERATORS = [
5
+ exports.COMPARISON_OPERATORS = [
6
6
  '=',
7
7
  '==',
8
8
  '!=',
@@ -22,7 +22,6 @@ exports.OPERATORS = [
22
22
  '@>',
23
23
  '<@',
24
24
  '?',
25
- '?',
26
25
  '?&',
27
26
  '!<',
28
27
  '!>',
@@ -31,8 +30,6 @@ exports.OPERATORS = [
31
30
  '~',
32
31
  '~*',
33
32
  '!~*',
34
- 'exists',
35
- 'not exists',
36
33
  '&&',
37
34
  '||',
38
35
  '@@',
@@ -40,6 +37,7 @@ exports.OPERATORS = [
40
37
  '!!',
41
38
  '<->',
42
39
  ];
40
+ exports.UNARY_FILTER_OPERATORS = ['exists', 'not exists'];
43
41
  /**
44
42
  * @internal
45
43
  */
@@ -1,14 +1,13 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { FilterExpressionNode } from './operation-node-utils.js';
3
2
  export interface OrNode extends OperationNode {
4
3
  readonly kind: 'OrNode';
5
- readonly left: FilterExpressionNode;
6
- readonly right: FilterExpressionNode;
4
+ readonly left: OperationNode;
5
+ readonly right: OperationNode;
7
6
  }
8
7
  /**
9
8
  * @internal
10
9
  */
11
10
  export declare const OrNode: Readonly<{
12
11
  is(node: OperationNode): node is OrNode;
13
- create(left: FilterExpressionNode, right: FilterExpressionNode): OrNode;
12
+ create(left: OperationNode, right: OperationNode): OrNode;
14
13
  }>;
@@ -1,15 +1,13 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { ReferenceExpressionNode } from './operation-node-utils.js';
3
- import { RawNode } from './raw-node.js';
4
2
  export interface OrderByItemNode extends OperationNode {
5
3
  readonly kind: 'OrderByItemNode';
6
- readonly orderBy: ReferenceExpressionNode;
7
- readonly direction?: RawNode;
4
+ readonly orderBy: OperationNode;
5
+ readonly direction?: OperationNode;
8
6
  }
9
7
  /**
10
8
  * @internal
11
9
  */
12
10
  export declare const OrderByItemNode: Readonly<{
13
11
  is(node: OperationNode): node is OrderByItemNode;
14
- create(orderBy: ReferenceExpressionNode, direction?: RawNode): OrderByItemNode;
12
+ create(orderBy: OperationNode, direction?: OperationNode): OrderByItemNode;
15
13
  }>;
@@ -1,13 +1,12 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { FilterExpressionNode } from './operation-node-utils.js';
3
2
  export interface ParensNode extends OperationNode {
4
3
  readonly kind: 'ParensNode';
5
- readonly node: FilterExpressionNode;
4
+ readonly node: OperationNode;
6
5
  }
7
6
  /**
8
7
  * @internal
9
8
  */
10
9
  export declare const ParensNode: Readonly<{
11
10
  is(node: OperationNode): node is ParensNode;
12
- create(node: FilterExpressionNode): ParensNode;
11
+ create(node: OperationNode): ParensNode;
13
12
  }>;
@@ -1,14 +1,13 @@
1
- import { ColumnNode } from './column-node.js';
2
1
  import { OperationNode } from './operation-node.js';
3
- import { ReferenceNode } from './reference-node.js';
2
+ import { SimpleReferenceExpressionNode } from './simple-reference-expression-node.js';
4
3
  export interface PartitionByItemNode extends OperationNode {
5
4
  readonly kind: 'PartitionByItemNode';
6
- readonly partitionBy: ColumnNode | ReferenceNode;
5
+ readonly partitionBy: SimpleReferenceExpressionNode;
7
6
  }
8
7
  /**
9
8
  * @internal
10
9
  */
11
10
  export declare const PartitionByItemNode: Readonly<{
12
11
  is(node: OperationNode): node is PartitionByItemNode;
13
- create(partitionBy: ColumnNode | ReferenceNode): PartitionByItemNode;
12
+ create(partitionBy: SimpleReferenceExpressionNode): PartitionByItemNode;
14
13
  }>;
@@ -5,7 +5,6 @@ import { DeleteQueryNode } from './delete-query-node.js';
5
5
  import { JoinNode } from './join-node.js';
6
6
  import { SelectionNode } from './selection-node.js';
7
7
  import { OperationNode } from './operation-node.js';
8
- import { FilterExpressionNode } from './operation-node-utils.js';
9
8
  export declare type QueryNode = SelectQueryNode | DeleteQueryNode | InsertQueryNode | UpdateQueryNode;
10
9
  export declare type MutatingQueryNode = DeleteQueryNode | InsertQueryNode | UpdateQueryNode;
11
10
  export declare type FilterableQueryNode = SelectQueryNode | DeleteQueryNode | UpdateQueryNode;
@@ -14,8 +13,8 @@ export declare type FilterableQueryNode = SelectQueryNode | DeleteQueryNode | Up
14
13
  */
15
14
  export declare const QueryNode: Readonly<{
16
15
  is(node: OperationNode): node is QueryNode;
17
- cloneWithWhere<T extends FilterableQueryNode>(node: T, filter: FilterExpressionNode): T;
18
- cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, filter: FilterExpressionNode): T_1;
16
+ cloneWithWhere<T extends FilterableQueryNode>(node: T, operation: OperationNode): T;
17
+ cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, operation: OperationNode): T_1;
19
18
  cloneWithJoin<T_2 extends FilterableQueryNode>(node: T_2, join: JoinNode): T_2;
20
19
  cloneWithReturning<T_3 extends MutatingQueryNode>(node: T_3, selections: ReadonlyArray<SelectionNode>): T_3;
21
20
  }>;
@@ -18,20 +18,20 @@ exports.QueryNode = (0, object_utils_js_1.freeze)({
18
18
  update_query_node_js_1.UpdateQueryNode.is(node) ||
19
19
  select_query_node_js_1.SelectQueryNode.is(node));
20
20
  },
21
- cloneWithWhere(node, filter) {
21
+ cloneWithWhere(node, operation) {
22
22
  return (0, object_utils_js_1.freeze)({
23
23
  ...node,
24
24
  where: node.where
25
- ? where_node_js_1.WhereNode.cloneWithFilter(node.where, 'And', filter)
26
- : where_node_js_1.WhereNode.create(filter),
25
+ ? where_node_js_1.WhereNode.cloneWithOperation(node.where, 'And', operation)
26
+ : where_node_js_1.WhereNode.create(operation),
27
27
  });
28
28
  },
29
- cloneWithOrWhere(node, filter) {
29
+ cloneWithOrWhere(node, operation) {
30
30
  return (0, object_utils_js_1.freeze)({
31
31
  ...node,
32
32
  where: node.where
33
- ? where_node_js_1.WhereNode.cloneWithFilter(node.where, 'Or', filter)
34
- : where_node_js_1.WhereNode.create(filter),
33
+ ? where_node_js_1.WhereNode.cloneWithOperation(node.where, 'Or', operation)
34
+ : where_node_js_1.WhereNode.create(operation),
35
35
  });
36
36
  },
37
37
  cloneWithJoin(node, join) {
@@ -1,10 +1,9 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { RawNode } from './raw-node.js';
3
2
  export declare type SelectModifier = 'ForUpdate' | 'ForNoKeyUpdate' | 'ForShare' | 'ForKeyShare' | 'NoWait' | 'SkipLocked' | 'Distinct';
4
3
  export interface SelectModifierNode extends OperationNode {
5
4
  readonly kind: 'SelectModifierNode';
6
5
  readonly modifier?: SelectModifier;
7
- readonly rawModifier?: RawNode;
6
+ readonly rawModifier?: OperationNode;
8
7
  }
9
8
  /**
10
9
  * @internal
@@ -12,5 +11,5 @@ export interface SelectModifierNode extends OperationNode {
12
11
  export declare const SelectModifierNode: Readonly<{
13
12
  is(node: OperationNode): node is SelectModifierNode;
14
13
  create(modifier: SelectModifier): SelectModifierNode;
15
- createWithRaw(modifier: RawNode): SelectModifierNode;
14
+ createWithExpression(modifier: OperationNode): SelectModifierNode;
16
15
  }>;
@@ -15,7 +15,7 @@ exports.SelectModifierNode = (0, object_utils_js_1.freeze)({
15
15
  modifier,
16
16
  });
17
17
  },
18
- createWithRaw(modifier) {
18
+ createWithExpression(modifier) {
19
19
  return (0, object_utils_js_1.freeze)({
20
20
  kind: 'SelectModifierNode',
21
21
  rawModifier: modifier,
@@ -6,7 +6,6 @@ import { JoinNode } from './join-node.js';
6
6
  import { LimitNode } from './limit-node.js';
7
7
  import { OffsetNode } from './offset-node.js';
8
8
  import { OperationNode } from './operation-node.js';
9
- import { FilterExpressionNode, TableExpressionNode } from './operation-node-utils.js';
10
9
  import { OrderByItemNode } from './order-by-item-node.js';
11
10
  import { OrderByNode } from './order-by-node.js';
12
11
  import { SelectionNode } from './selection-node.js';
@@ -19,7 +18,7 @@ export interface SelectQueryNode extends OperationNode {
19
18
  readonly kind: 'SelectQueryNode';
20
19
  readonly from: FromNode;
21
20
  readonly selections?: ReadonlyArray<SelectionNode>;
22
- readonly distinctOnSelections?: ReadonlyArray<SelectionNode>;
21
+ readonly distinctOn?: ReadonlyArray<OperationNode>;
23
22
  readonly joins?: ReadonlyArray<JoinNode>;
24
23
  readonly groupBy?: GroupByNode;
25
24
  readonly orderBy?: OrderByNode;
@@ -38,17 +37,17 @@ export interface SelectQueryNode extends OperationNode {
38
37
  */
39
38
  export declare const SelectQueryNode: Readonly<{
40
39
  is(node: OperationNode): node is SelectQueryNode;
41
- create(fromItems: ReadonlyArray<TableExpressionNode>, withNode?: WithNode): SelectQueryNode;
40
+ create(fromItems: ReadonlyArray<OperationNode>, withNode?: WithNode): SelectQueryNode;
42
41
  cloneWithSelections(select: SelectQueryNode, selections: ReadonlyArray<SelectionNode>): SelectQueryNode;
43
- cloneWithDistinctOnSelections(select: SelectQueryNode, selections: ReadonlyArray<SelectionNode>): SelectQueryNode;
42
+ cloneWithDistinctOn(select: SelectQueryNode, expressions: ReadonlyArray<OperationNode>): SelectQueryNode;
44
43
  cloneWithFrontModifier(select: SelectQueryNode, modifier: SelectModifierNode): SelectQueryNode;
45
44
  cloneWithEndModifier(select: SelectQueryNode, modifier: SelectModifierNode): SelectQueryNode;
46
45
  cloneWithOrderByItem(selectNode: SelectQueryNode, item: OrderByItemNode): SelectQueryNode;
47
46
  cloneWithGroupByItems(selectNode: SelectQueryNode, items: ReadonlyArray<GroupByItemNode>): SelectQueryNode;
48
47
  cloneWithLimit(selectNode: SelectQueryNode, limit: LimitNode): SelectQueryNode;
49
48
  cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
50
- cloneWithHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
51
- cloneWithOrHaving(selectNode: SelectQueryNode, filter: FilterExpressionNode): SelectQueryNode;
49
+ cloneWithHaving(selectNode: SelectQueryNode, operation: OperationNode): SelectQueryNode;
50
+ cloneWithOrHaving(selectNode: SelectQueryNode, operation: OperationNode): SelectQueryNode;
52
51
  cloneWithSetOperation(selectNode: SelectQueryNode, setOperation: SetOperationNode): SelectQueryNode;
53
52
  cloneWithExplain(selectNode: SelectQueryNode, explain: ExplainNode): SelectQueryNode;
54
53
  }>;
@@ -28,12 +28,12 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
28
28
  : (0, object_utils_js_1.freeze)(selections),
29
29
  });
30
30
  },
31
- cloneWithDistinctOnSelections(select, selections) {
31
+ cloneWithDistinctOn(select, expressions) {
32
32
  return (0, object_utils_js_1.freeze)({
33
33
  ...select,
34
- distinctOnSelections: select.distinctOnSelections
35
- ? (0, object_utils_js_1.freeze)([...select.distinctOnSelections, ...selections])
36
- : (0, object_utils_js_1.freeze)(selections),
34
+ distinctOn: select.distinctOn
35
+ ? (0, object_utils_js_1.freeze)([...select.distinctOn, ...expressions])
36
+ : (0, object_utils_js_1.freeze)(expressions),
37
37
  });
38
38
  },
39
39
  cloneWithFrontModifier(select, modifier) {
@@ -80,20 +80,20 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
80
80
  offset,
81
81
  });
82
82
  },
83
- cloneWithHaving(selectNode, filter) {
83
+ cloneWithHaving(selectNode, operation) {
84
84
  return (0, object_utils_js_1.freeze)({
85
85
  ...selectNode,
86
86
  having: selectNode.having
87
- ? having_node_js_1.HavingNode.cloneWithFilter(selectNode.having, 'And', filter)
88
- : having_node_js_1.HavingNode.create(filter),
87
+ ? having_node_js_1.HavingNode.cloneWithOperation(selectNode.having, 'And', operation)
88
+ : having_node_js_1.HavingNode.create(operation),
89
89
  });
90
90
  },
91
- cloneWithOrHaving(selectNode, filter) {
91
+ cloneWithOrHaving(selectNode, operation) {
92
92
  return (0, object_utils_js_1.freeze)({
93
93
  ...selectNode,
94
94
  having: selectNode.having
95
- ? having_node_js_1.HavingNode.cloneWithFilter(selectNode.having, 'Or', filter)
96
- : having_node_js_1.HavingNode.create(filter),
95
+ ? having_node_js_1.HavingNode.cloneWithOperation(selectNode.having, 'Or', operation)
96
+ : having_node_js_1.HavingNode.create(operation),
97
97
  });
98
98
  },
99
99
  cloneWithSetOperation(selectNode, setOperation) {
@@ -1,10 +1,9 @@
1
1
  import { AliasNode } from './alias-node.js';
2
- import { ColumnNode } from './column-node.js';
3
2
  import { OperationNode } from './operation-node.js';
4
- import { ReferenceNode } from './reference-node.js';
5
3
  import { SelectAllNode } from './select-all-node.js';
4
+ import { SimpleReferenceExpressionNode } from './simple-reference-expression-node.js';
6
5
  import { TableNode } from './table-node.js';
7
- declare type SelectionNodeChild = ColumnNode | ReferenceNode | AliasNode | SelectAllNode;
6
+ declare type SelectionNodeChild = SimpleReferenceExpressionNode | AliasNode | SelectAllNode;
8
7
  export interface SelectionNode extends OperationNode {
9
8
  readonly kind: 'SelectionNode';
10
9
  readonly selection: SelectionNodeChild;
@@ -1,12 +1,9 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- import { RawNode } from './raw-node.js';
3
- import { SelectQueryNode } from './select-query-node.js';
4
- export declare type SetOperationExpressionNode = SelectQueryNode | RawNode;
5
2
  export declare type SetOperator = 'union' | 'intersect' | 'except';
6
3
  export interface SetOperationNode extends OperationNode {
7
4
  kind: 'SetOperationNode';
8
5
  operator: SetOperator;
9
- expression: SetOperationExpressionNode;
6
+ expression: OperationNode;
10
7
  all: boolean;
11
8
  }
12
9
  /**
@@ -14,5 +11,5 @@ export interface SetOperationNode extends OperationNode {
14
11
  */
15
12
  export declare const SetOperationNode: Readonly<{
16
13
  is(node: OperationNode): node is SetOperationNode;
17
- create(operator: SetOperator, expression: SetOperationExpressionNode, all: boolean): SetOperationNode;
14
+ create(operator: SetOperator, expression: OperationNode, all: boolean): SetOperationNode;
18
15
  }>;
@@ -0,0 +1,3 @@
1
+ import { ColumnNode } from './column-node.js';
2
+ import { ReferenceNode } from './reference-node.js';
3
+ export declare type SimpleReferenceExpressionNode = ColumnNode | ReferenceNode;
@@ -0,0 +1,13 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ export interface UnaryOperationNode extends OperationNode {
3
+ readonly kind: 'UnaryOperationNode';
4
+ readonly operator: OperationNode;
5
+ readonly operand: OperationNode;
6
+ }
7
+ /**
8
+ * @internal
9
+ */
10
+ export declare const UnaryOperationNode: Readonly<{
11
+ is(node: OperationNode): node is UnaryOperationNode;
12
+ create(operator: OperationNode, operand: OperationNode): UnaryOperationNode;
13
+ }>;