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
@@ -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
  }>;
@@ -32,12 +32,4 @@ export const JoinNode = freeze({
32
32
  : OnNode.create(operation),
33
33
  });
34
34
  },
35
- cloneWithOrOn(joinNode, operation) {
36
- return freeze({
37
- ...joinNode,
38
- on: joinNode.on
39
- ? OnNode.cloneWithOperation(joinNode.on, 'Or', operation)
40
- : OnNode.create(operation),
41
- });
42
- },
43
35
  });
@@ -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,23 @@
1
+ /// <reference types="./json-operator-chain-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const JSONOperatorChainNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'JSONOperatorChainNode';
9
+ },
10
+ create(operator) {
11
+ return freeze({
12
+ kind: 'JSONOperatorChainNode',
13
+ operator,
14
+ values: freeze([]),
15
+ });
16
+ },
17
+ cloneWithValue(node, value) {
18
+ return freeze({
19
+ ...node,
20
+ values: freeze([...node.values, value]),
21
+ });
22
+ },
23
+ });
@@ -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,17 @@
1
+ /// <reference types="./json-path-leg-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const JSONPathLegNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'JSONPathLegNode';
9
+ },
10
+ create(type, value) {
11
+ return freeze({
12
+ kind: 'JSONPathLegNode',
13
+ type,
14
+ value,
15
+ });
16
+ },
17
+ });
@@ -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,23 @@
1
+ /// <reference types="./json-path-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const JSONPathNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'JSONPathNode';
9
+ },
10
+ create(inOperator) {
11
+ return freeze({
12
+ kind: 'JSONPathNode',
13
+ inOperator,
14
+ pathLegs: freeze([]),
15
+ });
16
+ },
17
+ cloneWithLeg(jsonPathNode, pathLeg) {
18
+ return freeze({
19
+ ...jsonPathNode,
20
+ pathLegs: freeze([...jsonPathNode.pathLegs, pathLeg]),
21
+ });
22
+ },
23
+ });
@@ -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,23 @@
1
+ /// <reference types="./json-reference-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const JSONReferenceNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'JSONReferenceNode';
9
+ },
10
+ create(reference, traversal) {
11
+ return freeze({
12
+ kind: 'JSONReferenceNode',
13
+ reference,
14
+ traversal,
15
+ });
16
+ },
17
+ cloneWithTraversal(node, traversal) {
18
+ return freeze({
19
+ ...node,
20
+ traversal,
21
+ });
22
+ },
23
+ });
@@ -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;
@@ -112,6 +112,12 @@ export class OperationNodeTransformer {
112
112
  UnaryOperationNode: this.transformUnaryOperation.bind(this),
113
113
  UsingNode: this.transformUsing.bind(this),
114
114
  FunctionNode: this.transformFunction.bind(this),
115
+ CaseNode: this.transformCase.bind(this),
116
+ WhenNode: this.transformWhen.bind(this),
117
+ JSONReferenceNode: this.transformJSONReference.bind(this),
118
+ JSONPathNode: this.transformJSONPath.bind(this),
119
+ JSONPathLegNode: this.transformJSONPathLeg.bind(this),
120
+ JSONOperatorChainNode: this.transformJSONOperatorChain.bind(this),
115
121
  });
116
122
  transformNode(node) {
117
123
  if (!node) {
@@ -185,8 +191,8 @@ export class OperationNodeTransformer {
185
191
  transformReference(node) {
186
192
  return requireAllProps({
187
193
  kind: 'ReferenceNode',
188
- table: this.transformNode(node.table),
189
194
  column: this.transformNode(node.column),
195
+ table: this.transformNode(node.table),
190
196
  });
191
197
  }
192
198
  transformAnd(node) {
@@ -402,7 +408,7 @@ export class OperationNodeTransformer {
402
408
  kind: 'CreateIndexNode',
403
409
  name: this.transformNode(node.name),
404
410
  table: this.transformNode(node.table),
405
- expression: this.transformNode(node.expression),
411
+ columns: this.transformNodeList(node.columns),
406
412
  unique: node.unique,
407
413
  using: this.transformNode(node.using),
408
414
  ifNotExists: node.ifNotExists,
@@ -651,7 +657,7 @@ export class OperationNodeTransformer {
651
657
  transformAggregateFunction(node) {
652
658
  return requireAllProps({
653
659
  kind: 'AggregateFunctionNode',
654
- aggregated: this.transformNode(node.aggregated),
660
+ aggregated: this.transformNodeList(node.aggregated),
655
661
  distinct: node.distinct,
656
662
  filter: this.transformNode(node.filter),
657
663
  func: node.func,
@@ -705,6 +711,50 @@ export class OperationNodeTransformer {
705
711
  arguments: this.transformNodeList(node.arguments),
706
712
  });
707
713
  }
714
+ transformCase(node) {
715
+ return requireAllProps({
716
+ kind: 'CaseNode',
717
+ value: this.transformNode(node.value),
718
+ when: this.transformNodeList(node.when),
719
+ else: this.transformNode(node.else),
720
+ isStatement: node.isStatement,
721
+ });
722
+ }
723
+ transformWhen(node) {
724
+ return requireAllProps({
725
+ kind: 'WhenNode',
726
+ condition: this.transformNode(node.condition),
727
+ result: this.transformNode(node.result),
728
+ });
729
+ }
730
+ transformJSONReference(node) {
731
+ return requireAllProps({
732
+ kind: 'JSONReferenceNode',
733
+ reference: this.transformNode(node.reference),
734
+ traversal: this.transformNode(node.traversal),
735
+ });
736
+ }
737
+ transformJSONPath(node) {
738
+ return requireAllProps({
739
+ kind: 'JSONPathNode',
740
+ inOperator: this.transformNode(node.inOperator),
741
+ pathLegs: this.transformNodeList(node.pathLegs),
742
+ });
743
+ }
744
+ transformJSONPathLeg(node) {
745
+ return requireAllProps({
746
+ kind: 'JSONPathLegNode',
747
+ type: node.type,
748
+ value: node.value,
749
+ });
750
+ }
751
+ transformJSONOperatorChain(node) {
752
+ return requireAllProps({
753
+ kind: 'JSONOperatorChainNode',
754
+ operator: this.transformNode(node.operator),
755
+ values: this.transformNodeList(node.values),
756
+ });
757
+ }
708
758
  transformDataType(node) {
709
759
  // An Object.freezed leaf node. No need to clone.
710
760
  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
  }
@@ -85,6 +85,12 @@ export class OperationNodeVisitor {
85
85
  UnaryOperationNode: this.visitUnaryOperation.bind(this),
86
86
  UsingNode: this.visitUsing.bind(this),
87
87
  FunctionNode: this.visitFunction.bind(this),
88
+ CaseNode: this.visitCase.bind(this),
89
+ WhenNode: this.visitWhen.bind(this),
90
+ JSONReferenceNode: this.visitJSONReference.bind(this),
91
+ JSONPathNode: this.visitJSONPath.bind(this),
92
+ JSONPathLegNode: this.visitJSONPathLeg.bind(this),
93
+ JSONOperatorChainNode: this.visitJSONOperatorChain.bind(this),
88
94
  });
89
95
  visitNode = (node) => {
90
96
  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;
@@ -33,6 +33,7 @@ export const COMPARISON_OPERATORS = [
33
33
  '@@@',
34
34
  '!!',
35
35
  '<->',
36
+ 'regexp',
36
37
  ];
37
38
  export const ARITHMETIC_OPERATORS = [
38
39
  '+',
@@ -47,6 +48,7 @@ export const ARITHMETIC_OPERATORS = [
47
48
  '<<',
48
49
  '>>',
49
50
  ];
51
+ export const JSON_OPERATORS = ['->', '->>'];
50
52
  export const BINARY_OPERATORS = [
51
53
  ...COMPARISON_OPERATORS,
52
54
  ...ARITHMETIC_OPERATORS,
@@ -55,7 +57,11 @@ export const BINARY_OPERATORS = [
55
57
  ];
56
58
  export const UNARY_FILTER_OPERATORS = ['exists', 'not exists'];
57
59
  export const UNARY_OPERATORS = ['not', '-', ...UNARY_FILTER_OPERATORS];
58
- export const OPERATORS = [...BINARY_OPERATORS, ...UNARY_OPERATORS];
60
+ export const OPERATORS = [
61
+ ...BINARY_OPERATORS,
62
+ ...JSON_OPERATORS,
63
+ ...UNARY_OPERATORS,
64
+ ];
59
65
  /**
60
66
  * @internal
61
67
  */
@@ -82,3 +88,6 @@ export function isComparisonOperator(op) {
82
88
  export function isArithmeticOperator(op) {
83
89
  return isString(op) && ARITHMETIC_OPERATORS.includes(op);
84
90
  }
91
+ export function isJSONOperator(op) {
92
+ return isString(op) && JSON_OPERATORS.includes(op);
93
+ }
@@ -10,17 +10,17 @@ import { OperationNode } from './operation-node.js';
10
10
  import { ExplainNode } from './explain-node.js';
11
11
  import { ExplainFormat } from '../util/explainable.js';
12
12
  import { Expression } from '../expression/expression.js';
13
- export declare type QueryNode = SelectQueryNode | InsertQueryNode | UpdateQueryNode | DeleteQueryNode;
14
- declare type HasJoins = {
13
+ export type QueryNode = SelectQueryNode | InsertQueryNode | UpdateQueryNode | DeleteQueryNode;
14
+ type HasJoins = {
15
15
  joins?: ReadonlyArray<JoinNode>;
16
16
  };
17
- declare type HasWhere = {
17
+ type HasWhere = {
18
18
  where?: WhereNode;
19
19
  };
20
- declare type HasReturning = {
20
+ type HasReturning = {
21
21
  returning?: ReturningNode;
22
22
  };
23
- declare type HasExplain = {
23
+ type HasExplain = {
24
24
  explain?: ExplainNode;
25
25
  };
26
26
  /**
@@ -29,10 +29,9 @@ declare type HasExplain = {
29
29
  export declare const QueryNode: Readonly<{
30
30
  is(node: OperationNode): node is QueryNode;
31
31
  cloneWithWhere<T extends HasWhere>(node: T, operation: OperationNode): T;
32
- cloneWithOrWhere<T_1 extends HasWhere>(node: T_1, operation: OperationNode): T_1;
33
- cloneWithJoin<T_2 extends HasJoins>(node: T_2, join: JoinNode): T_2;
34
- cloneWithReturning<T_3 extends HasReturning>(node: T_3, selections: ReadonlyArray<SelectionNode>): T_3;
35
- cloneWithoutWhere<T_4 extends HasWhere>(node: T_4): T_4;
36
- cloneWithExplain<T_5 extends HasExplain>(node: T_5, format: ExplainFormat | undefined, options: Expression<any> | undefined): T_5;
32
+ cloneWithJoin<T_1 extends HasJoins>(node: T_1, join: JoinNode): T_1;
33
+ cloneWithReturning<T_2 extends HasReturning>(node: T_2, selections: ReadonlyArray<SelectionNode>): T_2;
34
+ cloneWithoutWhere<T_3 extends HasWhere>(node: T_3): T_3;
35
+ cloneWithExplain<T_4 extends HasExplain>(node: T_4, format: ExplainFormat | undefined, options: Expression<any> | undefined): T_4;
37
36
  }>;
38
37
  export {};
@@ -25,14 +25,6 @@ export const QueryNode = freeze({
25
25
  : WhereNode.create(operation),
26
26
  });
27
27
  },
28
- cloneWithOrWhere(node, operation) {
29
- return freeze({
30
- ...node,
31
- where: node.where
32
- ? WhereNode.cloneWithOperation(node.where, 'Or', operation)
33
- : WhereNode.create(operation),
34
- });
35
- },
36
28
  cloneWithJoin(node, join) {
37
29
  return freeze({
38
30
  ...node,
@@ -4,14 +4,14 @@ import { TableNode } from './table-node.js';
4
4
  import { SelectAllNode } from './select-all-node.js';
5
5
  export interface ReferenceNode extends OperationNode {
6
6
  readonly kind: 'ReferenceNode';
7
- readonly table: TableNode;
8
7
  readonly column: ColumnNode | SelectAllNode;
8
+ readonly table?: TableNode;
9
9
  }
10
10
  /**
11
11
  * @internal
12
12
  */
13
13
  export declare const ReferenceNode: Readonly<{
14
14
  is(node: OperationNode): node is ReferenceNode;
15
- create(table: TableNode, column: ColumnNode): ReferenceNode;
15
+ create(column: ColumnNode, table?: TableNode): ReferenceNode;
16
16
  createSelectAll(table: TableNode): ReferenceNode;
17
17
  }>;
@@ -8,7 +8,7 @@ export const ReferenceNode = freeze({
8
8
  is(node) {
9
9
  return node.kind === 'ReferenceNode';
10
10
  },
11
- create(table, column) {
11
+ create(column, table) {
12
12
  return freeze({
13
13
  kind: 'ReferenceNode',
14
14
  table,
@@ -3,7 +3,7 @@ import { ColumnNode } from './column-node.js';
3
3
  import { TableNode } from './table-node.js';
4
4
  import { ArrayItemType } from '../util/type-utils.js';
5
5
  export declare const ON_MODIFY_FOREIGN_ACTIONS: readonly ["no action", "restrict", "cascade", "set null", "set default"];
6
- export declare type OnModifyForeignAction = ArrayItemType<typeof ON_MODIFY_FOREIGN_ACTIONS>;
6
+ export type OnModifyForeignAction = ArrayItemType<typeof ON_MODIFY_FOREIGN_ACTIONS>;
7
7
  export interface ReferencesNode extends OperationNode {
8
8
  readonly kind: 'ReferencesNode';
9
9
  readonly table: TableNode;
@@ -1,5 +1,5 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- export declare type SelectModifier = 'ForUpdate' | 'ForNoKeyUpdate' | 'ForShare' | 'ForKeyShare' | 'NoWait' | 'SkipLocked' | 'Distinct';
2
+ export type SelectModifier = 'ForUpdate' | 'ForNoKeyUpdate' | 'ForShare' | 'ForKeyShare' | 'NoWait' | 'SkipLocked' | 'Distinct';
3
3
  export interface SelectModifierNode extends OperationNode {
4
4
  readonly kind: 'SelectModifierNode';
5
5
  readonly modifier?: SelectModifier;