kysely 0.27.3 → 0.27.5

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 (301) hide show
  1. package/.renovaterc.json +3 -0
  2. package/CONTRIBUTING.md +2 -2
  3. package/README.md +7 -7
  4. package/deno.check.d.ts +86 -0
  5. package/deno.check.json +21 -0
  6. package/dist/cjs/dialect/dialect-adapter-base.d.ts +13 -3
  7. package/dist/cjs/dialect/dialect-adapter-base.js +4 -1
  8. package/dist/cjs/dialect/dialect-adapter.d.ts +16 -2
  9. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +12 -7
  10. package/dist/cjs/dialect/mssql/mssql-adapter.js +2 -4
  11. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +83 -55
  12. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +1 -0
  13. package/dist/cjs/dialect/mssql/mssql-driver.js +114 -48
  14. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
  15. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  16. package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
  17. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
  18. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  19. package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
  20. package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
  21. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  22. package/dist/cjs/driver/database-connection.d.ts +3 -1
  23. package/dist/cjs/driver/dummy-driver.d.ts +13 -12
  24. package/dist/cjs/driver/dummy-driver.js +13 -12
  25. package/dist/cjs/dynamic/dynamic-reference-builder.js +2 -2
  26. package/dist/cjs/dynamic/dynamic.d.ts +7 -7
  27. package/dist/cjs/dynamic/dynamic.js +7 -7
  28. package/dist/cjs/expression/expression-builder.d.ts +153 -62
  29. package/dist/cjs/expression/expression-builder.js +2 -3
  30. package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
  31. package/dist/cjs/expression/expression.d.ts +40 -5
  32. package/dist/cjs/expression/expression.js +2 -3
  33. package/dist/cjs/helpers/mssql.d.ts +74 -14
  34. package/dist/cjs/helpers/mssql.js +77 -18
  35. package/dist/cjs/helpers/mysql.d.ts +17 -13
  36. package/dist/cjs/helpers/mysql.js +20 -17
  37. package/dist/cjs/helpers/postgres.d.ts +11 -8
  38. package/dist/cjs/helpers/postgres.js +14 -12
  39. package/dist/cjs/helpers/sqlite.d.ts +41 -16
  40. package/dist/cjs/helpers/sqlite.js +44 -20
  41. package/dist/cjs/index.d.ts +28 -21
  42. package/dist/cjs/index.js +28 -21
  43. package/dist/cjs/kysely.d.ts +100 -42
  44. package/dist/cjs/kysely.js +63 -39
  45. package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
  46. package/dist/cjs/migration/file-migration-provider.js +2 -2
  47. package/dist/cjs/migration/migrator.d.ts +82 -14
  48. package/dist/cjs/migration/migrator.js +82 -14
  49. package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
  50. package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
  51. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -1
  52. package/dist/cjs/operation-node/case-node.d.ts +1 -1
  53. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
  54. package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
  55. package/dist/cjs/operation-node/data-type-node.js +17 -3
  56. package/dist/cjs/operation-node/delete-query-node.d.ts +3 -0
  57. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -4
  58. package/dist/cjs/operation-node/having-node.d.ts +1 -1
  59. package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
  60. package/dist/cjs/operation-node/merge-query-node.d.ts +3 -0
  61. package/dist/cjs/operation-node/on-node.d.ts +1 -1
  62. package/dist/cjs/operation-node/operation-node-source.js +1 -2
  63. package/dist/cjs/operation-node/operation-node-transformer.d.ts +11 -3
  64. package/dist/cjs/operation-node/operation-node-transformer.js +26 -3
  65. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  66. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  67. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  68. package/dist/cjs/operation-node/operator-node.d.ts +3 -3
  69. package/dist/cjs/operation-node/operator-node.js +8 -6
  70. package/dist/cjs/operation-node/output-node.d.ts +13 -0
  71. package/dist/cjs/operation-node/output-node.js +26 -0
  72. package/dist/cjs/operation-node/query-node.d.ts +15 -6
  73. package/dist/cjs/operation-node/query-node.js +17 -0
  74. package/dist/cjs/operation-node/select-query-node.d.ts +1 -1
  75. package/dist/cjs/operation-node/select-query-node.js +6 -8
  76. package/dist/cjs/operation-node/update-query-node.d.ts +3 -0
  77. package/dist/cjs/operation-node/where-node.d.ts +1 -1
  78. package/dist/cjs/parser/binary-operation-parser.js +5 -6
  79. package/dist/cjs/parser/data-type-parser.js +1 -2
  80. package/dist/cjs/parser/default-value-parser.js +1 -2
  81. package/dist/cjs/parser/expression-parser.js +3 -4
  82. package/dist/cjs/parser/fetch-parser.js +1 -2
  83. package/dist/cjs/parser/group-by-parser.js +1 -2
  84. package/dist/cjs/parser/identifier-parser.js +1 -2
  85. package/dist/cjs/parser/insert-values-parser.js +1 -2
  86. package/dist/cjs/parser/join-parser.js +1 -2
  87. package/dist/cjs/parser/merge-parser.js +2 -3
  88. package/dist/cjs/parser/on-commit-action-parse.js +1 -2
  89. package/dist/cjs/parser/on-modify-action-parser.js +1 -2
  90. package/dist/cjs/parser/order-by-parser.js +3 -4
  91. package/dist/cjs/parser/parse-utils.js +4 -5
  92. package/dist/cjs/parser/partition-by-parser.js +1 -2
  93. package/dist/cjs/parser/reference-parser.js +8 -9
  94. package/dist/cjs/parser/returning-parser.d.ts +4 -3
  95. package/dist/cjs/parser/select-parser.js +2 -3
  96. package/dist/cjs/parser/set-operation-parser.js +1 -2
  97. package/dist/cjs/parser/table-parser.js +4 -5
  98. package/dist/cjs/parser/top-parser.js +1 -2
  99. package/dist/cjs/parser/unary-operation-parser.js +3 -4
  100. package/dist/cjs/parser/update-set-parser.js +2 -3
  101. package/dist/cjs/parser/value-parser.js +4 -5
  102. package/dist/cjs/parser/with-parser.js +1 -2
  103. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +54 -27
  104. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +26 -21
  105. package/dist/cjs/plugin/camel-case/camel-case.js +2 -3
  106. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  107. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  108. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  109. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  110. package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
  111. package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
  112. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
  113. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
  114. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  115. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
  116. package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
  117. package/dist/cjs/query-builder/delete-query-builder.d.ts +219 -43
  118. package/dist/cjs/query-builder/delete-query-builder.js +95 -31
  119. package/dist/cjs/query-builder/function-module.d.ts +40 -93
  120. package/dist/cjs/query-builder/function-module.js +1 -2
  121. package/dist/cjs/query-builder/insert-query-builder.d.ts +326 -67
  122. package/dist/cjs/query-builder/insert-query-builder.js +212 -61
  123. package/dist/cjs/query-builder/insert-result.d.ts +10 -5
  124. package/dist/cjs/query-builder/insert-result.js +10 -5
  125. package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
  126. package/dist/cjs/query-builder/json-path-builder.js +8 -5
  127. package/dist/cjs/query-builder/merge-query-builder.d.ts +312 -10
  128. package/dist/cjs/query-builder/merge-query-builder.js +98 -7
  129. package/dist/cjs/query-builder/no-result-error.js +2 -2
  130. package/dist/cjs/query-builder/on-conflict-builder.d.ts +53 -20
  131. package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
  132. package/dist/cjs/query-builder/output-interface.d.ts +138 -0
  133. package/dist/cjs/query-builder/output-interface.js +2 -0
  134. package/dist/cjs/query-builder/returning-interface.d.ts +7 -5
  135. package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
  136. package/dist/cjs/query-builder/select-query-builder.d.ts +370 -73
  137. package/dist/cjs/query-builder/select-query-builder.js +14 -9
  138. package/dist/cjs/query-builder/update-query-builder.d.ts +225 -31
  139. package/dist/cjs/query-builder/update-query-builder.js +96 -17
  140. package/dist/cjs/query-builder/update-result.d.ts +9 -0
  141. package/dist/cjs/query-builder/update-result.js +9 -0
  142. package/dist/cjs/query-builder/where-interface.d.ts +6 -2
  143. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  144. package/dist/cjs/query-compiler/default-query-compiler.js +45 -1
  145. package/dist/cjs/query-creator.d.ts +122 -21
  146. package/dist/cjs/query-creator.js +56 -3
  147. package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
  148. package/dist/cjs/raw-builder/raw-builder.js +1 -2
  149. package/dist/cjs/raw-builder/sql.d.ts +31 -12
  150. package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
  151. package/dist/cjs/schema/alter-column-builder.js +20 -3
  152. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +44 -10
  153. package/dist/cjs/schema/alter-table-add-index-builder.js +27 -10
  154. package/dist/cjs/schema/alter-table-builder.js +1 -2
  155. package/dist/cjs/schema/column-definition-builder.d.ts +286 -24
  156. package/dist/cjs/schema/column-definition-builder.js +288 -24
  157. package/dist/cjs/schema/create-table-builder.d.ts +86 -33
  158. package/dist/cjs/schema/create-table-builder.js +86 -33
  159. package/dist/cjs/util/assert.js +2 -3
  160. package/dist/cjs/util/column-type.d.ts +5 -9
  161. package/dist/cjs/util/compilable.js +1 -2
  162. package/dist/cjs/util/json-object-args.js +1 -2
  163. package/dist/cjs/util/log-once.js +1 -2
  164. package/dist/cjs/util/object-utils.js +38 -26
  165. package/dist/cjs/util/performance-now.js +1 -2
  166. package/dist/cjs/util/prevent-await.js +1 -2
  167. package/dist/cjs/util/query-id.js +1 -2
  168. package/dist/cjs/util/random-string.js +1 -2
  169. package/dist/cjs/util/require-all-props.d.ts +4 -2
  170. package/dist/cjs/util/require-all-props.js +5 -4
  171. package/dist/cjs/util/stack-trace-utils.js +1 -2
  172. package/dist/cjs/util/streamable.d.ts +1 -1
  173. package/dist/cjs/util/type-utils.d.ts +4 -2
  174. package/dist/esm/dialect/dialect-adapter-base.d.ts +13 -3
  175. package/dist/esm/dialect/dialect-adapter-base.js +4 -1
  176. package/dist/esm/dialect/dialect-adapter.d.ts +16 -2
  177. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +12 -7
  178. package/dist/esm/dialect/mssql/mssql-adapter.js +2 -4
  179. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +83 -55
  180. package/dist/esm/dialect/mssql/mssql-driver.d.ts +1 -0
  181. package/dist/esm/dialect/mssql/mssql-driver.js +114 -48
  182. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
  183. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  184. package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
  185. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
  186. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  187. package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
  188. package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
  189. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  190. package/dist/esm/driver/database-connection.d.ts +3 -1
  191. package/dist/esm/driver/dummy-driver.d.ts +13 -12
  192. package/dist/esm/driver/dummy-driver.js +13 -12
  193. package/dist/esm/dynamic/dynamic.d.ts +7 -7
  194. package/dist/esm/dynamic/dynamic.js +7 -7
  195. package/dist/esm/expression/expression-builder.d.ts +153 -62
  196. package/dist/esm/expression/expression-wrapper.d.ts +92 -23
  197. package/dist/esm/expression/expression.d.ts +40 -5
  198. package/dist/esm/helpers/mssql.d.ts +74 -14
  199. package/dist/esm/helpers/mssql.js +74 -14
  200. package/dist/esm/helpers/mysql.d.ts +17 -13
  201. package/dist/esm/helpers/mysql.js +17 -13
  202. package/dist/esm/helpers/postgres.d.ts +11 -8
  203. package/dist/esm/helpers/postgres.js +11 -8
  204. package/dist/esm/helpers/sqlite.d.ts +41 -16
  205. package/dist/esm/helpers/sqlite.js +41 -16
  206. package/dist/esm/index.d.ts +28 -21
  207. package/dist/esm/index.js +28 -21
  208. package/dist/esm/kysely.d.ts +100 -42
  209. package/dist/esm/kysely.js +61 -37
  210. package/dist/esm/migration/file-migration-provider.d.ts +2 -2
  211. package/dist/esm/migration/file-migration-provider.js +2 -2
  212. package/dist/esm/migration/migrator.d.ts +82 -14
  213. package/dist/esm/migration/migrator.js +82 -14
  214. package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
  215. package/dist/esm/operation-node/aggregate-function-node.js +9 -0
  216. package/dist/esm/operation-node/alter-column-node.d.ts +1 -1
  217. package/dist/esm/operation-node/case-node.d.ts +1 -1
  218. package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
  219. package/dist/esm/operation-node/data-type-node.d.ts +2 -2
  220. package/dist/esm/operation-node/data-type-node.js +15 -1
  221. package/dist/esm/operation-node/delete-query-node.d.ts +3 -0
  222. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -4
  223. package/dist/esm/operation-node/having-node.d.ts +1 -1
  224. package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
  225. package/dist/esm/operation-node/merge-query-node.d.ts +3 -0
  226. package/dist/esm/operation-node/on-node.d.ts +1 -1
  227. package/dist/esm/operation-node/operation-node-transformer.d.ts +11 -3
  228. package/dist/esm/operation-node/operation-node-transformer.js +26 -3
  229. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  230. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  231. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  232. package/dist/esm/operation-node/operator-node.d.ts +3 -3
  233. package/dist/esm/operation-node/operator-node.js +2 -0
  234. package/dist/esm/operation-node/output-node.d.ts +13 -0
  235. package/dist/esm/operation-node/output-node.js +24 -0
  236. package/dist/esm/operation-node/query-node.d.ts +15 -6
  237. package/dist/esm/operation-node/query-node.js +17 -0
  238. package/dist/esm/operation-node/select-query-node.d.ts +1 -1
  239. package/dist/esm/operation-node/select-query-node.js +6 -8
  240. package/dist/esm/operation-node/update-query-node.d.ts +3 -0
  241. package/dist/esm/operation-node/where-node.d.ts +1 -1
  242. package/dist/esm/parser/returning-parser.d.ts +4 -3
  243. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +54 -27
  244. package/dist/esm/plugin/camel-case/camel-case-plugin.js +26 -21
  245. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  246. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  247. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  248. package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  249. package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
  250. package/dist/esm/plugin/noop-plugin.d.ts +28 -6
  251. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +80 -9
  252. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +53 -14
  253. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  254. package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
  255. package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
  256. package/dist/esm/query-builder/delete-query-builder.d.ts +219 -43
  257. package/dist/esm/query-builder/delete-query-builder.js +95 -31
  258. package/dist/esm/query-builder/function-module.d.ts +40 -93
  259. package/dist/esm/query-builder/insert-query-builder.d.ts +326 -67
  260. package/dist/esm/query-builder/insert-query-builder.js +212 -61
  261. package/dist/esm/query-builder/insert-result.d.ts +10 -5
  262. package/dist/esm/query-builder/insert-result.js +10 -5
  263. package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
  264. package/dist/esm/query-builder/json-path-builder.js +8 -5
  265. package/dist/esm/query-builder/merge-query-builder.d.ts +312 -10
  266. package/dist/esm/query-builder/merge-query-builder.js +98 -7
  267. package/dist/esm/query-builder/on-conflict-builder.d.ts +53 -20
  268. package/dist/esm/query-builder/on-conflict-builder.js +41 -16
  269. package/dist/esm/query-builder/output-interface.d.ts +138 -0
  270. package/dist/esm/query-builder/output-interface.js +2 -0
  271. package/dist/esm/query-builder/returning-interface.d.ts +7 -5
  272. package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
  273. package/dist/esm/query-builder/select-query-builder.d.ts +370 -73
  274. package/dist/esm/query-builder/select-query-builder.js +13 -7
  275. package/dist/esm/query-builder/update-query-builder.d.ts +225 -31
  276. package/dist/esm/query-builder/update-query-builder.js +96 -17
  277. package/dist/esm/query-builder/update-result.d.ts +9 -0
  278. package/dist/esm/query-builder/update-result.js +9 -0
  279. package/dist/esm/query-builder/where-interface.d.ts +6 -2
  280. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  281. package/dist/esm/query-compiler/default-query-compiler.js +45 -1
  282. package/dist/esm/query-creator.d.ts +122 -21
  283. package/dist/esm/query-creator.js +56 -3
  284. package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
  285. package/dist/esm/raw-builder/sql.d.ts +31 -12
  286. package/dist/esm/schema/alter-column-builder.d.ts +17 -3
  287. package/dist/esm/schema/alter-column-builder.js +20 -3
  288. package/dist/esm/schema/alter-table-add-index-builder.d.ts +44 -10
  289. package/dist/esm/schema/alter-table-add-index-builder.js +27 -10
  290. package/dist/esm/schema/alter-table-builder.js +1 -2
  291. package/dist/esm/schema/column-definition-builder.d.ts +286 -24
  292. package/dist/esm/schema/column-definition-builder.js +288 -24
  293. package/dist/esm/schema/create-table-builder.d.ts +86 -33
  294. package/dist/esm/schema/create-table-builder.js +86 -33
  295. package/dist/esm/util/column-type.d.ts +5 -9
  296. package/dist/esm/util/object-utils.js +18 -5
  297. package/dist/esm/util/require-all-props.d.ts +4 -2
  298. package/dist/esm/util/require-all-props.js +4 -2
  299. package/dist/esm/util/streamable.d.ts +1 -1
  300. package/dist/esm/util/type-utils.d.ts +4 -2
  301. package/package.json +30 -24
@@ -11,7 +11,7 @@ import { QueryExecutor } from '../query-executor/query-executor.js';
11
11
  import { QueryId } from '../util/query-id.js';
12
12
  import { InsertResult } from './insert-result.js';
13
13
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
14
- import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
14
+ import { ReturningAllRow, ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
15
15
  import { NoResultErrorConstructor } from './no-result-error.js';
16
16
  import { ExpressionOrFactory } from '../parser/expression-parser.js';
17
17
  import { ReturningInterface } from './returning-interface.js';
@@ -21,7 +21,8 @@ import { Explainable, ExplainFormat } from '../util/explainable.js';
21
21
  import { Expression } from '../expression/expression.js';
22
22
  import { KyselyTypeError } from '../util/type-error.js';
23
23
  import { Streamable } from '../util/streamable.js';
24
- export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
24
+ import { OutputCallback, OutputExpression, OutputInterface, SelectExpressionFromOutputCallback, SelectExpressionFromOutputExpression } from './output-interface.js';
25
+ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements ReturningInterface<DB, TB, O>, OutputInterface<DB, TB, O, 'inserted'>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
25
26
  #private;
26
27
  constructor(props: InsertQueryBuilderProps);
27
28
  /**
@@ -143,11 +144,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
143
144
  * .insertInto('person')
144
145
  * .values(({ ref, selectFrom, fn }) => ({
145
146
  * first_name: 'Jennifer',
146
- * last_name: sql`concat(${ani}, ${ston})`,
147
+ * last_name: sql<string>`concat(${ani}, ${ston})`,
147
148
  * middle_name: ref('first_name'),
148
149
  * age: selectFrom('person')
149
- * .select(fn.avg<number>('age')
150
- * .as('avg_age')),
150
+ * .select(fn.avg<number>('age').as('avg_age')),
151
151
  * }))
152
152
  * .executeTakeFirst()
153
153
  * ```
@@ -172,7 +172,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
172
172
  * You can also use the callback version of subqueries or raw expressions:
173
173
  *
174
174
  * ```ts
175
- * db.with('jennifer', (db) => db
175
+ * await db.with('jennifer', (db) => db
176
176
  * .selectFrom('person')
177
177
  * .where('first_name', '=', 'Jennifer')
178
178
  * .select(['id', 'first_name', 'gender'])
@@ -182,6 +182,24 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
182
182
  * name: eb.selectFrom('jennifer').select('first_name'),
183
183
  * species: 'cat',
184
184
  * }))
185
+ * .execute()
186
+ * ```
187
+ *
188
+ * The generated SQL (PostgreSQL):
189
+ *
190
+ * ```sql
191
+ * with "jennifer" as (
192
+ * select "id", "first_name", "gender"
193
+ * from "person"
194
+ * where "first_name" = $1
195
+ * limit $2
196
+ * )
197
+ * insert into "pet" ("owner_id", "name", "species")
198
+ * values (
199
+ * (select "id" from "jennifer"),
200
+ * (select "first_name" from "jennifer"),
201
+ * $3
202
+ * )
185
203
  * ```
186
204
  */
187
205
  values(insert: InsertExpression<DB, TB>): InsertQueryBuilder<DB, TB, O>;
@@ -195,9 +213,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
195
213
  * ### Examples
196
214
  *
197
215
  * ```ts
198
- * db.insertInto('person')
216
+ * await db.insertInto('person')
199
217
  * .columns(['first_name'])
200
218
  * .expression((eb) => eb.selectFrom('pet').select('pet.name'))
219
+ * .execute()
201
220
  * ```
202
221
  *
203
222
  * The generated SQL (PostgreSQL):
@@ -215,7 +234,9 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
215
234
  *
216
235
  * <!-- siteExample("insert", "Insert subquery", 50) -->
217
236
  *
218
- * You can create an `INSERT INTO SELECT FROM` query using the `expression` method:
237
+ * You can create an `INSERT INTO SELECT FROM` query using the `expression` method.
238
+ * This API doesn't follow our WYSIWYG principles and might be a bit difficult to
239
+ * remember. The reasons for this design stem from implementation difficulties.
219
240
  *
220
241
  * ```ts
221
242
  * const result = await db.insertInto('person')
@@ -249,8 +270,40 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
249
270
  * .defaultValues()
250
271
  * .execute()
251
272
  * ```
273
+ *
274
+ * The generated SQL (PostgreSQL):
275
+ *
276
+ * ```sql
277
+ * insert into "person" default values
278
+ * ```
252
279
  */
253
280
  defaultValues(): InsertQueryBuilder<DB, TB, O>;
281
+ /**
282
+ * This can be used to add any additional SQL to the end of the query.
283
+ *
284
+ * ### Examples
285
+ *
286
+ * ```ts
287
+ * import { sql } from 'kysely'
288
+ *
289
+ * await db.insertInto('person')
290
+ * .values({
291
+ * first_name: 'John',
292
+ * last_name: 'Doe',
293
+ * gender: 'male',
294
+ * })
295
+ * .modifyEnd(sql`-- This is a comment`)
296
+ * .execute()
297
+ * ```
298
+ *
299
+ * The generated SQL (MySQL):
300
+ *
301
+ * ```sql
302
+ * insert into `person` ("first_name", "last_name", "gender")
303
+ * values (?, ?, ?) -- This is a comment
304
+ * ```
305
+ */
306
+ modifyEnd(modifier: Expression<any>): InsertQueryBuilder<DB, TB, O>;
254
307
  /**
255
308
  * Changes an `insert into` query to an `insert ignore into` query.
256
309
  *
@@ -268,9 +321,19 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
268
321
  * ```ts
269
322
  * await db.insertInto('person')
270
323
  * .ignore()
271
- * .values(values)
324
+ * .values({
325
+ * first_name: 'John',
326
+ * last_name: 'Doe',
327
+ * gender: 'female',
328
+ * })
272
329
  * .execute()
273
330
  * ```
331
+ *
332
+ * The generated SQL (MySQL):
333
+ *
334
+ * ```sql
335
+ * insert ignore into `person` ("first_name", "last_name", "gender") values (?, ?, ?)
336
+ * ```
274
337
  */
275
338
  ignore(): InsertQueryBuilder<DB, TB, O>;
276
339
  /**
@@ -283,6 +346,8 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
283
346
  * Insert the first 5 rows:
284
347
  *
285
348
  * ```ts
349
+ * import { sql } from 'kysely'
350
+ *
286
351
  * await db.insertInto('person')
287
352
  * .top(5)
288
353
  * .columns(['first_name', 'gender'])
@@ -301,6 +366,8 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
301
366
  * Insert the first 50 percent of rows:
302
367
  *
303
368
  * ```ts
369
+ * import { sql } from 'kysely'
370
+ *
304
371
  * await db.insertInto('person')
305
372
  * .top(50, 'percent')
306
373
  * .columns(['first_name', 'gender'])
@@ -331,6 +398,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
331
398
  * .values({
332
399
  * name: 'Catto',
333
400
  * species: 'cat',
401
+ * owner_id: 3,
334
402
  * })
335
403
  * .onConflict((oc) => oc
336
404
  * .column('name')
@@ -342,10 +410,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
342
410
  * The generated SQL (PostgreSQL):
343
411
  *
344
412
  * ```sql
345
- * insert into "pet" ("name", "species")
346
- * values ($1, $2)
413
+ * insert into "pet" ("name", "species", "owner_id")
414
+ * values ($1, $2, $3)
347
415
  * on conflict ("name")
348
- * do update set "species" = $3
416
+ * do update set "species" = $4
349
417
  * ```
350
418
  *
351
419
  * You can provide the name of the constraint instead of a column name:
@@ -356,6 +424,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
356
424
  * .values({
357
425
  * name: 'Catto',
358
426
  * species: 'cat',
427
+ * owner_id: 3,
359
428
  * })
360
429
  * .onConflict((oc) => oc
361
430
  * .constraint('pet_name_key')
@@ -367,10 +436,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
367
436
  * The generated SQL (PostgreSQL):
368
437
  *
369
438
  * ```sql
370
- * insert into "pet" ("name", "species")
371
- * values ($1, $2)
439
+ * insert into "pet" ("name", "species", "owner_id")
440
+ * values ($1, $2, $3)
372
441
  * on conflict on constraint "pet_name_key"
373
- * do update set "species" = $3
442
+ * do update set "species" = $4
374
443
  * ```
375
444
  *
376
445
  * You can also specify an expression as the conflict target in case
@@ -384,9 +453,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
384
453
  * .values({
385
454
  * name: 'Catto',
386
455
  * species: 'cat',
456
+ * owner_id: 3,
387
457
  * })
388
458
  * .onConflict((oc) => oc
389
- * .expression(sql`lower(name)`)
459
+ * .expression(sql<string>`lower(name)`)
390
460
  * .doUpdateSet({ species: 'hamster' })
391
461
  * )
392
462
  * .execute()
@@ -395,10 +465,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
395
465
  * The generated SQL (PostgreSQL):
396
466
  *
397
467
  * ```sql
398
- * insert into "pet" ("name", "species")
399
- * values ($1, $2)
468
+ * insert into "pet" ("name", "species", "owner_id")
469
+ * values ($1, $2, $3)
400
470
  * on conflict (lower(name))
401
- * do update set "species" = $3
471
+ * do update set "species" = $4
402
472
  * ```
403
473
  *
404
474
  * You can add a filter for the update statement like this:
@@ -409,11 +479,12 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
409
479
  * .values({
410
480
  * name: 'Catto',
411
481
  * species: 'cat',
482
+ * owner_id: 3,
412
483
  * })
413
484
  * .onConflict((oc) => oc
414
485
  * .column('name')
415
486
  * .doUpdateSet({ species: 'hamster' })
416
- * .where('excluded.name', '!=', 'Catto'')
487
+ * .where('excluded.name', '!=', 'Catto')
417
488
  * )
418
489
  * .execute()
419
490
  * ```
@@ -421,11 +492,11 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
421
492
  * The generated SQL (PostgreSQL):
422
493
  *
423
494
  * ```sql
424
- * insert into "pet" ("name", "species")
425
- * values ($1, $2)
495
+ * insert into "pet" ("name", "species", "owner_id")
496
+ * values ($1, $2, $3)
426
497
  * on conflict ("name")
427
- * do update set "species" = $3
428
- * where "excluded"."name" != $4
498
+ * do update set "species" = $4
499
+ * where "excluded"."name" != $5
429
500
  * ```
430
501
  *
431
502
  * You can create an `on conflict do nothing` clauses like this:
@@ -436,6 +507,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
436
507
  * .values({
437
508
  * name: 'Catto',
438
509
  * species: 'cat',
510
+ * owner_id: 3,
439
511
  * })
440
512
  * .onConflict((oc) => oc
441
513
  * .column('name')
@@ -447,8 +519,8 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
447
519
  * The generated SQL (PostgreSQL):
448
520
  *
449
521
  * ```sql
450
- * insert into "pet" ("name", "species")
451
- * values ($1, $2)
522
+ * insert into "pet" ("name", "species", "owner_id")
523
+ * values ($1, $2, $3)
452
524
  * on conflict ("name") do nothing
453
525
  * ```
454
526
  *
@@ -457,8 +529,13 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
457
529
  * `ExpressionBuilder`:
458
530
  *
459
531
  * ```ts
460
- * db.insertInto('person')
461
- * .values(person)
532
+ * await db.insertInto('person')
533
+ * .values({
534
+ * id: 1,
535
+ * first_name: 'John',
536
+ * last_name: 'Doe',
537
+ * gender: 'male',
538
+ * })
462
539
  * .onConflict(oc => oc
463
540
  * .column('id')
464
541
  * .doUpdateSet({
@@ -466,6 +543,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
466
543
  * last_name: (eb) => eb.ref('excluded.last_name')
467
544
  * })
468
545
  * )
546
+ * .execute()
547
+ * ```
548
+ *
549
+ * The generated SQL (PostgreSQL):
550
+ *
551
+ * ```sql
552
+ * insert into "person" ("id", "first_name", "last_name", "gender")
553
+ * values ($1, $2, $3, $4)
554
+ * on conflict ("id")
555
+ * do update set
556
+ * "first_name" = "excluded"."first_name",
557
+ * "last_name" = "excluded"."last_name"
469
558
  * ```
470
559
  */
471
560
  onConflict(callback: (builder: OnConflictBuilder<DB, TB>) => OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>> | OnConflictDoNothingBuilder<DB, TB>): InsertQueryBuilder<DB, TB, O>;
@@ -483,8 +572,22 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
483
572
  * ```ts
484
573
  * await db
485
574
  * .insertInto('person')
486
- * .values(values)
487
- * .onDuplicateKeyUpdate({ species: 'hamster' })
575
+ * .values({
576
+ * id: 1,
577
+ * first_name: 'John',
578
+ * last_name: 'Doe',
579
+ * gender: 'male',
580
+ * })
581
+ * .onDuplicateKeyUpdate({ updated_at: new Date().toISOString() })
582
+ * .execute()
583
+ * ```
584
+ *
585
+ * The generated SQL (MySQL):
586
+ *
587
+ * ```sql
588
+ * insert into `person` (`id`, `first_name`, `last_name`, `gender`)
589
+ * values (?, ?, ?, ?)
590
+ * on duplicate key update `updated_at` = ?
488
591
  * ```
489
592
  */
490
593
  onDuplicateKeyUpdate(update: UpdateObjectExpression<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
@@ -512,20 +615,20 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
512
615
  * last_name: 'Aniston'
513
616
  * })
514
617
  * .returning('id')
515
- * .executeTakeFirst()
618
+ * .executeTakeFirstOrThrow()
516
619
  * ```
517
620
  *
518
621
  * Return multiple columns:
519
622
  *
520
623
  * ```ts
521
- * const { id, first_name } = await db
624
+ * const { id, last_name } = await db
522
625
  * .insertInto('person')
523
626
  * .values({
524
627
  * first_name: 'Jennifer',
525
628
  * last_name: 'Aniston'
526
629
  * })
527
630
  * .returning(['id', 'last_name'])
528
- * .executeTakeFirst()
631
+ * .executeTakeFirstOrThrow()
529
632
  * ```
530
633
  *
531
634
  * Return arbitrary expressions:
@@ -542,9 +645,9 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
542
645
  * .returning((eb) => [
543
646
  * 'id as id',
544
647
  * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
545
- * eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
648
+ * eb.selectFrom('pet').select('pet.id').limit(1).as('first_pet_id')
546
649
  * ])
547
- * .executeTakeFirst()
650
+ * .executeTakeFirstOrThrow()
548
651
  * ```
549
652
  */
550
653
  returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
@@ -553,24 +656,151 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
553
656
  /**
554
657
  * Adds a `returning *` to an insert/update/delete query on databases
555
658
  * that support `returning` such as PostgreSQL.
659
+ *
660
+ * Also see the {@link returning} method.
556
661
  */
557
662
  returningAll(): InsertQueryBuilder<DB, TB, Selectable<DB[TB]>>;
663
+ /**
664
+ * Allows you to return data from modified rows.
665
+ *
666
+ * On supported databases like MS SQL Server (MSSQL), this method can be chained
667
+ * to `insert`, `update`, `delete` and `merge` queries to return data.
668
+ *
669
+ * Also see the {@link outputAll} method.
670
+ *
671
+ * ### Examples
672
+ *
673
+ * Return one column:
674
+ *
675
+ * ```ts
676
+ * const { id } = await db
677
+ * .insertInto('person')
678
+ * .output('inserted.id')
679
+ * .values({
680
+ * first_name: 'Jennifer',
681
+ * last_name: 'Aniston',
682
+ * gender: 'female',
683
+ * })
684
+ * .executeTakeFirstOrThrow()
685
+ * ```
686
+ *
687
+ * The generated SQL (MSSQL):
688
+ *
689
+ * ```sql
690
+ * insert into "person" ("first_name", "last_name", "gender")
691
+ * output "inserted"."id"
692
+ * values (@1, @2, @3)
693
+ * ```
694
+ *
695
+ * Return multiple columns:
696
+ *
697
+ * ```ts
698
+ * const { old_first_name, old_last_name, new_first_name, new_last_name } = await db
699
+ * .updateTable('person')
700
+ * .set({ first_name: 'John', last_name: 'Doe' })
701
+ * .output([
702
+ * 'deleted.first_name as old_first_name',
703
+ * 'deleted.last_name as old_last_name',
704
+ * 'inserted.first_name as new_first_name',
705
+ * 'inserted.last_name as new_last_name',
706
+ * ])
707
+ * .where('created_at', '<', new Date())
708
+ * .executeTakeFirstOrThrow()
709
+ * ```
710
+ *
711
+ * The generated SQL (MSSQL):
712
+ *
713
+ * ```sql
714
+ * update "person"
715
+ * set "first_name" = @1, "last_name" = @2
716
+ * output "deleted"."first_name" as "old_first_name",
717
+ * "deleted"."last_name" as "old_last_name",
718
+ * "inserted"."first_name" as "new_first_name",
719
+ * "inserted"."last_name" as "new_last_name"
720
+ * where "created_at" < @3
721
+ * ```
722
+ *
723
+ * Return arbitrary expressions:
724
+ *
725
+ * ```ts
726
+ * import { sql } from 'kysely'
727
+ *
728
+ * const { full_name } = await db
729
+ * .deleteFrom('person')
730
+ * .output((eb) => sql<string>`concat(${eb.ref('deleted.first_name')}, ' ', ${eb.ref('deleted.last_name')})`.as('full_name'))
731
+ * .where('created_at', '<', new Date())
732
+ * .executeTakeFirstOrThrow()
733
+ * ```
734
+ *
735
+ * The generated SQL (MSSQL):
736
+ *
737
+ * ```sql
738
+ * delete from "person"
739
+ * output concat("deleted"."first_name", ' ', "deleted"."last_name") as "full_name"
740
+ * where "created_at" < @1
741
+ * ```
742
+ *
743
+ * Return the action performed on the row:
744
+ *
745
+ * ```ts
746
+ * await db
747
+ * .mergeInto('person')
748
+ * .using('pet', 'pet.owner_id', 'person.id')
749
+ * .whenMatched()
750
+ * .thenDelete()
751
+ * .whenNotMatched()
752
+ * .thenInsertValues({
753
+ * first_name: 'John',
754
+ * last_name: 'Doe',
755
+ * gender: 'male'
756
+ * })
757
+ * .output([
758
+ * 'inserted.id as inserted_id',
759
+ * 'deleted.id as deleted_id',
760
+ * ])
761
+ * .execute()
762
+ * ```
763
+ *
764
+ * The generated SQL (MSSQL):
765
+ *
766
+ * ```sql
767
+ * merge into "person"
768
+ * using "pet" on "pet"."owner_id" = "person"."id"
769
+ * when matched then delete
770
+ * when not matched then
771
+ * insert ("first_name", "last_name", "gender")
772
+ * values (@1, @2, @3)
773
+ * output "inserted"."id" as "inserted_id", "deleted"."id" as "deleted_id"
774
+ * ```
775
+ *
776
+ */
777
+ output<OE extends OutputExpression<DB, TB, 'inserted'>>(selections: readonly OE[]): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>>;
778
+ output<CB extends OutputCallback<DB, TB, 'inserted'>>(callback: CB): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputCallback<CB>>>;
779
+ output<OE extends OutputExpression<DB, TB, 'inserted'>>(selection: OE): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SelectExpressionFromOutputExpression<OE>>>;
780
+ /**
781
+ * Adds an `output {prefix}.*` to an `insert`/`update`/`delete`/`merge` query on databases
782
+ * that support `output` such as MS SQL Server (MSSQL).
783
+ *
784
+ * Also see the {@link output} method.
785
+ */
786
+ outputAll(table: 'inserted'): InsertQueryBuilder<DB, TB, ReturningAllRow<DB, TB, O>>;
558
787
  /**
559
788
  * Clears all `returning` clauses from the query.
560
789
  *
561
790
  * ### Examples
562
791
  *
563
792
  * ```ts
564
- * db.insertInto('person')
565
- * .values({ first_name: 'James', last_name: 'Smith', age: 42 })
793
+ * await db.insertInto('person')
794
+ * .values({ first_name: 'James', last_name: 'Smith', gender: 'male' })
566
795
  * .returning(['first_name'])
567
796
  * .clearReturning()
797
+ * .execute()
568
798
  * ```
569
799
  *
570
800
  * The generated SQL(PostgreSQL):
571
801
  *
572
802
  * ```sql
573
- * insert into "person" ("James", "Smith", 42)
803
+ * insert into "person" ("first_name", "last_name", "gender") values ($1, $2, $3)
574
804
  * ```
575
805
  */
576
806
  clearReturning(): InsertQueryBuilder<DB, TB, InsertResult>;
@@ -586,13 +816,15 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
586
816
  * The next example uses a helper function `log` to log a query:
587
817
  *
588
818
  * ```ts
819
+ * import type { Compilable } from 'kysely'
820
+ *
589
821
  * function log<T extends Compilable>(qb: T): T {
590
822
  * console.log(qb.compile())
591
823
  * return qb
592
824
  * }
593
825
  *
594
- * db.updateTable('person')
595
- * .set(values)
826
+ * await db.insertInto('person')
827
+ * .values({ first_name: 'John', last_name: 'Doe', gender: 'male' })
596
828
  * .$call(log)
597
829
  * .execute()
598
830
  * ```
@@ -611,7 +843,9 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
611
843
  * ### Examples
612
844
  *
613
845
  * ```ts
614
- * async function insertPerson(values: InsertablePerson, returnLastName: boolean) {
846
+ * import type { NewPerson } from 'type-editor' // imaginary module
847
+ *
848
+ * async function insertPerson(values: NewPerson, returnLastName: boolean) {
615
849
  * return await db
616
850
  * .insertInto('person')
617
851
  * .values(values)
@@ -626,11 +860,11 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
626
860
  * the code. In the example above the return type of the `insertPerson` function is:
627
861
  *
628
862
  * ```ts
629
- * {
863
+ * Promise<{
630
864
  * id: number
631
865
  * first_name: string
632
866
  * last_name?: string
633
- * }
867
+ * }>
634
868
  * ```
635
869
  */
636
870
  $if<O2>(condition: boolean, func: (qb: this) => InsertQueryBuilder<any, any, O2>): O2 extends InsertResult ? InsertQueryBuilder<DB, TB, InsertResult> : O2 extends O & infer E ? InsertQueryBuilder<DB, TB, O & Partial<E>> : InsertQueryBuilder<DB, TB, Partial<O2>>;
@@ -659,23 +893,41 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
659
893
  * Turn this code:
660
894
  *
661
895
  * ```ts
896
+ * import type { Person } from 'type-editor' // imaginary module
897
+ *
662
898
  * const person = await db.insertInto('person')
663
- * .values({ ...inputPerson, nullable_column: 'hell yeah!' })
899
+ * .values({
900
+ * first_name: 'John',
901
+ * last_name: 'Doe',
902
+ * gender: 'male',
903
+ * nullable_column: 'hell yeah!'
904
+ * })
664
905
  * .returningAll()
665
906
  * .executeTakeFirstOrThrow()
666
907
  *
667
- * if (nullable_column) {
908
+ * if (isWithNoNullValue(person)) {
668
909
  * functionThatExpectsPersonWithNonNullValue(person)
669
910
  * }
911
+ *
912
+ * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {
913
+ * return person.nullable_column != null
914
+ * }
670
915
  * ```
671
916
  *
672
917
  * Into this:
673
918
  *
674
919
  * ```ts
920
+ * import type { NotNull } from 'kysely'
921
+ *
675
922
  * const person = await db.insertInto('person')
676
- * .values({ ...inputPerson, nullable_column: 'hell yeah!' })
923
+ * .values({
924
+ * first_name: 'John',
925
+ * last_name: 'Doe',
926
+ * gender: 'male',
927
+ * nullable_column: 'hell yeah!'
928
+ * })
677
929
  * .returningAll()
678
- * .$narrowType<{ nullable_column: string }>()
930
+ * .$narrowType<{ nullable_column: NotNull }>()
679
931
  * .executeTakeFirstOrThrow()
680
932
  *
681
933
  * functionThatExpectsPersonWithNonNullValue(person)
@@ -685,17 +937,17 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
685
937
  /**
686
938
  * Asserts that query's output row type equals the given type `T`.
687
939
  *
688
- * This method can be used to simplify excessively complex types to make typescript happy
940
+ * This method can be used to simplify excessively complex types to make TypeScript happy
689
941
  * and much faster.
690
942
  *
691
943
  * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much
692
- * for typescript and you get errors like this:
944
+ * for TypeScript and you get errors like this:
693
945
  *
694
946
  * ```
695
947
  * error TS2589: Type instantiation is excessively deep and possibly infinite.
696
948
  * ```
697
949
  *
698
- * In these case you can often use this method to help typescript a little bit. When you use this
950
+ * In these case you can often use this method to help TypeScript a little bit. When you use this
699
951
  * method to assert the output type of a query, Kysely can drop the complex output type that
700
952
  * consists of multiple nested helper types and replace it with the simple asserted type.
701
953
  *
@@ -705,22 +957,29 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
705
957
  * ### Examples
706
958
  *
707
959
  * ```ts
708
- * const result = await db
709
- * .with('new_person', (qb) => qb
710
- * .insertInto('person')
711
- * .values(person)
712
- * .returning('id')
713
- * .$assertType<{ id: string }>()
714
- * )
715
- * .with('new_pet', (qb) => qb
716
- * .insertInto('pet')
717
- * .values((eb) => ({ owner_id: eb.selectFrom('new_person').select('id'), ...pet }))
718
- * .returning(['name as pet_name', 'species'])
719
- * .$assertType<{ pet_name: string, species: Species }>()
720
- * )
721
- * .selectFrom(['new_person', 'new_pet'])
722
- * .selectAll()
723
- * .executeTakeFirstOrThrow()
960
+ * import type { NewPerson, NewPet, Species } from 'type-editor' // imaginary module
961
+ *
962
+ * async function insertPersonAndPet(person: NewPerson, pet: Omit<NewPet, 'owner_id'>) {
963
+ * return await db
964
+ * .with('new_person', (qb) => qb
965
+ * .insertInto('person')
966
+ * .values(person)
967
+ * .returning('id')
968
+ * .$assertType<{ id: number }>()
969
+ * )
970
+ * .with('new_pet', (qb) => qb
971
+ * .insertInto('pet')
972
+ * .values((eb) => ({
973
+ * owner_id: eb.selectFrom('new_person').select('id'),
974
+ * ...pet
975
+ * }))
976
+ * .returning(['name as pet_name', 'species'])
977
+ * .$assertType<{ pet_name: string, species: Species }>()
978
+ * )
979
+ * .selectFrom(['new_person', 'new_pet'])
980
+ * .selectAll()
981
+ * .executeTakeFirstOrThrow()
982
+ * }
724
983
  * ```
725
984
  */
726
985
  $assertType<T extends O>(): O extends T ? InsertQueryBuilder<DB, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
@@ -759,7 +1018,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
759
1018
  * ### Examples
760
1019
  *
761
1020
  * ```ts
762
- * const stream = db.
1021
+ * const stream = db
763
1022
  * .selectFrom('person')
764
1023
  * .select(['first_name', 'last_name'])
765
1024
  * .where('gender', '=', 'other')