stratal 0.0.26 → 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.
- package/CHANGELOG.md +912 -0
- package/README.md +96 -14
- package/dist/bin/cloudflare-workers-loader.mjs +18 -3
- package/dist/bin/cloudflare-workers-loader.mjs.map +1 -1
- package/dist/bin/quarry.mjs +85 -14
- package/dist/bin/quarry.mjs.map +1 -1
- package/dist/cache/index.d.mts +8 -9
- package/dist/cache/index.d.mts.map +1 -1
- package/dist/cache/index.mjs +56 -17
- package/dist/cache/index.mjs.map +1 -1
- package/dist/{cache.service-uElmBtdS.d.mts → cache.service-Dg0Hj0gp.d.mts} +27 -12
- package/dist/cache.service-Dg0Hj0gp.d.mts.map +1 -0
- package/dist/{command-DoBD2Cwl.d.mts → command-BXMccV_9.d.mts} +6 -3
- package/dist/command-BXMccV_9.d.mts.map +1 -0
- package/dist/{command-BvmUAPPQ.mjs → command-Bb820B6W.mjs} +36 -13
- package/dist/command-Bb820B6W.mjs.map +1 -0
- package/dist/common.schemas-BigQCwYB.mjs +89 -0
- package/dist/common.schemas-BigQCwYB.mjs.map +1 -0
- package/dist/config/index.d.mts +15 -15
- package/dist/config/index.d.mts.map +1 -1
- package/dist/config/index.mjs +4 -6
- package/dist/config/index.mjs.map +1 -1
- package/dist/{consumer-registry-D3iMTSdy.d.mts → consumer-registry-i9oCdarv.d.mts} +2 -3
- package/dist/consumer-registry-i9oCdarv.d.mts.map +1 -0
- package/dist/{container-storage-BmOJ4_Na.mjs → container-storage-DfF7SXdV.mjs} +11 -1
- package/dist/container-storage-DfF7SXdV.mjs.map +1 -0
- package/dist/{controller.decorator-YSTPQntu.mjs → controller.decorator-BB0JcwMg.mjs} +18 -9
- package/dist/controller.decorator-BB0JcwMg.mjs.map +1 -0
- package/dist/cron/index.d.mts +6 -7
- package/dist/cron/index.d.mts.map +1 -1
- package/dist/cron/index.mjs +1 -1
- package/dist/{cron-job-NesZRk8F.d.mts → cron-job-DAgNw4Bn.d.mts} +1 -2
- package/dist/cron-job-DAgNw4Bn.d.mts.map +1 -0
- package/dist/{cron.module-C81HTzR7.mjs → cron.module-Dnyl9sFk.mjs} +6 -7
- package/dist/{cron.module-C81HTzR7.mjs.map → cron.module-Dnyl9sFk.mjs.map} +1 -1
- package/dist/{decorate-CuAoSZvs.mjs → decorate-C79yt3Wt.mjs} +2 -2
- package/dist/di/index.d.mts +1 -1
- package/dist/di/index.mjs +2 -3
- package/dist/{di-D7qmrAir.mjs → di-DQ3xbjgf.mjs} +48 -6
- package/dist/di-DQ3xbjgf.mjs.map +1 -0
- package/dist/email/index.d.mts +158 -133
- package/dist/email/index.d.mts.map +1 -1
- package/dist/email/index.mjs +66 -78
- package/dist/email/index.mjs.map +1 -1
- package/dist/{en-CDZBMcc1.mjs → en-CCL84z4k.mjs} +2 -2
- package/dist/{en-CDZBMcc1.mjs.map → en-CCL84z4k.mjs.map} +1 -1
- package/dist/env-ug22bJj7.d.mts.map +1 -1
- package/dist/errors/index.d.mts +1 -1
- package/dist/errors/index.mjs +3 -3
- package/dist/{errors-C01O2T-n.mjs → errors-CrOXI_y5.mjs} +6 -8
- package/dist/errors-CrOXI_y5.mjs.map +1 -0
- package/dist/events/index.d.mts +8 -9
- package/dist/events/index.d.mts.map +1 -1
- package/dist/events/index.mjs +1 -1
- package/dist/{events-BhEQuT1X.mjs → events-GtwGEHyT.mjs} +5 -6
- package/dist/events-GtwGEHyT.mjs.map +1 -0
- package/dist/{exception-context-D-kvney-.mjs → exception-context-CdnGTQNF.mjs} +13 -7
- package/dist/exception-context-CdnGTQNF.mjs.map +1 -0
- package/dist/{gateway-context-m7kEzRa2.mjs → gateway-context-Cmc1NRS0.mjs} +7 -7
- package/dist/{gateway-context-m7kEzRa2.mjs.map → gateway-context-Cmc1NRS0.mjs.map} +1 -1
- package/dist/gateway-mode-0rUaeW3g.mjs +53 -0
- package/dist/gateway-mode-0rUaeW3g.mjs.map +1 -0
- package/dist/guards/index.d.mts +38 -20
- package/dist/guards/index.d.mts.map +1 -1
- package/dist/guards/index.mjs +2 -2
- package/dist/{guards-DALPXy3_.mjs → guards-DOGly9IF.mjs} +34 -11
- package/dist/guards-DOGly9IF.mjs.map +1 -0
- package/dist/hono-app-IhdqL0Fk.mjs +399 -0
- package/dist/hono-app-IhdqL0Fk.mjs.map +1 -0
- package/dist/{http-method.decorator-BljM8BDj.mjs → http-method.decorator-BDi9LTWj.mjs} +9 -8
- package/dist/http-method.decorator-BDi9LTWj.mjs.map +1 -0
- package/dist/i18n/index.d.mts +26 -137
- package/dist/i18n/index.d.mts.map +1 -1
- package/dist/i18n/index.mjs +4 -5
- package/dist/i18n/index.mjs.map +1 -1
- package/dist/i18n/messages/en/index.d.mts +1 -1
- package/dist/i18n/messages/en/index.mjs +1 -1
- package/dist/i18n/utils/index.d.mts +1 -2
- package/dist/i18n/utils/index.d.mts.map +1 -1
- package/dist/i18n/validation/index.d.mts +80 -5
- package/dist/i18n/validation/index.d.mts.map +1 -0
- package/dist/i18n/validation/index.mjs +4 -5
- package/dist/{i18n.module-B2DvWUPa.mjs → i18n.module-Bm3xlViA.mjs} +28 -13
- package/dist/i18n.module-Bm3xlViA.mjs.map +1 -0
- package/dist/index-0ItCjaqw.d.mts.map +1 -1
- package/dist/{index-CNuFQSNj.d.mts → index-3HJfhLlE.d.mts} +9 -11
- package/dist/index-3HJfhLlE.d.mts.map +1 -0
- package/dist/{index-uybm0bhQ.d.mts → index-B2WtEagR.d.mts} +1187 -234
- package/dist/index-B2WtEagR.d.mts.map +1 -0
- package/dist/index-BUt92sAE.d.mts.map +1 -1
- package/dist/index-CAHNCpvr.d.mts +203 -0
- package/dist/index-CAHNCpvr.d.mts.map +1 -0
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +2 -2
- package/dist/{is-command-CEPO9n8c.mjs → is-command-CSVv14wh.mjs} +2 -2
- package/dist/{is-command-CEPO9n8c.mjs.map → is-command-CSVv14wh.mjs.map} +1 -1
- package/dist/{is-seeder-Gvh_AM71.mjs → is-seeder-gLgXYbqC.mjs} +2 -2
- package/dist/is-seeder-gLgXYbqC.mjs.map +1 -0
- package/dist/{lazy-module-loader-M6YKudNL.d.mts → lazy-module-loader-C3OHoUnR.d.mts} +4 -5
- package/dist/lazy-module-loader-C3OHoUnR.d.mts.map +1 -0
- package/dist/limit-BE0HNAF6.mjs +116 -0
- package/dist/limit-BE0HNAF6.mjs.map +1 -0
- package/dist/locale-path.service-BqzDIrgy.mjs +213 -0
- package/dist/locale-path.service-BqzDIrgy.mjs.map +1 -0
- package/dist/locale-url-nZrZxqJP.mjs.map +1 -1
- package/dist/{locale-url.service-6bgia24_.mjs → locale-url.service-H8PH6GGh.mjs} +15 -5
- package/dist/{locale-url.service-6bgia24_.mjs.map → locale-url.service-H8PH6GGh.mjs.map} +1 -1
- package/dist/logger/index.mjs +3 -5
- package/dist/logger/index.mjs.map +1 -1
- package/dist/macroable-cvDTFZ_A.mjs.map +1 -1
- package/dist/metadata-Ba8Fxs1F.mjs +48 -0
- package/dist/metadata-Ba8Fxs1F.mjs.map +1 -0
- package/dist/module/index.d.mts +8 -9
- package/dist/module/index.d.mts.map +1 -1
- package/dist/module/index.mjs +3 -4
- package/dist/module/index.mjs.map +1 -1
- package/dist/{module-registry-NxX5O0Qk.mjs → module-registry-lkQPDuQe.mjs} +17 -15
- package/dist/module-registry-lkQPDuQe.mjs.map +1 -0
- package/dist/{module.decorator-CYHY6pG5.mjs → module.decorator-CYbrOlX9.mjs} +2 -2
- package/dist/{module.decorator-CYHY6pG5.mjs.map → module.decorator-CYbrOlX9.mjs.map} +1 -1
- package/dist/openapi/index.d.mts +19 -16
- package/dist/openapi/index.d.mts.map +1 -1
- package/dist/openapi/index.mjs +2 -2
- package/dist/{openapi-CMwuCp31.mjs → openapi-DBfBa5Qh.mjs} +41 -65
- package/dist/openapi-DBfBa5Qh.mjs.map +1 -0
- package/dist/openapi-generator-CCwiu8AU.mjs +134 -0
- package/dist/openapi-generator-CCwiu8AU.mjs.map +1 -0
- package/dist/{openapi-tools.service-BC5EC3R3.mjs → openapi-tools.service-VKZJlTIX.mjs} +12 -4
- package/dist/openapi-tools.service-VKZJlTIX.mjs.map +1 -0
- package/dist/openapi.service-Ds-R1tih.d.mts +43 -0
- package/dist/openapi.service-Ds-R1tih.d.mts.map +1 -0
- package/dist/quarry/index.d.mts +10 -11
- package/dist/quarry/index.d.mts.map +1 -1
- package/dist/quarry/index.mjs +4 -4
- package/dist/quarry/runner.d.mts +19 -20
- package/dist/quarry/runner.d.mts.map +1 -1
- package/dist/quarry/runner.mjs +16 -13
- package/dist/quarry/runner.mjs.map +1 -1
- package/dist/{quarry-registry-DRnV-DDa.d.mts → quarry-registry-Ci4k58FZ.d.mts} +3 -4
- package/dist/quarry-registry-Ci4k58FZ.d.mts.map +1 -0
- package/dist/{quarry.module-CcGxU2dJ.mjs → quarry.module-BssRR8f0.mjs} +20 -37
- package/dist/quarry.module-BssRR8f0.mjs.map +1 -0
- package/dist/queue/index.d.mts +2 -2
- package/dist/queue/index.mjs +3 -3
- package/dist/queue/index.mjs.map +1 -1
- package/dist/{queue.module-CEs4_kEM.mjs → queue.module-DnAdSbR-.mjs} +40 -41
- package/dist/queue.module-DnAdSbR-.mjs.map +1 -0
- package/dist/{r2-storage.provider-BoZmR6Ut.mjs → r2-storage.provider-wU_6api4.mjs} +45 -6
- package/dist/r2-storage.provider-wU_6api4.mjs.map +1 -0
- package/dist/{rate-limit.decorator-Djs4oYDB.mjs → rate-limit.decorator-PYQ9EYqs.mjs} +10 -5
- package/dist/{rate-limit.decorator-Djs4oYDB.mjs.map → rate-limit.decorator-PYQ9EYqs.mjs.map} +1 -1
- package/dist/rate-limiter/index.d.mts +64 -19
- package/dist/rate-limiter/index.d.mts.map +1 -1
- package/dist/rate-limiter/index.mjs +67 -83
- package/dist/rate-limiter/index.mjs.map +1 -1
- package/dist/response-cache/index.d.mts +326 -0
- package/dist/response-cache/index.d.mts.map +1 -0
- package/dist/response-cache/index.mjs +511 -0
- package/dist/response-cache/index.mjs.map +1 -0
- package/dist/response-cache.error-B4D0zy9W.mjs +24 -0
- package/dist/response-cache.error-B4D0zy9W.mjs.map +1 -0
- package/dist/response-headers-BqA57S_X.mjs +158 -0
- package/dist/response-headers-BqA57S_X.mjs.map +1 -0
- package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
- package/dist/route-cache-binding-CrLh8tB6.mjs +390 -0
- package/dist/route-cache-binding-CrLh8tB6.mjs.map +1 -0
- package/dist/route-metadata-QQhbed1i.mjs +17 -0
- package/dist/route-metadata-QQhbed1i.mjs.map +1 -0
- package/dist/{route-name-DGoBOfPg.mjs → route-name-BslSbmMP.mjs} +15 -11
- package/dist/route-name-BslSbmMP.mjs.map +1 -0
- package/dist/route-registration.service-COKBZTsn.mjs +1265 -0
- package/dist/route-registration.service-COKBZTsn.mjs.map +1 -0
- package/dist/{route-registry-BvLJisvK.mjs → route-registry-DFz9_-N6.mjs} +6 -6
- package/dist/{route-registry-BvLJisvK.mjs.map → route-registry-DFz9_-N6.mjs.map} +1 -1
- package/dist/router/index.d.mts +2 -2
- package/dist/router/index.mjs +16 -15
- package/dist/{router-resolver-sUV_jTrU.mjs → router-resolver-B-dMSMIG.mjs} +7 -3
- package/dist/router-resolver-B-dMSMIG.mjs.map +1 -0
- package/dist/{router-DwyqEXgf.mjs → router-wlsVkGkM.mjs} +5 -14
- package/dist/{router-DwyqEXgf.mjs.map → router-wlsVkGkM.mjs.map} +1 -1
- package/dist/seeder/index.d.mts +12 -13
- package/dist/seeder/index.d.mts.map +1 -1
- package/dist/seeder/index.mjs +4 -4
- package/dist/{seeder-BPGY5rUb.mjs → seeder-BrAk7XIj.mjs} +5 -6
- package/dist/{seeder-BPGY5rUb.mjs.map → seeder-BrAk7XIj.mjs.map} +1 -1
- package/dist/{seeder-registry-DEvCycsT.mjs → seeder-registry-Bo5BgLbC.mjs} +5 -6
- package/dist/{seeder-registry-DEvCycsT.mjs.map → seeder-registry-Bo5BgLbC.mjs.map} +1 -1
- package/dist/{seeder.module-CIwQbdN4.mjs → seeder.module-DOoVgTsK.mjs} +5 -5
- package/dist/{seeder.module-CIwQbdN4.mjs.map → seeder.module-DOoVgTsK.mjs.map} +1 -1
- package/dist/signed-url-DIU0sK_6.mjs.map +1 -1
- package/dist/storage/index.d.mts +63 -13
- package/dist/storage/index.d.mts.map +1 -1
- package/dist/storage/index.mjs +2 -2
- package/dist/storage/providers/index.d.mts +18 -16
- package/dist/storage/providers/index.d.mts.map +1 -1
- package/dist/storage/providers/index.mjs +1 -1
- package/dist/{storage-C30X81CS.mjs → storage-DBWVYMnn.mjs} +167 -49
- package/dist/storage-DBWVYMnn.mjs.map +1 -0
- package/dist/storage-provider.interface-CinHpjl1.d.mts +315 -0
- package/dist/storage-provider.interface-CinHpjl1.d.mts.map +1 -0
- package/dist/storage.error-Ao38Qdjx.mjs +7 -0
- package/dist/storage.error-Ao38Qdjx.mjs.map +1 -0
- package/dist/{stratal-D5j_I14G.d.mts → stratal-Bs1_E8GQ.d.mts} +13 -3
- package/dist/stratal-Bs1_E8GQ.d.mts.map +1 -0
- package/dist/{stratal-BL6FKUM_.mjs → stratal-CiwNpWy2.mjs} +56 -23
- package/dist/stratal-CiwNpWy2.mjs.map +1 -0
- package/dist/{tiered-cache.service-Dv3BhxxE.d.mts → tiered-cache.service-Bz8bbvyb.d.mts} +16 -3
- package/dist/tiered-cache.service-Bz8bbvyb.d.mts.map +1 -0
- package/dist/trailing-slash-2SctvePW.mjs.map +1 -1
- package/dist/types-CmV_9xBD.d.mts.map +1 -1
- package/dist/{uri-iwofWJ_T.mjs → uri-BrOq148R.mjs} +13 -9
- package/dist/{uri-iwofWJ_T.mjs.map → uri-BrOq148R.mjs.map} +1 -1
- package/dist/{usage-generator-DAWYasuP.mjs → usage-generator-BW7EcO-C.mjs} +3 -3
- package/dist/{usage-generator-DAWYasuP.mjs.map → usage-generator-BW7EcO-C.mjs.map} +1 -1
- package/dist/{zod-eKqqhZ5_.mjs → validation-CZ_B0aXY.mjs} +38 -17
- package/dist/validation-CZ_B0aXY.mjs.map +1 -0
- package/dist/{validation.context-CRvmrhq7.mjs → validation.context-CdbwQWIr.mjs} +2 -2
- package/dist/{validation.context-CRvmrhq7.mjs.map → validation.context-CdbwQWIr.mjs.map} +1 -1
- package/dist/{versioning.service-CCa2oYMJ.mjs → versioning.service-DnF_4Lnd.mjs} +5 -5
- package/dist/{versioning.service-CCa2oYMJ.mjs.map → versioning.service-DnF_4Lnd.mjs.map} +1 -1
- package/dist/websocket/index.d.mts +12 -13
- package/dist/websocket/index.d.mts.map +1 -1
- package/dist/websocket/index.mjs +1 -1
- package/dist/workers/index.d.mts +70 -7
- package/dist/workers/index.d.mts.map +1 -1
- package/dist/workers/index.mjs +72 -3
- package/dist/workers/index.mjs.map +1 -1
- package/dist/{zod-wecrEVAs.d.mts → zod-BGisqLs3.d.mts} +9 -16
- package/dist/zod-BGisqLs3.d.mts.map +1 -0
- package/package.json +33 -25
- package/dist/cache.service-uElmBtdS.d.mts.map +0 -1
- package/dist/chunk-BBjsoOtd.mjs +0 -27
- package/dist/command-BvmUAPPQ.mjs.map +0 -1
- package/dist/command-DoBD2Cwl.d.mts.map +0 -1
- package/dist/consumer-registry-D3iMTSdy.d.mts.map +0 -1
- package/dist/container-storage-BmOJ4_Na.mjs.map +0 -1
- package/dist/controller.decorator-YSTPQntu.mjs.map +0 -1
- package/dist/cron-job-NesZRk8F.d.mts.map +0 -1
- package/dist/di-D7qmrAir.mjs.map +0 -1
- package/dist/errors-C01O2T-n.mjs.map +0 -1
- package/dist/events-BhEQuT1X.mjs.map +0 -1
- package/dist/exception-context-D-kvney-.mjs.map +0 -1
- package/dist/guards-DALPXy3_.mjs.map +0 -1
- package/dist/hono-app-COAgmutc.mjs +0 -168
- package/dist/hono-app-COAgmutc.mjs.map +0 -1
- package/dist/http-method.decorator-BljM8BDj.mjs.map +0 -1
- package/dist/i18n.module-B2DvWUPa.mjs.map +0 -1
- package/dist/index-CNuFQSNj.d.mts.map +0 -1
- package/dist/index-DtBNIFuP.d.mts +0 -42
- package/dist/index-DtBNIFuP.d.mts.map +0 -1
- package/dist/index-HgOLNruQ.d.mts +0 -203
- package/dist/index-HgOLNruQ.d.mts.map +0 -1
- package/dist/index-uybm0bhQ.d.mts.map +0 -1
- package/dist/is-seeder-Gvh_AM71.mjs.map +0 -1
- package/dist/lazy-module-loader-M6YKudNL.d.mts.map +0 -1
- package/dist/locale-path.service-CH0CaxwH.mjs +0 -165
- package/dist/locale-path.service-CH0CaxwH.mjs.map +0 -1
- package/dist/metadata-DzzprcID.mjs +0 -39
- package/dist/metadata-DzzprcID.mjs.map +0 -1
- package/dist/module-registry-NxX5O0Qk.mjs.map +0 -1
- package/dist/openapi-CMwuCp31.mjs.map +0 -1
- package/dist/openapi-tools.service-BC5EC3R3.mjs.map +0 -1
- package/dist/openapi.service-2rvJBCEg.d.mts +0 -50
- package/dist/openapi.service-2rvJBCEg.d.mts.map +0 -1
- package/dist/quarry-registry-DRnV-DDa.d.mts.map +0 -1
- package/dist/quarry.module-CcGxU2dJ.mjs.map +0 -1
- package/dist/queue.module-CEs4_kEM.mjs.map +0 -1
- package/dist/r2-storage.provider-BoZmR6Ut.mjs.map +0 -1
- package/dist/route-name-DGoBOfPg.mjs.map +0 -1
- package/dist/route-registration.service-CDPQKpm4.mjs +0 -918
- package/dist/route-registration.service-CDPQKpm4.mjs.map +0 -1
- package/dist/router-resolver-sUV_jTrU.mjs.map +0 -1
- package/dist/storage-C30X81CS.mjs.map +0 -1
- package/dist/storage-provider.interface-ClUwxz4S.d.mts +0 -201
- package/dist/storage-provider.interface-ClUwxz4S.d.mts.map +0 -1
- package/dist/storage.error-BStXPmO4.mjs +0 -8
- package/dist/storage.error-BStXPmO4.mjs.map +0 -1
- package/dist/stratal-BL6FKUM_.mjs.map +0 -1
- package/dist/stratal-D5j_I14G.d.mts.map +0 -1
- package/dist/tiered-cache.service-Dv3BhxxE.d.mts.map +0 -1
- package/dist/validation-CpOjviyT.mjs +0 -49
- package/dist/validation-CpOjviyT.mjs.map +0 -1
- package/dist/zod-eKqqhZ5_.mjs.map +0 -1
- package/dist/zod-wecrEVAs.d.mts.map +0 -1
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
//#region src/i18n/messages/en/common.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* System Common Messages - English
|
|
4
|
-
*
|
|
5
|
-
* Common messages used by packages/modules infrastructure.
|
|
6
|
-
* These are automatically merged with application-specific messages.
|
|
7
|
-
*/
|
|
8
|
-
declare const common: {
|
|
9
|
-
readonly api: {
|
|
10
|
-
readonly title: "Stratal API";
|
|
11
|
-
readonly description: "Platform API";
|
|
12
|
-
readonly serverDescription: "API server";
|
|
13
|
-
readonly security: {
|
|
14
|
-
readonly bearerAuth: "JWT Bearer token authentication";
|
|
15
|
-
readonly apiKey: "API key for service authentication";
|
|
16
|
-
readonly sessionCookie: "Session cookie for browser authentication";
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/i18n/messages/en/emails.d.ts
|
|
22
|
-
/**
|
|
23
|
-
* System Email Messages - English
|
|
24
|
-
*
|
|
25
|
-
* Email-related messages used by packages/modules infrastructure.
|
|
26
|
-
* These are automatically merged with application-specific messages.
|
|
27
|
-
*/
|
|
28
|
-
declare const emails: {
|
|
29
|
-
readonly magicLink: {
|
|
30
|
-
readonly subject: "Your sign-in link";
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
//#endregion
|
|
34
|
-
//#region src/i18n/messages/en/validation.d.ts
|
|
35
|
-
/**
|
|
36
|
-
* Form validation messages - English
|
|
37
|
-
*/
|
|
38
|
-
declare const validation: {
|
|
39
|
-
readonly required: "This field is required";
|
|
40
|
-
readonly email: "Invalid email address";
|
|
41
|
-
readonly minLength: "Must be at least {min} characters";
|
|
42
|
-
readonly maxLength: "Must not exceed {max} characters";
|
|
43
|
-
readonly min: "Must be at least {min}";
|
|
44
|
-
readonly max: "Must not exceed {max}";
|
|
45
|
-
readonly pattern: "Invalid format";
|
|
46
|
-
readonly numeric: "Must be a number";
|
|
47
|
-
readonly url: "Invalid URL";
|
|
48
|
-
readonly date: "Invalid date";
|
|
49
|
-
readonly passwordStrength: "Password must contain at least one uppercase letter, one lowercase letter, and one number";
|
|
50
|
-
readonly passwordMatch: "Passwords do not match";
|
|
51
|
-
readonly unique: "This value already exists";
|
|
52
|
-
readonly phone: "Invalid phone number";
|
|
53
|
-
readonly fileRequired: "Please upload a file";
|
|
54
|
-
readonly fileTooLarge: "File must be smaller than {max}";
|
|
55
|
-
readonly invalidFileType: "Please upload a PDF, JPG, or PNG file";
|
|
56
|
-
readonly schoolTypes: {
|
|
57
|
-
readonly required: "School type is required";
|
|
58
|
-
readonly atLeastOne: "Please select at least one school type";
|
|
59
|
-
readonly invalidCode: "Invalid school type: {code}";
|
|
60
|
-
readonly notAvailableInCountry: "{schoolType} is not available in {country}";
|
|
61
|
-
readonly countryNotSupported: "Country {country} is not supported";
|
|
62
|
-
};
|
|
63
|
-
readonly timezone: {
|
|
64
|
-
readonly required: "Timezone is required";
|
|
65
|
-
readonly invalid: "Invalid timezone. Please select a valid IANA timezone.";
|
|
66
|
-
};
|
|
67
|
-
readonly locale: {
|
|
68
|
-
readonly required: "Language is required";
|
|
69
|
-
readonly invalid: "Invalid language. Supported languages: {locales}";
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
//#endregion
|
|
73
|
-
//#region src/i18n/messages/en/zod.d.ts
|
|
74
|
-
/**
|
|
75
|
-
* Zod validation error messages - English
|
|
76
|
-
*
|
|
77
|
-
* Comprehensive messages for all Zod validation error codes
|
|
78
|
-
* Structured to match Zod's issue types and validation contexts
|
|
79
|
-
*/
|
|
80
|
-
declare const zodI18n: {
|
|
81
|
-
readonly errors: {
|
|
82
|
-
readonly required: "Required";
|
|
83
|
-
readonly invalid_type: "Expected {expected}, received {received}";
|
|
84
|
-
readonly invalid_literal: "Invalid literal value, expected {expected}";
|
|
85
|
-
readonly custom: {
|
|
86
|
-
readonly default: "Invalid value";
|
|
87
|
-
readonly emailOrTextRequired: "Either html or text content must be provided";
|
|
88
|
-
readonly invalidFromEmail: "Invalid from email address";
|
|
89
|
-
readonly fileInstanceRequired: "File must be a File instance";
|
|
90
|
-
readonly filePathRequired: "File path is required";
|
|
91
|
-
readonly diskNameRequired: "Disk name is required";
|
|
92
|
-
readonly endpointRequired: "Endpoint URL is required for S3";
|
|
93
|
-
readonly bucketNameRequired: "Bucket name is required";
|
|
94
|
-
readonly accessKeyRequired: "Access key ID is required";
|
|
95
|
-
readonly secretKeyRequired: "Secret access key is required";
|
|
96
|
-
readonly storageDiskRequired: "At least one storage disk is required";
|
|
97
|
-
readonly databaseUrlRequired: "Database URL is required";
|
|
98
|
-
readonly domainRequired: "Domain is required";
|
|
99
|
-
readonly domainTooLong: "Domain too long";
|
|
100
|
-
readonly invalidDomainFormat: "Invalid domain format";
|
|
101
|
-
};
|
|
102
|
-
readonly invalid_union: "Invalid input";
|
|
103
|
-
readonly invalid_union_discriminator: "Invalid discriminator value. Expected {options}";
|
|
104
|
-
readonly invalid_enum_value: "Invalid enum value. Expected {options}, received {received}";
|
|
105
|
-
readonly unrecognized_keys: "Unrecognized key(s) in object: {keys}";
|
|
106
|
-
readonly invalid_arguments: "Invalid function arguments";
|
|
107
|
-
readonly invalid_return_type: "Invalid function return type";
|
|
108
|
-
readonly invalid_date: "Invalid date";
|
|
109
|
-
readonly invalid_intersection_types: "Intersection results could not be merged";
|
|
110
|
-
readonly not_multiple_of: "Number must be a multiple of {multipleOf}";
|
|
111
|
-
readonly not_finite: "Number must be finite";
|
|
112
|
-
readonly invalid_string: {
|
|
113
|
-
readonly email: "Invalid email address";
|
|
114
|
-
readonly url: "Invalid URL";
|
|
115
|
-
readonly uuid: "Invalid UUID";
|
|
116
|
-
readonly cuid: "Invalid CUID";
|
|
117
|
-
readonly cuid2: "Invalid CUID2";
|
|
118
|
-
readonly ulid: "Invalid ULID";
|
|
119
|
-
readonly regex: "Invalid format";
|
|
120
|
-
readonly datetime: "Invalid datetime";
|
|
121
|
-
readonly ip: "Invalid IP address";
|
|
122
|
-
readonly emoji: "Invalid emoji";
|
|
123
|
-
readonly startsWith: "Must start with \"{startsWith}\"";
|
|
124
|
-
readonly endsWith: "Must end with \"{endsWith}\"";
|
|
125
|
-
readonly includes: "Must include \"{includes}\"";
|
|
126
|
-
readonly base64: "Invalid Base64";
|
|
127
|
-
readonly nanoid: "Invalid NanoID";
|
|
128
|
-
readonly cidr: "Invalid CIDR";
|
|
129
|
-
readonly jwt: "Invalid JWT";
|
|
130
|
-
readonly time: "Invalid time";
|
|
131
|
-
};
|
|
132
|
-
readonly too_small: {
|
|
133
|
-
readonly string: {
|
|
134
|
-
readonly exact: "Must be exactly {minimum} characters";
|
|
135
|
-
readonly inclusive: "Must be at least {minimum} characters";
|
|
136
|
-
readonly not_inclusive: "Must be more than {minimum} characters";
|
|
137
|
-
};
|
|
138
|
-
readonly number: {
|
|
139
|
-
readonly exact: "Must be exactly {minimum}";
|
|
140
|
-
readonly inclusive: "Must be at least {minimum}";
|
|
141
|
-
readonly not_inclusive: "Must be greater than {minimum}";
|
|
142
|
-
};
|
|
143
|
-
readonly array: {
|
|
144
|
-
readonly exact: "Must contain exactly {minimum} item(s)";
|
|
145
|
-
readonly inclusive: "Must contain at least {minimum} item(s)";
|
|
146
|
-
readonly not_inclusive: "Must contain more than {minimum} item(s)";
|
|
147
|
-
};
|
|
148
|
-
readonly set: {
|
|
149
|
-
readonly exact: "Must contain exactly {minimum} item(s)";
|
|
150
|
-
readonly inclusive: "Must contain at least {minimum} item(s)";
|
|
151
|
-
readonly not_inclusive: "Must contain more than {minimum} item(s)";
|
|
152
|
-
};
|
|
153
|
-
readonly date: {
|
|
154
|
-
readonly exact: "Date must be {minimum}";
|
|
155
|
-
readonly inclusive: "Date must be {minimum} or later";
|
|
156
|
-
readonly not_inclusive: "Date must be after {minimum}";
|
|
157
|
-
};
|
|
158
|
-
readonly bigint: {
|
|
159
|
-
readonly exact: "Must be exactly {minimum}";
|
|
160
|
-
readonly inclusive: "Must be at least {minimum}";
|
|
161
|
-
readonly not_inclusive: "Must be greater than {minimum}";
|
|
162
|
-
};
|
|
163
|
-
};
|
|
164
|
-
readonly too_big: {
|
|
165
|
-
readonly string: {
|
|
166
|
-
readonly exact: "Must be exactly {maximum} characters";
|
|
167
|
-
readonly inclusive: "Must be at most {maximum} characters";
|
|
168
|
-
readonly not_inclusive: "Must be less than {maximum} characters";
|
|
169
|
-
};
|
|
170
|
-
readonly number: {
|
|
171
|
-
readonly exact: "Must be exactly {maximum}";
|
|
172
|
-
readonly inclusive: "Must be at most {maximum}";
|
|
173
|
-
readonly not_inclusive: "Must be less than {maximum}";
|
|
174
|
-
};
|
|
175
|
-
readonly array: {
|
|
176
|
-
readonly exact: "Must contain exactly {maximum} item(s)";
|
|
177
|
-
readonly inclusive: "Must contain at most {maximum} item(s)";
|
|
178
|
-
readonly not_inclusive: "Must contain less than {maximum} item(s)";
|
|
179
|
-
};
|
|
180
|
-
readonly set: {
|
|
181
|
-
readonly exact: "Must contain exactly {maximum} item(s)";
|
|
182
|
-
readonly inclusive: "Must contain at most {maximum} item(s)";
|
|
183
|
-
readonly not_inclusive: "Must contain less than {maximum} item(s)";
|
|
184
|
-
};
|
|
185
|
-
readonly date: {
|
|
186
|
-
readonly exact: "Date must be {maximum}";
|
|
187
|
-
readonly inclusive: "Date must be {maximum} or earlier";
|
|
188
|
-
readonly not_inclusive: "Date must be before {maximum}";
|
|
189
|
-
};
|
|
190
|
-
readonly bigint: {
|
|
191
|
-
readonly exact: "Must be exactly {maximum}";
|
|
192
|
-
readonly inclusive: "Must be at most {maximum}";
|
|
193
|
-
readonly not_inclusive: "Must be less than {maximum}";
|
|
194
|
-
};
|
|
195
|
-
};
|
|
196
|
-
};
|
|
197
|
-
};
|
|
198
|
-
declare namespace index_d_exports {
|
|
199
|
-
export { common, emails, validation, zodI18n };
|
|
200
|
-
}
|
|
201
|
-
//#endregion
|
|
202
|
-
export { common as a, emails as i, zodI18n as n, validation as r, index_d_exports as t };
|
|
203
|
-
//# sourceMappingURL=index-HgOLNruQ.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-HgOLNruQ.d.mts","names":[],"sources":["../src/i18n/messages/en/common.ts","../src/i18n/messages/en/emails.ts","../src/i18n/messages/en/validation.ts","../src/i18n/messages/en/zod.ts","../src/i18n/messages/en/index.ts"],"mappings":";;;;AAOA;;;cAAa,MAAA;EAAA;;;;;;;;;;;;;;;;AAAb;;;cCAa,MAAA;EAAA,SAIH,SAAA;IAAA,SAAA,OAAA;EAAA;AAAA;;;;;;cCPG,UAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AFGb;;;cGAa,OAAA;EAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-uybm0bhQ.d.mts","names":[],"sources":["../src/errors/application-error.ts","../src/di/tokens.ts","../src/router/route-map.ts","../src/router/constants.ts","../src/router/types.ts","../src/execution-context.ts","../src/di/lazy.ts","../src/di/types.ts","../src/module/types.ts","../src/quarry/types.ts","../src/router/controller.ts","../src/router/middleware.interface.ts","../src/router/hono-app.ts","../src/router/services/locale-path.service.ts","../src/router/services/locale-url.service.ts","../src/router/router.internals.ts","../src/router/router.ts","../src/module/module-registry.ts","../src/router/services/versioning.service.ts","../src/router/route-registry.ts","../src/router/router-resolver.ts","../src/router/services/route-registration.service.ts","../src/router/router.tokens.ts","../src/router/route-url.ts","../src/router/locale-url.ts","../src/router/trailing-slash.ts","../src/router/utils/path.ts","../src/router/utils/route-name.ts","../src/router/middleware/middleware-chain.ts","../src/router/decorators/controller.decorator.ts","../src/router/decorators/http-method.decorator.ts","../src/router/decorators/route.decorator.ts","../src/router/schemas/common.schemas.ts","../src/router/middleware/domain.middleware.ts","../src/router/middleware/verify-signature.middleware.ts","../src/router/signed-url.ts","../src/router/router.error.ts","../src/router/errors/route-not-found.error.ts","../src/router/errors/schema-validation.error.ts","../src/router/errors/index.ts","../src/application.ts","../src/router/uri.ts","../src/router/router-context.ts","../src/di/conditional-binding-builder.ts","../src/di/container.ts","../src/di/container.error.ts","../src/di/decorators/inject-param.decorator.ts","../src/di/decorators/inject.decorator.ts","../src/di/decorators.ts","../src/di/metadata.ts","../src/di/disposable.ts","../src/di/container-storage.ts","../src/errors/error-response.ts","../src/errors/exception-context.ts","../src/errors/exception-handler.types.ts","../src/errors/exception-handler.ts","../src/errors/default-exception-handler.ts","../src/errors/http-exception.ts","../src/errors/internal-error.ts","../src/errors/is-application-error.ts","../src/errors/container-not-initialized.error.ts","../src/errors/stratal-not-initialized.error.ts","../src/errors/stratal-superseded.error.ts","../src/errors/database.error.ts","../src/errors/auth.error.ts"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"is-seeder-Gvh_AM71.mjs","names":[],"sources":["../src/seeder/seeder.ts","../src/seeder/is-seeder.ts"],"sourcesContent":["import type { Container } from '../di/container'\nimport type { Constructor } from '../types'\n\nexport const SEEDER_INTERNALS = Symbol('seeder:internals')\n\nexport interface SeederContext {\n run(SeederClass: Constructor<Seeder>): Promise<void>\n container: Container | null\n}\n\nexport abstract class Seeder {\n [SEEDER_INTERNALS]: SeederContext = {\n run: () => { throw new Error('SeederRegistry not available') },\n container: null,\n }\n\n abstract run(): Promise<void>\n\n /** Call another seeder (like Laravel's $this->call()) */\n protected async call(SeederClass: Constructor<Seeder>): Promise<void> {\n await this[SEEDER_INTERNALS].run(SeederClass)\n }\n}\n","import type { Constructor } from '../types'\nimport { Seeder } from './seeder'\n\n/**\n * Check if a class is a Seeder (extends Seeder base class).\n *\n * Used by ModuleRegistry for auto-discovery from providers.\n */\nexport function isSeeder(target: Constructor): boolean {\n return target.prototype instanceof Seeder\n}\n"],"mappings":";AAGA,MAAa,mBAAmB,OAAO,kBAAkB;AAOzD,IAAsB,SAAtB,MAA6B;CAC3B,CAAC,oBAAmC;EAClC,WAAW;GAAE,MAAM,IAAI,MAAM,8BAA8B;EAAE;EAC7D,WAAW;CACb;;CAKA,MAAgB,KAAK,aAAiD;EACpE,MAAM,KAAK,kBAAkB,IAAI,WAAW;CAC9C;AACF;;;;;;;;ACdA,SAAgB,SAAS,QAA8B;CACrD,OAAO,OAAO,qBAAqB;AACrC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-module-loader-M6YKudNL.d.mts","names":[],"sources":["../src/module/module-ref.ts","../src/module/lazy-module-loader.ts"],"mappings":";;;;;;;AAeA;;;;;;;;;cAAa,SAAA;EAAA,iBAEQ,SAAA;EAW2B;EAAA,SATnC,WAAA,EAAa,WAAA;cAFL,SAAA,EAAW,SAAA,EAWe;;EATlC,WAAA,EAAa,WAAA;EAAb;EAIX,GAAA,IAAO,KAAA,EAAO,cAAA,CAAe,CAAA,IAAK,CAAA;;EAKlC,OAAA,IAAW,KAAA,EAAO,cAAA,CAAe,CAAA,IAAK,OAAA,CAAQ,CAAA;AAAA;;;AAbhD;;;;;;;;;;;;;;;;;AAAA,cCWa,gBAAA;EAAA,iBAK0C,QAAA;EAAA,iBACL,SAAA;EAAA,iBACQ,MAAA;EAAA,iBANvC,KAAA;EAAA,iBACA,QAAA;cAGoC,QAAA,EAAU,cAAA,EACf,SAAA,EAAW,SAAA,EACH,MAAA,EAAQ,aAAA;EAG1D,IAAA,CAAK,QAAA,QAAgB,OAAA,CAAQ,WAAA,GAAc,aAAA,IAAiB,OAAA,CAAQ,SAAA;EAAA,QAmB5D,gBAAA;AAAA"}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { t as __exportAll } from "./chunk-BBjsoOtd.mjs";
|
|
2
|
-
import { b as ROUTER_TOKENS, l as Singleton, n as CONTAINER_TOKEN, p as inject } from "./di-D7qmrAir.mjs";
|
|
3
|
-
import { n as __decorateParam, t as __decorate } from "./decorate-CuAoSZvs.mjs";
|
|
4
|
-
import { l as ROUTER_CONTEXT_KEYS } from "./exception-context-D-kvney-.mjs";
|
|
5
|
-
import { t as I18N_TOKENS } from "./i18n.tokens-CZ_v8oyS.mjs";
|
|
6
|
-
import { languageDetector } from "hono/language";
|
|
7
|
-
//#region src/i18n/i18n.options.ts
|
|
8
|
-
/**
|
|
9
|
-
* Resolve I18n options with defaults
|
|
10
|
-
*/
|
|
11
|
-
function resolveI18nOptions(options) {
|
|
12
|
-
const detection = options?.detection;
|
|
13
|
-
const enabled = detection ? detection.enabled !== false : true;
|
|
14
|
-
const strategy = detection && "strategy" in detection ? detection.strategy ?? "cookie" : "cookie";
|
|
15
|
-
const prefixDefaultLocale = detection && "prefixDefaultLocale" in detection && detection.prefixDefaultLocale !== void 0 ? detection.prefixDefaultLocale : false;
|
|
16
|
-
return {
|
|
17
|
-
defaultLocale: options?.defaultLocale ?? "en",
|
|
18
|
-
fallbackLocale: options?.fallbackLocale ?? "en",
|
|
19
|
-
locales: options?.locales ?? ["en"],
|
|
20
|
-
detection: {
|
|
21
|
-
enabled,
|
|
22
|
-
strategy,
|
|
23
|
-
prefixDefaultLocale
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Build Hono languageDetector options from I18n module options
|
|
29
|
-
*/
|
|
30
|
-
function buildDetectorOptions(options) {
|
|
31
|
-
const resolved = resolveI18nOptions(options);
|
|
32
|
-
const strategy = resolved.detection.strategy;
|
|
33
|
-
const detectorOptions = {
|
|
34
|
-
order: [strategy],
|
|
35
|
-
fallbackLanguage: resolved.defaultLocale,
|
|
36
|
-
supportedLanguages: resolved.locales,
|
|
37
|
-
lookupCookie: "locale",
|
|
38
|
-
lookupQueryString: "locale",
|
|
39
|
-
lookupFromPathIndex: 0,
|
|
40
|
-
ignoreCase: true
|
|
41
|
-
};
|
|
42
|
-
if (strategy === "cookie") {
|
|
43
|
-
detectorOptions.caches = ["cookie"];
|
|
44
|
-
if (options?.detection && "cookieOptions" in options.detection && options.detection.cookieOptions) detectorOptions.cookieOptions = options.detection.cookieOptions;
|
|
45
|
-
} else detectorOptions.caches = false;
|
|
46
|
-
return detectorOptions;
|
|
47
|
-
}
|
|
48
|
-
//#endregion
|
|
49
|
-
//#region src/router/services/locale-path.service.ts
|
|
50
|
-
var locale_path_service_exports = /* @__PURE__ */ __exportAll({ LocalePathService: () => LocalePathService });
|
|
51
|
-
let LocalePathService = class LocalePathService {
|
|
52
|
-
honoApp;
|
|
53
|
-
_config;
|
|
54
|
-
_pathDetectionEnabled;
|
|
55
|
-
_prefixDefaultLocale;
|
|
56
|
-
constructor(container, honoApp) {
|
|
57
|
-
this.honoApp = honoApp;
|
|
58
|
-
const i18nOptions = container.isRegistered(I18N_TOKENS.Options) ? container.resolve(I18N_TOKENS.Options) : void 0;
|
|
59
|
-
const detection = i18nOptions?.detection;
|
|
60
|
-
const detectionEnabled = detection ? detection.enabled !== false : true;
|
|
61
|
-
const strategy = (detection && "strategy" in detection && detection.strategy) ?? "cookie";
|
|
62
|
-
this._pathDetectionEnabled = detectionEnabled && strategy === "path";
|
|
63
|
-
this._prefixDefaultLocale = detection && "prefixDefaultLocale" in detection && detection.prefixDefaultLocale !== void 0 ? detection.prefixDefaultLocale : false;
|
|
64
|
-
if (this._pathDetectionEnabled) {
|
|
65
|
-
const allLocales = i18nOptions?.locales ?? ["en"];
|
|
66
|
-
const defaultLocale = i18nOptions?.defaultLocale ?? "en";
|
|
67
|
-
this._config = this._prefixDefaultLocale === true ? {
|
|
68
|
-
allLocales,
|
|
69
|
-
prefixedLocales: allLocales,
|
|
70
|
-
defaultLocale: null
|
|
71
|
-
} : {
|
|
72
|
-
allLocales,
|
|
73
|
-
prefixedLocales: allLocales.filter((l) => l !== defaultLocale),
|
|
74
|
-
defaultLocale
|
|
75
|
-
};
|
|
76
|
-
} else this._config = null;
|
|
77
|
-
if (detectionEnabled) this.setupLanguageDetection(i18nOptions);
|
|
78
|
-
if (this._config?.defaultLocale && this._prefixDefaultLocale === "redirect") this.setupDefaultLocaleRedirect(this._config.defaultLocale);
|
|
79
|
-
}
|
|
80
|
-
/** Whether path-based locale detection is enabled */
|
|
81
|
-
get enabled() {
|
|
82
|
-
return this._pathDetectionEnabled;
|
|
83
|
-
}
|
|
84
|
-
/** The computed locale path config, or null if path detection is disabled */
|
|
85
|
-
get localePathConfig() {
|
|
86
|
-
return this._config;
|
|
87
|
-
}
|
|
88
|
-
/** The prefixDefaultLocale setting (false, true, or 'redirect') */
|
|
89
|
-
get prefixDefaultLocale() {
|
|
90
|
-
return this._prefixDefaultLocale;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Expand a path into primary + locale-prefixed variants.
|
|
94
|
-
*
|
|
95
|
-
* @param path - The base path to expand
|
|
96
|
-
* @returns Array of resolved paths with locale metadata
|
|
97
|
-
*/
|
|
98
|
-
resolve(path) {
|
|
99
|
-
if (!this._config) return [{
|
|
100
|
-
path,
|
|
101
|
-
isLocaleVariant: false
|
|
102
|
-
}];
|
|
103
|
-
const constraint = this.buildLocaleConstraint();
|
|
104
|
-
const suffix = path === "/" ? "" : path;
|
|
105
|
-
if (this._config.defaultLocale === null) return [{
|
|
106
|
-
path: `/:locale${constraint}${suffix}`,
|
|
107
|
-
isLocaleVariant: true
|
|
108
|
-
}];
|
|
109
|
-
const result = [{
|
|
110
|
-
path,
|
|
111
|
-
isLocaleVariant: false
|
|
112
|
-
}];
|
|
113
|
-
if (this._config.prefixedLocales.length > 0) result.push({
|
|
114
|
-
path: `/:locale${constraint}${suffix}`,
|
|
115
|
-
isLocaleVariant: true
|
|
116
|
-
});
|
|
117
|
-
return result;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Build a Hono regex constraint from prefixed locales.
|
|
121
|
-
* e.g., `{en|de|fr}` — restricts `:locale` to only match known values.
|
|
122
|
-
*/
|
|
123
|
-
buildLocaleConstraint() {
|
|
124
|
-
return `{${(this._config.defaultLocale === null ? this._config.allLocales : this._config.prefixedLocales).join("|")}}`;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Apply Hono's languageDetector middleware and bridge the detected language
|
|
128
|
-
* to Stratal's LOCALE context variable.
|
|
129
|
-
*/
|
|
130
|
-
setupLanguageDetection(i18nOptions) {
|
|
131
|
-
const detectorOptions = buildDetectorOptions(i18nOptions);
|
|
132
|
-
this.honoApp.use("*", languageDetector(detectorOptions));
|
|
133
|
-
this.honoApp.use("*", async (c, next) => {
|
|
134
|
-
const language = c.get("language");
|
|
135
|
-
if (language) c.set(ROUTER_CONTEXT_KEYS.LOCALE, language);
|
|
136
|
-
await next();
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Redirect requests that include the default locale prefix to the unprefixed path.
|
|
141
|
-
* For example, `/en/users` → 301 redirect to `/users`.
|
|
142
|
-
*
|
|
143
|
-
* Only active when `prefixDefaultLocale` is `'redirect'`.
|
|
144
|
-
*/
|
|
145
|
-
setupDefaultLocaleRedirect(defaultLocale) {
|
|
146
|
-
const prefix = `/${defaultLocale}`;
|
|
147
|
-
this.honoApp.use("*", async (c, next) => {
|
|
148
|
-
const path = new URL(c.req.url).pathname;
|
|
149
|
-
if (path === prefix || path.startsWith(`${prefix}/`)) {
|
|
150
|
-
const stripped = path.slice(prefix.length) || "/";
|
|
151
|
-
return c.redirect(stripped, 301);
|
|
152
|
-
}
|
|
153
|
-
await next();
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
LocalePathService = __decorate([
|
|
158
|
-
Singleton(),
|
|
159
|
-
__decorateParam(0, inject(CONTAINER_TOKEN)),
|
|
160
|
-
__decorateParam(1, inject(ROUTER_TOKENS.HonoApp))
|
|
161
|
-
], LocalePathService);
|
|
162
|
-
//#endregion
|
|
163
|
-
export { resolveI18nOptions as i, locale_path_service_exports as n, buildDetectorOptions as r, LocalePathService as t };
|
|
164
|
-
|
|
165
|
-
//# sourceMappingURL=locale-path.service-CH0CaxwH.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"locale-path.service-CH0CaxwH.mjs","names":[],"sources":["../src/i18n/i18n.options.ts","../src/router/services/locale-path.service.ts"],"sourcesContent":["/**\n * I18n Module Options\n *\n * Configuration options for the I18n dynamic module.\n * Use with I18nModule.forRoot() to configure locale settings.\n * Use I18nModule.registerMessages() to add translations.\n */\n\nimport type { DetectorOptions } from 'hono/language';\n\n/**\n * Detection strategy for locale resolution\n *\n * - `'cookie'` — reads from the `locale` cookie (default)\n * - `'header'` — reads from the `Accept-Language` header\n * - `'querystring'` — reads from the `?locale=` query parameter\n * - `'path'` — reads from the first URL path segment (e.g., `/en/api/users`)\n */\nexport type DetectionStrategy = 'cookie' | 'header' | 'querystring' | 'path'\n\ninterface BaseDetection {\n /** Set to false to disable language detection entirely. @default true */\n enabled?: boolean\n}\n\n/**\n * Language detection options (discriminated by strategy)\n *\n * @example Cookie detection (default)\n * ```typescript\n * { strategy: 'cookie' }\n * ```\n *\n * @example Header detection\n * ```typescript\n * { strategy: 'header' }\n * ```\n *\n * @example Path detection\n * ```typescript\n * { strategy: 'path' }\n * ```\n *\n * @example Disable detection\n * ```typescript\n * { enabled: false }\n * ```\n */\nexport type LanguageDetectionOptions =\n | (BaseDetection & { strategy?: 'cookie'; cookieOptions?: DetectorOptions['cookieOptions'] })\n | (BaseDetection & { strategy: 'header' })\n | (BaseDetection & { strategy: 'querystring' })\n | (BaseDetection & {\n strategy: 'path'\n /**\n * Controls whether the default locale gets a URL path prefix.\n *\n * - `false` (default) — The default locale has no prefix (`/users`), other locales\n * are prefixed (`/fr/users`). Requests to the prefixed default locale (`/en/users`) return 404.\n * - `'redirect'` — Same as `false`, but requests to the prefixed default locale\n * (`/en/users`) are 301-redirected to the unprefixed path (`/users`).\n * - `true` — All locales are prefixed (`/en/users`, `/fr/users`).\n *\n * @default false\n */\n prefixDefaultLocale?: false | true | 'redirect'\n })\n | { enabled: false }\n\n/**\n * Options for configuring the I18n module\n *\n * @example\n * ```typescript\n * I18nModule.forRoot({\n * defaultLocale: 'en',\n * fallbackLocale: 'en',\n * locales: ['en', 'fr'],\n * detection: { strategy: 'header' },\n * })\n * ```\n */\nexport interface I18nModuleOptions {\n /**\n * Default locale for the application\n * @default 'en'\n */\n defaultLocale?: string\n\n /**\n * Fallback locale when translation is missing\n * @default 'en'\n */\n fallbackLocale?: string\n\n /**\n * List of supported locales\n * Request locales not in this list will fall back to defaultLocale\n */\n locales?: string[]\n\n /**\n * Language detection configuration\n * Controls how the locale is extracted from incoming requests\n */\n detection?: LanguageDetectionOptions\n}\n\n/**\n * Resolved options with all defaults applied\n * Used internally by I18n services\n */\nexport interface ResolvedI18nOptions {\n defaultLocale: string\n fallbackLocale: string\n locales: string[]\n detection: {\n enabled: boolean\n strategy: DetectionStrategy\n /** Resolved value of the path detection `prefixDefaultLocale` option. Only meaningful when `strategy` is `'path'`. */\n prefixDefaultLocale: false | true | 'redirect'\n }\n}\n\n/**\n * Resolve I18n options with defaults\n */\nexport function resolveI18nOptions(options?: I18nModuleOptions): ResolvedI18nOptions {\n const detection = options?.detection\n const enabled = detection ? (detection.enabled !== false) : true\n const strategy: DetectionStrategy = (detection && 'strategy' in detection) ? detection.strategy ?? 'cookie' : 'cookie'\n const prefixDefaultLocale: false | true | 'redirect' =\n (detection && 'prefixDefaultLocale' in detection && detection.prefixDefaultLocale !== undefined)\n ? detection.prefixDefaultLocale\n : false\n\n return {\n defaultLocale: options?.defaultLocale ?? 'en',\n fallbackLocale: options?.fallbackLocale ?? 'en',\n locales: options?.locales ?? ['en'],\n detection: { enabled, strategy, prefixDefaultLocale },\n }\n}\n\n/**\n * Build Hono languageDetector options from I18n module options\n */\nexport function buildDetectorOptions(options?: I18nModuleOptions): Partial<DetectorOptions> {\n const resolved = resolveI18nOptions(options)\n const strategy = resolved.detection.strategy\n\n const detectorOptions: Partial<DetectorOptions> = {\n order: [strategy],\n fallbackLanguage: resolved.defaultLocale,\n supportedLanguages: resolved.locales,\n lookupCookie: 'locale',\n lookupQueryString: 'locale',\n lookupFromPathIndex: 0,\n ignoreCase: true,\n }\n\n if (strategy === 'cookie') {\n detectorOptions.caches = ['cookie']\n if (options?.detection && 'cookieOptions' in options.detection && options.detection.cookieOptions) {\n detectorOptions.cookieOptions = options.detection.cookieOptions\n }\n } else {\n detectorOptions.caches = false\n }\n\n return detectorOptions\n}\n","import type { Context, MiddlewareHandler } from 'hono'\nimport { languageDetector } from 'hono/language'\nimport { inject } from '../../di'\nimport type { Container } from '../../di/container'\nimport { Singleton } from '../../di/decorators'\nimport { CONTAINER_TOKEN } from '../../di/tokens'\nimport { buildDetectorOptions, type I18nModuleOptions } from '../../i18n/i18n.options'\nimport { I18N_TOKENS } from '../../i18n/i18n.tokens'\nimport { ROUTER_CONTEXT_KEYS } from '../constants'\nimport type { HonoApp } from '../hono-app'\nimport { ROUTER_TOKENS } from '../router.tokens'\nimport type { LocalePathConfig, RouterEnv } from '../types'\n\n/**\n * A resolved path with locale variant metadata.\n */\nexport interface ResolvedPath {\n /** The fully resolved path (may include /:locale prefix) */\n path: string\n /** Whether this path is a locale-prefixed variant */\n isLocaleVariant: boolean\n}\n\n/**\n * Resolves locale path variants for route paths.\n *\n * Computes `LocalePathConfig` from `I18nModuleOptions` and provides\n * path expansion for locale-prefixed route variants.\n *\n * Also applies language detection and default locale redirect middleware\n * to HonoApp when resolved from the container.\n *\n * Registered as a singleton in the container.\n */\n@Singleton()\nexport class LocalePathService {\n private readonly _config: LocalePathConfig | null\n private readonly _pathDetectionEnabled: boolean\n private readonly _prefixDefaultLocale: false | true | 'redirect'\n\n constructor(\n @inject(CONTAINER_TOKEN) container: Container,\n @inject(ROUTER_TOKENS.HonoApp) private readonly honoApp: HonoApp,\n ) {\n const i18nOptions = container.isRegistered(I18N_TOKENS.Options)\n ? container.resolve<I18nModuleOptions>(I18N_TOKENS.Options)\n : undefined\n\n const detection = i18nOptions?.detection\n const detectionEnabled = detection ? detection.enabled !== false : true\n const strategy = (detection && 'strategy' in detection && detection.strategy) ?? 'cookie'\n\n this._pathDetectionEnabled = detectionEnabled && strategy === 'path'\n this._prefixDefaultLocale = (detection && 'prefixDefaultLocale' in detection && detection.prefixDefaultLocale !== undefined)\n ? detection.prefixDefaultLocale\n : false\n\n if (this._pathDetectionEnabled) {\n const allLocales = i18nOptions?.locales ?? ['en']\n const defaultLocale = i18nOptions?.defaultLocale ?? 'en'\n\n this._config = this._prefixDefaultLocale === true\n ? { allLocales, prefixedLocales: allLocales, defaultLocale: null }\n : { allLocales, prefixedLocales: allLocales.filter(l => l !== defaultLocale), defaultLocale }\n } else {\n this._config = null\n }\n\n // Apply locale middleware to HonoApp\n if (detectionEnabled) {\n this.setupLanguageDetection(i18nOptions)\n }\n if (this._config?.defaultLocale && this._prefixDefaultLocale === 'redirect') {\n this.setupDefaultLocaleRedirect(this._config.defaultLocale)\n }\n }\n\n /** Whether path-based locale detection is enabled */\n get enabled(): boolean {\n return this._pathDetectionEnabled\n }\n\n /** The computed locale path config, or null if path detection is disabled */\n get localePathConfig(): LocalePathConfig | null {\n return this._config\n }\n\n /** The prefixDefaultLocale setting (false, true, or 'redirect') */\n get prefixDefaultLocale(): false | true | 'redirect' {\n return this._prefixDefaultLocale\n }\n\n /**\n * Expand a path into primary + locale-prefixed variants.\n *\n * @param path - The base path to expand\n * @returns Array of resolved paths with locale metadata\n */\n resolve(path: string): ResolvedPath[] {\n if (!this._config) {\n return [{ path, isLocaleVariant: false }]\n }\n\n const constraint = this.buildLocaleConstraint()\n const suffix = path === '/' ? '' : path\n\n // All locales prefixed (prefixDefaultLocale: true)\n if (this._config.defaultLocale === null) {\n return [{ path: `/:locale${constraint}${suffix}`, isLocaleVariant: true }]\n }\n\n // Default locale unprefixed, other locales prefixed\n const result: ResolvedPath[] = [{ path, isLocaleVariant: false }]\n\n // Only add /:locale route when there are non-default locales to match\n // (z.enum requires at least one value)\n if (this._config.prefixedLocales.length > 0) {\n result.push({ path: `/:locale${constraint}${suffix}`, isLocaleVariant: true })\n }\n\n return result\n }\n\n /**\n * Build a Hono regex constraint from prefixed locales.\n * e.g., `{en|de|fr}` — restricts `:locale` to only match known values.\n */\n private buildLocaleConstraint(): string {\n const locales = this._config!.defaultLocale === null\n ? this._config!.allLocales\n : this._config!.prefixedLocales\n return `{${locales.join('|')}}`\n }\n\n /**\n * Apply Hono's languageDetector middleware and bridge the detected language\n * to Stratal's LOCALE context variable.\n */\n private setupLanguageDetection(i18nOptions?: I18nModuleOptions): void {\n const detectorOptions = buildDetectorOptions(i18nOptions)\n\n // Apply Hono's languageDetector\n this.honoApp.use('*', languageDetector(detectorOptions) as MiddlewareHandler<RouterEnv>)\n\n // Bridge: sync Hono's 'language' variable to Stratal's LOCALE context key\n this.honoApp.use('*', async (c: Context<RouterEnv>, next: () => Promise<void>) => {\n const language = c.get('language')\n if (language) {\n c.set(ROUTER_CONTEXT_KEYS.LOCALE, language)\n }\n await next()\n })\n }\n\n /**\n * Redirect requests that include the default locale prefix to the unprefixed path.\n * For example, `/en/users` → 301 redirect to `/users`.\n *\n * Only active when `prefixDefaultLocale` is `'redirect'`.\n */\n private setupDefaultLocaleRedirect(defaultLocale: string): void {\n const prefix = `/${defaultLocale}`\n this.honoApp.use('*', async (c: Context<RouterEnv>, next: () => Promise<void>) => {\n const path = new URL(c.req.url).pathname\n if (path === prefix || path.startsWith(`${prefix}/`)) {\n const stripped = path.slice(prefix.length) || '/'\n return c.redirect(stripped, 301)\n }\n await next()\n })\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
//#region src/di/metadata.ts
|
|
2
|
-
const STORE_KEY = Symbol.for("stratal:metadata:store");
|
|
3
|
-
const g = globalThis;
|
|
4
|
-
const store = g[STORE_KEY] ?? (g[STORE_KEY] = /* @__PURE__ */ new WeakMap());
|
|
5
|
-
function getKeyTarget(target, propertyKey) {
|
|
6
|
-
if (propertyKey === void 0) return target;
|
|
7
|
-
let propMap = store.get(target);
|
|
8
|
-
if (!propMap) {
|
|
9
|
-
propMap = /* @__PURE__ */ new Map();
|
|
10
|
-
store.set(target, propMap);
|
|
11
|
-
}
|
|
12
|
-
let propTarget = propMap.get(propertyKey);
|
|
13
|
-
if (!propTarget) {
|
|
14
|
-
propTarget = Object.create(null);
|
|
15
|
-
propMap.set(propertyKey, propTarget);
|
|
16
|
-
}
|
|
17
|
-
return propTarget;
|
|
18
|
-
}
|
|
19
|
-
function defineMetadata(key, value, target, propertyKey) {
|
|
20
|
-
const resolved = getKeyTarget(target, propertyKey);
|
|
21
|
-
let meta = store.get(resolved);
|
|
22
|
-
if (!meta) {
|
|
23
|
-
meta = /* @__PURE__ */ new Map();
|
|
24
|
-
store.set(resolved, meta);
|
|
25
|
-
}
|
|
26
|
-
meta.set(key, value);
|
|
27
|
-
}
|
|
28
|
-
function getMetadata(key, target, propertyKey) {
|
|
29
|
-
const resolved = getKeyTarget(target, propertyKey);
|
|
30
|
-
return store.get(resolved)?.get(key);
|
|
31
|
-
}
|
|
32
|
-
function hasMetadata(key, target, propertyKey) {
|
|
33
|
-
const resolved = getKeyTarget(target, propertyKey);
|
|
34
|
-
return store.get(resolved)?.has(key) ?? false;
|
|
35
|
-
}
|
|
36
|
-
//#endregion
|
|
37
|
-
export { getMetadata as n, hasMetadata as r, defineMetadata as t };
|
|
38
|
-
|
|
39
|
-
//# sourceMappingURL=metadata-DzzprcID.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-DzzprcID.mjs","names":[],"sources":["../src/di/metadata.ts"],"sourcesContent":["type MetadataTarget = object | string | symbol\n\nconst STORE_KEY = Symbol.for('stratal:metadata:store')\nconst g = globalThis as Record<symbol, unknown>\nconst store: WeakMap<object, Map<MetadataTarget, unknown>> =\n (g[STORE_KEY] as WeakMap<object, Map<MetadataTarget, unknown>>) ??\n (g[STORE_KEY] = new WeakMap<object, Map<MetadataTarget, unknown>>())\n\nfunction getKeyTarget(target: object, propertyKey?: string | symbol): object {\n if (propertyKey === undefined) return target\n let propMap = store.get(target)\n if (!propMap) {\n propMap = new Map()\n store.set(target, propMap)\n }\n let propTarget = propMap.get(propertyKey) as object | undefined\n if (!propTarget) {\n propTarget = Object.create(null) as object\n propMap.set(propertyKey, propTarget)\n }\n return propTarget\n}\n\nexport function defineMetadata(key: symbol, value: unknown, target: object, propertyKey?: string | symbol): void {\n const resolved = getKeyTarget(target, propertyKey)\n let meta = store.get(resolved)\n if (!meta) {\n meta = new Map()\n store.set(resolved, meta)\n }\n meta.set(key, value)\n}\n\nexport function getMetadata<T = unknown>(key: symbol, target: object, propertyKey?: string | symbol): T | undefined {\n const resolved = getKeyTarget(target, propertyKey)\n return store.get(resolved)?.get(key) as T | undefined\n}\n\nexport function hasMetadata(key: symbol, target: object, propertyKey?: string | symbol): boolean {\n const resolved = getKeyTarget(target, propertyKey)\n return store.get(resolved)?.has(key) ?? false\n}\n"],"mappings":";AAEA,MAAM,YAAY,OAAO,IAAI,wBAAwB;AACrD,MAAM,IAAI;AACV,MAAM,QACH,EAAE,eACF,EAAE,6BAAa,IAAI,QAA8C;AAEpE,SAAS,aAAa,QAAgB,aAAuC;CAC3E,IAAI,gBAAgB,KAAA,GAAW,OAAO;CACtC,IAAI,UAAU,MAAM,IAAI,MAAM;CAC9B,IAAI,CAAC,SAAS;EACZ,0BAAU,IAAI,IAAI;EAClB,MAAM,IAAI,QAAQ,OAAO;CAC3B;CACA,IAAI,aAAa,QAAQ,IAAI,WAAW;CACxC,IAAI,CAAC,YAAY;EACf,aAAa,OAAO,OAAO,IAAI;EAC/B,QAAQ,IAAI,aAAa,UAAU;CACrC;CACA,OAAO;AACT;AAEA,SAAgB,eAAe,KAAa,OAAgB,QAAgB,aAAqC;CAC/G,MAAM,WAAW,aAAa,QAAQ,WAAW;CACjD,IAAI,OAAO,MAAM,IAAI,QAAQ;CAC7B,IAAI,CAAC,MAAM;EACT,uBAAO,IAAI,IAAI;EACf,MAAM,IAAI,UAAU,IAAI;CAC1B;CACA,KAAK,IAAI,KAAK,KAAK;AACrB;AAEA,SAAgB,YAAyB,KAAa,QAAgB,aAA8C;CAClH,MAAM,WAAW,aAAa,QAAQ,WAAW;CACjD,OAAO,MAAM,IAAI,QAAQ,GAAG,IAAI,GAAG;AACrC;AAEA,SAAgB,YAAY,KAAa,QAAgB,aAAwC;CAC/F,MAAM,WAAW,aAAa,QAAQ,WAAW;CACjD,OAAO,MAAM,IAAI,QAAQ,GAAG,IAAI,GAAG,KAAK;AAC1C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module-registry-NxX5O0Qk.mjs","names":["internal.getDefaultEntry","internal.getGroups","internal.getGlobalMiddleware"],"sources":["../src/module/module-ref.ts","../src/module/lazy-module-loader.ts","../src/rate-limiter/errors.ts","../src/rate-limiter/rate-limiter.tokens.ts","../src/rate-limiter/throttle.middleware.ts","../src/router/router.error.ts","../src/router/router.internals.ts","../src/router/router.ts","../src/module/module-registry.ts"],"sourcesContent":["import type { Container } from '../di/container'\nimport type { InjectionToken } from '../di/types'\nimport type { Constructor } from '../types'\n\n/**\n * Handle to a lazily loaded module, returned by {@link LazyModuleLoader.load}.\n *\n * Resolves providers from the global container, so singletons registered by the\n * lazy module persist across requests.\n *\n * Note: request-scoped providers resolved via {@link ModuleRef.get} degrade to\n * transient instances (there is no ambient request scope here). To obtain a\n * true per-request instance, resolve the token from the request container\n * inside a request scope instead.\n */\nexport class ModuleRef {\n constructor(\n private readonly container: Container,\n /** The module class this ref was loaded from. */\n readonly moduleClass: Constructor,\n ) { }\n\n /** Resolve a provider from the lazily loaded module (global scope). */\n get<T>(token: InjectionToken<T>): T {\n return this.container.resolve(token)\n }\n\n /** Async variant of {@link ModuleRef.get}, matching the NestJS API shape. */\n resolve<T>(token: InjectionToken<T>): Promise<T> {\n return Promise.resolve(this.container.resolve(token))\n }\n}\n","import { inject } from '../di/decorators'\nimport type { Container } from '../di/container'\nimport { DI_TOKENS } from '../di/tokens'\nimport { LOGGER_TOKENS, type LoggerService } from '../logger'\nimport type { Constructor } from '../types'\nimport { ModuleRef } from './module-ref'\nimport type { ModuleRegistry } from './module-registry'\nimport type { DynamicModule, ModuleClass } from './types'\n\n/**\n * Loads modules on demand (NestJS-style), so optional features stay out of the\n * cold-start path until first use.\n *\n * Inject {@link DI_TOKENS.LazyModuleLoader} and call {@link load}:\n *\n * ```ts\n * const ref = await loader.load(() => import('./reports.module').then(m => m.ReportsModule))\n * const reports = ref.get(ReportService)\n * ```\n *\n * The loaded module's nested `imports` and `providers` are registered into the\n * global container and its `onInitialize` hook runs once. Controllers, queue\n * consumers, and cron jobs are skipped — that wiring is finalized at bootstrap.\n * Repeat loads of the same module return the cached {@link ModuleRef} without\n * re-registering.\n */\nexport class LazyModuleLoader {\n private readonly cache = new Map<Constructor, ModuleRef>()\n private readonly inFlight = new Map<Constructor, Promise<ModuleRef>>()\n\n constructor(\n @inject(DI_TOKENS.ModuleRegistry) private readonly registry: ModuleRegistry,\n @inject(DI_TOKENS.Container) private readonly container: Container,\n @inject(LOGGER_TOKENS.LoggerService) private readonly logger: LoggerService,\n ) { }\n\n async load(loaderFn: () => Promise<ModuleClass | DynamicModule>): Promise<ModuleRef> {\n const loaded = await loaderFn()\n const { moduleClass } = this.registry.resolveModule(loaded)\n\n const cached = this.cache.get(moduleClass)\n if (cached) return cached\n\n const inFlight = this.inFlight.get(moduleClass)\n if (inFlight) return inFlight\n\n const promise = this.registerAndBuild(moduleClass, loaded)\n this.inFlight.set(moduleClass, promise)\n try {\n return await promise\n } finally {\n this.inFlight.delete(moduleClass)\n }\n }\n\n private async registerAndBuild(\n moduleClass: Constructor,\n loaded: ModuleClass | DynamicModule,\n ): Promise<ModuleRef> {\n this.logger.debug(`Lazy loading module: ${moduleClass.name}`)\n await this.registry.registerLazy(loaded)\n const ref = new ModuleRef(this.container.getRootContainer(), moduleClass)\n this.cache.set(moduleClass, ref)\n return ref\n }\n}\n","import { ApplicationError, HttpException } from '../errors'\n\n/**\n * Thrown when a request exceeds a configured rate limit.\n *\n * HTTP Status: 429 Too Many Requests\n *\n * The {@link ExceptionHandler} renders the body via content negotiation\n * (HTML for HTML clients, JSON for everything else). Standard rate-limit\n * headers (`Retry-After`, `X-RateLimit-*`) are injected by the\n * `respond()` callback registered via `RateLimiterModule.onException`.\n */\nexport class TooManyRequestsError extends HttpException {\n constructor(\n public readonly info: { retryAfter: number; limit: number; resetAt: number },\n ) {\n super(429, 'Too many requests')\n }\n}\n\nexport class RateLimiterError extends ApplicationError {}\n","export const RATE_LIMITER_TOKENS = {\n Registry: Symbol.for('stratal:rate-limiter:registry'),\n Store: Symbol.for('stratal:rate-limiter:store'),\n StoreFactory: Symbol.for('stratal:rate-limiter:store-factory'),\n Options: Symbol.for('stratal:rate-limiter:options'),\n /**\n * Per-app marker registered by RateLimiterModule.onInitialize. Used by\n * ThrottleMiddleware to detect \"module not imported\".\n */\n ModuleMarker: Symbol.for('stratal:rate-limiter:module-marker'),\n} as const\n\nexport type RateLimiterToken = (typeof RATE_LIMITER_TOKENS)[keyof typeof RATE_LIMITER_TOKENS]\n","import { inject } from '../di'\nimport { CONTAINER_TOKEN, type Container } from '../di'\nimport { Transient } from '../di/decorators'\nimport type { Middleware, Next } from '../router/middleware.interface'\nimport type { RouterContext } from '../router/router-context'\nimport type { Constructor } from '../types'\nimport { RateLimiterError } from './errors'\nimport type { RateLimiterRegistry } from './rate-limiter-registry'\nimport { RATE_LIMITER_TOKENS } from './rate-limiter.tokens'\n\nconst cache = new Map<string, Constructor<Middleware>>()\n\n/**\n * Memoized factory that produces a Stratal `Middleware` class bound to a\n * named limiter. Calling twice with the same name returns the *same* class\n * — important for `Router.middleware` deduplication via class identity.\n *\n * Detection of \"module not imported\" works against a per-app marker\n * registered by `RateLimiterModule.onInitialize`. We check\n * `isRegistered(marker)` at request time before resolving Registry.\n */\nexport function createThrottleMiddleware(name: string): Constructor<Middleware> {\n const existing = cache.get(name)\n if (existing) return existing\n\n @Transient()\n class ThrottleMiddleware implements Middleware {\n constructor(\n @inject(CONTAINER_TOKEN) private readonly container: Container,\n ) {}\n\n handle(ctx: RouterContext, next: Next): Promise<Response | void> {\n if (!this.container.isRegistered(RATE_LIMITER_TOKENS.ModuleMarker)) {\n throw new RateLimiterError(`RateLimiterModule was not imported. Cannot resolve throttle \"${name}\". Import RateLimiterModule.forRoot({ store: ... }) in your AppModule.`)\n }\n const registry = this.container.resolve<RateLimiterRegistry>(RATE_LIMITER_TOKENS.Registry)\n return registry.handle(name, ctx, next)\n }\n }\n\n Object.defineProperty(ThrottleMiddleware, 'name', { value: `Throttle(${name})` })\n cache.set(name, ThrottleMiddleware)\n return ThrottleMiddleware\n}\n\n/**\n * Test-only escape hatch: clear the per-name middleware class cache.\n * Production code never needs this.\n */\nexport function _resetThrottleMiddlewareCache(): void {\n cache.clear()\n}\n","import { ApplicationError } from '../errors'\n\nexport class RouterError extends ApplicationError {}\n","/**\n * Symbol keys for Router internal accessors.\n *\n * These symbols are NOT exported from the public `stratal/router` barrel.\n * Only internal modules (RouterResolver) import them, keeping the Router's\n * public API clean — users never see these methods.\n *\n * Declared as individual unique symbols so TypeScript can distinguish\n * their return types in computed property access.\n *\n * @internal\n */\n\n/** @internal */\nexport const getDefaultEntry: unique symbol = Symbol('Router.getDefaultEntry')\n/** @internal */\nexport const getGroups: unique symbol = Symbol('Router.getGroups')\n/** @internal */\nexport const getGlobalMiddleware: unique symbol = Symbol('Router.getGlobalMiddleware')\n","import type { ZodObject } from '../i18n/validation/zod'\nimport { createThrottleMiddleware } from '../rate-limiter/throttle.middleware'\nimport type { Constructor } from '../types'\nimport { RouterError } from './router.error'\nimport type { Middleware } from './middleware.interface'\nimport * as internal from './router.internals'\n\n/**\n * Configuration for a sub-group created via `router.group()`.\n */\nexport interface RouterGroupConfig {\n prefix?: string\n domain?: string\n name?: string\n middleware?: Constructor<Middleware>[]\n version?: string | string[]\n hideFromDocs?: boolean\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- ZodObject generics require any for flexible shape parameter\n params?: ZodObject<any>\n}\n\n/**\n * Internal entry representing a sub-group or the default scope.\n * @internal — used by RouterResolver, not exported publicly.\n */\nexport interface RouterEntry {\n prefix?: string\n domain?: string\n name?: string\n middleware: Constructor<Middleware>[]\n version?: string | string[]\n hideFromDocs?: boolean\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- ZodObject generics require any for flexible shape parameter\n params?: ZodObject<any>\n /** Controllers in this entry. undefined = all controllers not in any sub-group */\n controllers?: Constructor[]\n}\n\n/**\n * Modules implement this to configure routes and middleware.\n * Replaces `MiddlewareConfigurable`.\n *\n * @example\n * ```typescript\n * @Module({ controllers: [UsersController, PostsController] })\n * export class ApiModule implements RouteConfigurable {\n * configureRoutes(router: Router): void {\n * router\n * .name('api.')\n * .middleware(CorsMiddleware)\n * .version('1')\n * }\n * }\n * ```\n */\nexport interface RouteConfigurable {\n configureRoutes(router: Router): void\n}\n\n/**\n * Fluent builder for route and middleware configuration.\n *\n * Scoped methods (`middleware()`, `prefix()`, `domain()`, `name()`, `version()`, `hideFromDocs()`)\n * apply only to this module's controllers or the sub-group's controllers.\n *\n * `use()` registers global middleware (all routes in the entire app).\n * Only callable on the root Router — throws inside `group()` callbacks.\n *\n * `group()` creates sub-groups for specific controllers with a callback.\n * Controllers in a sub-group are excluded from the parent scope.\n */\nexport class Router {\n private readonly _isChild: boolean\n private readonly _defaultEntry: RouterEntry = { middleware: [] }\n private readonly _groups: RouterEntry[] = []\n private readonly _globalMiddleware: Constructor<Middleware>[] = []\n\n constructor(isChild = false) {\n this._isChild = isChild\n }\n\n /** Dynamic path prefix. For shared segments like `/:companyId` */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- ZodObject generics require any for flexible shape parameter\n prefix(path: string, params?: ZodObject<any>): this {\n this._defaultEntry.prefix = path\n this._defaultEntry.params = params\n return this\n }\n\n /** Domain pattern for controllers in this scope */\n domain(pattern: string): this {\n this._defaultEntry.domain = pattern\n return this\n }\n\n /** Name prefix for routes in this scope */\n name(prefix: string): this {\n this._defaultEntry.name = prefix\n return this\n }\n\n /** Middleware applied to controllers in this scope */\n middleware(...middlewares: Constructor<Middleware>[]): this {\n this._defaultEntry.middleware.push(...middlewares)\n return this\n }\n\n /**\n * Apply a named rate limiter to controllers in this scope.\n *\n * The named limiter must be registered via `RateLimiterRegistry.for(name, ...)`\n * (typically inside a module's `onInitialize` hook), and the user must\n * import `RateLimiterModule.forRoot({ store: ... })` in their AppModule.\n *\n * @example\n * ```typescript\n * router.prefix('/uploads').throttle('uploads')\n * router.group([AdminController], (admin) => admin.throttle('admin'))\n * ```\n */\n throttle(name: string): this {\n this._defaultEntry.middleware.push(createThrottleMiddleware(name))\n return this\n }\n\n /** API version for controllers in this scope */\n version(version: string | string[]): this {\n this._defaultEntry.version = version\n return this\n }\n\n /** Hide/show routes in this scope from OpenAPI docs */\n hideFromDocs(hide = true): this {\n this._defaultEntry.hideFromDocs = hide\n return this\n }\n\n /**\n * Global middleware — applied to ALL routes in the entire app.\n * Only callable on the root Router. Throws if called inside `group()`.\n */\n use(...middlewares: Constructor<Middleware>[]): this {\n if (this._isChild) {\n throw new RouterError('router.use() is only allowed on the root Router. It cannot be called inside a group() callback.')\n }\n this._globalMiddleware.push(...middlewares)\n return this\n }\n\n /**\n * Create a sub-group for specific controllers/gateways.\n * Controllers in a sub-group are excluded from the parent (default) scope.\n * The callback receives a new Router (without `use()`) for fluent configuration.\n */\n group(controllers: Constructor[], callback: (router: Omit<Router, 'use'>) => void): this {\n const childRouter = new Router(true)\n callback(childRouter)\n\n this._groups.push({\n ...childRouter._defaultEntry,\n controllers,\n })\n return this\n }\n\n // --- Internal accessors via symbol keys (invisible to consumers) ---\n\n [internal.getDefaultEntry](): RouterEntry {\n return this._defaultEntry\n }\n\n [internal.getGroups](): RouterEntry[] {\n return this._groups\n }\n\n [internal.getGlobalMiddleware](): Constructor<Middleware>[] {\n return this._globalMiddleware\n }\n}\n","import type { Container } from '../di/container'\nimport { isListener } from '../events'\nimport type { LoggerService } from '../logger'\nimport { Router, type RouteConfigurable } from '../router/router'\nimport { isCommand } from '../quarry/is-command'\nimport { isSeeder } from '../seeder/is-seeder'\nimport type { Constructor } from '../types'\nimport { getModuleOptions } from './module.decorator'\nimport type { ExceptionHandler } from '../errors/exception-handler'\nimport type {\n DynamicModule,\n InjectionToken,\n ModuleClass,\n ModuleContext,\n ModuleOptions,\n OnException,\n OnInitialize,\n OnShutdown,\n Provider,\n} from './types'\n\n\ninterface RegisteredModule {\n moduleClass: Constructor\n options: ModuleOptions\n instance: object | null\n hasLifecycle: boolean\n}\n\nexport class ModuleRegistry {\n private modules: RegisteredModule[] = []\n private registeredClasses = new Set<Constructor>()\n private initialized = false\n\n private allControllers: Constructor[] = []\n private allConsumers: Constructor[] = []\n private allJobs: Constructor[] = []\n private allListeners: Constructor[] = []\n private allCommands: Constructor[] = []\n private allSeeders: Constructor[] = []\n private allRouterConfigs: { router: Router; controllers: Constructor[] }[] = []\n\n constructor(\n private readonly container: Container,\n private readonly logger: LoggerService\n ) { }\n\n register(moduleOrDynamic: ModuleClass | DynamicModule): void {\n const { moduleClass, options } = this.resolveModule(moduleOrDynamic)\n\n if (this.handleAlreadyRegistered(moduleClass, moduleOrDynamic)) return\n\n this.registeredClasses.add(moduleClass)\n this.logger.info(`Registering module: ${moduleClass.name}`)\n\n for (const ImportedModule of options.imports ?? []) {\n this.register(ImportedModule)\n }\n\n const registered = this.registerModuleNode(moduleClass, options, { includeHttpWiring: true })\n\n // Eager register() is synchronous and assumes the bootstrap initialize()\n // batch will run lifecycle hooks. If it's called AFTER initialization (e.g. a\n // built-in subsystem registered on first use), that batch has finished and\n // won't revisit this module — so a lifecycle hook would be silently dropped.\n // Surface it instead of failing silently; load such modules via\n // LazyModuleLoader (registerLazy), which runs onInitialize immediately.\n if (this.initialized && registered.hasLifecycle) {\n this.logger.warn(\n `Module ${moduleClass.name} was registered eagerly after initialization; its onInitialize/onShutdown/configureRoutes hooks will not run. Load it via LazyModuleLoader instead.`,\n )\n }\n }\n\n /**\n * Register a module on demand (NestJS-style lazy loading). Registers nested\n * imports recursively and providers, then runs `onInitialize` immediately\n * (the bootstrap-time batch {@link initialize} has already completed).\n *\n * Controllers, queue consumers, and cron jobs are SKIPPED — route, queue, and\n * cron wiring is finalized at bootstrap and cannot be extended at runtime.\n */\n async registerLazy(moduleOrDynamic: ModuleClass | DynamicModule): Promise<void> {\n const { moduleClass, options } = this.resolveModule(moduleOrDynamic)\n\n if (this.handleAlreadyRegistered(moduleClass, moduleOrDynamic)) return\n\n this.registeredClasses.add(moduleClass)\n this.logger.info(`Lazily registering module: ${moduleClass.name}`)\n\n for (const ImportedModule of options.imports ?? []) {\n await this.registerLazy(ImportedModule)\n }\n\n const registered = this.registerModuleNode(moduleClass, options, { includeHttpWiring: false })\n\n if (registered.hasLifecycle) {\n const instance = new registered.moduleClass()\n registered.instance = instance\n if (this.hasOnInitialize(instance)) {\n const context: ModuleContext = { container: this.container, logger: this.logger }\n this.logger.info(`Initializing (lazy): ${registered.moduleClass.name}`)\n await instance.onInitialize(context)\n }\n }\n }\n\n registerAll(modules: (ModuleClass | DynamicModule)[]): void {\n for (const module of modules) {\n this.register(module)\n }\n }\n\n hasRegistered(moduleClass: Constructor): boolean {\n return this.registeredClasses.has(moduleClass)\n }\n\n /**\n * Handle re-registration of an already-known module. For a DynamicModule,\n * its extra providers are wired (without re-running lifecycle); for a plain\n * class it is a no-op. Returns true when the module was already registered.\n */\n private handleAlreadyRegistered(\n moduleClass: Constructor,\n moduleOrDynamic: ModuleClass | DynamicModule,\n ): boolean {\n if (!this.registeredClasses.has(moduleClass)) return false\n\n if (this.isDynamicModule(moduleOrDynamic)) {\n this.logger.debug(`Module ${moduleClass.name} already registered, registering DynamicModule providers`)\n const { module: _, ...dynamicRest } = moduleOrDynamic\n for (const provider of dynamicRest.providers ?? []) {\n this.registerProvider(provider)\n }\n } else {\n this.logger.debug(`Module ${moduleClass.name} already registered, skipping`)\n }\n return true\n }\n\n /**\n * Register a single module's providers (and, for eager registration, its\n * controllers/consumers/jobs), detect lifecycle hooks, and record it.\n * Assumes the module's `imports` have already been registered by the caller.\n */\n private registerModuleNode(\n moduleClass: Constructor,\n options: ModuleOptions,\n { includeHttpWiring }: { includeHttpWiring: boolean },\n ): RegisteredModule {\n for (const provider of options.providers ?? []) {\n this.registerProvider(provider, { lazy: !includeHttpWiring, moduleName: moduleClass.name })\n }\n\n if (includeHttpWiring) {\n for (const controller of options.controllers ?? []) {\n this.container.register(controller)\n this.allControllers.push(controller)\n }\n\n for (const consumer of options.consumers ?? []) {\n this.container.register(consumer)\n this.allConsumers.push(consumer)\n this.logger.info(`Collected consumer: ${consumer.name}`, { queueCount: this.allConsumers.length })\n }\n\n for (const job of options.jobs ?? []) {\n this.container.register(job)\n this.allJobs.push(job)\n }\n } else {\n const skipped: string[] = []\n if (options.controllers?.length) skipped.push('controllers')\n if (options.consumers?.length) skipped.push('consumers')\n if (options.jobs?.length) skipped.push('jobs')\n if ('configureRoutes' in moduleClass.prototype) skipped.push('configureRoutes')\n if ('onException' in moduleClass.prototype) skipped.push('onException')\n if (skipped.length) {\n this.logger.warn(\n `Lazy module ${moduleClass.name} declares ${skipped.join('/')} which are skipped — ` +\n `route, queue, cron, and exception-handler wiring is finalized at bootstrap`,\n )\n }\n }\n\n const hasLifecycle =\n 'onInitialize' in moduleClass.prototype ||\n 'onShutdown' in moduleClass.prototype ||\n 'onException' in moduleClass.prototype ||\n 'configureRoutes' in moduleClass.prototype\n\n const registered: RegisteredModule = { moduleClass, options, instance: null, hasLifecycle }\n this.modules.push(registered)\n return registered\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) return\n\n this.logger.info('Initializing modules...')\n\n const context: ModuleContext = {\n container: this.container,\n logger: this.logger,\n }\n\n // Snapshot: a module's onInitialize may lazily load another module\n // (LazyModuleLoader.load → registerLazy), which pushes to this.modules and\n // initializes it itself. Iterating a snapshot prevents the batch loop from\n // re-visiting (and double-initializing) those lazily-added modules.\n for (const registered of [...this.modules]) {\n if (!registered.hasLifecycle) continue\n\n const instance = new registered.moduleClass()\n registered.instance = instance\n\n if (this.hasOnInitialize(instance)) {\n this.logger.info(`Initializing: ${registered.moduleClass.name}`)\n await instance.onInitialize(context)\n }\n }\n\n this.initialized = true\n this.logger.info('All modules initialized')\n }\n\n getAllControllers(): Constructor[] {\n return this.allControllers\n }\n\n getAllConsumers(): Constructor[] {\n return this.allConsumers\n }\n\n getAllJobs(): Constructor[] {\n return this.allJobs\n }\n\n getAllListeners(): Constructor[] {\n return this.allListeners\n }\n\n getAllCommands(): Constructor[] {\n return this.allCommands\n }\n\n getAllSeeders(): Constructor[] {\n return this.allSeeders\n }\n\n getAllRouterConfigs(): { router: Router; controllers: Constructor[] }[] {\n if (this.allRouterConfigs.length === 0) {\n for (const { moduleClass, options, instance } of this.modules) {\n if (instance && this.hasRouteConfigurable(instance)) {\n this.logger.debug(`Configuring routes for: ${moduleClass.name}`)\n const router = new Router()\n instance.configureRoutes(router)\n const moduleControllers = options.controllers ?? []\n this.allRouterConfigs.push({ router, controllers: moduleControllers })\n }\n }\n }\n return this.allRouterConfigs\n }\n\n configureExceptionHandlers(handler: ExceptionHandler): void {\n for (const { moduleClass, instance } of this.modules) {\n if (instance && this.hasOnException(instance)) {\n this.logger.debug(`Configuring exception handlers for: ${moduleClass.name}`)\n instance.onException(handler)\n }\n }\n }\n\n async shutdown(): Promise<void> {\n this.logger.info('Shutting down modules...')\n\n const context: ModuleContext = {\n container: this.container,\n logger: this.logger,\n }\n\n const reversed = [...this.modules].reverse()\n\n for (const { moduleClass, instance } of reversed) {\n if (instance && this.hasOnShutdown(instance)) {\n try {\n await instance.onShutdown(context)\n } catch (error) {\n this.logger.error(`Error shutting down ${moduleClass.name}:`, error as Error)\n }\n }\n }\n\n this.logger.info('All modules shut down')\n }\n\n private hasRouteConfigurable(instance: unknown): instance is RouteConfigurable {\n return (\n typeof instance === 'object' &&\n instance !== null &&\n 'configureRoutes' in instance &&\n typeof (instance as RouteConfigurable).configureRoutes === 'function'\n )\n }\n\n private hasOnInitialize(instance: unknown): instance is OnInitialize {\n return (\n typeof instance === 'object' &&\n instance !== null &&\n 'onInitialize' in instance &&\n typeof (instance as OnInitialize).onInitialize === 'function'\n )\n }\n\n private hasOnShutdown(instance: unknown): instance is OnShutdown {\n return (\n typeof instance === 'object' &&\n instance !== null &&\n 'onShutdown' in instance &&\n typeof (instance as OnShutdown).onShutdown === 'function'\n )\n }\n\n private hasOnException(instance: unknown): instance is OnException {\n return (\n typeof instance === 'object' &&\n instance !== null &&\n 'onException' in instance &&\n typeof (instance as OnException).onException === 'function'\n )\n }\n\n resolveModule(moduleOrDynamic: ModuleClass | DynamicModule): {\n moduleClass: Constructor\n options: ModuleOptions\n } {\n if (this.isDynamicModule(moduleOrDynamic)) {\n const { module: moduleClass, ...dynamicRest } = moduleOrDynamic\n\n const decoratorOptions = getModuleOptions(moduleClass) ?? {}\n const mergedOptions: ModuleOptions = {\n ...decoratorOptions,\n ...dynamicRest,\n providers: [...(decoratorOptions.providers ?? []), ...(dynamicRest.providers ?? [])],\n imports: [...(decoratorOptions.imports ?? [])],\n }\n\n return { moduleClass: moduleClass, options: mergedOptions }\n }\n\n const moduleClass = moduleOrDynamic as Constructor\n const options = getModuleOptions(moduleClass) ?? {}\n return { moduleClass, options }\n }\n\n isDynamicModule(value: unknown): value is DynamicModule {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'module' in value &&\n typeof (value as DynamicModule).module === 'function'\n )\n }\n\n private registerProvider(\n provider: Provider,\n { lazy = false, moduleName }: { lazy?: boolean; moduleName?: string } = {},\n ): void {\n if (lazy) {\n const token = this.providerToken(provider)\n // A lazy module registers onto the shared root container. If its token is\n // already bound (by an eagerly-registered or previously-loaded module),\n // overriding would silently clobber that binding — and break any\n // shared-singleton rendezvous. Keep the existing binding and warn.\n if (token !== null && this.container.isRegistered(token)) {\n this.logger.warn(\n `Lazy module ${moduleName ?? '(unknown)'} provides ${this.describeToken(token)}, ` +\n `which is already registered by another module — keeping the existing binding and ignoring the lazy provider.`,\n )\n return\n }\n }\n\n if (typeof provider === 'function') {\n this.container.register(provider as Constructor)\n this.collectIfListener(provider as Constructor)\n this.collectIfCommand(provider as Constructor)\n this.collectIfSeeder(provider as Constructor)\n } else if ('useClass' in provider) {\n this.container.register(provider.provide, provider.useClass as Constructor)\n this.collectIfListener(provider.useClass as Constructor)\n this.collectIfCommand(provider.useClass as Constructor)\n this.collectIfSeeder(provider.useClass as Constructor)\n } else if ('useValue' in provider) {\n this.container.registerValue(provider.provide, provider.useValue)\n } else if ('useFactory' in provider) {\n const { provide, useFactory, inject = [] } = provider\n this.container.registerFactory(provide, (c) => {\n const deps = inject.map((token) => c.resolve(token))\n return useFactory(...deps)\n })\n } else if ('useExisting' in provider) {\n this.container.registerExisting(provider.provide, provider.useExisting)\n }\n }\n\n /** The DI token a provider binds, for collision detection. */\n private providerToken(provider: Provider): InjectionToken | null {\n if (typeof provider === 'function') return provider as Constructor\n if ('provide' in provider) return provider.provide\n return null\n }\n\n private describeToken(token: InjectionToken): string {\n if (typeof token === 'function') return token.name\n if (typeof token === 'symbol') return token.toString()\n if (typeof token === 'string') return token\n return 'lazy token'\n }\n\n private collectIfCommand(providerClass: Constructor): void {\n if (isCommand(providerClass) && !this.allCommands.includes(providerClass)) {\n this.allCommands.push(providerClass)\n this.logger.debug(`Collected command: ${providerClass.name}`)\n }\n }\n\n private collectIfSeeder(providerClass: Constructor): void {\n if (isSeeder(providerClass) && !this.allSeeders.includes(providerClass)) {\n this.allSeeders.push(providerClass)\n this.logger.debug(`Collected seeder: ${providerClass.name}`)\n }\n }\n\n private collectIfListener(providerClass: Constructor): void {\n if (isListener(providerClass)) {\n // Register with the listener's own scope (`@Listener()` applies\n // `@Transient()`) rather than forcing a singleton: listeners are resolved\n // fresh per event from the emitting request scope, so a listener may inject\n // request-scoped providers (i18n, queue senders, auth context, …).\n this.container.register(providerClass)\n this.allListeners.push(providerClass)\n this.logger.debug(`Collected listener: ${providerClass.name}`)\n }\n }\n}\n"],"mappings":"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"}
|