kysely 0.21.6 → 0.23.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 (380) hide show
  1. package/CONTRIBUTING.md +70 -0
  2. package/README.md +27 -4
  3. package/dist/cjs/dialect/database-introspector.d.ts +4 -0
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +6 -3
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-driver.js +7 -2
  7. package/dist/cjs/dialect/postgres/postgres-introspector.js +8 -0
  8. package/dist/cjs/dialect/sqlite/sqlite-driver.js +4 -3
  9. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
  10. package/dist/cjs/driver/database-connection.d.ts +6 -2
  11. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +2 -3
  12. package/dist/cjs/dynamic/dynamic-reference-builder.js +1 -1
  13. package/dist/cjs/expression/expression.d.ts +100 -0
  14. package/dist/cjs/expression/expression.js +16 -0
  15. package/dist/cjs/index.d.ts +17 -8
  16. package/dist/cjs/index.js +15 -4
  17. package/dist/cjs/kysely.d.ts +3 -3
  18. package/dist/cjs/kysely.js +3 -3
  19. package/dist/cjs/migration/file-migration-provider.js +11 -4
  20. package/dist/cjs/operation-node/aggregate-function-node.d.ts +25 -0
  21. package/dist/cjs/operation-node/aggregate-function-node.js +48 -0
  22. package/dist/cjs/operation-node/alias-node.d.ts +3 -10
  23. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
  24. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
  25. package/dist/cjs/operation-node/alter-table-node.js +9 -1
  26. package/dist/cjs/operation-node/and-node.d.ts +3 -4
  27. package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
  28. package/dist/cjs/operation-node/binary-operation-node.js +20 -0
  29. package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
  30. package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
  31. package/dist/cjs/operation-node/column-definition-node.js +16 -0
  32. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  33. package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
  34. package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
  35. package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
  36. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  37. package/dist/cjs/operation-node/create-type-node.js +1 -2
  38. package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
  39. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
  40. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/drop-type-node.js +1 -2
  42. package/dist/cjs/operation-node/explain-node.d.ts +2 -4
  43. package/dist/cjs/operation-node/explain-node.js +1 -1
  44. package/dist/cjs/operation-node/from-node.d.ts +3 -4
  45. package/dist/cjs/operation-node/generated-node.d.ts +2 -3
  46. package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
  47. package/dist/cjs/operation-node/group-by-node.d.ts +1 -1
  48. package/dist/cjs/operation-node/group-by-node.js +3 -3
  49. package/dist/cjs/operation-node/having-node.d.ts +3 -4
  50. package/dist/cjs/operation-node/having-node.js +4 -4
  51. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -4
  52. package/dist/cjs/operation-node/join-node.d.ts +5 -9
  53. package/dist/cjs/operation-node/join-node.js +6 -6
  54. package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
  55. package/dist/cjs/operation-node/on-conflict-node.js +12 -12
  56. package/dist/cjs/operation-node/on-node.d.ts +3 -4
  57. package/dist/cjs/operation-node/on-node.js +4 -4
  58. package/dist/cjs/operation-node/operation-node-transformer.d.ts +14 -4
  59. package/dist/cjs/operation-node/operation-node-transformer.js +60 -20
  60. package/dist/cjs/operation-node/operation-node-visitor.d.ts +14 -4
  61. package/dist/cjs/operation-node/operation-node-visitor.js +7 -2
  62. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  63. package/dist/cjs/operation-node/operator-node.d.ts +5 -3
  64. package/dist/cjs/operation-node/operator-node.js +3 -5
  65. package/dist/cjs/operation-node/or-node.d.ts +3 -4
  66. package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
  67. package/dist/cjs/operation-node/over-node.d.ts +19 -0
  68. package/dist/cjs/operation-node/over-node.js +35 -0
  69. package/dist/cjs/operation-node/parens-node.d.ts +2 -3
  70. package/dist/cjs/operation-node/partition-by-item-node.d.ts +13 -0
  71. package/dist/cjs/operation-node/{filter-node.js → partition-by-item-node.js} +6 -8
  72. package/dist/cjs/operation-node/partition-by-node.d.ts +14 -0
  73. package/dist/cjs/operation-node/partition-by-node.js +24 -0
  74. package/dist/cjs/operation-node/query-node.d.ts +2 -3
  75. package/dist/cjs/operation-node/query-node.js +6 -6
  76. package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
  77. package/dist/cjs/operation-node/select-modifier-node.js +1 -1
  78. package/dist/cjs/operation-node/select-query-node.d.ts +8 -9
  79. package/dist/cjs/operation-node/select-query-node.js +14 -14
  80. package/dist/cjs/operation-node/selection-node.d.ts +2 -3
  81. package/dist/cjs/operation-node/set-operation-node.d.ts +15 -0
  82. package/dist/cjs/operation-node/{union-node.js → set-operation-node.js} +7 -6
  83. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
  84. package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
  85. package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
  86. package/dist/cjs/operation-node/unary-operation-node.js +19 -0
  87. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  88. package/dist/cjs/operation-node/value-list-node.d.ts +2 -8
  89. package/dist/cjs/operation-node/where-node.d.ts +3 -4
  90. package/dist/cjs/operation-node/where-node.js +4 -4
  91. package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
  92. package/dist/cjs/parser/binary-operation-parser.js +99 -0
  93. package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
  94. package/dist/cjs/parser/coalesce-parser.js +11 -0
  95. package/dist/cjs/parser/data-type-parser.d.ts +5 -5
  96. package/dist/cjs/parser/default-value-parser.d.ts +4 -5
  97. package/dist/cjs/parser/default-value-parser.js +2 -2
  98. package/dist/cjs/parser/expression-parser.d.ts +10 -0
  99. package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
  100. package/dist/cjs/parser/group-by-parser.d.ts +1 -1
  101. package/dist/cjs/parser/group-by-parser.js +2 -2
  102. package/dist/cjs/parser/identifier-parser.d.ts +2 -0
  103. package/dist/cjs/parser/identifier-parser.js +23 -0
  104. package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
  105. package/dist/cjs/parser/insert-values-parser.js +2 -2
  106. package/dist/cjs/parser/join-parser.js +2 -2
  107. package/dist/cjs/parser/order-by-parser.d.ts +2 -2
  108. package/dist/cjs/parser/parse-utils.d.ts +2 -0
  109. package/dist/cjs/parser/parse-utils.js +9 -1
  110. package/dist/cjs/parser/partition-by-parser.d.ts +6 -0
  111. package/dist/cjs/parser/partition-by-parser.js +9 -0
  112. package/dist/cjs/parser/reference-parser.d.ts +14 -13
  113. package/dist/cjs/parser/reference-parser.js +12 -9
  114. package/dist/cjs/parser/select-parser.d.ts +6 -6
  115. package/dist/cjs/parser/select-parser.js +2 -2
  116. package/dist/cjs/parser/set-operation-parser.d.ts +3 -0
  117. package/dist/cjs/parser/set-operation-parser.js +8 -0
  118. package/dist/cjs/parser/table-parser.d.ts +11 -12
  119. package/dist/cjs/parser/table-parser.js +2 -2
  120. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
  121. package/dist/cjs/parser/unary-operation-parser.js +17 -0
  122. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  123. package/dist/cjs/parser/value-parser.d.ts +5 -8
  124. package/dist/cjs/parser/value-parser.js +4 -4
  125. package/dist/cjs/parser/with-parser.d.ts +3 -4
  126. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  127. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +348 -0
  128. package/dist/cjs/query-builder/aggregate-function-builder.js +298 -0
  129. package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
  130. package/dist/cjs/query-builder/delete-query-builder.js +19 -16
  131. package/dist/cjs/query-builder/expression-builder.d.ts +3 -3
  132. package/dist/cjs/query-builder/expression-builder.js +3 -3
  133. package/dist/cjs/query-builder/function-module.d.ts +241 -0
  134. package/dist/cjs/query-builder/function-module.js +214 -0
  135. package/dist/cjs/query-builder/having-interface.d.ts +9 -8
  136. package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
  137. package/dist/cjs/query-builder/insert-query-builder.js +11 -9
  138. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  139. package/dist/cjs/query-builder/insert-result.js +12 -1
  140. package/dist/cjs/query-builder/join-builder.d.ts +9 -8
  141. package/dist/cjs/query-builder/join-builder.js +10 -9
  142. package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
  143. package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
  144. package/dist/cjs/query-builder/over-builder.d.ts +59 -0
  145. package/dist/cjs/query-builder/over-builder.js +50 -0
  146. package/dist/cjs/query-builder/select-query-builder.d.ts +138 -47
  147. package/dist/cjs/query-builder/select-query-builder.js +122 -40
  148. package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
  149. package/dist/cjs/query-builder/update-query-builder.js +19 -16
  150. package/dist/cjs/query-builder/where-interface.d.ts +12 -11
  151. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  152. package/dist/cjs/query-compiler/default-query-compiler.d.ts +15 -5
  153. package/dist/cjs/query-compiler/default-query-compiler.js +78 -47
  154. package/dist/cjs/query-executor/query-executor-base.js +16 -1
  155. package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
  156. package/dist/cjs/raw-builder/raw-builder.js +24 -14
  157. package/dist/cjs/raw-builder/sql.d.ts +15 -7
  158. package/dist/cjs/raw-builder/sql.js +6 -0
  159. package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
  160. package/dist/cjs/schema/alter-column-builder.js +55 -0
  161. package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
  162. package/dist/cjs/schema/alter-table-builder.js +65 -280
  163. package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
  164. package/dist/cjs/schema/column-definition-builder.js +189 -0
  165. package/dist/cjs/schema/create-index-builder.d.ts +2 -2
  166. package/dist/cjs/schema/create-table-builder.d.ts +38 -5
  167. package/dist/cjs/schema/create-table-builder.js +36 -1
  168. package/dist/cjs/schema/create-view-builder.d.ts +3 -2
  169. package/dist/cjs/schema/schema.d.ts +2 -2
  170. package/dist/cjs/schema/schema.js +6 -5
  171. package/dist/cjs/util/compilable.d.ts +2 -2
  172. package/dist/cjs/util/explainable.d.ts +2 -2
  173. package/dist/cjs/util/infer-result.d.ts +46 -0
  174. package/dist/cjs/util/infer-result.js +2 -0
  175. package/dist/cjs/util/log-once.d.ts +5 -0
  176. package/dist/cjs/util/log-once.js +16 -0
  177. package/dist/cjs/util/object-utils.d.ts +1 -0
  178. package/dist/cjs/util/object-utils.js +5 -1
  179. package/dist/cjs/util/type-utils.d.ts +3 -13
  180. package/dist/esm/dialect/database-introspector.d.ts +4 -0
  181. package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
  182. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  183. package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
  184. package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
  185. package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
  186. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  187. package/dist/esm/driver/database-connection.d.ts +6 -2
  188. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
  189. package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
  190. package/dist/esm/expression/expression.d.ts +100 -0
  191. package/dist/esm/expression/expression.js +12 -0
  192. package/dist/esm/index.d.ts +17 -8
  193. package/dist/esm/index.js +13 -4
  194. package/dist/esm/kysely.d.ts +3 -3
  195. package/dist/esm/kysely.js +3 -3
  196. package/dist/esm/migration/file-migration-provider.js +11 -4
  197. package/dist/esm/operation-node/aggregate-function-node.d.ts +25 -0
  198. package/dist/esm/operation-node/aggregate-function-node.js +46 -0
  199. package/dist/esm/operation-node/alias-node.d.ts +3 -10
  200. package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
  201. package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
  202. package/dist/esm/operation-node/alter-table-node.js +9 -1
  203. package/dist/esm/operation-node/and-node.d.ts +3 -4
  204. package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
  205. package/dist/esm/operation-node/binary-operation-node.js +18 -0
  206. package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
  207. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  208. package/dist/esm/operation-node/column-definition-node.js +16 -0
  209. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  210. package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
  211. package/dist/esm/operation-node/create-index-node.d.ts +1 -3
  212. package/dist/esm/operation-node/create-table-node.d.ts +4 -5
  213. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  214. package/dist/esm/operation-node/create-type-node.js +1 -2
  215. package/dist/esm/operation-node/default-value-node.d.ts +2 -4
  216. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  217. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  218. package/dist/esm/operation-node/drop-type-node.js +1 -2
  219. package/dist/esm/operation-node/explain-node.d.ts +2 -4
  220. package/dist/esm/operation-node/explain-node.js +1 -1
  221. package/dist/esm/operation-node/from-node.d.ts +3 -4
  222. package/dist/esm/operation-node/generated-node.d.ts +2 -3
  223. package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
  224. package/dist/esm/operation-node/group-by-node.d.ts +1 -1
  225. package/dist/esm/operation-node/group-by-node.js +3 -3
  226. package/dist/esm/operation-node/having-node.d.ts +3 -4
  227. package/dist/esm/operation-node/having-node.js +4 -4
  228. package/dist/esm/operation-node/insert-query-node.d.ts +1 -4
  229. package/dist/esm/operation-node/join-node.d.ts +5 -9
  230. package/dist/esm/operation-node/join-node.js +6 -6
  231. package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
  232. package/dist/esm/operation-node/on-conflict-node.js +12 -12
  233. package/dist/esm/operation-node/on-node.d.ts +3 -4
  234. package/dist/esm/operation-node/on-node.js +4 -4
  235. package/dist/esm/operation-node/operation-node-transformer.d.ts +14 -4
  236. package/dist/esm/operation-node/operation-node-transformer.js +60 -20
  237. package/dist/esm/operation-node/operation-node-visitor.d.ts +14 -4
  238. package/dist/esm/operation-node/operation-node-visitor.js +7 -2
  239. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  240. package/dist/esm/operation-node/operator-node.d.ts +5 -3
  241. package/dist/esm/operation-node/operator-node.js +2 -4
  242. package/dist/esm/operation-node/or-node.d.ts +3 -4
  243. package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
  244. package/dist/esm/operation-node/over-node.d.ts +19 -0
  245. package/dist/esm/operation-node/over-node.js +33 -0
  246. package/dist/esm/operation-node/parens-node.d.ts +2 -3
  247. package/dist/esm/operation-node/partition-by-item-node.d.ts +13 -0
  248. package/dist/esm/operation-node/partition-by-item-node.js +16 -0
  249. package/dist/esm/operation-node/partition-by-node.d.ts +14 -0
  250. package/dist/esm/operation-node/partition-by-node.js +22 -0
  251. package/dist/esm/operation-node/query-node.d.ts +2 -3
  252. package/dist/esm/operation-node/query-node.js +6 -6
  253. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
  254. package/dist/esm/operation-node/select-modifier-node.js +1 -1
  255. package/dist/esm/operation-node/select-query-node.d.ts +8 -9
  256. package/dist/esm/operation-node/select-query-node.js +14 -14
  257. package/dist/esm/operation-node/selection-node.d.ts +2 -3
  258. package/dist/esm/operation-node/set-operation-node.d.ts +15 -0
  259. package/dist/esm/operation-node/set-operation-node.js +18 -0
  260. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
  261. package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
  262. package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
  263. package/dist/esm/operation-node/unary-operation-node.js +17 -0
  264. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  265. package/dist/esm/operation-node/value-list-node.d.ts +2 -8
  266. package/dist/esm/operation-node/where-node.d.ts +3 -4
  267. package/dist/esm/operation-node/where-node.js +4 -4
  268. package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
  269. package/dist/esm/parser/binary-operation-parser.js +92 -0
  270. package/dist/esm/parser/coalesce-parser.d.ts +4 -0
  271. package/dist/esm/parser/coalesce-parser.js +8 -0
  272. package/dist/esm/parser/data-type-parser.d.ts +5 -5
  273. package/dist/esm/parser/default-value-parser.d.ts +4 -5
  274. package/dist/esm/parser/default-value-parser.js +2 -2
  275. package/dist/esm/parser/expression-parser.d.ts +10 -0
  276. package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
  277. package/dist/esm/parser/group-by-parser.d.ts +1 -1
  278. package/dist/esm/parser/group-by-parser.js +2 -2
  279. package/dist/esm/parser/identifier-parser.d.ts +2 -0
  280. package/dist/esm/parser/identifier-parser.js +20 -0
  281. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  282. package/dist/esm/parser/insert-values-parser.js +2 -2
  283. package/dist/esm/parser/join-parser.js +2 -2
  284. package/dist/esm/parser/order-by-parser.d.ts +2 -2
  285. package/dist/esm/parser/parse-utils.d.ts +2 -0
  286. package/dist/esm/parser/parse-utils.js +7 -0
  287. package/dist/esm/parser/partition-by-parser.d.ts +6 -0
  288. package/dist/esm/parser/partition-by-parser.js +6 -0
  289. package/dist/esm/parser/reference-parser.d.ts +14 -13
  290. package/dist/esm/parser/reference-parser.js +10 -8
  291. package/dist/esm/parser/select-parser.d.ts +6 -6
  292. package/dist/esm/parser/select-parser.js +2 -2
  293. package/dist/esm/parser/set-operation-parser.d.ts +3 -0
  294. package/dist/esm/parser/set-operation-parser.js +5 -0
  295. package/dist/esm/parser/table-parser.d.ts +11 -12
  296. package/dist/esm/parser/table-parser.js +2 -2
  297. package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
  298. package/dist/esm/parser/unary-operation-parser.js +13 -0
  299. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  300. package/dist/esm/parser/value-parser.d.ts +5 -8
  301. package/dist/esm/parser/value-parser.js +4 -4
  302. package/dist/esm/parser/with-parser.d.ts +3 -4
  303. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  304. package/dist/esm/query-builder/aggregate-function-builder.d.ts +348 -0
  305. package/dist/esm/query-builder/aggregate-function-builder.js +294 -0
  306. package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
  307. package/dist/esm/query-builder/delete-query-builder.js +19 -16
  308. package/dist/esm/query-builder/expression-builder.d.ts +3 -3
  309. package/dist/esm/query-builder/expression-builder.js +3 -3
  310. package/dist/esm/query-builder/function-module.d.ts +241 -0
  311. package/dist/esm/query-builder/function-module.js +211 -0
  312. package/dist/esm/query-builder/having-interface.d.ts +9 -8
  313. package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
  314. package/dist/esm/query-builder/insert-query-builder.js +11 -9
  315. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  316. package/dist/esm/query-builder/insert-result.js +12 -1
  317. package/dist/esm/query-builder/join-builder.d.ts +9 -8
  318. package/dist/esm/query-builder/join-builder.js +10 -9
  319. package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
  320. package/dist/esm/query-builder/on-conflict-builder.js +18 -17
  321. package/dist/esm/query-builder/over-builder.d.ts +59 -0
  322. package/dist/esm/query-builder/over-builder.js +47 -0
  323. package/dist/esm/query-builder/select-query-builder.d.ts +138 -47
  324. package/dist/esm/query-builder/select-query-builder.js +120 -38
  325. package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
  326. package/dist/esm/query-builder/update-query-builder.js +19 -16
  327. package/dist/esm/query-builder/where-interface.d.ts +12 -11
  328. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  329. package/dist/esm/query-compiler/default-query-compiler.d.ts +15 -5
  330. package/dist/esm/query-compiler/default-query-compiler.js +79 -48
  331. package/dist/esm/query-executor/query-executor-base.js +16 -1
  332. package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
  333. package/dist/esm/raw-builder/raw-builder.js +23 -14
  334. package/dist/esm/raw-builder/sql.d.ts +15 -7
  335. package/dist/esm/raw-builder/sql.js +6 -0
  336. package/dist/esm/schema/alter-column-builder.d.ts +28 -0
  337. package/dist/esm/schema/alter-column-builder.js +51 -0
  338. package/dist/esm/schema/alter-table-builder.d.ts +39 -341
  339. package/dist/esm/schema/alter-table-builder.js +61 -274
  340. package/dist/esm/schema/column-definition-builder.d.ts +43 -155
  341. package/dist/esm/schema/column-definition-builder.js +189 -0
  342. package/dist/esm/schema/create-index-builder.d.ts +2 -2
  343. package/dist/esm/schema/create-table-builder.d.ts +38 -5
  344. package/dist/esm/schema/create-table-builder.js +36 -1
  345. package/dist/esm/schema/create-view-builder.d.ts +3 -2
  346. package/dist/esm/schema/schema.d.ts +2 -2
  347. package/dist/esm/schema/schema.js +6 -5
  348. package/dist/esm/util/compilable.d.ts +2 -2
  349. package/dist/esm/util/explainable.d.ts +2 -2
  350. package/dist/esm/util/infer-result.d.ts +46 -0
  351. package/dist/esm/util/infer-result.js +2 -0
  352. package/dist/esm/util/log-once.d.ts +5 -0
  353. package/dist/esm/util/log-once.js +13 -0
  354. package/dist/esm/util/object-utils.d.ts +1 -0
  355. package/dist/esm/util/object-utils.js +3 -0
  356. package/dist/esm/util/type-utils.d.ts +3 -13
  357. package/package.json +4 -1
  358. package/dist/cjs/operation-node/filter-node.d.ts +0 -18
  359. package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -17
  360. package/dist/cjs/operation-node/union-node.d.ts +0 -16
  361. package/dist/cjs/parser/complex-expression-parser.d.ts +0 -10
  362. package/dist/cjs/parser/filter-parser.d.ts +0 -24
  363. package/dist/cjs/parser/filter-parser.js +0 -109
  364. package/dist/cjs/parser/union-parser.d.ts +0 -5
  365. package/dist/cjs/parser/union-parser.js +0 -8
  366. package/dist/cjs/query-builder/function-builder.d.ts +0 -133
  367. package/dist/cjs/query-builder/function-builder.js +0 -160
  368. package/dist/esm/operation-node/filter-node.d.ts +0 -18
  369. package/dist/esm/operation-node/filter-node.js +0 -18
  370. package/dist/esm/operation-node/operation-node-utils.d.ts +0 -17
  371. package/dist/esm/operation-node/operation-node-utils.js +0 -2
  372. package/dist/esm/operation-node/union-node.d.ts +0 -16
  373. package/dist/esm/operation-node/union-node.js +0 -17
  374. package/dist/esm/parser/complex-expression-parser.d.ts +0 -10
  375. package/dist/esm/parser/filter-parser.d.ts +0 -24
  376. package/dist/esm/parser/filter-parser.js +0 -100
  377. package/dist/esm/parser/union-parser.d.ts +0 -5
  378. package/dist/esm/parser/union-parser.js +0 -5
  379. package/dist/esm/query-builder/function-builder.d.ts +0 -133
  380. package/dist/esm/query-builder/function-builder.js +0 -157
@@ -0,0 +1,70 @@
1
+ Would love to contribute to Kysely?
2
+
3
+ Awesome! We are not very organized yet. We don't have a plan or a roadmap.
4
+
5
+ Probably the best way to get going is to watch the issue list.
6
+ An issue with a `greenlit` label, has been acknowledged by the team and is ready for development.
7
+ Find such an issue you'd like to tackle and ask to be assigned to it in the comment section.
8
+ Feel free to open an issue if you found a bug or a missing feature you'd like to work on,
9
+ and there aren't any issues mentioning it.
10
+
11
+ If you start working on something larger, it's a good idea to create a draft (WIP) PR at
12
+ an early stage so that we can guide you to the right direction.
13
+
14
+ There are quite a few guidelines to keep in mind:
15
+
16
+ * Kysely should have zero dependencies.
17
+
18
+ * Kysely should work in all javascript environments (node.js, deno & modern browsers),
19
+ even though the main focus is node.js.
20
+
21
+ * Everything is immutable.
22
+
23
+ * The API should be as close to writing raw SQL as possible while still providing
24
+ type safety.
25
+
26
+ * Everything outside of dialect implementations is dialect-agnostic.
27
+
28
+ * Everything is tested.
29
+
30
+ * Functionality - No mocks. Everything is tested against real database instances.
31
+ No partial testing. If a sql "thing" is supported by some databases, test it
32
+ against all of them.
33
+
34
+ * Types - We're a type-safe package, you get the idea.
35
+
36
+ * Everything consumer-facing should be documented.
37
+
38
+ * Everything is type-safe. Things that cannot be implemented in a way that is safe
39
+ for all cases, are best left for consumers to implement.
40
+
41
+ * Most features should have escape hatches.
42
+
43
+ # Getting started
44
+
45
+ 1. fork kysely.
46
+
47
+ 2. clone your fork.
48
+
49
+ 3. install node.js (preferable latest LTS).
50
+
51
+ 4. run `npm i` in your terminal to install dev dependencies.
52
+
53
+ 5. create a branch.
54
+
55
+ 6. create a draft pull request. link the relevant issue by refering to it in the
56
+ PR's description. E.g. `closes #123` will link the PR to issue/pull request #123.
57
+
58
+ 7. implement your changes.
59
+
60
+ # Testing
61
+
62
+ 1. write functionality tests in `test/node`.
63
+
64
+ 2. write typings tests in `test/typings/test-d`
65
+
66
+ 3. install docker.
67
+
68
+ 4. run `docker-compose up` in your terminal to spin up database instances.
69
+
70
+ 5. run `npm test` in your terminal to run tests.
package/README.md CHANGED
@@ -21,11 +21,14 @@ column names, aliases and types from selected subqueries, joined subqueries, `wi
21
21
  much anything you can think of.
22
22
 
23
23
  Of course there are cases where things cannot be typed at compile time, and Kysely offers escape
24
- hatches for these situations. See the [sql template tag](https://koskimas.github.io/kysely/functions/sql-1.html)
24
+ hatches for these situations. See the [sql template tag](https://koskimas.github.io/kysely/interfaces/Sql.html)
25
25
  and the [DynamicModule](https://koskimas.github.io/kysely/classes/DynamicModule.html#ref) for more info.
26
26
 
27
+ All API documentation is written in the typing files and you can simply `cmd-click` on the module, class
28
+ or method you're using to see it. The same documentation is also hosted [here](https://github.com/koskimas/kysely).
29
+
27
30
  If you start using Kysely and can't find something you'd want to use, please open an issue or join our
28
- [discord server](https://discord.gg/C9aJ49mCra).
31
+ [discord server](https://discord.gg/xyBJ3GwvAm).
29
32
 
30
33
  You can find a more thorough introduction [here](https://www.jakso.me/blog/kysely-a-type-safe-sql-query-builder-for-typescript).
31
34
 
@@ -41,6 +44,7 @@ You can find a more thorough introduction [here](https://www.jakso.me/blog/kysel
41
44
  - [Update queries](#update-queries)
42
45
  - [Insert queries](#insert-queries)
43
46
  - [Delete queries](#delete-queries)
47
+ - [Recipes](#recipes)
44
48
  - [Migrations](#migrations)
45
49
  - [PostgreSQL migration example](#postgresql-migration-example)
46
50
  - [MySQL migration example](#mysql-migration-example)
@@ -66,10 +70,13 @@ npm install kysely better-sqlite3
66
70
  More dialects will be added soon. Kysely also has a simple interface
67
71
  for [3rd party dialects](https://koskimas.github.io/kysely/interfaces/Dialect.html).
68
72
 
69
- ### 3rd party dialects:
73
+ ### 3rd party dialects
70
74
 
71
75
  - [AWS Data API](https://github.com/serverless-stack/kysely-data-api)
72
76
  - [PlanetScale Serverless Driver](https://github.com/depot/kysely-planetscale)
77
+ - [SingleStore Data API](https://github.com/igalklebanov/kysely-singlestore)
78
+ - [D1](https://github.com/aidenwallis/kysely-d1)
79
+ - [SurrealDB](https://github.com/igalklebanov/kysely-surrealdb)
73
80
 
74
81
  # Minimal example
75
82
 
@@ -246,6 +253,17 @@ documentation.
246
253
  See the [deleteFrom method](https://koskimas.github.io/kysely/classes/Kysely.html#deleteFrom)
247
254
  documentation.
248
255
 
256
+ # Recipes
257
+
258
+ The [recipes](https://github.com/koskimas/kysely/tree/master/recipes) folder contains a bunch of small tutorials
259
+ or "recipes" for common use cases.
260
+
261
+ * [Conditional selects](https://github.com/koskimas/kysely/tree/master/recipes/conditional-selects.md)
262
+ * [Deduplicate joins](https://github.com/koskimas/kysely/tree/master/recipes/deduplicate-joins.md)
263
+ * [Extending kysely](https://github.com/koskimas/kysely/tree/master/recipes/extending-kysely.md)
264
+ * [Raw SQL](https://github.com/koskimas/kysely/tree/master/recipes/raw-sql.md)
265
+ * [Schemas](https://github.com/koskimas/kysely/tree/master/recipes/schemas.md)
266
+
249
267
  # Migrations
250
268
 
251
269
  Migration files should look like this:
@@ -285,7 +303,7 @@ when you instantiate one.
285
303
  ### PostgreSQL migration example
286
304
 
287
305
  ```ts
288
- import { Kysely } from 'kysely'
306
+ import { Kysely, sql } from 'kysely'
289
307
 
290
308
  export async function up(db: Kysely<any>): Promise<void> {
291
309
  await db.schema
@@ -294,6 +312,7 @@ export async function up(db: Kysely<any>): Promise<void> {
294
312
  .addColumn('first_name', 'varchar', (col) => col.notNull())
295
313
  .addColumn('last_name', 'varchar')
296
314
  .addColumn('gender', 'varchar(50)', (col) => col.notNull())
315
+ .addColumn('created_at', 'timestamp', (col) => col.defaultTo(sql`now()`).notNull())
297
316
  .execute()
298
317
 
299
318
  await db.schema
@@ -544,3 +563,7 @@ in knex. Bringing the type system and the changes to knex would mean very signif
544
563
  that aren't possible at this point of the project. Knex was also originally written for javascript and
545
564
  the typescript typings were added afterwards. That always leads to compromises in the types. Designing
546
565
  a library for typescript from the ground up produces much better and simpler types.
566
+
567
+ # How to contribute to Kysely
568
+
569
+ See [CONTRIBUTING.md](./CONTRIBUTING.md).
@@ -49,6 +49,10 @@ export interface ColumnMetadata {
49
49
  * on PostgreSQL, `INTEGER` on SQLite and `int` on MySQL.
50
50
  */
51
51
  readonly dataType: string;
52
+ /**
53
+ * The schema this column's data type was created in.
54
+ */
55
+ readonly dataTypeSchema?: string;
52
56
  readonly isAutoIncrementing: boolean;
53
57
  readonly isNullable: boolean;
54
58
  readonly hasDefaultValue: boolean;
@@ -87,15 +87,18 @@ class MysqlConnection {
87
87
  const result = await this.#executeQuery(compiledQuery);
88
88
  if (isOkPacket(result)) {
89
89
  const { insertId, affectedRows } = result;
90
+ const numAffectedRows = affectedRows !== undefined && affectedRows !== null
91
+ ? BigInt(affectedRows)
92
+ : undefined;
90
93
  return {
91
94
  insertId: insertId !== undefined &&
92
95
  insertId !== null &&
93
96
  insertId.toString() !== '0'
94
97
  ? BigInt(insertId)
95
98
  : undefined,
96
- numUpdatedOrDeletedRows: affectedRows !== undefined && insertId !== null
97
- ? BigInt(affectedRows)
98
- : undefined,
99
+ // TODO: remove.
100
+ numUpdatedOrDeletedRows: numAffectedRows,
101
+ numAffectedRows,
99
102
  rows: [],
100
103
  };
101
104
  }
@@ -4,7 +4,7 @@ exports.PostgresAdapter = void 0;
4
4
  const sql_js_1 = require("../../raw-builder/sql.js");
5
5
  const dialect_adapter_base_js_1 = require("../dialect-adapter-base.js");
6
6
  // Random id for our transaction lock.
7
- const LOCK_ID = 3853314791062309107n;
7
+ const LOCK_ID = BigInt('3853314791062309107');
8
8
  class PostgresAdapter extends dialect_adapter_base_js_1.DialectAdapterBase {
9
9
  get supportsTransactionalDdl() {
10
10
  return true;
@@ -72,9 +72,14 @@ class PostgresConnection {
72
72
  const result = await this.#client.query(compiledQuery.sql, [
73
73
  ...compiledQuery.parameters,
74
74
  ]);
75
- if (result.command === 'UPDATE' || result.command === 'DELETE') {
75
+ if (result.command === 'INSERT' ||
76
+ result.command === 'UPDATE' ||
77
+ result.command === 'DELETE') {
78
+ const numAffectedRows = BigInt(result.rowCount);
76
79
  return {
77
- numUpdatedOrDeletedRows: BigInt(result.rowCount),
80
+ // TODO: remove.
81
+ numUpdatedOrDeletedRows: numAffectedRows,
82
+ numAffectedRows,
78
83
  rows: result.rows ?? [],
79
84
  };
80
85
  }
@@ -19,10 +19,16 @@ class PostgresIntrospector {
19
19
  }
20
20
  async getTables(options = { withInternalKyselyTables: false }) {
21
21
  let query = this.#db
22
+ // column
22
23
  .selectFrom('pg_catalog.pg_attribute as a')
24
+ // table
23
25
  .innerJoin('pg_catalog.pg_class as c', 'a.attrelid', 'c.oid')
26
+ // table schema
24
27
  .innerJoin('pg_catalog.pg_namespace as ns', 'c.relnamespace', 'ns.oid')
28
+ // column data type
25
29
  .innerJoin('pg_catalog.pg_type as typ', 'a.atttypid', 'typ.oid')
30
+ // column data type schema
31
+ .innerJoin('pg_catalog.pg_namespace as dtns', 'typ.typnamespace', 'dtns.oid')
26
32
  .select([
27
33
  'a.attname as column',
28
34
  'a.attnotnull as not_null',
@@ -30,6 +36,7 @@ class PostgresIntrospector {
30
36
  'c.relname as table',
31
37
  'ns.nspname as schema',
32
38
  'typ.typname as type',
39
+ 'dtns.nspname as type_schema',
33
40
  // Detect if the column is auto incrementing by finding the sequence
34
41
  // that is created for `serial` and `bigserial` columns.
35
42
  this.#db
@@ -79,6 +86,7 @@ class PostgresIntrospector {
79
86
  table.columns.push((0, object_utils_js_1.freeze)({
80
87
  name: it.column,
81
88
  dataType: it.type,
89
+ dataTypeSchema: it.type_schema,
82
90
  isNullable: !it.not_null,
83
91
  isAutoIncrementing: !!it.auto_incrementing,
84
92
  hasDefaultValue: it.has_default,
@@ -58,10 +58,11 @@ class SqliteConnection {
58
58
  }
59
59
  else {
60
60
  const { changes, lastInsertRowid } = stmt.run(parameters);
61
+ const numAffectedRows = changes !== undefined && changes !== null ? BigInt(changes) : undefined;
61
62
  return Promise.resolve({
62
- numUpdatedOrDeletedRows: changes !== undefined && changes !== null
63
- ? BigInt(changes)
64
- : undefined,
63
+ // TODO: remove.
64
+ numUpdatedOrDeletedRows: numAffectedRows,
65
+ numAffectedRows,
65
66
  insertId: lastInsertRowid !== undefined && lastInsertRowid !== null
66
67
  ? BigInt(lastInsertRowid)
67
68
  : undefined,
@@ -46,6 +46,7 @@ class SqliteIntrospector {
46
46
  const autoIncrementCol = createSql[0]?.sql
47
47
  ?.split(/[\(\),]/)
48
48
  ?.find((it) => it.toLowerCase().includes('autoincrement'))
49
+ ?.trimStart()
49
50
  ?.split(/\s+/)?.[0]
50
51
  ?.replace(/["`]/g, '');
51
52
  const columns = await db
@@ -10,10 +10,14 @@ export interface DatabaseConnection {
10
10
  }
11
11
  export interface QueryResult<O> {
12
12
  /**
13
- * This is defined for update and delete queries and contains
14
- * the number of rows the query updated/deleted.
13
+ * @deprecated use {@link QueryResult.numAffectedRows} instead.
15
14
  */
16
15
  readonly numUpdatedOrDeletedRows?: bigint;
16
+ /**
17
+ * This is defined for insert, update and delete queries and contains
18
+ * the number of rows the query inserted/updated/deleted.
19
+ */
20
+ readonly numAffectedRows?: bigint;
17
21
  /**
18
22
  * This is defined for insert queries on dialects that return
19
23
  * the auto incrementing primary key from an insert.
@@ -1,6 +1,5 @@
1
- import { ColumnNode } from '../operation-node/column-node.js';
2
1
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
- import { ReferenceNode } from '../operation-node/reference-node.js';
2
+ import { SimpleReferenceExpressionNode } from '../operation-node/simple-reference-expression-node.js';
4
3
  export declare class DynamicReferenceBuilder<R extends string = never> implements OperationNodeSource {
5
4
  #private;
6
5
  get dynamicReference(): string;
@@ -14,6 +13,6 @@ export declare class DynamicReferenceBuilder<R extends string = never> implement
14
13
  */
15
14
  protected get refType(): R;
16
15
  constructor(reference: string);
17
- toOperationNode(): ReferenceNode | ColumnNode;
16
+ toOperationNode(): SimpleReferenceExpressionNode;
18
17
  }
19
18
  export declare function isDynamicReferenceBuilder(obj: unknown): obj is DynamicReferenceBuilder<any>;
@@ -24,7 +24,7 @@ class DynamicReferenceBuilder {
24
24
  this.#dynamicReference = reference;
25
25
  }
26
26
  toOperationNode() {
27
- return (0, reference_parser_js_1.parseStringReference)(this.#dynamicReference);
27
+ return (0, reference_parser_js_1.parseSimpleReferenceExpression)(this.#dynamicReference);
28
28
  }
29
29
  }
30
30
  exports.DynamicReferenceBuilder = DynamicReferenceBuilder;
@@ -0,0 +1,100 @@
1
+ import { AliasNode } from '../operation-node/alias-node.js';
2
+ import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
+ import { OperationNode } from '../operation-node/operation-node.js';
4
+ /**
5
+ * `Expression` represents an arbitrary SQL expression with a type.
6
+ *
7
+ * Most Kysely methods accept instances of `Expression` and most classes like `SelectQueryBuilder`
8
+ * and the return value of the {@link sql} template tag implement it.
9
+ *
10
+ * ```ts
11
+ * const exp1: Expression<string> = sql<string>`CONCAT('hello', ' ', 'world')`
12
+ * const exp2: Expression<{ first_name: string }> = db.selectFrom('person').select('first_name')
13
+ * ```
14
+ *
15
+ * You can implement the `Expression` interface to create your own type-safe utilities for Kysely.
16
+ */
17
+ export interface Expression<T> extends OperationNodeSource {
18
+ /**
19
+ * All expressions need to have this getter for complicated type-related reasons.
20
+ * Simply add this getter for your expression and always return `undefined` from it:
21
+ *
22
+ * ```ts
23
+ * class SomeExpression<T> implements Expression<T> {
24
+ * get expressionType(): T | undefined {
25
+ * return undefined
26
+ * }
27
+ * }
28
+ * ```
29
+ *
30
+ * The getter is needed to make the expression assignable to another expression only
31
+ * if the types `T` are assignable. Without this property (or some other property
32
+ * that references `T`), you could assing `Expression<string>` to `Expression<number>`.
33
+ */
34
+ get expressionType(): T | undefined;
35
+ /**
36
+ * Creates the OperationNode that describes how to compile this expression into SQL.
37
+ *
38
+ * If you are creating a custom expression, it's often easiest to use the {@link sql}
39
+ * template tag to build the node:
40
+ *
41
+ * ```ts
42
+ * class SomeExpression<T> implements Expression<T> {
43
+ * toOperationNode(): OperationNode {
44
+ * return sql`some sql here`.toOperationNode()
45
+ * }
46
+ * }
47
+ * ```
48
+ */
49
+ toOperationNode(): OperationNode;
50
+ }
51
+ /**
52
+ * Just like `Expression<T>` but also holds an alias type `A`.
53
+ *
54
+ * `AliasedExpression<T, A>` can be used in places where, in addition to the value type `T`, you
55
+ * also need a name `A` for that value. For example anything you can pass into the `select` method
56
+ * needs to implement an `AliasedExpression<T, A>`. `A` becomes the name of the selected expression
57
+ * in the result and `T` becomes its type.
58
+ *
59
+ * @example
60
+ *
61
+ * ```ts
62
+ * class SomeAliasedExpression<T, A extends string> implements AliasedExpression<T, A> {
63
+ * #expression: Expression<T>
64
+ * #alias: A
65
+ *
66
+ * constructor(expression: Expression<T>, alias: A) {
67
+ * this.#expression = expression
68
+ * this.#alias = alias
69
+ * }
70
+ *
71
+ * get expression(): Expression<T> {
72
+ * return this.#expression
73
+ * }
74
+ *
75
+ * get alias(): A {
76
+ * return this.#alias
77
+ * }
78
+ *
79
+ * toOperationNode(): AliasNode {
80
+ * return AliasNode.create(this.#expression.toOperationNode(), IdentifierNode.create(this.#alias))
81
+ * }
82
+ * }
83
+ * ```
84
+ */
85
+ export interface AliasedExpression<T, A extends string> extends OperationNodeSource {
86
+ /**
87
+ * Returns the aliased expression.
88
+ */
89
+ get expression(): Expression<T>;
90
+ /**
91
+ * Returns the alias.
92
+ */
93
+ get alias(): A;
94
+ /**
95
+ * Creates the OperationNode that describes how to compile this expression into SQL.
96
+ */
97
+ toOperationNode(): AliasNode;
98
+ }
99
+ export declare function isExpression(obj: unknown): obj is Expression<any>;
100
+ export declare function isAliasedExpression(obj: unknown): obj is AliasedExpression<any, any>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAliasedExpression = exports.isExpression = void 0;
4
+ const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
5
+ const object_utils_js_1 = require("../util/object-utils.js");
6
+ function isExpression(obj) {
7
+ return (0, object_utils_js_1.isObject)(obj) && 'expressionType' in obj && (0, operation_node_source_js_1.isOperationNodeSource)(obj);
8
+ }
9
+ exports.isExpression = isExpression;
10
+ function isAliasedExpression(obj) {
11
+ return ((0, object_utils_js_1.isObject)(obj) &&
12
+ 'expression' in obj &&
13
+ (0, object_utils_js_1.isString)(obj.alias) &&
14
+ (0, operation_node_source_js_1.isOperationNodeSource)(obj));
15
+ }
16
+ exports.isAliasedExpression = isAliasedExpression;
@@ -1,5 +1,6 @@
1
1
  export * from './kysely.js';
2
2
  export * from './query-creator.js';
3
+ export * from './expression/expression.js';
3
4
  export * from './query-builder/where-interface.js';
4
5
  export * from './query-builder/returning-interface.js';
5
6
  export * from './query-builder/having-interface.js';
@@ -10,11 +11,12 @@ export * from './query-builder/delete-query-builder.js';
10
11
  export * from './query-builder/no-result-error.js';
11
12
  export * from './query-builder/join-builder.js';
12
13
  export * from './query-builder/expression-builder.js';
13
- export * from './query-builder/function-builder.js';
14
+ export * from './query-builder/function-module.js';
14
15
  export * from './query-builder/insert-result.js';
15
16
  export * from './query-builder/delete-result.js';
16
17
  export * from './query-builder/update-result.js';
17
18
  export * from './query-builder/on-conflict-builder.js';
19
+ export * from './query-builder/aggregate-function-builder.js';
18
20
  export * from './raw-builder/raw-builder.js';
19
21
  export * from './raw-builder/sql.js';
20
22
  export * from './query-executor/query-executor.js';
@@ -37,6 +39,7 @@ export * from './schema/foreign-key-constraint-builder.js';
37
39
  export * from './schema/alter-table-builder.js';
38
40
  export * from './schema/create-view-builder.js';
39
41
  export * from './schema/drop-view-builder.js';
42
+ export * from './schema/alter-column-builder.js';
40
43
  export * from './dynamic/dynamic.js';
41
44
  export * from './driver/driver.js';
42
45
  export * from './driver/database-connection.js';
@@ -102,7 +105,6 @@ export * from './operation-node/drop-schema-node.js';
102
105
  export * from './operation-node/drop-table-node.js';
103
106
  export * from './operation-node/drop-type-node.js';
104
107
  export * from './operation-node/drop-view-node.js';
105
- export * from './operation-node/filter-node.js';
106
108
  export * from './operation-node/foreign-key-constraint-node.js';
107
109
  export * from './operation-node/from-node.js';
108
110
  export * from './operation-node/generated-node.js';
@@ -121,7 +123,6 @@ export * from './operation-node/on-duplicate-key-node.js';
121
123
  export * from './operation-node/on-node.js';
122
124
  export * from './operation-node/operation-node-source.js';
123
125
  export * from './operation-node/operation-node-transformer.js';
124
- export * from './operation-node/operation-node-utils.js';
125
126
  export * from './operation-node/operation-node-visitor.js';
126
127
  export * from './operation-node/operation-node.js';
127
128
  export * from './operation-node/operator-node.js';
@@ -142,7 +143,6 @@ export * from './operation-node/select-query-node.js';
142
143
  export * from './operation-node/select-query-node.js';
143
144
  export * from './operation-node/selection-node.js';
144
145
  export * from './operation-node/table-node.js';
145
- export * from './operation-node/union-node.js';
146
146
  export * from './operation-node/unique-constraint-node.js';
147
147
  export * from './operation-node/update-query-node.js';
148
148
  export * from './operation-node/value-list-node.js';
@@ -152,18 +152,27 @@ export * from './operation-node/where-node.js';
152
152
  export * from './operation-node/with-node.js';
153
153
  export * from './operation-node/explain-node.js';
154
154
  export * from './operation-node/default-insert-value-node.js';
155
+ export * from './operation-node/aggregate-function-node.js';
156
+ export * from './operation-node/over-node.js';
157
+ export * from './operation-node/partition-by-node.js';
158
+ export * from './operation-node/partition-by-item-node.js';
159
+ export * from './operation-node/set-operation-node.js';
160
+ export * from './operation-node/binary-operation-node.js';
161
+ export * from './operation-node/unary-operation-node.js';
155
162
  export * from './util/column-type.js';
156
163
  export * from './util/compilable.js';
157
164
  export * from './util/explainable.js';
158
165
  export * from './util/log.js';
159
- export { AnyColumn, UnknownRow, AnySelectQueryBuilder, } from './util/type-utils.js';
166
+ export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, AnySelectQueryBuilder, Equals, UnknownRow, } from './util/type-utils.js';
167
+ export * from './util/infer-result.js';
168
+ export { logOnce } from './util/log-once.js';
160
169
  export { SelectExpression, SelectExpressionOrList, Selection, } from './parser/select-parser.js';
161
- export { ReferenceExpression, ReferenceExpressionOrList, } from './parser/reference-parser.js';
170
+ export { ReferenceExpression, ReferenceExpressionOrList, SimpleReferenceExpression, StringReference, ExtractTypeFromStringReference, ExtractTypeFromReferenceExpression, } from './parser/reference-parser.js';
162
171
  export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
163
- export { FilterValueExpression, FilterValueExpressionOrList, ExistsExpression, FilterOperator, } from './parser/filter-parser.js';
164
172
  export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
165
173
  export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-parser.js';
166
174
  export { InsertObject } from './parser/insert-values-parser.js';
167
175
  export { MutationObject } from './parser/update-set-parser.js';
168
176
  export { OrderByExpression, OrderByDirectionExpression, } from './parser/order-by-parser.js';
169
- export { UnionExpression } from './parser/union-parser.js';
177
+ export { ComparisonOperatorExpression, OperandValueExpression, OperandValueExpressionOrList, } from './parser/binary-operation-parser.js';
178
+ export { ExistsExpression } from './parser/unary-operation-parser.js';
package/dist/cjs/index.js CHANGED
@@ -14,8 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.logOnce = void 0;
17
18
  __exportStar(require("./kysely.js"), exports);
18
19
  __exportStar(require("./query-creator.js"), exports);
20
+ __exportStar(require("./expression/expression.js"), exports);
19
21
  __exportStar(require("./query-builder/where-interface.js"), exports);
20
22
  __exportStar(require("./query-builder/returning-interface.js"), exports);
21
23
  __exportStar(require("./query-builder/having-interface.js"), exports);
@@ -26,11 +28,12 @@ __exportStar(require("./query-builder/delete-query-builder.js"), exports);
26
28
  __exportStar(require("./query-builder/no-result-error.js"), exports);
27
29
  __exportStar(require("./query-builder/join-builder.js"), exports);
28
30
  __exportStar(require("./query-builder/expression-builder.js"), exports);
29
- __exportStar(require("./query-builder/function-builder.js"), exports);
31
+ __exportStar(require("./query-builder/function-module.js"), exports);
30
32
  __exportStar(require("./query-builder/insert-result.js"), exports);
31
33
  __exportStar(require("./query-builder/delete-result.js"), exports);
32
34
  __exportStar(require("./query-builder/update-result.js"), exports);
33
35
  __exportStar(require("./query-builder/on-conflict-builder.js"), exports);
36
+ __exportStar(require("./query-builder/aggregate-function-builder.js"), exports);
34
37
  __exportStar(require("./raw-builder/raw-builder.js"), exports);
35
38
  __exportStar(require("./raw-builder/sql.js"), exports);
36
39
  __exportStar(require("./query-executor/query-executor.js"), exports);
@@ -53,6 +56,7 @@ __exportStar(require("./schema/foreign-key-constraint-builder.js"), exports);
53
56
  __exportStar(require("./schema/alter-table-builder.js"), exports);
54
57
  __exportStar(require("./schema/create-view-builder.js"), exports);
55
58
  __exportStar(require("./schema/drop-view-builder.js"), exports);
59
+ __exportStar(require("./schema/alter-column-builder.js"), exports);
56
60
  __exportStar(require("./dynamic/dynamic.js"), exports);
57
61
  __exportStar(require("./driver/driver.js"), exports);
58
62
  __exportStar(require("./driver/database-connection.js"), exports);
@@ -118,7 +122,6 @@ __exportStar(require("./operation-node/drop-schema-node.js"), exports);
118
122
  __exportStar(require("./operation-node/drop-table-node.js"), exports);
119
123
  __exportStar(require("./operation-node/drop-type-node.js"), exports);
120
124
  __exportStar(require("./operation-node/drop-view-node.js"), exports);
121
- __exportStar(require("./operation-node/filter-node.js"), exports);
122
125
  __exportStar(require("./operation-node/foreign-key-constraint-node.js"), exports);
123
126
  __exportStar(require("./operation-node/from-node.js"), exports);
124
127
  __exportStar(require("./operation-node/generated-node.js"), exports);
@@ -137,7 +140,6 @@ __exportStar(require("./operation-node/on-duplicate-key-node.js"), exports);
137
140
  __exportStar(require("./operation-node/on-node.js"), exports);
138
141
  __exportStar(require("./operation-node/operation-node-source.js"), exports);
139
142
  __exportStar(require("./operation-node/operation-node-transformer.js"), exports);
140
- __exportStar(require("./operation-node/operation-node-utils.js"), exports);
141
143
  __exportStar(require("./operation-node/operation-node-visitor.js"), exports);
142
144
  __exportStar(require("./operation-node/operation-node.js"), exports);
143
145
  __exportStar(require("./operation-node/operator-node.js"), exports);
@@ -158,7 +160,6 @@ __exportStar(require("./operation-node/select-query-node.js"), exports);
158
160
  __exportStar(require("./operation-node/select-query-node.js"), exports);
159
161
  __exportStar(require("./operation-node/selection-node.js"), exports);
160
162
  __exportStar(require("./operation-node/table-node.js"), exports);
161
- __exportStar(require("./operation-node/union-node.js"), exports);
162
163
  __exportStar(require("./operation-node/unique-constraint-node.js"), exports);
163
164
  __exportStar(require("./operation-node/update-query-node.js"), exports);
164
165
  __exportStar(require("./operation-node/value-list-node.js"), exports);
@@ -168,7 +169,17 @@ __exportStar(require("./operation-node/where-node.js"), exports);
168
169
  __exportStar(require("./operation-node/with-node.js"), exports);
169
170
  __exportStar(require("./operation-node/explain-node.js"), exports);
170
171
  __exportStar(require("./operation-node/default-insert-value-node.js"), exports);
172
+ __exportStar(require("./operation-node/aggregate-function-node.js"), exports);
173
+ __exportStar(require("./operation-node/over-node.js"), exports);
174
+ __exportStar(require("./operation-node/partition-by-node.js"), exports);
175
+ __exportStar(require("./operation-node/partition-by-item-node.js"), exports);
176
+ __exportStar(require("./operation-node/set-operation-node.js"), exports);
177
+ __exportStar(require("./operation-node/binary-operation-node.js"), exports);
178
+ __exportStar(require("./operation-node/unary-operation-node.js"), exports);
171
179
  __exportStar(require("./util/column-type.js"), exports);
172
180
  __exportStar(require("./util/compilable.js"), exports);
173
181
  __exportStar(require("./util/explainable.js"), exports);
174
182
  __exportStar(require("./util/log.js"), exports);
183
+ __exportStar(require("./util/infer-result.js"), exports);
184
+ var log_once_js_1 = require("./util/log-once.js");
185
+ Object.defineProperty(exports, "logOnce", { enumerable: true, get: function () { return log_once_js_1.logOnce; } });
@@ -6,7 +6,7 @@ import { QueryCreator } from './query-creator.js';
6
6
  import { KyselyPlugin } from './plugin/kysely-plugin.js';
7
7
  import { DatabaseIntrospector } from './dialect/database-introspector.js';
8
8
  import { Driver, IsolationLevel } from './driver/driver.js';
9
- import { FunctionBuilder } from './query-builder/function-builder.js';
9
+ import { FunctionModule } from './query-builder/function-module.js';
10
10
  import { LogConfig } from './util/log.js';
11
11
  import { QueryExecutorProvider } from './query-executor/query-executor-provider.js';
12
12
  /**
@@ -72,7 +72,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
72
72
  */
73
73
  get introspection(): DatabaseIntrospector;
74
74
  /**
75
- * Returns a {@link FunctionBuilder} that can be used to write type safe function
75
+ * Returns a {@link FunctionModule} that can be used to write type safe function
76
76
  * calls.
77
77
  *
78
78
  * ```ts
@@ -99,7 +99,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
99
99
  * having count("pet"."id") > $1
100
100
  * ```
101
101
  */
102
- get fn(): FunctionBuilder<DB, keyof DB>;
102
+ get fn(): FunctionModule<DB, keyof DB>;
103
103
  /**
104
104
  * Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.
105
105
  *
@@ -11,7 +11,7 @@ const runtime_driver_js_1 = require("./driver/runtime-driver.js");
11
11
  const single_connection_provider_js_1 = require("./driver/single-connection-provider.js");
12
12
  const driver_js_1 = require("./driver/driver.js");
13
13
  const prevent_await_js_1 = require("./util/prevent-await.js");
14
- const function_builder_js_1 = require("./query-builder/function-builder.js");
14
+ const function_module_js_1 = require("./query-builder/function-module.js");
15
15
  const log_js_1 = require("./util/log.js");
16
16
  /**
17
17
  * The main Kysely class.
@@ -107,7 +107,7 @@ class Kysely extends query_creator_js_1.QueryCreator {
107
107
  return this.#props.dialect.createIntrospector(this.withoutPlugins());
108
108
  }
109
109
  /**
110
- * Returns a {@link FunctionBuilder} that can be used to write type safe function
110
+ * Returns a {@link FunctionModule} that can be used to write type safe function
111
111
  * calls.
112
112
  *
113
113
  * ```ts
@@ -135,7 +135,7 @@ class Kysely extends query_creator_js_1.QueryCreator {
135
135
  * ```
136
136
  */
137
137
  get fn() {
138
- return new function_builder_js_1.FunctionBuilder();
138
+ return new function_module_js_1.FunctionModule();
139
139
  }
140
140
  /**
141
141
  * Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.