kysely 0.25.0 → 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 (315) hide show
  1. package/README.md +10 -563
  2. package/dist/cjs/dialect/database-introspector.d.ts +1 -1
  3. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -2
  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 -4
  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/expression/expression-builder.d.ts +207 -108
  11. package/dist/cjs/expression/expression-builder.js +28 -7
  12. package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
  13. package/dist/cjs/expression/expression-wrapper.js +70 -2
  14. package/dist/cjs/helpers/postgres.d.ts +30 -18
  15. package/dist/cjs/helpers/postgres.js +30 -18
  16. package/dist/cjs/index.d.ts +6 -0
  17. package/dist/cjs/index.js +6 -0
  18. package/dist/cjs/kysely.d.ts +23 -13
  19. package/dist/cjs/kysely.js +13 -9
  20. package/dist/cjs/migration/file-migration-provider.js +2 -2
  21. package/dist/cjs/operation-node/alter-column-node.d.ts +2 -3
  22. package/dist/cjs/operation-node/alter-column-node.js +2 -7
  23. package/dist/cjs/operation-node/alter-table-node.d.ts +2 -2
  24. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -1
  25. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  26. package/dist/cjs/operation-node/create-index-node.d.ts +2 -2
  27. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
  28. package/dist/cjs/operation-node/create-table-node.d.ts +2 -2
  29. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  30. package/dist/cjs/operation-node/create-view-node.d.ts +1 -1
  31. package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
  32. package/dist/cjs/operation-node/drop-constraint-node.d.ts +1 -1
  33. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
  34. package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
  36. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  37. package/dist/cjs/operation-node/drop-view-node.d.ts +1 -1
  38. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/generated-node.d.ts +1 -1
  40. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/join-node.d.ts +1 -2
  42. package/dist/cjs/operation-node/join-node.js +0 -8
  43. package/dist/cjs/operation-node/json-operator-chain-node.d.ts +16 -0
  44. package/dist/cjs/operation-node/json-operator-chain-node.js +25 -0
  45. package/dist/cjs/operation-node/json-path-leg-node.d.ts +14 -0
  46. package/dist/cjs/operation-node/json-path-leg-node.js +19 -0
  47. package/dist/cjs/operation-node/json-path-node.d.ts +16 -0
  48. package/dist/cjs/operation-node/json-path-node.js +25 -0
  49. package/dist/cjs/operation-node/json-reference-node.d.ts +17 -0
  50. package/dist/cjs/operation-node/json-reference-node.js +25 -0
  51. package/dist/cjs/operation-node/on-conflict-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +1 -1
  53. package/dist/cjs/operation-node/operation-node-transformer.d.ts +8 -0
  54. package/dist/cjs/operation-node/operation-node-transformer.js +33 -1
  55. package/dist/cjs/operation-node/operation-node-visitor.d.ts +8 -0
  56. package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
  57. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  58. package/dist/cjs/operation-node/operator-node.d.ts +13 -9
  59. package/dist/cjs/operation-node/operator-node.js +12 -2
  60. package/dist/cjs/operation-node/query-node.d.ts +9 -10
  61. package/dist/cjs/operation-node/query-node.js +0 -8
  62. package/dist/cjs/operation-node/reference-node.d.ts +2 -2
  63. package/dist/cjs/operation-node/reference-node.js +1 -1
  64. package/dist/cjs/operation-node/references-node.d.ts +1 -1
  65. package/dist/cjs/operation-node/select-modifier-node.d.ts +1 -1
  66. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  67. package/dist/cjs/operation-node/select-query-node.js +0 -8
  68. package/dist/cjs/operation-node/selection-node.d.ts +1 -1
  69. package/dist/cjs/operation-node/set-operation-node.d.ts +1 -1
  70. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +1 -1
  71. package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
  72. package/dist/cjs/operation-node/values-node.d.ts +1 -1
  73. package/dist/cjs/operation-node/with-node.d.ts +1 -1
  74. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -12
  75. package/dist/cjs/parser/binary-operation-parser.js +40 -119
  76. package/dist/cjs/parser/coalesce-parser.d.ts +1 -1
  77. package/dist/cjs/parser/data-type-parser.d.ts +1 -1
  78. package/dist/cjs/parser/default-value-parser.d.ts +1 -1
  79. package/dist/cjs/parser/expression-parser.d.ts +5 -5
  80. package/dist/cjs/parser/group-by-parser.d.ts +2 -2
  81. package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
  82. package/dist/cjs/parser/join-parser.d.ts +4 -4
  83. package/dist/cjs/parser/order-by-parser.d.ts +3 -3
  84. package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
  85. package/dist/cjs/parser/reference-parser.d.ts +13 -9
  86. package/dist/cjs/parser/reference-parser.js +28 -16
  87. package/dist/cjs/parser/returning-parser.d.ts +2 -2
  88. package/dist/cjs/parser/select-parser.d.ts +10 -10
  89. package/dist/cjs/parser/table-parser.d.ts +12 -12
  90. package/dist/cjs/parser/unary-operation-parser.d.ts +1 -1
  91. package/dist/cjs/parser/update-set-parser.d.ts +3 -3
  92. package/dist/cjs/parser/update-set-parser.js +1 -3
  93. package/dist/cjs/parser/value-parser.d.ts +4 -4
  94. package/dist/cjs/parser/with-parser.d.ts +12 -8
  95. package/dist/cjs/plugin/camel-case/camel-case.d.ts +1 -1
  96. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  97. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +32 -0
  98. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +22 -6
  99. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -38
  100. package/dist/cjs/query-builder/aggregate-function-builder.js +4 -59
  101. package/dist/cjs/query-builder/case-builder.d.ts +11 -11
  102. package/dist/cjs/query-builder/case-builder.js +2 -2
  103. package/dist/cjs/query-builder/delete-query-builder.d.ts +84 -59
  104. package/dist/cjs/query-builder/delete-query-builder.js +1 -62
  105. package/dist/cjs/query-builder/delete-result.d.ts +1 -2
  106. package/dist/cjs/query-builder/delete-result.js +2 -8
  107. package/dist/cjs/query-builder/function-module.d.ts +44 -66
  108. package/dist/cjs/query-builder/having-interface.d.ts +2 -35
  109. package/dist/cjs/query-builder/insert-query-builder.d.ts +58 -47
  110. package/dist/cjs/query-builder/insert-query-builder.js +17 -34
  111. package/dist/cjs/query-builder/insert-result.d.ts +3 -4
  112. package/dist/cjs/query-builder/insert-result.js +5 -14
  113. package/dist/cjs/query-builder/join-builder.d.ts +2 -35
  114. package/dist/cjs/query-builder/join-builder.js +1 -56
  115. package/dist/cjs/query-builder/json-path-builder.d.ts +212 -0
  116. package/dist/cjs/query-builder/json-path-builder.js +191 -0
  117. package/dist/cjs/query-builder/no-result-error.d.ts +1 -1
  118. package/dist/cjs/query-builder/on-conflict-builder.d.ts +144 -73
  119. package/dist/cjs/query-builder/on-conflict-builder.js +2 -111
  120. package/dist/cjs/query-builder/over-builder.d.ts +2 -2
  121. package/dist/cjs/query-builder/over-builder.js +1 -1
  122. package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
  123. package/dist/cjs/query-builder/select-query-builder.d.ts +139 -134
  124. package/dist/cjs/query-builder/select-query-builder.js +24 -133
  125. package/dist/cjs/query-builder/update-query-builder.d.ts +89 -62
  126. package/dist/cjs/query-builder/update-query-builder.js +3 -63
  127. package/dist/cjs/query-builder/update-result.d.ts +3 -3
  128. package/dist/cjs/query-builder/update-result.js +5 -9
  129. package/dist/cjs/query-builder/where-interface.d.ts +73 -38
  130. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  131. package/dist/cjs/query-compiler/compiled-query.js +2 -2
  132. package/dist/cjs/query-compiler/default-query-compiler.d.ts +8 -0
  133. package/dist/cjs/query-compiler/default-query-compiler.js +37 -2
  134. package/dist/cjs/query-compiler/query-compiler.d.ts +1 -1
  135. package/dist/cjs/query-creator.d.ts +4 -2
  136. package/dist/cjs/schema/alter-column-builder.d.ts +11 -5
  137. package/dist/cjs/schema/alter-column-builder.js +19 -21
  138. package/dist/cjs/schema/alter-table-builder.d.ts +0 -4
  139. package/dist/cjs/schema/alter-table-builder.js +2 -9
  140. package/dist/cjs/schema/column-definition-builder.d.ts +1 -1
  141. package/dist/cjs/schema/column-definition-builder.js +1 -2
  142. package/dist/cjs/schema/create-index-builder.js +1 -1
  143. package/dist/cjs/schema/create-table-builder.d.ts +2 -6
  144. package/dist/cjs/schema/create-table-builder.js +0 -6
  145. package/dist/cjs/schema/schema.d.ts +1 -2
  146. package/dist/cjs/schema/schema.js +1 -2
  147. package/dist/cjs/util/column-type.d.ts +22 -18
  148. package/dist/cjs/util/explainable.d.ts +1 -1
  149. package/dist/cjs/util/infer-result.d.ts +2 -2
  150. package/dist/cjs/util/log.d.ts +4 -4
  151. package/dist/cjs/util/require-all-props.d.ts +1 -1
  152. package/dist/cjs/util/type-utils.d.ts +19 -19
  153. package/dist/esm/dialect/database-introspector.d.ts +1 -1
  154. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -2
  155. package/dist/esm/dialect/mysql/mysql-driver.js +5 -1
  156. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  157. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -4
  158. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
  159. package/dist/esm/driver/database-connection.d.ts +6 -0
  160. package/dist/esm/driver/driver.d.ts +1 -1
  161. package/dist/esm/expression/expression-builder.d.ts +207 -108
  162. package/dist/esm/expression/expression-builder.js +30 -9
  163. package/dist/esm/expression/expression-wrapper.d.ts +296 -5
  164. package/dist/esm/expression/expression-wrapper.js +67 -1
  165. package/dist/esm/helpers/postgres.d.ts +30 -18
  166. package/dist/esm/helpers/postgres.js +30 -18
  167. package/dist/esm/index.d.ts +6 -0
  168. package/dist/esm/index.js +6 -0
  169. package/dist/esm/kysely.d.ts +23 -13
  170. package/dist/esm/kysely.js +13 -9
  171. package/dist/esm/operation-node/alter-column-node.d.ts +2 -3
  172. package/dist/esm/operation-node/alter-column-node.js +2 -7
  173. package/dist/esm/operation-node/alter-table-node.d.ts +2 -2
  174. package/dist/esm/operation-node/column-definition-node.d.ts +1 -1
  175. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  176. package/dist/esm/operation-node/create-index-node.d.ts +2 -2
  177. package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
  178. package/dist/esm/operation-node/create-table-node.d.ts +2 -2
  179. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  180. package/dist/esm/operation-node/create-view-node.d.ts +1 -1
  181. package/dist/esm/operation-node/data-type-node.d.ts +2 -2
  182. package/dist/esm/operation-node/drop-constraint-node.d.ts +1 -1
  183. package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
  184. package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
  185. package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
  186. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  187. package/dist/esm/operation-node/drop-view-node.d.ts +1 -1
  188. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
  189. package/dist/esm/operation-node/generated-node.d.ts +1 -1
  190. package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
  191. package/dist/esm/operation-node/join-node.d.ts +1 -2
  192. package/dist/esm/operation-node/join-node.js +0 -8
  193. package/dist/esm/operation-node/json-operator-chain-node.d.ts +16 -0
  194. package/dist/esm/operation-node/json-operator-chain-node.js +23 -0
  195. package/dist/esm/operation-node/json-path-leg-node.d.ts +14 -0
  196. package/dist/esm/operation-node/json-path-leg-node.js +17 -0
  197. package/dist/esm/operation-node/json-path-node.d.ts +16 -0
  198. package/dist/esm/operation-node/json-path-node.js +23 -0
  199. package/dist/esm/operation-node/json-reference-node.d.ts +17 -0
  200. package/dist/esm/operation-node/json-reference-node.js +23 -0
  201. package/dist/esm/operation-node/on-conflict-node.d.ts +1 -1
  202. package/dist/esm/operation-node/on-duplicate-key-node.d.ts +1 -1
  203. package/dist/esm/operation-node/operation-node-transformer.d.ts +8 -0
  204. package/dist/esm/operation-node/operation-node-transformer.js +33 -1
  205. package/dist/esm/operation-node/operation-node-visitor.d.ts +8 -0
  206. package/dist/esm/operation-node/operation-node-visitor.js +4 -0
  207. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  208. package/dist/esm/operation-node/operator-node.d.ts +13 -9
  209. package/dist/esm/operation-node/operator-node.js +10 -1
  210. package/dist/esm/operation-node/query-node.d.ts +9 -10
  211. package/dist/esm/operation-node/query-node.js +0 -8
  212. package/dist/esm/operation-node/reference-node.d.ts +2 -2
  213. package/dist/esm/operation-node/reference-node.js +1 -1
  214. package/dist/esm/operation-node/references-node.d.ts +1 -1
  215. package/dist/esm/operation-node/select-modifier-node.d.ts +1 -1
  216. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  217. package/dist/esm/operation-node/select-query-node.js +0 -8
  218. package/dist/esm/operation-node/selection-node.d.ts +1 -1
  219. package/dist/esm/operation-node/set-operation-node.d.ts +1 -1
  220. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +1 -1
  221. package/dist/esm/operation-node/update-query-node.d.ts +1 -1
  222. package/dist/esm/operation-node/values-node.d.ts +1 -1
  223. package/dist/esm/operation-node/with-node.d.ts +1 -1
  224. package/dist/esm/parser/binary-operation-parser.d.ts +9 -12
  225. package/dist/esm/parser/binary-operation-parser.js +38 -114
  226. package/dist/esm/parser/coalesce-parser.d.ts +1 -1
  227. package/dist/esm/parser/data-type-parser.d.ts +1 -1
  228. package/dist/esm/parser/default-value-parser.d.ts +1 -1
  229. package/dist/esm/parser/expression-parser.d.ts +5 -5
  230. package/dist/esm/parser/group-by-parser.d.ts +2 -2
  231. package/dist/esm/parser/insert-values-parser.d.ts +4 -4
  232. package/dist/esm/parser/join-parser.d.ts +4 -4
  233. package/dist/esm/parser/order-by-parser.d.ts +3 -3
  234. package/dist/esm/parser/partition-by-parser.d.ts +2 -2
  235. package/dist/esm/parser/reference-parser.d.ts +13 -9
  236. package/dist/esm/parser/reference-parser.js +26 -15
  237. package/dist/esm/parser/returning-parser.d.ts +2 -2
  238. package/dist/esm/parser/select-parser.d.ts +10 -10
  239. package/dist/esm/parser/table-parser.d.ts +12 -12
  240. package/dist/esm/parser/unary-operation-parser.d.ts +1 -1
  241. package/dist/esm/parser/update-set-parser.d.ts +3 -3
  242. package/dist/esm/parser/update-set-parser.js +2 -4
  243. package/dist/esm/parser/value-parser.d.ts +4 -4
  244. package/dist/esm/parser/with-parser.d.ts +12 -8
  245. package/dist/esm/plugin/camel-case/camel-case.d.ts +1 -1
  246. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  247. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +29 -0
  248. package/dist/esm/plugin/with-schema/with-schema-transformer.js +22 -6
  249. package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -38
  250. package/dist/esm/query-builder/aggregate-function-builder.js +5 -60
  251. package/dist/esm/query-builder/case-builder.d.ts +11 -11
  252. package/dist/esm/query-builder/case-builder.js +3 -3
  253. package/dist/esm/query-builder/delete-query-builder.d.ts +84 -59
  254. package/dist/esm/query-builder/delete-query-builder.js +2 -63
  255. package/dist/esm/query-builder/delete-result.d.ts +1 -2
  256. package/dist/esm/query-builder/delete-result.js +2 -8
  257. package/dist/esm/query-builder/function-module.d.ts +44 -66
  258. package/dist/esm/query-builder/having-interface.d.ts +2 -35
  259. package/dist/esm/query-builder/insert-query-builder.d.ts +58 -47
  260. package/dist/esm/query-builder/insert-query-builder.js +17 -34
  261. package/dist/esm/query-builder/insert-result.d.ts +3 -4
  262. package/dist/esm/query-builder/insert-result.js +5 -14
  263. package/dist/esm/query-builder/join-builder.d.ts +2 -35
  264. package/dist/esm/query-builder/join-builder.js +2 -57
  265. package/dist/esm/query-builder/json-path-builder.d.ts +212 -0
  266. package/dist/esm/query-builder/json-path-builder.js +186 -0
  267. package/dist/esm/query-builder/no-result-error.d.ts +1 -1
  268. package/dist/esm/query-builder/on-conflict-builder.d.ts +144 -73
  269. package/dist/esm/query-builder/on-conflict-builder.js +3 -112
  270. package/dist/esm/query-builder/over-builder.d.ts +2 -2
  271. package/dist/esm/query-builder/over-builder.js +1 -1
  272. package/dist/esm/query-builder/returning-interface.d.ts +1 -1
  273. package/dist/esm/query-builder/select-query-builder.d.ts +139 -134
  274. package/dist/esm/query-builder/select-query-builder.js +25 -134
  275. package/dist/esm/query-builder/update-query-builder.d.ts +89 -62
  276. package/dist/esm/query-builder/update-query-builder.js +4 -64
  277. package/dist/esm/query-builder/update-result.d.ts +3 -3
  278. package/dist/esm/query-builder/update-result.js +5 -9
  279. package/dist/esm/query-builder/where-interface.d.ts +73 -38
  280. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  281. package/dist/esm/query-compiler/compiled-query.js +2 -2
  282. package/dist/esm/query-compiler/default-query-compiler.d.ts +8 -0
  283. package/dist/esm/query-compiler/default-query-compiler.js +37 -2
  284. package/dist/esm/query-compiler/query-compiler.d.ts +1 -1
  285. package/dist/esm/query-creator.d.ts +4 -2
  286. package/dist/esm/schema/alter-column-builder.d.ts +11 -5
  287. package/dist/esm/schema/alter-column-builder.js +19 -21
  288. package/dist/esm/schema/alter-table-builder.d.ts +0 -4
  289. package/dist/esm/schema/alter-table-builder.js +2 -9
  290. package/dist/esm/schema/column-definition-builder.d.ts +1 -1
  291. package/dist/esm/schema/column-definition-builder.js +1 -2
  292. package/dist/esm/schema/create-index-builder.js +2 -2
  293. package/dist/esm/schema/create-table-builder.d.ts +2 -6
  294. package/dist/esm/schema/create-table-builder.js +0 -6
  295. package/dist/esm/schema/schema.d.ts +1 -2
  296. package/dist/esm/schema/schema.js +1 -2
  297. package/dist/esm/util/column-type.d.ts +22 -18
  298. package/dist/esm/util/explainable.d.ts +1 -1
  299. package/dist/esm/util/infer-result.d.ts +2 -2
  300. package/dist/esm/util/log.d.ts +4 -4
  301. package/dist/esm/util/require-all-props.d.ts +1 -1
  302. package/dist/esm/util/type-utils.d.ts +19 -19
  303. package/package.json +25 -23
  304. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  305. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +0 -2
  306. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  307. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +0 -2
  308. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  309. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +0 -2
  310. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  311. package/dist/esm/query-builder/deprecated-having-expression-builder.js +0 -2
  312. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  313. package/dist/esm/query-builder/deprecated-on-expression-builder.js +0 -2
  314. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  315. package/dist/esm/query-builder/deprecated-where-expression-builder.js +0 -2
@@ -89,16 +89,14 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
89
89
  * calls.
90
90
  *
91
91
  * ```ts
92
- * const { count } = db.fn
93
- *
94
92
  * await db.selectFrom('person')
95
93
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
96
- * .select([
94
+ * .select((eb) => [
97
95
  * 'person.id',
98
- * count('pet.id').as('pet_count')
96
+ * eb.fn.count('pet.id').as('pet_count')
99
97
  * ])
100
98
  * .groupBy('person.id')
101
- * .having(count('pet.id'), '>', 10)
99
+ * .having((eb) => eb.fn.count('pet.id'), '>', 10)
102
100
  * .execute()
103
101
  * ```
104
102
  *
@@ -129,23 +127,29 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
129
127
  *
130
128
  * ### Examples
131
129
  *
130
+ * <!-- siteExample("transactions", "Simple transaction", 10) -->
131
+ *
132
+ * This example inserts two rows in a transaction. If an error is thrown inside
133
+ * the callback passed to the `execute` method, the transaction is rolled back.
134
+ * Otherwise it's committed.
135
+ *
132
136
  * ```ts
133
137
  * const catto = await db.transaction().execute(async (trx) => {
134
138
  * const jennifer = await trx.insertInto('person')
135
139
  * .values({
136
140
  * first_name: 'Jennifer',
137
141
  * last_name: 'Aniston',
142
+ * age: 40,
138
143
  * })
139
144
  * .returning('id')
140
145
  * .executeTakeFirstOrThrow()
141
146
  *
142
- * await someFunction(trx, jennifer)
143
- *
144
147
  * return await trx.insertInto('pet')
145
148
  * .values({
146
- * user_id: jennifer.id,
149
+ * owner_id: jennifer.id,
147
150
  * name: 'Catto',
148
- * species: 'cat'
151
+ * species: 'cat',
152
+ * is_favorite: false,
149
153
  * })
150
154
  * .returningAll()
151
155
  * .executeTakeFirst()
@@ -274,23 +278,29 @@ export declare class Transaction<DB> extends Kysely<DB> {
274
278
  *
275
279
  * ### Examples
276
280
  *
281
+ * <!-- siteExample("transactions", "Simple transaction", 10) -->
282
+ *
283
+ * This example inserts two rows in a transaction. If an error is thrown inside
284
+ * the callback passed to the `execute` method, the transaction is rolled back.
285
+ * Otherwise it's committed.
286
+ *
277
287
  * ```ts
278
288
  * const catto = await db.transaction().execute(async (trx) => {
279
289
  * const jennifer = await trx.insertInto('person')
280
290
  * .values({
281
291
  * first_name: 'Jennifer',
282
292
  * last_name: 'Aniston',
293
+ * age: 40,
283
294
  * })
284
295
  * .returning('id')
285
296
  * .executeTakeFirstOrThrow()
286
297
  *
287
- * await someFunction(trx, jennifer)
288
- *
289
298
  * return await trx.insertInto('pet')
290
299
  * .values({
291
- * user_id: jennifer.id,
300
+ * owner_id: jennifer.id,
292
301
  * name: 'Catto',
293
- * species: 'cat'
302
+ * species: 'cat',
303
+ * is_favorite: false,
294
304
  * })
295
305
  * .returningAll()
296
306
  * .executeTakeFirst()
@@ -120,16 +120,14 @@ export class Kysely extends QueryCreator {
120
120
  * calls.
121
121
  *
122
122
  * ```ts
123
- * const { count } = db.fn
124
- *
125
123
  * await db.selectFrom('person')
126
124
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
127
- * .select([
125
+ * .select((eb) => [
128
126
  * 'person.id',
129
- * count('pet.id').as('pet_count')
127
+ * eb.fn.count('pet.id').as('pet_count')
130
128
  * ])
131
129
  * .groupBy('person.id')
132
- * .having(count('pet.id'), '>', 10)
130
+ * .having((eb) => eb.fn.count('pet.id'), '>', 10)
133
131
  * .execute()
134
132
  * ```
135
133
  *
@@ -162,23 +160,29 @@ export class Kysely extends QueryCreator {
162
160
  *
163
161
  * ### Examples
164
162
  *
163
+ * <!-- siteExample("transactions", "Simple transaction", 10) -->
164
+ *
165
+ * This example inserts two rows in a transaction. If an error is thrown inside
166
+ * the callback passed to the `execute` method, the transaction is rolled back.
167
+ * Otherwise it's committed.
168
+ *
165
169
  * ```ts
166
170
  * const catto = await db.transaction().execute(async (trx) => {
167
171
  * const jennifer = await trx.insertInto('person')
168
172
  * .values({
169
173
  * first_name: 'Jennifer',
170
174
  * last_name: 'Aniston',
175
+ * age: 40,
171
176
  * })
172
177
  * .returning('id')
173
178
  * .executeTakeFirstOrThrow()
174
179
  *
175
- * await someFunction(trx, jennifer)
176
- *
177
180
  * return await trx.insertInto('pet')
178
181
  * .values({
179
- * user_id: jennifer.id,
182
+ * owner_id: jennifer.id,
180
183
  * name: 'Catto',
181
- * species: 'cat'
184
+ * species: 'cat',
185
+ * is_favorite: false,
182
186
  * })
183
187
  * .returningAll()
184
188
  * .executeTakeFirst()
@@ -1,7 +1,7 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { ColumnNode } from './column-node.js';
3
3
  import { RawNode } from './raw-node.js';
4
- export declare type AlterColumnNodeProps = Omit<AlterColumnNode, 'kind' | 'column'>;
4
+ export type AlterColumnNodeProps = Omit<AlterColumnNode, 'kind' | 'column'>;
5
5
  export interface AlterColumnNode extends OperationNode {
6
6
  readonly kind: 'AlterColumnNode';
7
7
  readonly column: ColumnNode;
@@ -17,6 +17,5 @@ export interface AlterColumnNode extends OperationNode {
17
17
  */
18
18
  export declare const AlterColumnNode: Readonly<{
19
19
  is(node: OperationNode): node is AlterColumnNode;
20
- create(column: string): AlterColumnNode;
21
- cloneWith(node: AlterColumnNode, props: AlterColumnNodeProps): AlterColumnNode;
20
+ create<T extends "dataType" | "dataTypeExpression" | "setDefault" | "dropDefault" | "setNotNull" | "dropNotNull">(column: string, prop: T, value: Required<AlterColumnNodeProps>[T]): AlterColumnNode;
22
21
  }>;
@@ -8,16 +8,11 @@ export const AlterColumnNode = freeze({
8
8
  is(node) {
9
9
  return node.kind === 'AlterColumnNode';
10
10
  },
11
- create(column) {
11
+ create(column, prop, value) {
12
12
  return freeze({
13
13
  kind: 'AlterColumnNode',
14
14
  column: ColumnNode.create(column),
15
- });
16
- },
17
- cloneWith(node, props) {
18
- return freeze({
19
- ...node,
20
- ...props,
15
+ [prop]: value,
21
16
  });
22
17
  },
23
18
  });
@@ -8,8 +8,8 @@ import { AlterColumnNode } from './alter-column-node.js';
8
8
  import { AddConstraintNode } from './add-constraint-node.js';
9
9
  import { DropConstraintNode } from './drop-constraint-node.js';
10
10
  import { ModifyColumnNode } from './modify-column-node.js';
11
- export declare type AlterTableNodeTableProps = Pick<AlterTableNode, 'renameTo' | 'setSchema' | 'addConstraint' | 'dropConstraint'>;
12
- export declare type AlterTableColumnAlterationNode = RenameColumnNode | AddColumnNode | DropColumnNode | AlterColumnNode | ModifyColumnNode;
11
+ export type AlterTableNodeTableProps = Pick<AlterTableNode, 'renameTo' | 'setSchema' | 'addConstraint' | 'dropConstraint'>;
12
+ export type AlterTableColumnAlterationNode = RenameColumnNode | AddColumnNode | DropColumnNode | AlterColumnNode | ModifyColumnNode;
13
13
  export interface AlterTableNode extends OperationNode {
14
14
  readonly kind: 'AlterTableNode';
15
15
  readonly table: TableNode;
@@ -4,7 +4,7 @@ import { DefaultValueNode } from './default-value-node.js';
4
4
  import { GeneratedNode } from './generated-node.js';
5
5
  import { OperationNode } from './operation-node.js';
6
6
  import { ReferencesNode } from './references-node.js';
7
- export declare type ColumnDefinitionNodeProps = Omit<Partial<ColumnDefinitionNode>, 'kind' | 'dataType'>;
7
+ export type ColumnDefinitionNodeProps = Omit<Partial<ColumnDefinitionNode>, 'kind' | 'dataType'>;
8
8
  export interface ColumnDefinitionNode extends OperationNode {
9
9
  readonly kind: 'ColumnDefinitionNode';
10
10
  readonly column: ColumnNode;
@@ -2,4 +2,4 @@ import { CheckConstraintNode } from './check-constraint-node.js';
2
2
  import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
3
3
  import { PrimaryKeyConstraintNode } from './primary-constraint-node.js';
4
4
  import { UniqueConstraintNode } from './unique-constraint-node.js';
5
- export declare type ConstraintNode = PrimaryKeyConstraintNode | UniqueConstraintNode | CheckConstraintNode | ForeignKeyConstraintNode;
5
+ export type ConstraintNode = PrimaryKeyConstraintNode | UniqueConstraintNode | CheckConstraintNode | ForeignKeyConstraintNode;
@@ -3,8 +3,8 @@ 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;
@@ -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})` | '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 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
  }>;
@@ -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>;
@@ -80,6 +80,10 @@ import { UsingNode } from './using-node.js';
80
80
  import { FunctionNode } from './function-node.js';
81
81
  import { CaseNode } from './case-node.js';
82
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';
83
87
  /**
84
88
  * Transforms an operation node tree into another one.
85
89
  *
@@ -189,6 +193,10 @@ export declare class OperationNodeTransformer {
189
193
  protected transformFunction(node: FunctionNode): FunctionNode;
190
194
  protected transformCase(node: CaseNode): CaseNode;
191
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;
192
200
  protected transformDataType(node: DataTypeNode): DataTypeNode;
193
201
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
194
202
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;