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
@@ -1,7 +1,14 @@
1
1
  import { AliasNode } from '../operation-node/alias-node.js';
2
+ import { AndNode } from '../operation-node/and-node.js';
2
3
  import { OperationNode } from '../operation-node/operation-node.js';
4
+ import { OrNode } from '../operation-node/or-node.js';
5
+ import { ParensNode } from '../operation-node/parens-node.js';
6
+ import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
7
+ import { ReferenceExpression } from '../parser/reference-parser.js';
8
+ import { KyselyTypeError } from '../util/type-error.js';
9
+ import { SqlBool } from '../util/type-utils.js';
3
10
  import { AliasedExpression, Expression } from './expression.js';
4
- export declare class ExpressionWrapper<T> implements Expression<T> {
11
+ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Expression<T> {
5
12
  #private;
6
13
  constructor(node: OperationNode);
7
14
  /** @private */
@@ -31,8 +38,8 @@ export declare class ExpressionWrapper<T> implements Expression<T> {
31
38
  * ```ts
32
39
  * const result = await db
33
40
  * .selectFrom('person')
34
- * .select(eb =>
35
- * eb.cmpr('first_name', '=', 'Jennifer').as('is_jennifer')
41
+ * .select((eb) =>
42
+ * eb('first_name', '=', 'Jennifer').as('is_jennifer')
36
43
  * )
37
44
  * .executeTakeFirstOrThrow()
38
45
  *
@@ -50,12 +57,136 @@ export declare class ExpressionWrapper<T> implements Expression<T> {
50
57
  as<A extends string>(alias: A): AliasedExpression<T, A>;
51
58
  as<A extends string>(alias: Expression<unknown>): AliasedExpression<T, A>;
52
59
  /**
53
- * Change the output type of the raw expression.
60
+ * Combines `this` and another expression using `OR`.
61
+ *
62
+ * Also see {@link ExpressionBuilder.or}
63
+ *
64
+ * ### Examples
65
+ *
66
+ * ```ts
67
+ * db.selectFrom('person')
68
+ * .selectAll()
69
+ * .where(eb => eb('first_name', '=', 'Jennifer')
70
+ * .or('first_name', '=', 'Arnold')
71
+ * .or('first_name', '=', 'Sylvester')
72
+ * )
73
+ * ```
74
+ *
75
+ * The generated SQL (PostgreSQL):
76
+ *
77
+ * ```ts
78
+ * select *
79
+ * from "person"
80
+ * where (
81
+ * "first_name" = $1
82
+ * or "first_name" = $2
83
+ * or "first_name" = $3
84
+ * )
85
+ * ```
86
+ *
87
+ * You can also pass any expression as the only argument to
88
+ * this method:
89
+ *
90
+ * ```ts
91
+ * db.selectFrom('person')
92
+ * .selectAll()
93
+ * .where(eb => eb('first_name', '=', 'Jennifer')
94
+ * .or(eb('first_name', '=', 'Sylvester').and('last_name', '=', 'Stallone'))
95
+ * .or(eb.exists(
96
+ * eb.selectFrom('pet')
97
+ * .select('id')
98
+ * .whereRef('pet.owner_id', '=', 'person.id')
99
+ * )
100
+ * )
101
+ * ```
102
+ *
103
+ * The generated SQL (PostgreSQL):
104
+ *
105
+ * ```ts
106
+ * select *
107
+ * from "person"
108
+ * where (
109
+ * "first_name" = $1
110
+ * or ("first_name" = $2 and "last_name" = $3)
111
+ * or exists (
112
+ * select "id"
113
+ * from "pet"
114
+ * where "pet"."owner_id" = "person"."id"
115
+ * )
116
+ * )
117
+ * ```
118
+ */
119
+ or<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): T extends SqlBool ? OrWrapper<DB, TB, SqlBool> : KyselyTypeError<'or() method can only be called on boolean expressions'>;
120
+ or(expression: Expression<SqlBool>): T extends SqlBool ? OrWrapper<DB, TB, SqlBool> : KyselyTypeError<'or() method can only be called on boolean expressions'>;
121
+ /**
122
+ * Combines `this` and another expression using `AND`.
123
+ *
124
+ * Also see {@link ExpressionBuilder.and}
125
+ *
126
+ * ### Examples
127
+ *
128
+ * ```ts
129
+ * db.selectFrom('person')
130
+ * .selectAll()
131
+ * .where(eb => eb('first_name', '=', 'Jennifer')
132
+ * .and('last_name', '=', 'Aniston')
133
+ * .and('age', '>', 40)
134
+ * )
135
+ * ```
136
+ *
137
+ * The generated SQL (PostgreSQL):
138
+ *
139
+ * ```ts
140
+ * select *
141
+ * from "person"
142
+ * where (
143
+ * "first_name" = $1
144
+ * and "last_name" = $2
145
+ * and "age" > $3
146
+ * )
147
+ * ```
148
+ *
149
+ * You can also pass any expression as the only argument to
150
+ * this method:
151
+ *
152
+ * ```ts
153
+ * db.selectFrom('person')
154
+ * .selectAll()
155
+ * .where(eb => eb('first_name', '=', 'Jennifer')
156
+ * .and(eb('first_name', '=', 'Sylvester').or('last_name', '=', 'Stallone'))
157
+ * .and(eb.exists(
158
+ * eb.selectFrom('pet')
159
+ * .select('id')
160
+ * .whereRef('pet.owner_id', '=', 'person.id')
161
+ * )
162
+ * )
163
+ * ```
164
+ *
165
+ * The generated SQL (PostgreSQL):
166
+ *
167
+ * ```ts
168
+ * select *
169
+ * from "person"
170
+ * where (
171
+ * "first_name" = $1
172
+ * and ("first_name" = $2 or "last_name" = $3)
173
+ * and exists (
174
+ * select "id"
175
+ * from "pet"
176
+ * where "pet"."owner_id" = "person"."id"
177
+ * )
178
+ * )
179
+ * ```
180
+ */
181
+ and<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): T extends SqlBool ? AndWrapper<DB, TB, SqlBool> : KyselyTypeError<'and() method can only be called on boolean expressions'>;
182
+ and(expression: Expression<SqlBool>): T extends SqlBool ? AndWrapper<DB, TB, SqlBool> : KyselyTypeError<'and() method can only be called on boolean expressions'>;
183
+ /**
184
+ * Change the output type of the expression.
54
185
  *
55
186
  * This method call doesn't change the SQL in any way. This methods simply
56
187
  * returns a copy of this `ExpressionWrapper` with a new output type.
57
188
  */
58
- $castTo<T>(): ExpressionWrapper<T>;
189
+ $castTo<T>(): ExpressionWrapper<DB, TB, T>;
59
190
  /**
60
191
  * Creates the OperationNode that describes how to compile this expression into SQL.
61
192
  *
@@ -90,3 +221,163 @@ export declare class AliasedExpressionWrapper<T, A extends string> implements Al
90
221
  */
91
222
  toOperationNode(): AliasNode;
92
223
  }
224
+ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> implements Expression<T> {
225
+ #private;
226
+ constructor(node: OrNode);
227
+ /** @private */
228
+ /**
229
+ * All expressions need to have this getter for complicated type-related reasons.
230
+ * Simply add this getter for your expression and always return `undefined` from it:
231
+ *
232
+ * ```ts
233
+ * class SomeExpression<T> implements Expression<T> {
234
+ * get expressionType(): T | undefined {
235
+ * return undefined
236
+ * }
237
+ * }
238
+ * ```
239
+ *
240
+ * The getter is needed to make the expression assignable to another expression only
241
+ * if the types `T` are assignable. Without this property (or some other property
242
+ * that references `T`), you could assing `Expression<string>` to `Expression<number>`.
243
+ */
244
+ get expressionType(): T | undefined;
245
+ /**
246
+ * Returns an aliased version of the expression.
247
+ *
248
+ * In addition to slapping `as "the_alias"` to the end of the SQL,
249
+ * this method also provides strict typing:
250
+ *
251
+ * ```ts
252
+ * const result = await db
253
+ * .selectFrom('person')
254
+ * .select(eb =>
255
+ * eb('first_name', '=', 'Jennifer')
256
+ * .or('first_name', '=', 'Sylvester')
257
+ * .as('is_jennifer_or_sylvester')
258
+ * )
259
+ * .executeTakeFirstOrThrow()
260
+ *
261
+ * // `is_jennifer_or_sylvester: SqlBool` field exists in the result type.
262
+ * console.log(result.is_jennifer_or_sylvester)
263
+ * ```
264
+ *
265
+ * The generated SQL (PostgreSQL):
266
+ *
267
+ * ```ts
268
+ * select "first_name" = $1 or "first_name" = $2 as "is_jennifer_or_sylvester"
269
+ * from "person"
270
+ * ```
271
+ */
272
+ as<A extends string>(alias: A): AliasedExpression<T, A>;
273
+ as<A extends string>(alias: Expression<unknown>): AliasedExpression<T, A>;
274
+ /**
275
+ * Combines `this` and another expression using `OR`.
276
+ *
277
+ * See {@link ExpressionWrapper.or} for examples.
278
+ */
279
+ or<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): OrWrapper<DB, TB, T>;
280
+ or(expression: Expression<SqlBool>): OrWrapper<DB, TB, T>;
281
+ /**
282
+ * Change the output type of the expression.
283
+ *
284
+ * This method call doesn't change the SQL in any way. This methods simply
285
+ * returns a copy of this `OrWrapper` with a new output type.
286
+ */
287
+ $castTo<T extends SqlBool>(): OrWrapper<DB, TB, T>;
288
+ /**
289
+ * Creates the OperationNode that describes how to compile this expression into SQL.
290
+ *
291
+ * If you are creating a custom expression, it's often easiest to use the {@link sql}
292
+ * template tag to build the node:
293
+ *
294
+ * ```ts
295
+ * class SomeExpression<T> implements Expression<T> {
296
+ * toOperationNode(): OperationNode {
297
+ * return sql`some sql here`.toOperationNode()
298
+ * }
299
+ * }
300
+ * ```
301
+ */
302
+ toOperationNode(): ParensNode;
303
+ }
304
+ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> implements Expression<T> {
305
+ #private;
306
+ constructor(node: AndNode);
307
+ /** @private */
308
+ /**
309
+ * All expressions need to have this getter for complicated type-related reasons.
310
+ * Simply add this getter for your expression and always return `undefined` from it:
311
+ *
312
+ * ```ts
313
+ * class SomeExpression<T> implements Expression<T> {
314
+ * get expressionType(): T | undefined {
315
+ * return undefined
316
+ * }
317
+ * }
318
+ * ```
319
+ *
320
+ * The getter is needed to make the expression assignable to another expression only
321
+ * if the types `T` are assignable. Without this property (or some other property
322
+ * that references `T`), you could assing `Expression<string>` to `Expression<number>`.
323
+ */
324
+ get expressionType(): T | undefined;
325
+ /**
326
+ * Returns an aliased version of the expression.
327
+ *
328
+ * In addition to slapping `as "the_alias"` to the end of the SQL,
329
+ * this method also provides strict typing:
330
+ *
331
+ * ```ts
332
+ * const result = await db
333
+ * .selectFrom('person')
334
+ * .select(eb =>
335
+ * eb('first_name', '=', 'Jennifer')
336
+ * .and('last_name', '=', 'Aniston')
337
+ * .as('is_jennifer_aniston')
338
+ * )
339
+ * .executeTakeFirstOrThrow()
340
+ *
341
+ * // `is_jennifer_aniston: SqlBool` field exists in the result type.
342
+ * console.log(result.is_jennifer_or_sylvester)
343
+ * ```
344
+ *
345
+ * The generated SQL (PostgreSQL):
346
+ *
347
+ * ```ts
348
+ * select "first_name" = $1 and "first_name" = $2 as "is_jennifer_aniston"
349
+ * from "person"
350
+ * ```
351
+ */
352
+ as<A extends string>(alias: A): AliasedExpression<T, A>;
353
+ as<A extends string>(alias: Expression<unknown>): AliasedExpression<T, A>;
354
+ /**
355
+ * Combines `this` and another expression using `AND`.
356
+ *
357
+ * See {@link ExpressionWrapper.and} for examples.
358
+ */
359
+ and<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): AndWrapper<DB, TB, T>;
360
+ and(expression: Expression<SqlBool>): AndWrapper<DB, TB, T>;
361
+ /**
362
+ * Change the output type of the expression.
363
+ *
364
+ * This method call doesn't change the SQL in any way. This methods simply
365
+ * returns a copy of this `AndWrapper` with a new output type.
366
+ */
367
+ $castTo<T extends SqlBool>(): AndWrapper<DB, TB, T>;
368
+ /**
369
+ * Creates the OperationNode that describes how to compile this expression into SQL.
370
+ *
371
+ * If you are creating a custom expression, it's often easiest to use the {@link sql}
372
+ * template tag to build the node:
373
+ *
374
+ * ```ts
375
+ * class SomeExpression<T> implements Expression<T> {
376
+ * toOperationNode(): OperationNode {
377
+ * return sql`some sql here`.toOperationNode()
378
+ * }
379
+ * }
380
+ * ```
381
+ */
382
+ toOperationNode(): ParensNode;
383
+ }
@@ -1,7 +1,11 @@
1
1
  /// <reference types="./expression-wrapper.d.ts" />
2
2
  import { AliasNode } from '../operation-node/alias-node.js';
3
+ import { AndNode } from '../operation-node/and-node.js';
3
4
  import { IdentifierNode } from '../operation-node/identifier-node.js';
4
5
  import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
6
+ import { OrNode } from '../operation-node/or-node.js';
7
+ import { ParensNode } from '../operation-node/parens-node.js';
8
+ import { parseFilter, } from '../parser/binary-operation-parser.js';
5
9
  export class ExpressionWrapper {
6
10
  #node;
7
11
  constructor(node) {
@@ -14,8 +18,14 @@ export class ExpressionWrapper {
14
18
  as(alias) {
15
19
  return new AliasedExpressionWrapper(this, alias);
16
20
  }
21
+ or(...args) {
22
+ return new OrWrapper(OrNode.create(this.#node, parseFilter(args)));
23
+ }
24
+ and(...args) {
25
+ return new AndWrapper(AndNode.create(this.#node, parseFilter(args)));
26
+ }
17
27
  /**
18
- * Change the output type of the raw expression.
28
+ * Change the output type of the expression.
19
29
  *
20
30
  * This method call doesn't change the SQL in any way. This methods simply
21
31
  * returns a copy of this `ExpressionWrapper` with a new output type.
@@ -48,3 +58,59 @@ export class AliasedExpressionWrapper {
48
58
  : IdentifierNode.create(this.#alias));
49
59
  }
50
60
  }
61
+ export class OrWrapper {
62
+ #node;
63
+ constructor(node) {
64
+ this.#node = node;
65
+ }
66
+ /** @private */
67
+ get expressionType() {
68
+ return undefined;
69
+ }
70
+ as(alias) {
71
+ return new AliasedExpressionWrapper(this, alias);
72
+ }
73
+ or(...args) {
74
+ return new OrWrapper(OrNode.create(this.#node, parseFilter(args)));
75
+ }
76
+ /**
77
+ * Change the output type of the expression.
78
+ *
79
+ * This method call doesn't change the SQL in any way. This methods simply
80
+ * returns a copy of this `OrWrapper` with a new output type.
81
+ */
82
+ $castTo() {
83
+ return new OrWrapper(this.#node);
84
+ }
85
+ toOperationNode() {
86
+ return ParensNode.create(this.#node);
87
+ }
88
+ }
89
+ export class AndWrapper {
90
+ #node;
91
+ constructor(node) {
92
+ this.#node = node;
93
+ }
94
+ /** @private */
95
+ get expressionType() {
96
+ return undefined;
97
+ }
98
+ as(alias) {
99
+ return new AliasedExpressionWrapper(this, alias);
100
+ }
101
+ and(...args) {
102
+ return new AndWrapper(AndNode.create(this.#node, parseFilter(args)));
103
+ }
104
+ /**
105
+ * Change the output type of the expression.
106
+ *
107
+ * This method call doesn't change the SQL in any way. This methods simply
108
+ * returns a copy of this `AndWrapper` with a new output type.
109
+ */
110
+ $castTo() {
111
+ return new AndWrapper(this.#node);
112
+ }
113
+ toOperationNode() {
114
+ return ParensNode.create(this.#node);
115
+ }
116
+ }
@@ -4,13 +4,23 @@ import { Simplify } from '../util/type-utils.js';
4
4
  /**
5
5
  * A postgres helper for aggregating a subquery (or other expression) into a JSONB array.
6
6
  *
7
- * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
8
- * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
9
- * may not parse the nested results into arrays.
10
- *
11
7
  * ### Examples
12
8
  *
9
+ * <!-- siteExample("select", "Nested array", 110) -->
10
+ *
11
+ * While kysely is not an ORM and it doesn't have the concept of relations, we do provide
12
+ * helpers for fetching nested objects and arrays in a single query. In this example we
13
+ * use the `jsonArrayFrom` helper to fetch person's pets along with the person's id.
14
+ *
15
+ * Please keep in mind that the helpers under the `kysely/helpers` folder, including
16
+ * `jsonArrayFrom`, are not guaranteed to work with third party dialects. In order for
17
+ * them to work, the dialect must automatically parse the `json` data type into
18
+ * javascript JSON values like objects and arrays. Some dialects might simply return
19
+ * the data as a JSON string.
20
+ *
13
21
  * ```ts
22
+ * import { jsonArrayFrom } from 'kysely/helpers/postgres'
23
+ *
14
24
  * const result = await db
15
25
  * .selectFrom('person')
16
26
  * .select((eb) => [
@@ -18,15 +28,11 @@ import { Simplify } from '../util/type-utils.js';
18
28
  * jsonArrayFrom(
19
29
  * eb.selectFrom('pet')
20
30
  * .select(['pet.id as pet_id', 'pet.name'])
21
- * .where('pet.owner_id', '=', 'person.id')
31
+ * .whereRef('pet.owner_id', '=', 'person.id')
22
32
  * .orderBy('pet.name')
23
33
  * ).as('pets')
24
34
  * ])
25
35
  * .execute()
26
- *
27
- * result[0].id
28
- * result[0].pets[0].pet_id
29
- * result[0].pets[0].name
30
36
  * ```
31
37
  *
32
38
  * The generated SQL (PostgreSQL):
@@ -49,13 +55,23 @@ export declare function jsonArrayFrom<O>(expr: Expression<O>): RawBuilder<Simpli
49
55
  *
50
56
  * The subquery must only return one row.
51
57
  *
52
- * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
53
- * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
54
- * may not parse the nested results into objects.
55
- *
56
58
  * ### Examples
57
59
  *
60
+ * <!-- siteExample("select", "Nested object", 120) -->
61
+ *
62
+ * While kysely is not an ORM and it doesn't have the concept of relations, we do provide
63
+ * helpers for fetching nested objects and arrays in a single query. In this example we
64
+ * use the `jsonObjectFrom` helper to fetch person's favorite pet along with the person's id.
65
+ *
66
+ * Please keep in mind that the helpers under the `kysely/helpers` folder, including
67
+ * `jsonObjectFrom`, are not guaranteed to work with third party dialects. In order for
68
+ * them to work, the dialect must automatically parse the `json` data type into
69
+ * javascript JSON values like objects and arrays. Some dialects might simply return
70
+ * the data as a JSON string.
71
+ *
58
72
  * ```ts
73
+ * import { jsonObjectFrom } from 'kysely/helpers/postgres'
74
+ *
59
75
  * const result = await db
60
76
  * .selectFrom('person')
61
77
  * .select((eb) => [
@@ -63,15 +79,11 @@ export declare function jsonArrayFrom<O>(expr: Expression<O>): RawBuilder<Simpli
63
79
  * jsonObjectFrom(
64
80
  * eb.selectFrom('pet')
65
81
  * .select(['pet.id as pet_id', 'pet.name'])
66
- * .where('pet.owner_id', '=', 'person.id')
82
+ * .whereRef('pet.owner_id', '=', 'person.id')
67
83
  * .where('pet.is_favorite', '=', true)
68
84
  * ).as('favorite_pet')
69
85
  * ])
70
86
  * .execute()
71
- *
72
- * result[0].id
73
- * result[0].favorite_pet.pet_id
74
- * result[0].favorite_pet.name
75
87
  * ```
76
88
  *
77
89
  * The generated SQL (PostgreSQL):
@@ -3,13 +3,23 @@ import { sql } from '../raw-builder/sql.js';
3
3
  /**
4
4
  * A postgres helper for aggregating a subquery (or other expression) into a JSONB array.
5
5
  *
6
- * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
7
- * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
8
- * may not parse the nested results into arrays.
9
- *
10
6
  * ### Examples
11
7
  *
8
+ * <!-- siteExample("select", "Nested array", 110) -->
9
+ *
10
+ * While kysely is not an ORM and it doesn't have the concept of relations, we do provide
11
+ * helpers for fetching nested objects and arrays in a single query. In this example we
12
+ * use the `jsonArrayFrom` helper to fetch person's pets along with the person's id.
13
+ *
14
+ * Please keep in mind that the helpers under the `kysely/helpers` folder, including
15
+ * `jsonArrayFrom`, are not guaranteed to work with third party dialects. In order for
16
+ * them to work, the dialect must automatically parse the `json` data type into
17
+ * javascript JSON values like objects and arrays. Some dialects might simply return
18
+ * the data as a JSON string.
19
+ *
12
20
  * ```ts
21
+ * import { jsonArrayFrom } from 'kysely/helpers/postgres'
22
+ *
13
23
  * const result = await db
14
24
  * .selectFrom('person')
15
25
  * .select((eb) => [
@@ -17,15 +27,11 @@ import { sql } from '../raw-builder/sql.js';
17
27
  * jsonArrayFrom(
18
28
  * eb.selectFrom('pet')
19
29
  * .select(['pet.id as pet_id', 'pet.name'])
20
- * .where('pet.owner_id', '=', 'person.id')
30
+ * .whereRef('pet.owner_id', '=', 'person.id')
21
31
  * .orderBy('pet.name')
22
32
  * ).as('pets')
23
33
  * ])
24
34
  * .execute()
25
- *
26
- * result[0].id
27
- * result[0].pets[0].pet_id
28
- * result[0].pets[0].name
29
35
  * ```
30
36
  *
31
37
  * The generated SQL (PostgreSQL):
@@ -50,13 +56,23 @@ export function jsonArrayFrom(expr) {
50
56
  *
51
57
  * The subquery must only return one row.
52
58
  *
53
- * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
54
- * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
55
- * may not parse the nested results into objects.
56
- *
57
59
  * ### Examples
58
60
  *
61
+ * <!-- siteExample("select", "Nested object", 120) -->
62
+ *
63
+ * While kysely is not an ORM and it doesn't have the concept of relations, we do provide
64
+ * helpers for fetching nested objects and arrays in a single query. In this example we
65
+ * use the `jsonObjectFrom` helper to fetch person's favorite pet along with the person's id.
66
+ *
67
+ * Please keep in mind that the helpers under the `kysely/helpers` folder, including
68
+ * `jsonObjectFrom`, are not guaranteed to work with third party dialects. In order for
69
+ * them to work, the dialect must automatically parse the `json` data type into
70
+ * javascript JSON values like objects and arrays. Some dialects might simply return
71
+ * the data as a JSON string.
72
+ *
59
73
  * ```ts
74
+ * import { jsonObjectFrom } from 'kysely/helpers/postgres'
75
+ *
60
76
  * const result = await db
61
77
  * .selectFrom('person')
62
78
  * .select((eb) => [
@@ -64,15 +80,11 @@ export function jsonArrayFrom(expr) {
64
80
  * jsonObjectFrom(
65
81
  * eb.selectFrom('pet')
66
82
  * .select(['pet.id as pet_id', 'pet.name'])
67
- * .where('pet.owner_id', '=', 'person.id')
83
+ * .whereRef('pet.owner_id', '=', 'person.id')
68
84
  * .where('pet.is_favorite', '=', true)
69
85
  * ).as('favorite_pet')
70
86
  * ])
71
87
  * .execute()
72
- *
73
- * result[0].id
74
- * result[0].favorite_pet.pet_id
75
- * result[0].favorite_pet.name
76
88
  * ```
77
89
  *
78
90
  * The generated SQL (PostgreSQL):
@@ -19,6 +19,7 @@ export * from './query-builder/update-result.js';
19
19
  export * from './query-builder/on-conflict-builder.js';
20
20
  export * from './query-builder/aggregate-function-builder.js';
21
21
  export * from './query-builder/case-builder.js';
22
+ export * from './query-builder/json-path-builder.js';
22
23
  export * from './raw-builder/raw-builder.js';
23
24
  export * from './raw-builder/sql.js';
24
25
  export * from './query-executor/query-executor.js';
@@ -79,6 +80,7 @@ export * from './plugin/kysely-plugin.js';
79
80
  export * from './plugin/camel-case/camel-case-plugin.js';
80
81
  export * from './plugin/deduplicate-joins/deduplicate-joins-plugin.js';
81
82
  export * from './plugin/with-schema/with-schema-plugin.js';
83
+ export * from './plugin/parse-json-results/parse-json-results-plugin.js';
82
84
  export * from './operation-node/add-column-node.js';
83
85
  export * from './operation-node/add-constraint-node.js';
84
86
  export * from './operation-node/alias-node.js';
@@ -164,6 +166,10 @@ export * from './operation-node/set-operation-node.js';
164
166
  export * from './operation-node/binary-operation-node.js';
165
167
  export * from './operation-node/unary-operation-node.js';
166
168
  export * from './operation-node/using-node.js';
169
+ export * from './operation-node/json-reference-node.js';
170
+ export * from './operation-node/json-path-leg-node.js';
171
+ export * from './operation-node/json-path-node.js';
172
+ export * from './operation-node/json-operator-chain-node.js';
167
173
  export * from './util/column-type.js';
168
174
  export * from './util/compilable.js';
169
175
  export * from './util/explainable.js';
package/dist/esm/index.js CHANGED
@@ -20,6 +20,7 @@ export * from './query-builder/update-result.js';
20
20
  export * from './query-builder/on-conflict-builder.js';
21
21
  export * from './query-builder/aggregate-function-builder.js';
22
22
  export * from './query-builder/case-builder.js';
23
+ export * from './query-builder/json-path-builder.js';
23
24
  export * from './raw-builder/raw-builder.js';
24
25
  export * from './raw-builder/sql.js';
25
26
  export * from './query-executor/query-executor.js';
@@ -80,6 +81,7 @@ export * from './plugin/kysely-plugin.js';
80
81
  export * from './plugin/camel-case/camel-case-plugin.js';
81
82
  export * from './plugin/deduplicate-joins/deduplicate-joins-plugin.js';
82
83
  export * from './plugin/with-schema/with-schema-plugin.js';
84
+ export * from './plugin/parse-json-results/parse-json-results-plugin.js';
83
85
  export * from './operation-node/add-column-node.js';
84
86
  export * from './operation-node/add-constraint-node.js';
85
87
  export * from './operation-node/alias-node.js';
@@ -165,6 +167,10 @@ export * from './operation-node/set-operation-node.js';
165
167
  export * from './operation-node/binary-operation-node.js';
166
168
  export * from './operation-node/unary-operation-node.js';
167
169
  export * from './operation-node/using-node.js';
170
+ export * from './operation-node/json-reference-node.js';
171
+ export * from './operation-node/json-path-leg-node.js';
172
+ export * from './operation-node/json-path-node.js';
173
+ export * from './operation-node/json-operator-chain-node.js';
168
174
  export * from './util/column-type.js';
169
175
  export * from './util/compilable.js';
170
176
  export * from './util/explainable.js';