stratal 0.0.27 → 0.1.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 (284) hide show
  1. package/CHANGELOG.md +912 -0
  2. package/README.md +96 -14
  3. package/dist/bin/cloudflare-workers-loader.mjs +18 -3
  4. package/dist/bin/cloudflare-workers-loader.mjs.map +1 -1
  5. package/dist/bin/quarry.mjs +73 -12
  6. package/dist/bin/quarry.mjs.map +1 -1
  7. package/dist/cache/index.d.mts +8 -9
  8. package/dist/cache/index.d.mts.map +1 -1
  9. package/dist/cache/index.mjs +56 -17
  10. package/dist/cache/index.mjs.map +1 -1
  11. package/dist/{cache.service-uElmBtdS.d.mts → cache.service-Dg0Hj0gp.d.mts} +27 -12
  12. package/dist/cache.service-Dg0Hj0gp.d.mts.map +1 -0
  13. package/dist/{command-DoBD2Cwl.d.mts → command-BXMccV_9.d.mts} +6 -3
  14. package/dist/command-BXMccV_9.d.mts.map +1 -0
  15. package/dist/{command-BvmUAPPQ.mjs → command-Bb820B6W.mjs} +36 -13
  16. package/dist/command-Bb820B6W.mjs.map +1 -0
  17. package/dist/common.schemas-BigQCwYB.mjs +89 -0
  18. package/dist/common.schemas-BigQCwYB.mjs.map +1 -0
  19. package/dist/config/index.d.mts +15 -15
  20. package/dist/config/index.d.mts.map +1 -1
  21. package/dist/config/index.mjs +4 -6
  22. package/dist/config/index.mjs.map +1 -1
  23. package/dist/{consumer-registry-D3iMTSdy.d.mts → consumer-registry-i9oCdarv.d.mts} +2 -3
  24. package/dist/consumer-registry-i9oCdarv.d.mts.map +1 -0
  25. package/dist/{container-storage-BmOJ4_Na.mjs → container-storage-DfF7SXdV.mjs} +11 -1
  26. package/dist/container-storage-DfF7SXdV.mjs.map +1 -0
  27. package/dist/{controller.decorator-YSTPQntu.mjs → controller.decorator-BB0JcwMg.mjs} +18 -9
  28. package/dist/controller.decorator-BB0JcwMg.mjs.map +1 -0
  29. package/dist/cron/index.d.mts +6 -7
  30. package/dist/cron/index.d.mts.map +1 -1
  31. package/dist/cron/index.mjs +1 -1
  32. package/dist/{cron-job-NesZRk8F.d.mts → cron-job-DAgNw4Bn.d.mts} +1 -2
  33. package/dist/cron-job-DAgNw4Bn.d.mts.map +1 -0
  34. package/dist/{cron.module-C81HTzR7.mjs → cron.module-Dnyl9sFk.mjs} +6 -7
  35. package/dist/{cron.module-C81HTzR7.mjs.map → cron.module-Dnyl9sFk.mjs.map} +1 -1
  36. package/dist/{decorate-CuAoSZvs.mjs → decorate-C79yt3Wt.mjs} +2 -2
  37. package/dist/di/index.d.mts +1 -1
  38. package/dist/di/index.mjs +2 -3
  39. package/dist/{di-D7qmrAir.mjs → di-DQ3xbjgf.mjs} +48 -6
  40. package/dist/di-DQ3xbjgf.mjs.map +1 -0
  41. package/dist/email/index.d.mts +158 -133
  42. package/dist/email/index.d.mts.map +1 -1
  43. package/dist/email/index.mjs +66 -78
  44. package/dist/email/index.mjs.map +1 -1
  45. package/dist/{en-CDZBMcc1.mjs → en-CCL84z4k.mjs} +2 -2
  46. package/dist/{en-CDZBMcc1.mjs.map → en-CCL84z4k.mjs.map} +1 -1
  47. package/dist/env-ug22bJj7.d.mts.map +1 -1
  48. package/dist/errors/index.d.mts +1 -1
  49. package/dist/errors/index.mjs +3 -3
  50. package/dist/{errors-C01O2T-n.mjs → errors-CrOXI_y5.mjs} +6 -8
  51. package/dist/errors-CrOXI_y5.mjs.map +1 -0
  52. package/dist/events/index.d.mts +8 -9
  53. package/dist/events/index.d.mts.map +1 -1
  54. package/dist/events/index.mjs +1 -1
  55. package/dist/{events-BhEQuT1X.mjs → events-GtwGEHyT.mjs} +5 -6
  56. package/dist/events-GtwGEHyT.mjs.map +1 -0
  57. package/dist/{exception-context-D-kvney-.mjs → exception-context-CdnGTQNF.mjs} +13 -7
  58. package/dist/exception-context-CdnGTQNF.mjs.map +1 -0
  59. package/dist/{gateway-context-m7kEzRa2.mjs → gateway-context-Cmc1NRS0.mjs} +7 -7
  60. package/dist/{gateway-context-m7kEzRa2.mjs.map → gateway-context-Cmc1NRS0.mjs.map} +1 -1
  61. package/dist/gateway-mode-0rUaeW3g.mjs +53 -0
  62. package/dist/gateway-mode-0rUaeW3g.mjs.map +1 -0
  63. package/dist/guards/index.d.mts +38 -20
  64. package/dist/guards/index.d.mts.map +1 -1
  65. package/dist/guards/index.mjs +2 -2
  66. package/dist/{guards-DALPXy3_.mjs → guards-DOGly9IF.mjs} +34 -11
  67. package/dist/guards-DOGly9IF.mjs.map +1 -0
  68. package/dist/hono-app-IhdqL0Fk.mjs +399 -0
  69. package/dist/hono-app-IhdqL0Fk.mjs.map +1 -0
  70. package/dist/{http-method.decorator-BljM8BDj.mjs → http-method.decorator-BDi9LTWj.mjs} +9 -8
  71. package/dist/http-method.decorator-BDi9LTWj.mjs.map +1 -0
  72. package/dist/i18n/index.d.mts +26 -137
  73. package/dist/i18n/index.d.mts.map +1 -1
  74. package/dist/i18n/index.mjs +4 -5
  75. package/dist/i18n/index.mjs.map +1 -1
  76. package/dist/i18n/messages/en/index.d.mts +1 -1
  77. package/dist/i18n/messages/en/index.mjs +1 -1
  78. package/dist/i18n/utils/index.d.mts +1 -2
  79. package/dist/i18n/utils/index.d.mts.map +1 -1
  80. package/dist/i18n/validation/index.d.mts +80 -5
  81. package/dist/i18n/validation/index.d.mts.map +1 -0
  82. package/dist/i18n/validation/index.mjs +4 -5
  83. package/dist/{i18n.module-B2DvWUPa.mjs → i18n.module-Bm3xlViA.mjs} +28 -13
  84. package/dist/i18n.module-Bm3xlViA.mjs.map +1 -0
  85. package/dist/index-0ItCjaqw.d.mts.map +1 -1
  86. package/dist/{index-CNuFQSNj.d.mts → index-3HJfhLlE.d.mts} +9 -11
  87. package/dist/index-3HJfhLlE.d.mts.map +1 -0
  88. package/dist/{index-uybm0bhQ.d.mts → index-B2WtEagR.d.mts} +1187 -234
  89. package/dist/index-B2WtEagR.d.mts.map +1 -0
  90. package/dist/index-BUt92sAE.d.mts.map +1 -1
  91. package/dist/index-CAHNCpvr.d.mts +203 -0
  92. package/dist/index-CAHNCpvr.d.mts.map +1 -0
  93. package/dist/index.d.mts +4 -4
  94. package/dist/index.mjs +2 -2
  95. package/dist/{is-command-CEPO9n8c.mjs → is-command-CSVv14wh.mjs} +2 -2
  96. package/dist/{is-command-CEPO9n8c.mjs.map → is-command-CSVv14wh.mjs.map} +1 -1
  97. package/dist/{is-seeder-Gvh_AM71.mjs → is-seeder-gLgXYbqC.mjs} +2 -2
  98. package/dist/is-seeder-gLgXYbqC.mjs.map +1 -0
  99. package/dist/{lazy-module-loader-M6YKudNL.d.mts → lazy-module-loader-C3OHoUnR.d.mts} +4 -5
  100. package/dist/lazy-module-loader-C3OHoUnR.d.mts.map +1 -0
  101. package/dist/limit-BE0HNAF6.mjs +116 -0
  102. package/dist/limit-BE0HNAF6.mjs.map +1 -0
  103. package/dist/locale-path.service-BqzDIrgy.mjs +213 -0
  104. package/dist/locale-path.service-BqzDIrgy.mjs.map +1 -0
  105. package/dist/locale-url-nZrZxqJP.mjs.map +1 -1
  106. package/dist/{locale-url.service-6bgia24_.mjs → locale-url.service-H8PH6GGh.mjs} +15 -5
  107. package/dist/{locale-url.service-6bgia24_.mjs.map → locale-url.service-H8PH6GGh.mjs.map} +1 -1
  108. package/dist/logger/index.mjs +3 -5
  109. package/dist/logger/index.mjs.map +1 -1
  110. package/dist/macroable-cvDTFZ_A.mjs.map +1 -1
  111. package/dist/metadata-Ba8Fxs1F.mjs +48 -0
  112. package/dist/metadata-Ba8Fxs1F.mjs.map +1 -0
  113. package/dist/module/index.d.mts +8 -9
  114. package/dist/module/index.d.mts.map +1 -1
  115. package/dist/module/index.mjs +3 -4
  116. package/dist/module/index.mjs.map +1 -1
  117. package/dist/{module-registry-NxX5O0Qk.mjs → module-registry-lkQPDuQe.mjs} +17 -15
  118. package/dist/module-registry-lkQPDuQe.mjs.map +1 -0
  119. package/dist/{module.decorator-CYHY6pG5.mjs → module.decorator-CYbrOlX9.mjs} +2 -2
  120. package/dist/{module.decorator-CYHY6pG5.mjs.map → module.decorator-CYbrOlX9.mjs.map} +1 -1
  121. package/dist/openapi/index.d.mts +19 -16
  122. package/dist/openapi/index.d.mts.map +1 -1
  123. package/dist/openapi/index.mjs +2 -2
  124. package/dist/{openapi-CMwuCp31.mjs → openapi-DBfBa5Qh.mjs} +41 -65
  125. package/dist/openapi-DBfBa5Qh.mjs.map +1 -0
  126. package/dist/openapi-generator-CCwiu8AU.mjs +134 -0
  127. package/dist/openapi-generator-CCwiu8AU.mjs.map +1 -0
  128. package/dist/{openapi-tools.service-BC5EC3R3.mjs → openapi-tools.service-VKZJlTIX.mjs} +12 -4
  129. package/dist/openapi-tools.service-VKZJlTIX.mjs.map +1 -0
  130. package/dist/openapi.service-Ds-R1tih.d.mts +43 -0
  131. package/dist/openapi.service-Ds-R1tih.d.mts.map +1 -0
  132. package/dist/quarry/index.d.mts +10 -11
  133. package/dist/quarry/index.d.mts.map +1 -1
  134. package/dist/quarry/index.mjs +4 -4
  135. package/dist/quarry/runner.d.mts +19 -20
  136. package/dist/quarry/runner.d.mts.map +1 -1
  137. package/dist/quarry/runner.mjs +16 -13
  138. package/dist/quarry/runner.mjs.map +1 -1
  139. package/dist/{quarry-registry-DRnV-DDa.d.mts → quarry-registry-Ci4k58FZ.d.mts} +3 -4
  140. package/dist/quarry-registry-Ci4k58FZ.d.mts.map +1 -0
  141. package/dist/{quarry.module-CcGxU2dJ.mjs → quarry.module-BssRR8f0.mjs} +20 -37
  142. package/dist/quarry.module-BssRR8f0.mjs.map +1 -0
  143. package/dist/queue/index.d.mts +2 -2
  144. package/dist/queue/index.mjs +3 -3
  145. package/dist/queue/index.mjs.map +1 -1
  146. package/dist/{queue.module-CEs4_kEM.mjs → queue.module-DnAdSbR-.mjs} +40 -41
  147. package/dist/queue.module-DnAdSbR-.mjs.map +1 -0
  148. package/dist/{r2-storage.provider-BoZmR6Ut.mjs → r2-storage.provider-wU_6api4.mjs} +45 -6
  149. package/dist/r2-storage.provider-wU_6api4.mjs.map +1 -0
  150. package/dist/{rate-limit.decorator-Djs4oYDB.mjs → rate-limit.decorator-PYQ9EYqs.mjs} +10 -5
  151. package/dist/{rate-limit.decorator-Djs4oYDB.mjs.map → rate-limit.decorator-PYQ9EYqs.mjs.map} +1 -1
  152. package/dist/rate-limiter/index.d.mts +64 -19
  153. package/dist/rate-limiter/index.d.mts.map +1 -1
  154. package/dist/rate-limiter/index.mjs +67 -83
  155. package/dist/rate-limiter/index.mjs.map +1 -1
  156. package/dist/response-cache/index.d.mts +326 -0
  157. package/dist/response-cache/index.d.mts.map +1 -0
  158. package/dist/response-cache/index.mjs +511 -0
  159. package/dist/response-cache/index.mjs.map +1 -0
  160. package/dist/response-cache.error-B4D0zy9W.mjs +24 -0
  161. package/dist/response-cache.error-B4D0zy9W.mjs.map +1 -0
  162. package/dist/response-headers-BqA57S_X.mjs +158 -0
  163. package/dist/response-headers-BqA57S_X.mjs.map +1 -0
  164. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  165. package/dist/route-cache-binding-CrLh8tB6.mjs +390 -0
  166. package/dist/route-cache-binding-CrLh8tB6.mjs.map +1 -0
  167. package/dist/route-metadata-QQhbed1i.mjs +17 -0
  168. package/dist/route-metadata-QQhbed1i.mjs.map +1 -0
  169. package/dist/{route-name-DGoBOfPg.mjs → route-name-BslSbmMP.mjs} +15 -11
  170. package/dist/route-name-BslSbmMP.mjs.map +1 -0
  171. package/dist/route-registration.service-COKBZTsn.mjs +1265 -0
  172. package/dist/route-registration.service-COKBZTsn.mjs.map +1 -0
  173. package/dist/{route-registry-BvLJisvK.mjs → route-registry-DFz9_-N6.mjs} +6 -6
  174. package/dist/{route-registry-BvLJisvK.mjs.map → route-registry-DFz9_-N6.mjs.map} +1 -1
  175. package/dist/router/index.d.mts +2 -2
  176. package/dist/router/index.mjs +16 -15
  177. package/dist/{router-resolver-sUV_jTrU.mjs → router-resolver-B-dMSMIG.mjs} +7 -3
  178. package/dist/router-resolver-B-dMSMIG.mjs.map +1 -0
  179. package/dist/{router-DwyqEXgf.mjs → router-wlsVkGkM.mjs} +5 -14
  180. package/dist/{router-DwyqEXgf.mjs.map → router-wlsVkGkM.mjs.map} +1 -1
  181. package/dist/seeder/index.d.mts +12 -13
  182. package/dist/seeder/index.d.mts.map +1 -1
  183. package/dist/seeder/index.mjs +4 -4
  184. package/dist/{seeder-BPGY5rUb.mjs → seeder-BrAk7XIj.mjs} +5 -6
  185. package/dist/{seeder-BPGY5rUb.mjs.map → seeder-BrAk7XIj.mjs.map} +1 -1
  186. package/dist/{seeder-registry-DEvCycsT.mjs → seeder-registry-Bo5BgLbC.mjs} +5 -6
  187. package/dist/{seeder-registry-DEvCycsT.mjs.map → seeder-registry-Bo5BgLbC.mjs.map} +1 -1
  188. package/dist/{seeder.module-CIwQbdN4.mjs → seeder.module-DOoVgTsK.mjs} +5 -5
  189. package/dist/{seeder.module-CIwQbdN4.mjs.map → seeder.module-DOoVgTsK.mjs.map} +1 -1
  190. package/dist/signed-url-DIU0sK_6.mjs.map +1 -1
  191. package/dist/storage/index.d.mts +63 -13
  192. package/dist/storage/index.d.mts.map +1 -1
  193. package/dist/storage/index.mjs +2 -2
  194. package/dist/storage/providers/index.d.mts +18 -16
  195. package/dist/storage/providers/index.d.mts.map +1 -1
  196. package/dist/storage/providers/index.mjs +1 -1
  197. package/dist/{storage-C30X81CS.mjs → storage-DBWVYMnn.mjs} +167 -49
  198. package/dist/storage-DBWVYMnn.mjs.map +1 -0
  199. package/dist/storage-provider.interface-CinHpjl1.d.mts +315 -0
  200. package/dist/storage-provider.interface-CinHpjl1.d.mts.map +1 -0
  201. package/dist/storage.error-Ao38Qdjx.mjs +7 -0
  202. package/dist/storage.error-Ao38Qdjx.mjs.map +1 -0
  203. package/dist/{stratal-D5j_I14G.d.mts → stratal-Bs1_E8GQ.d.mts} +13 -3
  204. package/dist/stratal-Bs1_E8GQ.d.mts.map +1 -0
  205. package/dist/{stratal-BL6FKUM_.mjs → stratal-CiwNpWy2.mjs} +56 -23
  206. package/dist/stratal-CiwNpWy2.mjs.map +1 -0
  207. package/dist/{tiered-cache.service-Dv3BhxxE.d.mts → tiered-cache.service-Bz8bbvyb.d.mts} +16 -3
  208. package/dist/tiered-cache.service-Bz8bbvyb.d.mts.map +1 -0
  209. package/dist/trailing-slash-2SctvePW.mjs.map +1 -1
  210. package/dist/types-CmV_9xBD.d.mts.map +1 -1
  211. package/dist/{uri-iwofWJ_T.mjs → uri-BrOq148R.mjs} +13 -9
  212. package/dist/{uri-iwofWJ_T.mjs.map → uri-BrOq148R.mjs.map} +1 -1
  213. package/dist/{usage-generator-DAWYasuP.mjs → usage-generator-BW7EcO-C.mjs} +3 -3
  214. package/dist/{usage-generator-DAWYasuP.mjs.map → usage-generator-BW7EcO-C.mjs.map} +1 -1
  215. package/dist/{zod-eKqqhZ5_.mjs → validation-CZ_B0aXY.mjs} +38 -17
  216. package/dist/validation-CZ_B0aXY.mjs.map +1 -0
  217. package/dist/{validation.context-CRvmrhq7.mjs → validation.context-CdbwQWIr.mjs} +2 -2
  218. package/dist/{validation.context-CRvmrhq7.mjs.map → validation.context-CdbwQWIr.mjs.map} +1 -1
  219. package/dist/{versioning.service-CCa2oYMJ.mjs → versioning.service-DnF_4Lnd.mjs} +5 -5
  220. package/dist/{versioning.service-CCa2oYMJ.mjs.map → versioning.service-DnF_4Lnd.mjs.map} +1 -1
  221. package/dist/websocket/index.d.mts +12 -13
  222. package/dist/websocket/index.d.mts.map +1 -1
  223. package/dist/websocket/index.mjs +1 -1
  224. package/dist/workers/index.d.mts +70 -7
  225. package/dist/workers/index.d.mts.map +1 -1
  226. package/dist/workers/index.mjs +72 -3
  227. package/dist/workers/index.mjs.map +1 -1
  228. package/dist/{zod-wecrEVAs.d.mts → zod-BGisqLs3.d.mts} +9 -16
  229. package/dist/zod-BGisqLs3.d.mts.map +1 -0
  230. package/package.json +33 -25
  231. package/dist/cache.service-uElmBtdS.d.mts.map +0 -1
  232. package/dist/chunk-BBjsoOtd.mjs +0 -27
  233. package/dist/command-BvmUAPPQ.mjs.map +0 -1
  234. package/dist/command-DoBD2Cwl.d.mts.map +0 -1
  235. package/dist/consumer-registry-D3iMTSdy.d.mts.map +0 -1
  236. package/dist/container-storage-BmOJ4_Na.mjs.map +0 -1
  237. package/dist/controller.decorator-YSTPQntu.mjs.map +0 -1
  238. package/dist/cron-job-NesZRk8F.d.mts.map +0 -1
  239. package/dist/di-D7qmrAir.mjs.map +0 -1
  240. package/dist/errors-C01O2T-n.mjs.map +0 -1
  241. package/dist/events-BhEQuT1X.mjs.map +0 -1
  242. package/dist/exception-context-D-kvney-.mjs.map +0 -1
  243. package/dist/guards-DALPXy3_.mjs.map +0 -1
  244. package/dist/hono-app-COAgmutc.mjs +0 -168
  245. package/dist/hono-app-COAgmutc.mjs.map +0 -1
  246. package/dist/http-method.decorator-BljM8BDj.mjs.map +0 -1
  247. package/dist/i18n.module-B2DvWUPa.mjs.map +0 -1
  248. package/dist/index-CNuFQSNj.d.mts.map +0 -1
  249. package/dist/index-DtBNIFuP.d.mts +0 -42
  250. package/dist/index-DtBNIFuP.d.mts.map +0 -1
  251. package/dist/index-HgOLNruQ.d.mts +0 -203
  252. package/dist/index-HgOLNruQ.d.mts.map +0 -1
  253. package/dist/index-uybm0bhQ.d.mts.map +0 -1
  254. package/dist/is-seeder-Gvh_AM71.mjs.map +0 -1
  255. package/dist/lazy-module-loader-M6YKudNL.d.mts.map +0 -1
  256. package/dist/locale-path.service-CH0CaxwH.mjs +0 -165
  257. package/dist/locale-path.service-CH0CaxwH.mjs.map +0 -1
  258. package/dist/metadata-DzzprcID.mjs +0 -39
  259. package/dist/metadata-DzzprcID.mjs.map +0 -1
  260. package/dist/module-registry-NxX5O0Qk.mjs.map +0 -1
  261. package/dist/openapi-CMwuCp31.mjs.map +0 -1
  262. package/dist/openapi-tools.service-BC5EC3R3.mjs.map +0 -1
  263. package/dist/openapi.service-2rvJBCEg.d.mts +0 -50
  264. package/dist/openapi.service-2rvJBCEg.d.mts.map +0 -1
  265. package/dist/quarry-registry-DRnV-DDa.d.mts.map +0 -1
  266. package/dist/quarry.module-CcGxU2dJ.mjs.map +0 -1
  267. package/dist/queue.module-CEs4_kEM.mjs.map +0 -1
  268. package/dist/r2-storage.provider-BoZmR6Ut.mjs.map +0 -1
  269. package/dist/route-name-DGoBOfPg.mjs.map +0 -1
  270. package/dist/route-registration.service-CDPQKpm4.mjs +0 -918
  271. package/dist/route-registration.service-CDPQKpm4.mjs.map +0 -1
  272. package/dist/router-resolver-sUV_jTrU.mjs.map +0 -1
  273. package/dist/storage-C30X81CS.mjs.map +0 -1
  274. package/dist/storage-provider.interface-ClUwxz4S.d.mts +0 -201
  275. package/dist/storage-provider.interface-ClUwxz4S.d.mts.map +0 -1
  276. package/dist/storage.error-BStXPmO4.mjs +0 -8
  277. package/dist/storage.error-BStXPmO4.mjs.map +0 -1
  278. package/dist/stratal-BL6FKUM_.mjs.map +0 -1
  279. package/dist/stratal-D5j_I14G.d.mts.map +0 -1
  280. package/dist/tiered-cache.service-Dv3BhxxE.d.mts.map +0 -1
  281. package/dist/validation-CpOjviyT.mjs +0 -49
  282. package/dist/validation-CpOjviyT.mjs.map +0 -1
  283. package/dist/zod-eKqqhZ5_.mjs.map +0 -1
  284. package/dist/zod-wecrEVAs.d.mts.map +0 -1
@@ -1,8 +1,7 @@
1
- import { p as inject } from "./di-D7qmrAir.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-DEvCycsT.mjs";
5
- import "./seeder.module-CIwQbdN4.mjs";
1
+ import { p as inject } from "./di-DQ3xbjgf.mjs";
2
+ import { n as __decorateParam, t as __decorate } from "./decorate-C79yt3Wt.mjs";
3
+ import { t as Command } from "./command-Bb820B6W.mjs";
4
+ import { t as SEEDER_TOKENS } from "./seeder-registry-Bo5BgLbC.mjs";
6
5
  //#region src/seeder/commands/db-seed-list.command.ts
7
6
  let DbSeedListCommand = class DbSeedListCommand extends Command {
8
7
  seeders;
@@ -78,4 +77,4 @@ DbSeedCommand = __decorate([__decorateParam(0, inject(SEEDER_TOKENS.SeederRegist
78
77
  //#endregion
79
78
  export { DbSeedListCommand as n, DbSeedCommand as t };
80
79
 
81
- //# sourceMappingURL=seeder-BPGY5rUb.mjs.map
80
+ //# sourceMappingURL=seeder-BrAk7XIj.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"seeder-BPGY5rUb.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"}
1
+ {"version":3,"file":"seeder-BrAk7XIj.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,IAAM,oBAAN,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;AAde,oBAAA,WAAA,CAAA,gBAAA,GAAA,OAAO,cAAc,cAAc,CAAA,CAAA,GAAA,iBAAA;;;ACJ3C,IAAM,gBAAN,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;AAxDe,gBAAA,WAAA,CAAA,gBAAA,GAAA,OAAO,cAAc,cAAc,CAAA,CAAA,GAAA,aAAA"}
@@ -1,8 +1,7 @@
1
- import { l as Singleton, p as inject, r as DI_TOKENS } from "./di-D7qmrAir.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-C01O2T-n.mjs";
5
- import { n as SEEDER_INTERNALS } from "./is-seeder-Gvh_AM71.mjs";
1
+ import { l as Singleton, p as inject, r as DI_TOKENS } from "./di-DQ3xbjgf.mjs";
2
+ import { a as ApplicationError } from "./container-storage-DfF7SXdV.mjs";
3
+ import { n as __decorateParam, t as __decorate } from "./decorate-C79yt3Wt.mjs";
4
+ import { n as SEEDER_INTERNALS } from "./is-seeder-gLgXYbqC.mjs";
6
5
  //#region src/seeder/seeder.error.ts
7
6
  var SeederError = class extends ApplicationError {};
8
7
  //#endregion
@@ -54,4 +53,4 @@ SeederRegistry = __decorate([Singleton(SEEDER_TOKENS.SeederRegistry), __decorate
54
53
  //#endregion
55
54
  export { SeederRegistry as n, SeederError as r, SEEDER_TOKENS as t };
56
55
 
57
- //# sourceMappingURL=seeder-registry-DEvCycsT.mjs.map
56
+ //# sourceMappingURL=seeder-registry-Bo5BgLbC.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"seeder-registry-DEvCycsT.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"}
1
+ {"version":3,"file":"seeder-registry-Bo5BgLbC.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,IAAM,iBAAN,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,CAAC,CAAC,KAAI,SAAQ,EAAE,WAAW,IAAI,KAAK,EAAE;CAC/D;AACF;AAvDC,iBAAA,WAAA,CAAA,UAAU,cAAc,cAAc,GAAA,gBAAA,GAKxB,OAAO,UAAU,WAAW,CAAA,CAAA,GAAA,cAAA"}
@@ -1,7 +1,7 @@
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-DEvCycsT.mjs";
1
+ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
+ import { t as __decorate } from "./decorate-C79yt3Wt.mjs";
3
+ import { n as Module } from "./module.decorator-CYbrOlX9.mjs";
4
+ import { n as SeederRegistry, t as SEEDER_TOKENS } from "./seeder-registry-Bo5BgLbC.mjs";
5
5
  //#region src/seeder/seeder.module.ts
6
6
  var seeder_module_exports = /* @__PURE__ */ __exportAll({ SeederModule: () => SeederModule });
7
7
  let SeederModule = class SeederModule {};
@@ -12,4 +12,4 @@ SeederModule = __decorate([Module({ providers: [{
12
12
  //#endregion
13
13
  export { seeder_module_exports as n, SeederModule as t };
14
14
 
15
- //# sourceMappingURL=seeder.module-CIwQbdN4.mjs.map
15
+ //# sourceMappingURL=seeder.module-DOoVgTsK.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"seeder.module-CIwQbdN4.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"}
1
+ {"version":3,"file":"seeder.module-DOoVgTsK.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,IAAM,eAAN,MAAM,aAAa,CAAE;AAL3B,eAAA,WAAA,CAAA,OAAO,EACN,WAAW,CACT;CAAE,SAAS,cAAc;CAAgB,UAAU;AAAe,CACpE,EACF,CAAC,CAAA,GAAA,YAAA"}
@@ -1 +1 @@
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
+ {"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,CAAC,CAAC,QAAQ,OAAO,GAAG,CAAC,CAAC,QAAQ,OAAO,GAAG,CAAC,CAAC,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,CAAC,CAAC,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,14 +1,13 @@
1
- import { Fn as DynamicModule, Ir as ApplicationError, Nn as AsyncModuleOptions, l as HttpException, st as RouterContext } from "../index-uybm0bhQ.mjs";
1
+ import { Jn as AsyncModuleOptions, Xn as DynamicModule, l as HttpException, li as ApplicationError, st as RouterContext } from "../index-B2WtEagR.mjs";
2
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
-
3
+ import { _ as deleteFileInputSchema, a as uploadResultSchema, b as StorageEntry, c as HeadResult, d as getPresignedUrlInputSchema, f as presignedUrlResultSchema, g as DeleteFileInput, h as DownloadResult, i as UploadResult, l as GetPresignedUrlInput, m as fileExistsInputSchema, n as StreamingBlobPayloadInputTypes, o as ListOptions, p as FileExistsInput, r as UploadOptions, s as ListResult, t as IStorageProvider, u as PresignedUrlResult, v as PresignedUrlConfig, x as StorageRouteConfig, y as StorageConfig } from "../storage-provider.interface-CinHpjl1.mjs";
5
4
  //#region src/storage/storage.module.d.ts
6
5
  /**
7
6
  * Storage module options
8
7
  * Same as StorageConfig from types.ts
9
8
  */
10
9
  type StorageModuleOptions = StorageConfig;
11
- declare class StorageModule {
10
+ export declare class StorageModule {
12
11
  /**
13
12
  * Configure StorageModule with static options
14
13
  *
@@ -47,7 +46,7 @@ declare class StorageModule {
47
46
  * Dependency injection tokens for the Storage module
48
47
  * Using Symbol-based tokens to avoid magic strings
49
48
  */
50
- declare const STORAGE_TOKENS: {
49
+ export declare const STORAGE_TOKENS: {
51
50
  readonly Options: symbol;
52
51
  readonly StorageService: symbol;
53
52
  readonly StorageManager: symbol;
@@ -59,7 +58,7 @@ declare const STORAGE_TOKENS: {
59
58
  * Manages multiple storage providers (one per disk)
60
59
  * Handles lazy initialization and caching of R2 providers
61
60
  */
62
- declare class StorageManagerService {
61
+ export declare class StorageManagerService {
63
62
  private readonly options;
64
63
  private readonly env;
65
64
  private readonly providers;
@@ -118,7 +117,7 @@ declare class StorageManagerService {
118
117
  * await this.storage.upload(file, 'documents/report.pdf')
119
118
  * ```
120
119
  */
121
- declare class StorageService {
120
+ export declare class StorageService {
122
121
  protected readonly storageManager: StorageManagerService;
123
122
  protected readonly options: StorageConfig;
124
123
  constructor(storageManager: StorageManagerService, options: StorageConfig);
@@ -151,6 +150,44 @@ declare class StorageService {
151
150
  * @returns True if file exists, false otherwise
152
151
  */
153
152
  exists(relativePath: string, disk?: string): Promise<boolean>;
153
+ /**
154
+ * Delete many files in one call
155
+ *
156
+ * Providers delete in bulk — R2 takes 1000 keys per round trip — so this costs a fraction of
157
+ * the subrequests that looping over `delete` would. Paths that do not exist are ignored.
158
+ *
159
+ * @param relativePaths - Relative paths within the disk
160
+ * @param disk - Optional disk name (uses default if not provided)
161
+ */
162
+ deleteMany(relativePaths: string[], disk?: string): Promise<void>;
163
+ /**
164
+ * Read an object's metadata without transferring its body
165
+ *
166
+ * Use this to learn a file's size or content type when the contents are not needed — asking
167
+ * `head` for a hundred objects costs a hundred metadata reads, where `download` would move a
168
+ * hundred bodies.
169
+ *
170
+ * @param relativePath - Relative path within the disk
171
+ * @param disk - Optional disk name (uses default if not provided)
172
+ * @returns Metadata, or null when nothing exists at that path
173
+ */
174
+ head(relativePath: string, disk?: string): Promise<HeadResult | null>;
175
+ /**
176
+ * List objects on a disk, one page at a time
177
+ *
178
+ * **The result is a page, not the whole set.** Providers cap a single listing (R2 at 1000
179
+ * objects), so anything that aggregates across a prefix — summing sizes, counting files,
180
+ * copying a tree — must loop while `truncated` is true, passing `cursor` back in. Reading only
181
+ * the first page yields an answer that is quietly too small, with nothing having failed.
182
+ *
183
+ * Returned paths are relative to the disk, so they can be passed straight to `download`,
184
+ * `head` or `delete`.
185
+ *
186
+ * @param options - Prefix (relative to the disk), cursor and page limit
187
+ * @param disk - Optional disk name (uses default if not provided)
188
+ * @returns One page of matching objects
189
+ */
190
+ list(options?: ListOptions, disk?: string): Promise<ListResult>;
154
191
  /**
155
192
  * Generate a presigned download URL
156
193
  * @param relativePath - Relative path within the disk
@@ -197,6 +234,19 @@ declare class StorageService {
197
234
  * @returns Full path including disk root
198
235
  */
199
236
  protected buildFullPath(relativePath: string, diskName: string): string;
237
+ /**
238
+ * Strip the disk root from a provider path
239
+ *
240
+ * The inverse of `buildFullPath`, so what `head`/`list` hand back is what `download`/`delete`
241
+ * accept. A path that does not start with the root is returned unchanged rather than mangled —
242
+ * that can only happen if a provider returned something outside the disk, and silently trimming
243
+ * a prefix off it would disguise the fault as a valid path.
244
+ *
245
+ * @param fullPath - Path as the provider reported it
246
+ * @param diskName - Name of the disk
247
+ * @returns Path relative to the disk root
248
+ */
249
+ protected toRelativePath(fullPath: string, diskName: string): string;
200
250
  /**
201
251
  * Substitute template variables in path
202
252
  * Override this method in subclasses to add custom substitutions
@@ -249,7 +299,7 @@ declare class StorageService {
249
299
  * - PUT /storage/:disk/* → upload file
250
300
  * - DELETE /storage/:disk/* → delete file
251
301
  */
252
- declare class StorageController {
302
+ export declare class StorageController {
253
303
  private readonly storage;
254
304
  constructor(storage: StorageService);
255
305
  download(ctx: RouterContext): Promise<Response>;
@@ -258,25 +308,25 @@ declare class StorageController {
258
308
  }
259
309
  //#endregion
260
310
  //#region src/storage/errors/file-not-found.error.d.ts
261
- declare class FileNotFoundError extends HttpException {
311
+ export declare class FileNotFoundError extends HttpException {
262
312
  constructor(path?: string);
263
313
  }
264
314
  //#endregion
265
315
  //#region src/storage/errors/file-too-large.error.d.ts
266
- declare class FileTooLargeError extends HttpException {
316
+ export declare class FileTooLargeError extends HttpException {
267
317
  readonly size?: number | undefined;
268
318
  readonly maxSize?: number | undefined;
269
319
  constructor(size?: number | undefined, maxSize?: number | undefined);
270
320
  }
271
321
  //#endregion
272
322
  //#region src/storage/errors/invalid-file-type.error.d.ts
273
- declare class InvalidFileTypeError extends HttpException {
323
+ export declare class InvalidFileTypeError extends HttpException {
274
324
  readonly mimeType?: string | undefined;
275
325
  constructor(mimeType?: string | undefined);
276
326
  }
277
327
  //#endregion
278
328
  //#region src/storage/storage.error.d.ts
279
- declare class StorageError extends ApplicationError {}
329
+ export declare class StorageError extends ApplicationError {}
280
330
  //#endregion
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 };
331
+ export { DeleteFileInput, DownloadResult, FileExistsInput, GetPresignedUrlInput, HeadResult, type IStorageProvider, ListOptions, ListResult, type PresignedUrlConfig, PresignedUrlResult, type StorageConfig, type StorageEntry, type StorageRouteConfig, type StreamingBlobPayloadInputTypes, UploadOptions, UploadResult, deleteFileInputSchema, fileExistsInputSchema, getPresignedUrlInputSchema, presignedUrlResultSchema, uploadResultSchema };
282
332
  //# 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/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
+ {"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":";;;;;;;;KAiBY,uBAAuB;qBAQtB;;;;;;;;;;;;;SAaJ,QAAQ,SAAS,uBAAuB;;;;;;;;;;;;;;;;;;SA0BxC,aAAa,SAAS,mBAAmB,wBAAwB;;;;;;;;qBC5D7D;WACX;WACA;WACA;;;;;;;;;qBCQW;mBAOQ;mBAEA;mBARF;mBACA;mBACA;EAEjB,YAEmB,SAAS,eAET,KAAK;;;;UAQhB;;;;;;;EAYF,YAAY,mBAAmB,QAAQ;;;;;;;UAwC/B;;;;;;EAcd,cAAc,mBAAmB;;;;;;EAajC,QAAQ;;;;;EAQR;;;;;;;;;;;;;;;;;;qBCvFW;qBAGU,gBAAgB;qBAEhB,SAAS;EAJ9B,YAEqB,gBAAgB,uBAEhB,SAAS;;;;;;;;;EAWxB,OACJ,MAAM,gCACN,sBACA,SAAS,eACT,gBACC,QAAQ;;;;;;;EAcL,SAAS,sBAAsB,gBAAgB,QAAQ;;;;;;EAavD,OAAO,sBAAsB,gBAAgB;;;;;;;EAc7C,OAAO,sBAAsB,gBAAgB;;;;;;;;;;EAiB7C,WAAW,yBAAyB,gBAAgB;;;;;;;;;;;;EAsBpD,KAAK,sBAAsB,gBAAgB,QAAQ;;;;;;;;;;;;;;;;EA4BnD,KAAK,UAAS,aAAkB,gBAAgB,QAAQ;;;;;;;;EAyBxD,wBACJ,sBACA,oBACA,gBACC,QAAQ;;;;;;;;EAWL,sBACJ,sBACA,oBACA,gBACC,QAAQ;;;;;;;;EAWL,sBACJ,sBACA,oBACA,gBACC,QAAQ;;;;;;;;;YAYK,gBACd,sBACA,2CACA,oBACA,gBACC,QAAQ;;;;;;YAcD,YAAY;;;;;;;YAgBZ,cAAc,sBAAsB;;;;;;;;;;;;;YAyBpC,eAAe,kBAAkB;;;;;;;;YAgBjC,4BAA4B;;;;;;YAiB5B,kBAAkB;;;;;EAkB5B;;;;;;;;;;;;;;;;EAmBM,cACJ,MAAM,gCACN,sBACA,SAAS,KAAK;IAA2B;KACzC,gBACC,QAAQ;;;;;;;;;;;;;;;;qBClTA;mBAGQ;EAFnB,YAEmB,SAAS;EAItB,SAAS,KAAK,gBAAgB,QAAQ;EAkCtC,OAAO,KAAK,gBAAgB,QAAQ;EAiBpC,QAAQ,KAAK,gBAAgB,QAAQ;;;;qBCrHhC,0BAA0B;EACrC,YAAY;;;;qBCDD,0BAA0B;WACT;WAA+B;EAA3D,YAA4B,2BAA+B;;;;qBCDhD,6BAA6B;WACZ;EAA5B,YAA4B;;;;qBCDjB,qBAAqB"}
@@ -1,3 +1,3 @@
1
- import { t as StorageError } from "../storage.error-BStXPmO4.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-C30X81CS.mjs";
1
+ import { t as StorageError } from "../storage.error-Ao38Qdjx.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-DBWVYMnn.mjs";
3
3
  export { FileNotFoundError, FileTooLargeError, InvalidFileTypeError, STORAGE_TOKENS, StorageController, StorageError, StorageManagerService, StorageModule, StorageService, deleteFileInputSchema, fileExistsInputSchema, getPresignedUrlInputSchema, presignedUrlResultSchema, uploadResultSchema };
@@ -1,11 +1,10 @@
1
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
-
2
+ import { b as StorageEntry, c as HeadResult, h as DownloadResult, i as UploadResult, n as StreamingBlobPayloadInputTypes, o as ListOptions, r as UploadOptions, s as ListResult, t as IStorageProvider, u as PresignedUrlResult, x as StorageRouteConfig } from "../../storage-provider.interface-CinHpjl1.mjs";
4
3
  //#region src/storage/providers/multipart-provider.interface.d.ts
5
4
  /**
6
5
  * Options for creating a multipart upload
7
6
  */
8
- interface CreateMultipartOptions {
7
+ export interface CreateMultipartOptions {
9
8
  /** Content type (MIME type) */
10
9
  contentType?: string;
11
10
  /** Cache control header */
@@ -16,7 +15,7 @@ interface CreateMultipartOptions {
16
15
  /**
17
16
  * Result of creating a multipart upload
18
17
  */
19
- interface CreateMultipartResult {
18
+ export interface CreateMultipartResult {
20
19
  /** Upload ID for subsequent part uploads */
21
20
  uploadId: string;
22
21
  /** Object key */
@@ -25,7 +24,7 @@ interface CreateMultipartResult {
25
24
  /**
26
25
  * Result of uploading a part
27
26
  */
28
- interface UploadPartResult {
27
+ export interface UploadPartResult {
29
28
  /** ETag returned by the storage provider */
30
29
  etag: string;
31
30
  /** Part number */
@@ -34,7 +33,7 @@ interface UploadPartResult {
34
33
  /**
35
34
  * Part info for completing multipart upload
36
35
  */
37
- interface CompletedPart {
36
+ export interface CompletedPart {
38
37
  /** ETag from uploadPart */
39
38
  etag: string;
40
39
  /** Part number */
@@ -43,7 +42,7 @@ interface CompletedPart {
43
42
  /**
44
43
  * Result of completing a multipart upload
45
44
  */
46
- interface CompleteMultipartResult {
45
+ export interface CompleteMultipartResult {
47
46
  /** Location URL */
48
47
  location?: string;
49
48
  /** Object key */
@@ -52,7 +51,7 @@ interface CompleteMultipartResult {
52
51
  /**
53
52
  * Individual part info from listParts
54
53
  */
55
- interface PartInfo {
54
+ export interface PartInfo {
56
55
  /** Part number */
57
56
  partNumber: number;
58
57
  /** ETag */
@@ -63,7 +62,7 @@ interface PartInfo {
63
62
  /**
64
63
  * Result of listing parts
65
64
  */
66
- interface ListPartsResult {
65
+ export interface ListPartsResult {
67
66
  /** List of uploaded parts */
68
67
  parts: PartInfo[];
69
68
  /** Whether there are more parts */
@@ -74,7 +73,7 @@ interface ListPartsResult {
74
73
  /**
75
74
  * Individual upload info from listMultipartUploads
76
75
  */
77
- interface MultipartUploadInfo {
76
+ export interface MultipartUploadInfo {
78
77
  /** Object key */
79
78
  key: string;
80
79
  /** Upload ID */
@@ -85,7 +84,7 @@ interface MultipartUploadInfo {
85
84
  /**
86
85
  * Result of listing multipart uploads
87
86
  */
88
- interface ListMultipartUploadsResult {
87
+ export interface ListMultipartUploadsResult {
89
88
  /** List of in-progress uploads */
90
89
  uploads: MultipartUploadInfo[];
91
90
  /** Whether there are more uploads */
@@ -98,7 +97,7 @@ interface ListMultipartUploadsResult {
98
97
  /**
99
98
  * Result of headObject
100
99
  */
101
- interface HeadObjectResult {
100
+ export interface HeadObjectResult {
102
101
  /** Object size in bytes */
103
102
  size: number;
104
103
  /** Content type */
@@ -109,7 +108,7 @@ interface HeadObjectResult {
109
108
  /**
110
109
  * Result of batch delete
111
110
  */
112
- interface DeleteObjectsResult {
111
+ export interface DeleteObjectsResult {
113
112
  /** Number of objects deleted */
114
113
  deleted: number;
115
114
  /** Errors that occurred */
@@ -125,7 +124,7 @@ interface DeleteObjectsResult {
125
124
  * Extends the generic IStorageProvider with multipart upload operations
126
125
  * needed by resumable upload protocols like TUS.
127
126
  */
128
- interface IMultipartProvider extends IStorageProvider {
127
+ export interface IMultipartProvider extends IStorageProvider {
129
128
  /**
130
129
  * Create a multipart upload
131
130
  * @param key - Object key
@@ -203,7 +202,7 @@ interface IMultipartProvider extends IStorageProvider {
203
202
  * Tracks multipart upload metadata using companion R2 objects so that
204
203
  * listParts/listMultipartUploads work in all environments (local, test, prod).
205
204
  */
206
- declare class R2StorageProvider implements IMultipartProvider {
205
+ export declare class R2StorageProvider implements IMultipartProvider {
207
206
  private readonly config;
208
207
  private readonly bucket;
209
208
  private readonly env;
@@ -213,6 +212,9 @@ declare class R2StorageProvider implements IMultipartProvider {
213
212
  download(path: string): Promise<DownloadResult>;
214
213
  delete(path: string): Promise<void>;
215
214
  exists(path: string): Promise<boolean>;
215
+ deleteMany(paths: string[]): Promise<void>;
216
+ head(path: string): Promise<HeadResult | null>;
217
+ list(options: ListOptions): Promise<ListResult>;
216
218
  getPresignedUrl(path: string, method: 'GET' | 'PUT' | 'DELETE' | 'HEAD', expiresIn: number): Promise<PresignedUrlResult>;
217
219
  chunkedUpload(body: StreamingBlobPayloadInputTypes, path: string, options: Omit<UploadOptions, 'size'> & {
218
220
  size?: number;
@@ -229,5 +231,5 @@ declare class R2StorageProvider implements IMultipartProvider {
229
231
  private cleanupTrackingObjects;
230
232
  }
231
233
  //#endregion
232
- export { CompleteMultipartResult, CompletedPart, CreateMultipartOptions, CreateMultipartResult, DeleteObjectsResult, HeadObjectResult, IMultipartProvider, IStorageProvider, ListMultipartUploadsResult, ListPartsResult, MultipartUploadInfo, PartInfo, R2StorageProvider, StreamingBlobPayloadInputTypes, UploadPartResult };
234
+ export { IStorageProvider, StreamingBlobPayloadInputTypes };
233
235
  //# sourceMappingURL=index.d.mts.map
@@ -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":";;;;;;iBAKiB;;EAEf;;EAEA;;EAEA,WAAW;;;;;iBAMI;;EAEf;;EAEA;;;;;iBAMe;;EAEf;;EAEA;;;;;iBAMe;;EAEf;;EAEA;;;;;iBAMe;;EAEf;;EAEA;;;;;iBAMe;;EAEf;;EAEA;;EAEA;;;;;iBAMe;;EAEf,OAAO;;EAEP;;EAEA;;;;;iBAMe;;EAEf;;EAEA;;EAEA,YAAY;;;;;iBAMG;;EAEf,SAAS;;EAET;;EAEA;;EAEA;;;;;iBAMe;;EAEf;;EAEA;;EAEA,WAAW;;;;;iBAMI;;EAEf;;EAEA;IACE;IACA;IACA;;;;;;;;;iBAUa,2BAA2B;;;;;;;EAW1C,sBACE,aACA,UAAU,yBACT,QAAQ;;;;;;;;;EAUX,WACE,aACA,kBACA,oBACA,MAAM,aACL,QAAQ;;;;;;;;EASX,wBACE,aACA,kBACA,OAAO,kBACN,QAAQ;;;;;;EAOX,qBAAqB,aAAa,mBAAmB;;;;;;;;;EAUrD,UACE,aACA,kBACA,4BACC,QAAQ;;;;;;;;EASX,qBACE,oBACA,0BACC,QAAQ;;;;;;;EAYX,WAAW,cAAc,QAAQ;;;;;;;EAQjC,cAAc,iBAAiB,QAAQ;;;;;EAUvC;;;;;;;;;;;;qBCzMW,6BAA6B;mBAIrB;mBACA;mBACA;mBALF;EAEjB,YACmB,QAAQ,cACR,QAAQ,UACR,KAAK,YACtB,cAAc;EAKV,OACJ,MAAM,gCACN,cACA,SAAS,gBACR,QAAQ;EAuBL,SAAS,eAAe,QAAQ;EAoBhC,OAAO,eAAe;EAItB,OAAO,eAAe;EAKtB,WAAW,kBAAkB;EAS7B,KAAK,eAAe,QAAQ;EAS5B,KAAK,SAAS,cAAc,QAAQ;EAsBpC,gBACJ,cACA,2CACA,oBACC,QAAQ;EAmBL,cACJ,MAAM,gCACN,cACA,SAAS,KAAK;IAA2B;MACxC,QAAQ;EAwEX;EAIM,WAAW,cAAc,QAAQ;EAYjC,cAAc,iBAAiB,QAAQ;EAavC,sBACJ,aACA,UAAU,yBACT,QAAQ;EAsBL,WACJ,aACA,kBACA,oBACA,MAAM,aACL,QAAQ;EAiBL,wBACJ,aACA,kBACA,OAAO,kBACN,QAAQ;EAgBL,qBAAqB,aAAa,mBAAmB;EAOrD,UACJ,cACA,kBACA,4BACC,QAAQ;EA4BL,qBACJ,oBACA,2BACC,QAAQ;UAiCG"}
@@ -1,2 +1,2 @@
1
- import { t as R2StorageProvider } from "../../r2-storage.provider-BoZmR6Ut.mjs";
1
+ import { t as R2StorageProvider } from "../../r2-storage.provider-wU_6api4.mjs";
2
2
  export { R2StorageProvider };