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.
Files changed (284) hide show
  1. package/CHANGELOG.md +912 -0
  2. package/README.md +96 -14
  3. package/dist/bin/cloudflare-workers-loader.mjs +18 -3
  4. package/dist/bin/cloudflare-workers-loader.mjs.map +1 -1
  5. package/dist/bin/quarry.mjs +85 -14
  6. package/dist/bin/quarry.mjs.map +1 -1
  7. package/dist/cache/index.d.mts +8 -9
  8. package/dist/cache/index.d.mts.map +1 -1
  9. package/dist/cache/index.mjs +56 -17
  10. package/dist/cache/index.mjs.map +1 -1
  11. package/dist/{cache.service-uElmBtdS.d.mts → cache.service-Dg0Hj0gp.d.mts} +27 -12
  12. package/dist/cache.service-Dg0Hj0gp.d.mts.map +1 -0
  13. package/dist/{command-DoBD2Cwl.d.mts → command-BXMccV_9.d.mts} +6 -3
  14. package/dist/command-BXMccV_9.d.mts.map +1 -0
  15. package/dist/{command-BvmUAPPQ.mjs → command-Bb820B6W.mjs} +36 -13
  16. package/dist/command-Bb820B6W.mjs.map +1 -0
  17. package/dist/common.schemas-BigQCwYB.mjs +89 -0
  18. package/dist/common.schemas-BigQCwYB.mjs.map +1 -0
  19. package/dist/config/index.d.mts +15 -15
  20. package/dist/config/index.d.mts.map +1 -1
  21. package/dist/config/index.mjs +4 -6
  22. package/dist/config/index.mjs.map +1 -1
  23. package/dist/{consumer-registry-D3iMTSdy.d.mts → consumer-registry-i9oCdarv.d.mts} +2 -3
  24. package/dist/consumer-registry-i9oCdarv.d.mts.map +1 -0
  25. package/dist/{container-storage-BmOJ4_Na.mjs → container-storage-DfF7SXdV.mjs} +11 -1
  26. package/dist/container-storage-DfF7SXdV.mjs.map +1 -0
  27. package/dist/{controller.decorator-YSTPQntu.mjs → controller.decorator-BB0JcwMg.mjs} +18 -9
  28. package/dist/controller.decorator-BB0JcwMg.mjs.map +1 -0
  29. package/dist/cron/index.d.mts +6 -7
  30. package/dist/cron/index.d.mts.map +1 -1
  31. package/dist/cron/index.mjs +1 -1
  32. package/dist/{cron-job-NesZRk8F.d.mts → cron-job-DAgNw4Bn.d.mts} +1 -2
  33. package/dist/cron-job-DAgNw4Bn.d.mts.map +1 -0
  34. package/dist/{cron.module-C81HTzR7.mjs → cron.module-Dnyl9sFk.mjs} +6 -7
  35. package/dist/{cron.module-C81HTzR7.mjs.map → cron.module-Dnyl9sFk.mjs.map} +1 -1
  36. package/dist/{decorate-CuAoSZvs.mjs → decorate-C79yt3Wt.mjs} +2 -2
  37. package/dist/di/index.d.mts +1 -1
  38. package/dist/di/index.mjs +2 -3
  39. package/dist/{di-D7qmrAir.mjs → di-DQ3xbjgf.mjs} +48 -6
  40. package/dist/di-DQ3xbjgf.mjs.map +1 -0
  41. package/dist/email/index.d.mts +158 -133
  42. package/dist/email/index.d.mts.map +1 -1
  43. package/dist/email/index.mjs +66 -78
  44. package/dist/email/index.mjs.map +1 -1
  45. package/dist/{en-CDZBMcc1.mjs → en-CCL84z4k.mjs} +2 -2
  46. package/dist/{en-CDZBMcc1.mjs.map → en-CCL84z4k.mjs.map} +1 -1
  47. package/dist/env-ug22bJj7.d.mts.map +1 -1
  48. package/dist/errors/index.d.mts +1 -1
  49. package/dist/errors/index.mjs +3 -3
  50. package/dist/{errors-C01O2T-n.mjs → errors-CrOXI_y5.mjs} +6 -8
  51. package/dist/errors-CrOXI_y5.mjs.map +1 -0
  52. package/dist/events/index.d.mts +8 -9
  53. package/dist/events/index.d.mts.map +1 -1
  54. package/dist/events/index.mjs +1 -1
  55. package/dist/{events-BhEQuT1X.mjs → events-GtwGEHyT.mjs} +5 -6
  56. package/dist/events-GtwGEHyT.mjs.map +1 -0
  57. package/dist/{exception-context-D-kvney-.mjs → exception-context-CdnGTQNF.mjs} +13 -7
  58. package/dist/exception-context-CdnGTQNF.mjs.map +1 -0
  59. package/dist/{gateway-context-m7kEzRa2.mjs → gateway-context-Cmc1NRS0.mjs} +7 -7
  60. package/dist/{gateway-context-m7kEzRa2.mjs.map → gateway-context-Cmc1NRS0.mjs.map} +1 -1
  61. package/dist/gateway-mode-0rUaeW3g.mjs +53 -0
  62. package/dist/gateway-mode-0rUaeW3g.mjs.map +1 -0
  63. package/dist/guards/index.d.mts +38 -20
  64. package/dist/guards/index.d.mts.map +1 -1
  65. package/dist/guards/index.mjs +2 -2
  66. package/dist/{guards-DALPXy3_.mjs → guards-DOGly9IF.mjs} +34 -11
  67. package/dist/guards-DOGly9IF.mjs.map +1 -0
  68. package/dist/hono-app-IhdqL0Fk.mjs +399 -0
  69. package/dist/hono-app-IhdqL0Fk.mjs.map +1 -0
  70. package/dist/{http-method.decorator-BljM8BDj.mjs → http-method.decorator-BDi9LTWj.mjs} +9 -8
  71. package/dist/http-method.decorator-BDi9LTWj.mjs.map +1 -0
  72. package/dist/i18n/index.d.mts +26 -137
  73. package/dist/i18n/index.d.mts.map +1 -1
  74. package/dist/i18n/index.mjs +4 -5
  75. package/dist/i18n/index.mjs.map +1 -1
  76. package/dist/i18n/messages/en/index.d.mts +1 -1
  77. package/dist/i18n/messages/en/index.mjs +1 -1
  78. package/dist/i18n/utils/index.d.mts +1 -2
  79. package/dist/i18n/utils/index.d.mts.map +1 -1
  80. package/dist/i18n/validation/index.d.mts +80 -5
  81. package/dist/i18n/validation/index.d.mts.map +1 -0
  82. package/dist/i18n/validation/index.mjs +4 -5
  83. package/dist/{i18n.module-B2DvWUPa.mjs → i18n.module-Bm3xlViA.mjs} +28 -13
  84. package/dist/i18n.module-Bm3xlViA.mjs.map +1 -0
  85. package/dist/index-0ItCjaqw.d.mts.map +1 -1
  86. package/dist/{index-CNuFQSNj.d.mts → index-3HJfhLlE.d.mts} +9 -11
  87. package/dist/index-3HJfhLlE.d.mts.map +1 -0
  88. package/dist/{index-uybm0bhQ.d.mts → index-B2WtEagR.d.mts} +1187 -234
  89. package/dist/index-B2WtEagR.d.mts.map +1 -0
  90. package/dist/index-BUt92sAE.d.mts.map +1 -1
  91. package/dist/index-CAHNCpvr.d.mts +203 -0
  92. package/dist/index-CAHNCpvr.d.mts.map +1 -0
  93. package/dist/index.d.mts +4 -4
  94. package/dist/index.mjs +2 -2
  95. package/dist/{is-command-CEPO9n8c.mjs → is-command-CSVv14wh.mjs} +2 -2
  96. package/dist/{is-command-CEPO9n8c.mjs.map → is-command-CSVv14wh.mjs.map} +1 -1
  97. package/dist/{is-seeder-Gvh_AM71.mjs → is-seeder-gLgXYbqC.mjs} +2 -2
  98. package/dist/is-seeder-gLgXYbqC.mjs.map +1 -0
  99. package/dist/{lazy-module-loader-M6YKudNL.d.mts → lazy-module-loader-C3OHoUnR.d.mts} +4 -5
  100. package/dist/lazy-module-loader-C3OHoUnR.d.mts.map +1 -0
  101. package/dist/limit-BE0HNAF6.mjs +116 -0
  102. package/dist/limit-BE0HNAF6.mjs.map +1 -0
  103. package/dist/locale-path.service-BqzDIrgy.mjs +213 -0
  104. package/dist/locale-path.service-BqzDIrgy.mjs.map +1 -0
  105. package/dist/locale-url-nZrZxqJP.mjs.map +1 -1
  106. package/dist/{locale-url.service-6bgia24_.mjs → locale-url.service-H8PH6GGh.mjs} +15 -5
  107. package/dist/{locale-url.service-6bgia24_.mjs.map → locale-url.service-H8PH6GGh.mjs.map} +1 -1
  108. package/dist/logger/index.mjs +3 -5
  109. package/dist/logger/index.mjs.map +1 -1
  110. package/dist/macroable-cvDTFZ_A.mjs.map +1 -1
  111. package/dist/metadata-Ba8Fxs1F.mjs +48 -0
  112. package/dist/metadata-Ba8Fxs1F.mjs.map +1 -0
  113. package/dist/module/index.d.mts +8 -9
  114. package/dist/module/index.d.mts.map +1 -1
  115. package/dist/module/index.mjs +3 -4
  116. package/dist/module/index.mjs.map +1 -1
  117. package/dist/{module-registry-NxX5O0Qk.mjs → module-registry-lkQPDuQe.mjs} +17 -15
  118. package/dist/module-registry-lkQPDuQe.mjs.map +1 -0
  119. package/dist/{module.decorator-CYHY6pG5.mjs → module.decorator-CYbrOlX9.mjs} +2 -2
  120. package/dist/{module.decorator-CYHY6pG5.mjs.map → module.decorator-CYbrOlX9.mjs.map} +1 -1
  121. package/dist/openapi/index.d.mts +19 -16
  122. package/dist/openapi/index.d.mts.map +1 -1
  123. package/dist/openapi/index.mjs +2 -2
  124. package/dist/{openapi-CMwuCp31.mjs → openapi-DBfBa5Qh.mjs} +41 -65
  125. package/dist/openapi-DBfBa5Qh.mjs.map +1 -0
  126. package/dist/openapi-generator-CCwiu8AU.mjs +134 -0
  127. package/dist/openapi-generator-CCwiu8AU.mjs.map +1 -0
  128. package/dist/{openapi-tools.service-BC5EC3R3.mjs → openapi-tools.service-VKZJlTIX.mjs} +12 -4
  129. package/dist/openapi-tools.service-VKZJlTIX.mjs.map +1 -0
  130. package/dist/openapi.service-Ds-R1tih.d.mts +43 -0
  131. package/dist/openapi.service-Ds-R1tih.d.mts.map +1 -0
  132. package/dist/quarry/index.d.mts +10 -11
  133. package/dist/quarry/index.d.mts.map +1 -1
  134. package/dist/quarry/index.mjs +4 -4
  135. package/dist/quarry/runner.d.mts +19 -20
  136. package/dist/quarry/runner.d.mts.map +1 -1
  137. package/dist/quarry/runner.mjs +16 -13
  138. package/dist/quarry/runner.mjs.map +1 -1
  139. package/dist/{quarry-registry-DRnV-DDa.d.mts → quarry-registry-Ci4k58FZ.d.mts} +3 -4
  140. package/dist/quarry-registry-Ci4k58FZ.d.mts.map +1 -0
  141. package/dist/{quarry.module-CcGxU2dJ.mjs → quarry.module-BssRR8f0.mjs} +20 -37
  142. package/dist/quarry.module-BssRR8f0.mjs.map +1 -0
  143. package/dist/queue/index.d.mts +2 -2
  144. package/dist/queue/index.mjs +3 -3
  145. package/dist/queue/index.mjs.map +1 -1
  146. package/dist/{queue.module-CEs4_kEM.mjs → queue.module-DnAdSbR-.mjs} +40 -41
  147. package/dist/queue.module-DnAdSbR-.mjs.map +1 -0
  148. package/dist/{r2-storage.provider-BoZmR6Ut.mjs → r2-storage.provider-wU_6api4.mjs} +45 -6
  149. package/dist/r2-storage.provider-wU_6api4.mjs.map +1 -0
  150. package/dist/{rate-limit.decorator-Djs4oYDB.mjs → rate-limit.decorator-PYQ9EYqs.mjs} +10 -5
  151. package/dist/{rate-limit.decorator-Djs4oYDB.mjs.map → rate-limit.decorator-PYQ9EYqs.mjs.map} +1 -1
  152. package/dist/rate-limiter/index.d.mts +64 -19
  153. package/dist/rate-limiter/index.d.mts.map +1 -1
  154. package/dist/rate-limiter/index.mjs +67 -83
  155. package/dist/rate-limiter/index.mjs.map +1 -1
  156. package/dist/response-cache/index.d.mts +326 -0
  157. package/dist/response-cache/index.d.mts.map +1 -0
  158. package/dist/response-cache/index.mjs +511 -0
  159. package/dist/response-cache/index.mjs.map +1 -0
  160. package/dist/response-cache.error-B4D0zy9W.mjs +24 -0
  161. package/dist/response-cache.error-B4D0zy9W.mjs.map +1 -0
  162. package/dist/response-headers-BqA57S_X.mjs +158 -0
  163. package/dist/response-headers-BqA57S_X.mjs.map +1 -0
  164. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  165. package/dist/route-cache-binding-CrLh8tB6.mjs +390 -0
  166. package/dist/route-cache-binding-CrLh8tB6.mjs.map +1 -0
  167. package/dist/route-metadata-QQhbed1i.mjs +17 -0
  168. package/dist/route-metadata-QQhbed1i.mjs.map +1 -0
  169. package/dist/{route-name-DGoBOfPg.mjs → route-name-BslSbmMP.mjs} +15 -11
  170. package/dist/route-name-BslSbmMP.mjs.map +1 -0
  171. package/dist/route-registration.service-COKBZTsn.mjs +1265 -0
  172. package/dist/route-registration.service-COKBZTsn.mjs.map +1 -0
  173. package/dist/{route-registry-BvLJisvK.mjs → route-registry-DFz9_-N6.mjs} +6 -6
  174. package/dist/{route-registry-BvLJisvK.mjs.map → route-registry-DFz9_-N6.mjs.map} +1 -1
  175. package/dist/router/index.d.mts +2 -2
  176. package/dist/router/index.mjs +16 -15
  177. package/dist/{router-resolver-sUV_jTrU.mjs → router-resolver-B-dMSMIG.mjs} +7 -3
  178. package/dist/router-resolver-B-dMSMIG.mjs.map +1 -0
  179. package/dist/{router-DwyqEXgf.mjs → router-wlsVkGkM.mjs} +5 -14
  180. package/dist/{router-DwyqEXgf.mjs.map → router-wlsVkGkM.mjs.map} +1 -1
  181. package/dist/seeder/index.d.mts +12 -13
  182. package/dist/seeder/index.d.mts.map +1 -1
  183. package/dist/seeder/index.mjs +4 -4
  184. package/dist/{seeder-BPGY5rUb.mjs → seeder-BrAk7XIj.mjs} +5 -6
  185. package/dist/{seeder-BPGY5rUb.mjs.map → seeder-BrAk7XIj.mjs.map} +1 -1
  186. package/dist/{seeder-registry-DEvCycsT.mjs → seeder-registry-Bo5BgLbC.mjs} +5 -6
  187. package/dist/{seeder-registry-DEvCycsT.mjs.map → seeder-registry-Bo5BgLbC.mjs.map} +1 -1
  188. package/dist/{seeder.module-CIwQbdN4.mjs → seeder.module-DOoVgTsK.mjs} +5 -5
  189. package/dist/{seeder.module-CIwQbdN4.mjs.map → seeder.module-DOoVgTsK.mjs.map} +1 -1
  190. package/dist/signed-url-DIU0sK_6.mjs.map +1 -1
  191. package/dist/storage/index.d.mts +63 -13
  192. package/dist/storage/index.d.mts.map +1 -1
  193. package/dist/storage/index.mjs +2 -2
  194. package/dist/storage/providers/index.d.mts +18 -16
  195. package/dist/storage/providers/index.d.mts.map +1 -1
  196. package/dist/storage/providers/index.mjs +1 -1
  197. package/dist/{storage-C30X81CS.mjs → storage-DBWVYMnn.mjs} +167 -49
  198. package/dist/storage-DBWVYMnn.mjs.map +1 -0
  199. package/dist/storage-provider.interface-CinHpjl1.d.mts +315 -0
  200. package/dist/storage-provider.interface-CinHpjl1.d.mts.map +1 -0
  201. package/dist/storage.error-Ao38Qdjx.mjs +7 -0
  202. package/dist/storage.error-Ao38Qdjx.mjs.map +1 -0
  203. package/dist/{stratal-D5j_I14G.d.mts → stratal-Bs1_E8GQ.d.mts} +13 -3
  204. package/dist/stratal-Bs1_E8GQ.d.mts.map +1 -0
  205. package/dist/{stratal-BL6FKUM_.mjs → stratal-CiwNpWy2.mjs} +56 -23
  206. package/dist/stratal-CiwNpWy2.mjs.map +1 -0
  207. package/dist/{tiered-cache.service-Dv3BhxxE.d.mts → tiered-cache.service-Bz8bbvyb.d.mts} +16 -3
  208. package/dist/tiered-cache.service-Bz8bbvyb.d.mts.map +1 -0
  209. package/dist/trailing-slash-2SctvePW.mjs.map +1 -1
  210. package/dist/types-CmV_9xBD.d.mts.map +1 -1
  211. package/dist/{uri-iwofWJ_T.mjs → uri-BrOq148R.mjs} +13 -9
  212. package/dist/{uri-iwofWJ_T.mjs.map → uri-BrOq148R.mjs.map} +1 -1
  213. package/dist/{usage-generator-DAWYasuP.mjs → usage-generator-BW7EcO-C.mjs} +3 -3
  214. package/dist/{usage-generator-DAWYasuP.mjs.map → usage-generator-BW7EcO-C.mjs.map} +1 -1
  215. package/dist/{zod-eKqqhZ5_.mjs → validation-CZ_B0aXY.mjs} +38 -17
  216. package/dist/validation-CZ_B0aXY.mjs.map +1 -0
  217. package/dist/{validation.context-CRvmrhq7.mjs → validation.context-CdbwQWIr.mjs} +2 -2
  218. package/dist/{validation.context-CRvmrhq7.mjs.map → validation.context-CdbwQWIr.mjs.map} +1 -1
  219. package/dist/{versioning.service-CCa2oYMJ.mjs → versioning.service-DnF_4Lnd.mjs} +5 -5
  220. package/dist/{versioning.service-CCa2oYMJ.mjs.map → versioning.service-DnF_4Lnd.mjs.map} +1 -1
  221. package/dist/websocket/index.d.mts +12 -13
  222. package/dist/websocket/index.d.mts.map +1 -1
  223. package/dist/websocket/index.mjs +1 -1
  224. package/dist/workers/index.d.mts +70 -7
  225. package/dist/workers/index.d.mts.map +1 -1
  226. package/dist/workers/index.mjs +72 -3
  227. package/dist/workers/index.mjs.map +1 -1
  228. package/dist/{zod-wecrEVAs.d.mts → zod-BGisqLs3.d.mts} +9 -16
  229. package/dist/zod-BGisqLs3.d.mts.map +1 -0
  230. package/package.json +33 -25
  231. package/dist/cache.service-uElmBtdS.d.mts.map +0 -1
  232. package/dist/chunk-BBjsoOtd.mjs +0 -27
  233. package/dist/command-BvmUAPPQ.mjs.map +0 -1
  234. package/dist/command-DoBD2Cwl.d.mts.map +0 -1
  235. package/dist/consumer-registry-D3iMTSdy.d.mts.map +0 -1
  236. package/dist/container-storage-BmOJ4_Na.mjs.map +0 -1
  237. package/dist/controller.decorator-YSTPQntu.mjs.map +0 -1
  238. package/dist/cron-job-NesZRk8F.d.mts.map +0 -1
  239. package/dist/di-D7qmrAir.mjs.map +0 -1
  240. package/dist/errors-C01O2T-n.mjs.map +0 -1
  241. package/dist/events-BhEQuT1X.mjs.map +0 -1
  242. package/dist/exception-context-D-kvney-.mjs.map +0 -1
  243. package/dist/guards-DALPXy3_.mjs.map +0 -1
  244. package/dist/hono-app-COAgmutc.mjs +0 -168
  245. package/dist/hono-app-COAgmutc.mjs.map +0 -1
  246. package/dist/http-method.decorator-BljM8BDj.mjs.map +0 -1
  247. package/dist/i18n.module-B2DvWUPa.mjs.map +0 -1
  248. package/dist/index-CNuFQSNj.d.mts.map +0 -1
  249. package/dist/index-DtBNIFuP.d.mts +0 -42
  250. package/dist/index-DtBNIFuP.d.mts.map +0 -1
  251. package/dist/index-HgOLNruQ.d.mts +0 -203
  252. package/dist/index-HgOLNruQ.d.mts.map +0 -1
  253. package/dist/index-uybm0bhQ.d.mts.map +0 -1
  254. package/dist/is-seeder-Gvh_AM71.mjs.map +0 -1
  255. package/dist/lazy-module-loader-M6YKudNL.d.mts.map +0 -1
  256. package/dist/locale-path.service-CH0CaxwH.mjs +0 -165
  257. package/dist/locale-path.service-CH0CaxwH.mjs.map +0 -1
  258. package/dist/metadata-DzzprcID.mjs +0 -39
  259. package/dist/metadata-DzzprcID.mjs.map +0 -1
  260. package/dist/module-registry-NxX5O0Qk.mjs.map +0 -1
  261. package/dist/openapi-CMwuCp31.mjs.map +0 -1
  262. package/dist/openapi-tools.service-BC5EC3R3.mjs.map +0 -1
  263. package/dist/openapi.service-2rvJBCEg.d.mts +0 -50
  264. package/dist/openapi.service-2rvJBCEg.d.mts.map +0 -1
  265. package/dist/quarry-registry-DRnV-DDa.d.mts.map +0 -1
  266. package/dist/quarry.module-CcGxU2dJ.mjs.map +0 -1
  267. package/dist/queue.module-CEs4_kEM.mjs.map +0 -1
  268. package/dist/r2-storage.provider-BoZmR6Ut.mjs.map +0 -1
  269. package/dist/route-name-DGoBOfPg.mjs.map +0 -1
  270. package/dist/route-registration.service-CDPQKpm4.mjs +0 -918
  271. package/dist/route-registration.service-CDPQKpm4.mjs.map +0 -1
  272. package/dist/router-resolver-sUV_jTrU.mjs.map +0 -1
  273. package/dist/storage-C30X81CS.mjs.map +0 -1
  274. package/dist/storage-provider.interface-ClUwxz4S.d.mts +0 -201
  275. package/dist/storage-provider.interface-ClUwxz4S.d.mts.map +0 -1
  276. package/dist/storage.error-BStXPmO4.mjs +0 -8
  277. package/dist/storage.error-BStXPmO4.mjs.map +0 -1
  278. package/dist/stratal-BL6FKUM_.mjs.map +0 -1
  279. package/dist/stratal-D5j_I14G.d.mts.map +0 -1
  280. package/dist/tiered-cache.service-Dv3BhxxE.d.mts.map +0 -1
  281. package/dist/validation-CpOjviyT.mjs +0 -49
  282. package/dist/validation-CpOjviyT.mjs.map +0 -1
  283. package/dist/zod-eKqqhZ5_.mjs.map +0 -1
  284. package/dist/zod-wecrEVAs.d.mts.map +0 -1
@@ -1,7 +1,23 @@
1
- import { $ as Container, st as RouterContext } from "../index-uybm0bhQ.mjs";
1
+ import { $ as Container, l as HttpException, st as RouterContext } from "../index-B2WtEagR.mjs";
2
2
  import { r as LoggerService } from "../index-BUt92sAE.mjs";
3
3
  import { t as Constructor } from "../types-CmV_9xBD.mjs";
4
-
4
+ //#region src/guards/errors.d.ts
5
+ /**
6
+ * Thrown when a guard's `canActivate` returns `false`.
7
+ *
8
+ * HTTP Status: 403 Forbidden
9
+ *
10
+ * A guard denies by returning `false` or by throwing its own error; this class is what the
11
+ * former becomes, so both paths surface as an exception the {@link ExceptionHandler} can render
12
+ * and an application can match with `instanceof` or replace via `renderable()`. A guard that
13
+ * needs a different status (401 for unauthenticated, 429 for a budget) should throw its own
14
+ * `HttpException` instead — that is passed through untouched.
15
+ */
16
+ export declare class GuardRejectedError extends HttpException {
17
+ readonly guard: string;
18
+ constructor(guard: string);
19
+ }
20
+ //#endregion
5
21
  //#region src/guards/types.d.ts
6
22
  /**
7
23
  * Interface for guards that control access to routes
@@ -21,28 +37,30 @@ import { t as Constructor } from "../types-CmV_9xBD.mjs";
21
37
  * }
22
38
  * ```
23
39
  */
24
- interface CanActivate {
40
+ export interface CanActivate {
25
41
  /**
26
42
  * Determine if the request should be allowed
27
43
  *
28
44
  * @param context - Router context with request/response helpers
29
- * @returns true to allow, false to deny (throws 403)
45
+ * @returns true to allow, false to deny a `false` is turned into a `GuardRejectedError`
46
+ * (HTTP 403) and thrown, so the handler never runs. To deny with a different status, throw your
47
+ * own `HttpException` instead; it is passed through untouched.
30
48
  */
31
49
  canActivate(context: RouterContext): boolean | Promise<boolean>;
32
50
  }
33
51
  /**
34
52
  * Type for guard class constructors
35
53
  */
36
- type GuardClass = Constructor<CanActivate>;
54
+ export type GuardClass = Constructor<CanActivate>;
37
55
  /**
38
56
  * Guard can be a class constructor or an instance
39
57
  * Instances are used for factory-created guards with configuration
40
58
  */
41
- type Guard = GuardClass | CanActivate;
59
+ export type Guard = GuardClass | CanActivate;
42
60
  /**
43
61
  * Options for AuthGuard factory
44
62
  */
45
- interface AuthGuardOptions {
63
+ export interface AuthGuardOptions {
46
64
  /**
47
65
  * Required permissions for authorization as `"resource:action"` strings.
48
66
  * If provided, permission check is performed after authentication.
@@ -62,13 +80,13 @@ interface AuthGuardOptions {
62
80
  /**
63
81
  * Metadata stored by `@UseGuards` decorator
64
82
  */
65
- interface GuardMetadata {
83
+ export interface GuardMetadata {
66
84
  guards: Guard[];
67
85
  }
68
86
  /**
69
87
  * Metadata key for guard storage
70
88
  */
71
- declare const GUARD_METADATA_KEY: unique symbol;
89
+ export declare const GUARD_METADATA_KEY: unique symbol;
72
90
  //#endregion
73
91
  //#region src/guards/use-guards.decorator.d.ts
74
92
  /**
@@ -90,7 +108,7 @@ declare const GUARD_METADATA_KEY: unique symbol;
90
108
  *
91
109
  * @example Authentication only
92
110
  * ```typescript
93
- * @Controller('/api/v1/profile')
111
+ * @Controller('/profile', { version: '1' })
94
112
  * @UseGuards(AuthGuard())
95
113
  * export class ProfileController {
96
114
  * show() { } // Requires authentication
@@ -99,8 +117,8 @@ declare const GUARD_METADATA_KEY: unique symbol;
99
117
  *
100
118
  * @example Authentication with permissions
101
119
  * ```typescript
102
- * @Controller('/api/v1/students')
103
- * @UseGuards(AuthGuard({ scopes: ['students:read'] }))
120
+ * @Controller('/students', { version: '1' })
121
+ * @UseGuards(AuthGuard({ permissions: ['students:read'] }))
104
122
  * export class StudentsController {
105
123
  * index() { } // Requires 'students:read' permission
106
124
  * }
@@ -108,12 +126,12 @@ declare const GUARD_METADATA_KEY: unique symbol;
108
126
  *
109
127
  * @example Method-level guards
110
128
  * ```typescript
111
- * @Controller('/api/v1/students')
129
+ * @Controller('/students', { version: '1' })
112
130
  * @UseGuards(AuthGuard()) // Controller-level: auth only
113
131
  * export class StudentsController {
114
132
  * index() { } // Auth only (inherited)
115
133
  *
116
- * @UseGuards(AuthGuard({ scopes: ['students:create'] }))
134
+ * @UseGuards(AuthGuard({ permissions: ['students:create'] }))
117
135
  * create() { } // Auth + 'students:create' permission
118
136
  * }
119
137
  * ```
@@ -126,14 +144,14 @@ declare const GUARD_METADATA_KEY: unique symbol;
126
144
  * }
127
145
  * ```
128
146
  */
129
- declare function UseGuards(...guards: Guard[]): ClassDecorator & MethodDecorator;
147
+ export declare function UseGuards(...guards: Guard[]): ClassDecorator & MethodDecorator;
130
148
  /**
131
149
  * Get controller-level guard metadata
132
150
  *
133
151
  * @param target - Controller class
134
152
  * @returns Guard metadata or undefined if not decorated
135
153
  */
136
- declare function getControllerGuards(target: object): GuardMetadata | undefined;
154
+ export declare function getControllerGuards(target: object): GuardMetadata | undefined;
137
155
  /**
138
156
  * Get method-level guard metadata
139
157
  *
@@ -141,7 +159,7 @@ declare function getControllerGuards(target: object): GuardMetadata | undefined;
141
159
  * @param propertyKey - Method name
142
160
  * @returns Guard metadata or undefined if not decorated
143
161
  */
144
- declare function getMethodGuards(target: object, propertyKey: string | symbol): GuardMetadata | undefined;
162
+ export declare function getMethodGuards(target: object, propertyKey: string | symbol): GuardMetadata | undefined;
145
163
  //#endregion
146
164
  //#region src/guards/guard-execution.service.d.ts
147
165
  /**
@@ -150,7 +168,7 @@ declare function getMethodGuards(target: object, propertyKey: string | symbol):
150
168
  * Executes guards for a route and determines if the request should proceed.
151
169
  * Guards are executed in order; all must pass for the request to proceed.
152
170
  */
153
- declare class GuardExecutionService {
171
+ export declare class GuardExecutionService {
154
172
  private readonly logger;
155
173
  constructor(logger: LoggerService);
156
174
  /**
@@ -160,7 +178,8 @@ declare class GuardExecutionService {
160
178
  * @param context - Router context
161
179
  * @param container - Request-scoped DI container
162
180
  * @returns true if all guards pass
163
- * @throws Error from first failing guard
181
+ * @throws {@link GuardRejectedError} if a guard's `canActivate` returns `false`, or the guard's
182
+ * own thrown error if it rejects by throwing instead
164
183
  */
165
184
  executeGuards(guards: Guard[], context: RouterContext, container: Container): Promise<boolean>;
166
185
  /**
@@ -177,5 +196,4 @@ declare class GuardExecutionService {
177
196
  private isGuardInstance;
178
197
  }
179
198
  //#endregion
180
- export { AuthGuardOptions, CanActivate, GUARD_METADATA_KEY, Guard, GuardClass, GuardExecutionService, GuardMetadata, UseGuards, getControllerGuards, getMethodGuards };
181
199
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/guards/types.ts","../../src/guards/use-guards.decorator.ts","../../src/guards/guard-execution.service.ts"],"mappings":";;;;;;;;AAqBA;;;;;;;;;AAOwD;AAMxD;;;;AAAgD;UAb/B,WAAA;EAmBA;;;AAA2B;AAK5C;;EAjBE,WAAA,CAAY,OAAA,EAAS,aAAA,aAA0B,OAAO;AAAA;AAgC3C;AAMb;;AANa,KA1BD,UAAA,GAAa,WAAW,CAAC,WAAA;;AAiCtB;AAMf;;KAjCY,KAAA,GAAQ,UAAA,GAAa,WAAW;;AAiCkB;;UA5B7C,gBAAA;;ACajB;;;;;;;;;;;;;EDEE,WAAW;AAAA;;;;UAMI,aAAA;EACf,MAAA,EAAQ,KAAK;AAAA;;;;cAMF,kBAAA;;;;;;;AApDb;;;;;;;;;AAOwD;AAMxD;;;;AAAgD;AAMhD;;;;AAA4C;AAK5C;;;;AAea;AAMb;;;;AACe;AAMf;;;;AAA8D;;;;ACf9D;;;;;;;;;;;;;iBAAgB,SAAA,IAAa,MAAA,EAAQ,KAAA,KAAU,cAAA,GAAiB,eAAA;AAoBhE;;;;AAAkE;AAWlE;AAXA,iBAAgB,mBAAA,CAAoB,MAAA,WAAiB,aAAa;;;;;;;AAW0B;iBAA5E,eAAA,CAAgB,MAAA,UAAgB,WAAA,oBAA+B,aAAa;;;;ADpE5F;;;;;cEVa,qBAAA;EAAA,iBACkB,MAAA;cAAA,MAAA,EAAQ,aAAA;EFgBiB;AAAA;AAMxD;;;;AAAgD;AAMhD;;EEjBQ,aAAA,CACJ,MAAA,EAAQ,KAAA,IACR,OAAA,EAAS,aAAA,EACT,SAAA,EAAW,SAAA,GACV,OAAA;EFae;AAAwB;AAK5C;;;;AAea;EApBO,QE2BV,YAAA;EFDoB;;;EAAA,QEcpB,eAAA;AAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/guards/errors.ts","../../src/guards/types.ts","../../src/guards/use-guards.decorator.ts","../../src/guards/guard-execution.service.ts"],"mappings":";;;;;;;;;;;;;;;qBAaa,2BAA2B;WACV;EAA5B,YAA4B;;;;;;;;;;;;;;;;;;;;;;iBCOb;;;;;;;;;EASf,YAAY,SAAS,0BAA0B;;;;;YAMrC,aAAa,YAAY;;;;;YAMzB,QAAQ,aAAa;;;;iBAKhB;;;;;;;;;;;;;;;EAef;;;;;iBAMe;EACf,QAAQ;;;;;qBAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBCjBG,aAAa,QAAQ,UAAU,iBAAiB;;;;;;;wBAoBhD,oBAAoB,iBAAiB;;;;;;;;wBAWrC,gBAAgB,gBAAgB,+BAA+B;;;;;;;;;qBC7ElE;mBACkB;EAA7B,YAA6B,QAAQ;;;;;;;;;;;EAY/B,cACJ,QAAQ,SACR,SAAS,eACT,WAAW,YACV;;;;;;;;UA6CK;;;;UAaA"}
@@ -1,2 +1,2 @@
1
- import { a as GUARD_METADATA_KEY, i as getMethodGuards, n as UseGuards, r as getControllerGuards, t as GuardExecutionService } from "../guards-DALPXy3_.mjs";
2
- export { GUARD_METADATA_KEY, GuardExecutionService, UseGuards, getControllerGuards, getMethodGuards };
1
+ import { a as GUARD_METADATA_KEY, i as getMethodGuards, n as UseGuards, o as GuardRejectedError, r as getControllerGuards, t as GuardExecutionService } from "../guards-DOGly9IF.mjs";
2
+ export { GUARD_METADATA_KEY, GuardExecutionService, GuardRejectedError, UseGuards, getControllerGuards, getMethodGuards };
@@ -1,4 +1,25 @@
1
- import { n as getMetadata, t as defineMetadata } from "./metadata-DzzprcID.mjs";
1
+ import { _ as defineMetadata, v as getMetadata } from "./di-DQ3xbjgf.mjs";
2
+ import { d as HttpException } from "./errors-CrOXI_y5.mjs";
3
+ //#region src/guards/errors.ts
4
+ /**
5
+ * Thrown when a guard's `canActivate` returns `false`.
6
+ *
7
+ * HTTP Status: 403 Forbidden
8
+ *
9
+ * A guard denies by returning `false` or by throwing its own error; this class is what the
10
+ * former becomes, so both paths surface as an exception the {@link ExceptionHandler} can render
11
+ * and an application can match with `instanceof` or replace via `renderable()`. A guard that
12
+ * needs a different status (401 for unauthenticated, 429 for a budget) should throw its own
13
+ * `HttpException` instead — that is passed through untouched.
14
+ */
15
+ var GuardRejectedError = class extends HttpException {
16
+ guard;
17
+ constructor(guard) {
18
+ super(403, "Forbidden");
19
+ this.guard = guard;
20
+ }
21
+ };
22
+ //#endregion
2
23
  //#region src/guards/types.ts
3
24
  /**
4
25
  * Metadata key for guard storage
@@ -25,7 +46,7 @@ const GUARD_METADATA_KEY = Symbol.for("stratal:guards");
25
46
  *
26
47
  * @example Authentication only
27
48
  * ```typescript
28
- * @Controller('/api/v1/profile')
49
+ * @Controller('/profile', { version: '1' })
29
50
  * @UseGuards(AuthGuard())
30
51
  * export class ProfileController {
31
52
  * show() { } // Requires authentication
@@ -34,8 +55,8 @@ const GUARD_METADATA_KEY = Symbol.for("stratal:guards");
34
55
  *
35
56
  * @example Authentication with permissions
36
57
  * ```typescript
37
- * @Controller('/api/v1/students')
38
- * @UseGuards(AuthGuard({ scopes: ['students:read'] }))
58
+ * @Controller('/students', { version: '1' })
59
+ * @UseGuards(AuthGuard({ permissions: ['students:read'] }))
39
60
  * export class StudentsController {
40
61
  * index() { } // Requires 'students:read' permission
41
62
  * }
@@ -43,12 +64,12 @@ const GUARD_METADATA_KEY = Symbol.for("stratal:guards");
43
64
  *
44
65
  * @example Method-level guards
45
66
  * ```typescript
46
- * @Controller('/api/v1/students')
67
+ * @Controller('/students', { version: '1' })
47
68
  * @UseGuards(AuthGuard()) // Controller-level: auth only
48
69
  * export class StudentsController {
49
70
  * index() { } // Auth only (inherited)
50
71
  *
51
- * @UseGuards(AuthGuard({ scopes: ['students:create'] }))
72
+ * @UseGuards(AuthGuard({ permissions: ['students:create'] }))
52
73
  * create() { } // Auth + 'students:create' permission
53
74
  * }
54
75
  * ```
@@ -107,7 +128,8 @@ var GuardExecutionService = class {
107
128
  * @param context - Router context
108
129
  * @param container - Request-scoped DI container
109
130
  * @returns true if all guards pass
110
- * @throws Error from first failing guard
131
+ * @throws {@link GuardRejectedError} if a guard's `canActivate` returns `false`, or the guard's
132
+ * own thrown error if it rejects by throwing instead
111
133
  */
112
134
  async executeGuards(guards, context, container) {
113
135
  if (guards.length === 0) return true;
@@ -117,11 +139,12 @@ var GuardExecutionService = class {
117
139
  method: context.c.req.method
118
140
  });
119
141
  for (const guard of guards) if (!await this.resolveGuard(guard, container).canActivate(context)) {
142
+ const guardName = guard.constructor?.name || "AnonymousGuard";
120
143
  this.logger.debug("Guard denied access", {
121
- guard: guard.constructor?.name || "AnonymousGuard",
144
+ guard: guardName,
122
145
  path: context.c.req.path
123
146
  });
124
- return false;
147
+ throw new GuardRejectedError(guardName);
125
148
  }
126
149
  this.logger.debug("All guards passed", {
127
150
  guardCount: guards.length,
@@ -148,6 +171,6 @@ var GuardExecutionService = class {
148
171
  }
149
172
  };
150
173
  //#endregion
151
- export { GUARD_METADATA_KEY as a, getMethodGuards as i, UseGuards as n, getControllerGuards as r, GuardExecutionService as t };
174
+ export { GUARD_METADATA_KEY as a, getMethodGuards as i, UseGuards as n, GuardRejectedError as o, getControllerGuards as r, GuardExecutionService as t };
152
175
 
153
- //# sourceMappingURL=guards-DALPXy3_.mjs.map
176
+ //# sourceMappingURL=guards-DOGly9IF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards-DOGly9IF.mjs","names":[],"sources":["../src/guards/errors.ts","../src/guards/types.ts","../src/guards/use-guards.decorator.ts","../src/guards/guard-execution.service.ts"],"sourcesContent":["import { HttpException } from '../errors'\n\n/**\n * Thrown when a guard's `canActivate` returns `false`.\n *\n * HTTP Status: 403 Forbidden\n *\n * A guard denies by returning `false` or by throwing its own error; this class is what the\n * former becomes, so both paths surface as an exception the {@link ExceptionHandler} can render\n * and an application can match with `instanceof` or replace via `renderable()`. A guard that\n * needs a different status (401 for unauthenticated, 429 for a budget) should throw its own\n * `HttpException` instead — that is passed through untouched.\n */\nexport class GuardRejectedError extends HttpException {\n constructor(public readonly guard: string) {\n super(403, 'Forbidden')\n }\n}\n","import type { RouterContext } from '../router'\nimport type { Constructor } from '../types'\n\n/**\n * Interface for guards that control access to routes\n *\n * Guards are executed after middlewares but before route handlers.\n * They determine if a request should be allowed to proceed.\n *\n * @example\n * ```typescript\n * class RoleGuard implements CanActivate {\n * constructor(private readonly role: string) {}\n *\n * async canActivate(context: RouterContext): Promise<boolean> {\n * const user = context.getUser()\n * return user?.roles.includes(this.role) ?? false\n * }\n * }\n * ```\n */\nexport interface CanActivate {\n /**\n * Determine if the request should be allowed\n *\n * @param context - Router context with request/response helpers\n * @returns true to allow, false to deny — a `false` is turned into a `GuardRejectedError`\n * (HTTP 403) and thrown, so the handler never runs. To deny with a different status, throw your\n * own `HttpException` instead; it is passed through untouched.\n */\n canActivate(context: RouterContext): boolean | Promise<boolean>\n}\n\n/**\n * Type for guard class constructors\n */\nexport type GuardClass = Constructor<CanActivate>\n\n/**\n * Guard can be a class constructor or an instance\n * Instances are used for factory-created guards with configuration\n */\nexport type Guard = GuardClass | CanActivate\n\n/**\n * Options for AuthGuard factory\n */\nexport interface AuthGuardOptions {\n /**\n * Required permissions for authorization as `\"resource:action\"` strings.\n * If provided, permission check is performed after authentication.\n * If omitted, only authentication is required.\n *\n * Multiple permissions are combined with AND logic (all must be satisfied).\n *\n * @example\n * ```typescript\n * @UseGuards(AuthGuard({ permissions: 'posts:update' }))\n * @UseGuards(AuthGuard({ permissions: ['posts:update', 'posts:delete'] }))\n * @UseGuards(AuthGuard({ permissions: 'admin:access' }))\n * ```\n */\n permissions?: string | string[]\n}\n\n/**\n * Metadata stored by `@UseGuards` decorator\n */\nexport interface GuardMetadata {\n guards: Guard[]\n}\n\n/**\n * Metadata key for guard storage\n */\nexport const GUARD_METADATA_KEY = Symbol.for('stratal:guards')\n","import { defineMetadata, getMetadata } from '../di/metadata'\nimport { GUARD_METADATA_KEY, type Guard, type GuardMetadata } from './types'\n\n/**\n * UseGuards Decorator\n *\n * Applies one or more guards to a controller or method.\n * Guards are executed in order and all must pass for the request to proceed.\n *\n * **Execution Order:**\n * 1. Request → Global Middlewares → Route Middlewares\n * 2. **Guards (controller-level, then method-level)**\n * 3. Route Handler\n *\n * **Guard Resolution:**\n * - Guard classes are resolved from the request-scoped DI container\n * - Guard instances (from factory functions) are used directly\n *\n * @param guards - Guard classes or instances to apply\n *\n * @example Authentication only\n * ```typescript\n * @Controller('/profile', { version: '1' })\n * @UseGuards(AuthGuard())\n * export class ProfileController {\n * show() { } // Requires authentication\n * }\n * ```\n *\n * @example Authentication with permissions\n * ```typescript\n * @Controller('/students', { version: '1' })\n * @UseGuards(AuthGuard({ permissions: ['students:read'] }))\n * export class StudentsController {\n * index() { } // Requires 'students:read' permission\n * }\n * ```\n *\n * @example Method-level guards\n * ```typescript\n * @Controller('/students', { version: '1' })\n * @UseGuards(AuthGuard()) // Controller-level: auth only\n * export class StudentsController {\n * index() { } // Auth only (inherited)\n *\n * @UseGuards(AuthGuard({ permissions: ['students:create'] }))\n * create() { } // Auth + 'students:create' permission\n * }\n * ```\n *\n * @example Multiple guards\n * ```typescript\n * @UseGuards(AuthGuard(), RateLimitGuard(), CustomGuard())\n * export class SecureController {\n * // All guards must pass\n * }\n * ```\n */\nexport function UseGuards(...guards: Guard[]): ClassDecorator & MethodDecorator {\n return (target: object, propertyKey?: string | symbol) => {\n const metadata: GuardMetadata = { guards }\n\n if (propertyKey !== undefined) {\n // Method decorator - store on method\n defineMetadata(GUARD_METADATA_KEY, metadata, target, propertyKey)\n } else {\n // Class decorator - store on class\n defineMetadata(GUARD_METADATA_KEY, metadata, target)\n }\n }\n}\n\n/**\n * Get controller-level guard metadata\n *\n * @param target - Controller class\n * @returns Guard metadata or undefined if not decorated\n */\nexport function getControllerGuards(target: object): GuardMetadata | undefined {\n return getMetadata<GuardMetadata>(GUARD_METADATA_KEY, target)\n}\n\n/**\n * Get method-level guard metadata\n *\n * @param target - Controller prototype\n * @param propertyKey - Method name\n * @returns Guard metadata or undefined if not decorated\n */\nexport function getMethodGuards(target: object, propertyKey: string | symbol): GuardMetadata | undefined {\n return getMetadata<GuardMetadata>(GUARD_METADATA_KEY, target, propertyKey)\n}\n","import type { Container } from '../di'\nimport type { LoggerService } from '../logger'\nimport type { RouterContext } from '../router'\nimport { GuardRejectedError } from './errors'\nimport type { CanActivate, Guard } from './types'\n\n/**\n * Guard Execution Service\n *\n * Executes guards for a route and determines if the request should proceed.\n * Guards are executed in order; all must pass for the request to proceed.\n */\nexport class GuardExecutionService {\n constructor(private readonly logger: LoggerService) { }\n\n /**\n * Execute all guards for a route\n *\n * @param guards - Array of guards (classes or instances)\n * @param context - Router context\n * @param container - Request-scoped DI container\n * @returns true if all guards pass\n * @throws {@link GuardRejectedError} if a guard's `canActivate` returns `false`, or the guard's\n * own thrown error if it rejects by throwing instead\n */\n async executeGuards(\n guards: Guard[],\n context: RouterContext,\n container: Container\n ): Promise<boolean> {\n if (guards.length === 0) {\n return true\n }\n\n this.logger.debug('Executing guards', {\n guardCount: guards.length,\n path: context.c.req.path,\n method: context.c.req.method,\n })\n\n for (const guard of guards) {\n const guardInstance = this.resolveGuard(guard, container)\n const canActivate = await guardInstance.canActivate(context)\n\n if (!canActivate) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- guard.constructor may be null at runtime\n const guardName = guard.constructor?.name || 'AnonymousGuard'\n\n this.logger.debug('Guard denied access', {\n guard: guardName,\n path: context.c.req.path,\n })\n // Denial is an exception, not a return value: every caller awaits this without\n // branching, so a `false` that merely returned would let the handler run and the guard\n // would silently protect nothing.\n throw new GuardRejectedError(guardName)\n }\n }\n\n this.logger.debug('All guards passed', {\n guardCount: guards.length,\n path: context.c.req.path,\n })\n\n return true\n }\n\n /**\n * Resolve a guard to an instance\n *\n * @param guard - Guard class or instance\n * @param container - Request-scoped DI container\n * @returns Guard instance\n */\n private resolveGuard(guard: Guard, container: Container): CanActivate {\n // If already an instance (has canActivate method), use directly\n if (this.isGuardInstance(guard)) {\n return guard\n }\n\n // Otherwise, resolve from container\n return container.resolve<CanActivate>(guard)\n }\n\n /**\n * Type guard to check if value is a guard instance\n */\n private isGuardInstance(guard: Guard): guard is CanActivate {\n return (\n typeof guard === 'object' &&\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- typeof null === 'object', null check is required\n guard !== null &&\n 'canActivate' in guard &&\n typeof guard.canActivate === 'function'\n )\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAaA,IAAa,qBAAb,cAAwC,cAAc;CACxB;CAA5B,YAAY,OAA+B;EACzC,MAAM,KAAK,WAAW;EADI,KAAA,QAAA;CAE5B;AACF;;;;;;AC0DA,MAAa,qBAAqB,OAAO,IAAI,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjB7D,SAAgB,UAAU,GAAG,QAAmD;CAC9E,QAAQ,QAAgB,gBAAkC;EACxD,MAAM,WAA0B,EAAE,OAAO;EAEzC,IAAI,gBAAgB,KAAA,GAElB,eAAe,oBAAoB,UAAU,QAAQ,WAAW;OAGhE,eAAe,oBAAoB,UAAU,MAAM;CAEvD;AACF;;;;;;;AAQA,SAAgB,oBAAoB,QAA2C;CAC7E,OAAO,YAA2B,oBAAoB,MAAM;AAC9D;;;;;;;;AASA,SAAgB,gBAAgB,QAAgB,aAAyD;CACvG,OAAO,YAA2B,oBAAoB,QAAQ,WAAW;AAC3E;;;;;;;;;AC/EA,IAAa,wBAAb,MAAmC;CACJ;CAA7B,YAAY,QAAwC;EAAvB,KAAA,SAAA;CAAyB;;;;;;;;;;;CAYtD,MAAM,cACJ,QACA,SACA,WACkB;EAClB,IAAI,OAAO,WAAW,GACpB,OAAO;EAGT,KAAK,OAAO,MAAM,oBAAoB;GACpC,YAAY,OAAO;GACnB,MAAM,QAAQ,EAAE,IAAI;GACpB,QAAQ,QAAQ,EAAE,IAAI;EACxB,CAAC;EAED,KAAK,MAAM,SAAS,QAIlB,IAAI,CAAC,MAHiB,KAAK,aAAa,OAAO,SACT,CAAC,CAAC,YAAY,OAAO,GAEzC;GAEhB,MAAM,YAAY,MAAM,aAAa,QAAQ;GAE7C,KAAK,OAAO,MAAM,uBAAuB;IACvC,OAAO;IACP,MAAM,QAAQ,EAAE,IAAI;GACtB,CAAC;GAID,MAAM,IAAI,mBAAmB,SAAS;EACxC;EAGF,KAAK,OAAO,MAAM,qBAAqB;GACrC,YAAY,OAAO;GACnB,MAAM,QAAQ,EAAE,IAAI;EACtB,CAAC;EAED,OAAO;CACT;;;;;;;;CASA,aAAqB,OAAc,WAAmC;EAEpE,IAAI,KAAK,gBAAgB,KAAK,GAC5B,OAAO;EAIT,OAAO,UAAU,QAAqB,KAAK;CAC7C;;;;CAKA,gBAAwB,OAAoC;EAC1D,OACE,OAAO,UAAU,YAEjB,UAAU,QACV,iBAAiB,SACjB,OAAO,MAAM,gBAAgB;CAEjC;AACF"}