kysely 0.23.4 → 0.24.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 (314) hide show
  1. package/README.md +49 -25
  2. package/dist/cjs/dialect/database-introspector.d.ts +4 -2
  3. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
  4. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
  5. package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
  6. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
  7. package/dist/cjs/dialect/mysql/mysql-introspector.js +19 -13
  8. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  9. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
  10. package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -1
  11. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  12. package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
  13. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  14. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +6 -5
  15. package/dist/cjs/driver/runtime-driver.js +4 -2
  16. package/dist/cjs/expression/expression-builder.d.ts +386 -0
  17. package/dist/cjs/expression/expression-builder.js +92 -0
  18. package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
  19. package/dist/cjs/expression/expression-wrapper.js +54 -0
  20. package/dist/cjs/expression/expression.d.ts +1 -1
  21. package/dist/cjs/helpers/postgres.d.ts +133 -0
  22. package/dist/cjs/helpers/postgres.js +141 -0
  23. package/dist/cjs/index.d.ts +4 -3
  24. package/dist/cjs/index.js +4 -2
  25. package/dist/cjs/kysely.d.ts +10 -0
  26. package/dist/cjs/kysely.js +12 -1
  27. package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
  28. package/dist/cjs/migration/migrator.d.ts +5 -2
  29. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -2
  30. package/dist/cjs/operation-node/aggregate-function-node.js +2 -2
  31. package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
  32. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
  33. package/dist/cjs/operation-node/delete-query-node.js +2 -8
  34. package/dist/cjs/operation-node/function-node.d.ts +13 -0
  35. package/dist/cjs/operation-node/function-node.js +19 -0
  36. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  37. package/dist/cjs/operation-node/operation-node-transformer.js +11 -2
  38. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  39. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  40. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/operator-node.d.ts +13 -2
  42. package/dist/cjs/operation-node/operator-node.js +38 -3
  43. package/dist/cjs/operation-node/query-node.d.ts +25 -8
  44. package/dist/cjs/operation-node/query-node.js +9 -2
  45. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  46. package/dist/cjs/operation-node/select-query-node.js +0 -6
  47. package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
  48. package/dist/cjs/operation-node/update-query-node.js +0 -6
  49. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
  50. package/dist/cjs/parser/binary-operation-parser.js +89 -39
  51. package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
  52. package/dist/cjs/parser/coalesce-parser.js +0 -9
  53. package/dist/cjs/parser/expression-parser.d.ts +7 -3
  54. package/dist/cjs/parser/expression-parser.js +4 -4
  55. package/dist/cjs/parser/group-by-parser.d.ts +3 -2
  56. package/dist/cjs/parser/group-by-parser.js +3 -0
  57. package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
  58. package/dist/cjs/parser/insert-values-parser.js +19 -13
  59. package/dist/cjs/parser/join-parser.js +1 -1
  60. package/dist/cjs/parser/parse-utils.d.ts +0 -2
  61. package/dist/cjs/parser/parse-utils.js +1 -8
  62. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  63. package/dist/cjs/parser/select-parser.d.ts +5 -13
  64. package/dist/cjs/parser/select-parser.js +8 -4
  65. package/dist/cjs/parser/table-parser.d.ts +6 -3
  66. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
  67. package/dist/cjs/parser/unary-operation-parser.js +9 -8
  68. package/dist/cjs/parser/update-set-parser.d.ts +4 -1
  69. package/dist/cjs/parser/update-set-parser.js +9 -4
  70. package/dist/cjs/parser/value-parser.d.ts +5 -0
  71. package/dist/cjs/parser/value-parser.js +1 -3
  72. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  73. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +10 -4
  74. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  75. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  76. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
  77. package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
  78. package/dist/cjs/query-builder/delete-query-builder.d.ts +224 -205
  79. package/dist/cjs/query-builder/delete-query-builder.js +21 -27
  80. package/dist/cjs/query-builder/delete-result.js +3 -0
  81. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  82. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
  83. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  84. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
  85. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  86. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
  87. package/dist/cjs/query-builder/function-module.d.ts +304 -42
  88. package/dist/cjs/query-builder/function-module.js +44 -208
  89. package/dist/cjs/query-builder/having-interface.d.ts +19 -16
  90. package/dist/cjs/query-builder/insert-query-builder.d.ts +78 -30
  91. package/dist/cjs/query-builder/insert-query-builder.js +21 -30
  92. package/dist/cjs/query-builder/insert-result.js +3 -0
  93. package/dist/cjs/query-builder/join-builder.d.ts +23 -26
  94. package/dist/cjs/query-builder/join-builder.js +17 -22
  95. package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
  96. package/dist/cjs/query-builder/no-result-error.js +5 -1
  97. package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
  98. package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
  99. package/dist/cjs/query-builder/over-builder.d.ts +5 -0
  100. package/dist/cjs/query-builder/over-builder.js +7 -0
  101. package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
  102. package/dist/cjs/query-builder/select-query-builder.d.ts +155 -243
  103. package/dist/cjs/query-builder/select-query-builder.js +333 -78
  104. package/dist/cjs/query-builder/update-query-builder.d.ts +149 -217
  105. package/dist/cjs/query-builder/update-query-builder.js +21 -115
  106. package/dist/cjs/query-builder/update-result.js +3 -0
  107. package/dist/cjs/query-builder/where-interface.d.ts +71 -184
  108. package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
  109. package/dist/cjs/query-compiler/default-query-compiler.js +18 -2
  110. package/dist/cjs/query-creator.d.ts +38 -2
  111. package/dist/cjs/query-creator.js +3 -45
  112. package/dist/cjs/query-executor/query-executor.d.ts +3 -3
  113. package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
  114. package/dist/cjs/raw-builder/raw-builder.js +13 -7
  115. package/dist/cjs/raw-builder/sql.d.ts +17 -9
  116. package/dist/cjs/raw-builder/sql.js +8 -2
  117. package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
  118. package/dist/cjs/schema/alter-column-builder.js +7 -0
  119. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  120. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  121. package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  122. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
  123. package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
  124. package/dist/cjs/schema/column-definition-builder.js +8 -1
  125. package/dist/cjs/schema/create-index-builder.d.ts +51 -9
  126. package/dist/cjs/schema/create-index-builder.js +17 -0
  127. package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
  128. package/dist/cjs/schema/create-schema-builder.js +7 -0
  129. package/dist/cjs/schema/create-table-builder.d.ts +3 -1
  130. package/dist/cjs/schema/create-table-builder.js +3 -1
  131. package/dist/cjs/schema/create-type-builder.d.ts +5 -0
  132. package/dist/cjs/schema/create-type-builder.js +7 -0
  133. package/dist/cjs/schema/create-view-builder.d.ts +5 -0
  134. package/dist/cjs/schema/create-view-builder.js +7 -0
  135. package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
  136. package/dist/cjs/schema/drop-index-builder.js +7 -0
  137. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
  138. package/dist/cjs/schema/drop-schema-builder.js +7 -0
  139. package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
  140. package/dist/cjs/schema/drop-table-builder.js +7 -0
  141. package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
  142. package/dist/cjs/schema/drop-type-builder.js +7 -0
  143. package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
  144. package/dist/cjs/schema/drop-view-builder.js +7 -0
  145. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
  146. package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
  147. package/dist/cjs/util/compilable.d.ts +1 -0
  148. package/dist/cjs/util/compilable.js +6 -0
  149. package/dist/cjs/util/explainable.d.ts +35 -0
  150. package/dist/cjs/util/log.d.ts +2 -0
  151. package/dist/cjs/util/object-utils.js +1 -1
  152. package/dist/cjs/util/streamable.d.ts +29 -0
  153. package/dist/cjs/util/streamable.js +2 -0
  154. package/dist/cjs/util/type-utils.d.ts +6 -4
  155. package/dist/esm/dialect/database-introspector.d.ts +4 -2
  156. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
  157. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  158. package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
  159. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
  160. package/dist/esm/dialect/mysql/mysql-introspector.js +19 -13
  161. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  162. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
  163. package/dist/esm/dialect/postgres/postgres-introspector.js +3 -1
  164. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  165. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  166. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  167. package/dist/esm/dialect/sqlite/sqlite-introspector.js +6 -5
  168. package/dist/esm/driver/runtime-driver.js +4 -2
  169. package/dist/esm/expression/expression-builder.d.ts +386 -0
  170. package/dist/esm/expression/expression-builder.js +88 -0
  171. package/dist/esm/expression/expression-wrapper.d.ts +92 -0
  172. package/dist/esm/expression/expression-wrapper.js +50 -0
  173. package/dist/esm/expression/expression.d.ts +1 -1
  174. package/dist/esm/helpers/postgres.d.ts +133 -0
  175. package/dist/esm/helpers/postgres.js +136 -0
  176. package/dist/esm/index.d.ts +4 -3
  177. package/dist/esm/index.js +2 -1
  178. package/dist/esm/kysely.d.ts +10 -0
  179. package/dist/esm/kysely.js +13 -2
  180. package/dist/esm/migration/file-migration-provider.d.ts +5 -2
  181. package/dist/esm/migration/migrator.d.ts +5 -2
  182. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -2
  183. package/dist/esm/operation-node/aggregate-function-node.js +2 -2
  184. package/dist/esm/operation-node/create-index-node.d.ts +2 -0
  185. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  186. package/dist/esm/operation-node/delete-query-node.js +2 -8
  187. package/dist/esm/operation-node/function-node.d.ts +13 -0
  188. package/dist/esm/operation-node/function-node.js +17 -0
  189. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  190. package/dist/esm/operation-node/operation-node-transformer.js +11 -2
  191. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  192. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  193. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  194. package/dist/esm/operation-node/operator-node.d.ts +13 -2
  195. package/dist/esm/operation-node/operator-node.js +34 -3
  196. package/dist/esm/operation-node/query-node.d.ts +25 -8
  197. package/dist/esm/operation-node/query-node.js +9 -2
  198. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  199. package/dist/esm/operation-node/select-query-node.js +0 -6
  200. package/dist/esm/operation-node/update-query-node.d.ts +0 -1
  201. package/dist/esm/operation-node/update-query-node.js +0 -6
  202. package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
  203. package/dist/esm/parser/binary-operation-parser.js +85 -37
  204. package/dist/esm/parser/coalesce-parser.d.ts +0 -2
  205. package/dist/esm/parser/coalesce-parser.js +1 -7
  206. package/dist/esm/parser/expression-parser.d.ts +7 -3
  207. package/dist/esm/parser/expression-parser.js +5 -5
  208. package/dist/esm/parser/group-by-parser.d.ts +3 -2
  209. package/dist/esm/parser/group-by-parser.js +3 -0
  210. package/dist/esm/parser/insert-values-parser.d.ts +4 -1
  211. package/dist/esm/parser/insert-values-parser.js +18 -12
  212. package/dist/esm/parser/join-parser.js +2 -2
  213. package/dist/esm/parser/parse-utils.d.ts +0 -2
  214. package/dist/esm/parser/parse-utils.js +0 -6
  215. package/dist/esm/parser/returning-parser.d.ts +2 -1
  216. package/dist/esm/parser/select-parser.d.ts +5 -13
  217. package/dist/esm/parser/select-parser.js +7 -3
  218. package/dist/esm/parser/table-parser.d.ts +6 -3
  219. package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
  220. package/dist/esm/parser/unary-operation-parser.js +8 -8
  221. package/dist/esm/parser/update-set-parser.d.ts +4 -1
  222. package/dist/esm/parser/update-set-parser.js +7 -2
  223. package/dist/esm/parser/value-parser.d.ts +5 -0
  224. package/dist/esm/parser/value-parser.js +1 -3
  225. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  226. package/dist/esm/plugin/camel-case/camel-case-plugin.js +10 -4
  227. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  228. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  229. package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
  230. package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
  231. package/dist/esm/query-builder/delete-query-builder.d.ts +224 -205
  232. package/dist/esm/query-builder/delete-query-builder.js +24 -30
  233. package/dist/esm/query-builder/delete-result.js +3 -0
  234. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  235. package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
  236. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  237. package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
  238. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  239. package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
  240. package/dist/esm/query-builder/function-module.d.ts +304 -42
  241. package/dist/esm/query-builder/function-module.js +43 -207
  242. package/dist/esm/query-builder/having-interface.d.ts +19 -16
  243. package/dist/esm/query-builder/insert-query-builder.d.ts +78 -30
  244. package/dist/esm/query-builder/insert-query-builder.js +25 -34
  245. package/dist/esm/query-builder/insert-result.js +3 -0
  246. package/dist/esm/query-builder/join-builder.d.ts +23 -26
  247. package/dist/esm/query-builder/join-builder.js +18 -23
  248. package/dist/esm/query-builder/no-result-error.d.ts +1 -0
  249. package/dist/esm/query-builder/no-result-error.js +3 -0
  250. package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
  251. package/dist/esm/query-builder/on-conflict-builder.js +54 -38
  252. package/dist/esm/query-builder/over-builder.d.ts +5 -0
  253. package/dist/esm/query-builder/over-builder.js +7 -0
  254. package/dist/esm/query-builder/returning-interface.d.ts +2 -2
  255. package/dist/esm/query-builder/select-query-builder.d.ts +155 -243
  256. package/dist/esm/query-builder/select-query-builder.js +337 -82
  257. package/dist/esm/query-builder/update-query-builder.d.ts +149 -217
  258. package/dist/esm/query-builder/update-query-builder.js +25 -119
  259. package/dist/esm/query-builder/update-result.js +3 -0
  260. package/dist/esm/query-builder/where-interface.d.ts +71 -184
  261. package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
  262. package/dist/esm/query-compiler/default-query-compiler.js +18 -2
  263. package/dist/esm/query-creator.d.ts +38 -2
  264. package/dist/esm/query-creator.js +3 -45
  265. package/dist/esm/query-executor/query-executor.d.ts +3 -3
  266. package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
  267. package/dist/esm/raw-builder/raw-builder.js +13 -7
  268. package/dist/esm/raw-builder/sql.d.ts +17 -9
  269. package/dist/esm/raw-builder/sql.js +8 -2
  270. package/dist/esm/schema/alter-column-builder.d.ts +5 -0
  271. package/dist/esm/schema/alter-column-builder.js +7 -0
  272. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  273. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  274. package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  275. package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
  276. package/dist/esm/schema/column-definition-builder.d.ts +6 -1
  277. package/dist/esm/schema/column-definition-builder.js +8 -1
  278. package/dist/esm/schema/create-index-builder.d.ts +51 -9
  279. package/dist/esm/schema/create-index-builder.js +17 -0
  280. package/dist/esm/schema/create-schema-builder.d.ts +5 -0
  281. package/dist/esm/schema/create-schema-builder.js +7 -0
  282. package/dist/esm/schema/create-table-builder.d.ts +3 -1
  283. package/dist/esm/schema/create-table-builder.js +3 -1
  284. package/dist/esm/schema/create-type-builder.d.ts +5 -0
  285. package/dist/esm/schema/create-type-builder.js +7 -0
  286. package/dist/esm/schema/create-view-builder.d.ts +5 -0
  287. package/dist/esm/schema/create-view-builder.js +7 -0
  288. package/dist/esm/schema/drop-index-builder.d.ts +5 -0
  289. package/dist/esm/schema/drop-index-builder.js +7 -0
  290. package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
  291. package/dist/esm/schema/drop-schema-builder.js +7 -0
  292. package/dist/esm/schema/drop-table-builder.d.ts +5 -0
  293. package/dist/esm/schema/drop-table-builder.js +7 -0
  294. package/dist/esm/schema/drop-type-builder.d.ts +5 -0
  295. package/dist/esm/schema/drop-type-builder.js +7 -0
  296. package/dist/esm/schema/drop-view-builder.d.ts +5 -0
  297. package/dist/esm/schema/drop-view-builder.js +7 -0
  298. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
  299. package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
  300. package/dist/esm/util/compilable.d.ts +1 -0
  301. package/dist/esm/util/compilable.js +4 -1
  302. package/dist/esm/util/explainable.d.ts +35 -0
  303. package/dist/esm/util/log.d.ts +2 -0
  304. package/dist/esm/util/object-utils.js +1 -1
  305. package/dist/esm/util/streamable.d.ts +29 -0
  306. package/dist/esm/util/streamable.js +2 -0
  307. package/dist/esm/util/type-utils.d.ts +6 -4
  308. package/helpers/postgres.d.ts +1 -0
  309. package/helpers/postgres.js +1 -0
  310. package/package.json +20 -9
  311. package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
  312. package/dist/cjs/query-builder/expression-builder.js +0 -107
  313. package/dist/esm/query-builder/expression-builder.d.ts +0 -126
  314. package/dist/esm/query-builder/expression-builder.js +0 -104
@@ -75,7 +75,9 @@ export class CreateTableBuilder {
75
75
  * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
76
76
  * .addColumn('last_name', 'varchar(255)')
77
77
  * .addColumn('bank_balance', 'numeric(8, 2)')
78
- * .addColumn('data', sql`some_type`)
78
+ * // You can specify any data type using the `sql` tag if the types
79
+ * // don't include it.
80
+ * .addColumn('data', sql`any_type_here`)
79
81
  * .addColumn('parent_id', 'integer', (col) =>
80
82
  * col.references('person.id').onDelete('cascade'))
81
83
  * )
@@ -18,6 +18,11 @@ export declare class CreateTypeBuilder implements OperationNodeSource, Compilabl
18
18
  * ```
19
19
  */
20
20
  asEnum(values: string[]): CreateTypeBuilder;
21
+ /**
22
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
23
+ * what the provided function returns.
24
+ */
25
+ $call<T>(func: (qb: this) => T): T;
21
26
  compile(): CompiledQuery;
22
27
  execute(): Promise<void>;
23
28
  }
@@ -25,6 +25,13 @@ export class CreateTypeBuilder {
25
25
  node: CreateTypeNode.cloneWithEnum(this.#props.node, values),
26
26
  });
27
27
  }
28
+ /**
29
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
30
+ * what the provided function returns.
31
+ */
32
+ $call(func) {
33
+ return func(this);
34
+ }
28
35
  compile() {
29
36
  return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
30
37
  }
@@ -32,6 +32,11 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
32
32
  * into the query or raw expression passed to this method!
33
33
  */
34
34
  as(query: AnySelectQueryBuilder | RawBuilder<any>): CreateViewBuilder;
35
+ /**
36
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
37
+ * what the provided function returns.
38
+ */
39
+ $call<T>(func: (qb: this) => T): T;
35
40
  toOperationNode(): CreateViewNode;
36
41
  compile(): CompiledQuery;
37
42
  execute(): Promise<void>;
@@ -77,6 +77,13 @@ export class CreateViewBuilder {
77
77
  }),
78
78
  });
79
79
  }
80
+ /**
81
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
82
+ * what the provided function returns.
83
+ */
84
+ $call(func) {
85
+ return func(this);
86
+ }
80
87
  toOperationNode() {
81
88
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
82
89
  }
@@ -14,6 +14,11 @@ export declare class DropIndexBuilder implements OperationNodeSource, Compilable
14
14
  on(table: string): DropIndexBuilder;
15
15
  ifExists(): DropIndexBuilder;
16
16
  cascade(): DropIndexBuilder;
17
+ /**
18
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
19
+ * what the provided function returns.
20
+ */
21
+ $call<T>(func: (qb: this) => T): T;
17
22
  toOperationNode(): DropIndexNode;
18
23
  compile(): CompiledQuery;
19
24
  execute(): Promise<void>;
@@ -36,6 +36,13 @@ export class DropIndexBuilder {
36
36
  }),
37
37
  });
38
38
  }
39
+ /**
40
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
41
+ * what the provided function returns.
42
+ */
43
+ $call(func) {
44
+ return func(this);
45
+ }
39
46
  toOperationNode() {
40
47
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
41
48
  }
@@ -9,6 +9,11 @@ export declare class DropSchemaBuilder implements OperationNodeSource, Compilabl
9
9
  constructor(props: DropSchemaBuilderProps);
10
10
  ifExists(): DropSchemaBuilder;
11
11
  cascade(): DropSchemaBuilder;
12
+ /**
13
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
14
+ * what the provided function returns.
15
+ */
16
+ $call<T>(func: (qb: this) => T): T;
12
17
  toOperationNode(): DropSchemaNode;
13
18
  compile(): CompiledQuery;
14
19
  execute(): Promise<void>;
@@ -23,6 +23,13 @@ export class DropSchemaBuilder {
23
23
  }),
24
24
  });
25
25
  }
26
+ /**
27
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
28
+ * what the provided function returns.
29
+ */
30
+ $call(func) {
31
+ return func(this);
32
+ }
26
33
  toOperationNode() {
27
34
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
28
35
  }
@@ -9,6 +9,11 @@ export declare class DropTableBuilder implements OperationNodeSource, Compilable
9
9
  constructor(props: DropTableBuilderProps);
10
10
  ifExists(): DropTableBuilder;
11
11
  cascade(): DropTableBuilder;
12
+ /**
13
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
14
+ * what the provided function returns.
15
+ */
16
+ $call<T>(func: (qb: this) => T): T;
12
17
  toOperationNode(): DropTableNode;
13
18
  compile(): CompiledQuery;
14
19
  execute(): Promise<void>;
@@ -23,6 +23,13 @@ export class DropTableBuilder {
23
23
  }),
24
24
  });
25
25
  }
26
+ /**
27
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
28
+ * what the provided function returns.
29
+ */
30
+ $call(func) {
31
+ return func(this);
32
+ }
26
33
  toOperationNode() {
27
34
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
28
35
  }
@@ -8,6 +8,11 @@ export declare class DropTypeBuilder implements OperationNodeSource, Compilable
8
8
  #private;
9
9
  constructor(props: DropTypeBuilderProps);
10
10
  ifExists(): DropTypeBuilder;
11
+ /**
12
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
13
+ * what the provided function returns.
14
+ */
15
+ $call<T>(func: (qb: this) => T): T;
11
16
  toOperationNode(): DropTypeNode;
12
17
  compile(): CompiledQuery;
13
18
  execute(): Promise<void>;
@@ -15,6 +15,13 @@ export class DropTypeBuilder {
15
15
  }),
16
16
  });
17
17
  }
18
+ /**
19
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
20
+ * what the provided function returns.
21
+ */
22
+ $call(func) {
23
+ return func(this);
24
+ }
18
25
  toOperationNode() {
19
26
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
20
27
  }
@@ -10,6 +10,11 @@ export declare class DropViewBuilder implements OperationNodeSource, Compilable
10
10
  materialized(): DropViewBuilder;
11
11
  ifExists(): DropViewBuilder;
12
12
  cascade(): DropViewBuilder;
13
+ /**
14
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
15
+ * what the provided function returns.
16
+ */
17
+ $call<T>(func: (qb: this) => T): T;
13
18
  toOperationNode(): DropViewNode;
14
19
  compile(): CompiledQuery;
15
20
  execute(): Promise<void>;
@@ -31,6 +31,13 @@ export class DropViewBuilder {
31
31
  }),
32
32
  });
33
33
  }
34
+ /**
35
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
36
+ * what the provided function returns.
37
+ */
38
+ $call(func) {
39
+ return func(this);
40
+ }
34
41
  toOperationNode() {
35
42
  return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
36
43
  }
@@ -10,5 +10,10 @@ export declare class ForeignKeyConstraintBuilder implements ForeignKeyConstraint
10
10
  constructor(node: ForeignKeyConstraintNode);
11
11
  onDelete(onDelete: OnModifyForeignAction): ForeignKeyConstraintBuilder;
12
12
  onUpdate(onUpdate: OnModifyForeignAction): ForeignKeyConstraintBuilder;
13
+ /**
14
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
15
+ * what the provided function returns.
16
+ */
17
+ $call<T>(func: (qb: this) => T): T;
13
18
  toOperationNode(): ForeignKeyConstraintNode;
14
19
  }
@@ -17,6 +17,13 @@ export class ForeignKeyConstraintBuilder {
17
17
  onUpdate: parseOnModifyForeignAction(onUpdate),
18
18
  }));
19
19
  }
20
+ /**
21
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
22
+ * what the provided function returns.
23
+ */
24
+ $call(func) {
25
+ return func(this);
26
+ }
20
27
  toOperationNode() {
21
28
  return this.#node;
22
29
  }
@@ -2,3 +2,4 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
2
2
  export interface Compilable<O = unknown> {
3
3
  compile(): CompiledQuery<O>;
4
4
  }
5
+ export declare function isCompilable(value: unknown): value is Compilable;
@@ -1,2 +1,5 @@
1
1
  /// <reference types="./compilable.d.ts" />
2
- export {};
2
+ import { isFunction, isObject } from './object-utils.js';
3
+ export function isCompilable(value) {
4
+ return isObject(value) && isFunction(value.compile);
5
+ }
@@ -1,5 +1,40 @@
1
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
+ /**
5
+ * Executes query with `explain` statement before the main query.
6
+ *
7
+ * ```ts
8
+ * const explained = await db
9
+ * .selectFrom('person')
10
+ * .where('gender', '=', 'female')
11
+ * .selectAll()
12
+ * .explain('json')
13
+ * ```
14
+ *
15
+ * The generated SQL (MySQL):
16
+ *
17
+ * ```sql
18
+ * explain format=json select * from `person` where `gender` = ?
19
+ * ```
20
+ *
21
+ * You can also execute `explain analyze` statements.
22
+ *
23
+ * ```ts
24
+ * import { sql } from 'kysely'
25
+ *
26
+ * const explained = await db
27
+ * .selectFrom('person')
28
+ * .where('gender', '=', 'female')
29
+ * .selectAll()
30
+ * .explain('json', sql`analyze`)
31
+ * ```
32
+ *
33
+ * The generated SQL (PostgreSQL):
34
+ *
35
+ * ```sql
36
+ * explain (analyze, format json) select * from "person" where "gender" = $1
37
+ * ```
38
+ */
4
39
  explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<O[]>;
5
40
  }
@@ -10,6 +10,8 @@ export interface QueryLogEvent {
10
10
  export interface ErrorLogEvent {
11
11
  readonly level: 'error';
12
12
  readonly error: unknown;
13
+ readonly query: CompiledQuery;
14
+ readonly queryDurationMillis: number;
13
15
  }
14
16
  export declare type LogEvent = QueryLogEvent | ErrorLogEvent;
15
17
  export declare type Logger = (event: LogEvent) => void;
@@ -9,7 +9,7 @@ export function isEmpty(obj) {
9
9
  return false;
10
10
  }
11
11
  export function isUndefined(obj) {
12
- return obj === undefined;
12
+ return typeof obj === 'undefined' || obj === undefined;
13
13
  }
14
14
  export function isString(obj) {
15
15
  return typeof obj === 'string';
@@ -0,0 +1,29 @@
1
+ export interface Streamable<O> {
2
+ /**
3
+ * Executes the query and streams the rows.
4
+ *
5
+ * The optional argument `chunkSize` defines how many rows to fetch from the database
6
+ * at a time. It only affects some dialects like PostgreSQL that support it.
7
+ *
8
+ * ### Examples
9
+ *
10
+ * ```ts
11
+ * const stream = db.
12
+ * .selectFrom('person')
13
+ * .select(['first_name', 'last_name'])
14
+ * .where('gender', '=', 'other')
15
+ * .stream()
16
+ *
17
+ * for await (const person of stream) {
18
+ * console.log(person.first_name)
19
+ *
20
+ * if (person.last_name === 'Something') {
21
+ * // Breaking or returning before the stream has ended will release
22
+ * // the database connection and invalidate the stream.
23
+ * break
24
+ * }
25
+ * }
26
+ * ```
27
+ */
28
+ stream(chunkSize?: number): AsyncIterableIterator<O>;
29
+ }
@@ -0,0 +1,2 @@
1
+ /// <reference types="./streamable.d.ts" />
2
+ export {};
@@ -100,10 +100,11 @@ export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : ne
100
100
  * Any select query builder.
101
101
  */
102
102
  export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
103
- /**
104
- * Given a query output type `O` evaluates to the output type of a `executeTakeFirst` call.
105
- */
106
- export declare type SingleResultType<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : O | undefined;
103
+ export declare type SimplifySingleResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O> | undefined;
104
+ export declare type SimplifyResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O>;
105
+ export declare type Simplify<T> = {
106
+ [K in keyof T]: T[K];
107
+ } & {};
107
108
  /**
108
109
  * Represents a database row whose column names and their types are unknown.
109
110
  */
@@ -143,3 +144,4 @@ export declare type IsNever<T> = [T] extends [never] ? true : false;
143
144
  * Evaluates to `true` if the types `T` and `U` are equal.
144
145
  */
145
146
  export declare type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
147
+ export declare type SqlBool = boolean | 0 | 1;
@@ -0,0 +1 @@
1
+ export * from '../dist/cjs/helpers/postgres.js'
@@ -0,0 +1 @@
1
+ module.exports = require('../dist/cjs/helpers/postgres.js')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kysely",
3
- "version": "0.23.4",
3
+ "version": "0.24.0",
4
4
  "description": "Type safe SQL query builder",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,14 +14,24 @@
14
14
  "exports": {
15
15
  ".": {
16
16
  "import": "./dist/esm/index.js",
17
- "require": "./dist/cjs/index.js"
17
+ "require": "./dist/cjs/index.js",
18
+ "default": "./dist/cjs/index.js"
19
+ },
20
+ "./helpers/postgres": {
21
+ "import": "./dist/esm/helpers/postgres.js",
22
+ "require": "./dist/cjs/helpers/postgres.js",
23
+ "default": "./dist/cjs/helpers/postgres.js"
18
24
  }
19
25
  },
20
26
  "scripts": {
21
- "clean": "rm -rf dist && rm -rf test/node/dist && rm -rf test/browser/bundle.js",
22
- "test": "npm run clean && npm run build:cjs && npm run script:copy-interface-doc && npm run test:node:build && npm run test:node && npm run test:typings && npm run test:esmimports",
23
- "test:node:build": "rm -rf test/node/dist && tsc -p test/node",
24
- "test:node": "mocha --timeout 15000 test/node/dist/**/*.test.js",
27
+ "clean": "rm -rf dist & rm -rf test/node/dist & rm -rf test/browser/bundle.js & rm -rf helpers",
28
+ "test": "npm run build && npm run test:node:build && concurrently -n node,typings,esmimports \"npm run test:node\" \"npm run test:typings\" \"npm run test:esmimports\"",
29
+ "test:node:build": "tsc -p test/node",
30
+ "test:node": "concurrently -n postgres,mysql,sqlite \"npm run test:node:postgres\" \"npm run test:node:mysql\" \"npm run test:node:sqlite\"",
31
+ "test:node:postgres": "DIALECT=postgres npm run test:node:run",
32
+ "test:node:mysql": "DIALECT=mysql npm run test:node:run",
33
+ "test:node:sqlite": "DIALECT=sqlite npm run test:node:run",
34
+ "test:node:run": "mocha --timeout 15000 test/node/dist/**/*.test.js",
25
35
  "test:browser:build": "rm -rf test/browser/bundle.js && esbuild test/browser/main.ts --bundle --outfile=test/browser/bundle.js",
26
36
  "test:browser": "npm run build && npm run test:browser:build && node test/browser/test.js",
27
37
  "test:deno": "npm run build && deno run test/deno/local.test.ts && deno run test/deno/cdn.test.ts",
@@ -29,7 +39,7 @@
29
39
  "test:esmimports": "node scripts/check-esm-imports.js",
30
40
  "test:esbuild": "esbuild --bundle --platform=node --external:pg-native dist/esm/index.js --outfile=/dev/null",
31
41
  "prettier": "prettier --write 'src/**/*.ts' 'test/**/*.ts'",
32
- "build": "npm run clean && npm run build:esm && npm run build:cjs && npm run script:module-fixup && npm run script:copy-interface-doc",
42
+ "build": "npm run clean && concurrently -n esm,cjs \"npm run build:esm\" \"npm run build:cjs\" && concurrently -n modulefix,docfix \"npm run script:module-fixup\" \"npm run script:copy-interface-doc\"",
33
43
  "build:esm": "tsc -p tsconfig.json && npm run script:add-deno-type-references",
34
44
  "build:cjs": "tsc -p tsconfig-cjs.json",
35
45
  "docs:build": "typedoc --excludePrivate --excludeInternal --customCss ./docs-theme.css src/index.ts && npm run docs:postprocess",
@@ -57,6 +67,7 @@
57
67
  "chai": "^4.3.6",
58
68
  "chai-as-promised": "^7.1.1",
59
69
  "chai-subset": "^1.6.0",
70
+ "concurrently": "^7.6.0",
60
71
  "esbuild": "^0.14.47",
61
72
  "mocha": "^10.0.0",
62
73
  "mysql2": "^2.3.3",
@@ -66,7 +77,7 @@
66
77
  "prettier": "^2.7.1",
67
78
  "sinon": "^14.0.0",
68
79
  "tsd": "^0.21.0",
69
- "typedoc": "^0.23.6",
70
- "typescript": "4.7.4"
80
+ "typedoc": "^0.23.28",
81
+ "typescript": "5.0.2"
71
82
  }
72
83
  }
@@ -1,126 +0,0 @@
1
- import { SelectQueryBuilder } from './select-query-builder.js';
2
- import { TableExpression, From, FromTables } from '../parser/table-parser.js';
3
- import { FunctionModule } from './function-module.js';
4
- import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
5
- import { RawBuilder } from '../raw-builder/raw-builder.js';
6
- import { QueryExecutor } from '../query-executor/query-executor.js';
7
- export declare class ExpressionBuilder<DB, TB extends keyof DB> {
8
- #private;
9
- constructor(props: ExpressionBuilderProps);
10
- /**
11
- * Returns a {@link FunctionModule} that can be used to write type safe function
12
- * calls.
13
- *
14
- * The difference between this and {@link Kysely.fn} is that this one is more
15
- * type safe. You can only refer to columns visible to the part of the query
16
- * you are building. {@link Kysely.fn} allows you to refer to columns in any
17
- * table of the database even if it doesn't produce valid SQL.
18
- *
19
- * ```ts
20
- * await db.selectFrom('person')
21
- * .innerJoin('pet', 'pet.owner_id', 'person.id')
22
- * .select([
23
- * 'person.id',
24
- * (qb) => qb.fn.count('pet.id').as('pet_count')
25
- * ])
26
- * .groupBy('person.id')
27
- * .having(count('pet.id'), '>', 10)
28
- * .execute()
29
- * ```
30
- *
31
- * The generated SQL (PostgreSQL):
32
- *
33
- * ```sql
34
- * select "person"."id", count("pet"."id") as "pet_count"
35
- * from "person"
36
- * inner join "pet" on "pet"."owner_id" = "person"."id"
37
- * group by "person"."id"
38
- * having count("pet"."id") > $1
39
- * ```
40
- */
41
- get fn(): FunctionModule<DB, TB>;
42
- /**
43
- * Creates a subquery.
44
- *
45
- * The query builder returned by this method is typed in a way that you can refer to
46
- * all tables of the parent query in addition to the subquery's tables.
47
- *
48
- * This method accepts all the same inputs as {@link QueryCreator.selectFrom}.
49
- *
50
- * ### Examples
51
- *
52
- * This example shows that you can refer to both `pet.owner_id` and `person.id`
53
- * columns from the subquery. This is needed to be able to create correlated
54
- * subqueries:
55
- *
56
- * ```ts
57
- * const result = await db.selectFrom('pet')
58
- * .select([
59
- * 'pet.name',
60
- * (qb) => qb.selectFrom('person')
61
- * .whereRef('person.id', '=', 'pet.owner_id')
62
- * .select('person.first_name')
63
- * .as('owner_name')
64
- * ])
65
- * .execute()
66
- *
67
- * console.log(result[0].owner_name)
68
- * ```
69
- *
70
- * The generated SQL (PostgreSQL):
71
- *
72
- * ```sql
73
- * select
74
- * "pet"."name",
75
- * ( select "person"."first_name"
76
- * from "person"
77
- * where "person"."id" = "pet"."owner_id"
78
- * ) as "owner_name"
79
- * from "pet"
80
- * ```
81
- *
82
- * You can use a normal query in place of `(qb) => qb.selectFrom(...)` but in
83
- * that case Kysely typings wouldn't allow you to reference `pet.owner_id`
84
- * because `pet` is not joined to that query.
85
- */
86
- selectFrom<TE extends TableExpression<DB, TB>>(from: TE[]): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
87
- selectFrom<TE extends TableExpression<DB, TB>>(from: TE): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
88
- /**
89
- * See {@link QueryCreator.withSchema}
90
- */
91
- withSchema(schema: string): ExpressionBuilder<DB, TB>;
92
- /**
93
- * This can be used to reference columns.
94
- *
95
- * ### Examples
96
- *
97
- * In the next example we use the `ref` method to reference
98
- * columns of the virtual table `excluded` in a type-safe way
99
- * to create an upsert operation:
100
- *
101
- * ```ts
102
- * db.insertInto('person')
103
- * .values(person)
104
- * .onConflict(oc => oc
105
- * .column('id')
106
- * .doUpdateSet({
107
- * first_name: (eb) => eb.ref('excluded.first_name'),
108
- * last_name: (eb) => eb.ref('excluded.last_name')
109
- * })
110
- * )
111
- * ```
112
- *
113
- * In the next example we use `ref` in a raw sql expression. Unless you
114
- * want to be as type-safe as possible, this is probably overkill:
115
- *
116
- * ```ts
117
- * db.update('pet').set({
118
- * name: (eb) => sql`concat(${eb.ref('pet.name')}, ${suffix})`
119
- * })
120
- * ```
121
- */
122
- ref<RE extends StringReference<DB, TB>>(reference: RE): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
123
- }
124
- export interface ExpressionBuilderProps {
125
- readonly executor: QueryExecutor;
126
- }