kysely 0.27.2 → 0.27.4

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 (285) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/README.md +7 -7
  3. package/dist/cjs/dialect/database-introspector.d.ts +1 -0
  4. package/dist/cjs/dialect/dialect-adapter-base.d.ts +2 -1
  5. package/dist/cjs/dialect/dialect-adapter-base.js +4 -1
  6. package/dist/cjs/dialect/dialect-adapter.d.ts +5 -0
  7. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +1 -5
  8. package/dist/cjs/dialect/mssql/mssql-adapter.js +2 -4
  9. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +46 -26
  10. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +1 -0
  11. package/dist/cjs/dialect/mssql/mssql-driver.js +95 -36
  12. package/dist/cjs/dialect/mssql/mssql-introspector.js +13 -2
  13. package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +4 -0
  14. package/dist/cjs/dialect/mssql/mssql-query-compiler.js +8 -0
  15. package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -0
  16. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  17. package/dist/cjs/dialect/postgres/postgres-driver.js +2 -1
  18. package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -1
  19. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
  20. package/dist/cjs/driver/database-connection.d.ts +4 -2
  21. package/dist/cjs/dynamic/dynamic-reference-builder.js +2 -2
  22. package/dist/cjs/dynamic/dynamic.d.ts +1 -1
  23. package/dist/cjs/dynamic/dynamic.js +1 -1
  24. package/dist/cjs/expression/expression-builder.d.ts +31 -5
  25. package/dist/cjs/expression/expression-builder.js +7 -3
  26. package/dist/cjs/expression/expression.js +2 -3
  27. package/dist/cjs/helpers/mssql.js +3 -4
  28. package/dist/cjs/helpers/mysql.d.ts +3 -3
  29. package/dist/cjs/helpers/mysql.js +6 -7
  30. package/dist/cjs/helpers/postgres.d.ts +4 -4
  31. package/dist/cjs/helpers/postgres.js +7 -8
  32. package/dist/cjs/helpers/sqlite.js +3 -4
  33. package/dist/cjs/index.d.ts +31 -18
  34. package/dist/cjs/index.js +30 -17
  35. package/dist/cjs/kysely.d.ts +1 -1
  36. package/dist/cjs/kysely.js +3 -3
  37. package/dist/cjs/operation-node/add-index-node.js +1 -1
  38. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/case-node.d.ts +1 -1
  40. package/dist/cjs/operation-node/cast-node.d.ts +13 -0
  41. package/dist/cjs/operation-node/cast-node.js +19 -0
  42. package/dist/cjs/operation-node/column-definition-node.d.ts +2 -0
  43. package/dist/cjs/operation-node/data-type-node.d.ts +5 -1
  44. package/dist/cjs/operation-node/data-type-node.js +56 -0
  45. package/dist/cjs/operation-node/delete-query-node.d.ts +6 -0
  46. package/dist/cjs/operation-node/delete-query-node.js +12 -0
  47. package/dist/cjs/operation-node/fetch-node.d.ts +15 -0
  48. package/dist/cjs/operation-node/fetch-node.js +19 -0
  49. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -4
  50. package/dist/cjs/operation-node/having-node.d.ts +1 -1
  51. package/dist/cjs/operation-node/insert-query-node.d.ts +6 -1
  52. package/dist/cjs/operation-node/insert-query-node.js +5 -0
  53. package/dist/cjs/operation-node/join-node.d.ts +1 -1
  54. package/dist/cjs/operation-node/matched-node.d.ts +13 -0
  55. package/dist/cjs/operation-node/matched-node.js +19 -0
  56. package/dist/cjs/operation-node/merge-query-node.d.ts +27 -0
  57. package/dist/cjs/operation-node/merge-query-node.js +45 -0
  58. package/dist/cjs/operation-node/on-node.d.ts +1 -1
  59. package/dist/cjs/operation-node/operation-node-source.js +1 -2
  60. package/dist/cjs/operation-node/operation-node-transformer.d.ts +12 -0
  61. package/dist/cjs/operation-node/operation-node-transformer.js +62 -0
  62. package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -0
  63. package/dist/cjs/operation-node/operation-node-visitor.js +6 -0
  64. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  65. package/dist/cjs/operation-node/operator-node.d.ts +3 -3
  66. package/dist/cjs/operation-node/operator-node.js +8 -6
  67. package/dist/cjs/operation-node/output-node.d.ts +13 -0
  68. package/dist/cjs/operation-node/output-node.js +26 -0
  69. package/dist/cjs/operation-node/query-node.d.ts +17 -5
  70. package/dist/cjs/operation-node/query-node.js +24 -1
  71. package/dist/cjs/operation-node/select-query-node.d.ts +6 -0
  72. package/dist/cjs/operation-node/select-query-node.js +12 -0
  73. package/dist/cjs/operation-node/top-node.d.ts +14 -0
  74. package/dist/cjs/operation-node/top-node.js +19 -0
  75. package/dist/cjs/operation-node/update-query-node.d.ts +9 -1
  76. package/dist/cjs/operation-node/update-query-node.js +11 -0
  77. package/dist/cjs/operation-node/where-node.d.ts +1 -1
  78. package/dist/cjs/parser/binary-operation-parser.d.ts +1 -1
  79. package/dist/cjs/parser/binary-operation-parser.js +7 -8
  80. package/dist/cjs/parser/data-type-parser.js +8 -5
  81. package/dist/cjs/parser/default-value-parser.js +1 -2
  82. package/dist/cjs/parser/expression-parser.js +3 -4
  83. package/dist/cjs/parser/fetch-parser.d.ts +2 -0
  84. package/dist/cjs/parser/fetch-parser.js +17 -0
  85. package/dist/cjs/parser/group-by-parser.js +1 -2
  86. package/dist/cjs/parser/identifier-parser.js +1 -2
  87. package/dist/cjs/parser/insert-values-parser.d.ts +3 -3
  88. package/dist/cjs/parser/insert-values-parser.js +1 -2
  89. package/dist/cjs/parser/join-parser.js +1 -2
  90. package/dist/cjs/parser/merge-parser.d.ts +9 -0
  91. package/dist/cjs/parser/merge-parser.js +31 -0
  92. package/dist/cjs/parser/on-commit-action-parse.js +1 -2
  93. package/dist/cjs/parser/on-modify-action-parser.js +1 -2
  94. package/dist/cjs/parser/order-by-parser.js +3 -4
  95. package/dist/cjs/parser/parse-utils.js +4 -5
  96. package/dist/cjs/parser/partition-by-parser.js +1 -2
  97. package/dist/cjs/parser/reference-parser.js +8 -9
  98. package/dist/cjs/parser/returning-parser.d.ts +4 -3
  99. package/dist/cjs/parser/select-parser.js +2 -3
  100. package/dist/cjs/parser/set-operation-parser.js +1 -2
  101. package/dist/cjs/parser/table-parser.d.ts +4 -3
  102. package/dist/cjs/parser/table-parser.js +4 -5
  103. package/dist/cjs/parser/top-parser.d.ts +2 -0
  104. package/dist/cjs/parser/top-parser.js +19 -0
  105. package/dist/cjs/parser/unary-operation-parser.js +3 -4
  106. package/dist/cjs/parser/update-set-parser.js +2 -3
  107. package/dist/cjs/parser/value-parser.js +4 -5
  108. package/dist/cjs/parser/with-parser.js +1 -2
  109. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +2 -2
  110. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +2 -2
  111. package/dist/cjs/plugin/camel-case/camel-case.js +2 -3
  112. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +18 -0
  113. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +19 -11
  114. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +4 -0
  115. package/dist/cjs/query-builder/delete-query-builder.d.ts +188 -5
  116. package/dist/cjs/query-builder/delete-query-builder.js +139 -5
  117. package/dist/cjs/query-builder/function-module.d.ts +5 -5
  118. package/dist/cjs/query-builder/function-module.js +1 -2
  119. package/dist/cjs/query-builder/insert-query-builder.d.ts +166 -10
  120. package/dist/cjs/query-builder/insert-query-builder.js +107 -10
  121. package/dist/cjs/query-builder/merge-query-builder.d.ts +721 -0
  122. package/dist/cjs/query-builder/merge-query-builder.js +547 -0
  123. package/dist/cjs/query-builder/merge-result.d.ts +4 -0
  124. package/dist/cjs/query-builder/merge-result.js +10 -0
  125. package/dist/cjs/query-builder/no-result-error.js +2 -2
  126. package/dist/cjs/query-builder/on-conflict-builder.d.ts +2 -2
  127. package/dist/cjs/query-builder/output-interface.d.ts +95 -0
  128. package/dist/cjs/query-builder/output-interface.js +2 -0
  129. package/dist/cjs/query-builder/returning-interface.d.ts +2 -0
  130. package/dist/cjs/query-builder/select-query-builder.d.ts +177 -17
  131. package/dist/cjs/query-builder/select-query-builder.js +21 -2
  132. package/dist/cjs/query-builder/update-query-builder.d.ts +175 -10
  133. package/dist/cjs/query-builder/update-query-builder.js +119 -7
  134. package/dist/cjs/query-builder/update-result.d.ts +9 -0
  135. package/dist/cjs/query-builder/update-result.js +9 -0
  136. package/dist/cjs/query-builder/where-interface.d.ts +1 -1
  137. package/dist/cjs/query-compiler/default-query-compiler.d.ts +12 -0
  138. package/dist/cjs/query-compiler/default-query-compiler.js +118 -10
  139. package/dist/cjs/query-compiler/query-compiler.d.ts +2 -1
  140. package/dist/cjs/query-creator.d.ts +96 -5
  141. package/dist/cjs/query-creator.js +63 -1
  142. package/dist/cjs/raw-builder/raw-builder.js +1 -2
  143. package/dist/cjs/raw-builder/sql.d.ts +5 -5
  144. package/dist/cjs/schema/alter-column-builder.js +3 -0
  145. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +1 -1
  146. package/dist/cjs/schema/alter-table-add-index-builder.js +7 -3
  147. package/dist/cjs/schema/alter-table-builder.js +1 -2
  148. package/dist/cjs/schema/column-definition-builder.d.ts +18 -1
  149. package/dist/cjs/schema/column-definition-builder.js +22 -1
  150. package/dist/cjs/util/assert.js +2 -3
  151. package/dist/cjs/util/compilable.js +1 -2
  152. package/dist/cjs/util/infer-result.d.ts +2 -1
  153. package/dist/cjs/util/json-object-args.js +1 -2
  154. package/dist/cjs/util/log-once.js +1 -2
  155. package/dist/cjs/util/object-utils.js +38 -26
  156. package/dist/cjs/util/performance-now.js +1 -2
  157. package/dist/cjs/util/prevent-await.js +1 -2
  158. package/dist/cjs/util/query-id.js +1 -2
  159. package/dist/cjs/util/random-string.js +1 -2
  160. package/dist/cjs/util/require-all-props.js +1 -2
  161. package/dist/cjs/util/stack-trace-utils.js +1 -2
  162. package/dist/cjs/util/type-utils.d.ts +3 -2
  163. package/dist/esm/dialect/database-introspector.d.ts +1 -0
  164. package/dist/esm/dialect/dialect-adapter-base.d.ts +2 -1
  165. package/dist/esm/dialect/dialect-adapter-base.js +4 -1
  166. package/dist/esm/dialect/dialect-adapter.d.ts +5 -0
  167. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +1 -5
  168. package/dist/esm/dialect/mssql/mssql-adapter.js +2 -4
  169. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +46 -26
  170. package/dist/esm/dialect/mssql/mssql-driver.d.ts +1 -0
  171. package/dist/esm/dialect/mssql/mssql-driver.js +95 -36
  172. package/dist/esm/dialect/mssql/mssql-introspector.js +13 -2
  173. package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +4 -0
  174. package/dist/esm/dialect/mssql/mssql-query-compiler.js +8 -0
  175. package/dist/esm/dialect/mysql/mysql-introspector.js +2 -0
  176. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  177. package/dist/esm/dialect/postgres/postgres-driver.js +2 -1
  178. package/dist/esm/dialect/postgres/postgres-introspector.js +3 -1
  179. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  180. package/dist/esm/driver/database-connection.d.ts +4 -2
  181. package/dist/esm/dynamic/dynamic.d.ts +1 -1
  182. package/dist/esm/dynamic/dynamic.js +1 -1
  183. package/dist/esm/expression/expression-builder.d.ts +31 -5
  184. package/dist/esm/expression/expression-builder.js +5 -0
  185. package/dist/esm/helpers/mysql.d.ts +3 -3
  186. package/dist/esm/helpers/mysql.js +3 -3
  187. package/dist/esm/helpers/postgres.d.ts +4 -4
  188. package/dist/esm/helpers/postgres.js +4 -4
  189. package/dist/esm/index.d.ts +31 -18
  190. package/dist/esm/index.js +30 -17
  191. package/dist/esm/kysely.d.ts +1 -1
  192. package/dist/esm/kysely.js +1 -1
  193. package/dist/esm/operation-node/add-index-node.js +1 -1
  194. package/dist/esm/operation-node/alter-column-node.d.ts +1 -1
  195. package/dist/esm/operation-node/case-node.d.ts +1 -1
  196. package/dist/esm/operation-node/cast-node.d.ts +13 -0
  197. package/dist/esm/operation-node/cast-node.js +17 -0
  198. package/dist/esm/operation-node/column-definition-node.d.ts +2 -0
  199. package/dist/esm/operation-node/data-type-node.d.ts +5 -1
  200. package/dist/esm/operation-node/data-type-node.js +55 -0
  201. package/dist/esm/operation-node/delete-query-node.d.ts +6 -0
  202. package/dist/esm/operation-node/delete-query-node.js +12 -0
  203. package/dist/esm/operation-node/fetch-node.d.ts +15 -0
  204. package/dist/esm/operation-node/fetch-node.js +17 -0
  205. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -4
  206. package/dist/esm/operation-node/having-node.d.ts +1 -1
  207. package/dist/esm/operation-node/insert-query-node.d.ts +6 -1
  208. package/dist/esm/operation-node/insert-query-node.js +5 -0
  209. package/dist/esm/operation-node/join-node.d.ts +1 -1
  210. package/dist/esm/operation-node/matched-node.d.ts +13 -0
  211. package/dist/esm/operation-node/matched-node.js +17 -0
  212. package/dist/esm/operation-node/merge-query-node.d.ts +27 -0
  213. package/dist/esm/operation-node/merge-query-node.js +43 -0
  214. package/dist/esm/operation-node/on-node.d.ts +1 -1
  215. package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -0
  216. package/dist/esm/operation-node/operation-node-transformer.js +62 -0
  217. package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -0
  218. package/dist/esm/operation-node/operation-node-visitor.js +6 -0
  219. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  220. package/dist/esm/operation-node/operator-node.d.ts +3 -3
  221. package/dist/esm/operation-node/operator-node.js +2 -0
  222. package/dist/esm/operation-node/output-node.d.ts +13 -0
  223. package/dist/esm/operation-node/output-node.js +24 -0
  224. package/dist/esm/operation-node/query-node.d.ts +17 -5
  225. package/dist/esm/operation-node/query-node.js +24 -1
  226. package/dist/esm/operation-node/select-query-node.d.ts +6 -0
  227. package/dist/esm/operation-node/select-query-node.js +12 -0
  228. package/dist/esm/operation-node/top-node.d.ts +14 -0
  229. package/dist/esm/operation-node/top-node.js +17 -0
  230. package/dist/esm/operation-node/update-query-node.d.ts +9 -1
  231. package/dist/esm/operation-node/update-query-node.js +11 -0
  232. package/dist/esm/operation-node/where-node.d.ts +1 -1
  233. package/dist/esm/parser/binary-operation-parser.d.ts +1 -1
  234. package/dist/esm/parser/binary-operation-parser.js +2 -2
  235. package/dist/esm/parser/data-type-parser.js +8 -4
  236. package/dist/esm/parser/fetch-parser.d.ts +2 -0
  237. package/dist/esm/parser/fetch-parser.js +15 -0
  238. package/dist/esm/parser/insert-values-parser.d.ts +3 -3
  239. package/dist/esm/parser/merge-parser.d.ts +9 -0
  240. package/dist/esm/parser/merge-parser.js +28 -0
  241. package/dist/esm/parser/returning-parser.d.ts +4 -3
  242. package/dist/esm/parser/table-parser.d.ts +4 -3
  243. package/dist/esm/parser/top-parser.d.ts +2 -0
  244. package/dist/esm/parser/top-parser.js +17 -0
  245. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +2 -2
  246. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  247. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +18 -0
  248. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +19 -11
  249. package/dist/esm/plugin/with-schema/with-schema-transformer.js +4 -0
  250. package/dist/esm/query-builder/delete-query-builder.d.ts +188 -5
  251. package/dist/esm/query-builder/delete-query-builder.js +139 -5
  252. package/dist/esm/query-builder/function-module.d.ts +5 -5
  253. package/dist/esm/query-builder/insert-query-builder.d.ts +166 -10
  254. package/dist/esm/query-builder/insert-query-builder.js +107 -10
  255. package/dist/esm/query-builder/merge-query-builder.d.ts +721 -0
  256. package/dist/esm/query-builder/merge-query-builder.js +541 -0
  257. package/dist/esm/query-builder/merge-result.d.ts +4 -0
  258. package/dist/esm/query-builder/merge-result.js +7 -0
  259. package/dist/esm/query-builder/on-conflict-builder.d.ts +2 -2
  260. package/dist/esm/query-builder/output-interface.d.ts +95 -0
  261. package/dist/esm/query-builder/output-interface.js +2 -0
  262. package/dist/esm/query-builder/returning-interface.d.ts +2 -0
  263. package/dist/esm/query-builder/select-query-builder.d.ts +177 -17
  264. package/dist/esm/query-builder/select-query-builder.js +20 -0
  265. package/dist/esm/query-builder/update-query-builder.d.ts +175 -10
  266. package/dist/esm/query-builder/update-query-builder.js +119 -7
  267. package/dist/esm/query-builder/update-result.d.ts +9 -0
  268. package/dist/esm/query-builder/update-result.js +9 -0
  269. package/dist/esm/query-builder/where-interface.d.ts +1 -1
  270. package/dist/esm/query-compiler/default-query-compiler.d.ts +12 -0
  271. package/dist/esm/query-compiler/default-query-compiler.js +118 -10
  272. package/dist/esm/query-compiler/query-compiler.d.ts +2 -1
  273. package/dist/esm/query-creator.d.ts +96 -5
  274. package/dist/esm/query-creator.js +64 -2
  275. package/dist/esm/raw-builder/sql.d.ts +5 -5
  276. package/dist/esm/schema/alter-column-builder.js +3 -0
  277. package/dist/esm/schema/alter-table-add-index-builder.d.ts +1 -1
  278. package/dist/esm/schema/alter-table-add-index-builder.js +8 -4
  279. package/dist/esm/schema/alter-table-builder.js +1 -2
  280. package/dist/esm/schema/column-definition-builder.d.ts +18 -1
  281. package/dist/esm/schema/column-definition-builder.js +22 -1
  282. package/dist/esm/util/infer-result.d.ts +2 -1
  283. package/dist/esm/util/object-utils.js +18 -5
  284. package/dist/esm/util/type-utils.d.ts +3 -2
  285. package/package.json +26 -24
@@ -15,6 +15,7 @@ import { OperandExpression } from '../parser/expression-parser.js';
15
15
  import { RefTuple2, RefTuple3, RefTuple4, RefTuple5, ValTuple2, ValTuple3, ValTuple4, ValTuple5 } from '../parser/tuple-parser.js';
16
16
  import { Selectable } from '../util/column-type.js';
17
17
  import { KyselyTypeError } from '../util/type-error.js';
18
+ import { DataTypeExpression } from '../parser/data-type-parser.js';
18
19
  export interface ExpressionBuilder<DB, TB extends keyof DB> {
19
20
  /**
20
21
  * Creates a binary expression.
@@ -194,7 +195,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
194
195
  selectFrom<TE extends keyof DB & string>(from: TE[]): SelectQueryBuilder<DB, TB | ExtractTableAlias<DB, TE>, {}>;
195
196
  selectFrom<TE extends TableExpression<DB, TB>>(from: TE[]): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
196
197
  selectFrom<TE extends keyof DB & string>(from: TE): SelectQueryBuilder<DB, TB | ExtractTableAlias<DB, TE>, {}>;
197
- selectFrom<TE extends AnyAliasedTable<DB>>(from: TE): SelectQueryBuilder<DB & PickTableWithAlias<DB, TE>, TB | ExtractTableAlias<DB, TE>, {}>;
198
+ selectFrom<TE extends AnyAliasedTable<DB>>(from: TE): SelectQueryBuilder<DB & PickTableWithAlias<DB, TE>, TB | ExtractTableAlias<DB & PickTableWithAlias<DB, TE>, TE>, {}>;
198
199
  selectFrom<TE extends TableExpression<DB, TB>>(from: TE): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
199
200
  /**
200
201
  * Creates a `case` statement/operator.
@@ -218,7 +219,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
218
219
  * .when('gender', '=', 'female')
219
220
  * .then(
220
221
  * eb
221
- * .case('martialStatus')
222
+ * .case('maritalStatus')
222
223
  * .when('single')
223
224
  * .then('Ms.')
224
225
  * .else('Mrs.')
@@ -238,7 +239,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
238
239
  * case
239
240
  * when "gender" = $1 then $2
240
241
  * when "gender" = $3 then
241
- * case "martialStatus"
242
+ * case "maritalStatus"
242
243
  * when $4 then $5
243
244
  * else $6
244
245
  * end
@@ -292,7 +293,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
292
293
  *
293
294
  * ```ts
294
295
  * db.update('pet').set((eb) => ({
295
- * name: sql`concat(${eb.ref('pet.name')}, ${suffix})`
296
+ * name: sql<string>`concat(${eb.ref('pet.name')}, ${suffix})`
296
297
  * }))
297
298
  * ```
298
299
  *
@@ -775,7 +776,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
775
776
  * ```ts
776
777
  * db.selectFrom('person')
777
778
  * .selectAll('person')
778
- * .where((eb) => parens(
779
+ * .where((eb) => eb.parens(
779
780
  * eb('age', '=', 1).or('age', '=', 2))
780
781
  * ).and(
781
782
  * eb('first_name', '=', 'Jennifer').or('first_name', '=', 'Arnold')
@@ -792,6 +793,31 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
792
793
  */
793
794
  parens<RE extends ReferenceExpression<DB, TB>, OP extends BinaryOperatorExpression, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: OP, rhs: VE): ExpressionWrapper<DB, TB, OP extends ComparisonOperator ? SqlBool : ExtractTypeFromReferenceExpression<DB, TB, RE>>;
794
795
  parens<T>(expr: Expression<T>): ExpressionWrapper<DB, TB, T>;
796
+ /**
797
+ * Creates a `cast(expr as dataType)` expression.
798
+ *
799
+ * Since Kysely can't know the mapping between JavaScript and database types,
800
+ * you need to provide both explicitly.
801
+ *
802
+ * ### Examples
803
+ *
804
+ * ```ts
805
+ * db.selectFrom('person')
806
+ * .select((eb) => [
807
+ * 'id',
808
+ * 'first_name',
809
+ * eb.cast<number>('age', 'integer').as('age')
810
+ * ])
811
+ * ```
812
+ *
813
+ * The generated SQL (PostgreSQL):
814
+ *
815
+ * ```sql
816
+ * select cast("age" as integer) as "age"
817
+ * from "person"
818
+ * ```
819
+ */
820
+ cast<T, RE extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(expr: RE, dataType: DataTypeExpression): ExpressionWrapper<DB, TB, T>;
795
821
  /**
796
822
  * See {@link QueryCreator.withSchema}
797
823
  *
@@ -21,6 +21,8 @@ import { BinaryOperationNode } from '../operation-node/binary-operation-node.js'
21
21
  import { AndNode } from '../operation-node/and-node.js';
22
22
  import { TupleNode } from '../operation-node/tuple-node.js';
23
23
  import { JSONPathNode } from '../operation-node/json-path-node.js';
24
+ import { parseDataTypeExpression, } from '../parser/data-type-parser.js';
25
+ import { CastNode } from '../operation-node/cast-node.js';
24
26
  export function createExpressionBuilder(executor = NOOP_QUERY_EXECUTOR) {
25
27
  function binary(lhs, op, rhs) {
26
28
  return new ExpressionWrapper(parseValueBinaryOperation(lhs, op, rhs));
@@ -107,6 +109,9 @@ export function createExpressionBuilder(executor = NOOP_QUERY_EXECUTOR) {
107
109
  return new ExpressionWrapper(ParensNode.create(node));
108
110
  }
109
111
  },
112
+ cast(expr, dataType) {
113
+ return new ExpressionWrapper(CastNode.create(parseReferenceExpression(expr), parseDataTypeExpression(dataType)));
114
+ },
110
115
  withSchema(schema) {
111
116
  return createExpressionBuilder(executor.withPluginAtFront(new WithSchemaPlugin(schema)));
112
117
  },
@@ -6,7 +6,7 @@ import { Simplify } from '../util/type-utils.js';
6
6
  * A MySQL helper for aggregating a subquery into a JSON array.
7
7
  *
8
8
  * NOTE: This helper is only guaranteed to fully work with the built-in `MysqlDialect`.
9
- * While the produced SQL is compatible with all MySQL databases, some 3rd party dialects
9
+ * While the produced SQL is compatible with all MySQL databases, some third-party dialects
10
10
  * may not parse the nested JSON into arrays. In these cases you can use the built in
11
11
  * `ParseJSONResultsPlugin` to parse the results.
12
12
  *
@@ -55,7 +55,7 @@ export declare function jsonArrayFrom<O>(expr: SelectQueryBuilderExpression<O>):
55
55
  * The subquery must only return one row.
56
56
  *
57
57
  * NOTE: This helper is only guaranteed to fully work with the built-in `MysqlDialect`.
58
- * While the produced SQL is compatible with all MySQL databases, some 3rd party dialects
58
+ * While the produced SQL is compatible with all MySQL databases, some third-party dialects
59
59
  * may not parse the nested JSON into objects. In these cases you can use the built in
60
60
  * `ParseJSONResultsPlugin` to parse the results.
61
61
  *
@@ -102,7 +102,7 @@ export declare function jsonObjectFrom<O>(expr: SelectQueryBuilderExpression<O>)
102
102
  * The MySQL `json_object` function.
103
103
  *
104
104
  * NOTE: This helper is only guaranteed to fully work with the built-in `MysqlDialect`.
105
- * While the produced SQL is compatible with all MySQL databases, some 3rd party dialects
105
+ * While the produced SQL is compatible with all MySQL databases, some third-party dialects
106
106
  * may not parse the nested JSON into objects. In these cases you can use the built in
107
107
  * `ParseJSONResultsPlugin` to parse the results.
108
108
  *
@@ -5,7 +5,7 @@ import { getJsonObjectArgs } from '../util/json-object-args.js';
5
5
  * A MySQL helper for aggregating a subquery into a JSON array.
6
6
  *
7
7
  * NOTE: This helper is only guaranteed to fully work with the built-in `MysqlDialect`.
8
- * While the produced SQL is compatible with all MySQL databases, some 3rd party dialects
8
+ * While the produced SQL is compatible with all MySQL databases, some third-party dialects
9
9
  * may not parse the nested JSON into arrays. In these cases you can use the built in
10
10
  * `ParseJSONResultsPlugin` to parse the results.
11
11
  *
@@ -56,7 +56,7 @@ export function jsonArrayFrom(expr) {
56
56
  * The subquery must only return one row.
57
57
  *
58
58
  * NOTE: This helper is only guaranteed to fully work with the built-in `MysqlDialect`.
59
- * While the produced SQL is compatible with all MySQL databases, some 3rd party dialects
59
+ * While the produced SQL is compatible with all MySQL databases, some third-party dialects
60
60
  * may not parse the nested JSON into objects. In these cases you can use the built in
61
61
  * `ParseJSONResultsPlugin` to parse the results.
62
62
  *
@@ -105,7 +105,7 @@ export function jsonObjectFrom(expr) {
105
105
  * The MySQL `json_object` function.
106
106
  *
107
107
  * NOTE: This helper is only guaranteed to fully work with the built-in `MysqlDialect`.
108
- * While the produced SQL is compatible with all MySQL databases, some 3rd party dialects
108
+ * While the produced SQL is compatible with all MySQL databases, some third-party dialects
109
109
  * may not parse the nested JSON into objects. In these cases you can use the built in
110
110
  * `ParseJSONResultsPlugin` to parse the results.
111
111
  *
@@ -15,7 +15,7 @@ import { Simplify } from '../util/type-utils.js';
15
15
  * Please keep in mind that the helpers under the `kysely/helpers` folder, including
16
16
  * `jsonArrayFrom`, are not guaranteed to work with third party dialects. In order for
17
17
  * them to work, the dialect must automatically parse the `json` data type into
18
- * javascript JSON values like objects and arrays. Some dialects might simply return
18
+ * JavaScript JSON values like objects and arrays. Some dialects might simply return
19
19
  * the data as a JSON string. In these cases you can use the built in `ParseJSONResultsPlugin`
20
20
  * to parse the results.
21
21
  *
@@ -65,9 +65,9 @@ export declare function jsonArrayFrom<O>(expr: Expression<O>): RawBuilder<Simpli
65
65
  * use the `jsonObjectFrom` helper to fetch person's favorite pet along with the person's id.
66
66
  *
67
67
  * Please keep in mind that the helpers under the `kysely/helpers` folder, including
68
- * `jsonObjectFrom`, are not guaranteed to work with 3rd party dialects. In order for
68
+ * `jsonObjectFrom`, are not guaranteed to work with third-party dialects. In order for
69
69
  * them to work, the dialect must automatically parse the `json` data type into
70
- * javascript JSON values like objects and arrays. Some dialects might simply return
70
+ * JavaScript JSON values like objects and arrays. Some dialects might simply return
71
71
  * the data as a JSON string. In these cases you can use the built in `ParseJSONResultsPlugin`
72
72
  * to parse the results.
73
73
  *
@@ -107,7 +107,7 @@ export declare function jsonObjectFrom<O>(expr: Expression<O>): RawBuilder<Simpl
107
107
  * The PostgreSQL `json_build_object` function.
108
108
  *
109
109
  * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
110
- * While the produced SQL is compatible with all PostgreSQL databases, some 3rd party dialects
110
+ * While the produced SQL is compatible with all PostgreSQL databases, some third-party dialects
111
111
  * may not parse the nested JSON into objects. In these cases you can use the built in
112
112
  * `ParseJSONResultsPlugin` to parse the results.
113
113
  *
@@ -14,7 +14,7 @@ import { sql } from '../raw-builder/sql.js';
14
14
  * Please keep in mind that the helpers under the `kysely/helpers` folder, including
15
15
  * `jsonArrayFrom`, are not guaranteed to work with third party dialects. In order for
16
16
  * them to work, the dialect must automatically parse the `json` data type into
17
- * javascript JSON values like objects and arrays. Some dialects might simply return
17
+ * JavaScript JSON values like objects and arrays. Some dialects might simply return
18
18
  * the data as a JSON string. In these cases you can use the built in `ParseJSONResultsPlugin`
19
19
  * to parse the results.
20
20
  *
@@ -66,9 +66,9 @@ export function jsonArrayFrom(expr) {
66
66
  * use the `jsonObjectFrom` helper to fetch person's favorite pet along with the person's id.
67
67
  *
68
68
  * Please keep in mind that the helpers under the `kysely/helpers` folder, including
69
- * `jsonObjectFrom`, are not guaranteed to work with 3rd party dialects. In order for
69
+ * `jsonObjectFrom`, are not guaranteed to work with third-party dialects. In order for
70
70
  * them to work, the dialect must automatically parse the `json` data type into
71
- * javascript JSON values like objects and arrays. Some dialects might simply return
71
+ * JavaScript JSON values like objects and arrays. Some dialects might simply return
72
72
  * the data as a JSON string. In these cases you can use the built in `ParseJSONResultsPlugin`
73
73
  * to parse the results.
74
74
  *
@@ -110,7 +110,7 @@ export function jsonObjectFrom(expr) {
110
110
  * The PostgreSQL `json_build_object` function.
111
111
  *
112
112
  * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
113
- * While the produced SQL is compatible with all PostgreSQL databases, some 3rd party dialects
113
+ * While the produced SQL is compatible with all PostgreSQL databases, some third-party dialects
114
114
  * may not parse the nested JSON into objects. In these cases you can use the built in
115
115
  * `ParseJSONResultsPlugin` to parse the results.
116
116
  *
@@ -5,6 +5,7 @@ export { ExpressionBuilder, expressionBuilder, } from './expression/expression-b
5
5
  export * from './expression/expression-wrapper.js';
6
6
  export * from './query-builder/where-interface.js';
7
7
  export * from './query-builder/returning-interface.js';
8
+ export * from './query-builder/output-interface.js';
8
9
  export * from './query-builder/having-interface.js';
9
10
  export * from './query-builder/select-query-builder.js';
10
11
  export * from './query-builder/insert-query-builder.js';
@@ -20,6 +21,8 @@ export * from './query-builder/on-conflict-builder.js';
20
21
  export * from './query-builder/aggregate-function-builder.js';
21
22
  export * from './query-builder/case-builder.js';
22
23
  export * from './query-builder/json-path-builder.js';
24
+ export * from './query-builder/merge-query-builder.js';
25
+ export * from './query-builder/merge-result.js';
23
26
  export * from './raw-builder/raw-builder.js';
24
27
  export * from './raw-builder/sql.js';
25
28
  export * from './query-executor/query-executor.js';
@@ -89,17 +92,21 @@ export * from './plugin/with-schema/with-schema-plugin.js';
89
92
  export * from './plugin/parse-json-results/parse-json-results-plugin.js';
90
93
  export * from './operation-node/add-column-node.js';
91
94
  export * from './operation-node/add-constraint-node.js';
95
+ export * from './operation-node/add-index-node.js';
96
+ export * from './operation-node/aggregate-function-node.js';
92
97
  export * from './operation-node/alias-node.js';
93
98
  export * from './operation-node/alter-column-node.js';
94
99
  export * from './operation-node/alter-table-node.js';
95
100
  export * from './operation-node/and-node.js';
101
+ export * from './operation-node/binary-operation-node.js';
96
102
  export * from './operation-node/case-node.js';
103
+ export * from './operation-node/cast-node.js';
97
104
  export * from './operation-node/check-constraint-node.js';
98
105
  export * from './operation-node/column-definition-node.js';
99
106
  export * from './operation-node/column-node.js';
100
107
  export * from './operation-node/column-update-node.js';
101
- export * from './operation-node/common-table-expression-node.js';
102
108
  export * from './operation-node/common-table-expression-name-node.js';
109
+ export * from './operation-node/common-table-expression-node.js';
103
110
  export * from './operation-node/constraint-node.js';
104
111
  export * from './operation-node/create-index-node.js';
105
112
  export * from './operation-node/create-schema-node.js';
@@ -107,6 +114,7 @@ export * from './operation-node/create-table-node.js';
107
114
  export * from './operation-node/create-type-node.js';
108
115
  export * from './operation-node/create-view-node.js';
109
116
  export * from './operation-node/data-type-node.js';
117
+ export * from './operation-node/default-insert-value-node.js';
110
118
  export * from './operation-node/default-value-node.js';
111
119
  export * from './operation-node/delete-query-node.js';
112
120
  export * from './operation-node/drop-column-node.js';
@@ -116,8 +124,11 @@ export * from './operation-node/drop-schema-node.js';
116
124
  export * from './operation-node/drop-table-node.js';
117
125
  export * from './operation-node/drop-type-node.js';
118
126
  export * from './operation-node/drop-view-node.js';
127
+ export * from './operation-node/explain-node.js';
128
+ export * from './operation-node/fetch-node.js';
119
129
  export * from './operation-node/foreign-key-constraint-node.js';
120
130
  export * from './operation-node/from-node.js';
131
+ export * from './operation-node/function-node.js';
121
132
  export * from './operation-node/generated-node.js';
122
133
  export * from './operation-node/group-by-item-node.js';
123
134
  export * from './operation-node/group-by-node.js';
@@ -125,8 +136,14 @@ export * from './operation-node/having-node.js';
125
136
  export * from './operation-node/identifier-node.js';
126
137
  export * from './operation-node/insert-query-node.js';
127
138
  export * from './operation-node/join-node.js';
139
+ export * from './operation-node/json-operator-chain-node.js';
140
+ export * from './operation-node/json-path-leg-node.js';
141
+ export * from './operation-node/json-path-node.js';
142
+ export * from './operation-node/json-reference-node.js';
128
143
  export * from './operation-node/limit-node.js';
129
144
  export * from './operation-node/list-node.js';
145
+ export * from './operation-node/matched-node.js';
146
+ export * from './operation-node/merge-query-node.js';
130
147
  export * from './operation-node/modify-column-node.js';
131
148
  export * from './operation-node/offset-node.js';
132
149
  export * from './operation-node/on-conflict-node.js';
@@ -140,7 +157,11 @@ export * from './operation-node/operator-node.js';
140
157
  export * from './operation-node/or-node.js';
141
158
  export * from './operation-node/order-by-item-node.js';
142
159
  export * from './operation-node/order-by-node.js';
160
+ export * from './operation-node/output-node.js';
161
+ export * from './operation-node/over-node.js';
143
162
  export * from './operation-node/parens-node.js';
163
+ export * from './operation-node/partition-by-item-node.js';
164
+ export * from './operation-node/partition-by-node.js';
144
165
  export * from './operation-node/primary-constraint-node.js';
145
166
  export * from './operation-node/primitive-value-list-node.js';
146
167
  export * from './operation-node/query-node.js';
@@ -149,34 +170,26 @@ export * from './operation-node/reference-node.js';
149
170
  export * from './operation-node/references-node.js';
150
171
  export * from './operation-node/rename-column-node.js';
151
172
  export * from './operation-node/returning-node.js';
173
+ export * from './operation-node/schemable-identifier-node.js';
152
174
  export * from './operation-node/select-all-node.js';
153
- export * from './operation-node/select-query-node.js';
175
+ export * from './operation-node/select-modifier-node.js';
154
176
  export * from './operation-node/select-query-node.js';
155
177
  export * from './operation-node/selection-node.js';
178
+ export * from './operation-node/set-operation-node.js';
179
+ export * from './operation-node/simple-reference-expression-node.js';
156
180
  export * from './operation-node/table-node.js';
181
+ export * from './operation-node/top-node.js';
182
+ export * from './operation-node/tuple-node.js';
183
+ export * from './operation-node/unary-operation-node.js';
157
184
  export * from './operation-node/unique-constraint-node.js';
158
185
  export * from './operation-node/update-query-node.js';
186
+ export * from './operation-node/using-node.js';
159
187
  export * from './operation-node/value-list-node.js';
160
188
  export * from './operation-node/value-node.js';
161
189
  export * from './operation-node/values-node.js';
162
190
  export * from './operation-node/when-node.js';
163
191
  export * from './operation-node/where-node.js';
164
192
  export * from './operation-node/with-node.js';
165
- export * from './operation-node/explain-node.js';
166
- export * from './operation-node/default-insert-value-node.js';
167
- export * from './operation-node/aggregate-function-node.js';
168
- export * from './operation-node/over-node.js';
169
- export * from './operation-node/partition-by-node.js';
170
- export * from './operation-node/partition-by-item-node.js';
171
- export * from './operation-node/set-operation-node.js';
172
- export * from './operation-node/binary-operation-node.js';
173
- export * from './operation-node/unary-operation-node.js';
174
- export * from './operation-node/using-node.js';
175
- export * from './operation-node/json-reference-node.js';
176
- export * from './operation-node/json-path-leg-node.js';
177
- export * from './operation-node/json-path-node.js';
178
- export * from './operation-node/json-operator-chain-node.js';
179
- export * from './operation-node/tuple-node.js';
180
193
  export * from './util/column-type.js';
181
194
  export * from './util/compilable.js';
182
195
  export * from './util/explainable.js';
@@ -188,7 +201,7 @@ export { logOnce } from './util/log-once.js';
188
201
  export { SelectExpression, SelectCallback, SelectArg, Selection, CallbackSelection, } from './parser/select-parser.js';
189
202
  export { ReferenceExpression, ReferenceExpressionOrList, SimpleReferenceExpression, StringReference, ExtractTypeFromStringReference, ExtractTypeFromReferenceExpression, } from './parser/reference-parser.js';
190
203
  export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
191
- export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
204
+ export { SimpleTableReference, TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
192
205
  export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-parser.js';
193
206
  export { InsertObject } from './parser/insert-values-parser.js';
194
207
  export { UpdateObject } from './parser/update-set-parser.js';
package/dist/esm/index.js CHANGED
@@ -6,6 +6,7 @@ export { expressionBuilder, } from './expression/expression-builder.js';
6
6
  export * from './expression/expression-wrapper.js';
7
7
  export * from './query-builder/where-interface.js';
8
8
  export * from './query-builder/returning-interface.js';
9
+ export * from './query-builder/output-interface.js';
9
10
  export * from './query-builder/having-interface.js';
10
11
  export * from './query-builder/select-query-builder.js';
11
12
  export * from './query-builder/insert-query-builder.js';
@@ -21,6 +22,8 @@ export * from './query-builder/on-conflict-builder.js';
21
22
  export * from './query-builder/aggregate-function-builder.js';
22
23
  export * from './query-builder/case-builder.js';
23
24
  export * from './query-builder/json-path-builder.js';
25
+ export * from './query-builder/merge-query-builder.js';
26
+ export * from './query-builder/merge-result.js';
24
27
  export * from './raw-builder/raw-builder.js';
25
28
  export * from './raw-builder/sql.js';
26
29
  export * from './query-executor/query-executor.js';
@@ -90,17 +93,21 @@ export * from './plugin/with-schema/with-schema-plugin.js';
90
93
  export * from './plugin/parse-json-results/parse-json-results-plugin.js';
91
94
  export * from './operation-node/add-column-node.js';
92
95
  export * from './operation-node/add-constraint-node.js';
96
+ export * from './operation-node/add-index-node.js';
97
+ export * from './operation-node/aggregate-function-node.js';
93
98
  export * from './operation-node/alias-node.js';
94
99
  export * from './operation-node/alter-column-node.js';
95
100
  export * from './operation-node/alter-table-node.js';
96
101
  export * from './operation-node/and-node.js';
102
+ export * from './operation-node/binary-operation-node.js';
97
103
  export * from './operation-node/case-node.js';
104
+ export * from './operation-node/cast-node.js';
98
105
  export * from './operation-node/check-constraint-node.js';
99
106
  export * from './operation-node/column-definition-node.js';
100
107
  export * from './operation-node/column-node.js';
101
108
  export * from './operation-node/column-update-node.js';
102
- export * from './operation-node/common-table-expression-node.js';
103
109
  export * from './operation-node/common-table-expression-name-node.js';
110
+ export * from './operation-node/common-table-expression-node.js';
104
111
  export * from './operation-node/constraint-node.js';
105
112
  export * from './operation-node/create-index-node.js';
106
113
  export * from './operation-node/create-schema-node.js';
@@ -108,6 +115,7 @@ export * from './operation-node/create-table-node.js';
108
115
  export * from './operation-node/create-type-node.js';
109
116
  export * from './operation-node/create-view-node.js';
110
117
  export * from './operation-node/data-type-node.js';
118
+ export * from './operation-node/default-insert-value-node.js';
111
119
  export * from './operation-node/default-value-node.js';
112
120
  export * from './operation-node/delete-query-node.js';
113
121
  export * from './operation-node/drop-column-node.js';
@@ -117,8 +125,11 @@ export * from './operation-node/drop-schema-node.js';
117
125
  export * from './operation-node/drop-table-node.js';
118
126
  export * from './operation-node/drop-type-node.js';
119
127
  export * from './operation-node/drop-view-node.js';
128
+ export * from './operation-node/explain-node.js';
129
+ export * from './operation-node/fetch-node.js';
120
130
  export * from './operation-node/foreign-key-constraint-node.js';
121
131
  export * from './operation-node/from-node.js';
132
+ export * from './operation-node/function-node.js';
122
133
  export * from './operation-node/generated-node.js';
123
134
  export * from './operation-node/group-by-item-node.js';
124
135
  export * from './operation-node/group-by-node.js';
@@ -126,8 +137,14 @@ export * from './operation-node/having-node.js';
126
137
  export * from './operation-node/identifier-node.js';
127
138
  export * from './operation-node/insert-query-node.js';
128
139
  export * from './operation-node/join-node.js';
140
+ export * from './operation-node/json-operator-chain-node.js';
141
+ export * from './operation-node/json-path-leg-node.js';
142
+ export * from './operation-node/json-path-node.js';
143
+ export * from './operation-node/json-reference-node.js';
129
144
  export * from './operation-node/limit-node.js';
130
145
  export * from './operation-node/list-node.js';
146
+ export * from './operation-node/matched-node.js';
147
+ export * from './operation-node/merge-query-node.js';
131
148
  export * from './operation-node/modify-column-node.js';
132
149
  export * from './operation-node/offset-node.js';
133
150
  export * from './operation-node/on-conflict-node.js';
@@ -141,7 +158,11 @@ export * from './operation-node/operator-node.js';
141
158
  export * from './operation-node/or-node.js';
142
159
  export * from './operation-node/order-by-item-node.js';
143
160
  export * from './operation-node/order-by-node.js';
161
+ export * from './operation-node/output-node.js';
162
+ export * from './operation-node/over-node.js';
144
163
  export * from './operation-node/parens-node.js';
164
+ export * from './operation-node/partition-by-item-node.js';
165
+ export * from './operation-node/partition-by-node.js';
145
166
  export * from './operation-node/primary-constraint-node.js';
146
167
  export * from './operation-node/primitive-value-list-node.js';
147
168
  export * from './operation-node/query-node.js';
@@ -150,34 +171,26 @@ export * from './operation-node/reference-node.js';
150
171
  export * from './operation-node/references-node.js';
151
172
  export * from './operation-node/rename-column-node.js';
152
173
  export * from './operation-node/returning-node.js';
174
+ export * from './operation-node/schemable-identifier-node.js';
153
175
  export * from './operation-node/select-all-node.js';
154
- export * from './operation-node/select-query-node.js';
176
+ export * from './operation-node/select-modifier-node.js';
155
177
  export * from './operation-node/select-query-node.js';
156
178
  export * from './operation-node/selection-node.js';
179
+ export * from './operation-node/set-operation-node.js';
180
+ export * from './operation-node/simple-reference-expression-node.js';
157
181
  export * from './operation-node/table-node.js';
182
+ export * from './operation-node/top-node.js';
183
+ export * from './operation-node/tuple-node.js';
184
+ export * from './operation-node/unary-operation-node.js';
158
185
  export * from './operation-node/unique-constraint-node.js';
159
186
  export * from './operation-node/update-query-node.js';
187
+ export * from './operation-node/using-node.js';
160
188
  export * from './operation-node/value-list-node.js';
161
189
  export * from './operation-node/value-node.js';
162
190
  export * from './operation-node/values-node.js';
163
191
  export * from './operation-node/when-node.js';
164
192
  export * from './operation-node/where-node.js';
165
193
  export * from './operation-node/with-node.js';
166
- export * from './operation-node/explain-node.js';
167
- export * from './operation-node/default-insert-value-node.js';
168
- export * from './operation-node/aggregate-function-node.js';
169
- export * from './operation-node/over-node.js';
170
- export * from './operation-node/partition-by-node.js';
171
- export * from './operation-node/partition-by-item-node.js';
172
- export * from './operation-node/set-operation-node.js';
173
- export * from './operation-node/binary-operation-node.js';
174
- export * from './operation-node/unary-operation-node.js';
175
- export * from './operation-node/using-node.js';
176
- export * from './operation-node/json-reference-node.js';
177
- export * from './operation-node/json-path-leg-node.js';
178
- export * from './operation-node/json-path-node.js';
179
- export * from './operation-node/json-operator-chain-node.js';
180
- export * from './operation-node/tuple-node.js';
181
194
  export * from './util/column-type.js';
182
195
  export * from './util/compilable.js';
183
196
  export * from './util/explainable.js';
@@ -20,7 +20,7 @@ import { DrainOuterGeneric } from './util/type-utils.js';
20
20
  * The main Kysely class.
21
21
  *
22
22
  * You should create one instance of `Kysely` per database using the {@link Kysely}
23
- * constructor. Each `Kysely` instance maintains it's own connection pool.
23
+ * constructor. Each `Kysely` instance maintains its own connection pool.
24
24
  *
25
25
  * ### Examples
26
26
  *
@@ -21,7 +21,7 @@ import { WithSchemaPlugin } from './plugin/with-schema/with-schema-plugin.js';
21
21
  * The main Kysely class.
22
22
  *
23
23
  * You should create one instance of `Kysely` per database using the {@link Kysely}
24
- * constructor. Each `Kysely` instance maintains it's own connection pool.
24
+ * constructor. Each `Kysely` instance maintains its own connection pool.
25
25
  *
26
26
  * ### Examples
27
27
  *
@@ -11,7 +11,7 @@ export const AddIndexNode = freeze({
11
11
  create(name) {
12
12
  return freeze({
13
13
  kind: 'AddIndexNode',
14
- name: IdentifierNode.create(name)
14
+ name: IdentifierNode.create(name),
15
15
  });
16
16
  },
17
17
  cloneWith(node, props) {
@@ -17,5 +17,5 @@ export interface AlterColumnNode extends OperationNode {
17
17
  */
18
18
  export declare const AlterColumnNode: Readonly<{
19
19
  is(node: OperationNode): node is AlterColumnNode;
20
- create<T extends "dataType" | "dataTypeExpression" | "setDefault" | "dropDefault" | "setNotNull" | "dropNotNull">(column: string, prop: T, value: Required<AlterColumnNodeProps>[T]): AlterColumnNode;
20
+ create<T extends keyof AlterColumnNodeProps>(column: string, prop: T, value: Required<AlterColumnNodeProps>[T]): AlterColumnNode;
21
21
  }>;
@@ -15,5 +15,5 @@ export declare const CaseNode: Readonly<{
15
15
  create(value?: OperationNode): CaseNode;
16
16
  cloneWithWhen(caseNode: CaseNode, when: WhenNode): CaseNode;
17
17
  cloneWithThen(caseNode: CaseNode, then: OperationNode): CaseNode;
18
- cloneWith(caseNode: CaseNode, props: Partial<Pick<CaseNode, 'else' | 'isStatement'>>): CaseNode;
18
+ cloneWith(caseNode: CaseNode, props: Partial<Pick<CaseNode, "else" | "isStatement">>): CaseNode;
19
19
  }>;
@@ -0,0 +1,13 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ export interface CastNode extends OperationNode {
3
+ readonly kind: 'CastNode';
4
+ readonly expression: OperationNode;
5
+ readonly dataType: OperationNode;
6
+ }
7
+ /**
8
+ * @internal
9
+ */
10
+ export declare const CastNode: Readonly<{
11
+ is(node: OperationNode): node is CastNode;
12
+ create(expression: OperationNode, dataType: OperationNode): CastNode;
13
+ }>;
@@ -0,0 +1,17 @@
1
+ /// <reference types="./cast-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const CastNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'CastNode';
9
+ },
10
+ create(expression, dataType) {
11
+ return freeze({
12
+ kind: 'CastNode',
13
+ expression,
14
+ dataType,
15
+ });
16
+ },
17
+ });
@@ -21,6 +21,8 @@ export interface ColumnDefinitionNode extends OperationNode {
21
21
  readonly frontModifiers?: ReadonlyArray<OperationNode>;
22
22
  readonly endModifiers?: ReadonlyArray<OperationNode>;
23
23
  readonly nullsNotDistinct?: boolean;
24
+ readonly identity?: boolean;
25
+ readonly ifNotExists?: boolean;
24
26
  }
25
27
  /**
26
28
  * @internal
@@ -1,5 +1,7 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- export type ColumnDataType = 'varchar' | `varchar(${number})` | 'char' | `char(${number})` | 'text' | 'integer' | 'int2' | 'int4' | 'int8' | 'bigint' | 'boolean' | 'real' | 'double precision' | 'float4' | 'float8' | 'decimal' | `decimal(${number}, ${number})` | 'numeric' | `numeric(${number}, ${number})` | 'binary' | `binary(${number})` | 'bytea' | 'date' | 'datetime' | `datetime(${number})` | 'time' | `time(${number})` | 'timetz' | `timetz(${number})` | 'timestamp' | `timestamp(${number})` | 'timestamptz' | `timestamptz(${number})` | 'serial' | 'bigserial' | 'uuid' | 'json' | 'jsonb' | 'blob';
2
+ declare const SIMPLE_COLUMN_DATA_TYPES: readonly ["varchar", "char", "text", "integer", "int2", "int4", "int8", "smallint", "bigint", "boolean", "real", "double precision", "float4", "float8", "decimal", "numeric", "binary", "bytea", "date", "datetime", "time", "timetz", "timestamp", "timestamptz", "serial", "bigserial", "uuid", "json", "jsonb", "blob", "varbinary"];
3
+ type SimpleColumnDataType = (typeof SIMPLE_COLUMN_DATA_TYPES)[number];
4
+ export type ColumnDataType = SimpleColumnDataType | `varchar(${number})` | `char(${number})` | `decimal(${number}, ${number})` | `numeric(${number}, ${number})` | `binary(${number})` | `datetime(${number})` | `time(${number})` | `timetz(${number})` | `timestamp(${number})` | `timestamptz(${number})` | `varbinary(${number})`;
3
5
  export type DataTypeParams = Omit<DataTypeNode, 'kind' | 'dataType'>;
4
6
  export interface DataTypeNode extends OperationNode {
5
7
  readonly kind: 'DataTypeNode';
@@ -12,3 +14,5 @@ export declare const DataTypeNode: Readonly<{
12
14
  is(node: OperationNode): node is DataTypeNode;
13
15
  create(dataType: ColumnDataType): DataTypeNode;
14
16
  }>;
17
+ export declare function isColumnDataType(dataType: string): dataType is ColumnDataType;
18
+ export {};