kysely 0.23.5 → 0.24.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 (300) hide show
  1. package/README.md +46 -24
  2. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
  3. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  6. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  7. package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
  8. package/dist/cjs/driver/runtime-driver.js +4 -2
  9. package/dist/cjs/expression/expression-builder.d.ts +386 -0
  10. package/dist/cjs/expression/expression-builder.js +92 -0
  11. package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
  12. package/dist/cjs/expression/expression-wrapper.js +54 -0
  13. package/dist/cjs/expression/expression.d.ts +1 -1
  14. package/dist/cjs/helpers/mysql.d.ts +140 -0
  15. package/dist/cjs/helpers/mysql.js +170 -0
  16. package/dist/cjs/helpers/postgres.d.ts +133 -0
  17. package/dist/cjs/helpers/postgres.js +141 -0
  18. package/dist/cjs/index.d.ts +4 -3
  19. package/dist/cjs/index.js +4 -2
  20. package/dist/cjs/kysely.d.ts +10 -0
  21. package/dist/cjs/kysely.js +12 -1
  22. package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
  23. package/dist/cjs/migration/migrator.d.ts +5 -2
  24. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -3
  25. package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
  26. package/dist/cjs/operation-node/delete-query-node.d.ts +0 -1
  27. package/dist/cjs/operation-node/delete-query-node.js +0 -6
  28. package/dist/cjs/operation-node/function-node.d.ts +13 -0
  29. package/dist/cjs/operation-node/function-node.js +19 -0
  30. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  31. package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
  32. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  33. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  34. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/operator-node.d.ts +13 -2
  36. package/dist/cjs/operation-node/operator-node.js +38 -3
  37. package/dist/cjs/operation-node/query-node.d.ts +25 -8
  38. package/dist/cjs/operation-node/query-node.js +9 -2
  39. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  40. package/dist/cjs/operation-node/select-query-node.js +0 -6
  41. package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
  42. package/dist/cjs/operation-node/update-query-node.js +0 -6
  43. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
  44. package/dist/cjs/parser/binary-operation-parser.js +89 -39
  45. package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
  46. package/dist/cjs/parser/coalesce-parser.js +0 -9
  47. package/dist/cjs/parser/expression-parser.d.ts +7 -3
  48. package/dist/cjs/parser/expression-parser.js +3 -3
  49. package/dist/cjs/parser/group-by-parser.d.ts +3 -2
  50. package/dist/cjs/parser/group-by-parser.js +3 -0
  51. package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
  52. package/dist/cjs/parser/insert-values-parser.js +19 -13
  53. package/dist/cjs/parser/join-parser.js +1 -1
  54. package/dist/cjs/parser/parse-utils.d.ts +0 -2
  55. package/dist/cjs/parser/parse-utils.js +1 -8
  56. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  57. package/dist/cjs/parser/select-parser.d.ts +5 -13
  58. package/dist/cjs/parser/select-parser.js +8 -4
  59. package/dist/cjs/parser/table-parser.d.ts +5 -3
  60. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
  61. package/dist/cjs/parser/unary-operation-parser.js +9 -8
  62. package/dist/cjs/parser/update-set-parser.d.ts +4 -1
  63. package/dist/cjs/parser/update-set-parser.js +9 -4
  64. package/dist/cjs/parser/value-parser.d.ts +5 -0
  65. package/dist/cjs/parser/value-parser.js +1 -3
  66. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  67. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  68. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
  69. package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
  70. package/dist/cjs/query-builder/delete-query-builder.d.ts +220 -201
  71. package/dist/cjs/query-builder/delete-query-builder.js +21 -27
  72. package/dist/cjs/query-builder/delete-result.js +3 -0
  73. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  74. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
  75. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  76. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
  77. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  78. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
  79. package/dist/cjs/query-builder/function-module.d.ts +40 -12
  80. package/dist/cjs/query-builder/function-module.js +43 -329
  81. package/dist/cjs/query-builder/having-interface.d.ts +19 -16
  82. package/dist/cjs/query-builder/insert-query-builder.d.ts +75 -26
  83. package/dist/cjs/query-builder/insert-query-builder.js +21 -29
  84. package/dist/cjs/query-builder/insert-result.js +3 -0
  85. package/dist/cjs/query-builder/join-builder.d.ts +23 -26
  86. package/dist/cjs/query-builder/join-builder.js +17 -22
  87. package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
  88. package/dist/cjs/query-builder/no-result-error.js +5 -1
  89. package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
  90. package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
  91. package/dist/cjs/query-builder/over-builder.d.ts +5 -0
  92. package/dist/cjs/query-builder/over-builder.js +7 -0
  93. package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
  94. package/dist/cjs/query-builder/select-query-builder.d.ts +148 -237
  95. package/dist/cjs/query-builder/select-query-builder.js +333 -78
  96. package/dist/cjs/query-builder/update-query-builder.d.ts +145 -213
  97. package/dist/cjs/query-builder/update-query-builder.js +21 -115
  98. package/dist/cjs/query-builder/update-result.js +3 -0
  99. package/dist/cjs/query-builder/where-interface.d.ts +71 -184
  100. package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
  101. package/dist/cjs/query-compiler/default-query-compiler.js +17 -1
  102. package/dist/cjs/query-creator.d.ts +9 -2
  103. package/dist/cjs/query-creator.js +1 -24
  104. package/dist/cjs/query-executor/query-executor.d.ts +3 -3
  105. package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
  106. package/dist/cjs/raw-builder/raw-builder.js +13 -7
  107. package/dist/cjs/raw-builder/sql.d.ts +17 -9
  108. package/dist/cjs/raw-builder/sql.js +8 -2
  109. package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
  110. package/dist/cjs/schema/alter-column-builder.js +7 -0
  111. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  112. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  113. package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  114. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
  115. package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
  116. package/dist/cjs/schema/column-definition-builder.js +8 -1
  117. package/dist/cjs/schema/create-index-builder.d.ts +51 -9
  118. package/dist/cjs/schema/create-index-builder.js +17 -0
  119. package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
  120. package/dist/cjs/schema/create-schema-builder.js +7 -0
  121. package/dist/cjs/schema/create-table-builder.d.ts +3 -1
  122. package/dist/cjs/schema/create-table-builder.js +3 -1
  123. package/dist/cjs/schema/create-type-builder.d.ts +5 -0
  124. package/dist/cjs/schema/create-type-builder.js +7 -0
  125. package/dist/cjs/schema/create-view-builder.d.ts +5 -0
  126. package/dist/cjs/schema/create-view-builder.js +7 -0
  127. package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
  128. package/dist/cjs/schema/drop-index-builder.js +7 -0
  129. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
  130. package/dist/cjs/schema/drop-schema-builder.js +7 -0
  131. package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
  132. package/dist/cjs/schema/drop-table-builder.js +7 -0
  133. package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
  134. package/dist/cjs/schema/drop-type-builder.js +7 -0
  135. package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
  136. package/dist/cjs/schema/drop-view-builder.js +7 -0
  137. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
  138. package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
  139. package/dist/cjs/util/compilable.d.ts +1 -0
  140. package/dist/cjs/util/compilable.js +6 -0
  141. package/dist/cjs/util/explainable.d.ts +35 -0
  142. package/dist/cjs/util/log.d.ts +2 -0
  143. package/dist/cjs/util/object-utils.js +1 -1
  144. package/dist/cjs/util/streamable.d.ts +29 -0
  145. package/dist/cjs/util/streamable.js +2 -0
  146. package/dist/cjs/util/type-utils.d.ts +1 -0
  147. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
  148. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  149. package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
  150. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  151. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  152. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  153. package/dist/esm/driver/runtime-driver.js +4 -2
  154. package/dist/esm/expression/expression-builder.d.ts +386 -0
  155. package/dist/esm/expression/expression-builder.js +88 -0
  156. package/dist/esm/expression/expression-wrapper.d.ts +92 -0
  157. package/dist/esm/expression/expression-wrapper.js +50 -0
  158. package/dist/esm/expression/expression.d.ts +1 -1
  159. package/dist/esm/helpers/mysql.d.ts +140 -0
  160. package/dist/esm/helpers/mysql.js +165 -0
  161. package/dist/esm/helpers/postgres.d.ts +133 -0
  162. package/dist/esm/helpers/postgres.js +136 -0
  163. package/dist/esm/index.d.ts +4 -3
  164. package/dist/esm/index.js +2 -1
  165. package/dist/esm/kysely.d.ts +10 -0
  166. package/dist/esm/kysely.js +13 -2
  167. package/dist/esm/migration/file-migration-provider.d.ts +5 -2
  168. package/dist/esm/migration/migrator.d.ts +5 -2
  169. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -3
  170. package/dist/esm/operation-node/create-index-node.d.ts +2 -0
  171. package/dist/esm/operation-node/delete-query-node.d.ts +0 -1
  172. package/dist/esm/operation-node/delete-query-node.js +0 -6
  173. package/dist/esm/operation-node/function-node.d.ts +13 -0
  174. package/dist/esm/operation-node/function-node.js +17 -0
  175. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  176. package/dist/esm/operation-node/operation-node-transformer.js +9 -0
  177. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  178. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  179. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  180. package/dist/esm/operation-node/operator-node.d.ts +13 -2
  181. package/dist/esm/operation-node/operator-node.js +34 -3
  182. package/dist/esm/operation-node/query-node.d.ts +25 -8
  183. package/dist/esm/operation-node/query-node.js +9 -2
  184. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  185. package/dist/esm/operation-node/select-query-node.js +0 -6
  186. package/dist/esm/operation-node/update-query-node.d.ts +0 -1
  187. package/dist/esm/operation-node/update-query-node.js +0 -6
  188. package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
  189. package/dist/esm/parser/binary-operation-parser.js +85 -37
  190. package/dist/esm/parser/coalesce-parser.d.ts +0 -2
  191. package/dist/esm/parser/coalesce-parser.js +1 -7
  192. package/dist/esm/parser/expression-parser.d.ts +7 -3
  193. package/dist/esm/parser/expression-parser.js +3 -3
  194. package/dist/esm/parser/group-by-parser.d.ts +3 -2
  195. package/dist/esm/parser/group-by-parser.js +3 -0
  196. package/dist/esm/parser/insert-values-parser.d.ts +4 -1
  197. package/dist/esm/parser/insert-values-parser.js +18 -12
  198. package/dist/esm/parser/join-parser.js +2 -2
  199. package/dist/esm/parser/parse-utils.d.ts +0 -2
  200. package/dist/esm/parser/parse-utils.js +0 -6
  201. package/dist/esm/parser/returning-parser.d.ts +2 -1
  202. package/dist/esm/parser/select-parser.d.ts +5 -13
  203. package/dist/esm/parser/select-parser.js +7 -3
  204. package/dist/esm/parser/table-parser.d.ts +5 -3
  205. package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
  206. package/dist/esm/parser/unary-operation-parser.js +8 -8
  207. package/dist/esm/parser/update-set-parser.d.ts +4 -1
  208. package/dist/esm/parser/update-set-parser.js +7 -2
  209. package/dist/esm/parser/value-parser.d.ts +5 -0
  210. package/dist/esm/parser/value-parser.js +1 -3
  211. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  212. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  213. package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
  214. package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
  215. package/dist/esm/query-builder/delete-query-builder.d.ts +220 -201
  216. package/dist/esm/query-builder/delete-query-builder.js +24 -30
  217. package/dist/esm/query-builder/delete-result.js +3 -0
  218. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  219. package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
  220. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  221. package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
  222. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  223. package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
  224. package/dist/esm/query-builder/function-module.d.ts +40 -12
  225. package/dist/esm/query-builder/function-module.js +42 -328
  226. package/dist/esm/query-builder/having-interface.d.ts +19 -16
  227. package/dist/esm/query-builder/insert-query-builder.d.ts +75 -26
  228. package/dist/esm/query-builder/insert-query-builder.js +25 -33
  229. package/dist/esm/query-builder/insert-result.js +3 -0
  230. package/dist/esm/query-builder/join-builder.d.ts +23 -26
  231. package/dist/esm/query-builder/join-builder.js +18 -23
  232. package/dist/esm/query-builder/no-result-error.d.ts +1 -0
  233. package/dist/esm/query-builder/no-result-error.js +3 -0
  234. package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
  235. package/dist/esm/query-builder/on-conflict-builder.js +54 -38
  236. package/dist/esm/query-builder/over-builder.d.ts +5 -0
  237. package/dist/esm/query-builder/over-builder.js +7 -0
  238. package/dist/esm/query-builder/returning-interface.d.ts +2 -2
  239. package/dist/esm/query-builder/select-query-builder.d.ts +148 -237
  240. package/dist/esm/query-builder/select-query-builder.js +337 -82
  241. package/dist/esm/query-builder/update-query-builder.d.ts +145 -213
  242. package/dist/esm/query-builder/update-query-builder.js +25 -119
  243. package/dist/esm/query-builder/update-result.js +3 -0
  244. package/dist/esm/query-builder/where-interface.d.ts +71 -184
  245. package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
  246. package/dist/esm/query-compiler/default-query-compiler.js +17 -1
  247. package/dist/esm/query-creator.d.ts +9 -2
  248. package/dist/esm/query-creator.js +1 -24
  249. package/dist/esm/query-executor/query-executor.d.ts +3 -3
  250. package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
  251. package/dist/esm/raw-builder/raw-builder.js +13 -7
  252. package/dist/esm/raw-builder/sql.d.ts +17 -9
  253. package/dist/esm/raw-builder/sql.js +8 -2
  254. package/dist/esm/schema/alter-column-builder.d.ts +5 -0
  255. package/dist/esm/schema/alter-column-builder.js +7 -0
  256. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  257. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  258. package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  259. package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
  260. package/dist/esm/schema/column-definition-builder.d.ts +6 -1
  261. package/dist/esm/schema/column-definition-builder.js +8 -1
  262. package/dist/esm/schema/create-index-builder.d.ts +51 -9
  263. package/dist/esm/schema/create-index-builder.js +17 -0
  264. package/dist/esm/schema/create-schema-builder.d.ts +5 -0
  265. package/dist/esm/schema/create-schema-builder.js +7 -0
  266. package/dist/esm/schema/create-table-builder.d.ts +3 -1
  267. package/dist/esm/schema/create-table-builder.js +3 -1
  268. package/dist/esm/schema/create-type-builder.d.ts +5 -0
  269. package/dist/esm/schema/create-type-builder.js +7 -0
  270. package/dist/esm/schema/create-view-builder.d.ts +5 -0
  271. package/dist/esm/schema/create-view-builder.js +7 -0
  272. package/dist/esm/schema/drop-index-builder.d.ts +5 -0
  273. package/dist/esm/schema/drop-index-builder.js +7 -0
  274. package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
  275. package/dist/esm/schema/drop-schema-builder.js +7 -0
  276. package/dist/esm/schema/drop-table-builder.d.ts +5 -0
  277. package/dist/esm/schema/drop-table-builder.js +7 -0
  278. package/dist/esm/schema/drop-type-builder.d.ts +5 -0
  279. package/dist/esm/schema/drop-type-builder.js +7 -0
  280. package/dist/esm/schema/drop-view-builder.d.ts +5 -0
  281. package/dist/esm/schema/drop-view-builder.js +7 -0
  282. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
  283. package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
  284. package/dist/esm/util/compilable.d.ts +1 -0
  285. package/dist/esm/util/compilable.js +4 -1
  286. package/dist/esm/util/explainable.d.ts +35 -0
  287. package/dist/esm/util/log.d.ts +2 -0
  288. package/dist/esm/util/object-utils.js +1 -1
  289. package/dist/esm/util/streamable.d.ts +29 -0
  290. package/dist/esm/util/streamable.js +2 -0
  291. package/dist/esm/util/type-utils.d.ts +1 -0
  292. package/helpers/mysql.d.ts +1 -0
  293. package/helpers/mysql.js +1 -0
  294. package/helpers/postgres.d.ts +1 -0
  295. package/helpers/postgres.js +1 -0
  296. package/package.json +26 -9
  297. package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
  298. package/dist/cjs/query-builder/expression-builder.js +0 -107
  299. package/dist/esm/query-builder/expression-builder.d.ts +0 -126
  300. package/dist/esm/query-builder/expression-builder.js +0 -104
@@ -1,26 +1,25 @@
1
1
  /// <reference types="./insert-query-builder.d.ts" />
2
- import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
3
- import { parseInsertObjectOrList, } from '../parser/insert-values-parser.js';
2
+ import { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';
3
+ import { parseInsertExpression, } from '../parser/insert-values-parser.js';
4
4
  import { InsertQueryNode } from '../operation-node/insert-query-node.js';
5
5
  import { QueryNode } from '../operation-node/query-node.js';
6
- import { parseUpdateObject } from '../parser/update-set-parser.js';
6
+ import { parseUpdateExpression, } from '../parser/update-set-parser.js';
7
7
  import { preventAwait } from '../util/prevent-await.js';
8
8
  import { freeze } from '../util/object-utils.js';
9
9
  import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
10
10
  import { InsertResult } from './insert-result.js';
11
- import { NoResultError } from './no-result-error.js';
11
+ import { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';
12
12
  import { parseExpression, } from '../parser/expression-parser.js';
13
13
  import { ColumnNode } from '../operation-node/column-node.js';
14
14
  import { OnConflictBuilder, } from './on-conflict-builder.js';
15
15
  import { OnConflictNode } from '../operation-node/on-conflict-node.js';
16
- import { ExplainNode } from '../operation-node/explain-node.js';
17
16
  export class InsertQueryBuilder {
18
17
  #props;
19
18
  constructor(props) {
20
19
  this.#props = freeze(props);
21
20
  }
22
- values(args) {
23
- const [columns, values] = parseInsertObjectOrList(args);
21
+ values(insert) {
22
+ const [columns, values] = parseInsertExpression(insert);
24
23
  return new InsertQueryBuilder({
25
24
  ...this.#props,
26
25
  queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
@@ -293,18 +292,18 @@ export class InsertQueryBuilder {
293
292
  * .onDuplicateKeyUpdate({ species: 'hamster' })
294
293
  * ```
295
294
  */
296
- onDuplicateKeyUpdate(updates) {
295
+ onDuplicateKeyUpdate(update) {
297
296
  return new InsertQueryBuilder({
298
297
  ...this.#props,
299
298
  queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
300
- onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateObject(updates)),
299
+ onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateExpression(update)),
301
300
  }),
302
301
  });
303
302
  }
304
303
  returning(selection) {
305
304
  return new InsertQueryBuilder({
306
305
  ...this.#props,
307
- queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectExpressionOrList(selection)),
306
+ queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection)),
308
307
  });
309
308
  }
310
309
  returningAll() {
@@ -314,7 +313,8 @@ export class InsertQueryBuilder {
314
313
  });
315
314
  }
316
315
  /**
317
- * Simply calls the given function passing `this` as the only argument.
316
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
317
+ * what the provided function returns.
318
318
  *
319
319
  * If you want to conditionally call a method on `this`, see
320
320
  * the {@link $if} method.
@@ -440,7 +440,7 @@ export class InsertQueryBuilder {
440
440
  * )
441
441
  * .with('new_pet', (qb) => qb
442
442
  * .insertInto('pet')
443
- * .values({ owner_id: (eb) => eb.selectFrom('new_person').select('id'), ...pet })
443
+ * .values((eb) => ({ owner_id: eb.selectFrom('new_person').select('id'), ...pet }))
444
444
  * .returning(['name as pet_name', 'species'])
445
445
  * .$assertType<{ pet_name: string, species: Species }>()
446
446
  * )
@@ -504,38 +504,30 @@ export class InsertQueryBuilder {
504
504
  * the query returned no result.
505
505
  *
506
506
  * By default an instance of {@link NoResultError} is thrown, but you can
507
- * provide a custom error class as the only argument to throw a different
507
+ * provide a custom error class, or callback as the only argument to throw a different
508
508
  * error.
509
509
  */
510
510
  async executeTakeFirstOrThrow(errorConstructor = NoResultError) {
511
511
  const result = await this.executeTakeFirst();
512
512
  if (result === undefined) {
513
- throw new errorConstructor(this.toOperationNode());
513
+ const error = isNoResultErrorConstructor(errorConstructor)
514
+ ? new errorConstructor(this.toOperationNode())
515
+ : errorConstructor(this.toOperationNode());
516
+ throw error;
514
517
  }
515
518
  return result;
516
519
  }
517
- /**
518
- * Executes query with `explain` statement before `insert` keyword.
519
- *
520
- * ```ts
521
- * const explained = await db
522
- * .insertInto('person')
523
- * .values(values)
524
- * .explain('json')
525
- * ```
526
- *
527
- * The generated SQL (MySQL):
528
- *
529
- * ```sql
530
- * explain format=json insert into `person` (`id`, `first_name`, `last_name`) values (?, ?, ?) (?, ?, ?)
531
- * ```
532
- */
520
+ async *stream(chunkSize = 100) {
521
+ const compiledQuery = this.compile();
522
+ const stream = this.#props.executor.stream(compiledQuery, chunkSize, this.#props.queryId);
523
+ for await (const item of stream) {
524
+ yield* item.rows;
525
+ }
526
+ }
533
527
  async explain(format, options) {
534
528
  const builder = new InsertQueryBuilder({
535
529
  ...this.#props,
536
- queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
537
- explain: ExplainNode.create(format, options?.toOperationNode()),
538
- }),
530
+ queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),
539
531
  });
540
532
  return await builder.execute();
541
533
  }
@@ -42,3 +42,6 @@ export class InsertResult {
42
42
  return this.#numInsertedOrUpdatedRows;
43
43
  }
44
44
  }
45
+ for (const property of ['insertId', 'numInsertedOrUpdatedRows']) {
46
+ Object.defineProperty(InsertResult.prototype, property, { enumerable: true });
47
+ }
@@ -4,6 +4,8 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
4
4
  import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
5
5
  import { ReferenceExpression } from '../parser/reference-parser.js';
6
6
  import { ExistsExpression } from '../parser/unary-operation-parser.js';
7
+ import { SqlBool } from '../util/type-utils.js';
8
+ import { OnExpressionBuilder } from './deprecated-on-expression-builder.js';
7
9
  export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
8
10
  #private;
9
11
  constructor(props: JoinBuilderProps);
@@ -14,16 +16,19 @@ export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNo
14
16
  * See {@link WhereInterface.where} for documentation and examples.
15
17
  */
16
18
  on<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): JoinBuilder<DB, TB>;
17
- on(grouper: (qb: JoinBuilder<DB, TB>) => JoinBuilder<DB, TB>): JoinBuilder<DB, TB>;
19
+ on(factory: OnExpressionFactory<DB, TB>): JoinBuilder<DB, TB>;
18
20
  on(expression: Expression<any>): JoinBuilder<DB, TB>;
19
21
  /**
20
- * Just like {@link WhereInterface.orWhere} but adds an item to the join's
21
- * `on` clause instead.
22
- *
23
- * See {@link WhereInterface.orWhere} for documentation and examples.
22
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
24
23
  */
25
24
  orOn<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): JoinBuilder<DB, TB>;
26
- orOn(grouper: (qb: JoinBuilder<DB, TB>) => JoinBuilder<DB, TB>): JoinBuilder<DB, TB>;
25
+ /**
26
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
27
+ */
28
+ orOn(factory: OnExpressionFactory<DB, TB>): JoinBuilder<DB, TB>;
29
+ /**
30
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
31
+ */
27
32
  orOn(expression: Expression<any>): JoinBuilder<DB, TB>;
28
33
  /**
29
34
  * Just like {@link WhereInterface.whereRef} but adds an item to the join's
@@ -33,46 +38,38 @@ export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNo
33
38
  */
34
39
  onRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): JoinBuilder<DB, TB>;
35
40
  /**
36
- * Just like {@link WhereInterface.orWhereRef} but adds an item to the join's
37
- * `on` clause instead.
38
- *
39
- * See {@link WhereInterface.orWhereRef} for documentation and examples.
41
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
40
42
  */
41
43
  orOnRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): JoinBuilder<DB, TB>;
42
44
  /**
43
- * Just like {@link WhereInterface.whereExists} but adds an item to the join's
44
- * `on` clause instead.
45
- *
46
- * See {@link WhereInterface.whereExists} for documentation and examples.
45
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
47
46
  */
48
47
  onExists(arg: ExistsExpression<DB, TB>): JoinBuilder<DB, TB>;
49
48
  /**
50
- * Just like {@link WhereInterface.whereNotExists} but adds an item to the join's
51
- * `on` clause instead.
52
- *
53
- * See {@link WhereInterface.whereNotExists} for documentation and examples.
49
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
54
50
  */
55
51
  onNotExists(arg: ExistsExpression<DB, TB>): JoinBuilder<DB, TB>;
56
52
  /**
57
- * Just like {@link WhereInterface.orWhereExists} but adds an item to the join's
58
- * `on` clause instead.
59
- *
60
- * See {@link WhereInterface.orWhereExists} for documentation and examples.
53
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
61
54
  */
62
55
  orOnExists(arg: ExistsExpression<DB, TB>): JoinBuilder<DB, TB>;
63
56
  /**
64
- * Just like {@link WhereInterface.orWhereNotExists} but adds an item to the join's
65
- * `on` clause instead.
66
- *
67
- * See {@link WhereInterface.orWhereNotExists} for documentation and examples.
57
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
68
58
  */
69
59
  orOnNotExists(arg: ExistsExpression<DB, TB>): JoinBuilder<DB, TB>;
70
60
  /**
71
61
  * Adds `on true`.
72
62
  */
73
63
  onTrue(): JoinBuilder<DB, TB>;
64
+ /**
65
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
66
+ * what the provided function returns.
67
+ */
68
+ $call<T>(func: (qb: this) => T): T;
74
69
  toOperationNode(): JoinNode;
75
70
  }
76
71
  export interface JoinBuilderProps {
77
72
  readonly joinNode: JoinNode;
78
73
  }
74
+ declare type OnExpressionFactory<DB, TB extends keyof DB> = (eb: OnExpressionBuilder<DB, TB>) => Expression<SqlBool> | OnExpressionBuilder<DB, TB>;
75
+ export {};
@@ -1,7 +1,7 @@
1
1
  /// <reference types="./join-builder.d.ts" />
2
2
  import { JoinNode } from '../operation-node/join-node.js';
3
3
  import { RawNode } from '../operation-node/raw-node.js';
4
- import { parseOn, parseReferentialFilter, } from '../parser/binary-operation-parser.js';
4
+ import { parseOn, parseReferentialComparison, } from '../parser/binary-operation-parser.js';
5
5
  import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
6
6
  import { freeze } from '../util/object-utils.js';
7
7
  import { preventAwait } from '../util/prevent-await.js';
@@ -16,6 +16,9 @@ export class JoinBuilder {
16
16
  joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseOn(args)),
17
17
  });
18
18
  }
19
+ /**
20
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
21
+ */
19
22
  orOn(...args) {
20
23
  return new JoinBuilder({
21
24
  ...this.#props,
@@ -31,26 +34,20 @@ export class JoinBuilder {
31
34
  onRef(lhs, op, rhs) {
32
35
  return new JoinBuilder({
33
36
  ...this.#props,
34
- joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseReferentialFilter(lhs, op, rhs)),
37
+ joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseReferentialComparison(lhs, op, rhs)),
35
38
  });
36
39
  }
37
40
  /**
38
- * Just like {@link WhereInterface.orWhereRef} but adds an item to the join's
39
- * `on` clause instead.
40
- *
41
- * See {@link WhereInterface.orWhereRef} for documentation and examples.
41
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
42
42
  */
43
43
  orOnRef(lhs, op, rhs) {
44
44
  return new JoinBuilder({
45
45
  ...this.#props,
46
- joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseReferentialFilter(lhs, op, rhs)),
46
+ joinNode: JoinNode.cloneWithOrOn(this.#props.joinNode, parseReferentialComparison(lhs, op, rhs)),
47
47
  });
48
48
  }
49
49
  /**
50
- * Just like {@link WhereInterface.whereExists} but adds an item to the join's
51
- * `on` clause instead.
52
- *
53
- * See {@link WhereInterface.whereExists} for documentation and examples.
50
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
54
51
  */
55
52
  onExists(arg) {
56
53
  return new JoinBuilder({
@@ -59,10 +56,7 @@ export class JoinBuilder {
59
56
  });
60
57
  }
61
58
  /**
62
- * Just like {@link WhereInterface.whereNotExists} but adds an item to the join's
63
- * `on` clause instead.
64
- *
65
- * See {@link WhereInterface.whereNotExists} for documentation and examples.
59
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
66
60
  */
67
61
  onNotExists(arg) {
68
62
  return new JoinBuilder({
@@ -71,10 +65,7 @@ export class JoinBuilder {
71
65
  });
72
66
  }
73
67
  /**
74
- * Just like {@link WhereInterface.orWhereExists} but adds an item to the join's
75
- * `on` clause instead.
76
- *
77
- * See {@link WhereInterface.orWhereExists} for documentation and examples.
68
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
78
69
  */
79
70
  orOnExists(arg) {
80
71
  return new JoinBuilder({
@@ -83,10 +74,7 @@ export class JoinBuilder {
83
74
  });
84
75
  }
85
76
  /**
86
- * Just like {@link WhereInterface.orWhereNotExists} but adds an item to the join's
87
- * `on` clause instead.
88
- *
89
- * See {@link WhereInterface.orWhereNotExists} for documentation and examples.
77
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
90
78
  */
91
79
  orOnNotExists(arg) {
92
80
  return new JoinBuilder({
@@ -103,6 +91,13 @@ export class JoinBuilder {
103
91
  joinNode: JoinNode.cloneWithOn(this.#props.joinNode, RawNode.createWithSql('true')),
104
92
  });
105
93
  }
94
+ /**
95
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
96
+ * what the provided function returns.
97
+ */
98
+ $call(func) {
99
+ return func(this);
100
+ }
106
101
  toOperationNode() {
107
102
  return this.#props.joinNode;
108
103
  }
@@ -7,3 +7,4 @@ export declare class NoResultError extends Error {
7
7
  readonly node: QueryNode;
8
8
  constructor(node: QueryNode);
9
9
  }
10
+ export declare function isNoResultErrorConstructor(fn: NoResultErrorConstructor | ((node: QueryNode) => Error)): fn is NoResultErrorConstructor;
@@ -9,3 +9,6 @@ export class NoResultError extends Error {
9
9
  this.node = node;
10
10
  }
11
11
  }
12
+ export function isNoResultErrorConstructor(fn) {
13
+ return Object.prototype.hasOwnProperty.call(fn, 'prototype');
14
+ }