stratal 0.0.22 → 0.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/README.md +1 -1
  2. package/dist/bin/cloudflare-workers-loader.mjs +80 -7
  3. package/dist/bin/cloudflare-workers-loader.mjs.map +1 -1
  4. package/dist/bin/quarry.mjs +41 -54
  5. package/dist/bin/quarry.mjs.map +1 -1
  6. package/dist/cache/index.d.mts +5 -3
  7. package/dist/cache/index.d.mts.map +1 -1
  8. package/dist/cache/index.mjs +123 -39
  9. package/dist/cache/index.mjs.map +1 -1
  10. package/dist/{cache.service-e34gV6tz.d.mts → cache.service-uElmBtdS.d.mts} +24 -34
  11. package/dist/cache.service-uElmBtdS.d.mts.map +1 -0
  12. package/dist/{command-BU4ApTo5.mjs → command-BvmUAPPQ.mjs} +15 -3
  13. package/dist/command-BvmUAPPQ.mjs.map +1 -0
  14. package/dist/{command-wXfvHbBZ.d.mts → command-CPhFHjG3.d.mts} +2 -2
  15. package/dist/command-CPhFHjG3.d.mts.map +1 -0
  16. package/dist/command-not-found.error-ONAZ2Bpk.mjs +14 -0
  17. package/dist/command-not-found.error-ONAZ2Bpk.mjs.map +1 -0
  18. package/dist/config/index.d.mts +3 -3
  19. package/dist/config/index.d.mts.map +1 -1
  20. package/dist/config/index.mjs +7 -6
  21. package/dist/config/index.mjs.map +1 -1
  22. package/dist/{consumer-registry-DHQtypr1.d.mts → consumer-registry-D3iMTSdy.d.mts} +54 -22
  23. package/dist/consumer-registry-D3iMTSdy.d.mts.map +1 -0
  24. package/dist/{container-storage-GpNNz79X.mjs → container-storage-BmOJ4_Na.mjs} +1 -1
  25. package/dist/{container-storage-GpNNz79X.mjs.map → container-storage-BmOJ4_Na.mjs.map} +1 -1
  26. package/dist/{controller.decorator-DIUazNU7.mjs → controller.decorator-C5UVeJS3.mjs} +4 -4
  27. package/dist/{controller.decorator-DIUazNU7.mjs.map → controller.decorator-C5UVeJS3.mjs.map} +1 -1
  28. package/dist/cron/index.d.mts +79 -4
  29. package/dist/cron/index.d.mts.map +1 -1
  30. package/dist/cron/index.mjs +2 -2
  31. package/dist/cron-job-NesZRk8F.d.mts +58 -0
  32. package/dist/cron-job-NesZRk8F.d.mts.map +1 -0
  33. package/dist/{cron-manager-9bpN9bu4.mjs → cron.module-Bgzq5hiT.mjs} +17 -7
  34. package/dist/cron.module-Bgzq5hiT.mjs.map +1 -0
  35. package/dist/{decorate-HgTKAYK8.mjs → decorate-CuAoSZvs.mjs} +2 -2
  36. package/dist/{deep-merge-C8NgcXw4.mjs → deep-merge-ByiAOZ3r.mjs} +1 -1
  37. package/dist/{deep-merge-C8NgcXw4.mjs.map → deep-merge-ByiAOZ3r.mjs.map} +1 -1
  38. package/dist/di/index.d.mts +2 -2
  39. package/dist/di/index.mjs +3 -3
  40. package/dist/{di-BO1QIb5H.mjs → di-DseMn-z9.mjs} +244 -135
  41. package/dist/di-DseMn-z9.mjs.map +1 -0
  42. package/dist/email/index.d.mts +33 -40
  43. package/dist/email/index.d.mts.map +1 -1
  44. package/dist/email/index.mjs +456 -41
  45. package/dist/email/index.mjs.map +1 -1
  46. package/dist/{en-BPP6h6y5.mjs → en-CDZBMcc1.mjs} +2 -2
  47. package/dist/{en-BPP6h6y5.mjs.map → en-CDZBMcc1.mjs.map} +1 -1
  48. package/dist/{env-DKSbuBi5.d.mts → env-ug22bJj7.d.mts} +1 -1
  49. package/dist/env-ug22bJj7.d.mts.map +1 -0
  50. package/dist/errors/index.d.mts +1 -1
  51. package/dist/errors/index.mjs +3 -3
  52. package/dist/{errors-BBZTnjdq.mjs → errors-mXYxG0XB.mjs} +5 -5
  53. package/dist/{errors-BBZTnjdq.mjs.map → errors-mXYxG0XB.mjs.map} +1 -1
  54. package/dist/events/index.d.mts +14 -3
  55. package/dist/events/index.d.mts.map +1 -1
  56. package/dist/events/index.mjs +2 -2
  57. package/dist/{events-D1KdDaiP.mjs → events-BXJGZjpG.mjs} +16 -6
  58. package/dist/events-BXJGZjpG.mjs.map +1 -0
  59. package/dist/{exception-context-B4kM-M53.mjs → exception-context-kEoMFwze.mjs} +3 -3
  60. package/dist/{exception-context-B4kM-M53.mjs.map → exception-context-kEoMFwze.mjs.map} +1 -1
  61. package/dist/{gateway-context-CFe6a9gz.mjs → gateway-context-TMu_AlJt.mjs} +25 -6
  62. package/dist/{gateway-context-CFe6a9gz.mjs.map → gateway-context-TMu_AlJt.mjs.map} +1 -1
  63. package/dist/guards/index.d.mts +3 -3
  64. package/dist/guards/index.d.mts.map +1 -1
  65. package/dist/guards/index.mjs +1 -1
  66. package/dist/{guards-Ced-uNIF.mjs → guards-DALPXy3_.mjs} +2 -2
  67. package/dist/{guards-Ced-uNIF.mjs.map → guards-DALPXy3_.mjs.map} +1 -1
  68. package/dist/hono-app-CvV3hOfT.mjs +161 -0
  69. package/dist/hono-app-CvV3hOfT.mjs.map +1 -0
  70. package/dist/{http-method.decorator-CdjKFJZZ.mjs → http-method.decorator-ByWZb9DO.mjs} +4 -4
  71. package/dist/{http-method.decorator-CdjKFJZZ.mjs.map → http-method.decorator-ByWZb9DO.mjs.map} +1 -1
  72. package/dist/i18n/index.d.mts +4 -4
  73. package/dist/i18n/index.d.mts.map +1 -1
  74. package/dist/i18n/index.mjs +5 -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.mjs +1 -1
  79. package/dist/i18n/validation/index.d.mts +3 -3
  80. package/dist/i18n/validation/index.mjs +3 -3
  81. package/dist/{i18n.module-BlXrtAlV.mjs → i18n.module-DRQAZoSZ.mjs} +14 -11
  82. package/dist/{i18n.module-BlXrtAlV.mjs.map → i18n.module-DRQAZoSZ.mjs.map} +1 -1
  83. package/dist/{i18n.tokens-hwRpmjRq.mjs → i18n.tokens-CZ_v8oyS.mjs} +1 -1
  84. package/dist/{i18n.tokens-hwRpmjRq.mjs.map → i18n.tokens-CZ_v8oyS.mjs.map} +1 -1
  85. package/dist/{index-B4UBK-2T.d.mts → index-0ItCjaqw.d.mts} +1 -1
  86. package/dist/index-0ItCjaqw.d.mts.map +1 -0
  87. package/dist/{index-CW1YHSft.d.mts → index-B5JBRcWD.d.mts} +249 -103
  88. package/dist/index-B5JBRcWD.d.mts.map +1 -0
  89. package/dist/{index-BtlE9RuO.d.mts → index-BUt92sAE.d.mts} +1 -1
  90. package/dist/index-BUt92sAE.d.mts.map +1 -0
  91. package/dist/{index-DEncMcC6.d.mts → index-B_JoEl3V.d.mts} +221 -16
  92. package/dist/index-B_JoEl3V.d.mts.map +1 -0
  93. package/dist/{index-Dj5IMwtr.d.mts → index-DtBNIFuP.d.mts} +4 -6
  94. package/dist/index-DtBNIFuP.d.mts.map +1 -0
  95. package/dist/{index-KMgSCSM7.d.mts → index-HgOLNruQ.d.mts} +1 -1
  96. package/dist/{index-KMgSCSM7.d.mts.map → index-HgOLNruQ.d.mts.map} +1 -1
  97. package/dist/index.d.mts +6 -5
  98. package/dist/index.mjs +3 -2
  99. package/dist/{is-command-CX5rAfZW.mjs → is-command-CEPO9n8c.mjs} +2 -2
  100. package/dist/{is-command-CX5rAfZW.mjs.map → is-command-CEPO9n8c.mjs.map} +1 -1
  101. package/dist/{is-seeder-CYCtELlm.mjs → is-seeder-Gvh_AM71.mjs} +1 -1
  102. package/dist/{is-seeder-CYCtELlm.mjs.map → is-seeder-Gvh_AM71.mjs.map} +1 -1
  103. package/dist/lazy-module-loader-Ib383jH_.d.mts +60 -0
  104. package/dist/lazy-module-loader-Ib383jH_.d.mts.map +1 -0
  105. package/dist/locale-path.service-D-dHiIPc.mjs +165 -0
  106. package/dist/locale-path.service-D-dHiIPc.mjs.map +1 -0
  107. package/dist/locale-url-nZrZxqJP.mjs +44 -0
  108. package/dist/locale-url-nZrZxqJP.mjs.map +1 -0
  109. package/dist/locale-url.service-C2EWmGdq.mjs +41 -0
  110. package/dist/locale-url.service-C2EWmGdq.mjs.map +1 -0
  111. package/dist/logger/index.d.mts +1 -1
  112. package/dist/logger/index.mjs +2 -2
  113. package/dist/logger/index.mjs.map +1 -1
  114. package/dist/macroable/index.d.mts +2 -2
  115. package/dist/macroable/index.mjs +1 -1
  116. package/dist/{macroable-DzlfzT50.mjs → macroable-cvDTFZ_A.mjs} +1 -1
  117. package/dist/{macroable-DzlfzT50.mjs.map → macroable-cvDTFZ_A.mjs.map} +1 -1
  118. package/dist/{metadata-BVkc4aUu.mjs → metadata-DzzprcID.mjs} +1 -1
  119. package/dist/{metadata-BVkc4aUu.mjs.map → metadata-DzzprcID.mjs.map} +1 -1
  120. package/dist/module/index.d.mts +4 -3
  121. package/dist/module/index.d.mts.map +1 -1
  122. package/dist/module/index.mjs +10 -2
  123. package/dist/module/index.mjs.map +1 -0
  124. package/dist/{module-xYoHba6B.mjs → module-registry-Dm-pqHd3.mjs} +189 -57
  125. package/dist/module-registry-Dm-pqHd3.mjs.map +1 -0
  126. package/dist/module.decorator-CYHY6pG5.mjs +19 -0
  127. package/dist/module.decorator-CYHY6pG5.mjs.map +1 -0
  128. package/dist/openapi/index.d.mts +44 -8
  129. package/dist/openapi/index.d.mts.map +1 -1
  130. package/dist/openapi/index.mjs +3 -2
  131. package/dist/{openapi-C6lm0RmV.mjs → openapi-CstuTM8S.mjs} +55 -229
  132. package/dist/openapi-CstuTM8S.mjs.map +1 -0
  133. package/dist/openapi-tools.service-BC5EC3R3.mjs +206 -0
  134. package/dist/openapi-tools.service-BC5EC3R3.mjs.map +1 -0
  135. package/dist/{openapi.service-CrLlsXAd.d.mts → openapi.service-YhTiJ1bO.d.mts} +3 -3
  136. package/dist/{openapi.service-CrLlsXAd.d.mts.map → openapi.service-YhTiJ1bO.d.mts.map} +1 -1
  137. package/dist/quarry/index.d.mts +14 -5
  138. package/dist/quarry/index.d.mts.map +1 -1
  139. package/dist/quarry/index.mjs +6 -5
  140. package/dist/quarry/runner.d.mts +11 -11
  141. package/dist/quarry/runner.d.mts.map +1 -1
  142. package/dist/quarry/runner.mjs +192 -22
  143. package/dist/quarry/runner.mjs.map +1 -1
  144. package/dist/{quarry-registry-D4hIGScf.d.mts → quarry-registry-CXg0RFXq.d.mts} +4 -4
  145. package/dist/quarry-registry-CXg0RFXq.d.mts.map +1 -0
  146. package/dist/{quarry-registry-DkraZNwn.mjs → quarry.module-BuRPGMDm.mjs} +22 -21
  147. package/dist/quarry.module-BuRPGMDm.mjs.map +1 -0
  148. package/dist/queue/index.d.mts +3 -3
  149. package/dist/queue/index.mjs +42 -31
  150. package/dist/queue/index.mjs.map +1 -1
  151. package/dist/queue.module-nddvxzCB.mjs +613 -0
  152. package/dist/queue.module-nddvxzCB.mjs.map +1 -0
  153. package/dist/queue.tokens-DjHnFmre.mjs +11 -0
  154. package/dist/queue.tokens-DjHnFmre.mjs.map +1 -0
  155. package/dist/{r2-storage.provider-Hfm6LdZQ.mjs → r2-storage.provider-DCxQt9dD.mjs} +4 -4
  156. package/dist/{r2-storage.provider-Hfm6LdZQ.mjs.map → r2-storage.provider-DCxQt9dD.mjs.map} +1 -1
  157. package/dist/{rate-limit.decorator-D69zdZbp.mjs → rate-limit.decorator-BPAie_p3.mjs} +3 -3
  158. package/dist/{rate-limit.decorator-D69zdZbp.mjs.map → rate-limit.decorator-BPAie_p3.mjs.map} +1 -1
  159. package/dist/rate-limiter/index.d.mts +5 -5
  160. package/dist/rate-limiter/index.d.mts.map +1 -1
  161. package/dist/rate-limiter/index.mjs +26 -21
  162. package/dist/rate-limiter/index.mjs.map +1 -1
  163. package/dist/route-name-DGoBOfPg.mjs +171 -0
  164. package/dist/route-name-DGoBOfPg.mjs.map +1 -0
  165. package/dist/route-registration.service-D6vSwiKP.mjs +918 -0
  166. package/dist/route-registration.service-D6vSwiKP.mjs.map +1 -0
  167. package/dist/route-registry-CYqLp2Nj.mjs +123 -0
  168. package/dist/route-registry-CYqLp2Nj.mjs.map +1 -0
  169. package/dist/router/index.d.mts +2 -2
  170. package/dist/router/index.mjs +18 -8
  171. package/dist/router-CWGBD-Bg.mjs +78 -0
  172. package/dist/router-CWGBD-Bg.mjs.map +1 -0
  173. package/dist/router-resolver-D4YlPNlm.mjs +88 -0
  174. package/dist/router-resolver-D4YlPNlm.mjs.map +1 -0
  175. package/dist/seeder/index.d.mts +14 -4
  176. package/dist/seeder/index.d.mts.map +1 -1
  177. package/dist/seeder/index.mjs +5 -3
  178. package/dist/{seeder-BADTig4n.mjs → seeder-7ubkms-Y.mjs} +7 -56
  179. package/dist/seeder-7ubkms-Y.mjs.map +1 -0
  180. package/dist/seeder-registry-CyUmKsJq.mjs +57 -0
  181. package/dist/seeder-registry-CyUmKsJq.mjs.map +1 -0
  182. package/dist/seeder.module-CYYwk3Qk.mjs +15 -0
  183. package/dist/seeder.module-CYYwk3Qk.mjs.map +1 -0
  184. package/dist/{signed-url-BqUqt5dF.mjs → signed-url-DIU0sK_6.mjs} +1 -1
  185. package/dist/{signed-url-BqUqt5dF.mjs.map → signed-url-DIU0sK_6.mjs.map} +1 -1
  186. package/dist/storage/index.d.mts +3 -3
  187. package/dist/storage/index.d.mts.map +1 -1
  188. package/dist/storage/index.mjs +2 -2
  189. package/dist/storage/providers/index.d.mts +2 -2
  190. package/dist/storage/providers/index.d.mts.map +1 -1
  191. package/dist/storage/providers/index.mjs +1 -1
  192. package/dist/{storage-BA3ppVYM.mjs → storage-MDZypIE9.mjs} +12 -11
  193. package/dist/{storage-BA3ppVYM.mjs.map → storage-MDZypIE9.mjs.map} +1 -1
  194. package/dist/{storage-provider.interface-DQMtT42e.d.mts → storage-provider.interface-ClUwxz4S.d.mts} +2 -2
  195. package/dist/storage-provider.interface-ClUwxz4S.d.mts.map +1 -0
  196. package/dist/storage.error-Dnib4VHc.mjs +8 -0
  197. package/dist/{storage.error-C6FY037a.mjs.map → storage.error-Dnib4VHc.mjs.map} +1 -1
  198. package/dist/{stratal-Bdq4IdB3.mjs → stratal-DL9M38_s.mjs} +142 -140
  199. package/dist/stratal-DL9M38_s.mjs.map +1 -0
  200. package/dist/{stratal-BsKmvP6J.d.mts → stratal-DwDJPY9N.d.mts} +3 -3
  201. package/dist/{stratal-BsKmvP6J.d.mts.map → stratal-DwDJPY9N.d.mts.map} +1 -1
  202. package/dist/tiered-cache.service-Dv3BhxxE.d.mts +79 -0
  203. package/dist/tiered-cache.service-Dv3BhxxE.d.mts.map +1 -0
  204. package/dist/trailing-slash-CFyw8nYu.mjs +34 -0
  205. package/dist/trailing-slash-CFyw8nYu.mjs.map +1 -0
  206. package/dist/{types-BaeHi67f.d.mts → types-CmV_9xBD.d.mts} +1 -1
  207. package/dist/types-CmV_9xBD.d.mts.map +1 -0
  208. package/dist/uri-h7Q8Jug9.mjs +251 -0
  209. package/dist/uri-h7Q8Jug9.mjs.map +1 -0
  210. package/dist/{usage-generator-DTqaUMR9.mjs → usage-generator-DAWYasuP.mjs} +4 -4
  211. package/dist/usage-generator-DAWYasuP.mjs.map +1 -0
  212. package/dist/{validation-DUzcjb8Q.mjs → validation-CpOjviyT.mjs} +6 -6
  213. package/dist/{validation-DUzcjb8Q.mjs.map → validation-CpOjviyT.mjs.map} +1 -1
  214. package/dist/{validation.context-XTysWJ3b.mjs → validation.context-CRvmrhq7.mjs} +3 -3
  215. package/dist/{validation.context-XTysWJ3b.mjs.map → validation.context-CRvmrhq7.mjs.map} +1 -1
  216. package/dist/versioning.service-C6aHky8-.mjs +36 -0
  217. package/dist/versioning.service-C6aHky8-.mjs.map +1 -0
  218. package/dist/websocket/index.d.mts +11 -2
  219. package/dist/websocket/index.d.mts.map +1 -1
  220. package/dist/websocket/index.mjs +1 -1
  221. package/dist/workers/index.d.mts +2 -2
  222. package/dist/workers/index.d.mts.map +1 -1
  223. package/dist/workers/index.mjs +3 -3
  224. package/dist/workers/index.mjs.map +1 -1
  225. package/dist/{zod-hMa3rSHV.mjs → zod-eKqqhZ5_.mjs} +2 -2
  226. package/dist/{zod-hMa3rSHV.mjs.map → zod-eKqqhZ5_.mjs.map} +1 -1
  227. package/dist/{zod-DvWTfRpI.d.mts → zod-wecrEVAs.d.mts} +8 -3
  228. package/dist/zod-wecrEVAs.d.mts.map +1 -0
  229. package/package.json +19 -30
  230. package/dist/base-email.provider-BWZHIjt8.mjs +0 -42
  231. package/dist/base-email.provider-BWZHIjt8.mjs.map +0 -1
  232. package/dist/cache.service-e34gV6tz.d.mts.map +0 -1
  233. package/dist/cache.tokens-ovi_c52J.mjs +0 -6
  234. package/dist/cache.tokens-ovi_c52J.mjs.map +0 -1
  235. package/dist/colors-axmupKdp.mjs +0 -16
  236. package/dist/colors-axmupKdp.mjs.map +0 -1
  237. package/dist/command-BU4ApTo5.mjs.map +0 -1
  238. package/dist/command-wXfvHbBZ.d.mts.map +0 -1
  239. package/dist/consumer-registry-DHQtypr1.d.mts.map +0 -1
  240. package/dist/cron-manager-9bpN9bu4.mjs.map +0 -1
  241. package/dist/cron-manager-CSTIBPcM.d.mts +0 -124
  242. package/dist/cron-manager-CSTIBPcM.d.mts.map +0 -1
  243. package/dist/di-BO1QIb5H.mjs.map +0 -1
  244. package/dist/env-DKSbuBi5.d.mts.map +0 -1
  245. package/dist/events-D1KdDaiP.mjs.map +0 -1
  246. package/dist/index-B4UBK-2T.d.mts.map +0 -1
  247. package/dist/index-BtlE9RuO.d.mts.map +0 -1
  248. package/dist/index-CW1YHSft.d.mts.map +0 -1
  249. package/dist/index-DEncMcC6.d.mts.map +0 -1
  250. package/dist/index-Dj5IMwtr.d.mts.map +0 -1
  251. package/dist/module-xYoHba6B.mjs.map +0 -1
  252. package/dist/openapi-C6lm0RmV.mjs.map +0 -1
  253. package/dist/quarry-registry-D4hIGScf.d.mts.map +0 -1
  254. package/dist/quarry-registry-DkraZNwn.mjs.map +0 -1
  255. package/dist/queue.module-DeWJ0tQM.mjs +0 -355
  256. package/dist/queue.module-DeWJ0tQM.mjs.map +0 -1
  257. package/dist/resend.provider-Ur6tU7fK.mjs +0 -68
  258. package/dist/resend.provider-Ur6tU7fK.mjs.map +0 -1
  259. package/dist/router-Cy6DjkvP.mjs +0 -1852
  260. package/dist/router-Cy6DjkvP.mjs.map +0 -1
  261. package/dist/seeder-BADTig4n.mjs.map +0 -1
  262. package/dist/smtp.provider-C129sNBT.mjs +0 -76
  263. package/dist/smtp.provider-C129sNBT.mjs.map +0 -1
  264. package/dist/storage-provider.interface-DQMtT42e.d.mts.map +0 -1
  265. package/dist/storage.error-C6FY037a.mjs +0 -8
  266. package/dist/stratal-Bdq4IdB3.mjs.map +0 -1
  267. package/dist/types-BaeHi67f.d.mts.map +0 -1
  268. package/dist/usage-generator-DTqaUMR9.mjs.map +0 -1
  269. package/dist/zod-DvWTfRpI.d.mts.map +0 -1
  270. /package/dist/{chunk-D1SwGrFN.mjs → chunk-BBjsoOtd.mjs} +0 -0
@@ -1,28 +1,81 @@
1
- import { a as ApplicationError } from "./container-storage-GpNNz79X.mjs";
2
- import { d as Transient, m as inject, s as CONTAINER_TOKEN } from "./di-BO1QIb5H.mjs";
3
- import { n as getMetadata, r as hasMetadata, t as defineMetadata } from "./metadata-BVkc4aUu.mjs";
4
- import { n as __decorateParam, t as __decorate } from "./decorate-HgTKAYK8.mjs";
5
- import { u as HttpException } from "./errors-BBZTnjdq.mjs";
6
- import { a as isListener } from "./events-D1KdDaiP.mjs";
7
- import { t as isCommand } from "./is-command-CX5rAfZW.mjs";
8
- import { t as isSeeder } from "./is-seeder-CYCtELlm.mjs";
9
- //#region src/module/module.error.ts
10
- var ModuleError = class extends ApplicationError {};
1
+ import { c as Transient, d as inject, n as CONTAINER_TOKEN, r as DI_TOKENS } from "./di-DseMn-z9.mjs";
2
+ import { a as ApplicationError } from "./container-storage-BmOJ4_Na.mjs";
3
+ import { n as __decorateParam, t as __decorate } from "./decorate-CuAoSZvs.mjs";
4
+ import { LOGGER_TOKENS } from "./logger/index.mjs";
5
+ import { u as HttpException } from "./errors-mXYxG0XB.mjs";
6
+ import { s as isListener } from "./events-BXJGZjpG.mjs";
7
+ import { r as getModuleOptions } from "./module.decorator-CYHY6pG5.mjs";
8
+ import { t as isCommand } from "./is-command-CEPO9n8c.mjs";
9
+ import { t as isSeeder } from "./is-seeder-Gvh_AM71.mjs";
10
+ //#region src/module/module-ref.ts
11
+ /**
12
+ * Handle to a lazily loaded module, returned by {@link LazyModuleLoader.load}.
13
+ *
14
+ * Resolves providers from the global container, so singletons registered by the
15
+ * lazy module persist across requests.
16
+ *
17
+ * Note: request-scoped providers resolved via {@link ModuleRef.get} degrade to
18
+ * transient instances (there is no ambient request scope here). To obtain a
19
+ * true per-request instance, resolve the token from the request container
20
+ * inside a request scope instead.
21
+ */
22
+ var ModuleRef = class {
23
+ container;
24
+ moduleClass;
25
+ constructor(container, moduleClass) {
26
+ this.container = container;
27
+ this.moduleClass = moduleClass;
28
+ }
29
+ /** Resolve a provider from the lazily loaded module (global scope). */
30
+ get(token) {
31
+ return this.container.resolve(token);
32
+ }
33
+ /** Async variant of {@link ModuleRef.get}, matching the NestJS API shape. */
34
+ resolve(token) {
35
+ return Promise.resolve(this.container.resolve(token));
36
+ }
37
+ };
11
38
  //#endregion
12
- //#region src/module/module.decorator.ts
13
- const MODULE_OPTIONS_KEY = Symbol.for("stratal:module:options");
14
- function Module(options) {
15
- return (target) => {
16
- defineMetadata(MODULE_OPTIONS_KEY, options, target);
17
- return target;
18
- };
19
- }
20
- function getModuleOptions(target) {
21
- return getMetadata(MODULE_OPTIONS_KEY, target);
22
- }
23
- function isModuleClass(target) {
24
- return typeof target === "function" && hasMetadata(MODULE_OPTIONS_KEY, target);
25
- }
39
+ //#region src/module/lazy-module-loader.ts
40
+ let LazyModuleLoader = class LazyModuleLoader {
41
+ registry;
42
+ container;
43
+ logger;
44
+ cache = /* @__PURE__ */ new Map();
45
+ inFlight = /* @__PURE__ */ new Map();
46
+ constructor(registry, container, logger) {
47
+ this.registry = registry;
48
+ this.container = container;
49
+ this.logger = logger;
50
+ }
51
+ async load(loaderFn) {
52
+ const loaded = await loaderFn();
53
+ const { moduleClass } = this.registry.resolveModule(loaded);
54
+ const cached = this.cache.get(moduleClass);
55
+ if (cached) return cached;
56
+ const inFlight = this.inFlight.get(moduleClass);
57
+ if (inFlight) return inFlight;
58
+ const promise = this.registerAndBuild(moduleClass, loaded);
59
+ this.inFlight.set(moduleClass, promise);
60
+ try {
61
+ return await promise;
62
+ } finally {
63
+ this.inFlight.delete(moduleClass);
64
+ }
65
+ }
66
+ async registerAndBuild(moduleClass, loaded) {
67
+ this.logger.debug(`Lazy loading module: ${moduleClass.name}`);
68
+ await this.registry.registerLazy(loaded);
69
+ const ref = new ModuleRef(this.container.getRootContainer(), moduleClass);
70
+ this.cache.set(moduleClass, ref);
71
+ return ref;
72
+ }
73
+ };
74
+ LazyModuleLoader = __decorate([
75
+ __decorateParam(0, inject(DI_TOKENS.ModuleRegistry)),
76
+ __decorateParam(1, inject(DI_TOKENS.Container)),
77
+ __decorateParam(2, inject(LOGGER_TOKENS.LoggerService))
78
+ ], LazyModuleLoader);
26
79
  //#endregion
27
80
  //#region src/rate-limiter/errors.ts
28
81
  /**
@@ -233,42 +286,102 @@ var ModuleRegistry = class {
233
286
  }
234
287
  register(moduleOrDynamic) {
235
288
  const { moduleClass, options } = this.resolveModule(moduleOrDynamic);
236
- const isDynamic = this.isDynamicModule(moduleOrDynamic);
237
- if (this.registeredClasses.has(moduleClass)) {
238
- if (isDynamic) {
239
- this.logger.debug(`Module ${moduleClass.name} already registered, registering DynamicModule providers`);
240
- const { module: _, ...dynamicRest } = moduleOrDynamic;
241
- for (const provider of dynamicRest.providers ?? []) this.registerProvider(provider);
242
- } else this.logger.debug(`Module ${moduleClass.name} already registered, skipping`);
243
- return;
244
- }
289
+ if (this.handleAlreadyRegistered(moduleClass, moduleOrDynamic)) return;
245
290
  this.registeredClasses.add(moduleClass);
246
291
  this.logger.info(`Registering module: ${moduleClass.name}`);
247
292
  for (const ImportedModule of options.imports ?? []) this.register(ImportedModule);
248
- for (const provider of options.providers ?? []) this.registerProvider(provider);
249
- for (const controller of options.controllers ?? []) {
250
- this.container.register(controller);
251
- this.allControllers.push(controller);
252
- }
253
- for (const consumer of options.consumers ?? []) {
254
- this.container.register(consumer);
255
- this.allConsumers.push(consumer);
256
- this.logger.info(`Collected consumer: ${consumer.name}`, { queueCount: this.allConsumers.length });
293
+ const registered = this.registerModuleNode(moduleClass, options, { includeHttpWiring: true });
294
+ if (this.initialized && registered.hasLifecycle) this.logger.warn(`Module ${moduleClass.name} was registered eagerly after initialization; its onInitialize/onShutdown/configureRoutes hooks will not run. Load it via LazyModuleLoader instead.`);
295
+ }
296
+ /**
297
+ * Register a module on demand (NestJS-style lazy loading). Registers nested
298
+ * imports recursively and providers, then runs `onInitialize` immediately
299
+ * (the bootstrap-time batch {@link initialize} has already completed).
300
+ *
301
+ * Controllers, queue consumers, and cron jobs are SKIPPED — route, queue, and
302
+ * cron wiring is finalized at bootstrap and cannot be extended at runtime.
303
+ */
304
+ async registerLazy(moduleOrDynamic) {
305
+ const { moduleClass, options } = this.resolveModule(moduleOrDynamic);
306
+ if (this.handleAlreadyRegistered(moduleClass, moduleOrDynamic)) return;
307
+ this.registeredClasses.add(moduleClass);
308
+ this.logger.info(`Lazily registering module: ${moduleClass.name}`);
309
+ for (const ImportedModule of options.imports ?? []) await this.registerLazy(ImportedModule);
310
+ const registered = this.registerModuleNode(moduleClass, options, { includeHttpWiring: false });
311
+ if (registered.hasLifecycle) {
312
+ const instance = new registered.moduleClass();
313
+ registered.instance = instance;
314
+ if (this.hasOnInitialize(instance)) {
315
+ const context = {
316
+ container: this.container,
317
+ logger: this.logger
318
+ };
319
+ this.logger.info(`Initializing (lazy): ${registered.moduleClass.name}`);
320
+ await instance.onInitialize(context);
321
+ }
257
322
  }
258
- for (const job of options.jobs ?? []) {
259
- this.container.register(job);
260
- this.allJobs.push(job);
323
+ }
324
+ registerAll(modules) {
325
+ for (const module of modules) this.register(module);
326
+ }
327
+ hasRegistered(moduleClass) {
328
+ return this.registeredClasses.has(moduleClass);
329
+ }
330
+ /**
331
+ * Handle re-registration of an already-known module. For a DynamicModule,
332
+ * its extra providers are wired (without re-running lifecycle); for a plain
333
+ * class it is a no-op. Returns true when the module was already registered.
334
+ */
335
+ handleAlreadyRegistered(moduleClass, moduleOrDynamic) {
336
+ if (!this.registeredClasses.has(moduleClass)) return false;
337
+ if (this.isDynamicModule(moduleOrDynamic)) {
338
+ this.logger.debug(`Module ${moduleClass.name} already registered, registering DynamicModule providers`);
339
+ const { module: _, ...dynamicRest } = moduleOrDynamic;
340
+ for (const provider of dynamicRest.providers ?? []) this.registerProvider(provider);
341
+ } else this.logger.debug(`Module ${moduleClass.name} already registered, skipping`);
342
+ return true;
343
+ }
344
+ /**
345
+ * Register a single module's providers (and, for eager registration, its
346
+ * controllers/consumers/jobs), detect lifecycle hooks, and record it.
347
+ * Assumes the module's `imports` have already been registered by the caller.
348
+ */
349
+ registerModuleNode(moduleClass, options, { includeHttpWiring }) {
350
+ for (const provider of options.providers ?? []) this.registerProvider(provider, {
351
+ lazy: !includeHttpWiring,
352
+ moduleName: moduleClass.name
353
+ });
354
+ if (includeHttpWiring) {
355
+ for (const controller of options.controllers ?? []) {
356
+ this.container.register(controller);
357
+ this.allControllers.push(controller);
358
+ }
359
+ for (const consumer of options.consumers ?? []) {
360
+ this.container.register(consumer);
361
+ this.allConsumers.push(consumer);
362
+ this.logger.info(`Collected consumer: ${consumer.name}`, { queueCount: this.allConsumers.length });
363
+ }
364
+ for (const job of options.jobs ?? []) {
365
+ this.container.register(job);
366
+ this.allJobs.push(job);
367
+ }
368
+ } else {
369
+ const skipped = [];
370
+ if (options.controllers?.length) skipped.push("controllers");
371
+ if (options.consumers?.length) skipped.push("consumers");
372
+ if (options.jobs?.length) skipped.push("jobs");
373
+ if ("configureRoutes" in moduleClass.prototype) skipped.push("configureRoutes");
374
+ if ("onException" in moduleClass.prototype) skipped.push("onException");
375
+ if (skipped.length) this.logger.warn(`Lazy module ${moduleClass.name} declares ${skipped.join("/")} which are skipped — route, queue, cron, and exception-handler wiring is finalized at bootstrap`);
261
376
  }
262
- const hasLifecycle = "onInitialize" in moduleClass.prototype || "onShutdown" in moduleClass.prototype || "onException" in moduleClass.prototype || "configureRoutes" in moduleClass.prototype;
263
- this.modules.push({
377
+ const registered = {
264
378
  moduleClass,
265
379
  options,
266
380
  instance: null,
267
- hasLifecycle
268
- });
269
- }
270
- registerAll(modules) {
271
- for (const module of modules) this.register(module);
381
+ hasLifecycle: "onInitialize" in moduleClass.prototype || "onShutdown" in moduleClass.prototype || "onException" in moduleClass.prototype || "configureRoutes" in moduleClass.prototype
382
+ };
383
+ this.modules.push(registered);
384
+ return registered;
272
385
  }
273
386
  async initialize() {
274
387
  if (this.initialized) return;
@@ -277,7 +390,7 @@ var ModuleRegistry = class {
277
390
  container: this.container,
278
391
  logger: this.logger
279
392
  };
280
- for (const registered of this.modules) {
393
+ for (const registered of [...this.modules]) {
281
394
  if (!registered.hasLifecycle) continue;
282
395
  const instance = new registered.moduleClass();
283
396
  registered.instance = instance;
@@ -377,7 +490,14 @@ var ModuleRegistry = class {
377
490
  isDynamicModule(value) {
378
491
  return typeof value === "object" && value !== null && "module" in value && typeof value.module === "function";
379
492
  }
380
- registerProvider(provider) {
493
+ registerProvider(provider, { lazy = false, moduleName } = {}) {
494
+ if (lazy) {
495
+ const token = this.providerToken(provider);
496
+ if (token !== null && this.container.isRegistered(token)) {
497
+ this.logger.warn(`Lazy module ${moduleName ?? "(unknown)"} provides ${this.describeToken(token)}, which is already registered by another module — keeping the existing binding and ignoring the lazy provider.`);
498
+ return;
499
+ }
500
+ }
381
501
  if (typeof provider === "function") {
382
502
  this.container.register(provider);
383
503
  this.collectIfListener(provider);
@@ -396,6 +516,18 @@ var ModuleRegistry = class {
396
516
  });
397
517
  } else if ("useExisting" in provider) this.container.registerExisting(provider.provide, provider.useExisting);
398
518
  }
519
+ /** The DI token a provider binds, for collision detection. */
520
+ providerToken(provider) {
521
+ if (typeof provider === "function") return provider;
522
+ if ("provide" in provider) return provider.provide;
523
+ return null;
524
+ }
525
+ describeToken(token) {
526
+ if (typeof token === "function") return token.name;
527
+ if (typeof token === "symbol") return token.toString();
528
+ if (typeof token === "string") return token;
529
+ return "lazy token";
530
+ }
399
531
  collectIfCommand(providerClass) {
400
532
  if (isCommand(providerClass) && !this.allCommands.includes(providerClass)) {
401
533
  this.allCommands.push(providerClass);
@@ -410,13 +542,13 @@ var ModuleRegistry = class {
410
542
  }
411
543
  collectIfListener(providerClass) {
412
544
  if (isListener(providerClass)) {
413
- this.container.registerSingleton(providerClass);
545
+ this.container.register(providerClass);
414
546
  this.allListeners.push(providerClass);
415
547
  this.logger.debug(`Collected listener: ${providerClass.name}`);
416
548
  }
417
549
  }
418
550
  };
419
551
  //#endregion
420
- export { getGroups as a, RATE_LIMITER_TOKENS as c, MODULE_OPTIONS_KEY as d, Module as f, ModuleError as h, getGlobalMiddleware as i, RateLimiterError as l, isModuleClass as m, Router as n, RouterError as o, getModuleOptions as p, getDefaultEntry as r, createThrottleMiddleware as s, ModuleRegistry as t, TooManyRequestsError as u };
552
+ export { getGroups as a, RATE_LIMITER_TOKENS as c, LazyModuleLoader as d, ModuleRef as f, getGlobalMiddleware as i, RateLimiterError as l, Router as n, RouterError as o, getDefaultEntry as r, createThrottleMiddleware as s, ModuleRegistry as t, TooManyRequestsError as u };
421
553
 
422
- //# sourceMappingURL=module-xYoHba6B.mjs.map
554
+ //# sourceMappingURL=module-registry-Dm-pqHd3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-registry-Dm-pqHd3.mjs","names":["internal.getDefaultEntry","internal.getGroups","internal.getGlobalMiddleware"],"sources":["../src/module/module-ref.ts","../src/module/lazy-module-loader.ts","../src/rate-limiter/errors.ts","../src/rate-limiter/rate-limiter.tokens.ts","../src/rate-limiter/throttle.middleware.ts","../src/router/router.error.ts","../src/router/router.internals.ts","../src/router/router.ts","../src/module/module-registry.ts"],"sourcesContent":["import type { Container } from '../di/container'\nimport type { InjectionToken } from '../di/types'\nimport type { Constructor } from '../types'\n\n/**\n * Handle to a lazily loaded module, returned by {@link LazyModuleLoader.load}.\n *\n * Resolves providers from the global container, so singletons registered by the\n * lazy module persist across requests.\n *\n * Note: request-scoped providers resolved via {@link ModuleRef.get} degrade to\n * transient instances (there is no ambient request scope here). To obtain a\n * true per-request instance, resolve the token from the request container\n * inside a request scope instead.\n */\nexport class ModuleRef {\n constructor(\n private readonly container: Container,\n /** The module class this ref was loaded from. */\n readonly moduleClass: Constructor,\n ) { }\n\n /** Resolve a provider from the lazily loaded module (global scope). */\n get<T>(token: InjectionToken<T>): T {\n return this.container.resolve(token)\n }\n\n /** Async variant of {@link ModuleRef.get}, matching the NestJS API shape. */\n resolve<T>(token: InjectionToken<T>): Promise<T> {\n return Promise.resolve(this.container.resolve(token))\n }\n}\n","import { inject } from '../di/decorators'\nimport type { Container } from '../di/container'\nimport { DI_TOKENS } from '../di/tokens'\nimport { LOGGER_TOKENS, type LoggerService } from '../logger'\nimport type { Constructor } from '../types'\nimport { ModuleRef } from './module-ref'\nimport type { ModuleRegistry } from './module-registry'\nimport type { DynamicModule, ModuleClass } from './types'\n\n/**\n * Loads modules on demand (NestJS-style), so optional features stay out of the\n * cold-start path until first use.\n *\n * Inject {@link DI_TOKENS.LazyModuleLoader} and call {@link load}:\n *\n * ```ts\n * const ref = await loader.load(() => import('./reports.module').then(m => m.ReportsModule))\n * const reports = ref.get(ReportService)\n * ```\n *\n * The loaded module's nested `imports` and `providers` are registered into the\n * global container and its `onInitialize` hook runs once. Controllers, queue\n * consumers, and cron jobs are skipped — that wiring is finalized at bootstrap.\n * Repeat loads of the same module return the cached {@link ModuleRef} without\n * re-registering.\n */\nexport class LazyModuleLoader {\n private readonly cache = new Map<Constructor, ModuleRef>()\n private readonly inFlight = new Map<Constructor, Promise<ModuleRef>>()\n\n constructor(\n @inject(DI_TOKENS.ModuleRegistry) private readonly registry: ModuleRegistry,\n @inject(DI_TOKENS.Container) private readonly container: Container,\n @inject(LOGGER_TOKENS.LoggerService) private readonly logger: LoggerService,\n ) { }\n\n async load(loaderFn: () => Promise<ModuleClass | DynamicModule>): Promise<ModuleRef> {\n const loaded = await loaderFn()\n const { moduleClass } = this.registry.resolveModule(loaded)\n\n const cached = this.cache.get(moduleClass)\n if (cached) return cached\n\n const inFlight = this.inFlight.get(moduleClass)\n if (inFlight) return inFlight\n\n const promise = this.registerAndBuild(moduleClass, loaded)\n this.inFlight.set(moduleClass, promise)\n try {\n return await promise\n } finally {\n this.inFlight.delete(moduleClass)\n }\n }\n\n private async registerAndBuild(\n moduleClass: Constructor,\n loaded: ModuleClass | DynamicModule,\n ): Promise<ModuleRef> {\n this.logger.debug(`Lazy loading module: ${moduleClass.name}`)\n await this.registry.registerLazy(loaded)\n const ref = new ModuleRef(this.container.getRootContainer(), moduleClass)\n this.cache.set(moduleClass, ref)\n return ref\n }\n}\n","import { ApplicationError, HttpException } from '../errors'\n\n/**\n * Thrown when a request exceeds a configured rate limit.\n *\n * HTTP Status: 429 Too Many Requests\n *\n * The {@link ExceptionHandler} renders the body via content negotiation\n * (HTML for HTML clients, JSON for everything else). Standard rate-limit\n * headers (`Retry-After`, `X-RateLimit-*`) are injected by the\n * `respond()` callback registered via `RateLimiterModule.onException`.\n */\nexport class TooManyRequestsError extends HttpException {\n constructor(\n public readonly info: { retryAfter: number; limit: number; resetAt: number },\n ) {\n super(429, 'Too many requests')\n }\n}\n\nexport class RateLimiterError extends ApplicationError {}\n","export const RATE_LIMITER_TOKENS = {\n Registry: Symbol.for('stratal:rate-limiter:registry'),\n Store: Symbol.for('stratal:rate-limiter:store'),\n StoreFactory: Symbol.for('stratal:rate-limiter:store-factory'),\n Options: Symbol.for('stratal:rate-limiter:options'),\n /**\n * Per-app marker registered by RateLimiterModule.onInitialize. Used by\n * ThrottleMiddleware to detect \"module not imported\".\n */\n ModuleMarker: Symbol.for('stratal:rate-limiter:module-marker'),\n} as const\n\nexport type RateLimiterToken = (typeof RATE_LIMITER_TOKENS)[keyof typeof RATE_LIMITER_TOKENS]\n","import { inject } from '../di'\nimport { CONTAINER_TOKEN, type Container } from '../di'\nimport { Transient } from '../di/decorators'\nimport type { Middleware, Next } from '../router/middleware.interface'\nimport type { RouterContext } from '../router/router-context'\nimport type { Constructor } from '../types'\nimport { RateLimiterError } from './errors'\nimport type { RateLimiterRegistry } from './rate-limiter-registry'\nimport { RATE_LIMITER_TOKENS } from './rate-limiter.tokens'\n\nconst cache = new Map<string, Constructor<Middleware>>()\n\n/**\n * Memoized factory that produces a Stratal `Middleware` class bound to a\n * named limiter. Calling twice with the same name returns the *same* class\n * — important for `Router.middleware` deduplication via class identity.\n *\n * Detection of \"module not imported\" works against a per-app marker\n * registered by `RateLimiterModule.onInitialize`. We check\n * `isRegistered(marker)` at request time before resolving Registry.\n */\nexport function createThrottleMiddleware(name: string): Constructor<Middleware> {\n const existing = cache.get(name)\n if (existing) return existing\n\n @Transient()\n class ThrottleMiddleware implements Middleware {\n constructor(\n @inject(CONTAINER_TOKEN) private readonly container: Container,\n ) {}\n\n handle(ctx: RouterContext, next: Next): Promise<Response | void> {\n if (!this.container.isRegistered(RATE_LIMITER_TOKENS.ModuleMarker)) {\n throw new RateLimiterError(`RateLimiterModule was not imported. Cannot resolve throttle \"${name}\". Import RateLimiterModule.forRoot({ store: ... }) in your AppModule.`)\n }\n const registry = this.container.resolve<RateLimiterRegistry>(RATE_LIMITER_TOKENS.Registry)\n return registry.handle(name, ctx, next)\n }\n }\n\n Object.defineProperty(ThrottleMiddleware, 'name', { value: `Throttle(${name})` })\n cache.set(name, ThrottleMiddleware)\n return ThrottleMiddleware\n}\n\n/**\n * Test-only escape hatch: clear the per-name middleware class cache.\n * Production code never needs this.\n */\nexport function _resetThrottleMiddlewareCache(): void {\n cache.clear()\n}\n","import { ApplicationError } from '../errors'\n\nexport class RouterError extends ApplicationError {}\n","/**\n * Symbol keys for Router internal accessors.\n *\n * These symbols are NOT exported from the public `stratal/router` barrel.\n * Only internal modules (RouterResolver) import them, keeping the Router's\n * public API clean — users never see these methods.\n *\n * Declared as individual unique symbols so TypeScript can distinguish\n * their return types in computed property access.\n *\n * @internal\n */\n\n/** @internal */\nexport const getDefaultEntry: unique symbol = Symbol('Router.getDefaultEntry')\n/** @internal */\nexport const getGroups: unique symbol = Symbol('Router.getGroups')\n/** @internal */\nexport const getGlobalMiddleware: unique symbol = Symbol('Router.getGlobalMiddleware')\n","import type { ZodObject } from '../i18n/validation/zod'\nimport { createThrottleMiddleware } from '../rate-limiter/throttle.middleware'\nimport type { Constructor } from '../types'\nimport { RouterError } from './router.error'\nimport type { Middleware } from './middleware.interface'\nimport * as internal from './router.internals'\n\n/**\n * Configuration for a sub-group created via `router.group()`.\n */\nexport interface RouterGroupConfig {\n prefix?: string\n domain?: string\n name?: string\n middleware?: Constructor<Middleware>[]\n version?: string | string[]\n hideFromDocs?: boolean\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- ZodObject generics require any for flexible shape parameter\n params?: ZodObject<any>\n}\n\n/**\n * Internal entry representing a sub-group or the default scope.\n * @internal — used by RouterResolver, not exported publicly.\n */\nexport interface RouterEntry {\n prefix?: string\n domain?: string\n name?: string\n middleware: Constructor<Middleware>[]\n version?: string | string[]\n hideFromDocs?: boolean\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- ZodObject generics require any for flexible shape parameter\n params?: ZodObject<any>\n /** Controllers in this entry. undefined = all controllers not in any sub-group */\n controllers?: Constructor[]\n}\n\n/**\n * Modules implement this to configure routes and middleware.\n * Replaces `MiddlewareConfigurable`.\n *\n * @example\n * ```typescript\n * @Module({ controllers: [UsersController, PostsController] })\n * export class ApiModule implements RouteConfigurable {\n * configureRoutes(router: Router): void {\n * router\n * .name('api.')\n * .middleware(CorsMiddleware)\n * .version('1')\n * }\n * }\n * ```\n */\nexport interface RouteConfigurable {\n configureRoutes(router: Router): void\n}\n\n/**\n * Fluent builder for route and middleware configuration.\n *\n * Scoped methods (`middleware()`, `prefix()`, `domain()`, `name()`, `version()`, `hideFromDocs()`)\n * apply only to this module's controllers or the sub-group's controllers.\n *\n * `use()` registers global middleware (all routes in the entire app).\n * Only callable on the root Router — throws inside `group()` callbacks.\n *\n * `group()` creates sub-groups for specific controllers with a callback.\n * Controllers in a sub-group are excluded from the parent scope.\n */\nexport class Router {\n private readonly _isChild: boolean\n private readonly _defaultEntry: RouterEntry = { middleware: [] }\n private readonly _groups: RouterEntry[] = []\n private readonly _globalMiddleware: Constructor<Middleware>[] = []\n\n constructor(isChild = false) {\n this._isChild = isChild\n }\n\n /** Dynamic path prefix. For shared segments like `/:companyId` */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- ZodObject generics require any for flexible shape parameter\n prefix(path: string, params?: ZodObject<any>): this {\n this._defaultEntry.prefix = path\n this._defaultEntry.params = params\n return this\n }\n\n /** Domain pattern for controllers in this scope */\n domain(pattern: string): this {\n this._defaultEntry.domain = pattern\n return this\n }\n\n /** Name prefix for routes in this scope */\n name(prefix: string): this {\n this._defaultEntry.name = prefix\n return this\n }\n\n /** Middleware applied to controllers in this scope */\n middleware(...middlewares: Constructor<Middleware>[]): this {\n this._defaultEntry.middleware.push(...middlewares)\n return this\n }\n\n /**\n * Apply a named rate limiter to controllers in this scope.\n *\n * The named limiter must be registered via `RateLimiterRegistry.for(name, ...)`\n * (typically inside a module's `onInitialize` hook), and the user must\n * import `RateLimiterModule.forRoot({ store: ... })` in their AppModule.\n *\n * @example\n * ```typescript\n * router.prefix('/uploads').throttle('uploads')\n * router.group([AdminController], (admin) => admin.throttle('admin'))\n * ```\n */\n throttle(name: string): this {\n this._defaultEntry.middleware.push(createThrottleMiddleware(name))\n return this\n }\n\n /** API version for controllers in this scope */\n version(version: string | string[]): this {\n this._defaultEntry.version = version\n return this\n }\n\n /** Hide/show routes in this scope from OpenAPI docs */\n hideFromDocs(hide = true): this {\n this._defaultEntry.hideFromDocs = hide\n return this\n }\n\n /**\n * Global middleware — applied to ALL routes in the entire app.\n * Only callable on the root Router. Throws if called inside `group()`.\n */\n use(...middlewares: Constructor<Middleware>[]): this {\n if (this._isChild) {\n throw new RouterError('router.use() is only allowed on the root Router. It cannot be called inside a group() callback.')\n }\n this._globalMiddleware.push(...middlewares)\n return this\n }\n\n /**\n * Create a sub-group for specific controllers/gateways.\n * Controllers in a sub-group are excluded from the parent (default) scope.\n * The callback receives a new Router (without `use()`) for fluent configuration.\n */\n group(controllers: Constructor[], callback: (router: Omit<Router, 'use'>) => void): this {\n const childRouter = new Router(true)\n callback(childRouter)\n\n this._groups.push({\n ...childRouter._defaultEntry,\n controllers,\n })\n return this\n }\n\n // --- Internal accessors via symbol keys (invisible to consumers) ---\n\n [internal.getDefaultEntry](): RouterEntry {\n return this._defaultEntry\n }\n\n [internal.getGroups](): RouterEntry[] {\n return this._groups\n }\n\n [internal.getGlobalMiddleware](): Constructor<Middleware>[] {\n return this._globalMiddleware\n }\n}\n","import type { Container } from '../di/container'\nimport { isListener } from '../events'\nimport type { LoggerService } from '../logger'\nimport { Router, type RouteConfigurable } from '../router/router'\nimport { isCommand } from '../quarry/is-command'\nimport { isSeeder } from '../seeder/is-seeder'\nimport type { Constructor } from '../types'\nimport { getModuleOptions } from './module.decorator'\nimport type { ExceptionHandler } from '../errors/exception-handler'\nimport type {\n DynamicModule,\n InjectionToken,\n ModuleClass,\n ModuleContext,\n ModuleOptions,\n OnException,\n OnInitialize,\n OnShutdown,\n Provider,\n} from './types'\n\n\ninterface RegisteredModule {\n moduleClass: Constructor\n options: ModuleOptions\n instance: object | null\n hasLifecycle: boolean\n}\n\nexport class ModuleRegistry {\n private modules: RegisteredModule[] = []\n private registeredClasses = new Set<Constructor>()\n private initialized = false\n\n private allControllers: Constructor[] = []\n private allConsumers: Constructor[] = []\n private allJobs: Constructor[] = []\n private allListeners: Constructor[] = []\n private allCommands: Constructor[] = []\n private allSeeders: Constructor[] = []\n private allRouterConfigs: { router: Router; controllers: Constructor[] }[] = []\n\n constructor(\n private readonly container: Container,\n private readonly logger: LoggerService\n ) { }\n\n register(moduleOrDynamic: ModuleClass | DynamicModule): void {\n const { moduleClass, options } = this.resolveModule(moduleOrDynamic)\n\n if (this.handleAlreadyRegistered(moduleClass, moduleOrDynamic)) return\n\n this.registeredClasses.add(moduleClass)\n this.logger.info(`Registering module: ${moduleClass.name}`)\n\n for (const ImportedModule of options.imports ?? []) {\n this.register(ImportedModule)\n }\n\n const registered = this.registerModuleNode(moduleClass, options, { includeHttpWiring: true })\n\n // Eager register() is synchronous and assumes the bootstrap initialize()\n // batch will run lifecycle hooks. If it's called AFTER initialization (e.g. a\n // built-in subsystem registered on first use), that batch has finished and\n // won't revisit this module — so a lifecycle hook would be silently dropped.\n // Surface it instead of failing silently; load such modules via\n // LazyModuleLoader (registerLazy), which runs onInitialize immediately.\n if (this.initialized && registered.hasLifecycle) {\n this.logger.warn(\n `Module ${moduleClass.name} was registered eagerly after initialization; its onInitialize/onShutdown/configureRoutes hooks will not run. Load it via LazyModuleLoader instead.`,\n )\n }\n }\n\n /**\n * Register a module on demand (NestJS-style lazy loading). Registers nested\n * imports recursively and providers, then runs `onInitialize` immediately\n * (the bootstrap-time batch {@link initialize} has already completed).\n *\n * Controllers, queue consumers, and cron jobs are SKIPPED — route, queue, and\n * cron wiring is finalized at bootstrap and cannot be extended at runtime.\n */\n async registerLazy(moduleOrDynamic: ModuleClass | DynamicModule): Promise<void> {\n const { moduleClass, options } = this.resolveModule(moduleOrDynamic)\n\n if (this.handleAlreadyRegistered(moduleClass, moduleOrDynamic)) return\n\n this.registeredClasses.add(moduleClass)\n this.logger.info(`Lazily registering module: ${moduleClass.name}`)\n\n for (const ImportedModule of options.imports ?? []) {\n await this.registerLazy(ImportedModule)\n }\n\n const registered = this.registerModuleNode(moduleClass, options, { includeHttpWiring: false })\n\n if (registered.hasLifecycle) {\n const instance = new registered.moduleClass()\n registered.instance = instance\n if (this.hasOnInitialize(instance)) {\n const context: ModuleContext = { container: this.container, logger: this.logger }\n this.logger.info(`Initializing (lazy): ${registered.moduleClass.name}`)\n await instance.onInitialize(context)\n }\n }\n }\n\n registerAll(modules: (ModuleClass | DynamicModule)[]): void {\n for (const module of modules) {\n this.register(module)\n }\n }\n\n hasRegistered(moduleClass: Constructor): boolean {\n return this.registeredClasses.has(moduleClass)\n }\n\n /**\n * Handle re-registration of an already-known module. For a DynamicModule,\n * its extra providers are wired (without re-running lifecycle); for a plain\n * class it is a no-op. Returns true when the module was already registered.\n */\n private handleAlreadyRegistered(\n moduleClass: Constructor,\n moduleOrDynamic: ModuleClass | DynamicModule,\n ): boolean {\n if (!this.registeredClasses.has(moduleClass)) return false\n\n if (this.isDynamicModule(moduleOrDynamic)) {\n this.logger.debug(`Module ${moduleClass.name} already registered, registering DynamicModule providers`)\n const { module: _, ...dynamicRest } = moduleOrDynamic\n for (const provider of dynamicRest.providers ?? []) {\n this.registerProvider(provider)\n }\n } else {\n this.logger.debug(`Module ${moduleClass.name} already registered, skipping`)\n }\n return true\n }\n\n /**\n * Register a single module's providers (and, for eager registration, its\n * controllers/consumers/jobs), detect lifecycle hooks, and record it.\n * Assumes the module's `imports` have already been registered by the caller.\n */\n private registerModuleNode(\n moduleClass: Constructor,\n options: ModuleOptions,\n { includeHttpWiring }: { includeHttpWiring: boolean },\n ): RegisteredModule {\n for (const provider of options.providers ?? []) {\n this.registerProvider(provider, { lazy: !includeHttpWiring, moduleName: moduleClass.name })\n }\n\n if (includeHttpWiring) {\n for (const controller of options.controllers ?? []) {\n this.container.register(controller)\n this.allControllers.push(controller)\n }\n\n for (const consumer of options.consumers ?? []) {\n this.container.register(consumer)\n this.allConsumers.push(consumer)\n this.logger.info(`Collected consumer: ${consumer.name}`, { queueCount: this.allConsumers.length })\n }\n\n for (const job of options.jobs ?? []) {\n this.container.register(job)\n this.allJobs.push(job)\n }\n } else {\n const skipped: string[] = []\n if (options.controllers?.length) skipped.push('controllers')\n if (options.consumers?.length) skipped.push('consumers')\n if (options.jobs?.length) skipped.push('jobs')\n if ('configureRoutes' in moduleClass.prototype) skipped.push('configureRoutes')\n if ('onException' in moduleClass.prototype) skipped.push('onException')\n if (skipped.length) {\n this.logger.warn(\n `Lazy module ${moduleClass.name} declares ${skipped.join('/')} which are skipped — ` +\n `route, queue, cron, and exception-handler wiring is finalized at bootstrap`,\n )\n }\n }\n\n const hasLifecycle =\n 'onInitialize' in moduleClass.prototype ||\n 'onShutdown' in moduleClass.prototype ||\n 'onException' in moduleClass.prototype ||\n 'configureRoutes' in moduleClass.prototype\n\n const registered: RegisteredModule = { moduleClass, options, instance: null, hasLifecycle }\n this.modules.push(registered)\n return registered\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) return\n\n this.logger.info('Initializing modules...')\n\n const context: ModuleContext = {\n container: this.container,\n logger: this.logger,\n }\n\n // Snapshot: a module's onInitialize may lazily load another module\n // (LazyModuleLoader.load → registerLazy), which pushes to this.modules and\n // initializes it itself. Iterating a snapshot prevents the batch loop from\n // re-visiting (and double-initializing) those lazily-added modules.\n for (const registered of [...this.modules]) {\n if (!registered.hasLifecycle) continue\n\n const instance = new registered.moduleClass()\n registered.instance = instance\n\n if (this.hasOnInitialize(instance)) {\n this.logger.info(`Initializing: ${registered.moduleClass.name}`)\n await instance.onInitialize(context)\n }\n }\n\n this.initialized = true\n this.logger.info('All modules initialized')\n }\n\n getAllControllers(): Constructor[] {\n return this.allControllers\n }\n\n getAllConsumers(): Constructor[] {\n return this.allConsumers\n }\n\n getAllJobs(): Constructor[] {\n return this.allJobs\n }\n\n getAllListeners(): Constructor[] {\n return this.allListeners\n }\n\n getAllCommands(): Constructor[] {\n return this.allCommands\n }\n\n getAllSeeders(): Constructor[] {\n return this.allSeeders\n }\n\n getAllRouterConfigs(): { router: Router; controllers: Constructor[] }[] {\n if (this.allRouterConfigs.length === 0) {\n for (const { moduleClass, options, instance } of this.modules) {\n if (instance && this.hasRouteConfigurable(instance)) {\n this.logger.debug(`Configuring routes for: ${moduleClass.name}`)\n const router = new Router()\n instance.configureRoutes(router)\n const moduleControllers = options.controllers ?? []\n this.allRouterConfigs.push({ router, controllers: moduleControllers })\n }\n }\n }\n return this.allRouterConfigs\n }\n\n configureExceptionHandlers(handler: ExceptionHandler): void {\n for (const { moduleClass, instance } of this.modules) {\n if (instance && this.hasOnException(instance)) {\n this.logger.debug(`Configuring exception handlers for: ${moduleClass.name}`)\n instance.onException(handler)\n }\n }\n }\n\n async shutdown(): Promise<void> {\n this.logger.info('Shutting down modules...')\n\n const context: ModuleContext = {\n container: this.container,\n logger: this.logger,\n }\n\n const reversed = [...this.modules].reverse()\n\n for (const { moduleClass, instance } of reversed) {\n if (instance && this.hasOnShutdown(instance)) {\n try {\n await instance.onShutdown(context)\n } catch (error) {\n this.logger.error(`Error shutting down ${moduleClass.name}:`, error as Error)\n }\n }\n }\n\n this.logger.info('All modules shut down')\n }\n\n private hasRouteConfigurable(instance: unknown): instance is RouteConfigurable {\n return (\n typeof instance === 'object' &&\n instance !== null &&\n 'configureRoutes' in instance &&\n typeof (instance as RouteConfigurable).configureRoutes === 'function'\n )\n }\n\n private hasOnInitialize(instance: unknown): instance is OnInitialize {\n return (\n typeof instance === 'object' &&\n instance !== null &&\n 'onInitialize' in instance &&\n typeof (instance as OnInitialize).onInitialize === 'function'\n )\n }\n\n private hasOnShutdown(instance: unknown): instance is OnShutdown {\n return (\n typeof instance === 'object' &&\n instance !== null &&\n 'onShutdown' in instance &&\n typeof (instance as OnShutdown).onShutdown === 'function'\n )\n }\n\n private hasOnException(instance: unknown): instance is OnException {\n return (\n typeof instance === 'object' &&\n instance !== null &&\n 'onException' in instance &&\n typeof (instance as OnException).onException === 'function'\n )\n }\n\n resolveModule(moduleOrDynamic: ModuleClass | DynamicModule): {\n moduleClass: Constructor\n options: ModuleOptions\n } {\n if (this.isDynamicModule(moduleOrDynamic)) {\n const { module: moduleClass, ...dynamicRest } = moduleOrDynamic\n\n const decoratorOptions = getModuleOptions(moduleClass) ?? {}\n const mergedOptions: ModuleOptions = {\n ...decoratorOptions,\n ...dynamicRest,\n providers: [...(decoratorOptions.providers ?? []), ...(dynamicRest.providers ?? [])],\n imports: [...(decoratorOptions.imports ?? [])],\n }\n\n return { moduleClass: moduleClass, options: mergedOptions }\n }\n\n const moduleClass = moduleOrDynamic as Constructor\n const options = getModuleOptions(moduleClass) ?? {}\n return { moduleClass, options }\n }\n\n isDynamicModule(value: unknown): value is DynamicModule {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'module' in value &&\n typeof (value as DynamicModule).module === 'function'\n )\n }\n\n private registerProvider(\n provider: Provider,\n { lazy = false, moduleName }: { lazy?: boolean; moduleName?: string } = {},\n ): void {\n if (lazy) {\n const token = this.providerToken(provider)\n // A lazy module registers onto the shared root container. If its token is\n // already bound (by an eagerly-registered or previously-loaded module),\n // overriding would silently clobber that binding — and break any\n // shared-singleton rendezvous. Keep the existing binding and warn.\n if (token !== null && this.container.isRegistered(token)) {\n this.logger.warn(\n `Lazy module ${moduleName ?? '(unknown)'} provides ${this.describeToken(token)}, ` +\n `which is already registered by another module — keeping the existing binding and ignoring the lazy provider.`,\n )\n return\n }\n }\n\n if (typeof provider === 'function') {\n this.container.register(provider as Constructor)\n this.collectIfListener(provider as Constructor)\n this.collectIfCommand(provider as Constructor)\n this.collectIfSeeder(provider as Constructor)\n } else if ('useClass' in provider) {\n this.container.register(provider.provide, provider.useClass as Constructor)\n this.collectIfListener(provider.useClass as Constructor)\n this.collectIfCommand(provider.useClass as Constructor)\n this.collectIfSeeder(provider.useClass as Constructor)\n } else if ('useValue' in provider) {\n this.container.registerValue(provider.provide, provider.useValue)\n } else if ('useFactory' in provider) {\n const { provide, useFactory, inject = [] } = provider\n this.container.registerFactory(provide, (c) => {\n const deps = inject.map((token) => c.resolve(token))\n return useFactory(...deps)\n })\n } else if ('useExisting' in provider) {\n this.container.registerExisting(provider.provide, provider.useExisting)\n }\n }\n\n /** The DI token a provider binds, for collision detection. */\n private providerToken(provider: Provider): InjectionToken | null {\n if (typeof provider === 'function') return provider as Constructor\n if ('provide' in provider) return provider.provide\n return null\n }\n\n private describeToken(token: InjectionToken): string {\n if (typeof token === 'function') return token.name\n if (typeof token === 'symbol') return token.toString()\n if (typeof token === 'string') return token\n return 'lazy token'\n }\n\n private collectIfCommand(providerClass: Constructor): void {\n if (isCommand(providerClass) && !this.allCommands.includes(providerClass)) {\n this.allCommands.push(providerClass)\n this.logger.debug(`Collected command: ${providerClass.name}`)\n }\n }\n\n private collectIfSeeder(providerClass: Constructor): void {\n if (isSeeder(providerClass) && !this.allSeeders.includes(providerClass)) {\n this.allSeeders.push(providerClass)\n this.logger.debug(`Collected seeder: ${providerClass.name}`)\n }\n }\n\n private collectIfListener(providerClass: Constructor): void {\n if (isListener(providerClass)) {\n // Register with the listener's own scope (`@Listener()` applies\n // `@Transient()`) rather than forcing a singleton: listeners are resolved\n // fresh per event from the emitting request scope, so a listener may inject\n // request-scoped providers (i18n, queue senders, auth context, …).\n this.container.register(providerClass)\n this.allListeners.push(providerClass)\n this.logger.debug(`Collected listener: ${providerClass.name}`)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAeA,IAAa,YAAb,MAAuB;CAEF;CAER;CAHX,YACE,WAEA,aACA;EAHiB,KAAA,YAAA;EAER,KAAA,cAAA;CACP;;CAGJ,IAAO,OAA6B;EAClC,OAAO,KAAK,UAAU,QAAQ,KAAK;CACrC;;CAGA,QAAW,OAAsC;EAC/C,OAAO,QAAQ,QAAQ,KAAK,UAAU,QAAQ,KAAK,CAAC;CACtD;AACF;;;ACLO,IAAA,mBAAA,MAAM,iBAAiB;CAKyB;CACL;CACQ;CANxD,wBAAyB,IAAI,IAA4B;CACzD,2BAA4B,IAAI,IAAqC;CAErE,YACE,UACA,WACA,QACA;EAHmD,KAAA,WAAA;EACL,KAAA,YAAA;EACQ,KAAA,SAAA;CACpD;CAEJ,MAAM,KAAK,UAA0E;EACnF,MAAM,SAAS,MAAM,SAAS;EAC9B,MAAM,EAAE,gBAAgB,KAAK,SAAS,cAAc,MAAM;EAE1D,MAAM,SAAS,KAAK,MAAM,IAAI,WAAW;EACzC,IAAI,QAAQ,OAAO;EAEnB,MAAM,WAAW,KAAK,SAAS,IAAI,WAAW;EAC9C,IAAI,UAAU,OAAO;EAErB,MAAM,UAAU,KAAK,iBAAiB,aAAa,MAAM;EACzD,KAAK,SAAS,IAAI,aAAa,OAAO;EACtC,IAAI;GACF,OAAO,MAAM;EACf,UAAU;GACR,KAAK,SAAS,OAAO,WAAW;EAClC;CACF;CAEA,MAAc,iBACZ,aACA,QACoB;EACpB,KAAK,OAAO,MAAM,wBAAwB,YAAY,MAAM;EAC5D,MAAM,KAAK,SAAS,aAAa,MAAM;EACvC,MAAM,MAAM,IAAI,UAAU,KAAK,UAAU,iBAAiB,GAAG,WAAW;EACxE,KAAK,MAAM,IAAI,aAAa,GAAG;EAC/B,OAAO;CACT;AACF;;oBAlCK,OAAO,UAAU,cAAc,CAAA;oBAC/B,OAAO,UAAU,SAAS,CAAA;oBAC1B,OAAO,cAAc,aAAa,CAAA;;;;;;;;;;;;;;ACrBvC,IAAa,uBAAb,cAA0C,cAAc;CAEpC;CADlB,YACE,MACA;EACA,MAAM,KAAK,mBAAmB;EAFd,KAAA,OAAA;CAGlB;AACF;AAEA,IAAa,mBAAb,cAAsC,iBAAiB,CAAC;;;ACpBxD,MAAa,sBAAsB;CACjC,UAAU,OAAO,IAAI,+BAA+B;CACpD,OAAO,OAAO,IAAI,4BAA4B;CAC9C,cAAc,OAAO,IAAI,oCAAoC;CAC7D,SAAS,OAAO,IAAI,8BAA8B;;;;;CAKlD,cAAc,OAAO,IAAI,oCAAoC;AAC/D;;;ACAA,MAAM,wBAAQ,IAAI,IAAqC;;;;;;;;;;AAWvD,SAAgB,yBAAyB,MAAuC;CAC9E,MAAM,WAAW,MAAM,IAAI,IAAI;CAC/B,IAAI,UAAU,OAAO;CAErB,IAAA,qBAAA,MACM,mBAAyC;EAED;EAD5C,YACE,WACA;GAD0C,KAAA,YAAA;EACzC;EAEH,OAAO,KAAoB,MAAsC;GAC/D,IAAI,CAAC,KAAK,UAAU,aAAa,oBAAoB,YAAY,GAC/D,MAAM,IAAI,iBAAiB,gEAAgE,KAAK,uEAAuE;GAGzK,OADiB,KAAK,UAAU,QAA6B,oBAAoB,QACnE,EAAE,OAAO,MAAM,KAAK,IAAI;EACxC;CACF;kCAbC,UAAU,GAAA,gBAAA,GAGN,OAAO,eAAe,CAAA,CAAA,GAAA,kBAAA;CAY3B,OAAO,eAAe,oBAAoB,QAAQ,EAAE,OAAO,YAAY,KAAK,GAAG,CAAC;CAChF,MAAM,IAAI,MAAM,kBAAkB;CAClC,OAAO;AACT;;;ACzCA,IAAa,cAAb,cAAiC,iBAAiB,CAAC;;;;;;;;;;;;;;;;ACYnD,MAAa,kBAAiC,OAAO,wBAAwB;;AAE7E,MAAa,YAA2B,OAAO,kBAAkB;;AAEjE,MAAa,sBAAqC,OAAO,4BAA4B;;;;;;;;;;;;;;;ACqDrF,IAAa,SAAb,MAAa,OAAO;CAClB;CACA,gBAA8C,EAAE,YAAY,CAAC,EAAE;CAC/D,UAA0C,CAAC;CAC3C,oBAAgE,CAAC;CAEjE,YAAY,UAAU,OAAO;EAC3B,KAAK,WAAW;CAClB;;CAIA,OAAO,MAAc,QAA+B;EAClD,KAAK,cAAc,SAAS;EAC5B,KAAK,cAAc,SAAS;EAC5B,OAAO;CACT;;CAGA,OAAO,SAAuB;EAC5B,KAAK,cAAc,SAAS;EAC5B,OAAO;CACT;;CAGA,KAAK,QAAsB;EACzB,KAAK,cAAc,OAAO;EAC1B,OAAO;CACT;;CAGA,WAAW,GAAG,aAA8C;EAC1D,KAAK,cAAc,WAAW,KAAK,GAAG,WAAW;EACjD,OAAO;CACT;;;;;;;;;;;;;;CAeA,SAAS,MAAoB;EAC3B,KAAK,cAAc,WAAW,KAAK,yBAAyB,IAAI,CAAC;EACjE,OAAO;CACT;;CAGA,QAAQ,SAAkC;EACxC,KAAK,cAAc,UAAU;EAC7B,OAAO;CACT;;CAGA,aAAa,OAAO,MAAY;EAC9B,KAAK,cAAc,eAAe;EAClC,OAAO;CACT;;;;;CAMA,IAAI,GAAG,aAA8C;EACnD,IAAI,KAAK,UACP,MAAM,IAAI,YAAY,iGAAiG;EAEzH,KAAK,kBAAkB,KAAK,GAAG,WAAW;EAC1C,OAAO;CACT;;;;;;CAOA,MAAM,aAA4B,UAAuD;EACvF,MAAM,cAAc,IAAI,OAAO,IAAI;EACnC,SAAS,WAAW;EAEpB,KAAK,QAAQ,KAAK;GAChB,GAAG,YAAY;GACf;EACF,CAAC;EACD,OAAO;CACT;CAIA,CAACA,mBAAyC;EACxC,OAAO,KAAK;CACd;CAEA,CAACC,aAAqC;EACpC,OAAO,KAAK;CACd;CAEA,CAACC,uBAA2D;EAC1D,OAAO,KAAK;CACd;AACF;;;ACrJA,IAAa,iBAAb,MAA4B;CAcP;CACA;CAdnB,UAAsC,CAAC;CACvC,oCAA4B,IAAI,IAAiB;CACjD,cAAsB;CAEtB,iBAAwC,CAAC;CACzC,eAAsC,CAAC;CACvC,UAAiC,CAAC;CAClC,eAAsC,CAAC;CACvC,cAAqC,CAAC;CACtC,aAAoC,CAAC;CACrC,mBAA6E,CAAC;CAE9E,YACE,WACA,QACA;EAFiB,KAAA,YAAA;EACA,KAAA,SAAA;CACf;CAEJ,SAAS,iBAAoD;EAC3D,MAAM,EAAE,aAAa,YAAY,KAAK,cAAc,eAAe;EAEnE,IAAI,KAAK,wBAAwB,aAAa,eAAe,GAAG;EAEhE,KAAK,kBAAkB,IAAI,WAAW;EACtC,KAAK,OAAO,KAAK,uBAAuB,YAAY,MAAM;EAE1D,KAAK,MAAM,kBAAkB,QAAQ,WAAW,CAAC,GAC/C,KAAK,SAAS,cAAc;EAG9B,MAAM,aAAa,KAAK,mBAAmB,aAAa,SAAS,EAAE,mBAAmB,KAAK,CAAC;EAQ5F,IAAI,KAAK,eAAe,WAAW,cACjC,KAAK,OAAO,KACV,UAAU,YAAY,KAAK,oJAC7B;CAEJ;;;;;;;;;CAUA,MAAM,aAAa,iBAA6D;EAC9E,MAAM,EAAE,aAAa,YAAY,KAAK,cAAc,eAAe;EAEnE,IAAI,KAAK,wBAAwB,aAAa,eAAe,GAAG;EAEhE,KAAK,kBAAkB,IAAI,WAAW;EACtC,KAAK,OAAO,KAAK,8BAA8B,YAAY,MAAM;EAEjE,KAAK,MAAM,kBAAkB,QAAQ,WAAW,CAAC,GAC/C,MAAM,KAAK,aAAa,cAAc;EAGxC,MAAM,aAAa,KAAK,mBAAmB,aAAa,SAAS,EAAE,mBAAmB,MAAM,CAAC;EAE7F,IAAI,WAAW,cAAc;GAC3B,MAAM,WAAW,IAAI,WAAW,YAAY;GAC5C,WAAW,WAAW;GACtB,IAAI,KAAK,gBAAgB,QAAQ,GAAG;IAClC,MAAM,UAAyB;KAAE,WAAW,KAAK;KAAW,QAAQ,KAAK;IAAO;IAChF,KAAK,OAAO,KAAK,wBAAwB,WAAW,YAAY,MAAM;IACtE,MAAM,SAAS,aAAa,OAAO;GACrC;EACF;CACF;CAEA,YAAY,SAAgD;EAC1D,KAAK,MAAM,UAAU,SACnB,KAAK,SAAS,MAAM;CAExB;CAEA,cAAc,aAAmC;EAC/C,OAAO,KAAK,kBAAkB,IAAI,WAAW;CAC/C;;;;;;CAOA,wBACE,aACA,iBACS;EACT,IAAI,CAAC,KAAK,kBAAkB,IAAI,WAAW,GAAG,OAAO;EAErD,IAAI,KAAK,gBAAgB,eAAe,GAAG;GACzC,KAAK,OAAO,MAAM,UAAU,YAAY,KAAK,yDAAyD;GACtG,MAAM,EAAE,QAAQ,GAAG,GAAG,gBAAgB;GACtC,KAAK,MAAM,YAAY,YAAY,aAAa,CAAC,GAC/C,KAAK,iBAAiB,QAAQ;EAElC,OACE,KAAK,OAAO,MAAM,UAAU,YAAY,KAAK,8BAA8B;EAE7E,OAAO;CACT;;;;;;CAOA,mBACE,aACA,SACA,EAAE,qBACgB;EAClB,KAAK,MAAM,YAAY,QAAQ,aAAa,CAAC,GAC3C,KAAK,iBAAiB,UAAU;GAAE,MAAM,CAAC;GAAmB,YAAY,YAAY;EAAK,CAAC;EAG5F,IAAI,mBAAmB;GACrB,KAAK,MAAM,cAAc,QAAQ,eAAe,CAAC,GAAG;IAClD,KAAK,UAAU,SAAS,UAAU;IAClC,KAAK,eAAe,KAAK,UAAU;GACrC;GAEA,KAAK,MAAM,YAAY,QAAQ,aAAa,CAAC,GAAG;IAC9C,KAAK,UAAU,SAAS,QAAQ;IAChC,KAAK,aAAa,KAAK,QAAQ;IAC/B,KAAK,OAAO,KAAK,uBAAuB,SAAS,QAAQ,EAAE,YAAY,KAAK,aAAa,OAAO,CAAC;GACnG;GAEA,KAAK,MAAM,OAAO,QAAQ,QAAQ,CAAC,GAAG;IACpC,KAAK,UAAU,SAAS,GAAG;IAC3B,KAAK,QAAQ,KAAK,GAAG;GACvB;EACF,OAAO;GACL,MAAM,UAAoB,CAAC;GAC3B,IAAI,QAAQ,aAAa,QAAQ,QAAQ,KAAK,aAAa;GAC3D,IAAI,QAAQ,WAAW,QAAQ,QAAQ,KAAK,WAAW;GACvD,IAAI,QAAQ,MAAM,QAAQ,QAAQ,KAAK,MAAM;GAC7C,IAAI,qBAAqB,YAAY,WAAW,QAAQ,KAAK,iBAAiB;GAC9E,IAAI,iBAAiB,YAAY,WAAW,QAAQ,KAAK,aAAa;GACtE,IAAI,QAAQ,QACV,KAAK,OAAO,KACV,eAAe,YAAY,KAAK,YAAY,QAAQ,KAAK,GAAG,EAAE,gGAEhE;EAEJ;EAQA,MAAM,aAA+B;GAAE;GAAa;GAAS,UAAU;GAAM,cAL3E,kBAAkB,YAAY,aAC9B,gBAAgB,YAAY,aAC5B,iBAAiB,YAAY,aAC7B,qBAAqB,YAAY;EAEuD;EAC1F,KAAK,QAAQ,KAAK,UAAU;EAC5B,OAAO;CACT;CAEA,MAAM,aAA4B;EAChC,IAAI,KAAK,aAAa;EAEtB,KAAK,OAAO,KAAK,yBAAyB;EAE1C,MAAM,UAAyB;GAC7B,WAAW,KAAK;GAChB,QAAQ,KAAK;EACf;EAMA,KAAK,MAAM,cAAc,CAAC,GAAG,KAAK,OAAO,GAAG;GAC1C,IAAI,CAAC,WAAW,cAAc;GAE9B,MAAM,WAAW,IAAI,WAAW,YAAY;GAC5C,WAAW,WAAW;GAEtB,IAAI,KAAK,gBAAgB,QAAQ,GAAG;IAClC,KAAK,OAAO,KAAK,iBAAiB,WAAW,YAAY,MAAM;IAC/D,MAAM,SAAS,aAAa,OAAO;GACrC;EACF;EAEA,KAAK,cAAc;EACnB,KAAK,OAAO,KAAK,yBAAyB;CAC5C;CAEA,oBAAmC;EACjC,OAAO,KAAK;CACd;CAEA,kBAAiC;EAC/B,OAAO,KAAK;CACd;CAEA,aAA4B;EAC1B,OAAO,KAAK;CACd;CAEA,kBAAiC;EAC/B,OAAO,KAAK;CACd;CAEA,iBAAgC;EAC9B,OAAO,KAAK;CACd;CAEA,gBAA+B;EAC7B,OAAO,KAAK;CACd;CAEA,sBAAwE;EACtE,IAAI,KAAK,iBAAiB,WAAW;QAC9B,MAAM,EAAE,aAAa,SAAS,cAAc,KAAK,SACpD,IAAI,YAAY,KAAK,qBAAqB,QAAQ,GAAG;IACnD,KAAK,OAAO,MAAM,2BAA2B,YAAY,MAAM;IAC/D,MAAM,SAAS,IAAI,OAAO;IAC1B,SAAS,gBAAgB,MAAM;IAC/B,MAAM,oBAAoB,QAAQ,eAAe,CAAC;IAClD,KAAK,iBAAiB,KAAK;KAAE;KAAQ,aAAa;IAAkB,CAAC;GACvE;;EAGJ,OAAO,KAAK;CACd;CAEA,2BAA2B,SAAiC;EAC1D,KAAK,MAAM,EAAE,aAAa,cAAc,KAAK,SAC3C,IAAI,YAAY,KAAK,eAAe,QAAQ,GAAG;GAC7C,KAAK,OAAO,MAAM,uCAAuC,YAAY,MAAM;GAC3E,SAAS,YAAY,OAAO;EAC9B;CAEJ;CAEA,MAAM,WAA0B;EAC9B,KAAK,OAAO,KAAK,0BAA0B;EAE3C,MAAM,UAAyB;GAC7B,WAAW,KAAK;GAChB,QAAQ,KAAK;EACf;EAEA,MAAM,WAAW,CAAC,GAAG,KAAK,OAAO,EAAE,QAAQ;EAE3C,KAAK,MAAM,EAAE,aAAa,cAAc,UACtC,IAAI,YAAY,KAAK,cAAc,QAAQ,GACzC,IAAI;GACF,MAAM,SAAS,WAAW,OAAO;EACnC,SAAS,OAAO;GACd,KAAK,OAAO,MAAM,uBAAuB,YAAY,KAAK,IAAI,KAAc;EAC9E;EAIJ,KAAK,OAAO,KAAK,uBAAuB;CAC1C;CAEA,qBAA6B,UAAkD;EAC7E,OACE,OAAO,aAAa,YACpB,aAAa,QACb,qBAAqB,YACrB,OAAQ,SAA+B,oBAAoB;CAE/D;CAEA,gBAAwB,UAA6C;EACnE,OACE,OAAO,aAAa,YACpB,aAAa,QACb,kBAAkB,YAClB,OAAQ,SAA0B,iBAAiB;CAEvD;CAEA,cAAsB,UAA2C;EAC/D,OACE,OAAO,aAAa,YACpB,aAAa,QACb,gBAAgB,YAChB,OAAQ,SAAwB,eAAe;CAEnD;CAEA,eAAuB,UAA4C;EACjE,OACE,OAAO,aAAa,YACpB,aAAa,QACb,iBAAiB,YACjB,OAAQ,SAAyB,gBAAgB;CAErD;CAEA,cAAc,iBAGZ;EACA,IAAI,KAAK,gBAAgB,eAAe,GAAG;GACzC,MAAM,EAAE,QAAQ,aAAa,GAAG,gBAAgB;GAEhD,MAAM,mBAAmB,iBAAiB,WAAW,KAAK,CAAC;GAQ3D,OAAO;IAAe;IAAa,SAAS;KAN1C,GAAG;KACH,GAAG;KACH,WAAW,CAAC,GAAI,iBAAiB,aAAa,CAAC,GAAI,GAAI,YAAY,aAAa,CAAC,CAAE;KACnF,SAAS,CAAC,GAAI,iBAAiB,WAAW,CAAC,CAAE;IAGS;GAAE;EAC5D;EAEA,MAAM,cAAc;EAEpB,OAAO;GAAE;GAAa,SADN,iBAAiB,WAAW,KAAK,CAAC;EACpB;CAChC;CAEA,gBAAgB,OAAwC;EACtD,OACE,OAAO,UAAU,YACjB,UAAU,QACV,YAAY,SACZ,OAAQ,MAAwB,WAAW;CAE/C;CAEA,iBACE,UACA,EAAE,OAAO,OAAO,eAAwD,CAAC,GACnE;EACN,IAAI,MAAM;GACR,MAAM,QAAQ,KAAK,cAAc,QAAQ;GAKzC,IAAI,UAAU,QAAQ,KAAK,UAAU,aAAa,KAAK,GAAG;IACxD,KAAK,OAAO,KACV,eAAe,cAAc,YAAY,YAAY,KAAK,cAAc,KAAK,EAAE,+GAEjF;IACA;GACF;EACF;EAEA,IAAI,OAAO,aAAa,YAAY;GAClC,KAAK,UAAU,SAAS,QAAuB;GAC/C,KAAK,kBAAkB,QAAuB;GAC9C,KAAK,iBAAiB,QAAuB;GAC7C,KAAK,gBAAgB,QAAuB;EAC9C,OAAO,IAAI,cAAc,UAAU;GACjC,KAAK,UAAU,SAAS,SAAS,SAAS,SAAS,QAAuB;GAC1E,KAAK,kBAAkB,SAAS,QAAuB;GACvD,KAAK,iBAAiB,SAAS,QAAuB;GACtD,KAAK,gBAAgB,SAAS,QAAuB;EACvD,OAAO,IAAI,cAAc,UACvB,KAAK,UAAU,cAAc,SAAS,SAAS,SAAS,QAAQ;OAC3D,IAAI,gBAAgB,UAAU;GACnC,MAAM,EAAE,SAAS,YAAY,SAAS,CAAC,MAAM;GAC7C,KAAK,UAAU,gBAAgB,UAAU,MAAM;IAE7C,OAAO,WAAW,GADL,OAAO,KAAK,UAAU,EAAE,QAAQ,KAAK,CAC1B,CAAC;GAC3B,CAAC;EACH,OAAO,IAAI,iBAAiB,UAC1B,KAAK,UAAU,iBAAiB,SAAS,SAAS,SAAS,WAAW;CAE1E;;CAGA,cAAsB,UAA2C;EAC/D,IAAI,OAAO,aAAa,YAAY,OAAO;EAC3C,IAAI,aAAa,UAAU,OAAO,SAAS;EAC3C,OAAO;CACT;CAEA,cAAsB,OAA+B;EACnD,IAAI,OAAO,UAAU,YAAY,OAAO,MAAM;EAC9C,IAAI,OAAO,UAAU,UAAU,OAAO,MAAM,SAAS;EACrD,IAAI,OAAO,UAAU,UAAU,OAAO;EACtC,OAAO;CACT;CAEA,iBAAyB,eAAkC;EACzD,IAAI,UAAU,aAAa,KAAK,CAAC,KAAK,YAAY,SAAS,aAAa,GAAG;GACzE,KAAK,YAAY,KAAK,aAAa;GACnC,KAAK,OAAO,MAAM,sBAAsB,cAAc,MAAM;EAC9D;CACF;CAEA,gBAAwB,eAAkC;EACxD,IAAI,SAAS,aAAa,KAAK,CAAC,KAAK,WAAW,SAAS,aAAa,GAAG;GACvE,KAAK,WAAW,KAAK,aAAa;GAClC,KAAK,OAAO,MAAM,qBAAqB,cAAc,MAAM;EAC7D;CACF;CAEA,kBAA0B,eAAkC;EAC1D,IAAI,WAAW,aAAa,GAAG;GAK7B,KAAK,UAAU,SAAS,aAAa;GACrC,KAAK,aAAa,KAAK,aAAa;GACpC,KAAK,OAAO,MAAM,uBAAuB,cAAc,MAAM;EAC/D;CACF;AACF"}
@@ -0,0 +1,19 @@
1
+ import { n as getMetadata, r as hasMetadata, t as defineMetadata } from "./metadata-DzzprcID.mjs";
2
+ //#region src/module/module.decorator.ts
3
+ const MODULE_OPTIONS_KEY = Symbol.for("stratal:module:options");
4
+ function Module(options) {
5
+ return (target) => {
6
+ defineMetadata(MODULE_OPTIONS_KEY, options, target);
7
+ return target;
8
+ };
9
+ }
10
+ function getModuleOptions(target) {
11
+ return getMetadata(MODULE_OPTIONS_KEY, target);
12
+ }
13
+ function isModuleClass(target) {
14
+ return typeof target === "function" && hasMetadata(MODULE_OPTIONS_KEY, target);
15
+ }
16
+ //#endregion
17
+ export { isModuleClass as i, Module as n, getModuleOptions as r, MODULE_OPTIONS_KEY as t };
18
+
19
+ //# sourceMappingURL=module.decorator-CYHY6pG5.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.decorator-CYHY6pG5.mjs","names":[],"sources":["../src/module/module.decorator.ts"],"sourcesContent":["import { defineMetadata, getMetadata, hasMetadata } from '../di/metadata'\nimport type { Constructor } from '../types'\nimport type { ModuleOptions } from './types'\n\nexport const MODULE_OPTIONS_KEY = Symbol.for('stratal:module:options')\n\nexport function Module(options: ModuleOptions) {\n return <TFunction extends abstract new (...args: never[]) => unknown>(target: TFunction): TFunction => {\n defineMetadata(MODULE_OPTIONS_KEY, options, target)\n return target\n }\n}\n\nexport function getModuleOptions(target: Constructor): ModuleOptions | undefined {\n return getMetadata<ModuleOptions>(MODULE_OPTIONS_KEY, target)\n}\n\nexport function isModuleClass(target: unknown): target is Constructor {\n return typeof target === 'function' && hasMetadata(MODULE_OPTIONS_KEY, target)\n}\n"],"mappings":";;AAIA,MAAa,qBAAqB,OAAO,IAAI,wBAAwB;AAErE,SAAgB,OAAO,SAAwB;CAC7C,QAAsE,WAAiC;EACrG,eAAe,oBAAoB,SAAS,MAAM;EAClD,OAAO;CACT;AACF;AAEA,SAAgB,iBAAiB,QAAgD;CAC/E,OAAO,YAA2B,oBAAoB,MAAM;AAC9D;AAEA,SAAgB,cAAc,QAAwC;CACpE,OAAO,OAAO,WAAW,cAAc,YAAY,oBAAoB,MAAM;AAC/E"}
@@ -1,6 +1,6 @@
1
- import { Sn as AsyncModuleOptions, er as RouterEnv, wn as DynamicModule } from "../index-DEncMcC6.mjs";
2
- import { n as OpenAPIObject, r as PathItemObject } from "../zod-DvWTfRpI.mjs";
3
- import { t as OpenAPIService } from "../openapi.service-CrLlsXAd.mjs";
1
+ import { Dn as AsyncModuleOptions, kn as DynamicModule, or as RouterEnv } from "../index-B_JoEl3V.mjs";
2
+ import { n as OpenAPIObject, r as PathItemObject } from "../zod-wecrEVAs.mjs";
3
+ import { t as OpenAPIService } from "../openapi.service-YhTiJ1bO.mjs";
4
4
  import { MiddlewareHandler } from "hono/types";
5
5
 
6
6
  //#region src/openapi/types.d.ts
@@ -71,7 +71,18 @@ interface OpenAPIEffectiveConfig {
71
71
  ui?: OpenAPIUIOptions | false;
72
72
  }
73
73
  /**
74
- * OpenAPI config service interface
74
+ * Singleton holder of the static base config. Resolvable outside a request for
75
+ * static config (mount paths, base info) with no per-request state.
76
+ */
77
+ interface IOpenAPIConfigStore {
78
+ /**
79
+ * Get the static base config (no per-request overrides applied).
80
+ */
81
+ getBaseConfig(): OpenAPIEffectiveConfig;
82
+ }
83
+ /**
84
+ * Request-scoped config service: reads through to {@link IOpenAPIConfigStore}
85
+ * and layers per-request overrides on top.
75
86
  */
76
87
  interface IOpenAPIConfigService {
77
88
  /**
@@ -102,7 +113,13 @@ declare class OpenAPIModule {
102
113
  * OpenAPI Module DI Tokens
103
114
  */
104
115
  declare const OPENAPI_TOKENS: {
105
- /** Static options provided via forRoot() */readonly Options: symbol; /** Request-scoped config service that supports runtime overrides */
116
+ /** Static options provided via forRoot() */readonly Options: symbol;
117
+ /**
118
+ * Singleton holder of the static base config. Resolvable outside a request
119
+ * (bootstrap endpoint mounting, CLI commands) for static config — never throws
120
+ * on resolve and carries no per-request state.
121
+ */
122
+ readonly ConfigStore: symbol; /** Request-scoped config service that layers runtime overrides over the store */
106
123
  readonly ConfigService: symbol; /** OpenAPI service that generates specs and serves endpoints */
107
124
  readonly OpenAPIService: symbol;
108
125
  };
@@ -131,9 +148,9 @@ declare const OPENAPI_TOKENS: {
131
148
  * ```
132
149
  */
133
150
  declare class OpenAPIConfigService implements IOpenAPIConfigService {
134
- private baseOptions?;
151
+ private store;
135
152
  private overrides;
136
- constructor(baseOptions?: OpenAPIModuleOptions | undefined);
153
+ constructor(store: IOpenAPIConfigStore);
137
154
  /**
138
155
  * Add configuration override for this request.
139
156
  * Overrides are merged in the order they are added.
@@ -148,6 +165,25 @@ declare class OpenAPIConfigService implements IOpenAPIConfigService {
148
165
  private mergeConfig;
149
166
  }
150
167
  //#endregion
168
+ //#region src/openapi/services/openapi-config.store.d.ts
169
+ /**
170
+ * OpenAPI Config Store
171
+ *
172
+ * Singleton holder of the static base configuration (mount paths, base info,
173
+ * security schemes) derived from `OpenAPIModule.forRoot()` options. It carries
174
+ * no per-request state, so it is the thing to resolve when you need OpenAPI
175
+ * config OUTSIDE a request scope — endpoint mounting at bootstrap, the
176
+ * `mcp:serve` CLI command, etc. Resolving it never throws on its own.
177
+ *
178
+ * Per-request overrides live on {@link OpenAPIConfigService}, which reads the
179
+ * base config from here and merges its overrides on top.
180
+ */
181
+ declare class OpenAPIConfigStore implements IOpenAPIConfigStore {
182
+ private baseOptions?;
183
+ constructor(baseOptions?: OpenAPIModuleOptions | undefined);
184
+ getBaseConfig(): OpenAPIEffectiveConfig;
185
+ }
186
+ //#endregion
151
187
  //#region src/openapi/services/openapi-tools.service.d.ts
152
188
  type JsonSchema = Record<string, unknown>;
153
189
  interface ToolDefinition {
@@ -198,5 +234,5 @@ declare class OpenApiToolsService {
198
234
  private getOperation;
199
235
  }
200
236
  //#endregion
201
- export { type Dispatcher, type IOpenAPIConfigService, OPENAPI_TOKENS, type OpenAPIConfigOverride, OpenAPIConfigService, type OpenAPIEffectiveConfig, type OpenAPIInfo, OpenAPIModule, type OpenAPIModuleOptions, OpenAPIService, type OpenAPIUIContext, type OpenAPIUIOptions, type OpenAPIUIRenderer, OpenApiToolsService, type RouteFilterFn, type ToolDefinition, type ToolExecutionResult, type ToolFilter };
237
+ export { type Dispatcher, type IOpenAPIConfigService, type IOpenAPIConfigStore, OPENAPI_TOKENS, type OpenAPIConfigOverride, OpenAPIConfigService, OpenAPIConfigStore, type OpenAPIEffectiveConfig, type OpenAPIInfo, OpenAPIModule, type OpenAPIModuleOptions, OpenAPIService, type OpenAPIUIContext, type OpenAPIUIOptions, type OpenAPIUIRenderer, OpenApiToolsService, type RouteFilterFn, type ToolDefinition, type ToolExecutionResult, type ToolFilter };
202
238
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/openapi/types.ts","../../src/openapi/openapi.module.ts","../../src/openapi/openapi.tokens.ts","../../src/openapi/services/openapi-config.service.ts","../../src/openapi/services/openapi-tools.service.ts"],"mappings":";;;;;;;;;UAOiB,WAAA;EACf,KAAA;EACA,OAAA;EACA,WAAA;AAAA;;;;UAMe,gBAAA;EACf,OAAA;EACA,KAAA;AAAA;;;AAOF;;KAAY,iBAAA,IAAqB,OAAA,EAAS,gBAAA,KAAqB,iBAAA,CAAkB,SAAA;;;;UAKhE,gBAAA;EAL+D;EAO9E,IAAA;EAP+B;EAS/B,QAAA,GAAW,iBAAA;AAAA;;;AAJb;UAUiB,oBAAA;;EAEf,QAAA;EAVA;EAaA,IAAA,GAAO,WAAA;EAXI;EAcX,eAAA,GAAkB,MAAA;EAdU;EAiB5B,EAAA,GAAK,gBAAA;AAAA;;;;;KAOK,aAAA,IAAiB,IAAA,UAAc,QAAA,EAAU,cAAA;;;;UAKpC,qBAAA;EAff;EAiBA,IAAA,GAAO,OAAA,CAAQ,WAAA;EAdf;EAiBA,WAAA,GAAc,aAAA;AAAA;;AAVhB;;UAgBiB,sBAAA;EACf,QAAA;EACA,IAAA,EAAM,WAAA;EACN,eAAA,GAAkB,MAAA;EAClB,WAAA,GAAc,aAAA;EACd,EAAA,GAAK,gBAAA;AAAA;AAhBP;;;AAAA,UAsBiB,qBAAA;EApBR;;;;EAyBP,QAAA,CAAS,MAAA,EAAQ,qBAAA;EAzBV;;;EA8BP,kBAAA,IAAsB,sBAAA;AAAA;;;cChCX,aAAA;ED7BiB;AAM9B;;;;;EAN8B,OCoCrB,OAAA,CAAQ,OAAA,GAAS,oBAAA,GAA4B,aAAA;EAAA,OAqB7C,YAAA,CAAa,OAAA,EAAS,kBAAA,CAAmB,oBAAA,IAAwB,aAAA;AAAA;;;;;;cCxF7D,cAAA;wEFII;EAAA;;;;;;;;;;AAAjB;;;;;;;;;AASA;;;;;AASA;;;cGQa,oBAAA,YAAgC,qBAAA;EAAA,QAIqB,WAAA;EAAA,QAHxD,SAAA;cAGwD,WAAA,GAAc,oBAAA;EHZA;;;;EGmB9E,QAAA,CAAS,MAAA,EAAQ,qBAAA;EHnBuE;EGwBxF,kBAAA,CAAA,GAAsB,sBAAA;EHnBP;;;;EAAA,QG0CP,WAAA;AAAA;;;KCrEL,UAAA,GAAa,MAAA;AAAA,UAED,cAAA;EACf,IAAA;EACA,WAAA;EACA,WAAA,EAAa,UAAA;EACb,MAAA;EACA,IAAA;EACA,UAAA;AAAA;AAAA,UAGe,mBAAA;EACf,MAAA;EACA,IAAA;EACA,OAAA,EAAS,MAAA;AAAA;AAAA,UAGM,UAAA;EACf,IAAA;EACA,UAAA;AAAA;AAAA,KAGU,UAAA,IAAc,MAAA,UAAgB,GAAA,UAAa,OAAA;EACrD,IAAA;EACA,OAAA,GAAU,MAAA;AAAA,MACN,OAAA,CAAQ,QAAA;;;;;;cA6BD,mBAAA;EAAA,wBACa,YAAA;EAAA,QAEhB,KAAA;EAAA,QACA,OAAA;EAAA,QACA,UAAA;EAAA,QAEA,IAAA;cAEI,IAAA,EAAM,aAAA,EAAe,OAAA;IAAY,UAAA,GAAa,UAAA;EAAA;EAS1D,QAAA,CAAS,MAAA,GAAS,UAAA,GAAa,cAAA;EAmB/B,OAAA,CAAQ,IAAA,WAAe,cAAA;EAIjB,WAAA,CAAY,IAAA,UAAc,IAAA,EAAM,MAAA,oBAA0B,OAAA,CAAQ,mBAAA;EAAA,QAmDhE,UAAA;EAAA,QAuBA,YAAA;EAAA,QASA,gBAAA;EAAA,QAOA,gBAAA;EAAA,QA+CA,eAAA;EAAA,QAYA,UAAA;EAAA,QA4BA,SAAA;EAAA,QAaA,YAAA;AAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/openapi/types.ts","../../src/openapi/openapi.module.ts","../../src/openapi/openapi.tokens.ts","../../src/openapi/services/openapi-config.service.ts","../../src/openapi/services/openapi-config.store.ts","../../src/openapi/services/openapi-tools.service.ts"],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- import { a as OPENAPI_TOKENS, i as OpenAPIConfigService, n as OpenAPIModule, r as OpenAPIService, t as OpenApiToolsService } from "../openapi-C6lm0RmV.mjs";
2
- export { OPENAPI_TOKENS, OpenAPIConfigService, OpenAPIModule, OpenAPIService, OpenApiToolsService };
1
+ import { n as OPENAPI_TOKENS, t as OpenApiToolsService } from "../openapi-tools.service-BC5EC3R3.mjs";
2
+ import { i as OpenAPIConfigService, n as OpenAPIService, r as OpenAPIConfigStore, t as OpenAPIModule } from "../openapi-CstuTM8S.mjs";
3
+ export { OPENAPI_TOKENS, OpenAPIConfigService, OpenAPIConfigStore, OpenAPIModule, OpenAPIService, OpenApiToolsService };