kysely 0.22.0 → 0.23.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 (326) hide show
  1. package/CONTRIBUTING.md +70 -0
  2. package/README.md +25 -2
  3. package/dist/cjs/dialect/database-introspector.d.ts +4 -0
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +6 -3
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-driver.js +7 -2
  7. package/dist/cjs/dialect/postgres/postgres-introspector.js +8 -0
  8. package/dist/cjs/dialect/sqlite/sqlite-driver.js +4 -3
  9. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
  10. package/dist/cjs/driver/database-connection.d.ts +6 -2
  11. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +2 -3
  12. package/dist/cjs/dynamic/dynamic-reference-builder.js +1 -1
  13. package/dist/cjs/expression/expression.d.ts +100 -0
  14. package/dist/cjs/expression/expression.js +16 -0
  15. package/dist/cjs/index.d.ts +10 -6
  16. package/dist/cjs/index.js +8 -2
  17. package/dist/cjs/migration/file-migration-provider.js +5 -3
  18. package/dist/cjs/operation-node/aggregate-function-node.d.ts +7 -4
  19. package/dist/cjs/operation-node/aggregate-function-node.js +17 -0
  20. package/dist/cjs/operation-node/alias-node.d.ts +3 -11
  21. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
  22. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
  23. package/dist/cjs/operation-node/alter-table-node.js +9 -1
  24. package/dist/cjs/operation-node/and-node.d.ts +3 -4
  25. package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
  26. package/dist/cjs/operation-node/binary-operation-node.js +20 -0
  27. package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
  28. package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
  29. package/dist/cjs/operation-node/column-definition-node.js +16 -0
  30. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  31. package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
  32. package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
  33. package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
  34. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/create-type-node.js +1 -2
  36. package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
  37. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
  38. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/drop-type-node.js +1 -2
  40. package/dist/cjs/operation-node/explain-node.d.ts +2 -4
  41. package/dist/cjs/operation-node/explain-node.js +1 -1
  42. package/dist/cjs/operation-node/from-node.d.ts +3 -4
  43. package/dist/cjs/operation-node/generated-node.d.ts +2 -3
  44. package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
  45. package/dist/cjs/operation-node/having-node.d.ts +3 -4
  46. package/dist/cjs/operation-node/having-node.js +4 -4
  47. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -5
  48. package/dist/cjs/operation-node/join-node.d.ts +5 -9
  49. package/dist/cjs/operation-node/join-node.js +6 -6
  50. package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
  51. package/dist/cjs/operation-node/on-conflict-node.js +12 -12
  52. package/dist/cjs/operation-node/on-node.d.ts +3 -4
  53. package/dist/cjs/operation-node/on-node.js +4 -4
  54. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -2
  55. package/dist/cjs/operation-node/operation-node-transformer.js +22 -15
  56. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
  57. package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
  58. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  59. package/dist/cjs/operation-node/operator-node.d.ts +5 -3
  60. package/dist/cjs/operation-node/operator-node.js +3 -5
  61. package/dist/cjs/operation-node/or-node.d.ts +3 -4
  62. package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
  63. package/dist/cjs/operation-node/parens-node.d.ts +2 -3
  64. package/dist/cjs/operation-node/partition-by-item-node.d.ts +3 -4
  65. package/dist/cjs/operation-node/query-node.d.ts +2 -3
  66. package/dist/cjs/operation-node/query-node.js +6 -6
  67. package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
  68. package/dist/cjs/operation-node/select-modifier-node.js +1 -1
  69. package/dist/cjs/operation-node/select-query-node.d.ts +5 -6
  70. package/dist/cjs/operation-node/select-query-node.js +10 -10
  71. package/dist/cjs/operation-node/selection-node.d.ts +2 -3
  72. package/dist/cjs/operation-node/set-operation-node.d.ts +2 -5
  73. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
  74. package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
  75. package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
  76. package/dist/cjs/operation-node/unary-operation-node.js +19 -0
  77. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  78. package/dist/cjs/operation-node/value-list-node.d.ts +2 -9
  79. package/dist/cjs/operation-node/where-node.d.ts +3 -4
  80. package/dist/cjs/operation-node/where-node.js +4 -4
  81. package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
  82. package/dist/cjs/parser/binary-operation-parser.js +99 -0
  83. package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
  84. package/dist/cjs/parser/coalesce-parser.js +11 -0
  85. package/dist/cjs/parser/data-type-parser.d.ts +5 -5
  86. package/dist/cjs/parser/default-value-parser.d.ts +4 -5
  87. package/dist/cjs/parser/default-value-parser.js +2 -2
  88. package/dist/cjs/parser/expression-parser.d.ts +10 -0
  89. package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
  90. package/dist/cjs/parser/identifier-parser.d.ts +2 -0
  91. package/dist/cjs/parser/identifier-parser.js +23 -0
  92. package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
  93. package/dist/cjs/parser/insert-values-parser.js +2 -2
  94. package/dist/cjs/parser/join-parser.js +2 -2
  95. package/dist/cjs/parser/order-by-parser.d.ts +2 -2
  96. package/dist/cjs/parser/reference-parser.d.ts +14 -14
  97. package/dist/cjs/parser/reference-parser.js +12 -9
  98. package/dist/cjs/parser/select-parser.d.ts +6 -7
  99. package/dist/cjs/parser/select-parser.js +2 -2
  100. package/dist/cjs/parser/set-operation-parser.d.ts +2 -4
  101. package/dist/cjs/parser/table-parser.d.ts +11 -12
  102. package/dist/cjs/parser/table-parser.js +2 -2
  103. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
  104. package/dist/cjs/parser/unary-operation-parser.js +17 -0
  105. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  106. package/dist/cjs/parser/value-parser.d.ts +5 -9
  107. package/dist/cjs/parser/value-parser.js +4 -4
  108. package/dist/cjs/parser/with-parser.d.ts +3 -4
  109. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  110. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +245 -14
  111. package/dist/cjs/query-builder/aggregate-function-builder.js +164 -12
  112. package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
  113. package/dist/cjs/query-builder/delete-query-builder.js +19 -16
  114. package/dist/cjs/query-builder/function-module.d.ts +123 -22
  115. package/dist/cjs/query-builder/function-module.js +91 -48
  116. package/dist/cjs/query-builder/having-interface.d.ts +9 -8
  117. package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
  118. package/dist/cjs/query-builder/insert-query-builder.js +11 -9
  119. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  120. package/dist/cjs/query-builder/insert-result.js +12 -1
  121. package/dist/cjs/query-builder/join-builder.d.ts +9 -8
  122. package/dist/cjs/query-builder/join-builder.js +10 -9
  123. package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
  124. package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
  125. package/dist/cjs/query-builder/select-query-builder.d.ts +82 -51
  126. package/dist/cjs/query-builder/select-query-builder.js +39 -37
  127. package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
  128. package/dist/cjs/query-builder/update-query-builder.js +19 -16
  129. package/dist/cjs/query-builder/where-interface.d.ts +12 -11
  130. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  131. package/dist/cjs/query-compiler/default-query-compiler.d.ts +5 -3
  132. package/dist/cjs/query-compiler/default-query-compiler.js +37 -33
  133. package/dist/cjs/query-executor/query-executor-base.js +16 -1
  134. package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
  135. package/dist/cjs/raw-builder/raw-builder.js +24 -14
  136. package/dist/cjs/raw-builder/sql.d.ts +4 -4
  137. package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
  138. package/dist/cjs/schema/alter-column-builder.js +55 -0
  139. package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
  140. package/dist/cjs/schema/alter-table-builder.js +65 -280
  141. package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
  142. package/dist/cjs/schema/column-definition-builder.js +189 -0
  143. package/dist/cjs/schema/create-index-builder.d.ts +2 -2
  144. package/dist/cjs/schema/create-table-builder.d.ts +38 -5
  145. package/dist/cjs/schema/create-table-builder.js +36 -1
  146. package/dist/cjs/schema/create-view-builder.d.ts +3 -2
  147. package/dist/cjs/schema/schema.d.ts +2 -2
  148. package/dist/cjs/schema/schema.js +6 -5
  149. package/dist/cjs/util/compilable.d.ts +2 -2
  150. package/dist/cjs/util/explainable.d.ts +2 -2
  151. package/dist/cjs/util/infer-result.d.ts +46 -0
  152. package/dist/cjs/util/infer-result.js +2 -0
  153. package/dist/cjs/util/log-once.d.ts +5 -0
  154. package/dist/cjs/util/log-once.js +16 -0
  155. package/dist/cjs/util/object-utils.d.ts +1 -0
  156. package/dist/cjs/util/object-utils.js +5 -1
  157. package/dist/cjs/util/type-utils.d.ts +3 -17
  158. package/dist/esm/dialect/database-introspector.d.ts +4 -0
  159. package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
  160. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  161. package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
  162. package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
  163. package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
  164. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  165. package/dist/esm/driver/database-connection.d.ts +6 -2
  166. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
  167. package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
  168. package/dist/esm/expression/expression.d.ts +100 -0
  169. package/dist/esm/expression/expression.js +12 -0
  170. package/dist/esm/index.d.ts +10 -6
  171. package/dist/esm/index.js +6 -2
  172. package/dist/esm/migration/file-migration-provider.js +5 -3
  173. package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
  174. package/dist/esm/operation-node/aggregate-function-node.js +17 -0
  175. package/dist/esm/operation-node/alias-node.d.ts +3 -11
  176. package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
  177. package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
  178. package/dist/esm/operation-node/alter-table-node.js +9 -1
  179. package/dist/esm/operation-node/and-node.d.ts +3 -4
  180. package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
  181. package/dist/esm/operation-node/binary-operation-node.js +18 -0
  182. package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
  183. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  184. package/dist/esm/operation-node/column-definition-node.js +16 -0
  185. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  186. package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
  187. package/dist/esm/operation-node/create-index-node.d.ts +1 -3
  188. package/dist/esm/operation-node/create-table-node.d.ts +4 -5
  189. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  190. package/dist/esm/operation-node/create-type-node.js +1 -2
  191. package/dist/esm/operation-node/default-value-node.d.ts +2 -4
  192. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  193. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  194. package/dist/esm/operation-node/drop-type-node.js +1 -2
  195. package/dist/esm/operation-node/explain-node.d.ts +2 -4
  196. package/dist/esm/operation-node/explain-node.js +1 -1
  197. package/dist/esm/operation-node/from-node.d.ts +3 -4
  198. package/dist/esm/operation-node/generated-node.d.ts +2 -3
  199. package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
  200. package/dist/esm/operation-node/having-node.d.ts +3 -4
  201. package/dist/esm/operation-node/having-node.js +4 -4
  202. package/dist/esm/operation-node/insert-query-node.d.ts +1 -5
  203. package/dist/esm/operation-node/join-node.d.ts +5 -9
  204. package/dist/esm/operation-node/join-node.js +6 -6
  205. package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
  206. package/dist/esm/operation-node/on-conflict-node.js +12 -12
  207. package/dist/esm/operation-node/on-node.d.ts +3 -4
  208. package/dist/esm/operation-node/on-node.js +4 -4
  209. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
  210. package/dist/esm/operation-node/operation-node-transformer.js +22 -15
  211. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
  212. package/dist/esm/operation-node/operation-node-visitor.js +2 -1
  213. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  214. package/dist/esm/operation-node/operator-node.d.ts +5 -3
  215. package/dist/esm/operation-node/operator-node.js +2 -4
  216. package/dist/esm/operation-node/or-node.d.ts +3 -4
  217. package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
  218. package/dist/esm/operation-node/parens-node.d.ts +2 -3
  219. package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
  220. package/dist/esm/operation-node/query-node.d.ts +2 -3
  221. package/dist/esm/operation-node/query-node.js +6 -6
  222. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
  223. package/dist/esm/operation-node/select-modifier-node.js +1 -1
  224. package/dist/esm/operation-node/select-query-node.d.ts +5 -6
  225. package/dist/esm/operation-node/select-query-node.js +10 -10
  226. package/dist/esm/operation-node/selection-node.d.ts +2 -3
  227. package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
  228. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
  229. package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
  230. package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
  231. package/dist/esm/operation-node/unary-operation-node.js +17 -0
  232. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  233. package/dist/esm/operation-node/value-list-node.d.ts +2 -9
  234. package/dist/esm/operation-node/where-node.d.ts +3 -4
  235. package/dist/esm/operation-node/where-node.js +4 -4
  236. package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
  237. package/dist/esm/parser/binary-operation-parser.js +92 -0
  238. package/dist/esm/parser/coalesce-parser.d.ts +4 -0
  239. package/dist/esm/parser/coalesce-parser.js +8 -0
  240. package/dist/esm/parser/data-type-parser.d.ts +5 -5
  241. package/dist/esm/parser/default-value-parser.d.ts +4 -5
  242. package/dist/esm/parser/default-value-parser.js +2 -2
  243. package/dist/esm/parser/expression-parser.d.ts +10 -0
  244. package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
  245. package/dist/esm/parser/identifier-parser.d.ts +2 -0
  246. package/dist/esm/parser/identifier-parser.js +20 -0
  247. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  248. package/dist/esm/parser/insert-values-parser.js +2 -2
  249. package/dist/esm/parser/join-parser.js +2 -2
  250. package/dist/esm/parser/order-by-parser.d.ts +2 -2
  251. package/dist/esm/parser/reference-parser.d.ts +14 -14
  252. package/dist/esm/parser/reference-parser.js +10 -8
  253. package/dist/esm/parser/select-parser.d.ts +6 -7
  254. package/dist/esm/parser/select-parser.js +2 -2
  255. package/dist/esm/parser/set-operation-parser.d.ts +2 -4
  256. package/dist/esm/parser/table-parser.d.ts +11 -12
  257. package/dist/esm/parser/table-parser.js +2 -2
  258. package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
  259. package/dist/esm/parser/unary-operation-parser.js +13 -0
  260. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  261. package/dist/esm/parser/value-parser.d.ts +5 -9
  262. package/dist/esm/parser/value-parser.js +4 -4
  263. package/dist/esm/parser/with-parser.d.ts +3 -4
  264. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  265. package/dist/esm/query-builder/aggregate-function-builder.d.ts +245 -14
  266. package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
  267. package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
  268. package/dist/esm/query-builder/delete-query-builder.js +19 -16
  269. package/dist/esm/query-builder/function-module.d.ts +123 -22
  270. package/dist/esm/query-builder/function-module.js +92 -49
  271. package/dist/esm/query-builder/having-interface.d.ts +9 -8
  272. package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
  273. package/dist/esm/query-builder/insert-query-builder.js +11 -9
  274. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  275. package/dist/esm/query-builder/insert-result.js +12 -1
  276. package/dist/esm/query-builder/join-builder.d.ts +9 -8
  277. package/dist/esm/query-builder/join-builder.js +10 -9
  278. package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
  279. package/dist/esm/query-builder/on-conflict-builder.js +18 -17
  280. package/dist/esm/query-builder/select-query-builder.d.ts +82 -51
  281. package/dist/esm/query-builder/select-query-builder.js +38 -36
  282. package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
  283. package/dist/esm/query-builder/update-query-builder.js +19 -16
  284. package/dist/esm/query-builder/where-interface.d.ts +12 -11
  285. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  286. package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -3
  287. package/dist/esm/query-compiler/default-query-compiler.js +38 -34
  288. package/dist/esm/query-executor/query-executor-base.js +16 -1
  289. package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
  290. package/dist/esm/raw-builder/raw-builder.js +23 -14
  291. package/dist/esm/raw-builder/sql.d.ts +4 -4
  292. package/dist/esm/schema/alter-column-builder.d.ts +28 -0
  293. package/dist/esm/schema/alter-column-builder.js +51 -0
  294. package/dist/esm/schema/alter-table-builder.d.ts +39 -341
  295. package/dist/esm/schema/alter-table-builder.js +61 -274
  296. package/dist/esm/schema/column-definition-builder.d.ts +43 -155
  297. package/dist/esm/schema/column-definition-builder.js +189 -0
  298. package/dist/esm/schema/create-index-builder.d.ts +2 -2
  299. package/dist/esm/schema/create-table-builder.d.ts +38 -5
  300. package/dist/esm/schema/create-table-builder.js +36 -1
  301. package/dist/esm/schema/create-view-builder.d.ts +3 -2
  302. package/dist/esm/schema/schema.d.ts +2 -2
  303. package/dist/esm/schema/schema.js +6 -5
  304. package/dist/esm/util/compilable.d.ts +2 -2
  305. package/dist/esm/util/explainable.d.ts +2 -2
  306. package/dist/esm/util/infer-result.d.ts +46 -0
  307. package/dist/esm/util/infer-result.js +2 -0
  308. package/dist/esm/util/log-once.d.ts +5 -0
  309. package/dist/esm/util/log-once.js +13 -0
  310. package/dist/esm/util/object-utils.d.ts +1 -0
  311. package/dist/esm/util/object-utils.js +3 -0
  312. package/dist/esm/util/type-utils.d.ts +3 -17
  313. package/package.json +1 -1
  314. package/dist/cjs/operation-node/filter-node.d.ts +0 -18
  315. package/dist/cjs/operation-node/filter-node.js +0 -20
  316. package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
  317. package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
  318. package/dist/cjs/parser/filter-parser.d.ts +0 -24
  319. package/dist/cjs/parser/filter-parser.js +0 -109
  320. package/dist/esm/operation-node/filter-node.d.ts +0 -18
  321. package/dist/esm/operation-node/filter-node.js +0 -18
  322. package/dist/esm/operation-node/operation-node-utils.d.ts +0 -18
  323. package/dist/esm/operation-node/operation-node-utils.js +0 -2
  324. package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
  325. package/dist/esm/parser/filter-parser.d.ts +0 -24
  326. package/dist/esm/parser/filter-parser.js +0 -100
@@ -214,7 +214,7 @@ export class CreateTableBuilder {
214
214
  * ```ts
215
215
  * db.schema.createTable('person')
216
216
  * .modifyFront(sql`global temporary`)
217
- * .addColumn('id', 'integer', col => col => primaryKey())
217
+ * .addColumn('id', 'integer', col => col.primaryKey())
218
218
  * .addColumn('first_name', 'varchar(64)', col => col.notNull())
219
219
  * .addColumn('last_name', 'varchar(64), col => col.notNull())
220
220
  * .execute()
@@ -268,6 +268,41 @@ export class CreateTableBuilder {
268
268
  createTableNode: CreateTableNode.cloneWithEndModifier(this.#props.createTableNode, modifier.toOperationNode()),
269
269
  });
270
270
  }
271
+ /**
272
+ * Calls the given function passing `this` as the only argument.
273
+ *
274
+ * ### Examples
275
+ *
276
+ * ```ts
277
+ * db.schema
278
+ * .createTable('test')
279
+ * .call((builder) => builder.addColumn('id', 'integer'))
280
+ * .execute()
281
+ * ```
282
+ *
283
+ * ```ts
284
+ * const addDefaultColumns = <T extends string, C extends string = never>(
285
+ * builder: CreateTableBuilder<T, C>
286
+ * ) => {
287
+ * return builder
288
+ * .addColumn('id', 'integer', (col) => col.notNull())
289
+ * .addColumn('created_at', 'date', (col) =>
290
+ * col.notNull().defaultTo(sql`now()`)
291
+ * )
292
+ * .addColumn('updated_at', 'date', (col) =>
293
+ * col.notNull().defaultTo(sql`now()`)
294
+ * )
295
+ * }
296
+ *
297
+ * db.schema
298
+ * .createTable('test')
299
+ * .call(addDefaultColumns)
300
+ * .execute()
301
+ * ```
302
+ */
303
+ call(func) {
304
+ return func(this);
305
+ }
271
306
  toOperationNode() {
272
307
  return this.#props.executor.transformQuery(this.#props.createTableNode, this.#props.queryId);
273
308
  }
@@ -4,7 +4,8 @@ import { Compilable } from '../util/compilable.js';
4
4
  import { QueryExecutor } from '../query-executor/query-executor.js';
5
5
  import { QueryId } from '../util/query-id.js';
6
6
  import { CreateViewNode } from '../operation-node/create-view-node.js';
7
- import { AnyRawBuilder, AnySelectQueryBuilder } from '../util/type-utils.js';
7
+ import { AnySelectQueryBuilder } from '../util/type-utils.js';
8
+ import { RawBuilder } from '../raw-builder/raw-builder.js';
8
9
  export declare class CreateViewBuilder implements OperationNodeSource, Compilable {
9
10
  #private;
10
11
  constructor(props: CreateViewBuilderProps);
@@ -30,7 +31,7 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
30
31
  * string opening an SQL injection vulnerability. DO NOT pass unchecked user input
31
32
  * into the query or raw expression passed to this method!
32
33
  */
33
- as(query: AnySelectQueryBuilder | AnyRawBuilder): CreateViewBuilder;
34
+ as(query: AnySelectQueryBuilder | RawBuilder<any>): CreateViewBuilder;
34
35
  toOperationNode(): CreateViewNode;
35
36
  compile(): CompiledQuery;
36
37
  execute(): Promise<void>;
@@ -186,7 +186,7 @@ export declare class SchemaModule {
186
186
  * .execute()
187
187
  * ```
188
188
  */
189
- createType(viewName: string): CreateTypeBuilder;
189
+ createType(typeName: string): CreateTypeBuilder;
190
190
  /**
191
191
  * Drop a type.
192
192
  *
@@ -201,7 +201,7 @@ export declare class SchemaModule {
201
201
  * .execute()
202
202
  * ```
203
203
  */
204
- dropType(viewName: string): DropTypeBuilder;
204
+ dropType(typeName: string): DropTypeBuilder;
205
205
  /**
206
206
  * Returns a copy of this schema module with the given plugin installed.
207
207
  */
@@ -24,6 +24,7 @@ import { CreateTypeBuilder } from './create-type-builder.js';
24
24
  import { DropTypeBuilder } from './drop-type-builder.js';
25
25
  import { CreateTypeNode } from '../operation-node/create-type-node.js';
26
26
  import { DropTypeNode } from '../operation-node/drop-type-node.js';
27
+ import { parseSchemableIdentifier } from '../parser/identifier-parser.js';
27
28
  /**
28
29
  * Provides methods for building database schema.
29
30
  */
@@ -199,7 +200,7 @@ export class SchemaModule {
199
200
  return new AlterTableBuilder({
200
201
  queryId: createQueryId(),
201
202
  executor: this.#executor,
202
- alterTableNode: AlterTableNode.create(table),
203
+ node: AlterTableNode.create(table),
203
204
  });
204
205
  }
205
206
  /**
@@ -255,11 +256,11 @@ export class SchemaModule {
255
256
  * .execute()
256
257
  * ```
257
258
  */
258
- createType(viewName) {
259
+ createType(typeName) {
259
260
  return new CreateTypeBuilder({
260
261
  queryId: createQueryId(),
261
262
  executor: this.#executor,
262
- createTypeNode: CreateTypeNode.create(viewName),
263
+ createTypeNode: CreateTypeNode.create(parseSchemableIdentifier(typeName)),
263
264
  });
264
265
  }
265
266
  /**
@@ -276,11 +277,11 @@ export class SchemaModule {
276
277
  * .execute()
277
278
  * ```
278
279
  */
279
- dropType(viewName) {
280
+ dropType(typeName) {
280
281
  return new DropTypeBuilder({
281
282
  queryId: createQueryId(),
282
283
  executor: this.#executor,
283
- dropTypeNode: DropTypeNode.create(viewName),
284
+ dropTypeNode: DropTypeNode.create(parseSchemableIdentifier(typeName)),
284
285
  });
285
286
  }
286
287
  /**
@@ -1,4 +1,4 @@
1
1
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
2
- export interface Compilable {
3
- compile(): CompiledQuery;
2
+ export interface Compilable<O = unknown> {
3
+ compile(): CompiledQuery<O>;
4
4
  }
@@ -1,5 +1,5 @@
1
- import { AnyRawBuilder } from './type-utils.js';
1
+ import { Expression } from '../expression/expression.js';
2
2
  export declare type ExplainFormat = 'text' | 'xml' | 'json' | 'yaml' | 'traditional' | 'tree';
3
3
  export interface Explainable {
4
- explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: AnyRawBuilder): Promise<O[]>;
4
+ explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<O[]>;
5
5
  }
@@ -0,0 +1,46 @@
1
+ import { DeleteResult } from '../query-builder/delete-result.js';
2
+ import { InsertResult } from '../query-builder/insert-result.js';
3
+ import { UpdateResult } from '../query-builder/update-result.js';
4
+ import { CompiledQuery } from '../query-compiler/compiled-query.js';
5
+ import { Compilable } from './compilable.js';
6
+ /**
7
+ * A helper type that allows inferring a select/insert/update/delete query's result
8
+ * type from a query builder or compiled query.
9
+ *
10
+ * ### Examples
11
+ *
12
+ * Infer a query builder's result type:
13
+ *
14
+ * ```ts
15
+ * import { InferResult } from 'kysely'
16
+ *
17
+ * const query = db
18
+ * .selectFrom('person')
19
+ * .innerJoin('pet', 'pet.owner_id', 'person.id')
20
+ * .select(['person.first_name', 'pet.name'])
21
+ *
22
+ * type QueryResult = InferResult<typeof query> // { first_name: string; name: string; }[]
23
+ * ```
24
+ *
25
+ * Infer a compiled query's result type:
26
+ *
27
+ * ```ts
28
+ * import { InferResult } from 'kysely'
29
+ *
30
+ * const compiledQuery = db
31
+ * .insertInto('person')
32
+ * .values({
33
+ * first_name: 'Foo',
34
+ * last_name: 'Barson',
35
+ * gender: 'other',
36
+ * age: 15,
37
+ * })
38
+ * .returningAll()
39
+ * .compile()
40
+ *
41
+ * type QueryResult = InferResult<typeof compiledQuery> // Selectable<Person>[]
42
+ * ```
43
+ */
44
+ export declare type InferResult<C extends Compilable<any> | CompiledQuery<any>> = C extends Compilable<infer O> ? ResolveResult<O> : C extends CompiledQuery<infer O> ? ResolveResult<O> : never;
45
+ declare type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult ? O : O[];
46
+ export {};
@@ -0,0 +1,2 @@
1
+ /// <reference types="./infer-result.d.ts" />
2
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Use for system-level logging, such as deprecation messages.
3
+ * Logs a message and ensures it won't be logged again.
4
+ */
5
+ export declare function logOnce(message: string): void;
@@ -0,0 +1,13 @@
1
+ /// <reference types="./log-once.d.ts" />
2
+ const LOGGED_MESSAGES = new Set();
3
+ /**
4
+ * Use for system-level logging, such as deprecation messages.
5
+ * Logs a message and ensures it won't be logged again.
6
+ */
7
+ export function logOnce(message) {
8
+ if (LOGGED_MESSAGES.has(message)) {
9
+ return;
10
+ }
11
+ LOGGED_MESSAGES.add(message);
12
+ console.log(message);
13
+ }
@@ -11,6 +11,7 @@ export declare function isBuffer(obj: unknown): obj is {
11
11
  };
12
12
  export declare function isFunction(obj: unknown): obj is Function;
13
13
  export declare function isObject(obj: unknown): obj is Record<string, unknown>;
14
+ export declare function isArrayBufferOrView(obj: unknown): obj is ArrayBuffer | ArrayBufferView;
14
15
  export declare function getLast<T>(arr: ArrayLike<T>): T | undefined;
15
16
  export declare function freeze<T>(obj: T): Readonly<T>;
16
17
  export declare function asArray<T>(arg: T | T[]): T[];
@@ -40,6 +40,9 @@ export function isFunction(obj) {
40
40
  export function isObject(obj) {
41
41
  return typeof obj === 'object' && obj !== null;
42
42
  }
43
+ export function isArrayBufferOrView(obj) {
44
+ return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj);
45
+ }
43
46
  export function getLast(arr) {
44
47
  return arr[arr.length - 1];
45
48
  }
@@ -1,10 +1,7 @@
1
- import { AliasedRawBuilder, RawBuilder } from '../raw-builder/raw-builder.js';
2
- import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
3
- import { ExpressionBuilder } from '../query-builder/expression-builder.js';
1
+ import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
4
2
  import { InsertResult } from '../query-builder/insert-result.js';
5
3
  import { DeleteResult } from '../query-builder/delete-result.js';
6
4
  import { UpdateResult } from '../query-builder/update-result.js';
7
- import { AggregateFunctionBuilder, AliasedAggregateFunctionBuilder } from '../query-builder/aggregate-function-builder.js';
8
5
  /**
9
6
  * Given an object type, extracts the union of all value types.
10
7
  */
@@ -100,24 +97,11 @@ export declare type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
100
97
  */
101
98
  export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
102
99
  export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
103
- export declare type AnyAliasedQueryBuilder = AliasedQueryBuilder<any, any, any, any>;
104
- export declare type AnyRawBuilder = RawBuilder<any>;
105
- export declare type AnyAliasedRawBuilder = AliasedRawBuilder<any, any>;
106
- export declare type AnyAliasedAggregateFunctionBuilder = AliasedAggregateFunctionBuilder<any, any, any, any>;
107
- export declare type SelectQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnySelectQueryBuilder;
108
- export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
109
- export declare type RawBuilderFactory<DB, TB extends keyof DB, O = any> = (qb: ExpressionBuilder<DB, TB>) => RawBuilder<O>;
110
- export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
111
- export declare type AggregateFunctionBuilderFactory<DB, TB extends keyof DB, O = unknown> = (qb: ExpressionBuilder<DB, TB>) => AggregateFunctionBuilder<DB, TB, O>;
112
- export declare type AliasedAggregateFunctionBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedAggregateFunctionBuilder;
113
100
  export declare type SingleResultType<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : O | undefined;
114
101
  export declare type UnknownRow = Record<string, unknown>;
115
102
  export declare type Nullable<T> = {
116
103
  [P in keyof T]: T[P] | null;
117
104
  };
118
- export declare type NullableValues<T> = {
119
- [P in keyof T]: Nullable<T[P]>;
120
- };
121
105
  /**
122
106
  * Takes all properties from T1 and merges all properties from T2
123
107
  * that don't exist in T1 as optional properties.
@@ -139,3 +123,5 @@ export declare type NullableValues<T> = {
139
123
  * // { name: string, age: number, species?: 'cat' | 'dog' }
140
124
  */
141
125
  export declare type MergePartial<T1, T2> = T1 & Partial<Omit<T2, keyof T1>>;
126
+ export declare type IsNever<T> = [T] extends [never] ? true : false;
127
+ export declare type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kysely",
3
- "version": "0.22.0",
3
+ "version": "0.23.0",
4
4
  "description": "Type safe SQL query builder",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,18 +0,0 @@
1
- import { OperationNode } from './operation-node.js';
2
- import { ReferenceExpressionNode, ValueExpressionNode } from './operation-node-utils.js';
3
- import { OperatorNode } from './operator-node.js';
4
- import { RawNode } from './raw-node.js';
5
- export declare type FilterOperatorNode = OperatorNode | RawNode;
6
- export interface FilterNode extends OperationNode {
7
- readonly kind: 'FilterNode';
8
- readonly left?: ReferenceExpressionNode;
9
- readonly op: OperatorNode | RawNode;
10
- readonly right: ValueExpressionNode;
11
- }
12
- /**
13
- * @internal
14
- */
15
- export declare const FilterNode: Readonly<{
16
- is(node: OperationNode): node is FilterNode;
17
- create(left: ReferenceExpressionNode | undefined, op: OperatorNode | RawNode, right: ValueExpressionNode): FilterNode;
18
- }>;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FilterNode = void 0;
4
- const object_utils_js_1 = require("../util/object-utils.js");
5
- /**
6
- * @internal
7
- */
8
- exports.FilterNode = (0, object_utils_js_1.freeze)({
9
- is(node) {
10
- return node.kind === 'FilterNode';
11
- },
12
- create(left, op, right) {
13
- return (0, object_utils_js_1.freeze)({
14
- kind: 'FilterNode',
15
- left,
16
- op,
17
- right,
18
- });
19
- },
20
- });
@@ -1,18 +0,0 @@
1
- import { AggregateFunctionNode } from './aggregate-function-node.js';
2
- import { AliasNode } from './alias-node.js';
3
- import { AndNode } from './and-node.js';
4
- import { ColumnNode } from './column-node.js';
5
- import { FilterNode } from './filter-node.js';
6
- import { OrNode } from './or-node.js';
7
- import { ParensNode } from './parens-node.js';
8
- import { PrimitiveValueListNode } from './primitive-value-list-node.js';
9
- import { RawNode } from './raw-node.js';
10
- import { ReferenceNode } from './reference-node.js';
11
- import { SelectQueryNode } from './select-query-node.js';
12
- import { TableNode } from './table-node.js';
13
- import { ValueListNode } from './value-list-node.js';
14
- import { ValueNode } from './value-node.js';
15
- export declare type ReferenceExpressionNode = ColumnNode | ReferenceNode | SelectQueryNode | RawNode | AggregateFunctionNode;
16
- export declare type ValueExpressionNode = ValueNode | ValueListNode | PrimitiveValueListNode | ReferenceExpressionNode;
17
- export declare type TableExpressionNode = TableNode | AliasNode;
18
- export declare type FilterExpressionNode = FilterNode | AndNode | OrNode | ParensNode | RawNode;
@@ -1,12 +0,0 @@
1
- import { AggregateFunctionNode } from '../operation-node/aggregate-function-node.js';
2
- import { AliasNode } from '../operation-node/alias-node.js';
3
- import { RawNode } from '../operation-node/raw-node.js';
4
- import { SelectQueryNode } from '../operation-node/select-query-node.js';
5
- import { AggregateFunctionBuilder } from '../query-builder/aggregate-function-builder.js';
6
- import { RawBuilder } from '../raw-builder/raw-builder.js';
7
- import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnySelectQueryBuilder, SelectQueryBuilderFactory, RawBuilderFactory, AggregateFunctionBuilderFactory, AliasedAggregateFunctionBuilderFactory, AnyAliasedAggregateFunctionBuilder } from '../util/type-utils.js';
8
- export declare type ComplexExpression<DB, TB extends keyof DB, V = any> = AnySelectQueryBuilder | SelectQueryBuilderFactory<DB, TB> | RawBuilder<V> | RawBuilderFactory<DB, TB, V> | AggregateFunctionBuilder<DB, TB, V> | AggregateFunctionBuilderFactory<DB, TB, V>;
9
- export declare type AliasedComplexExpression<DB, TB extends keyof DB> = AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB> | AnyAliasedAggregateFunctionBuilder | AliasedAggregateFunctionBuilderFactory<DB, TB>;
10
- export declare function parseComplexExpression(exp: ComplexExpression<any, any>): SelectQueryNode | RawNode | AggregateFunctionNode;
11
- export declare function parseAliasedComplexExpression(exp: AliasedComplexExpression<any, any>): AliasNode;
12
- export declare function isComplexExpression(obj: unknown): obj is ComplexExpression<any, any>;
@@ -1,24 +0,0 @@
1
- import { FilterNode } from '../operation-node/filter-node.js';
2
- import { AnyRawBuilder } from '../util/type-utils.js';
3
- import { Operator } from '../operation-node/operator-node.js';
4
- import { ExtractTypeFromReferenceExpression, ReferenceExpression } from './reference-parser.js';
5
- import { ValueExpression, ValueExpressionOrList } from './value-parser.js';
6
- import { FilterExpressionNode } from '../operation-node/operation-node-utils.js';
7
- import { WhereInterface } from '../query-builder/where-interface.js';
8
- import { HavingInterface } from '../query-builder/having-interface.js';
9
- import { ComplexExpression } from './complex-expression-parser.js';
10
- export declare type FilterValueExpression<DB, TB extends keyof DB, RE> = ValueExpression<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
11
- export declare type FilterValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpressionOrList<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
12
- export declare type ExistsExpression<DB, TB extends keyof DB> = ComplexExpression<DB, TB, any>;
13
- export declare type WhereGrouper<DB, TB extends keyof DB> = (qb: WhereInterface<DB, TB>) => WhereInterface<DB, TB>;
14
- export declare type HavingGrouper<DB, TB extends keyof DB> = (qb: HavingInterface<DB, TB>) => HavingInterface<DB, TB>;
15
- export declare type FilterOperator = Operator | AnyRawBuilder;
16
- declare type FilterType = 'where' | 'having' | 'on';
17
- export declare function parseWhereFilter(args: any[]): FilterExpressionNode;
18
- export declare function parseHavingFilter(args: any[]): FilterExpressionNode;
19
- export declare function parseOnFilter(args: any[]): FilterExpressionNode;
20
- export declare function parseReferenceFilter(lhs: ReferenceExpression<any, any>, op: FilterOperator, rhs: ReferenceExpression<any, any>): FilterNode;
21
- export declare function parseExistFilter(arg: ExistsExpression<any, any>): FilterNode;
22
- export declare function parseNotExistFilter(arg: ExistsExpression<any, any>): FilterNode;
23
- export declare function parseFilter(type: FilterType, args: any[]): FilterExpressionNode;
24
- export {};
@@ -1,109 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseFilter = exports.parseNotExistFilter = exports.parseExistFilter = exports.parseReferenceFilter = exports.parseOnFilter = exports.parseHavingFilter = exports.parseWhereFilter = void 0;
4
- const filter_node_js_1 = require("../operation-node/filter-node.js");
5
- const object_utils_js_1 = require("../util/object-utils.js");
6
- const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
7
- const raw_node_js_1 = require("../operation-node/raw-node.js");
8
- const operator_node_js_1 = require("../operation-node/operator-node.js");
9
- const parens_node_js_1 = require("../operation-node/parens-node.js");
10
- const reference_parser_js_1 = require("./reference-parser.js");
11
- const value_parser_js_1 = require("./value-parser.js");
12
- const value_node_js_1 = require("../operation-node/value-node.js");
13
- const parse_utils_js_1 = require("./parse-utils.js");
14
- function parseWhereFilter(args) {
15
- return parseFilter('where', args);
16
- }
17
- exports.parseWhereFilter = parseWhereFilter;
18
- function parseHavingFilter(args) {
19
- return parseFilter('having', args);
20
- }
21
- exports.parseHavingFilter = parseHavingFilter;
22
- function parseOnFilter(args) {
23
- return parseFilter('on', args);
24
- }
25
- exports.parseOnFilter = parseOnFilter;
26
- function parseReferenceFilter(lhs, op, rhs) {
27
- return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(lhs), parseFilterOperator(op), (0, reference_parser_js_1.parseReferenceExpression)(rhs));
28
- }
29
- exports.parseReferenceFilter = parseReferenceFilter;
30
- function parseExistFilter(arg) {
31
- return parseExistExpression('exists', arg);
32
- }
33
- exports.parseExistFilter = parseExistFilter;
34
- function parseNotExistFilter(arg) {
35
- return parseExistExpression('not exists', arg);
36
- }
37
- exports.parseNotExistFilter = parseNotExistFilter;
38
- function parseFilter(type, args) {
39
- if (args.length === 3) {
40
- return parseThreeArgFilter(args[0], args[1], args[2]);
41
- }
42
- else if (args.length === 1) {
43
- return parseOneArgFilter(type, args[0]);
44
- }
45
- throw createFilterError(type, args);
46
- }
47
- exports.parseFilter = parseFilter;
48
- function parseThreeArgFilter(left, op, right) {
49
- if ((op === 'is' || op === 'is not') && ((0, object_utils_js_1.isNull)(right) || (0, object_utils_js_1.isBoolean)(right))) {
50
- return parseIsFilter(left, op, right);
51
- }
52
- return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(left), parseFilterOperator(op), (0, value_parser_js_1.parseValueExpressionOrList)(right));
53
- }
54
- function parseIsFilter(left, op, right) {
55
- return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(left), parseFilterOperator(op), value_node_js_1.ValueNode.createImmediate(right));
56
- }
57
- function parseFilterOperator(op) {
58
- if ((0, object_utils_js_1.isString)(op) && operator_node_js_1.OPERATORS.includes(op)) {
59
- return operator_node_js_1.OperatorNode.create(op);
60
- }
61
- else if ((0, operation_node_source_js_1.isOperationNodeSource)(op)) {
62
- return op.toOperationNode();
63
- }
64
- throw new Error(`invalid comparison operator ${JSON.stringify(op)} passed to a filter method`);
65
- }
66
- function parseExistExpression(type, arg) {
67
- return filter_node_js_1.FilterNode.create(undefined, operator_node_js_1.OperatorNode.create(type), (0, value_parser_js_1.parseValueExpressionOrList)(arg));
68
- }
69
- function parseOneArgFilter(type, arg) {
70
- if ((0, object_utils_js_1.isFunction)(arg)) {
71
- return GROUP_PARSERS[type](arg);
72
- }
73
- else if ((0, operation_node_source_js_1.isOperationNodeSource)(arg)) {
74
- const node = arg.toOperationNode();
75
- if (raw_node_js_1.RawNode.is(node)) {
76
- return node;
77
- }
78
- }
79
- throw createFilterError(type, arg);
80
- }
81
- function createFilterError(type, args) {
82
- return new Error(`invalid arguments passed to a '${type}' method: ${JSON.stringify(args)}`);
83
- }
84
- const GROUP_PARSERS = (0, object_utils_js_1.freeze)({
85
- where(callback) {
86
- const query = callback((0, parse_utils_js_1.createSelectQueryBuilder)());
87
- const queryNode = query.toOperationNode();
88
- if (!queryNode.where) {
89
- throw new Error('no `where` methods called insided a group callback');
90
- }
91
- return parens_node_js_1.ParensNode.create(queryNode.where.where);
92
- },
93
- having(callback) {
94
- const query = callback((0, parse_utils_js_1.createSelectQueryBuilder)());
95
- const queryNode = query.toOperationNode();
96
- if (!queryNode.having) {
97
- throw new Error('no `having` methods called insided a group callback');
98
- }
99
- return parens_node_js_1.ParensNode.create(queryNode.having.having);
100
- },
101
- on(callback) {
102
- const joinBuilder = callback((0, parse_utils_js_1.createJoinBuilder)('InnerJoin', 'table'));
103
- const joinNode = joinBuilder.toOperationNode();
104
- if (!joinNode.on) {
105
- throw new Error('no `on` methods called insided a group callback');
106
- }
107
- return parens_node_js_1.ParensNode.create(joinNode.on.on);
108
- },
109
- });
@@ -1,18 +0,0 @@
1
- import { OperationNode } from './operation-node.js';
2
- import { ReferenceExpressionNode, ValueExpressionNode } from './operation-node-utils.js';
3
- import { OperatorNode } from './operator-node.js';
4
- import { RawNode } from './raw-node.js';
5
- export declare type FilterOperatorNode = OperatorNode | RawNode;
6
- export interface FilterNode extends OperationNode {
7
- readonly kind: 'FilterNode';
8
- readonly left?: ReferenceExpressionNode;
9
- readonly op: OperatorNode | RawNode;
10
- readonly right: ValueExpressionNode;
11
- }
12
- /**
13
- * @internal
14
- */
15
- export declare const FilterNode: Readonly<{
16
- is(node: OperationNode): node is FilterNode;
17
- create(left: ReferenceExpressionNode | undefined, op: OperatorNode | RawNode, right: ValueExpressionNode): FilterNode;
18
- }>;
@@ -1,18 +0,0 @@
1
- /// <reference types="./filter-node.d.ts" />
2
- import { freeze } from '../util/object-utils.js';
3
- /**
4
- * @internal
5
- */
6
- export const FilterNode = freeze({
7
- is(node) {
8
- return node.kind === 'FilterNode';
9
- },
10
- create(left, op, right) {
11
- return freeze({
12
- kind: 'FilterNode',
13
- left,
14
- op,
15
- right,
16
- });
17
- },
18
- });
@@ -1,18 +0,0 @@
1
- import { AggregateFunctionNode } from './aggregate-function-node.js';
2
- import { AliasNode } from './alias-node.js';
3
- import { AndNode } from './and-node.js';
4
- import { ColumnNode } from './column-node.js';
5
- import { FilterNode } from './filter-node.js';
6
- import { OrNode } from './or-node.js';
7
- import { ParensNode } from './parens-node.js';
8
- import { PrimitiveValueListNode } from './primitive-value-list-node.js';
9
- import { RawNode } from './raw-node.js';
10
- import { ReferenceNode } from './reference-node.js';
11
- import { SelectQueryNode } from './select-query-node.js';
12
- import { TableNode } from './table-node.js';
13
- import { ValueListNode } from './value-list-node.js';
14
- import { ValueNode } from './value-node.js';
15
- export declare type ReferenceExpressionNode = ColumnNode | ReferenceNode | SelectQueryNode | RawNode | AggregateFunctionNode;
16
- export declare type ValueExpressionNode = ValueNode | ValueListNode | PrimitiveValueListNode | ReferenceExpressionNode;
17
- export declare type TableExpressionNode = TableNode | AliasNode;
18
- export declare type FilterExpressionNode = FilterNode | AndNode | OrNode | ParensNode | RawNode;
@@ -1,2 +0,0 @@
1
- /// <reference types="./operation-node-utils.d.ts" />
2
- export {};
@@ -1,12 +0,0 @@
1
- import { AggregateFunctionNode } from '../operation-node/aggregate-function-node.js';
2
- import { AliasNode } from '../operation-node/alias-node.js';
3
- import { RawNode } from '../operation-node/raw-node.js';
4
- import { SelectQueryNode } from '../operation-node/select-query-node.js';
5
- import { AggregateFunctionBuilder } from '../query-builder/aggregate-function-builder.js';
6
- import { RawBuilder } from '../raw-builder/raw-builder.js';
7
- import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnySelectQueryBuilder, SelectQueryBuilderFactory, RawBuilderFactory, AggregateFunctionBuilderFactory, AliasedAggregateFunctionBuilderFactory, AnyAliasedAggregateFunctionBuilder } from '../util/type-utils.js';
8
- export declare type ComplexExpression<DB, TB extends keyof DB, V = any> = AnySelectQueryBuilder | SelectQueryBuilderFactory<DB, TB> | RawBuilder<V> | RawBuilderFactory<DB, TB, V> | AggregateFunctionBuilder<DB, TB, V> | AggregateFunctionBuilderFactory<DB, TB, V>;
9
- export declare type AliasedComplexExpression<DB, TB extends keyof DB> = AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB> | AnyAliasedAggregateFunctionBuilder | AliasedAggregateFunctionBuilderFactory<DB, TB>;
10
- export declare function parseComplexExpression(exp: ComplexExpression<any, any>): SelectQueryNode | RawNode | AggregateFunctionNode;
11
- export declare function parseAliasedComplexExpression(exp: AliasedComplexExpression<any, any>): AliasNode;
12
- export declare function isComplexExpression(obj: unknown): obj is ComplexExpression<any, any>;
@@ -1,24 +0,0 @@
1
- import { FilterNode } from '../operation-node/filter-node.js';
2
- import { AnyRawBuilder } from '../util/type-utils.js';
3
- import { Operator } from '../operation-node/operator-node.js';
4
- import { ExtractTypeFromReferenceExpression, ReferenceExpression } from './reference-parser.js';
5
- import { ValueExpression, ValueExpressionOrList } from './value-parser.js';
6
- import { FilterExpressionNode } from '../operation-node/operation-node-utils.js';
7
- import { WhereInterface } from '../query-builder/where-interface.js';
8
- import { HavingInterface } from '../query-builder/having-interface.js';
9
- import { ComplexExpression } from './complex-expression-parser.js';
10
- export declare type FilterValueExpression<DB, TB extends keyof DB, RE> = ValueExpression<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
11
- export declare type FilterValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpressionOrList<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
12
- export declare type ExistsExpression<DB, TB extends keyof DB> = ComplexExpression<DB, TB, any>;
13
- export declare type WhereGrouper<DB, TB extends keyof DB> = (qb: WhereInterface<DB, TB>) => WhereInterface<DB, TB>;
14
- export declare type HavingGrouper<DB, TB extends keyof DB> = (qb: HavingInterface<DB, TB>) => HavingInterface<DB, TB>;
15
- export declare type FilterOperator = Operator | AnyRawBuilder;
16
- declare type FilterType = 'where' | 'having' | 'on';
17
- export declare function parseWhereFilter(args: any[]): FilterExpressionNode;
18
- export declare function parseHavingFilter(args: any[]): FilterExpressionNode;
19
- export declare function parseOnFilter(args: any[]): FilterExpressionNode;
20
- export declare function parseReferenceFilter(lhs: ReferenceExpression<any, any>, op: FilterOperator, rhs: ReferenceExpression<any, any>): FilterNode;
21
- export declare function parseExistFilter(arg: ExistsExpression<any, any>): FilterNode;
22
- export declare function parseNotExistFilter(arg: ExistsExpression<any, any>): FilterNode;
23
- export declare function parseFilter(type: FilterType, args: any[]): FilterExpressionNode;
24
- export {};