kysely 0.23.5 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/README.md +46 -24
  2. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
  3. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  6. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  7. package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
  8. package/dist/cjs/driver/runtime-driver.js +4 -2
  9. package/dist/cjs/expression/expression-builder.d.ts +386 -0
  10. package/dist/cjs/expression/expression-builder.js +92 -0
  11. package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
  12. package/dist/cjs/expression/expression-wrapper.js +54 -0
  13. package/dist/cjs/expression/expression.d.ts +1 -1
  14. package/dist/cjs/helpers/postgres.d.ts +133 -0
  15. package/dist/cjs/helpers/postgres.js +141 -0
  16. package/dist/cjs/index.d.ts +4 -3
  17. package/dist/cjs/index.js +4 -2
  18. package/dist/cjs/kysely.d.ts +10 -0
  19. package/dist/cjs/kysely.js +12 -1
  20. package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
  21. package/dist/cjs/migration/migrator.d.ts +5 -2
  22. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -3
  23. package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
  24. package/dist/cjs/operation-node/delete-query-node.d.ts +0 -1
  25. package/dist/cjs/operation-node/delete-query-node.js +0 -6
  26. package/dist/cjs/operation-node/function-node.d.ts +13 -0
  27. package/dist/cjs/operation-node/function-node.js +19 -0
  28. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  29. package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
  30. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  31. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  32. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  33. package/dist/cjs/operation-node/operator-node.d.ts +13 -2
  34. package/dist/cjs/operation-node/operator-node.js +38 -3
  35. package/dist/cjs/operation-node/query-node.d.ts +25 -8
  36. package/dist/cjs/operation-node/query-node.js +9 -2
  37. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  38. package/dist/cjs/operation-node/select-query-node.js +0 -6
  39. package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
  40. package/dist/cjs/operation-node/update-query-node.js +0 -6
  41. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
  42. package/dist/cjs/parser/binary-operation-parser.js +89 -39
  43. package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
  44. package/dist/cjs/parser/coalesce-parser.js +0 -9
  45. package/dist/cjs/parser/expression-parser.d.ts +7 -3
  46. package/dist/cjs/parser/expression-parser.js +3 -3
  47. package/dist/cjs/parser/group-by-parser.d.ts +3 -2
  48. package/dist/cjs/parser/group-by-parser.js +3 -0
  49. package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
  50. package/dist/cjs/parser/insert-values-parser.js +19 -13
  51. package/dist/cjs/parser/join-parser.js +1 -1
  52. package/dist/cjs/parser/parse-utils.d.ts +0 -2
  53. package/dist/cjs/parser/parse-utils.js +1 -8
  54. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  55. package/dist/cjs/parser/select-parser.d.ts +5 -13
  56. package/dist/cjs/parser/select-parser.js +8 -4
  57. package/dist/cjs/parser/table-parser.d.ts +5 -3
  58. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
  59. package/dist/cjs/parser/unary-operation-parser.js +9 -8
  60. package/dist/cjs/parser/update-set-parser.d.ts +4 -1
  61. package/dist/cjs/parser/update-set-parser.js +9 -4
  62. package/dist/cjs/parser/value-parser.d.ts +5 -0
  63. package/dist/cjs/parser/value-parser.js +1 -3
  64. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  65. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  66. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
  67. package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
  68. package/dist/cjs/query-builder/delete-query-builder.d.ts +220 -201
  69. package/dist/cjs/query-builder/delete-query-builder.js +21 -27
  70. package/dist/cjs/query-builder/delete-result.js +3 -0
  71. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  72. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
  73. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  74. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
  75. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  76. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
  77. package/dist/cjs/query-builder/function-module.d.ts +40 -12
  78. package/dist/cjs/query-builder/function-module.js +43 -329
  79. package/dist/cjs/query-builder/having-interface.d.ts +19 -16
  80. package/dist/cjs/query-builder/insert-query-builder.d.ts +75 -26
  81. package/dist/cjs/query-builder/insert-query-builder.js +21 -29
  82. package/dist/cjs/query-builder/insert-result.js +3 -0
  83. package/dist/cjs/query-builder/join-builder.d.ts +23 -26
  84. package/dist/cjs/query-builder/join-builder.js +17 -22
  85. package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
  86. package/dist/cjs/query-builder/no-result-error.js +5 -1
  87. package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
  88. package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
  89. package/dist/cjs/query-builder/over-builder.d.ts +5 -0
  90. package/dist/cjs/query-builder/over-builder.js +7 -0
  91. package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
  92. package/dist/cjs/query-builder/select-query-builder.d.ts +148 -237
  93. package/dist/cjs/query-builder/select-query-builder.js +333 -78
  94. package/dist/cjs/query-builder/update-query-builder.d.ts +145 -213
  95. package/dist/cjs/query-builder/update-query-builder.js +21 -115
  96. package/dist/cjs/query-builder/update-result.js +3 -0
  97. package/dist/cjs/query-builder/where-interface.d.ts +71 -184
  98. package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
  99. package/dist/cjs/query-compiler/default-query-compiler.js +17 -1
  100. package/dist/cjs/query-creator.d.ts +9 -2
  101. package/dist/cjs/query-creator.js +1 -24
  102. package/dist/cjs/query-executor/query-executor.d.ts +3 -3
  103. package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
  104. package/dist/cjs/raw-builder/raw-builder.js +13 -7
  105. package/dist/cjs/raw-builder/sql.d.ts +17 -9
  106. package/dist/cjs/raw-builder/sql.js +8 -2
  107. package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
  108. package/dist/cjs/schema/alter-column-builder.js +7 -0
  109. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  110. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  111. package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  112. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
  113. package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
  114. package/dist/cjs/schema/column-definition-builder.js +8 -1
  115. package/dist/cjs/schema/create-index-builder.d.ts +51 -9
  116. package/dist/cjs/schema/create-index-builder.js +17 -0
  117. package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
  118. package/dist/cjs/schema/create-schema-builder.js +7 -0
  119. package/dist/cjs/schema/create-table-builder.d.ts +3 -1
  120. package/dist/cjs/schema/create-table-builder.js +3 -1
  121. package/dist/cjs/schema/create-type-builder.d.ts +5 -0
  122. package/dist/cjs/schema/create-type-builder.js +7 -0
  123. package/dist/cjs/schema/create-view-builder.d.ts +5 -0
  124. package/dist/cjs/schema/create-view-builder.js +7 -0
  125. package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
  126. package/dist/cjs/schema/drop-index-builder.js +7 -0
  127. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
  128. package/dist/cjs/schema/drop-schema-builder.js +7 -0
  129. package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
  130. package/dist/cjs/schema/drop-table-builder.js +7 -0
  131. package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
  132. package/dist/cjs/schema/drop-type-builder.js +7 -0
  133. package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
  134. package/dist/cjs/schema/drop-view-builder.js +7 -0
  135. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
  136. package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
  137. package/dist/cjs/util/compilable.d.ts +1 -0
  138. package/dist/cjs/util/compilable.js +6 -0
  139. package/dist/cjs/util/explainable.d.ts +35 -0
  140. package/dist/cjs/util/log.d.ts +2 -0
  141. package/dist/cjs/util/object-utils.js +1 -1
  142. package/dist/cjs/util/streamable.d.ts +29 -0
  143. package/dist/cjs/util/streamable.js +2 -0
  144. package/dist/cjs/util/type-utils.d.ts +1 -0
  145. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
  146. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  147. package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
  148. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  149. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  150. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  151. package/dist/esm/driver/runtime-driver.js +4 -2
  152. package/dist/esm/expression/expression-builder.d.ts +386 -0
  153. package/dist/esm/expression/expression-builder.js +88 -0
  154. package/dist/esm/expression/expression-wrapper.d.ts +92 -0
  155. package/dist/esm/expression/expression-wrapper.js +50 -0
  156. package/dist/esm/expression/expression.d.ts +1 -1
  157. package/dist/esm/helpers/postgres.d.ts +133 -0
  158. package/dist/esm/helpers/postgres.js +136 -0
  159. package/dist/esm/index.d.ts +4 -3
  160. package/dist/esm/index.js +2 -1
  161. package/dist/esm/kysely.d.ts +10 -0
  162. package/dist/esm/kysely.js +13 -2
  163. package/dist/esm/migration/file-migration-provider.d.ts +5 -2
  164. package/dist/esm/migration/migrator.d.ts +5 -2
  165. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -3
  166. package/dist/esm/operation-node/create-index-node.d.ts +2 -0
  167. package/dist/esm/operation-node/delete-query-node.d.ts +0 -1
  168. package/dist/esm/operation-node/delete-query-node.js +0 -6
  169. package/dist/esm/operation-node/function-node.d.ts +13 -0
  170. package/dist/esm/operation-node/function-node.js +17 -0
  171. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  172. package/dist/esm/operation-node/operation-node-transformer.js +9 -0
  173. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  174. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  175. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  176. package/dist/esm/operation-node/operator-node.d.ts +13 -2
  177. package/dist/esm/operation-node/operator-node.js +34 -3
  178. package/dist/esm/operation-node/query-node.d.ts +25 -8
  179. package/dist/esm/operation-node/query-node.js +9 -2
  180. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  181. package/dist/esm/operation-node/select-query-node.js +0 -6
  182. package/dist/esm/operation-node/update-query-node.d.ts +0 -1
  183. package/dist/esm/operation-node/update-query-node.js +0 -6
  184. package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
  185. package/dist/esm/parser/binary-operation-parser.js +85 -37
  186. package/dist/esm/parser/coalesce-parser.d.ts +0 -2
  187. package/dist/esm/parser/coalesce-parser.js +1 -7
  188. package/dist/esm/parser/expression-parser.d.ts +7 -3
  189. package/dist/esm/parser/expression-parser.js +3 -3
  190. package/dist/esm/parser/group-by-parser.d.ts +3 -2
  191. package/dist/esm/parser/group-by-parser.js +3 -0
  192. package/dist/esm/parser/insert-values-parser.d.ts +4 -1
  193. package/dist/esm/parser/insert-values-parser.js +18 -12
  194. package/dist/esm/parser/join-parser.js +2 -2
  195. package/dist/esm/parser/parse-utils.d.ts +0 -2
  196. package/dist/esm/parser/parse-utils.js +0 -6
  197. package/dist/esm/parser/returning-parser.d.ts +2 -1
  198. package/dist/esm/parser/select-parser.d.ts +5 -13
  199. package/dist/esm/parser/select-parser.js +7 -3
  200. package/dist/esm/parser/table-parser.d.ts +5 -3
  201. package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
  202. package/dist/esm/parser/unary-operation-parser.js +8 -8
  203. package/dist/esm/parser/update-set-parser.d.ts +4 -1
  204. package/dist/esm/parser/update-set-parser.js +7 -2
  205. package/dist/esm/parser/value-parser.d.ts +5 -0
  206. package/dist/esm/parser/value-parser.js +1 -3
  207. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  208. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  209. package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
  210. package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
  211. package/dist/esm/query-builder/delete-query-builder.d.ts +220 -201
  212. package/dist/esm/query-builder/delete-query-builder.js +24 -30
  213. package/dist/esm/query-builder/delete-result.js +3 -0
  214. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  215. package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
  216. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  217. package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
  218. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  219. package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
  220. package/dist/esm/query-builder/function-module.d.ts +40 -12
  221. package/dist/esm/query-builder/function-module.js +42 -328
  222. package/dist/esm/query-builder/having-interface.d.ts +19 -16
  223. package/dist/esm/query-builder/insert-query-builder.d.ts +75 -26
  224. package/dist/esm/query-builder/insert-query-builder.js +25 -33
  225. package/dist/esm/query-builder/insert-result.js +3 -0
  226. package/dist/esm/query-builder/join-builder.d.ts +23 -26
  227. package/dist/esm/query-builder/join-builder.js +18 -23
  228. package/dist/esm/query-builder/no-result-error.d.ts +1 -0
  229. package/dist/esm/query-builder/no-result-error.js +3 -0
  230. package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
  231. package/dist/esm/query-builder/on-conflict-builder.js +54 -38
  232. package/dist/esm/query-builder/over-builder.d.ts +5 -0
  233. package/dist/esm/query-builder/over-builder.js +7 -0
  234. package/dist/esm/query-builder/returning-interface.d.ts +2 -2
  235. package/dist/esm/query-builder/select-query-builder.d.ts +148 -237
  236. package/dist/esm/query-builder/select-query-builder.js +337 -82
  237. package/dist/esm/query-builder/update-query-builder.d.ts +145 -213
  238. package/dist/esm/query-builder/update-query-builder.js +25 -119
  239. package/dist/esm/query-builder/update-result.js +3 -0
  240. package/dist/esm/query-builder/where-interface.d.ts +71 -184
  241. package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
  242. package/dist/esm/query-compiler/default-query-compiler.js +17 -1
  243. package/dist/esm/query-creator.d.ts +9 -2
  244. package/dist/esm/query-creator.js +1 -24
  245. package/dist/esm/query-executor/query-executor.d.ts +3 -3
  246. package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
  247. package/dist/esm/raw-builder/raw-builder.js +13 -7
  248. package/dist/esm/raw-builder/sql.d.ts +17 -9
  249. package/dist/esm/raw-builder/sql.js +8 -2
  250. package/dist/esm/schema/alter-column-builder.d.ts +5 -0
  251. package/dist/esm/schema/alter-column-builder.js +7 -0
  252. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  253. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  254. package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  255. package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
  256. package/dist/esm/schema/column-definition-builder.d.ts +6 -1
  257. package/dist/esm/schema/column-definition-builder.js +8 -1
  258. package/dist/esm/schema/create-index-builder.d.ts +51 -9
  259. package/dist/esm/schema/create-index-builder.js +17 -0
  260. package/dist/esm/schema/create-schema-builder.d.ts +5 -0
  261. package/dist/esm/schema/create-schema-builder.js +7 -0
  262. package/dist/esm/schema/create-table-builder.d.ts +3 -1
  263. package/dist/esm/schema/create-table-builder.js +3 -1
  264. package/dist/esm/schema/create-type-builder.d.ts +5 -0
  265. package/dist/esm/schema/create-type-builder.js +7 -0
  266. package/dist/esm/schema/create-view-builder.d.ts +5 -0
  267. package/dist/esm/schema/create-view-builder.js +7 -0
  268. package/dist/esm/schema/drop-index-builder.d.ts +5 -0
  269. package/dist/esm/schema/drop-index-builder.js +7 -0
  270. package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
  271. package/dist/esm/schema/drop-schema-builder.js +7 -0
  272. package/dist/esm/schema/drop-table-builder.d.ts +5 -0
  273. package/dist/esm/schema/drop-table-builder.js +7 -0
  274. package/dist/esm/schema/drop-type-builder.d.ts +5 -0
  275. package/dist/esm/schema/drop-type-builder.js +7 -0
  276. package/dist/esm/schema/drop-view-builder.d.ts +5 -0
  277. package/dist/esm/schema/drop-view-builder.js +7 -0
  278. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
  279. package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
  280. package/dist/esm/util/compilable.d.ts +1 -0
  281. package/dist/esm/util/compilable.js +4 -1
  282. package/dist/esm/util/explainable.d.ts +35 -0
  283. package/dist/esm/util/log.d.ts +2 -0
  284. package/dist/esm/util/object-utils.js +1 -1
  285. package/dist/esm/util/streamable.d.ts +29 -0
  286. package/dist/esm/util/streamable.js +2 -0
  287. package/dist/esm/util/type-utils.d.ts +1 -0
  288. package/helpers/postgres.d.ts +1 -0
  289. package/helpers/postgres.js +1 -0
  290. package/package.json +20 -9
  291. package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
  292. package/dist/cjs/query-builder/expression-builder.js +0 -107
  293. package/dist/esm/query-builder/expression-builder.d.ts +0 -126
  294. package/dist/esm/query-builder/expression-builder.js +0 -104
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.expressionBuilder = exports.createExpressionBuilder = void 0;
4
+ const select_query_builder_js_1 = require("../query-builder/select-query-builder.js");
5
+ const select_query_node_js_1 = require("../operation-node/select-query-node.js");
6
+ const table_parser_js_1 = require("../parser/table-parser.js");
7
+ const with_schema_plugin_js_1 = require("../plugin/with-schema/with-schema-plugin.js");
8
+ const query_id_js_1 = require("../util/query-id.js");
9
+ const function_module_js_1 = require("../query-builder/function-module.js");
10
+ const reference_parser_js_1 = require("../parser/reference-parser.js");
11
+ const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
12
+ const and_node_js_1 = require("../operation-node/and-node.js");
13
+ const or_node_js_1 = require("../operation-node/or-node.js");
14
+ const parens_node_js_1 = require("../operation-node/parens-node.js");
15
+ const expression_wrapper_js_1 = require("./expression-wrapper.js");
16
+ const unary_operation_parser_js_1 = require("../parser/unary-operation-parser.js");
17
+ const value_parser_js_1 = require("../parser/value-parser.js");
18
+ const noop_query_executor_js_1 = require("../query-executor/noop-query-executor.js");
19
+ const value_node_js_1 = require("../operation-node/value-node.js");
20
+ function createExpressionBuilder(executor = noop_query_executor_js_1.NOOP_QUERY_EXECUTOR) {
21
+ function unary(op, expr) {
22
+ return new expression_wrapper_js_1.ExpressionWrapper((0, unary_operation_parser_js_1.parseUnaryOperation)(op, expr));
23
+ }
24
+ return {
25
+ get fn() {
26
+ return (0, function_module_js_1.createFunctionModule)();
27
+ },
28
+ selectFrom(table) {
29
+ return new select_query_builder_js_1.SelectQueryBuilder({
30
+ queryId: (0, query_id_js_1.createQueryId)(),
31
+ executor: executor,
32
+ queryNode: select_query_node_js_1.SelectQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(table)),
33
+ });
34
+ },
35
+ ref(reference) {
36
+ return new expression_wrapper_js_1.ExpressionWrapper((0, reference_parser_js_1.parseStringReference)(reference));
37
+ },
38
+ val(value) {
39
+ return new expression_wrapper_js_1.ExpressionWrapper((0, value_parser_js_1.parseValueExpressionOrList)(value));
40
+ },
41
+ cmpr(lhs, op, rhs) {
42
+ return new expression_wrapper_js_1.ExpressionWrapper((0, binary_operation_parser_js_1.parseValueBinaryOperation)(lhs, op, rhs));
43
+ },
44
+ bxp(lhs, op, rhs) {
45
+ return new expression_wrapper_js_1.ExpressionWrapper((0, binary_operation_parser_js_1.parseValueBinaryOperation)(lhs, op, rhs));
46
+ },
47
+ unary,
48
+ not(expr) {
49
+ return unary('not', expr);
50
+ },
51
+ exists(expr) {
52
+ return unary('exists', expr);
53
+ },
54
+ neg(expr) {
55
+ return unary('-', expr);
56
+ },
57
+ and(exprs) {
58
+ if (exprs.length === 0) {
59
+ return new expression_wrapper_js_1.ExpressionWrapper(value_node_js_1.ValueNode.createImmediate(true));
60
+ }
61
+ else if (exprs.length === 1) {
62
+ return new expression_wrapper_js_1.ExpressionWrapper(exprs[0].toOperationNode());
63
+ }
64
+ let node = and_node_js_1.AndNode.create(exprs[0].toOperationNode(), exprs[1].toOperationNode());
65
+ for (let i = 2; i < exprs.length; ++i) {
66
+ node = and_node_js_1.AndNode.create(node, exprs[i].toOperationNode());
67
+ }
68
+ return new expression_wrapper_js_1.ExpressionWrapper(parens_node_js_1.ParensNode.create(node));
69
+ },
70
+ or(exprs) {
71
+ if (exprs.length === 0) {
72
+ return new expression_wrapper_js_1.ExpressionWrapper(value_node_js_1.ValueNode.createImmediate(false));
73
+ }
74
+ else if (exprs.length === 1) {
75
+ return new expression_wrapper_js_1.ExpressionWrapper(exprs[0].toOperationNode());
76
+ }
77
+ let node = or_node_js_1.OrNode.create(exprs[0].toOperationNode(), exprs[1].toOperationNode());
78
+ for (let i = 2; i < exprs.length; ++i) {
79
+ node = or_node_js_1.OrNode.create(node, exprs[i].toOperationNode());
80
+ }
81
+ return new expression_wrapper_js_1.ExpressionWrapper(parens_node_js_1.ParensNode.create(node));
82
+ },
83
+ withSchema(schema) {
84
+ return createExpressionBuilder(executor.withPluginAtFront(new with_schema_plugin_js_1.WithSchemaPlugin(schema)));
85
+ },
86
+ };
87
+ }
88
+ exports.createExpressionBuilder = createExpressionBuilder;
89
+ function expressionBuilder(_) {
90
+ return createExpressionBuilder();
91
+ }
92
+ exports.expressionBuilder = expressionBuilder;
@@ -0,0 +1,92 @@
1
+ import { AliasNode } from '../operation-node/alias-node.js';
2
+ import { OperationNode } from '../operation-node/operation-node.js';
3
+ import { AliasedExpression, Expression } from './expression.js';
4
+ export declare class ExpressionWrapper<T> implements Expression<T> {
5
+ #private;
6
+ constructor(node: OperationNode);
7
+ /** @private */
8
+ /**
9
+ * All expressions need to have this getter for complicated type-related reasons.
10
+ * Simply add this getter for your expression and always return `undefined` from it:
11
+ *
12
+ * ```ts
13
+ * class SomeExpression<T> implements Expression<T> {
14
+ * get expressionType(): T | undefined {
15
+ * return undefined
16
+ * }
17
+ * }
18
+ * ```
19
+ *
20
+ * The getter is needed to make the expression assignable to another expression only
21
+ * if the types `T` are assignable. Without this property (or some other property
22
+ * that references `T`), you could assing `Expression<string>` to `Expression<number>`.
23
+ */
24
+ get expressionType(): T | undefined;
25
+ /**
26
+ * Returns an aliased version of the expression.
27
+ *
28
+ * In addition to slapping `as "the_alias"` to the end of the SQL,
29
+ * this method also provides strict typing:
30
+ *
31
+ * ```ts
32
+ * const result = await db
33
+ * .selectFrom('person')
34
+ * .select(eb =>
35
+ * eb.cmpr('first_name', '=', 'Jennifer').as('is_jennifer')
36
+ * )
37
+ * .executeTakeFirstOrThrow()
38
+ *
39
+ * // `is_jennifer: SqlBool` field exists in the result type.
40
+ * console.log(result.is_jennifer)
41
+ * ```
42
+ *
43
+ * The generated SQL (PostgreSQL):
44
+ *
45
+ * ```ts
46
+ * select "first_name" = $1 as "is_jennifer"
47
+ * from "person"
48
+ * ```
49
+ */
50
+ as<A extends string>(alias: A): AliasedExpression<T, A>;
51
+ as<A extends string>(alias: Expression<unknown>): AliasedExpression<T, A>;
52
+ /**
53
+ * Change the output type of the raw expression.
54
+ *
55
+ * This method call doesn't change the SQL in any way. This methods simply
56
+ * returns a copy of this `ExpressionWrapper` with a new output type.
57
+ */
58
+ $castTo<T>(): ExpressionWrapper<T>;
59
+ /**
60
+ * Creates the OperationNode that describes how to compile this expression into SQL.
61
+ *
62
+ * If you are creating a custom expression, it's often easiest to use the {@link sql}
63
+ * template tag to build the node:
64
+ *
65
+ * ```ts
66
+ * class SomeExpression<T> implements Expression<T> {
67
+ * toOperationNode(): OperationNode {
68
+ * return sql`some sql here`.toOperationNode()
69
+ * }
70
+ * }
71
+ * ```
72
+ */
73
+ toOperationNode(): OperationNode;
74
+ }
75
+ export declare class AliasedExpressionWrapper<T, A extends string> implements AliasedExpression<T, A> {
76
+ #private;
77
+ constructor(expr: Expression<T>, alias: A | Expression<unknown>);
78
+ /** @private */
79
+ /**
80
+ * Returns the aliased expression.
81
+ */
82
+ get expression(): Expression<T>;
83
+ /** @private */
84
+ /**
85
+ * Returns the alias.
86
+ */
87
+ get alias(): A | Expression<unknown>;
88
+ /**
89
+ * Creates the OperationNode that describes how to compile this expression into SQL.
90
+ */
91
+ toOperationNode(): AliasNode;
92
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AliasedExpressionWrapper = exports.ExpressionWrapper = void 0;
4
+ const alias_node_js_1 = require("../operation-node/alias-node.js");
5
+ const identifier_node_js_1 = require("../operation-node/identifier-node.js");
6
+ const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
7
+ class ExpressionWrapper {
8
+ #node;
9
+ constructor(node) {
10
+ this.#node = node;
11
+ }
12
+ /** @private */
13
+ get expressionType() {
14
+ return undefined;
15
+ }
16
+ as(alias) {
17
+ return new AliasedExpressionWrapper(this, alias);
18
+ }
19
+ /**
20
+ * Change the output type of the raw expression.
21
+ *
22
+ * This method call doesn't change the SQL in any way. This methods simply
23
+ * returns a copy of this `ExpressionWrapper` with a new output type.
24
+ */
25
+ $castTo() {
26
+ return new ExpressionWrapper(this.#node);
27
+ }
28
+ toOperationNode() {
29
+ return this.#node;
30
+ }
31
+ }
32
+ exports.ExpressionWrapper = ExpressionWrapper;
33
+ class AliasedExpressionWrapper {
34
+ #expr;
35
+ #alias;
36
+ constructor(expr, alias) {
37
+ this.#expr = expr;
38
+ this.#alias = alias;
39
+ }
40
+ /** @private */
41
+ get expression() {
42
+ return this.#expr;
43
+ }
44
+ /** @private */
45
+ get alias() {
46
+ return this.#alias;
47
+ }
48
+ toOperationNode() {
49
+ return alias_node_js_1.AliasNode.create(this.#expr.toOperationNode(), (0, operation_node_source_js_1.isOperationNodeSource)(this.#alias)
50
+ ? this.#alias.toOperationNode()
51
+ : identifier_node_js_1.IdentifierNode.create(this.#alias));
52
+ }
53
+ }
54
+ exports.AliasedExpressionWrapper = AliasedExpressionWrapper;
@@ -90,7 +90,7 @@ export interface AliasedExpression<T, A extends string> extends OperationNodeSou
90
90
  /**
91
91
  * Returns the alias.
92
92
  */
93
- get alias(): A;
93
+ get alias(): A | Expression<unknown>;
94
94
  /**
95
95
  * Creates the OperationNode that describes how to compile this expression into SQL.
96
96
  */
@@ -0,0 +1,133 @@
1
+ import { Expression } from '../expression/expression.js';
2
+ import { RawBuilder } from '../raw-builder/raw-builder.js';
3
+ import { Simplify } from '../util/type-utils.js';
4
+ /**
5
+ * A postgres helper for aggregating a subquery (or other expression) into a JSONB array.
6
+ *
7
+ * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
8
+ * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
9
+ * may not parse the nested results into arrays.
10
+ *
11
+ * ### Examples
12
+ *
13
+ * ```ts
14
+ * const result = await db
15
+ * .selectFrom('person')
16
+ * .select((eb) => [
17
+ * 'id',
18
+ * jsonArrayFrom(
19
+ * eb.selectFrom('pet')
20
+ * .select(['pet.id as pet_id', 'pet.name'])
21
+ * .where('pet.owner_id', '=', 'person.id')
22
+ * .orderBy('pet.name')
23
+ * ).as('pets')
24
+ * ])
25
+ * .execute()
26
+ *
27
+ * result[0].id
28
+ * result[0].pets[0].pet_id
29
+ * result[0].pets[0].name
30
+ * ```
31
+ *
32
+ * The generated SQL (PostgreSQL):
33
+ *
34
+ * ```sql
35
+ * select "id", (
36
+ * select coalesce(jsonb_agg(agg), '[]') from (
37
+ * select "pet"."id" as "pet_id", "pet"."name"
38
+ * from "pet"
39
+ * where "pet"."owner_id" = "person"."id"
40
+ * order by "pet"."name"
41
+ * ) as agg
42
+ * ) as "pets"
43
+ * from "person"
44
+ * ```
45
+ */
46
+ export declare function jsonArrayFrom<O>(expr: Expression<O>): RawBuilder<Simplify<O>[]>;
47
+ /**
48
+ * A postgres helper for turning a subquery (or other expression) into a JSONB object.
49
+ *
50
+ * The subquery must only return one row.
51
+ *
52
+ * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
53
+ * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
54
+ * may not parse the nested results into objects.
55
+ *
56
+ * ### Examples
57
+ *
58
+ * ```ts
59
+ * const result = await db
60
+ * .selectFrom('person')
61
+ * .select((eb) => [
62
+ * 'id',
63
+ * jsonObjectFrom(
64
+ * eb.selectFrom('pet')
65
+ * .select(['pet.id as pet_id', 'pet.name'])
66
+ * .where('pet.owner_id', '=', 'person.id')
67
+ * .where('pet.is_favorite', '=', true)
68
+ * ).as('favorite_pet')
69
+ * ])
70
+ * .execute()
71
+ *
72
+ * result[0].id
73
+ * result[0].favorite_pet.pet_id
74
+ * result[0].favorite_pet.name
75
+ * ```
76
+ *
77
+ * The generated SQL (PostgreSQL):
78
+ *
79
+ * ```sql
80
+ * select "id", (
81
+ * select to_jsonb(obj) from (
82
+ * select "pet"."id" as "pet_id", "pet"."name"
83
+ * from "pet"
84
+ * where "pet"."owner_id" = "person"."id"
85
+ * and "pet"."is_favorite" = $1
86
+ * ) as obj
87
+ * ) as "favorite_pet"
88
+ * from "person"
89
+ * ```
90
+ */
91
+ export declare function jsonObjectFrom<O>(expr: Expression<O>): RawBuilder<Simplify<O>>;
92
+ /**
93
+ * The PostgreSQL `jsonb_build_object` function.
94
+ *
95
+ * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
96
+ * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
97
+ * may not parse the nested results into objects.
98
+ *
99
+ * ### Examples
100
+ *
101
+ * ```ts
102
+ * const result = await db
103
+ * .selectFrom('person')
104
+ * .select((eb) => [
105
+ * 'id',
106
+ * jsonbBuildObject({
107
+ * first: eb.ref('first_name'),
108
+ * last: eb.ref('last_name'),
109
+ * full: sql<string>`first_name || ' ' || last_name`
110
+ * }).as('name')
111
+ * ])
112
+ * .execute()
113
+ *
114
+ * result[0].id
115
+ * result[0].name.first
116
+ * result[0].name.last
117
+ * result[0].name.full
118
+ * ```
119
+ *
120
+ * The generated SQL (PostgreSQL):
121
+ *
122
+ * ```sql
123
+ * select "id", jsonb_build_object(
124
+ * 'first', first_name,
125
+ * 'last', last_name,
126
+ * 'full', first_name || ' ' || last_name
127
+ * ) as "name"
128
+ * from "person"
129
+ * ```
130
+ */
131
+ export declare function jsonbBuildObject<O extends Record<string, Expression<unknown>>>(obj: O): RawBuilder<Simplify<{
132
+ [K in keyof O]: O[K] extends Expression<infer V> ? V : never;
133
+ }>>;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsonbBuildObject = exports.jsonObjectFrom = exports.jsonArrayFrom = void 0;
4
+ const sql_js_1 = require("../raw-builder/sql.js");
5
+ /**
6
+ * A postgres helper for aggregating a subquery (or other expression) into a JSONB array.
7
+ *
8
+ * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
9
+ * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
10
+ * may not parse the nested results into arrays.
11
+ *
12
+ * ### Examples
13
+ *
14
+ * ```ts
15
+ * const result = await db
16
+ * .selectFrom('person')
17
+ * .select((eb) => [
18
+ * 'id',
19
+ * jsonArrayFrom(
20
+ * eb.selectFrom('pet')
21
+ * .select(['pet.id as pet_id', 'pet.name'])
22
+ * .where('pet.owner_id', '=', 'person.id')
23
+ * .orderBy('pet.name')
24
+ * ).as('pets')
25
+ * ])
26
+ * .execute()
27
+ *
28
+ * result[0].id
29
+ * result[0].pets[0].pet_id
30
+ * result[0].pets[0].name
31
+ * ```
32
+ *
33
+ * The generated SQL (PostgreSQL):
34
+ *
35
+ * ```sql
36
+ * select "id", (
37
+ * select coalesce(jsonb_agg(agg), '[]') from (
38
+ * select "pet"."id" as "pet_id", "pet"."name"
39
+ * from "pet"
40
+ * where "pet"."owner_id" = "person"."id"
41
+ * order by "pet"."name"
42
+ * ) as agg
43
+ * ) as "pets"
44
+ * from "person"
45
+ * ```
46
+ */
47
+ function jsonArrayFrom(expr) {
48
+ return (0, sql_js_1.sql) `(select coalesce(jsonb_agg(agg), '[]') from ${expr} as agg)`;
49
+ }
50
+ exports.jsonArrayFrom = jsonArrayFrom;
51
+ /**
52
+ * A postgres helper for turning a subquery (or other expression) into a JSONB object.
53
+ *
54
+ * The subquery must only return one row.
55
+ *
56
+ * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
57
+ * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
58
+ * may not parse the nested results into objects.
59
+ *
60
+ * ### Examples
61
+ *
62
+ * ```ts
63
+ * const result = await db
64
+ * .selectFrom('person')
65
+ * .select((eb) => [
66
+ * 'id',
67
+ * jsonObjectFrom(
68
+ * eb.selectFrom('pet')
69
+ * .select(['pet.id as pet_id', 'pet.name'])
70
+ * .where('pet.owner_id', '=', 'person.id')
71
+ * .where('pet.is_favorite', '=', true)
72
+ * ).as('favorite_pet')
73
+ * ])
74
+ * .execute()
75
+ *
76
+ * result[0].id
77
+ * result[0].favorite_pet.pet_id
78
+ * result[0].favorite_pet.name
79
+ * ```
80
+ *
81
+ * The generated SQL (PostgreSQL):
82
+ *
83
+ * ```sql
84
+ * select "id", (
85
+ * select to_jsonb(obj) from (
86
+ * select "pet"."id" as "pet_id", "pet"."name"
87
+ * from "pet"
88
+ * where "pet"."owner_id" = "person"."id"
89
+ * and "pet"."is_favorite" = $1
90
+ * ) as obj
91
+ * ) as "favorite_pet"
92
+ * from "person"
93
+ * ```
94
+ */
95
+ function jsonObjectFrom(expr) {
96
+ return (0, sql_js_1.sql) `(select to_jsonb(obj) from ${expr} as obj)`;
97
+ }
98
+ exports.jsonObjectFrom = jsonObjectFrom;
99
+ /**
100
+ * The PostgreSQL `jsonb_build_object` function.
101
+ *
102
+ * NOTE: This helper is only guaranteed to fully work with the built-in `PostgresDialect`.
103
+ * While the produced SQL is compatibe with all PostgreSQL databases, some 3rd party dialects
104
+ * may not parse the nested results into objects.
105
+ *
106
+ * ### Examples
107
+ *
108
+ * ```ts
109
+ * const result = await db
110
+ * .selectFrom('person')
111
+ * .select((eb) => [
112
+ * 'id',
113
+ * jsonbBuildObject({
114
+ * first: eb.ref('first_name'),
115
+ * last: eb.ref('last_name'),
116
+ * full: sql<string>`first_name || ' ' || last_name`
117
+ * }).as('name')
118
+ * ])
119
+ * .execute()
120
+ *
121
+ * result[0].id
122
+ * result[0].name.first
123
+ * result[0].name.last
124
+ * result[0].name.full
125
+ * ```
126
+ *
127
+ * The generated SQL (PostgreSQL):
128
+ *
129
+ * ```sql
130
+ * select "id", jsonb_build_object(
131
+ * 'first', first_name,
132
+ * 'last', last_name,
133
+ * 'full', first_name || ' ' || last_name
134
+ * ) as "name"
135
+ * from "person"
136
+ * ```
137
+ */
138
+ function jsonbBuildObject(obj) {
139
+ return (0, sql_js_1.sql) `jsonb_build_object(${sql_js_1.sql.join(Object.keys(obj).flatMap((k) => [sql_js_1.sql.lit(k), obj[k]]))})`;
140
+ }
141
+ exports.jsonbBuildObject = jsonbBuildObject;
@@ -1,6 +1,7 @@
1
1
  export * from './kysely.js';
2
2
  export * from './query-creator.js';
3
3
  export * from './expression/expression.js';
4
+ export { ExpressionBuilder, expressionBuilder, } from './expression/expression-builder.js';
4
5
  export * from './query-builder/where-interface.js';
5
6
  export * from './query-builder/returning-interface.js';
6
7
  export * from './query-builder/having-interface.js';
@@ -10,7 +11,6 @@ export * from './query-builder/update-query-builder.js';
10
11
  export * from './query-builder/delete-query-builder.js';
11
12
  export * from './query-builder/no-result-error.js';
12
13
  export * from './query-builder/join-builder.js';
13
- export * from './query-builder/expression-builder.js';
14
14
  export * from './query-builder/function-module.js';
15
15
  export * from './query-builder/insert-result.js';
16
16
  export * from './query-builder/delete-result.js';
@@ -163,11 +163,12 @@ export * from './operation-node/using-node.js';
163
163
  export * from './util/column-type.js';
164
164
  export * from './util/compilable.js';
165
165
  export * from './util/explainable.js';
166
+ export * from './util/streamable.js';
166
167
  export * from './util/log.js';
167
- export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, AnySelectQueryBuilder, Equals, UnknownRow, } from './util/type-utils.js';
168
+ export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, AnySelectQueryBuilder, Equals, UnknownRow, Simplify, SqlBool, } from './util/type-utils.js';
168
169
  export * from './util/infer-result.js';
169
170
  export { logOnce } from './util/log-once.js';
170
- export { SelectExpression, SelectExpressionOrList, Selection, } from './parser/select-parser.js';
171
+ export { SelectExpression, SelectArg, Selection, } from './parser/select-parser.js';
171
172
  export { ReferenceExpression, ReferenceExpressionOrList, SimpleReferenceExpression, StringReference, ExtractTypeFromStringReference, ExtractTypeFromReferenceExpression, } from './parser/reference-parser.js';
172
173
  export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
173
174
  export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
package/dist/cjs/index.js CHANGED
@@ -14,10 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.logOnce = void 0;
17
+ exports.logOnce = exports.expressionBuilder = void 0;
18
18
  __exportStar(require("./kysely.js"), exports);
19
19
  __exportStar(require("./query-creator.js"), exports);
20
20
  __exportStar(require("./expression/expression.js"), exports);
21
+ var expression_builder_js_1 = require("./expression/expression-builder.js");
22
+ Object.defineProperty(exports, "expressionBuilder", { enumerable: true, get: function () { return expression_builder_js_1.expressionBuilder; } });
21
23
  __exportStar(require("./query-builder/where-interface.js"), exports);
22
24
  __exportStar(require("./query-builder/returning-interface.js"), exports);
23
25
  __exportStar(require("./query-builder/having-interface.js"), exports);
@@ -27,7 +29,6 @@ __exportStar(require("./query-builder/update-query-builder.js"), exports);
27
29
  __exportStar(require("./query-builder/delete-query-builder.js"), exports);
28
30
  __exportStar(require("./query-builder/no-result-error.js"), exports);
29
31
  __exportStar(require("./query-builder/join-builder.js"), exports);
30
- __exportStar(require("./query-builder/expression-builder.js"), exports);
31
32
  __exportStar(require("./query-builder/function-module.js"), exports);
32
33
  __exportStar(require("./query-builder/insert-result.js"), exports);
33
34
  __exportStar(require("./query-builder/delete-result.js"), exports);
@@ -180,6 +181,7 @@ __exportStar(require("./operation-node/using-node.js"), exports);
180
181
  __exportStar(require("./util/column-type.js"), exports);
181
182
  __exportStar(require("./util/compilable.js"), exports);
182
183
  __exportStar(require("./util/explainable.js"), exports);
184
+ __exportStar(require("./util/streamable.js"), exports);
183
185
  __exportStar(require("./util/log.js"), exports);
184
186
  __exportStar(require("./util/infer-result.js"), exports);
185
187
  var log_once_js_1 = require("./util/log-once.js");
@@ -9,6 +9,10 @@ import { Driver, IsolationLevel } from './driver/driver.js';
9
9
  import { FunctionModule } from './query-builder/function-module.js';
10
10
  import { LogConfig } from './util/log.js';
11
11
  import { QueryExecutorProvider } from './query-executor/query-executor-provider.js';
12
+ import { QueryResult } from './driver/database-connection.js';
13
+ import { CompiledQuery } from './query-compiler/compiled-query.js';
14
+ import { QueryId } from './util/query-id.js';
15
+ import { Compilable } from './util/compilable.js';
12
16
  /**
13
17
  * The main Kysely class.
14
18
  *
@@ -225,6 +229,12 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
225
229
  * @private
226
230
  */
227
231
  getExecutor(): QueryExecutor;
232
+ /**
233
+ * Executes a given compiled query or query builder.
234
+ *
235
+ * See {@link https://github.com/koskimas/kysely/blob/master/site/docs/recipes/splitting-build-compile-and-execute-code.md#execute-compiled-queries splitting build, compile and execute code recipe} for more information.
236
+ */
237
+ executeQuery<R>(query: CompiledQuery<R> | Compilable<R>, queryId?: QueryId): Promise<QueryResult<R>>;
228
238
  }
229
239
  export declare class Transaction<DB> extends Kysely<DB> {
230
240
  #private;
@@ -13,6 +13,8 @@ const driver_js_1 = require("./driver/driver.js");
13
13
  const prevent_await_js_1 = require("./util/prevent-await.js");
14
14
  const function_module_js_1 = require("./query-builder/function-module.js");
15
15
  const log_js_1 = require("./util/log.js");
16
+ const query_id_js_1 = require("./util/query-id.js");
17
+ const compilable_js_1 = require("./util/compilable.js");
16
18
  /**
17
19
  * The main Kysely class.
18
20
  *
@@ -135,7 +137,7 @@ class Kysely extends query_creator_js_1.QueryCreator {
135
137
  * ```
136
138
  */
137
139
  get fn() {
138
- return new function_module_js_1.FunctionModule();
140
+ return (0, function_module_js_1.createFunctionModule)();
139
141
  }
140
142
  /**
141
143
  * Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.
@@ -284,6 +286,15 @@ class Kysely extends query_creator_js_1.QueryCreator {
284
286
  getExecutor() {
285
287
  return this.#props.executor;
286
288
  }
289
+ /**
290
+ * Executes a given compiled query or query builder.
291
+ *
292
+ * See {@link https://github.com/koskimas/kysely/blob/master/site/docs/recipes/splitting-build-compile-and-execute-code.md#execute-compiled-queries splitting build, compile and execute code recipe} for more information.
293
+ */
294
+ executeQuery(query, queryId = (0, query_id_js_1.createQueryId)()) {
295
+ const compiledQuery = (0, compilable_js_1.isCompilable)(query) ? query.compile() : query;
296
+ return this.getExecutor().executeQuery(compiledQuery, queryId);
297
+ }
287
298
  }
288
299
  exports.Kysely = Kysely;
289
300
  class Transaction extends Kysely {
@@ -22,8 +22,11 @@ export declare class FileMigrationProvider implements MigrationProvider {
22
22
  * Returns all migrations, old and new.
23
23
  *
24
24
  * For example if you have your migrations in a folder as separate files,
25
- * you can use the {@link FileMigrationProvider} that implements this
26
- * method to return all migrations in a folder.
25
+ * you can implement this method to return all migration in that folder
26
+ * as {@link Migration} objects.
27
+ *
28
+ * Kysely already has a built-in {@link FileMigrationProvider} for node.js
29
+ * that does exactly that.
27
30
  *
28
31
  * The keys of the returned object are migration names and values are the
29
32
  * migrations. The order of the migrations is determined by the alphabetical
@@ -258,8 +258,11 @@ export interface MigrationProvider {
258
258
  * Returns all migrations, old and new.
259
259
  *
260
260
  * For example if you have your migrations in a folder as separate files,
261
- * you can use the {@link FileMigrationProvider} that implements this
262
- * method to return all migrations in a folder.
261
+ * you can implement this method to return all migration in that folder
262
+ * as {@link Migration} objects.
263
+ *
264
+ * Kysely already has a built-in {@link FileMigrationProvider} for node.js
265
+ * that does exactly that.
263
266
  *
264
267
  * The keys of the returned object are migration names and values are the
265
268
  * migrations. The order of the migrations is determined by the alphabetical