stratal 0.0.21 → 0.0.23

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 (296) hide show
  1. package/README.md +2 -2
  2. package/dist/bin/cloudflare-workers-loader.mjs +80 -7
  3. package/dist/bin/cloudflare-workers-loader.mjs.map +1 -1
  4. package/dist/bin/quarry.mjs +84 -160
  5. package/dist/bin/quarry.mjs.map +1 -1
  6. package/dist/cache/index.d.mts +8 -46
  7. package/dist/cache/index.d.mts.map +1 -1
  8. package/dist/cache/index.mjs +134 -97
  9. package/dist/cache/index.mjs.map +1 -1
  10. package/dist/{cache.service-DsnKuNyO.d.mts → cache.service-uElmBtdS.d.mts} +29 -39
  11. package/dist/cache.service-uElmBtdS.d.mts.map +1 -0
  12. package/dist/{command-BgSlsS4M.mjs → command-BvmUAPPQ.mjs} +15 -4
  13. package/dist/command-BvmUAPPQ.mjs.map +1 -0
  14. package/dist/{command-Cmmf0oHX.d.mts → command-CPhFHjG3.d.mts} +3 -2
  15. package/dist/command-CPhFHjG3.d.mts.map +1 -0
  16. package/dist/command-not-found.error-ONAZ2Bpk.mjs +14 -0
  17. package/dist/command-not-found.error-ONAZ2Bpk.mjs.map +1 -0
  18. package/dist/config/index.d.mts +24 -11
  19. package/dist/config/index.d.mts.map +1 -1
  20. package/dist/config/index.mjs +32 -57
  21. package/dist/config/index.mjs.map +1 -1
  22. package/dist/{consumer-registry-B7yUNh0q.d.mts → consumer-registry-D3iMTSdy.d.mts} +54 -22
  23. package/dist/consumer-registry-D3iMTSdy.d.mts.map +1 -0
  24. package/dist/container-storage-BmOJ4_Na.mjs +52 -0
  25. package/dist/container-storage-BmOJ4_Na.mjs.map +1 -0
  26. package/dist/{controller.decorator-B9vwn0zK.mjs → controller.decorator-C5UVeJS3.mjs} +8 -8
  27. package/dist/controller.decorator-C5UVeJS3.mjs.map +1 -0
  28. package/dist/cron/index.d.mts +103 -7
  29. package/dist/cron/index.d.mts.map +1 -1
  30. package/dist/cron/index.mjs +2 -2
  31. package/dist/cron-job-NesZRk8F.d.mts +58 -0
  32. package/dist/cron-job-NesZRk8F.d.mts.map +1 -0
  33. package/dist/{cron-manager-DQSK8uoV.mjs → cron.module-Bgzq5hiT.mjs} +47 -17
  34. package/dist/cron.module-Bgzq5hiT.mjs.map +1 -0
  35. package/dist/decorate-CuAoSZvs.mjs +16 -0
  36. package/dist/deep-merge-ByiAOZ3r.mjs +18 -0
  37. package/dist/deep-merge-ByiAOZ3r.mjs.map +1 -0
  38. package/dist/di/index.d.mts +2 -2
  39. package/dist/di/index.mjs +4 -3
  40. package/dist/di-DseMn-z9.mjs +524 -0
  41. package/dist/di-DseMn-z9.mjs.map +1 -0
  42. package/dist/email/index.d.mts +40 -122
  43. package/dist/email/index.d.mts.map +1 -1
  44. package/dist/email/index.mjs +446 -131
  45. package/dist/email/index.mjs.map +1 -1
  46. package/dist/en-CDZBMcc1.mjs +202 -0
  47. package/dist/en-CDZBMcc1.mjs.map +1 -0
  48. package/dist/{env-D1rcZ8_r.d.mts → env-ug22bJj7.d.mts} +1 -1
  49. package/dist/env-ug22bJj7.d.mts.map +1 -0
  50. package/dist/errors/index.d.mts +2 -2
  51. package/dist/errors/index.mjs +4 -2
  52. package/dist/errors-mXYxG0XB.mjs +333 -0
  53. package/dist/errors-mXYxG0XB.mjs.map +1 -0
  54. package/dist/events/index.d.mts +14 -3
  55. package/dist/events/index.d.mts.map +1 -1
  56. package/dist/events/index.mjs +2 -2
  57. package/dist/{events-CzCV8jI8.mjs → events-BXJGZjpG.mjs} +23 -13
  58. package/dist/events-BXJGZjpG.mjs.map +1 -0
  59. package/dist/exception-context-kEoMFwze.mjs +429 -0
  60. package/dist/exception-context-kEoMFwze.mjs.map +1 -0
  61. package/dist/{gateway-context-CXmXtaUP.mjs → gateway-context-TMu_AlJt.mjs} +38 -31
  62. package/dist/gateway-context-TMu_AlJt.mjs.map +1 -0
  63. package/dist/guards/index.d.mts +3 -3
  64. package/dist/guards/index.d.mts.map +1 -1
  65. package/dist/guards/index.mjs +1 -1
  66. package/dist/{guards-DU1_J9YA.mjs → guards-DALPXy3_.mjs} +6 -5
  67. package/dist/guards-DALPXy3_.mjs.map +1 -0
  68. package/dist/hono-app-CvV3hOfT.mjs +161 -0
  69. package/dist/hono-app-CvV3hOfT.mjs.map +1 -0
  70. package/dist/{http-method.decorator-BrgHMdLQ.mjs → http-method.decorator-ByWZb9DO.mjs} +7 -6
  71. package/dist/http-method.decorator-ByWZb9DO.mjs.map +1 -0
  72. package/dist/i18n/index.d.mts +238 -3
  73. package/dist/i18n/index.d.mts.map +1 -0
  74. package/dist/i18n/index.mjs +39 -3
  75. package/dist/i18n/index.mjs.map +1 -0
  76. package/dist/i18n/messages/en/index.d.mts +2 -2
  77. package/dist/i18n/messages/en/index.mjs +2 -2
  78. package/dist/i18n/utils/index.d.mts +4 -26
  79. package/dist/i18n/utils/index.d.mts.map +1 -1
  80. package/dist/i18n/utils/index.mjs +2 -2
  81. package/dist/i18n/validation/index.d.mts +3 -2
  82. package/dist/i18n/validation/index.mjs +4 -2
  83. package/dist/i18n.module-DRQAZoSZ.mjs +222 -0
  84. package/dist/i18n.module-DRQAZoSZ.mjs.map +1 -0
  85. package/dist/i18n.tokens-CZ_v8oyS.mjs +19 -0
  86. package/dist/i18n.tokens-CZ_v8oyS.mjs.map +1 -0
  87. package/dist/{index-7-hU3GTV.d.mts → index-0ItCjaqw.d.mts} +1 -1
  88. package/dist/index-0ItCjaqw.d.mts.map +1 -0
  89. package/dist/index-B5JBRcWD.d.mts +544 -0
  90. package/dist/index-B5JBRcWD.d.mts.map +1 -0
  91. package/dist/index-BUt92sAE.d.mts +124 -0
  92. package/dist/index-BUt92sAE.d.mts.map +1 -0
  93. package/dist/{index-ByOyTmqf.d.mts → index-B_JoEl3V.d.mts} +751 -2229
  94. package/dist/index-B_JoEl3V.d.mts.map +1 -0
  95. package/dist/index-DtBNIFuP.d.mts +42 -0
  96. package/dist/index-DtBNIFuP.d.mts.map +1 -0
  97. package/dist/{index-C1KvMncZ.d.mts → index-HgOLNruQ.d.mts} +3 -108
  98. package/dist/index-HgOLNruQ.d.mts.map +1 -0
  99. package/dist/index.d.mts +6 -43
  100. package/dist/index.mjs +3 -2
  101. package/dist/{is-command-C6a7WTPw.mjs → is-command-CEPO9n8c.mjs} +2 -2
  102. package/dist/{is-command-C6a7WTPw.mjs.map → is-command-CEPO9n8c.mjs.map} +1 -1
  103. package/dist/{is-seeder-CebjZCDn.mjs → is-seeder-Gvh_AM71.mjs} +1 -1
  104. package/dist/{is-seeder-CebjZCDn.mjs.map → is-seeder-Gvh_AM71.mjs.map} +1 -1
  105. package/dist/lazy-module-loader-Ib383jH_.d.mts +60 -0
  106. package/dist/lazy-module-loader-Ib383jH_.d.mts.map +1 -0
  107. package/dist/locale-path.service-D-dHiIPc.mjs +165 -0
  108. package/dist/locale-path.service-D-dHiIPc.mjs.map +1 -0
  109. package/dist/locale-url-nZrZxqJP.mjs +44 -0
  110. package/dist/locale-url-nZrZxqJP.mjs.map +1 -0
  111. package/dist/locale-url.service-C2EWmGdq.mjs +41 -0
  112. package/dist/locale-url.service-C2EWmGdq.mjs.map +1 -0
  113. package/dist/logger/index.d.mts +2 -2
  114. package/dist/logger/index.mjs +170 -2
  115. package/dist/logger/index.mjs.map +1 -0
  116. package/dist/macroable/index.d.mts +2 -2
  117. package/dist/macroable/index.mjs +1 -1
  118. package/dist/{macroable-BmufBshB.mjs → macroable-cvDTFZ_A.mjs} +1 -1
  119. package/dist/{macroable-BmufBshB.mjs.map → macroable-cvDTFZ_A.mjs.map} +1 -1
  120. package/dist/metadata-DzzprcID.mjs +39 -0
  121. package/dist/metadata-DzzprcID.mjs.map +1 -0
  122. package/dist/module/index.d.mts +7 -24
  123. package/dist/module/index.d.mts.map +1 -1
  124. package/dist/module/index.mjs +10 -2
  125. package/dist/module/index.mjs.map +1 -0
  126. package/dist/module-registry-Dm-pqHd3.mjs +554 -0
  127. package/dist/module-registry-Dm-pqHd3.mjs.map +1 -0
  128. package/dist/module.decorator-CYHY6pG5.mjs +19 -0
  129. package/dist/module.decorator-CYHY6pG5.mjs.map +1 -0
  130. package/dist/openapi/index.d.mts +44 -8
  131. package/dist/openapi/index.d.mts.map +1 -1
  132. package/dist/openapi/index.mjs +3 -3
  133. package/dist/openapi-CstuTM8S.mjs +309 -0
  134. package/dist/openapi-CstuTM8S.mjs.map +1 -0
  135. package/dist/{openapi-tools.service-Zs-Ewv7F.mjs → openapi-tools.service-BC5EC3R3.mjs} +8 -2
  136. package/dist/openapi-tools.service-BC5EC3R3.mjs.map +1 -0
  137. package/dist/{openapi.service-Bt9bCIrd.d.mts → openapi.service-YhTiJ1bO.d.mts} +3 -3
  138. package/dist/openapi.service-YhTiJ1bO.d.mts.map +1 -0
  139. package/dist/quarry/index.d.mts +14 -163
  140. package/dist/quarry/index.d.mts.map +1 -1
  141. package/dist/quarry/index.mjs +6 -5
  142. package/dist/quarry/runner.d.mts +184 -0
  143. package/dist/quarry/runner.d.mts.map +1 -0
  144. package/dist/quarry/runner.mjs +945 -0
  145. package/dist/quarry/runner.mjs.map +1 -0
  146. package/dist/quarry-registry-CXg0RFXq.d.mts +69 -0
  147. package/dist/quarry-registry-CXg0RFXq.d.mts.map +1 -0
  148. package/dist/quarry.module-BuRPGMDm.mjs +312 -0
  149. package/dist/quarry.module-BuRPGMDm.mjs.map +1 -0
  150. package/dist/queue/index.d.mts +3 -3
  151. package/dist/queue/index.mjs +57 -48
  152. package/dist/queue/index.mjs.map +1 -1
  153. package/dist/queue.module-nddvxzCB.mjs +613 -0
  154. package/dist/queue.module-nddvxzCB.mjs.map +1 -0
  155. package/dist/queue.tokens-DjHnFmre.mjs +11 -0
  156. package/dist/queue.tokens-DjHnFmre.mjs.map +1 -0
  157. package/dist/{r2-storage.provider-DuonKeYm.mjs → r2-storage.provider-DCxQt9dD.mjs} +6 -6
  158. package/dist/r2-storage.provider-DCxQt9dD.mjs.map +1 -0
  159. package/dist/{rate-limit.decorator-6qzNcSOt.mjs → rate-limit.decorator-BPAie_p3.mjs} +6 -11
  160. package/dist/rate-limit.decorator-BPAie_p3.mjs.map +1 -0
  161. package/dist/rate-limiter/index.d.mts +11 -50
  162. package/dist/rate-limiter/index.d.mts.map +1 -1
  163. package/dist/rate-limiter/index.mjs +33 -42
  164. package/dist/rate-limiter/index.mjs.map +1 -1
  165. package/dist/route-name-DGoBOfPg.mjs +171 -0
  166. package/dist/route-name-DGoBOfPg.mjs.map +1 -0
  167. package/dist/route-registration.service-D6vSwiKP.mjs +918 -0
  168. package/dist/route-registration.service-D6vSwiKP.mjs.map +1 -0
  169. package/dist/route-registry-CYqLp2Nj.mjs +123 -0
  170. package/dist/route-registry-CYqLp2Nj.mjs.map +1 -0
  171. package/dist/router/index.d.mts +2 -2
  172. package/dist/router/index.mjs +18 -7
  173. package/dist/router-CWGBD-Bg.mjs +78 -0
  174. package/dist/router-CWGBD-Bg.mjs.map +1 -0
  175. package/dist/router-resolver-D4YlPNlm.mjs +88 -0
  176. package/dist/router-resolver-D4YlPNlm.mjs.map +1 -0
  177. package/dist/seeder/index.d.mts +16 -11
  178. package/dist/seeder/index.d.mts.map +1 -1
  179. package/dist/seeder/index.mjs +5 -3
  180. package/dist/seeder-7ubkms-Y.mjs +81 -0
  181. package/dist/seeder-7ubkms-Y.mjs.map +1 -0
  182. package/dist/seeder-registry-CyUmKsJq.mjs +57 -0
  183. package/dist/seeder-registry-CyUmKsJq.mjs.map +1 -0
  184. package/dist/seeder.module-CYYwk3Qk.mjs +15 -0
  185. package/dist/seeder.module-CYYwk3Qk.mjs.map +1 -0
  186. package/dist/{signed-url-BQPbv2In.mjs → signed-url-DIU0sK_6.mjs} +1 -1
  187. package/dist/{signed-url-BQPbv2In.mjs.map → signed-url-DIU0sK_6.mjs.map} +1 -1
  188. package/dist/storage/index.d.mts +15 -39
  189. package/dist/storage/index.d.mts.map +1 -1
  190. package/dist/storage/index.mjs +3 -3
  191. package/dist/storage/providers/index.d.mts +2 -2
  192. package/dist/storage/providers/index.d.mts.map +1 -1
  193. package/dist/storage/providers/index.mjs +1 -1
  194. package/dist/{storage-D8CBP72Z.mjs → storage-MDZypIE9.mjs} +66 -59
  195. package/dist/storage-MDZypIE9.mjs.map +1 -0
  196. package/dist/{storage-provider.interface-Bd6vA4ak.d.mts → storage-provider.interface-ClUwxz4S.d.mts} +2 -3
  197. package/dist/storage-provider.interface-ClUwxz4S.d.mts.map +1 -0
  198. package/dist/storage.error-Dnib4VHc.mjs +8 -0
  199. package/dist/storage.error-Dnib4VHc.mjs.map +1 -0
  200. package/dist/stratal-DL9M38_s.mjs +383 -0
  201. package/dist/stratal-DL9M38_s.mjs.map +1 -0
  202. package/dist/stratal-DwDJPY9N.d.mts +43 -0
  203. package/dist/stratal-DwDJPY9N.d.mts.map +1 -0
  204. package/dist/tiered-cache.service-Dv3BhxxE.d.mts +79 -0
  205. package/dist/tiered-cache.service-Dv3BhxxE.d.mts.map +1 -0
  206. package/dist/trailing-slash-CFyw8nYu.mjs +34 -0
  207. package/dist/trailing-slash-CFyw8nYu.mjs.map +1 -0
  208. package/dist/{types-cySNS_lp.d.mts → types-CmV_9xBD.d.mts} +1 -1
  209. package/dist/types-CmV_9xBD.d.mts.map +1 -0
  210. package/dist/uri-h7Q8Jug9.mjs +251 -0
  211. package/dist/uri-h7Q8Jug9.mjs.map +1 -0
  212. package/dist/{usage-generator-BUdlhnCK.mjs → usage-generator-DAWYasuP.mjs} +7 -4
  213. package/dist/usage-generator-DAWYasuP.mjs.map +1 -0
  214. package/dist/validation-CpOjviyT.mjs +49 -0
  215. package/dist/validation-CpOjviyT.mjs.map +1 -0
  216. package/dist/validation.context-CRvmrhq7.mjs +117 -0
  217. package/dist/validation.context-CRvmrhq7.mjs.map +1 -0
  218. package/dist/versioning.service-C6aHky8-.mjs +36 -0
  219. package/dist/versioning.service-C6aHky8-.mjs.map +1 -0
  220. package/dist/websocket/index.d.mts +16 -14
  221. package/dist/websocket/index.d.mts.map +1 -1
  222. package/dist/websocket/index.mjs +2 -2
  223. package/dist/workers/index.d.mts +2 -2
  224. package/dist/workers/index.d.mts.map +1 -1
  225. package/dist/workers/index.mjs +3 -2
  226. package/dist/workers/index.mjs.map +1 -1
  227. package/dist/zod-eKqqhZ5_.mjs +72 -0
  228. package/dist/zod-eKqqhZ5_.mjs.map +1 -0
  229. package/dist/{index-Bnpfq6uk.d.mts → zod-wecrEVAs.d.mts} +63 -133
  230. package/dist/zod-wecrEVAs.d.mts.map +1 -0
  231. package/package.json +28 -39
  232. package/dist/base-email.provider-CfQCA08m.mjs +0 -42
  233. package/dist/base-email.provider-CfQCA08m.mjs.map +0 -1
  234. package/dist/cache.service-DsnKuNyO.d.mts.map +0 -1
  235. package/dist/cache.tokens-B7Rw1C9Q.mjs +0 -6
  236. package/dist/cache.tokens-B7Rw1C9Q.mjs.map +0 -1
  237. package/dist/colors-DJaRDXoS.mjs +0 -16
  238. package/dist/colors-DJaRDXoS.mjs.map +0 -1
  239. package/dist/command-BgSlsS4M.mjs.map +0 -1
  240. package/dist/command-Cmmf0oHX.d.mts.map +0 -1
  241. package/dist/consumer-registry-B7yUNh0q.d.mts.map +0 -1
  242. package/dist/controller.decorator-B9vwn0zK.mjs.map +0 -1
  243. package/dist/cron-manager-CmTimEjf.d.mts +0 -131
  244. package/dist/cron-manager-CmTimEjf.d.mts.map +0 -1
  245. package/dist/cron-manager-DQSK8uoV.mjs.map +0 -1
  246. package/dist/en-DSH_bhh6.mjs +0 -308
  247. package/dist/en-DSH_bhh6.mjs.map +0 -1
  248. package/dist/env-D1rcZ8_r.d.mts.map +0 -1
  249. package/dist/errors-COW9-Mar.mjs +0 -1739
  250. package/dist/errors-COW9-Mar.mjs.map +0 -1
  251. package/dist/errors-ORxu1-Bb.mjs +0 -74
  252. package/dist/errors-ORxu1-Bb.mjs.map +0 -1
  253. package/dist/events-CzCV8jI8.mjs.map +0 -1
  254. package/dist/gateway-context-CXmXtaUP.mjs.map +0 -1
  255. package/dist/guards-DU1_J9YA.mjs.map +0 -1
  256. package/dist/http-method.decorator-BrgHMdLQ.mjs.map +0 -1
  257. package/dist/i18n.module-CzXLW9Hy.mjs +0 -2532
  258. package/dist/i18n.module-CzXLW9Hy.mjs.map +0 -1
  259. package/dist/index-7-hU3GTV.d.mts.map +0 -1
  260. package/dist/index-Bnpfq6uk.d.mts.map +0 -1
  261. package/dist/index-ByOyTmqf.d.mts.map +0 -1
  262. package/dist/index-C1KvMncZ.d.mts.map +0 -1
  263. package/dist/index-DBd_2wv8.d.mts +0 -263
  264. package/dist/index-DBd_2wv8.d.mts.map +0 -1
  265. package/dist/index-DUzWs0z7.d.mts +0 -494
  266. package/dist/index-DUzWs0z7.d.mts.map +0 -1
  267. package/dist/index.d.mts.map +0 -1
  268. package/dist/logger-DlV7NtvD.mjs +0 -440
  269. package/dist/logger-DlV7NtvD.mjs.map +0 -1
  270. package/dist/module-BzLg57FK.mjs +0 -866
  271. package/dist/module-BzLg57FK.mjs.map +0 -1
  272. package/dist/openapi-tools.service-Zs-Ewv7F.mjs.map +0 -1
  273. package/dist/openapi.service-Bt9bCIrd.d.mts.map +0 -1
  274. package/dist/quarry-registry-BwY2hOxm.mjs +0 -699
  275. package/dist/quarry-registry-BwY2hOxm.mjs.map +0 -1
  276. package/dist/queue.module-BhCjZp6H.mjs +0 -409
  277. package/dist/queue.module-BhCjZp6H.mjs.map +0 -1
  278. package/dist/r2-storage.provider-DuonKeYm.mjs.map +0 -1
  279. package/dist/rate-limit.decorator-6qzNcSOt.mjs.map +0 -1
  280. package/dist/resend.provider-DB4IlFjG.mjs +0 -68
  281. package/dist/resend.provider-DB4IlFjG.mjs.map +0 -1
  282. package/dist/seeder-zoEfEw9i.mjs +0 -138
  283. package/dist/seeder-zoEfEw9i.mjs.map +0 -1
  284. package/dist/setup-CefZKV_e.mjs +0 -37
  285. package/dist/setup-CefZKV_e.mjs.map +0 -1
  286. package/dist/smtp.provider-B6D7zuWX.mjs +0 -76
  287. package/dist/smtp.provider-B6D7zuWX.mjs.map +0 -1
  288. package/dist/storage-D8CBP72Z.mjs.map +0 -1
  289. package/dist/storage-provider.interface-Bd6vA4ak.d.mts.map +0 -1
  290. package/dist/stratal-CNwpbSZl.mjs +0 -535
  291. package/dist/stratal-CNwpbSZl.mjs.map +0 -1
  292. package/dist/types-cySNS_lp.d.mts.map +0 -1
  293. package/dist/usage-generator-BUdlhnCK.mjs.map +0 -1
  294. package/dist/validation-DtJwAv7O.mjs +0 -248
  295. package/dist/validation-DtJwAv7O.mjs.map +0 -1
  296. /package/dist/{chunk-D1SwGrFN.mjs → chunk-BBjsoOtd.mjs} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/seeder/seeder.ts","../../src/seeder/seeder-registry.ts","../../src/seeder/commands/db-seed-list.command.ts","../../src/seeder/commands/db-seed.command.ts","../../src/seeder/errors.ts","../../src/seeder/is-seeder.ts"],"mappings":";;;;;cAGa,gBAAA;AAAA,UAEI,aAAA;EACf,GAAA,CAAI,WAAA,EAAa,WAAA,CAAY,MAAA,IAAU,OAAA;EACvC,SAAA,EAAW,SAAA;AAAA;AAAA,uBAGS,MAAA;EAAA,CACnB,gBAAA,GAAmB,aAAA;EAAA,SAKX,GAAA,CAAA,GAAO,OAAA;EAXD;EAAA,UAcC,IAAA,CAAK,WAAA,EAAa,WAAA,CAAY,MAAA,IAAU,OAAA;AAAA;;;cCb7C,aAAA;EAAA,SAEH,cAAA;AAAA;AAAA,cAEG,cAAA;EAAA,QAIS,GAAA;EAAA,QAHZ,OAAA;EAAA,QACA,SAAA;cAEY,GAAA,EAAK,WAAA;EAEzB,QAAA,CAAS,WAAA,EAAa,WAAA,CAAY,MAAA;EAS5B,GAAA,CAAI,WAAA,EAAa,WAAA,CAAY,MAAA,GAAS,OAAA;IAAY,SAAA,GAAY,SAAA;EAAA,IAAc,OAAA;EAsB5E,MAAA,CAAO,OAAA;IAAY,SAAA,GAAY,SAAA;EAAA,IAAc,OAAA;EAMnD,IAAA,CAAK,IAAA,WAAe,WAAA,CAAY,MAAA;EAIhC,GAAA,CAAI,WAAA,EAAa,WAAA,CAAY,MAAA;EAI7B,IAAA,CAAA;IAAU,SAAA;EAAA;AAAA;;;cCzDC,iBAAA,SAA0B,OAAA;EAAA,QAIqB,OAAA;EAAA,OAHnD,OAAA;EAAA,OACA,WAAA;cAEmD,OAAA,EAAS,cAAA;EAInE,MAAA,CAAA;AAAA;;;cCRW,aAAA,SAAsB,OAAA;EAAA,QAIyB,OAAA;EAAA,OAHnD,OAAA;EAAA,OACA,WAAA;cAEmD,OAAA,EAAS,cAAA;EAI7D,MAAA,CAAA,GAAU,OAAA;AAAA;;;cCVL,wBAAA,SAAiC,gBAAA;cAChC,IAAA;AAAA;AAAA,cASD,wBAAA,SAAiC,gBAAA;cAChC,IAAA;AAAA;;;;;;;AJVd;iBKKgB,QAAA,CAAS,MAAA,EAAQ,WAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/seeder/seeder.ts","../../src/seeder/seeder-registry.ts","../../src/seeder/commands/db-seed-list.command.ts","../../src/seeder/commands/db-seed.command.ts","../../src/seeder/seeder.error.ts","../../src/seeder/is-seeder.ts","../../src/seeder/seeder.module.ts"],"mappings":";;;;;cAGa,gBAAA;AAAA,UAEI,aAAA;EACf,GAAA,CAAI,WAAA,EAAa,WAAA,CAAY,MAAA,IAAU,OAAA;EACvC,SAAA,EAAW,SAAA;AAAA;AAAA,uBAGS,MAAA;EAAA,CACnB,gBAAA,GAAmB,aAAA;EAAA,SAKX,GAAA,IAAO,OAAA;EAXD;EAAA,UAcC,IAAA,CAAK,WAAA,EAAa,WAAA,CAAY,MAAA,IAAU,OAAA;AAAA;;;cCX7C,aAAA;EAAA,SAEH,cAAA;AAAA;AAAA,cAGG,cAAA;EAAA,QAIwC,GAAA;EAAA,QAH3C,OAAA;EAAA,QACA,SAAA;cAE2C,GAAA,EAAK,WAAA;EAExD,QAAA,CAAS,WAAA,EAAa,WAAA,CAAY,MAAA;EAS5B,GAAA,CAAI,WAAA,EAAa,WAAA,CAAY,MAAA,GAAS,OAAA;IAAY,SAAA,GAAY,SAAA;EAAA,IAAc,OAAA;EAsB5E,MAAA,CAAO,OAAA;IAAY,SAAA,GAAY,SAAA;EAAA,IAAc,OAAA;EAMnD,IAAA,CAAK,IAAA,WAAe,WAAA,CAAY,MAAA;EAIhC,GAAA,CAAI,WAAA,EAAa,WAAA,CAAY,MAAA;EAI7B,IAAA;IAAU,SAAA;EAAA;AAAA;;;cC5DC,iBAAA,SAA0B,OAAO;EAAA,QAIc,OAAA;EAAA,OAHnD,OAAA;EAAA,OACA,WAAA;cAEmD,OAAA,EAAS,cAAA;EAInE,MAAA;AAAA;;;cCRW,aAAA,SAAsB,OAAA;EAAA,QAIyB,OAAA;EAAA,OAHnD,OAAA;EAAA,OACA,WAAA;cAEmD,OAAA,EAAS,cAAA;EAI7D,MAAA,IAAU,OAAA;AAAA;;;cCVL,WAAA,SAAoB,gBAAgB;;;;;;;AJCjD;iBKKgB,QAAA,CAAS,MAAmB,EAAX,WAAW;;;;;;;;ALL5C;;cMYa,YAAA"}
@@ -1,3 +1,5 @@
1
- import { n as SEEDER_INTERNALS, r as Seeder, t as isSeeder } from "../is-seeder-CebjZCDn.mjs";
2
- import { a as SeederNameCollisionError, i as SeederRegistry, n as DbSeedListCommand, o as SeederNotRegisteredError, r as SEEDER_TOKENS, t as DbSeedCommand } from "../seeder-zoEfEw9i.mjs";
3
- export { DbSeedCommand, DbSeedListCommand, SEEDER_INTERNALS, SEEDER_TOKENS, Seeder, SeederNameCollisionError, SeederNotRegisteredError, SeederRegistry, isSeeder };
1
+ import { n as SEEDER_INTERNALS, r as Seeder, t as isSeeder } from "../is-seeder-Gvh_AM71.mjs";
2
+ import { n as SeederRegistry, r as SeederError, t as SEEDER_TOKENS } from "../seeder-registry-CyUmKsJq.mjs";
3
+ import { n as DbSeedListCommand, t as DbSeedCommand } from "../seeder-7ubkms-Y.mjs";
4
+ import { t as SeederModule } from "../seeder.module-CYYwk3Qk.mjs";
5
+ export { DbSeedCommand, DbSeedListCommand, SEEDER_INTERNALS, SEEDER_TOKENS, Seeder, SeederError, SeederModule, SeederRegistry, isSeeder };
@@ -0,0 +1,81 @@
1
+ import { d as inject } from "./di-DseMn-z9.mjs";
2
+ import { n as __decorateParam, t as __decorate } from "./decorate-CuAoSZvs.mjs";
3
+ import { t as Command } from "./command-BvmUAPPQ.mjs";
4
+ import { t as SEEDER_TOKENS } from "./seeder-registry-CyUmKsJq.mjs";
5
+ import "./seeder.module-CYYwk3Qk.mjs";
6
+ //#region src/seeder/commands/db-seed-list.command.ts
7
+ let DbSeedListCommand = class DbSeedListCommand extends Command {
8
+ seeders;
9
+ static command = "db:seed:list";
10
+ static description = "List available database seeders";
11
+ constructor(seeders) {
12
+ super();
13
+ this.seeders = seeders;
14
+ }
15
+ handle() {
16
+ const list = this.seeders.list();
17
+ if (list.length === 0) {
18
+ this.info("No seeders found");
19
+ return 0;
20
+ }
21
+ this.table(["Class"], list.map((s) => [s.className]));
22
+ }
23
+ };
24
+ DbSeedListCommand = __decorate([__decorateParam(0, inject(SEEDER_TOKENS.SeederRegistry))], DbSeedListCommand);
25
+ //#endregion
26
+ //#region src/seeder/commands/db-seed.command.ts
27
+ let DbSeedCommand = class DbSeedCommand extends Command {
28
+ seeders;
29
+ static command = "db:seed {names* : Seeder class names} {--a|all : Run all seeders} {--dry-run : Preview without executing}";
30
+ static description = "Run database seeders";
31
+ constructor(seeders) {
32
+ super();
33
+ this.seeders = seeders;
34
+ }
35
+ async handle() {
36
+ const names = this.array("names");
37
+ const all = this.boolean("all");
38
+ const dryRun = this.boolean("dry-run");
39
+ if (names.length > 0 && all) this.warn(`Ignoring "${names.join(", ")}" because --all takes precedence`);
40
+ if (names.length === 0 && !all) {
41
+ this.fail("Specify one or more seeder class names or use --all");
42
+ return 1;
43
+ }
44
+ if (dryRun) {
45
+ if (all) {
46
+ const list = this.seeders.list();
47
+ this.info("Dry run — would execute:");
48
+ for (const s of list) this.info(` ${s.className}`);
49
+ } else {
50
+ this.info("Dry run — would execute:");
51
+ for (const name of names) {
52
+ const SeederClass = this.seeders.find(name);
53
+ if (!SeederClass) {
54
+ this.fail(`Seeder "${name}" not found`);
55
+ return 1;
56
+ }
57
+ this.info(` ${SeederClass.name}`);
58
+ }
59
+ }
60
+ return 0;
61
+ }
62
+ if (all) {
63
+ await this.seeders.runAll();
64
+ this.success("All seeders completed");
65
+ } else for (const name of names) {
66
+ const SeederClass = this.seeders.find(name);
67
+ if (!SeederClass) {
68
+ this.fail(`Seeder "${name}" not found`);
69
+ return 1;
70
+ }
71
+ await this.seeders.run(SeederClass);
72
+ this.success(`Seeder "${name}" completed`);
73
+ }
74
+ return 0;
75
+ }
76
+ };
77
+ DbSeedCommand = __decorate([__decorateParam(0, inject(SEEDER_TOKENS.SeederRegistry))], DbSeedCommand);
78
+ //#endregion
79
+ export { DbSeedListCommand as n, DbSeedCommand as t };
80
+
81
+ //# sourceMappingURL=seeder-7ubkms-Y.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeder-7ubkms-Y.mjs","names":[],"sources":["../src/seeder/commands/db-seed-list.command.ts","../src/seeder/commands/db-seed.command.ts"],"sourcesContent":["import { inject } from '../../di'\nimport { Command } from '../../quarry/command'\nimport { type SeederRegistry, SEEDER_TOKENS } from '../seeder-registry'\n\nexport class DbSeedListCommand extends Command {\n static command = 'db:seed:list'\n static description = 'List available database seeders'\n\n constructor(@inject(SEEDER_TOKENS.SeederRegistry) private seeders: SeederRegistry) {\n super()\n }\n\n handle(): undefined | number {\n const list = this.seeders.list()\n if (list.length === 0) {\n this.info('No seeders found')\n return 0\n }\n this.table(['Class'], list.map(s => [s.className]))\n\n return undefined\n }\n}\n","import { inject } from '../../di'\nimport { Command } from '../../quarry/command'\nimport { type SeederRegistry, SEEDER_TOKENS } from '../seeder-registry'\n\nexport class DbSeedCommand extends Command {\n static command = 'db:seed {names* : Seeder class names} {--a|all : Run all seeders} {--dry-run : Preview without executing}'\n static description = 'Run database seeders'\n\n constructor(@inject(SEEDER_TOKENS.SeederRegistry) private seeders: SeederRegistry) {\n super()\n }\n\n async handle(): Promise<number | undefined> {\n const names = this.array('names')\n const all = this.boolean('all')\n const dryRun = this.boolean('dry-run')\n\n if (names.length > 0 && all) {\n this.warn(`Ignoring \"${names.join(', ')}\" because --all takes precedence`)\n }\n\n if (names.length === 0 && !all) {\n this.fail('Specify one or more seeder class names or use --all')\n return 1\n }\n\n if (dryRun) {\n if (all) {\n const list = this.seeders.list()\n this.info('Dry run — would execute:')\n for (const s of list) {\n this.info(` ${s.className}`)\n }\n } else {\n this.info('Dry run — would execute:')\n for (const name of names) {\n const SeederClass = this.seeders.find(name)\n if (!SeederClass) {\n this.fail(`Seeder \"${name}\" not found`)\n return 1\n }\n this.info(` ${SeederClass.name}`)\n }\n }\n return 0\n }\n\n if (all) {\n await this.seeders.runAll()\n this.success('All seeders completed')\n } else {\n for (const name of names) {\n const SeederClass = this.seeders.find(name)\n if (!SeederClass) {\n this.fail(`Seeder \"${name}\" not found`)\n return 1\n }\n await this.seeders.run(SeederClass)\n this.success(`Seeder \"${name}\" completed`)\n }\n }\n\n return 0\n }\n}\n"],"mappings":";;;;;;AAIO,IAAA,oBAAA,MAAM,0BAA0B,QAAQ;CAIa;CAH1D,OAAO,UAAU;CACjB,OAAO,cAAc;CAErB,YAAY,SAAuE;EACjF,MAAM;EADkD,KAAA,UAAA;CAE1D;CAEA,SAA6B;EAC3B,MAAM,OAAO,KAAK,QAAQ,KAAK;EAC/B,IAAI,KAAK,WAAW,GAAG;GACrB,KAAK,KAAK,kBAAkB;GAC5B,OAAO;EACT;EACA,KAAK,MAAM,CAAC,OAAO,GAAG,KAAK,KAAI,MAAK,CAAC,EAAE,SAAS,CAAC,CAAC;CAGpD;AACF;mDAde,OAAO,cAAc,cAAc,CAAA,CAAA,GAAA,iBAAA;;;ACJ3C,IAAA,gBAAA,MAAM,sBAAsB,QAAQ;CAIiB;CAH1D,OAAO,UAAU;CACjB,OAAO,cAAc;CAErB,YAAY,SAAuE;EACjF,MAAM;EADkD,KAAA,UAAA;CAE1D;CAEA,MAAM,SAAsC;EAC1C,MAAM,QAAQ,KAAK,MAAM,OAAO;EAChC,MAAM,MAAM,KAAK,QAAQ,KAAK;EAC9B,MAAM,SAAS,KAAK,QAAQ,SAAS;EAErC,IAAI,MAAM,SAAS,KAAK,KACtB,KAAK,KAAK,aAAa,MAAM,KAAK,IAAI,EAAE,iCAAiC;EAG3E,IAAI,MAAM,WAAW,KAAK,CAAC,KAAK;GAC9B,KAAK,KAAK,qDAAqD;GAC/D,OAAO;EACT;EAEA,IAAI,QAAQ;GACV,IAAI,KAAK;IACP,MAAM,OAAO,KAAK,QAAQ,KAAK;IAC/B,KAAK,KAAK,0BAA0B;IACpC,KAAK,MAAM,KAAK,MACd,KAAK,KAAK,KAAK,EAAE,WAAW;GAEhC,OAAO;IACL,KAAK,KAAK,0BAA0B;IACpC,KAAK,MAAM,QAAQ,OAAO;KACxB,MAAM,cAAc,KAAK,QAAQ,KAAK,IAAI;KAC1C,IAAI,CAAC,aAAa;MAChB,KAAK,KAAK,WAAW,KAAK,YAAY;MACtC,OAAO;KACT;KACA,KAAK,KAAK,KAAK,YAAY,MAAM;IACnC;GACF;GACA,OAAO;EACT;EAEA,IAAI,KAAK;GACP,MAAM,KAAK,QAAQ,OAAO;GAC1B,KAAK,QAAQ,uBAAuB;EACtC,OACE,KAAK,MAAM,QAAQ,OAAO;GACxB,MAAM,cAAc,KAAK,QAAQ,KAAK,IAAI;GAC1C,IAAI,CAAC,aAAa;IAChB,KAAK,KAAK,WAAW,KAAK,YAAY;IACtC,OAAO;GACT;GACA,MAAM,KAAK,QAAQ,IAAI,WAAW;GAClC,KAAK,QAAQ,WAAW,KAAK,YAAY;EAC3C;EAGF,OAAO;CACT;AACF;+CAxDe,OAAO,cAAc,cAAc,CAAA,CAAA,GAAA,aAAA"}
@@ -0,0 +1,57 @@
1
+ import { d as inject, r as DI_TOKENS, s as Singleton } from "./di-DseMn-z9.mjs";
2
+ import { a as ApplicationError } from "./container-storage-BmOJ4_Na.mjs";
3
+ import { n as __decorateParam, t as __decorate } from "./decorate-CuAoSZvs.mjs";
4
+ import "./errors-mXYxG0XB.mjs";
5
+ import { n as SEEDER_INTERNALS } from "./is-seeder-Gvh_AM71.mjs";
6
+ //#region src/seeder/seeder.error.ts
7
+ var SeederError = class extends ApplicationError {};
8
+ //#endregion
9
+ //#region src/seeder/seeder-registry.ts
10
+ const SEEDER_TOKENS = { SeederRegistry: Symbol.for("stratal:seeders:registry") };
11
+ let SeederRegistry = class SeederRegistry {
12
+ app;
13
+ seeders = /* @__PURE__ */ new Set();
14
+ nameIndex = /* @__PURE__ */ new Map();
15
+ constructor(app) {
16
+ this.app = app;
17
+ }
18
+ register(SeederClass) {
19
+ const existing = this.nameIndex.get(SeederClass.name);
20
+ if (existing && existing !== SeederClass) throw new SeederError(`Seeder name collision: "${SeederClass.name}" is already registered`);
21
+ this.seeders.add(SeederClass);
22
+ this.nameIndex.set(SeederClass.name, SeederClass);
23
+ }
24
+ async run(SeederClass, options) {
25
+ if (!this.seeders.has(SeederClass)) throw new SeederError(`Seeder "${SeederClass.name}" is not registered`);
26
+ const execute = async (container) => {
27
+ const seeder = container.resolve(SeederClass);
28
+ seeder[SEEDER_INTERNALS] = {
29
+ run: (cls) => this.run(cls, { container }),
30
+ container
31
+ };
32
+ await seeder.run();
33
+ };
34
+ if (options?.container) await execute(options.container);
35
+ else {
36
+ const mockContext = this.app.createMockRouterContext("en");
37
+ await this.app.container.runInRequestScope(mockContext, execute);
38
+ }
39
+ }
40
+ async runAll(options) {
41
+ for (const SeederClass of this.seeders) await this.run(SeederClass, options);
42
+ }
43
+ find(name) {
44
+ return this.nameIndex.get(name);
45
+ }
46
+ has(SeederClass) {
47
+ return this.seeders.has(SeederClass);
48
+ }
49
+ list() {
50
+ return [...this.seeders].map((cls) => ({ className: cls.name }));
51
+ }
52
+ };
53
+ SeederRegistry = __decorate([Singleton(SEEDER_TOKENS.SeederRegistry), __decorateParam(0, inject(DI_TOKENS.Application))], SeederRegistry);
54
+ //#endregion
55
+ export { SeederRegistry as n, SeederError as r, SEEDER_TOKENS as t };
56
+
57
+ //# sourceMappingURL=seeder-registry-CyUmKsJq.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeder-registry-CyUmKsJq.mjs","names":[],"sources":["../src/seeder/seeder.error.ts","../src/seeder/seeder-registry.ts"],"sourcesContent":["import { ApplicationError } from '../errors'\n\nexport class SeederError extends ApplicationError {}\n","import type { Application } from '../application'\nimport type { Container } from '../di/container'\nimport { inject, Singleton } from '../di/decorators'\nimport { DI_TOKENS } from '../di/tokens'\nimport type { Constructor } from '../types'\nimport { SeederError } from './seeder.error'\nimport { type Seeder, SEEDER_INTERNALS } from './seeder'\n\nexport const SEEDER_TOKENS = {\n SeederRegistry: Symbol.for('stratal:seeders:registry'),\n} as const\n\n@Singleton(SEEDER_TOKENS.SeederRegistry)\nexport class SeederRegistry {\n private seeders = new Set<Constructor<Seeder>>()\n private nameIndex = new Map<string, Constructor<Seeder>>()\n\n constructor(@inject(DI_TOKENS.Application) private app: Application) { }\n\n register(SeederClass: Constructor<Seeder>): void {\n const existing = this.nameIndex.get(SeederClass.name)\n if (existing && existing !== SeederClass) {\n throw new SeederError(`Seeder name collision: \"${SeederClass.name}\" is already registered`)\n }\n this.seeders.add(SeederClass)\n this.nameIndex.set(SeederClass.name, SeederClass)\n }\n\n async run(SeederClass: Constructor<Seeder>, options?: { container?: Container }): Promise<void> {\n if (!this.seeders.has(SeederClass)) {\n throw new SeederError(`Seeder \"${SeederClass.name}\" is not registered`)\n }\n\n const execute = async (container: Container) => {\n const seeder = container.resolve<Seeder>(SeederClass)\n seeder[SEEDER_INTERNALS] = {\n run: (cls) => this.run(cls, { container }),\n container,\n }\n await seeder.run()\n }\n\n if (options?.container) {\n await execute(options.container)\n } else {\n const mockContext = this.app.createMockRouterContext('en')\n await this.app.container.runInRequestScope(mockContext, execute)\n }\n }\n\n async runAll(options?: { container?: Container }): Promise<void> {\n for (const SeederClass of this.seeders) {\n await this.run(SeederClass, options)\n }\n }\n\n find(name: string): Constructor<Seeder> | undefined {\n return this.nameIndex.get(name)\n }\n\n has(SeederClass: Constructor<Seeder>): boolean {\n return this.seeders.has(SeederClass)\n }\n\n list(): { className: string }[] {\n return [...this.seeders].map(cls => ({ className: cls.name }))\n }\n}\n"],"mappings":";;;;;;AAEA,IAAa,cAAb,cAAiC,iBAAiB,CAAC;;;ACMnD,MAAa,gBAAgB,EAC3B,gBAAgB,OAAO,IAAI,0BAA0B,EACvD;AAGO,IAAA,iBAAA,MAAM,eAAe;CAIyB;CAHnD,0BAAkB,IAAI,IAAyB;CAC/C,4BAAoB,IAAI,IAAiC;CAEzD,YAAY,KAAyD;EAAlB,KAAA,MAAA;CAAoB;CAEvE,SAAS,aAAwC;EAC/C,MAAM,WAAW,KAAK,UAAU,IAAI,YAAY,IAAI;EACpD,IAAI,YAAY,aAAa,aAC3B,MAAM,IAAI,YAAY,2BAA2B,YAAY,KAAK,wBAAwB;EAE5F,KAAK,QAAQ,IAAI,WAAW;EAC5B,KAAK,UAAU,IAAI,YAAY,MAAM,WAAW;CAClD;CAEA,MAAM,IAAI,aAAkC,SAAoD;EAC9F,IAAI,CAAC,KAAK,QAAQ,IAAI,WAAW,GAC/B,MAAM,IAAI,YAAY,WAAW,YAAY,KAAK,oBAAoB;EAGxE,MAAM,UAAU,OAAO,cAAyB;GAC9C,MAAM,SAAS,UAAU,QAAgB,WAAW;GACpD,OAAO,oBAAoB;IACzB,MAAM,QAAQ,KAAK,IAAI,KAAK,EAAE,UAAU,CAAC;IACzC;GACF;GACA,MAAM,OAAO,IAAI;EACnB;EAEA,IAAI,SAAS,WACX,MAAM,QAAQ,QAAQ,SAAS;OAC1B;GACL,MAAM,cAAc,KAAK,IAAI,wBAAwB,IAAI;GACzD,MAAM,KAAK,IAAI,UAAU,kBAAkB,aAAa,OAAO;EACjE;CACF;CAEA,MAAM,OAAO,SAAoD;EAC/D,KAAK,MAAM,eAAe,KAAK,SAC7B,MAAM,KAAK,IAAI,aAAa,OAAO;CAEvC;CAEA,KAAK,MAA+C;EAClD,OAAO,KAAK,UAAU,IAAI,IAAI;CAChC;CAEA,IAAI,aAA2C;EAC7C,OAAO,KAAK,QAAQ,IAAI,WAAW;CACrC;CAEA,OAAgC;EAC9B,OAAO,CAAC,GAAG,KAAK,OAAO,EAAE,KAAI,SAAQ,EAAE,WAAW,IAAI,KAAK,EAAE;CAC/D;AACF;6BAvDC,UAAU,cAAc,cAAc,GAAA,gBAAA,GAKxB,OAAO,UAAU,WAAW,CAAA,CAAA,GAAA,cAAA"}
@@ -0,0 +1,15 @@
1
+ import { t as __exportAll } from "./chunk-BBjsoOtd.mjs";
2
+ import { t as __decorate } from "./decorate-CuAoSZvs.mjs";
3
+ import { n as Module } from "./module.decorator-CYHY6pG5.mjs";
4
+ import { n as SeederRegistry, t as SEEDER_TOKENS } from "./seeder-registry-CyUmKsJq.mjs";
5
+ //#region src/seeder/seeder.module.ts
6
+ var seeder_module_exports = /* @__PURE__ */ __exportAll({ SeederModule: () => SeederModule });
7
+ let SeederModule = class SeederModule {};
8
+ SeederModule = __decorate([Module({ providers: [{
9
+ provide: SEEDER_TOKENS.SeederRegistry,
10
+ useClass: SeederRegistry
11
+ }] })], SeederModule);
12
+ //#endregion
13
+ export { seeder_module_exports as n, SeederModule as t };
14
+
15
+ //# sourceMappingURL=seeder.module-CYYwk3Qk.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeder.module-CYYwk3Qk.mjs","names":[],"sources":["../src/seeder/seeder.module.ts"],"sourcesContent":["import { Module } from '../module/module.decorator'\nimport { SEEDER_TOKENS, SeederRegistry } from './seeder-registry'\n\n/**\n * Registers the seeder registry (`SEEDER_TOKENS.SeederRegistry`).\n *\n * Eager: resolved synchronously at bootstrap (`registerSeeders`) and by the\n * test harness (`@stratal/testing`), so it cannot be lazily loaded.\n * {@link SeederRegistry} injects the `Application` via `DI_TOKENS.Application`.\n */\n@Module({\n providers: [\n { provide: SEEDER_TOKENS.SeederRegistry, useClass: SeederRegistry },\n ],\n})\nexport class SeederModule { }\n"],"mappings":";;;;;;AAeO,IAAA,eAAA,MAAM,aAAa,CAAE;2BAL3B,OAAO,EACN,WAAW,CACT;CAAE,SAAS,cAAc;CAAgB,UAAU;AAAe,CACpE,EACF,CAAC,CAAA,GAAA,YAAA"}
@@ -71,4 +71,4 @@ async function verifySignedUrl(url, secret) {
71
71
  //#endregion
72
72
  export { verifySignedUrl as n, signUrl as t };
73
73
 
74
- //# sourceMappingURL=signed-url-BQPbv2In.mjs.map
74
+ //# sourceMappingURL=signed-url-DIU0sK_6.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"signed-url-BQPbv2In.mjs","names":[],"sources":["../src/router/signed-url.ts"],"sourcesContent":["/**\n * Signed URL utilities using HMAC-SHA256 via Web Crypto API.\n *\n * Follows the Cloudflare Workers signing pattern:\n * https://developers.cloudflare.com/workers/examples/signing-requests/\n *\n * Uses `crypto.subtle.verify()` for timing-attack-safe comparison.\n */\n\n/**\n * Options for signing a URL.\n */\nexport interface SignedUrlOptions {\n /** Time-to-live in seconds. URL expires after this duration. */\n expiresIn?: number\n}\n\n/**\n * Import a signing key for HMAC-SHA256.\n */\nasync function importKey(secret: string): Promise<CryptoKey> {\n const encoder = new TextEncoder()\n return crypto.subtle.importKey(\n 'raw',\n encoder.encode(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign', 'verify']\n )\n}\n\n/**\n * Encode an ArrayBuffer as base64url (URL-safe base64).\n */\nfunction toBase64Url(buffer: ArrayBuffer): string {\n const bytes = new Uint8Array(buffer)\n let binary = ''\n for (const byte of bytes) {\n binary += String.fromCharCode(byte)\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '')\n}\n\n/**\n * Sign a URL with HMAC-SHA256.\n *\n * Appends `signature` and optionally `expires` query parameters.\n * The signature covers the pathname + search (excluding the signature params themselves).\n *\n * @param url - Full URL or path to sign\n * @param secret - HMAC secret key (e.g., from env.APP_SECRET)\n * @param options - Optional expiration\n * @returns URL string with `signature` (and `expires`) query params appended\n */\nexport async function signUrl(url: string, secret: string, options?: SignedUrlOptions): Promise<string> {\n const parsedUrl = new URL(url, 'https://placeholder.local')\n const key = await importKey(secret)\n\n // Add expiry if specified\n if (options?.expiresIn) {\n const expires = Math.floor(Date.now() / 1000) + options.expiresIn\n parsedUrl.searchParams.set('expires', String(expires))\n }\n\n // Sign: pathname + sorted search params (without signature)\n const dataToSign = `${parsedUrl.pathname}?${parsedUrl.searchParams.toString()}`\n const encoder = new TextEncoder()\n const signatureBuffer = await crypto.subtle.sign('HMAC', key, encoder.encode(dataToSign))\n const signature = toBase64Url(signatureBuffer)\n\n parsedUrl.searchParams.set('signature', signature)\n // Return just the path + query for relative URLs, full URL for absolute\n return url.startsWith('http') ? parsedUrl.toString() : `${parsedUrl.pathname}?${parsedUrl.searchParams.toString()}`\n}\n\n/**\n * Verify a signed URL using `crypto.subtle.verify()` (timing-attack-safe).\n *\n * @param url - Full URL or path with signature query param\n * @param secret - HMAC secret key (same key used for signing)\n * @returns true if signature is valid and not expired\n */\nexport async function verifySignedUrl(url: string, secret: string): Promise<boolean> {\n const parsedUrl = new URL(url, 'https://placeholder.local')\n const signature = parsedUrl.searchParams.get('signature')\n if (!signature) return false\n\n // Check expiry\n const expires = parsedUrl.searchParams.get('expires')\n if (expires) {\n const expiryTime = parseInt(expires, 10)\n if (isNaN(expiryTime) || Math.floor(Date.now() / 1000) > expiryTime) {\n return false\n }\n }\n\n // Reconstruct the data that was signed (without signature param)\n parsedUrl.searchParams.delete('signature')\n const dataToVerify = `${parsedUrl.pathname}?${parsedUrl.searchParams.toString()}`\n\n // Decode base64url signature\n const base64 = signature.replace(/-/g, '+').replace(/_/g, '/')\n const binaryStr = atob(base64)\n const signatureBytes = new Uint8Array(binaryStr.length)\n for (let i = 0; i < binaryStr.length; i++) {\n signatureBytes[i] = binaryStr.charCodeAt(i)\n }\n\n const key = await importKey(secret)\n const encoder = new TextEncoder()\n\n // Use crypto.subtle.verify() for timing-attack-safe comparison\n return crypto.subtle.verify('HMAC', key, signatureBytes, encoder.encode(dataToVerify))\n}\n"],"mappings":";;;;AAoBA,eAAe,UAAU,QAAoC;CAC3D,MAAM,UAAU,IAAI,aAAa;CACjC,OAAO,OAAO,OAAO,UACnB,OACA,QAAQ,OAAO,OAAO,EACtB;EAAE,MAAM;EAAQ,MAAM;EAAW,EACjC,OACA,CAAC,QAAQ,SAAS,CACnB;;;;;AAMH,SAAS,YAAY,QAA6B;CAChD,MAAM,QAAQ,IAAI,WAAW,OAAO;CACpC,IAAI,SAAS;CACb,KAAK,MAAM,QAAQ,OACjB,UAAU,OAAO,aAAa,KAAK;CAErC,OAAO,KAAK,OAAO,CAAC,QAAQ,OAAO,IAAI,CAAC,QAAQ,OAAO,IAAI,CAAC,QAAQ,OAAO,GAAG;;;;;;;;;;;;;AAchF,eAAsB,QAAQ,KAAa,QAAgB,SAA6C;CACtG,MAAM,YAAY,IAAI,IAAI,KAAK,4BAA4B;CAC3D,MAAM,MAAM,MAAM,UAAU,OAAO;CAGnC,IAAI,SAAS,WAAW;EACtB,MAAM,UAAU,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK,GAAG,QAAQ;EACxD,UAAU,aAAa,IAAI,WAAW,OAAO,QAAQ,CAAC;;CAIxD,MAAM,aAAa,GAAG,UAAU,SAAS,GAAG,UAAU,aAAa,UAAU;CAC7E,MAAM,UAAU,IAAI,aAAa;CAEjC,MAAM,YAAY,YAAY,MADA,OAAO,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAO,WAAW,CAAC,CAC3C;CAE9C,UAAU,aAAa,IAAI,aAAa,UAAU;CAElD,OAAO,IAAI,WAAW,OAAO,GAAG,UAAU,UAAU,GAAG,GAAG,UAAU,SAAS,GAAG,UAAU,aAAa,UAAU;;;;;;;;;AAUnH,eAAsB,gBAAgB,KAAa,QAAkC;CACnF,MAAM,YAAY,IAAI,IAAI,KAAK,4BAA4B;CAC3D,MAAM,YAAY,UAAU,aAAa,IAAI,YAAY;CACzD,IAAI,CAAC,WAAW,OAAO;CAGvB,MAAM,UAAU,UAAU,aAAa,IAAI,UAAU;CACrD,IAAI,SAAS;EACX,MAAM,aAAa,SAAS,SAAS,GAAG;EACxC,IAAI,MAAM,WAAW,IAAI,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK,GAAG,YACvD,OAAO;;CAKX,UAAU,aAAa,OAAO,YAAY;CAC1C,MAAM,eAAe,GAAG,UAAU,SAAS,GAAG,UAAU,aAAa,UAAU;CAG/E,MAAM,SAAS,UAAU,QAAQ,MAAM,IAAI,CAAC,QAAQ,MAAM,IAAI;CAC9D,MAAM,YAAY,KAAK,OAAO;CAC9B,MAAM,iBAAiB,IAAI,WAAW,UAAU,OAAO;CACvD,KAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KACpC,eAAe,KAAK,UAAU,WAAW,EAAE;CAG7C,MAAM,MAAM,MAAM,UAAU,OAAO;CACnC,MAAM,UAAU,IAAI,aAAa;CAGjC,OAAO,OAAO,OAAO,OAAO,QAAQ,KAAK,gBAAgB,QAAQ,OAAO,aAAa,CAAC"}
1
+ {"version":3,"file":"signed-url-DIU0sK_6.mjs","names":[],"sources":["../src/router/signed-url.ts"],"sourcesContent":["/**\n * Signed URL utilities using HMAC-SHA256 via Web Crypto API.\n *\n * Follows the Cloudflare Workers signing pattern:\n * https://developers.cloudflare.com/workers/examples/signing-requests/\n *\n * Uses `crypto.subtle.verify()` for timing-attack-safe comparison.\n */\n\n/**\n * Options for signing a URL.\n */\nexport interface SignedUrlOptions {\n /** Time-to-live in seconds. URL expires after this duration. */\n expiresIn?: number\n}\n\n/**\n * Import a signing key for HMAC-SHA256.\n */\nasync function importKey(secret: string): Promise<CryptoKey> {\n const encoder = new TextEncoder()\n return crypto.subtle.importKey(\n 'raw',\n encoder.encode(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign', 'verify']\n )\n}\n\n/**\n * Encode an ArrayBuffer as base64url (URL-safe base64).\n */\nfunction toBase64Url(buffer: ArrayBuffer): string {\n const bytes = new Uint8Array(buffer)\n let binary = ''\n for (const byte of bytes) {\n binary += String.fromCharCode(byte)\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '')\n}\n\n/**\n * Sign a URL with HMAC-SHA256.\n *\n * Appends `signature` and optionally `expires` query parameters.\n * The signature covers the pathname + search (excluding the signature params themselves).\n *\n * @param url - Full URL or path to sign\n * @param secret - HMAC secret key (e.g., from env.APP_SECRET)\n * @param options - Optional expiration\n * @returns URL string with `signature` (and `expires`) query params appended\n */\nexport async function signUrl(url: string, secret: string, options?: SignedUrlOptions): Promise<string> {\n const parsedUrl = new URL(url, 'https://placeholder.local')\n const key = await importKey(secret)\n\n // Add expiry if specified\n if (options?.expiresIn) {\n const expires = Math.floor(Date.now() / 1000) + options.expiresIn\n parsedUrl.searchParams.set('expires', String(expires))\n }\n\n // Sign: pathname + sorted search params (without signature)\n const dataToSign = `${parsedUrl.pathname}?${parsedUrl.searchParams.toString()}`\n const encoder = new TextEncoder()\n const signatureBuffer = await crypto.subtle.sign('HMAC', key, encoder.encode(dataToSign))\n const signature = toBase64Url(signatureBuffer)\n\n parsedUrl.searchParams.set('signature', signature)\n // Return just the path + query for relative URLs, full URL for absolute\n return url.startsWith('http') ? parsedUrl.toString() : `${parsedUrl.pathname}?${parsedUrl.searchParams.toString()}`\n}\n\n/**\n * Verify a signed URL using `crypto.subtle.verify()` (timing-attack-safe).\n *\n * @param url - Full URL or path with signature query param\n * @param secret - HMAC secret key (same key used for signing)\n * @returns true if signature is valid and not expired\n */\nexport async function verifySignedUrl(url: string, secret: string): Promise<boolean> {\n const parsedUrl = new URL(url, 'https://placeholder.local')\n const signature = parsedUrl.searchParams.get('signature')\n if (!signature) return false\n\n // Check expiry\n const expires = parsedUrl.searchParams.get('expires')\n if (expires) {\n const expiryTime = parseInt(expires, 10)\n if (isNaN(expiryTime) || Math.floor(Date.now() / 1000) > expiryTime) {\n return false\n }\n }\n\n // Reconstruct the data that was signed (without signature param)\n parsedUrl.searchParams.delete('signature')\n const dataToVerify = `${parsedUrl.pathname}?${parsedUrl.searchParams.toString()}`\n\n // Decode base64url signature\n const base64 = signature.replace(/-/g, '+').replace(/_/g, '/')\n const binaryStr = atob(base64)\n const signatureBytes = new Uint8Array(binaryStr.length)\n for (let i = 0; i < binaryStr.length; i++) {\n signatureBytes[i] = binaryStr.charCodeAt(i)\n }\n\n const key = await importKey(secret)\n const encoder = new TextEncoder()\n\n // Use crypto.subtle.verify() for timing-attack-safe comparison\n return crypto.subtle.verify('HMAC', key, signatureBytes, encoder.encode(dataToVerify))\n}\n"],"mappings":";;;;AAoBA,eAAe,UAAU,QAAoC;CAC3D,MAAM,UAAU,IAAI,YAAY;CAChC,OAAO,OAAO,OAAO,UACnB,OACA,QAAQ,OAAO,MAAM,GACrB;EAAE,MAAM;EAAQ,MAAM;CAAU,GAChC,OACA,CAAC,QAAQ,QAAQ,CACnB;AACF;;;;AAKA,SAAS,YAAY,QAA6B;CAChD,MAAM,QAAQ,IAAI,WAAW,MAAM;CACnC,IAAI,SAAS;CACb,KAAK,MAAM,QAAQ,OACjB,UAAU,OAAO,aAAa,IAAI;CAEpC,OAAO,KAAK,MAAM,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE;AAC/E;;;;;;;;;;;;AAaA,eAAsB,QAAQ,KAAa,QAAgB,SAA6C;CACtG,MAAM,YAAY,IAAI,IAAI,KAAK,2BAA2B;CAC1D,MAAM,MAAM,MAAM,UAAU,MAAM;CAGlC,IAAI,SAAS,WAAW;EACtB,MAAM,UAAU,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,IAAI,QAAQ;EACxD,UAAU,aAAa,IAAI,WAAW,OAAO,OAAO,CAAC;CACvD;CAGA,MAAM,aAAa,GAAG,UAAU,SAAS,GAAG,UAAU,aAAa,SAAS;CAC5E,MAAM,UAAU,IAAI,YAAY;CAEhC,MAAM,YAAY,YAAY,MADA,OAAO,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAO,UAAU,CAAC,CAC3C;CAE7C,UAAU,aAAa,IAAI,aAAa,SAAS;CAEjD,OAAO,IAAI,WAAW,MAAM,IAAI,UAAU,SAAS,IAAI,GAAG,UAAU,SAAS,GAAG,UAAU,aAAa,SAAS;AAClH;;;;;;;;AASA,eAAsB,gBAAgB,KAAa,QAAkC;CACnF,MAAM,YAAY,IAAI,IAAI,KAAK,2BAA2B;CAC1D,MAAM,YAAY,UAAU,aAAa,IAAI,WAAW;CACxD,IAAI,CAAC,WAAW,OAAO;CAGvB,MAAM,UAAU,UAAU,aAAa,IAAI,SAAS;CACpD,IAAI,SAAS;EACX,MAAM,aAAa,SAAS,SAAS,EAAE;EACvC,IAAI,MAAM,UAAU,KAAK,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,IAAI,YACvD,OAAO;CAEX;CAGA,UAAU,aAAa,OAAO,WAAW;CACzC,MAAM,eAAe,GAAG,UAAU,SAAS,GAAG,UAAU,aAAa,SAAS;CAG9E,MAAM,SAAS,UAAU,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;CAC7D,MAAM,YAAY,KAAK,MAAM;CAC7B,MAAM,iBAAiB,IAAI,WAAW,UAAU,MAAM;CACtD,KAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KACpC,eAAe,KAAK,UAAU,WAAW,CAAC;CAG5C,MAAM,MAAM,MAAM,UAAU,MAAM;CAClC,MAAM,UAAU,IAAI,YAAY;CAGhC,OAAO,OAAO,OAAO,OAAO,QAAQ,KAAK,gBAAgB,QAAQ,OAAO,YAAY,CAAC;AACvF"}
@@ -1,6 +1,6 @@
1
- import { V as RouterContext, d as ApplicationError, gn as AsyncModuleOptions, vn as DynamicModule } from "../index-ByOyTmqf.mjs";
2
- import { t as StratalEnv } from "../env-D1rcZ8_r.mjs";
3
- import { _ as StorageEntry, a as uploadResultSchema, c as getPresignedUrlInputSchema, d as fileExistsInputSchema, f as DownloadResult, g as StorageConfig, h as PresignedUrlConfig, i as UploadResult, l as presignedUrlResultSchema, m as deleteFileInputSchema, n as StreamingBlobPayloadInputTypes, o as GetPresignedUrlInput, p as DeleteFileInput, r as UploadOptions, s as PresignedUrlResult, t as IStorageProvider, u as FileExistsInput, v as StorageRouteConfig } from "../storage-provider.interface-Bd6vA4ak.mjs";
1
+ import { Dn as AsyncModuleOptions, Dr as ApplicationError, c as HttpException, kn as DynamicModule, rt as RouterContext } from "../index-B_JoEl3V.mjs";
2
+ import { t as StratalEnv } from "../env-ug22bJj7.mjs";
3
+ import { _ as StorageEntry, a as uploadResultSchema, c as getPresignedUrlInputSchema, d as fileExistsInputSchema, f as DownloadResult, g as StorageConfig, h as PresignedUrlConfig, i as UploadResult, l as presignedUrlResultSchema, m as deleteFileInputSchema, n as StreamingBlobPayloadInputTypes, o as GetPresignedUrlInput, p as DeleteFileInput, r as UploadOptions, s as PresignedUrlResult, t as IStorageProvider, u as FileExistsInput, v as StorageRouteConfig } from "../storage-provider.interface-ClUwxz4S.mjs";
4
4
 
5
5
  //#region src/storage/storage.module.d.ts
6
6
  /**
@@ -257,50 +257,26 @@ declare class StorageController {
257
257
  destroy(ctx: RouterContext): Promise<Response>;
258
258
  }
259
259
  //#endregion
260
- //#region src/storage/errors/disk-not-configured.error.d.ts
261
- declare class DiskNotConfiguredError extends ApplicationError {
262
- constructor(disk: string);
263
- }
264
- //#endregion
265
260
  //#region src/storage/errors/file-not-found.error.d.ts
266
- declare class FileNotFoundError extends ApplicationError {
267
- constructor(path: string);
261
+ declare class FileNotFoundError extends HttpException {
262
+ constructor(path?: string);
268
263
  }
269
264
  //#endregion
270
265
  //#region src/storage/errors/file-too-large.error.d.ts
271
- declare class FileTooLargeError extends ApplicationError {
272
- constructor(size: number, maxSize: number);
273
- }
274
- //#endregion
275
- //#region src/storage/errors/invalid-disk.error.d.ts
276
- declare class InvalidDiskError extends ApplicationError {
277
- constructor(disk: string);
266
+ declare class FileTooLargeError extends HttpException {
267
+ readonly size?: number | undefined;
268
+ readonly maxSize?: number | undefined;
269
+ constructor(size?: number | undefined, maxSize?: number | undefined);
278
270
  }
279
271
  //#endregion
280
272
  //#region src/storage/errors/invalid-file-type.error.d.ts
281
- declare class InvalidFileTypeError extends ApplicationError {
282
- constructor(mimeType: string);
283
- }
284
- //#endregion
285
- //#region src/storage/errors/presigned-url-invalid-expiry.error.d.ts
286
- declare class PresignedUrlInvalidExpiryError extends ApplicationError {
287
- constructor(expiresIn: number, min: number, max: number);
273
+ declare class InvalidFileTypeError extends HttpException {
274
+ readonly mimeType?: string | undefined;
275
+ constructor(mimeType?: string | undefined);
288
276
  }
289
277
  //#endregion
290
- //#region src/storage/errors/r2-binding-not-found.error.d.ts
291
- declare class R2BindingNotFoundError extends ApplicationError {
292
- constructor(binding: string);
293
- }
294
- //#endregion
295
- //#region src/storage/errors/r2-presigned-url-secret-missing.error.d.ts
296
- declare class R2PresignedUrlSecretMissingError extends ApplicationError {
297
- constructor();
298
- }
299
- //#endregion
300
- //#region src/storage/errors/storage-response-body-missing.error.d.ts
301
- declare class StorageResponseBodyMissingError extends ApplicationError {
302
- constructor(path: string);
303
- }
278
+ //#region src/storage/storage.error.d.ts
279
+ declare class StorageError extends ApplicationError {}
304
280
  //#endregion
305
- export { DeleteFileInput, DiskNotConfiguredError, DownloadResult, FileExistsInput, FileNotFoundError, FileTooLargeError, GetPresignedUrlInput, type IStorageProvider, InvalidDiskError, InvalidFileTypeError, type PresignedUrlConfig, PresignedUrlInvalidExpiryError, PresignedUrlResult, R2BindingNotFoundError, R2PresignedUrlSecretMissingError, STORAGE_TOKENS, type StorageConfig, StorageController, type StorageEntry, StorageManagerService, StorageModule, StorageResponseBodyMissingError, type StorageRouteConfig, StorageService, type StreamingBlobPayloadInputTypes, UploadOptions, UploadResult, deleteFileInputSchema, fileExistsInputSchema, getPresignedUrlInputSchema, presignedUrlResultSchema, uploadResultSchema };
281
+ export { DeleteFileInput, DownloadResult, FileExistsInput, FileNotFoundError, FileTooLargeError, GetPresignedUrlInput, type IStorageProvider, InvalidFileTypeError, type PresignedUrlConfig, PresignedUrlResult, STORAGE_TOKENS, type StorageConfig, StorageController, type StorageEntry, StorageError, StorageManagerService, StorageModule, type StorageRouteConfig, StorageService, type StreamingBlobPayloadInputTypes, UploadOptions, UploadResult, deleteFileInputSchema, fileExistsInputSchema, getPresignedUrlInputSchema, presignedUrlResultSchema, uploadResultSchema };
306
282
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/storage/storage.module.ts","../../src/storage/storage.tokens.ts","../../src/storage/services/storage-manager.service.ts","../../src/storage/services/storage.service.ts","../../src/storage/controllers/storage.controller.ts","../../src/storage/errors/disk-not-configured.error.ts","../../src/storage/errors/file-not-found.error.ts","../../src/storage/errors/file-too-large.error.ts","../../src/storage/errors/invalid-disk.error.ts","../../src/storage/errors/invalid-file-type.error.ts","../../src/storage/errors/presigned-url-invalid-expiry.error.ts","../../src/storage/errors/r2-binding-not-found.error.ts","../../src/storage/errors/r2-presigned-url-secret-missing.error.ts","../../src/storage/errors/storage-response-body-missing.error.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/storage/storage.module.ts","../../src/storage/storage.tokens.ts","../../src/storage/services/storage-manager.service.ts","../../src/storage/services/storage.service.ts","../../src/storage/controllers/storage.controller.ts","../../src/storage/errors/file-not-found.error.ts","../../src/storage/errors/file-too-large.error.ts","../../src/storage/errors/invalid-file-type.error.ts","../../src/storage/storage.error.ts"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { a as InvalidFileTypeError, c as FileNotFoundError, i as PresignedUrlInvalidExpiryError, l as DiskNotConfiguredError, n as R2PresignedUrlSecretMissingError, o as InvalidDiskError, r as R2BindingNotFoundError, s as FileTooLargeError, t as StorageResponseBodyMissingError } from "../errors-ORxu1-Bb.mjs";
2
- import { a as deleteFileInputSchema, c as StorageService, i as fileExistsInputSchema, l as StorageManagerService, n as getPresignedUrlInputSchema, o as StorageController, r as presignedUrlResultSchema, s as StorageModule, t as uploadResultSchema, u as STORAGE_TOKENS } from "../storage-D8CBP72Z.mjs";
3
- export { DiskNotConfiguredError, FileNotFoundError, FileTooLargeError, InvalidDiskError, InvalidFileTypeError, PresignedUrlInvalidExpiryError, R2BindingNotFoundError, R2PresignedUrlSecretMissingError, STORAGE_TOKENS, StorageController, StorageManagerService, StorageModule, StorageResponseBodyMissingError, StorageService, deleteFileInputSchema, fileExistsInputSchema, getPresignedUrlInputSchema, presignedUrlResultSchema, uploadResultSchema };
1
+ import { t as StorageError } from "../storage.error-Dnib4VHc.mjs";
2
+ import { a as presignedUrlResultSchema, c as StorageController, d as StorageService, f as StorageManagerService, i as getPresignedUrlInputSchema, l as FileNotFoundError, n as FileTooLargeError, o as fileExistsInputSchema, p as STORAGE_TOKENS, r as uploadResultSchema, s as deleteFileInputSchema, t as InvalidFileTypeError, u as StorageModule } from "../storage-MDZypIE9.mjs";
3
+ export { FileNotFoundError, FileTooLargeError, InvalidFileTypeError, STORAGE_TOKENS, StorageController, StorageError, StorageManagerService, StorageModule, StorageService, deleteFileInputSchema, fileExistsInputSchema, getPresignedUrlInputSchema, presignedUrlResultSchema, uploadResultSchema };
@@ -1,5 +1,5 @@
1
- import { t as StratalEnv } from "../../env-D1rcZ8_r.mjs";
2
- import { _ as StorageEntry, f as DownloadResult, i as UploadResult, n as StreamingBlobPayloadInputTypes, r as UploadOptions, s as PresignedUrlResult, t as IStorageProvider, v as StorageRouteConfig } from "../../storage-provider.interface-Bd6vA4ak.mjs";
1
+ import { t as StratalEnv } from "../../env-ug22bJj7.mjs";
2
+ import { _ as StorageEntry, f as DownloadResult, i as UploadResult, n as StreamingBlobPayloadInputTypes, r as UploadOptions, s as PresignedUrlResult, t as IStorageProvider, v as StorageRouteConfig } from "../../storage-provider.interface-ClUwxz4S.mjs";
3
3
 
4
4
  //#region src/storage/providers/multipart-provider.interface.d.ts
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/storage/providers/multipart-provider.interface.ts","../../../src/storage/providers/r2-storage.provider.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/storage/providers/multipart-provider.interface.ts","../../../src/storage/providers/r2-storage.provider.ts"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { t as R2StorageProvider } from "../../r2-storage.provider-DuonKeYm.mjs";
1
+ import { t as R2StorageProvider } from "../../r2-storage.provider-DCxQt9dD.mjs";
2
2
  export { R2StorageProvider };
@@ -1,11 +1,13 @@
1
- import { A as Scope } from "./errors-COW9-Mar.mjs";
2
- import { a as __decorate, f as DI_TOKENS, o as __decorateParam, p as Transient, s as __decorateMetadata } from "./logger-DlV7NtvD.mjs";
3
- import { k as Module } from "./module-BzLg57FK.mjs";
4
- import { i as z, s as withI18n } from "./validation-DtJwAv7O.mjs";
5
- import { t as Controller } from "./controller.decorator-B9vwn0zK.mjs";
6
- import { n as Delete, o as Put, r as Get } from "./http-method.decorator-BrgHMdLQ.mjs";
7
- import { c as FileNotFoundError, i as PresignedUrlInvalidExpiryError, l as DiskNotConfiguredError, o as InvalidDiskError, r as R2BindingNotFoundError } from "./errors-ORxu1-Bb.mjs";
8
- import { inject } from "tsyringe";
1
+ import { d as inject, o as Request, r as DI_TOKENS, s as Singleton } from "./di-DseMn-z9.mjs";
2
+ import { n as __decorateParam, t as __decorate } from "./decorate-CuAoSZvs.mjs";
3
+ import { u as HttpException } from "./errors-mXYxG0XB.mjs";
4
+ import { n as Module } from "./module.decorator-CYHY6pG5.mjs";
5
+ import "./module/index.mjs";
6
+ import { t as StorageError } from "./storage.error-Dnib4VHc.mjs";
7
+ import { r as z } from "./zod-eKqqhZ5_.mjs";
8
+ import { t as withZodI18n } from "./validation-CpOjviyT.mjs";
9
+ import { t as Controller } from "./controller.decorator-C5UVeJS3.mjs";
10
+ import { n as Delete, o as Put, r as Get } from "./http-method.decorator-ByWZb9DO.mjs";
9
11
  //#region src/storage/storage.tokens.ts
10
12
  /**
11
13
  * Dependency injection tokens for the Storage module
@@ -47,7 +49,7 @@ let StorageManagerService = class StorageManagerService {
47
49
  const inflight = this.creationPromises.get(diskName);
48
50
  if (inflight) return inflight;
49
51
  const diskConfig = this.diskConfigs.get(diskName);
50
- if (!diskConfig) throw new DiskNotConfiguredError(diskName);
52
+ if (!diskConfig) throw new StorageError(`Disk "${diskName}" is not configured`);
51
53
  const promise = this.createProvider(diskConfig).then((provider) => {
52
54
  this.providers.set(diskName, provider);
53
55
  this.creationPromises.delete(diskName);
@@ -66,9 +68,9 @@ let StorageManagerService = class StorageManagerService {
66
68
  * @returns Storage provider instance
67
69
  */
68
70
  async createProvider(config) {
69
- const { R2StorageProvider } = await import("./r2-storage.provider-DuonKeYm.mjs").then((n) => n.n);
71
+ const { R2StorageProvider } = await import("./r2-storage.provider-DCxQt9dD.mjs").then((n) => n.n);
70
72
  const bucket = this.env[config.binding];
71
- if (!bucket) throw new R2BindingNotFoundError(config.binding);
73
+ if (!bucket) throw new StorageError(`R2 binding "${config.binding}" was not found in the environment`);
72
74
  return new R2StorageProvider(config, bucket, this.env, this.options.route);
73
75
  }
74
76
  /**
@@ -78,7 +80,7 @@ let StorageManagerService = class StorageManagerService {
78
80
  */
79
81
  getDiskConfig(diskName) {
80
82
  const config = this.diskConfigs.get(diskName);
81
- if (!config) throw new DiskNotConfiguredError(diskName);
83
+ if (!config) throw new StorageError(`Disk "${diskName}" is not configured`);
82
84
  return config;
83
85
  }
84
86
  /**
@@ -98,10 +100,9 @@ let StorageManagerService = class StorageManagerService {
98
100
  }
99
101
  };
100
102
  StorageManagerService = __decorate([
101
- Transient(STORAGE_TOKENS.StorageManager),
103
+ Singleton(STORAGE_TOKENS.StorageManager),
102
104
  __decorateParam(0, inject(STORAGE_TOKENS.Options)),
103
- __decorateParam(1, inject(DI_TOKENS.CloudflareEnv)),
104
- __decorateMetadata("design:paramtypes", [Object, Object])
105
+ __decorateParam(1, inject(DI_TOKENS.CloudflareEnv))
105
106
  ], StorageManagerService);
106
107
  //#endregion
107
108
  //#region src/storage/services/storage.service.ts
@@ -213,7 +214,7 @@ let StorageService = class StorageService {
213
214
  */
214
215
  resolveDisk(disk) {
215
216
  const diskName = disk ?? this.options.defaultStorageDisk;
216
- if (!this.storageManager.hasDisk(diskName)) throw new InvalidDiskError(diskName);
217
+ if (!this.storageManager.hasDisk(diskName)) throw new StorageError(`Disk "${diskName}" is not configured`);
217
218
  return diskName;
218
219
  }
219
220
  /**
@@ -252,7 +253,7 @@ let StorageService = class StorageService {
252
253
  const validatedExpiresIn = expiresIn ?? presignedUrlConfig.defaultExpiry;
253
254
  const minExpiry = 1;
254
255
  const maxExpiry = presignedUrlConfig.maxExpiry;
255
- if (validatedExpiresIn < minExpiry || validatedExpiresIn > maxExpiry) throw new PresignedUrlInvalidExpiryError(validatedExpiresIn, minExpiry, maxExpiry);
256
+ if (validatedExpiresIn < minExpiry || validatedExpiresIn > maxExpiry) throw new StorageError(`Presigned URL expiry ${validatedExpiresIn}s is out of range (${minExpiry}–${maxExpiry}s)`);
256
257
  return validatedExpiresIn;
257
258
  }
258
259
  /**
@@ -285,10 +286,9 @@ let StorageService = class StorageService {
285
286
  }
286
287
  };
287
288
  StorageService = __decorate([
288
- Transient(STORAGE_TOKENS.StorageService),
289
+ Request(STORAGE_TOKENS.StorageService),
289
290
  __decorateParam(0, inject(STORAGE_TOKENS.StorageManager)),
290
- __decorateParam(1, inject(STORAGE_TOKENS.Options)),
291
- __decorateMetadata("design:paramtypes", [Object, Object])
291
+ __decorateParam(1, inject(STORAGE_TOKENS.Options))
292
292
  ], StorageService);
293
293
  //#endregion
294
294
  //#region src/storage/storage.module.ts
@@ -350,13 +350,19 @@ let StorageModule = _StorageModule = class StorageModule {
350
350
  };
351
351
  StorageModule = _StorageModule = __decorate([Module({ providers: [{
352
352
  provide: STORAGE_TOKENS.StorageManager,
353
- useClass: StorageManagerService,
354
- scope: Scope.Singleton
353
+ useClass: StorageManagerService
355
354
  }, {
356
355
  provide: STORAGE_TOKENS.StorageService,
357
356
  useClass: StorageService
358
357
  }] })], StorageModule);
359
358
  //#endregion
359
+ //#region src/storage/errors/file-not-found.error.ts
360
+ var FileNotFoundError = class extends HttpException {
361
+ constructor(path) {
362
+ super(404, path ? `File not found: "${path}"` : "File not found");
363
+ }
364
+ };
365
+ //#endregion
360
366
  //#region src/storage/controllers/storage.controller.ts
361
367
  const diskParam = z.object({ disk: z.string() });
362
368
  let StorageController = class StorageController {
@@ -398,38 +404,19 @@ let StorageController = class StorageController {
398
404
  return ctx.c.body(null, 204);
399
405
  }
400
406
  };
401
- __decorate([
402
- Get("/:disk/*", {
403
- hideFromDocs: true,
404
- params: diskParam
405
- }),
406
- __decorateMetadata("design:type", Function),
407
- __decorateMetadata("design:paramtypes", [Object]),
408
- __decorateMetadata("design:returntype", Promise)
409
- ], StorageController.prototype, "download", null);
410
- __decorate([
411
- Put("/:disk/*", {
412
- hideFromDocs: true,
413
- params: diskParam
414
- }),
415
- __decorateMetadata("design:type", Function),
416
- __decorateMetadata("design:paramtypes", [Object]),
417
- __decorateMetadata("design:returntype", Promise)
418
- ], StorageController.prototype, "upload", null);
419
- __decorate([
420
- Delete("/:disk/*", {
421
- hideFromDocs: true,
422
- params: diskParam
423
- }),
424
- __decorateMetadata("design:type", Function),
425
- __decorateMetadata("design:paramtypes", [Object]),
426
- __decorateMetadata("design:returntype", Promise)
427
- ], StorageController.prototype, "destroy", null);
428
- StorageController = __decorate([
429
- Controller("/storage", { hideFromDocs: true }),
430
- __decorateParam(0, inject(STORAGE_TOKENS.StorageService)),
431
- __decorateMetadata("design:paramtypes", [Object])
432
- ], StorageController);
407
+ __decorate([Get("/:disk/*", {
408
+ hideFromDocs: true,
409
+ params: diskParam
410
+ })], StorageController.prototype, "download", null);
411
+ __decorate([Put("/:disk/*", {
412
+ hideFromDocs: true,
413
+ params: diskParam
414
+ })], StorageController.prototype, "upload", null);
415
+ __decorate([Delete("/:disk/*", {
416
+ hideFromDocs: true,
417
+ params: diskParam
418
+ })], StorageController.prototype, "destroy", null);
419
+ StorageController = __decorate([Controller("/storage", { hideFromDocs: true }), __decorateParam(0, inject(STORAGE_TOKENS.StorageService))], StorageController);
433
420
  /**
434
421
  * Extract the wildcard path from the Hono context.
435
422
  * Hono stores wildcard params under the key matching the path pattern.
@@ -440,19 +427,19 @@ function extractWildcardPath(ctx) {
440
427
  //#endregion
441
428
  //#region src/storage/contracts/delete-file.input.ts
442
429
  const deleteFileInputSchema = z.object({
443
- path: z.string().min(1, withI18n("zodI18n.errors.custom.filePathRequired")),
430
+ path: z.string().min(1, withZodI18n("zodI18n.errors.custom.filePathRequired")),
444
431
  disk: z.string().optional()
445
432
  });
446
433
  //#endregion
447
434
  //#region src/storage/contracts/file-exists.input.ts
448
435
  const fileExistsInputSchema = z.object({
449
- path: z.string().min(1, withI18n("zodI18n.errors.custom.filePathRequired")),
436
+ path: z.string().min(1, withZodI18n("zodI18n.errors.custom.filePathRequired")),
450
437
  disk: z.string().optional()
451
438
  });
452
439
  //#endregion
453
440
  //#region src/storage/contracts/get-presigned-url.input.ts
454
441
  const getPresignedUrlInputSchema = z.object({
455
- path: z.string().min(1, withI18n("zodI18n.errors.custom.filePathRequired")),
442
+ path: z.string().min(1, withZodI18n("zodI18n.errors.custom.filePathRequired")),
456
443
  method: z.enum([
457
444
  "GET",
458
445
  "PUT",
@@ -484,6 +471,26 @@ const uploadResultSchema = z.object({
484
471
  uploadedAt: z.date()
485
472
  });
486
473
  //#endregion
487
- export { deleteFileInputSchema as a, StorageService as c, fileExistsInputSchema as i, StorageManagerService as l, getPresignedUrlInputSchema as n, StorageController as o, presignedUrlResultSchema as r, StorageModule as s, uploadResultSchema as t, STORAGE_TOKENS as u };
474
+ //#region src/storage/errors/file-too-large.error.ts
475
+ var FileTooLargeError = class extends HttpException {
476
+ size;
477
+ maxSize;
478
+ constructor(size, maxSize) {
479
+ super(413, "File too large");
480
+ this.size = size;
481
+ this.maxSize = maxSize;
482
+ }
483
+ };
484
+ //#endregion
485
+ //#region src/storage/errors/invalid-file-type.error.ts
486
+ var InvalidFileTypeError = class extends HttpException {
487
+ mimeType;
488
+ constructor(mimeType) {
489
+ super(422, "Invalid file type");
490
+ this.mimeType = mimeType;
491
+ }
492
+ };
493
+ //#endregion
494
+ export { presignedUrlResultSchema as a, StorageController as c, StorageService as d, StorageManagerService as f, getPresignedUrlInputSchema as i, FileNotFoundError as l, FileTooLargeError as n, fileExistsInputSchema as o, STORAGE_TOKENS as p, uploadResultSchema as r, deleteFileInputSchema as s, InvalidFileTypeError as t, StorageModule as u };
488
495
 
489
- //# sourceMappingURL=storage-D8CBP72Z.mjs.map
496
+ //# sourceMappingURL=storage-MDZypIE9.mjs.map