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
@@ -20,16 +20,29 @@ exports.NO_MIGRATIONS = (0, object_utils_js_1.freeze)({ __noMigrations__: true }
20
20
  * other way.
21
21
  *
22
22
  * ```ts
23
- * import { promises as fs } from 'fs'
24
- * import path from 'path'
23
+ * import { promises as fs } from 'node:fs'
24
+ * import path from 'node:path'
25
+ * import * as Sqlite from 'better-sqlite3'
26
+ * import {
27
+ * FileMigrationProvider,
28
+ * Kysely,
29
+ * Migrator,
30
+ * SqliteDialect
31
+ * } from 'kysely'
32
+ *
33
+ * const db = new Kysely<any>({
34
+ * dialect: new SqliteDialect({
35
+ * database: Sqlite(':memory:')
36
+ * })
37
+ * })
25
38
  *
26
39
  * const migrator = new Migrator({
27
40
  * db,
28
41
  * provider: new FileMigrationProvider({
29
42
  * fs,
30
- * path,
31
43
  * // Path to the folder that contains all your migrations.
32
- * migrationFolder: 'some/path/to/migrations'
44
+ * migrationFolder: 'some/path/to/migrations',
45
+ * path,
33
46
  * })
34
47
  * })
35
48
  * ```
@@ -78,19 +91,18 @@ class Migrator {
78
91
  * ### Examples
79
92
  *
80
93
  * ```ts
81
- * const db = new Kysely<Database>({
82
- * dialect: new PostgresDialect({
83
- * host: 'localhost',
84
- * database: 'kysely_test',
85
- * }),
86
- * })
94
+ * import { promises as fs } from 'node:fs'
95
+ * import path from 'node:path'
96
+ * import * as Sqlite from 'better-sqlite3'
97
+ * import { FileMigrationProvider, Migrator } from 'kysely'
87
98
  *
88
99
  * const migrator = new Migrator({
89
100
  * db,
90
- * provider: new FileMigrationProvider(
91
- * // Path to the folder that contains all your migrations.
92
- * 'some/path/to/migrations'
93
- * )
101
+ * provider: new FileMigrationProvider({
102
+ * fs,
103
+ * migrationFolder: 'some/path/to/migrations',
104
+ * path,
105
+ * })
94
106
  * })
95
107
  *
96
108
  * const { error, results } = await migrator.migrateToLatest()
@@ -123,6 +135,20 @@ class Migrator {
123
135
  * ### Examples
124
136
  *
125
137
  * ```ts
138
+ * import { promises as fs } from 'node:fs'
139
+ * import path from 'node:path'
140
+ * import { FileMigrationProvider, Migrator } from 'kysely'
141
+ *
142
+ * const migrator = new Migrator({
143
+ * db,
144
+ * provider: new FileMigrationProvider({
145
+ * fs,
146
+ * // Path to the folder that contains all your migrations.
147
+ * migrationFolder: 'some/path/to/migrations',
148
+ * path,
149
+ * })
150
+ * })
151
+ *
126
152
  * await migrator.migrateTo('some_migration')
127
153
  * ```
128
154
  *
@@ -132,6 +158,20 @@ class Migrator {
132
158
  * you can use a special constant `NO_MIGRATIONS`:
133
159
  *
134
160
  * ```ts
161
+ * import { promises as fs } from 'node:fs'
162
+ * import path from 'node:path'
163
+ * import { FileMigrationProvider, Migrator, NO_MIGRATIONS } from 'kysely'
164
+ *
165
+ * const migrator = new Migrator({
166
+ * db,
167
+ * provider: new FileMigrationProvider({
168
+ * fs,
169
+ * // Path to the folder that contains all your migrations.
170
+ * migrationFolder: 'some/path/to/migrations',
171
+ * path,
172
+ * })
173
+ * })
174
+ *
135
175
  * await migrator.migrateTo(NO_MIGRATIONS)
136
176
  * ```
137
177
  */
@@ -170,6 +210,20 @@ class Migrator {
170
210
  * ### Examples
171
211
  *
172
212
  * ```ts
213
+ * import { promises as fs } from 'node:fs'
214
+ * import path from 'node:path'
215
+ * import { FileMigrationProvider, Migrator } from 'kysely'
216
+ *
217
+ * const migrator = new Migrator({
218
+ * db,
219
+ * provider: new FileMigrationProvider({
220
+ * fs,
221
+ * // Path to the folder that contains all your migrations.
222
+ * migrationFolder: 'some/path/to/migrations',
223
+ * path,
224
+ * })
225
+ * })
226
+ *
173
227
  * await migrator.migrateUp()
174
228
  * ```
175
229
  */
@@ -187,6 +241,20 @@ class Migrator {
187
241
  * ### Examples
188
242
  *
189
243
  * ```ts
244
+ * import { promises as fs } from 'node:fs'
245
+ * import path from 'node:path'
246
+ * import { FileMigrationProvider, Migrator } from 'kysely'
247
+ *
248
+ * const migrator = new Migrator({
249
+ * db,
250
+ * provider: new FileMigrationProvider({
251
+ * fs,
252
+ * // Path to the folder that contains all your migrations.
253
+ * migrationFolder: 'some/path/to/migrations',
254
+ * path,
255
+ * })
256
+ * })
257
+ *
190
258
  * await migrator.migrateDown()
191
259
  * ```
192
260
  */
@@ -1,11 +1,14 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { OverNode } from './over-node.js';
3
3
  import { WhereNode } from './where-node.js';
4
+ import { OrderByNode } from './order-by-node.js';
5
+ import { OrderByItemNode } from './order-by-item-node.js';
4
6
  export interface AggregateFunctionNode extends OperationNode {
5
7
  readonly kind: 'AggregateFunctionNode';
6
8
  readonly func: string;
7
9
  readonly aggregated: readonly OperationNode[];
8
10
  readonly distinct?: boolean;
11
+ readonly orderBy?: OrderByNode;
9
12
  readonly filter?: WhereNode;
10
13
  readonly over?: OverNode;
11
14
  }
@@ -16,6 +19,7 @@ export declare const AggregateFunctionNode: Readonly<{
16
19
  is(node: OperationNode): node is AggregateFunctionNode;
17
20
  create(aggregateFunction: string, aggregated?: readonly OperationNode[]): AggregateFunctionNode;
18
21
  cloneWithDistinct(aggregateFunctionNode: AggregateFunctionNode): AggregateFunctionNode;
22
+ cloneWithOrderBy(aggregateFunctionNode: AggregateFunctionNode, orderItems: ReadonlyArray<OrderByItemNode>): AggregateFunctionNode;
19
23
  cloneWithFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
20
24
  cloneWithOrFilter(aggregateFunctionNode: AggregateFunctionNode, filter: OperationNode): AggregateFunctionNode;
21
25
  cloneWithOver(aggregateFunctionNode: AggregateFunctionNode, over?: OverNode): AggregateFunctionNode;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AggregateFunctionNode = void 0;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
5
  const where_node_js_1 = require("./where-node.js");
6
+ const order_by_node_js_1 = require("./order-by-node.js");
6
7
  /**
7
8
  * @internal
8
9
  */
@@ -23,6 +24,14 @@ exports.AggregateFunctionNode = (0, object_utils_js_1.freeze)({
23
24
  distinct: true,
24
25
  });
25
26
  },
27
+ cloneWithOrderBy(aggregateFunctionNode, orderItems) {
28
+ return (0, object_utils_js_1.freeze)({
29
+ ...aggregateFunctionNode,
30
+ orderBy: aggregateFunctionNode.orderBy
31
+ ? order_by_node_js_1.OrderByNode.cloneWithItems(aggregateFunctionNode.orderBy, orderItems)
32
+ : order_by_node_js_1.OrderByNode.create(orderItems),
33
+ });
34
+ },
26
35
  cloneWithFilter(aggregateFunctionNode, filter) {
27
36
  return (0, object_utils_js_1.freeze)({
28
37
  ...aggregateFunctionNode,
@@ -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
  }>;
@@ -22,6 +22,7 @@ export interface ColumnDefinitionNode extends OperationNode {
22
22
  readonly endModifiers?: ReadonlyArray<OperationNode>;
23
23
  readonly nullsNotDistinct?: boolean;
24
24
  readonly identity?: boolean;
25
+ readonly ifNotExists?: boolean;
25
26
  }
26
27
  /**
27
28
  * @internal
@@ -1,7 +1,7 @@
1
1
  import { OperationNode } from './operation-node.js';
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"];
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", "int4range", "int4multirange", "int8range", "int8multirange", "numrange", "nummultirange", "tsrange", "tsmultirange", "tstzrange", "tstzmultirange", "daterange", "datemultirange"];
3
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})`;
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})`;
5
5
  export type DataTypeParams = Omit<DataTypeNode, 'kind' | 'dataType'>;
6
6
  export interface DataTypeNode extends OperationNode {
7
7
  readonly kind: 'DataTypeNode';
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isColumnDataType = exports.DataTypeNode = void 0;
3
+ exports.DataTypeNode = void 0;
4
+ exports.isColumnDataType = isColumnDataType;
4
5
  const object_utils_js_1 = require("../util/object-utils.js");
5
6
  const SIMPLE_COLUMN_DATA_TYPES = [
6
7
  'varchar',
@@ -33,6 +34,19 @@ const SIMPLE_COLUMN_DATA_TYPES = [
33
34
  'json',
34
35
  'jsonb',
35
36
  'blob',
37
+ 'varbinary',
38
+ 'int4range',
39
+ 'int4multirange',
40
+ 'int8range',
41
+ 'int8multirange',
42
+ 'numrange',
43
+ 'nummultirange',
44
+ 'tsrange',
45
+ 'tsmultirange',
46
+ 'tstzrange',
47
+ 'tstzmultirange',
48
+ 'daterange',
49
+ 'datemultirange',
36
50
  ];
37
51
  const COLUMN_DATA_TYPE_REGEX = [
38
52
  /^varchar\(\d+\)$/,
@@ -42,9 +56,10 @@ const COLUMN_DATA_TYPE_REGEX = [
42
56
  /^binary\(\d+\)$/,
43
57
  /^datetime\(\d+\)$/,
44
58
  /^time\(\d+\)$/,
45
- /^timez\(\d+\)$/,
59
+ /^timetz\(\d+\)$/,
46
60
  /^timestamp\(\d+\)$/,
47
61
  /^timestamptz\(\d+\)$/,
62
+ /^varbinary\(\d+\)$/,
48
63
  ];
49
64
  /**
50
65
  * @internal
@@ -69,4 +84,3 @@ function isColumnDataType(dataType) {
69
84
  }
70
85
  return false;
71
86
  }
72
- exports.isColumnDataType = isColumnDataType;
@@ -10,6 +10,7 @@ import { OrderByItemNode } from './order-by-item-node.js';
10
10
  import { ExplainNode } from './explain-node.js';
11
11
  import { UsingNode } from './using-node.js';
12
12
  import { TopNode } from './top-node.js';
13
+ import { OutputNode } from './output-node.js';
13
14
  export interface DeleteQueryNode extends OperationNode {
14
15
  readonly kind: 'DeleteQueryNode';
15
16
  readonly from: FromNode;
@@ -21,7 +22,9 @@ export interface DeleteQueryNode extends OperationNode {
21
22
  readonly orderBy?: OrderByNode;
22
23
  readonly limit?: LimitNode;
23
24
  readonly explain?: ExplainNode;
25
+ readonly endModifiers?: ReadonlyArray<OperationNode>;
24
26
  readonly top?: TopNode;
27
+ readonly output?: OutputNode;
25
28
  }
26
29
  /**
27
30
  * @internal
@@ -19,10 +19,10 @@ export declare const ForeignKeyConstraintNode: Readonly<{
19
19
  is(node: OperationNode): node is ForeignKeyConstraintNode;
20
20
  create(sourceColumns: ReadonlyArray<ColumnNode>, targetTable: TableNode, targetColumns: ReadonlyArray<ColumnNode>, constraintName?: string): ForeignKeyConstraintNode;
21
21
  cloneWith(node: ForeignKeyConstraintNode, props: ForeignKeyConstraintNodeProps): Readonly<{
22
- name?: IdentifierNode | undefined;
23
- onDelete?: "no action" | "restrict" | "cascade" | "set null" | "set default" | undefined;
24
- onUpdate?: "no action" | "restrict" | "cascade" | "set null" | "set default" | undefined;
25
- kind: 'ForeignKeyConstraintNode';
22
+ name?: IdentifierNode;
23
+ onDelete?: OnModifyForeignAction;
24
+ onUpdate?: OnModifyForeignAction;
25
+ kind: "ForeignKeyConstraintNode";
26
26
  columns: ReadonlyArray<ColumnNode>;
27
27
  references: ReferencesNode;
28
28
  }>;
@@ -9,5 +9,5 @@ export interface HavingNode extends OperationNode {
9
9
  export declare const HavingNode: Readonly<{
10
10
  is(node: OperationNode): node is HavingNode;
11
11
  create(filter: OperationNode): HavingNode;
12
- cloneWithOperation(havingNode: HavingNode, operator: 'And' | 'Or', operation: OperationNode): HavingNode;
12
+ cloneWithOperation(havingNode: HavingNode, operator: "And" | "Or", operation: OperationNode): HavingNode;
13
13
  }>;
@@ -3,6 +3,7 @@ import { ExplainNode } from './explain-node.js';
3
3
  import { OnConflictNode } from './on-conflict-node.js';
4
4
  import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
5
5
  import { OperationNode } from './operation-node.js';
6
+ import { OutputNode } from './output-node.js';
6
7
  import { ReturningNode } from './returning-node.js';
7
8
  import { TableNode } from './table-node.js';
8
9
  import { TopNode } from './top-node.js';
@@ -21,7 +22,9 @@ export interface InsertQueryNode extends OperationNode {
21
22
  readonly replace?: boolean;
22
23
  readonly explain?: ExplainNode;
23
24
  readonly defaultValues?: boolean;
25
+ readonly endModifiers?: ReadonlyArray<OperationNode>;
24
26
  readonly top?: TopNode;
27
+ readonly output?: OutputNode;
25
28
  }
26
29
  /**
27
30
  * @internal
@@ -1,6 +1,7 @@
1
1
  import { AliasNode } from './alias-node.js';
2
2
  import { JoinNode } from './join-node.js';
3
3
  import { OperationNode } from './operation-node.js';
4
+ import { OutputNode } from './output-node.js';
4
5
  import { TableNode } from './table-node.js';
5
6
  import { TopNode } from './top-node.js';
6
7
  import { WhenNode } from './when-node.js';
@@ -12,6 +13,8 @@ export interface MergeQueryNode extends OperationNode {
12
13
  readonly whens?: ReadonlyArray<WhenNode>;
13
14
  readonly with?: WithNode;
14
15
  readonly top?: TopNode;
16
+ readonly output?: OutputNode;
17
+ readonly endModifiers?: ReadonlyArray<OperationNode>;
15
18
  }
16
19
  /**
17
20
  * @internal
@@ -9,5 +9,5 @@ export interface OnNode extends OperationNode {
9
9
  export declare const OnNode: Readonly<{
10
10
  is(node: OperationNode): node is OnNode;
11
11
  create(filter: OperationNode): OnNode;
12
- cloneWithOperation(onNode: OnNode, operator: 'And' | 'Or', operation: OperationNode): OnNode;
12
+ cloneWithOperation(onNode: OnNode, operator: "And" | "Or", operation: OperationNode): OnNode;
13
13
  }>;
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isOperationNodeSource = void 0;
3
+ exports.isOperationNodeSource = isOperationNodeSource;
4
4
  const object_utils_js_1 = require("../util/object-utils.js");
5
5
  function isOperationNodeSource(obj) {
6
6
  return (0, object_utils_js_1.isObject)(obj) && (0, object_utils_js_1.isFunction)(obj.toOperationNode);
7
7
  }
8
- exports.isOperationNodeSource = isOperationNodeSource;
@@ -91,6 +91,7 @@ import { AddIndexNode } from './add-index-node.js';
91
91
  import { CastNode } from './cast-node.js';
92
92
  import { FetchNode } from './fetch-node.js';
93
93
  import { TopNode } from './top-node.js';
94
+ import { OutputNode } from './output-node.js';
94
95
  /**
95
96
  * Transforms an operation node tree into another one.
96
97
  *
@@ -105,9 +106,12 @@ import { TopNode } from './top-node.js';
105
106
  * snake_case, you'd do something like this:
106
107
  *
107
108
  * ```ts
109
+ * import { type IdentifierNode, OperationNodeTransformer } from 'kysely'
110
+ * import snakeCase from 'lodash/snakeCase'
111
+ *
108
112
  * class CamelCaseTransformer extends OperationNodeTransformer {
109
- * transformIdentifier(node: IdentifierNode): IdentifierNode {
110
- * node = super.transformIdentifier(node),
113
+ * override transformIdentifier(node: IdentifierNode): IdentifierNode {
114
+ * node = super.transformIdentifier(node)
111
115
  *
112
116
  * return {
113
117
  * ...node,
@@ -117,7 +121,10 @@ import { TopNode } from './top-node.js';
117
121
  * }
118
122
  *
119
123
  * const transformer = new CamelCaseTransformer()
120
- * const tree = transformer.transformNode(tree)
124
+ *
125
+ * const query = db.selectFrom('person').select(['first_name', 'last_name'])
126
+ *
127
+ * const tree = transformer.transformNode(query.toOperationNode())
121
128
  * ```
122
129
  */
123
130
  export declare class OperationNodeTransformer {
@@ -211,6 +218,7 @@ export declare class OperationNodeTransformer {
211
218
  protected transformCast(node: CastNode): CastNode;
212
219
  protected transformFetch(node: FetchNode): FetchNode;
213
220
  protected transformTop(node: TopNode): TopNode;
221
+ protected transformOutput(node: OutputNode): OutputNode;
214
222
  protected transformDataType(node: DataTypeNode): DataTypeNode;
215
223
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
216
224
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -17,9 +17,12 @@ const require_all_props_js_1 = require("../util/require-all-props.js");
17
17
  * snake_case, you'd do something like this:
18
18
  *
19
19
  * ```ts
20
+ * import { type IdentifierNode, OperationNodeTransformer } from 'kysely'
21
+ * import snakeCase from 'lodash/snakeCase'
22
+ *
20
23
  * class CamelCaseTransformer extends OperationNodeTransformer {
21
- * transformIdentifier(node: IdentifierNode): IdentifierNode {
22
- * node = super.transformIdentifier(node),
24
+ * override transformIdentifier(node: IdentifierNode): IdentifierNode {
25
+ * node = super.transformIdentifier(node)
23
26
  *
24
27
  * return {
25
28
  * ...node,
@@ -29,7 +32,10 @@ const require_all_props_js_1 = require("../util/require-all-props.js");
29
32
  * }
30
33
  *
31
34
  * const transformer = new CamelCaseTransformer()
32
- * const tree = transformer.transformNode(tree)
35
+ *
36
+ * const query = db.selectFrom('person').select(['first_name', 'last_name'])
37
+ *
38
+ * const tree = transformer.transformNode(query.toOperationNode())
33
39
  * ```
34
40
  */
35
41
  class OperationNodeTransformer {
@@ -127,6 +133,7 @@ class OperationNodeTransformer {
127
133
  CastNode: this.transformCast.bind(this),
128
134
  FetchNode: this.transformFetch.bind(this),
129
135
  TopNode: this.transformTop.bind(this),
136
+ OutputNode: this.transformOutput.bind(this),
130
137
  });
131
138
  transformNode(node) {
132
139
  if (!node) {
@@ -262,12 +269,14 @@ class OperationNodeTransformer {
262
269
  returning: this.transformNode(node.returning),
263
270
  onConflict: this.transformNode(node.onConflict),
264
271
  onDuplicateKey: this.transformNode(node.onDuplicateKey),
272
+ endModifiers: this.transformNodeList(node.endModifiers),
265
273
  with: this.transformNode(node.with),
266
274
  ignore: node.ignore,
267
275
  replace: node.replace,
268
276
  explain: this.transformNode(node.explain),
269
277
  defaultValues: node.defaultValues,
270
278
  top: this.transformNode(node.top),
279
+ output: this.transformNode(node.output),
271
280
  });
272
281
  }
273
282
  transformValues(node) {
@@ -284,11 +293,13 @@ class OperationNodeTransformer {
284
293
  joins: this.transformNodeList(node.joins),
285
294
  where: this.transformNode(node.where),
286
295
  returning: this.transformNode(node.returning),
296
+ endModifiers: this.transformNodeList(node.endModifiers),
287
297
  with: this.transformNode(node.with),
288
298
  orderBy: this.transformNode(node.orderBy),
289
299
  limit: this.transformNode(node.limit),
290
300
  explain: this.transformNode(node.explain),
291
301
  top: this.transformNode(node.top),
302
+ output: this.transformNode(node.output),
292
303
  });
293
304
  }
294
305
  transformReturning(node) {
@@ -329,6 +340,7 @@ class OperationNodeTransformer {
329
340
  endModifiers: this.transformNodeList(node.endModifiers),
330
341
  nullsNotDistinct: node.nullsNotDistinct,
331
342
  identity: node.identity,
343
+ ifNotExists: node.ifNotExists,
332
344
  });
333
345
  }
334
346
  transformAddColumn(node) {
@@ -379,10 +391,12 @@ class OperationNodeTransformer {
379
391
  where: this.transformNode(node.where),
380
392
  updates: this.transformNodeList(node.updates),
381
393
  returning: this.transformNode(node.returning),
394
+ endModifiers: this.transformNodeList(node.endModifiers),
382
395
  with: this.transformNode(node.with),
383
396
  explain: this.transformNode(node.explain),
384
397
  limit: this.transformNode(node.limit),
385
398
  top: this.transformNode(node.top),
399
+ output: this.transformNode(node.output),
386
400
  });
387
401
  }
388
402
  transformColumnUpdate(node) {
@@ -684,6 +698,7 @@ class OperationNodeTransformer {
684
698
  kind: 'AggregateFunctionNode',
685
699
  aggregated: this.transformNodeList(node.aggregated),
686
700
  distinct: node.distinct,
701
+ orderBy: this.transformNode(node.orderBy),
687
702
  filter: this.transformNode(node.filter),
688
703
  func: node.func,
689
704
  over: this.transformNode(node.over),
@@ -794,6 +809,8 @@ class OperationNodeTransformer {
794
809
  whens: this.transformNodeList(node.whens),
795
810
  with: this.transformNode(node.with),
796
811
  top: this.transformNode(node.top),
812
+ endModifiers: this.transformNodeList(node.endModifiers),
813
+ output: this.transformNode(node.output),
797
814
  });
798
815
  }
799
816
  transformMatched(node) {
@@ -834,6 +851,12 @@ class OperationNodeTransformer {
834
851
  modifiers: node.modifiers,
835
852
  });
836
853
  }
854
+ transformOutput(node) {
855
+ return (0, require_all_props_js_1.requireAllProps)({
856
+ kind: 'OutputNode',
857
+ selections: this.transformNodeList(node.selections),
858
+ });
859
+ }
837
860
  transformDataType(node) {
838
861
  // An Object.freezed leaf node. No need to clone.
839
862
  return node;
@@ -91,6 +91,7 @@ import { AddIndexNode } from './add-index-node.js';
91
91
  import { CastNode } from './cast-node.js';
92
92
  import { FetchNode } from './fetch-node.js';
93
93
  import { TopNode } from './top-node.js';
94
+ import { OutputNode } from './output-node.js';
94
95
  export declare abstract class OperationNodeVisitor {
95
96
  #private;
96
97
  protected readonly nodeStack: OperationNode[];
@@ -188,4 +189,5 @@ export declare abstract class OperationNodeVisitor {
188
189
  protected abstract visitCast(node: CastNode): void;
189
190
  protected abstract visitFetch(node: FetchNode): void;
190
191
  protected abstract visitTop(node: TopNode): void;
192
+ protected abstract visitOutput(node: OutputNode): void;
191
193
  }
@@ -100,6 +100,7 @@ class OperationNodeVisitor {
100
100
  CastNode: this.visitCast.bind(this),
101
101
  FetchNode: this.visitFetch.bind(this),
102
102
  TopNode: this.visitTop.bind(this),
103
+ OutputNode: this.visitOutput.bind(this),
103
104
  });
104
105
  visitNode = (node) => {
105
106
  this.nodeStack.push(node);
@@ -1,4 +1,4 @@
1
- export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode';
1
+ export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'MergeQueryNode' | 'MatchedNode' | 'AddIndexNode' | 'CastNode' | 'FetchNode' | 'TopNode' | 'OutputNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -1,11 +1,11 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from"];
2
+ export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "^@", "&&", "?", "?&", "?|", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from"];
3
3
  export declare const ARITHMETIC_OPERATORS: readonly ["+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>"];
4
4
  export declare const JSON_OPERATORS: readonly ["->", "->>"];
5
- export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
5
+ export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "^@", "&&", "?", "?&", "?|", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
6
6
  export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
7
7
  export declare const UNARY_OPERATORS: readonly ["not", "-", "exists", "not exists"];
8
- export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
8
+ export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "^@", "&&", "?", "?&", "?|", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
9
9
  export type ComparisonOperator = (typeof COMPARISON_OPERATORS)[number];
10
10
  export type ArithmeticOperator = (typeof ARITHMETIC_OPERATORS)[number];
11
11
  export type JSONOperator = (typeof JSON_OPERATORS)[number];
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isJSONOperator = exports.isArithmeticOperator = exports.isComparisonOperator = exports.isBinaryOperator = exports.isOperator = exports.OperatorNode = exports.OPERATORS = exports.UNARY_OPERATORS = exports.UNARY_FILTER_OPERATORS = exports.BINARY_OPERATORS = exports.JSON_OPERATORS = exports.ARITHMETIC_OPERATORS = exports.COMPARISON_OPERATORS = void 0;
3
+ exports.OperatorNode = exports.OPERATORS = exports.UNARY_OPERATORS = exports.UNARY_FILTER_OPERATORS = exports.BINARY_OPERATORS = exports.JSON_OPERATORS = exports.ARITHMETIC_OPERATORS = exports.COMPARISON_OPERATORS = void 0;
4
+ exports.isOperator = isOperator;
5
+ exports.isBinaryOperator = isBinaryOperator;
6
+ exports.isComparisonOperator = isComparisonOperator;
7
+ exports.isArithmeticOperator = isArithmeticOperator;
8
+ exports.isJSONOperator = isJSONOperator;
4
9
  const object_utils_js_1 = require("../util/object-utils.js");
5
10
  exports.COMPARISON_OPERATORS = [
6
11
  '=',
@@ -22,9 +27,11 @@ exports.COMPARISON_OPERATORS = [
22
27
  'not ilike',
23
28
  '@>',
24
29
  '<@',
30
+ '^@',
25
31
  '&&',
26
32
  '?',
27
33
  '?&',
34
+ '?|',
28
35
  '!<',
29
36
  '!>',
30
37
  '<=>',
@@ -86,20 +93,15 @@ exports.OperatorNode = (0, object_utils_js_1.freeze)({
86
93
  function isOperator(op) {
87
94
  return (0, object_utils_js_1.isString)(op) && exports.OPERATORS.includes(op);
88
95
  }
89
- exports.isOperator = isOperator;
90
96
  function isBinaryOperator(op) {
91
97
  return (0, object_utils_js_1.isString)(op) && exports.BINARY_OPERATORS.includes(op);
92
98
  }
93
- exports.isBinaryOperator = isBinaryOperator;
94
99
  function isComparisonOperator(op) {
95
100
  return (0, object_utils_js_1.isString)(op) && exports.COMPARISON_OPERATORS.includes(op);
96
101
  }
97
- exports.isComparisonOperator = isComparisonOperator;
98
102
  function isArithmeticOperator(op) {
99
103
  return (0, object_utils_js_1.isString)(op) && exports.ARITHMETIC_OPERATORS.includes(op);
100
104
  }
101
- exports.isArithmeticOperator = isArithmeticOperator;
102
105
  function isJSONOperator(op) {
103
106
  return (0, object_utils_js_1.isString)(op) && exports.JSON_OPERATORS.includes(op);
104
107
  }
105
- exports.isJSONOperator = isJSONOperator;