@warlock.js/cascade 4.0.135 → 4.0.137

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 (339) hide show
  1. package/cjs/context/database-transaction-context.d.ts +4 -0
  2. package/cjs/context/database-transaction-context.d.ts.map +1 -1
  3. package/cjs/context/database-transaction-context.js +6 -0
  4. package/cjs/context/database-transaction-context.js.map +1 -1
  5. package/cjs/contracts/database-driver.contract.d.ts +106 -4
  6. package/cjs/contracts/database-driver.contract.d.ts.map +1 -1
  7. package/cjs/contracts/migration-driver.contract.d.ts +49 -1
  8. package/cjs/contracts/migration-driver.contract.d.ts.map +1 -1
  9. package/cjs/contracts/query-builder.contract.d.ts +76 -4
  10. package/cjs/contracts/query-builder.contract.d.ts.map +1 -1
  11. package/cjs/data-source/data-source.d.ts +40 -1
  12. package/cjs/data-source/data-source.d.ts.map +1 -1
  13. package/cjs/data-source/data-source.js +6 -0
  14. package/cjs/data-source/data-source.js.map +1 -1
  15. package/cjs/database-dirty-tracker.d.ts +21 -22
  16. package/cjs/database-dirty-tracker.d.ts.map +1 -1
  17. package/cjs/database-dirty-tracker.js +14 -17
  18. package/cjs/database-dirty-tracker.js.map +1 -1
  19. package/cjs/drivers/mongodb/mongodb-driver.d.ts +29 -1
  20. package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +1 -1
  21. package/cjs/drivers/mongodb/mongodb-driver.js +116 -4
  22. package/cjs/drivers/mongodb/mongodb-driver.js.map +1 -1
  23. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts +22 -1
  24. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -1
  25. package/cjs/drivers/mongodb/mongodb-migration-driver.js +27 -0
  26. package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +1 -1
  27. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts +41 -9
  28. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -1
  29. package/cjs/drivers/mongodb/mongodb-query-builder.js +60 -18
  30. package/cjs/drivers/mongodb/mongodb-query-builder.js.map +1 -1
  31. package/cjs/drivers/mongodb/types.d.ts +1 -1
  32. package/cjs/drivers/mongodb/types.d.ts.map +1 -1
  33. package/cjs/drivers/postgres/postgres-dialect.d.ts +1 -0
  34. package/cjs/drivers/postgres/postgres-dialect.d.ts.map +1 -1
  35. package/cjs/drivers/postgres/postgres-dialect.js +24 -1
  36. package/cjs/drivers/postgres/postgres-dialect.js.map +1 -1
  37. package/cjs/drivers/postgres/postgres-driver.d.ts +24 -3
  38. package/cjs/drivers/postgres/postgres-driver.d.ts.map +1 -1
  39. package/cjs/drivers/postgres/postgres-driver.js +101 -8
  40. package/cjs/drivers/postgres/postgres-driver.js.map +1 -1
  41. package/cjs/drivers/postgres/postgres-migration-driver.d.ts +30 -1
  42. package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +1 -1
  43. package/cjs/drivers/postgres/postgres-migration-driver.js +61 -2
  44. package/cjs/drivers/postgres/postgres-migration-driver.js.map +1 -1
  45. package/cjs/drivers/postgres/postgres-query-builder.d.ts +152 -722
  46. package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +1 -1
  47. package/cjs/drivers/postgres/postgres-query-builder.js +592 -1459
  48. package/cjs/drivers/postgres/postgres-query-builder.js.map +1 -1
  49. package/cjs/drivers/postgres/postgres-query-parser.d.ts +34 -14
  50. package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +1 -1
  51. package/cjs/drivers/postgres/postgres-query-parser.js +197 -39
  52. package/cjs/drivers/postgres/postgres-query-parser.js.map +1 -1
  53. package/cjs/drivers/sql/sql-dialect.contract.d.ts +1 -0
  54. package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +1 -1
  55. package/cjs/errors/transaction-rollback.error.d.ts +20 -0
  56. package/cjs/errors/transaction-rollback.error.d.ts.map +1 -0
  57. package/cjs/errors/transaction-rollback.error.js +27 -0
  58. package/cjs/errors/transaction-rollback.error.js.map +1 -0
  59. package/cjs/events/model-events.d.ts +1 -1
  60. package/cjs/events/model-events.d.ts.map +1 -1
  61. package/cjs/index.d.ts +1 -0
  62. package/cjs/index.d.ts.map +1 -1
  63. package/cjs/index.js +1 -1
  64. package/cjs/migration/column-builder.d.ts +4 -0
  65. package/cjs/migration/column-builder.d.ts.map +1 -1
  66. package/cjs/migration/column-builder.js +23 -6
  67. package/cjs/migration/column-builder.js.map +1 -1
  68. package/cjs/migration/migration-runner.d.ts.map +1 -1
  69. package/cjs/migration/migration-runner.js +137 -23
  70. package/cjs/migration/migration-runner.js.map +1 -1
  71. package/cjs/migration/migration.d.ts +209 -35
  72. package/cjs/migration/migration.d.ts.map +1 -1
  73. package/cjs/migration/migration.js +192 -27
  74. package/cjs/migration/migration.js.map +1 -1
  75. package/cjs/model/methods/accessor-methods.d.ts +13 -0
  76. package/cjs/model/methods/accessor-methods.d.ts.map +1 -0
  77. package/cjs/model/methods/accessor-methods.js +51 -0
  78. package/cjs/model/methods/accessor-methods.js.map +1 -0
  79. package/cjs/model/methods/delete-methods.d.ts +10 -0
  80. package/cjs/model/methods/delete-methods.d.ts.map +1 -0
  81. package/cjs/model/methods/delete-methods.js +10 -0
  82. package/cjs/model/methods/delete-methods.js.map +1 -0
  83. package/cjs/model/methods/dirty-methods.d.ts +10 -0
  84. package/cjs/model/methods/dirty-methods.d.ts.map +1 -0
  85. package/cjs/model/methods/dirty-methods.js +15 -0
  86. package/cjs/model/methods/dirty-methods.js.map +1 -0
  87. package/cjs/model/methods/hydration-methods.d.ts +10 -0
  88. package/cjs/model/methods/hydration-methods.d.ts.map +1 -0
  89. package/cjs/model/methods/hydration-methods.js +57 -0
  90. package/cjs/model/methods/hydration-methods.js.map +1 -0
  91. package/cjs/model/methods/instance-event-methods.d.ts +7 -0
  92. package/cjs/model/methods/instance-event-methods.d.ts.map +1 -0
  93. package/cjs/model/methods/instance-event-methods.js +15 -0
  94. package/cjs/model/methods/instance-event-methods.js.map +1 -0
  95. package/cjs/model/methods/meta-methods.d.ts +7 -0
  96. package/cjs/model/methods/meta-methods.d.ts.map +1 -0
  97. package/cjs/model/methods/meta-methods.js +78 -0
  98. package/cjs/model/methods/meta-methods.js.map +1 -0
  99. package/cjs/model/methods/query-methods.d.ts +24 -0
  100. package/cjs/model/methods/query-methods.d.ts.map +1 -0
  101. package/cjs/model/methods/query-methods.js +161 -0
  102. package/cjs/model/methods/query-methods.js.map +1 -0
  103. package/cjs/model/methods/restore-methods.d.ts +10 -0
  104. package/cjs/model/methods/restore-methods.d.ts.map +1 -0
  105. package/cjs/model/methods/restore-methods.js +13 -0
  106. package/cjs/model/methods/restore-methods.js.map +1 -0
  107. package/cjs/model/methods/scope-methods.d.ts +7 -0
  108. package/cjs/model/methods/scope-methods.d.ts.map +1 -0
  109. package/cjs/model/methods/scope-methods.js +15 -0
  110. package/cjs/model/methods/scope-methods.js.map +1 -0
  111. package/cjs/model/methods/serialization-methods.d.ts +3 -0
  112. package/cjs/model/methods/serialization-methods.d.ts.map +1 -0
  113. package/cjs/model/methods/serialization-methods.js +27 -0
  114. package/cjs/model/methods/serialization-methods.js.map +1 -0
  115. package/cjs/model/methods/static-event-methods.d.ts +9 -0
  116. package/cjs/model/methods/static-event-methods.d.ts.map +1 -0
  117. package/cjs/model/methods/static-event-methods.js +29 -0
  118. package/cjs/model/methods/static-event-methods.js.map +1 -0
  119. package/cjs/model/methods/write-methods.d.ts +10 -0
  120. package/cjs/model/methods/write-methods.d.ts.map +1 -0
  121. package/cjs/model/methods/write-methods.js +52 -0
  122. package/cjs/model/methods/write-methods.js.map +1 -0
  123. package/cjs/model/model.d.ts +89 -58
  124. package/cjs/model/model.d.ts.map +1 -1
  125. package/cjs/model/model.js +166 -424
  126. package/cjs/model/model.js.map +1 -1
  127. package/cjs/model/model.types.d.ts +44 -0
  128. package/cjs/model/model.types.d.ts.map +1 -0
  129. package/cjs/model/register-model.d.ts +3 -3
  130. package/cjs/model/register-model.d.ts.map +1 -1
  131. package/cjs/query-builder/query-builder.d.ts +556 -0
  132. package/cjs/query-builder/query-builder.d.ts.map +1 -0
  133. package/cjs/query-builder/query-builder.js +1070 -0
  134. package/cjs/query-builder/query-builder.js.map +1 -0
  135. package/cjs/relations/helpers.d.ts.map +1 -1
  136. package/cjs/relations/helpers.js +4 -0
  137. package/cjs/relations/helpers.js.map +1 -1
  138. package/cjs/relations/index.d.ts +2 -0
  139. package/cjs/relations/index.d.ts.map +1 -1
  140. package/cjs/relations/relation-hydrator.d.ts +68 -0
  141. package/cjs/relations/relation-hydrator.d.ts.map +1 -0
  142. package/cjs/relations/relation-hydrator.js +81 -0
  143. package/cjs/relations/relation-hydrator.js.map +1 -0
  144. package/cjs/relations/relation-loader.js +1 -1
  145. package/cjs/relations/relation-loader.js.map +1 -1
  146. package/cjs/relations/types.d.ts +26 -0
  147. package/cjs/relations/types.d.ts.map +1 -1
  148. package/cjs/sql-database-dirty-tracker.d.ts +13 -0
  149. package/cjs/sql-database-dirty-tracker.d.ts.map +1 -0
  150. package/cjs/sql-database-dirty-tracker.js +14 -0
  151. package/cjs/sql-database-dirty-tracker.js.map +1 -0
  152. package/cjs/types.d.ts +59 -0
  153. package/cjs/types.d.ts.map +1 -1
  154. package/cjs/utils/connect-to-database.d.ts +50 -1
  155. package/cjs/utils/connect-to-database.d.ts.map +1 -1
  156. package/cjs/utils/connect-to-database.js +14 -1
  157. package/cjs/utils/connect-to-database.js.map +1 -1
  158. package/cjs/utils/database-writer.utils.d.ts +1 -1
  159. package/cjs/utils/database-writer.utils.d.ts.map +1 -1
  160. package/cjs/utils/is-valid-date-value.d.ts +5 -0
  161. package/cjs/utils/is-valid-date-value.d.ts.map +1 -0
  162. package/cjs/utils/is-valid-date-value.js +25 -0
  163. package/cjs/utils/is-valid-date-value.js.map +1 -0
  164. package/cjs/utils/once-connected.d.ts.map +1 -1
  165. package/cjs/utils/once-connected.js +4 -5
  166. package/cjs/utils/once-connected.js.map +1 -1
  167. package/cjs/writer/database-writer.d.ts.map +1 -1
  168. package/cjs/writer/database-writer.js +7 -6
  169. package/cjs/writer/database-writer.js.map +1 -1
  170. package/esm/context/database-transaction-context.d.ts +4 -0
  171. package/esm/context/database-transaction-context.d.ts.map +1 -1
  172. package/esm/context/database-transaction-context.js +6 -0
  173. package/esm/context/database-transaction-context.js.map +1 -1
  174. package/esm/contracts/database-driver.contract.d.ts +106 -4
  175. package/esm/contracts/database-driver.contract.d.ts.map +1 -1
  176. package/esm/contracts/migration-driver.contract.d.ts +49 -1
  177. package/esm/contracts/migration-driver.contract.d.ts.map +1 -1
  178. package/esm/contracts/query-builder.contract.d.ts +76 -4
  179. package/esm/contracts/query-builder.contract.d.ts.map +1 -1
  180. package/esm/data-source/data-source.d.ts +40 -1
  181. package/esm/data-source/data-source.d.ts.map +1 -1
  182. package/esm/data-source/data-source.js +6 -0
  183. package/esm/data-source/data-source.js.map +1 -1
  184. package/esm/database-dirty-tracker.d.ts +21 -22
  185. package/esm/database-dirty-tracker.d.ts.map +1 -1
  186. package/esm/database-dirty-tracker.js +14 -17
  187. package/esm/database-dirty-tracker.js.map +1 -1
  188. package/esm/drivers/mongodb/mongodb-driver.d.ts +29 -1
  189. package/esm/drivers/mongodb/mongodb-driver.d.ts.map +1 -1
  190. package/esm/drivers/mongodb/mongodb-driver.js +116 -4
  191. package/esm/drivers/mongodb/mongodb-driver.js.map +1 -1
  192. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts +22 -1
  193. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -1
  194. package/esm/drivers/mongodb/mongodb-migration-driver.js +27 -0
  195. package/esm/drivers/mongodb/mongodb-migration-driver.js.map +1 -1
  196. package/esm/drivers/mongodb/mongodb-query-builder.d.ts +41 -9
  197. package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -1
  198. package/esm/drivers/mongodb/mongodb-query-builder.js +60 -18
  199. package/esm/drivers/mongodb/mongodb-query-builder.js.map +1 -1
  200. package/esm/drivers/mongodb/types.d.ts +1 -1
  201. package/esm/drivers/mongodb/types.d.ts.map +1 -1
  202. package/esm/drivers/postgres/postgres-dialect.d.ts +1 -0
  203. package/esm/drivers/postgres/postgres-dialect.d.ts.map +1 -1
  204. package/esm/drivers/postgres/postgres-dialect.js +24 -1
  205. package/esm/drivers/postgres/postgres-dialect.js.map +1 -1
  206. package/esm/drivers/postgres/postgres-driver.d.ts +24 -3
  207. package/esm/drivers/postgres/postgres-driver.d.ts.map +1 -1
  208. package/esm/drivers/postgres/postgres-driver.js +101 -8
  209. package/esm/drivers/postgres/postgres-driver.js.map +1 -1
  210. package/esm/drivers/postgres/postgres-migration-driver.d.ts +30 -1
  211. package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +1 -1
  212. package/esm/drivers/postgres/postgres-migration-driver.js +61 -2
  213. package/esm/drivers/postgres/postgres-migration-driver.js.map +1 -1
  214. package/esm/drivers/postgres/postgres-query-builder.d.ts +152 -722
  215. package/esm/drivers/postgres/postgres-query-builder.d.ts.map +1 -1
  216. package/esm/drivers/postgres/postgres-query-builder.js +592 -1459
  217. package/esm/drivers/postgres/postgres-query-builder.js.map +1 -1
  218. package/esm/drivers/postgres/postgres-query-parser.d.ts +34 -14
  219. package/esm/drivers/postgres/postgres-query-parser.d.ts.map +1 -1
  220. package/esm/drivers/postgres/postgres-query-parser.js +197 -39
  221. package/esm/drivers/postgres/postgres-query-parser.js.map +1 -1
  222. package/esm/drivers/sql/sql-dialect.contract.d.ts +1 -0
  223. package/esm/drivers/sql/sql-dialect.contract.d.ts.map +1 -1
  224. package/esm/errors/transaction-rollback.error.d.ts +20 -0
  225. package/esm/errors/transaction-rollback.error.d.ts.map +1 -0
  226. package/esm/errors/transaction-rollback.error.js +27 -0
  227. package/esm/errors/transaction-rollback.error.js.map +1 -0
  228. package/esm/events/model-events.d.ts +1 -1
  229. package/esm/events/model-events.d.ts.map +1 -1
  230. package/esm/index.d.ts +1 -0
  231. package/esm/index.d.ts.map +1 -1
  232. package/esm/index.js +1 -1
  233. package/esm/migration/column-builder.d.ts +4 -0
  234. package/esm/migration/column-builder.d.ts.map +1 -1
  235. package/esm/migration/column-builder.js +23 -6
  236. package/esm/migration/column-builder.js.map +1 -1
  237. package/esm/migration/migration-runner.d.ts.map +1 -1
  238. package/esm/migration/migration-runner.js +137 -23
  239. package/esm/migration/migration-runner.js.map +1 -1
  240. package/esm/migration/migration.d.ts +209 -35
  241. package/esm/migration/migration.d.ts.map +1 -1
  242. package/esm/migration/migration.js +192 -27
  243. package/esm/migration/migration.js.map +1 -1
  244. package/esm/model/methods/accessor-methods.d.ts +13 -0
  245. package/esm/model/methods/accessor-methods.d.ts.map +1 -0
  246. package/esm/model/methods/accessor-methods.js +51 -0
  247. package/esm/model/methods/accessor-methods.js.map +1 -0
  248. package/esm/model/methods/delete-methods.d.ts +10 -0
  249. package/esm/model/methods/delete-methods.d.ts.map +1 -0
  250. package/esm/model/methods/delete-methods.js +10 -0
  251. package/esm/model/methods/delete-methods.js.map +1 -0
  252. package/esm/model/methods/dirty-methods.d.ts +10 -0
  253. package/esm/model/methods/dirty-methods.d.ts.map +1 -0
  254. package/esm/model/methods/dirty-methods.js +15 -0
  255. package/esm/model/methods/dirty-methods.js.map +1 -0
  256. package/esm/model/methods/hydration-methods.d.ts +10 -0
  257. package/esm/model/methods/hydration-methods.d.ts.map +1 -0
  258. package/esm/model/methods/hydration-methods.js +57 -0
  259. package/esm/model/methods/hydration-methods.js.map +1 -0
  260. package/esm/model/methods/instance-event-methods.d.ts +7 -0
  261. package/esm/model/methods/instance-event-methods.d.ts.map +1 -0
  262. package/esm/model/methods/instance-event-methods.js +15 -0
  263. package/esm/model/methods/instance-event-methods.js.map +1 -0
  264. package/esm/model/methods/meta-methods.d.ts +7 -0
  265. package/esm/model/methods/meta-methods.d.ts.map +1 -0
  266. package/esm/model/methods/meta-methods.js +78 -0
  267. package/esm/model/methods/meta-methods.js.map +1 -0
  268. package/esm/model/methods/query-methods.d.ts +24 -0
  269. package/esm/model/methods/query-methods.d.ts.map +1 -0
  270. package/esm/model/methods/query-methods.js +161 -0
  271. package/esm/model/methods/query-methods.js.map +1 -0
  272. package/esm/model/methods/restore-methods.d.ts +10 -0
  273. package/esm/model/methods/restore-methods.d.ts.map +1 -0
  274. package/esm/model/methods/restore-methods.js +13 -0
  275. package/esm/model/methods/restore-methods.js.map +1 -0
  276. package/esm/model/methods/scope-methods.d.ts +7 -0
  277. package/esm/model/methods/scope-methods.d.ts.map +1 -0
  278. package/esm/model/methods/scope-methods.js +15 -0
  279. package/esm/model/methods/scope-methods.js.map +1 -0
  280. package/esm/model/methods/serialization-methods.d.ts +3 -0
  281. package/esm/model/methods/serialization-methods.d.ts.map +1 -0
  282. package/esm/model/methods/serialization-methods.js +27 -0
  283. package/esm/model/methods/serialization-methods.js.map +1 -0
  284. package/esm/model/methods/static-event-methods.d.ts +9 -0
  285. package/esm/model/methods/static-event-methods.d.ts.map +1 -0
  286. package/esm/model/methods/static-event-methods.js +29 -0
  287. package/esm/model/methods/static-event-methods.js.map +1 -0
  288. package/esm/model/methods/write-methods.d.ts +10 -0
  289. package/esm/model/methods/write-methods.d.ts.map +1 -0
  290. package/esm/model/methods/write-methods.js +52 -0
  291. package/esm/model/methods/write-methods.js.map +1 -0
  292. package/esm/model/model.d.ts +89 -58
  293. package/esm/model/model.d.ts.map +1 -1
  294. package/esm/model/model.js +166 -424
  295. package/esm/model/model.js.map +1 -1
  296. package/esm/model/model.types.d.ts +44 -0
  297. package/esm/model/model.types.d.ts.map +1 -0
  298. package/esm/model/register-model.d.ts +3 -3
  299. package/esm/model/register-model.d.ts.map +1 -1
  300. package/esm/query-builder/query-builder.d.ts +556 -0
  301. package/esm/query-builder/query-builder.d.ts.map +1 -0
  302. package/esm/query-builder/query-builder.js +1070 -0
  303. package/esm/query-builder/query-builder.js.map +1 -0
  304. package/esm/relations/helpers.d.ts.map +1 -1
  305. package/esm/relations/helpers.js +4 -0
  306. package/esm/relations/helpers.js.map +1 -1
  307. package/esm/relations/index.d.ts +2 -0
  308. package/esm/relations/index.d.ts.map +1 -1
  309. package/esm/relations/relation-hydrator.d.ts +68 -0
  310. package/esm/relations/relation-hydrator.d.ts.map +1 -0
  311. package/esm/relations/relation-hydrator.js +81 -0
  312. package/esm/relations/relation-hydrator.js.map +1 -0
  313. package/esm/relations/relation-loader.js +1 -1
  314. package/esm/relations/relation-loader.js.map +1 -1
  315. package/esm/relations/types.d.ts +26 -0
  316. package/esm/relations/types.d.ts.map +1 -1
  317. package/esm/sql-database-dirty-tracker.d.ts +13 -0
  318. package/esm/sql-database-dirty-tracker.d.ts.map +1 -0
  319. package/esm/sql-database-dirty-tracker.js +14 -0
  320. package/esm/sql-database-dirty-tracker.js.map +1 -0
  321. package/esm/types.d.ts +59 -0
  322. package/esm/types.d.ts.map +1 -1
  323. package/esm/utils/connect-to-database.d.ts +50 -1
  324. package/esm/utils/connect-to-database.d.ts.map +1 -1
  325. package/esm/utils/connect-to-database.js +14 -1
  326. package/esm/utils/connect-to-database.js.map +1 -1
  327. package/esm/utils/database-writer.utils.d.ts +1 -1
  328. package/esm/utils/database-writer.utils.d.ts.map +1 -1
  329. package/esm/utils/is-valid-date-value.d.ts +5 -0
  330. package/esm/utils/is-valid-date-value.d.ts.map +1 -0
  331. package/esm/utils/is-valid-date-value.js +25 -0
  332. package/esm/utils/is-valid-date-value.js.map +1 -0
  333. package/esm/utils/once-connected.d.ts.map +1 -1
  334. package/esm/utils/once-connected.js +4 -5
  335. package/esm/utils/once-connected.js.map +1 -1
  336. package/esm/writer/database-writer.d.ts.map +1 -1
  337. package/esm/writer/database-writer.js +7 -6
  338. package/esm/writer/database-writer.js.map +1 -1
  339. package/package.json +4 -4
@@ -0,0 +1,556 @@
1
+ /**
2
+ * Pure Query Builder Base Class
3
+ *
4
+ * Driver-agnostic operation recorder. All fluent methods push typed entries into
5
+ * `operations[]`. No SQL, no driver references, no table property, no execution.
6
+ *
7
+ * ┌─────────────────────────────────────────────────┐
8
+ * │ Usage contexts │
9
+ * │ (a) Subclassed — PG / Mongo / MySQL / … │
10
+ * │ (b) Instantiated directly (new QueryBuilder()) │
11
+ * │ inside callbacks for: │
12
+ * │ • nested where groups │
13
+ * │ • joinWith constraints │
14
+ * │ • whereExists / whereHas subqueries │
15
+ * └─────────────────────────────────────────────────┘
16
+ *
17
+ * Design rules:
18
+ * - `table` / alias are NOT here — the parser gets them from the executor.
19
+ * - `opIndex` is protected so subclasses can rebuild after direct mutation.
20
+ * - Op type names are stable — parsers switch on them; no renaming without
21
+ * a parser update.
22
+ * - OR-variants keep distinct op types (orWhere, orWhereColumn, …) so existing
23
+ * parsers that switch on type need no changes.
24
+ * - `joinWith` eagerly resolves callbacks → subOps at record time so the
25
+ * driver executor receives a plain data structure, not a live function.
26
+ *
27
+ * @module cascade/query-builder
28
+ */
29
+ import type { GroupByInput, HavingInput, JoinOptions, OrderDirection, RawExpression, WhereCallback, WhereObject, WhereOperator } from "../contracts/query-builder.contract";
30
+ /**
31
+ * A single recorded query operation.
32
+ * `type` is the discriminator; `data` carries all parameters.
33
+ */
34
+ export type Op = {
35
+ readonly type: string;
36
+ readonly data: Record<string, unknown>;
37
+ };
38
+ /**
39
+ * Constraint value accepted by `joinWith()`.
40
+ *
41
+ * - `string` → comma-separated column shorthand: `"id,name,createdAt"`
42
+ * - `fn` → callback receives a bare QueryBuilder to record sub-ops
43
+ *
44
+ * @example
45
+ * joinWith({ actions: "id,status" })
46
+ * joinWith({ actions: q => q.where("status", "pending").limit(5) })
47
+ */
48
+ export type JoinWithConstraint = string | ((q: QueryBuilder) => void);
49
+ /**
50
+ * Pure, driver-agnostic query builder.
51
+ *
52
+ * Records operations in `operations[]`. Subclasses own execution, parsing, and
53
+ * driver-specific clause generation. Safe to instantiate directly inside
54
+ * callbacks where only operation recording is needed.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * // Driver subclass usage:
59
+ * const users = await User.query()
60
+ * .select(["id", "name"])
61
+ * .where("status", "active")
62
+ * .where(q => q.where("role", "admin").orWhere("role", "mod"))
63
+ * .orderBy("createdAt", "desc")
64
+ * .limit(10)
65
+ * .get();
66
+ *
67
+ * // Direct instantiation (callback context — no driver needed):
68
+ * joinWith({ actions: q => q.where("status", "pending").limit(5) });
69
+ * // The sub-QB's operations[] are captured and stored in the joinWith op data.
70
+ * ```
71
+ */
72
+ export declare class QueryBuilder<T = unknown> {
73
+ /** Flat, ordered list of recorded operations. Public for parser access. */
74
+ operations: Op[];
75
+ /**
76
+ * type → ordered list of indices into `operations[]`.
77
+ *
78
+ * Protected (not private) so:
79
+ * - `rebuildIndex()` can reset it after direct `operations[]` mutation.
80
+ * - Subclasses can inspect it without unsafe casts.
81
+ *
82
+ * External consumers should use `getOps(type)` instead.
83
+ */
84
+ protected opIndex: Map<string, number[]>;
85
+ /** Global scope definitions injected by Model.query(). Keyed by scope name. */
86
+ pendingGlobalScopes?: Map<string, any>;
87
+ /** Local scope callbacks injected by Model.query(). Applied on demand via scope(). */
88
+ availableLocalScopes?: Map<string, (...args: any[]) => void>;
89
+ /** Names of global scopes that have been intentionally disabled. */
90
+ disabledGlobalScopes: Set<string>;
91
+ /** True once the driver subclass has applied pending scopes. */
92
+ scopesApplied: boolean;
93
+ /** Relations to eager-load via separate queries. */
94
+ eagerLoadRelations: Map<string, boolean | ((query: any) => void)>;
95
+ /** Relation names to count alongside results. */
96
+ countRelations: string[];
97
+ /** Relation definition map injected from the owning Model. */
98
+ relationDefinitions?: Record<string, any>;
99
+ /** The Model class reference, required for relation resolution. */
100
+ modelClass?: any;
101
+ /**
102
+ * Append an operation to `operations[]` and update `opIndex`.
103
+ * Every fluent method calls this.
104
+ */
105
+ protected addOperation(type: string, data: Record<string, unknown>): void;
106
+ /**
107
+ * Return all recorded operations of the specified types in original
108
+ * insertion order.
109
+ *
110
+ * @example
111
+ * builder.getOps("where", "orWhere", "whereIn")
112
+ */
113
+ getOps(...types: string[]): Op[];
114
+ /**
115
+ * Rebuild `opIndex` from scratch.
116
+ *
117
+ * Call this after any direct mutation of `this.operations[]` (e.g. scope
118
+ * injection, joinWith consumption in the executor, clone post-processing).
119
+ */
120
+ rebuildIndex(): void;
121
+ /**
122
+ * Factory for sub-QueryBuilders used inside callbacks.
123
+ *
124
+ * Override in driver subclasses to return a driver-typed instance, so that
125
+ * driver-specific methods (e.g. `whereArrayContains`) are available inside
126
+ * nested `where(q => ...)` / `whereHas` / `joinWith` callbacks.
127
+ *
128
+ * @example
129
+ * // In PostgresQueryBuilder:
130
+ * protected override subQuery(): QueryBuilder {
131
+ * return new PostgresQueryBuilder("__sub__", this.dataSource);
132
+ * }
133
+ */
134
+ protected subQuery(): QueryBuilder;
135
+ /**
136
+ * Shallow-clone this builder — copies operations, opIndex, and all shared state.
137
+ *
138
+ * Subclasses MUST call `super.clone()` and then copy their own fields
139
+ * (dataSource, joinRelations, …).
140
+ */
141
+ clone(): this;
142
+ /** Disable one or more named global scopes for this query. */
143
+ withoutGlobalScope(...scopeNames: string[]): this;
144
+ /** Disable ALL pending global scopes for this query. */
145
+ withoutGlobalScopes(): this;
146
+ /**
147
+ * Apply a registered local scope by name.
148
+ * @throws if no local scopes are available or the named scope is not found
149
+ */
150
+ scope(scopeName: string, ...args: unknown[]): this;
151
+ /**
152
+ * Add a WHERE clause (AND).
153
+ *
154
+ * @example
155
+ * q.where("status", "active")
156
+ * q.where("age", ">", 18)
157
+ * q.where({ role: "admin", active: true })
158
+ * q.where(q => q.where("a", 1).orWhere("b", 2))
159
+ */
160
+ where(field: string, value: unknown): this;
161
+ where(field: string, operator: WhereOperator, value: unknown): this;
162
+ where(conditions: WhereObject): this;
163
+ where(callback: WhereCallback<T>): this;
164
+ /**
165
+ * Add an OR WHERE clause.
166
+ *
167
+ * @example
168
+ * q.where("role", "admin").orWhere("role", "mod")
169
+ */
170
+ orWhere(field: string, value: unknown): this;
171
+ orWhere(field: string, operator: WhereOperator, value: unknown): this;
172
+ orWhere(conditions: WhereObject): this;
173
+ orWhere(callback: WhereCallback<T>): this;
174
+ /**
175
+ * Raw WHERE expression in the target dialect (AND).
176
+ *
177
+ * @example
178
+ * q.whereRaw("age > ? AND role = ?", [18, "admin"]) // SQL
179
+ * q.whereRaw({ $expr: { $gt: ["$stock", "$reserved"] } }) // MongoDB
180
+ */
181
+ whereRaw(expression: RawExpression, bindings?: unknown[]): this;
182
+ /** Raw OR WHERE expression. */
183
+ orWhereRaw(expression: RawExpression, bindings?: unknown[]): this;
184
+ /**
185
+ * Compare two columns directly (AND).
186
+ * @example q.whereColumn("stock", ">", "reserved")
187
+ */
188
+ whereColumn(first: string, operator: WhereOperator, second: string): this;
189
+ /** Compare two columns directly (OR). */
190
+ orWhereColumn(first: string, operator: WhereOperator, second: string): this;
191
+ /** Compare multiple column pairs in one call. */
192
+ whereColumns(comparisons: Array<[left: string, operator: WhereOperator, right: string]>): this;
193
+ /**
194
+ * Field value must fall between two other column values.
195
+ * Stored as a `whereBetween` op with `useColumns: true` so the SQL parser
196
+ * knows to quote the values as identifiers rather than bind them.
197
+ */
198
+ whereBetweenColumns(field: string, lowerColumn: string, upperColumn: string): this;
199
+ /** WHERE field IN values. */
200
+ whereIn(field: string, values: unknown[]): this;
201
+ /** WHERE field NOT IN values. */
202
+ whereNotIn(field: string, values: unknown[]): this;
203
+ /** WHERE field IS NULL. */
204
+ whereNull(field: string): this;
205
+ /** WHERE field IS NOT NULL. */
206
+ whereNotNull(field: string): this;
207
+ /** WHERE field BETWEEN low AND high. */
208
+ whereBetween(field: string, range: [unknown, unknown]): this;
209
+ /** WHERE field NOT BETWEEN low AND high. */
210
+ whereNotBetween(field: string, range: [unknown, unknown]): this;
211
+ /**
212
+ * LIKE pattern match (AND).
213
+ * @example q.whereLike("email", "%@gmail.com")
214
+ */
215
+ whereLike(field: string, pattern: RegExp | string): this;
216
+ /** NOT LIKE pattern match. */
217
+ whereNotLike(field: string, pattern: RegExp | string): this;
218
+ /** Starts with a prefix. */
219
+ whereStartsWith(field: string, value: string | number): this;
220
+ /** Does NOT start with a prefix. */
221
+ whereNotStartsWith(field: string, value: string | number): this;
222
+ /** Ends with a suffix. */
223
+ whereEndsWith(field: string, value: string | number): this;
224
+ /** Does NOT end with a suffix. */
225
+ whereNotEndsWith(field: string, value: string | number): this;
226
+ /**
227
+ * Match on date portion only (time ignored).
228
+ * @example q.whereDate("createdAt", "2024-05-01")
229
+ */
230
+ whereDate(field: string, value: Date | string): this;
231
+ /** Alias for whereDate. */
232
+ whereDateEquals(field: string, value: Date | string): this;
233
+ /** Field date is before value. */
234
+ whereDateBefore(field: string, value: Date | string): this;
235
+ /** Field date is after value. */
236
+ whereDateAfter(field: string, value: Date | string): this;
237
+ /** Field date is within a range [from, to]. */
238
+ whereDateBetween(field: string, range: [Date | string, Date | string]): this;
239
+ /** Field date is NOT within a range. */
240
+ whereDateNotBetween(field: string, range: [Date | string, Date | string]): this;
241
+ /**
242
+ * Match on the time portion of a datetime field.
243
+ * Emits a `whereRaw` op with a driver-agnostic marker; the driver parser
244
+ * rewrites it to the appropriate SQL (`TIME(field) = ?`) or Mongo expression.
245
+ */
246
+ whereTime(field: string, value: string): this;
247
+ /**
248
+ * Day-of-month from a date field (1–31).
249
+ * Uses a `whereRaw` op so SQL parsers get the `EXTRACT` expression directly.
250
+ * MongoDB drivers override to emit `$dayOfMonth`.
251
+ */
252
+ whereDay(field: string, value: number): this;
253
+ /** Month extracted from a date field (1–12). */
254
+ whereMonth(field: string, value: number): this;
255
+ /** Year extracted from a date field. */
256
+ whereYear(field: string, value: number): this;
257
+ /**
258
+ * JSON/array path contains the given value.
259
+ * @example q.whereJsonContains("tags", "typescript")
260
+ */
261
+ whereJsonContains(path: string, value: unknown): this;
262
+ /** JSON/array path does NOT contain the value. */
263
+ whereJsonDoesntContain(path: string, value: unknown): this;
264
+ /**
265
+ * JSON path key exists.
266
+ * Uses a `whereRaw` so existing SQL parsers get `IS NOT NULL` immediately.
267
+ */
268
+ whereJsonContainsKey(path: string): this;
269
+ /**
270
+ * Constrain the length of a JSON array at a path.
271
+ * @example q.whereJsonLength("tags", ">", 3)
272
+ */
273
+ whereJsonLength(path: string, operator: WhereOperator, value: number): this;
274
+ /** JSON path must resolve to an array. */
275
+ whereJsonIsArray(path: string): this;
276
+ /** JSON path must resolve to an object. */
277
+ whereJsonIsObject(path: string): this;
278
+ /**
279
+ * Constrain the number of elements in an array field.
280
+ * @example q.whereArrayLength("roles", ">=", 2)
281
+ */
282
+ whereArrayLength(field: string, operator: WhereOperator, value: number): this;
283
+ /** WHERE id = value. */
284
+ whereId(value: string | number): this;
285
+ /** WHERE id IN values. */
286
+ whereIds(values: Array<string | number>): this;
287
+ /** WHERE uuid = value. */
288
+ whereUuid(value: string): this;
289
+ /** WHERE ulid = value. */
290
+ whereUlid(value: string): this;
291
+ /**
292
+ * Full-text search across one or more fields.
293
+ * @example q.whereFullText(["title", "body"], "typescript")
294
+ */
295
+ whereFullText(fields: string | string[], query: string): this;
296
+ /** Full-text search (OR). */
297
+ orWhereFullText(fields: string | string[], query: string): this;
298
+ /** Alias for whereFullText with a single field. */
299
+ whereSearch(field: string, query: string): this;
300
+ /**
301
+ * Text search with optional extra equality filters.
302
+ * MongoDB-style convenience shorthand.
303
+ */
304
+ textSearch(query: string, filters?: WhereObject): this;
305
+ /**
306
+ * WHERE EXISTS (subquery callback) or field IS NOT NULL (string).
307
+ *
308
+ * @example
309
+ * q.whereExists(sub => sub.where("userId", "users.id"))
310
+ * q.whereExists("optionalField")
311
+ */
312
+ whereExists(field: string): this;
313
+ whereExists(callback: WhereCallback<T>): this;
314
+ /**
315
+ * WHERE NOT EXISTS (subquery callback) or field IS NULL (string).
316
+ */
317
+ whereNotExists(field: string): this;
318
+ whereNotExists(callback: WhereCallback<T>): this;
319
+ /**
320
+ * Constrain an array/collection field by element count.
321
+ *
322
+ * @example
323
+ * q.whereSize("tags", 3) // exactly 3
324
+ * q.whereSize("tags", ">=", 1) // at least 1
325
+ */
326
+ whereSize(field: string, size: number): this;
327
+ whereSize(field: string, operator: WhereOperator, size: number): this;
328
+ /**
329
+ * AND NOT wrapper — negate a nested group.
330
+ * @example q.whereNot(q => q.where("status", "banned").where("role", "user"))
331
+ */
332
+ whereNot(callback: WhereCallback<T>): this;
333
+ /** OR NOT wrapper. */
334
+ orWhereNot(callback: WhereCallback<T>): this;
335
+ /**
336
+ * INNER JOIN.
337
+ * @example q.join("categories", "posts.categoryId", "categories.id")
338
+ */
339
+ join(table: string, localField: string, foreignField: string): this;
340
+ join(options: JoinOptions): this;
341
+ /** LEFT JOIN. */
342
+ leftJoin(table: string, localField: string, foreignField: string): this;
343
+ leftJoin(options: JoinOptions): this;
344
+ /** RIGHT JOIN. */
345
+ rightJoin(table: string, localField: string, foreignField: string): this;
346
+ rightJoin(options: JoinOptions): this;
347
+ /** INNER JOIN (alias for join). */
348
+ innerJoin(table: string, localField: string, foreignField: string): this;
349
+ innerJoin(options: JoinOptions): this;
350
+ /** FULL OUTER JOIN. */
351
+ fullJoin(table: string, localField: string, foreignField: string): this;
352
+ fullJoin(options: JoinOptions): this;
353
+ /** CROSS JOIN. */
354
+ crossJoin(table: string): this;
355
+ /** Raw JOIN expression. Driver responsible for handling. */
356
+ joinRaw(expression: RawExpression, bindings?: unknown[]): this;
357
+ /**
358
+ * Eager-load named relations via a single JOIN / $lookup query.
359
+ *
360
+ * Constraints are eagerly resolved at call time:
361
+ * - Callbacks are invoked immediately → `subOps` stored in op data.
362
+ * - Column shorthands are parsed into a `columns[]` array.
363
+ *
364
+ * The driver executor reads the `joinWith` op and uses the resolved data
365
+ * alongside its own relation definition map to emit the appropriate SQL JOIN
366
+ * or MongoDB $lookup stage.
367
+ *
368
+ * Supported arg forms (may be mixed):
369
+ * - `"author"` / `["author", "category"]` — no constraint
370
+ * - `{ author: "id,name" }` — column shorthand
371
+ * - `{ actions: q => q.where("status","pending").limit(5) }` — callback
372
+ *
373
+ * @example
374
+ * Post.joinWith("author", "category")
375
+ * ChatMessage.joinWith({ actions: q => q.where("status", "pending").limit(5) })
376
+ * ChatMessage.joinWith({ org: "id,name", actions: q => q.orderBy("sort_order") })
377
+ */
378
+ joinWith(...args: unknown[]): this;
379
+ /**
380
+ * Eager-load relations via separate queries (N+1 avoided by batching).
381
+ *
382
+ * @example
383
+ * q.with("posts")
384
+ * q.with("posts", q => q.where("published", true))
385
+ * q.with({ posts: true, comments: q => q.limit(5) })
386
+ */
387
+ with(...args: (string | Record<string, boolean | ((q: any) => void)> | ((q: any) => void))[]): this;
388
+ /** Count related models alongside results. */
389
+ withCount(...relations: string[]): this;
390
+ /**
391
+ * Filter to rows that have at least one related record.
392
+ * @example q.has("comments")
393
+ * @example q.has("comments", ">=", 3)
394
+ */
395
+ has(relation: string, operator?: WhereOperator, count?: number): this;
396
+ /**
397
+ * Filter to rows with related records matching a sub-query (AND).
398
+ * @example q.whereHas("comments", q => q.where("approved", true))
399
+ */
400
+ whereHas(relation: string, callback: (q: any) => void): this;
401
+ /** Same as whereHas but OR-joined. */
402
+ orWhereHas(relation: string, callback: (q: any) => void): this;
403
+ /** Filter to rows with NO related records. */
404
+ doesntHave(relation: string): this;
405
+ /** Filter to rows with NO related records matching conditions. */
406
+ whereDoesntHave(relation: string, callback: (q: any) => void): this;
407
+ /**
408
+ * Select specific columns.
409
+ *
410
+ * @example
411
+ * q.select(["id", "name"])
412
+ * q.select("id", "name")
413
+ * q.select({ name: 1, password: 0 }) // MongoDB-style projection
414
+ */
415
+ select(fields: string[]): this;
416
+ select(fields: Record<string, 0 | 1 | boolean>): this;
417
+ select(...fields: Array<string | string[]>): this;
418
+ /** Select a field under an alias. @example q.selectAs("fullName", "name") */
419
+ selectAs(field: string, alias: string): this;
420
+ /**
421
+ * Raw SELECT expression.
422
+ * @example q.selectRaw("COUNT(*) AS total")
423
+ */
424
+ selectRaw(expression: RawExpression, bindings?: unknown[]): this;
425
+ /** Multiple raw SELECT expressions in one call. */
426
+ selectRawMany(definitions: Array<{
427
+ alias: string;
428
+ expression: RawExpression;
429
+ bindings?: unknown[];
430
+ }>): this;
431
+ /** Subquery as a named projected field. */
432
+ selectSub(expression: RawExpression, alias: string): this;
433
+ /** Alias for selectSub. */
434
+ addSelectSub(expression: RawExpression, alias: string): this;
435
+ /**
436
+ * Aggregate function as a projected field.
437
+ * @example q.selectAggregate("price", "sum", "totalRevenue")
438
+ */
439
+ selectAggregate(field: string, aggregate: "sum" | "avg" | "min" | "max" | "count" | "first" | "last", alias: string): this;
440
+ /** Existence check as a projected boolean field. */
441
+ selectExists(field: string, alias: string): this;
442
+ /** COUNT as a projected field. */
443
+ selectCount(field: string, alias: string): this;
444
+ /**
445
+ * CASE / switch expression.
446
+ * @example q.selectCase([{ when: "status = 1", then: "'active'" }], "'inactive'", "statusLabel")
447
+ */
448
+ selectCase(cases: Array<{
449
+ when: RawExpression;
450
+ then: RawExpression | unknown;
451
+ }>, otherwise: RawExpression | unknown, alias: string): this;
452
+ /** IF/ELSE conditional field. */
453
+ selectWhen(condition: RawExpression, thenValue: RawExpression | unknown, elseValue: RawExpression | unknown, alias: string): this;
454
+ /**
455
+ * Driver-native projection manipulation.
456
+ * No-op in base — override in driver subclasses.
457
+ */
458
+ selectDriverProjection(_callback: (projection: Record<string, unknown>) => void): this;
459
+ /** JSON path extraction as a projected field. */
460
+ selectJson(path: string, alias?: string): this;
461
+ /** JSON extraction via raw expression. */
462
+ selectJsonRaw(_path: string, expression: RawExpression, alias: string): this;
463
+ /** Exclude a JSON path from projection. */
464
+ deselectJson(path: string): this;
465
+ /** String concatenation as a projected field. */
466
+ selectConcat(fields: Array<string | RawExpression>, alias: string): this;
467
+ /** COALESCE (first non-null) as a projected field. */
468
+ selectCoalesce(fields: Array<string | RawExpression>, alias: string): this;
469
+ /** Window function expression. */
470
+ selectWindow(spec: RawExpression): this;
471
+ /** Exclude specific columns from results. */
472
+ deselect(fields: string[]): this;
473
+ /**
474
+ * Remove all select operations (resets to wildcard).
475
+ * Uses `rebuildIndex()` — no unsafe casts.
476
+ */
477
+ clearSelect(): this;
478
+ /** Alias for clearSelect. */
479
+ selectAll(): this;
480
+ /** Alias for clearSelect. */
481
+ selectDefault(): this;
482
+ /** Append additional fields to existing selection. */
483
+ addSelect(fields: string[]): this;
484
+ /**
485
+ * Record a DISTINCT flag (fluent — does not execute).
486
+ * Subclasses expose a separate async `distinct(field)` execution method.
487
+ */
488
+ distinctValues(fields?: string | string[]): this;
489
+ /**
490
+ * ORDER BY a column.
491
+ *
492
+ * @example
493
+ * q.orderBy("createdAt", "desc")
494
+ * q.orderBy({ name: "asc", age: "desc" })
495
+ */
496
+ orderBy(field: string, direction?: OrderDirection): this;
497
+ orderBy(fields: Record<string, OrderDirection>): this;
498
+ /** ORDER BY descending shorthand. */
499
+ orderByDesc(field: string): this;
500
+ /**
501
+ * Raw ORDER BY expression.
502
+ * @example q.orderByRaw("RANDOM()")
503
+ * @example q.orderByRaw({ $meta: "textScore" })
504
+ */
505
+ orderByRaw(expression: RawExpression, bindings?: unknown[]): this;
506
+ /**
507
+ * Random order. Maps to `RANDOM()` in SQL or `$sample` in MongoDB.
508
+ * @param limit - Optional limit (required for MongoDB $sample)
509
+ */
510
+ orderByRandom(limit?: number): this;
511
+ /** Order ascending by a date column (oldest first). */
512
+ oldest(column?: string): this;
513
+ /** Limit number of results. */
514
+ limit(value: number): this;
515
+ /** Skip N results (OFFSET). */
516
+ skip(value: number): this;
517
+ /** Alias for skip. */
518
+ offset(value: number): this;
519
+ /** Alias for limit. */
520
+ take(value: number): this;
521
+ /**
522
+ * GROUP BY clause.
523
+ * @example q.groupBy("status")
524
+ * @example q.groupBy(["year", "month"])
525
+ */
526
+ groupBy(input: GroupByInput): this;
527
+ /** Raw GROUP BY expression. */
528
+ groupByRaw(expression: RawExpression, bindings?: unknown[]): this;
529
+ /**
530
+ * HAVING clause (post-group filter).
531
+ *
532
+ * @example
533
+ * q.having("total", ">", 100)
534
+ * q.having(["total", ">", 100])
535
+ * q.having({ total: 100 })
536
+ */
537
+ having(field: string, value: unknown): this;
538
+ having(field: string, operator: WhereOperator, value: unknown): this;
539
+ having(condition: HavingInput): this;
540
+ /** Raw HAVING expression. */
541
+ havingRaw(expression: RawExpression, bindings?: unknown[]): this;
542
+ /**
543
+ * Side-effect tap — executes callback synchronously and returns `this`.
544
+ * @example q.where(...).tap(q => console.log(q.operations.length)).limit(10)
545
+ */
546
+ tap(callback: (builder: this) => void): this;
547
+ /**
548
+ * Conditionally apply query modifications.
549
+ *
550
+ * @example
551
+ * q.when(userId, (q, id) => q.where("userId", id))
552
+ * q.when(isAdmin, q => q.withoutGlobalScopes(), q => q.scope("active"))
553
+ */
554
+ when<V>(condition: V | boolean, callback: (builder: this, value: V) => void, otherwise?: (builder: this) => void): this;
555
+ }
556
+ //# sourceMappingURL=query-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/query-builder/query-builder.ts"],"names":[],"mappings":"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"}