kysely 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) 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 +65 -280
  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 +2 -2
  144. package/dist/cjs/schema/create-table-builder.d.ts +38 -5
  145. package/dist/cjs/schema/create-table-builder.js +36 -1
  146. package/dist/cjs/schema/create-view-builder.d.ts +3 -2
  147. package/dist/cjs/schema/schema.d.ts +2 -2
  148. package/dist/cjs/schema/schema.js +6 -5
  149. package/dist/cjs/util/compilable.d.ts +2 -2
  150. package/dist/cjs/util/explainable.d.ts +2 -2
  151. package/dist/cjs/util/infer-result.d.ts +46 -0
  152. package/dist/cjs/util/infer-result.js +2 -0
  153. package/dist/cjs/util/log-once.d.ts +5 -0
  154. package/dist/cjs/util/log-once.js +16 -0
  155. package/dist/cjs/util/object-utils.d.ts +1 -0
  156. package/dist/cjs/util/object-utils.js +5 -1
  157. package/dist/cjs/util/type-utils.d.ts +3 -17
  158. package/dist/esm/dialect/database-introspector.d.ts +4 -0
  159. package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
  160. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  161. package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
  162. package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
  163. package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
  164. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  165. package/dist/esm/driver/database-connection.d.ts +6 -2
  166. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
  167. package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
  168. package/dist/esm/expression/expression.d.ts +100 -0
  169. package/dist/esm/expression/expression.js +12 -0
  170. package/dist/esm/index.d.ts +10 -6
  171. package/dist/esm/index.js +6 -2
  172. package/dist/esm/migration/file-migration-provider.js +5 -3
  173. package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
  174. package/dist/esm/operation-node/aggregate-function-node.js +17 -0
  175. package/dist/esm/operation-node/alias-node.d.ts +3 -11
  176. package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
  177. package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
  178. package/dist/esm/operation-node/alter-table-node.js +9 -1
  179. package/dist/esm/operation-node/and-node.d.ts +3 -4
  180. package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
  181. package/dist/esm/operation-node/binary-operation-node.js +18 -0
  182. package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
  183. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  184. package/dist/esm/operation-node/column-definition-node.js +16 -0
  185. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  186. package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
  187. package/dist/esm/operation-node/create-index-node.d.ts +1 -3
  188. package/dist/esm/operation-node/create-table-node.d.ts +4 -5
  189. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  190. package/dist/esm/operation-node/create-type-node.js +1 -2
  191. package/dist/esm/operation-node/default-value-node.d.ts +2 -4
  192. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  193. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  194. package/dist/esm/operation-node/drop-type-node.js +1 -2
  195. package/dist/esm/operation-node/explain-node.d.ts +2 -4
  196. package/dist/esm/operation-node/explain-node.js +1 -1
  197. package/dist/esm/operation-node/from-node.d.ts +3 -4
  198. package/dist/esm/operation-node/generated-node.d.ts +2 -3
  199. package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
  200. package/dist/esm/operation-node/having-node.d.ts +3 -4
  201. package/dist/esm/operation-node/having-node.js +4 -4
  202. package/dist/esm/operation-node/insert-query-node.d.ts +1 -5
  203. package/dist/esm/operation-node/join-node.d.ts +5 -9
  204. package/dist/esm/operation-node/join-node.js +6 -6
  205. package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
  206. package/dist/esm/operation-node/on-conflict-node.js +12 -12
  207. package/dist/esm/operation-node/on-node.d.ts +3 -4
  208. package/dist/esm/operation-node/on-node.js +4 -4
  209. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
  210. package/dist/esm/operation-node/operation-node-transformer.js +22 -15
  211. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
  212. package/dist/esm/operation-node/operation-node-visitor.js +2 -1
  213. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  214. package/dist/esm/operation-node/operator-node.d.ts +5 -3
  215. package/dist/esm/operation-node/operator-node.js +2 -4
  216. package/dist/esm/operation-node/or-node.d.ts +3 -4
  217. package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
  218. package/dist/esm/operation-node/parens-node.d.ts +2 -3
  219. package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
  220. package/dist/esm/operation-node/query-node.d.ts +2 -3
  221. package/dist/esm/operation-node/query-node.js +6 -6
  222. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
  223. package/dist/esm/operation-node/select-modifier-node.js +1 -1
  224. package/dist/esm/operation-node/select-query-node.d.ts +5 -6
  225. package/dist/esm/operation-node/select-query-node.js +10 -10
  226. package/dist/esm/operation-node/selection-node.d.ts +2 -3
  227. package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
  228. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
  229. package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
  230. package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
  231. package/dist/esm/operation-node/unary-operation-node.js +17 -0
  232. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  233. package/dist/esm/operation-node/value-list-node.d.ts +2 -9
  234. package/dist/esm/operation-node/where-node.d.ts +3 -4
  235. package/dist/esm/operation-node/where-node.js +4 -4
  236. package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
  237. package/dist/esm/parser/binary-operation-parser.js +92 -0
  238. package/dist/esm/parser/coalesce-parser.d.ts +4 -0
  239. package/dist/esm/parser/coalesce-parser.js +8 -0
  240. package/dist/esm/parser/data-type-parser.d.ts +5 -5
  241. package/dist/esm/parser/default-value-parser.d.ts +4 -5
  242. package/dist/esm/parser/default-value-parser.js +2 -2
  243. package/dist/esm/parser/expression-parser.d.ts +10 -0
  244. package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
  245. package/dist/esm/parser/identifier-parser.d.ts +2 -0
  246. package/dist/esm/parser/identifier-parser.js +20 -0
  247. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  248. package/dist/esm/parser/insert-values-parser.js +2 -2
  249. package/dist/esm/parser/join-parser.js +2 -2
  250. package/dist/esm/parser/order-by-parser.d.ts +2 -2
  251. package/dist/esm/parser/reference-parser.d.ts +14 -14
  252. package/dist/esm/parser/reference-parser.js +10 -8
  253. package/dist/esm/parser/select-parser.d.ts +6 -7
  254. package/dist/esm/parser/select-parser.js +2 -2
  255. package/dist/esm/parser/set-operation-parser.d.ts +2 -4
  256. package/dist/esm/parser/table-parser.d.ts +11 -12
  257. package/dist/esm/parser/table-parser.js +2 -2
  258. package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
  259. package/dist/esm/parser/unary-operation-parser.js +13 -0
  260. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  261. package/dist/esm/parser/value-parser.d.ts +5 -9
  262. package/dist/esm/parser/value-parser.js +4 -4
  263. package/dist/esm/parser/with-parser.d.ts +3 -4
  264. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  265. package/dist/esm/query-builder/aggregate-function-builder.d.ts +245 -14
  266. package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
  267. package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
  268. package/dist/esm/query-builder/delete-query-builder.js +19 -16
  269. package/dist/esm/query-builder/function-module.d.ts +123 -22
  270. package/dist/esm/query-builder/function-module.js +92 -49
  271. package/dist/esm/query-builder/having-interface.d.ts +9 -8
  272. package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
  273. package/dist/esm/query-builder/insert-query-builder.js +11 -9
  274. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  275. package/dist/esm/query-builder/insert-result.js +12 -1
  276. package/dist/esm/query-builder/join-builder.d.ts +9 -8
  277. package/dist/esm/query-builder/join-builder.js +10 -9
  278. package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
  279. package/dist/esm/query-builder/on-conflict-builder.js +18 -17
  280. package/dist/esm/query-builder/select-query-builder.d.ts +82 -51
  281. package/dist/esm/query-builder/select-query-builder.js +38 -36
  282. package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
  283. package/dist/esm/query-builder/update-query-builder.js +19 -16
  284. package/dist/esm/query-builder/where-interface.d.ts +12 -11
  285. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  286. package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -3
  287. package/dist/esm/query-compiler/default-query-compiler.js +38 -34
  288. package/dist/esm/query-executor/query-executor-base.js +16 -1
  289. package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
  290. package/dist/esm/raw-builder/raw-builder.js +23 -14
  291. package/dist/esm/raw-builder/sql.d.ts +4 -4
  292. package/dist/esm/schema/alter-column-builder.d.ts +28 -0
  293. package/dist/esm/schema/alter-column-builder.js +51 -0
  294. package/dist/esm/schema/alter-table-builder.d.ts +39 -341
  295. package/dist/esm/schema/alter-table-builder.js +61 -274
  296. package/dist/esm/schema/column-definition-builder.d.ts +43 -155
  297. package/dist/esm/schema/column-definition-builder.js +189 -0
  298. package/dist/esm/schema/create-index-builder.d.ts +2 -2
  299. package/dist/esm/schema/create-table-builder.d.ts +38 -5
  300. package/dist/esm/schema/create-table-builder.js +36 -1
  301. package/dist/esm/schema/create-view-builder.d.ts +3 -2
  302. package/dist/esm/schema/schema.d.ts +2 -2
  303. package/dist/esm/schema/schema.js +6 -5
  304. package/dist/esm/util/compilable.d.ts +2 -2
  305. package/dist/esm/util/explainable.d.ts +2 -2
  306. package/dist/esm/util/infer-result.d.ts +46 -0
  307. package/dist/esm/util/infer-result.js +2 -0
  308. package/dist/esm/util/log-once.d.ts +5 -0
  309. package/dist/esm/util/log-once.js +13 -0
  310. package/dist/esm/util/object-utils.d.ts +1 -0
  311. package/dist/esm/util/object-utils.js +3 -0
  312. package/dist/esm/util/type-utils.d.ts +3 -17
  313. package/package.json +1 -1
  314. package/dist/cjs/operation-node/filter-node.d.ts +0 -18
  315. package/dist/cjs/operation-node/filter-node.js +0 -20
  316. package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
  317. package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
  318. package/dist/cjs/parser/filter-parser.d.ts +0 -24
  319. package/dist/cjs/parser/filter-parser.js +0 -109
  320. package/dist/esm/operation-node/filter-node.d.ts +0 -18
  321. package/dist/esm/operation-node/filter-node.js +0 -18
  322. package/dist/esm/operation-node/operation-node-utils.d.ts +0 -18
  323. package/dist/esm/operation-node/operation-node-utils.js +0 -2
  324. package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
  325. package/dist/esm/parser/filter-parser.d.ts +0 -24
  326. package/dist/esm/parser/filter-parser.js +0 -100
@@ -15,12 +15,12 @@ export const HavingNode = freeze({
15
15
  having: filter,
16
16
  });
17
17
  },
18
- cloneWithFilter(havingNode, op, filter) {
18
+ cloneWithOperation(havingNode, operator, operation) {
19
19
  return freeze({
20
20
  ...havingNode,
21
- having: op === 'And'
22
- ? AndNode.create(havingNode.having, filter)
23
- : OrNode.create(havingNode.having, filter),
21
+ having: operator === 'And'
22
+ ? AndNode.create(havingNode.having, operation)
23
+ : OrNode.create(havingNode.having, operation),
24
24
  });
25
25
  },
26
26
  });
@@ -1,21 +1,17 @@
1
- import { AggregateFunctionNode } from './aggregate-function-node.js';
2
1
  import { ColumnNode } from './column-node.js';
3
2
  import { ExplainNode } from './explain-node.js';
4
3
  import { OnConflictNode } from './on-conflict-node.js';
5
4
  import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
6
5
  import { OperationNode } from './operation-node.js';
7
- import { RawNode } from './raw-node.js';
8
6
  import { ReturningNode } from './returning-node.js';
9
- import { SelectQueryNode } from './select-query-node.js';
10
7
  import { TableNode } from './table-node.js';
11
- import { ValuesNode } from './values-node.js';
12
8
  import { WithNode } from './with-node.js';
13
9
  export declare type InsertQueryNodeProps = Omit<InsertQueryNode, 'kind' | 'into'>;
14
10
  export interface InsertQueryNode extends OperationNode {
15
11
  readonly kind: 'InsertQueryNode';
16
12
  readonly into: TableNode;
17
13
  readonly columns?: ReadonlyArray<ColumnNode>;
18
- readonly values?: ValuesNode | SelectQueryNode | RawNode | AggregateFunctionNode;
14
+ readonly values?: OperationNode;
19
15
  readonly returning?: ReturningNode;
20
16
  readonly onConflict?: OnConflictNode;
21
17
  readonly onDuplicateKey?: OnDuplicateKeyNode;
@@ -1,14 +1,10 @@
1
- import { AliasNode } from './alias-node.js';
2
1
  import { OnNode } from './on-node.js';
3
- import { FilterExpressionNode } from './operation-node-utils.js';
4
2
  import { OperationNode } from './operation-node.js';
5
- import { TableNode } from './table-node.js';
6
- export declare type JoinTableNode = TableNode | AliasNode;
7
3
  export declare type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin' | 'LateralInnerJoin' | 'LateralLeftJoin';
8
4
  export interface JoinNode extends OperationNode {
9
5
  readonly kind: 'JoinNode';
10
6
  readonly joinType: JoinType;
11
- readonly table: JoinTableNode;
7
+ readonly table: OperationNode;
12
8
  readonly on?: OnNode;
13
9
  }
14
10
  /**
@@ -16,8 +12,8 @@ export interface JoinNode extends OperationNode {
16
12
  */
17
13
  export declare const JoinNode: Readonly<{
18
14
  is(node: OperationNode): node is JoinNode;
19
- create(joinType: JoinType, table: JoinTableNode): JoinNode;
20
- createWithOn(joinType: JoinType, table: JoinTableNode, on: FilterExpressionNode): JoinNode;
21
- cloneWithOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
22
- cloneWithOrOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
15
+ create(joinType: JoinType, table: OperationNode): JoinNode;
16
+ createWithOn(joinType: JoinType, table: OperationNode, on: OperationNode): JoinNode;
17
+ cloneWithOn(joinNode: JoinNode, operation: OperationNode): JoinNode;
18
+ cloneWithOrOn(joinNode: JoinNode, operation: OperationNode): JoinNode;
23
19
  }>;
@@ -24,20 +24,20 @@ export const JoinNode = freeze({
24
24
  on: OnNode.create(on),
25
25
  });
26
26
  },
27
- cloneWithOn(joinNode, filter) {
27
+ cloneWithOn(joinNode, operation) {
28
28
  return freeze({
29
29
  ...joinNode,
30
30
  on: joinNode.on
31
- ? OnNode.cloneWithFilter(joinNode.on, 'And', filter)
32
- : OnNode.create(filter),
31
+ ? OnNode.cloneWithOperation(joinNode.on, 'And', operation)
32
+ : OnNode.create(operation),
33
33
  });
34
34
  },
35
- cloneWithOrOn(joinNode, filter) {
35
+ cloneWithOrOn(joinNode, operation) {
36
36
  return freeze({
37
37
  ...joinNode,
38
38
  on: joinNode.on
39
- ? OnNode.cloneWithFilter(joinNode.on, 'Or', filter)
40
- : OnNode.create(filter),
39
+ ? OnNode.cloneWithOperation(joinNode.on, 'Or', operation)
40
+ : OnNode.create(operation),
41
41
  });
42
42
  },
43
43
  });
@@ -1,16 +1,14 @@
1
1
  import { ColumnNode } from './column-node.js';
2
2
  import { ColumnUpdateNode } from './column-update-node.js';
3
3
  import { IdentifierNode } from './identifier-node.js';
4
- import { FilterExpressionNode } from './operation-node-utils.js';
5
4
  import { OperationNode } from './operation-node.js';
6
- import { RawNode } from './raw-node.js';
7
5
  import { WhereNode } from './where-node.js';
8
6
  export declare type OnConflictNodeProps = Omit<OnConflictNode, 'kind' | 'indexWhere' | 'updateWhere'>;
9
7
  export interface OnConflictNode extends OperationNode {
10
8
  readonly kind: 'OnConflictNode';
11
9
  readonly columns?: ReadonlyArray<ColumnNode>;
12
10
  readonly constraint?: IdentifierNode;
13
- readonly indexExpression?: RawNode;
11
+ readonly indexExpression?: OperationNode;
14
12
  readonly indexWhere?: WhereNode;
15
13
  readonly updates?: ReadonlyArray<ColumnUpdateNode>;
16
14
  readonly updateWhere?: WhereNode;
@@ -23,8 +21,8 @@ export declare const OnConflictNode: Readonly<{
23
21
  is(node: OperationNode): node is OnConflictNode;
24
22
  create(): OnConflictNode;
25
23
  cloneWith(node: OnConflictNode, props: OnConflictNodeProps): OnConflictNode;
26
- cloneWithIndexWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
27
- cloneWithIndexOrWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
28
- cloneWithUpdateWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
29
- cloneWithUpdateOrWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
24
+ cloneWithIndexWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
25
+ cloneWithIndexOrWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
26
+ cloneWithUpdateWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
27
+ cloneWithUpdateOrWhere(node: OnConflictNode, operation: OperationNode): OnConflictNode;
30
28
  }>;
@@ -19,36 +19,36 @@ export const OnConflictNode = freeze({
19
19
  ...props,
20
20
  });
21
21
  },
22
- cloneWithIndexWhere(node, filter) {
22
+ cloneWithIndexWhere(node, operation) {
23
23
  return freeze({
24
24
  ...node,
25
25
  indexWhere: node.indexWhere
26
- ? WhereNode.cloneWithFilter(node.indexWhere, 'And', filter)
27
- : WhereNode.create(filter),
26
+ ? WhereNode.cloneWithOperation(node.indexWhere, 'And', operation)
27
+ : WhereNode.create(operation),
28
28
  });
29
29
  },
30
- cloneWithIndexOrWhere(node, filter) {
30
+ cloneWithIndexOrWhere(node, operation) {
31
31
  return freeze({
32
32
  ...node,
33
33
  indexWhere: node.indexWhere
34
- ? WhereNode.cloneWithFilter(node.indexWhere, 'Or', filter)
35
- : WhereNode.create(filter),
34
+ ? WhereNode.cloneWithOperation(node.indexWhere, 'Or', operation)
35
+ : WhereNode.create(operation),
36
36
  });
37
37
  },
38
- cloneWithUpdateWhere(node, filter) {
38
+ cloneWithUpdateWhere(node, operation) {
39
39
  return freeze({
40
40
  ...node,
41
41
  updateWhere: node.updateWhere
42
- ? WhereNode.cloneWithFilter(node.updateWhere, 'And', filter)
43
- : WhereNode.create(filter),
42
+ ? WhereNode.cloneWithOperation(node.updateWhere, 'And', operation)
43
+ : WhereNode.create(operation),
44
44
  });
45
45
  },
46
- cloneWithUpdateOrWhere(node, filter) {
46
+ cloneWithUpdateOrWhere(node, operation) {
47
47
  return freeze({
48
48
  ...node,
49
49
  updateWhere: node.updateWhere
50
- ? WhereNode.cloneWithFilter(node.updateWhere, 'Or', filter)
51
- : WhereNode.create(filter),
50
+ ? WhereNode.cloneWithOperation(node.updateWhere, 'Or', operation)
51
+ : WhereNode.create(operation),
52
52
  });
53
53
  },
54
54
  });
@@ -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
  }>;
@@ -15,12 +15,12 @@ export const OnNode = freeze({
15
15
  on: filter,
16
16
  });
17
17
  },
18
- cloneWithFilter(onNode, op, filter) {
18
+ cloneWithOperation(onNode, operator, operation) {
19
19
  return freeze({
20
20
  ...onNode,
21
- on: op === 'And'
22
- ? AndNode.create(onNode.on, filter)
23
- : OrNode.create(onNode.on, filter),
21
+ on: operator === 'And'
22
+ ? AndNode.create(onNode.on, operation)
23
+ : OrNode.create(onNode.on, operation),
24
24
  });
25
25
  },
26
26
  });
@@ -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;
@@ -44,7 +44,6 @@ export class OperationNodeTransformer {
44
44
  TableNode: this.transformTable.bind(this),
45
45
  FromNode: this.transformFrom.bind(this),
46
46
  SelectAllNode: this.transformSelectAll.bind(this),
47
- FilterNode: this.transformFilter.bind(this),
48
47
  AndNode: this.transformAnd.bind(this),
49
48
  OrNode: this.transformOr.bind(this),
50
49
  ValueNode: this.transformValue.bind(this),
@@ -109,6 +108,8 @@ export class OperationNodeTransformer {
109
108
  PartitionByNode: this.transformPartitionBy.bind(this),
110
109
  PartitionByItemNode: this.transformPartitionByItem.bind(this),
111
110
  SetOperationNode: this.transformSetOperation.bind(this),
111
+ BinaryOperationNode: this.transformBinaryOperation.bind(this),
112
+ UnaryOperationNode: this.transformUnaryOperation.bind(this),
112
113
  });
113
114
  transformNode(node) {
114
115
  if (!node) {
@@ -133,7 +134,7 @@ export class OperationNodeTransformer {
133
134
  kind: 'SelectQueryNode',
134
135
  from: this.transformNode(node.from),
135
136
  selections: this.transformNodeList(node.selections),
136
- distinctOnSelections: this.transformNodeList(node.distinctOnSelections),
137
+ distinctOn: this.transformNodeList(node.distinctOn),
137
138
  joins: this.transformNodeList(node.joins),
138
139
  groupBy: this.transformNode(node.groupBy),
139
140
  orderBy: this.transformNode(node.orderBy),
@@ -186,14 +187,6 @@ export class OperationNodeTransformer {
186
187
  column: this.transformNode(node.column),
187
188
  });
188
189
  }
189
- transformFilter(node) {
190
- return requireAllProps({
191
- kind: 'FilterNode',
192
- left: this.transformNode(node.left),
193
- op: this.transformNode(node.op),
194
- right: this.transformNode(node.right),
195
- });
196
- }
197
190
  transformAnd(node) {
198
191
  return requireAllProps({
199
192
  kind: 'AndNode',
@@ -308,6 +301,8 @@ export class OperationNodeTransformer {
308
301
  defaultTo: this.transformNode(node.defaultTo),
309
302
  check: this.transformNode(node.check),
310
303
  generated: this.transformNode(node.generated),
304
+ frontModifiers: this.transformNodeList(node.frontModifiers),
305
+ endModifiers: this.transformNodeList(node.endModifiers),
311
306
  });
312
307
  }
313
308
  transformAddColumn(node) {
@@ -520,11 +515,7 @@ export class OperationNodeTransformer {
520
515
  table: this.transformNode(node.table),
521
516
  renameTo: this.transformNode(node.renameTo),
522
517
  setSchema: this.transformNode(node.setSchema),
523
- renameColumn: this.transformNode(node.renameColumn),
524
- addColumn: this.transformNode(node.addColumn),
525
- dropColumn: this.transformNode(node.dropColumn),
526
- alterColumn: this.transformNode(node.alterColumn),
527
- modifyColumn: this.transformNode(node.modifyColumn),
518
+ columnAlterations: this.transformNodeList(node.columnAlterations),
528
519
  addConstraint: this.transformNode(node.addConstraint),
529
520
  dropConstraint: this.transformNode(node.dropConstraint),
530
521
  });
@@ -657,6 +648,7 @@ export class OperationNodeTransformer {
657
648
  kind: 'AggregateFunctionNode',
658
649
  column: this.transformNode(node.column),
659
650
  distinct: node.distinct,
651
+ filter: this.transformNode(node.filter),
660
652
  func: node.func,
661
653
  over: this.transformNode(node.over),
662
654
  });
@@ -680,6 +672,21 @@ export class OperationNodeTransformer {
680
672
  partitionBy: this.transformNode(node.partitionBy),
681
673
  });
682
674
  }
675
+ transformBinaryOperation(node) {
676
+ return requireAllProps({
677
+ kind: 'BinaryOperationNode',
678
+ leftOperand: this.transformNode(node.leftOperand),
679
+ operator: this.transformNode(node.operator),
680
+ rightOperand: this.transformNode(node.rightOperand),
681
+ });
682
+ }
683
+ transformUnaryOperation(node) {
684
+ return requireAllProps({
685
+ kind: 'UnaryOperationNode',
686
+ operator: this.transformNode(node.operator),
687
+ operand: this.transformNode(node.operand),
688
+ });
689
+ }
683
690
  transformDataType(node) {
684
691
  // An Object.freezed leaf node. No need to clone.
685
692
  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
  }
@@ -17,7 +17,6 @@ export class OperationNodeVisitor {
17
17
  TableNode: this.visitTable.bind(this),
18
18
  FromNode: this.visitFrom.bind(this),
19
19
  SelectAllNode: this.visitSelectAll.bind(this),
20
- FilterNode: this.visitFilter.bind(this),
21
20
  AndNode: this.visitAnd.bind(this),
22
21
  OrNode: this.visitOr.bind(this),
23
22
  ValueNode: this.visitValue.bind(this),
@@ -82,6 +81,8 @@ export class OperationNodeVisitor {
82
81
  PartitionByNode: this.visitPartitionBy.bind(this),
83
82
  PartitionByItemNode: this.visitPartitionByItem.bind(this),
84
83
  SetOperationNode: this.visitSetOperation.bind(this),
84
+ BinaryOperationNode: this.visitBinaryOperation.bind(this),
85
+ UnaryOperationNode: this.visitUnaryOperation.bind(this),
85
86
  });
86
87
  visitNode = (node) => {
87
88
  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,6 +1,6 @@
1
1
  /// <reference types="./operator-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
- export const OPERATORS = [
3
+ export const COMPARISON_OPERATORS = [
4
4
  '=',
5
5
  '==',
6
6
  '!=',
@@ -20,7 +20,6 @@ export const OPERATORS = [
20
20
  '@>',
21
21
  '<@',
22
22
  '?',
23
- '?',
24
23
  '?&',
25
24
  '!<',
26
25
  '!>',
@@ -29,8 +28,6 @@ export const OPERATORS = [
29
28
  '~',
30
29
  '~*',
31
30
  '!~*',
32
- 'exists',
33
- 'not exists',
34
31
  '&&',
35
32
  '||',
36
33
  '@@',
@@ -38,6 +35,7 @@ export const OPERATORS = [
38
35
  '!!',
39
36
  '<->',
40
37
  ];
38
+ export const UNARY_FILTER_OPERATORS = ['exists', 'not exists'];
41
39
  /**
42
40
  * @internal
43
41
  */
@@ -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
  }>;
@@ -16,20 +16,20 @@ export const QueryNode = freeze({
16
16
  UpdateQueryNode.is(node) ||
17
17
  SelectQueryNode.is(node));
18
18
  },
19
- cloneWithWhere(node, filter) {
19
+ cloneWithWhere(node, operation) {
20
20
  return freeze({
21
21
  ...node,
22
22
  where: node.where
23
- ? WhereNode.cloneWithFilter(node.where, 'And', filter)
24
- : WhereNode.create(filter),
23
+ ? WhereNode.cloneWithOperation(node.where, 'And', operation)
24
+ : WhereNode.create(operation),
25
25
  });
26
26
  },
27
- cloneWithOrWhere(node, filter) {
27
+ cloneWithOrWhere(node, operation) {
28
28
  return freeze({
29
29
  ...node,
30
30
  where: node.where
31
- ? WhereNode.cloneWithFilter(node.where, 'Or', filter)
32
- : WhereNode.create(filter),
31
+ ? WhereNode.cloneWithOperation(node.where, 'Or', operation)
32
+ : WhereNode.create(operation),
33
33
  });
34
34
  },
35
35
  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
  }>;
@@ -13,7 +13,7 @@ export const SelectModifierNode = freeze({
13
13
  modifier,
14
14
  });
15
15
  },
16
- createWithRaw(modifier) {
16
+ createWithExpression(modifier) {
17
17
  return freeze({
18
18
  kind: 'SelectModifierNode',
19
19
  rawModifier: modifier,