kysely 0.24.2 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/README.md +31 -567
  2. package/dist/cjs/dialect/database-introspector.d.ts +1 -1
  3. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +5 -1
  5. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -1
  7. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
  8. package/dist/cjs/driver/database-connection.d.ts +6 -0
  9. package/dist/cjs/driver/driver.d.ts +1 -1
  10. package/dist/cjs/driver/runtime-driver.js +6 -6
  11. package/dist/cjs/dynamic/dynamic.d.ts +1 -1
  12. package/dist/cjs/dynamic/dynamic.js +1 -1
  13. package/dist/cjs/expression/expression-builder.d.ts +263 -109
  14. package/dist/cjs/expression/expression-builder.js +38 -7
  15. package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
  16. package/dist/cjs/expression/expression-wrapper.js +70 -2
  17. package/dist/cjs/helpers/mysql.d.ts +3 -3
  18. package/dist/cjs/helpers/mysql.js +2 -2
  19. package/dist/cjs/helpers/postgres.d.ts +31 -19
  20. package/dist/cjs/helpers/postgres.js +30 -18
  21. package/dist/cjs/index.d.ts +10 -0
  22. package/dist/cjs/index.js +10 -0
  23. package/dist/cjs/kysely.d.ts +42 -15
  24. package/dist/cjs/kysely.js +41 -10
  25. package/dist/cjs/migration/file-migration-provider.js +2 -2
  26. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -7
  27. package/dist/cjs/operation-node/aggregate-function-node.js +1 -1
  28. package/dist/cjs/operation-node/alter-column-node.d.ts +3 -5
  29. package/dist/cjs/operation-node/alter-column-node.js +2 -7
  30. package/dist/cjs/operation-node/alter-table-node.d.ts +3 -3
  31. package/dist/cjs/operation-node/alter-table-node.js +1 -2
  32. package/dist/cjs/operation-node/case-node.d.ts +19 -0
  33. package/dist/cjs/operation-node/case-node.js +42 -0
  34. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  36. package/dist/cjs/operation-node/create-index-node.d.ts +4 -3
  37. package/dist/cjs/operation-node/create-index-node.js +6 -0
  38. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/create-table-node.d.ts +2 -2
  40. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/create-view-node.d.ts +1 -1
  42. package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
  43. package/dist/cjs/operation-node/drop-constraint-node.d.ts +1 -1
  44. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
  45. package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
  47. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  48. package/dist/cjs/operation-node/drop-view-node.d.ts +1 -1
  49. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
  50. package/dist/cjs/operation-node/generated-node.d.ts +1 -1
  51. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/join-node.d.ts +1 -2
  53. package/dist/cjs/operation-node/join-node.js +0 -8
  54. package/dist/cjs/operation-node/json-operator-chain-node.d.ts +16 -0
  55. package/dist/cjs/operation-node/json-operator-chain-node.js +25 -0
  56. package/dist/cjs/operation-node/json-path-leg-node.d.ts +14 -0
  57. package/dist/cjs/operation-node/json-path-leg-node.js +19 -0
  58. package/dist/cjs/operation-node/json-path-node.d.ts +16 -0
  59. package/dist/cjs/operation-node/json-path-node.js +25 -0
  60. package/dist/cjs/operation-node/json-reference-node.d.ts +17 -0
  61. package/dist/cjs/operation-node/json-reference-node.js +25 -0
  62. package/dist/cjs/operation-node/on-conflict-node.d.ts +1 -1
  63. package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +1 -1
  64. package/dist/cjs/operation-node/operation-node-transformer.d.ts +12 -0
  65. package/dist/cjs/operation-node/operation-node-transformer.js +53 -3
  66. package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -0
  67. package/dist/cjs/operation-node/operation-node-visitor.js +6 -0
  68. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  69. package/dist/cjs/operation-node/operator-node.d.ts +13 -9
  70. package/dist/cjs/operation-node/operator-node.js +12 -2
  71. package/dist/cjs/operation-node/query-node.d.ts +9 -10
  72. package/dist/cjs/operation-node/query-node.js +0 -8
  73. package/dist/cjs/operation-node/reference-node.d.ts +2 -2
  74. package/dist/cjs/operation-node/reference-node.js +1 -1
  75. package/dist/cjs/operation-node/references-node.d.ts +1 -1
  76. package/dist/cjs/operation-node/select-modifier-node.d.ts +1 -1
  77. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  78. package/dist/cjs/operation-node/select-query-node.js +0 -8
  79. package/dist/cjs/operation-node/selection-node.d.ts +1 -1
  80. package/dist/cjs/operation-node/set-operation-node.d.ts +1 -1
  81. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +1 -1
  82. package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
  83. package/dist/cjs/operation-node/values-node.d.ts +1 -1
  84. package/dist/cjs/operation-node/when-node.d.ts +14 -0
  85. package/dist/cjs/operation-node/when-node.js +24 -0
  86. package/dist/cjs/operation-node/with-node.d.ts +1 -1
  87. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -11
  88. package/dist/cjs/parser/binary-operation-parser.js +40 -103
  89. package/dist/cjs/parser/coalesce-parser.d.ts +1 -1
  90. package/dist/cjs/parser/data-type-parser.d.ts +1 -1
  91. package/dist/cjs/parser/default-value-parser.d.ts +1 -1
  92. package/dist/cjs/parser/expression-parser.d.ts +6 -5
  93. package/dist/cjs/parser/group-by-parser.d.ts +2 -2
  94. package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
  95. package/dist/cjs/parser/join-parser.d.ts +4 -4
  96. package/dist/cjs/parser/order-by-parser.d.ts +4 -3
  97. package/dist/cjs/parser/order-by-parser.js +5 -1
  98. package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
  99. package/dist/cjs/parser/reference-parser.d.ts +16 -8
  100. package/dist/cjs/parser/reference-parser.js +43 -16
  101. package/dist/cjs/parser/returning-parser.d.ts +2 -2
  102. package/dist/cjs/parser/select-parser.d.ts +9 -9
  103. package/dist/cjs/parser/table-parser.d.ts +14 -13
  104. package/dist/cjs/parser/unary-operation-parser.d.ts +1 -1
  105. package/dist/cjs/parser/update-set-parser.d.ts +3 -3
  106. package/dist/cjs/parser/update-set-parser.js +1 -3
  107. package/dist/cjs/parser/value-parser.d.ts +4 -4
  108. package/dist/cjs/parser/with-parser.d.ts +14 -9
  109. package/dist/cjs/plugin/camel-case/camel-case.d.ts +1 -1
  110. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  111. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +32 -0
  112. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +22 -6
  113. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -38
  114. package/dist/cjs/query-builder/aggregate-function-builder.js +4 -59
  115. package/dist/cjs/query-builder/case-builder.d.ts +111 -0
  116. package/dist/cjs/query-builder/case-builder.js +75 -0
  117. package/dist/cjs/query-builder/delete-query-builder.d.ts +130 -63
  118. package/dist/cjs/query-builder/delete-query-builder.js +42 -59
  119. package/dist/cjs/query-builder/delete-result.d.ts +1 -2
  120. package/dist/cjs/query-builder/delete-result.js +2 -8
  121. package/dist/cjs/query-builder/function-module.d.ts +78 -69
  122. package/dist/cjs/query-builder/function-module.js +12 -16
  123. package/dist/cjs/query-builder/having-interface.d.ts +2 -35
  124. package/dist/cjs/query-builder/insert-query-builder.d.ts +99 -47
  125. package/dist/cjs/query-builder/insert-query-builder.js +57 -26
  126. package/dist/cjs/query-builder/insert-result.d.ts +3 -4
  127. package/dist/cjs/query-builder/insert-result.js +5 -14
  128. package/dist/cjs/query-builder/join-builder.d.ts +2 -35
  129. package/dist/cjs/query-builder/join-builder.js +1 -56
  130. package/dist/cjs/query-builder/json-path-builder.d.ts +212 -0
  131. package/dist/cjs/query-builder/json-path-builder.js +191 -0
  132. package/dist/cjs/query-builder/no-result-error.d.ts +1 -1
  133. package/dist/cjs/query-builder/on-conflict-builder.d.ts +144 -73
  134. package/dist/cjs/query-builder/on-conflict-builder.js +2 -111
  135. package/dist/cjs/query-builder/over-builder.d.ts +2 -2
  136. package/dist/cjs/query-builder/over-builder.js +1 -1
  137. package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
  138. package/dist/cjs/query-builder/select-query-builder.d.ts +184 -138
  139. package/dist/cjs/query-builder/select-query-builder.js +64 -130
  140. package/dist/cjs/query-builder/update-query-builder.d.ts +143 -71
  141. package/dist/cjs/query-builder/update-query-builder.js +47 -60
  142. package/dist/cjs/query-builder/update-result.d.ts +3 -3
  143. package/dist/cjs/query-builder/update-result.js +5 -9
  144. package/dist/cjs/query-builder/where-interface.d.ts +73 -38
  145. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  146. package/dist/cjs/query-compiler/compiled-query.js +2 -2
  147. package/dist/cjs/query-compiler/default-query-compiler.d.ts +12 -0
  148. package/dist/cjs/query-compiler/default-query-compiler.js +67 -5
  149. package/dist/cjs/query-compiler/query-compiler.d.ts +1 -1
  150. package/dist/cjs/query-creator.d.ts +4 -2
  151. package/dist/cjs/schema/alter-column-builder.d.ts +13 -7
  152. package/dist/cjs/schema/alter-column-builder.js +20 -22
  153. package/dist/cjs/schema/alter-table-builder.d.ts +0 -4
  154. package/dist/cjs/schema/alter-table-builder.js +2 -9
  155. package/dist/cjs/schema/column-definition-builder.d.ts +1 -1
  156. package/dist/cjs/schema/column-definition-builder.js +1 -2
  157. package/dist/cjs/schema/create-index-builder.d.ts +49 -7
  158. package/dist/cjs/schema/create-index-builder.js +52 -14
  159. package/dist/cjs/schema/create-table-builder.d.ts +2 -6
  160. package/dist/cjs/schema/create-table-builder.js +0 -6
  161. package/dist/cjs/schema/schema.d.ts +1 -2
  162. package/dist/cjs/schema/schema.js +2 -3
  163. package/dist/cjs/util/column-type.d.ts +21 -16
  164. package/dist/cjs/util/explainable.d.ts +1 -1
  165. package/dist/cjs/util/infer-result.d.ts +2 -2
  166. package/dist/cjs/util/log.d.ts +6 -6
  167. package/dist/cjs/util/log.js +4 -4
  168. package/dist/cjs/util/object-utils.d.ts +2 -1
  169. package/dist/cjs/util/require-all-props.d.ts +1 -1
  170. package/dist/cjs/util/type-utils.d.ts +54 -40
  171. package/dist/esm/dialect/database-introspector.d.ts +1 -1
  172. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -1
  173. package/dist/esm/dialect/mysql/mysql-driver.js +5 -1
  174. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  175. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
  176. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
  177. package/dist/esm/driver/database-connection.d.ts +6 -0
  178. package/dist/esm/driver/driver.d.ts +1 -1
  179. package/dist/esm/driver/runtime-driver.js +6 -6
  180. package/dist/esm/dynamic/dynamic.d.ts +1 -1
  181. package/dist/esm/dynamic/dynamic.js +1 -1
  182. package/dist/esm/expression/expression-builder.d.ts +263 -109
  183. package/dist/esm/expression/expression-builder.js +40 -9
  184. package/dist/esm/expression/expression-wrapper.d.ts +296 -5
  185. package/dist/esm/expression/expression-wrapper.js +67 -1
  186. package/dist/esm/helpers/mysql.d.ts +3 -3
  187. package/dist/esm/helpers/mysql.js +2 -2
  188. package/dist/esm/helpers/postgres.d.ts +31 -19
  189. package/dist/esm/helpers/postgres.js +30 -18
  190. package/dist/esm/index.d.ts +10 -0
  191. package/dist/esm/index.js +10 -0
  192. package/dist/esm/kysely.d.ts +42 -15
  193. package/dist/esm/kysely.js +42 -11
  194. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -7
  195. package/dist/esm/operation-node/aggregate-function-node.js +1 -1
  196. package/dist/esm/operation-node/alter-column-node.d.ts +3 -5
  197. package/dist/esm/operation-node/alter-column-node.js +2 -7
  198. package/dist/esm/operation-node/alter-table-node.d.ts +3 -3
  199. package/dist/esm/operation-node/alter-table-node.js +1 -2
  200. package/dist/esm/operation-node/case-node.d.ts +19 -0
  201. package/dist/esm/operation-node/case-node.js +40 -0
  202. package/dist/esm/operation-node/column-definition-node.d.ts +1 -1
  203. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  204. package/dist/esm/operation-node/create-index-node.d.ts +4 -3
  205. package/dist/esm/operation-node/create-index-node.js +6 -0
  206. package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
  207. package/dist/esm/operation-node/create-table-node.d.ts +2 -2
  208. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  209. package/dist/esm/operation-node/create-view-node.d.ts +1 -1
  210. package/dist/esm/operation-node/data-type-node.d.ts +2 -2
  211. package/dist/esm/operation-node/drop-constraint-node.d.ts +1 -1
  212. package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
  213. package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
  214. package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
  215. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  216. package/dist/esm/operation-node/drop-view-node.d.ts +1 -1
  217. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
  218. package/dist/esm/operation-node/generated-node.d.ts +1 -1
  219. package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
  220. package/dist/esm/operation-node/join-node.d.ts +1 -2
  221. package/dist/esm/operation-node/join-node.js +0 -8
  222. package/dist/esm/operation-node/json-operator-chain-node.d.ts +16 -0
  223. package/dist/esm/operation-node/json-operator-chain-node.js +23 -0
  224. package/dist/esm/operation-node/json-path-leg-node.d.ts +14 -0
  225. package/dist/esm/operation-node/json-path-leg-node.js +17 -0
  226. package/dist/esm/operation-node/json-path-node.d.ts +16 -0
  227. package/dist/esm/operation-node/json-path-node.js +23 -0
  228. package/dist/esm/operation-node/json-reference-node.d.ts +17 -0
  229. package/dist/esm/operation-node/json-reference-node.js +23 -0
  230. package/dist/esm/operation-node/on-conflict-node.d.ts +1 -1
  231. package/dist/esm/operation-node/on-duplicate-key-node.d.ts +1 -1
  232. package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -0
  233. package/dist/esm/operation-node/operation-node-transformer.js +53 -3
  234. package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -0
  235. package/dist/esm/operation-node/operation-node-visitor.js +6 -0
  236. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  237. package/dist/esm/operation-node/operator-node.d.ts +13 -9
  238. package/dist/esm/operation-node/operator-node.js +10 -1
  239. package/dist/esm/operation-node/query-node.d.ts +9 -10
  240. package/dist/esm/operation-node/query-node.js +0 -8
  241. package/dist/esm/operation-node/reference-node.d.ts +2 -2
  242. package/dist/esm/operation-node/reference-node.js +1 -1
  243. package/dist/esm/operation-node/references-node.d.ts +1 -1
  244. package/dist/esm/operation-node/select-modifier-node.d.ts +1 -1
  245. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  246. package/dist/esm/operation-node/select-query-node.js +0 -8
  247. package/dist/esm/operation-node/selection-node.d.ts +1 -1
  248. package/dist/esm/operation-node/set-operation-node.d.ts +1 -1
  249. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +1 -1
  250. package/dist/esm/operation-node/update-query-node.d.ts +1 -1
  251. package/dist/esm/operation-node/values-node.d.ts +1 -1
  252. package/dist/esm/operation-node/when-node.d.ts +14 -0
  253. package/dist/esm/operation-node/when-node.js +22 -0
  254. package/dist/esm/operation-node/with-node.d.ts +1 -1
  255. package/dist/esm/parser/binary-operation-parser.d.ts +9 -11
  256. package/dist/esm/parser/binary-operation-parser.js +38 -99
  257. package/dist/esm/parser/coalesce-parser.d.ts +1 -1
  258. package/dist/esm/parser/data-type-parser.d.ts +1 -1
  259. package/dist/esm/parser/default-value-parser.d.ts +1 -1
  260. package/dist/esm/parser/expression-parser.d.ts +6 -5
  261. package/dist/esm/parser/group-by-parser.d.ts +2 -2
  262. package/dist/esm/parser/insert-values-parser.d.ts +4 -4
  263. package/dist/esm/parser/join-parser.d.ts +4 -4
  264. package/dist/esm/parser/order-by-parser.d.ts +4 -3
  265. package/dist/esm/parser/order-by-parser.js +3 -0
  266. package/dist/esm/parser/partition-by-parser.d.ts +2 -2
  267. package/dist/esm/parser/reference-parser.d.ts +16 -8
  268. package/dist/esm/parser/reference-parser.js +40 -15
  269. package/dist/esm/parser/returning-parser.d.ts +2 -2
  270. package/dist/esm/parser/select-parser.d.ts +9 -9
  271. package/dist/esm/parser/table-parser.d.ts +14 -13
  272. package/dist/esm/parser/unary-operation-parser.d.ts +1 -1
  273. package/dist/esm/parser/update-set-parser.d.ts +3 -3
  274. package/dist/esm/parser/update-set-parser.js +2 -4
  275. package/dist/esm/parser/value-parser.d.ts +4 -4
  276. package/dist/esm/parser/with-parser.d.ts +14 -9
  277. package/dist/esm/plugin/camel-case/camel-case.d.ts +1 -1
  278. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  279. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +29 -0
  280. package/dist/esm/plugin/with-schema/with-schema-transformer.js +22 -6
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -38
  282. package/dist/esm/query-builder/aggregate-function-builder.js +5 -60
  283. package/dist/esm/query-builder/case-builder.d.ts +111 -0
  284. package/dist/esm/query-builder/case-builder.js +69 -0
  285. package/dist/esm/query-builder/delete-query-builder.d.ts +130 -63
  286. package/dist/esm/query-builder/delete-query-builder.js +43 -60
  287. package/dist/esm/query-builder/delete-result.d.ts +1 -2
  288. package/dist/esm/query-builder/delete-result.js +2 -8
  289. package/dist/esm/query-builder/function-module.d.ts +78 -69
  290. package/dist/esm/query-builder/function-module.js +13 -17
  291. package/dist/esm/query-builder/having-interface.d.ts +2 -35
  292. package/dist/esm/query-builder/insert-query-builder.d.ts +99 -47
  293. package/dist/esm/query-builder/insert-query-builder.js +57 -26
  294. package/dist/esm/query-builder/insert-result.d.ts +3 -4
  295. package/dist/esm/query-builder/insert-result.js +5 -14
  296. package/dist/esm/query-builder/join-builder.d.ts +2 -35
  297. package/dist/esm/query-builder/join-builder.js +2 -57
  298. package/dist/esm/query-builder/json-path-builder.d.ts +212 -0
  299. package/dist/esm/query-builder/json-path-builder.js +186 -0
  300. package/dist/esm/query-builder/no-result-error.d.ts +1 -1
  301. package/dist/esm/query-builder/on-conflict-builder.d.ts +144 -73
  302. package/dist/esm/query-builder/on-conflict-builder.js +3 -112
  303. package/dist/esm/query-builder/over-builder.d.ts +2 -2
  304. package/dist/esm/query-builder/over-builder.js +1 -1
  305. package/dist/esm/query-builder/returning-interface.d.ts +1 -1
  306. package/dist/esm/query-builder/select-query-builder.d.ts +184 -138
  307. package/dist/esm/query-builder/select-query-builder.js +65 -131
  308. package/dist/esm/query-builder/update-query-builder.d.ts +143 -71
  309. package/dist/esm/query-builder/update-query-builder.js +48 -61
  310. package/dist/esm/query-builder/update-result.d.ts +3 -3
  311. package/dist/esm/query-builder/update-result.js +5 -9
  312. package/dist/esm/query-builder/where-interface.d.ts +73 -38
  313. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  314. package/dist/esm/query-compiler/compiled-query.js +2 -2
  315. package/dist/esm/query-compiler/default-query-compiler.d.ts +12 -0
  316. package/dist/esm/query-compiler/default-query-compiler.js +67 -5
  317. package/dist/esm/query-compiler/query-compiler.d.ts +1 -1
  318. package/dist/esm/query-creator.d.ts +4 -2
  319. package/dist/esm/schema/alter-column-builder.d.ts +13 -7
  320. package/dist/esm/schema/alter-column-builder.js +20 -22
  321. package/dist/esm/schema/alter-table-builder.d.ts +0 -4
  322. package/dist/esm/schema/alter-table-builder.js +2 -9
  323. package/dist/esm/schema/column-definition-builder.d.ts +1 -1
  324. package/dist/esm/schema/column-definition-builder.js +1 -2
  325. package/dist/esm/schema/create-index-builder.d.ts +49 -7
  326. package/dist/esm/schema/create-index-builder.js +54 -16
  327. package/dist/esm/schema/create-table-builder.d.ts +2 -6
  328. package/dist/esm/schema/create-table-builder.js +0 -6
  329. package/dist/esm/schema/schema.d.ts +1 -2
  330. package/dist/esm/schema/schema.js +2 -3
  331. package/dist/esm/util/column-type.d.ts +21 -16
  332. package/dist/esm/util/explainable.d.ts +1 -1
  333. package/dist/esm/util/infer-result.d.ts +2 -2
  334. package/dist/esm/util/log.d.ts +6 -6
  335. package/dist/esm/util/log.js +4 -4
  336. package/dist/esm/util/object-utils.d.ts +2 -1
  337. package/dist/esm/util/require-all-props.d.ts +1 -1
  338. package/dist/esm/util/type-utils.d.ts +54 -40
  339. package/package.json +25 -23
  340. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  341. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +0 -2
  342. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  343. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +0 -2
  344. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  345. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +0 -2
  346. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  347. package/dist/esm/query-builder/deprecated-having-expression-builder.js +0 -2
  348. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  349. package/dist/esm/query-builder/deprecated-on-expression-builder.js +0 -2
  350. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  351. package/dist/esm/query-builder/deprecated-where-expression-builder.js +0 -2
@@ -3,13 +3,13 @@ import { OperationNode } from './operation-node.js';
3
3
  import { RawNode } from './raw-node.js';
4
4
  import { TableNode } from './table-node.js';
5
5
  import { WhereNode } from './where-node.js';
6
- export declare type CreateIndexNodeProps = Omit<CreateIndexNode, 'kind' | 'name'>;
7
- export declare type IndexType = 'btree' | 'hash' | 'gist' | 'gin';
6
+ export type CreateIndexNodeProps = Omit<CreateIndexNode, 'kind' | 'name'>;
7
+ export type IndexType = 'btree' | 'hash' | 'gist' | 'gin';
8
8
  export interface CreateIndexNode extends OperationNode {
9
9
  readonly kind: 'CreateIndexNode';
10
10
  readonly name: IdentifierNode;
11
11
  readonly table?: TableNode;
12
- readonly expression?: OperationNode;
12
+ readonly columns?: OperationNode[];
13
13
  readonly unique?: boolean;
14
14
  readonly using?: RawNode;
15
15
  readonly ifNotExists?: boolean;
@@ -22,4 +22,5 @@ export declare const CreateIndexNode: Readonly<{
22
22
  is(node: OperationNode): node is CreateIndexNode;
23
23
  create(name: string): CreateIndexNode;
24
24
  cloneWith(node: CreateIndexNode, props: CreateIndexNodeProps): CreateIndexNode;
25
+ cloneWithColumns(node: CreateIndexNode, columns: OperationNode[]): CreateIndexNode;
25
26
  }>;
@@ -22,4 +22,10 @@ exports.CreateIndexNode = (0, object_utils_js_1.freeze)({
22
22
  ...props,
23
23
  });
24
24
  },
25
+ cloneWithColumns(node, columns) {
26
+ return (0, object_utils_js_1.freeze)({
27
+ ...node,
28
+ columns: [...(node.columns || []), ...columns],
29
+ });
30
+ },
25
31
  });
@@ -1,6 +1,6 @@
1
1
  import { IdentifierNode } from './identifier-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- export declare type CreateSchemaNodeParams = Omit<Partial<CreateSchemaNode>, 'kind' | 'schema'>;
3
+ export type CreateSchemaNodeParams = Omit<Partial<CreateSchemaNode>, 'kind' | 'schema'>;
4
4
  export interface CreateSchemaNode extends OperationNode {
5
5
  readonly kind: 'CreateSchemaNode';
6
6
  readonly schema: IdentifierNode;
@@ -4,8 +4,8 @@ import { ConstraintNode } from './constraint-node.js';
4
4
  import { ColumnDefinitionNode } from './column-definition-node.js';
5
5
  import { ArrayItemType } from '../util/type-utils.js';
6
6
  export declare const ON_COMMIT_ACTIONS: string[];
7
- export declare type OnCommitAction = ArrayItemType<typeof ON_COMMIT_ACTIONS>;
8
- export declare type CreateTableNodeParams = Omit<CreateTableNode, 'kind' | 'table' | 'columns' | 'constraints' | 'frontModifiers' | 'endModifiers'>;
7
+ export type OnCommitAction = ArrayItemType<typeof ON_COMMIT_ACTIONS>;
8
+ export type CreateTableNodeParams = Omit<CreateTableNode, 'kind' | 'table' | 'columns' | 'constraints' | 'frontModifiers' | 'endModifiers'>;
9
9
  export interface CreateTableNode extends OperationNode {
10
10
  readonly kind: 'CreateTableNode';
11
11
  readonly table: TableNode;
@@ -1,7 +1,7 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { SchemableIdentifierNode } from './schemable-identifier-node.js';
3
3
  import { ValueListNode } from './value-list-node.js';
4
- export declare type CreateTypeNodeParams = Omit<Partial<CreateTypeNode>, 'kind'>;
4
+ export type CreateTypeNodeParams = Omit<Partial<CreateTypeNode>, 'kind'>;
5
5
  export interface CreateTypeNode extends OperationNode {
6
6
  readonly kind: 'CreateTypeNode';
7
7
  readonly name: SchemableIdentifierNode;
@@ -3,7 +3,7 @@ import { OperationNode } from './operation-node.js';
3
3
  import { RawNode } from './raw-node.js';
4
4
  import { SchemableIdentifierNode } from './schemable-identifier-node.js';
5
5
  import { SelectQueryNode } from './select-query-node.js';
6
- export declare type CreateViewNodeParams = Omit<Partial<CreateViewNode>, 'kind' | 'name'>;
6
+ export type CreateViewNodeParams = Omit<Partial<CreateViewNode>, 'kind' | 'name'>;
7
7
  export interface CreateViewNode extends OperationNode {
8
8
  readonly kind: 'CreateViewNode';
9
9
  readonly name: SchemableIdentifierNode;
@@ -1,6 +1,6 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- export declare type ColumnDataType = 'varchar' | `varchar(${number})` | 'text' | 'integer' | 'int2' | 'int4' | 'int8' | 'bigint' | 'boolean' | 'real' | 'double precision' | 'float4' | 'float8' | 'decimal' | `decimal(${number}, ${number})` | 'numeric' | `numeric(${number}, ${number})` | 'binary' | 'date' | 'datetime' | `datetime(${number})` | 'time' | `time(${number})` | 'timetz' | `timetz(${number})` | 'timestamp' | `timestamp(${number})` | 'timestamptz' | `timestamptz(${number})` | 'serial' | 'bigserial' | 'uuid' | 'json' | 'jsonb' | 'blob';
3
- export declare type DataTypeParams = Omit<DataTypeNode, 'kind' | 'dataType'>;
2
+ export type ColumnDataType = 'varchar' | `varchar(${number})` | 'char' | `char(${number})` | 'text' | 'integer' | 'int2' | 'int4' | 'int8' | 'bigint' | 'boolean' | 'real' | 'double precision' | 'float4' | 'float8' | 'decimal' | `decimal(${number}, ${number})` | 'numeric' | `numeric(${number}, ${number})` | 'binary' | `binary(${number})` | 'bytea' | 'date' | 'datetime' | `datetime(${number})` | 'time' | `time(${number})` | 'timetz' | `timetz(${number})` | 'timestamp' | `timestamp(${number})` | 'timestamptz' | `timestamptz(${number})` | 'serial' | 'bigserial' | 'uuid' | 'json' | 'jsonb' | 'blob';
3
+ export type DataTypeParams = Omit<DataTypeNode, 'kind' | 'dataType'>;
4
4
  export interface DataTypeNode extends OperationNode {
5
5
  readonly kind: 'DataTypeNode';
6
6
  readonly dataType: ColumnDataType;
@@ -1,6 +1,6 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { IdentifierNode } from './identifier-node.js';
3
- export declare type DropConstraintNodeProps = Omit<DropConstraintNode, 'kind' | 'constraintName'>;
3
+ export type DropConstraintNodeProps = Omit<DropConstraintNode, 'kind' | 'constraintName'>;
4
4
  export interface DropConstraintNode extends OperationNode {
5
5
  readonly kind: 'DropConstraintNode';
6
6
  readonly constraintName: IdentifierNode;
@@ -1,7 +1,7 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { SchemableIdentifierNode } from './schemable-identifier-node.js';
3
3
  import { TableNode } from './table-node.js';
4
- export declare type DropIndexNodeProps = Omit<DropIndexNode, 'kind' | 'name'>;
4
+ export type DropIndexNodeProps = Omit<DropIndexNode, 'kind' | 'name'>;
5
5
  export interface DropIndexNode extends OperationNode {
6
6
  readonly kind: 'DropIndexNode';
7
7
  readonly name: SchemableIdentifierNode;
@@ -1,6 +1,6 @@
1
1
  import { IdentifierNode } from './identifier-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- export declare type DropSchemaNodeParams = Omit<Partial<DropSchemaNode>, 'kind' | 'schema'>;
3
+ export type DropSchemaNodeParams = Omit<Partial<DropSchemaNode>, 'kind' | 'schema'>;
4
4
  export interface DropSchemaNode extends OperationNode {
5
5
  readonly kind: 'DropSchemaNode';
6
6
  readonly schema: IdentifierNode;
@@ -1,6 +1,6 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { TableNode } from './table-node.js';
3
- export declare type DropTablexNodeParams = Omit<Partial<DropTableNode>, 'kind' | 'table'>;
3
+ export type DropTablexNodeParams = Omit<Partial<DropTableNode>, 'kind' | 'table'>;
4
4
  export interface DropTableNode extends OperationNode {
5
5
  readonly kind: 'DropTableNode';
6
6
  readonly table: TableNode;
@@ -1,6 +1,6 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { SchemableIdentifierNode } from './schemable-identifier-node.js';
3
- export declare type DropTypeNodeParams = Omit<Partial<DropTypeNode>, 'kind' | 'name'>;
3
+ export type DropTypeNodeParams = Omit<Partial<DropTypeNode>, 'kind' | 'name'>;
4
4
  export interface DropTypeNode extends OperationNode {
5
5
  readonly kind: 'DropTypeNode';
6
6
  readonly name: SchemableIdentifierNode;
@@ -1,6 +1,6 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { SchemableIdentifierNode } from './schemable-identifier-node.js';
3
- export declare type DropViewNodeParams = Omit<Partial<DropViewNode>, 'kind' | 'name'>;
3
+ export type DropViewNodeParams = Omit<Partial<DropViewNode>, 'kind' | 'name'>;
4
4
  export interface DropViewNode extends OperationNode {
5
5
  readonly kind: 'DropViewNode';
6
6
  readonly name: SchemableIdentifierNode;
@@ -3,7 +3,7 @@ import { IdentifierNode } from './identifier-node.js';
3
3
  import { OperationNode } from './operation-node.js';
4
4
  import { OnModifyForeignAction, ReferencesNode } from './references-node.js';
5
5
  import { TableNode } from './table-node.js';
6
- export declare type ForeignKeyConstraintNodeProps = Omit<ForeignKeyConstraintNode, 'kind' | 'columns' | 'references'>;
6
+ export type ForeignKeyConstraintNodeProps = Omit<ForeignKeyConstraintNode, 'kind' | 'columns' | 'references'>;
7
7
  export interface ForeignKeyConstraintNode extends OperationNode {
8
8
  readonly kind: 'ForeignKeyConstraintNode';
9
9
  readonly columns: ReadonlyArray<ColumnNode>;
@@ -1,5 +1,5 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- export declare type GeneratedNodeParams = Omit<GeneratedNode, 'kind' | 'expression'>;
2
+ export type GeneratedNodeParams = Omit<GeneratedNode, 'kind' | 'expression'>;
3
3
  export interface GeneratedNode extends OperationNode {
4
4
  readonly kind: 'GeneratedNode';
5
5
  readonly byDefault?: boolean;
@@ -6,7 +6,7 @@ import { OperationNode } from './operation-node.js';
6
6
  import { ReturningNode } from './returning-node.js';
7
7
  import { TableNode } from './table-node.js';
8
8
  import { WithNode } from './with-node.js';
9
- export declare type InsertQueryNodeProps = Omit<InsertQueryNode, 'kind' | 'into'>;
9
+ export type InsertQueryNodeProps = Omit<InsertQueryNode, 'kind' | 'into'>;
10
10
  export interface InsertQueryNode extends OperationNode {
11
11
  readonly kind: 'InsertQueryNode';
12
12
  readonly into: TableNode;
@@ -1,6 +1,6 @@
1
1
  import { OnNode } from './on-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- export declare type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin' | 'LateralInnerJoin' | 'LateralLeftJoin';
3
+ export type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin' | 'LateralInnerJoin' | 'LateralLeftJoin';
4
4
  export interface JoinNode extends OperationNode {
5
5
  readonly kind: 'JoinNode';
6
6
  readonly joinType: JoinType;
@@ -15,5 +15,4 @@ export declare const JoinNode: Readonly<{
15
15
  create(joinType: JoinType, table: OperationNode): JoinNode;
16
16
  createWithOn(joinType: JoinType, table: OperationNode, on: OperationNode): JoinNode;
17
17
  cloneWithOn(joinNode: JoinNode, operation: OperationNode): JoinNode;
18
- cloneWithOrOn(joinNode: JoinNode, operation: OperationNode): JoinNode;
19
18
  }>;
@@ -34,12 +34,4 @@ exports.JoinNode = (0, object_utils_js_1.freeze)({
34
34
  : on_node_js_1.OnNode.create(operation),
35
35
  });
36
36
  },
37
- cloneWithOrOn(joinNode, operation) {
38
- return (0, object_utils_js_1.freeze)({
39
- ...joinNode,
40
- on: joinNode.on
41
- ? on_node_js_1.OnNode.cloneWithOperation(joinNode.on, 'Or', operation)
42
- : on_node_js_1.OnNode.create(operation),
43
- });
44
- },
45
37
  });
@@ -0,0 +1,16 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { OperatorNode } from './operator-node.js';
3
+ import { ValueNode } from './value-node.js';
4
+ export interface JSONOperatorChainNode extends OperationNode {
5
+ readonly kind: 'JSONOperatorChainNode';
6
+ readonly operator: OperatorNode;
7
+ readonly values: readonly ValueNode[];
8
+ }
9
+ /**
10
+ * @internal
11
+ */
12
+ export declare const JSONOperatorChainNode: Readonly<{
13
+ is(node: OperationNode): node is JSONOperatorChainNode;
14
+ create(operator: OperatorNode): JSONOperatorChainNode;
15
+ cloneWithValue(node: JSONOperatorChainNode, value: ValueNode): JSONOperatorChainNode;
16
+ }>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JSONOperatorChainNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ /**
6
+ * @internal
7
+ */
8
+ exports.JSONOperatorChainNode = (0, object_utils_js_1.freeze)({
9
+ is(node) {
10
+ return node.kind === 'JSONOperatorChainNode';
11
+ },
12
+ create(operator) {
13
+ return (0, object_utils_js_1.freeze)({
14
+ kind: 'JSONOperatorChainNode',
15
+ operator,
16
+ values: (0, object_utils_js_1.freeze)([]),
17
+ });
18
+ },
19
+ cloneWithValue(node, value) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...node,
22
+ values: (0, object_utils_js_1.freeze)([...node.values, value]),
23
+ });
24
+ },
25
+ });
@@ -0,0 +1,14 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ export type JSONPathLegType = 'Member' | 'ArrayLocation';
3
+ export interface JSONPathLegNode extends OperationNode {
4
+ readonly kind: 'JSONPathLegNode';
5
+ readonly type: JSONPathLegType;
6
+ readonly value: string | number;
7
+ }
8
+ /**
9
+ * @internal
10
+ */
11
+ export declare const JSONPathLegNode: Readonly<{
12
+ is(node: OperationNode): node is JSONPathLegNode;
13
+ create(type: JSONPathLegType, value: string | number): JSONPathLegNode;
14
+ }>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JSONPathLegNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ /**
6
+ * @internal
7
+ */
8
+ exports.JSONPathLegNode = (0, object_utils_js_1.freeze)({
9
+ is(node) {
10
+ return node.kind === 'JSONPathLegNode';
11
+ },
12
+ create(type, value) {
13
+ return (0, object_utils_js_1.freeze)({
14
+ kind: 'JSONPathLegNode',
15
+ type,
16
+ value,
17
+ });
18
+ },
19
+ });
@@ -0,0 +1,16 @@
1
+ import { JSONPathLegNode } from './json-path-leg-node.js';
2
+ import { OperationNode } from './operation-node.js';
3
+ import { OperatorNode } from './operator-node.js';
4
+ export interface JSONPathNode extends OperationNode {
5
+ readonly kind: 'JSONPathNode';
6
+ readonly inOperator?: OperatorNode;
7
+ readonly pathLegs: ReadonlyArray<JSONPathLegNode>;
8
+ }
9
+ /**
10
+ * @internal
11
+ */
12
+ export declare const JSONPathNode: Readonly<{
13
+ is(node: OperationNode): node is JSONPathNode;
14
+ create(inOperator?: OperatorNode): JSONPathNode;
15
+ cloneWithLeg(jsonPathNode: JSONPathNode, pathLeg: JSONPathLegNode): JSONPathNode;
16
+ }>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JSONPathNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ /**
6
+ * @internal
7
+ */
8
+ exports.JSONPathNode = (0, object_utils_js_1.freeze)({
9
+ is(node) {
10
+ return node.kind === 'JSONPathNode';
11
+ },
12
+ create(inOperator) {
13
+ return (0, object_utils_js_1.freeze)({
14
+ kind: 'JSONPathNode',
15
+ inOperator,
16
+ pathLegs: (0, object_utils_js_1.freeze)([]),
17
+ });
18
+ },
19
+ cloneWithLeg(jsonPathNode, pathLeg) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...jsonPathNode,
22
+ pathLegs: (0, object_utils_js_1.freeze)([...jsonPathNode.pathLegs, pathLeg]),
23
+ });
24
+ },
25
+ });
@@ -0,0 +1,17 @@
1
+ import { JSONOperatorChainNode } from './json-operator-chain-node.js';
2
+ import { JSONPathNode } from './json-path-node.js';
3
+ import { OperationNode } from './operation-node.js';
4
+ import { ReferenceNode } from './reference-node.js';
5
+ export interface JSONReferenceNode extends OperationNode {
6
+ readonly kind: 'JSONReferenceNode';
7
+ readonly reference: ReferenceNode;
8
+ readonly traversal: JSONPathNode | JSONOperatorChainNode;
9
+ }
10
+ /**
11
+ * @internal
12
+ */
13
+ export declare const JSONReferenceNode: Readonly<{
14
+ is(node: OperationNode): node is JSONReferenceNode;
15
+ create(reference: ReferenceNode, traversal: JSONPathNode | JSONOperatorChainNode): JSONReferenceNode;
16
+ cloneWithTraversal(node: JSONReferenceNode, traversal: JSONPathNode | JSONOperatorChainNode): JSONReferenceNode;
17
+ }>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JSONReferenceNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ /**
6
+ * @internal
7
+ */
8
+ exports.JSONReferenceNode = (0, object_utils_js_1.freeze)({
9
+ is(node) {
10
+ return node.kind === 'JSONReferenceNode';
11
+ },
12
+ create(reference, traversal) {
13
+ return (0, object_utils_js_1.freeze)({
14
+ kind: 'JSONReferenceNode',
15
+ reference,
16
+ traversal,
17
+ });
18
+ },
19
+ cloneWithTraversal(node, traversal) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...node,
22
+ traversal,
23
+ });
24
+ },
25
+ });
@@ -3,7 +3,7 @@ import { ColumnUpdateNode } from './column-update-node.js';
3
3
  import { IdentifierNode } from './identifier-node.js';
4
4
  import { OperationNode } from './operation-node.js';
5
5
  import { WhereNode } from './where-node.js';
6
- export declare type OnConflictNodeProps = Omit<OnConflictNode, 'kind' | 'indexWhere' | 'updateWhere'>;
6
+ export type OnConflictNodeProps = Omit<OnConflictNode, 'kind' | 'indexWhere' | 'updateWhere'>;
7
7
  export interface OnConflictNode extends OperationNode {
8
8
  readonly kind: 'OnConflictNode';
9
9
  readonly columns?: ReadonlyArray<ColumnNode>;
@@ -1,6 +1,6 @@
1
1
  import { ColumnUpdateNode } from './column-update-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- export declare type OnDuplicateKeyNodeProps = Omit<OnDuplicateKeyNode, 'kind'>;
3
+ export type OnDuplicateKeyNodeProps = Omit<OnDuplicateKeyNode, 'kind'>;
4
4
  export interface OnDuplicateKeyNode extends OperationNode {
5
5
  readonly kind: 'OnDuplicateKeyNode';
6
6
  readonly updates: ReadonlyArray<ColumnUpdateNode>;
@@ -78,6 +78,12 @@ import { BinaryOperationNode } from './binary-operation-node.js';
78
78
  import { UnaryOperationNode } from './unary-operation-node.js';
79
79
  import { UsingNode } from './using-node.js';
80
80
  import { FunctionNode } from './function-node.js';
81
+ import { CaseNode } from './case-node.js';
82
+ import { WhenNode } from './when-node.js';
83
+ import { JSONReferenceNode } from './json-reference-node.js';
84
+ import { JSONPathNode } from './json-path-node.js';
85
+ import { JSONPathLegNode } from './json-path-leg-node.js';
86
+ import { JSONOperatorChainNode } from './json-operator-chain-node.js';
81
87
  /**
82
88
  * Transforms an operation node tree into another one.
83
89
  *
@@ -185,6 +191,12 @@ export declare class OperationNodeTransformer {
185
191
  protected transformUnaryOperation(node: UnaryOperationNode): UnaryOperationNode;
186
192
  protected transformUsing(node: UsingNode): UsingNode;
187
193
  protected transformFunction(node: FunctionNode): FunctionNode;
194
+ protected transformCase(node: CaseNode): CaseNode;
195
+ protected transformWhen(node: WhenNode): WhenNode;
196
+ protected transformJSONReference(node: JSONReferenceNode): JSONReferenceNode;
197
+ protected transformJSONPath(node: JSONPathNode): JSONPathNode;
198
+ protected transformJSONPathLeg(node: JSONPathLegNode): JSONPathLegNode;
199
+ protected transformJSONOperatorChain(node: JSONOperatorChainNode): JSONOperatorChainNode;
188
200
  protected transformDataType(node: DataTypeNode): DataTypeNode;
189
201
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
190
202
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -114,6 +114,12 @@ class OperationNodeTransformer {
114
114
  UnaryOperationNode: this.transformUnaryOperation.bind(this),
115
115
  UsingNode: this.transformUsing.bind(this),
116
116
  FunctionNode: this.transformFunction.bind(this),
117
+ CaseNode: this.transformCase.bind(this),
118
+ WhenNode: this.transformWhen.bind(this),
119
+ JSONReferenceNode: this.transformJSONReference.bind(this),
120
+ JSONPathNode: this.transformJSONPath.bind(this),
121
+ JSONPathLegNode: this.transformJSONPathLeg.bind(this),
122
+ JSONOperatorChainNode: this.transformJSONOperatorChain.bind(this),
117
123
  });
118
124
  transformNode(node) {
119
125
  if (!node) {
@@ -187,8 +193,8 @@ class OperationNodeTransformer {
187
193
  transformReference(node) {
188
194
  return (0, require_all_props_js_1.requireAllProps)({
189
195
  kind: 'ReferenceNode',
190
- table: this.transformNode(node.table),
191
196
  column: this.transformNode(node.column),
197
+ table: this.transformNode(node.table),
192
198
  });
193
199
  }
194
200
  transformAnd(node) {
@@ -404,7 +410,7 @@ class OperationNodeTransformer {
404
410
  kind: 'CreateIndexNode',
405
411
  name: this.transformNode(node.name),
406
412
  table: this.transformNode(node.table),
407
- expression: this.transformNode(node.expression),
413
+ columns: this.transformNodeList(node.columns),
408
414
  unique: node.unique,
409
415
  using: this.transformNode(node.using),
410
416
  ifNotExists: node.ifNotExists,
@@ -653,7 +659,7 @@ class OperationNodeTransformer {
653
659
  transformAggregateFunction(node) {
654
660
  return (0, require_all_props_js_1.requireAllProps)({
655
661
  kind: 'AggregateFunctionNode',
656
- aggregated: this.transformNode(node.aggregated),
662
+ aggregated: this.transformNodeList(node.aggregated),
657
663
  distinct: node.distinct,
658
664
  filter: this.transformNode(node.filter),
659
665
  func: node.func,
@@ -707,6 +713,50 @@ class OperationNodeTransformer {
707
713
  arguments: this.transformNodeList(node.arguments),
708
714
  });
709
715
  }
716
+ transformCase(node) {
717
+ return (0, require_all_props_js_1.requireAllProps)({
718
+ kind: 'CaseNode',
719
+ value: this.transformNode(node.value),
720
+ when: this.transformNodeList(node.when),
721
+ else: this.transformNode(node.else),
722
+ isStatement: node.isStatement,
723
+ });
724
+ }
725
+ transformWhen(node) {
726
+ return (0, require_all_props_js_1.requireAllProps)({
727
+ kind: 'WhenNode',
728
+ condition: this.transformNode(node.condition),
729
+ result: this.transformNode(node.result),
730
+ });
731
+ }
732
+ transformJSONReference(node) {
733
+ return (0, require_all_props_js_1.requireAllProps)({
734
+ kind: 'JSONReferenceNode',
735
+ reference: this.transformNode(node.reference),
736
+ traversal: this.transformNode(node.traversal),
737
+ });
738
+ }
739
+ transformJSONPath(node) {
740
+ return (0, require_all_props_js_1.requireAllProps)({
741
+ kind: 'JSONPathNode',
742
+ inOperator: this.transformNode(node.inOperator),
743
+ pathLegs: this.transformNodeList(node.pathLegs),
744
+ });
745
+ }
746
+ transformJSONPathLeg(node) {
747
+ return (0, require_all_props_js_1.requireAllProps)({
748
+ kind: 'JSONPathLegNode',
749
+ type: node.type,
750
+ value: node.value,
751
+ });
752
+ }
753
+ transformJSONOperatorChain(node) {
754
+ return (0, require_all_props_js_1.requireAllProps)({
755
+ kind: 'JSONOperatorChainNode',
756
+ operator: this.transformNode(node.operator),
757
+ values: this.transformNodeList(node.values),
758
+ });
759
+ }
710
760
  transformDataType(node) {
711
761
  // An Object.freezed leaf node. No need to clone.
712
762
  return node;
@@ -78,6 +78,12 @@ import { BinaryOperationNode } from './binary-operation-node.js';
78
78
  import { UnaryOperationNode } from './unary-operation-node.js';
79
79
  import { UsingNode } from './using-node.js';
80
80
  import { FunctionNode } from './function-node.js';
81
+ import { WhenNode } from './when-node.js';
82
+ import { CaseNode } from './case-node.js';
83
+ import { JSONReferenceNode } from './json-reference-node.js';
84
+ import { JSONPathNode } from './json-path-node.js';
85
+ import { JSONPathLegNode } from './json-path-leg-node.js';
86
+ import { JSONOperatorChainNode } from './json-operator-chain-node.js';
81
87
  export declare abstract class OperationNodeVisitor {
82
88
  #private;
83
89
  protected readonly nodeStack: OperationNode[];
@@ -162,4 +168,10 @@ export declare abstract class OperationNodeVisitor {
162
168
  protected abstract visitUnaryOperation(node: UnaryOperationNode): void;
163
169
  protected abstract visitUsing(node: UsingNode): void;
164
170
  protected abstract visitFunction(node: FunctionNode): void;
171
+ protected abstract visitCase(node: CaseNode): void;
172
+ protected abstract visitWhen(node: WhenNode): void;
173
+ protected abstract visitJSONReference(node: JSONReferenceNode): void;
174
+ protected abstract visitJSONPath(node: JSONPathNode): void;
175
+ protected abstract visitJSONPathLeg(node: JSONPathLegNode): void;
176
+ protected abstract visitJSONOperatorChain(node: JSONOperatorChainNode): void;
165
177
  }
@@ -87,6 +87,12 @@ class OperationNodeVisitor {
87
87
  UnaryOperationNode: this.visitUnaryOperation.bind(this),
88
88
  UsingNode: this.visitUsing.bind(this),
89
89
  FunctionNode: this.visitFunction.bind(this),
90
+ CaseNode: this.visitCase.bind(this),
91
+ WhenNode: this.visitWhen.bind(this),
92
+ JSONReferenceNode: this.visitJSONReference.bind(this),
93
+ JSONPathNode: this.visitJSONPath.bind(this),
94
+ JSONPathLegNode: this.visitJSONPathLeg.bind(this),
95
+ JSONOperatorChainNode: this.visitJSONOperatorChain.bind(this),
90
96
  });
91
97
  visitNode = (node) => {
92
98
  this.nodeStack.push(node);
@@ -1,4 +1,4 @@
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' | 'UsingNode' | 'FunctionNode';
1
+ export 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' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -1,16 +1,19 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->"];
2
+ export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp"];
3
3
  export declare const ARITHMETIC_OPERATORS: readonly ["+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>"];
4
- export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
4
+ export declare const JSON_OPERATORS: readonly ["->", "->>"];
5
+ export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
5
6
  export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
6
7
  export declare const UNARY_OPERATORS: readonly ["not", "-", "exists", "not exists"];
7
- export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "not", "-", "exists", "not exists"];
8
- export declare type ComparisonOperator = typeof COMPARISON_OPERATORS[number];
9
- export declare type ArithmeticOperator = typeof ARITHMETIC_OPERATORS[number];
10
- export declare type BinaryOperator = typeof BINARY_OPERATORS[number];
11
- export declare type UnaryOperator = typeof UNARY_OPERATORS[number];
12
- export declare type UnaryFilterOperator = typeof UNARY_FILTER_OPERATORS[number];
13
- export declare type Operator = typeof OPERATORS[number];
8
+ export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists"];
9
+ export type ComparisonOperator = (typeof COMPARISON_OPERATORS)[number];
10
+ export type ArithmeticOperator = (typeof ARITHMETIC_OPERATORS)[number];
11
+ export type JSONOperator = (typeof JSON_OPERATORS)[number];
12
+ export type JSONOperatorWith$ = JSONOperator | `${JSONOperator}$`;
13
+ export type BinaryOperator = (typeof BINARY_OPERATORS)[number];
14
+ export type UnaryOperator = (typeof UNARY_OPERATORS)[number];
15
+ export type UnaryFilterOperator = (typeof UNARY_FILTER_OPERATORS)[number];
16
+ export type Operator = (typeof OPERATORS)[number];
14
17
  export interface OperatorNode extends OperationNode {
15
18
  readonly kind: 'OperatorNode';
16
19
  readonly operator: Operator;
@@ -26,3 +29,4 @@ export declare function isOperator(op: unknown): op is Operator;
26
29
  export declare function isBinaryOperator(op: unknown): op is BinaryOperator;
27
30
  export declare function isComparisonOperator(op: unknown): op is ComparisonOperator;
28
31
  export declare function isArithmeticOperator(op: unknown): op is ArithmeticOperator;
32
+ export declare function isJSONOperator(op: unknown): op is JSONOperator;