kysely 0.22.0 → 0.23.1

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 (358) hide show
  1. package/CONTRIBUTING.md +70 -0
  2. package/README.md +25 -2
  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 +10 -6
  16. package/dist/cjs/index.js +8 -2
  17. package/dist/cjs/migration/file-migration-provider.js +5 -3
  18. package/dist/cjs/operation-node/aggregate-function-node.d.ts +7 -4
  19. package/dist/cjs/operation-node/aggregate-function-node.js +17 -0
  20. package/dist/cjs/operation-node/alias-node.d.ts +3 -11
  21. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
  22. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
  23. package/dist/cjs/operation-node/alter-table-node.js +9 -1
  24. package/dist/cjs/operation-node/and-node.d.ts +3 -4
  25. package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
  26. package/dist/cjs/operation-node/binary-operation-node.js +20 -0
  27. package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
  28. package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
  29. package/dist/cjs/operation-node/column-definition-node.js +16 -0
  30. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  31. package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
  32. package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
  33. package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
  34. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/create-type-node.js +1 -2
  36. package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
  37. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
  38. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/drop-type-node.js +1 -2
  40. package/dist/cjs/operation-node/explain-node.d.ts +2 -4
  41. package/dist/cjs/operation-node/explain-node.js +1 -1
  42. package/dist/cjs/operation-node/from-node.d.ts +3 -4
  43. package/dist/cjs/operation-node/generated-node.d.ts +2 -3
  44. package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
  45. package/dist/cjs/operation-node/having-node.d.ts +3 -4
  46. package/dist/cjs/operation-node/having-node.js +4 -4
  47. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -5
  48. package/dist/cjs/operation-node/join-node.d.ts +5 -9
  49. package/dist/cjs/operation-node/join-node.js +6 -6
  50. package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
  51. package/dist/cjs/operation-node/on-conflict-node.js +12 -12
  52. package/dist/cjs/operation-node/on-node.d.ts +3 -4
  53. package/dist/cjs/operation-node/on-node.js +4 -4
  54. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -2
  55. package/dist/cjs/operation-node/operation-node-transformer.js +22 -15
  56. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
  57. package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
  58. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  59. package/dist/cjs/operation-node/operator-node.d.ts +5 -3
  60. package/dist/cjs/operation-node/operator-node.js +3 -5
  61. package/dist/cjs/operation-node/or-node.d.ts +3 -4
  62. package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
  63. package/dist/cjs/operation-node/parens-node.d.ts +2 -3
  64. package/dist/cjs/operation-node/partition-by-item-node.d.ts +3 -4
  65. package/dist/cjs/operation-node/query-node.d.ts +2 -3
  66. package/dist/cjs/operation-node/query-node.js +6 -6
  67. package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
  68. package/dist/cjs/operation-node/select-modifier-node.js +1 -1
  69. package/dist/cjs/operation-node/select-query-node.d.ts +5 -6
  70. package/dist/cjs/operation-node/select-query-node.js +10 -10
  71. package/dist/cjs/operation-node/selection-node.d.ts +2 -3
  72. package/dist/cjs/operation-node/set-operation-node.d.ts +2 -5
  73. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
  74. package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
  75. package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
  76. package/dist/cjs/operation-node/unary-operation-node.js +19 -0
  77. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  78. package/dist/cjs/operation-node/value-list-node.d.ts +2 -9
  79. package/dist/cjs/operation-node/where-node.d.ts +3 -4
  80. package/dist/cjs/operation-node/where-node.js +4 -4
  81. package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
  82. package/dist/cjs/parser/binary-operation-parser.js +99 -0
  83. package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
  84. package/dist/cjs/parser/coalesce-parser.js +11 -0
  85. package/dist/cjs/parser/data-type-parser.d.ts +5 -5
  86. package/dist/cjs/parser/default-value-parser.d.ts +4 -5
  87. package/dist/cjs/parser/default-value-parser.js +2 -2
  88. package/dist/cjs/parser/expression-parser.d.ts +10 -0
  89. package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
  90. package/dist/cjs/parser/identifier-parser.d.ts +2 -0
  91. package/dist/cjs/parser/identifier-parser.js +23 -0
  92. package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
  93. package/dist/cjs/parser/insert-values-parser.js +2 -2
  94. package/dist/cjs/parser/join-parser.js +2 -2
  95. package/dist/cjs/parser/order-by-parser.d.ts +2 -2
  96. package/dist/cjs/parser/reference-parser.d.ts +14 -14
  97. package/dist/cjs/parser/reference-parser.js +12 -9
  98. package/dist/cjs/parser/select-parser.d.ts +6 -7
  99. package/dist/cjs/parser/select-parser.js +2 -2
  100. package/dist/cjs/parser/set-operation-parser.d.ts +2 -4
  101. package/dist/cjs/parser/table-parser.d.ts +11 -12
  102. package/dist/cjs/parser/table-parser.js +2 -2
  103. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
  104. package/dist/cjs/parser/unary-operation-parser.js +17 -0
  105. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  106. package/dist/cjs/parser/value-parser.d.ts +5 -9
  107. package/dist/cjs/parser/value-parser.js +4 -4
  108. package/dist/cjs/parser/with-parser.d.ts +3 -4
  109. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  110. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +245 -14
  111. package/dist/cjs/query-builder/aggregate-function-builder.js +164 -12
  112. package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
  113. package/dist/cjs/query-builder/delete-query-builder.js +19 -16
  114. package/dist/cjs/query-builder/function-module.d.ts +123 -22
  115. package/dist/cjs/query-builder/function-module.js +91 -48
  116. package/dist/cjs/query-builder/having-interface.d.ts +9 -8
  117. package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
  118. package/dist/cjs/query-builder/insert-query-builder.js +11 -9
  119. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  120. package/dist/cjs/query-builder/insert-result.js +12 -1
  121. package/dist/cjs/query-builder/join-builder.d.ts +9 -8
  122. package/dist/cjs/query-builder/join-builder.js +10 -9
  123. package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
  124. package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
  125. package/dist/cjs/query-builder/select-query-builder.d.ts +82 -51
  126. package/dist/cjs/query-builder/select-query-builder.js +39 -37
  127. package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
  128. package/dist/cjs/query-builder/update-query-builder.js +19 -16
  129. package/dist/cjs/query-builder/where-interface.d.ts +12 -11
  130. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  131. package/dist/cjs/query-compiler/default-query-compiler.d.ts +5 -3
  132. package/dist/cjs/query-compiler/default-query-compiler.js +37 -33
  133. package/dist/cjs/query-executor/query-executor-base.js +16 -1
  134. package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
  135. package/dist/cjs/raw-builder/raw-builder.js +24 -14
  136. package/dist/cjs/raw-builder/sql.d.ts +4 -4
  137. package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
  138. package/dist/cjs/schema/alter-column-builder.js +55 -0
  139. package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
  140. package/dist/cjs/schema/alter-table-builder.js +63 -278
  141. package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
  142. package/dist/cjs/schema/column-definition-builder.js +189 -0
  143. package/dist/cjs/schema/create-index-builder.d.ts +3 -3
  144. package/dist/cjs/schema/create-index-builder.js +7 -7
  145. package/dist/cjs/schema/create-schema-builder.d.ts +1 -1
  146. package/dist/cjs/schema/create-schema-builder.js +2 -2
  147. package/dist/cjs/schema/create-table-builder.d.ts +39 -6
  148. package/dist/cjs/schema/create-table-builder.js +47 -12
  149. package/dist/cjs/schema/create-type-builder.d.ts +1 -1
  150. package/dist/cjs/schema/create-type-builder.js +2 -2
  151. package/dist/cjs/schema/create-view-builder.d.ts +4 -3
  152. package/dist/cjs/schema/create-view-builder.js +7 -7
  153. package/dist/cjs/schema/drop-index-builder.d.ts +1 -1
  154. package/dist/cjs/schema/drop-index-builder.js +4 -4
  155. package/dist/cjs/schema/drop-schema-builder.d.ts +1 -1
  156. package/dist/cjs/schema/drop-schema-builder.js +3 -3
  157. package/dist/cjs/schema/drop-table-builder.d.ts +1 -1
  158. package/dist/cjs/schema/drop-table-builder.js +3 -3
  159. package/dist/cjs/schema/drop-type-builder.d.ts +1 -1
  160. package/dist/cjs/schema/drop-type-builder.js +2 -2
  161. package/dist/cjs/schema/drop-view-builder.d.ts +1 -1
  162. package/dist/cjs/schema/drop-view-builder.js +4 -4
  163. package/dist/cjs/schema/schema.d.ts +2 -2
  164. package/dist/cjs/schema/schema.js +14 -13
  165. package/dist/cjs/util/compilable.d.ts +2 -2
  166. package/dist/cjs/util/explainable.d.ts +2 -2
  167. package/dist/cjs/util/infer-result.d.ts +46 -0
  168. package/dist/cjs/util/infer-result.js +2 -0
  169. package/dist/cjs/util/log-once.d.ts +5 -0
  170. package/dist/cjs/util/log-once.js +16 -0
  171. package/dist/cjs/util/object-utils.d.ts +1 -0
  172. package/dist/cjs/util/object-utils.js +5 -1
  173. package/dist/cjs/util/type-utils.d.ts +3 -17
  174. package/dist/esm/dialect/database-introspector.d.ts +4 -0
  175. package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
  176. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  177. package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
  178. package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
  179. package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
  180. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  181. package/dist/esm/driver/database-connection.d.ts +6 -2
  182. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
  183. package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
  184. package/dist/esm/expression/expression.d.ts +100 -0
  185. package/dist/esm/expression/expression.js +12 -0
  186. package/dist/esm/index.d.ts +10 -6
  187. package/dist/esm/index.js +6 -2
  188. package/dist/esm/migration/file-migration-provider.js +5 -3
  189. package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
  190. package/dist/esm/operation-node/aggregate-function-node.js +17 -0
  191. package/dist/esm/operation-node/alias-node.d.ts +3 -11
  192. package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
  193. package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
  194. package/dist/esm/operation-node/alter-table-node.js +9 -1
  195. package/dist/esm/operation-node/and-node.d.ts +3 -4
  196. package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
  197. package/dist/esm/operation-node/binary-operation-node.js +18 -0
  198. package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
  199. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  200. package/dist/esm/operation-node/column-definition-node.js +16 -0
  201. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  202. package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
  203. package/dist/esm/operation-node/create-index-node.d.ts +1 -3
  204. package/dist/esm/operation-node/create-table-node.d.ts +4 -5
  205. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  206. package/dist/esm/operation-node/create-type-node.js +1 -2
  207. package/dist/esm/operation-node/default-value-node.d.ts +2 -4
  208. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  209. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  210. package/dist/esm/operation-node/drop-type-node.js +1 -2
  211. package/dist/esm/operation-node/explain-node.d.ts +2 -4
  212. package/dist/esm/operation-node/explain-node.js +1 -1
  213. package/dist/esm/operation-node/from-node.d.ts +3 -4
  214. package/dist/esm/operation-node/generated-node.d.ts +2 -3
  215. package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
  216. package/dist/esm/operation-node/having-node.d.ts +3 -4
  217. package/dist/esm/operation-node/having-node.js +4 -4
  218. package/dist/esm/operation-node/insert-query-node.d.ts +1 -5
  219. package/dist/esm/operation-node/join-node.d.ts +5 -9
  220. package/dist/esm/operation-node/join-node.js +6 -6
  221. package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
  222. package/dist/esm/operation-node/on-conflict-node.js +12 -12
  223. package/dist/esm/operation-node/on-node.d.ts +3 -4
  224. package/dist/esm/operation-node/on-node.js +4 -4
  225. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
  226. package/dist/esm/operation-node/operation-node-transformer.js +22 -15
  227. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
  228. package/dist/esm/operation-node/operation-node-visitor.js +2 -1
  229. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  230. package/dist/esm/operation-node/operator-node.d.ts +5 -3
  231. package/dist/esm/operation-node/operator-node.js +2 -4
  232. package/dist/esm/operation-node/or-node.d.ts +3 -4
  233. package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
  234. package/dist/esm/operation-node/parens-node.d.ts +2 -3
  235. package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
  236. package/dist/esm/operation-node/query-node.d.ts +2 -3
  237. package/dist/esm/operation-node/query-node.js +6 -6
  238. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
  239. package/dist/esm/operation-node/select-modifier-node.js +1 -1
  240. package/dist/esm/operation-node/select-query-node.d.ts +5 -6
  241. package/dist/esm/operation-node/select-query-node.js +10 -10
  242. package/dist/esm/operation-node/selection-node.d.ts +2 -3
  243. package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
  244. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
  245. package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
  246. package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
  247. package/dist/esm/operation-node/unary-operation-node.js +17 -0
  248. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  249. package/dist/esm/operation-node/value-list-node.d.ts +2 -9
  250. package/dist/esm/operation-node/where-node.d.ts +3 -4
  251. package/dist/esm/operation-node/where-node.js +4 -4
  252. package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
  253. package/dist/esm/parser/binary-operation-parser.js +92 -0
  254. package/dist/esm/parser/coalesce-parser.d.ts +4 -0
  255. package/dist/esm/parser/coalesce-parser.js +8 -0
  256. package/dist/esm/parser/data-type-parser.d.ts +5 -5
  257. package/dist/esm/parser/default-value-parser.d.ts +4 -5
  258. package/dist/esm/parser/default-value-parser.js +2 -2
  259. package/dist/esm/parser/expression-parser.d.ts +10 -0
  260. package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
  261. package/dist/esm/parser/identifier-parser.d.ts +2 -0
  262. package/dist/esm/parser/identifier-parser.js +20 -0
  263. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  264. package/dist/esm/parser/insert-values-parser.js +2 -2
  265. package/dist/esm/parser/join-parser.js +2 -2
  266. package/dist/esm/parser/order-by-parser.d.ts +2 -2
  267. package/dist/esm/parser/reference-parser.d.ts +14 -14
  268. package/dist/esm/parser/reference-parser.js +10 -8
  269. package/dist/esm/parser/select-parser.d.ts +6 -7
  270. package/dist/esm/parser/select-parser.js +2 -2
  271. package/dist/esm/parser/set-operation-parser.d.ts +2 -4
  272. package/dist/esm/parser/table-parser.d.ts +11 -12
  273. package/dist/esm/parser/table-parser.js +2 -2
  274. package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
  275. package/dist/esm/parser/unary-operation-parser.js +13 -0
  276. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  277. package/dist/esm/parser/value-parser.d.ts +5 -9
  278. package/dist/esm/parser/value-parser.js +4 -4
  279. package/dist/esm/parser/with-parser.d.ts +3 -4
  280. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +245 -14
  282. package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
  283. package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
  284. package/dist/esm/query-builder/delete-query-builder.js +19 -16
  285. package/dist/esm/query-builder/function-module.d.ts +123 -22
  286. package/dist/esm/query-builder/function-module.js +92 -49
  287. package/dist/esm/query-builder/having-interface.d.ts +9 -8
  288. package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
  289. package/dist/esm/query-builder/insert-query-builder.js +11 -9
  290. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  291. package/dist/esm/query-builder/insert-result.js +12 -1
  292. package/dist/esm/query-builder/join-builder.d.ts +9 -8
  293. package/dist/esm/query-builder/join-builder.js +10 -9
  294. package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
  295. package/dist/esm/query-builder/on-conflict-builder.js +18 -17
  296. package/dist/esm/query-builder/select-query-builder.d.ts +82 -51
  297. package/dist/esm/query-builder/select-query-builder.js +38 -36
  298. package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
  299. package/dist/esm/query-builder/update-query-builder.js +19 -16
  300. package/dist/esm/query-builder/where-interface.d.ts +12 -11
  301. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  302. package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -3
  303. package/dist/esm/query-compiler/default-query-compiler.js +38 -34
  304. package/dist/esm/query-executor/query-executor-base.js +16 -1
  305. package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
  306. package/dist/esm/raw-builder/raw-builder.js +23 -14
  307. package/dist/esm/raw-builder/sql.d.ts +4 -4
  308. package/dist/esm/schema/alter-column-builder.d.ts +28 -0
  309. package/dist/esm/schema/alter-column-builder.js +51 -0
  310. package/dist/esm/schema/alter-table-builder.d.ts +39 -341
  311. package/dist/esm/schema/alter-table-builder.js +59 -272
  312. package/dist/esm/schema/column-definition-builder.d.ts +43 -155
  313. package/dist/esm/schema/column-definition-builder.js +189 -0
  314. package/dist/esm/schema/create-index-builder.d.ts +3 -3
  315. package/dist/esm/schema/create-index-builder.js +7 -7
  316. package/dist/esm/schema/create-schema-builder.d.ts +1 -1
  317. package/dist/esm/schema/create-schema-builder.js +2 -2
  318. package/dist/esm/schema/create-table-builder.d.ts +39 -6
  319. package/dist/esm/schema/create-table-builder.js +47 -12
  320. package/dist/esm/schema/create-type-builder.d.ts +1 -1
  321. package/dist/esm/schema/create-type-builder.js +2 -2
  322. package/dist/esm/schema/create-view-builder.d.ts +4 -3
  323. package/dist/esm/schema/create-view-builder.js +7 -7
  324. package/dist/esm/schema/drop-index-builder.d.ts +1 -1
  325. package/dist/esm/schema/drop-index-builder.js +4 -4
  326. package/dist/esm/schema/drop-schema-builder.d.ts +1 -1
  327. package/dist/esm/schema/drop-schema-builder.js +3 -3
  328. package/dist/esm/schema/drop-table-builder.d.ts +1 -1
  329. package/dist/esm/schema/drop-table-builder.js +3 -3
  330. package/dist/esm/schema/drop-type-builder.d.ts +1 -1
  331. package/dist/esm/schema/drop-type-builder.js +2 -2
  332. package/dist/esm/schema/drop-view-builder.d.ts +1 -1
  333. package/dist/esm/schema/drop-view-builder.js +4 -4
  334. package/dist/esm/schema/schema.d.ts +2 -2
  335. package/dist/esm/schema/schema.js +14 -13
  336. package/dist/esm/util/compilable.d.ts +2 -2
  337. package/dist/esm/util/explainable.d.ts +2 -2
  338. package/dist/esm/util/infer-result.d.ts +46 -0
  339. package/dist/esm/util/infer-result.js +2 -0
  340. package/dist/esm/util/log-once.d.ts +5 -0
  341. package/dist/esm/util/log-once.js +13 -0
  342. package/dist/esm/util/object-utils.d.ts +1 -0
  343. package/dist/esm/util/object-utils.js +3 -0
  344. package/dist/esm/util/type-utils.d.ts +3 -17
  345. package/package.json +1 -1
  346. package/dist/cjs/operation-node/filter-node.d.ts +0 -18
  347. package/dist/cjs/operation-node/filter-node.js +0 -20
  348. package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
  349. package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
  350. package/dist/cjs/parser/filter-parser.d.ts +0 -24
  351. package/dist/cjs/parser/filter-parser.js +0 -109
  352. package/dist/esm/operation-node/filter-node.d.ts +0 -18
  353. package/dist/esm/operation-node/filter-node.js +0 -18
  354. package/dist/esm/operation-node/operation-node-utils.d.ts +0 -18
  355. package/dist/esm/operation-node/operation-node-utils.js +0 -2
  356. package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
  357. package/dist/esm/parser/filter-parser.d.ts +0 -24
  358. package/dist/esm/parser/filter-parser.js +0 -100
@@ -1,5 +1,5 @@
1
- import { AnyRawBuilder } from './type-utils.js';
1
+ import { Expression } from '../expression/expression.js';
2
2
  export declare type ExplainFormat = 'text' | 'xml' | 'json' | 'yaml' | 'traditional' | 'tree';
3
3
  export interface Explainable {
4
- explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: AnyRawBuilder): Promise<O[]>;
4
+ explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<O[]>;
5
5
  }
@@ -0,0 +1,46 @@
1
+ import { DeleteResult } from '../query-builder/delete-result.js';
2
+ import { InsertResult } from '../query-builder/insert-result.js';
3
+ import { UpdateResult } from '../query-builder/update-result.js';
4
+ import { CompiledQuery } from '../query-compiler/compiled-query.js';
5
+ import { Compilable } from './compilable.js';
6
+ /**
7
+ * A helper type that allows inferring a select/insert/update/delete query's result
8
+ * type from a query builder or compiled query.
9
+ *
10
+ * ### Examples
11
+ *
12
+ * Infer a query builder's result type:
13
+ *
14
+ * ```ts
15
+ * import { InferResult } from 'kysely'
16
+ *
17
+ * const query = db
18
+ * .selectFrom('person')
19
+ * .innerJoin('pet', 'pet.owner_id', 'person.id')
20
+ * .select(['person.first_name', 'pet.name'])
21
+ *
22
+ * type QueryResult = InferResult<typeof query> // { first_name: string; name: string; }[]
23
+ * ```
24
+ *
25
+ * Infer a compiled query's result type:
26
+ *
27
+ * ```ts
28
+ * import { InferResult } from 'kysely'
29
+ *
30
+ * const compiledQuery = db
31
+ * .insertInto('person')
32
+ * .values({
33
+ * first_name: 'Foo',
34
+ * last_name: 'Barson',
35
+ * gender: 'other',
36
+ * age: 15,
37
+ * })
38
+ * .returningAll()
39
+ * .compile()
40
+ *
41
+ * type QueryResult = InferResult<typeof compiledQuery> // Selectable<Person>[]
42
+ * ```
43
+ */
44
+ export declare type InferResult<C extends Compilable<any> | CompiledQuery<any>> = C extends Compilable<infer O> ? ResolveResult<O> : C extends CompiledQuery<infer O> ? ResolveResult<O> : never;
45
+ declare type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult ? O : O[];
46
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Use for system-level logging, such as deprecation messages.
3
+ * Logs a message and ensures it won't be logged again.
4
+ */
5
+ export declare function logOnce(message: string): void;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logOnce = void 0;
4
+ const LOGGED_MESSAGES = new Set();
5
+ /**
6
+ * Use for system-level logging, such as deprecation messages.
7
+ * Logs a message and ensures it won't be logged again.
8
+ */
9
+ function logOnce(message) {
10
+ if (LOGGED_MESSAGES.has(message)) {
11
+ return;
12
+ }
13
+ LOGGED_MESSAGES.add(message);
14
+ console.log(message);
15
+ }
16
+ exports.logOnce = logOnce;
@@ -11,6 +11,7 @@ export declare function isBuffer(obj: unknown): obj is {
11
11
  };
12
12
  export declare function isFunction(obj: unknown): obj is Function;
13
13
  export declare function isObject(obj: unknown): obj is Record<string, unknown>;
14
+ export declare function isArrayBufferOrView(obj: unknown): obj is ArrayBuffer | ArrayBufferView;
14
15
  export declare function getLast<T>(arr: ArrayLike<T>): T | undefined;
15
16
  export declare function freeze<T>(obj: T): Readonly<T>;
16
17
  export declare function asArray<T>(arg: T | T[]): T[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compare = exports.noop = exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isObject = exports.isFunction = exports.isBuffer = exports.isBigInt = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isUndefined = exports.isEmpty = void 0;
3
+ exports.compare = exports.noop = exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isArrayBufferOrView = exports.isObject = exports.isFunction = exports.isBuffer = exports.isBigInt = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isUndefined = exports.isEmpty = void 0;
4
4
  function isEmpty(obj) {
5
5
  if (Array.isArray(obj) || isString(obj) || isBuffer(obj)) {
6
6
  return obj.length === 0;
@@ -53,6 +53,10 @@ function isObject(obj) {
53
53
  return typeof obj === 'object' && obj !== null;
54
54
  }
55
55
  exports.isObject = isObject;
56
+ function isArrayBufferOrView(obj) {
57
+ return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj);
58
+ }
59
+ exports.isArrayBufferOrView = isArrayBufferOrView;
56
60
  function getLast(arr) {
57
61
  return arr[arr.length - 1];
58
62
  }
@@ -1,10 +1,7 @@
1
- import { AliasedRawBuilder, RawBuilder } from '../raw-builder/raw-builder.js';
2
- import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
3
- import { ExpressionBuilder } from '../query-builder/expression-builder.js';
1
+ import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
4
2
  import { InsertResult } from '../query-builder/insert-result.js';
5
3
  import { DeleteResult } from '../query-builder/delete-result.js';
6
4
  import { UpdateResult } from '../query-builder/update-result.js';
7
- import { AggregateFunctionBuilder, AliasedAggregateFunctionBuilder } from '../query-builder/aggregate-function-builder.js';
8
5
  /**
9
6
  * Given an object type, extracts the union of all value types.
10
7
  */
@@ -100,24 +97,11 @@ export declare type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
100
97
  */
101
98
  export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
102
99
  export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
103
- export declare type AnyAliasedQueryBuilder = AliasedQueryBuilder<any, any, any, any>;
104
- export declare type AnyRawBuilder = RawBuilder<any>;
105
- export declare type AnyAliasedRawBuilder = AliasedRawBuilder<any, any>;
106
- export declare type AnyAliasedAggregateFunctionBuilder = AliasedAggregateFunctionBuilder<any, any, any, any>;
107
- export declare type SelectQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnySelectQueryBuilder;
108
- export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
109
- export declare type RawBuilderFactory<DB, TB extends keyof DB, O = any> = (qb: ExpressionBuilder<DB, TB>) => RawBuilder<O>;
110
- export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
111
- export declare type AggregateFunctionBuilderFactory<DB, TB extends keyof DB, O = unknown> = (qb: ExpressionBuilder<DB, TB>) => AggregateFunctionBuilder<DB, TB, O>;
112
- export declare type AliasedAggregateFunctionBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedAggregateFunctionBuilder;
113
100
  export declare type SingleResultType<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : O | undefined;
114
101
  export declare type UnknownRow = Record<string, unknown>;
115
102
  export declare type Nullable<T> = {
116
103
  [P in keyof T]: T[P] | null;
117
104
  };
118
- export declare type NullableValues<T> = {
119
- [P in keyof T]: Nullable<T[P]>;
120
- };
121
105
  /**
122
106
  * Takes all properties from T1 and merges all properties from T2
123
107
  * that don't exist in T1 as optional properties.
@@ -139,3 +123,5 @@ export declare type NullableValues<T> = {
139
123
  * // { name: string, age: number, species?: 'cat' | 'dog' }
140
124
  */
141
125
  export declare type MergePartial<T1, T2> = T1 & Partial<Omit<T2, keyof T1>>;
126
+ export declare type IsNever<T> = [T] extends [never] ? true : false;
127
+ export declare type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
@@ -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;
@@ -84,15 +84,18 @@ class MysqlConnection {
84
84
  const result = await this.#executeQuery(compiledQuery);
85
85
  if (isOkPacket(result)) {
86
86
  const { insertId, affectedRows } = result;
87
+ const numAffectedRows = affectedRows !== undefined && affectedRows !== null
88
+ ? BigInt(affectedRows)
89
+ : undefined;
87
90
  return {
88
91
  insertId: insertId !== undefined &&
89
92
  insertId !== null &&
90
93
  insertId.toString() !== '0'
91
94
  ? BigInt(insertId)
92
95
  : undefined,
93
- numUpdatedOrDeletedRows: affectedRows !== undefined && insertId !== null
94
- ? BigInt(affectedRows)
95
- : undefined,
96
+ // TODO: remove.
97
+ numUpdatedOrDeletedRows: numAffectedRows,
98
+ numAffectedRows,
96
99
  rows: [],
97
100
  };
98
101
  }
@@ -2,7 +2,7 @@
2
2
  import { sql } from '../../raw-builder/sql.js';
3
3
  import { DialectAdapterBase } from '../dialect-adapter-base.js';
4
4
  // Random id for our transaction lock.
5
- const LOCK_ID = 3853314791062309107n;
5
+ const LOCK_ID = BigInt('3853314791062309107');
6
6
  export class PostgresAdapter extends DialectAdapterBase {
7
7
  get supportsTransactionalDdl() {
8
8
  return true;
@@ -69,9 +69,14 @@ class PostgresConnection {
69
69
  const result = await this.#client.query(compiledQuery.sql, [
70
70
  ...compiledQuery.parameters,
71
71
  ]);
72
- if (result.command === 'UPDATE' || result.command === 'DELETE') {
72
+ if (result.command === 'INSERT' ||
73
+ result.command === 'UPDATE' ||
74
+ result.command === 'DELETE') {
75
+ const numAffectedRows = BigInt(result.rowCount);
73
76
  return {
74
- numUpdatedOrDeletedRows: BigInt(result.rowCount),
77
+ // TODO: remove.
78
+ numUpdatedOrDeletedRows: numAffectedRows,
79
+ numAffectedRows,
75
80
  rows: result.rows ?? [],
76
81
  };
77
82
  }
@@ -17,10 +17,16 @@ export class PostgresIntrospector {
17
17
  }
18
18
  async getTables(options = { withInternalKyselyTables: false }) {
19
19
  let query = this.#db
20
+ // column
20
21
  .selectFrom('pg_catalog.pg_attribute as a')
22
+ // table
21
23
  .innerJoin('pg_catalog.pg_class as c', 'a.attrelid', 'c.oid')
24
+ // table schema
22
25
  .innerJoin('pg_catalog.pg_namespace as ns', 'c.relnamespace', 'ns.oid')
26
+ // column data type
23
27
  .innerJoin('pg_catalog.pg_type as typ', 'a.atttypid', 'typ.oid')
28
+ // column data type schema
29
+ .innerJoin('pg_catalog.pg_namespace as dtns', 'typ.typnamespace', 'dtns.oid')
24
30
  .select([
25
31
  'a.attname as column',
26
32
  'a.attnotnull as not_null',
@@ -28,6 +34,7 @@ export class PostgresIntrospector {
28
34
  'c.relname as table',
29
35
  'ns.nspname as schema',
30
36
  'typ.typname as type',
37
+ 'dtns.nspname as type_schema',
31
38
  // Detect if the column is auto incrementing by finding the sequence
32
39
  // that is created for `serial` and `bigserial` columns.
33
40
  this.#db
@@ -77,6 +84,7 @@ export class PostgresIntrospector {
77
84
  table.columns.push(freeze({
78
85
  name: it.column,
79
86
  dataType: it.type,
87
+ dataTypeSchema: it.type_schema,
80
88
  isNullable: !it.not_null,
81
89
  isAutoIncrementing: !!it.auto_incrementing,
82
90
  hasDefaultValue: it.has_default,
@@ -55,10 +55,11 @@ class SqliteConnection {
55
55
  }
56
56
  else {
57
57
  const { changes, lastInsertRowid } = stmt.run(parameters);
58
+ const numAffectedRows = changes !== undefined && changes !== null ? BigInt(changes) : undefined;
58
59
  return Promise.resolve({
59
- numUpdatedOrDeletedRows: changes !== undefined && changes !== null
60
- ? BigInt(changes)
61
- : undefined,
60
+ // TODO: remove.
61
+ numUpdatedOrDeletedRows: numAffectedRows,
62
+ numAffectedRows,
62
63
  insertId: lastInsertRowid !== undefined && lastInsertRowid !== null
63
64
  ? BigInt(lastInsertRowid)
64
65
  : undefined,
@@ -44,6 +44,7 @@ export class SqliteIntrospector {
44
44
  const autoIncrementCol = createSql[0]?.sql
45
45
  ?.split(/[\(\),]/)
46
46
  ?.find((it) => it.toLowerCase().includes('autoincrement'))
47
+ ?.trimStart()
47
48
  ?.split(/\s+/)?.[0]
48
49
  ?.replace(/["`]/g, '');
49
50
  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>;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="./dynamic-reference-builder.d.ts" />
2
2
  import { isOperationNodeSource, } from '../operation-node/operation-node-source.js';
3
- import { parseStringReference } from '../parser/reference-parser.js';
3
+ import { parseSimpleReferenceExpression } from '../parser/reference-parser.js';
4
4
  import { isObject, isString } from '../util/object-utils.js';
5
5
  export class DynamicReferenceBuilder {
6
6
  #dynamicReference;
@@ -22,7 +22,7 @@ export class DynamicReferenceBuilder {
22
22
  this.#dynamicReference = reference;
23
23
  }
24
24
  toOperationNode() {
25
- return parseStringReference(this.#dynamicReference);
25
+ return parseSimpleReferenceExpression(this.#dynamicReference);
26
26
  }
27
27
  }
28
28
  export function isDynamicReferenceBuilder(obj) {
@@ -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,12 @@
1
+ /// <reference types="./expression.d.ts" />
2
+ import { isOperationNodeSource, } from '../operation-node/operation-node-source.js';
3
+ import { isObject, isString } from '../util/object-utils.js';
4
+ export function isExpression(obj) {
5
+ return isObject(obj) && 'expressionType' in obj && isOperationNodeSource(obj);
6
+ }
7
+ export function isAliasedExpression(obj) {
8
+ return (isObject(obj) &&
9
+ 'expression' in obj &&
10
+ isString(obj.alias) &&
11
+ isOperationNodeSource(obj));
12
+ }
@@ -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';
@@ -38,6 +39,7 @@ export * from './schema/foreign-key-constraint-builder.js';
38
39
  export * from './schema/alter-table-builder.js';
39
40
  export * from './schema/create-view-builder.js';
40
41
  export * from './schema/drop-view-builder.js';
42
+ export * from './schema/alter-column-builder.js';
41
43
  export * from './dynamic/dynamic.js';
42
44
  export * from './driver/driver.js';
43
45
  export * from './driver/database-connection.js';
@@ -103,7 +105,6 @@ export * from './operation-node/drop-schema-node.js';
103
105
  export * from './operation-node/drop-table-node.js';
104
106
  export * from './operation-node/drop-type-node.js';
105
107
  export * from './operation-node/drop-view-node.js';
106
- export * from './operation-node/filter-node.js';
107
108
  export * from './operation-node/foreign-key-constraint-node.js';
108
109
  export * from './operation-node/from-node.js';
109
110
  export * from './operation-node/generated-node.js';
@@ -122,7 +123,6 @@ export * from './operation-node/on-duplicate-key-node.js';
122
123
  export * from './operation-node/on-node.js';
123
124
  export * from './operation-node/operation-node-source.js';
124
125
  export * from './operation-node/operation-node-transformer.js';
125
- export * from './operation-node/operation-node-utils.js';
126
126
  export * from './operation-node/operation-node-visitor.js';
127
127
  export * from './operation-node/operation-node.js';
128
128
  export * from './operation-node/operator-node.js';
@@ -157,18 +157,22 @@ export * from './operation-node/over-node.js';
157
157
  export * from './operation-node/partition-by-node.js';
158
158
  export * from './operation-node/partition-by-item-node.js';
159
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';
160
162
  export * from './util/column-type.js';
161
163
  export * from './util/compilable.js';
162
164
  export * from './util/explainable.js';
163
165
  export * from './util/log.js';
164
- 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';
165
169
  export { SelectExpression, SelectExpressionOrList, Selection, } from './parser/select-parser.js';
166
- export { ReferenceExpression, ReferenceExpressionOrList, StringReference, } from './parser/reference-parser.js';
170
+ export { ReferenceExpression, ReferenceExpressionOrList, SimpleReferenceExpression, StringReference, ExtractTypeFromStringReference, ExtractTypeFromReferenceExpression, } from './parser/reference-parser.js';
167
171
  export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
168
- export { FilterValueExpression, FilterValueExpressionOrList, ExistsExpression, FilterOperator, } from './parser/filter-parser.js';
169
172
  export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
170
173
  export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-parser.js';
171
174
  export { InsertObject } from './parser/insert-values-parser.js';
172
175
  export { MutationObject } from './parser/update-set-parser.js';
173
176
  export { OrderByExpression, OrderByDirectionExpression, } from './parser/order-by-parser.js';
174
- export { SetOperationExpression } from './parser/set-operation-parser.js';
177
+ export { ComparisonOperatorExpression, OperandValueExpression, OperandValueExpressionOrList, } from './parser/binary-operation-parser.js';
178
+ export { ExistsExpression } from './parser/unary-operation-parser.js';
package/dist/esm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /// <reference types="./index.d.ts" />
2
2
  export * from './kysely.js';
3
3
  export * from './query-creator.js';
4
+ export * from './expression/expression.js';
4
5
  export * from './query-builder/where-interface.js';
5
6
  export * from './query-builder/returning-interface.js';
6
7
  export * from './query-builder/having-interface.js';
@@ -39,6 +40,7 @@ export * from './schema/foreign-key-constraint-builder.js';
39
40
  export * from './schema/alter-table-builder.js';
40
41
  export * from './schema/create-view-builder.js';
41
42
  export * from './schema/drop-view-builder.js';
43
+ export * from './schema/alter-column-builder.js';
42
44
  export * from './dynamic/dynamic.js';
43
45
  export * from './driver/driver.js';
44
46
  export * from './driver/database-connection.js';
@@ -104,7 +106,6 @@ export * from './operation-node/drop-schema-node.js';
104
106
  export * from './operation-node/drop-table-node.js';
105
107
  export * from './operation-node/drop-type-node.js';
106
108
  export * from './operation-node/drop-view-node.js';
107
- export * from './operation-node/filter-node.js';
108
109
  export * from './operation-node/foreign-key-constraint-node.js';
109
110
  export * from './operation-node/from-node.js';
110
111
  export * from './operation-node/generated-node.js';
@@ -123,7 +124,6 @@ export * from './operation-node/on-duplicate-key-node.js';
123
124
  export * from './operation-node/on-node.js';
124
125
  export * from './operation-node/operation-node-source.js';
125
126
  export * from './operation-node/operation-node-transformer.js';
126
- export * from './operation-node/operation-node-utils.js';
127
127
  export * from './operation-node/operation-node-visitor.js';
128
128
  export * from './operation-node/operation-node.js';
129
129
  export * from './operation-node/operator-node.js';
@@ -158,7 +158,11 @@ export * from './operation-node/over-node.js';
158
158
  export * from './operation-node/partition-by-node.js';
159
159
  export * from './operation-node/partition-by-item-node.js';
160
160
  export * from './operation-node/set-operation-node.js';
161
+ export * from './operation-node/binary-operation-node.js';
162
+ export * from './operation-node/unary-operation-node.js';
161
163
  export * from './util/column-type.js';
162
164
  export * from './util/compilable.js';
163
165
  export * from './util/explainable.js';
164
166
  export * from './util/log.js';
167
+ export * from './util/infer-result.js';
168
+ export { logOnce } from './util/log-once.js';
@@ -25,11 +25,13 @@ export class FileMigrationProvider {
25
25
  const migrations = {};
26
26
  const files = await this.#props.fs.readdir(this.#props.migrationFolder);
27
27
  for (const fileName of files) {
28
- if ((fileName.endsWith('.js') || fileName.endsWith('.ts') || fileName.endsWith('.mjs')) &&
29
- !fileName.endsWith('.d.ts')) {
28
+ if (fileName.endsWith('.js') ||
29
+ (fileName.endsWith('.ts') && !fileName.endsWith('.d.ts')) ||
30
+ fileName.endsWith('.mjs') ||
31
+ (fileName.endsWith('.mts') && !fileName.endsWith('.d.mts'))) {
30
32
  const migration = await import(
31
33
  /* webpackIgnore: true */ this.#props.path.join(this.#props.migrationFolder, fileName));
32
- const migrationKey = fileName.substring(0, fileName.length - 3);
34
+ const migrationKey = fileName.substring(0, fileName.lastIndexOf('.'));
33
35
  // Handle esModuleInterop export's `default` prop...
34
36
  if (isMigration(migration?.default)) {
35
37
  migrations[migrationKey] = migration.default;
@@ -1,13 +1,14 @@
1
- import { ColumnNode } from './column-node.js';
2
1
  import { OperationNode } from './operation-node.js';
3
2
  import { OverNode } from './over-node.js';
4
- import { ReferenceNode } from './reference-node.js';
3
+ import { SimpleReferenceExpressionNode } from './simple-reference-expression-node.js';
4
+ import { WhereNode } from './where-node.js';
5
5
  declare type AggregateFunction = 'avg' | 'count' | 'max' | 'min' | 'sum';
6
6
  export interface AggregateFunctionNode extends OperationNode {
7
7
  readonly kind: 'AggregateFunctionNode';
8
8
  readonly func: AggregateFunction;
9
- readonly column: ColumnNode | ReferenceNode;
9
+ readonly column: SimpleReferenceExpressionNode;
10
10
  readonly distinct?: boolean;
11
+ readonly filter?: WhereNode;
11
12
  readonly over?: OverNode;
12
13
  }
13
14
  /**
@@ -15,8 +16,10 @@ export interface AggregateFunctionNode extends OperationNode {
15
16
  */
16
17
  export declare const AggregateFunctionNode: Readonly<{
17
18
  is(node: OperationNode): node is AggregateFunctionNode;
18
- create(aggregateFunction: AggregateFunction, column: ColumnNode | ReferenceNode): AggregateFunctionNode;
19
+ create(aggregateFunction: AggregateFunction, column: SimpleReferenceExpressionNode): AggregateFunctionNode;
19
20
  cloneWithDistinct(aggregateFunctionNode: AggregateFunctionNode): AggregateFunctionNode;
21
+ cloneWithFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
22
+ cloneWithOrFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
20
23
  cloneWithOver(aggregateFunctionNode: AggregateFunctionNode, over?: OverNode): AggregateFunctionNode;
21
24
  }>;
22
25
  export {};
@@ -1,5 +1,6 @@
1
1
  /// <reference types="./aggregate-function-node.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
+ import { WhereNode } from './where-node.js';
3
4
  /**
4
5
  * @internal
5
6
  */
@@ -20,6 +21,22 @@ export const AggregateFunctionNode = freeze({
20
21
  distinct: true,
21
22
  });
22
23
  },
24
+ cloneWithFilter(aggregateFunctionNode, filter) {
25
+ return freeze({
26
+ ...aggregateFunctionNode,
27
+ filter: aggregateFunctionNode.filter
28
+ ? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, 'And', filter)
29
+ : WhereNode.create(filter),
30
+ });
31
+ },
32
+ cloneWithOrFilter(aggregateFunctionNode, filter) {
33
+ return freeze({
34
+ ...aggregateFunctionNode,
35
+ filter: aggregateFunctionNode.filter
36
+ ? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, 'Or', filter)
37
+ : WhereNode.create(filter),
38
+ });
39
+ },
23
40
  cloneWithOver(aggregateFunctionNode, over) {
24
41
  return freeze({
25
42
  ...aggregateFunctionNode,