kysely 0.24.2 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/README.md +31 -567
  2. package/dist/cjs/dialect/database-introspector.d.ts +1 -1
  3. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +5 -1
  5. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -1
  7. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
  8. package/dist/cjs/driver/database-connection.d.ts +6 -0
  9. package/dist/cjs/driver/driver.d.ts +1 -1
  10. package/dist/cjs/driver/runtime-driver.js +6 -6
  11. package/dist/cjs/dynamic/dynamic.d.ts +1 -1
  12. package/dist/cjs/dynamic/dynamic.js +1 -1
  13. package/dist/cjs/expression/expression-builder.d.ts +263 -109
  14. package/dist/cjs/expression/expression-builder.js +38 -7
  15. package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
  16. package/dist/cjs/expression/expression-wrapper.js +70 -2
  17. package/dist/cjs/helpers/mysql.d.ts +3 -3
  18. package/dist/cjs/helpers/mysql.js +2 -2
  19. package/dist/cjs/helpers/postgres.d.ts +31 -19
  20. package/dist/cjs/helpers/postgres.js +30 -18
  21. package/dist/cjs/index.d.ts +10 -0
  22. package/dist/cjs/index.js +10 -0
  23. package/dist/cjs/kysely.d.ts +42 -15
  24. package/dist/cjs/kysely.js +41 -10
  25. package/dist/cjs/migration/file-migration-provider.js +2 -2
  26. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -7
  27. package/dist/cjs/operation-node/aggregate-function-node.js +1 -1
  28. package/dist/cjs/operation-node/alter-column-node.d.ts +3 -5
  29. package/dist/cjs/operation-node/alter-column-node.js +2 -7
  30. package/dist/cjs/operation-node/alter-table-node.d.ts +3 -3
  31. package/dist/cjs/operation-node/alter-table-node.js +1 -2
  32. package/dist/cjs/operation-node/case-node.d.ts +19 -0
  33. package/dist/cjs/operation-node/case-node.js +42 -0
  34. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  36. package/dist/cjs/operation-node/create-index-node.d.ts +4 -3
  37. package/dist/cjs/operation-node/create-index-node.js +6 -0
  38. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/create-table-node.d.ts +2 -2
  40. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/create-view-node.d.ts +1 -1
  42. package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
  43. package/dist/cjs/operation-node/drop-constraint-node.d.ts +1 -1
  44. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
  45. package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
  47. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  48. package/dist/cjs/operation-node/drop-view-node.d.ts +1 -1
  49. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
  50. package/dist/cjs/operation-node/generated-node.d.ts +1 -1
  51. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/join-node.d.ts +1 -2
  53. package/dist/cjs/operation-node/join-node.js +0 -8
  54. package/dist/cjs/operation-node/json-operator-chain-node.d.ts +16 -0
  55. package/dist/cjs/operation-node/json-operator-chain-node.js +25 -0
  56. package/dist/cjs/operation-node/json-path-leg-node.d.ts +14 -0
  57. package/dist/cjs/operation-node/json-path-leg-node.js +19 -0
  58. package/dist/cjs/operation-node/json-path-node.d.ts +16 -0
  59. package/dist/cjs/operation-node/json-path-node.js +25 -0
  60. package/dist/cjs/operation-node/json-reference-node.d.ts +17 -0
  61. package/dist/cjs/operation-node/json-reference-node.js +25 -0
  62. package/dist/cjs/operation-node/on-conflict-node.d.ts +1 -1
  63. package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +1 -1
  64. package/dist/cjs/operation-node/operation-node-transformer.d.ts +12 -0
  65. package/dist/cjs/operation-node/operation-node-transformer.js +53 -3
  66. package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -0
  67. package/dist/cjs/operation-node/operation-node-visitor.js +6 -0
  68. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  69. package/dist/cjs/operation-node/operator-node.d.ts +13 -9
  70. package/dist/cjs/operation-node/operator-node.js +12 -2
  71. package/dist/cjs/operation-node/query-node.d.ts +9 -10
  72. package/dist/cjs/operation-node/query-node.js +0 -8
  73. package/dist/cjs/operation-node/reference-node.d.ts +2 -2
  74. package/dist/cjs/operation-node/reference-node.js +1 -1
  75. package/dist/cjs/operation-node/references-node.d.ts +1 -1
  76. package/dist/cjs/operation-node/select-modifier-node.d.ts +1 -1
  77. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  78. package/dist/cjs/operation-node/select-query-node.js +0 -8
  79. package/dist/cjs/operation-node/selection-node.d.ts +1 -1
  80. package/dist/cjs/operation-node/set-operation-node.d.ts +1 -1
  81. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +1 -1
  82. package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
  83. package/dist/cjs/operation-node/values-node.d.ts +1 -1
  84. package/dist/cjs/operation-node/when-node.d.ts +14 -0
  85. package/dist/cjs/operation-node/when-node.js +24 -0
  86. package/dist/cjs/operation-node/with-node.d.ts +1 -1
  87. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -11
  88. package/dist/cjs/parser/binary-operation-parser.js +40 -103
  89. package/dist/cjs/parser/coalesce-parser.d.ts +1 -1
  90. package/dist/cjs/parser/data-type-parser.d.ts +1 -1
  91. package/dist/cjs/parser/default-value-parser.d.ts +1 -1
  92. package/dist/cjs/parser/expression-parser.d.ts +6 -5
  93. package/dist/cjs/parser/group-by-parser.d.ts +2 -2
  94. package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
  95. package/dist/cjs/parser/join-parser.d.ts +4 -4
  96. package/dist/cjs/parser/order-by-parser.d.ts +4 -3
  97. package/dist/cjs/parser/order-by-parser.js +5 -1
  98. package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
  99. package/dist/cjs/parser/reference-parser.d.ts +16 -8
  100. package/dist/cjs/parser/reference-parser.js +43 -16
  101. package/dist/cjs/parser/returning-parser.d.ts +2 -2
  102. package/dist/cjs/parser/select-parser.d.ts +9 -9
  103. package/dist/cjs/parser/table-parser.d.ts +14 -13
  104. package/dist/cjs/parser/unary-operation-parser.d.ts +1 -1
  105. package/dist/cjs/parser/update-set-parser.d.ts +3 -3
  106. package/dist/cjs/parser/update-set-parser.js +1 -3
  107. package/dist/cjs/parser/value-parser.d.ts +4 -4
  108. package/dist/cjs/parser/with-parser.d.ts +14 -9
  109. package/dist/cjs/plugin/camel-case/camel-case.d.ts +1 -1
  110. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  111. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +32 -0
  112. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +22 -6
  113. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -38
  114. package/dist/cjs/query-builder/aggregate-function-builder.js +4 -59
  115. package/dist/cjs/query-builder/case-builder.d.ts +111 -0
  116. package/dist/cjs/query-builder/case-builder.js +75 -0
  117. package/dist/cjs/query-builder/delete-query-builder.d.ts +130 -63
  118. package/dist/cjs/query-builder/delete-query-builder.js +42 -59
  119. package/dist/cjs/query-builder/delete-result.d.ts +1 -2
  120. package/dist/cjs/query-builder/delete-result.js +2 -8
  121. package/dist/cjs/query-builder/function-module.d.ts +78 -69
  122. package/dist/cjs/query-builder/function-module.js +12 -16
  123. package/dist/cjs/query-builder/having-interface.d.ts +2 -35
  124. package/dist/cjs/query-builder/insert-query-builder.d.ts +99 -47
  125. package/dist/cjs/query-builder/insert-query-builder.js +57 -26
  126. package/dist/cjs/query-builder/insert-result.d.ts +3 -4
  127. package/dist/cjs/query-builder/insert-result.js +5 -14
  128. package/dist/cjs/query-builder/join-builder.d.ts +2 -35
  129. package/dist/cjs/query-builder/join-builder.js +1 -56
  130. package/dist/cjs/query-builder/json-path-builder.d.ts +212 -0
  131. package/dist/cjs/query-builder/json-path-builder.js +191 -0
  132. package/dist/cjs/query-builder/no-result-error.d.ts +1 -1
  133. package/dist/cjs/query-builder/on-conflict-builder.d.ts +144 -73
  134. package/dist/cjs/query-builder/on-conflict-builder.js +2 -111
  135. package/dist/cjs/query-builder/over-builder.d.ts +2 -2
  136. package/dist/cjs/query-builder/over-builder.js +1 -1
  137. package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
  138. package/dist/cjs/query-builder/select-query-builder.d.ts +184 -138
  139. package/dist/cjs/query-builder/select-query-builder.js +64 -130
  140. package/dist/cjs/query-builder/update-query-builder.d.ts +143 -71
  141. package/dist/cjs/query-builder/update-query-builder.js +47 -60
  142. package/dist/cjs/query-builder/update-result.d.ts +3 -3
  143. package/dist/cjs/query-builder/update-result.js +5 -9
  144. package/dist/cjs/query-builder/where-interface.d.ts +73 -38
  145. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  146. package/dist/cjs/query-compiler/compiled-query.js +2 -2
  147. package/dist/cjs/query-compiler/default-query-compiler.d.ts +12 -0
  148. package/dist/cjs/query-compiler/default-query-compiler.js +67 -5
  149. package/dist/cjs/query-compiler/query-compiler.d.ts +1 -1
  150. package/dist/cjs/query-creator.d.ts +4 -2
  151. package/dist/cjs/schema/alter-column-builder.d.ts +13 -7
  152. package/dist/cjs/schema/alter-column-builder.js +20 -22
  153. package/dist/cjs/schema/alter-table-builder.d.ts +0 -4
  154. package/dist/cjs/schema/alter-table-builder.js +2 -9
  155. package/dist/cjs/schema/column-definition-builder.d.ts +1 -1
  156. package/dist/cjs/schema/column-definition-builder.js +1 -2
  157. package/dist/cjs/schema/create-index-builder.d.ts +49 -7
  158. package/dist/cjs/schema/create-index-builder.js +52 -14
  159. package/dist/cjs/schema/create-table-builder.d.ts +2 -6
  160. package/dist/cjs/schema/create-table-builder.js +0 -6
  161. package/dist/cjs/schema/schema.d.ts +1 -2
  162. package/dist/cjs/schema/schema.js +2 -3
  163. package/dist/cjs/util/column-type.d.ts +21 -16
  164. package/dist/cjs/util/explainable.d.ts +1 -1
  165. package/dist/cjs/util/infer-result.d.ts +2 -2
  166. package/dist/cjs/util/log.d.ts +6 -6
  167. package/dist/cjs/util/log.js +4 -4
  168. package/dist/cjs/util/object-utils.d.ts +2 -1
  169. package/dist/cjs/util/require-all-props.d.ts +1 -1
  170. package/dist/cjs/util/type-utils.d.ts +54 -40
  171. package/dist/esm/dialect/database-introspector.d.ts +1 -1
  172. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -1
  173. package/dist/esm/dialect/mysql/mysql-driver.js +5 -1
  174. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  175. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
  176. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
  177. package/dist/esm/driver/database-connection.d.ts +6 -0
  178. package/dist/esm/driver/driver.d.ts +1 -1
  179. package/dist/esm/driver/runtime-driver.js +6 -6
  180. package/dist/esm/dynamic/dynamic.d.ts +1 -1
  181. package/dist/esm/dynamic/dynamic.js +1 -1
  182. package/dist/esm/expression/expression-builder.d.ts +263 -109
  183. package/dist/esm/expression/expression-builder.js +40 -9
  184. package/dist/esm/expression/expression-wrapper.d.ts +296 -5
  185. package/dist/esm/expression/expression-wrapper.js +67 -1
  186. package/dist/esm/helpers/mysql.d.ts +3 -3
  187. package/dist/esm/helpers/mysql.js +2 -2
  188. package/dist/esm/helpers/postgres.d.ts +31 -19
  189. package/dist/esm/helpers/postgres.js +30 -18
  190. package/dist/esm/index.d.ts +10 -0
  191. package/dist/esm/index.js +10 -0
  192. package/dist/esm/kysely.d.ts +42 -15
  193. package/dist/esm/kysely.js +42 -11
  194. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -7
  195. package/dist/esm/operation-node/aggregate-function-node.js +1 -1
  196. package/dist/esm/operation-node/alter-column-node.d.ts +3 -5
  197. package/dist/esm/operation-node/alter-column-node.js +2 -7
  198. package/dist/esm/operation-node/alter-table-node.d.ts +3 -3
  199. package/dist/esm/operation-node/alter-table-node.js +1 -2
  200. package/dist/esm/operation-node/case-node.d.ts +19 -0
  201. package/dist/esm/operation-node/case-node.js +40 -0
  202. package/dist/esm/operation-node/column-definition-node.d.ts +1 -1
  203. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  204. package/dist/esm/operation-node/create-index-node.d.ts +4 -3
  205. package/dist/esm/operation-node/create-index-node.js +6 -0
  206. package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
  207. package/dist/esm/operation-node/create-table-node.d.ts +2 -2
  208. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  209. package/dist/esm/operation-node/create-view-node.d.ts +1 -1
  210. package/dist/esm/operation-node/data-type-node.d.ts +2 -2
  211. package/dist/esm/operation-node/drop-constraint-node.d.ts +1 -1
  212. package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
  213. package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
  214. package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
  215. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  216. package/dist/esm/operation-node/drop-view-node.d.ts +1 -1
  217. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
  218. package/dist/esm/operation-node/generated-node.d.ts +1 -1
  219. package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
  220. package/dist/esm/operation-node/join-node.d.ts +1 -2
  221. package/dist/esm/operation-node/join-node.js +0 -8
  222. package/dist/esm/operation-node/json-operator-chain-node.d.ts +16 -0
  223. package/dist/esm/operation-node/json-operator-chain-node.js +23 -0
  224. package/dist/esm/operation-node/json-path-leg-node.d.ts +14 -0
  225. package/dist/esm/operation-node/json-path-leg-node.js +17 -0
  226. package/dist/esm/operation-node/json-path-node.d.ts +16 -0
  227. package/dist/esm/operation-node/json-path-node.js +23 -0
  228. package/dist/esm/operation-node/json-reference-node.d.ts +17 -0
  229. package/dist/esm/operation-node/json-reference-node.js +23 -0
  230. package/dist/esm/operation-node/on-conflict-node.d.ts +1 -1
  231. package/dist/esm/operation-node/on-duplicate-key-node.d.ts +1 -1
  232. package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -0
  233. package/dist/esm/operation-node/operation-node-transformer.js +53 -3
  234. package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -0
  235. package/dist/esm/operation-node/operation-node-visitor.js +6 -0
  236. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  237. package/dist/esm/operation-node/operator-node.d.ts +13 -9
  238. package/dist/esm/operation-node/operator-node.js +10 -1
  239. package/dist/esm/operation-node/query-node.d.ts +9 -10
  240. package/dist/esm/operation-node/query-node.js +0 -8
  241. package/dist/esm/operation-node/reference-node.d.ts +2 -2
  242. package/dist/esm/operation-node/reference-node.js +1 -1
  243. package/dist/esm/operation-node/references-node.d.ts +1 -1
  244. package/dist/esm/operation-node/select-modifier-node.d.ts +1 -1
  245. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  246. package/dist/esm/operation-node/select-query-node.js +0 -8
  247. package/dist/esm/operation-node/selection-node.d.ts +1 -1
  248. package/dist/esm/operation-node/set-operation-node.d.ts +1 -1
  249. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +1 -1
  250. package/dist/esm/operation-node/update-query-node.d.ts +1 -1
  251. package/dist/esm/operation-node/values-node.d.ts +1 -1
  252. package/dist/esm/operation-node/when-node.d.ts +14 -0
  253. package/dist/esm/operation-node/when-node.js +22 -0
  254. package/dist/esm/operation-node/with-node.d.ts +1 -1
  255. package/dist/esm/parser/binary-operation-parser.d.ts +9 -11
  256. package/dist/esm/parser/binary-operation-parser.js +38 -99
  257. package/dist/esm/parser/coalesce-parser.d.ts +1 -1
  258. package/dist/esm/parser/data-type-parser.d.ts +1 -1
  259. package/dist/esm/parser/default-value-parser.d.ts +1 -1
  260. package/dist/esm/parser/expression-parser.d.ts +6 -5
  261. package/dist/esm/parser/group-by-parser.d.ts +2 -2
  262. package/dist/esm/parser/insert-values-parser.d.ts +4 -4
  263. package/dist/esm/parser/join-parser.d.ts +4 -4
  264. package/dist/esm/parser/order-by-parser.d.ts +4 -3
  265. package/dist/esm/parser/order-by-parser.js +3 -0
  266. package/dist/esm/parser/partition-by-parser.d.ts +2 -2
  267. package/dist/esm/parser/reference-parser.d.ts +16 -8
  268. package/dist/esm/parser/reference-parser.js +40 -15
  269. package/dist/esm/parser/returning-parser.d.ts +2 -2
  270. package/dist/esm/parser/select-parser.d.ts +9 -9
  271. package/dist/esm/parser/table-parser.d.ts +14 -13
  272. package/dist/esm/parser/unary-operation-parser.d.ts +1 -1
  273. package/dist/esm/parser/update-set-parser.d.ts +3 -3
  274. package/dist/esm/parser/update-set-parser.js +2 -4
  275. package/dist/esm/parser/value-parser.d.ts +4 -4
  276. package/dist/esm/parser/with-parser.d.ts +14 -9
  277. package/dist/esm/plugin/camel-case/camel-case.d.ts +1 -1
  278. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
  279. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +29 -0
  280. package/dist/esm/plugin/with-schema/with-schema-transformer.js +22 -6
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -38
  282. package/dist/esm/query-builder/aggregate-function-builder.js +5 -60
  283. package/dist/esm/query-builder/case-builder.d.ts +111 -0
  284. package/dist/esm/query-builder/case-builder.js +69 -0
  285. package/dist/esm/query-builder/delete-query-builder.d.ts +130 -63
  286. package/dist/esm/query-builder/delete-query-builder.js +43 -60
  287. package/dist/esm/query-builder/delete-result.d.ts +1 -2
  288. package/dist/esm/query-builder/delete-result.js +2 -8
  289. package/dist/esm/query-builder/function-module.d.ts +78 -69
  290. package/dist/esm/query-builder/function-module.js +13 -17
  291. package/dist/esm/query-builder/having-interface.d.ts +2 -35
  292. package/dist/esm/query-builder/insert-query-builder.d.ts +99 -47
  293. package/dist/esm/query-builder/insert-query-builder.js +57 -26
  294. package/dist/esm/query-builder/insert-result.d.ts +3 -4
  295. package/dist/esm/query-builder/insert-result.js +5 -14
  296. package/dist/esm/query-builder/join-builder.d.ts +2 -35
  297. package/dist/esm/query-builder/join-builder.js +2 -57
  298. package/dist/esm/query-builder/json-path-builder.d.ts +212 -0
  299. package/dist/esm/query-builder/json-path-builder.js +186 -0
  300. package/dist/esm/query-builder/no-result-error.d.ts +1 -1
  301. package/dist/esm/query-builder/on-conflict-builder.d.ts +144 -73
  302. package/dist/esm/query-builder/on-conflict-builder.js +3 -112
  303. package/dist/esm/query-builder/over-builder.d.ts +2 -2
  304. package/dist/esm/query-builder/over-builder.js +1 -1
  305. package/dist/esm/query-builder/returning-interface.d.ts +1 -1
  306. package/dist/esm/query-builder/select-query-builder.d.ts +184 -138
  307. package/dist/esm/query-builder/select-query-builder.js +65 -131
  308. package/dist/esm/query-builder/update-query-builder.d.ts +143 -71
  309. package/dist/esm/query-builder/update-query-builder.js +48 -61
  310. package/dist/esm/query-builder/update-result.d.ts +3 -3
  311. package/dist/esm/query-builder/update-result.js +5 -9
  312. package/dist/esm/query-builder/where-interface.d.ts +73 -38
  313. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  314. package/dist/esm/query-compiler/compiled-query.js +2 -2
  315. package/dist/esm/query-compiler/default-query-compiler.d.ts +12 -0
  316. package/dist/esm/query-compiler/default-query-compiler.js +67 -5
  317. package/dist/esm/query-compiler/query-compiler.d.ts +1 -1
  318. package/dist/esm/query-creator.d.ts +4 -2
  319. package/dist/esm/schema/alter-column-builder.d.ts +13 -7
  320. package/dist/esm/schema/alter-column-builder.js +20 -22
  321. package/dist/esm/schema/alter-table-builder.d.ts +0 -4
  322. package/dist/esm/schema/alter-table-builder.js +2 -9
  323. package/dist/esm/schema/column-definition-builder.d.ts +1 -1
  324. package/dist/esm/schema/column-definition-builder.js +1 -2
  325. package/dist/esm/schema/create-index-builder.d.ts +49 -7
  326. package/dist/esm/schema/create-index-builder.js +54 -16
  327. package/dist/esm/schema/create-table-builder.d.ts +2 -6
  328. package/dist/esm/schema/create-table-builder.js +0 -6
  329. package/dist/esm/schema/schema.d.ts +1 -2
  330. package/dist/esm/schema/schema.js +2 -3
  331. package/dist/esm/util/column-type.d.ts +21 -16
  332. package/dist/esm/util/explainable.d.ts +1 -1
  333. package/dist/esm/util/infer-result.d.ts +2 -2
  334. package/dist/esm/util/log.d.ts +6 -6
  335. package/dist/esm/util/log.js +4 -4
  336. package/dist/esm/util/object-utils.d.ts +2 -1
  337. package/dist/esm/util/require-all-props.d.ts +1 -1
  338. package/dist/esm/util/type-utils.d.ts +54 -40
  339. package/package.json +25 -23
  340. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  341. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +0 -2
  342. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  343. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +0 -2
  344. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  345. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +0 -2
  346. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +0 -62
  347. package/dist/esm/query-builder/deprecated-having-expression-builder.js +0 -2
  348. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +0 -62
  349. package/dist/esm/query-builder/deprecated-on-expression-builder.js +0 -2
  350. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +0 -62
  351. package/dist/esm/query-builder/deprecated-where-expression-builder.js +0 -2
@@ -0,0 +1,212 @@
1
+ import { AliasedExpression, Expression } from '../expression/expression.js';
2
+ import { AliasNode } from '../operation-node/alias-node.js';
3
+ import { JSONReferenceNode } from '../operation-node/json-reference-node.js';
4
+ import { OperationNode } from '../operation-node/operation-node.js';
5
+ export declare class JSONPathBuilder<S, O = S> {
6
+ #private;
7
+ constructor(node: JSONReferenceNode);
8
+ /**
9
+ * Access an element of a JSON array in a specific location.
10
+ *
11
+ * Since there's no guarantee an element exists in the given array location, the
12
+ * resulting type is always nullable. If you're sure the element exists, you
13
+ * should use {@link SelectQueryBuilder.$assertType} to narrow the type safely.
14
+ *
15
+ * See also {@link key} to access properties of JSON objects.
16
+ *
17
+ * ### Examples
18
+ *
19
+ * ```ts
20
+ * db.selectFrom('person').select(eb =>
21
+ * eb.ref('nicknames', '->').at(0).as('primary_nickname')
22
+ * )
23
+ *
24
+ * The generated SQL (PostgreSQL):
25
+ *
26
+ * ```sql
27
+ * select "nicknames"->0 as "primary_nickname" from "person"
28
+ *```
29
+ *
30
+ * Combined with {@link key}:
31
+ *
32
+ * ```ts
33
+ * db.selectFrom('person').select(eb =>
34
+ * eb.ref('experience', '->').at(0).key('role').as('first_role')
35
+ * )
36
+ * ```
37
+ *
38
+ * The generated SQL (PostgreSQL):
39
+ *
40
+ * ```sql
41
+ * select "experience"->0->'role' as "first_role" from "person"
42
+ * ```
43
+ *
44
+ * You can use `'last'` to access the last element of the array in MySQL:
45
+ *
46
+ * ```ts
47
+ * db.selectFrom('person').select(eb =>
48
+ * eb.ref('nicknames', '->$').at('last').as('last_nickname')
49
+ * )
50
+ * ```
51
+ *
52
+ * The generated SQL (MySQL):
53
+ *
54
+ * ```sql
55
+ * select `nicknames`->'$[last]' as `last_nickname` from `person`
56
+ * ```
57
+ *
58
+ * Or `'#-1'` in SQLite:
59
+ *
60
+ * ```ts
61
+ * db.selectFrom('person').select(eb =>
62
+ * eb.ref('nicknames', '->>$').at('#-1').as('last_nickname')
63
+ * )
64
+ * ```
65
+ *
66
+ * The generated SQL (SQLite):
67
+ *
68
+ * ```sql
69
+ * select "nicknames"->>'$[#-1]' as `last_nickname` from `person`
70
+ * ```
71
+ */
72
+ at<I extends any[] extends O ? number | 'last' | `#-${number}` : never, O2 = null | NonNullable<NonNullable<O>[keyof NonNullable<O> & number]>>(index: `${I}` extends `${any}.${any}` | `#--${any}` ? never : I): TraversedJSONPathBuilder<S, O2>;
73
+ /**
74
+ * Access a property of a JSON object.
75
+ *
76
+ * If a field is optional, the resulting type will be nullable.
77
+ *
78
+ * See also {@link at} to access elements of JSON arrays.
79
+ *
80
+ * ### Examples
81
+ *
82
+ * ```ts
83
+ * db.selectFrom('person').select(eb =>
84
+ * eb.ref('address', '->').key('city').as('city')
85
+ * )
86
+ * ```
87
+ *
88
+ * The generated SQL (PostgreSQL):
89
+ *
90
+ * ```sql
91
+ * select "address"->'city' as "city" from "person"
92
+ * ```
93
+ *
94
+ * Going deeper:
95
+ *
96
+ * ```ts
97
+ * db.selectFrom('person').select(eb =>
98
+ * eb.ref('profile', '->$').key('website').key('url').as('website_url')
99
+ * )
100
+ * ```
101
+ *
102
+ * The generated SQL (MySQL):
103
+ *
104
+ * ```sql
105
+ * select `profile`->'$.website.url' as `website_url` from `person`
106
+ * ```
107
+ *
108
+ * Combined with {@link at}:
109
+ *
110
+ * ```ts
111
+ * db.selectFrom('person').select(eb =>
112
+ * eb.ref('profile', '->').key('addresses').at(0).key('city').as('city')
113
+ * )
114
+ * ```
115
+ *
116
+ * The generated SQL (PostgreSQL):
117
+ *
118
+ * ```sql
119
+ * select "profile"->'addresses'->0->'city' as "city" from "person"
120
+ * ```
121
+ */
122
+ key<K extends any[] extends O ? never : O extends object ? keyof NonNullable<O> & string : never, O2 = undefined extends O ? null | NonNullable<NonNullable<O>[K]> : null extends O ? null | NonNullable<NonNullable<O>[K]> : NonNullable<O>[K]>(key: K): TraversedJSONPathBuilder<S, O2>;
123
+ }
124
+ export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O> implements Expression<O> {
125
+ #private;
126
+ constructor(node: JSONReferenceNode);
127
+ /** @private */
128
+ /**
129
+ * All expressions need to have this getter for complicated type-related reasons.
130
+ * Simply add this getter for your expression and always return `undefined` from it:
131
+ *
132
+ * ```ts
133
+ * class SomeExpression<T> implements Expression<T> {
134
+ * get expressionType(): T | undefined {
135
+ * return undefined
136
+ * }
137
+ * }
138
+ * ```
139
+ *
140
+ * The getter is needed to make the expression assignable to another expression only
141
+ * if the types `T` are assignable. Without this property (or some other property
142
+ * that references `T`), you could assing `Expression<string>` to `Expression<number>`.
143
+ */
144
+ get expressionType(): O | undefined;
145
+ /**
146
+ * Returns an aliased version of the expression.
147
+ *
148
+ * In addition to slapping `as "the_alias"` to the end of the SQL,
149
+ * this method also provides strict typing:
150
+ *
151
+ * ```ts
152
+ * const result = await db
153
+ * .selectFrom('person')
154
+ * .select(eb =>
155
+ * eb.cmpr('first_name', '=', 'Jennifer').as('is_jennifer')
156
+ * )
157
+ * .executeTakeFirstOrThrow()
158
+ *
159
+ * // `is_jennifer: SqlBool` field exists in the result type.
160
+ * console.log(result.is_jennifer)
161
+ * ```
162
+ *
163
+ * The generated SQL (PostgreSQL):
164
+ *
165
+ * ```ts
166
+ * select "first_name" = $1 as "is_jennifer"
167
+ * from "person"
168
+ * ```
169
+ */
170
+ as<A extends string>(alias: A): AliasedExpression<O, A>;
171
+ as<A extends string>(alias: Expression<unknown>): AliasedExpression<O, A>;
172
+ /**
173
+ * Change the output type of the json path.
174
+ *
175
+ * This method call doesn't change the SQL in any way. This methods simply
176
+ * returns a copy of this `JSONPathBuilder` with a new output type.
177
+ */
178
+ $castTo<T>(): JSONPathBuilder<T>;
179
+ /**
180
+ * Creates the OperationNode that describes how to compile this expression into SQL.
181
+ *
182
+ * If you are creating a custom expression, it's often easiest to use the {@link sql}
183
+ * template tag to build the node:
184
+ *
185
+ * ```ts
186
+ * class SomeExpression<T> implements Expression<T> {
187
+ * toOperationNode(): OperationNode {
188
+ * return sql`some sql here`.toOperationNode()
189
+ * }
190
+ * }
191
+ * ```
192
+ */
193
+ toOperationNode(): OperationNode;
194
+ }
195
+ export declare class AliasedJSONPathBuilder<O, A extends string> implements AliasedExpression<O, A> {
196
+ #private;
197
+ constructor(jsonPath: TraversedJSONPathBuilder<any, O>, alias: A | Expression<unknown>);
198
+ /** @private */
199
+ /**
200
+ * Returns the aliased expression.
201
+ */
202
+ get expression(): Expression<O>;
203
+ /** @private */
204
+ /**
205
+ * Returns the alias.
206
+ */
207
+ get alias(): A | Expression<unknown>;
208
+ /**
209
+ * Creates the OperationNode that describes how to compile this expression into SQL.
210
+ */
211
+ toOperationNode(): AliasNode;
212
+ }
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AliasedJSONPathBuilder = exports.TraversedJSONPathBuilder = exports.JSONPathBuilder = void 0;
4
+ const alias_node_js_1 = require("../operation-node/alias-node.js");
5
+ const identifier_node_js_1 = require("../operation-node/identifier-node.js");
6
+ const json_operator_chain_node_js_1 = require("../operation-node/json-operator-chain-node.js");
7
+ const json_path_leg_node_js_1 = require("../operation-node/json-path-leg-node.js");
8
+ const json_path_node_js_1 = require("../operation-node/json-path-node.js");
9
+ const json_reference_node_js_1 = require("../operation-node/json-reference-node.js");
10
+ const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
11
+ const value_node_js_1 = require("../operation-node/value-node.js");
12
+ class JSONPathBuilder {
13
+ #node;
14
+ constructor(node) {
15
+ this.#node = node;
16
+ }
17
+ /**
18
+ * Access an element of a JSON array in a specific location.
19
+ *
20
+ * Since there's no guarantee an element exists in the given array location, the
21
+ * resulting type is always nullable. If you're sure the element exists, you
22
+ * should use {@link SelectQueryBuilder.$assertType} to narrow the type safely.
23
+ *
24
+ * See also {@link key} to access properties of JSON objects.
25
+ *
26
+ * ### Examples
27
+ *
28
+ * ```ts
29
+ * db.selectFrom('person').select(eb =>
30
+ * eb.ref('nicknames', '->').at(0).as('primary_nickname')
31
+ * )
32
+ *
33
+ * The generated SQL (PostgreSQL):
34
+ *
35
+ * ```sql
36
+ * select "nicknames"->0 as "primary_nickname" from "person"
37
+ *```
38
+ *
39
+ * Combined with {@link key}:
40
+ *
41
+ * ```ts
42
+ * db.selectFrom('person').select(eb =>
43
+ * eb.ref('experience', '->').at(0).key('role').as('first_role')
44
+ * )
45
+ * ```
46
+ *
47
+ * The generated SQL (PostgreSQL):
48
+ *
49
+ * ```sql
50
+ * select "experience"->0->'role' as "first_role" from "person"
51
+ * ```
52
+ *
53
+ * You can use `'last'` to access the last element of the array in MySQL:
54
+ *
55
+ * ```ts
56
+ * db.selectFrom('person').select(eb =>
57
+ * eb.ref('nicknames', '->$').at('last').as('last_nickname')
58
+ * )
59
+ * ```
60
+ *
61
+ * The generated SQL (MySQL):
62
+ *
63
+ * ```sql
64
+ * select `nicknames`->'$[last]' as `last_nickname` from `person`
65
+ * ```
66
+ *
67
+ * Or `'#-1'` in SQLite:
68
+ *
69
+ * ```ts
70
+ * db.selectFrom('person').select(eb =>
71
+ * eb.ref('nicknames', '->>$').at('#-1').as('last_nickname')
72
+ * )
73
+ * ```
74
+ *
75
+ * The generated SQL (SQLite):
76
+ *
77
+ * ```sql
78
+ * select "nicknames"->>'$[#-1]' as `last_nickname` from `person`
79
+ * ```
80
+ */
81
+ at(index) {
82
+ return this.#createBuilderWithPathLeg('ArrayLocation', index);
83
+ }
84
+ /**
85
+ * Access a property of a JSON object.
86
+ *
87
+ * If a field is optional, the resulting type will be nullable.
88
+ *
89
+ * See also {@link at} to access elements of JSON arrays.
90
+ *
91
+ * ### Examples
92
+ *
93
+ * ```ts
94
+ * db.selectFrom('person').select(eb =>
95
+ * eb.ref('address', '->').key('city').as('city')
96
+ * )
97
+ * ```
98
+ *
99
+ * The generated SQL (PostgreSQL):
100
+ *
101
+ * ```sql
102
+ * select "address"->'city' as "city" from "person"
103
+ * ```
104
+ *
105
+ * Going deeper:
106
+ *
107
+ * ```ts
108
+ * db.selectFrom('person').select(eb =>
109
+ * eb.ref('profile', '->$').key('website').key('url').as('website_url')
110
+ * )
111
+ * ```
112
+ *
113
+ * The generated SQL (MySQL):
114
+ *
115
+ * ```sql
116
+ * select `profile`->'$.website.url' as `website_url` from `person`
117
+ * ```
118
+ *
119
+ * Combined with {@link at}:
120
+ *
121
+ * ```ts
122
+ * db.selectFrom('person').select(eb =>
123
+ * eb.ref('profile', '->').key('addresses').at(0).key('city').as('city')
124
+ * )
125
+ * ```
126
+ *
127
+ * The generated SQL (PostgreSQL):
128
+ *
129
+ * ```sql
130
+ * select "profile"->'addresses'->0->'city' as "city" from "person"
131
+ * ```
132
+ */
133
+ key(key) {
134
+ return this.#createBuilderWithPathLeg('Member', key);
135
+ }
136
+ #createBuilderWithPathLeg(legType, value) {
137
+ return new TraversedJSONPathBuilder(json_reference_node_js_1.JSONReferenceNode.cloneWithTraversal(this.#node, json_path_node_js_1.JSONPathNode.is(this.#node.traversal)
138
+ ? json_path_node_js_1.JSONPathNode.cloneWithLeg(this.#node.traversal, json_path_leg_node_js_1.JSONPathLegNode.create(legType, value))
139
+ : json_operator_chain_node_js_1.JSONOperatorChainNode.cloneWithValue(this.#node.traversal, value_node_js_1.ValueNode.createImmediate(value))));
140
+ }
141
+ }
142
+ exports.JSONPathBuilder = JSONPathBuilder;
143
+ class TraversedJSONPathBuilder extends JSONPathBuilder {
144
+ #node;
145
+ constructor(node) {
146
+ super(node);
147
+ this.#node = node;
148
+ }
149
+ /** @private */
150
+ get expressionType() {
151
+ return undefined;
152
+ }
153
+ as(alias) {
154
+ return new AliasedJSONPathBuilder(this, alias);
155
+ }
156
+ /**
157
+ * Change the output type of the json path.
158
+ *
159
+ * This method call doesn't change the SQL in any way. This methods simply
160
+ * returns a copy of this `JSONPathBuilder` with a new output type.
161
+ */
162
+ $castTo() {
163
+ return new JSONPathBuilder(this.#node);
164
+ }
165
+ toOperationNode() {
166
+ return this.#node;
167
+ }
168
+ }
169
+ exports.TraversedJSONPathBuilder = TraversedJSONPathBuilder;
170
+ class AliasedJSONPathBuilder {
171
+ #jsonPath;
172
+ #alias;
173
+ constructor(jsonPath, alias) {
174
+ this.#jsonPath = jsonPath;
175
+ this.#alias = alias;
176
+ }
177
+ /** @private */
178
+ get expression() {
179
+ return this.#jsonPath;
180
+ }
181
+ /** @private */
182
+ get alias() {
183
+ return this.#alias;
184
+ }
185
+ toOperationNode() {
186
+ return alias_node_js_1.AliasNode.create(this.#jsonPath.toOperationNode(), (0, operation_node_source_js_1.isOperationNodeSource)(this.#alias)
187
+ ? this.#alias.toOperationNode()
188
+ : identifier_node_js_1.IdentifierNode.create(this.#alias));
189
+ }
190
+ }
191
+ exports.AliasedJSONPathBuilder = AliasedJSONPathBuilder;
@@ -1,5 +1,5 @@
1
1
  import { QueryNode } from '../operation-node/query-node.js';
2
- export declare type NoResultErrorConstructor = new (node: QueryNode) => Error;
2
+ export type NoResultErrorConstructor = new (node: QueryNode) => Error;
3
3
  export declare class NoResultError extends Error {
4
4
  /**
5
5
  * The operation node tree of the query that was executed.