@warlock.js/cascade 4.0.162 → 4.0.164

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 (661) hide show
  1. package/cjs/context/database-data-source-context.d.ts +29 -0
  2. package/cjs/context/database-data-source-context.d.ts.map +1 -0
  3. package/cjs/context/database-data-source-context.js +28 -0
  4. package/cjs/context/database-data-source-context.js.map +1 -0
  5. package/cjs/context/database-transaction-context.d.ts +35 -0
  6. package/cjs/context/database-transaction-context.d.ts.map +1 -0
  7. package/cjs/context/database-transaction-context.js +40 -0
  8. package/cjs/context/database-transaction-context.js.map +1 -0
  9. package/cjs/contracts/database-driver.contract.d.ts +450 -0
  10. package/cjs/contracts/database-driver.contract.d.ts.map +1 -0
  11. package/cjs/contracts/database-id-generator.contract.d.ts +109 -0
  12. package/cjs/contracts/database-id-generator.contract.d.ts.map +1 -0
  13. package/cjs/contracts/database-remover.contract.d.ts +104 -0
  14. package/cjs/contracts/database-remover.contract.d.ts.map +1 -0
  15. package/cjs/contracts/database-restorer.contract.d.ts +143 -0
  16. package/cjs/contracts/database-restorer.contract.d.ts.map +1 -0
  17. package/cjs/contracts/database-writer.contract.d.ts +119 -0
  18. package/cjs/contracts/database-writer.contract.d.ts.map +1 -0
  19. package/cjs/contracts/driver-blueprint.contract.d.ts +49 -0
  20. package/cjs/contracts/driver-blueprint.contract.d.ts.map +1 -0
  21. package/cjs/contracts/index.d.ts +10 -0
  22. package/cjs/contracts/index.d.ts.map +1 -0
  23. package/cjs/contracts/migration-driver.contract.d.ts +522 -0
  24. package/cjs/contracts/migration-driver.contract.d.ts.map +1 -0
  25. package/cjs/contracts/query-builder.contract.d.ts +1609 -0
  26. package/cjs/contracts/query-builder.contract.d.ts.map +1 -0
  27. package/cjs/contracts/sync-adapter.contract.d.ts +58 -0
  28. package/cjs/contracts/sync-adapter.contract.d.ts.map +1 -0
  29. package/cjs/data-source/data-source-registry.d.ts +108 -0
  30. package/cjs/data-source/data-source-registry.d.ts.map +1 -0
  31. package/cjs/data-source/data-source-registry.js +145 -0
  32. package/cjs/data-source/data-source-registry.js.map +1 -0
  33. package/cjs/data-source/data-source.d.ts +147 -0
  34. package/cjs/data-source/data-source.d.ts.map +1 -0
  35. package/cjs/data-source/data-source.js +83 -0
  36. package/cjs/data-source/data-source.js.map +1 -0
  37. package/cjs/database-dirty-tracker.d.ts +252 -0
  38. package/cjs/database-dirty-tracker.d.ts.map +1 -0
  39. package/cjs/database-dirty-tracker.js +386 -0
  40. package/cjs/database-dirty-tracker.js.map +1 -0
  41. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts +30 -0
  42. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
  43. package/cjs/drivers/mongodb/mongodb-blueprint.js +51 -0
  44. package/cjs/drivers/mongodb/mongodb-blueprint.js.map +1 -0
  45. package/cjs/drivers/mongodb/mongodb-driver.d.ts +325 -0
  46. package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
  47. package/cjs/drivers/mongodb/mongodb-driver.js +838 -0
  48. package/cjs/drivers/mongodb/mongodb-driver.js.map +1 -0
  49. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts +116 -0
  50. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
  51. package/cjs/drivers/mongodb/mongodb-id-generator.js +149 -0
  52. package/cjs/drivers/mongodb/mongodb-id-generator.js.map +1 -0
  53. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts +317 -0
  54. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
  55. package/cjs/drivers/mongodb/mongodb-migration-driver.js +666 -0
  56. package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
  57. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts +1122 -0
  58. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
  59. package/cjs/drivers/mongodb/mongodb-query-builder.js +1988 -0
  60. package/cjs/drivers/mongodb/mongodb-query-builder.js.map +1 -0
  61. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts +226 -0
  62. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
  63. package/cjs/drivers/mongodb/mongodb-query-operations.js +270 -0
  64. package/cjs/drivers/mongodb/mongodb-query-operations.js.map +1 -0
  65. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts +262 -0
  66. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
  67. package/cjs/drivers/mongodb/mongodb-query-parser.js +1351 -0
  68. package/cjs/drivers/mongodb/mongodb-query-parser.js.map +1 -0
  69. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts +79 -0
  70. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
  71. package/cjs/drivers/mongodb/mongodb-sync-adapter.js +146 -0
  72. package/cjs/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
  73. package/cjs/drivers/mongodb/types.d.ts +43 -0
  74. package/cjs/drivers/mongodb/types.d.ts.map +1 -0
  75. package/cjs/drivers/postgres/index.d.ts +16 -0
  76. package/cjs/drivers/postgres/index.d.ts.map +1 -0
  77. package/cjs/drivers/postgres/postgres-blueprint.d.ts +64 -0
  78. package/cjs/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
  79. package/cjs/drivers/postgres/postgres-blueprint.js +121 -0
  80. package/cjs/drivers/postgres/postgres-blueprint.js.map +1 -0
  81. package/cjs/drivers/postgres/postgres-dialect.d.ts +136 -0
  82. package/cjs/drivers/postgres/postgres-dialect.d.ts.map +1 -0
  83. package/cjs/drivers/postgres/postgres-dialect.js +268 -0
  84. package/cjs/drivers/postgres/postgres-dialect.js.map +1 -0
  85. package/cjs/drivers/postgres/postgres-driver.d.ts +432 -0
  86. package/cjs/drivers/postgres/postgres-driver.d.ts.map +1 -0
  87. package/cjs/drivers/postgres/postgres-driver.js +1010 -0
  88. package/cjs/drivers/postgres/postgres-driver.js.map +1 -0
  89. package/cjs/drivers/postgres/postgres-migration-driver.d.ts +397 -0
  90. package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
  91. package/cjs/drivers/postgres/postgres-migration-driver.js +900 -0
  92. package/cjs/drivers/postgres/postgres-migration-driver.js.map +1 -0
  93. package/cjs/drivers/postgres/postgres-query-builder.d.ts +254 -0
  94. package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
  95. package/cjs/drivers/postgres/postgres-query-builder.js +933 -0
  96. package/cjs/drivers/postgres/postgres-query-builder.js.map +1 -0
  97. package/cjs/drivers/postgres/postgres-query-parser.d.ts +328 -0
  98. package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
  99. package/cjs/drivers/postgres/postgres-query-parser.js +868 -0
  100. package/cjs/drivers/postgres/postgres-query-parser.js.map +1 -0
  101. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
  102. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
  103. package/cjs/drivers/postgres/postgres-sql-serializer.js +400 -0
  104. package/cjs/drivers/postgres/postgres-sql-serializer.js.map +1 -0
  105. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
  106. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
  107. package/cjs/drivers/postgres/postgres-sync-adapter.js +197 -0
  108. package/cjs/drivers/postgres/postgres-sync-adapter.js.map +1 -0
  109. package/cjs/drivers/postgres/types.d.ts +144 -0
  110. package/cjs/drivers/postgres/types.d.ts.map +1 -0
  111. package/cjs/drivers/sql/index.d.ts +10 -0
  112. package/cjs/drivers/sql/index.d.ts.map +1 -0
  113. package/cjs/drivers/sql/sql-dialect.contract.d.ts +204 -0
  114. package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
  115. package/cjs/drivers/sql/sql-types.d.ts +202 -0
  116. package/cjs/drivers/sql/sql-types.d.ts.map +1 -0
  117. package/cjs/errors/missing-data-source.error.d.ts +22 -0
  118. package/cjs/errors/missing-data-source.error.d.ts.map +1 -0
  119. package/cjs/errors/missing-data-source.error.js +29 -0
  120. package/cjs/errors/missing-data-source.error.js.map +1 -0
  121. package/cjs/errors/transaction-rollback.error.d.ts +20 -0
  122. package/cjs/errors/transaction-rollback.error.d.ts.map +1 -0
  123. package/cjs/errors/transaction-rollback.error.js +27 -0
  124. package/cjs/errors/transaction-rollback.error.js.map +1 -0
  125. package/cjs/events/model-events.d.ts +231 -0
  126. package/cjs/events/model-events.d.ts.map +1 -0
  127. package/cjs/events/model-events.js +259 -0
  128. package/cjs/events/model-events.js.map +1 -0
  129. package/cjs/expressions/aggregate-expressions.d.ts +215 -0
  130. package/cjs/expressions/aggregate-expressions.d.ts.map +1 -0
  131. package/cjs/expressions/aggregate-expressions.js +221 -0
  132. package/cjs/expressions/aggregate-expressions.js.map +1 -0
  133. package/cjs/expressions/index.d.ts +2 -0
  134. package/cjs/expressions/index.d.ts.map +1 -0
  135. package/cjs/index.d.ts +45 -0
  136. package/cjs/index.d.ts.map +1 -0
  137. package/cjs/index.js +1 -0
  138. package/cjs/index.js.map +1 -0
  139. package/cjs/migration/column-builder.d.ts +417 -0
  140. package/cjs/migration/column-builder.d.ts.map +1 -0
  141. package/cjs/migration/column-builder.js +586 -0
  142. package/cjs/migration/column-builder.js.map +1 -0
  143. package/cjs/migration/column-helpers.d.ts +275 -0
  144. package/cjs/migration/column-helpers.d.ts.map +1 -0
  145. package/cjs/migration/column-helpers.js +389 -0
  146. package/cjs/migration/column-helpers.js.map +1 -0
  147. package/cjs/migration/foreign-key-builder.d.ts +103 -0
  148. package/cjs/migration/foreign-key-builder.d.ts.map +1 -0
  149. package/cjs/migration/foreign-key-builder.js +121 -0
  150. package/cjs/migration/foreign-key-builder.js.map +1 -0
  151. package/cjs/migration/index.d.ts +7 -0
  152. package/cjs/migration/index.d.ts.map +1 -0
  153. package/cjs/migration/migration-runner.d.ts +278 -0
  154. package/cjs/migration/migration-runner.d.ts.map +1 -0
  155. package/cjs/migration/migration-runner.js +815 -0
  156. package/cjs/migration/migration-runner.js.map +1 -0
  157. package/cjs/migration/migration.d.ts +1992 -0
  158. package/cjs/migration/migration.d.ts.map +1 -0
  159. package/cjs/migration/migration.js +2162 -0
  160. package/cjs/migration/migration.js.map +1 -0
  161. package/cjs/migration/sql-grammar.d.ts +61 -0
  162. package/cjs/migration/sql-grammar.d.ts.map +1 -0
  163. package/cjs/migration/sql-grammar.js +164 -0
  164. package/cjs/migration/sql-grammar.js.map +1 -0
  165. package/cjs/migration/sql-serializer.d.ts +22 -0
  166. package/cjs/migration/sql-serializer.d.ts.map +1 -0
  167. package/cjs/migration/sql-serializer.js +26 -0
  168. package/cjs/migration/sql-serializer.js.map +1 -0
  169. package/cjs/migration/types.d.ts +155 -0
  170. package/cjs/migration/types.d.ts.map +1 -0
  171. package/cjs/model/methods/accessor-methods.d.ts +13 -0
  172. package/cjs/model/methods/accessor-methods.d.ts.map +1 -0
  173. package/cjs/model/methods/accessor-methods.js +51 -0
  174. package/cjs/model/methods/accessor-methods.js.map +1 -0
  175. package/cjs/model/methods/delete-methods.d.ts +10 -0
  176. package/cjs/model/methods/delete-methods.d.ts.map +1 -0
  177. package/cjs/model/methods/delete-methods.js +10 -0
  178. package/cjs/model/methods/delete-methods.js.map +1 -0
  179. package/cjs/model/methods/dirty-methods.d.ts +10 -0
  180. package/cjs/model/methods/dirty-methods.d.ts.map +1 -0
  181. package/cjs/model/methods/dirty-methods.js +15 -0
  182. package/cjs/model/methods/dirty-methods.js.map +1 -0
  183. package/cjs/model/methods/hydration-methods.d.ts +10 -0
  184. package/cjs/model/methods/hydration-methods.d.ts.map +1 -0
  185. package/cjs/model/methods/hydration-methods.js +57 -0
  186. package/cjs/model/methods/hydration-methods.js.map +1 -0
  187. package/cjs/model/methods/instance-event-methods.d.ts +7 -0
  188. package/cjs/model/methods/instance-event-methods.d.ts.map +1 -0
  189. package/cjs/model/methods/instance-event-methods.js +15 -0
  190. package/cjs/model/methods/instance-event-methods.js.map +1 -0
  191. package/cjs/model/methods/meta-methods.d.ts +7 -0
  192. package/cjs/model/methods/meta-methods.d.ts.map +1 -0
  193. package/cjs/model/methods/meta-methods.js +78 -0
  194. package/cjs/model/methods/meta-methods.js.map +1 -0
  195. package/cjs/model/methods/query-methods.d.ts +24 -0
  196. package/cjs/model/methods/query-methods.d.ts.map +1 -0
  197. package/cjs/model/methods/query-methods.js +164 -0
  198. package/cjs/model/methods/query-methods.js.map +1 -0
  199. package/cjs/model/methods/restore-methods.d.ts +10 -0
  200. package/cjs/model/methods/restore-methods.d.ts.map +1 -0
  201. package/cjs/model/methods/restore-methods.js +13 -0
  202. package/cjs/model/methods/restore-methods.js.map +1 -0
  203. package/cjs/model/methods/scope-methods.d.ts +7 -0
  204. package/cjs/model/methods/scope-methods.d.ts.map +1 -0
  205. package/cjs/model/methods/scope-methods.js +15 -0
  206. package/cjs/model/methods/scope-methods.js.map +1 -0
  207. package/cjs/model/methods/serialization-methods.d.ts +3 -0
  208. package/cjs/model/methods/serialization-methods.d.ts.map +1 -0
  209. package/cjs/model/methods/serialization-methods.js +27 -0
  210. package/cjs/model/methods/serialization-methods.js.map +1 -0
  211. package/cjs/model/methods/static-event-methods.d.ts +9 -0
  212. package/cjs/model/methods/static-event-methods.d.ts.map +1 -0
  213. package/cjs/model/methods/static-event-methods.js +29 -0
  214. package/cjs/model/methods/static-event-methods.js.map +1 -0
  215. package/cjs/model/methods/write-methods.d.ts +10 -0
  216. package/cjs/model/methods/write-methods.d.ts.map +1 -0
  217. package/cjs/model/methods/write-methods.js +52 -0
  218. package/cjs/model/methods/write-methods.js.map +1 -0
  219. package/cjs/model/model.d.ts +1647 -0
  220. package/cjs/model/model.d.ts.map +1 -0
  221. package/cjs/model/model.js +1657 -0
  222. package/cjs/model/model.js.map +1 -0
  223. package/cjs/model/model.types.d.ts +44 -0
  224. package/cjs/model/model.types.d.ts.map +1 -0
  225. package/cjs/model/register-model.d.ts +81 -0
  226. package/cjs/model/register-model.d.ts.map +1 -0
  227. package/cjs/model/register-model.js +94 -0
  228. package/cjs/model/register-model.js.map +1 -0
  229. package/cjs/query-builder/query-builder.d.ts +556 -0
  230. package/cjs/query-builder/query-builder.d.ts.map +1 -0
  231. package/cjs/query-builder/query-builder.js +1070 -0
  232. package/cjs/query-builder/query-builder.js.map +1 -0
  233. package/cjs/relations/helpers.d.ts +156 -0
  234. package/cjs/relations/helpers.d.ts.map +1 -0
  235. package/cjs/relations/helpers.js +202 -0
  236. package/cjs/relations/helpers.js.map +1 -0
  237. package/cjs/relations/index.d.ts +35 -0
  238. package/cjs/relations/index.d.ts.map +1 -0
  239. package/cjs/relations/pivot-operations.d.ts +160 -0
  240. package/cjs/relations/pivot-operations.d.ts.map +1 -0
  241. package/cjs/relations/pivot-operations.js +293 -0
  242. package/cjs/relations/pivot-operations.js.map +1 -0
  243. package/cjs/relations/relation-hydrator.d.ts +68 -0
  244. package/cjs/relations/relation-hydrator.d.ts.map +1 -0
  245. package/cjs/relations/relation-hydrator.js +81 -0
  246. package/cjs/relations/relation-hydrator.js.map +1 -0
  247. package/cjs/relations/relation-loader.d.ts +194 -0
  248. package/cjs/relations/relation-loader.d.ts.map +1 -0
  249. package/cjs/relations/relation-loader.js +466 -0
  250. package/cjs/relations/relation-loader.js.map +1 -0
  251. package/cjs/relations/types.d.ts +306 -0
  252. package/cjs/relations/types.d.ts.map +1 -0
  253. package/cjs/remover/database-remover.d.ts +100 -0
  254. package/cjs/remover/database-remover.d.ts.map +1 -0
  255. package/cjs/remover/database-remover.js +214 -0
  256. package/cjs/remover/database-remover.js.map +1 -0
  257. package/cjs/restorer/database-restorer.d.ts +131 -0
  258. package/cjs/restorer/database-restorer.d.ts.map +1 -0
  259. package/cjs/restorer/database-restorer.js +434 -0
  260. package/cjs/restorer/database-restorer.js.map +1 -0
  261. package/cjs/sql-database-dirty-tracker.d.ts +13 -0
  262. package/cjs/sql-database-dirty-tracker.d.ts.map +1 -0
  263. package/cjs/sql-database-dirty-tracker.js +14 -0
  264. package/cjs/sql-database-dirty-tracker.js.map +1 -0
  265. package/cjs/sync/index.d.ts +12 -0
  266. package/cjs/sync/index.d.ts.map +1 -0
  267. package/cjs/sync/model-events.d.ts +62 -0
  268. package/cjs/sync/model-events.d.ts.map +1 -0
  269. package/cjs/sync/model-events.js +49 -0
  270. package/cjs/sync/model-events.js.map +1 -0
  271. package/cjs/sync/model-sync-operation.d.ts +163 -0
  272. package/cjs/sync/model-sync-operation.d.ts.map +1 -0
  273. package/cjs/sync/model-sync-operation.js +292 -0
  274. package/cjs/sync/model-sync-operation.js.map +1 -0
  275. package/cjs/sync/model-sync.d.ts +130 -0
  276. package/cjs/sync/model-sync.d.ts.map +1 -0
  277. package/cjs/sync/model-sync.js +178 -0
  278. package/cjs/sync/model-sync.js.map +1 -0
  279. package/cjs/sync/sync-context.d.ts +70 -0
  280. package/cjs/sync/sync-context.d.ts.map +1 -0
  281. package/cjs/sync/sync-context.js +101 -0
  282. package/cjs/sync/sync-context.js.map +1 -0
  283. package/cjs/sync/sync-manager.d.ts +213 -0
  284. package/cjs/sync/sync-manager.d.ts.map +1 -0
  285. package/cjs/sync/sync-manager.js +689 -0
  286. package/cjs/sync/sync-manager.js.map +1 -0
  287. package/cjs/sync/types.d.ts +289 -0
  288. package/cjs/sync/types.d.ts.map +1 -0
  289. package/cjs/test-migrations/test-enhanced-features.migration.d.ts +15 -0
  290. package/cjs/test-migrations/test-enhanced-features.migration.d.ts.map +1 -0
  291. package/cjs/types.d.ts +371 -0
  292. package/cjs/types.d.ts.map +1 -0
  293. package/cjs/utils/connect-to-database.d.ts +307 -0
  294. package/cjs/utils/connect-to-database.d.ts.map +1 -0
  295. package/cjs/utils/connect-to-database.js +130 -0
  296. package/cjs/utils/connect-to-database.js.map +1 -0
  297. package/cjs/utils/database-writer.utils.d.ts +15 -0
  298. package/cjs/utils/database-writer.utils.d.ts.map +1 -0
  299. package/cjs/utils/database-writer.utils.js +14 -0
  300. package/cjs/utils/database-writer.utils.js.map +1 -0
  301. package/cjs/utils/define-model.js +100 -0
  302. package/cjs/utils/define-model.js.map +1 -0
  303. package/cjs/utils/is-valid-date-value.d.ts +5 -0
  304. package/cjs/utils/is-valid-date-value.d.ts.map +1 -0
  305. package/cjs/utils/is-valid-date-value.js +25 -0
  306. package/cjs/utils/is-valid-date-value.js.map +1 -0
  307. package/cjs/utils/once-connected.d.ts +146 -0
  308. package/cjs/utils/once-connected.d.ts.map +1 -0
  309. package/cjs/utils/once-connected.js +251 -0
  310. package/cjs/utils/once-connected.js.map +1 -0
  311. package/cjs/validation/database-seal-plugins.d.ts +12 -0
  312. package/cjs/validation/database-seal-plugins.d.ts.map +1 -0
  313. package/cjs/validation/database-seal-plugins.js +1 -0
  314. package/cjs/validation/database-seal-plugins.js.map +1 -0
  315. package/cjs/validation/database-writer-validation-error.d.ts +97 -0
  316. package/cjs/validation/database-writer-validation-error.d.ts.map +1 -0
  317. package/cjs/validation/database-writer-validation-error.js +160 -0
  318. package/cjs/validation/database-writer-validation-error.js.map +1 -0
  319. package/cjs/validation/index.d.ts +3 -0
  320. package/cjs/validation/index.d.ts.map +1 -0
  321. package/cjs/validation/mutators/embed-mutator.d.ts +9 -0
  322. package/cjs/validation/mutators/embed-mutator.d.ts.map +1 -0
  323. package/cjs/validation/mutators/embed-mutator.js +33 -0
  324. package/cjs/validation/mutators/embed-mutator.js.map +1 -0
  325. package/cjs/validation/plugins/embed-validator-plugin.d.ts +24 -0
  326. package/cjs/validation/plugins/embed-validator-plugin.d.ts.map +1 -0
  327. package/cjs/validation/plugins/embed-validator-plugin.js +18 -0
  328. package/cjs/validation/plugins/embed-validator-plugin.js.map +1 -0
  329. package/cjs/validation/rules/database-model-rule.d.ts +7 -0
  330. package/cjs/validation/rules/database-model-rule.d.ts.map +1 -0
  331. package/cjs/validation/rules/database-model-rule.js +27 -0
  332. package/cjs/validation/rules/database-model-rule.js.map +1 -0
  333. package/cjs/validation/transformers/embed-model-transformer.d.ts +3 -0
  334. package/cjs/validation/transformers/embed-model-transformer.d.ts.map +1 -0
  335. package/cjs/validation/transformers/embed-model-transformer.js +18 -0
  336. package/cjs/validation/transformers/embed-model-transformer.js.map +1 -0
  337. package/cjs/validation/validators/embed-validator.d.ts +21 -0
  338. package/cjs/validation/validators/embed-validator.d.ts.map +1 -0
  339. package/cjs/validation/validators/embed-validator.js +43 -0
  340. package/cjs/validation/validators/embed-validator.js.map +1 -0
  341. package/cjs/writer/database-writer.d.ts +181 -0
  342. package/cjs/writer/database-writer.d.ts.map +1 -0
  343. package/cjs/writer/database-writer.js +407 -0
  344. package/cjs/writer/database-writer.js.map +1 -0
  345. package/esm/data-source/data-source-registry.d.ts +108 -0
  346. package/esm/data-source/data-source-registry.d.ts.map +1 -0
  347. package/esm/data-source/data-source-registry.js +145 -0
  348. package/esm/data-source/data-source-registry.js.map +1 -0
  349. package/esm/data-source/data-source.d.ts +147 -0
  350. package/esm/data-source/data-source.d.ts.map +1 -0
  351. package/esm/data-source/data-source.js +83 -0
  352. package/esm/data-source/data-source.js.map +1 -0
  353. package/esm/database-dirty-tracker.d.ts +252 -0
  354. package/esm/database-dirty-tracker.d.ts.map +1 -0
  355. package/esm/database-dirty-tracker.js +386 -0
  356. package/esm/database-dirty-tracker.js.map +1 -0
  357. package/esm/drivers/mongodb/mongodb-blueprint.d.ts +30 -0
  358. package/esm/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
  359. package/esm/drivers/mongodb/mongodb-blueprint.js +51 -0
  360. package/esm/drivers/mongodb/mongodb-blueprint.js.map +1 -0
  361. package/esm/drivers/mongodb/mongodb-driver.d.ts +325 -0
  362. package/esm/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
  363. package/esm/drivers/mongodb/mongodb-driver.js +838 -0
  364. package/esm/drivers/mongodb/mongodb-driver.js.map +1 -0
  365. package/esm/drivers/mongodb/mongodb-id-generator.d.ts +116 -0
  366. package/esm/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
  367. package/esm/drivers/mongodb/mongodb-id-generator.js +149 -0
  368. package/esm/drivers/mongodb/mongodb-id-generator.js.map +1 -0
  369. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts +317 -0
  370. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
  371. package/esm/drivers/mongodb/mongodb-migration-driver.js +666 -0
  372. package/esm/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
  373. package/esm/drivers/mongodb/mongodb-query-builder.d.ts +1122 -0
  374. package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
  375. package/esm/drivers/mongodb/mongodb-query-builder.js +1988 -0
  376. package/esm/drivers/mongodb/mongodb-query-builder.js.map +1 -0
  377. package/esm/drivers/mongodb/mongodb-query-operations.d.ts +226 -0
  378. package/esm/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
  379. package/esm/drivers/mongodb/mongodb-query-operations.js +270 -0
  380. package/esm/drivers/mongodb/mongodb-query-operations.js.map +1 -0
  381. package/esm/drivers/mongodb/mongodb-query-parser.d.ts +262 -0
  382. package/esm/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
  383. package/esm/drivers/mongodb/mongodb-query-parser.js +1351 -0
  384. package/esm/drivers/mongodb/mongodb-query-parser.js.map +1 -0
  385. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts +79 -0
  386. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
  387. package/esm/drivers/mongodb/mongodb-sync-adapter.js +146 -0
  388. package/esm/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
  389. package/esm/drivers/mongodb/types.d.ts +43 -0
  390. package/esm/drivers/mongodb/types.d.ts.map +1 -0
  391. package/esm/drivers/postgres/index.d.ts +16 -0
  392. package/esm/drivers/postgres/index.d.ts.map +1 -0
  393. package/esm/drivers/postgres/postgres-blueprint.d.ts +64 -0
  394. package/esm/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
  395. package/esm/drivers/postgres/postgres-blueprint.js +121 -0
  396. package/esm/drivers/postgres/postgres-blueprint.js.map +1 -0
  397. package/esm/drivers/postgres/postgres-dialect.d.ts +136 -0
  398. package/esm/drivers/postgres/postgres-dialect.d.ts.map +1 -0
  399. package/esm/drivers/postgres/postgres-dialect.js +268 -0
  400. package/esm/drivers/postgres/postgres-dialect.js.map +1 -0
  401. package/esm/drivers/postgres/postgres-driver.d.ts +432 -0
  402. package/esm/drivers/postgres/postgres-driver.d.ts.map +1 -0
  403. package/esm/drivers/postgres/postgres-driver.js +1010 -0
  404. package/esm/drivers/postgres/postgres-driver.js.map +1 -0
  405. package/esm/drivers/postgres/postgres-migration-driver.d.ts +397 -0
  406. package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
  407. package/esm/drivers/postgres/postgres-migration-driver.js +900 -0
  408. package/esm/drivers/postgres/postgres-migration-driver.js.map +1 -0
  409. package/esm/drivers/postgres/postgres-query-builder.d.ts +254 -0
  410. package/esm/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
  411. package/esm/drivers/postgres/postgres-query-builder.js +933 -0
  412. package/esm/drivers/postgres/postgres-query-builder.js.map +1 -0
  413. package/esm/drivers/postgres/postgres-query-parser.d.ts +328 -0
  414. package/esm/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
  415. package/esm/drivers/postgres/postgres-query-parser.js +868 -0
  416. package/esm/drivers/postgres/postgres-query-parser.js.map +1 -0
  417. package/esm/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
  418. package/esm/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
  419. package/esm/drivers/postgres/postgres-sql-serializer.js +400 -0
  420. package/esm/drivers/postgres/postgres-sql-serializer.js.map +1 -0
  421. package/esm/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
  422. package/esm/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
  423. package/esm/drivers/postgres/postgres-sync-adapter.js +197 -0
  424. package/esm/drivers/postgres/postgres-sync-adapter.js.map +1 -0
  425. package/esm/drivers/postgres/types.d.ts +144 -0
  426. package/esm/drivers/postgres/types.d.ts.map +1 -0
  427. package/esm/drivers/sql/index.d.ts +10 -0
  428. package/esm/drivers/sql/index.d.ts.map +1 -0
  429. package/esm/drivers/sql/sql-dialect.contract.d.ts +204 -0
  430. package/esm/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
  431. package/esm/drivers/sql/sql-types.d.ts +202 -0
  432. package/esm/drivers/sql/sql-types.d.ts.map +1 -0
  433. package/esm/errors/missing-data-source.error.d.ts +22 -0
  434. package/esm/errors/missing-data-source.error.d.ts.map +1 -0
  435. package/esm/errors/missing-data-source.error.js +29 -0
  436. package/esm/errors/missing-data-source.error.js.map +1 -0
  437. package/esm/errors/transaction-rollback.error.d.ts +20 -0
  438. package/esm/errors/transaction-rollback.error.d.ts.map +1 -0
  439. package/esm/errors/transaction-rollback.error.js +27 -0
  440. package/esm/errors/transaction-rollback.error.js.map +1 -0
  441. package/esm/events/model-events.d.ts +231 -0
  442. package/esm/events/model-events.d.ts.map +1 -0
  443. package/esm/events/model-events.js +259 -0
  444. package/esm/events/model-events.js.map +1 -0
  445. package/esm/expressions/aggregate-expressions.d.ts +215 -0
  446. package/esm/expressions/aggregate-expressions.d.ts.map +1 -0
  447. package/esm/expressions/aggregate-expressions.js +221 -0
  448. package/esm/expressions/aggregate-expressions.js.map +1 -0
  449. package/esm/expressions/index.d.ts +2 -0
  450. package/esm/expressions/index.d.ts.map +1 -0
  451. package/esm/index.d.ts +45 -0
  452. package/esm/index.d.ts.map +1 -0
  453. package/esm/index.js +1 -0
  454. package/esm/index.js.map +1 -0
  455. package/esm/migration/column-builder.d.ts +417 -0
  456. package/esm/migration/column-builder.d.ts.map +1 -0
  457. package/esm/migration/column-builder.js +586 -0
  458. package/esm/migration/column-builder.js.map +1 -0
  459. package/esm/migration/column-helpers.d.ts +275 -0
  460. package/esm/migration/column-helpers.d.ts.map +1 -0
  461. package/esm/migration/column-helpers.js +389 -0
  462. package/esm/migration/column-helpers.js.map +1 -0
  463. package/esm/migration/foreign-key-builder.d.ts +103 -0
  464. package/esm/migration/foreign-key-builder.d.ts.map +1 -0
  465. package/esm/migration/foreign-key-builder.js +121 -0
  466. package/esm/migration/foreign-key-builder.js.map +1 -0
  467. package/esm/migration/index.d.ts +7 -0
  468. package/esm/migration/index.d.ts.map +1 -0
  469. package/esm/migration/migration-runner.d.ts +278 -0
  470. package/esm/migration/migration-runner.d.ts.map +1 -0
  471. package/esm/migration/migration-runner.js +815 -0
  472. package/esm/migration/migration-runner.js.map +1 -0
  473. package/esm/migration/migration.d.ts +1992 -0
  474. package/esm/migration/migration.d.ts.map +1 -0
  475. package/esm/migration/migration.js +2162 -0
  476. package/esm/migration/migration.js.map +1 -0
  477. package/esm/migration/sql-grammar.d.ts +61 -0
  478. package/esm/migration/sql-grammar.d.ts.map +1 -0
  479. package/esm/migration/sql-grammar.js +164 -0
  480. package/esm/migration/sql-grammar.js.map +1 -0
  481. package/esm/migration/sql-serializer.d.ts +22 -0
  482. package/esm/migration/sql-serializer.d.ts.map +1 -0
  483. package/esm/migration/sql-serializer.js +26 -0
  484. package/esm/migration/sql-serializer.js.map +1 -0
  485. package/esm/migration/types.d.ts +155 -0
  486. package/esm/migration/types.d.ts.map +1 -0
  487. package/esm/model/methods/accessor-methods.d.ts +13 -0
  488. package/esm/model/methods/accessor-methods.d.ts.map +1 -0
  489. package/esm/model/methods/accessor-methods.js +51 -0
  490. package/esm/model/methods/accessor-methods.js.map +1 -0
  491. package/esm/model/methods/delete-methods.d.ts +10 -0
  492. package/esm/model/methods/delete-methods.d.ts.map +1 -0
  493. package/esm/model/methods/delete-methods.js +10 -0
  494. package/esm/model/methods/delete-methods.js.map +1 -0
  495. package/esm/model/methods/dirty-methods.d.ts +10 -0
  496. package/esm/model/methods/dirty-methods.d.ts.map +1 -0
  497. package/esm/model/methods/dirty-methods.js +15 -0
  498. package/esm/model/methods/dirty-methods.js.map +1 -0
  499. package/esm/model/methods/hydration-methods.d.ts +10 -0
  500. package/esm/model/methods/hydration-methods.d.ts.map +1 -0
  501. package/esm/model/methods/hydration-methods.js +57 -0
  502. package/esm/model/methods/hydration-methods.js.map +1 -0
  503. package/esm/model/methods/instance-event-methods.d.ts +7 -0
  504. package/esm/model/methods/instance-event-methods.d.ts.map +1 -0
  505. package/esm/model/methods/instance-event-methods.js +15 -0
  506. package/esm/model/methods/instance-event-methods.js.map +1 -0
  507. package/esm/model/methods/meta-methods.d.ts +7 -0
  508. package/esm/model/methods/meta-methods.d.ts.map +1 -0
  509. package/esm/model/methods/meta-methods.js +78 -0
  510. package/esm/model/methods/meta-methods.js.map +1 -0
  511. package/esm/model/methods/query-methods.d.ts +24 -0
  512. package/esm/model/methods/query-methods.d.ts.map +1 -0
  513. package/esm/model/methods/query-methods.js +164 -0
  514. package/esm/model/methods/query-methods.js.map +1 -0
  515. package/esm/model/methods/restore-methods.d.ts +10 -0
  516. package/esm/model/methods/restore-methods.d.ts.map +1 -0
  517. package/esm/model/methods/restore-methods.js +13 -0
  518. package/esm/model/methods/restore-methods.js.map +1 -0
  519. package/esm/model/methods/scope-methods.d.ts +7 -0
  520. package/esm/model/methods/scope-methods.d.ts.map +1 -0
  521. package/esm/model/methods/scope-methods.js +15 -0
  522. package/esm/model/methods/scope-methods.js.map +1 -0
  523. package/esm/model/methods/serialization-methods.d.ts +3 -0
  524. package/esm/model/methods/serialization-methods.d.ts.map +1 -0
  525. package/esm/model/methods/serialization-methods.js +27 -0
  526. package/esm/model/methods/serialization-methods.js.map +1 -0
  527. package/esm/model/methods/static-event-methods.d.ts +9 -0
  528. package/esm/model/methods/static-event-methods.d.ts.map +1 -0
  529. package/esm/model/methods/static-event-methods.js +29 -0
  530. package/esm/model/methods/static-event-methods.js.map +1 -0
  531. package/esm/model/methods/write-methods.d.ts +10 -0
  532. package/esm/model/methods/write-methods.d.ts.map +1 -0
  533. package/esm/model/methods/write-methods.js +52 -0
  534. package/esm/model/methods/write-methods.js.map +1 -0
  535. package/esm/model/model.d.ts +1647 -0
  536. package/esm/model/model.d.ts.map +1 -0
  537. package/esm/model/model.js +1657 -0
  538. package/esm/model/model.js.map +1 -0
  539. package/esm/model/model.types.d.ts +44 -0
  540. package/esm/model/model.types.d.ts.map +1 -0
  541. package/esm/model/register-model.d.ts +81 -0
  542. package/esm/model/register-model.d.ts.map +1 -0
  543. package/esm/model/register-model.js +94 -0
  544. package/esm/model/register-model.js.map +1 -0
  545. package/esm/query-builder/query-builder.d.ts +556 -0
  546. package/esm/query-builder/query-builder.d.ts.map +1 -0
  547. package/esm/query-builder/query-builder.js +1070 -0
  548. package/esm/query-builder/query-builder.js.map +1 -0
  549. package/esm/relations/helpers.d.ts +156 -0
  550. package/esm/relations/helpers.d.ts.map +1 -0
  551. package/esm/relations/helpers.js +202 -0
  552. package/esm/relations/helpers.js.map +1 -0
  553. package/esm/relations/index.d.ts +35 -0
  554. package/esm/relations/index.d.ts.map +1 -0
  555. package/esm/relations/pivot-operations.d.ts +160 -0
  556. package/esm/relations/pivot-operations.d.ts.map +1 -0
  557. package/esm/relations/pivot-operations.js +293 -0
  558. package/esm/relations/pivot-operations.js.map +1 -0
  559. package/esm/relations/relation-hydrator.d.ts +68 -0
  560. package/esm/relations/relation-hydrator.d.ts.map +1 -0
  561. package/esm/relations/relation-hydrator.js +81 -0
  562. package/esm/relations/relation-hydrator.js.map +1 -0
  563. package/esm/relations/relation-loader.d.ts +194 -0
  564. package/esm/relations/relation-loader.d.ts.map +1 -0
  565. package/esm/relations/relation-loader.js +466 -0
  566. package/esm/relations/relation-loader.js.map +1 -0
  567. package/esm/relations/types.d.ts +306 -0
  568. package/esm/relations/types.d.ts.map +1 -0
  569. package/esm/remover/database-remover.d.ts +100 -0
  570. package/esm/remover/database-remover.d.ts.map +1 -0
  571. package/esm/remover/database-remover.js +214 -0
  572. package/esm/remover/database-remover.js.map +1 -0
  573. package/esm/restorer/database-restorer.d.ts +131 -0
  574. package/esm/restorer/database-restorer.d.ts.map +1 -0
  575. package/esm/restorer/database-restorer.js +434 -0
  576. package/esm/restorer/database-restorer.js.map +1 -0
  577. package/esm/sql-database-dirty-tracker.d.ts +13 -0
  578. package/esm/sql-database-dirty-tracker.d.ts.map +1 -0
  579. package/esm/sql-database-dirty-tracker.js +14 -0
  580. package/esm/sql-database-dirty-tracker.js.map +1 -0
  581. package/esm/sync/index.d.ts +12 -0
  582. package/esm/sync/index.d.ts.map +1 -0
  583. package/esm/sync/model-events.d.ts +62 -0
  584. package/esm/sync/model-events.d.ts.map +1 -0
  585. package/esm/sync/model-events.js +49 -0
  586. package/esm/sync/model-events.js.map +1 -0
  587. package/esm/sync/model-sync-operation.d.ts +163 -0
  588. package/esm/sync/model-sync-operation.d.ts.map +1 -0
  589. package/esm/sync/model-sync-operation.js +292 -0
  590. package/esm/sync/model-sync-operation.js.map +1 -0
  591. package/esm/sync/model-sync.d.ts +130 -0
  592. package/esm/sync/model-sync.d.ts.map +1 -0
  593. package/esm/sync/model-sync.js +178 -0
  594. package/esm/sync/model-sync.js.map +1 -0
  595. package/esm/sync/sync-context.d.ts +70 -0
  596. package/esm/sync/sync-context.d.ts.map +1 -0
  597. package/esm/sync/sync-context.js +101 -0
  598. package/esm/sync/sync-context.js.map +1 -0
  599. package/esm/sync/sync-manager.d.ts +213 -0
  600. package/esm/sync/sync-manager.d.ts.map +1 -0
  601. package/esm/sync/sync-manager.js +689 -0
  602. package/esm/sync/sync-manager.js.map +1 -0
  603. package/esm/sync/types.d.ts +289 -0
  604. package/esm/sync/types.d.ts.map +1 -0
  605. package/esm/test-migrations/test-enhanced-features.migration.d.ts +15 -0
  606. package/esm/test-migrations/test-enhanced-features.migration.d.ts.map +1 -0
  607. package/esm/types.d.ts +371 -0
  608. package/esm/types.d.ts.map +1 -0
  609. package/esm/utils/connect-to-database.d.ts +307 -0
  610. package/esm/utils/connect-to-database.d.ts.map +1 -0
  611. package/esm/utils/connect-to-database.js +130 -0
  612. package/esm/utils/connect-to-database.js.map +1 -0
  613. package/esm/utils/database-writer.utils.d.ts +15 -0
  614. package/esm/utils/database-writer.utils.d.ts.map +1 -0
  615. package/esm/utils/database-writer.utils.js +14 -0
  616. package/esm/utils/database-writer.utils.js.map +1 -0
  617. package/esm/utils/define-model.js +100 -0
  618. package/esm/utils/define-model.js.map +1 -0
  619. package/esm/utils/is-valid-date-value.d.ts +5 -0
  620. package/esm/utils/is-valid-date-value.d.ts.map +1 -0
  621. package/esm/utils/is-valid-date-value.js +25 -0
  622. package/esm/utils/is-valid-date-value.js.map +1 -0
  623. package/esm/utils/once-connected.d.ts +146 -0
  624. package/esm/utils/once-connected.d.ts.map +1 -0
  625. package/esm/utils/once-connected.js +251 -0
  626. package/esm/utils/once-connected.js.map +1 -0
  627. package/esm/validation/database-seal-plugins.d.ts +12 -0
  628. package/esm/validation/database-seal-plugins.d.ts.map +1 -0
  629. package/esm/validation/database-seal-plugins.js +1 -0
  630. package/esm/validation/database-seal-plugins.js.map +1 -0
  631. package/esm/validation/database-writer-validation-error.d.ts +97 -0
  632. package/esm/validation/database-writer-validation-error.d.ts.map +1 -0
  633. package/esm/validation/database-writer-validation-error.js +160 -0
  634. package/esm/validation/database-writer-validation-error.js.map +1 -0
  635. package/esm/validation/index.d.ts +3 -0
  636. package/esm/validation/index.d.ts.map +1 -0
  637. package/esm/validation/mutators/embed-mutator.d.ts +9 -0
  638. package/esm/validation/mutators/embed-mutator.d.ts.map +1 -0
  639. package/esm/validation/mutators/embed-mutator.js +33 -0
  640. package/esm/validation/mutators/embed-mutator.js.map +1 -0
  641. package/esm/validation/plugins/embed-validator-plugin.d.ts +24 -0
  642. package/esm/validation/plugins/embed-validator-plugin.d.ts.map +1 -0
  643. package/esm/validation/plugins/embed-validator-plugin.js +18 -0
  644. package/esm/validation/plugins/embed-validator-plugin.js.map +1 -0
  645. package/esm/validation/rules/database-model-rule.d.ts +7 -0
  646. package/esm/validation/rules/database-model-rule.d.ts.map +1 -0
  647. package/esm/validation/rules/database-model-rule.js +27 -0
  648. package/esm/validation/rules/database-model-rule.js.map +1 -0
  649. package/esm/validation/transformers/embed-model-transformer.d.ts +3 -0
  650. package/esm/validation/transformers/embed-model-transformer.d.ts.map +1 -0
  651. package/esm/validation/transformers/embed-model-transformer.js +18 -0
  652. package/esm/validation/transformers/embed-model-transformer.js.map +1 -0
  653. package/esm/validation/validators/embed-validator.d.ts +21 -0
  654. package/esm/validation/validators/embed-validator.d.ts.map +1 -0
  655. package/esm/validation/validators/embed-validator.js +43 -0
  656. package/esm/validation/validators/embed-validator.js.map +1 -0
  657. package/esm/writer/database-writer.d.ts +181 -0
  658. package/esm/writer/database-writer.d.ts.map +1 -0
  659. package/esm/writer/database-writer.js +407 -0
  660. package/esm/writer/database-writer.js.map +1 -0
  661. package/package.json +4 -4
@@ -0,0 +1,259 @@
1
+ 'use strict';/**
2
+ * Light-weight async event emitter used to power model lifecycle hooks.
3
+ *
4
+ * The implementation intentionally avoids any external dependency so we can
5
+ * re-use it in drivers, writers, and other core services without pulling in
6
+ * heavier event libraries.
7
+ */
8
+ class ModelEvents {
9
+ listeners = new Map();
10
+ /**
11
+ * Register a listener for the given event.
12
+ * Returns an unsubscribe function for convenience.
13
+ */
14
+ on(event, listener) {
15
+ const listeners = this.ensureListenerSet(event);
16
+ listeners.add(listener);
17
+ return () => this.off(event, listener);
18
+ }
19
+ /**
20
+ * Register a listener that automatically unsubscribes after the first call.
21
+ */
22
+ once(event, listener) {
23
+ const wrapper = async (model, context) => {
24
+ try {
25
+ await listener(model, context);
26
+ }
27
+ finally {
28
+ this.off(event, wrapper);
29
+ }
30
+ };
31
+ return this.on(event, wrapper);
32
+ }
33
+ /**
34
+ * Deregister a listener for the given event.
35
+ */
36
+ off(event, listener) {
37
+ const listeners = this.listeners.get(event);
38
+ if (!listeners) {
39
+ return;
40
+ }
41
+ listeners.delete(listener);
42
+ if (listeners.size === 0) {
43
+ this.listeners.delete(event);
44
+ }
45
+ }
46
+ /**
47
+ * Emit an event to all registered listeners.
48
+ */
49
+ async emit(event, model, context) {
50
+ const listeners = this.listeners.get(event);
51
+ if (!listeners || listeners.size === 0) {
52
+ return;
53
+ }
54
+ for (const listener of Array.from(listeners)) {
55
+ await listener(model, context);
56
+ }
57
+ }
58
+ /**
59
+ * Emit events for fetching
60
+ */
61
+ async emitFetching(query, context) {
62
+ await this.emit("fetching", query, context);
63
+ }
64
+ /**
65
+ * Remove all registered listeners.
66
+ */
67
+ clear() {
68
+ this.listeners.clear();
69
+ }
70
+ /**
71
+ * Registers a listener for the "saving" event.
72
+ *
73
+ * Fired before a model is persisted (both insert and update), and before validation.
74
+ * Use this hook for data enrichment and preparation (e.g., setting createdBy, updatedBy).
75
+ *
76
+ * @param listener - The callback to invoke
77
+ * @returns An unsubscribe function
78
+ */
79
+ onSaving(listener) {
80
+ return this.on("saving", listener);
81
+ }
82
+ /**
83
+ * Registers a listener for the "saved" event.
84
+ *
85
+ * Fired after a model has been successfully persisted.
86
+ *
87
+ * @param listener - The callback to invoke
88
+ * @returns An unsubscribe function
89
+ */
90
+ onSaved(listener) {
91
+ return this.on("saved", listener);
92
+ }
93
+ /**
94
+ * Registers a listener for the "creating" event.
95
+ *
96
+ * Fired before a new model is inserted into the database.
97
+ *
98
+ * @param listener - The callback to invoke
99
+ * @returns An unsubscribe function
100
+ */
101
+ onCreating(listener) {
102
+ return this.on("creating", listener);
103
+ }
104
+ /**
105
+ * Registers a listener for the "created" event.
106
+ *
107
+ * Fired after a new model has been successfully inserted.
108
+ *
109
+ * @param listener - The callback to invoke
110
+ * @returns An unsubscribe function
111
+ */
112
+ onCreated(listener) {
113
+ return this.on("created", listener);
114
+ }
115
+ /**
116
+ * Registers a listener for the "updating" event.
117
+ *
118
+ * Fired before an existing model is updated in the database.
119
+ *
120
+ * @param listener - The callback to invoke
121
+ * @returns An unsubscribe function
122
+ */
123
+ onUpdating(listener) {
124
+ return this.on("updating", listener);
125
+ }
126
+ /**
127
+ * Registers a listener for the "updated" event.
128
+ *
129
+ * Fired after an existing model has been successfully updated.
130
+ *
131
+ * @param listener - The callback to invoke
132
+ * @returns An unsubscribe function
133
+ */
134
+ onUpdated(listener) {
135
+ return this.on("updated", listener);
136
+ }
137
+ /**
138
+ * Registers a listener for the "deleting" event.
139
+ *
140
+ * Fired before a model is deleted from the database.
141
+ *
142
+ * @param listener - The callback to invoke
143
+ * @returns An unsubscribe function
144
+ */
145
+ onDeleting(listener) {
146
+ return this.on("deleting", listener);
147
+ }
148
+ /**
149
+ * Registers a listener for the "deleted" event.
150
+ *
151
+ * Fired after a model has been successfully deleted.
152
+ *
153
+ * @param listener - The callback to invoke
154
+ * @returns An unsubscribe function
155
+ */
156
+ onDeleted(listener) {
157
+ return this.on("deleted", listener);
158
+ }
159
+ /**
160
+ * Registers a listener for the "validating" event.
161
+ *
162
+ * Fired before model validation is performed.
163
+ *
164
+ * @param listener - The callback to invoke
165
+ * @returns An unsubscribe function
166
+ */
167
+ onValidating(listener) {
168
+ return this.on("validating", listener);
169
+ }
170
+ /**
171
+ * Registers a listener for the "validated" event.
172
+ *
173
+ * Fired after model validation has completed.
174
+ *
175
+ * @param listener - The callback to invoke
176
+ * @returns An unsubscribe function
177
+ */
178
+ onValidated(listener) {
179
+ return this.on("validated", listener);
180
+ }
181
+ /**
182
+ * Registers a listener for the "fetching" event.
183
+ *
184
+ * Fired before a query is executed to fetch models.
185
+ * Receives the query builder instance, allowing modification before execution.
186
+ *
187
+ * @param listener - The callback to invoke
188
+ * @returns An unsubscribe function
189
+ */
190
+ onFetching(listener) {
191
+ return this.on("fetching", listener);
192
+ }
193
+ /**
194
+ * Registers a listener for the "hydrating" event.
195
+ *
196
+ * Fired after raw records are fetched but before they are hydrated into model instances.
197
+ * Allows modification of raw data before hydration.
198
+ *
199
+ * @param listener - The callback to invoke
200
+ * @returns An unsubscribe function
201
+ */
202
+ onHydrating(listener) {
203
+ return this.on("hydrating", listener);
204
+ }
205
+ /**
206
+ * Registers a listener for the "fetched" event.
207
+ *
208
+ * Fired after models have been fetched and hydrated.
209
+ * Receives hydrated model instances and query context.
210
+ *
211
+ * @param listener - The callback to invoke
212
+ * @returns An unsubscribe function
213
+ */
214
+ onFetched(listener) {
215
+ return this.on("fetched", listener);
216
+ }
217
+ /**
218
+ * Registers a listener for the "restoring" event.
219
+ *
220
+ * Fired before a soft-deleted model is restored.
221
+ *
222
+ * @param listener - The callback to invoke
223
+ * @returns An unsubscribe function
224
+ */
225
+ onRestoring(listener) {
226
+ return this.on("restoring", listener);
227
+ }
228
+ /**
229
+ * Registers a listener for the "restored" event.
230
+ *
231
+ * Fired after a soft-deleted model has been successfully restored.
232
+ *
233
+ * @param listener - The callback to invoke
234
+ * @returns An unsubscribe function
235
+ */
236
+ onRestored(listener) {
237
+ return this.on("restored", listener);
238
+ }
239
+ /**
240
+ * Ensures a listener set exists for the given event.
241
+ *
242
+ * @param event - The event name
243
+ * @returns The listener set for the event
244
+ * @private
245
+ */
246
+ ensureListenerSet(event) {
247
+ let listeners = this.listeners.get(event);
248
+ if (!listeners) {
249
+ listeners = new Set();
250
+ this.listeners.set(event, listeners);
251
+ }
252
+ return listeners;
253
+ }
254
+ }
255
+ /**
256
+ * Global event emitter invoked for every model instance, regardless of type.
257
+ * Useful for cross-cutting concerns like auditing or request-scoped enrichment.
258
+ */
259
+ const globalModelEvents = new ModelEvents();exports.ModelEvents=ModelEvents;exports.globalModelEvents=globalModelEvents;//# sourceMappingURL=model-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-events.js","sources":["../../src/events/model-events.ts"],"sourcesContent":[null],"names":[],"mappings":"aAuEA;;;;;;AAMG;MACU,WAAW,CAAA;AACN,IAAA,SAAS,GAAG,IAAI,GAAG,EAAmD,CAAC;AAEvF;;;AAGG;IACI,EAAE,CACP,KAAqB,EACrB,QAA8C,EAAA;QAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAChD,QAAA,SAAS,CAAC,GAAG,CAAC,QAAsC,CAAC,CAAC;QACtD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KACxC;AAED;;AAEG;IACI,IAAI,CACT,KAAqB,EACrB,QAA8C,EAAA;QAE9C,MAAM,OAAO,GAAyC,OAAO,KAAK,EAAE,OAAO,KAAI;YAC7E,IAAI;AACF,gBAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAChC,aAAA;AAAS,oBAAA;AACR,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1B,aAAA;AACH,SAAC,CAAC;QACF,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAChC;AAED;;AAEG;IACI,GAAG,CACR,KAAqB,EACrB,QAA8C,EAAA;QAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;AACR,SAAA;AACD,QAAA,SAAS,CAAC,MAAM,CAAC,QAAsC,CAAC,CAAC;AACzD,QAAA,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,SAAA;KACF;AAED;;AAEG;AACI,IAAA,MAAM,IAAI,CACf,KAAqB,EACrB,KAAa,EACb,OAAiB,EAAA;QAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;YACtC,OAAO;AACR,SAAA;QACD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC5C,YAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAChC,SAAA;KACF;AAED;;AAEG;AACI,IAAA,MAAM,YAAY,CACvB,KAA2B,EAC3B,OAAkB,EAAA;QAElB,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAY,EAAE,OAAO,CAAC,CAAC;KACpD;AAED;;AAEG;IACI,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KACxB;AAED;;;;;;;;AAQG;AACI,IAAA,QAAQ,CACb,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;KACpC;AAED;;;;;;;AAOG;AACI,IAAA,OAAO,CAAqB,QAA8C,EAAA;QAC/E,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACnC;AAED;;;;;;;AAOG;AACI,IAAA,UAAU,CACf,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KACtC;AAED;;;;;;;AAOG;AACI,IAAA,SAAS,CAAqB,QAA8C,EAAA;QACjF,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KACrC;AAED;;;;;;;AAOG;AACI,IAAA,UAAU,CACf,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KACtC;AAED;;;;;;;AAOG;AACI,IAAA,SAAS,CAAqB,QAA8C,EAAA;QACjF,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KACrC;AAED;;;;;;;AAOG;AACI,IAAA,UAAU,CACf,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KACtC;AAED;;;;;;;AAOG;AACI,IAAA,SAAS,CACd,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KACrC;AAED;;;;;;;AAOG;AACI,IAAA,YAAY,CACjB,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;KACxC;AAED;;;;;;;AAOG;AACI,IAAA,WAAW,CAChB,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;KACvC;AAED;;;;;;;;AAQG;AACI,IAAA,UAAU,CACf,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KACtC;AAED;;;;;;;;AAQG;AACI,IAAA,WAAW,CAChB,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;KACvC;AAED;;;;;;;;AAQG;AACI,IAAA,SAAS,CACd,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KACrC;AAED;;;;;;;AAOG;AACI,IAAA,WAAW,CAChB,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;KACvC;AAED;;;;;;;AAOG;AACI,IAAA,UAAU,CACf,QAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KACtC;AAED;;;;;;AAMG;AACK,IAAA,iBAAiB,CAAC,KAAqB,EAAA;QAC7C,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACtC,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AACF,CAAA;AAED;;;AAGG;AACU,MAAA,iBAAiB,GAAG,IAAI,WAAW"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Database-agnostic aggregation expressions.
3
+ *
4
+ * These helpers provide a unified API for building aggregate queries that work
5
+ * across different database types (MongoDB, PostgreSQL, MySQL, etc.).
6
+ *
7
+ * Each driver implementation translates these abstract expressions to their
8
+ * native format:
9
+ * - MongoDB: { $sum: 1 }, { $sum: "$field" }, etc.
10
+ * - SQL: COUNT(*), SUM(field), etc.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { $agg } from '@warlock.js/cascade';
15
+ *
16
+ * // Works for both MongoDB and SQL
17
+ * Lesson.query()
18
+ * .groupBy("type", {
19
+ * count: $agg.count(),
20
+ * total: $agg.sum("duration"),
21
+ * avg: $agg.avg("rating")
22
+ * })
23
+ * .get();
24
+ * ```
25
+ */
26
+ /**
27
+ * Abstract aggregate expression format.
28
+ *
29
+ * This format is database-agnostic and will be translated by each driver
30
+ * to their native syntax.
31
+ */
32
+ export type AggregateExpression = {
33
+ /** The aggregate function type */
34
+ __agg: AggregateFunction;
35
+ /** The field to aggregate (null for count) */
36
+ __field: string | null;
37
+ };
38
+ /**
39
+ * Supported aggregate functions.
40
+ */
41
+ export type AggregateFunction = "count" | "sum" | "avg" | "min" | "max" | "first" | "last" | "distinct" | "floor";
42
+ /**
43
+ * Checks if a value is an abstract aggregate expression.
44
+ */
45
+ export declare function isAggregateExpression(value: unknown): value is AggregateExpression;
46
+ /**
47
+ * Database-agnostic aggregation expression helpers.
48
+ *
49
+ * These helpers create abstract expressions that each driver translates
50
+ * to their native format.
51
+ */
52
+ export declare const $agg: {
53
+ /**
54
+ * Count documents in each group.
55
+ *
56
+ * @returns Abstract count expression
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * query.groupBy("type", {
61
+ * count: $agg.count()
62
+ * });
63
+ * ```
64
+ *
65
+ * Translates to:
66
+ * - MongoDB: `{ $sum: 1 }`
67
+ * - SQL: `COUNT(*)`
68
+ */
69
+ count(): AggregateExpression;
70
+ /**
71
+ * Sum a numeric field across documents in each group.
72
+ *
73
+ * @param field - The field name to sum
74
+ * @returns Abstract sum expression
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * query.groupBy("type", {
79
+ * totalDuration: $agg.sum("duration")
80
+ * });
81
+ * ```
82
+ *
83
+ * Translates to:
84
+ * - MongoDB: `{ $sum: "$duration" }`
85
+ * - SQL: `SUM(duration)`
86
+ */
87
+ sum(field: string): AggregateExpression;
88
+ /**
89
+ * Calculate the average value of a field across documents in each group.
90
+ *
91
+ * @param field - The field name to average
92
+ * @returns Abstract average expression
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * query.groupBy("type", {
97
+ * avgRating: $agg.avg("rating")
98
+ * });
99
+ * ```
100
+ *
101
+ * Translates to:
102
+ * - MongoDB: `{ $avg: "$rating" }`
103
+ * - SQL: `AVG(rating)`
104
+ */
105
+ avg(field: string): AggregateExpression;
106
+ /**
107
+ * Get the minimum value of a field across documents in each group.
108
+ *
109
+ * @param field - The field name
110
+ * @returns Abstract min expression
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * query.groupBy("type", {
115
+ * minPrice: $agg.min("price")
116
+ * });
117
+ * ```
118
+ *
119
+ * Translates to:
120
+ * - MongoDB: `{ $min: "$price" }`
121
+ * - SQL: `MIN(price)`
122
+ */
123
+ min(field: string): AggregateExpression;
124
+ /**
125
+ * Get the maximum value of a field across documents in each group.
126
+ *
127
+ * @param field - The field name
128
+ * @returns Abstract max expression
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * query.groupBy("type", {
133
+ * maxPrice: $agg.max("price")
134
+ * });
135
+ * ```
136
+ *
137
+ * Translates to:
138
+ * - MongoDB: `{ $max: "$price" }`
139
+ * - SQL: `MAX(price)`
140
+ */
141
+ max(field: string): AggregateExpression;
142
+ /**
143
+ * Get the distinct values of a field across documents in each group.
144
+ *
145
+ * @param field - The field name
146
+ * @returns Abstract distinct expression
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * query.groupBy("type", {
151
+ * distinctColors: $agg.distinct("color")
152
+ * });
153
+ * ```
154
+ *
155
+ * Translates to:
156
+ * - MongoDB: `{ $distinct: "$color" }`
157
+ * - SQL: `DISTINCT(color)`
158
+ */
159
+ distinct(field: string): AggregateExpression;
160
+ /**
161
+ * Get the floor value of a field across documents in each group.
162
+ *
163
+ * @param field - The field name
164
+ * @returns Abstract floor expression
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * query.groupBy("type", {
169
+ * floorPrice: $agg.floor("price")
170
+ * });
171
+ * ```
172
+ *
173
+ * Translates to:
174
+ * - MongoDB: `{ $floor: "$price" }`
175
+ * - SQL: `FLOOR(price)`
176
+ */
177
+ floor(field: string): AggregateExpression;
178
+ /**
179
+ * Get the first value of a field in each group (order-dependent).
180
+ *
181
+ * @param field - The field name
182
+ * @returns Abstract first expression
183
+ *
184
+ * @example
185
+ * ```typescript
186
+ * query.groupBy("type", {
187
+ * firstName: $agg.first("name")
188
+ * });
189
+ * ```
190
+ *
191
+ * Translates to:
192
+ * - MongoDB: `{ $first: "$name" }`
193
+ * - SQL: `FIRST_VALUE(name) OVER (...)`
194
+ */
195
+ first(field: string): AggregateExpression;
196
+ /**
197
+ * Get the last value of a field in each group (order-dependent).
198
+ *
199
+ * @param field - The field name
200
+ * @returns Abstract last expression
201
+ *
202
+ * @example
203
+ * ```typescript
204
+ * query.groupBy("type", {
205
+ * lastName: $agg.last("name")
206
+ * });
207
+ * ```
208
+ *
209
+ * Translates to:
210
+ * - MongoDB: `{ $last: "$name" }`
211
+ * - SQL: `LAST_VALUE(name) OVER (...)`
212
+ */
213
+ last(field: string): AggregateExpression;
214
+ };
215
+ //# sourceMappingURL=aggregate-expressions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate-expressions.d.ts","sourceRoot":"","sources":["../../src/expressions/aggregate-expressions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,kCAAkC;IAClC,KAAK,EAAE,iBAAiB,CAAC;IACzB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,OAAO,GACP,MAAM,GACN,UAAU,GACV,OAAO,CAAC;AAEZ;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAOlF;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI;IACf;;;;;;;;;;;;;;;OAeG;aACM,mBAAmB;IAI5B;;;;;;;;;;;;;;;;OAgBG;eACQ,MAAM,GAAG,mBAAmB;IAIvC;;;;;;;;;;;;;;;;OAgBG;eACQ,MAAM,GAAG,mBAAmB;IAIvC;;;;;;;;;;;;;;;;OAgBG;eACQ,MAAM,GAAG,mBAAmB;IAIvC;;;;;;;;;;;;;;;;OAgBG;eACQ,MAAM,GAAG,mBAAmB;IAIvC;;;;;;;;;;;;;;;;OAgBG;oBACa,MAAM,GAAG,mBAAmB;IAI5C;;;;;;;;;;;;;;;;OAgBG;iBACU,MAAM,GAAG,mBAAmB;IAIzC;;;;;;;;;;;;;;;;OAgBG;iBACU,MAAM,GAAG,mBAAmB;IAIzC;;;;;;;;;;;;;;;;OAgBG;gBACS,MAAM,GAAG,mBAAmB;CAGzC,CAAC"}
@@ -0,0 +1,221 @@
1
+ 'use strict';/**
2
+ * Database-agnostic aggregation expressions.
3
+ *
4
+ * These helpers provide a unified API for building aggregate queries that work
5
+ * across different database types (MongoDB, PostgreSQL, MySQL, etc.).
6
+ *
7
+ * Each driver implementation translates these abstract expressions to their
8
+ * native format:
9
+ * - MongoDB: { $sum: 1 }, { $sum: "$field" }, etc.
10
+ * - SQL: COUNT(*), SUM(field), etc.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { $agg } from '@warlock.js/cascade';
15
+ *
16
+ * // Works for both MongoDB and SQL
17
+ * Lesson.query()
18
+ * .groupBy("type", {
19
+ * count: $agg.count(),
20
+ * total: $agg.sum("duration"),
21
+ * avg: $agg.avg("rating")
22
+ * })
23
+ * .get();
24
+ * ```
25
+ */
26
+ /**
27
+ * Checks if a value is an abstract aggregate expression.
28
+ */
29
+ function isAggregateExpression(value) {
30
+ return (typeof value === "object" &&
31
+ value !== null &&
32
+ "__field" in value &&
33
+ typeof value.__agg === "string");
34
+ }
35
+ /**
36
+ * Database-agnostic aggregation expression helpers.
37
+ *
38
+ * These helpers create abstract expressions that each driver translates
39
+ * to their native format.
40
+ */
41
+ const $agg = {
42
+ /**
43
+ * Count documents in each group.
44
+ *
45
+ * @returns Abstract count expression
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * query.groupBy("type", {
50
+ * count: $agg.count()
51
+ * });
52
+ * ```
53
+ *
54
+ * Translates to:
55
+ * - MongoDB: `{ $sum: 1 }`
56
+ * - SQL: `COUNT(*)`
57
+ */
58
+ count() {
59
+ return { __agg: "count", __field: null };
60
+ },
61
+ /**
62
+ * Sum a numeric field across documents in each group.
63
+ *
64
+ * @param field - The field name to sum
65
+ * @returns Abstract sum expression
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * query.groupBy("type", {
70
+ * totalDuration: $agg.sum("duration")
71
+ * });
72
+ * ```
73
+ *
74
+ * Translates to:
75
+ * - MongoDB: `{ $sum: "$duration" }`
76
+ * - SQL: `SUM(duration)`
77
+ */
78
+ sum(field) {
79
+ return { __agg: "sum", __field: field };
80
+ },
81
+ /**
82
+ * Calculate the average value of a field across documents in each group.
83
+ *
84
+ * @param field - The field name to average
85
+ * @returns Abstract average expression
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * query.groupBy("type", {
90
+ * avgRating: $agg.avg("rating")
91
+ * });
92
+ * ```
93
+ *
94
+ * Translates to:
95
+ * - MongoDB: `{ $avg: "$rating" }`
96
+ * - SQL: `AVG(rating)`
97
+ */
98
+ avg(field) {
99
+ return { __agg: "avg", __field: field };
100
+ },
101
+ /**
102
+ * Get the minimum value of a field across documents in each group.
103
+ *
104
+ * @param field - The field name
105
+ * @returns Abstract min expression
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * query.groupBy("type", {
110
+ * minPrice: $agg.min("price")
111
+ * });
112
+ * ```
113
+ *
114
+ * Translates to:
115
+ * - MongoDB: `{ $min: "$price" }`
116
+ * - SQL: `MIN(price)`
117
+ */
118
+ min(field) {
119
+ return { __agg: "min", __field: field };
120
+ },
121
+ /**
122
+ * Get the maximum value of a field across documents in each group.
123
+ *
124
+ * @param field - The field name
125
+ * @returns Abstract max expression
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * query.groupBy("type", {
130
+ * maxPrice: $agg.max("price")
131
+ * });
132
+ * ```
133
+ *
134
+ * Translates to:
135
+ * - MongoDB: `{ $max: "$price" }`
136
+ * - SQL: `MAX(price)`
137
+ */
138
+ max(field) {
139
+ return { __agg: "max", __field: field };
140
+ },
141
+ /**
142
+ * Get the distinct values of a field across documents in each group.
143
+ *
144
+ * @param field - The field name
145
+ * @returns Abstract distinct expression
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * query.groupBy("type", {
150
+ * distinctColors: $agg.distinct("color")
151
+ * });
152
+ * ```
153
+ *
154
+ * Translates to:
155
+ * - MongoDB: `{ $distinct: "$color" }`
156
+ * - SQL: `DISTINCT(color)`
157
+ */
158
+ distinct(field) {
159
+ return { __agg: "distinct", __field: field };
160
+ },
161
+ /**
162
+ * Get the floor value of a field across documents in each group.
163
+ *
164
+ * @param field - The field name
165
+ * @returns Abstract floor expression
166
+ *
167
+ * @example
168
+ * ```typescript
169
+ * query.groupBy("type", {
170
+ * floorPrice: $agg.floor("price")
171
+ * });
172
+ * ```
173
+ *
174
+ * Translates to:
175
+ * - MongoDB: `{ $floor: "$price" }`
176
+ * - SQL: `FLOOR(price)`
177
+ */
178
+ floor(field) {
179
+ return { __agg: "floor", __field: field };
180
+ },
181
+ /**
182
+ * Get the first value of a field in each group (order-dependent).
183
+ *
184
+ * @param field - The field name
185
+ * @returns Abstract first expression
186
+ *
187
+ * @example
188
+ * ```typescript
189
+ * query.groupBy("type", {
190
+ * firstName: $agg.first("name")
191
+ * });
192
+ * ```
193
+ *
194
+ * Translates to:
195
+ * - MongoDB: `{ $first: "$name" }`
196
+ * - SQL: `FIRST_VALUE(name) OVER (...)`
197
+ */
198
+ first(field) {
199
+ return { __agg: "first", __field: field };
200
+ },
201
+ /**
202
+ * Get the last value of a field in each group (order-dependent).
203
+ *
204
+ * @param field - The field name
205
+ * @returns Abstract last expression
206
+ *
207
+ * @example
208
+ * ```typescript
209
+ * query.groupBy("type", {
210
+ * lastName: $agg.last("name")
211
+ * });
212
+ * ```
213
+ *
214
+ * Translates to:
215
+ * - MongoDB: `{ $last: "$name" }`
216
+ * - SQL: `LAST_VALUE(name) OVER (...)`
217
+ */
218
+ last(field) {
219
+ return { __agg: "last", __field: field };
220
+ },
221
+ };exports.$agg=$agg;exports.isAggregateExpression=isAggregateExpression;//# sourceMappingURL=aggregate-expressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate-expressions.js","sources":["../../src/expressions/aggregate-expressions.ts"],"sourcesContent":[null],"names":[],"mappings":"aAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AA6BH;;AAEG;AACG,SAAU,qBAAqB,CAAC,KAAc,EAAA;AAClD,IAAA,QACE,OAAO,KAAK,KAAK,QAAQ;AACzB,QAAA,KAAK,KAAK,IAAI;AACd,QAAA,SAAS,IAAI,KAAK;AAClB,QAAA,OAAQ,KAA6B,CAAC,KAAK,KAAK,QAAQ,EACxD;AACJ,CAAC;AAED;;;;;AAKG;AACU,MAAA,IAAI,GAAG;AAClB;;;;;;;;;;;;;;;AAeG;IACH,KAAK,GAAA;QACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;KAC1C;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,GAAG,CAAC,KAAa,EAAA;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KACzC;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,GAAG,CAAC,KAAa,EAAA;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KACzC;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,GAAG,CAAC,KAAa,EAAA;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KACzC;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,GAAG,CAAC,KAAa,EAAA;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KACzC;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC9C;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,KAAK,CAAC,KAAa,EAAA;QACjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC3C;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,KAAK,CAAC,KAAa,EAAA;QACjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC3C;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,IAAI,CAAC,KAAa,EAAA;QAChB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC1C;"}