@warlock.js/cascade 5.29.0 → 5.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -5
  3. package/cjs/index.cjs +101 -102
  4. package/cjs/index.cjs.map +1 -1
  5. package/esm/context/database-data-source-context.d.mts +1 -1
  6. package/esm/context/database-data-source-context.d.mts.map +1 -1
  7. package/esm/context/database-data-source-context.mjs +1 -1
  8. package/esm/context/database-data-source-context.mjs.map +1 -1
  9. package/esm/context/database-transaction-context.d.mts +1 -1
  10. package/esm/context/database-transaction-context.d.mts.map +1 -1
  11. package/esm/context/database-transaction-context.mjs +1 -1
  12. package/esm/context/database-transaction-context.mjs.map +1 -1
  13. package/esm/contracts/database-driver.contract.d.mts +1 -1
  14. package/esm/contracts/database-driver.contract.d.mts.map +1 -1
  15. package/esm/contracts/database-id-generator.contract.d.mts +1 -1
  16. package/esm/contracts/database-id-generator.contract.d.mts.map +1 -1
  17. package/esm/contracts/database-remover.contract.d.mts +1 -1
  18. package/esm/contracts/database-remover.contract.d.mts.map +1 -1
  19. package/esm/contracts/database-restorer.contract.d.mts +1 -1
  20. package/esm/contracts/database-restorer.contract.d.mts.map +1 -1
  21. package/esm/contracts/database-writer.contract.d.mts +1 -1
  22. package/esm/contracts/database-writer.contract.d.mts.map +1 -1
  23. package/esm/contracts/driver-blueprint.contract.d.mts +1 -1
  24. package/esm/contracts/driver-blueprint.contract.d.mts.map +1 -1
  25. package/esm/contracts/migration-driver.contract.d.mts +1 -1
  26. package/esm/contracts/migration-driver.contract.d.mts.map +1 -1
  27. package/esm/contracts/query-builder.contract.d.mts +1 -1
  28. package/esm/contracts/query-builder.contract.d.mts.map +1 -1
  29. package/esm/contracts/sync-adapter.contract.d.mts +1 -1
  30. package/esm/contracts/sync-adapter.contract.d.mts.map +1 -1
  31. package/esm/data-source/data-source-registry.d.mts +1 -1
  32. package/esm/data-source/data-source-registry.d.mts.map +1 -1
  33. package/esm/data-source/data-source-registry.mjs +1 -1
  34. package/esm/data-source/data-source-registry.mjs.map +1 -1
  35. package/esm/data-source/data-source.d.mts +1 -1
  36. package/esm/data-source/data-source.d.mts.map +1 -1
  37. package/esm/data-source/data-source.mjs +1 -1
  38. package/esm/data-source/data-source.mjs.map +1 -1
  39. package/esm/database-dirty-tracker.d.mts +1 -1
  40. package/esm/database-dirty-tracker.d.mts.map +1 -1
  41. package/esm/database-dirty-tracker.mjs +1 -1
  42. package/esm/database-dirty-tracker.mjs.map +1 -1
  43. package/esm/drivers/mongodb/mongodb-blueprint.mjs +1 -1
  44. package/esm/drivers/mongodb/mongodb-blueprint.mjs.map +1 -1
  45. package/esm/drivers/mongodb/mongodb-driver.d.mts +1 -1
  46. package/esm/drivers/mongodb/mongodb-driver.d.mts.map +1 -1
  47. package/esm/drivers/mongodb/mongodb-driver.mjs +1 -1
  48. package/esm/drivers/mongodb/mongodb-driver.mjs.map +1 -1
  49. package/esm/drivers/mongodb/mongodb-id-generator.d.mts +1 -1
  50. package/esm/drivers/mongodb/mongodb-id-generator.d.mts.map +1 -1
  51. package/esm/drivers/mongodb/mongodb-id-generator.mjs +1 -1
  52. package/esm/drivers/mongodb/mongodb-id-generator.mjs.map +1 -1
  53. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts +1 -1
  54. package/esm/drivers/mongodb/mongodb-migration-driver.d.mts.map +1 -1
  55. package/esm/drivers/mongodb/mongodb-migration-driver.mjs +1 -1
  56. package/esm/drivers/mongodb/mongodb-migration-driver.mjs.map +1 -1
  57. package/esm/drivers/mongodb/mongodb-query-builder.d.mts +1 -1
  58. package/esm/drivers/mongodb/mongodb-query-builder.d.mts.map +1 -1
  59. package/esm/drivers/mongodb/mongodb-query-builder.mjs +1 -1
  60. package/esm/drivers/mongodb/mongodb-query-builder.mjs.map +1 -1
  61. package/esm/drivers/mongodb/mongodb-query-operations.d.mts +1 -1
  62. package/esm/drivers/mongodb/mongodb-query-operations.d.mts.map +1 -1
  63. package/esm/drivers/mongodb/mongodb-query-operations.mjs +1 -1
  64. package/esm/drivers/mongodb/mongodb-query-operations.mjs.map +1 -1
  65. package/esm/drivers/mongodb/mongodb-query-parser.d.mts +1 -1
  66. package/esm/drivers/mongodb/mongodb-query-parser.d.mts.map +1 -1
  67. package/esm/drivers/mongodb/mongodb-query-parser.mjs +1 -1
  68. package/esm/drivers/mongodb/mongodb-query-parser.mjs.map +1 -1
  69. package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts +1 -1
  70. package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts.map +1 -1
  71. package/esm/drivers/mongodb/mongodb-sync-adapter.mjs +1 -1
  72. package/esm/drivers/mongodb/mongodb-sync-adapter.mjs.map +1 -1
  73. package/esm/drivers/mongodb/mongodb-update-translator.mjs +1 -1
  74. package/esm/drivers/mongodb/mongodb-update-translator.mjs.map +1 -1
  75. package/esm/drivers/mongodb/pipeline-stage-object.mjs +1 -1
  76. package/esm/drivers/mongodb/pipeline-stage-object.mjs.map +1 -1
  77. package/esm/drivers/mongodb/types.d.mts +1 -1
  78. package/esm/drivers/mongodb/types.d.mts.map +1 -1
  79. package/esm/drivers/postgres/naming.mjs +1 -1
  80. package/esm/drivers/postgres/naming.mjs.map +1 -1
  81. package/esm/drivers/postgres/postgres-blueprint.d.mts +1 -1
  82. package/esm/drivers/postgres/postgres-blueprint.d.mts.map +1 -1
  83. package/esm/drivers/postgres/postgres-blueprint.mjs +1 -1
  84. package/esm/drivers/postgres/postgres-blueprint.mjs.map +1 -1
  85. package/esm/drivers/postgres/postgres-dialect.d.mts +1 -1
  86. package/esm/drivers/postgres/postgres-dialect.d.mts.map +1 -1
  87. package/esm/drivers/postgres/postgres-dialect.mjs +1 -1
  88. package/esm/drivers/postgres/postgres-dialect.mjs.map +1 -1
  89. package/esm/drivers/postgres/postgres-driver.d.mts +1 -1
  90. package/esm/drivers/postgres/postgres-driver.d.mts.map +1 -1
  91. package/esm/drivers/postgres/postgres-driver.mjs +1 -1
  92. package/esm/drivers/postgres/postgres-driver.mjs.map +1 -1
  93. package/esm/drivers/postgres/postgres-migration-driver.d.mts +1 -1
  94. package/esm/drivers/postgres/postgres-migration-driver.d.mts.map +1 -1
  95. package/esm/drivers/postgres/postgres-migration-driver.mjs +1 -1
  96. package/esm/drivers/postgres/postgres-migration-driver.mjs.map +1 -1
  97. package/esm/drivers/postgres/postgres-query-builder.d.mts +1 -1
  98. package/esm/drivers/postgres/postgres-query-builder.d.mts.map +1 -1
  99. package/esm/drivers/postgres/postgres-query-builder.mjs +1 -1
  100. package/esm/drivers/postgres/postgres-query-builder.mjs.map +1 -1
  101. package/esm/drivers/postgres/postgres-query-parser.d.mts +1 -1
  102. package/esm/drivers/postgres/postgres-query-parser.d.mts.map +1 -1
  103. package/esm/drivers/postgres/postgres-query-parser.mjs +1 -2
  104. package/esm/drivers/postgres/postgres-query-parser.mjs.map +1 -1
  105. package/esm/drivers/postgres/postgres-sql-serializer.mjs +1 -1
  106. package/esm/drivers/postgres/postgres-sql-serializer.mjs.map +1 -1
  107. package/esm/drivers/postgres/postgres-ttl-purge.mjs +1 -1
  108. package/esm/drivers/postgres/postgres-ttl-purge.mjs.map +1 -1
  109. package/esm/drivers/postgres/postgres-type-converters.mjs +1 -1
  110. package/esm/drivers/postgres/postgres-type-converters.mjs.map +1 -1
  111. package/esm/drivers/postgres/postgres-update-validator.mjs +1 -1
  112. package/esm/drivers/postgres/postgres-update-validator.mjs.map +1 -1
  113. package/esm/drivers/postgres/types.d.mts +1 -1
  114. package/esm/drivers/postgres/types.d.mts.map +1 -1
  115. package/esm/drivers/sql/sql-dialect.contract.d.mts +1 -1
  116. package/esm/drivers/sql/sql-dialect.contract.d.mts.map +1 -1
  117. package/esm/drivers/sql/sql-types.d.mts +1 -1
  118. package/esm/drivers/sql/sql-types.d.mts.map +1 -1
  119. package/esm/errors/missing-data-source.error.d.mts +1 -1
  120. package/esm/errors/missing-data-source.error.d.mts.map +1 -1
  121. package/esm/errors/missing-data-source.error.mjs +1 -1
  122. package/esm/errors/missing-data-source.error.mjs.map +1 -1
  123. package/esm/errors/transaction-rollback.error.d.mts +1 -1
  124. package/esm/errors/transaction-rollback.error.d.mts.map +1 -1
  125. package/esm/errors/transaction-rollback.error.mjs +1 -1
  126. package/esm/errors/transaction-rollback.error.mjs.map +1 -1
  127. package/esm/errors/undefined-where-value.error.d.mts +1 -1
  128. package/esm/errors/undefined-where-value.error.d.mts.map +1 -1
  129. package/esm/errors/undefined-where-value.error.mjs +1 -1
  130. package/esm/errors/undefined-where-value.error.mjs.map +1 -1
  131. package/esm/errors/unsafe-filter.error.d.mts +1 -1
  132. package/esm/errors/unsafe-filter.error.d.mts.map +1 -1
  133. package/esm/errors/unsafe-filter.error.mjs +1 -1
  134. package/esm/errors/unsafe-filter.error.mjs.map +1 -1
  135. package/esm/errors/unsafe-raw-expression.error.d.mts +1 -1
  136. package/esm/errors/unsafe-raw-expression.error.d.mts.map +1 -1
  137. package/esm/errors/unsafe-raw-expression.error.mjs +1 -1
  138. package/esm/errors/unsafe-raw-expression.error.mjs.map +1 -1
  139. package/esm/errors/unsupported-lean-operation.error.d.mts +1 -1
  140. package/esm/errors/unsupported-lean-operation.error.d.mts.map +1 -1
  141. package/esm/errors/unsupported-lean-operation.error.mjs +1 -1
  142. package/esm/errors/unsupported-lean-operation.error.mjs.map +1 -1
  143. package/esm/errors/unsupported-lock-for-update.error.d.mts +1 -1
  144. package/esm/errors/unsupported-lock-for-update.error.d.mts.map +1 -1
  145. package/esm/errors/unsupported-lock-for-update.error.mjs +1 -1
  146. package/esm/errors/unsupported-lock-for-update.error.mjs.map +1 -1
  147. package/esm/errors/unsupported-query-operation.error.d.mts +1 -1
  148. package/esm/errors/unsupported-query-operation.error.d.mts.map +1 -1
  149. package/esm/errors/unsupported-query-operation.error.mjs +1 -1
  150. package/esm/errors/unsupported-query-operation.error.mjs.map +1 -1
  151. package/esm/errors/unsupported-update-operation.error.d.mts +1 -1
  152. package/esm/errors/unsupported-update-operation.error.d.mts.map +1 -1
  153. package/esm/errors/unsupported-update-operation.error.mjs +1 -1
  154. package/esm/errors/unsupported-update-operation.error.mjs.map +1 -1
  155. package/esm/events/model-events.d.mts +1 -1
  156. package/esm/events/model-events.d.mts.map +1 -1
  157. package/esm/events/model-events.mjs +1 -1
  158. package/esm/events/model-events.mjs.map +1 -1
  159. package/esm/expressions/aggregate-expressions.d.mts +1 -1
  160. package/esm/expressions/aggregate-expressions.d.mts.map +1 -1
  161. package/esm/expressions/aggregate-expressions.mjs +1 -1
  162. package/esm/expressions/aggregate-expressions.mjs.map +1 -1
  163. package/esm/expressions/column-expressions.d.mts +1 -1
  164. package/esm/expressions/column-expressions.d.mts.map +1 -1
  165. package/esm/expressions/column-expressions.mjs +1 -1
  166. package/esm/expressions/column-expressions.mjs.map +1 -1
  167. package/esm/migration/column-builder.d.mts +1 -1
  168. package/esm/migration/column-builder.d.mts.map +1 -1
  169. package/esm/migration/column-builder.mjs +1 -1
  170. package/esm/migration/column-builder.mjs.map +1 -1
  171. package/esm/migration/column-helpers.d.mts +1 -1
  172. package/esm/migration/column-helpers.d.mts.map +1 -1
  173. package/esm/migration/column-helpers.mjs +1 -1
  174. package/esm/migration/column-helpers.mjs.map +1 -1
  175. package/esm/migration/foreign-key-builder.d.mts +1 -1
  176. package/esm/migration/foreign-key-builder.d.mts.map +1 -1
  177. package/esm/migration/foreign-key-builder.mjs +1 -1
  178. package/esm/migration/foreign-key-builder.mjs.map +1 -1
  179. package/esm/migration/migration-order.mjs +1 -1
  180. package/esm/migration/migration-order.mjs.map +1 -1
  181. package/esm/migration/migration-runner.d.mts +1 -1
  182. package/esm/migration/migration-runner.d.mts.map +1 -1
  183. package/esm/migration/migration-runner.mjs +1 -1
  184. package/esm/migration/migration-runner.mjs.map +1 -1
  185. package/esm/migration/migration.d.mts +1 -1
  186. package/esm/migration/migration.d.mts.map +1 -1
  187. package/esm/migration/migration.mjs +1 -1
  188. package/esm/migration/migration.mjs.map +1 -1
  189. package/esm/migration/parse-created-at.mjs +1 -1
  190. package/esm/migration/parse-created-at.mjs.map +1 -1
  191. package/esm/migration/sql-grammar.mjs +1 -1
  192. package/esm/migration/sql-grammar.mjs.map +1 -1
  193. package/esm/migration/sql-serializer.d.mts +1 -1
  194. package/esm/migration/sql-serializer.d.mts.map +1 -1
  195. package/esm/migration/sql-serializer.mjs +1 -1
  196. package/esm/migration/sql-serializer.mjs.map +1 -1
  197. package/esm/migration/types.d.mts +1 -1
  198. package/esm/migration/types.d.mts.map +1 -1
  199. package/esm/model/generate-model-id.mjs +1 -1
  200. package/esm/model/generate-model-id.mjs.map +1 -1
  201. package/esm/model/methods/accessor-methods.mjs +1 -1
  202. package/esm/model/methods/accessor-methods.mjs.map +1 -1
  203. package/esm/model/methods/delete-methods.mjs +1 -1
  204. package/esm/model/methods/delete-methods.mjs.map +1 -1
  205. package/esm/model/methods/dirty-methods.mjs +1 -1
  206. package/esm/model/methods/dirty-methods.mjs.map +1 -1
  207. package/esm/model/methods/hydration-methods.mjs +1 -1
  208. package/esm/model/methods/hydration-methods.mjs.map +1 -1
  209. package/esm/model/methods/instance-event-methods.mjs +1 -1
  210. package/esm/model/methods/instance-event-methods.mjs.map +1 -1
  211. package/esm/model/methods/meta-methods.mjs +1 -1
  212. package/esm/model/methods/meta-methods.mjs.map +1 -1
  213. package/esm/model/methods/pivot-methods.mjs +1 -1
  214. package/esm/model/methods/pivot-methods.mjs.map +1 -1
  215. package/esm/model/methods/query-methods.mjs +1 -1
  216. package/esm/model/methods/query-methods.mjs.map +1 -1
  217. package/esm/model/methods/restore-methods.mjs +1 -1
  218. package/esm/model/methods/restore-methods.mjs.map +1 -1
  219. package/esm/model/methods/scope-methods.mjs +1 -1
  220. package/esm/model/methods/scope-methods.mjs.map +1 -1
  221. package/esm/model/methods/serialization-methods.mjs +1 -1
  222. package/esm/model/methods/serialization-methods.mjs.map +1 -1
  223. package/esm/model/methods/static-event-methods.mjs +1 -1
  224. package/esm/model/methods/static-event-methods.mjs.map +1 -1
  225. package/esm/model/methods/write-methods.d.mts +1 -1
  226. package/esm/model/methods/write-methods.d.mts.map +1 -1
  227. package/esm/model/methods/write-methods.mjs +1 -1
  228. package/esm/model/methods/write-methods.mjs.map +1 -1
  229. package/esm/model/model.d.mts +1 -1
  230. package/esm/model/model.d.mts.map +1 -1
  231. package/esm/model/model.mjs +1 -1
  232. package/esm/model/model.mjs.map +1 -1
  233. package/esm/model/model.types.d.mts +1 -1
  234. package/esm/model/model.types.d.mts.map +1 -1
  235. package/esm/model/register-model.d.mts +1 -1
  236. package/esm/model/register-model.d.mts.map +1 -1
  237. package/esm/model/register-model.mjs +1 -1
  238. package/esm/model/register-model.mjs.map +1 -1
  239. package/esm/model/relation-decorators.d.mts +1 -1
  240. package/esm/model/relation-decorators.d.mts.map +1 -1
  241. package/esm/model/relation-decorators.mjs +1 -1
  242. package/esm/model/relation-decorators.mjs.map +1 -1
  243. package/esm/operations/database.d.mts +1 -1
  244. package/esm/operations/database.d.mts.map +1 -1
  245. package/esm/operations/database.mjs +1 -1
  246. package/esm/operations/database.mjs.map +1 -1
  247. package/esm/operations/migrations.d.mts +1 -1
  248. package/esm/operations/migrations.d.mts.map +1 -1
  249. package/esm/operations/migrations.mjs +1 -1
  250. package/esm/operations/migrations.mjs.map +1 -1
  251. package/esm/query-builder/lean-records.mjs +1 -1
  252. package/esm/query-builder/lean-records.mjs.map +1 -1
  253. package/esm/query-builder/query-builder.d.mts +1 -1
  254. package/esm/query-builder/query-builder.d.mts.map +1 -1
  255. package/esm/query-builder/query-builder.mjs +1 -1
  256. package/esm/query-builder/query-builder.mjs.map +1 -1
  257. package/esm/relations/key-conventions.mjs +1 -1
  258. package/esm/relations/key-conventions.mjs.map +1 -1
  259. package/esm/relations/pivot-operations.d.mts +1 -1
  260. package/esm/relations/pivot-operations.d.mts.map +1 -1
  261. package/esm/relations/pivot-operations.mjs +1 -1
  262. package/esm/relations/pivot-operations.mjs.map +1 -1
  263. package/esm/relations/relation-hydrator.d.mts +1 -1
  264. package/esm/relations/relation-hydrator.d.mts.map +1 -1
  265. package/esm/relations/relation-hydrator.mjs +1 -1
  266. package/esm/relations/relation-hydrator.mjs.map +1 -1
  267. package/esm/relations/relation-loader.d.mts +1 -1
  268. package/esm/relations/relation-loader.d.mts.map +1 -1
  269. package/esm/relations/relation-loader.mjs +1 -1
  270. package/esm/relations/relation-loader.mjs.map +1 -1
  271. package/esm/relations/types.d.mts +1 -1
  272. package/esm/relations/types.d.mts.map +1 -1
  273. package/esm/remover/database-remover.d.mts +1 -1
  274. package/esm/remover/database-remover.d.mts.map +1 -1
  275. package/esm/remover/database-remover.mjs +1 -1
  276. package/esm/remover/database-remover.mjs.map +1 -1
  277. package/esm/restorer/database-restorer.d.mts +1 -1
  278. package/esm/restorer/database-restorer.d.mts.map +1 -1
  279. package/esm/restorer/database-restorer.mjs +1 -1
  280. package/esm/restorer/database-restorer.mjs.map +1 -1
  281. package/esm/sql-database-dirty-tracker.d.mts +1 -1
  282. package/esm/sql-database-dirty-tracker.d.mts.map +1 -1
  283. package/esm/sql-database-dirty-tracker.mjs +1 -1
  284. package/esm/sql-database-dirty-tracker.mjs.map +1 -1
  285. package/esm/sync/model-events.mjs +1 -1
  286. package/esm/sync/model-events.mjs.map +1 -1
  287. package/esm/sync/model-sync-operation.d.mts +1 -1
  288. package/esm/sync/model-sync-operation.d.mts.map +1 -1
  289. package/esm/sync/model-sync-operation.mjs +1 -1
  290. package/esm/sync/model-sync-operation.mjs.map +1 -1
  291. package/esm/sync/model-sync.d.mts +1 -1
  292. package/esm/sync/model-sync.d.mts.map +1 -1
  293. package/esm/sync/model-sync.mjs +1 -1
  294. package/esm/sync/model-sync.mjs.map +1 -1
  295. package/esm/sync/sync-context.d.mts +1 -1
  296. package/esm/sync/sync-context.d.mts.map +1 -1
  297. package/esm/sync/sync-context.mjs +1 -1
  298. package/esm/sync/sync-context.mjs.map +1 -1
  299. package/esm/sync/sync-fanout.mjs +1 -1
  300. package/esm/sync/sync-fanout.mjs.map +1 -1
  301. package/esm/sync/sync-manager.d.mts +1 -1
  302. package/esm/sync/sync-manager.d.mts.map +1 -1
  303. package/esm/sync/sync-manager.mjs +1 -1
  304. package/esm/sync/sync-manager.mjs.map +1 -1
  305. package/esm/sync/types.d.mts +1 -1
  306. package/esm/sync/types.d.mts.map +1 -1
  307. package/esm/transactions/after-commit.d.mts +1 -1
  308. package/esm/transactions/after-commit.d.mts.map +1 -1
  309. package/esm/transactions/after-commit.mjs +1 -1
  310. package/esm/transactions/after-commit.mjs.map +1 -1
  311. package/esm/types.d.mts +1 -1
  312. package/esm/types.d.mts.map +1 -1
  313. package/esm/utils/connect-to-database.d.mts +1 -1
  314. package/esm/utils/connect-to-database.d.mts.map +1 -1
  315. package/esm/utils/connect-to-database.mjs +1 -1
  316. package/esm/utils/connect-to-database.mjs.map +1 -1
  317. package/esm/utils/database-writer.utils.d.mts +1 -1
  318. package/esm/utils/database-writer.utils.d.mts.map +1 -1
  319. package/esm/utils/database-writer.utils.mjs +1 -1
  320. package/esm/utils/database-writer.utils.mjs.map +1 -1
  321. package/esm/utils/define-model.d.mts +1 -1
  322. package/esm/utils/define-model.d.mts.map +1 -1
  323. package/esm/utils/define-model.mjs +1 -1
  324. package/esm/utils/define-model.mjs.map +1 -1
  325. package/esm/utils/escape-regex.d.mts +1 -1
  326. package/esm/utils/escape-regex.d.mts.map +1 -1
  327. package/esm/utils/escape-regex.mjs +1 -1
  328. package/esm/utils/escape-regex.mjs.map +1 -1
  329. package/esm/utils/is-valid-date-value.mjs +1 -1
  330. package/esm/utils/is-valid-date-value.mjs.map +1 -1
  331. package/esm/utils/once-connected.d.mts +1 -1
  332. package/esm/utils/once-connected.d.mts.map +1 -1
  333. package/esm/utils/once-connected.mjs +1 -1
  334. package/esm/utils/once-connected.mjs.map +1 -1
  335. package/esm/utils/prune-empty-parents.mjs +1 -1
  336. package/esm/utils/prune-empty-parents.mjs.map +1 -1
  337. package/esm/utils/sanitize-filter.d.mts +1 -1
  338. package/esm/utils/sanitize-filter.d.mts.map +1 -1
  339. package/esm/utils/sanitize-filter.mjs +1 -1
  340. package/esm/utils/sanitize-filter.mjs.map +1 -1
  341. package/esm/validation/database-seal-plugins.mjs +1 -1
  342. package/esm/validation/database-seal-plugins.mjs.map +1 -1
  343. package/esm/validation/database-writer-validation-error.d.mts +1 -1
  344. package/esm/validation/database-writer-validation-error.d.mts.map +1 -1
  345. package/esm/validation/database-writer-validation-error.mjs +1 -1
  346. package/esm/validation/database-writer-validation-error.mjs.map +1 -1
  347. package/esm/validation/mutators/embed-mutator.mjs +1 -1
  348. package/esm/validation/mutators/embed-mutator.mjs.map +1 -1
  349. package/esm/validation/plugins/database-rules-plugin.d.mts +1 -1
  350. package/esm/validation/plugins/database-rules-plugin.d.mts.map +1 -1
  351. package/esm/validation/plugins/database-rules-plugin.mjs +1 -1
  352. package/esm/validation/plugins/database-rules-plugin.mjs.map +1 -1
  353. package/esm/validation/plugins/embed-validator-plugin.d.mts +1 -1
  354. package/esm/validation/plugins/embed-validator-plugin.d.mts.map +1 -1
  355. package/esm/validation/plugins/embed-validator-plugin.mjs +1 -1
  356. package/esm/validation/plugins/embed-validator-plugin.mjs.map +1 -1
  357. package/esm/validation/rules/database-model-rule.mjs +1 -1
  358. package/esm/validation/rules/database-model-rule.mjs.map +1 -1
  359. package/esm/validation/rules/exists-rule.mjs +1 -1
  360. package/esm/validation/rules/exists-rule.mjs.map +1 -1
  361. package/esm/validation/rules/unique-rule.mjs +1 -1
  362. package/esm/validation/rules/unique-rule.mjs.map +1 -1
  363. package/esm/validation/transformers/embed-model-transformer.mjs +1 -1
  364. package/esm/validation/transformers/embed-model-transformer.mjs.map +1 -1
  365. package/esm/validation/types.d.mts +1 -1
  366. package/esm/validation/types.d.mts.map +1 -1
  367. package/esm/validation/validators/embed-validator.d.mts +1 -1
  368. package/esm/validation/validators/embed-validator.d.mts.map +1 -1
  369. package/esm/validation/validators/embed-validator.mjs +1 -1
  370. package/esm/validation/validators/embed-validator.mjs.map +1 -1
  371. package/esm/writer/database-writer.d.mts +1 -1
  372. package/esm/writer/database-writer.d.mts.map +1 -1
  373. package/esm/writer/database-writer.mjs +1 -1
  374. package/esm/writer/database-writer.mjs.map +1 -1
  375. package/llms-full.txt +541 -434
  376. package/package.json +7 -6
  377. package/skills/aggregate-data/SKILL.md +28 -17
  378. package/skills/alter-migration/SKILL.md +325 -233
  379. package/skills/cascade-basics/SKILL.md +19 -19
  380. package/skills/configure-delete-strategy/SKILL.md +11 -11
  381. package/skills/define-model/SKILL.md +19 -17
  382. package/skills/define-relations/SKILL.md +13 -18
  383. package/skills/index.md +3 -0
  384. package/skills/manage-transactions/SKILL.md +18 -12
  385. package/skills/paginate-results/SKILL.md +6 -8
  386. package/skills/perform-atomic-ops/SKILL.md +26 -21
  387. package/skills/query-data/SKILL.md +27 -33
  388. package/skills/run-cascade-cli/SKILL.md +11 -10
  389. package/skills/search-by-vector/SKILL.md +8 -5
  390. package/skills/subscribe-to-model-events/SKILL.md +17 -17
  391. package/skills/track-changes/SKILL.md +9 -9
  392. package/skills/write-migration/SKILL.md +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-update-validator.mjs","names":[],"sources":["../../../../../../../../cascade/src/drivers/postgres/postgres-update-validator.ts"],"sourcesContent":["import type {\n AtomicUpdate,\n DriverAtomicUpdateOptions,\n UpdateOperations,\n} from \"../../contracts/database-driver.contract\";\nimport { UnsupportedUpdateOperationError } from \"../../errors/unsupported-update-operation.error\";\n\n/**\n * Update operators the Postgres driver can express in SQL.\n *\n * `$setOnInsert` only contributes to the INSERT half of an upsert; on a plain\n * update it is a no-op, exactly as in MongoDB.\n */\nconst SUPPORTED_OPERATORS: ReadonlySet<string> = new Set([\n \"$set\",\n \"$unset\",\n \"$inc\",\n \"$dec\",\n \"$setOnInsert\",\n]);\n\n/**\n * Reject every part of an update the Postgres driver cannot perform, so no\n * operator or option is ever silently dropped.\n *\n * @param update - The requested update\n * @param options - The requested update options\n * @returns The update, narrowed to an operator object\n * @throws UnsupportedUpdateOperationError for pipeline updates, `arrayFilters`,\n * and any operator outside {@link SUPPORTED_OPERATORS}\n */\nexport function assertPostgresUpdate(\n update: AtomicUpdate,\n options?: DriverAtomicUpdateOptions,\n): UpdateOperations {\n if (Array.isArray(update)) {\n throw new UnsupportedUpdateOperationError(\n \"pipeline update\",\n \"postgres\",\n \"Use an operator object ($set/$unset/$inc/$dec) or a raw query.\",\n );\n }\n\n if (options?.arrayFilters !== undefined) {\n throw new UnsupportedUpdateOperationError(\"arrayFilters\", \"postgres\");\n }\n\n for (const operator of Object.keys(update)) {\n if (!SUPPORTED_OPERATORS.has(operator)) {\n throw new UnsupportedUpdateOperationError(\n operator,\n \"postgres\",\n \"Supported operators: $set, $unset, $inc, $dec, $setOnInsert.\",\n );\n }\n }\n\n return update;\n}\n"],"mappings":";;;;;;;;;AAaA,MAAM,sBAA2C,IAAI,IAAI;CACvD;CACA;CACA;CACA;CACA;AACF,CAAC;;;;;;;;;;;AAYD,SAAgB,qBACd,QACA,SACkB;CAClB,IAAI,MAAM,QAAQ,MAAM,GACtB,MAAM,IAAI,gCACR,mBACA,YACA,gEACF;CAGF,IAAI,SAAS,iBAAiB,QAC5B,MAAM,IAAI,gCAAgC,gBAAgB,UAAU;CAGtE,KAAK,MAAM,YAAY,OAAO,KAAK,MAAM,GACvC,IAAI,CAAC,oBAAoB,IAAI,QAAQ,GACnC,MAAM,IAAI,gCACR,UACA,YACA,8DACF;CAIJ,OAAO;AACT"}
1
+ {"version":3,"file":"postgres-update-validator.mjs","names":[],"sources":["../../../../../../../../../packages/cascade/src/drivers/postgres/postgres-update-validator.ts"],"sourcesContent":["import type {\n AtomicUpdate,\n DriverAtomicUpdateOptions,\n UpdateOperations,\n} from \"../../contracts/database-driver.contract\";\nimport { UnsupportedUpdateOperationError } from \"../../errors/unsupported-update-operation.error\";\n\n/**\n * Update operators the Postgres driver can express in SQL.\n *\n * `$setOnInsert` only contributes to the INSERT half of an upsert; on a plain\n * update it is a no-op, exactly as in MongoDB.\n */\nconst SUPPORTED_OPERATORS: ReadonlySet<string> = new Set([\n \"$set\",\n \"$unset\",\n \"$inc\",\n \"$dec\",\n \"$setOnInsert\",\n]);\n\n/**\n * Reject every part of an update the Postgres driver cannot perform, so no\n * operator or option is ever silently dropped.\n *\n * @param update - The requested update\n * @param options - The requested update options\n * @returns The update, narrowed to an operator object\n * @throws UnsupportedUpdateOperationError for pipeline updates, `arrayFilters`,\n * and any operator outside {@link SUPPORTED_OPERATORS}\n */\nexport function assertPostgresUpdate(\n update: AtomicUpdate,\n options?: DriverAtomicUpdateOptions,\n): UpdateOperations {\n if (Array.isArray(update)) {\n throw new UnsupportedUpdateOperationError(\n \"pipeline update\",\n \"postgres\",\n \"Use an operator object ($set/$unset/$inc/$dec) or a raw query.\",\n );\n }\n\n if (options?.arrayFilters !== undefined) {\n throw new UnsupportedUpdateOperationError(\"arrayFilters\", \"postgres\");\n }\n\n for (const operator of Object.keys(update)) {\n if (!SUPPORTED_OPERATORS.has(operator)) {\n throw new UnsupportedUpdateOperationError(\n operator,\n \"postgres\",\n \"Supported operators: $set, $unset, $inc, $dec, $setOnInsert.\",\n );\n }\n }\n\n return update;\n}\n"],"mappings":";;;;;;;;;AAaA,MAAM,sBAA2C,IAAI,IAAI;CACvD;CACA;CACA;CACA;CACA;AACF,CAAC;;;;;;;;;;;AAYD,SAAgB,qBACd,QACA,SACkB;CAClB,IAAI,MAAM,QAAQ,MAAM,GACtB,MAAM,IAAI,gCACR,mBACA,YACA,gEACF;CAGF,IAAI,SAAS,iBAAiB,QAC5B,MAAM,IAAI,gCAAgC,gBAAgB,UAAU;CAGtE,KAAK,MAAM,YAAY,OAAO,KAAK,MAAM,GACvC,IAAI,CAAC,oBAAoB,IAAI,QAAQ,GACnC,MAAM,IAAI,gCACR,UACA,YACA,8DACF;CAIJ,OAAO;AACT"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/drivers/postgres/types.d.ts
1
+ //#region ../../packages/cascade/src/drivers/postgres/types.d.ts
2
2
  /**
3
3
  * PostgreSQL Driver Types
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","names":[],"sources":["../../../../../../../../cascade/src/drivers/postgres/types.ts"],"mappings":";;AAWA;;;;;;;;;KAAY,wBAAA;EAcD,oDAZA,IAAA,WAgBM;EAAA,SAdN,IAAA,WAgBM;EAAA,SAdN,QAAA,UAiBO;EAAA,SAfP,IAAA,WAqBC;EAAA,SAnBD,QAAA;WAEA,gBAAA,WAiBsB;EAAA,SAftB,GAAA;IAAA,SAGM,kBAAA;IAAA,SACA,EAAA;IAAA,SACA,IAAA;IAAA,SACA,GAAA;EAAA,GA+BN;EAAA,SA5BA,OAAA;AAAA;;AA6CkB;AAM7B;KA7CY,kBAAA,GAAqB,wBAAwB;EA6C1B,+HA3CpB,MAAA,8BA6CM;EAAA,SA3CN,GAAA,WA+Ca;EAAA,SA7Cb,GAAA,WAuCqB;EAAA,SArCrB,iBAAA,WAuCA;EAAA,SArCA,uBAAA;EAuCA;;;;;;;AAOO;AAMlB;EAbW,SA7BA,SAAA;WAEA,OAAA,WAwCuB;EAAA,SAtCvB,gBAAA;EA4C2B;;;;;;;;;;AAWV;AAM5B;;;EAjBsC,SA7B3B,kBAAA;AAAA;;;;KAMC,mBAAA,KAAwB,MAAA;EA+Cb,mDA7CZ,IAAA,EAAM,CAAA,IAmDc;EAAA,SAjDpB,QAAA,iBA6E4B;EAAA,SA3E5B,MAAA,EAAQ,KAAA;IAAA,SACN,IAAA;IAAA,SACA,UAAA;EAAA,IAmEF;EAAA,SAhEA,OAAA;AAAA;;;;KAMC,sBAAA;AAsEZ;;;AAAA,KAhEY,0BAAA;EAkED,mDAhEA,cAAA,GAAiB,sBAAA,EAoEjB;EAAA,SAlEA,QAAA,YAkES;EAAA,SAhET,UAAA;EAsEoB;;;;EAAA,SAjEpB,QAAA,GAAW,MAAM;AAAA;;;;KAMhB,iBAAA;EAyEM,2DAvEP,KAAA;WAGA,IAAA;WAEA,IAAA,EAAM,MAAM;AAAA;;;;KAMX,mBAAA;kEAED,OAAA;WAEA,IAAA;WAcA,MAAA;WAEA,QAAA;WAEA,KAAA;WAEA,GAAA;WAEA,QAAA;WAEA,MAAA,GAAS,mBAAmB;AAAA;;;;KAM3B,oBAAA;8BAED,OAAA;WAEA,OAAA;WAEA,SAAA;AAAA;;;;KAMC,mBAAA;4CAED,MAAA;WAEA,SAAA;WAEA,KAAA;WAEA,MAAA;WAEA,MAAA;WAEA,IAAA;WAEA,OAAA;AAAA"}
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../../../../../../../packages/cascade/src/drivers/postgres/types.ts"],"mappings":";;AAWA;;;;;;;;;KAAY,wBAAA;EAcD,oDAZA,IAAA,WAgBM;EAAA,SAdN,IAAA,WAgBM;EAAA,SAdN,QAAA,UAiBO;EAAA,SAfP,IAAA,WAqBC;EAAA,SAnBD,QAAA;WAEA,gBAAA,WAiBsB;EAAA,SAftB,GAAA;IAAA,SAGM,kBAAA;IAAA,SACA,EAAA;IAAA,SACA,IAAA;IAAA,SACA,GAAA;EAAA,GA+BN;EAAA,SA5BA,OAAA;AAAA;;AA6CkB;AAM7B;KA7CY,kBAAA,GAAqB,wBAAwB;EA6C1B,+HA3CpB,MAAA,8BA6CM;EAAA,SA3CN,GAAA,WA+Ca;EAAA,SA7Cb,GAAA,WAuCqB;EAAA,SArCrB,iBAAA,WAuCA;EAAA,SArCA,uBAAA;EAuCA;;;;;;;AAOO;AAMlB;EAbW,SA7BA,SAAA;WAEA,OAAA,WAwCuB;EAAA,SAtCvB,gBAAA;EA+C2B;;;;;;;;;;AAWV;AAM5B;;;EAjBsC,SAhC3B,kBAAA;AAAA;;;;KAMC,mBAAA,KAAwB,MAAA;EA0Db,mDAxDZ,IAAA,EAAM,CAAA,IA8Dc;EAAA,SA5DpB,QAAA,iBAwF4B;EAAA,SAtF5B,MAAA,EAAQ,KAAA;IAAA,SACN,IAAA;IAAA,SACA,UAAA;EAAA,IA8EF;EAAA,SA3EA,OAAA;AAAA;;;;KAMC,sBAAA;AAiFZ;;;AAAA,KAxEY,0BAAA;EA0ED,mDAxEA,cAAA,GAAiB,sBAAA,EA4EjB;EAAA,SA1EA,QAAA,YA0ES;EAAA,SAxET,UAAA;EA8EoB;;;;EAAA,SAzEpB,QAAA,GAAW,MAAM;AAAA;;;;KAMhB,iBAAA;EAiFM,2DA/EP,KAAA;WAWA,IAAA;WAEA,IAAA,EAAM,MAAM;AAAA;;;;KAMX,mBAAA;kEAED,OAAA;WAEA,IAAA;WAcA,MAAA;WAEA,QAAA;WAEA,KAAA;WAEA,GAAA;WAEA,QAAA;WAEA,MAAA,GAAS,mBAAmB;AAAA;;;;KAM3B,oBAAA;8BAED,OAAA;WAEA,OAAA;WAEA,SAAA;AAAA;;;;KAMC,mBAAA;4CAED,MAAA;WAEA,SAAA;WAEA,KAAA;WAEA,MAAA;WAEA,MAAA;WAEA,IAAA;WAEA,OAAA;AAAA"}
@@ -1,7 +1,7 @@
1
1
  import { ColumnExpression } from "../../expressions/column-expressions.mjs";
2
2
  import { AggregateExpression } from "../../expressions/aggregate-expressions.mjs";
3
3
 
4
- //#region ../cascade/src/drivers/sql/sql-dialect.contract.d.ts
4
+ //#region ../../packages/cascade/src/drivers/sql/sql-dialect.contract.d.ts
5
5
  /**
6
6
  * Contract that SQL dialects must implement to handle database-specific
7
7
  * SQL syntax variations.
@@ -1 +1 @@
1
- {"version":3,"file":"sql-dialect.contract.d.mts","names":[],"sources":["../../../../../../../../cascade/src/drivers/sql/sql-dialect.contract.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;UAmCiB,kBAAA;EA6Je;;;;;EAAA,SAvJrB,IAAA;EAwK0D;;;;;;;;;;;;AA4CC;;;;EAlMpE,WAAA,CAAY,KAAA;;;;;;;;;;;;;;;;;;;EAoBZ,eAAA,CAAgB,UAAA;;;;;;;;;;;;;;;;;EAkBhB,cAAA,CAAe,KAAA;;;;;;;WAQN,iBAAA;;;;;;;WAQA,aAAA;;;;;;;;;;;;;;;;;EAkBT,WAAA,CAAY,KAAA,WAAgB,MAAA;;;;;;;;;;;;;;;;;;;EAoB5B,WAAA,CAAY,MAAA,UAAgB,IAAA;;;;;;;;;;;;EAa5B,YAAA,CAAa,MAAA,UAAgB,KAAA,WAAgB,IAAA;;;;;;;;;;;;;;;EAgB7C,WAAA,CAAY,OAAA,UAAiB,eAAA;IAA8B,QAAA;IAAkB,OAAA;EAAA;;;;;;;;;;;EAY7E,aAAA,CAAc,MAAA,UAAgB,UAAA;;;;;;;;;;;;;;EAe9B,UAAA,CACE,IAAA,UACA,OAAA;IAAY,MAAA;IAAiB,SAAA;IAAoB,KAAA;IAAgB,UAAA;EAAA;;;;;;;;;;;;;;;;;;;;;EAuBnE,cAAA,CAAe,UAAA,EAAY,mBAAA;;;;;;;;;;;EAY3B,qBAAA,CAAsB,UAAA,EAAY,gBAAgB;;;;;;;;EASlD,YAAA,CAAa,MAAA,UAAgB,IAAA;AAAA"}
1
+ {"version":3,"file":"sql-dialect.contract.d.mts","names":[],"sources":["../../../../../../../../../packages/cascade/src/drivers/sql/sql-dialect.contract.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;UAmCiB,kBAAA;EA6Je;;;;;EAAA,SAvJrB,IAAA;EAwK0D;;;;;;;;;;;;AA4CC;;;;EAlMpE,WAAA,CAAY,KAAA;;;;;;;;;;;;;;;;;;;EAoBZ,eAAA,CAAgB,UAAA;;;;;;;;;;;;;;;;;EAkBhB,cAAA,CAAe,KAAA;;;;;;;WAQN,iBAAA;;;;;;;WAQA,aAAA;;;;;;;;;;;;;;;;;EAkBT,WAAA,CAAY,KAAA,WAAgB,MAAA;;;;;;;;;;;;;;;;;;;EAoB5B,WAAA,CAAY,MAAA,UAAgB,IAAA;;;;;;;;;;;;EAa5B,YAAA,CAAa,MAAA,UAAgB,KAAA,WAAgB,IAAA;;;;;;;;;;;;;;;EAgB7C,WAAA,CAAY,OAAA,UAAiB,eAAA;IAA8B,QAAA;IAAkB,OAAA;EAAA;;;;;;;;;;;EAY7E,aAAA,CAAc,MAAA,UAAgB,UAAA;;;;;;;;;;;;;;EAe9B,UAAA,CACE,IAAA,UACA,OAAA;IAAY,MAAA;IAAiB,SAAA;IAAoB,KAAA;IAAgB,UAAA;EAAA;;;;;;;;;;;;;;;;;;;;;EAuBnE,cAAA,CAAe,UAAA,EAAY,mBAAA;;;;;;;;;;;EAY3B,qBAAA,CAAsB,UAAA,EAAY,gBAAgB;;;;;;;;EASlD,YAAA,CAAa,MAAA,UAAgB,IAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/drivers/sql/sql-types.d.ts
1
+ //#region ../../packages/cascade/src/drivers/sql/sql-types.d.ts
2
2
  /**
3
3
  * SQL Types and Definitions
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sql-types.d.mts","names":[],"sources":["../../../../../../../../cascade/src/drivers/sql/sql-types.ts"],"mappings":";;AAeA;;;;AAIiB;AAMjB;;;;AAAuB;AAOvB;;;KAjBY,cAAA;EAmBD,oFAjBA,GAAA,UAmBA;EAAA,SAjBA,MAAM;AAAA;;;;KAML,WAAA;;;;;;KAOA,aAAA;EA2BA,sCAzBD,IAAA,EAAM,WAAA;WAEN,KAAA,UAyBA;EAAA,SAvBA,KAAA,WA2BA;EAAA,SAzBA,EAAA;IAyBK,mDAvBH,IAAA,UA6Ba;IAAA,SA3Bb,QAAA,UA6BK;IAAA,SA3BL,KAAA;EAAA,GAiCc;EAAA,SA9BhB,oBAAA,GAAuB,KAAK;IAAA,SAC1B,IAAA;IAAA,SACA,QAAA;IAAA,SACA,KAAA;EAAA;AAAA;;AAmCG;AAMhB;KAlCY,cAAA;oCAED,MAAA,UAgCa;EAAA,SA9Bb,SAAA,kBA6CkB;EAAA,SA3ClB,KAAA;AAAA;;;;KAMC,cAAA;EA6CD,mCA3CA,OAAO;AAAA;;;;KAMN,eAAA;EAiDA,0DA/CD,SAAA;WAEA,MAAA,UA+CA;EAAA,SA7CA,QAAA,UAiDA;EAAA,SA/CA,KAAA;AAAA;AAqDX;;;AAAA,KA/CY,YAAA;;;;;;KAeA,iBAAA;EAkCD,qEAhCA,IAAA,EAAM,YAAA,EAoCN;EAAA,SAlCA,KAAA,WAoCA;EAAA,SAlCA,QAAA,WAoCA;EAAA,SAlCA,KAAA,YAoCA;EAAA,SAlCA,GAAA,WAoCQ;EAAA,SAlCR,QAAA,cAoCS;EAAA,SAlCT,MAAA,GAAS,iBAAiB;AAAA;;;AAwClB;KAlCP,eAAA;EAwCkB,yCAtCnB,UAAA,UAsCmB;EAAA,SApCnB,KAAA,WAwCA;EAAA,SAtCA,KAAA;AAAA;;;;KAMC,cAAA;EAyCc,iCAvCf,KAAA,UA8CC;EAAA,SA5CD,KAAA;WAEA,MAAA,EAAQ,eAAA,IAgDI;EAAA,SA9CZ,KAAA,EAAO,aAAA,IAkDiB;EAAA,SAhDxB,KAAA,EAAO,iBAAA,IAwCP;EAAA,SAtCA,OAAA,YAwCK;EAAA,SAtCL,MAAA,EAAQ,eAAA,IAwCI;EAAA,SAtCZ,OAAA,EAAS,cAAA,IA0CT;EAAA,SAxCA,KAAA,WA0CA;EAAA,SAxCA,MAAA,WA0CK;EAAA,SAxCL,QAAA;AAAA;;;;KAMC,kBAAA;EA4CD,4BA1CA,KAAA,UA4CA;EAAA,SA1CA,OAAA,YA4CK;EAAA,SA1CL,MAAA,eAgDC;EAAA,SA9CD,SAAA;WAEA,UAAA;IAAA,SACE,OAAA;IAAA,SACA,MAAA;IAAA,SACA,aAAA;EAAA;AAAA;;;;KAOD,kBAAA;8BAED,KAAA;WAEA,GAAA,EAAK,MAAA;WAEL,SAAA,GAAY,MAAA;WAEZ,KAAA;WAEA,KAAA,EAAO,iBAAA;WAEP,SAAA;WAEA,KAAA;AAAA;;;;KAMC,kBAAA;8BAED,KAAA;WAEA,KAAA,EAAO,iBAAiB;WAExB,SAAA;WAEA,KAAA;AAAA;;;;KAMC,oBAAA"}
1
+ {"version":3,"file":"sql-types.d.mts","names":[],"sources":["../../../../../../../../../packages/cascade/src/drivers/sql/sql-types.ts"],"mappings":";;AAeA;;;;AAIiB;AAMjB;;;;AAAuB;AAOvB;;;KAjBY,cAAA;EAmBD,oFAjBA,GAAA,UAmBA;EAAA,SAjBA,MAAM;AAAA;;;;KAML,WAAA;;;;;;KAOA,aAAA;EA2BA,sCAzBD,IAAA,EAAM,WAAA;WAEN,KAAA,UAyBA;EAAA,SAvBA,KAAA,WA2BA;EAAA,SAzBA,EAAA;IAyBK,mDAvBH,IAAA,UA6Ba;IAAA,SA3Bb,QAAA,UA6BK;IAAA,SA3BL,KAAA;EAAA,GAiCc;EAAA,SA9BhB,oBAAA,GAAuB,KAAK;IAAA,SAC1B,IAAA;IAAA,SACA,QAAA;IAAA,SACA,KAAA;EAAA;AAAA;;AAmCG;AAMhB;KAlCY,cAAA;oCAED,MAAA,UAgCa;EAAA,SA9Bb,SAAA,kBA6CkB;EAAA,SA3ClB,KAAA;AAAA;;;;KAMC,cAAA;EA6CD,mCA3CA,OAAO;AAAA;;;;KAMN,eAAA;EAiDA,0DA/CD,SAAA;WAEA,MAAA,UA+CA;EAAA,SA7CA,QAAA,UAiDA;EAAA,SA/CA,KAAA;AAAA;AAqDX;;;AAAA,KA/CY,YAAA;;;;;;KAeA,iBAAA;EAkCD,qEAhCA,IAAA,EAAM,YAAA,EAoCN;EAAA,SAlCA,KAAA,WAoCA;EAAA,SAlCA,QAAA,WAoCA;EAAA,SAlCA,KAAA,YAoCA;EAAA,SAlCA,GAAA,WAoCQ;EAAA,SAlCR,QAAA,cAoCS;EAAA,SAlCT,MAAA,GAAS,iBAAiB;AAAA;;;AAwClB;KAlCP,eAAA;EAwCkB,yCAtCnB,UAAA,UAsCmB;EAAA,SApCnB,KAAA,WAwCA;EAAA,SAtCA,KAAA;AAAA;;;;KAMC,cAAA;EAyCc,iCAvCf,KAAA,UA8CC;EAAA,SA5CD,KAAA;WAEA,MAAA,EAAQ,eAAA,IAgDI;EAAA,SA9CZ,KAAA,EAAO,aAAA,IAkDiB;EAAA,SAhDxB,KAAA,EAAO,iBAAA,IAwCP;EAAA,SAtCA,OAAA,YAwCK;EAAA,SAtCL,MAAA,EAAQ,eAAA,IAwCI;EAAA,SAtCZ,OAAA,EAAS,cAAA,IA0CT;EAAA,SAxCA,KAAA,WA0CA;EAAA,SAxCA,MAAA,WA0CK;EAAA,SAxCL,QAAA;AAAA;;;;KAMC,kBAAA;EA4CD,4BA1CA,KAAA,UA4CA;EAAA,SA1CA,OAAA,YA4CK;EAAA,SA1CL,MAAA,eAgDC;EAAA,SA9CD,SAAA;WAEA,UAAA;IAAA,SACE,OAAA;IAAA,SACA,MAAA;IAAA,SACA,aAAA;EAAA;AAAA;;;;KAOD,kBAAA;8BAED,KAAA;WAEA,GAAA,EAAK,MAAA;WAEL,SAAA,GAAY,MAAA;WAEZ,KAAA;WAEA,KAAA,EAAO,iBAAA;WAEP,SAAA;WAEA,KAAA;AAAA;;;;KAMC,kBAAA;8BAED,KAAA;WAEA,KAAA,EAAO,iBAAiB;WAExB,SAAA;WAEA,KAAA;AAAA;;;;KAMC,oBAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/missing-data-source.error.d.ts
1
+ //#region ../../packages/cascade/src/errors/missing-data-source.error.d.ts
2
2
  /**
3
3
  * Error thrown when a requested data source is not found in the registry.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"missing-data-source.error.d.mts","names":[],"sources":["../../../../../../../cascade/src/errors/missing-data-source.error.ts"],"mappings":";;AAQA;;;;;;;cAAa,sBAAA,SAA+B,KAAK;EAYX;;AAAuB;EAAvB,SARpB,cAAA;;;;;;;cAQG,OAAA,UAAiB,cAAA;AAAA"}
1
+ {"version":3,"file":"missing-data-source.error.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/missing-data-source.error.ts"],"mappings":";;AAQA;;;;;;;cAAa,sBAAA,SAA+B,KAAK;EAYX;;AAAuB;EAAvB,SARpB,cAAA;;;;;;;cAQG,OAAA,UAAiB,cAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/missing-data-source.error.ts
1
+ //#region ../../packages/cascade/src/errors/missing-data-source.error.ts
2
2
  /**
3
3
  * Error thrown when a requested data source is not found in the registry.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"missing-data-source.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/missing-data-source.error.ts"],"sourcesContent":["/**\n * Error thrown when a requested data source is not found in the registry.\n *\n * This can occur when:\n * - Attempting to retrieve a non-existent named data source\n * - Trying to get the default data source before any have been registered\n * - Context override references an unregistered data source name\n */\nexport class MissingDataSourceError extends Error {\n /**\n * The name of the data source that was not found (if applicable).\n */\n public readonly dataSourceName?: string;\n\n /**\n * Creates a new MissingDataSourceError.\n *\n * @param message - Descriptive error message\n * @param dataSourceName - Optional data source name that was not found\n */\n public constructor(message: string, dataSourceName?: string) {\n super(message);\n this.name = \"MissingDataSourceError\";\n this.dataSourceName = dataSourceName;\n\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MissingDataSourceError);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAQA,IAAa,yBAAb,MAAa,+BAA+B,MAAM;;;;CAIhD,AAAgB;;;;;;;CAQhB,AAAO,YAAY,SAAiB,gBAAyB;EAC3D,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,iBAAiB;EAGtB,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,sBAAsB;CAExD;AACF"}
1
+ {"version":3,"file":"missing-data-source.error.mjs","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/missing-data-source.error.ts"],"sourcesContent":["/**\n * Error thrown when a requested data source is not found in the registry.\n *\n * This can occur when:\n * - Attempting to retrieve a non-existent named data source\n * - Trying to get the default data source before any have been registered\n * - Context override references an unregistered data source name\n */\nexport class MissingDataSourceError extends Error {\n /**\n * The name of the data source that was not found (if applicable).\n */\n public readonly dataSourceName?: string;\n\n /**\n * Creates a new MissingDataSourceError.\n *\n * @param message - Descriptive error message\n * @param dataSourceName - Optional data source name that was not found\n */\n public constructor(message: string, dataSourceName?: string) {\n super(message);\n this.name = \"MissingDataSourceError\";\n this.dataSourceName = dataSourceName;\n\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MissingDataSourceError);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAQA,IAAa,yBAAb,MAAa,+BAA+B,MAAM;;;;CAIhD,AAAgB;;;;;;;CAQhB,AAAO,YAAY,SAAiB,gBAAyB;EAC3D,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,iBAAiB;EAGtB,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,sBAAsB;CAExD;AACF"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/transaction-rollback.error.d.ts
1
+ //#region ../../packages/cascade/src/errors/transaction-rollback.error.d.ts
2
2
  /**
3
3
  * Error thrown when a transaction is explicitly rolled back via ctx.rollback().
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-rollback.error.d.mts","names":[],"sources":["../../../../../../../cascade/src/errors/transaction-rollback.error.ts"],"mappings":";;AAOA;;;;;;cAAa,wBAAA,SAAiC,KAAK;EAW9B;;AAAe;EAAf,SAPH,MAAA;;;;;;cAOG,MAAA;AAAA"}
1
+ {"version":3,"file":"transaction-rollback.error.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/transaction-rollback.error.ts"],"mappings":";;AAOA;;;;;;cAAa,wBAAA,SAAiC,KAAK;EAW9B;;AAAe;EAAf,SAPH,MAAA;;;;;;cAOG,MAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/transaction-rollback.error.ts
1
+ //#region ../../packages/cascade/src/errors/transaction-rollback.error.ts
2
2
  /**
3
3
  * Error thrown when a transaction is explicitly rolled back via ctx.rollback().
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-rollback.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/transaction-rollback.error.ts"],"sourcesContent":["/**\n * Error thrown when a transaction is explicitly rolled back via ctx.rollback().\n *\n * This error is used to signal transaction rollback without representing\n * an application error. It's caught by the transaction wrapper to perform\n * cleanup and then re-thrown.\n */\nexport class TransactionRollbackError extends Error {\n /**\n * The reason for the rollback (if provided).\n */\n public readonly reason?: string;\n\n /**\n * Creates a new TransactionRollbackError.\n *\n * @param reason - Optional reason for rollback (for logging/debugging)\n */\n public constructor(reason?: string) {\n super(reason || \"Transaction rolled back\");\n this.name = \"TransactionRollbackError\";\n this.reason = reason;\n\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, TransactionRollbackError);\n }\n }\n}\n"],"mappings":";;;;;;;;AAOA,IAAa,2BAAb,MAAa,iCAAiC,MAAM;;;;CAIlD,AAAgB;;;;;;CAOhB,AAAO,YAAY,QAAiB;EAClC,MAAM,UAAU,yBAAyB;EACzC,KAAK,OAAO;EACZ,KAAK,SAAS;EAGd,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,wBAAwB;CAE1D;AACF"}
1
+ {"version":3,"file":"transaction-rollback.error.mjs","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/transaction-rollback.error.ts"],"sourcesContent":["/**\n * Error thrown when a transaction is explicitly rolled back via ctx.rollback().\n *\n * This error is used to signal transaction rollback without representing\n * an application error. It's caught by the transaction wrapper to perform\n * cleanup and then re-thrown.\n */\nexport class TransactionRollbackError extends Error {\n /**\n * The reason for the rollback (if provided).\n */\n public readonly reason?: string;\n\n /**\n * Creates a new TransactionRollbackError.\n *\n * @param reason - Optional reason for rollback (for logging/debugging)\n */\n public constructor(reason?: string) {\n super(reason || \"Transaction rolled back\");\n this.name = \"TransactionRollbackError\";\n this.reason = reason;\n\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, TransactionRollbackError);\n }\n }\n}\n"],"mappings":";;;;;;;;AAOA,IAAa,2BAAb,MAAa,iCAAiC,MAAM;;;;CAIlD,AAAgB;;;;;;CAOhB,AAAO,YAAY,QAAiB;EAClC,MAAM,UAAU,yBAAyB;EACzC,KAAK,OAAO;EACZ,KAAK,SAAS;EAGd,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,wBAAwB;CAE1D;AACF"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/undefined-where-value.error.d.ts
1
+ //#region ../../packages/cascade/src/errors/undefined-where-value.error.d.ts
2
2
  /**
3
3
  * Error thrown when a `where()`-family call is given `undefined` as the
4
4
  * bound value.
@@ -1 +1 @@
1
- {"version":3,"file":"undefined-where-value.error.d.mts","names":[],"sources":["../../../../../../../cascade/src/errors/undefined-where-value.error.ts"],"mappings":";;AAgBA;;;;;;;;;AAWkC;;;;;;cAXrB,wBAAA,SAAiC,KAAK;;;;WAIjC,KAAA;;;;;;cAOG,KAAA;AAAA"}
1
+ {"version":3,"file":"undefined-where-value.error.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/undefined-where-value.error.ts"],"mappings":";;AAgBA;;;;;;;;;AAWkC;;;;;;cAXrB,wBAAA,SAAiC,KAAK;;;;WAIjC,KAAA;;;;;;cAOG,KAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/undefined-where-value.error.ts
1
+ //#region ../../packages/cascade/src/errors/undefined-where-value.error.ts
2
2
  /**
3
3
  * Error thrown when a `where()`-family call is given `undefined` as the
4
4
  * bound value.
@@ -1 +1 @@
1
- {"version":3,"file":"undefined-where-value.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/undefined-where-value.error.ts"],"sourcesContent":["/**\n * Error thrown when a `where()`-family call is given `undefined` as the\n * bound value.\n *\n * A bound `undefined` reaches SQL drivers as `= NULL`, which never matches\n * any row (SQL's three-valued logic — `NULL = NULL` is `NULL`, not `true`) —\n * and reaches the MongoDB driver as a filter that matches every document\n * missing the field. Either way the query silently returns the wrong rows\n * instead of failing loudly, which usually means the caller forgot to guard\n * an id/value that turned out to be missing (e.g. `User.find(post.authorId)`\n * when `authorId` came back `undefined`).\n *\n * To match `NULL` explicitly, pass `null` — `where(\"deletedAt\", null)` is a\n * valid, intentional query. To skip the query entirely when there's no\n * value, guard the call site instead of calling `where()`.\n */\nexport class UndefinedWhereValueError extends Error {\n /**\n * The field whose value was `undefined`.\n */\n public readonly field: string;\n\n /**\n * Creates a new UndefinedWhereValueError.\n *\n * @param field - The field name whose value was rejected\n */\n public constructor(field: string) {\n super(\n `where(\"${field}\", undefined) — a bound \"undefined\" value silently becomes a NULL ` +\n `comparison that never matches, hiding the real bug. Pass null to match NULL ` +\n `explicitly, or skip the query when there's no value for \"${field}\".`,\n );\n this.name = \"UndefinedWhereValueError\";\n this.field = field;\n\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UndefinedWhereValueError);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,IAAa,2BAAb,MAAa,iCAAiC,MAAM;;;;CAIlD,AAAgB;;;;;;CAOhB,AAAO,YAAY,OAAe;EAChC,MACE,UAAU,MAAM,yMAE8C,MAAM,GACtE;EACA,KAAK,OAAO;EACZ,KAAK,QAAQ;EAGb,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,wBAAwB;CAE1D;AACF"}
1
+ {"version":3,"file":"undefined-where-value.error.mjs","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/undefined-where-value.error.ts"],"sourcesContent":["/**\n * Error thrown when a `where()`-family call is given `undefined` as the\n * bound value.\n *\n * A bound `undefined` reaches SQL drivers as `= NULL`, which never matches\n * any row (SQL's three-valued logic — `NULL = NULL` is `NULL`, not `true`) —\n * and reaches the MongoDB driver as a filter that matches every document\n * missing the field. Either way the query silently returns the wrong rows\n * instead of failing loudly, which usually means the caller forgot to guard\n * an id/value that turned out to be missing (e.g. `User.find(post.authorId)`\n * when `authorId` came back `undefined`).\n *\n * To match `NULL` explicitly, pass `null` — `where(\"deletedAt\", null)` is a\n * valid, intentional query. To skip the query entirely when there's no\n * value, guard the call site instead of calling `where()`.\n */\nexport class UndefinedWhereValueError extends Error {\n /**\n * The field whose value was `undefined`.\n */\n public readonly field: string;\n\n /**\n * Creates a new UndefinedWhereValueError.\n *\n * @param field - The field name whose value was rejected\n */\n public constructor(field: string) {\n super(\n `where(\"${field}\", undefined) — a bound \"undefined\" value silently becomes a NULL ` +\n `comparison that never matches, hiding the real bug. Pass null to match NULL ` +\n `explicitly, or skip the query when there's no value for \"${field}\".`,\n );\n this.name = \"UndefinedWhereValueError\";\n this.field = field;\n\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UndefinedWhereValueError);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,IAAa,2BAAb,MAAa,iCAAiC,MAAM;;;;CAIlD,AAAgB;;;;;;CAOhB,AAAO,YAAY,OAAe;EAChC,MACE,UAAU,MAAM,yMAE8C,MAAM,GACtE;EACA,KAAK,OAAO;EACZ,KAAK,QAAQ;EAGb,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,wBAAwB;CAE1D;AACF"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsafe-filter.error.d.ts
1
+ //#region ../../packages/cascade/src/errors/unsafe-filter.error.d.ts
2
2
  /**
3
3
  * Error thrown when a filter value in an equality position contains
4
4
  * MongoDB operator keys (keys starting with `$`, e.g. `$ne`, `$gt`, `$where`).
@@ -1 +1 @@
1
- {"version":3,"file":"unsafe-filter.error.d.mts","names":[],"sources":["../../../../../../../cascade/src/errors/unsafe-filter.error.ts"],"mappings":";;AAWA;;;;;;;;;;cAAa,iBAAA,SAA0B,KAAK;EAkB8B;AAAA;;EAAA,SAdxD,KAAA;;;;WAKA,WAAA;;;;;;;;cASG,OAAA,UAAiB,KAAA,WAAgB,WAAA;AAAA"}
1
+ {"version":3,"file":"unsafe-filter.error.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsafe-filter.error.ts"],"mappings":";;AAWA;;;;;;;;;;cAAa,iBAAA,SAA0B,KAAK;EAkB8B;AAAA;;EAAA,SAdxD,KAAA;;;;WAKA,WAAA;;;;;;;;cASG,OAAA,UAAiB,KAAA,WAAgB,WAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsafe-filter.error.ts
1
+ //#region ../../packages/cascade/src/errors/unsafe-filter.error.ts
2
2
  /**
3
3
  * Error thrown when a filter value in an equality position contains
4
4
  * MongoDB operator keys (keys starting with `$`, e.g. `$ne`, `$gt`, `$where`).
@@ -1 +1 @@
1
- {"version":3,"file":"unsafe-filter.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/unsafe-filter.error.ts"],"sourcesContent":["/**\n * Error thrown when a filter value in an equality position contains\n * MongoDB operator keys (keys starting with `$`, e.g. `$ne`, `$gt`, `$where`).\n *\n * This blocks NoSQL operator injection: request-controlled payloads such as\n * `{ password: { $ne: null } }` must not be able to turn an equality match\n * into an operator query. Use the explicit operator APIs instead:\n * - `where(field, operator, value)` for comparisons\n * - `whereIn` / `whereNull` / `whereBetween` / … for specific operators\n * - `whereRaw({ ... })` (object form) for intentional raw driver filters\n */\nexport class UnsafeFilterError extends Error {\n /**\n * The field whose value contained the rejected operator key (if applicable).\n */\n public readonly field?: string;\n\n /**\n * The `$`-prefixed key that triggered the rejection.\n */\n public readonly operatorKey?: string;\n\n /**\n * Creates a new UnsafeFilterError.\n *\n * @param message - Descriptive error message\n * @param field - Optional field name whose value was rejected\n * @param operatorKey - Optional `$`-prefixed key that was rejected\n */\n public constructor(message: string, field?: string, operatorKey?: string) {\n super(message);\n this.name = \"UnsafeFilterError\";\n this.field = field;\n this.operatorKey = operatorKey;\n\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsafeFilterError);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;AAWA,IAAa,oBAAb,MAAa,0BAA0B,MAAM;;;;CAI3C,AAAgB;;;;CAKhB,AAAgB;;;;;;;;CAShB,AAAO,YAAY,SAAiB,OAAgB,aAAsB;EACxE,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,cAAc;EAGnB,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,iBAAiB;CAEnD;AACF"}
1
+ {"version":3,"file":"unsafe-filter.error.mjs","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsafe-filter.error.ts"],"sourcesContent":["/**\n * Error thrown when a filter value in an equality position contains\n * MongoDB operator keys (keys starting with `$`, e.g. `$ne`, `$gt`, `$where`).\n *\n * This blocks NoSQL operator injection: request-controlled payloads such as\n * `{ password: { $ne: null } }` must not be able to turn an equality match\n * into an operator query. Use the explicit operator APIs instead:\n * - `where(field, operator, value)` for comparisons\n * - `whereIn` / `whereNull` / `whereBetween` / … for specific operators\n * - `whereRaw({ ... })` (object form) for intentional raw driver filters\n */\nexport class UnsafeFilterError extends Error {\n /**\n * The field whose value contained the rejected operator key (if applicable).\n */\n public readonly field?: string;\n\n /**\n * The `$`-prefixed key that triggered the rejection.\n */\n public readonly operatorKey?: string;\n\n /**\n * Creates a new UnsafeFilterError.\n *\n * @param message - Descriptive error message\n * @param field - Optional field name whose value was rejected\n * @param operatorKey - Optional `$`-prefixed key that was rejected\n */\n public constructor(message: string, field?: string, operatorKey?: string) {\n super(message);\n this.name = \"UnsafeFilterError\";\n this.field = field;\n this.operatorKey = operatorKey;\n\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsafeFilterError);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;AAWA,IAAa,oBAAb,MAAa,0BAA0B,MAAM;;;;CAI3C,AAAgB;;;;CAKhB,AAAgB;;;;;;;;CAShB,AAAO,YAAY,SAAiB,OAAgB,aAAsB;EACxE,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,cAAc;EAGnB,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,iBAAiB;CAEnD;AACF"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsafe-raw-expression.error.d.ts
1
+ //#region ../../packages/cascade/src/errors/unsafe-raw-expression.error.d.ts
2
2
  /**
3
3
  * Error thrown when a string expression is passed to `whereRaw()` /
4
4
  * `orWhereRaw()` on the MongoDB driver.
@@ -1 +1 @@
1
- {"version":3,"file":"unsafe-raw-expression.error.d.mts","names":[],"sources":["../../../../../../../cascade/src/errors/unsafe-raw-expression.error.ts"],"mappings":";;AAWA;;;;;;;;AAMoC;;cANvB,wBAAA,SAAiC,KAAK;;;;;;cAM9B,OAAA;AAAA"}
1
+ {"version":3,"file":"unsafe-raw-expression.error.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsafe-raw-expression.error.ts"],"mappings":";;AAWA;;;;;;;;AAMoC;;cANvB,wBAAA,SAAiC,KAAK;;;;;;cAM9B,OAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsafe-raw-expression.error.ts
1
+ //#region ../../packages/cascade/src/errors/unsafe-raw-expression.error.ts
2
2
  /**
3
3
  * Error thrown when a string expression is passed to `whereRaw()` /
4
4
  * `orWhereRaw()` on the MongoDB driver.
@@ -1 +1 @@
1
- {"version":3,"file":"unsafe-raw-expression.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/unsafe-raw-expression.error.ts"],"sourcesContent":["/**\n * Error thrown when a string expression is passed to `whereRaw()` /\n * `orWhereRaw()` on the MongoDB driver.\n *\n * String raw expressions used to compile to `{ $where: \"<js>\" }`, which MongoDB\n * evaluates as JavaScript inside the server for every scanned document — a\n * server-side JS injection sink when any part of the string is\n * request-controlled, and an unindexed full-scan DoS vector even when trusted.\n *\n * Use the object form instead, e.g. `whereRaw({ $expr: { $gt: [\"$stock\", \"$reserved\"] } })`.\n */\nexport class UnsafeRawExpressionError extends Error {\n /**\n * Creates a new UnsafeRawExpressionError.\n *\n * @param message - Descriptive error message\n */\n public constructor(message: string) {\n super(message);\n this.name = \"UnsafeRawExpressionError\";\n\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsafeRawExpressionError);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;AAWA,IAAa,2BAAb,MAAa,iCAAiC,MAAM;;;;;;CAMlD,AAAO,YAAY,SAAiB;EAClC,MAAM,OAAO;EACb,KAAK,OAAO;EAGZ,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,wBAAwB;CAE1D;AACF"}
1
+ {"version":3,"file":"unsafe-raw-expression.error.mjs","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsafe-raw-expression.error.ts"],"sourcesContent":["/**\n * Error thrown when a string expression is passed to `whereRaw()` /\n * `orWhereRaw()` on the MongoDB driver.\n *\n * String raw expressions used to compile to `{ $where: \"<js>\" }`, which MongoDB\n * evaluates as JavaScript inside the server for every scanned document — a\n * server-side JS injection sink when any part of the string is\n * request-controlled, and an unindexed full-scan DoS vector even when trusted.\n *\n * Use the object form instead, e.g. `whereRaw({ $expr: { $gt: [\"$stock\", \"$reserved\"] } })`.\n */\nexport class UnsafeRawExpressionError extends Error {\n /**\n * Creates a new UnsafeRawExpressionError.\n *\n * @param message - Descriptive error message\n */\n public constructor(message: string) {\n super(message);\n this.name = \"UnsafeRawExpressionError\";\n\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsafeRawExpressionError);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;AAWA,IAAa,2BAAb,MAAa,iCAAiC,MAAM;;;;;;CAMlD,AAAO,YAAY,SAAiB;EAClC,MAAM,OAAO;EACb,KAAK,OAAO;EAGZ,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,wBAAwB;CAE1D;AACF"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsupported-lean-operation.error.d.ts
1
+ //#region ../../packages/cascade/src/errors/unsupported-lean-operation.error.d.ts
2
2
  /**
3
3
  * Error thrown when a query in lean read mode (`.lean()`) asks for something
4
4
  * that needs hydrated Model instances — eager-loading relations with `with()`
@@ -1 +1 @@
1
- {"version":3,"file":"unsupported-lean-operation.error.d.mts","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-lean-operation.error.ts"],"mappings":";;AASA;;;;;;;;cAAa,6BAAA,SAAsC,KAAK;EAWlB;;;EAAA,SAPpB,SAAA;;;;;;cAOG,SAAA;AAAA"}
1
+ {"version":3,"file":"unsupported-lean-operation.error.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsupported-lean-operation.error.ts"],"mappings":";;AASA;;;;;;;;cAAa,6BAAA,SAAsC,KAAK;EAWlB;;;EAAA,SAPpB,SAAA;;;;;;cAOG,SAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsupported-lean-operation.error.ts
1
+ //#region ../../packages/cascade/src/errors/unsupported-lean-operation.error.ts
2
2
  /**
3
3
  * Error thrown when a query in lean read mode (`.lean()`) asks for something
4
4
  * that needs hydrated Model instances — eager-loading relations with `with()`
@@ -1 +1 @@
1
- {"version":3,"file":"unsupported-lean-operation.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-lean-operation.error.ts"],"sourcesContent":["/**\n * Error thrown when a query in lean read mode (`.lean()`) asks for something\n * that needs hydrated Model instances — eager-loading relations with `with()`\n * or `joinWith()`.\n *\n * Relations are attached to Model instances and shaped (including the related\n * model's `hidden` fields) by the Model layer, so lean mode refuses them rather\n * than returning a half-loaded or unfiltered result.\n */\nexport class UnsupportedLeanOperationError extends Error {\n /**\n * The rejected builder operation (e.g. `\"with\"`, `\"joinWith\"`).\n */\n public readonly operation: string;\n\n /**\n * Creates a new UnsupportedLeanOperationError.\n *\n * @param operation - The rejected builder operation\n */\n public constructor(operation: string) {\n super(\n `${operation}() cannot be combined with lean(): eager-loaded relations need hydrated models. ` +\n `Drop lean() for this query, or load the related records with a second lean query.`,\n );\n this.name = \"UnsupportedLeanOperationError\";\n this.operation = operation;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedLeanOperationError);\n }\n }\n}\n"],"mappings":";;;;;;;;;;AASA,IAAa,gCAAb,MAAa,sCAAsC,MAAM;;;;CAIvD,AAAgB;;;;;;CAOhB,AAAO,YAAY,WAAmB;EACpC,MACE,GAAG,UAAU,kKAEf;EACA,KAAK,OAAO;EACZ,KAAK,YAAY;EAEjB,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,6BAA6B;CAE/D;AACF"}
1
+ {"version":3,"file":"unsupported-lean-operation.error.mjs","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsupported-lean-operation.error.ts"],"sourcesContent":["/**\n * Error thrown when a query in lean read mode (`.lean()`) asks for something\n * that needs hydrated Model instances — eager-loading relations with `with()`\n * or `joinWith()`.\n *\n * Relations are attached to Model instances and shaped (including the related\n * model's `hidden` fields) by the Model layer, so lean mode refuses them rather\n * than returning a half-loaded or unfiltered result.\n */\nexport class UnsupportedLeanOperationError extends Error {\n /**\n * The rejected builder operation (e.g. `\"with\"`, `\"joinWith\"`).\n */\n public readonly operation: string;\n\n /**\n * Creates a new UnsupportedLeanOperationError.\n *\n * @param operation - The rejected builder operation\n */\n public constructor(operation: string) {\n super(\n `${operation}() cannot be combined with lean(): eager-loaded relations need hydrated models. ` +\n `Drop lean() for this query, or load the related records with a second lean query.`,\n );\n this.name = \"UnsupportedLeanOperationError\";\n this.operation = operation;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedLeanOperationError);\n }\n }\n}\n"],"mappings":";;;;;;;;;;AASA,IAAa,gCAAb,MAAa,sCAAsC,MAAM;;;;CAIvD,AAAgB;;;;;;CAOhB,AAAO,YAAY,WAAmB;EACpC,MACE,GAAG,UAAU,kKAEf;EACA,KAAK,OAAO;EACZ,KAAK,YAAY;EAEjB,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,6BAA6B;CAE/D;AACF"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsupported-lock-for-update.error.d.ts
1
+ //#region ../../packages/cascade/src/errors/unsupported-lock-for-update.error.d.ts
2
2
  /**
3
3
  * Error thrown when `lockForUpdate()` is requested on MongoDB, whose document
4
4
  * model has no row-level `SELECT ... FOR UPDATE` equivalent.
@@ -1 +1 @@
1
- {"version":3,"file":"unsupported-lock-for-update.error.d.mts","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-lock-for-update.error.ts"],"mappings":";;AAIA;;;cAAa,6BAAA,SAAsC,KAAK;EAAL,WAAA;AAAA"}
1
+ {"version":3,"file":"unsupported-lock-for-update.error.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsupported-lock-for-update.error.ts"],"mappings":";;AAIA;;;cAAa,6BAAA,SAAsC,KAAK;EAAL,WAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsupported-lock-for-update.error.ts
1
+ //#region ../../packages/cascade/src/errors/unsupported-lock-for-update.error.ts
2
2
  /**
3
3
  * Error thrown when `lockForUpdate()` is requested on MongoDB, whose document
4
4
  * model has no row-level `SELECT ... FOR UPDATE` equivalent.
@@ -1 +1 @@
1
- {"version":3,"file":"unsupported-lock-for-update.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-lock-for-update.error.ts"],"sourcesContent":["/**\n * Error thrown when `lockForUpdate()` is requested on MongoDB, whose document\n * model has no row-level `SELECT ... FOR UPDATE` equivalent.\n */\nexport class UnsupportedLockForUpdateError extends Error {\n public constructor() {\n super(\n \"lockForUpdate() is unsupported on MongoDB. MongoDB has no row-level SELECT locking. \" +\n 'Use a conditional atomic update instead, e.g. Model.atomic({ id, leaseUntil: { $lt: now } }, { $set: { status: \"processing\" } }, { trustedFilter: true }).',\n );\n this.name = \"UnsupportedLockForUpdateError\";\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedLockForUpdateError);\n }\n }\n}\n"],"mappings":";;;;;AAIA,IAAa,gCAAb,MAAa,sCAAsC,MAAM;CACvD,AAAO,cAAc;EACnB,MACE,kPAEF;EACA,KAAK,OAAO;EAEZ,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,6BAA6B;CAE/D;AACF"}
1
+ {"version":3,"file":"unsupported-lock-for-update.error.mjs","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsupported-lock-for-update.error.ts"],"sourcesContent":["/**\n * Error thrown when `lockForUpdate()` is requested on MongoDB, whose document\n * model has no row-level `SELECT ... FOR UPDATE` equivalent.\n */\nexport class UnsupportedLockForUpdateError extends Error {\n public constructor() {\n super(\n \"lockForUpdate() is unsupported on MongoDB. MongoDB has no row-level SELECT locking. \" +\n 'Use a conditional atomic update instead, e.g. Model.atomic({ id, leaseUntil: { $lt: now } }, { $set: { status: \"processing\" } }, { trustedFilter: true }).',\n );\n this.name = \"UnsupportedLockForUpdateError\";\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedLockForUpdateError);\n }\n }\n}\n"],"mappings":";;;;;AAIA,IAAa,gCAAb,MAAa,sCAAsC,MAAM;CACvD,AAAO,cAAc;EACnB,MACE,kPAEF;EACA,KAAK,OAAO;EAEZ,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,6BAA6B;CAE/D;AACF"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsupported-query-operation.error.d.ts
1
+ //#region ../../packages/cascade/src/errors/unsupported-query-operation.error.d.ts
2
2
  /**
3
3
  * Error thrown when a query builder is asked for a read operation its driver
4
4
  * cannot express — e.g. a MongoDB-only aggregation stage such as `unwind()` or
@@ -1 +1 @@
1
- {"version":3,"file":"unsupported-query-operation.error.d.mts","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-query-operation.error.ts"],"mappings":";;AAQA;;;;;;;cAAa,8BAAA,SAAuC,KAAK;EAkBpC;;;EAAA,SAdH,SAAA;EAcmD;;;EAAA,SATnD,MAAA;;;;;;;;cASG,SAAA,UAAmB,MAAA,UAAgB,IAAA;AAAA"}
1
+ {"version":3,"file":"unsupported-query-operation.error.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsupported-query-operation.error.ts"],"mappings":";;AAQA;;;;;;;cAAa,8BAAA,SAAuC,KAAK;EAkBpC;;;EAAA,SAdH,SAAA;EAcmD;;;EAAA,SATnD,MAAA;;;;;;;;cASG,SAAA,UAAmB,MAAA,UAAgB,IAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsupported-query-operation.error.ts
1
+ //#region ../../packages/cascade/src/errors/unsupported-query-operation.error.ts
2
2
  /**
3
3
  * Error thrown when a query builder is asked for a read operation its driver
4
4
  * cannot express — e.g. a MongoDB-only aggregation stage such as `unwind()` or
@@ -1 +1 @@
1
- {"version":3,"file":"unsupported-query-operation.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-query-operation.error.ts"],"sourcesContent":["/**\n * Error thrown when a query builder is asked for a read operation its driver\n * cannot express — e.g. a MongoDB-only aggregation stage such as `unwind()` or\n * `addFields()` on a SQL driver.\n *\n * Builders throw this instead of silently dropping the stage, so a caller\n * never receives rows shaped differently from what the query asked for.\n */\nexport class UnsupportedQueryOperationError extends Error {\n /**\n * The operation that was rejected (e.g. `\"unwind\"`, `\"addFields\"`).\n */\n public readonly operation: string;\n\n /**\n * The driver that rejected it (e.g. `\"postgres\"`).\n */\n public readonly driver: string;\n\n /**\n * Creates a new UnsupportedQueryOperationError.\n *\n * @param operation - The rejected operation\n * @param driver - The driver name\n * @param hint - Optional guidance appended to the message\n */\n public constructor(operation: string, driver: string, hint?: string) {\n super(`The ${driver} driver does not support ${operation}() in queries.` + (hint ? ` ${hint}` : \"\"));\n this.name = \"UnsupportedQueryOperationError\";\n this.operation = operation;\n this.driver = driver;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedQueryOperationError);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAQA,IAAa,iCAAb,MAAa,uCAAuC,MAAM;;;;CAIxD,AAAgB;;;;CAKhB,AAAgB;;;;;;;;CAShB,AAAO,YAAY,WAAmB,QAAgB,MAAe;EACnE,MAAM,OAAO,OAAO,2BAA2B,UAAU,mBAAmB,OAAO,IAAI,SAAS,GAAG;EACnG,KAAK,OAAO;EACZ,KAAK,YAAY;EACjB,KAAK,SAAS;EAEd,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,8BAA8B;CAEhE;AACF"}
1
+ {"version":3,"file":"unsupported-query-operation.error.mjs","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsupported-query-operation.error.ts"],"sourcesContent":["/**\n * Error thrown when a query builder is asked for a read operation its driver\n * cannot express — e.g. a MongoDB-only aggregation stage such as `unwind()` or\n * `addFields()` on a SQL driver.\n *\n * Builders throw this instead of silently dropping the stage, so a caller\n * never receives rows shaped differently from what the query asked for.\n */\nexport class UnsupportedQueryOperationError extends Error {\n /**\n * The operation that was rejected (e.g. `\"unwind\"`, `\"addFields\"`).\n */\n public readonly operation: string;\n\n /**\n * The driver that rejected it (e.g. `\"postgres\"`).\n */\n public readonly driver: string;\n\n /**\n * Creates a new UnsupportedQueryOperationError.\n *\n * @param operation - The rejected operation\n * @param driver - The driver name\n * @param hint - Optional guidance appended to the message\n */\n public constructor(operation: string, driver: string, hint?: string) {\n super(\n `The ${driver} driver does not support ${operation}() in queries.` + (hint ? ` ${hint}` : \"\"),\n );\n this.name = \"UnsupportedQueryOperationError\";\n this.operation = operation;\n this.driver = driver;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedQueryOperationError);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAQA,IAAa,iCAAb,MAAa,uCAAuC,MAAM;;;;CAIxD,AAAgB;;;;CAKhB,AAAgB;;;;;;;;CAShB,AAAO,YAAY,WAAmB,QAAgB,MAAe;EACnE,MACE,OAAO,OAAO,2BAA2B,UAAU,mBAAmB,OAAO,IAAI,SAAS,GAC5F;EACA,KAAK,OAAO;EACZ,KAAK,YAAY;EACjB,KAAK,SAAS;EAEd,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,8BAA8B;CAEhE;AACF"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsupported-update-operation.error.d.ts
1
+ //#region ../../packages/cascade/src/errors/unsupported-update-operation.error.d.ts
2
2
  /**
3
3
  * Error thrown when a driver is asked to perform an update it cannot express
4
4
  * natively — e.g. an aggregation-pipeline update, `arrayFilters` or `$addToSet`
@@ -1 +1 @@
1
- {"version":3,"file":"unsupported-update-operation.error.d.mts","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-update-operation.error.ts"],"mappings":";;AAQA;;;;;;;cAAa,+BAAA,SAAwC,KAAK;EAkBrC;;;EAAA,SAdH,SAAA;EAcmD;;;EAAA,SATnD,MAAA;;;;;;;;cASG,SAAA,UAAmB,MAAA,UAAgB,IAAA;AAAA"}
1
+ {"version":3,"file":"unsupported-update-operation.error.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsupported-update-operation.error.ts"],"mappings":";;AAQA;;;;;;;cAAa,+BAAA,SAAwC,KAAK;EAkBrC;;;EAAA,SAdH,SAAA;EAcmD;;;EAAA,SATnD,MAAA;;;;;;;;cASG,SAAA,UAAmB,MAAA,UAAgB,IAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/errors/unsupported-update-operation.error.ts
1
+ //#region ../../packages/cascade/src/errors/unsupported-update-operation.error.ts
2
2
  /**
3
3
  * Error thrown when a driver is asked to perform an update it cannot express
4
4
  * natively — e.g. an aggregation-pipeline update, `arrayFilters` or `$addToSet`
@@ -1 +1 @@
1
- {"version":3,"file":"unsupported-update-operation.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-update-operation.error.ts"],"sourcesContent":["/**\n * Error thrown when a driver is asked to perform an update it cannot express\n * natively — e.g. an aggregation-pipeline update, `arrayFilters` or `$addToSet`\n * on a SQL driver, or an upsert whose conflict target cannot be derived.\n *\n * Drivers throw this instead of silently dropping the operation, so a caller\n * never believes a write happened that did not.\n */\nexport class UnsupportedUpdateOperationError extends Error {\n /**\n * The operation that was rejected (e.g. `\"pipeline update\"`, `\"$addToSet\"`).\n */\n public readonly operation: string;\n\n /**\n * The driver that rejected it (e.g. `\"postgres\"`).\n */\n public readonly driver: string;\n\n /**\n * Creates a new UnsupportedUpdateOperationError.\n *\n * @param operation - The rejected operation\n * @param driver - The driver name\n * @param hint - Optional guidance appended to the message\n */\n public constructor(operation: string, driver: string, hint?: string) {\n super(\n `The ${driver} driver does not support ${operation} in atomic updates.` +\n (hint ? ` ${hint}` : \"\"),\n );\n this.name = \"UnsupportedUpdateOperationError\";\n this.operation = operation;\n this.driver = driver;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedUpdateOperationError);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAQA,IAAa,kCAAb,MAAa,wCAAwC,MAAM;;;;CAIzD,AAAgB;;;;CAKhB,AAAgB;;;;;;;;CAShB,AAAO,YAAY,WAAmB,QAAgB,MAAe;EACnE,MACE,OAAO,OAAO,2BAA2B,UAAU,wBAChD,OAAO,IAAI,SAAS,GACzB;EACA,KAAK,OAAO;EACZ,KAAK,YAAY;EACjB,KAAK,SAAS;EAEd,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,+BAA+B;CAEjE;AACF"}
1
+ {"version":3,"file":"unsupported-update-operation.error.mjs","names":[],"sources":["../../../../../../../../packages/cascade/src/errors/unsupported-update-operation.error.ts"],"sourcesContent":["/**\n * Error thrown when a driver is asked to perform an update it cannot express\n * natively — e.g. an aggregation-pipeline update, `arrayFilters` or `$addToSet`\n * on a SQL driver, or an upsert whose conflict target cannot be derived.\n *\n * Drivers throw this instead of silently dropping the operation, so a caller\n * never believes a write happened that did not.\n */\nexport class UnsupportedUpdateOperationError extends Error {\n /**\n * The operation that was rejected (e.g. `\"pipeline update\"`, `\"$addToSet\"`).\n */\n public readonly operation: string;\n\n /**\n * The driver that rejected it (e.g. `\"postgres\"`).\n */\n public readonly driver: string;\n\n /**\n * Creates a new UnsupportedUpdateOperationError.\n *\n * @param operation - The rejected operation\n * @param driver - The driver name\n * @param hint - Optional guidance appended to the message\n */\n public constructor(operation: string, driver: string, hint?: string) {\n super(\n `The ${driver} driver does not support ${operation} in atomic updates.` +\n (hint ? ` ${hint}` : \"\"),\n );\n this.name = \"UnsupportedUpdateOperationError\";\n this.operation = operation;\n this.driver = driver;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedUpdateOperationError);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAQA,IAAa,kCAAb,MAAa,wCAAwC,MAAM;;;;CAIzD,AAAgB;;;;CAKhB,AAAgB;;;;;;;;CAShB,AAAO,YAAY,WAAmB,QAAgB,MAAe;EACnE,MACE,OAAO,OAAO,2BAA2B,UAAU,wBAChD,OAAO,IAAI,SAAS,GACzB;EACA,KAAK,OAAO;EACZ,KAAK,YAAY;EACjB,KAAK,SAAS;EAEd,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,+BAA+B;CAEjE;AACF"}
@@ -2,7 +2,7 @@ import { DeleteStrategy } from "../types.mjs";
2
2
  import { ModelSchema } from "../model/model.types.mjs";
3
3
  import { Model } from "../model/model.mjs";
4
4
  import { QueryBuilderContract } from "../contracts/query-builder.contract.mjs";
5
- //#region ../cascade/src/events/model-events.d.ts
5
+ //#region ../../packages/cascade/src/events/model-events.d.ts
6
6
  type OnValidatingEventContext = {
7
7
  isInsert: boolean;
8
8
  mode: "insert" | "update";
@@ -1 +1 @@
1
- {"version":3,"file":"model-events.d.mts","names":[],"sources":["../../../../../../../cascade/src/events/model-events.ts"],"mappings":";;;;;KAIK,wBAAA;EACH,QAAA;EACA,IAAI;AAAA;AAAA,KAGD,oBAAA;EACH,QAAA;EACA,IAAI;AAAA;AAAA,KAGD,sBAAA;EACH,QAAA,EAAU,cAAc;EACxB,eAAA;EACA,UAAA;AAAA;AAAA,KAGU,qBAAA,GAAwB,sBAAA;EAClC,YAAA;EACA,WAAA,GAAc,MAAM;AAAA;AAAA,KAGjB,sBAAA;EACH,KAAA;EACA,UAAU;AAAA;AAAA,KAGP,uBAAA;EACH,KAAA,EAAO,oBAAoB;EAC3B,eAAA,IAAmB,IAAA,OAAW,KAAA;AAAA;AAAA,KAG3B,qBAAA;EACH,KAAA,EAAO,oBAAoB;EAC3B,UAAA;EACA,QAAA;AAAA;;;;AAhBoB;AACpB;;KAwBU,cAAA;;KAkBA,kBAAA,gCACV,KAAA,EAAO,MAAA,EACP,OAAA,EAAS,QAAA,YACC,OAAA;AAzCA;;;;;;;AAAA,cAkDC,WAAA;EAAA,SACK,SAAA,EAAS,GAAA,CAAA,cAAA,EAAA,GAAA,CAAA,kBAAA,CAAA,MAAA;EA9CkB;AAAA;AAAA;;EAoDpC,EAAA,qBACL,KAAA,EAAO,cAAA,EACP,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAlDZ;;;EA4DpB,IAAA,qBACL,KAAA,EAAO,cAAA,EACP,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA5DvC;;AAAQ;EA2ED,GAAA,qBACL,KAAA,EAAO,cAAA,EACP,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EApEf;;;EAmFX,IAAA,qBACX,KAAA,EAAO,cAAA,EACP,KAAA,EAAO,MAAA,EACP,OAAA,EAAS,QAAA,GACR,OAAA;EArEO;;;EAkFG,YAAA,qBACX,KAAA,EAAO,oBAAA,EACP,OAAA,GAAU,QAAA,GACT,OAAA;EAnFM;;;EA0FF,KAAA;EA5FsB;;;;;;;;AAGZ;EAsGV,QAAA,YAAoB,oBAAA,EACzB,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA9FjB;;;;;;;;EA2Gf,OAAA,qBAA4B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAlGjC;;;;;;;;EA8GhC,UAAA,qBACL,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAlF3B;;;;;;;;EA+FL,SAAA,qBAA8B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAvC3C;;;;;;;;EAmDxB,UAAA,qBACL,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAb2B;;;;;;;;EA0B3D,SAAA,qBAA8B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAY7C;;;;;;;;EAAtB,UAAA,YAAsB,sBAAA,EAC3B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA4BR;;;;;;;;EAfxB,SAAA,YAAqB,qBAAA,EAC1B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA2C3B;;;;;;;;EA9BL,YAAA,YAAwB,wBAAA,EAC7B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAyER;;;;;;;;EA5DxB,WAAA,qBACL,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EArNvB;;;;;;;;;EAmOT,UAAA,YAAsB,sBAAA,EAC3B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA5N3B;;;;;;;;;EA0OL,WAAA,YAAuB,uBAAA,EAC5B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA/NA;;;;;;;;;EA6OhC,SAAA,YAAqB,qBAAA,EAC1B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA9M1B;;;;;;;;EA2NN,WAAA,qBACL,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA3M1B;;;;;;;;EAwNN,UAAA,qBACL,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAlMvB;;;;;;;EAAA,QA8MR,iBAAA;AAAA;;;;;cAcG,iBAAA,EAAiB,WAAA,CAAA,KAAA,CAA2B,WAAA"}
1
+ {"version":3,"file":"model-events.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/events/model-events.ts"],"mappings":";;;;;KAIK,wBAAA;EACH,QAAA;EACA,IAAI;AAAA;AAAA,KAGD,oBAAA;EACH,QAAA;EACA,IAAI;AAAA;AAAA,KAGD,sBAAA;EACH,QAAA,EAAU,cAAc;EACxB,eAAA;EACA,UAAA;AAAA;AAAA,KAGU,qBAAA,GAAwB,sBAAA;EAClC,YAAA;EACA,WAAA,GAAc,MAAM;AAAA;AAAA,KAGjB,sBAAA;EACH,KAAA;EACA,UAAU;AAAA;AAAA,KAGP,uBAAA;EACH,KAAA,EAAO,oBAAoB;EAC3B,eAAA,IAAmB,IAAA,OAAW,KAAA;AAAA;AAAA,KAG3B,qBAAA;EACH,KAAA,EAAO,oBAAoB;EAC3B,UAAA;EACA,QAAA;AAAA;;;;AAhBoB;AACpB;;KAwBU,cAAA;;KAkBA,kBAAA,gCACV,KAAA,EAAO,MAAA,EACP,OAAA,EAAS,QAAA,YACC,OAAA;AAzCA;;;;;;;AAAA,cAkDC,WAAA;EAAA,SACK,SAAA,EAAS,GAAA,CAAA,cAAA,EAAA,GAAA,CAAA,kBAAA,CAAA,MAAA;EA9CkB;AAAA;AAAA;;EAoDpC,EAAA,qBACL,KAAA,EAAO,cAAA,EACP,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAlDZ;;;EA4DpB,IAAA,qBACL,KAAA,EAAO,cAAA,EACP,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA5DvC;;AAAQ;EA2ED,GAAA,qBACL,KAAA,EAAO,cAAA,EACP,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EApEf;;;EAmFX,IAAA,qBACX,KAAA,EAAO,cAAA,EACP,KAAA,EAAO,MAAA,EACP,OAAA,EAAS,QAAA,GACR,OAAA;EArEO;;;EAkFG,YAAA,qBACX,KAAA,EAAO,oBAAA,EACP,OAAA,GAAU,QAAA,GACT,OAAA;EAnFM;;;EA0FF,KAAA;EA5FsB;;;;;;;;AAGZ;EAsGV,QAAA,YAAoB,oBAAA,EACzB,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA9FjB;;;;;;;;EA2Gf,OAAA,qBAA4B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAlGjC;;;;;;;;EA8GhC,UAAA,qBACL,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAlF3B;;;;;;;;EA+FL,SAAA,qBAA8B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAvC3C;;;;;;;;EAmDxB,UAAA,qBACL,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAb2B;;;;;;;;EA0B3D,SAAA,qBAA8B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAY7C;;;;;;;;EAAtB,UAAA,YAAsB,sBAAA,EAC3B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA4BR;;;;;;;;EAfxB,SAAA,YAAqB,qBAAA,EAC1B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA2C3B;;;;;;;;EA9BL,YAAA,YAAwB,wBAAA,EAC7B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAyER;;;;;;;;EA5DxB,WAAA,qBACL,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EArNvB;;;;;;;;;EAmOT,UAAA,YAAsB,sBAAA,EAC3B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA5N3B;;;;;;;;;EA0OL,WAAA,YAAuB,uBAAA,EAC5B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA/NA;;;;;;;;;EA6OhC,SAAA,YAAqB,qBAAA,EAC1B,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA9M1B;;;;;;;;EA2NN,WAAA,qBACL,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EA3M1B;;;;;;;;EAwNN,UAAA,qBACL,QAAA,EAAU,kBAAA,CAAmB,MAAA,EAAQ,QAAA;EAlMvB;;;;;;;EAAA,QA8MR,iBAAA;AAAA;;;;;cAcG,iBAAA,EAAiB,WAAA,CAAA,KAAA,CAA2B,WAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/events/model-events.ts
1
+ //#region ../../packages/cascade/src/events/model-events.ts
2
2
  /**
3
3
  * Light-weight async event emitter used to power model lifecycle hooks.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"model-events.mjs","names":[],"sources":["../../../../../../../cascade/src/events/model-events.ts"],"sourcesContent":["import { type QueryBuilderContract } from \"../contracts\";\nimport type { Model } from \"../model/model\";\nimport { type DeleteStrategy } from \"../types\";\n\ntype OnValidatingEventContext = {\n isInsert: boolean;\n mode: \"insert\" | \"update\";\n};\n\ntype OnSavingEventContext = {\n isInsert: boolean;\n mode: \"insert\" | \"update\";\n};\n\ntype OnDeletingEventContext = {\n strategy: DeleteStrategy;\n primaryKeyValue: string | number;\n primaryKey: string;\n};\n\nexport type OnDeletedEventContext = OnDeletingEventContext & {\n deletedCount: number;\n trashRecord?: Record<string, unknown>;\n};\n\ntype OnFetchingEventContext = {\n table: string;\n modelClass: any;\n};\n\ntype OnHydratingEventContext = {\n query: QueryBuilderContract;\n hydrateCallback?: (data: any, index: number) => any;\n};\n\ntype OnFetchedEventContext = {\n query: QueryBuilderContract;\n rawRecords: any[];\n duration: number;\n};\n\n/**\n * Lifecycle events understood by Cascade models.\n *\n * The list mirrors the hooks in the legacy ORM so downstream code can subscribe\n * with consistent semantics.\n */\nexport type ModelEventName =\n | \"fetching\"\n | \"hydrating\"\n | \"fetched\"\n | \"validating\"\n | \"validated\"\n | \"saving\"\n | \"saved\"\n | \"creating\"\n | \"created\"\n | \"updating\"\n | \"updated\"\n | \"deleting\"\n | \"deleted\"\n | \"restoring\"\n | \"restored\";\n\n/** Signature of an event listener registered against a model lifecycle hook. */\nexport type ModelEventListener<TModel, TContext = unknown> = (\n model: TModel,\n context: TContext,\n) => void | Promise<void>;\n\n/**\n * Light-weight async event emitter used to power model lifecycle hooks.\n *\n * The implementation intentionally avoids any external dependency so we can\n * re-use it in drivers, writers, and other core services without pulling in\n * heavier event libraries.\n */\nexport class ModelEvents<TModel> {\n public readonly listeners = new Map<ModelEventName, Set<ModelEventListener<TModel>>>();\n\n /**\n * Register a listener for the given event.\n * Returns an unsubscribe function for convenience.\n */\n public on<TContext = unknown>(\n event: ModelEventName,\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n const listeners = this.ensureListenerSet(event);\n listeners.add(listener as ModelEventListener<TModel>);\n return () => this.off(event, listener);\n }\n\n /**\n * Register a listener that automatically unsubscribes after the first call.\n */\n public once<TContext = unknown>(\n event: ModelEventName,\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n const wrapper: ModelEventListener<TModel, TContext> = async (model, context) => {\n try {\n await listener(model, context);\n } finally {\n this.off(event, wrapper);\n }\n };\n return this.on(event, wrapper);\n }\n\n /**\n * Deregister a listener for the given event.\n */\n public off<TContext = unknown>(\n event: ModelEventName,\n listener: ModelEventListener<TModel, TContext>,\n ): void {\n const listeners = this.listeners.get(event);\n if (!listeners) {\n return;\n }\n listeners.delete(listener as ModelEventListener<TModel>);\n if (listeners.size === 0) {\n this.listeners.delete(event);\n }\n }\n\n /**\n * Emit an event to all registered listeners.\n */\n public async emit<TContext = unknown>(\n event: ModelEventName,\n model: TModel,\n context: TContext,\n ): Promise<void> {\n const listeners = this.listeners.get(event);\n if (!listeners || listeners.size === 0) {\n return;\n }\n for (const listener of Array.from(listeners)) {\n await listener(model, context);\n }\n }\n\n /**\n * Emit events for fetching\n */\n public async emitFetching<TContext = unknown>(\n query: QueryBuilderContract,\n context?: TContext,\n ): Promise<void> {\n await this.emit(\"fetching\", query as any, context);\n }\n\n /**\n * Remove all registered listeners.\n */\n public clear(): void {\n this.listeners.clear();\n }\n\n /**\n * Registers a listener for the \"saving\" event.\n *\n * Fired before a model is persisted (both insert and update), and before validation.\n * Use this hook for data enrichment and preparation (e.g., setting createdBy, updatedBy).\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onSaving<TContext = OnSavingEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"saving\", listener);\n }\n\n /**\n * Registers a listener for the \"saved\" event.\n *\n * Fired after a model has been successfully persisted.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onSaved<TContext = unknown>(listener: ModelEventListener<TModel, TContext>): () => void {\n return this.on(\"saved\", listener);\n }\n\n /**\n * Registers a listener for the \"creating\" event.\n *\n * Fired before a new model is inserted into the database.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onCreating<TContext = unknown>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"creating\", listener);\n }\n\n /**\n * Registers a listener for the \"created\" event.\n *\n * Fired after a new model has been successfully inserted.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onCreated<TContext = unknown>(listener: ModelEventListener<TModel, TContext>): () => void {\n return this.on(\"created\", listener);\n }\n\n /**\n * Registers a listener for the \"updating\" event.\n *\n * Fired before an existing model is updated in the database.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onUpdating<TContext = unknown>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"updating\", listener);\n }\n\n /**\n * Registers a listener for the \"updated\" event.\n *\n * Fired after an existing model has been successfully updated.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onUpdated<TContext = unknown>(listener: ModelEventListener<TModel, TContext>): () => void {\n return this.on(\"updated\", listener);\n }\n\n /**\n * Registers a listener for the \"deleting\" event.\n *\n * Fired before a model is deleted from the database.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onDeleting<TContext = OnDeletingEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"deleting\", listener);\n }\n\n /**\n * Registers a listener for the \"deleted\" event.\n *\n * Fired after a model has been successfully deleted.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onDeleted<TContext = OnDeletedEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"deleted\", listener);\n }\n\n /**\n * Registers a listener for the \"validating\" event.\n *\n * Fired before model validation is performed.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onValidating<TContext = OnValidatingEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"validating\", listener);\n }\n\n /**\n * Registers a listener for the \"validated\" event.\n *\n * Fired after model validation has completed.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onValidated<TContext = unknown>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"validated\", listener);\n }\n\n /**\n * Registers a listener for the \"fetching\" event.\n *\n * Fired before a query is executed to fetch models.\n * Receives the query builder instance, allowing modification before execution.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onFetching<TContext = OnFetchingEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"fetching\", listener);\n }\n\n /**\n * Registers a listener for the \"hydrating\" event.\n *\n * Fired after raw records are fetched but before they are hydrated into model instances.\n * Allows modification of raw data before hydration.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onHydrating<TContext = OnHydratingEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"hydrating\", listener);\n }\n\n /**\n * Registers a listener for the \"fetched\" event.\n *\n * Fired after models have been fetched and hydrated.\n * Receives hydrated model instances and query context.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onFetched<TContext = OnFetchedEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"fetched\", listener);\n }\n\n /**\n * Registers a listener for the \"restoring\" event.\n *\n * Fired before a soft-deleted model is restored.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onRestoring<TContext = unknown>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"restoring\", listener);\n }\n\n /**\n * Registers a listener for the \"restored\" event.\n *\n * Fired after a soft-deleted model has been successfully restored.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onRestored<TContext = unknown>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"restored\", listener);\n }\n\n /**\n * Ensures a listener set exists for the given event.\n *\n * @param event - The event name\n * @returns The listener set for the event\n * @private\n */\n private ensureListenerSet(event: ModelEventName): Set<ModelEventListener<TModel>> {\n let listeners = this.listeners.get(event);\n if (!listeners) {\n listeners = new Set();\n this.listeners.set(event, listeners);\n }\n return listeners;\n }\n}\n\n/**\n * Global event emitter invoked for every model instance, regardless of type.\n * Useful for cross-cutting concerns like auditing or request-scoped enrichment.\n */\nexport const globalModelEvents = new ModelEvents<Model>();\n"],"mappings":";;;;;;;;AA6EA,IAAa,cAAb,MAAiC;CAC/B,AAAgB,4BAAY,IAAI,IAAqD;;;;;CAMrF,AAAO,GACL,OACA,UACY;EAEZ,AADkB,KAAK,kBAAkB,KACjC,CAAC,CAAC,IAAI,QAAsC;EACpD,aAAa,KAAK,IAAI,OAAO,QAAQ;CACvC;;;;CAKA,AAAO,KACL,OACA,UACY;EACZ,MAAM,UAAgD,OAAO,OAAO,YAAY;GAC9E,IAAI;IACF,MAAM,SAAS,OAAO,OAAO;GAC/B,UAAU;IACR,KAAK,IAAI,OAAO,OAAO;GACzB;EACF;EACA,OAAO,KAAK,GAAG,OAAO,OAAO;CAC/B;;;;CAKA,AAAO,IACL,OACA,UACM;EACN,MAAM,YAAY,KAAK,UAAU,IAAI,KAAK;EAC1C,IAAI,CAAC,WACH;EAEF,UAAU,OAAO,QAAsC;EACvD,IAAI,UAAU,SAAS,GACrB,KAAK,UAAU,OAAO,KAAK;CAE/B;;;;CAKA,MAAa,KACX,OACA,OACA,SACe;EACf,MAAM,YAAY,KAAK,UAAU,IAAI,KAAK;EAC1C,IAAI,CAAC,aAAa,UAAU,SAAS,GACnC;EAEF,KAAK,MAAM,YAAY,MAAM,KAAK,SAAS,GACzC,MAAM,SAAS,OAAO,OAAO;CAEjC;;;;CAKA,MAAa,aACX,OACA,SACe;EACf,MAAM,KAAK,KAAK,YAAY,OAAc,OAAO;CACnD;;;;CAKA,AAAO,QAAc;EACnB,KAAK,UAAU,MAAM;CACvB;;;;;;;;;;CAWA,AAAO,SACL,UACY;EACZ,OAAO,KAAK,GAAG,UAAU,QAAQ;CACnC;;;;;;;;;CAUA,AAAO,QAA4B,UAA4D;EAC7F,OAAO,KAAK,GAAG,SAAS,QAAQ;CAClC;;;;;;;;;CAUA,AAAO,WACL,UACY;EACZ,OAAO,KAAK,GAAG,YAAY,QAAQ;CACrC;;;;;;;;;CAUA,AAAO,UAA8B,UAA4D;EAC/F,OAAO,KAAK,GAAG,WAAW,QAAQ;CACpC;;;;;;;;;CAUA,AAAO,WACL,UACY;EACZ,OAAO,KAAK,GAAG,YAAY,QAAQ;CACrC;;;;;;;;;CAUA,AAAO,UAA8B,UAA4D;EAC/F,OAAO,KAAK,GAAG,WAAW,QAAQ;CACpC;;;;;;;;;CAUA,AAAO,WACL,UACY;EACZ,OAAO,KAAK,GAAG,YAAY,QAAQ;CACrC;;;;;;;;;CAUA,AAAO,UACL,UACY;EACZ,OAAO,KAAK,GAAG,WAAW,QAAQ;CACpC;;;;;;;;;CAUA,AAAO,aACL,UACY;EACZ,OAAO,KAAK,GAAG,cAAc,QAAQ;CACvC;;;;;;;;;CAUA,AAAO,YACL,UACY;EACZ,OAAO,KAAK,GAAG,aAAa,QAAQ;CACtC;;;;;;;;;;CAWA,AAAO,WACL,UACY;EACZ,OAAO,KAAK,GAAG,YAAY,QAAQ;CACrC;;;;;;;;;;CAWA,AAAO,YACL,UACY;EACZ,OAAO,KAAK,GAAG,aAAa,QAAQ;CACtC;;;;;;;;;;CAWA,AAAO,UACL,UACY;EACZ,OAAO,KAAK,GAAG,WAAW,QAAQ;CACpC;;;;;;;;;CAUA,AAAO,YACL,UACY;EACZ,OAAO,KAAK,GAAG,aAAa,QAAQ;CACtC;;;;;;;;;CAUA,AAAO,WACL,UACY;EACZ,OAAO,KAAK,GAAG,YAAY,QAAQ;CACrC;;;;;;;;CASA,AAAQ,kBAAkB,OAAwD;EAChF,IAAI,YAAY,KAAK,UAAU,IAAI,KAAK;EACxC,IAAI,CAAC,WAAW;GACd,4BAAY,IAAI,IAAI;GACpB,KAAK,UAAU,IAAI,OAAO,SAAS;EACrC;EACA,OAAO;CACT;AACF;;;;;AAMA,MAAa,oBAAoB,IAAI,YAAmB"}
1
+ {"version":3,"file":"model-events.mjs","names":[],"sources":["../../../../../../../../packages/cascade/src/events/model-events.ts"],"sourcesContent":["import { type QueryBuilderContract } from \"../contracts\";\nimport type { Model } from \"../model/model\";\nimport { type DeleteStrategy } from \"../types\";\n\ntype OnValidatingEventContext = {\n isInsert: boolean;\n mode: \"insert\" | \"update\";\n};\n\ntype OnSavingEventContext = {\n isInsert: boolean;\n mode: \"insert\" | \"update\";\n};\n\ntype OnDeletingEventContext = {\n strategy: DeleteStrategy;\n primaryKeyValue: string | number;\n primaryKey: string;\n};\n\nexport type OnDeletedEventContext = OnDeletingEventContext & {\n deletedCount: number;\n trashRecord?: Record<string, unknown>;\n};\n\ntype OnFetchingEventContext = {\n table: string;\n modelClass: any;\n};\n\ntype OnHydratingEventContext = {\n query: QueryBuilderContract;\n hydrateCallback?: (data: any, index: number) => any;\n};\n\ntype OnFetchedEventContext = {\n query: QueryBuilderContract;\n rawRecords: any[];\n duration: number;\n};\n\n/**\n * Lifecycle events understood by Cascade models.\n *\n * The list mirrors the hooks in the legacy ORM so downstream code can subscribe\n * with consistent semantics.\n */\nexport type ModelEventName =\n | \"fetching\"\n | \"hydrating\"\n | \"fetched\"\n | \"validating\"\n | \"validated\"\n | \"saving\"\n | \"saved\"\n | \"creating\"\n | \"created\"\n | \"updating\"\n | \"updated\"\n | \"deleting\"\n | \"deleted\"\n | \"restoring\"\n | \"restored\";\n\n/** Signature of an event listener registered against a model lifecycle hook. */\nexport type ModelEventListener<TModel, TContext = unknown> = (\n model: TModel,\n context: TContext,\n) => void | Promise<void>;\n\n/**\n * Light-weight async event emitter used to power model lifecycle hooks.\n *\n * The implementation intentionally avoids any external dependency so we can\n * re-use it in drivers, writers, and other core services without pulling in\n * heavier event libraries.\n */\nexport class ModelEvents<TModel> {\n public readonly listeners = new Map<ModelEventName, Set<ModelEventListener<TModel>>>();\n\n /**\n * Register a listener for the given event.\n * Returns an unsubscribe function for convenience.\n */\n public on<TContext = unknown>(\n event: ModelEventName,\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n const listeners = this.ensureListenerSet(event);\n listeners.add(listener as ModelEventListener<TModel>);\n return () => this.off(event, listener);\n }\n\n /**\n * Register a listener that automatically unsubscribes after the first call.\n */\n public once<TContext = unknown>(\n event: ModelEventName,\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n const wrapper: ModelEventListener<TModel, TContext> = async (model, context) => {\n try {\n await listener(model, context);\n } finally {\n this.off(event, wrapper);\n }\n };\n return this.on(event, wrapper);\n }\n\n /**\n * Deregister a listener for the given event.\n */\n public off<TContext = unknown>(\n event: ModelEventName,\n listener: ModelEventListener<TModel, TContext>,\n ): void {\n const listeners = this.listeners.get(event);\n if (!listeners) {\n return;\n }\n listeners.delete(listener as ModelEventListener<TModel>);\n if (listeners.size === 0) {\n this.listeners.delete(event);\n }\n }\n\n /**\n * Emit an event to all registered listeners.\n */\n public async emit<TContext = unknown>(\n event: ModelEventName,\n model: TModel,\n context: TContext,\n ): Promise<void> {\n const listeners = this.listeners.get(event);\n if (!listeners || listeners.size === 0) {\n return;\n }\n for (const listener of Array.from(listeners)) {\n await listener(model, context);\n }\n }\n\n /**\n * Emit events for fetching\n */\n public async emitFetching<TContext = unknown>(\n query: QueryBuilderContract,\n context?: TContext,\n ): Promise<void> {\n await this.emit(\"fetching\", query as any, context);\n }\n\n /**\n * Remove all registered listeners.\n */\n public clear(): void {\n this.listeners.clear();\n }\n\n /**\n * Registers a listener for the \"saving\" event.\n *\n * Fired before a model is persisted (both insert and update), and before validation.\n * Use this hook for data enrichment and preparation (e.g., setting createdBy, updatedBy).\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onSaving<TContext = OnSavingEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"saving\", listener);\n }\n\n /**\n * Registers a listener for the \"saved\" event.\n *\n * Fired after a model has been successfully persisted.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onSaved<TContext = unknown>(listener: ModelEventListener<TModel, TContext>): () => void {\n return this.on(\"saved\", listener);\n }\n\n /**\n * Registers a listener for the \"creating\" event.\n *\n * Fired before a new model is inserted into the database.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onCreating<TContext = unknown>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"creating\", listener);\n }\n\n /**\n * Registers a listener for the \"created\" event.\n *\n * Fired after a new model has been successfully inserted.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onCreated<TContext = unknown>(listener: ModelEventListener<TModel, TContext>): () => void {\n return this.on(\"created\", listener);\n }\n\n /**\n * Registers a listener for the \"updating\" event.\n *\n * Fired before an existing model is updated in the database.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onUpdating<TContext = unknown>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"updating\", listener);\n }\n\n /**\n * Registers a listener for the \"updated\" event.\n *\n * Fired after an existing model has been successfully updated.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onUpdated<TContext = unknown>(listener: ModelEventListener<TModel, TContext>): () => void {\n return this.on(\"updated\", listener);\n }\n\n /**\n * Registers a listener for the \"deleting\" event.\n *\n * Fired before a model is deleted from the database.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onDeleting<TContext = OnDeletingEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"deleting\", listener);\n }\n\n /**\n * Registers a listener for the \"deleted\" event.\n *\n * Fired after a model has been successfully deleted.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onDeleted<TContext = OnDeletedEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"deleted\", listener);\n }\n\n /**\n * Registers a listener for the \"validating\" event.\n *\n * Fired before model validation is performed.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onValidating<TContext = OnValidatingEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"validating\", listener);\n }\n\n /**\n * Registers a listener for the \"validated\" event.\n *\n * Fired after model validation has completed.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onValidated<TContext = unknown>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"validated\", listener);\n }\n\n /**\n * Registers a listener for the \"fetching\" event.\n *\n * Fired before a query is executed to fetch models.\n * Receives the query builder instance, allowing modification before execution.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onFetching<TContext = OnFetchingEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"fetching\", listener);\n }\n\n /**\n * Registers a listener for the \"hydrating\" event.\n *\n * Fired after raw records are fetched but before they are hydrated into model instances.\n * Allows modification of raw data before hydration.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onHydrating<TContext = OnHydratingEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"hydrating\", listener);\n }\n\n /**\n * Registers a listener for the \"fetched\" event.\n *\n * Fired after models have been fetched and hydrated.\n * Receives hydrated model instances and query context.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onFetched<TContext = OnFetchedEventContext>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"fetched\", listener);\n }\n\n /**\n * Registers a listener for the \"restoring\" event.\n *\n * Fired before a soft-deleted model is restored.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onRestoring<TContext = unknown>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"restoring\", listener);\n }\n\n /**\n * Registers a listener for the \"restored\" event.\n *\n * Fired after a soft-deleted model has been successfully restored.\n *\n * @param listener - The callback to invoke\n * @returns An unsubscribe function\n */\n public onRestored<TContext = unknown>(\n listener: ModelEventListener<TModel, TContext>,\n ): () => void {\n return this.on(\"restored\", listener);\n }\n\n /**\n * Ensures a listener set exists for the given event.\n *\n * @param event - The event name\n * @returns The listener set for the event\n * @private\n */\n private ensureListenerSet(event: ModelEventName): Set<ModelEventListener<TModel>> {\n let listeners = this.listeners.get(event);\n if (!listeners) {\n listeners = new Set();\n this.listeners.set(event, listeners);\n }\n return listeners;\n }\n}\n\n/**\n * Global event emitter invoked for every model instance, regardless of type.\n * Useful for cross-cutting concerns like auditing or request-scoped enrichment.\n */\nexport const globalModelEvents = new ModelEvents<Model>();\n"],"mappings":";;;;;;;;AA6EA,IAAa,cAAb,MAAiC;CAC/B,AAAgB,4BAAY,IAAI,IAAqD;;;;;CAMrF,AAAO,GACL,OACA,UACY;EAEZ,AADkB,KAAK,kBAAkB,KACjC,CAAC,CAAC,IAAI,QAAsC;EACpD,aAAa,KAAK,IAAI,OAAO,QAAQ;CACvC;;;;CAKA,AAAO,KACL,OACA,UACY;EACZ,MAAM,UAAgD,OAAO,OAAO,YAAY;GAC9E,IAAI;IACF,MAAM,SAAS,OAAO,OAAO;GAC/B,UAAU;IACR,KAAK,IAAI,OAAO,OAAO;GACzB;EACF;EACA,OAAO,KAAK,GAAG,OAAO,OAAO;CAC/B;;;;CAKA,AAAO,IACL,OACA,UACM;EACN,MAAM,YAAY,KAAK,UAAU,IAAI,KAAK;EAC1C,IAAI,CAAC,WACH;EAEF,UAAU,OAAO,QAAsC;EACvD,IAAI,UAAU,SAAS,GACrB,KAAK,UAAU,OAAO,KAAK;CAE/B;;;;CAKA,MAAa,KACX,OACA,OACA,SACe;EACf,MAAM,YAAY,KAAK,UAAU,IAAI,KAAK;EAC1C,IAAI,CAAC,aAAa,UAAU,SAAS,GACnC;EAEF,KAAK,MAAM,YAAY,MAAM,KAAK,SAAS,GACzC,MAAM,SAAS,OAAO,OAAO;CAEjC;;;;CAKA,MAAa,aACX,OACA,SACe;EACf,MAAM,KAAK,KAAK,YAAY,OAAc,OAAO;CACnD;;;;CAKA,AAAO,QAAc;EACnB,KAAK,UAAU,MAAM;CACvB;;;;;;;;;;CAWA,AAAO,SACL,UACY;EACZ,OAAO,KAAK,GAAG,UAAU,QAAQ;CACnC;;;;;;;;;CAUA,AAAO,QAA4B,UAA4D;EAC7F,OAAO,KAAK,GAAG,SAAS,QAAQ;CAClC;;;;;;;;;CAUA,AAAO,WACL,UACY;EACZ,OAAO,KAAK,GAAG,YAAY,QAAQ;CACrC;;;;;;;;;CAUA,AAAO,UAA8B,UAA4D;EAC/F,OAAO,KAAK,GAAG,WAAW,QAAQ;CACpC;;;;;;;;;CAUA,AAAO,WACL,UACY;EACZ,OAAO,KAAK,GAAG,YAAY,QAAQ;CACrC;;;;;;;;;CAUA,AAAO,UAA8B,UAA4D;EAC/F,OAAO,KAAK,GAAG,WAAW,QAAQ;CACpC;;;;;;;;;CAUA,AAAO,WACL,UACY;EACZ,OAAO,KAAK,GAAG,YAAY,QAAQ;CACrC;;;;;;;;;CAUA,AAAO,UACL,UACY;EACZ,OAAO,KAAK,GAAG,WAAW,QAAQ;CACpC;;;;;;;;;CAUA,AAAO,aACL,UACY;EACZ,OAAO,KAAK,GAAG,cAAc,QAAQ;CACvC;;;;;;;;;CAUA,AAAO,YACL,UACY;EACZ,OAAO,KAAK,GAAG,aAAa,QAAQ;CACtC;;;;;;;;;;CAWA,AAAO,WACL,UACY;EACZ,OAAO,KAAK,GAAG,YAAY,QAAQ;CACrC;;;;;;;;;;CAWA,AAAO,YACL,UACY;EACZ,OAAO,KAAK,GAAG,aAAa,QAAQ;CACtC;;;;;;;;;;CAWA,AAAO,UACL,UACY;EACZ,OAAO,KAAK,GAAG,WAAW,QAAQ;CACpC;;;;;;;;;CAUA,AAAO,YACL,UACY;EACZ,OAAO,KAAK,GAAG,aAAa,QAAQ;CACtC;;;;;;;;;CAUA,AAAO,WACL,UACY;EACZ,OAAO,KAAK,GAAG,YAAY,QAAQ;CACrC;;;;;;;;CASA,AAAQ,kBAAkB,OAAwD;EAChF,IAAI,YAAY,KAAK,UAAU,IAAI,KAAK;EACxC,IAAI,CAAC,WAAW;GACd,4BAAY,IAAI,IAAI;GACpB,KAAK,UAAU,IAAI,OAAO,SAAS;EACrC;EACA,OAAO;CACT;AACF;;;;;AAMA,MAAa,oBAAoB,IAAI,YAAmB"}
@@ -1,6 +1,6 @@
1
1
  import { ColumnExpression, ColumnExpressionInput } from "./column-expressions.mjs";
2
2
 
3
- //#region ../cascade/src/expressions/aggregate-expressions.d.ts
3
+ //#region ../../packages/cascade/src/expressions/aggregate-expressions.d.ts
4
4
  /**
5
5
  * Abstract aggregate expression format.
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate-expressions.d.mts","names":[],"sources":["../../../../../../../cascade/src/expressions/aggregate-expressions.ts"],"mappings":";;;AAmFA;;;;;;AAAA,KA/CY,mBAAA;EAqJkB,kCAnJ5B,KAAA,EAAO,iBAAA,EAiMa;EA/LpB,OAAA;EA2OyB;;;;;;EApOzB,MAAA,GAAS,gBAAgB;AAAA;;;;KAMf,iBAAA;;;;iBAeI,qBAAA,CAAsB,KAAA,YAAiB,KAAA,IAAS,mBAAmB;;;;;;;cAetE,IAAA;EAoJS;;;;;;;;;;;;;;;;WAnIX,mBAAA;EAmP+B;;;;;;;;;;;;;;;;;;;;gCA3NV,mBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;aA8BnB,qBAAA,GAAwB,mBAAA;;;;;;;;;;;;;;;;;;;;;;;;8BA+BP,mBAAA;;;;;;;;;;;;;;;;;;sBAyBR,mBAAA;;;;;;;;;;;;;;;;;;sBAqBA,mBAAA;;;;;;;;;;;;;;;;;;sBAqBA,mBAAA;;;;;;;;;;;;;;;;;;;;2BAuBK,mBAAA;;;;;;;;;;;;;;;;;;;wBAsBH,mBAAA;;;;;;;;;;;;;;;;;;;;wBAuBA,mBAAA;;;;;;;;;;;;;;;;;;;;uBAuBD,mBAAA;AAAA"}
1
+ {"version":3,"file":"aggregate-expressions.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/expressions/aggregate-expressions.ts"],"mappings":";;;AAmFA;;;;;;AAAA,KA/CY,mBAAA;EAqJkB,kCAnJ5B,KAAA,EAAO,iBAAA,EAiMa;EA/LpB,OAAA;EA2OyB;;;;;;EApOzB,MAAA,GAAS,gBAAgB;AAAA;;;;KAMf,iBAAA;;;;iBAeI,qBAAA,CAAsB,KAAA,YAAiB,KAAA,IAAS,mBAAmB;;;;;;;cAetE,IAAA;EAoJS;;;;;;;;;;;;;;;;WAnIX,mBAAA;EAmP+B;;;;;;;;;;;;;;;;;;;;gCA3NV,mBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;aA8BnB,qBAAA,GAAwB,mBAAA;;;;;;;;;;;;;;;;;;;;;;;;8BA+BP,mBAAA;;;;;;;;;;;;;;;;;;sBAyBR,mBAAA;;;;;;;;;;;;;;;;;;sBAqBA,mBAAA;;;;;;;;;;;;;;;;;;sBAqBA,mBAAA;;;;;;;;;;;;;;;;;;;;2BAuBK,mBAAA;;;;;;;;;;;;;;;;;;;wBAsBH,mBAAA;;;;;;;;;;;;;;;;;;;;wBAuBA,mBAAA;;;;;;;;;;;;;;;;;;;;uBAuBD,mBAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/expressions/aggregate-expressions.ts
1
+ //#region ../../packages/cascade/src/expressions/aggregate-expressions.ts
2
2
  /**
3
3
  * Checks if a value is an abstract aggregate expression.
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate-expressions.mjs","names":[],"sources":["../../../../../../../cascade/src/expressions/aggregate-expressions.ts"],"sourcesContent":["/**\n * Database-agnostic aggregation expressions.\n *\n * `count` / `countDistinct` / `sum` / `avg` / `min` / `max` are **cross-driver**\n * — the same call compiles to the native shape on every supported database\n * (MongoDB `{ $sum: \"$field\" }`, SQL `SUM(field)`, ...). `countDistinct` uses\n * MongoDB's `$addToSet` + `$size` per-group pattern and SQL `COUNT(DISTINCT …)`.\n *\n * `distinct` / `floor` / `first` / `last` are **MongoDB-only**. They have no\n * single-scalar `GROUP BY` equivalent in SQL, so on Postgres they throw a\n * fail-fast error at the `.groupBy()` call (naming the `selectRaw` /\n * `havingRaw` escape hatch) rather than emit a silently-different query.\n *\n * @example\n * ```typescript\n * import { $agg } from '@warlock.js/cascade';\n *\n * // Works for both MongoDB and SQL\n * Lesson.query()\n * .groupBy(\"type\", {\n * count: $agg.count(),\n * total: $agg.sum(\"duration\"),\n * avg: $agg.avg(\"rating\")\n * })\n * .get();\n * ```\n */\n\nimport type { ColumnExpression, ColumnExpressionInput } from \"./column-expressions\";\n\n/**\n * Abstract aggregate expression format.\n *\n * This format is database-agnostic and will be translated by each driver\n * to their native syntax.\n */\nexport type AggregateExpression = {\n /** The aggregate function type */\n __agg: AggregateFunction;\n /** The field to aggregate (null for count, or when `__expr` carries a composed expression) */\n __field: string | null;\n /**\n * A typed column expression to aggregate over, when the aggregate operates\n * on more than a bare column (e.g. `price * quantity`). When present, drivers\n * compile this instead of `__field`. Absent for the simple bare-column form\n * so existing `$agg.sum(\"col\")` payloads stay byte-for-byte identical.\n */\n __expr?: ColumnExpression;\n};\n\n/**\n * Supported aggregate functions.\n */\nexport type AggregateFunction =\n | \"count\"\n | \"countDistinct\"\n | \"sum\"\n | \"avg\"\n | \"min\"\n | \"max\"\n | \"first\"\n | \"last\"\n | \"distinct\"\n | \"floor\";\n\n/**\n * Checks if a value is an abstract aggregate expression.\n */\nexport function isAggregateExpression(value: unknown): value is AggregateExpression {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"__field\" in value &&\n typeof (value as AggregateExpression).__agg === \"string\"\n );\n}\n\n/**\n * Database-agnostic aggregation expression helpers.\n *\n * These helpers create abstract expressions that each driver translates\n * to their native format.\n */\nexport const $agg = {\n /**\n * Count documents in each group.\n *\n * @returns Abstract count expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * count: $agg.count()\n * });\n * ```\n *\n * Translates to:\n * - MongoDB: `{ $sum: 1 }`\n * - SQL: `COUNT(*)`\n */\n count(): AggregateExpression {\n return { __agg: \"count\", __field: null };\n },\n\n /**\n * Count the number of distinct values of a field in each group.\n *\n * @param field - The field name to count distinct values of\n * @returns Abstract count-distinct expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"country\", {\n * uniqueCities: $agg.countDistinct(\"city\")\n * });\n * ```\n *\n * **Cross-driver.** Translates to:\n * - SQL: `COUNT(DISTINCT city)`\n * - MongoDB: `{ $addToSet: \"$city\" }` in the `$group` stage, finalized with\n * `{ $size: \"$uniqueCities\" }` in the renaming `$project` (the standard\n * distinct-count-per-group pattern, since `$size` is not a `$group`\n * accumulator).\n */\n countDistinct(field: string): AggregateExpression {\n return { __agg: \"countDistinct\", __field: field };\n },\n\n /**\n * Sum a numeric field — or a composed arithmetic expression — across\n * documents in each group.\n *\n * Pass a bare column name to sum a single field (unchanged from v1), or a\n * typed `$expr` node (`$expr.mul` / `$expr.add` / `$expr.sub` / `$expr.div` /\n * `$expr.col` / `$expr.lit`) to sum a computed value such as `price * quantity`.\n *\n * @param input - A field name or a typed `ColumnExpression`\n * @returns Abstract sum expression\n *\n * @example\n * ```typescript\n * import { $agg, $expr } from \"@warlock.js/cascade\";\n *\n * // Bare column\n * query.groupBy(\"type\", { totalDuration: $agg.sum(\"duration\") });\n *\n * // Composed expression: SUM(price * quantity)\n * query.groupBy(\"type\", { revenue: $agg.sum($expr.mul(\"price\", \"quantity\")) });\n * ```\n *\n * Translates to:\n * - SQL: `SUM(\"duration\")` / `SUM((\"price\" * \"quantity\"))`\n * - MongoDB: `{ $sum: \"$duration\" }` / `{ $sum: { $multiply: [\"$price\", \"$quantity\"] } }`\n */\n sum(input: ColumnExpressionInput): AggregateExpression {\n if (typeof input === \"string\") {\n return { __agg: \"sum\", __field: input };\n }\n\n return { __agg: \"sum\", __field: null, __expr: input };\n },\n\n /**\n * Sum a raw, driver-native expression escape hatch.\n *\n * Equivalent to `$agg.sum($expr.raw(expression))`. The raw string is emitted\n * verbatim into the generated query — never build it from untrusted input.\n * Reach for the typed {@link sum} form first; this exists only for fragments\n * the typed combinators can't express.\n *\n * @param expression - A raw expression fragment (e.g. `\"price * quantity\"`)\n * @returns Abstract sum expression wrapping the raw fragment\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * net: $agg.sumRaw(\"price * quantity * (1 - discount)\"),\n * });\n * ```\n *\n * Translates to:\n * - SQL: `SUM(price * quantity * (1 - discount))`\n * - MongoDB: throws — raw SQL fragments are not portable to a pipeline; use\n * the typed {@link sum} form (or `groupByRaw`) on MongoDB instead.\n */\n sumRaw(expression: string): AggregateExpression {\n return {\n __agg: \"sum\",\n __field: null,\n __expr: { __expr: \"raw\", expression },\n };\n },\n\n /**\n * Calculate the average value of a field across documents in each group.\n *\n * @param field - The field name to average\n * @returns Abstract average expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * avgRating: $agg.avg(\"rating\")\n * });\n * ```\n *\n * Translates to:\n * - MongoDB: `{ $avg: \"$rating\" }`\n * - SQL: `AVG(rating)`\n */\n avg(field: string): AggregateExpression {\n return { __agg: \"avg\", __field: field };\n },\n\n /**\n * Get the minimum value of a field across documents in each group.\n *\n * @param field - The field name\n * @returns Abstract min expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * minPrice: $agg.min(\"price\")\n * });\n * ```\n *\n * Translates to:\n * - MongoDB: `{ $min: \"$price\" }`\n * - SQL: `MIN(price)`\n */\n min(field: string): AggregateExpression {\n return { __agg: \"min\", __field: field };\n },\n\n /**\n * Get the maximum value of a field across documents in each group.\n *\n * @param field - The field name\n * @returns Abstract max expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * maxPrice: $agg.max(\"price\")\n * });\n * ```\n *\n * Translates to:\n * - MongoDB: `{ $max: \"$price\" }`\n * - SQL: `MAX(price)`\n */\n max(field: string): AggregateExpression {\n return { __agg: \"max\", __field: field };\n },\n\n /**\n * Get the distinct values of a field across documents in each group.\n *\n * @param field - The field name\n * @returns Abstract distinct expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * distinctColors: $agg.distinct(\"color\")\n * });\n * ```\n *\n * **MongoDB-only.** MongoDB: `{ $distinct: \"$color\" }` (returns the array\n * of distinct values). On Postgres this throws — SQL `DISTINCT` is a set\n * quantifier, not a scalar aggregate, so there is no equivalent single\n * value to put in a `GROUP BY` projection. Use `selectRaw` if you need a\n * Postgres-specific shape (e.g. `array_agg(DISTINCT color)`).\n */\n distinct(field: string): AggregateExpression {\n return { __agg: \"distinct\", __field: field };\n },\n\n /**\n * Get the floor value of a field across documents in each group.\n *\n * @param field - The field name\n * @returns Abstract floor expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * floorPrice: $agg.floor(\"price\")\n * });\n * ```\n *\n * **MongoDB-only.** MongoDB: `{ $floor: \"$price\" }`. On Postgres this\n * throws — `FLOOR` is a scalar function, not an aggregate, so it is\n * meaningless inside a bare `$group` / `GROUP BY`. Use `selectRaw` with\n * `FLOOR(...)` over the aggregated value if you need it on Postgres.\n */\n floor(field: string): AggregateExpression {\n return { __agg: \"floor\", __field: field };\n },\n\n /**\n * Get the first value of a field in each group (order-dependent).\n *\n * @param field - The field name\n * @returns Abstract first expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * firstName: $agg.first(\"name\")\n * });\n * ```\n *\n * **MongoDB-only.** MongoDB: `{ $first: \"$name\" }` (group-order\n * dependent). On Postgres this throws — the SQL equivalent is\n * `FIRST_VALUE(name) OVER (ORDER BY ...)`, a window function needing an\n * ordering context the `$agg` API doesn't carry. Use `selectRaw` with an\n * explicit window function if you need it on Postgres.\n */\n first(field: string): AggregateExpression {\n return { __agg: \"first\", __field: field };\n },\n\n /**\n * Get the last value of a field in each group (order-dependent).\n *\n * @param field - The field name\n * @returns Abstract last expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * lastName: $agg.last(\"name\")\n * });\n * ```\n *\n * **MongoDB-only.** MongoDB: `{ $last: \"$name\" }` (group-order\n * dependent). On Postgres this throws — the SQL equivalent is\n * `LAST_VALUE(name) OVER (ORDER BY ...)`, a window function needing an\n * ordering context the `$agg` API doesn't carry. Use `selectRaw` with an\n * explicit window function if you need it on Postgres.\n */\n last(field: string): AggregateExpression {\n return { __agg: \"last\", __field: field };\n },\n};\n"],"mappings":";;;;AAoEA,SAAgB,sBAAsB,OAA8C;CAClF,OACE,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,OAAQ,MAA8B,UAAU;AAEpD;;;;;;;AAQA,MAAa,OAAO;;;;;;;;;;;;;;;;;CAiBlB,QAA6B;EAC3B,OAAO;GAAE,OAAO;GAAS,SAAS;EAAK;CACzC;;;;;;;;;;;;;;;;;;;;;CAsBA,cAAc,OAAoC;EAChD,OAAO;GAAE,OAAO;GAAiB,SAAS;EAAM;CAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BA,IAAI,OAAmD;EACrD,IAAI,OAAO,UAAU,UACnB,OAAO;GAAE,OAAO;GAAO,SAAS;EAAM;EAGxC,OAAO;GAAE,OAAO;GAAO,SAAS;GAAM,QAAQ;EAAM;CACtD;;;;;;;;;;;;;;;;;;;;;;;;CAyBA,OAAO,YAAyC;EAC9C,OAAO;GACL,OAAO;GACP,SAAS;GACT,QAAQ;IAAE,QAAQ;IAAO;GAAW;EACtC;CACF;;;;;;;;;;;;;;;;;;CAmBA,IAAI,OAAoC;EACtC,OAAO;GAAE,OAAO;GAAO,SAAS;EAAM;CACxC;;;;;;;;;;;;;;;;;;CAmBA,IAAI,OAAoC;EACtC,OAAO;GAAE,OAAO;GAAO,SAAS;EAAM;CACxC;;;;;;;;;;;;;;;;;;CAmBA,IAAI,OAAoC;EACtC,OAAO;GAAE,OAAO;GAAO,SAAS;EAAM;CACxC;;;;;;;;;;;;;;;;;;;;CAqBA,SAAS,OAAoC;EAC3C,OAAO;GAAE,OAAO;GAAY,SAAS;EAAM;CAC7C;;;;;;;;;;;;;;;;;;;CAoBA,MAAM,OAAoC;EACxC,OAAO;GAAE,OAAO;GAAS,SAAS;EAAM;CAC1C;;;;;;;;;;;;;;;;;;;;CAqBA,MAAM,OAAoC;EACxC,OAAO;GAAE,OAAO;GAAS,SAAS;EAAM;CAC1C;;;;;;;;;;;;;;;;;;;;CAqBA,KAAK,OAAoC;EACvC,OAAO;GAAE,OAAO;GAAQ,SAAS;EAAM;CACzC;AACF"}
1
+ {"version":3,"file":"aggregate-expressions.mjs","names":[],"sources":["../../../../../../../../packages/cascade/src/expressions/aggregate-expressions.ts"],"sourcesContent":["/**\n * Database-agnostic aggregation expressions.\n *\n * `count` / `countDistinct` / `sum` / `avg` / `min` / `max` are **cross-driver**\n * — the same call compiles to the native shape on every supported database\n * (MongoDB `{ $sum: \"$field\" }`, SQL `SUM(field)`, ...). `countDistinct` uses\n * MongoDB's `$addToSet` + `$size` per-group pattern and SQL `COUNT(DISTINCT …)`.\n *\n * `distinct` / `floor` / `first` / `last` are **MongoDB-only**. They have no\n * single-scalar `GROUP BY` equivalent in SQL, so on Postgres they throw a\n * fail-fast error at the `.groupBy()` call (naming the `selectRaw` /\n * `havingRaw` escape hatch) rather than emit a silently-different query.\n *\n * @example\n * ```typescript\n * import { $agg } from '@warlock.js/cascade';\n *\n * // Works for both MongoDB and SQL\n * Lesson.query()\n * .groupBy(\"type\", {\n * count: $agg.count(),\n * total: $agg.sum(\"duration\"),\n * avg: $agg.avg(\"rating\")\n * })\n * .get();\n * ```\n */\n\nimport type { ColumnExpression, ColumnExpressionInput } from \"./column-expressions\";\n\n/**\n * Abstract aggregate expression format.\n *\n * This format is database-agnostic and will be translated by each driver\n * to their native syntax.\n */\nexport type AggregateExpression = {\n /** The aggregate function type */\n __agg: AggregateFunction;\n /** The field to aggregate (null for count, or when `__expr` carries a composed expression) */\n __field: string | null;\n /**\n * A typed column expression to aggregate over, when the aggregate operates\n * on more than a bare column (e.g. `price * quantity`). When present, drivers\n * compile this instead of `__field`. Absent for the simple bare-column form\n * so existing `$agg.sum(\"col\")` payloads stay byte-for-byte identical.\n */\n __expr?: ColumnExpression;\n};\n\n/**\n * Supported aggregate functions.\n */\nexport type AggregateFunction =\n | \"count\"\n | \"countDistinct\"\n | \"sum\"\n | \"avg\"\n | \"min\"\n | \"max\"\n | \"first\"\n | \"last\"\n | \"distinct\"\n | \"floor\";\n\n/**\n * Checks if a value is an abstract aggregate expression.\n */\nexport function isAggregateExpression(value: unknown): value is AggregateExpression {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"__field\" in value &&\n typeof (value as AggregateExpression).__agg === \"string\"\n );\n}\n\n/**\n * Database-agnostic aggregation expression helpers.\n *\n * These helpers create abstract expressions that each driver translates\n * to their native format.\n */\nexport const $agg = {\n /**\n * Count documents in each group.\n *\n * @returns Abstract count expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * count: $agg.count()\n * });\n * ```\n *\n * Translates to:\n * - MongoDB: `{ $sum: 1 }`\n * - SQL: `COUNT(*)`\n */\n count(): AggregateExpression {\n return { __agg: \"count\", __field: null };\n },\n\n /**\n * Count the number of distinct values of a field in each group.\n *\n * @param field - The field name to count distinct values of\n * @returns Abstract count-distinct expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"country\", {\n * uniqueCities: $agg.countDistinct(\"city\")\n * });\n * ```\n *\n * **Cross-driver.** Translates to:\n * - SQL: `COUNT(DISTINCT city)`\n * - MongoDB: `{ $addToSet: \"$city\" }` in the `$group` stage, finalized with\n * `{ $size: \"$uniqueCities\" }` in the renaming `$project` (the standard\n * distinct-count-per-group pattern, since `$size` is not a `$group`\n * accumulator).\n */\n countDistinct(field: string): AggregateExpression {\n return { __agg: \"countDistinct\", __field: field };\n },\n\n /**\n * Sum a numeric field — or a composed arithmetic expression — across\n * documents in each group.\n *\n * Pass a bare column name to sum a single field (unchanged from v1), or a\n * typed `$expr` node (`$expr.mul` / `$expr.add` / `$expr.sub` / `$expr.div` /\n * `$expr.col` / `$expr.lit`) to sum a computed value such as `price * quantity`.\n *\n * @param input - A field name or a typed `ColumnExpression`\n * @returns Abstract sum expression\n *\n * @example\n * ```typescript\n * import { $agg, $expr } from \"@warlock.js/cascade\";\n *\n * // Bare column\n * query.groupBy(\"type\", { totalDuration: $agg.sum(\"duration\") });\n *\n * // Composed expression: SUM(price * quantity)\n * query.groupBy(\"type\", { revenue: $agg.sum($expr.mul(\"price\", \"quantity\")) });\n * ```\n *\n * Translates to:\n * - SQL: `SUM(\"duration\")` / `SUM((\"price\" * \"quantity\"))`\n * - MongoDB: `{ $sum: \"$duration\" }` / `{ $sum: { $multiply: [\"$price\", \"$quantity\"] } }`\n */\n sum(input: ColumnExpressionInput): AggregateExpression {\n if (typeof input === \"string\") {\n return { __agg: \"sum\", __field: input };\n }\n\n return { __agg: \"sum\", __field: null, __expr: input };\n },\n\n /**\n * Sum a raw, driver-native expression escape hatch.\n *\n * Equivalent to `$agg.sum($expr.raw(expression))`. The raw string is emitted\n * verbatim into the generated query — never build it from untrusted input.\n * Reach for the typed {@link sum} form first; this exists only for fragments\n * the typed combinators can't express.\n *\n * @param expression - A raw expression fragment (e.g. `\"price * quantity\"`)\n * @returns Abstract sum expression wrapping the raw fragment\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * net: $agg.sumRaw(\"price * quantity * (1 - discount)\"),\n * });\n * ```\n *\n * Translates to:\n * - SQL: `SUM(price * quantity * (1 - discount))`\n * - MongoDB: throws — raw SQL fragments are not portable to a pipeline; use\n * the typed {@link sum} form (or `groupByRaw`) on MongoDB instead.\n */\n sumRaw(expression: string): AggregateExpression {\n return {\n __agg: \"sum\",\n __field: null,\n __expr: { __expr: \"raw\", expression },\n };\n },\n\n /**\n * Calculate the average value of a field across documents in each group.\n *\n * @param field - The field name to average\n * @returns Abstract average expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * avgRating: $agg.avg(\"rating\")\n * });\n * ```\n *\n * Translates to:\n * - MongoDB: `{ $avg: \"$rating\" }`\n * - SQL: `AVG(rating)`\n */\n avg(field: string): AggregateExpression {\n return { __agg: \"avg\", __field: field };\n },\n\n /**\n * Get the minimum value of a field across documents in each group.\n *\n * @param field - The field name\n * @returns Abstract min expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * minPrice: $agg.min(\"price\")\n * });\n * ```\n *\n * Translates to:\n * - MongoDB: `{ $min: \"$price\" }`\n * - SQL: `MIN(price)`\n */\n min(field: string): AggregateExpression {\n return { __agg: \"min\", __field: field };\n },\n\n /**\n * Get the maximum value of a field across documents in each group.\n *\n * @param field - The field name\n * @returns Abstract max expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * maxPrice: $agg.max(\"price\")\n * });\n * ```\n *\n * Translates to:\n * - MongoDB: `{ $max: \"$price\" }`\n * - SQL: `MAX(price)`\n */\n max(field: string): AggregateExpression {\n return { __agg: \"max\", __field: field };\n },\n\n /**\n * Get the distinct values of a field across documents in each group.\n *\n * @param field - The field name\n * @returns Abstract distinct expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * distinctColors: $agg.distinct(\"color\")\n * });\n * ```\n *\n * **MongoDB-only.** MongoDB: `{ $distinct: \"$color\" }` (returns the array\n * of distinct values). On Postgres this throws — SQL `DISTINCT` is a set\n * quantifier, not a scalar aggregate, so there is no equivalent single\n * value to put in a `GROUP BY` projection. Use `selectRaw` if you need a\n * Postgres-specific shape (e.g. `array_agg(DISTINCT color)`).\n */\n distinct(field: string): AggregateExpression {\n return { __agg: \"distinct\", __field: field };\n },\n\n /**\n * Get the floor value of a field across documents in each group.\n *\n * @param field - The field name\n * @returns Abstract floor expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * floorPrice: $agg.floor(\"price\")\n * });\n * ```\n *\n * **MongoDB-only.** MongoDB: `{ $floor: \"$price\" }`. On Postgres this\n * throws — `FLOOR` is a scalar function, not an aggregate, so it is\n * meaningless inside a bare `$group` / `GROUP BY`. Use `selectRaw` with\n * `FLOOR(...)` over the aggregated value if you need it on Postgres.\n */\n floor(field: string): AggregateExpression {\n return { __agg: \"floor\", __field: field };\n },\n\n /**\n * Get the first value of a field in each group (order-dependent).\n *\n * @param field - The field name\n * @returns Abstract first expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * firstName: $agg.first(\"name\")\n * });\n * ```\n *\n * **MongoDB-only.** MongoDB: `{ $first: \"$name\" }` (group-order\n * dependent). On Postgres this throws — the SQL equivalent is\n * `FIRST_VALUE(name) OVER (ORDER BY ...)`, a window function needing an\n * ordering context the `$agg` API doesn't carry. Use `selectRaw` with an\n * explicit window function if you need it on Postgres.\n */\n first(field: string): AggregateExpression {\n return { __agg: \"first\", __field: field };\n },\n\n /**\n * Get the last value of a field in each group (order-dependent).\n *\n * @param field - The field name\n * @returns Abstract last expression\n *\n * @example\n * ```typescript\n * query.groupBy(\"type\", {\n * lastName: $agg.last(\"name\")\n * });\n * ```\n *\n * **MongoDB-only.** MongoDB: `{ $last: \"$name\" }` (group-order\n * dependent). On Postgres this throws — the SQL equivalent is\n * `LAST_VALUE(name) OVER (ORDER BY ...)`, a window function needing an\n * ordering context the `$agg` API doesn't carry. Use `selectRaw` with an\n * explicit window function if you need it on Postgres.\n */\n last(field: string): AggregateExpression {\n return { __agg: \"last\", __field: field };\n },\n};\n"],"mappings":";;;;AAoEA,SAAgB,sBAAsB,OAA8C;CAClF,OACE,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,OAAQ,MAA8B,UAAU;AAEpD;;;;;;;AAQA,MAAa,OAAO;;;;;;;;;;;;;;;;;CAiBlB,QAA6B;EAC3B,OAAO;GAAE,OAAO;GAAS,SAAS;EAAK;CACzC;;;;;;;;;;;;;;;;;;;;;CAsBA,cAAc,OAAoC;EAChD,OAAO;GAAE,OAAO;GAAiB,SAAS;EAAM;CAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BA,IAAI,OAAmD;EACrD,IAAI,OAAO,UAAU,UACnB,OAAO;GAAE,OAAO;GAAO,SAAS;EAAM;EAGxC,OAAO;GAAE,OAAO;GAAO,SAAS;GAAM,QAAQ;EAAM;CACtD;;;;;;;;;;;;;;;;;;;;;;;;CAyBA,OAAO,YAAyC;EAC9C,OAAO;GACL,OAAO;GACP,SAAS;GACT,QAAQ;IAAE,QAAQ;IAAO;GAAW;EACtC;CACF;;;;;;;;;;;;;;;;;;CAmBA,IAAI,OAAoC;EACtC,OAAO;GAAE,OAAO;GAAO,SAAS;EAAM;CACxC;;;;;;;;;;;;;;;;;;CAmBA,IAAI,OAAoC;EACtC,OAAO;GAAE,OAAO;GAAO,SAAS;EAAM;CACxC;;;;;;;;;;;;;;;;;;CAmBA,IAAI,OAAoC;EACtC,OAAO;GAAE,OAAO;GAAO,SAAS;EAAM;CACxC;;;;;;;;;;;;;;;;;;;;CAqBA,SAAS,OAAoC;EAC3C,OAAO;GAAE,OAAO;GAAY,SAAS;EAAM;CAC7C;;;;;;;;;;;;;;;;;;;CAoBA,MAAM,OAAoC;EACxC,OAAO;GAAE,OAAO;GAAS,SAAS;EAAM;CAC1C;;;;;;;;;;;;;;;;;;;;CAqBA,MAAM,OAAoC;EACxC,OAAO;GAAE,OAAO;GAAS,SAAS;EAAM;CAC1C;;;;;;;;;;;;;;;;;;;;CAqBA,KAAK,OAAoC;EACvC,OAAO;GAAE,OAAO;GAAQ,SAAS;EAAM;CACzC;AACF"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/expressions/column-expressions.d.ts
1
+ //#region ../../packages/cascade/src/expressions/column-expressions.d.ts
2
2
  /**
3
3
  * Database-agnostic, **typed** column expressions for aggregate inputs.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"column-expressions.d.mts","names":[],"sources":["../../../../../../../cascade/src/expressions/column-expressions.ts"],"mappings":";;AAyCA;;;;AAAgC;AAahC;;;;AAEiB;AAIjB;;;;AAEgB;AAShB;;;;;;;;AAEqC;AAQrC;;;;AAEqB;AAQrB;;;;;;;;;;KAlDY,oBAAA;;;;AAsDW;KAzCX,mBAAA;EAAA,SACD,MAAA;EAAA,SACA,MAAM;AAAA;AA0CmC;AAAA,KAtCxC,iBAAA;EAAA,SACD,MAAA;EAAA,SACA,KAAK;AAAA;;;;;AA4C6D;AAM5E;KAzCW,oBAAA;EAAA,SACD,MAAA;EAAA,SACA,QAAA,EAAU,gBAAgB;AAAA;AA+CY;;;;AAUO;AAVP,KAvCrC,mBAAA;EAAA,SACD,MAAA;EAAA,SACA,UAAU;AAAA;;;;;AAyDmD;KAjD5D,gBAAA,GACR,mBAAA,GACA,iBAAA,GACA,oBAAA,GACA,mBAAA;;KAGQ,qBAAA,GAAwB,gBAAgB;;;;;;AAoDoB;iBA5CxD,kBAAA,CAAmB,KAAA,YAAiB,KAAA,IAAS,gBAAgB;;;;;;;iBAcpE,GAAA,CAAI,MAAA,WAAiB,mBAAmB;;;;;;;iBAUxC,GAAA,CAAI,KAAA,qBAA0B,iBAAiB;AAkCjC;;;;;;AAAA,iBAxBd,GAAA,IAAO,QAAA,EAAU,qBAAA,KAA0B,oBAAoB;;;;;;;iBAU/D,GAAA,IAAO,QAAA,EAAU,qBAAA,KAA0B,oBAAoB;AA+BjD;AAAA;;;;AAkB8B;AAYrD;AA9BuB,iBApBd,GAAA,CACP,IAAA,EAAM,qBAAA,EACN,KAAA,EAAO,qBAAA,GACN,oBAAA;;;;;;;AA+C+E;iBAjCzE,GAAA,CACP,IAAA,EAAM,qBAAA,EACN,KAAA,EAAO,qBAAA,GACN,oBAAA;;;;;;;;;;;;iBAkBM,GAAA,CAAI,UAAA,WAAqB,mBAAmB;;;;;;;;;iBAYrC,kBAAA,CAAmB,KAAA,EAAO,qBAAA,GAAwB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+BrE,KAAA"}
1
+ {"version":3,"file":"column-expressions.d.mts","names":[],"sources":["../../../../../../../../packages/cascade/src/expressions/column-expressions.ts"],"mappings":";;AAyCA;;;;AAAgC;AAahC;;;;AAEiB;AAIjB;;;;AAEgB;AAShB;;;;;;;;AAEqC;AAQrC;;;;AAEqB;AAQrB;;;;;;;;;;KAlDY,oBAAA;;;;AAsDW;KAzCX,mBAAA;EAAA,SACD,MAAA;EAAA,SACA,MAAM;AAAA;AA0CmC;AAAA,KAtCxC,iBAAA;EAAA,SACD,MAAA;EAAA,SACA,KAAK;AAAA;;;;;AA4C6D;AAM5E;KAzCW,oBAAA;EAAA,SACD,MAAA;EAAA,SACA,QAAA,EAAU,gBAAgB;AAAA;AA+CY;;;;AAUO;AAVP,KAvCrC,mBAAA;EAAA,SACD,MAAA;EAAA,SACA,UAAU;AAAA;;;;;AAyDmD;KAjD5D,gBAAA,GACR,mBAAA,GACA,iBAAA,GACA,oBAAA,GACA,mBAAA;;KAGQ,qBAAA,GAAwB,gBAAgB;;;;;;AAoDoB;iBA5CxD,kBAAA,CAAmB,KAAA,YAAiB,KAAA,IAAS,gBAAgB;;;;;;;iBAcpE,GAAA,CAAI,MAAA,WAAiB,mBAAmB;;;;;;;iBAUxC,GAAA,CAAI,KAAA,qBAA0B,iBAAiB;AA+BqC;;;;;;AAAA,iBArBpF,GAAA,IAAO,QAAA,EAAU,qBAAA,KAA0B,oBAAoB;;;;;;;iBAU/D,GAAA,IAAO,QAAA,EAAU,qBAAA,KAA0B,oBAAoB;AAyBqB;AAAA;;;;AAkBxC;AAYrD;AA9B6F,iBAdpF,GAAA,CAAI,IAAA,EAAM,qBAAA,EAAuB,KAAA,EAAO,qBAAA,GAAwB,oBAAA;;;;;;;AA4CS;iBA9BzE,GAAA,CAAI,IAAA,EAAM,qBAAA,EAAuB,KAAA,EAAO,qBAAA,GAAwB,oBAAA;;;;;;;;;;;;iBAkBhE,GAAA,CAAI,UAAA,WAAqB,mBAAmB;;;;;;;;;iBAYrC,kBAAA,CAAmB,KAAA,EAAO,qBAAA,GAAwB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+BrE,KAAA"}
@@ -1,4 +1,4 @@
1
- //#region ../cascade/src/expressions/column-expressions.ts
1
+ //#region ../../packages/cascade/src/expressions/column-expressions.ts
2
2
  /**
3
3
  * Type guard: is `value` one of the typed column-expression nodes?
4
4
  *