kysely 0.22.0 → 0.23.1

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 (358) 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 +63 -278
  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 +3 -3
  144. package/dist/cjs/schema/create-index-builder.js +7 -7
  145. package/dist/cjs/schema/create-schema-builder.d.ts +1 -1
  146. package/dist/cjs/schema/create-schema-builder.js +2 -2
  147. package/dist/cjs/schema/create-table-builder.d.ts +39 -6
  148. package/dist/cjs/schema/create-table-builder.js +47 -12
  149. package/dist/cjs/schema/create-type-builder.d.ts +1 -1
  150. package/dist/cjs/schema/create-type-builder.js +2 -2
  151. package/dist/cjs/schema/create-view-builder.d.ts +4 -3
  152. package/dist/cjs/schema/create-view-builder.js +7 -7
  153. package/dist/cjs/schema/drop-index-builder.d.ts +1 -1
  154. package/dist/cjs/schema/drop-index-builder.js +4 -4
  155. package/dist/cjs/schema/drop-schema-builder.d.ts +1 -1
  156. package/dist/cjs/schema/drop-schema-builder.js +3 -3
  157. package/dist/cjs/schema/drop-table-builder.d.ts +1 -1
  158. package/dist/cjs/schema/drop-table-builder.js +3 -3
  159. package/dist/cjs/schema/drop-type-builder.d.ts +1 -1
  160. package/dist/cjs/schema/drop-type-builder.js +2 -2
  161. package/dist/cjs/schema/drop-view-builder.d.ts +1 -1
  162. package/dist/cjs/schema/drop-view-builder.js +4 -4
  163. package/dist/cjs/schema/schema.d.ts +2 -2
  164. package/dist/cjs/schema/schema.js +14 -13
  165. package/dist/cjs/util/compilable.d.ts +2 -2
  166. package/dist/cjs/util/explainable.d.ts +2 -2
  167. package/dist/cjs/util/infer-result.d.ts +46 -0
  168. package/dist/cjs/util/infer-result.js +2 -0
  169. package/dist/cjs/util/log-once.d.ts +5 -0
  170. package/dist/cjs/util/log-once.js +16 -0
  171. package/dist/cjs/util/object-utils.d.ts +1 -0
  172. package/dist/cjs/util/object-utils.js +5 -1
  173. package/dist/cjs/util/type-utils.d.ts +3 -17
  174. package/dist/esm/dialect/database-introspector.d.ts +4 -0
  175. package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
  176. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  177. package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
  178. package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
  179. package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
  180. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  181. package/dist/esm/driver/database-connection.d.ts +6 -2
  182. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
  183. package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
  184. package/dist/esm/expression/expression.d.ts +100 -0
  185. package/dist/esm/expression/expression.js +12 -0
  186. package/dist/esm/index.d.ts +10 -6
  187. package/dist/esm/index.js +6 -2
  188. package/dist/esm/migration/file-migration-provider.js +5 -3
  189. package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
  190. package/dist/esm/operation-node/aggregate-function-node.js +17 -0
  191. package/dist/esm/operation-node/alias-node.d.ts +3 -11
  192. package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
  193. package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
  194. package/dist/esm/operation-node/alter-table-node.js +9 -1
  195. package/dist/esm/operation-node/and-node.d.ts +3 -4
  196. package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
  197. package/dist/esm/operation-node/binary-operation-node.js +18 -0
  198. package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
  199. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  200. package/dist/esm/operation-node/column-definition-node.js +16 -0
  201. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  202. package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
  203. package/dist/esm/operation-node/create-index-node.d.ts +1 -3
  204. package/dist/esm/operation-node/create-table-node.d.ts +4 -5
  205. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  206. package/dist/esm/operation-node/create-type-node.js +1 -2
  207. package/dist/esm/operation-node/default-value-node.d.ts +2 -4
  208. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  209. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  210. package/dist/esm/operation-node/drop-type-node.js +1 -2
  211. package/dist/esm/operation-node/explain-node.d.ts +2 -4
  212. package/dist/esm/operation-node/explain-node.js +1 -1
  213. package/dist/esm/operation-node/from-node.d.ts +3 -4
  214. package/dist/esm/operation-node/generated-node.d.ts +2 -3
  215. package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
  216. package/dist/esm/operation-node/having-node.d.ts +3 -4
  217. package/dist/esm/operation-node/having-node.js +4 -4
  218. package/dist/esm/operation-node/insert-query-node.d.ts +1 -5
  219. package/dist/esm/operation-node/join-node.d.ts +5 -9
  220. package/dist/esm/operation-node/join-node.js +6 -6
  221. package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
  222. package/dist/esm/operation-node/on-conflict-node.js +12 -12
  223. package/dist/esm/operation-node/on-node.d.ts +3 -4
  224. package/dist/esm/operation-node/on-node.js +4 -4
  225. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
  226. package/dist/esm/operation-node/operation-node-transformer.js +22 -15
  227. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
  228. package/dist/esm/operation-node/operation-node-visitor.js +2 -1
  229. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  230. package/dist/esm/operation-node/operator-node.d.ts +5 -3
  231. package/dist/esm/operation-node/operator-node.js +2 -4
  232. package/dist/esm/operation-node/or-node.d.ts +3 -4
  233. package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
  234. package/dist/esm/operation-node/parens-node.d.ts +2 -3
  235. package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
  236. package/dist/esm/operation-node/query-node.d.ts +2 -3
  237. package/dist/esm/operation-node/query-node.js +6 -6
  238. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
  239. package/dist/esm/operation-node/select-modifier-node.js +1 -1
  240. package/dist/esm/operation-node/select-query-node.d.ts +5 -6
  241. package/dist/esm/operation-node/select-query-node.js +10 -10
  242. package/dist/esm/operation-node/selection-node.d.ts +2 -3
  243. package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
  244. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
  245. package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
  246. package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
  247. package/dist/esm/operation-node/unary-operation-node.js +17 -0
  248. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  249. package/dist/esm/operation-node/value-list-node.d.ts +2 -9
  250. package/dist/esm/operation-node/where-node.d.ts +3 -4
  251. package/dist/esm/operation-node/where-node.js +4 -4
  252. package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
  253. package/dist/esm/parser/binary-operation-parser.js +92 -0
  254. package/dist/esm/parser/coalesce-parser.d.ts +4 -0
  255. package/dist/esm/parser/coalesce-parser.js +8 -0
  256. package/dist/esm/parser/data-type-parser.d.ts +5 -5
  257. package/dist/esm/parser/default-value-parser.d.ts +4 -5
  258. package/dist/esm/parser/default-value-parser.js +2 -2
  259. package/dist/esm/parser/expression-parser.d.ts +10 -0
  260. package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
  261. package/dist/esm/parser/identifier-parser.d.ts +2 -0
  262. package/dist/esm/parser/identifier-parser.js +20 -0
  263. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  264. package/dist/esm/parser/insert-values-parser.js +2 -2
  265. package/dist/esm/parser/join-parser.js +2 -2
  266. package/dist/esm/parser/order-by-parser.d.ts +2 -2
  267. package/dist/esm/parser/reference-parser.d.ts +14 -14
  268. package/dist/esm/parser/reference-parser.js +10 -8
  269. package/dist/esm/parser/select-parser.d.ts +6 -7
  270. package/dist/esm/parser/select-parser.js +2 -2
  271. package/dist/esm/parser/set-operation-parser.d.ts +2 -4
  272. package/dist/esm/parser/table-parser.d.ts +11 -12
  273. package/dist/esm/parser/table-parser.js +2 -2
  274. package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
  275. package/dist/esm/parser/unary-operation-parser.js +13 -0
  276. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  277. package/dist/esm/parser/value-parser.d.ts +5 -9
  278. package/dist/esm/parser/value-parser.js +4 -4
  279. package/dist/esm/parser/with-parser.d.ts +3 -4
  280. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +245 -14
  282. package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
  283. package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
  284. package/dist/esm/query-builder/delete-query-builder.js +19 -16
  285. package/dist/esm/query-builder/function-module.d.ts +123 -22
  286. package/dist/esm/query-builder/function-module.js +92 -49
  287. package/dist/esm/query-builder/having-interface.d.ts +9 -8
  288. package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
  289. package/dist/esm/query-builder/insert-query-builder.js +11 -9
  290. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  291. package/dist/esm/query-builder/insert-result.js +12 -1
  292. package/dist/esm/query-builder/join-builder.d.ts +9 -8
  293. package/dist/esm/query-builder/join-builder.js +10 -9
  294. package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
  295. package/dist/esm/query-builder/on-conflict-builder.js +18 -17
  296. package/dist/esm/query-builder/select-query-builder.d.ts +82 -51
  297. package/dist/esm/query-builder/select-query-builder.js +38 -36
  298. package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
  299. package/dist/esm/query-builder/update-query-builder.js +19 -16
  300. package/dist/esm/query-builder/where-interface.d.ts +12 -11
  301. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  302. package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -3
  303. package/dist/esm/query-compiler/default-query-compiler.js +38 -34
  304. package/dist/esm/query-executor/query-executor-base.js +16 -1
  305. package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
  306. package/dist/esm/raw-builder/raw-builder.js +23 -14
  307. package/dist/esm/raw-builder/sql.d.ts +4 -4
  308. package/dist/esm/schema/alter-column-builder.d.ts +28 -0
  309. package/dist/esm/schema/alter-column-builder.js +51 -0
  310. package/dist/esm/schema/alter-table-builder.d.ts +39 -341
  311. package/dist/esm/schema/alter-table-builder.js +59 -272
  312. package/dist/esm/schema/column-definition-builder.d.ts +43 -155
  313. package/dist/esm/schema/column-definition-builder.js +189 -0
  314. package/dist/esm/schema/create-index-builder.d.ts +3 -3
  315. package/dist/esm/schema/create-index-builder.js +7 -7
  316. package/dist/esm/schema/create-schema-builder.d.ts +1 -1
  317. package/dist/esm/schema/create-schema-builder.js +2 -2
  318. package/dist/esm/schema/create-table-builder.d.ts +39 -6
  319. package/dist/esm/schema/create-table-builder.js +47 -12
  320. package/dist/esm/schema/create-type-builder.d.ts +1 -1
  321. package/dist/esm/schema/create-type-builder.js +2 -2
  322. package/dist/esm/schema/create-view-builder.d.ts +4 -3
  323. package/dist/esm/schema/create-view-builder.js +7 -7
  324. package/dist/esm/schema/drop-index-builder.d.ts +1 -1
  325. package/dist/esm/schema/drop-index-builder.js +4 -4
  326. package/dist/esm/schema/drop-schema-builder.d.ts +1 -1
  327. package/dist/esm/schema/drop-schema-builder.js +3 -3
  328. package/dist/esm/schema/drop-table-builder.d.ts +1 -1
  329. package/dist/esm/schema/drop-table-builder.js +3 -3
  330. package/dist/esm/schema/drop-type-builder.d.ts +1 -1
  331. package/dist/esm/schema/drop-type-builder.js +2 -2
  332. package/dist/esm/schema/drop-view-builder.d.ts +1 -1
  333. package/dist/esm/schema/drop-view-builder.js +4 -4
  334. package/dist/esm/schema/schema.d.ts +2 -2
  335. package/dist/esm/schema/schema.js +14 -13
  336. package/dist/esm/util/compilable.d.ts +2 -2
  337. package/dist/esm/util/explainable.d.ts +2 -2
  338. package/dist/esm/util/infer-result.d.ts +46 -0
  339. package/dist/esm/util/infer-result.js +2 -0
  340. package/dist/esm/util/log-once.d.ts +5 -0
  341. package/dist/esm/util/log-once.js +13 -0
  342. package/dist/esm/util/object-utils.d.ts +1 -0
  343. package/dist/esm/util/object-utils.js +3 -0
  344. package/dist/esm/util/type-utils.d.ts +3 -17
  345. package/package.json +1 -1
  346. package/dist/cjs/operation-node/filter-node.d.ts +0 -18
  347. package/dist/cjs/operation-node/filter-node.js +0 -20
  348. package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
  349. package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
  350. package/dist/cjs/parser/filter-parser.d.ts +0 -24
  351. package/dist/cjs/parser/filter-parser.js +0 -109
  352. package/dist/esm/operation-node/filter-node.d.ts +0 -18
  353. package/dist/esm/operation-node/filter-node.js +0 -18
  354. package/dist/esm/operation-node/operation-node-utils.d.ts +0 -18
  355. package/dist/esm/operation-node/operation-node-utils.js +0 -2
  356. package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
  357. package/dist/esm/parser/filter-parser.d.ts +0 -24
  358. package/dist/esm/parser/filter-parser.js +0 -100
@@ -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.1",
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 {};
@@ -1,100 +0,0 @@
1
- /// <reference types="./filter-parser.d.ts" />
2
- import { FilterNode } from '../operation-node/filter-node.js';
3
- import { freeze, isBoolean, isFunction, isNull, isString, } from '../util/object-utils.js';
4
- import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
5
- import { RawNode } from '../operation-node/raw-node.js';
6
- import { OperatorNode, OPERATORS, } from '../operation-node/operator-node.js';
7
- import { ParensNode } from '../operation-node/parens-node.js';
8
- import { parseReferenceExpression, } from './reference-parser.js';
9
- import { parseValueExpressionOrList, } from './value-parser.js';
10
- import { ValueNode } from '../operation-node/value-node.js';
11
- import { createJoinBuilder, createSelectQueryBuilder } from './parse-utils.js';
12
- export function parseWhereFilter(args) {
13
- return parseFilter('where', args);
14
- }
15
- export function parseHavingFilter(args) {
16
- return parseFilter('having', args);
17
- }
18
- export function parseOnFilter(args) {
19
- return parseFilter('on', args);
20
- }
21
- export function parseReferenceFilter(lhs, op, rhs) {
22
- return FilterNode.create(parseReferenceExpression(lhs), parseFilterOperator(op), parseReferenceExpression(rhs));
23
- }
24
- export function parseExistFilter(arg) {
25
- return parseExistExpression('exists', arg);
26
- }
27
- export function parseNotExistFilter(arg) {
28
- return parseExistExpression('not exists', arg);
29
- }
30
- export function parseFilter(type, args) {
31
- if (args.length === 3) {
32
- return parseThreeArgFilter(args[0], args[1], args[2]);
33
- }
34
- else if (args.length === 1) {
35
- return parseOneArgFilter(type, args[0]);
36
- }
37
- throw createFilterError(type, args);
38
- }
39
- function parseThreeArgFilter(left, op, right) {
40
- if ((op === 'is' || op === 'is not') && (isNull(right) || isBoolean(right))) {
41
- return parseIsFilter(left, op, right);
42
- }
43
- return FilterNode.create(parseReferenceExpression(left), parseFilterOperator(op), parseValueExpressionOrList(right));
44
- }
45
- function parseIsFilter(left, op, right) {
46
- return FilterNode.create(parseReferenceExpression(left), parseFilterOperator(op), ValueNode.createImmediate(right));
47
- }
48
- function parseFilterOperator(op) {
49
- if (isString(op) && OPERATORS.includes(op)) {
50
- return OperatorNode.create(op);
51
- }
52
- else if (isOperationNodeSource(op)) {
53
- return op.toOperationNode();
54
- }
55
- throw new Error(`invalid comparison operator ${JSON.stringify(op)} passed to a filter method`);
56
- }
57
- function parseExistExpression(type, arg) {
58
- return FilterNode.create(undefined, OperatorNode.create(type), parseValueExpressionOrList(arg));
59
- }
60
- function parseOneArgFilter(type, arg) {
61
- if (isFunction(arg)) {
62
- return GROUP_PARSERS[type](arg);
63
- }
64
- else if (isOperationNodeSource(arg)) {
65
- const node = arg.toOperationNode();
66
- if (RawNode.is(node)) {
67
- return node;
68
- }
69
- }
70
- throw createFilterError(type, arg);
71
- }
72
- function createFilterError(type, args) {
73
- return new Error(`invalid arguments passed to a '${type}' method: ${JSON.stringify(args)}`);
74
- }
75
- const GROUP_PARSERS = freeze({
76
- where(callback) {
77
- const query = callback(createSelectQueryBuilder());
78
- const queryNode = query.toOperationNode();
79
- if (!queryNode.where) {
80
- throw new Error('no `where` methods called insided a group callback');
81
- }
82
- return ParensNode.create(queryNode.where.where);
83
- },
84
- having(callback) {
85
- const query = callback(createSelectQueryBuilder());
86
- const queryNode = query.toOperationNode();
87
- if (!queryNode.having) {
88
- throw new Error('no `having` methods called insided a group callback');
89
- }
90
- return ParensNode.create(queryNode.having.having);
91
- },
92
- on(callback) {
93
- const joinBuilder = callback(createJoinBuilder('InnerJoin', 'table'));
94
- const joinNode = joinBuilder.toOperationNode();
95
- if (!joinNode.on) {
96
- throw new Error('no `on` methods called insided a group callback');
97
- }
98
- return ParensNode.create(joinNode.on.on);
99
- },
100
- });