stratal 0.0.21 → 0.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/bin/cloudflare-workers-loader.mjs +80 -7
- package/dist/bin/cloudflare-workers-loader.mjs.map +1 -1
- package/dist/bin/quarry.mjs +84 -160
- package/dist/bin/quarry.mjs.map +1 -1
- package/dist/cache/index.d.mts +8 -46
- package/dist/cache/index.d.mts.map +1 -1
- package/dist/cache/index.mjs +134 -97
- package/dist/cache/index.mjs.map +1 -1
- package/dist/{cache.service-DsnKuNyO.d.mts → cache.service-uElmBtdS.d.mts} +29 -39
- package/dist/cache.service-uElmBtdS.d.mts.map +1 -0
- package/dist/{command-BgSlsS4M.mjs → command-BvmUAPPQ.mjs} +15 -4
- package/dist/command-BvmUAPPQ.mjs.map +1 -0
- package/dist/{command-Cmmf0oHX.d.mts → command-CPhFHjG3.d.mts} +3 -2
- package/dist/command-CPhFHjG3.d.mts.map +1 -0
- package/dist/command-not-found.error-ONAZ2Bpk.mjs +14 -0
- package/dist/command-not-found.error-ONAZ2Bpk.mjs.map +1 -0
- package/dist/config/index.d.mts +24 -11
- package/dist/config/index.d.mts.map +1 -1
- package/dist/config/index.mjs +32 -57
- package/dist/config/index.mjs.map +1 -1
- package/dist/{consumer-registry-B7yUNh0q.d.mts → consumer-registry-D3iMTSdy.d.mts} +54 -22
- package/dist/consumer-registry-D3iMTSdy.d.mts.map +1 -0
- package/dist/container-storage-BmOJ4_Na.mjs +52 -0
- package/dist/container-storage-BmOJ4_Na.mjs.map +1 -0
- package/dist/{controller.decorator-B9vwn0zK.mjs → controller.decorator-C5UVeJS3.mjs} +8 -8
- package/dist/controller.decorator-C5UVeJS3.mjs.map +1 -0
- package/dist/cron/index.d.mts +103 -7
- package/dist/cron/index.d.mts.map +1 -1
- package/dist/cron/index.mjs +2 -2
- package/dist/cron-job-NesZRk8F.d.mts +58 -0
- package/dist/cron-job-NesZRk8F.d.mts.map +1 -0
- package/dist/{cron-manager-DQSK8uoV.mjs → cron.module-Bgzq5hiT.mjs} +47 -17
- package/dist/cron.module-Bgzq5hiT.mjs.map +1 -0
- package/dist/decorate-CuAoSZvs.mjs +16 -0
- package/dist/deep-merge-ByiAOZ3r.mjs +18 -0
- package/dist/deep-merge-ByiAOZ3r.mjs.map +1 -0
- package/dist/di/index.d.mts +2 -2
- package/dist/di/index.mjs +4 -3
- package/dist/di-DseMn-z9.mjs +524 -0
- package/dist/di-DseMn-z9.mjs.map +1 -0
- package/dist/email/index.d.mts +40 -122
- package/dist/email/index.d.mts.map +1 -1
- package/dist/email/index.mjs +446 -131
- package/dist/email/index.mjs.map +1 -1
- package/dist/en-CDZBMcc1.mjs +202 -0
- package/dist/en-CDZBMcc1.mjs.map +1 -0
- package/dist/{env-D1rcZ8_r.d.mts → env-ug22bJj7.d.mts} +1 -1
- package/dist/env-ug22bJj7.d.mts.map +1 -0
- package/dist/errors/index.d.mts +2 -2
- package/dist/errors/index.mjs +4 -2
- package/dist/errors-mXYxG0XB.mjs +333 -0
- package/dist/errors-mXYxG0XB.mjs.map +1 -0
- package/dist/events/index.d.mts +14 -3
- package/dist/events/index.d.mts.map +1 -1
- package/dist/events/index.mjs +2 -2
- package/dist/{events-CzCV8jI8.mjs → events-BXJGZjpG.mjs} +23 -13
- package/dist/events-BXJGZjpG.mjs.map +1 -0
- package/dist/exception-context-kEoMFwze.mjs +429 -0
- package/dist/exception-context-kEoMFwze.mjs.map +1 -0
- package/dist/{gateway-context-CXmXtaUP.mjs → gateway-context-TMu_AlJt.mjs} +38 -31
- package/dist/gateway-context-TMu_AlJt.mjs.map +1 -0
- package/dist/guards/index.d.mts +3 -3
- package/dist/guards/index.d.mts.map +1 -1
- package/dist/guards/index.mjs +1 -1
- package/dist/{guards-DU1_J9YA.mjs → guards-DALPXy3_.mjs} +6 -5
- package/dist/guards-DALPXy3_.mjs.map +1 -0
- package/dist/hono-app-CvV3hOfT.mjs +161 -0
- package/dist/hono-app-CvV3hOfT.mjs.map +1 -0
- package/dist/{http-method.decorator-BrgHMdLQ.mjs → http-method.decorator-ByWZb9DO.mjs} +7 -6
- package/dist/http-method.decorator-ByWZb9DO.mjs.map +1 -0
- package/dist/i18n/index.d.mts +238 -3
- package/dist/i18n/index.d.mts.map +1 -0
- package/dist/i18n/index.mjs +39 -3
- package/dist/i18n/index.mjs.map +1 -0
- package/dist/i18n/messages/en/index.d.mts +2 -2
- package/dist/i18n/messages/en/index.mjs +2 -2
- package/dist/i18n/utils/index.d.mts +4 -26
- package/dist/i18n/utils/index.d.mts.map +1 -1
- package/dist/i18n/utils/index.mjs +2 -2
- package/dist/i18n/validation/index.d.mts +3 -2
- package/dist/i18n/validation/index.mjs +4 -2
- package/dist/i18n.module-DRQAZoSZ.mjs +222 -0
- package/dist/i18n.module-DRQAZoSZ.mjs.map +1 -0
- package/dist/i18n.tokens-CZ_v8oyS.mjs +19 -0
- package/dist/i18n.tokens-CZ_v8oyS.mjs.map +1 -0
- package/dist/{index-7-hU3GTV.d.mts → index-0ItCjaqw.d.mts} +1 -1
- package/dist/index-0ItCjaqw.d.mts.map +1 -0
- package/dist/index-B5JBRcWD.d.mts +544 -0
- package/dist/index-B5JBRcWD.d.mts.map +1 -0
- package/dist/index-BUt92sAE.d.mts +124 -0
- package/dist/index-BUt92sAE.d.mts.map +1 -0
- package/dist/{index-ByOyTmqf.d.mts → index-B_JoEl3V.d.mts} +751 -2229
- package/dist/index-B_JoEl3V.d.mts.map +1 -0
- package/dist/index-DtBNIFuP.d.mts +42 -0
- package/dist/index-DtBNIFuP.d.mts.map +1 -0
- package/dist/{index-C1KvMncZ.d.mts → index-HgOLNruQ.d.mts} +3 -108
- package/dist/index-HgOLNruQ.d.mts.map +1 -0
- package/dist/index.d.mts +6 -43
- package/dist/index.mjs +3 -2
- package/dist/{is-command-C6a7WTPw.mjs → is-command-CEPO9n8c.mjs} +2 -2
- package/dist/{is-command-C6a7WTPw.mjs.map → is-command-CEPO9n8c.mjs.map} +1 -1
- package/dist/{is-seeder-CebjZCDn.mjs → is-seeder-Gvh_AM71.mjs} +1 -1
- package/dist/{is-seeder-CebjZCDn.mjs.map → is-seeder-Gvh_AM71.mjs.map} +1 -1
- package/dist/lazy-module-loader-Ib383jH_.d.mts +60 -0
- package/dist/lazy-module-loader-Ib383jH_.d.mts.map +1 -0
- package/dist/locale-path.service-D-dHiIPc.mjs +165 -0
- package/dist/locale-path.service-D-dHiIPc.mjs.map +1 -0
- package/dist/locale-url-nZrZxqJP.mjs +44 -0
- package/dist/locale-url-nZrZxqJP.mjs.map +1 -0
- package/dist/locale-url.service-C2EWmGdq.mjs +41 -0
- package/dist/locale-url.service-C2EWmGdq.mjs.map +1 -0
- package/dist/logger/index.d.mts +2 -2
- package/dist/logger/index.mjs +170 -2
- package/dist/logger/index.mjs.map +1 -0
- package/dist/macroable/index.d.mts +2 -2
- package/dist/macroable/index.mjs +1 -1
- package/dist/{macroable-BmufBshB.mjs → macroable-cvDTFZ_A.mjs} +1 -1
- package/dist/{macroable-BmufBshB.mjs.map → macroable-cvDTFZ_A.mjs.map} +1 -1
- package/dist/metadata-DzzprcID.mjs +39 -0
- package/dist/metadata-DzzprcID.mjs.map +1 -0
- package/dist/module/index.d.mts +7 -24
- package/dist/module/index.d.mts.map +1 -1
- package/dist/module/index.mjs +10 -2
- package/dist/module/index.mjs.map +1 -0
- package/dist/module-registry-Dm-pqHd3.mjs +554 -0
- package/dist/module-registry-Dm-pqHd3.mjs.map +1 -0
- package/dist/module.decorator-CYHY6pG5.mjs +19 -0
- package/dist/module.decorator-CYHY6pG5.mjs.map +1 -0
- package/dist/openapi/index.d.mts +44 -8
- package/dist/openapi/index.d.mts.map +1 -1
- package/dist/openapi/index.mjs +3 -3
- package/dist/openapi-CstuTM8S.mjs +309 -0
- package/dist/openapi-CstuTM8S.mjs.map +1 -0
- package/dist/{openapi-tools.service-Zs-Ewv7F.mjs → openapi-tools.service-BC5EC3R3.mjs} +8 -2
- package/dist/openapi-tools.service-BC5EC3R3.mjs.map +1 -0
- package/dist/{openapi.service-Bt9bCIrd.d.mts → openapi.service-YhTiJ1bO.d.mts} +3 -3
- package/dist/openapi.service-YhTiJ1bO.d.mts.map +1 -0
- package/dist/quarry/index.d.mts +14 -163
- package/dist/quarry/index.d.mts.map +1 -1
- package/dist/quarry/index.mjs +6 -5
- package/dist/quarry/runner.d.mts +184 -0
- package/dist/quarry/runner.d.mts.map +1 -0
- package/dist/quarry/runner.mjs +945 -0
- package/dist/quarry/runner.mjs.map +1 -0
- package/dist/quarry-registry-CXg0RFXq.d.mts +69 -0
- package/dist/quarry-registry-CXg0RFXq.d.mts.map +1 -0
- package/dist/quarry.module-BuRPGMDm.mjs +312 -0
- package/dist/quarry.module-BuRPGMDm.mjs.map +1 -0
- package/dist/queue/index.d.mts +3 -3
- package/dist/queue/index.mjs +57 -48
- package/dist/queue/index.mjs.map +1 -1
- package/dist/queue.module-nddvxzCB.mjs +613 -0
- package/dist/queue.module-nddvxzCB.mjs.map +1 -0
- package/dist/queue.tokens-DjHnFmre.mjs +11 -0
- package/dist/queue.tokens-DjHnFmre.mjs.map +1 -0
- package/dist/{r2-storage.provider-DuonKeYm.mjs → r2-storage.provider-DCxQt9dD.mjs} +6 -6
- package/dist/r2-storage.provider-DCxQt9dD.mjs.map +1 -0
- package/dist/{rate-limit.decorator-6qzNcSOt.mjs → rate-limit.decorator-BPAie_p3.mjs} +6 -11
- package/dist/rate-limit.decorator-BPAie_p3.mjs.map +1 -0
- package/dist/rate-limiter/index.d.mts +11 -50
- package/dist/rate-limiter/index.d.mts.map +1 -1
- package/dist/rate-limiter/index.mjs +33 -42
- package/dist/rate-limiter/index.mjs.map +1 -1
- package/dist/route-name-DGoBOfPg.mjs +171 -0
- package/dist/route-name-DGoBOfPg.mjs.map +1 -0
- package/dist/route-registration.service-D6vSwiKP.mjs +918 -0
- package/dist/route-registration.service-D6vSwiKP.mjs.map +1 -0
- package/dist/route-registry-CYqLp2Nj.mjs +123 -0
- package/dist/route-registry-CYqLp2Nj.mjs.map +1 -0
- package/dist/router/index.d.mts +2 -2
- package/dist/router/index.mjs +18 -7
- package/dist/router-CWGBD-Bg.mjs +78 -0
- package/dist/router-CWGBD-Bg.mjs.map +1 -0
- package/dist/router-resolver-D4YlPNlm.mjs +88 -0
- package/dist/router-resolver-D4YlPNlm.mjs.map +1 -0
- package/dist/seeder/index.d.mts +16 -11
- package/dist/seeder/index.d.mts.map +1 -1
- package/dist/seeder/index.mjs +5 -3
- package/dist/seeder-7ubkms-Y.mjs +81 -0
- package/dist/seeder-7ubkms-Y.mjs.map +1 -0
- package/dist/seeder-registry-CyUmKsJq.mjs +57 -0
- package/dist/seeder-registry-CyUmKsJq.mjs.map +1 -0
- package/dist/seeder.module-CYYwk3Qk.mjs +15 -0
- package/dist/seeder.module-CYYwk3Qk.mjs.map +1 -0
- package/dist/{signed-url-BQPbv2In.mjs → signed-url-DIU0sK_6.mjs} +1 -1
- package/dist/{signed-url-BQPbv2In.mjs.map → signed-url-DIU0sK_6.mjs.map} +1 -1
- package/dist/storage/index.d.mts +15 -39
- package/dist/storage/index.d.mts.map +1 -1
- package/dist/storage/index.mjs +3 -3
- package/dist/storage/providers/index.d.mts +2 -2
- package/dist/storage/providers/index.d.mts.map +1 -1
- package/dist/storage/providers/index.mjs +1 -1
- package/dist/{storage-D8CBP72Z.mjs → storage-MDZypIE9.mjs} +66 -59
- package/dist/storage-MDZypIE9.mjs.map +1 -0
- package/dist/{storage-provider.interface-Bd6vA4ak.d.mts → storage-provider.interface-ClUwxz4S.d.mts} +2 -3
- package/dist/storage-provider.interface-ClUwxz4S.d.mts.map +1 -0
- package/dist/storage.error-Dnib4VHc.mjs +8 -0
- package/dist/storage.error-Dnib4VHc.mjs.map +1 -0
- package/dist/stratal-DL9M38_s.mjs +383 -0
- package/dist/stratal-DL9M38_s.mjs.map +1 -0
- package/dist/stratal-DwDJPY9N.d.mts +43 -0
- package/dist/stratal-DwDJPY9N.d.mts.map +1 -0
- package/dist/tiered-cache.service-Dv3BhxxE.d.mts +79 -0
- package/dist/tiered-cache.service-Dv3BhxxE.d.mts.map +1 -0
- package/dist/trailing-slash-CFyw8nYu.mjs +34 -0
- package/dist/trailing-slash-CFyw8nYu.mjs.map +1 -0
- package/dist/{types-cySNS_lp.d.mts → types-CmV_9xBD.d.mts} +1 -1
- package/dist/types-CmV_9xBD.d.mts.map +1 -0
- package/dist/uri-h7Q8Jug9.mjs +251 -0
- package/dist/uri-h7Q8Jug9.mjs.map +1 -0
- package/dist/{usage-generator-BUdlhnCK.mjs → usage-generator-DAWYasuP.mjs} +7 -4
- package/dist/usage-generator-DAWYasuP.mjs.map +1 -0
- package/dist/validation-CpOjviyT.mjs +49 -0
- package/dist/validation-CpOjviyT.mjs.map +1 -0
- package/dist/validation.context-CRvmrhq7.mjs +117 -0
- package/dist/validation.context-CRvmrhq7.mjs.map +1 -0
- package/dist/versioning.service-C6aHky8-.mjs +36 -0
- package/dist/versioning.service-C6aHky8-.mjs.map +1 -0
- package/dist/websocket/index.d.mts +16 -14
- package/dist/websocket/index.d.mts.map +1 -1
- package/dist/websocket/index.mjs +2 -2
- package/dist/workers/index.d.mts +2 -2
- package/dist/workers/index.d.mts.map +1 -1
- package/dist/workers/index.mjs +3 -2
- package/dist/workers/index.mjs.map +1 -1
- package/dist/zod-eKqqhZ5_.mjs +72 -0
- package/dist/zod-eKqqhZ5_.mjs.map +1 -0
- package/dist/{index-Bnpfq6uk.d.mts → zod-wecrEVAs.d.mts} +63 -133
- package/dist/zod-wecrEVAs.d.mts.map +1 -0
- package/package.json +28 -39
- package/dist/base-email.provider-CfQCA08m.mjs +0 -42
- package/dist/base-email.provider-CfQCA08m.mjs.map +0 -1
- package/dist/cache.service-DsnKuNyO.d.mts.map +0 -1
- package/dist/cache.tokens-B7Rw1C9Q.mjs +0 -6
- package/dist/cache.tokens-B7Rw1C9Q.mjs.map +0 -1
- package/dist/colors-DJaRDXoS.mjs +0 -16
- package/dist/colors-DJaRDXoS.mjs.map +0 -1
- package/dist/command-BgSlsS4M.mjs.map +0 -1
- package/dist/command-Cmmf0oHX.d.mts.map +0 -1
- package/dist/consumer-registry-B7yUNh0q.d.mts.map +0 -1
- package/dist/controller.decorator-B9vwn0zK.mjs.map +0 -1
- package/dist/cron-manager-CmTimEjf.d.mts +0 -131
- package/dist/cron-manager-CmTimEjf.d.mts.map +0 -1
- package/dist/cron-manager-DQSK8uoV.mjs.map +0 -1
- package/dist/en-DSH_bhh6.mjs +0 -308
- package/dist/en-DSH_bhh6.mjs.map +0 -1
- package/dist/env-D1rcZ8_r.d.mts.map +0 -1
- package/dist/errors-COW9-Mar.mjs +0 -1739
- package/dist/errors-COW9-Mar.mjs.map +0 -1
- package/dist/errors-ORxu1-Bb.mjs +0 -74
- package/dist/errors-ORxu1-Bb.mjs.map +0 -1
- package/dist/events-CzCV8jI8.mjs.map +0 -1
- package/dist/gateway-context-CXmXtaUP.mjs.map +0 -1
- package/dist/guards-DU1_J9YA.mjs.map +0 -1
- package/dist/http-method.decorator-BrgHMdLQ.mjs.map +0 -1
- package/dist/i18n.module-CzXLW9Hy.mjs +0 -2532
- package/dist/i18n.module-CzXLW9Hy.mjs.map +0 -1
- package/dist/index-7-hU3GTV.d.mts.map +0 -1
- package/dist/index-Bnpfq6uk.d.mts.map +0 -1
- package/dist/index-ByOyTmqf.d.mts.map +0 -1
- package/dist/index-C1KvMncZ.d.mts.map +0 -1
- package/dist/index-DBd_2wv8.d.mts +0 -263
- package/dist/index-DBd_2wv8.d.mts.map +0 -1
- package/dist/index-DUzWs0z7.d.mts +0 -494
- package/dist/index-DUzWs0z7.d.mts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/logger-DlV7NtvD.mjs +0 -440
- package/dist/logger-DlV7NtvD.mjs.map +0 -1
- package/dist/module-BzLg57FK.mjs +0 -866
- package/dist/module-BzLg57FK.mjs.map +0 -1
- package/dist/openapi-tools.service-Zs-Ewv7F.mjs.map +0 -1
- package/dist/openapi.service-Bt9bCIrd.d.mts.map +0 -1
- package/dist/quarry-registry-BwY2hOxm.mjs +0 -699
- package/dist/quarry-registry-BwY2hOxm.mjs.map +0 -1
- package/dist/queue.module-BhCjZp6H.mjs +0 -409
- package/dist/queue.module-BhCjZp6H.mjs.map +0 -1
- package/dist/r2-storage.provider-DuonKeYm.mjs.map +0 -1
- package/dist/rate-limit.decorator-6qzNcSOt.mjs.map +0 -1
- package/dist/resend.provider-DB4IlFjG.mjs +0 -68
- package/dist/resend.provider-DB4IlFjG.mjs.map +0 -1
- package/dist/seeder-zoEfEw9i.mjs +0 -138
- package/dist/seeder-zoEfEw9i.mjs.map +0 -1
- package/dist/setup-CefZKV_e.mjs +0 -37
- package/dist/setup-CefZKV_e.mjs.map +0 -1
- package/dist/smtp.provider-B6D7zuWX.mjs +0 -76
- package/dist/smtp.provider-B6D7zuWX.mjs.map +0 -1
- package/dist/storage-D8CBP72Z.mjs.map +0 -1
- package/dist/storage-provider.interface-Bd6vA4ak.d.mts.map +0 -1
- package/dist/stratal-CNwpbSZl.mjs +0 -535
- package/dist/stratal-CNwpbSZl.mjs.map +0 -1
- package/dist/types-cySNS_lp.d.mts.map +0 -1
- package/dist/usage-generator-BUdlhnCK.mjs.map +0 -1
- package/dist/validation-DtJwAv7O.mjs +0 -248
- package/dist/validation-DtJwAv7O.mjs.map +0 -1
- /package/dist/{chunk-D1SwGrFN.mjs → chunk-BBjsoOtd.mjs} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-B_JoEl3V.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/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/database.error.ts","../src/errors/auth.error.ts"],"mappings":";;;;;;;;;;;;;cAAa,gBAAA,SAAyB,KAAK;EAAA,SACzB,SAAA;cAEJ,OAAA,WAAkB,KAAA;AAAA;;;;;;;cCCnB,eAAA;AAAA,cAEA,SAAA;EAAA;;6BA2BH,eAAA;EAAA;;;;;;;;;;;;;;;;;KAEE,OAAA,UAAiB,SAAA,cAAuB,SAAS;;;;;;;;;;;;;;;;ADnC7D;;;;;;;UEqBiB,eAAA;;AFlB8B;;;KEwBnC,SAAA,SAAkB,eAAA,0BAE1B,OAAA,OAAc,eAAA;ADzBlB;;;;AAAiE;AAAjE,KCgCY,WAAA,WAAsB,SAAA,IAChC,CAAA,eAAgB,eAAA,GACZ,eAAA,CAAgB,CAAA;EAAa,MAAA;AAAA,KAC1B,CAAA,oBACC,MAAA,+BACA,CAAA,GACF,MAAA,+BACF,MAAA;;;;;UAMW,eAAA;EACf,IAAA;EACA,UAAA;EACA,MAAA;EACA,gBAAA;EACA,WAAA;AAAA;;;;;KAOU,gBAAA,GAAmB,MAAM,SAAS,eAAA;;;;;AD1B9C;;;;AAA6D;;;;ACd7D;;KAwDY,YAAA,WACA,SAAA;EAAc,IAAA,EAAM,CAAA;EAAG,MAAA,EAAQ,WAAA,CAAY,WAAA,CAAY,CAAA;EAAK,QAAA,EAAU,MAAA;AAAA,IAA2B,SAAA;EACvG,IAAA;EAAY,MAAA,EAAQ,MAAA;EAAwB,QAAA,EAAU,MAAA;AAAA;;;;;AAlD3B;AAOjC;;;;;KAuDY,YAAA,SAAqB,eAAA,0BAG7B,SAAA,MAAe,aAAA,CAAc,SAAA;;;;;;;KAQrB,aAAA,qBAAkC,CAAA,yCAC1C,IAAA,MAAU,IAAA,IAAQ,aAAA,CAAc,IAAA;;;;;;;cCnGvB,mBAAA;EAAA,SAG8B,iBAAA;EAAA,SAAA,MAAA;AAAA;;;;;cAM9B,mBAAA;EAAA;;;;;;;;;;;;;;AFTb;;cE2Ba,gBAAA;EAAA;;;;;;;;cAUA,YAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0BA,eAAA;;;;;;;KCzDR,mBAAA,GAAsB,aAAA,CAAA,SAAA,QAAiB,aAAA,CAAA,OAAO;AAAA,KAC9C,cAAA,GAAiB,mBAAmB;;;;UAKxB,eAAA;EAAA,CACd,mBAAA,CAAoB,iBAAA,GAAoB,SAAA;EAAA,CACxC,mBAAA,CAAoB,MAAA;EJlBoB;;;;;EIwBzC,yBAAA,GAA4B,QAAA;EJrBiB;EAAA,CIuB5C,GAAA;AAAA;;;AHtBH;UG4BiB,SAAA;EACf,QAAA,EAAU,UAAA;EACV,SAAA,EAAW,eAAe;AAAA;AH5B5B;;;;AAAA,KGmCY,cAAA,UAAwB,gBAAA,cAA8B,gBAAgB;;;;KAWtE,UAAA;AHjBZ;;;AAAA,UGiCiB,eAAA;EAAkB,MAAA,EAAQ,aAAA,CAAA,OAAO;EAAE,WAAA;AAAA;;AF/CpD;;;KEqDY,SAAA,GAAY,aAAA,CAAA,OAAA,GAAU,eAAe;AFrDjB;AAMhC;;AANgC,UE0Df,mBAAA;EAAsB,MAAA,EAAQ,aAAA,CAAA,OAAO;EAAE,WAAA;EAAsB,WAAA;AAAA;;;;;KAMlE,aAAA,GAAgB,aAAA,CAAA,OAAA,GAAU,mBAAmB;AFxDxB;AAOjC;;;AAPiC,UE8DhB,WAAA;EFtDf;;;;EE2DA,IAAA,GAAO,SAAA;EFxDC;;;;EE8DR,MAAA,GAAS,cAAA;EFlEa;;;;EEwEtB,KAAA,GAAQ,cAAA;EFtEY;;;;;EE6EpB,QAAA,GAAW,aAAA;EFzEL;;;AACI;EE8EV,IAAA;EFxE8B;;;;;EE+E9B,QAAA,GAAW,cAAA;EF3EX;;;EEgFA,WAAA;EFxEU;;;EE6EV,OAAA;EF7E2D;AAgB7D;;;;EEoEE,YAAA;EFnEiE;;;;;EE0EjE,UAAA;EFzE0D;;;;;;;;EEmF1D,IAAA;AAAA;;;;;UAOe,uBAAA;EACf,IAAA;EACA,MAAA,EAAQ,WAAW;AAAA;;;AF5F6C;AAYlE;UEuFiB,qBAAA;EACf,IAAA;EACA,MAAA,EAAQ,UAAA;EACR,IAAA;EACA,MAAA,EAAQ,WAAW;AAAA;;;;;KAOT,aAAA,GAAgB,uBAAA,GAA0B,qBAAqB;;;AF/FjC;AAQ1C;UE6FiB,iBAAA;EF7FQ;;;;EEkGvB,IAAA;EFjGoB;;;;EEuGpB,QAAA,GAAW,cAAA;EFxGoD;;;;;;EEgH/D,YAAA;EF/GsC;;;;ACnGxC;;EC0NE,OAAA,8BAAqC,eAAe;EDvNX;;AAM3C;;;;;EC0NE,IAAA;;;;;;;;EASA,MAAA;AAAA;;;ADjNF;;;;;;KC4NY,iBAAA;;;ADlNZ;;UCwNiB,iBAAA;EDjNP;;;;;ECuNR,MAAA;;;;;EAMA,cAAc;AAAA;;;;;;;UASC,gBAAA;;EAEf,UAAA;EDrNW;;;;EC2NX,eAAA;;;;AA3RoH;;EAkSpH,aAAA;AAAA;AA3RiD;AAAA;;;AAAA,UAkSlC,eAAA;EACf,aAAA;EACA,mBAAmB;AAAA;;;UC9SJ,uBAAA;EACf,SAAA,CAAU,OAAA,EAAS,OAAO;AAAA;;;cCCtB,WAAA;AAAA,UAEW,SAAA;EAAA,CACd,WAAA;EACD,OAAA,QAAe,WAAA,CAAY,CAAA;AAAA;AAAA,iBAGb,IAAA,IAAQ,OAAA,QAAe,WAAA,CAAY,CAAA,IAAK,SAAA,CAAU,CAAA;AAAA,iBAIlD,WAAA,CAAY,KAAA,YAAiB,KAAA,IAAS,SAAS;;;KCVnD,cAAA,gBAA8B,WAAA,CAAY,CAAA,sBAAuB,SAAA,CAAU,CAAA;AAAA,aAE3E,KAAA;EACV,SAAA;EACA,SAAA;EACA,OAAA;AAAA;AAAA,UAGe,WAAA;EACf,KAAK;AAAA;AAAA,KAGK,kBAAA,OAAyB,OAAA,EAAS,CAAA,EAAG,SAAA,EAAW,aAAA,KAAkB,CAAA;AAAA,UAE7D,aAAA;EACf,OAAA,IAAW,KAAA,EAAO,cAAA,CAAe,CAAA,IAAK,CAAA;AAAA;;;UCVvB,aAAA;EACf,OAAA,EAAS,cAAA,CAAe,CAAA;EACxB,QAAA,EAAU,WAAA,CAAY,CAAA;AAAA;AAAA,UAGP,aAAA;EACf,OAAA,EAAS,cAAA,CAAe,CAAA;EACxB,QAAA,EAAU,CAAA;AAAA;AAAA,UAGK,eAAA;EACf,OAAA,EAAS,cAAA,CAAe,CAAA;EAExB,UAAA,MAAgB,IAAA,YAAgB,CAAA,GAAI,OAAA,CAAQ,CAAA;EAC5C,MAAA,GAAS,cAAA;AAAA;AAAA,UAGM,gBAAA;EACf,OAAA,EAAS,cAAA,CAAe,CAAA;EACxB,WAAA,EAAa,cAAA,CAAe,CAAA;AAAA;AAAA,KAGlB,QAAA,8BACR,WAAA,CAAY,CAAA,IACZ,aAAA,CAAc,CAAA,IACd,aAAA,CAAc,CAAA,IACd,eAAA,CAAgB,CAAA,IAChB,gBAAA,CAAiB,CAAA;AAAA,UAEJ,WAAA,oCAA+C,WAAA,CAAY,CAAA;EAC1E,OAAA,OAAc,IAAA,gBAAoB,aAAA;EAClC,YAAA,cAA0B,OAAA,EAAS,kBAAA,CAAmB,QAAA,MAAc,aAAA;AAAA;AAAA,UAGrD,aAAA;EACf,OAAA,IAAW,WAAA,GAAc,aAAA;EACzB,SAAA,GAAY,QAAA;EACZ,WAAA,GAAc,WAAA;EACd,SAAA,GAAY,WAAA;EACZ,IAAA,GAAO,WAAA;AAAA;AAAA,UAGQ,aAAA,SAAsB,IAAA,CAAK,aAAA;EAC1C,MAAA,EAAQ,WAAA;AAAA;AAAA,UAGO,kBAAA;EACf,MAAA,GAAS,cAAA;EAET,UAAA,MAAgB,IAAA,YAAgB,QAAA,GAAW,OAAA,CAAQ,QAAA;AAAA;AAAA,UAGpC,aAAA;EACf,SAAA,EAAW,SAAA;EACX,MAAA,EAAQ,aAAa;AAAA;AAAA,UAGN,YAAA;EACf,YAAA,CAAa,OAAA,EAAS,aAAA,UAAuB,OAAO;AAAA;AAAA,UAGrC,UAAA;EACf,UAAA,CAAW,OAAA,EAAS,aAAA,UAAuB,OAAO;AAAA;AAAA,UAGnC,WAAA;EACf,WAAA,CAAY,OAAA,EAAS,gBAAgB;AAAA;;;;;;KCvE3B,YAAA,GAAe,MAAM;;;;UAKhB,aAAA;EACf,QAAA;EACA,MAAA;EACA,MAAA;AAAA;;ATXF;;;;USmBiB,MAAA;EACf,IAAA,CAAK,IAAA,UAAc,KAAA,GAAQ,YAAA,GAAe,OAAA,CAAQ,aAAA;AAAA;;;;ATjBL;USwB9B,gBAAA;EACf,MAAA,EAAQ,YAAA;EACR,MAAA;EACA,MAAA;EACA,QAAA;EACA,MAAA,EAAQ,MAAM;AAAA;AR5BiD;AAEjE;;AAFiE,UQkChD,cAAA;EACf,IAAA;EACA,QAAA;EACA,OAAA;EACA,WAAA;EACA,OAAA;AAAA;;;;UAMe,YAAA;EACf,IAAA;EACA,KAAA;EACA,MAAA;EACA,OAAA;EACA,OAAA;EACA,WAAA;AAAA;;;;UAMe,eAAA;EACf,IAAA;EACA,SAAA,EAAW,cAAA;EACX,OAAA,EAAS,YAAY;AAAA;;;;;;;;;;;;;;;AThEvB;;;;UUkBiB,WAAA;EVjBC;;;;EUsBhB,KAAA,EAAO,GAAA,EAAK,aAAA,GAAgB,OAAA,CAAQ,QAAA,IAAY,QAAA;EVpBH;;;;EU0B7C,IAAA,EAAM,GAAA,EAAK,aAAA,GAAgB,OAAA,CAAQ,QAAA,IAAY,QAAA;ETzBgB;;;AAAA;ES+B/D,MAAA,EAAQ,GAAA,EAAK,aAAA,GAAgB,OAAA,CAAQ,QAAA,IAAY,QAAA;ETFzC;;;;ESQR,MAAA,EAAQ,GAAA,EAAK,aAAA,GAAgB,OAAA,CAAQ,QAAA,IAAY,QAAA;;;;;EAMjD,KAAA,EAAO,GAAA,EAAK,aAAA,GAAgB,OAAA,CAAQ,QAAA,IAAY,QAAA;;;;;EAMhD,OAAA,EAAS,GAAA,EAAK,aAAA,GAAgB,OAAA,CAAQ,QAAA,IAAY,QAAA;;;;;;EAOlD,MAAA,EAAQ,GAAA,EAAK,aAAA,GAAgB,OAAA,CAAQ,QAAA,IAAY,QAAA;AAAA;;;KCzDvC,MAAA,GAAO,IAAQ;;;;;;;;;;;AXH3B;;;;;;;;;;AAG+C;;;;ACC/C;;UU2BiB,UAAA;EV3BgD;AAAA;AAEjE;;;;;EUiCE,MAAA,CAAO,GAAA,EAAK,aAAA,EAAe,IAAA,EAAM,MAAA,GAAO,OAAA,CAAQ,QAAA;AAAA;;;;;;;;;;;AXvClD;cYqCa,OAAA,SAAgB,WAAA,CAAY,SAAA;EAAA,QAC/B,UAAA;EAAA,iBACS,UAAA;EAAA,iBACA,OAAA;EZvCD;;;;;EAAA,QY8CR,SAAA;cAGmB,SAAA,EAAW,SAAA,EACC,MAAA,EAAQ,aAAA,EACd,WAAA,EAAa,WAAA;;;AXhDhD;;UWqGU,qBAAA;EXrGuD;AAAA;AAEjE;;EW4GQ,SAAA,IAAa,OAAA;EAAA,QAiBX,iBAAA;EAAA,QAUA,eAAA;AAAA;;;;;;UC7HO,YAAA;;EAEf,IAAA;;EAEA,eAAe;AAAA;;AbpBjB;;;;;;;;;;camCa,iBAAA;EAAA,iBAOuC,OAAA;EAAA,iBANjC,OAAA;EAAA,iBACA,qBAAA;EAAA,iBACA,oBAAA;cAGU,SAAA,EAAW,SAAA,EACY,OAAA,EAAS,OAAA;;MAoCvD,OAAA;EZ1E2D;EAAA,IY+E3D,gBAAA,IAAoB,gBAAA;EZlDhB;EAAA,IYuDJ,mBAAA;;;;;;;EAUJ,OAAA,CAAQ,IAAA,WAAe,YAAA;;;;;UA6Bf,qBAAA;;;;;UAWA,sBAAA;;;;AZvGV;;;UY6HU,0BAAA;AAAA;;;;;;;;;;;;;cC9IG,gBAAA;EAAA,iBAEiD,UAAA;cAAA,UAAA,EAAY,iBAAiB;EdpB7D;EAAA,IcwBxB,WAAA;EdxBqC;Ec6BzC,YAAA,CAAa,MAAA;Ed5BG;EciChB,WAAA,CAAY,QAAA,UAAkB,MAAA;Ed/BlB;EcoCZ,WAAA,CAAY,QAAA;EAAA,QAKJ,WAAA;AAAA;;;;;;;;;;;;;;;;cC9BG,eAAA;;cAEA,SAAA;;cAEA,mBAAA;;;;;;UCRI,iBAAA;EACf,MAAA;EACA,MAAA;EACA,IAAA;EACA,UAAA,GAAa,WAAA,CAAY,UAAA;EACzB,OAAA;EACA,YAAA;EAEA,MAAA,GAAS,aAAA,CAAA,SAAA;AAAA;;;;;UAOM,WAAA;EACf,MAAA;EACA,MAAA;EACA,IAAA;EACA,UAAA,EAAY,WAAA,CAAY,UAAA;EACxB,OAAA;EACA,YAAA;EAEA,MAAA,GAAS,aAAA,CAAA,SAAA;Ef7BsD;Ee+B/D,WAAA,GAAc,WAAA;AAAA;Af/BiD;AAEjE;;;;;;;;;;;;;;;;AAFiE,UemDhD,iBAAA;EACf,eAAA,CAAgB,MAAA,EAAQ,MAAM;AAAA;;;;;AfrBhC;;;;AAA6D;;;;ceoChD,MAAA;EAAA,iBACM,QAAA;EAAA,iBACA,aAAA;EAAA,iBACA,OAAA;EAAA,iBACA,iBAAA;cAEL,OAAA;EdlDO;EcwDnB,MAAA,CAAO,IAAA,UAAc,MAAA,GAAS,aAAA,CAAA,SAAA;EdxDF;Ec+D5B,MAAA,CAAO,OAAA;Ed7DL;EcmEF,IAAA,CAAK,MAAA;EdnEI;EcyET,UAAA,IAAc,WAAA,EAAa,WAAA,CAAY,UAAA;EdzErC;;;AAA6B;AAOjC;;;;;;;;;EcoFE,QAAA,CAAS,IAAA;Ed9EH;EcoFN,OAAA,CAAQ,OAAA;EdnFE;EcyFV,YAAA,CAAa,IAAA;EdhGS;;;;EcyGtB,GAAA,IAAO,WAAA,EAAa,WAAA,CAAY,UAAA;EdvGZ;;;;;EcoHpB,KAAA,CAAM,WAAA,EAAa,WAAA,IAAe,QAAA,GAAW,MAAA,EAAQ,IAAA,CAAK,MAAA;EAAA,CAazD,eAAA,KAA6B,WAAA;EAAA,CAI7B,SAAA,KAAuB,WAAA;EAAA,CAIvB,mBAAA,KAAiC,WAAA,CAAY,UAAA;AAAA;;;cClJnC,cAAA;EAAA,iBAcQ,SAAA;EAAA,iBACA,MAAA;EAAA,QAdX,OAAA;EAAA,QACA,iBAAA;EAAA,QACA,WAAA;EAAA,QAEA,cAAA;EAAA,QACA,YAAA;EAAA,QACA,OAAA;EAAA,QACA,YAAA;EAAA,QACA,WAAA;EAAA,QACA,UAAA;EAAA,QACA,gBAAA;cAGW,SAAA,EAAW,SAAA,EACX,MAAA,EAAQ,aAAA;EAG3B,QAAA,CAAS,eAAA,EAAiB,WAAA,GAAc,aAAA;EjB5CV;;AAAe;;;;ACC/C;;EgB8EQ,YAAA,CAAa,eAAA,EAAiB,WAAA,GAAc,aAAA,GAAgB,OAAA;EAyBlE,WAAA,CAAY,OAAA,GAAU,WAAA,GAAc,aAAA;EAMpC,aAAA,CAAc,WAAA,EAAa,WAAA;EhB3GhB;;;;;EAAA,QgBoHH,uBAAA;;;;;;UAuBA,kBAAA;EAmDF,UAAA,IAAc,OAAA;EA8BpB,iBAAA,IAAqB,WAAA;EAIrB,eAAA,IAAmB,WAAA;EAInB,UAAA,IAAc,WAAA;EAId,eAAA,IAAmB,WAAA;EAInB,cAAA,IAAkB,WAAA;EAIlB,aAAA,IAAiB,WAAA;EAIjB,mBAAA;IAAyB,MAAA,EAAQ,MAAA;IAAQ,WAAA,EAAa,WAAA;EAAA;EAetD,0BAAA,CAA2B,OAAA,EAAS,gBAAA;EAS9B,QAAA,IAAY,OAAA;EAAA,QAuBV,oBAAA;EAAA,QASA,eAAA;EAAA,QASA,aAAA;EAAA,QASA,cAAA;EASR,aAAA,CAAc,eAAA,EAAiB,WAAA,GAAc,aAAA;IAC3C,WAAA,EAAa,WAAA;IACb,OAAA,EAAS,aAAA;EAAA;EAqBX,eAAA,CAAgB,KAAA,YAAiB,KAAA,IAAS,aAAA;EAAA,QASlC,gBAAA;EfxVsB;EAAA,QemYtB,aAAA;EAAA,QAMA,aAAA;EAAA,QAOA,gBAAA;EAAA,QAOA,eAAA;EAAA,QAOA,iBAAA;AAAA;;;;;;;;;;;cCnaG,iBAAA;EAAA,iBACM,OAAA;cAE0B,GAAA,EAAK,WAAA;ElBnBrC;EAAA,IkBwBP,OAAA;;;;;;;;EAWJ,OAAA,CAAQ,QAAA,UAAkB,OAAA,8BAAqC,eAAe;AAAA;;;;;;;UClB/D,eAAA;;EAEf,IAAA;;EAEA,MAAA,EAAQ,UAAU;EnBrBP;EmBuBX,IAAA;;EAEA,WAAA;EnBzBoC;EmB2BpC,UAAA;;EAEA,MAAA;EnB1B8B;EmB4B9B,gBAAA;EnB5B6C;EmB8B7C,UAAA;;EAEA,MAAA;ElB/BW;EkBiCX,MAAA;;EAEA,UAAA;ElBnC+D;EkBqC/D,eAAA;AAAA;;;;;KAOU,sBAAA,GAAyB,IAAA,CAAK,eAAA;qDAExC,QAAA;EAEA,OAAA,8BAAqC,eAAA;EAErC,UAAA;EAEA,gBAAA;AAAA;;;;;;;;AlBrBF;;ckBkCa,aAAA;EAAA,iBAOiD,iBAAA;EAAA,iBACA,iBAAA;EAAA,iBAP3C,MAAA;EAAA,iBACA,WAAA;EAAA,QACT,YAAA;EAAA,QACA,iBAAA;cAGoD,iBAAA,EAAmB,iBAAA,EACnB,iBAAA,EAAmB,iBAAA;;;AjBxDjD;AAMhC;;;;EiB4DE,QAAA,CAAS,KAAA,EAAO,sBAAA,GAAyB,eAAA;EjB1DvC;EiBsHF,GAAA,CAAI,IAAA,WAAe,eAAA;EjBtHV;EiB2HT,GAAA,CAAI,IAAA;EjB3HF;;;AAA6B;AAOjC;;EiB8HE,eAAA,CAAgB,MAAA,UAAgB,IAAA;EAAA,QAKxB,qBAAA;EjBlIR;EiBiJA,GAAA,IAAO,eAAA;EjBhJH;EiBsJJ,KAAA,IAAS,eAAA;AAAA;;;;;;;UClLM,oBAAA;EACf,MAAA;EACA,MAAA;EACA,IAAA;EACA,UAAA,EAAY,WAAA,CAAY,UAAA;EACxB,OAAA;EACA,YAAA;EAEA,MAAA,GAAS,aAAA,CAAA,SAAA;AAAA;;;;;;;ApBfoC;;;;ACC/C;;;cmB8Ba,cAAA;EAAA,iBACM,OAAA;cAEL,OAAA;IAAW,MAAA,EAAQ,MAAA;IAAQ,WAAA,EAAa,WAAA;EAAA;;;;;EAQpD,oBAAA,CAAqB,UAAA,EAAY,WAAA,GAAc,oBAAA;;;;EA4B/C,mBAAA,IAAuB,WAAA,CAAY,UAAA;;;;UAW3B,YAAA;EAAA,QAmBA,aAAA;EAAA,QAaA,WAAA;EAAA,QAQA,cAAA;EAAA,QAUA,WAAA;AAAA;;;;;;;;;;ApBtIV;;;;;;;;cqBgFa,wBAAA;EAAA,QAKoC,MAAA;EAAA,QACA,QAAA;EAAA,QACuB,cAAA;EAAA,QACnB,iBAAA;EAAA,QACV,GAAA;EAAA,QACG,cAAA;EAAA,QATpC,iBAAA;EAAA,QACA,kBAAA;cAGuC,MAAA,EAAQ,aAAA,EACR,QAAA,EAAU,aAAA,EACa,cAAA,EAAgB,cAAA,SACnC,iBAAA,EAAmB,iBAAA,EAC7B,GAAA,EAAK,OAAA,EACF,cAAA,EAAgB,cAAA;EpBtFG;AAEjE;;;EoB2FQ,SAAA,IAAa,OAAA;;;;;UAqCX,aAAA;;;;UAoTA,sBAAA;;;;;;;;;;UA4FA,qBAAA;EpBnfE;;;;AAAiD;;;;ACd7D;;EDcY,QoB4gBF,oBAAA;EnB1hBsB;AAAA;AAMhC;EANgC,QmBmkBtB,qBAAA;;;;UAqBA,oBAAA;EnBhlBC;;;EAAA,QmB4mBD,SAAA;EnB5mBQ;;AAAe;AAOjC;EAPkB,QmBwnBR,uBAAA;EnBjnBa;;;;;EAAA,QmBgoBb,aAAA;EnB7nBD;;;;;;;;EAAA,QmB4qBC,iBAAA;EnB9qBQ;;;EAAA,QmBwzBR,iBAAA;EnBvzBuC;;;;;;;AAKrC;EALqC,QmBm0BvC,uBAAA;EnBxzBsB;;;;EAAA,QmBw0BtB,WAAA;EnBr0BR;;;;EAAA,QmB60BQ,uBAAA;EnBp0BE;;;;EAAA,QmB42BF,qBAAA;EnB51BE;;;EAAA,QmB42BF,qBAAA;EnB32BsB;;;;;;;;;EAAA,QmBw3BhB,gBAAA;AAAA;;;;;;cCn8BH,aAAA;;;;;;;;;;;EtBHiB;;;;EAAA;;;;;;;;;ACI9B;;;EAAiE;AAAA;AAEjE;;EAFiE;;;;;;;;;;;;;;;;;;;;;;;;;ADJjE;;;;;;;;;;AAG+C;;;;iBuB2B/B,KAAA,WAAgB,SAAA,EAC9B,IAAA,EAAM,CAAA,EACN,MAAA,GAAS,WAAA,CAAY,CAAA,GACrB,OAAA,GAAU,UAAA;;;;;;;;;;;;;;;AvBjCZ;;iBwBiBgB,kBAAA,CAAmB,MAAA,UAAgB,MAAA,EAAQ,eAAe;;;;;iBAU1D,iBAAA,CAAkB,QAAA,UAAkB,MAAA,UAAgB,MAAA,EAAQ,eAAe;;;AxBxB5C;;iBwBiC/B,iBAAA,CAAkB,QAAA,UAAkB,YAA+B;;;;;;;;;;;;;;;AxBpCnF;;;iByBiBgB,kBAAA,CAAmB,GAAA,UAAa,IAAA,EAAM,iBAAiB;;;;;;;;;;;;;;;;AzBjBvE;;;iB0BiBgB,aAAA,CAAc,IAAY;;AzBbuB;AAEjE;;;;iByBgGgB,uBAAA,CAAwB,IAAY;;;;;;;;;;iBAwBpC,uBAAA;EAAoC,IAAA;EAAc,eAAA;AAAA,GAA6B,MAAA,EAAQ,CAAA,KAAM,CAAC;;;;;;;;;;;;;;;;A1B9H9G;iB2BegB,iBAAA,CAAkB,IAAY;;;;;;;;;iBAc9B,uBAAA,CAAwB,MAAc;;;;A1BzBtD;;;;AAAiE;AAEjE;;;;;;iB0B2CgB,2BAAA,CAA4B,QAAA,UAAkB,UAAkB;;;;;;;;;;;;iBChChE,qBAAA,CACd,OAAA,EAAS,WAAA,CAAY,UAAA,MACpB,iBAAA,CAAkB,SAAA;;;;;;;;;;;;;;A5BnBrB;;;;;;;;;;iB6B6BgB,UAAA,CAAW,KAAA,UAAe,OAAA,GAAU,iBAAA,cACvB,WAAA,EAAa,MAAA,EAAQ,CAAA,KAAC,CAAA;;;;A5B1BnD;;;iB4BgDgB,kBAAA,CAAmB,MAAc;A5BhDgB;AAEjE;;;;;AAFiE,iB4B6DjD,oBAAA,CAAqB,MAAA,WAAiB,iBAAiB;;;;;;;iBAWvD,oBAAA,CAAqB,MAAA,WAAiB,iBAAiB;;;;;;;;;;;;;;;A7B5EvE;;;;;;c8B8Da,GAAA,GAAG,IAAA,UAjDe,MAAA,GAAW,WAAA,MAEpC,MAAA,UACA,WAAA,UACA,UAAA,EAAY,kBAAA,KAAkB,kBAAA;;;;A9BdW;;;;ACC/C;;;;AAAiE;AAEjE;;;c6ByEa,IAAA,GAAI,IAAA,UAlEc,MAAA,GAAW,WAAA,MAEpC,MAAA,UACA,WAAA,UACA,UAAA,EAAY,kBAAA,KAAkB,kBAAA;;;;;;;cAsEvB,GAAA,GAAG,IAAA,UA1Ee,MAAA,GAAW,WAAA,MAEpC,MAAA,UACA,WAAA,UACA,UAAA,EAAY,kBAAA,KAAkB,kBAAA;;;;;;;cA8EvB,KAAA,GAAK,IAAA,UAlFa,MAAA,GAAW,WAAA,MAEpC,MAAA,UACA,WAAA,UACA,UAAA,EAAY,kBAAA,KAAkB,kBAAA;;;;;;A7BkBpC;c6BoEa,MAAA,GAAM,IAAA,UA1FY,MAAA,GAAW,WAAA,MAEpC,MAAA,UACA,WAAA,UACA,UAAA,EAAY,kBAAA,KAAkB,kBAAA;;;A7BkByB;;;;ACd7D;;c4B4Fa,GAAA,GAAG,IAAA,UApGe,MAAA,GAAW,WAAA,MAEpC,MAAA,UACA,WAAA,UACA,UAAA,EAAY,kBAAA,KAAkB,kBAAA;;;;;;;;;;;;;;;A9BjBpC;;;;;;;;;;AAG+C;;;;ACC/C;;;;AAAiE;AAEjE;;;;;;;;;;;;;;;;;;;;;;;AA6BA;;;;AAA6D;;;;ACd7D;;;;AAAgC;AAMhC;;;;;iB6BiDgB,KAAA,CAAM,MAAA,EAAQ,IAAA,CAAK,WAAA,mBAE/B,MAAA,UACA,WAAA,UACA,UAAA,EAAY,kBAAA,KAAkB,kBAAA;;;;;;;A7BnDD;iB6BkFjB,gBAAA,CAAiB,MAAA,UAAgB,UAAA,WAAqB,aAAa;;;;;;;iBAUnE,wBAAA,CAAyB,eAAmD,UAA1B,IAAA;;;;;;;;;;;;;;;A/BzHlE;cgCgBa,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;;;;AhCbe;cgCwBlC,6BAAA,EAA6B,CAAA,CAAA,SAAA;;;;;;;A/BvBuB;AAEjE;c+B2Ba,qBAAA,EAAqB,CAAA,CAAA,SAAA;;;;;;;;cASrB,uBAAA,aAAqC,CAAA,CAAE,OAAA,EAAS,UAAA,EAAY,CAAA,KAAC,CAAA,CAAA,SAAA;;;;;;;;;;;;;cAe7D,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;A/BtBiC;;c+B8BhD,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;A9B5CD;AAMhC;c8B+Ca,kBAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC5DG,kBAAA,CAAmB,OAAA;EAAoB,KAAA,EAAO,MAAM;EAAE,UAAA;AAAA;;;;;;;;AjCXvB;;;;ACC/C;;;;AAAiE;AAEjE;;;;;iBgCyDgB,sBAAA,CAAuB,OAAA,WAAkB,iBAAiB,CAAC,SAAA;;;;;;;;;;;;;;AjC/D3E;;;;;;;;;ckC0Ba,yBAAA,YAAqC,UAAA;EAC1C,MAAA,CAAO,GAAA,EAAK,aAAA,EAAe,IAAA,EAAM,MAAA,GAAO,OAAA;AAAA;;;;;;;;;;;;;;UCf/B,gBAAA;;EAEf,SAAS;AAAA;;;;;;;;;AnCXoC;;;iBmCmDzB,OAAA,CAAQ,GAAA,UAAa,MAAA,UAAgB,OAAA,GAAU,gBAAA,GAAmB,OAAO;AlClD/F;;;;AAAiE;AAEjE;;AAFA,iBkC8EsB,eAAA,CAAgB,GAAA,UAAa,MAAA,WAAiB,OAAO;;;cChF9D,WAAA,SAAoB,gBAAgB;;;cCApC,kBAAA,SAA2B,aAAa;EAAA,SACnC,IAAA;EAAA,SACA,MAAA;cAEJ,IAAA,UAAc,MAAA;AAAA;;;cCHf,qBAAA,SAA8B,aAAa;EAAA,SACtC,MAAA;IAAU,IAAA;IAAc,OAAA;IAAiB,IAAA;EAAA;cAE7C,QAAA,EAAU,QAAA;AAAA;;;;;;;;cCEX,qBAAA,SAA8B,aAAa;EAAb,WAAA;AAAA;;;;AvCR3C;;;;cuCqBa,uBAAA,SAAgC,aAAa;EAAA,SACxC,MAAA;IAAU,IAAA;IAAc,OAAA;IAAiB,IAAA;EAAA;cAE7C,QAAA,EAAU,QAAA;AAAA;;;UCOP,iBAAA;EACf,MAAA,EAAQ,WAAA,GAAc,aAAA;EACtB,OAAA;IACE,KAAA,GAAQ,QAAA;IACR,SAAA;EAAA;EAEF,UAAA,GAAa,iBAAA;EACb,aAAA,GAAgB,iBAAA;EAChB,gBAAA,GAAmB,WAAA,CAAY,gBAAA;AAAA;AAAA,UAGhB,kBAAA,SAA2B,iBAAA;EAC1C,GAAA,EAAK,UAAA;EACL,GAAA,EAAK,uBAAA;AAAA;AAAA,cAGM,WAAA;EAAA,QACH,UAAA;EAAA,QACA,OAAA;EAAA,QACA,cAAA;EAAA,QACA,gBAAA;EAAA,QACA,WAAA;EAAA,QACA,MAAA;EAAA,QACA,WAAA;EAAA,QAIA,kBAAA;EAAA,QACA,iBAAA;EAAA,QACA,gBAAA;EAAA,QACA,eAAA;EAAA,QACA,eAAA;EAAA,SAEC,GAAA,EAAK,UAAA;EAAA,iBACG,SAAA;;IAEH,GAAA;IAAK,GAAA;IAAA,GAAQ;EAAA,GAAU,kBAAA;EAAA,IAoBjC,SAAA,IAAa,SAAA;EAIX,UAAA,IAAc,OAAA,CAAQ,OAAA;EAAA,IAKxB,MAAA,IAAU,iBAAA;EAIR,UAAA,IAAc,OAAA;EAAA,QAQN,kBAAA;EAAA,QAkDA,uBAAA;;;;;;;;UA2CN,wBAAA;EvCtKE;;;;AAAiD;;;;ACd7D;;;;AAAgC;EsC0MxB,oBAAA,IAAwB,OAAA;EtCpMX;;;;EAAA,QsC6MX,eAAA;EtC3MC;;;;;;EAAA,QsC4ND,UAAA;EtCrNE;;;;EAAA,QsCiOF,UAAA;EAUR,OAAA,IAAW,KAAA,WAAgB,CAAA;EAWrB,WAAA,CAAY,KAAA,EAAO,YAAA,EAAc,SAAA,WAAoB,OAAA;EAmBrD,eAAA,CAAgB,UAAA,EAAY,mBAAA,GAAsB,OAAA;EAsBxD,uBAAA,CAAwB,MAAA,YAAgB,aAAA;EAWlC,QAAA,IAAY,OAAA;EAYZ,aAAA,CAAc,IAAA,UAAc,KAAA,GAAQ,YAAA,GAAe,OAAA,CAAQ,aAAA;EAAA,QAkBzD,iBAAA;EAAA,QAaA,gBAAA;EAAA,QAQA,eAAA;EAAA,QASM,sBAAA;EAAA,QAqBN,gBAAA;EAAA,QAYA,sBAAA;EAAA,QA8BA,qBAAA;EtCnaJ;;;;;;;EAAA,QsCybI,oBAAA;EAAA,QAQA,0BAAA;AAAA;;;;;;UCrdO,UAAA;;EAEf,QAAQ;AAAA;;;;UAMO,gBAAA,SAAyB,UAAA,EAAY,gBAAgB;;;;;AzCvBvB;;;;ACC/C;;;;iBwCgDgB,aAAA,CACd,KAAA,EAAO,eAAA,EACP,IAAA,UACA,MAAA,GAAS,MAAA,kBACT,YAAA,GAAe,eAAA;AxClDjB;;;;;;;;;;;;;;;;;;;AAAA,cwC8Ha,GAAA;EAAA,iBAM6C,QAAA;EAAA,iBACA,aAAA;EAAA,QANhD,SAAA;EAAA,iBACS,aAAA;EAAA,iBACA,YAAA;cAGuC,QAAA,EAAU,aAAA,EACV,aAAA,EAAe,aAAA,EACtC,WAAA,EAAa,WAAA,EACH,iBAAA,EAAmB,iBAAA;ExC1GnC;AAAgC;;;;ACd7D;EuCuIE,QAAA,CAAS,MAAA,EAAQ,MAAA;;;AvCvIa;AAMhC;;;;EuC4IE,WAAA,IAAe,MAAA;EvC1Ib;;;;;;;AAA6B;AAOjC;;;;;;;EuCsJE,KAAA,WAAgB,SAAA,EAAW,IAAA,EAAM,CAAA,EAAG,MAAA,GAAS,WAAA,CAAY,CAAA,GAAI,OAAA,GAAU,UAAA;EvCnJhE;;;;;;;;;;EuC8KD,WAAA,WAAsB,SAAA,EAAW,IAAA,EAAM,CAAA,EAAG,MAAA,GAAS,WAAA,CAAY,CAAA,GAAI,OAAA,GAAU,gBAAA,GAAmB,OAAA;EvC/KlF;;;;;;;;;AAKV;AAMZ;EuCqLQ,oBAAA,WAA+B,SAAA,EAAW,IAAA,EAAM,CAAA,EAAG,SAAA,UAAmB,MAAA,GAAS,WAAA,CAAY,CAAA,GAAI,OAAA,GAAU,UAAA,GAAa,OAAA;;;;;;EAStH,iBAAA,IAAqB,OAAA;EvCzL3B;;AAAW;EuCkMX,OAAA;EvC3L0B;;;EuCmM1B,IAAA;EvCnLU;;;;;EuC6LV,QAAA,CAAS,QAAA;EvC5L4C;;;;;EuCqMrD,YAAA,CAAa,QAAA;EvCpMmD;;;;;;;EuCuNhE,EAAA,CAAG,IAAA,UAAc,WAAA,GAAc,MAAA,kBAAwB,OAAA,GAAU,UAAA;EvCxNZ;;;;;;EuCmPrD,KAAA,CAAM,IAAA,UAAc,WAAA,EAAa,MAAA;EAAA,QAQzB,YAAA;AAAA;;;KCrTE,kBAAA,WAA6B,MAAA,+DAAqE,CAAA,2BAA4B,CAAA,qBAAsB,MAAA,oBAA0B,CAAA;;;A1CpB1L;;;;;;;;;;AAG+C;;;;ACC/C;;;;AAAiE;AAEjE;;;;;;;;cyC6Ca,aAAA,WAAwB,SAAA,GAAY,SAAA,UAAmB,SAAA;EAAA,SAMhD,CAAA,EAAG,OAAA,CAAQ,CAAA;;;;;cAAX,CAAA,EAAG,OAAA,CAAQ,CAAA;;;;;MASzB,EAAA,IAAM,YAAA;;;;AzC/BZ;;;EyCyCE,YAAA,IAAgB,SAAA;EzCzC2C;;;;ACd7D;EwCoEE,SAAA,CAAU,MAAA;;;AxCpEoB;AAMhC;;EwCuEE,SAAA;ExCvE4B;;;;;;;;EwCoF5B,IAAA,CAAK,IAAA,iBAAqB,MAAA,GAAS,oBAAA,GAAuB,QAAA;ExClF3B;AAOjC;;;;;;;;;;;;;EwCgGE,KAAA,IAAS,MAAA;EACT,KAAA,CAAM,GAAA;ExCjG0B;;;;;EwC4GhC,KAAA,WAAgB,MAAA,qFAA2F,GAAA,GAAM,CAAA,GAAI,kBAAA,CAAmB,CAAA,EAAG,CAAA;ExC1G5F;;;;;EwCoH/C,MAAA,CAAO,IAAA;ExC/GG;AAAA;AAMZ;;;;;;;;;EwCwHE,SAAA,CAAU,IAAA;ExCnHC;AAOb;;;;AAA6D;AAgB7D;;;;;;;;;;;;;;EwCoHE,SAAA,CAAU,IAAA,UAAc,KAAA,UAAe,OAAA,GAAU,aAAA;ExCnHvC;;;;;;;;;;;;;;;EwCsIV,YAAA,CAAa,IAAA,UAAc,OAAA,GAAU,aAAA;ExCrI2B;AAYlE;;;;;EwCmIE,IAAA,OAAW,OAAA,CAAQ,CAAA;ExChIF;;;;;;EwC4IjB,IAAA,CAAK,IAAA,UAAc,MAAA,GAAS,oBAAA,GAAuB,QAAA;ExC5IX;AAAA;AAQ1C;;;;EwC8IE,IAAA,CAAK,IAAA,UAAc,MAAA,GAAS,oBAAA,GAAuB,QAAA;ExC7IvC;;;;;;;;;;;;;;AAA0B;;;EwCkKtC,KAAA,WAAgB,SAAA,EAAW,IAAA,EAAM,CAAA,EAAG,MAAA,GAAS,WAAA,CAAY,CAAA,GAAI,OAAA,GAAU,UAAA;EvCrQ5D;;;;;AASb;;;;;;EuC2QE,MAAA,CAAO,GAAA;;;;;;;;;EAYD,SAAA,WAAoB,SAAA,EAAW,IAAA,EAAM,CAAA,EAAG,MAAA,GAAS,WAAA,CAAY,CAAA,GAAI,OAAA,GAAU,gBAAA,GAAmB,OAAA;;AvCrQtG;;;;EuC8QQ,iBAAA,IAAqB,OAAA;;;;;AvCpQ7B;;EuC8QE,QAAA,CAAS,GAAA,UAAa,MAAA,GAAS,kBAAA,GAAqB,QAAA;EvCvQ5C;;;;;;EuCiRR,MAAA,CAAO,QAAA,GAAW,MAAA,EAAQ,YAAA,KAAiB,OAAA,QAAe,OAAA,IAAW,GAAA,EAAK,KAAA,EAAO,MAAA,EAAQ,YAAA,KAAiB,OAAA,SAAgB,QAAA;;;;;;;;;EAY1H,UAAA,CAAW,QAAA,GAAW,MAAA,EAAQ,YAAA,KAAiB,OAAA,QAAe,OAAA,IAAW,GAAA,EAAK,KAAA,EAAO,MAAA,EAAQ,YAAA,KAAiB,OAAA,SAAgB,QAAA;;;;;;AvC1QhI;;;EuCuRE,SAAA,CAAU,QAAA,GAAW,MAAA,EAAQ,eAAA,KAAoB,OAAA,QAAe,OAAA,IAAW,GAAA,EAAK,KAAA,EAAO,MAAA,EAAQ,eAAA,KAAoB,OAAA,SAAgB,QAAA;EAAA,QAK3H,UAAA;AAAA;;;UC1VO,kBAAA;EACf,OAAA,IAAW,KAAA,EAAO,cAAA,CAAe,CAAA,IAAK,CAAA;EACtC,YAAA,IAAgB,KAAA,EAAO,cAAA,CAAe,CAAA;AAAA;AAAA,UAGvB,yBAAA;EACf,GAAA,mBAAsB,KAAA,EAAO,cAAA,CAAe,CAAA,IAAK,qBAAA,CAAsB,CAAA;AAAA;AAAA,UAGxD,qBAAA;EACf,IAAA,CAAK,cAAA,EAAgB,WAAA,CAAY,CAAA,IAAK,sBAAA,CAAuB,CAAA;AAAA;AAAA,UAG9C,sBAAA;EACf,SAAA,CAAU,cAAA,EAAgB,WAAW,CAAC,CAAA;AAAA;AAAA,cAG3B,6BAAA,YAAyC,yBAAA;EAAA,iBAEjC,SAAA;EAAA,iBACA,SAAA;EAAA,iBACA,OAAA;cAFA,SAAA,EAAW,SAAA,EACX,SAAA,GAAY,SAAA,EAAW,kBAAA,cACvB,OAAA,EAAS,WAAA;EAG5B,GAAA,mBAAsB,KAAA,EAAO,cAAA,CAAe,CAAA,IAAK,qBAAA,CAAsB,CAAA;AAAA;;;UCjB/D,iBAAA;EACR,IAAA;EACA,QAAA,EAAU,WAAA;EACV,KAAA,EAAO,KAAK;AAAA;AAAA,UAGJ,qBAAA;EACR,IAAA;EACA,OAAA,QAAe,WAAW;AAAA;AAAA,UAGlB,iBAAA;EACR,IAAA;EACA,KAAK;AAAA;AAAA,UAGG,mBAAA;EACR,IAAA;EACA,OAAA,GAAU,SAAA,EAAW,SAAS;AAAA;AAAA,UAGtB,iBAAA;EACR,IAAA;EACA,MAAA,EAAQ,cAAc;AAAA;AAAA,KAGnB,YAAA,GAAe,iBAAA,GAAoB,qBAAA,GAAwB,iBAAA,GAAoB,mBAAA,GAAsB,iBAAA;AAAA,UASzF,gBAAA;EACf,MAAA,GAAS,SAAS;EAClB,eAAA;AAAA;AAAA,cAGW,SAAA;EAAA,iBACM,aAAA;EAAA,iBACA,UAAA;EAAA,iBACA,YAAA;EAAA,iBACA,gBAAA;;;;;;mBAMA,eAAA;EAAA,iBACA,MAAA;EAAA,iBACA,eAAA;cAEL,OAAA,GAAS,gBAAA;EAWrB,QAAA,mBAA2B,YAAA,EAAc,WAAA,CAAY,CAAA;EACrD,QAAA,mBAA2B,KAAA,EAAO,cAAA,CAAe,CAAA,GAAI,kBAAA,EAAoB,WAAA,CAAY,CAAA,IAAK,SAAA,CAAU,CAAA;EAgCpG,iBAAA,mBAAoC,YAAA,EAAc,WAAA,CAAY,CAAA;EAC9D,iBAAA,mBAAoC,KAAA,EAAO,cAAA,CAAe,CAAA,GAAI,YAAA,EAAc,WAAA,CAAY,CAAA;EAaxF,aAAA,IAAiB,KAAA,EAAO,cAAA,CAAe,CAAA,GAAI,KAAA,EAAO,CAAA;EAOlD,eAAA,IAAmB,KAAA,EAAO,cAAA,CAAe,CAAA,GAAI,OAAA,GAAU,SAAA,EAAW,SAAA,KAAc,CAAA;EAIhF,gBAAA,IAAoB,KAAA,EAAO,cAAA,CAAe,CAAA,GAAI,MAAA,EAAQ,cAAA,CAAe,CAAA;EAMrE,OAAA,IAAW,KAAA,EAAO,cAAA,CAAe,CAAA,IAAK,CAAA;EAuCtC,UAAA,IAAc,KAAA,EAAO,cAAA,CAAe,CAAA,IAAK,CAAA;EAWzC,YAAA,IAAgB,KAAA,EAAO,cAAA,CAAe,CAAA;E3C5J5B;;;;AAAiD;;EAAjD,Q2CuKF,YAAA;EAMR,IAAA,CACE,SAAA,GAAY,SAAA,EAAW,kBAAA,cACvB,OAAA,GAAS,WAAA,GACR,yBAAA;EAIH,MAAA,IAAU,KAAA,EAAO,cAAA,CAAe,CAAA,GAAI,SAAA,EAAW,kBAAA,CAAmB,CAAA;EAQ5D,iBAAA,IACJ,aAAA,EAAe,aAAA,EACf,QAAA,GAAW,gBAAA,EAAkB,SAAA,KAAc,CAAA,GAAI,OAAA,CAAQ,CAAA,IACtD,OAAA,CAAQ,CAAA;EASX,kBAAA,CAAmB,aAAA,EAAe,aAAA,GAAgB,SAAA;EAYlD,OAAA;E1ClO8B;AAMhC;;;;;;;;;;;;AAEiC;EARD,Q0CyPtB,uBAAA;E1C1Oa;EAAA,Q0C8Pb,aAAA;E1C9PwB;;;;;;EAAA,Q0CkRxB,sBAAA;EAAA,QAwBA,mBAAA;EAAA,QAsBA,YAAA;EAAA,QAqCA,WAAA;EAqDR,gBAAA,CAAiB,KAAA,EAAO,cAAA,GAAiB,YAAA;E1C1ZnB;;;;;E0CqatB,gBAAA,IAAoB,SAAA;EAAA,QAIZ,OAAA;AAAA;;;cC3cG,cAAA,SAAuB,gBAAgB;;;cCCvC,yBAAA;AAAA,UAEI,cAAA;EACf,KAAA;EACA,KAAA,EAAO,cAAc;AAAA;AAAA,iBAGP,WAAA,IAAe,KAAA,EAAO,cAAA,CAAe,CAAA,IAAK,kBAAA;AAAA,iBAY1C,mBAAA,CAAoB,MAAA,UAAgB,WAAA,oBAA+B,cAAc;;;UCpBvF,cAAA;EACR,KAAA,EAAO,cAAc;EACrB,QAAA;AAAA;AAAA,iBASc,MAAA,IACd,KAAA,EAAO,cAAA,CAAe,CAAA,GACtB,OAAA;EAAY,UAAA;AAAA,IACX,kBAAA;AAAA,iBAWa,kBAAA,CAAmB,MAAA,WAAiB,GAAG,SAAS,cAAA;;;UCftD,aAAA;EACR,KAAA,EAAO,KAAA;EACP,KAAA,GAAQ,cAAc;AAAA;AAAA,cAiBX,SAAA,MAPF,KAAA,GAAU,cAAA,CAAe,CAAA,0CACI,IAAA,uBAA2B,MAAA,EAAQ,SAAA,KAAY,SAAA;AAAA,cAO1E,OAAA,MARF,KAAA,GAAU,cAAA,CAAe,CAAA,0CACI,IAAA,uBAA2B,MAAA,EAAQ,SAAA,KAAY,SAAA;AAAA,cAQ1E,SAAA,MATF,KAAA,GAAU,cAAA,CAAe,CAAA,0CACI,IAAA,uBAA2B,MAAA,EAAQ,SAAA,KAAY,SAAA;AAAA,iBAUvE,gBAAA,CAAiB,MAAA,WAAiB,aAAa;;;iBCZ/C,cAAA,CAAe,GAAA,UAAa,KAAA,WAAgB,MAAA,UAAgB,WAAA;AAAA,iBAU5D,WAAA,cAAyB,GAAA,UAAa,MAAA,UAAgB,WAAA,qBAAgC,CAAC;AAAA,iBAKvF,WAAA,CAAY,GAAA,UAAa,MAAA,UAAgB,WAAA;;;;;;;;;;cC3B5C,gBAAA,EAAgB,iBAAA,CAAA,SAAA;;;;AlDX7B;;iBkDkBgB,YAAA,IAAgB,SAAS;;;;;;;iBAczB,gBAAA,IAAoB,SAAA,EAAW,SAAA,EAAW,EAAA,QAAU,CAAA,GAAI,CAAA;;;KChC5D,WAAA;AAAA,UAEK,aAAA;EACf,OAAA;EACA,SAAA;EACA,KAAA;AAAA;AAAA,iBAGc,eAAA,CAAgB,GAAA,YAAe,GAAA,IAAO,aAAa;;;;;;;;;UCElD,oBAAA;EAAA,SACN,IAAA;;WAEA,GAAA,EAAK,aAAa;AAAA;;;;UAMZ,qBAAA;EAAA,SACN,IAAA;;WAEA,SAAS;AAAA;;ApDnB2B;;UoDyB9B,oBAAA;EAAA,SACN,IAAI;AAAA;;;;UAME,mBAAA;EAAA,SACN,IAAA;EnDHD;EAAA,SmDKC,WAAW;AAAA;;;;;;;;;;;;;;;;KAkBV,gBAAA,GACR,oBAAA,GACA,qBAAA,GACA,oBAAA,GACA,mBAAA;;;;AnDzBJ;;;iBmDiCgB,0BAAA,CAA2B,CAAA,EAAG,OAAA,CAAQ,SAAA,IAAa,oBAAA;AnDjCN;;;;ACd7D;;ADc6D,iBmD2C7C,2BAAA,CAA4B,SAAA,WAAoB,qBAAqB;;AlDzDrD;AAMhC;;;iBkD4DgB,0BAAA,IAA8B,oBAAoB;;;;;;;iBAUlD,yBAAA,CAA0B,WAAA,WAAsB,mBAAmB;;;;;;KCzFvE,WAAA;;;;;;ArDRZ;;KqDiBY,kBAAA,WAA6B,gBAAA,KACtC,KAAA,EAAO,CAAA,EAAG,OAAA,EAAS,gBAAA,YAA4B,OAAA;;;;;;;;ArDfH;;;KqD2BnC,kBAAA,WAA6B,gBAAA,KACtC,KAAA,EAAO,CAAA,EAAG,OAAA,EAAS,gBAAA,KAAqB,QAAA,GAAW,aAAA,GAAgB,OAAA,CAAQ,QAAA;ApD3B9E;;;;AAAiE;AAEjE;;;;;AAFA,KoDuCY,eAAA,IACT,QAAA,EAAU,QAAA,EAAU,KAAA,EAAO,gBAAA,EAAkB,OAAA,EAAS,gBAAA,KAAqB,QAAA;;;;;;KAOlE,eAAA,SAAwB,MAAM;;;;UAKzB,UAAA;;;;;EAKf,IAAI;AAAA;;ApD1BN;;KoDiCY,2BAAA,WAAsC,gBAAA,GAAmB,gBAAA,YAA4B,IAAA,YAAgB,CAAA;;ApDjCpD;;;;ACd7D;;;;AAAgC;AAMhC;;;;;;;;;KmD8DY,iBAAA,IACV,aAAA,EAAe,aAAA,EACf,MAAA,EAAQ,oBAAA,EACR,OAAA,EAAS,oBAAA,EACT,KAAA,EAAO,gBAAA,KACJ,QAAA,GAAW,OAAA,CAAQ,QAAA;;;uBCvDF,gBAAA;EAAA,mBAWsC,MAAA,EAAQ,aAAA;EAAA,mBACZ,GAAA,EAAK,UAAA;EAAA,iBACf,SAAA;EAAA,iBACW,gBAAA;EAAA,iBAbtC,WAAA;EAAA,iBACA,WAAA;EAAA,iBACA,aAAA;EAAA,iBACA,cAAA;EAAA,iBACA,gBAAA;EAAA,iBACA,gBAAA;EAAA,iBACA,UAAA;EAAA,iBACA,WAAA;cAGyC,MAAA,EAAQ,aAAA,EACZ,GAAA,EAAK,UAAA,EACf,SAAA,EAAW,SAAA,EACA,gBAAA,EAAkB,uBAAA;EAAA,SAKhE,QAAA;EAIT,UAAA,WAAqB,gBAAA,EACnB,UAAA,EAAY,2BAAA,CAA4B,CAAA,GACxC,QAAA,EAAU,kBAAA,CAAmB,CAAA,IAC5B,UAAA;EAQH,UAAA,WAAqB,gBAAA,EACnB,UAAA,EAAY,2BAAA,CAA4B,CAAA,GACxC,QAAA,EAAU,kBAAA,CAAmB,CAAA;EAK/B,UAAA,CAAW,YAAA,EAAc,2BAAA;EAMzB,KAAA,CAAM,UAAA,EAAY,2BAAA,EAA6B,QAAA,EAAU,WAAA;EAIzD,OAAA,CAAQ,QAAA,EAAU,eAAA;EAIlB,OAAA,CAAQ,QAAA,EAAU,eAAA;EAIlB,SAAA,CAAU,QAAA,EAAU,iBAAA;EAIpB,OAAA,IAAW,KAAA,oBAAyB,IAAA,gBAAoB,CAAA,IAAK,CAAA;EAMvD,MAAA,CAAO,KAAA,WAAgB,OAAA,EAAS,gBAAA,GAAmB,OAAA,CAAQ,QAAA;EAAA,QAYzD,cAAA;EAAA,QAQM,aAAA;EAAA,QAYA,aAAA;EAAA,QAYN,qBAAA;EAAA,QAYA,eAAA;EAAA,QAOA,cAAA;EAAA,QAYA,cAAA;EAAA,QAYA,iBAAA;EAAA,QAKA,aAAA;EAAA,QAiCM,aAAA;EAAA,UAuBJ,SAAA,CAAU,OAAA,EAAS,oBAAA;EAAA,UAKnB,iBAAA,CACR,aAAA,EAAe,aAAA,EACf,MAAA,EAAQ,oBAAA,GACP,QAAA;EAAA,QAcK,aAAA;EAAA,QAOA,kBAAA;EAAA,QAcA,UAAA;EAAA,QAQA,UAAA;EAAA,QAMA,eAAA;EAAA,QAmBA,kBAAA;EAAA,QAMA,aAAA;AAAA;;;;;;;;;;;;;;;AtDlVV;;;;;;;cuDuBa,uBAAA,SAAgC,gBAAgB;EAC3D,QAAQ;AAAA;;;cCrBG,oBAAA,EAAsB,OAAO,CAAC,MAAA;AAAA,cAgB9B,aAAA,SAAsB,gBAAA;EAAA,SACjB,UAAA,EAAY,oBAAA;cAEhB,UAAA,EAAY,oBAAA,EAAsB,OAAA,WAAkB,KAAA;AAAA;AAAA,iBAMlD,KAAA,CACd,MAAA,EAAQ,oBAAoB,EAC5B,OAAA;;;cC5BW,aAAA,SAAsB,gBAAgB;cACrC,KAAA;AAAA;;;iBCDE,kBAAA,CAAmB,KAAA,YAAiB,KAAA,IAAS,gBAAgB;;;cCAhE,4BAAA,SAAqC,gBAAgB;EAAhB,WAAA;AAAA;;;cCArC,0BAAA,SAAmC,gBAAgB;EAAhB,WAAA;AAAA;;;cCAnC,aAAA,SAAsB,gBAAgB;cACrC,OAAA,WAAkB,KAAA;AAAA;;;cCDnB,SAAA,SAAkB,gBAAgB;cACjC,OAAA,WAAkB,KAAA;AAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { a as z, b as CUID2_REGEX, c as ZodCustomIssue, g as MessageKeys, i as ZodError, n as OpenAPIObject, o as zod_d_exports, r as PathItemObject, s as I18nErrorMetadata, t as OpenAPIHono, x as cuid2 } from "./zod-wecrEVAs.mjs";
|
|
2
|
+
import { $ZodRawIssue } from "zod/v4/core";
|
|
3
|
+
|
|
4
|
+
//#region src/i18n/validation/with-zod-i18n.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Type-safe helper for creating custom Zod error messages with i18n support
|
|
7
|
+
*
|
|
8
|
+
* Usage with .refine():
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const schema = z.string().refine(
|
|
11
|
+
* (val) => val.length > 5,
|
|
12
|
+
* withZodI18n('validation.minLength', { min: 5 })
|
|
13
|
+
* )
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Usage with built-in validators:
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const schema = z.string().min(5, withZodI18n('validation.minLength', { min: 5 }))
|
|
19
|
+
* const schema = z.string().email(withZodI18n('validation.email'))
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @param key - Message key from shared i18n messages (type-safe via MessageKeys)
|
|
23
|
+
* @param params - Optional interpolation parameters for the message
|
|
24
|
+
* @returns Zod error configuration object with translated message
|
|
25
|
+
*/
|
|
26
|
+
declare function withZodI18n(key: MessageKeys, params?: Record<string, unknown>): {
|
|
27
|
+
error: (_issue: $ZodRawIssue) => string;
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/i18n/validation/validation.context.d.ts
|
|
31
|
+
/**
|
|
32
|
+
* Zod error map that resolves I18nService from the DI container.
|
|
33
|
+
* Falls back to 'Invalid input' when called outside the container scope
|
|
34
|
+
* (e.g., config validation at startup, tests).
|
|
35
|
+
*/
|
|
36
|
+
declare const zodErrorMap: import("zod").ZodErrorMap<import("zod/v4/core").$ZodIssue>;
|
|
37
|
+
declare namespace index_d_exports {
|
|
38
|
+
export { CUID2_REGEX, I18nErrorMetadata, OpenAPIHono, OpenAPIObject, PathItemObject, ZodCustomIssue, ZodError, cuid2, withZodI18n, z, zodErrorMap };
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { withZodI18n as n, zodErrorMap as t };
|
|
42
|
+
//# sourceMappingURL=index-DtBNIFuP.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DtBNIFuP.d.mts","names":[],"sources":["../src/i18n/validation/with-zod-i18n.ts","../src/i18n/validation/validation.context.ts","../src/i18n/validation/index.ts"],"mappings":";;;;;;;AA0BA;;;;;;;;;;;;;;;;AAGiC;;iBAHjB,WAAA,CACd,GAAA,EAAK,WAAA,EACL,MAAA,GAAS,MAAA;EACN,KAAA,GAAQ,MAAA,EAAQ,YAAA;AAAA;;;;;;;;cCtBR,WAAA,gBAAW,WAAA,uBAAA,SAAA;AAAA"}
|
|
@@ -18,111 +18,6 @@ declare const common: {
|
|
|
18
18
|
};
|
|
19
19
|
};
|
|
20
20
|
//#endregion
|
|
21
|
-
//#region src/i18n/messages/en/errors.d.ts
|
|
22
|
-
/**
|
|
23
|
-
* System Error Messages - English
|
|
24
|
-
*
|
|
25
|
-
* Error messages used by packages/modules infrastructure.
|
|
26
|
-
* These are automatically merged with application-specific messages.
|
|
27
|
-
*/
|
|
28
|
-
declare const errors: {
|
|
29
|
-
readonly internalError: "An internal error occurred";
|
|
30
|
-
readonly notFound: "Resource not found";
|
|
31
|
-
readonly unauthorized: "Unauthorized. Please sign in.";
|
|
32
|
-
readonly forbidden: "Access denied";
|
|
33
|
-
readonly honoAppAlreadyConfigured: "HonoApp has already been configured and can only be configured once";
|
|
34
|
-
readonly routeNotFound: "Route not found: {method} {path}";
|
|
35
|
-
readonly routeAccessDenied: "Resource not found";
|
|
36
|
-
readonly controllerMethodNotFound: "Method {methodName} not found on {controllerName}";
|
|
37
|
-
readonly controllerRegistration: "Failed to register controller {controllerName}: {reason}";
|
|
38
|
-
readonly duplicateRouteName: "Duplicate route name \"{name}\". Already registered by {existingHandler}, cannot register {newHandler}.";
|
|
39
|
-
readonly routeNameNotFound: "Route \"{name}\" not found in registry.";
|
|
40
|
-
readonly missingRouteParam: "Missing required parameter \"{param}\" for route \"{name}\" (path: {path}).";
|
|
41
|
-
readonly routerUseScopeViolation: "router.use() can only be called on the root Router, not inside group() callbacks. Use router.middleware() for scoped middleware.";
|
|
42
|
-
readonly middlewareNextCalledMultipleTimes: "next() was called multiple times in \"{middlewareName}\" middleware. Ensure each middleware calls next() at most once.";
|
|
43
|
-
readonly missingEnvironmentVariable: "Environment variable \"{variable}\" is required but not set.";
|
|
44
|
-
readonly websocketBodyNotAvailable: "body() is not available in WebSocket gateways. Use WebSocket messages instead.";
|
|
45
|
-
readonly websocketDuplicateEventHandler: "@{decorator}() is already applied to '{existingMethod}'. Only one method per gateway can handle this event.";
|
|
46
|
-
readonly contextNotInitialized: "Context has not been initialized";
|
|
47
|
-
readonly userNotAuthenticated: "User is not authenticated";
|
|
48
|
-
readonly insufficientPermissions: "Insufficient permissions to perform this action";
|
|
49
|
-
readonly requestContainerNotInitialized: "Request container has not been initialized";
|
|
50
|
-
readonly requestScopeOperationNotAllowed: "{methodName}() cannot be called on this container scope. Check if you are calling it on the correct container (global vs request-scoped).";
|
|
51
|
-
readonly conditionalBindingFallback: "Conditional binding predicate returned false for token \"{token}\" but no fallback was provided and no existing registration exists.";
|
|
52
|
-
readonly configNotInitialized: "Configuration service has not been initialized";
|
|
53
|
-
readonly configModuleNotInitialized: "ConfigModule.forRoot() was not called before module initialization";
|
|
54
|
-
readonly stratalNotInitialized: "Stratal has not been instantiated. Ensure you export a Stratal instance as the default export.";
|
|
55
|
-
readonly moduleAlreadyRegistered: "Module {moduleName} is already registered";
|
|
56
|
-
readonly moduleDependencyNotFound: "Module dependency {dependency} not found for module {moduleName}";
|
|
57
|
-
readonly moduleCircularDependency: "Circular dependency detected: {cycle}";
|
|
58
|
-
readonly invalidModuleProvider: "Invalid module provider configuration: {provider}";
|
|
59
|
-
readonly databaseGeneric: "Database error occurred";
|
|
60
|
-
readonly databaseRecordNotFound: "Record not found in database";
|
|
61
|
-
readonly databaseUniqueConstraint: "Record already exists";
|
|
62
|
-
readonly databaseForeignKeyConstraint: "Related record not found";
|
|
63
|
-
readonly databaseConnectionFailed: "Failed to connect to database";
|
|
64
|
-
readonly databaseTimeout: "Database query timeout";
|
|
65
|
-
readonly databaseNullConstraint: "Required field is missing";
|
|
66
|
-
readonly databaseTooManyConnections: "Too many database connections";
|
|
67
|
-
readonly databaseTransactionConflict: "Transaction conflict or deadlock";
|
|
68
|
-
readonly databaseConstraintFailed: "A database constraint was violated";
|
|
69
|
-
readonly databaseTableNotFound: "The specified table does not exist in the database";
|
|
70
|
-
readonly databaseColumnNotFound: "The specified column does not exist in the table";
|
|
71
|
-
readonly databaseInvalidQuery: "The database query is invalid or malformed";
|
|
72
|
-
readonly invalidErrorCodeRange: "Invalid error code range: {code}";
|
|
73
|
-
readonly queueBindingNotFound: "Queue binding {queueName} not found in environment";
|
|
74
|
-
readonly queueProviderNotSupported: "Queue provider \"{provider}\" is not supported. Valid providers: cloudflare, sync";
|
|
75
|
-
readonly cronExecutionFailed: "{count} cron job(s) failed for schedule \"{schedule}\": {jobs}";
|
|
76
|
-
readonly localeNotSupported: "Locale '{locale}' is not supported. Supported locales: {supportedLocales}";
|
|
77
|
-
readonly translationMissing: "Translation missing for key '{key}' in locale '{locale}'";
|
|
78
|
-
readonly containerNotInitialized: "Application container has not been initialized. Ensure Application.initialize() has been called.";
|
|
79
|
-
readonly domainMismatch: "The requested domain does not match any configured route";
|
|
80
|
-
readonly invalidSignature: "The URL signature is invalid or has expired";
|
|
81
|
-
readonly schemaValidation: "Schema validation failed";
|
|
82
|
-
readonly responseValidation: "Response validation failed";
|
|
83
|
-
readonly openapiValidation: "OpenAPI validation failed: {details}";
|
|
84
|
-
readonly openapiRouteRegistration: "Failed to register OpenAPI route {path}: {reason}";
|
|
85
|
-
readonly email: {
|
|
86
|
-
readonly resendApiKeyMissing: "Resend API key not configured. Set RESEND_EMAIL_API_KEY environment variable.";
|
|
87
|
-
readonly smtpConfigurationMissing: "SMTP configuration missing. Set SMTP_URL environment variable.";
|
|
88
|
-
readonly smtpHostMissing: "SMTP host not configured. Check SMTP_URL format (smtp://user:pass@host:port).";
|
|
89
|
-
readonly smtpConnectionFailed: "Failed to connect to SMTP server {smtpHost}:{smtpPort}";
|
|
90
|
-
readonly resendApiFailed: "Resend API error";
|
|
91
|
-
readonly providerNotSupported: "Unsupported email provider: {provider}. Supported providers: resend, smtp";
|
|
92
|
-
};
|
|
93
|
-
readonly storage: {
|
|
94
|
-
readonly fileNotFound: "File at path \"{path}\" was not found";
|
|
95
|
-
readonly invalidDisk: "Storage disk \"{disk}\" is not configured";
|
|
96
|
-
readonly invalidFileType: "File type \"{mimeType}\" is not allowed";
|
|
97
|
-
readonly fileTooLarge: "File size {size} exceeds maximum allowed size of {maxSize}";
|
|
98
|
-
readonly presignedUrlInvalidExpiry: "Expiry must be between {min} and {max} seconds";
|
|
99
|
-
readonly diskNotConfigured: "Disk \"{disk}\" is not configured";
|
|
100
|
-
readonly responseBodyMissing: "No body in storage response for path: {path}";
|
|
101
|
-
readonly r2BindingNotFound: "R2 binding \"{binding}\" was not found in the environment";
|
|
102
|
-
readonly r2PresignedUrlSecretMissing: "APP_SECRET environment variable is required for presigned URLs";
|
|
103
|
-
};
|
|
104
|
-
readonly cache: {
|
|
105
|
-
readonly getFailed: "Failed to retrieve value from cache for key '{key}'";
|
|
106
|
-
readonly putFailed: "Failed to store value in cache for key '{key}'";
|
|
107
|
-
readonly deleteFailed: "Failed to delete value from cache for key '{key}'";
|
|
108
|
-
readonly listFailed: "Failed to list cache keys";
|
|
109
|
-
};
|
|
110
|
-
readonly rateLimit: {
|
|
111
|
-
readonly tooManyRequests: "Too Many Requests";
|
|
112
|
-
readonly notDefined: "Rate limiter \"{name}\" is not defined. Register it via RateLimiterRegistry.for(\"{name}\", ...) inside a module's onInitialize hook.";
|
|
113
|
-
readonly notConfigured: "RateLimiterModule.forRoot() was not called. Pass { store: \"kv\" | \"memory\" | { useClass } } to enable rate limiting.";
|
|
114
|
-
readonly moduleNotImported: "Rate limiter \"{name}\" was used (router.throttle / @RateLimit) but RateLimiterModule is not imported in your AppModule. Add RateLimiterModule.forRoot({ store: ... }) to imports.";
|
|
115
|
-
};
|
|
116
|
-
readonly seederNameCollision: "Seeder name collision: \"{name}\" is already registered. Use distinct class names for each seeder.";
|
|
117
|
-
readonly seederNotRegistered: "Seeder \"{name}\" is not registered";
|
|
118
|
-
readonly migration: {
|
|
119
|
-
readonly failed: "Migration {migrationName} failed: {error}";
|
|
120
|
-
readonly checksumMismatch: "Migration {migrationName} checksum mismatch (expected: {expected}, actual: {actual})";
|
|
121
|
-
readonly alreadyApplied: "Migration {migrationName} has already been applied";
|
|
122
|
-
readonly notFound: "Migration {migrationName} not found";
|
|
123
|
-
};
|
|
124
|
-
};
|
|
125
|
-
//#endregion
|
|
126
21
|
//#region src/i18n/messages/en/emails.d.ts
|
|
127
22
|
/**
|
|
128
23
|
* System Email Messages - English
|
|
@@ -301,8 +196,8 @@ declare const zodI18n: {
|
|
|
301
196
|
};
|
|
302
197
|
};
|
|
303
198
|
declare namespace index_d_exports {
|
|
304
|
-
export { common, emails,
|
|
199
|
+
export { common, emails, validation, zodI18n };
|
|
305
200
|
}
|
|
306
201
|
//#endregion
|
|
307
|
-
export {
|
|
308
|
-
//# sourceMappingURL=index-
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,43 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* Eagerly bootstraps the Application at construction time, dynamically
|
|
9
|
-
* importing `cloudflare:workers` for env and waitUntil.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* import { Stratal } from 'stratal'
|
|
14
|
-
* import { AppModule } from './app.module'
|
|
15
|
-
*
|
|
16
|
-
* export default new Stratal({ module: AppModule })
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
declare class Stratal<Env extends StratalEnv = StratalEnv> {
|
|
20
|
-
private app;
|
|
21
|
-
private initPromise;
|
|
22
|
-
private static _application;
|
|
23
|
-
private static _generation;
|
|
24
|
-
private static _previousInstance;
|
|
25
|
-
constructor(config: ApplicationConfig);
|
|
26
|
-
fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response>;
|
|
27
|
-
queue(batch: MessageBatch): Promise<void>;
|
|
28
|
-
scheduled(controller: ScheduledController): Promise<void>;
|
|
29
|
-
get hono(): Promise<HonoApp>;
|
|
30
|
-
shutdown(): Promise<void>;
|
|
31
|
-
/**
|
|
32
|
-
* @internal
|
|
33
|
-
* Resolves the Application instance from the static singleton.
|
|
34
|
-
* Used by worker base classes (DurableObject, Workflow, WorkerEntrypoint)
|
|
35
|
-
* to access the DI container without going through Cloudflare RPC.
|
|
36
|
-
*/
|
|
37
|
-
static resolveApplication(): Promise<Application>;
|
|
38
|
-
private ensureReady;
|
|
39
|
-
private prepareApp;
|
|
40
|
-
}
|
|
41
|
-
//#endregion
|
|
42
|
-
export { Application, ApplicationConfig, ApplicationOptions, Constructor, Stratal, StratalEnv, StratalExecutionContext };
|
|
43
|
-
//# sourceMappingURL=index.d.mts.map
|
|
1
|
+
import { Jn as StratalExecutionContext, ct as Application, lt as ApplicationConfig, ut as ApplicationOptions } from "./index-B_JoEl3V.mjs";
|
|
2
|
+
import { t as StratalEnv } from "./env-ug22bJj7.mjs";
|
|
3
|
+
import { t as Constructor } from "./types-CmV_9xBD.mjs";
|
|
4
|
+
import { t as Stratal } from "./stratal-DwDJPY9N.mjs";
|
|
5
|
+
import { n as ModuleRef, t as LazyModuleLoader } from "./lazy-module-loader-Ib383jH_.mjs";
|
|
6
|
+
export { Application, ApplicationConfig, ApplicationOptions, Constructor, LazyModuleLoader, ModuleRef, Stratal, StratalEnv, StratalExecutionContext };
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { d as LazyModuleLoader, f as ModuleRef } from "./module-registry-Dm-pqHd3.mjs";
|
|
2
|
+
import { n as Application, t as Stratal } from "./stratal-DL9M38_s.mjs";
|
|
3
|
+
export { Application, LazyModuleLoader, ModuleRef, Stratal };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as Command } from "./command-
|
|
1
|
+
import { t as Command } from "./command-BvmUAPPQ.mjs";
|
|
2
2
|
//#region src/quarry/is-command.ts
|
|
3
3
|
/**
|
|
4
4
|
* Check if a class is a Command (extends Command base class).
|
|
@@ -11,4 +11,4 @@ function isCommand(target) {
|
|
|
11
11
|
//#endregion
|
|
12
12
|
export { isCommand as t };
|
|
13
13
|
|
|
14
|
-
//# sourceMappingURL=is-command-
|
|
14
|
+
//# sourceMappingURL=is-command-CEPO9n8c.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-command-
|
|
1
|
+
{"version":3,"file":"is-command-CEPO9n8c.mjs","names":[],"sources":["../src/quarry/is-command.ts"],"sourcesContent":["import { Command } from './command'\nimport type { Constructor } from '../types'\n\n/**\n * Check if a class is a Command (extends Command base class).\n *\n * Used by ModuleRegistry for auto-discovery from providers.\n */\nexport function isCommand(target: Constructor): boolean {\n return target.prototype instanceof Command\n}\n"],"mappings":";;;;;;;AAQA,SAAgB,UAAU,QAA8B;CACtD,OAAO,OAAO,qBAAqB;AACrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-seeder-
|
|
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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Hn as InjectionToken, Mn as ModuleClass, Y as Container, kn as DynamicModule, ln as ModuleRegistry } from "./index-B_JoEl3V.mjs";
|
|
2
|
+
import { r as LoggerService } from "./index-BUt92sAE.mjs";
|
|
3
|
+
import { t as Constructor } from "./types-CmV_9xBD.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/module/module-ref.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Handle to a lazily loaded module, returned by {@link LazyModuleLoader.load}.
|
|
8
|
+
*
|
|
9
|
+
* Resolves providers from the global container, so singletons registered by the
|
|
10
|
+
* lazy module persist across requests.
|
|
11
|
+
*
|
|
12
|
+
* Note: request-scoped providers resolved via {@link ModuleRef.get} degrade to
|
|
13
|
+
* transient instances (there is no ambient request scope here). To obtain a
|
|
14
|
+
* true per-request instance, resolve the token from the request container
|
|
15
|
+
* inside a request scope instead.
|
|
16
|
+
*/
|
|
17
|
+
declare class ModuleRef {
|
|
18
|
+
private readonly container;
|
|
19
|
+
/** The module class this ref was loaded from. */
|
|
20
|
+
readonly moduleClass: Constructor;
|
|
21
|
+
constructor(container: Container, /** The module class this ref was loaded from. */
|
|
22
|
+
|
|
23
|
+
moduleClass: Constructor);
|
|
24
|
+
/** Resolve a provider from the lazily loaded module (global scope). */
|
|
25
|
+
get<T>(token: InjectionToken<T>): T;
|
|
26
|
+
/** Async variant of {@link ModuleRef.get}, matching the NestJS API shape. */
|
|
27
|
+
resolve<T>(token: InjectionToken<T>): Promise<T>;
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/module/lazy-module-loader.d.ts
|
|
31
|
+
/**
|
|
32
|
+
* Loads modules on demand (NestJS-style), so optional features stay out of the
|
|
33
|
+
* cold-start path until first use.
|
|
34
|
+
*
|
|
35
|
+
* Inject {@link DI_TOKENS.LazyModuleLoader} and call {@link load}:
|
|
36
|
+
*
|
|
37
|
+
* ```ts
|
|
38
|
+
* const ref = await loader.load(() => import('./reports.module').then(m => m.ReportsModule))
|
|
39
|
+
* const reports = ref.get(ReportService)
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* The loaded module's nested `imports` and `providers` are registered into the
|
|
43
|
+
* global container and its `onInitialize` hook runs once. Controllers, queue
|
|
44
|
+
* consumers, and cron jobs are skipped — that wiring is finalized at bootstrap.
|
|
45
|
+
* Repeat loads of the same module return the cached {@link ModuleRef} without
|
|
46
|
+
* re-registering.
|
|
47
|
+
*/
|
|
48
|
+
declare class LazyModuleLoader {
|
|
49
|
+
private readonly registry;
|
|
50
|
+
private readonly container;
|
|
51
|
+
private readonly logger;
|
|
52
|
+
private readonly cache;
|
|
53
|
+
private readonly inFlight;
|
|
54
|
+
constructor(registry: ModuleRegistry, container: Container, logger: LoggerService);
|
|
55
|
+
load(loaderFn: () => Promise<ModuleClass | DynamicModule>): Promise<ModuleRef>;
|
|
56
|
+
private registerAndBuild;
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
export { ModuleRef as n, LazyModuleLoader as t };
|
|
60
|
+
//# sourceMappingURL=lazy-module-loader-Ib383jH_.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy-module-loader-Ib383jH_.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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { t as __exportAll } from "./chunk-BBjsoOtd.mjs";
|
|
2
|
+
import { d as inject, n as CONTAINER_TOKEN, s as Singleton, v as ROUTER_TOKENS } from "./di-DseMn-z9.mjs";
|
|
3
|
+
import { n as __decorateParam, t as __decorate } from "./decorate-CuAoSZvs.mjs";
|
|
4
|
+
import { l as ROUTER_CONTEXT_KEYS } from "./exception-context-kEoMFwze.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-D-dHiIPc.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-path.service-D-dHiIPc.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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"}
|