stratal 0.0.13 → 0.0.15

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 (1062) hide show
  1. package/dist/application-Du0d8O_e.d.mts +116 -0
  2. package/dist/application-Du0d8O_e.d.mts.map +1 -0
  3. package/dist/base-email.provider-CNwsPbwm.mjs +42 -0
  4. package/dist/base-email.provider-CNwsPbwm.mjs.map +1 -0
  5. package/dist/bin/cloudflare-workers-loader.mjs +34 -0
  6. package/dist/bin/cloudflare-workers-loader.mjs.map +1 -0
  7. package/dist/bin/quarry.mjs +164 -0
  8. package/dist/bin/quarry.mjs.map +1 -0
  9. package/dist/cache/index.d.mts +219 -0
  10. package/dist/cache/index.d.mts.map +1 -0
  11. package/dist/cache/index.mjs +251 -0
  12. package/dist/cache/index.mjs.map +1 -0
  13. package/dist/chunk-D1SwGrFN.mjs +27 -0
  14. package/dist/command-DG_u5ob2.mjs +192 -0
  15. package/dist/command-DG_u5ob2.mjs.map +1 -0
  16. package/dist/command-DcebcSrL.d.mts +120 -0
  17. package/dist/command-DcebcSrL.d.mts.map +1 -0
  18. package/dist/config/index.d.mts +273 -0
  19. package/dist/config/index.d.mts.map +1 -0
  20. package/dist/config/index.mjs +239 -0
  21. package/dist/config/index.mjs.map +1 -0
  22. package/dist/cron/index.d.mts +128 -0
  23. package/dist/cron/index.d.mts.map +1 -0
  24. package/dist/cron/index.mjs +5 -0
  25. package/dist/cron-manager-BRh86QCS.mjs +107 -0
  26. package/dist/cron-manager-BRh86QCS.mjs.map +1 -0
  27. package/dist/decorate-D5j-d9_z.mjs +171 -0
  28. package/dist/decorate-D5j-d9_z.mjs.map +1 -0
  29. package/dist/di/index.d.mts +2 -0
  30. package/dist/di/index.mjs +4 -0
  31. package/dist/email/index.d.mts +532 -0
  32. package/dist/email/index.d.mts.map +1 -0
  33. package/dist/email/index.mjs +480 -0
  34. package/dist/email/index.mjs.map +1 -0
  35. package/dist/en-uVIaxFXR.mjs +319 -0
  36. package/dist/en-uVIaxFXR.mjs.map +1 -0
  37. package/dist/errors/index.d.mts +2 -0
  38. package/dist/errors/index.mjs +4 -0
  39. package/dist/errors-CtCi1wn6.mjs +707 -0
  40. package/dist/errors-CtCi1wn6.mjs.map +1 -0
  41. package/dist/events/index.d.mts +210 -0
  42. package/dist/events/index.d.mts.map +1 -0
  43. package/dist/events/index.mjs +4 -0
  44. package/dist/events-CXl-o1Ad.mjs +191 -0
  45. package/dist/events-CXl-o1Ad.mjs.map +1 -0
  46. package/dist/gateway-context-90CQEQDR.mjs +226 -0
  47. package/dist/gateway-context-90CQEQDR.mjs.map +1 -0
  48. package/dist/guards/index.d.mts +172 -0
  49. package/dist/guards/index.d.mts.map +1 -0
  50. package/dist/guards/index.mjs +2 -0
  51. package/dist/guards-DMbsAxSX.mjs +151 -0
  52. package/dist/guards-DMbsAxSX.mjs.map +1 -0
  53. package/dist/i18n/index.d.mts +3 -0
  54. package/dist/i18n/index.mjs +15 -0
  55. package/dist/i18n/messages/en/index.d.mts +2 -0
  56. package/dist/i18n/messages/en/index.mjs +2 -0
  57. package/dist/i18n/validation/index.d.mts +4 -0
  58. package/dist/i18n/validation/index.mjs +3 -0
  59. package/dist/i18n.module-qNrpIVts.mjs +1791 -0
  60. package/dist/i18n.module-qNrpIVts.mjs.map +1 -0
  61. package/dist/index-CSuHOJc3.d.mts +319 -0
  62. package/dist/index-CSuHOJc3.d.mts.map +1 -0
  63. package/dist/index-Cfkie8JM.d.mts +263 -0
  64. package/dist/index-Cfkie8JM.d.mts.map +1 -0
  65. package/dist/index-CpAN9ENH.d.mts +185 -0
  66. package/dist/index-CpAN9ENH.d.mts.map +1 -0
  67. package/dist/index-D69rxo8H.d.mts +2616 -0
  68. package/dist/index-D69rxo8H.d.mts.map +1 -0
  69. package/dist/index-H-Su81aK.d.mts +632 -0
  70. package/dist/index-H-Su81aK.d.mts.map +1 -0
  71. package/dist/index.d.mts +41 -0
  72. package/dist/index.d.mts.map +1 -0
  73. package/dist/index.mjs +20 -0
  74. package/dist/is-command-MZDCH-0T.mjs +14 -0
  75. package/dist/is-command-MZDCH-0T.mjs.map +1 -0
  76. package/dist/is-seeder-BN9Ej1r7.mjs +28 -0
  77. package/dist/is-seeder-BN9Ej1r7.mjs.map +1 -0
  78. package/dist/logger/index.d.mts +2 -0
  79. package/dist/logger/index.mjs +3 -0
  80. package/dist/logger-BR1-s1Um.mjs +252 -0
  81. package/dist/logger-BR1-s1Um.mjs.map +1 -0
  82. package/dist/middleware/index.d.mts +2 -0
  83. package/dist/middleware/index.mjs +6 -0
  84. package/dist/middleware-iRhNjsPH.mjs +362 -0
  85. package/dist/middleware-iRhNjsPH.mjs.map +1 -0
  86. package/dist/module/index.d.mts +148 -0
  87. package/dist/module/index.d.mts.map +1 -0
  88. package/dist/module/index.mjs +11 -0
  89. package/dist/module-BH7t7BGG.mjs +370 -0
  90. package/dist/module-BH7t7BGG.mjs.map +1 -0
  91. package/dist/openapi/index.d.mts +202 -0
  92. package/dist/openapi/index.d.mts.map +1 -0
  93. package/dist/openapi/index.mjs +15 -0
  94. package/dist/quarry/index.d.mts +112 -0
  95. package/dist/quarry/index.d.mts.map +1 -0
  96. package/dist/quarry/index.mjs +6 -0
  97. package/dist/quarry-registry-BPmKVjhG.mjs +302 -0
  98. package/dist/quarry-registry-BPmKVjhG.mjs.map +1 -0
  99. package/dist/queue/index.d.mts +2 -0
  100. package/dist/queue/index.mjs +84 -0
  101. package/dist/queue/index.mjs.map +1 -0
  102. package/dist/queue.module-BdXWUvIM.mjs +403 -0
  103. package/dist/queue.module-BdXWUvIM.mjs.map +1 -0
  104. package/dist/resend.provider-CQT5be5E.mjs +70 -0
  105. package/dist/resend.provider-CQT5be5E.mjs.map +1 -0
  106. package/dist/router/index.d.mts +2 -0
  107. package/dist/router/index.mjs +15 -0
  108. package/dist/router-context-BLn4PrRG.mjs +264 -0
  109. package/dist/router-context-BLn4PrRG.mjs.map +1 -0
  110. package/dist/seeder/index.d.mts +77 -0
  111. package/dist/seeder/index.d.mts.map +1 -0
  112. package/dist/seeder/index.mjs +7 -0
  113. package/dist/seeder-DatfjJvU.mjs +132 -0
  114. package/dist/seeder-DatfjJvU.mjs.map +1 -0
  115. package/dist/smtp.provider-Cj7BUFbJ.mjs +78 -0
  116. package/dist/smtp.provider-Cj7BUFbJ.mjs.map +1 -0
  117. package/dist/storage/index.d.mts +743 -0
  118. package/dist/storage/index.d.mts.map +1 -0
  119. package/dist/storage/index.mjs +13 -0
  120. package/dist/storage-BtcfgibD.mjs +787 -0
  121. package/dist/storage-BtcfgibD.mjs.map +1 -0
  122. package/dist/stratal-Cm0Yy8v4.mjs +305 -0
  123. package/dist/stratal-Cm0Yy8v4.mjs.map +1 -0
  124. package/dist/{types.d.ts → types-Cu4jkeiH.d.mts} +5 -2
  125. package/dist/types-Cu4jkeiH.d.mts.map +1 -0
  126. package/dist/types-N84Ak6YT.d.mts +64 -0
  127. package/dist/types-N84Ak6YT.d.mts.map +1 -0
  128. package/dist/usage-generator-BTZDk5zx.mjs +75 -0
  129. package/dist/usage-generator-BTZDk5zx.mjs.map +1 -0
  130. package/dist/validation-Dbt-snjx.mjs +194 -0
  131. package/dist/validation-Dbt-snjx.mjs.map +1 -0
  132. package/dist/websocket/index.d.mts +168 -0
  133. package/dist/websocket/index.d.mts.map +1 -0
  134. package/dist/websocket/index.mjs +6 -0
  135. package/dist/workers/index.d.mts +90 -0
  136. package/dist/workers/index.d.mts.map +1 -0
  137. package/dist/workers/index.mjs +122 -0
  138. package/dist/workers/index.mjs.map +1 -0
  139. package/package.json +98 -28
  140. package/dist/application.d.ts +0 -101
  141. package/dist/application.d.ts.map +0 -1
  142. package/dist/application.js +0 -230
  143. package/dist/application.js.map +0 -1
  144. package/dist/cache/cache.module.d.ts +0 -14
  145. package/dist/cache/cache.module.d.ts.map +0 -1
  146. package/dist/cache/cache.module.js +0 -32
  147. package/dist/cache/cache.module.js.map +0 -1
  148. package/dist/cache/cache.tokens.d.ts +0 -5
  149. package/dist/cache/cache.tokens.d.ts.map +0 -1
  150. package/dist/cache/cache.tokens.js +0 -4
  151. package/dist/cache/cache.tokens.js.map +0 -1
  152. package/dist/cache/errors/cache-delete.error.d.ts +0 -11
  153. package/dist/cache/errors/cache-delete.error.d.ts.map +0 -1
  154. package/dist/cache/errors/cache-delete.error.js +0 -14
  155. package/dist/cache/errors/cache-delete.error.js.map +0 -1
  156. package/dist/cache/errors/cache-get.error.d.ts +0 -11
  157. package/dist/cache/errors/cache-get.error.d.ts.map +0 -1
  158. package/dist/cache/errors/cache-get.error.js +0 -14
  159. package/dist/cache/errors/cache-get.error.js.map +0 -1
  160. package/dist/cache/errors/cache-list.error.d.ts +0 -10
  161. package/dist/cache/errors/cache-list.error.d.ts.map +0 -1
  162. package/dist/cache/errors/cache-list.error.js +0 -13
  163. package/dist/cache/errors/cache-list.error.js.map +0 -1
  164. package/dist/cache/errors/cache-put.error.d.ts +0 -11
  165. package/dist/cache/errors/cache-put.error.d.ts.map +0 -1
  166. package/dist/cache/errors/cache-put.error.js +0 -14
  167. package/dist/cache/errors/cache-put.error.js.map +0 -1
  168. package/dist/cache/errors/index.d.ts +0 -5
  169. package/dist/cache/errors/index.d.ts.map +0 -1
  170. package/dist/cache/errors/index.js +0 -5
  171. package/dist/cache/errors/index.js.map +0 -1
  172. package/dist/cache/index.d.ts +0 -5
  173. package/dist/cache/index.d.ts.map +0 -1
  174. package/dist/cache/index.js +0 -5
  175. package/dist/cache/index.js.map +0 -1
  176. package/dist/cache/services/cache.service.d.ts +0 -152
  177. package/dist/cache/services/cache.service.d.ts.map +0 -1
  178. package/dist/cache/services/cache.service.js +0 -223
  179. package/dist/cache/services/cache.service.js.map +0 -1
  180. package/dist/cache/services/index.d.ts +0 -2
  181. package/dist/cache/services/index.d.ts.map +0 -1
  182. package/dist/cache/services/index.js +0 -2
  183. package/dist/cache/services/index.js.map +0 -1
  184. package/dist/config/config.module.d.ts +0 -79
  185. package/dist/config/config.module.d.ts.map +0 -1
  186. package/dist/config/config.module.js +0 -121
  187. package/dist/config/config.module.js.map +0 -1
  188. package/dist/config/config.tokens.d.ts +0 -4
  189. package/dist/config/config.tokens.d.ts.map +0 -1
  190. package/dist/config/config.tokens.js +0 -4
  191. package/dist/config/config.tokens.js.map +0 -1
  192. package/dist/config/config.types.d.ts +0 -68
  193. package/dist/config/config.types.d.ts.map +0 -1
  194. package/dist/config/config.types.js +0 -9
  195. package/dist/config/config.types.js.map +0 -1
  196. package/dist/config/errors/config-module-not-initialized.error.d.ts +0 -10
  197. package/dist/config/errors/config-module-not-initialized.error.d.ts.map +0 -1
  198. package/dist/config/errors/config-module-not-initialized.error.js +0 -12
  199. package/dist/config/errors/config-module-not-initialized.error.js.map +0 -1
  200. package/dist/config/errors/config-not-initialized.error.d.ts +0 -12
  201. package/dist/config/errors/config-not-initialized.error.d.ts.map +0 -1
  202. package/dist/config/errors/config-not-initialized.error.js +0 -15
  203. package/dist/config/errors/config-not-initialized.error.js.map +0 -1
  204. package/dist/config/errors/index.d.ts +0 -3
  205. package/dist/config/errors/index.d.ts.map +0 -1
  206. package/dist/config/errors/index.js +0 -3
  207. package/dist/config/errors/index.js.map +0 -1
  208. package/dist/config/index.d.ts +0 -7
  209. package/dist/config/index.d.ts.map +0 -1
  210. package/dist/config/index.js +0 -9
  211. package/dist/config/index.js.map +0 -1
  212. package/dist/config/register-as.d.ts +0 -62
  213. package/dist/config/register-as.d.ts.map +0 -1
  214. package/dist/config/register-as.js +0 -48
  215. package/dist/config/register-as.js.map +0 -1
  216. package/dist/config/services/config.service.d.ts +0 -59
  217. package/dist/config/services/config.service.d.ts.map +0 -1
  218. package/dist/config/services/config.service.js +0 -140
  219. package/dist/config/services/config.service.js.map +0 -1
  220. package/dist/cron/cron-job.d.ts +0 -54
  221. package/dist/cron/cron-job.d.ts.map +0 -1
  222. package/dist/cron/cron-job.js +0 -2
  223. package/dist/cron/cron-job.js.map +0 -1
  224. package/dist/cron/cron-manager.d.ts +0 -60
  225. package/dist/cron/cron-manager.d.ts.map +0 -1
  226. package/dist/cron/cron-manager.js +0 -120
  227. package/dist/cron/cron-manager.js.map +0 -1
  228. package/dist/cron/errors/cron-execution.error.d.ts +0 -10
  229. package/dist/cron/errors/cron-execution.error.d.ts.map +0 -1
  230. package/dist/cron/errors/cron-execution.error.js +0 -17
  231. package/dist/cron/errors/cron-execution.error.js.map +0 -1
  232. package/dist/cron/index.d.ts +0 -4
  233. package/dist/cron/index.d.ts.map +0 -1
  234. package/dist/cron/index.js +0 -3
  235. package/dist/cron/index.js.map +0 -1
  236. package/dist/di/conditional-binding-builder.d.ts +0 -93
  237. package/dist/di/conditional-binding-builder.d.ts.map +0 -1
  238. package/dist/di/conditional-binding-builder.js +0 -115
  239. package/dist/di/conditional-binding-builder.js.map +0 -1
  240. package/dist/di/container.d.ts +0 -131
  241. package/dist/di/container.d.ts.map +0 -1
  242. package/dist/di/container.js +0 -177
  243. package/dist/di/container.js.map +0 -1
  244. package/dist/di/decorators/inject-param.decorator.d.ts +0 -67
  245. package/dist/di/decorators/inject-param.decorator.d.ts.map +0 -1
  246. package/dist/di/decorators/inject-param.decorator.js +0 -53
  247. package/dist/di/decorators/inject-param.decorator.js.map +0 -1
  248. package/dist/di/decorators.d.ts +0 -57
  249. package/dist/di/decorators.d.ts.map +0 -1
  250. package/dist/di/decorators.js +0 -74
  251. package/dist/di/decorators.js.map +0 -1
  252. package/dist/di/errors/conditional-binding-fallback.error.d.ts +0 -16
  253. package/dist/di/errors/conditional-binding-fallback.error.d.ts.map +0 -1
  254. package/dist/di/errors/conditional-binding-fallback.error.js +0 -19
  255. package/dist/di/errors/conditional-binding-fallback.error.js.map +0 -1
  256. package/dist/di/errors/index.d.ts +0 -3
  257. package/dist/di/errors/index.d.ts.map +0 -1
  258. package/dist/di/errors/index.js +0 -3
  259. package/dist/di/errors/index.js.map +0 -1
  260. package/dist/di/errors/request-scope-operation-not-allowed.error.d.ts +0 -11
  261. package/dist/di/errors/request-scope-operation-not-allowed.error.d.ts.map +0 -1
  262. package/dist/di/errors/request-scope-operation-not-allowed.error.js +0 -14
  263. package/dist/di/errors/request-scope-operation-not-allowed.error.js.map +0 -1
  264. package/dist/di/index.d.ts +0 -12
  265. package/dist/di/index.d.ts.map +0 -1
  266. package/dist/di/index.js +0 -10
  267. package/dist/di/index.js.map +0 -1
  268. package/dist/di/tokens.d.ts +0 -26
  269. package/dist/di/tokens.d.ts.map +0 -1
  270. package/dist/di/tokens.js +0 -29
  271. package/dist/di/tokens.js.map +0 -1
  272. package/dist/di/types.d.ts +0 -56
  273. package/dist/di/types.d.ts.map +0 -1
  274. package/dist/di/types.js +0 -34
  275. package/dist/di/types.js.map +0 -1
  276. package/dist/email/consumers/email.consumer.d.ts +0 -43
  277. package/dist/email/consumers/email.consumer.d.ts.map +0 -1
  278. package/dist/email/consumers/email.consumer.js +0 -129
  279. package/dist/email/consumers/email.consumer.js.map +0 -1
  280. package/dist/email/consumers/index.d.ts +0 -2
  281. package/dist/email/consumers/index.d.ts.map +0 -1
  282. package/dist/email/consumers/index.js +0 -2
  283. package/dist/email/consumers/index.js.map +0 -1
  284. package/dist/email/contracts/email-attachment.d.ts +0 -61
  285. package/dist/email/contracts/email-attachment.d.ts.map +0 -1
  286. package/dist/email/contracts/email-attachment.js +0 -58
  287. package/dist/email/contracts/email-attachment.js.map +0 -1
  288. package/dist/email/contracts/email-message.contract.d.ts +0 -58
  289. package/dist/email/contracts/email-message.contract.d.ts.map +0 -1
  290. package/dist/email/contracts/email-message.contract.js +0 -62
  291. package/dist/email/contracts/email-message.contract.js.map +0 -1
  292. package/dist/email/contracts/index.d.ts +0 -4
  293. package/dist/email/contracts/index.d.ts.map +0 -1
  294. package/dist/email/contracts/index.js +0 -4
  295. package/dist/email/contracts/index.js.map +0 -1
  296. package/dist/email/contracts/send-email.input.d.ts +0 -72
  297. package/dist/email/contracts/send-email.input.d.ts.map +0 -1
  298. package/dist/email/contracts/send-email.input.js +0 -28
  299. package/dist/email/contracts/send-email.input.js.map +0 -1
  300. package/dist/email/email.module.d.ts +0 -122
  301. package/dist/email/email.module.d.ts.map +0 -1
  302. package/dist/email/email.module.js +0 -129
  303. package/dist/email/email.module.js.map +0 -1
  304. package/dist/email/email.tokens.d.ts +0 -33
  305. package/dist/email/email.tokens.d.ts.map +0 -1
  306. package/dist/email/email.tokens.js +0 -33
  307. package/dist/email/email.tokens.js.map +0 -1
  308. package/dist/email/errors/email-provider-not-supported.error.d.ts +0 -13
  309. package/dist/email/errors/email-provider-not-supported.error.d.ts.map +0 -1
  310. package/dist/email/errors/email-provider-not-supported.error.js +0 -15
  311. package/dist/email/errors/email-provider-not-supported.error.js.map +0 -1
  312. package/dist/email/errors/email-resend-api-failed.error.d.ts +0 -13
  313. package/dist/email/errors/email-resend-api-failed.error.d.ts.map +0 -1
  314. package/dist/email/errors/email-resend-api-failed.error.js +0 -15
  315. package/dist/email/errors/email-resend-api-failed.error.js.map +0 -1
  316. package/dist/email/errors/email-smtp-connection-failed.error.d.ts +0 -13
  317. package/dist/email/errors/email-smtp-connection-failed.error.d.ts.map +0 -1
  318. package/dist/email/errors/email-smtp-connection-failed.error.js +0 -15
  319. package/dist/email/errors/email-smtp-connection-failed.error.js.map +0 -1
  320. package/dist/email/errors/index.d.ts +0 -7
  321. package/dist/email/errors/index.d.ts.map +0 -1
  322. package/dist/email/errors/index.js +0 -7
  323. package/dist/email/errors/index.js.map +0 -1
  324. package/dist/email/errors/resend-api-key-missing.error.d.ts +0 -13
  325. package/dist/email/errors/resend-api-key-missing.error.d.ts.map +0 -1
  326. package/dist/email/errors/resend-api-key-missing.error.js +0 -15
  327. package/dist/email/errors/resend-api-key-missing.error.js.map +0 -1
  328. package/dist/email/errors/smtp-configuration-missing.error.d.ts +0 -13
  329. package/dist/email/errors/smtp-configuration-missing.error.d.ts.map +0 -1
  330. package/dist/email/errors/smtp-configuration-missing.error.js +0 -15
  331. package/dist/email/errors/smtp-configuration-missing.error.js.map +0 -1
  332. package/dist/email/errors/smtp-host-missing.error.d.ts +0 -13
  333. package/dist/email/errors/smtp-host-missing.error.d.ts.map +0 -1
  334. package/dist/email/errors/smtp-host-missing.error.js +0 -15
  335. package/dist/email/errors/smtp-host-missing.error.js.map +0 -1
  336. package/dist/email/index.d.ts +0 -6
  337. package/dist/email/index.d.ts.map +0 -1
  338. package/dist/email/index.js +0 -8
  339. package/dist/email/index.js.map +0 -1
  340. package/dist/email/providers/base-email.provider.d.ts +0 -22
  341. package/dist/email/providers/base-email.provider.d.ts.map +0 -1
  342. package/dist/email/providers/base-email.provider.js +0 -43
  343. package/dist/email/providers/base-email.provider.js.map +0 -1
  344. package/dist/email/providers/email-provider.interface.d.ts +0 -66
  345. package/dist/email/providers/email-provider.interface.d.ts.map +0 -1
  346. package/dist/email/providers/email-provider.interface.js +0 -2
  347. package/dist/email/providers/email-provider.interface.js.map +0 -1
  348. package/dist/email/providers/index.d.ts +0 -5
  349. package/dist/email/providers/index.d.ts.map +0 -1
  350. package/dist/email/providers/index.js +0 -5
  351. package/dist/email/providers/index.js.map +0 -1
  352. package/dist/email/providers/resend.provider.d.ts +0 -26
  353. package/dist/email/providers/resend.provider.d.ts.map +0 -1
  354. package/dist/email/providers/resend.provider.js +0 -84
  355. package/dist/email/providers/resend.provider.js.map +0 -1
  356. package/dist/email/providers/smtp.provider.d.ts +0 -25
  357. package/dist/email/providers/smtp.provider.d.ts.map +0 -1
  358. package/dist/email/providers/smtp.provider.js +0 -86
  359. package/dist/email/providers/smtp.provider.js.map +0 -1
  360. package/dist/email/services/email-provider-factory.d.ts +0 -24
  361. package/dist/email/services/email-provider-factory.d.ts.map +0 -1
  362. package/dist/email/services/email-provider-factory.js +0 -59
  363. package/dist/email/services/email-provider-factory.js.map +0 -1
  364. package/dist/email/services/email.service.d.ts +0 -51
  365. package/dist/email/services/email.service.d.ts.map +0 -1
  366. package/dist/email/services/email.service.js +0 -75
  367. package/dist/email/services/email.service.js.map +0 -1
  368. package/dist/email/services/index.d.ts +0 -3
  369. package/dist/email/services/index.d.ts.map +0 -1
  370. package/dist/email/services/index.js +0 -3
  371. package/dist/email/services/index.js.map +0 -1
  372. package/dist/env.d.ts +0 -21
  373. package/dist/env.d.ts.map +0 -1
  374. package/dist/env.js +0 -2
  375. package/dist/env.js.map +0 -1
  376. package/dist/errors/application-error.d.ts +0 -87
  377. package/dist/errors/application-error.d.ts.map +0 -1
  378. package/dist/errors/application-error.js +0 -130
  379. package/dist/errors/application-error.js.map +0 -1
  380. package/dist/errors/error-codes.d.ts +0 -202
  381. package/dist/errors/error-codes.d.ts.map +0 -1
  382. package/dist/errors/error-codes.js +0 -184
  383. package/dist/errors/error-codes.js.map +0 -1
  384. package/dist/errors/error-response.d.ts +0 -32
  385. package/dist/errors/error-response.d.ts.map +0 -1
  386. package/dist/errors/error-response.js +0 -14
  387. package/dist/errors/error-response.js.map +0 -1
  388. package/dist/errors/get-http-status.d.ts +0 -12
  389. package/dist/errors/get-http-status.d.ts.map +0 -1
  390. package/dist/errors/get-http-status.js +0 -62
  391. package/dist/errors/get-http-status.js.map +0 -1
  392. package/dist/errors/global-error-handler.d.ts +0 -81
  393. package/dist/errors/global-error-handler.d.ts.map +0 -1
  394. package/dist/errors/global-error-handler.js +0 -176
  395. package/dist/errors/global-error-handler.js.map +0 -1
  396. package/dist/errors/index.d.ts +0 -10
  397. package/dist/errors/index.d.ts.map +0 -1
  398. package/dist/errors/index.js +0 -10
  399. package/dist/errors/index.js.map +0 -1
  400. package/dist/errors/internal-error.d.ts +0 -16
  401. package/dist/errors/internal-error.d.ts.map +0 -1
  402. package/dist/errors/internal-error.js +0 -19
  403. package/dist/errors/internal-error.js.map +0 -1
  404. package/dist/errors/is-application-error.d.ts +0 -9
  405. package/dist/errors/is-application-error.d.ts.map +0 -1
  406. package/dist/errors/is-application-error.js +0 -11
  407. package/dist/errors/is-application-error.js.map +0 -1
  408. package/dist/errors/request-container-not-initialized.error.d.ts +0 -12
  409. package/dist/errors/request-container-not-initialized.error.d.ts.map +0 -1
  410. package/dist/errors/request-container-not-initialized.error.js +0 -15
  411. package/dist/errors/request-container-not-initialized.error.js.map +0 -1
  412. package/dist/errors/stratal-not-initialized.error.d.ts +0 -11
  413. package/dist/errors/stratal-not-initialized.error.d.ts.map +0 -1
  414. package/dist/errors/stratal-not-initialized.error.js +0 -14
  415. package/dist/errors/stratal-not-initialized.error.js.map +0 -1
  416. package/dist/events/constants.d.ts +0 -11
  417. package/dist/events/constants.d.ts.map +0 -1
  418. package/dist/events/constants.js +0 -11
  419. package/dist/events/constants.js.map +0 -1
  420. package/dist/events/decorators/index.d.ts +0 -3
  421. package/dist/events/decorators/index.d.ts.map +0 -1
  422. package/dist/events/decorators/index.js +0 -3
  423. package/dist/events/decorators/index.js.map +0 -1
  424. package/dist/events/decorators/listener.decorator.d.ts +0 -24
  425. package/dist/events/decorators/listener.decorator.d.ts.map +0 -1
  426. package/dist/events/decorators/listener.decorator.js +0 -33
  427. package/dist/events/decorators/listener.decorator.js.map +0 -1
  428. package/dist/events/decorators/on.decorator.d.ts +0 -28
  429. package/dist/events/decorators/on.decorator.d.ts.map +0 -1
  430. package/dist/events/decorators/on.decorator.js +0 -41
  431. package/dist/events/decorators/on.decorator.js.map +0 -1
  432. package/dist/events/event-registry.d.ts +0 -26
  433. package/dist/events/event-registry.d.ts.map +0 -1
  434. package/dist/events/event-registry.js +0 -156
  435. package/dist/events/event-registry.js.map +0 -1
  436. package/dist/events/index.d.ts +0 -5
  437. package/dist/events/index.d.ts.map +0 -1
  438. package/dist/events/index.js +0 -4
  439. package/dist/events/index.js.map +0 -1
  440. package/dist/events/types.d.ts +0 -116
  441. package/dist/events/types.d.ts.map +0 -1
  442. package/dist/events/types.js +0 -23
  443. package/dist/events/types.js.map +0 -1
  444. package/dist/execution-context.d.ts +0 -4
  445. package/dist/execution-context.d.ts.map +0 -1
  446. package/dist/execution-context.js +0 -2
  447. package/dist/execution-context.js.map +0 -1
  448. package/dist/guards/guard-execution.service.d.ts +0 -37
  449. package/dist/guards/guard-execution.service.d.ts.map +0 -1
  450. package/dist/guards/guard-execution.service.js +0 -74
  451. package/dist/guards/guard-execution.service.js.map +0 -1
  452. package/dist/guards/index.d.ts +0 -12
  453. package/dist/guards/index.d.ts.map +0 -1
  454. package/dist/guards/index.js +0 -12
  455. package/dist/guards/index.js.map +0 -1
  456. package/dist/guards/types.d.ts +0 -60
  457. package/dist/guards/types.d.ts.map +0 -1
  458. package/dist/guards/types.js +0 -5
  459. package/dist/guards/types.js.map +0 -1
  460. package/dist/guards/use-guards.decorator.d.ts +0 -73
  461. package/dist/guards/use-guards.decorator.d.ts.map +0 -1
  462. package/dist/guards/use-guards.decorator.js +0 -89
  463. package/dist/guards/use-guards.decorator.js.map +0 -1
  464. package/dist/i18n/errors/index.d.ts +0 -6
  465. package/dist/i18n/errors/index.d.ts.map +0 -1
  466. package/dist/i18n/errors/index.js +0 -6
  467. package/dist/i18n/errors/index.js.map +0 -1
  468. package/dist/i18n/errors/locale-not-supported.error.d.ts +0 -12
  469. package/dist/i18n/errors/locale-not-supported.error.d.ts.map +0 -1
  470. package/dist/i18n/errors/locale-not-supported.error.js +0 -15
  471. package/dist/i18n/errors/locale-not-supported.error.js.map +0 -1
  472. package/dist/i18n/errors/translation-missing.error.d.ts +0 -12
  473. package/dist/i18n/errors/translation-missing.error.d.ts.map +0 -1
  474. package/dist/i18n/errors/translation-missing.error.js +0 -14
  475. package/dist/i18n/errors/translation-missing.error.js.map +0 -1
  476. package/dist/i18n/i18n.module.d.ts +0 -60
  477. package/dist/i18n/i18n.module.d.ts.map +0 -1
  478. package/dist/i18n/i18n.module.js +0 -103
  479. package/dist/i18n/i18n.module.js.map +0 -1
  480. package/dist/i18n/i18n.options.d.ts +0 -60
  481. package/dist/i18n/i18n.options.d.ts.map +0 -1
  482. package/dist/i18n/i18n.options.js +0 -18
  483. package/dist/i18n/i18n.options.js.map +0 -1
  484. package/dist/i18n/i18n.tokens.d.ts +0 -13
  485. package/dist/i18n/i18n.tokens.d.ts.map +0 -1
  486. package/dist/i18n/i18n.tokens.js +0 -13
  487. package/dist/i18n/i18n.tokens.js.map +0 -1
  488. package/dist/i18n/i18n.types.d.ts +0 -78
  489. package/dist/i18n/i18n.types.d.ts.map +0 -1
  490. package/dist/i18n/i18n.types.js +0 -8
  491. package/dist/i18n/i18n.types.js.map +0 -1
  492. package/dist/i18n/index.d.ts +0 -12
  493. package/dist/i18n/index.d.ts.map +0 -1
  494. package/dist/i18n/index.js +0 -12
  495. package/dist/i18n/index.js.map +0 -1
  496. package/dist/i18n/messages/en/common.d.ts +0 -19
  497. package/dist/i18n/messages/en/common.d.ts.map +0 -1
  498. package/dist/i18n/messages/en/common.js +0 -19
  499. package/dist/i18n/messages/en/common.js.map +0 -1
  500. package/dist/i18n/messages/en/emails.d.ts +0 -12
  501. package/dist/i18n/messages/en/emails.d.ts.map +0 -1
  502. package/dist/i18n/messages/en/emails.js +0 -12
  503. package/dist/i18n/messages/en/emails.js.map +0 -1
  504. package/dist/i18n/messages/en/errors.d.ts +0 -113
  505. package/dist/i18n/messages/en/errors.d.ts.map +0 -1
  506. package/dist/i18n/messages/en/errors.js +0 -130
  507. package/dist/i18n/messages/en/errors.js.map +0 -1
  508. package/dist/i18n/messages/en/index.d.ts +0 -13
  509. package/dist/i18n/messages/en/index.d.ts.map +0 -1
  510. package/dist/i18n/messages/en/index.js +0 -13
  511. package/dist/i18n/messages/en/index.js.map +0 -1
  512. package/dist/i18n/messages/en/validation.d.ts +0 -38
  513. package/dist/i18n/messages/en/validation.d.ts.map +0 -1
  514. package/dist/i18n/messages/en/validation.js +0 -38
  515. package/dist/i18n/messages/en/validation.js.map +0 -1
  516. package/dist/i18n/messages/en/zod.d.ts +0 -125
  517. package/dist/i18n/messages/en/zod.d.ts.map +0 -1
  518. package/dist/i18n/messages/en/zod.js +0 -132
  519. package/dist/i18n/messages/en/zod.js.map +0 -1
  520. package/dist/i18n/messages/index.d.ts +0 -27
  521. package/dist/i18n/messages/index.d.ts.map +0 -1
  522. package/dist/i18n/messages/index.js +0 -25
  523. package/dist/i18n/messages/index.js.map +0 -1
  524. package/dist/i18n/middleware/i18n-context.middleware.d.ts +0 -15
  525. package/dist/i18n/middleware/i18n-context.middleware.d.ts.map +0 -1
  526. package/dist/i18n/middleware/i18n-context.middleware.js +0 -42
  527. package/dist/i18n/middleware/i18n-context.middleware.js.map +0 -1
  528. package/dist/i18n/middleware/index.d.ts +0 -6
  529. package/dist/i18n/middleware/index.d.ts.map +0 -1
  530. package/dist/i18n/middleware/index.js +0 -6
  531. package/dist/i18n/middleware/index.js.map +0 -1
  532. package/dist/i18n/middleware/locale-extraction.middleware.d.ts +0 -19
  533. package/dist/i18n/middleware/locale-extraction.middleware.d.ts.map +0 -1
  534. package/dist/i18n/middleware/locale-extraction.middleware.js +0 -49
  535. package/dist/i18n/middleware/locale-extraction.middleware.js.map +0 -1
  536. package/dist/i18n/services/i18n.service.d.ts +0 -50
  537. package/dist/i18n/services/i18n.service.d.ts.map +0 -1
  538. package/dist/i18n/services/i18n.service.js +0 -82
  539. package/dist/i18n/services/i18n.service.js.map +0 -1
  540. package/dist/i18n/services/message-loader.service.d.ts +0 -65
  541. package/dist/i18n/services/message-loader.service.d.ts.map +0 -1
  542. package/dist/i18n/services/message-loader.service.js +0 -175
  543. package/dist/i18n/services/message-loader.service.js.map +0 -1
  544. package/dist/i18n/setup.d.ts +0 -27
  545. package/dist/i18n/setup.d.ts.map +0 -1
  546. package/dist/i18n/setup.js +0 -40
  547. package/dist/i18n/setup.js.map +0 -1
  548. package/dist/i18n/validation/index.d.ts +0 -9
  549. package/dist/i18n/validation/index.d.ts.map +0 -1
  550. package/dist/i18n/validation/index.js +0 -10
  551. package/dist/i18n/validation/index.js.map +0 -1
  552. package/dist/i18n/validation/validation.context.d.ts +0 -34
  553. package/dist/i18n/validation/validation.context.d.ts.map +0 -1
  554. package/dist/i18n/validation/validation.context.js +0 -42
  555. package/dist/i18n/validation/validation.context.js.map +0 -1
  556. package/dist/i18n/validation/validation.error-map.d.ts +0 -8
  557. package/dist/i18n/validation/validation.error-map.d.ts.map +0 -1
  558. package/dist/i18n/validation/validation.error-map.js +0 -158
  559. package/dist/i18n/validation/validation.error-map.js.map +0 -1
  560. package/dist/i18n/validation/validation.types.d.ts +0 -44
  561. package/dist/i18n/validation/validation.types.d.ts.map +0 -1
  562. package/dist/i18n/validation/validation.types.js +0 -2
  563. package/dist/i18n/validation/validation.types.js.map +0 -1
  564. package/dist/i18n/validation/with-i18n.d.ts +0 -29
  565. package/dist/i18n/validation/with-i18n.d.ts.map +0 -1
  566. package/dist/i18n/validation/with-i18n.js +0 -40
  567. package/dist/i18n/validation/with-i18n.js.map +0 -1
  568. package/dist/index.d.ts +0 -6
  569. package/dist/index.d.ts.map +0 -1
  570. package/dist/index.js +0 -6
  571. package/dist/index.js.map +0 -1
  572. package/dist/logger/contracts/index.d.ts +0 -4
  573. package/dist/logger/contracts/index.d.ts.map +0 -1
  574. package/dist/logger/contracts/index.js +0 -4
  575. package/dist/logger/contracts/index.js.map +0 -1
  576. package/dist/logger/contracts/log-context.d.ts +0 -14
  577. package/dist/logger/contracts/log-context.d.ts.map +0 -1
  578. package/dist/logger/contracts/log-context.js +0 -2
  579. package/dist/logger/contracts/log-context.js.map +0 -1
  580. package/dist/logger/contracts/log-entry.d.ts +0 -17
  581. package/dist/logger/contracts/log-entry.d.ts.map +0 -1
  582. package/dist/logger/contracts/log-entry.js +0 -2
  583. package/dist/logger/contracts/log-entry.js.map +0 -1
  584. package/dist/logger/contracts/log-level.d.ts +0 -16
  585. package/dist/logger/contracts/log-level.d.ts.map +0 -1
  586. package/dist/logger/contracts/log-level.js +0 -22
  587. package/dist/logger/contracts/log-level.js.map +0 -1
  588. package/dist/logger/formatters/formatter.interface.d.ts +0 -14
  589. package/dist/logger/formatters/formatter.interface.d.ts.map +0 -1
  590. package/dist/logger/formatters/formatter.interface.js +0 -2
  591. package/dist/logger/formatters/formatter.interface.js.map +0 -1
  592. package/dist/logger/formatters/index.d.ts +0 -4
  593. package/dist/logger/formatters/index.d.ts.map +0 -1
  594. package/dist/logger/formatters/index.js +0 -4
  595. package/dist/logger/formatters/index.js.map +0 -1
  596. package/dist/logger/formatters/json-formatter.d.ts +0 -21
  597. package/dist/logger/formatters/json-formatter.d.ts.map +0 -1
  598. package/dist/logger/formatters/json-formatter.js +0 -27
  599. package/dist/logger/formatters/json-formatter.js.map +0 -1
  600. package/dist/logger/formatters/pretty-formatter.d.ts +0 -18
  601. package/dist/logger/formatters/pretty-formatter.d.ts.map +0 -1
  602. package/dist/logger/formatters/pretty-formatter.js +0 -41
  603. package/dist/logger/formatters/pretty-formatter.js.map +0 -1
  604. package/dist/logger/index.d.ts +0 -7
  605. package/dist/logger/index.d.ts.map +0 -1
  606. package/dist/logger/index.js +0 -10
  607. package/dist/logger/index.js.map +0 -1
  608. package/dist/logger/logger.tokens.d.ts +0 -29
  609. package/dist/logger/logger.tokens.d.ts.map +0 -1
  610. package/dist/logger/logger.tokens.js +0 -29
  611. package/dist/logger/logger.tokens.js.map +0 -1
  612. package/dist/logger/services/index.d.ts +0 -2
  613. package/dist/logger/services/index.d.ts.map +0 -1
  614. package/dist/logger/services/index.js +0 -2
  615. package/dist/logger/services/index.js.map +0 -1
  616. package/dist/logger/services/logger.service.d.ts +0 -73
  617. package/dist/logger/services/logger.service.d.ts.map +0 -1
  618. package/dist/logger/services/logger.service.js +0 -156
  619. package/dist/logger/services/logger.service.js.map +0 -1
  620. package/dist/logger/transports/base-transport.d.ts +0 -24
  621. package/dist/logger/transports/base-transport.d.ts.map +0 -1
  622. package/dist/logger/transports/base-transport.js +0 -23
  623. package/dist/logger/transports/base-transport.js.map +0 -1
  624. package/dist/logger/transports/console-transport.d.ts +0 -19
  625. package/dist/logger/transports/console-transport.d.ts.map +0 -1
  626. package/dist/logger/transports/console-transport.js +0 -53
  627. package/dist/logger/transports/console-transport.js.map +0 -1
  628. package/dist/logger/transports/index.d.ts +0 -4
  629. package/dist/logger/transports/index.d.ts.map +0 -1
  630. package/dist/logger/transports/index.js +0 -4
  631. package/dist/logger/transports/index.js.map +0 -1
  632. package/dist/logger/transports/transport.interface.d.ts +0 -21
  633. package/dist/logger/transports/transport.interface.d.ts.map +0 -1
  634. package/dist/logger/transports/transport.interface.js +0 -2
  635. package/dist/logger/transports/transport.interface.js.map +0 -1
  636. package/dist/middleware/index.d.ts +0 -24
  637. package/dist/middleware/index.d.ts.map +0 -1
  638. package/dist/middleware/index.js +0 -23
  639. package/dist/middleware/index.js.map +0 -1
  640. package/dist/middleware/middleware-configuration.service.d.ts +0 -70
  641. package/dist/middleware/middleware-configuration.service.d.ts.map +0 -1
  642. package/dist/middleware/middleware-configuration.service.js +0 -239
  643. package/dist/middleware/middleware-configuration.service.js.map +0 -1
  644. package/dist/middleware/middleware-consumer.d.ts +0 -57
  645. package/dist/middleware/middleware-consumer.d.ts.map +0 -1
  646. package/dist/middleware/middleware-consumer.js +0 -130
  647. package/dist/middleware/middleware-consumer.js.map +0 -1
  648. package/dist/middleware/types.d.ts +0 -96
  649. package/dist/middleware/types.d.ts.map +0 -1
  650. package/dist/middleware/types.js +0 -2
  651. package/dist/middleware/types.js.map +0 -1
  652. package/dist/module/errors/index.d.ts +0 -5
  653. package/dist/module/errors/index.d.ts.map +0 -1
  654. package/dist/module/errors/index.js +0 -5
  655. package/dist/module/errors/index.js.map +0 -1
  656. package/dist/module/errors/invalid-module-provider.error.d.ts +0 -11
  657. package/dist/module/errors/invalid-module-provider.error.d.ts.map +0 -1
  658. package/dist/module/errors/invalid-module-provider.error.js +0 -13
  659. package/dist/module/errors/invalid-module-provider.error.js.map +0 -1
  660. package/dist/module/errors/module-already-registered.error.d.ts +0 -11
  661. package/dist/module/errors/module-already-registered.error.d.ts.map +0 -1
  662. package/dist/module/errors/module-already-registered.error.js +0 -13
  663. package/dist/module/errors/module-already-registered.error.js.map +0 -1
  664. package/dist/module/errors/module-circular-dependency.error.d.ts +0 -11
  665. package/dist/module/errors/module-circular-dependency.error.d.ts.map +0 -1
  666. package/dist/module/errors/module-circular-dependency.error.js +0 -14
  667. package/dist/module/errors/module-circular-dependency.error.js.map +0 -1
  668. package/dist/module/errors/module-dependency-not-found.error.d.ts +0 -11
  669. package/dist/module/errors/module-dependency-not-found.error.d.ts.map +0 -1
  670. package/dist/module/errors/module-dependency-not-found.error.js +0 -13
  671. package/dist/module/errors/module-dependency-not-found.error.js.map +0 -1
  672. package/dist/module/index.d.ts +0 -4
  673. package/dist/module/index.d.ts.map +0 -1
  674. package/dist/module/index.js +0 -7
  675. package/dist/module/index.js.map +0 -1
  676. package/dist/module/module-registry.d.ts +0 -110
  677. package/dist/module/module-registry.d.ts.map +0 -1
  678. package/dist/module/module-registry.js +0 -299
  679. package/dist/module/module-registry.js.map +0 -1
  680. package/dist/module/module.decorator.d.ts +0 -34
  681. package/dist/module/module.decorator.d.ts.map +0 -1
  682. package/dist/module/module.decorator.js +0 -107
  683. package/dist/module/module.decorator.js.map +0 -1
  684. package/dist/module/types.d.ts +0 -240
  685. package/dist/module/types.d.ts.map +0 -1
  686. package/dist/module/types.js +0 -8
  687. package/dist/module/types.js.map +0 -1
  688. package/dist/openapi/index.d.ts +0 -5
  689. package/dist/openapi/index.d.ts.map +0 -1
  690. package/dist/openapi/index.js +0 -7
  691. package/dist/openapi/index.js.map +0 -1
  692. package/dist/openapi/openapi.module.d.ts +0 -52
  693. package/dist/openapi/openapi.module.d.ts.map +0 -1
  694. package/dist/openapi/openapi.module.js +0 -109
  695. package/dist/openapi/openapi.module.js.map +0 -1
  696. package/dist/openapi/openapi.tokens.d.ts +0 -12
  697. package/dist/openapi/openapi.tokens.d.ts.map +0 -1
  698. package/dist/openapi/openapi.tokens.js +0 -12
  699. package/dist/openapi/openapi.tokens.js.map +0 -1
  700. package/dist/openapi/services/index.d.ts +0 -3
  701. package/dist/openapi/services/index.d.ts.map +0 -1
  702. package/dist/openapi/services/index.js +0 -3
  703. package/dist/openapi/services/index.js.map +0 -1
  704. package/dist/openapi/services/openapi-config.service.d.ts +0 -43
  705. package/dist/openapi/services/openapi-config.service.d.ts.map +0 -1
  706. package/dist/openapi/services/openapi-config.service.js +0 -98
  707. package/dist/openapi/services/openapi-config.service.js.map +0 -1
  708. package/dist/openapi/services/openapi.service.d.ts +0 -52
  709. package/dist/openapi/services/openapi.service.d.ts.map +0 -1
  710. package/dist/openapi/services/openapi.service.js +0 -231
  711. package/dist/openapi/services/openapi.service.js.map +0 -1
  712. package/dist/openapi/types.d.ts +0 -84
  713. package/dist/openapi/types.d.ts.map +0 -1
  714. package/dist/openapi/types.js +0 -2
  715. package/dist/openapi/types.js.map +0 -1
  716. package/dist/queue/consumer-registry.d.ts +0 -77
  717. package/dist/queue/consumer-registry.d.ts.map +0 -1
  718. package/dist/queue/consumer-registry.js +0 -110
  719. package/dist/queue/consumer-registry.js.map +0 -1
  720. package/dist/queue/decorators/index.d.ts +0 -2
  721. package/dist/queue/decorators/index.d.ts.map +0 -1
  722. package/dist/queue/decorators/index.js +0 -2
  723. package/dist/queue/decorators/index.js.map +0 -1
  724. package/dist/queue/decorators/inject-queue.decorator.d.ts +0 -31
  725. package/dist/queue/decorators/inject-queue.decorator.d.ts.map +0 -1
  726. package/dist/queue/decorators/inject-queue.decorator.js +0 -33
  727. package/dist/queue/decorators/inject-queue.decorator.js.map +0 -1
  728. package/dist/queue/errors/index.d.ts +0 -3
  729. package/dist/queue/errors/index.d.ts.map +0 -1
  730. package/dist/queue/errors/index.js +0 -3
  731. package/dist/queue/errors/index.js.map +0 -1
  732. package/dist/queue/errors/queue-binding-not-found.error.d.ts +0 -12
  733. package/dist/queue/errors/queue-binding-not-found.error.d.ts.map +0 -1
  734. package/dist/queue/errors/queue-binding-not-found.error.js +0 -14
  735. package/dist/queue/errors/queue-binding-not-found.error.js.map +0 -1
  736. package/dist/queue/errors/queue-provider-not-supported.error.d.ts +0 -13
  737. package/dist/queue/errors/queue-provider-not-supported.error.d.ts.map +0 -1
  738. package/dist/queue/errors/queue-provider-not-supported.error.js +0 -15
  739. package/dist/queue/errors/queue-provider-not-supported.error.js.map +0 -1
  740. package/dist/queue/index.d.ts +0 -14
  741. package/dist/queue/index.d.ts.map +0 -1
  742. package/dist/queue/index.js +0 -21
  743. package/dist/queue/index.js.map +0 -1
  744. package/dist/queue/providers/cloudflare-queue.provider.d.ts +0 -42
  745. package/dist/queue/providers/cloudflare-queue.provider.d.ts.map +0 -1
  746. package/dist/queue/providers/cloudflare-queue.provider.js +0 -73
  747. package/dist/queue/providers/cloudflare-queue.provider.js.map +0 -1
  748. package/dist/queue/providers/index.d.ts +0 -4
  749. package/dist/queue/providers/index.d.ts.map +0 -1
  750. package/dist/queue/providers/index.js +0 -4
  751. package/dist/queue/providers/index.js.map +0 -1
  752. package/dist/queue/providers/queue-provider.interface.d.ts +0 -34
  753. package/dist/queue/providers/queue-provider.interface.d.ts.map +0 -1
  754. package/dist/queue/providers/queue-provider.interface.js +0 -2
  755. package/dist/queue/providers/queue-provider.interface.js.map +0 -1
  756. package/dist/queue/providers/sync-queue.provider.d.ts +0 -48
  757. package/dist/queue/providers/sync-queue.provider.d.ts.map +0 -1
  758. package/dist/queue/providers/sync-queue.provider.js +0 -89
  759. package/dist/queue/providers/sync-queue.provider.js.map +0 -1
  760. package/dist/queue/queue-consumer.d.ts +0 -62
  761. package/dist/queue/queue-consumer.d.ts.map +0 -1
  762. package/dist/queue/queue-consumer.js +0 -2
  763. package/dist/queue/queue-consumer.js.map +0 -1
  764. package/dist/queue/queue-manager.d.ts +0 -36
  765. package/dist/queue/queue-manager.d.ts.map +0 -1
  766. package/dist/queue/queue-manager.js +0 -80
  767. package/dist/queue/queue-manager.js.map +0 -1
  768. package/dist/queue/queue-name.d.ts +0 -50
  769. package/dist/queue/queue-name.d.ts.map +0 -1
  770. package/dist/queue/queue-name.js +0 -21
  771. package/dist/queue/queue-name.js.map +0 -1
  772. package/dist/queue/queue-registry.d.ts +0 -46
  773. package/dist/queue/queue-registry.d.ts.map +0 -1
  774. package/dist/queue/queue-registry.js +0 -78
  775. package/dist/queue/queue-registry.js.map +0 -1
  776. package/dist/queue/queue-sender.d.ts +0 -38
  777. package/dist/queue/queue-sender.d.ts.map +0 -1
  778. package/dist/queue/queue-sender.interface.d.ts +0 -46
  779. package/dist/queue/queue-sender.interface.d.ts.map +0 -1
  780. package/dist/queue/queue-sender.interface.js +0 -2
  781. package/dist/queue/queue-sender.interface.js.map +0 -1
  782. package/dist/queue/queue-sender.js +0 -54
  783. package/dist/queue/queue-sender.js.map +0 -1
  784. package/dist/queue/queue.module.d.ts +0 -80
  785. package/dist/queue/queue.module.d.ts.map +0 -1
  786. package/dist/queue/queue.module.js +0 -113
  787. package/dist/queue/queue.module.js.map +0 -1
  788. package/dist/queue/queue.tokens.d.ts +0 -7
  789. package/dist/queue/queue.tokens.d.ts.map +0 -1
  790. package/dist/queue/queue.tokens.js +0 -6
  791. package/dist/queue/queue.tokens.js.map +0 -1
  792. package/dist/queue/services/index.d.ts +0 -2
  793. package/dist/queue/services/index.d.ts.map +0 -1
  794. package/dist/queue/services/index.js +0 -2
  795. package/dist/queue/services/index.js.map +0 -1
  796. package/dist/queue/services/queue-provider-factory.d.ts +0 -41
  797. package/dist/queue/services/queue-provider-factory.d.ts.map +0 -1
  798. package/dist/queue/services/queue-provider-factory.js +0 -78
  799. package/dist/queue/services/queue-provider-factory.js.map +0 -1
  800. package/dist/router/constants.d.ts +0 -87
  801. package/dist/router/constants.d.ts.map +0 -1
  802. package/dist/router/constants.js +0 -69
  803. package/dist/router/constants.js.map +0 -1
  804. package/dist/router/controller.d.ts +0 -56
  805. package/dist/router/controller.d.ts.map +0 -1
  806. package/dist/router/controller.js +0 -2
  807. package/dist/router/controller.js.map +0 -1
  808. package/dist/router/decorators/controller.decorator.d.ts +0 -46
  809. package/dist/router/decorators/controller.decorator.d.ts.map +0 -1
  810. package/dist/router/decorators/controller.decorator.js +0 -70
  811. package/dist/router/decorators/controller.decorator.js.map +0 -1
  812. package/dist/router/decorators/http-method.decorator.d.ts +0 -83
  813. package/dist/router/decorators/http-method.decorator.d.ts.map +0 -1
  814. package/dist/router/decorators/http-method.decorator.js +0 -113
  815. package/dist/router/decorators/http-method.decorator.js.map +0 -1
  816. package/dist/router/decorators/index.d.ts +0 -4
  817. package/dist/router/decorators/index.d.ts.map +0 -1
  818. package/dist/router/decorators/index.js +0 -6
  819. package/dist/router/decorators/index.js.map +0 -1
  820. package/dist/router/decorators/route.decorator.d.ts +0 -90
  821. package/dist/router/decorators/route.decorator.d.ts.map +0 -1
  822. package/dist/router/decorators/route.decorator.js +0 -102
  823. package/dist/router/decorators/route.decorator.js.map +0 -1
  824. package/dist/router/errors/controller-method-not-found.error.d.ts +0 -11
  825. package/dist/router/errors/controller-method-not-found.error.d.ts.map +0 -1
  826. package/dist/router/errors/controller-method-not-found.error.js +0 -13
  827. package/dist/router/errors/controller-method-not-found.error.js.map +0 -1
  828. package/dist/router/errors/controller-registration.error.d.ts +0 -15
  829. package/dist/router/errors/controller-registration.error.d.ts.map +0 -1
  830. package/dist/router/errors/controller-registration.error.js +0 -20
  831. package/dist/router/errors/controller-registration.error.js.map +0 -1
  832. package/dist/router/errors/hono-app-already-configured.error.d.ts +0 -10
  833. package/dist/router/errors/hono-app-already-configured.error.d.ts.map +0 -1
  834. package/dist/router/errors/hono-app-already-configured.error.js +0 -12
  835. package/dist/router/errors/hono-app-already-configured.error.js.map +0 -1
  836. package/dist/router/errors/index.d.ts +0 -8
  837. package/dist/router/errors/index.d.ts.map +0 -1
  838. package/dist/router/errors/index.js +0 -8
  839. package/dist/router/errors/index.js.map +0 -1
  840. package/dist/router/errors/openapi-route-registration.error.d.ts +0 -17
  841. package/dist/router/errors/openapi-route-registration.error.d.ts.map +0 -1
  842. package/dist/router/errors/openapi-route-registration.error.js +0 -19
  843. package/dist/router/errors/openapi-route-registration.error.js.map +0 -1
  844. package/dist/router/errors/openapi-validation.error.d.ts +0 -19
  845. package/dist/router/errors/openapi-validation.error.d.ts.map +0 -1
  846. package/dist/router/errors/openapi-validation.error.js +0 -21
  847. package/dist/router/errors/openapi-validation.error.js.map +0 -1
  848. package/dist/router/errors/route-not-found.error.d.ts +0 -11
  849. package/dist/router/errors/route-not-found.error.d.ts.map +0 -1
  850. package/dist/router/errors/route-not-found.error.js +0 -13
  851. package/dist/router/errors/route-not-found.error.js.map +0 -1
  852. package/dist/router/errors/schema-validation.error.d.ts +0 -11
  853. package/dist/router/errors/schema-validation.error.d.ts.map +0 -1
  854. package/dist/router/errors/schema-validation.error.js +0 -17
  855. package/dist/router/errors/schema-validation.error.js.map +0 -1
  856. package/dist/router/hono-app.d.ts +0 -38
  857. package/dist/router/hono-app.d.ts.map +0 -1
  858. package/dist/router/hono-app.js +0 -126
  859. package/dist/router/hono-app.js.map +0 -1
  860. package/dist/router/index.d.ts +0 -16
  861. package/dist/router/index.d.ts.map +0 -1
  862. package/dist/router/index.js +0 -21
  863. package/dist/router/index.js.map +0 -1
  864. package/dist/router/middleware/index.d.ts +0 -2
  865. package/dist/router/middleware/index.d.ts.map +0 -1
  866. package/dist/router/middleware/index.js +0 -4
  867. package/dist/router/middleware/index.js.map +0 -1
  868. package/dist/router/middleware/logger.middleware.d.ts +0 -19
  869. package/dist/router/middleware/logger.middleware.d.ts.map +0 -1
  870. package/dist/router/middleware/logger.middleware.js +0 -32
  871. package/dist/router/middleware/logger.middleware.js.map +0 -1
  872. package/dist/router/middleware.interface.d.ts +0 -38
  873. package/dist/router/middleware.interface.d.ts.map +0 -1
  874. package/dist/router/middleware.interface.js +0 -2
  875. package/dist/router/middleware.interface.js.map +0 -1
  876. package/dist/router/router-context.d.ts +0 -143
  877. package/dist/router/router-context.d.ts.map +0 -1
  878. package/dist/router/router-context.js +0 -179
  879. package/dist/router/router-context.js.map +0 -1
  880. package/dist/router/router.tokens.d.ts +0 -11
  881. package/dist/router/router.tokens.d.ts.map +0 -1
  882. package/dist/router/router.tokens.js +0 -11
  883. package/dist/router/router.tokens.js.map +0 -1
  884. package/dist/router/schemas/common.schemas.d.ts +0 -148
  885. package/dist/router/schemas/common.schemas.d.ts.map +0 -1
  886. package/dist/router/schemas/common.schemas.js +0 -88
  887. package/dist/router/schemas/common.schemas.js.map +0 -1
  888. package/dist/router/schemas/index.d.ts +0 -2
  889. package/dist/router/schemas/index.d.ts.map +0 -1
  890. package/dist/router/schemas/index.js +0 -2
  891. package/dist/router/schemas/index.js.map +0 -1
  892. package/dist/router/services/index.d.ts +0 -6
  893. package/dist/router/services/index.d.ts.map +0 -1
  894. package/dist/router/services/index.js +0 -6
  895. package/dist/router/services/index.js.map +0 -1
  896. package/dist/router/services/route-registration.service.d.ts +0 -129
  897. package/dist/router/services/route-registration.service.d.ts.map +0 -1
  898. package/dist/router/services/route-registration.service.js +0 -700
  899. package/dist/router/services/route-registration.service.js.map +0 -1
  900. package/dist/router/types.d.ts +0 -187
  901. package/dist/router/types.d.ts.map +0 -1
  902. package/dist/router/types.js +0 -2
  903. package/dist/router/types.js.map +0 -1
  904. package/dist/storage/contracts/delete-file.input.d.ts +0 -7
  905. package/dist/storage/contracts/delete-file.input.d.ts.map +0 -1
  906. package/dist/storage/contracts/delete-file.input.js +0 -6
  907. package/dist/storage/contracts/delete-file.input.js.map +0 -1
  908. package/dist/storage/contracts/download-result.d.ts +0 -28
  909. package/dist/storage/contracts/download-result.d.ts.map +0 -1
  910. package/dist/storage/contracts/download-result.js +0 -2
  911. package/dist/storage/contracts/download-result.js.map +0 -1
  912. package/dist/storage/contracts/file-exists.input.d.ts +0 -7
  913. package/dist/storage/contracts/file-exists.input.d.ts.map +0 -1
  914. package/dist/storage/contracts/file-exists.input.js +0 -6
  915. package/dist/storage/contracts/file-exists.input.js.map +0 -1
  916. package/dist/storage/contracts/get-presigned-url.input.d.ts +0 -26
  917. package/dist/storage/contracts/get-presigned-url.input.d.ts.map +0 -1
  918. package/dist/storage/contracts/get-presigned-url.input.js +0 -14
  919. package/dist/storage/contracts/get-presigned-url.input.js.map +0 -1
  920. package/dist/storage/contracts/index.d.ts +0 -6
  921. package/dist/storage/contracts/index.d.ts.map +0 -1
  922. package/dist/storage/contracts/index.js +0 -6
  923. package/dist/storage/contracts/index.js.map +0 -1
  924. package/dist/storage/contracts/upload-file.input.d.ts +0 -34
  925. package/dist/storage/contracts/upload-file.input.d.ts.map +0 -1
  926. package/dist/storage/contracts/upload-file.input.js +0 -10
  927. package/dist/storage/contracts/upload-file.input.js.map +0 -1
  928. package/dist/storage/dom.polyfill.d.ts +0 -2
  929. package/dist/storage/dom.polyfill.d.ts.map +0 -1
  930. package/dist/storage/dom.polyfill.js +0 -30
  931. package/dist/storage/dom.polyfill.js.map +0 -1
  932. package/dist/storage/errors/disk-not-configured.error.d.ts +0 -5
  933. package/dist/storage/errors/disk-not-configured.error.d.ts.map +0 -1
  934. package/dist/storage/errors/disk-not-configured.error.js +0 -7
  935. package/dist/storage/errors/disk-not-configured.error.js.map +0 -1
  936. package/dist/storage/errors/file-not-found.error.d.ts +0 -5
  937. package/dist/storage/errors/file-not-found.error.d.ts.map +0 -1
  938. package/dist/storage/errors/file-not-found.error.js +0 -8
  939. package/dist/storage/errors/file-not-found.error.js.map +0 -1
  940. package/dist/storage/errors/file-too-large.error.d.ts +0 -5
  941. package/dist/storage/errors/file-too-large.error.d.ts.map +0 -1
  942. package/dist/storage/errors/file-too-large.error.js +0 -11
  943. package/dist/storage/errors/file-too-large.error.js.map +0 -1
  944. package/dist/storage/errors/index.d.ts +0 -9
  945. package/dist/storage/errors/index.d.ts.map +0 -1
  946. package/dist/storage/errors/index.js +0 -9
  947. package/dist/storage/errors/index.js.map +0 -1
  948. package/dist/storage/errors/invalid-disk.error.d.ts +0 -5
  949. package/dist/storage/errors/invalid-disk.error.d.ts.map +0 -1
  950. package/dist/storage/errors/invalid-disk.error.js +0 -8
  951. package/dist/storage/errors/invalid-disk.error.js.map +0 -1
  952. package/dist/storage/errors/invalid-file-type.error.d.ts +0 -5
  953. package/dist/storage/errors/invalid-file-type.error.d.ts.map +0 -1
  954. package/dist/storage/errors/invalid-file-type.error.js +0 -10
  955. package/dist/storage/errors/invalid-file-type.error.js.map +0 -1
  956. package/dist/storage/errors/presigned-url-invalid-expiry.error.d.ts +0 -5
  957. package/dist/storage/errors/presigned-url-invalid-expiry.error.d.ts.map +0 -1
  958. package/dist/storage/errors/presigned-url-invalid-expiry.error.js +0 -12
  959. package/dist/storage/errors/presigned-url-invalid-expiry.error.js.map +0 -1
  960. package/dist/storage/errors/storage-provider-not-supported.error.d.ts +0 -5
  961. package/dist/storage/errors/storage-provider-not-supported.error.d.ts.map +0 -1
  962. package/dist/storage/errors/storage-provider-not-supported.error.js +0 -8
  963. package/dist/storage/errors/storage-provider-not-supported.error.js.map +0 -1
  964. package/dist/storage/errors/storage-response-body-missing.error.d.ts +0 -5
  965. package/dist/storage/errors/storage-response-body-missing.error.d.ts.map +0 -1
  966. package/dist/storage/errors/storage-response-body-missing.error.js +0 -8
  967. package/dist/storage/errors/storage-response-body-missing.error.js.map +0 -1
  968. package/dist/storage/index.d.ts +0 -15
  969. package/dist/storage/index.d.ts.map +0 -1
  970. package/dist/storage/index.js +0 -18
  971. package/dist/storage/index.js.map +0 -1
  972. package/dist/storage/providers/s3-multipart-provider.interface.d.ts +0 -194
  973. package/dist/storage/providers/s3-multipart-provider.interface.d.ts.map +0 -1
  974. package/dist/storage/providers/s3-multipart-provider.interface.js +0 -2
  975. package/dist/storage/providers/s3-multipart-provider.interface.js.map +0 -1
  976. package/dist/storage/providers/s3-storage.provider.d.ts +0 -77
  977. package/dist/storage/providers/s3-storage.provider.d.ts.map +0 -1
  978. package/dist/storage/providers/s3-storage.provider.js +0 -310
  979. package/dist/storage/providers/s3-storage.provider.js.map +0 -1
  980. package/dist/storage/providers/storage-provider.interface.d.ts +0 -58
  981. package/dist/storage/providers/storage-provider.interface.d.ts.map +0 -1
  982. package/dist/storage/providers/storage-provider.interface.js +0 -2
  983. package/dist/storage/providers/storage-provider.interface.js.map +0 -1
  984. package/dist/storage/services/storage-manager.service.d.ts +0 -48
  985. package/dist/storage/services/storage-manager.service.d.ts.map +0 -1
  986. package/dist/storage/services/storage-manager.service.js +0 -111
  987. package/dist/storage/services/storage-manager.service.js.map +0 -1
  988. package/dist/storage/services/storage.service.d.ts +0 -137
  989. package/dist/storage/services/storage.service.d.ts.map +0 -1
  990. package/dist/storage/services/storage.service.js +0 -229
  991. package/dist/storage/services/storage.service.js.map +0 -1
  992. package/dist/storage/storage.module.d.ts +0 -52
  993. package/dist/storage/storage.module.d.ts.map +0 -1
  994. package/dist/storage/storage.module.js +0 -81
  995. package/dist/storage/storage.module.js.map +0 -1
  996. package/dist/storage/storage.tokens.d.ts +0 -10
  997. package/dist/storage/storage.tokens.d.ts.map +0 -1
  998. package/dist/storage/storage.tokens.js +0 -10
  999. package/dist/storage/storage.tokens.js.map +0 -1
  1000. package/dist/storage/types.d.ts +0 -31
  1001. package/dist/storage/types.d.ts.map +0 -1
  1002. package/dist/storage/types.js +0 -2
  1003. package/dist/storage/types.js.map +0 -1
  1004. package/dist/stratal.d.ts +0 -39
  1005. package/dist/stratal.d.ts.map +0 -1
  1006. package/dist/stratal.js +0 -77
  1007. package/dist/stratal.js.map +0 -1
  1008. package/dist/types.d.ts.map +0 -1
  1009. package/dist/types.js +0 -2
  1010. package/dist/types.js.map +0 -1
  1011. package/dist/websocket/decorators/gateway.decorator.d.ts +0 -39
  1012. package/dist/websocket/decorators/gateway.decorator.d.ts.map +0 -1
  1013. package/dist/websocket/decorators/gateway.decorator.js +0 -55
  1014. package/dist/websocket/decorators/gateway.decorator.js.map +0 -1
  1015. package/dist/websocket/decorators/index.d.ts +0 -3
  1016. package/dist/websocket/decorators/index.d.ts.map +0 -1
  1017. package/dist/websocket/decorators/index.js +0 -3
  1018. package/dist/websocket/decorators/index.js.map +0 -1
  1019. package/dist/websocket/decorators/ws-event.decorator.d.ts +0 -59
  1020. package/dist/websocket/decorators/ws-event.decorator.d.ts.map +0 -1
  1021. package/dist/websocket/decorators/ws-event.decorator.js +0 -94
  1022. package/dist/websocket/decorators/ws-event.decorator.js.map +0 -1
  1023. package/dist/websocket/errors/websocket-body-not-available.error.d.ts +0 -5
  1024. package/dist/websocket/errors/websocket-body-not-available.error.d.ts.map +0 -1
  1025. package/dist/websocket/errors/websocket-body-not-available.error.js +0 -7
  1026. package/dist/websocket/errors/websocket-body-not-available.error.js.map +0 -1
  1027. package/dist/websocket/errors/websocket-duplicate-event-handler.error.d.ts +0 -5
  1028. package/dist/websocket/errors/websocket-duplicate-event-handler.error.d.ts.map +0 -1
  1029. package/dist/websocket/errors/websocket-duplicate-event-handler.error.js +0 -7
  1030. package/dist/websocket/errors/websocket-duplicate-event-handler.error.js.map +0 -1
  1031. package/dist/websocket/gateway-context.d.ts +0 -51
  1032. package/dist/websocket/gateway-context.d.ts.map +0 -1
  1033. package/dist/websocket/gateway-context.js +0 -66
  1034. package/dist/websocket/gateway-context.js.map +0 -1
  1035. package/dist/websocket/index.d.ts +0 -7
  1036. package/dist/websocket/index.d.ts.map +0 -1
  1037. package/dist/websocket/index.js +0 -5
  1038. package/dist/websocket/index.js.map +0 -1
  1039. package/dist/websocket/types.d.ts +0 -7
  1040. package/dist/websocket/types.d.ts.map +0 -1
  1041. package/dist/websocket/types.js +0 -2
  1042. package/dist/websocket/types.js.map +0 -1
  1043. package/dist/workers/index.d.ts +0 -5
  1044. package/dist/workers/index.d.ts.map +0 -1
  1045. package/dist/workers/index.js +0 -5
  1046. package/dist/workers/index.js.map +0 -1
  1047. package/dist/workers/run-in-scope.d.ts +0 -9
  1048. package/dist/workers/run-in-scope.d.ts.map +0 -1
  1049. package/dist/workers/run-in-scope.js +0 -13
  1050. package/dist/workers/run-in-scope.js.map +0 -1
  1051. package/dist/workers/stratal-durable-object.d.ts +0 -28
  1052. package/dist/workers/stratal-durable-object.d.ts.map +0 -1
  1053. package/dist/workers/stratal-durable-object.js +0 -34
  1054. package/dist/workers/stratal-durable-object.js.map +0 -1
  1055. package/dist/workers/stratal-worker-entrypoint.d.ts +0 -27
  1056. package/dist/workers/stratal-worker-entrypoint.d.ts.map +0 -1
  1057. package/dist/workers/stratal-worker-entrypoint.js +0 -28
  1058. package/dist/workers/stratal-worker-entrypoint.js.map +0 -1
  1059. package/dist/workers/stratal-workflow.d.ts +0 -27
  1060. package/dist/workers/stratal-workflow.d.ts.map +0 -1
  1061. package/dist/workers/stratal-workflow.js +0 -28
  1062. package/dist/workers/stratal-workflow.js.map +0 -1
@@ -0,0 +1,1791 @@
1
+ import { S as ApplicationError, b as ERROR_CODES, o as I18N_TOKENS, s as Scope, v as ROUTER_TOKENS, y as getHttpStatus } from "./errors-CtCi1wn6.mjs";
2
+ import { i as Transient, l as DI_TOKENS, n as __decorateParam, r as __decorateMetadata, s as getMethodInjections, t as __decorate } from "./decorate-D5j-d9_z.mjs";
3
+ import { r as Module } from "./module-BH7t7BGG.mjs";
4
+ import { i as getControllerRoute, r as getControllerOptions, t as MiddlewareConfigurationService } from "./middleware-iRhNjsPH.mjs";
5
+ import { a as ROUTER_CONTEXT_KEYS, c as VERSION_NEUTRAL, i as METHOD_STATUS_CODES, n as DEFAULT_CONTENT_TYPE, o as ROUTE_METADATA_KEYS, r as HTTP_METHODS, s as SECURITY_SCHEMES, t as RouterContext } from "./router-context-BLn4PrRG.mjs";
6
+ import { i as z, o as backendErrorMap, r as validation_exports, s as runWithErrorMapContext, t as OpenAPIHono } from "./validation-Dbt-snjx.mjs";
7
+ import { t as en_exports } from "./en-uVIaxFXR.mjs";
8
+ import { i as getMethodGuards, r as getControllerGuards, t as GuardExecutionService } from "./guards-DMbsAxSX.mjs";
9
+ import { c as getWsOnMessageMethod, d as isGateway, o as getWsOnCloseMethod, s as getWsOnErrorMethod, t as GatewayContext } from "./gateway-context-90CQEQDR.mjs";
10
+ import { inject } from "tsyringe";
11
+ import { compile, createCoreContext, registerMessageCompiler, translate } from "@intlify/core-base";
12
+ import { swaggerUI } from "@hono/swagger-ui";
13
+ //#region src/i18n/middleware/i18n-context.middleware.ts
14
+ /**
15
+ * I18n Context Middleware
16
+ *
17
+ * Sets up AsyncLocalStorage context for Zod i18n validation.
18
+ * Must run after LocaleExtractionMiddleware sets the locale.
19
+ */
20
+ let I18nContextMiddleware = class I18nContextMiddleware {
21
+ constructor(i18n) {
22
+ this.i18n = i18n;
23
+ }
24
+ async handle(ctx, next) {
25
+ await runWithErrorMapContext({
26
+ t: (key, params) => this.i18n.t(key, params),
27
+ locale: ctx.getLocale()
28
+ }, () => next());
29
+ }
30
+ };
31
+ I18nContextMiddleware = __decorate([
32
+ Transient(),
33
+ __decorateParam(0, inject(I18N_TOKENS.I18nService)),
34
+ __decorateMetadata("design:paramtypes", [Object])
35
+ ], I18nContextMiddleware);
36
+ //#endregion
37
+ //#region src/i18n/middleware/locale-extraction.middleware.ts
38
+ /**
39
+ * Locale Extraction Middleware
40
+ *
41
+ * Extracts locale from X-Locale header and sets it on RouterContext.
42
+ * Validates against available locales from MessageLoaderService.
43
+ */
44
+ let LocaleExtractionMiddleware = class LocaleExtractionMiddleware {
45
+ constructor(loader) {
46
+ this.loader = loader;
47
+ }
48
+ async handle(ctx, next) {
49
+ const locale = this.extractLocale(ctx);
50
+ ctx.setLocale(locale);
51
+ await next();
52
+ }
53
+ /**
54
+ * Extract and validate locale from X-Locale header
55
+ */
56
+ extractLocale(ctx) {
57
+ const requestedLocale = ctx.header("x-locale")?.toLowerCase();
58
+ if (requestedLocale && this.loader.isLocaleSupported(requestedLocale)) return requestedLocale;
59
+ return this.loader.getDefaultLocale();
60
+ }
61
+ };
62
+ LocaleExtractionMiddleware = __decorate([
63
+ Transient(),
64
+ __decorateParam(0, inject(I18N_TOKENS.MessageLoader)),
65
+ __decorateMetadata("design:paramtypes", [Object])
66
+ ], LocaleExtractionMiddleware);
67
+ //#endregion
68
+ //#region src/openapi/openapi.tokens.ts
69
+ /**
70
+ * OpenAPI Module DI Tokens
71
+ */
72
+ const OPENAPI_TOKENS = {
73
+ Options: Symbol.for("stratal:openapi:options"),
74
+ ConfigService: Symbol.for("stratal:openapi:config:service"),
75
+ OpenAPIService: Symbol.for("stratal:openapi:service")
76
+ };
77
+ //#endregion
78
+ //#region src/openapi/services/openapi-config.service.ts
79
+ let OpenAPIConfigService = class OpenAPIConfigService {
80
+ overrides = [];
81
+ constructor(baseOptions) {
82
+ this.baseOptions = baseOptions;
83
+ }
84
+ /**
85
+ * Add configuration override for this request
86
+ * Overrides are merged in the order they are added
87
+ */
88
+ override(config) {
89
+ this.overrides.push(config);
90
+ }
91
+ /**
92
+ * Get effective configuration (base merged with all overrides)
93
+ */
94
+ getEffectiveConfig() {
95
+ let effective = {
96
+ jsonPath: this.baseOptions?.jsonPath ?? "/api/openapi.json",
97
+ ui: this.baseOptions?.ui,
98
+ info: {
99
+ title: this.baseOptions?.info?.title ?? "API",
100
+ version: this.baseOptions?.info?.version ?? "1.0.0",
101
+ description: this.baseOptions?.info?.description
102
+ },
103
+ securitySchemes: this.baseOptions?.securitySchemes
104
+ };
105
+ for (const override of this.overrides) effective = this.mergeConfig(effective, override);
106
+ return effective;
107
+ }
108
+ /**
109
+ * Merge override into effective config
110
+ * Info is shallow-merged, routeFilter is replaced
111
+ */
112
+ mergeConfig(base, override) {
113
+ return {
114
+ ...base,
115
+ info: {
116
+ ...base.info,
117
+ ...override.info && {
118
+ title: override.info.title ?? base.info.title,
119
+ version: override.info.version ?? base.info.version,
120
+ description: override.info.description ?? base.info.description
121
+ }
122
+ },
123
+ routeFilter: override.routeFilter ?? base.routeFilter
124
+ };
125
+ }
126
+ };
127
+ OpenAPIConfigService = __decorate([
128
+ Transient(OPENAPI_TOKENS.ConfigService),
129
+ __decorateParam(0, inject(OPENAPI_TOKENS.Options, { isOptional: true })),
130
+ __decorateMetadata("design:paramtypes", [Object])
131
+ ], OpenAPIConfigService);
132
+ //#endregion
133
+ //#region src/i18n/messages/index.ts
134
+ /**
135
+ * Core Messages
136
+ *
137
+ * Messages used by packages/modules infrastructure.
138
+ * These are automatically merged with application-specific messages.
139
+ */
140
+ /**
141
+ * All locale messages
142
+ * Explicitly import and export (no filesystem scanning - Cloudflare Workers compatible)
143
+ */
144
+ const messages = { en: en_exports };
145
+ /**
146
+ * Get messages for all locales
147
+ */
148
+ function getMessages() {
149
+ return messages;
150
+ }
151
+ /**
152
+ * Get available locales
153
+ */
154
+ function getLocales() {
155
+ return Object.keys(messages);
156
+ }
157
+ //#endregion
158
+ //#region src/i18n/setup.ts
159
+ /**
160
+ * I18n Setup - Message Compiler Registration
161
+ *
162
+ * Registers a JIT (Just-In-Time) message compiler for @intlify/core-base
163
+ * that works in Cloudflare Workers edge runtime.
164
+ *
165
+ * This must be called ONCE at application startup, before any I18nService instances are created.
166
+ */
167
+ let isRegistered = false;
168
+ /**
169
+ * Setup JIT message compiler for i18n
170
+ *
171
+ * Registers a message compiler that uses JIT compilation mode.
172
+ * In @intlify/core-base v10+, JIT mode is enabled by default, which generates
173
+ * AST (Abstract Syntax Tree) instead of JavaScript code, making it compatible
174
+ * with CSP-restricted environments like Cloudflare Workers.
175
+ *
176
+ * **IMPORTANT:** Call this function once at application startup before creating
177
+ * any I18nService instances. Safe to call multiple times (only registers once).
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * // In application entry point (before app.initialize())
182
+ * setupI18nCompiler()
183
+ * ```
184
+ */
185
+ function setupI18nCompiler() {
186
+ if (isRegistered) return;
187
+ registerMessageCompiler(compile);
188
+ isRegistered = true;
189
+ }
190
+ //#endregion
191
+ //#region src/i18n/i18n.options.ts
192
+ /**
193
+ * Resolve I18n options with defaults
194
+ */
195
+ function resolveI18nOptions(options) {
196
+ return {
197
+ defaultLocale: options?.defaultLocale ?? "en",
198
+ fallbackLocale: options?.fallbackLocale ?? "en",
199
+ locales: options?.locales ?? ["en"],
200
+ messages: options?.messages ?? {}
201
+ };
202
+ }
203
+ //#endregion
204
+ //#region src/i18n/errors/locale-not-supported.error.ts
205
+ /**
206
+ * Locale Not Supported Error
207
+ * Thrown when an unsupported locale is requested
208
+ *
209
+ * HTTP Status: 500 Internal Server Error
210
+ * Error Code: 9301
211
+ */
212
+ var LocaleNotSupportedError = class extends ApplicationError {
213
+ constructor(locale, supportedLocales) {
214
+ super("errors.localeNotSupported", ERROR_CODES.I18N.LOCALE_NOT_SUPPORTED, {
215
+ locale,
216
+ supportedLocales: supportedLocales.join(", ")
217
+ });
218
+ }
219
+ };
220
+ //#endregion
221
+ //#region src/i18n/errors/translation-missing.error.ts
222
+ /**
223
+ * Translation Missing Error
224
+ * Thrown when a translation key is missing from all locales
225
+ *
226
+ * HTTP Status: 500 Internal Server Error
227
+ * Error Code: 9300
228
+ */
229
+ var TranslationMissingError = class extends ApplicationError {
230
+ constructor(key, locale) {
231
+ super("errors.translationMissing", ERROR_CODES.I18N.TRANSLATION_MISSING, {
232
+ key,
233
+ locale
234
+ });
235
+ }
236
+ };
237
+ //#endregion
238
+ //#region src/router/decorators/http-method.decorator.ts
239
+ /**
240
+ * Creates an HTTP method decorator factory for the given HTTP method.
241
+ *
242
+ * The returned decorator stores {@link HttpRouteMetadata} on the method and
243
+ * tracks the method name under {@link ROUTE_METADATA_KEYS.HTTP_DECORATED_METHODS}
244
+ * on the controller prototype so they can be discovered at registration time.
245
+ */
246
+ function createHttpMethodDecorator(method) {
247
+ return function(path, config) {
248
+ return function(target, propertyKey, descriptor) {
249
+ const metadata = {
250
+ method,
251
+ path,
252
+ config: config ?? { response: z.any() }
253
+ };
254
+ Reflect.defineMetadata(ROUTE_METADATA_KEYS.HTTP_ROUTE_CONFIG, metadata, target, propertyKey);
255
+ const existing = Reflect.getOwnMetadata(ROUTE_METADATA_KEYS.HTTP_DECORATED_METHODS, target) ?? [];
256
+ existing.push(propertyKey);
257
+ Reflect.defineMetadata(ROUTE_METADATA_KEYS.HTTP_DECORATED_METHODS, existing, target);
258
+ return descriptor;
259
+ };
260
+ };
261
+ }
262
+ /**
263
+ * Registers a GET route on the controller method.
264
+ *
265
+ * @param path - Route path relative to the controller base path
266
+ * @param config - Optional route configuration (response schema, body, params, etc.)
267
+ *
268
+ * @example
269
+ * ```typescript
270
+ * @Controller('/api/v1/users')
271
+ * class UsersController {
272
+ * @Get('/', { response: z.array(userSchema), summary: 'List users' })
273
+ * async list(ctx: RouterContext) { ... }
274
+ *
275
+ * @Get('/:id', { params: z.object({ id: z.string().uuid() }), response: userSchema })
276
+ * async getUser(ctx: RouterContext) { ... }
277
+ * }
278
+ * ```
279
+ */
280
+ const Get = createHttpMethodDecorator("get");
281
+ /**
282
+ * Registers a POST route on the controller method.
283
+ *
284
+ * @param path - Route path relative to the controller base path
285
+ * @param config - Optional route configuration (response schema, body, params, etc.)
286
+ *
287
+ * @example
288
+ * ```typescript
289
+ * @Controller('/api/v1/users')
290
+ * class UsersController {
291
+ * @Post('/', { body: createUserSchema, response: userSchema, statusCode: 201 })
292
+ * async createUser(ctx: RouterContext) { ... }
293
+ * }
294
+ * ```
295
+ */
296
+ const Post = createHttpMethodDecorator("post");
297
+ /**
298
+ * Registers a PUT route on the controller method.
299
+ *
300
+ * @param path - Route path relative to the controller base path
301
+ * @param config - Optional route configuration
302
+ */
303
+ const Put = createHttpMethodDecorator("put");
304
+ /**
305
+ * Registers a PATCH route on the controller method.
306
+ *
307
+ * @param path - Route path relative to the controller base path
308
+ * @param config - Optional route configuration
309
+ */
310
+ const Patch = createHttpMethodDecorator("patch");
311
+ /**
312
+ * Registers a DELETE route on the controller method.
313
+ *
314
+ * @param path - Route path relative to the controller base path
315
+ * @param config - Optional route configuration
316
+ */
317
+ const Delete = createHttpMethodDecorator("delete");
318
+ /**
319
+ * Registers an ALL (any HTTP method) route on the controller method.
320
+ * Routes using @All are automatically hidden from OpenAPI documentation
321
+ * since OpenAPI does not support a catch-all HTTP method.
322
+ *
323
+ * @param path - Route path relative to the controller base path
324
+ * @param config - Optional route configuration
325
+ */
326
+ const All = createHttpMethodDecorator("all");
327
+ /**
328
+ * Get the HTTP route metadata from a controller method decorated with
329
+ * @Get, @Post, @Put, @Patch, @Delete, or @All.
330
+ *
331
+ * @param target - Controller prototype
332
+ * @param methodName - Name of the method
333
+ * @returns HTTP route metadata or undefined if not decorated
334
+ */
335
+ function getHttpRouteMetadata(target, methodName) {
336
+ return Reflect.getMetadata(ROUTE_METADATA_KEYS.HTTP_ROUTE_CONFIG, target, methodName);
337
+ }
338
+ /**
339
+ * Get all methods decorated with HTTP method decorators from a controller class.
340
+ *
341
+ * @param ControllerClass - Controller class
342
+ * @returns Array of method names that have HTTP route metadata
343
+ */
344
+ function getHttpDecoratedMethods(ControllerClass) {
345
+ const prototype = ControllerClass.prototype;
346
+ return Reflect.getOwnMetadata(ROUTE_METADATA_KEYS.HTTP_DECORATED_METHODS, prototype) ?? [];
347
+ }
348
+ //#endregion
349
+ //#region src/router/decorators/route.decorator.ts
350
+ /**
351
+ * Decorator to add OpenAPI metadata to a controller method using convention-based routing.
352
+ *
353
+ * **Cannot be mixed with HTTP method decorators** (`@Get`, `@Post`, `@Put`, `@Patch`,
354
+ * `@Delete`, `@All`) in the same controller. Use one pattern or the other.
355
+ *
356
+ * Stores route configuration (schemas, response, tags, security) in metadata.
357
+ * HTTP method, path, and success status code are auto-derived from the method name:
358
+ * - index() → GET /base-path → 200
359
+ * - show() → GET /base-path/:id → 200
360
+ * - create() → POST /base-path → 201
361
+ * - update() → PUT /base-path/:id → 200
362
+ * - patch() → PATCH /base-path/:id → 200
363
+ * - destroy() → DELETE /base-path/:id → 200
364
+ *
365
+ * @param config - Route configuration (schemas, response, tags, security)
366
+ *
367
+ * @example
368
+ * ```typescript
369
+ * @Controller('/api/v1/notes', {
370
+ * tags: ['Notes'],
371
+ * security: ['bearerAuth']
372
+ * })
373
+ * export class NotesController implements Controller {
374
+ * @Route({
375
+ * body: createNoteSchema,
376
+ * response: noteSchema, // 201 auto-derived from 'create' method
377
+ * tags: ['Mutations'],
378
+ * description: 'Create a new note'
379
+ * })
380
+ * async create(ctx: RouterContext): Promise<Response> {
381
+ * // POST /api/v1/notes (auto-derived from method name)
382
+ * // Body schema: createNoteSchema (auto-validated)
383
+ * // Response: 201 → noteSchema (status auto-derived)
384
+ * // Tags: ['Notes', 'Mutations'] (merged with controller)
385
+ * // Security: ['bearerAuth'] (inherited from controller)
386
+ * const body = ctx.body()
387
+ * const note = await this.notesService.create(body)
388
+ * return ctx.json(note, 201)
389
+ * }
390
+ *
391
+ * @Route({
392
+ * query: paginationSchema,
393
+ * response: z.array(noteSchema) // 200 auto-derived from 'index' method
394
+ * })
395
+ * async index(ctx: RouterContext): Promise<Response> {
396
+ * // GET /api/v1/notes (auto-derived)
397
+ * // Query params auto-validated
398
+ * const notes = await this.notesService.list()
399
+ * return ctx.json(notes)
400
+ * }
401
+ *
402
+ * @Route({
403
+ * params: z.object({ id: z.string().uuid() }),
404
+ * response: {
405
+ * schema: noteSchema,
406
+ * description: 'Note details'
407
+ * },
408
+ * security: [] // Override to make public
409
+ * })
410
+ * async show(ctx: RouterContext): Promise<Response> {
411
+ * // GET /api/v1/notes/:id (auto-derived)
412
+ * // URL params auto-validated
413
+ * // Response: 200 → noteSchema (status auto-derived)
414
+ * // Security: [] (public route, override controller security)
415
+ * const id = ctx.param('id')
416
+ * const note = await this.notesService.findById(id)
417
+ * return ctx.json(note)
418
+ * }
419
+ * }
420
+ * ```
421
+ */
422
+ function Route(config) {
423
+ return function(target, propertyKey, descriptor) {
424
+ Reflect.defineMetadata(ROUTE_METADATA_KEYS.ROUTE_CONFIG, config, target, propertyKey);
425
+ return descriptor;
426
+ };
427
+ }
428
+ /**
429
+ * Get the route configuration from a controller method
430
+ *
431
+ * @param target - Controller instance or prototype
432
+ * @param methodName - Name of the method
433
+ * @returns Route configuration or undefined if not decorated
434
+ */
435
+ function getRouteConfig(target, methodName) {
436
+ return Reflect.getMetadata(ROUTE_METADATA_KEYS.ROUTE_CONFIG, target, methodName);
437
+ }
438
+ /**
439
+ * Get all methods with @Route() decorator from a controller
440
+ *
441
+ * @param ControllerClass - Controller class
442
+ * @returns Array of method names that have route config
443
+ */
444
+ function getDecoratedMethods(ControllerClass) {
445
+ const prototype = ControllerClass.prototype;
446
+ return Object.getOwnPropertyNames(prototype).filter((name) => name !== "constructor" && typeof prototype[name] === "function").filter((methodName) => Reflect.hasMetadata(ROUTE_METADATA_KEYS.ROUTE_CONFIG, prototype, methodName));
447
+ }
448
+ //#endregion
449
+ //#region src/openapi/services/openapi.service.ts
450
+ let OpenAPIService = class OpenAPIService {
451
+ routeInfoMap = /* @__PURE__ */ new Map();
452
+ constructor(configService) {
453
+ this.configService = configService;
454
+ }
455
+ /**
456
+ * Setup OpenAPI documentation endpoints
457
+ */
458
+ setupEndpoints(app, controllers) {
459
+ this.buildRouteInfoMap(controllers);
460
+ const config = this.configService.getEffectiveConfig();
461
+ app.get(config.jsonPath, (c) => {
462
+ const requestContainer = c.get(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER);
463
+ const i18n = requestContainer.resolve(I18N_TOKENS.I18nService);
464
+ const effectiveConfig = requestContainer.resolve(OPENAPI_TOKENS.ConfigService).getEffectiveConfig();
465
+ const url = new URL(c.req.raw.url);
466
+ const fullSpec = app.getOpenAPIDocument({
467
+ openapi: "3.0.0",
468
+ info: {
469
+ version: effectiveConfig.info.version,
470
+ title: effectiveConfig.info.title,
471
+ description: effectiveConfig.info.description
472
+ },
473
+ servers: [{
474
+ url: `${url.protocol}//${url.host}`,
475
+ description: i18n.t("common.api.serverDescription")
476
+ }]
477
+ });
478
+ fullSpec.components ??= {};
479
+ fullSpec.components.securitySchemes = this.getSecuritySchemeDefinitions(i18n);
480
+ fullSpec.paths = this.filterRoutes(fullSpec.paths, effectiveConfig);
481
+ if (fullSpec.components.schemas) fullSpec.components.schemas = this.filterSchemas(fullSpec);
482
+ return c.json(fullSpec);
483
+ });
484
+ if (config.ui !== false) {
485
+ const uiPath = config.ui?.path ?? "/api/docs";
486
+ const uiRenderer = config.ui?.renderer;
487
+ app.get(uiPath, (c, next) => {
488
+ const effectiveConfig = c.get(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER).resolve(OPENAPI_TOKENS.ConfigService).getEffectiveConfig();
489
+ const uiContext = {
490
+ specUrl: effectiveConfig.jsonPath,
491
+ title: effectiveConfig.info.title
492
+ };
493
+ if (uiRenderer) return uiRenderer(uiContext)(c, next);
494
+ return swaggerUI({ url: uiContext.specUrl })(c, next);
495
+ });
496
+ }
497
+ }
498
+ /**
499
+ * Get localized security scheme definitions
500
+ */
501
+ getSecuritySchemeDefinitions(i18n) {
502
+ return {
503
+ [SECURITY_SCHEMES.BEARER_AUTH]: {
504
+ type: "http",
505
+ scheme: "bearer",
506
+ bearerFormat: "JWT",
507
+ description: i18n.t("common.api.security.bearerAuth")
508
+ },
509
+ [SECURITY_SCHEMES.API_KEY]: {
510
+ type: "apiKey",
511
+ in: "header",
512
+ name: "X-API-Key",
513
+ description: i18n.t("common.api.security.apiKey")
514
+ },
515
+ [SECURITY_SCHEMES.SESSION_COOKIE]: {
516
+ type: "apiKey",
517
+ in: "cookie",
518
+ name: "session",
519
+ description: i18n.t("common.api.security.sessionCookie")
520
+ }
521
+ };
522
+ }
523
+ /**
524
+ * Build route info map from controllers
525
+ * Maps route prefixes to their hideFromDocs flag
526
+ */
527
+ buildRouteInfoMap(controllers) {
528
+ for (const ControllerClass of controllers) {
529
+ const route = getControllerRoute(ControllerClass);
530
+ const options = getControllerOptions(ControllerClass);
531
+ if (route) this.routeInfoMap.set(route, { hideFromDocs: options?.hideFromDocs ?? false });
532
+ }
533
+ }
534
+ /**
535
+ * Filter OpenAPI paths based on hideFromDocs and custom routeFilter
536
+ */
537
+ filterRoutes(paths, config) {
538
+ const filteredPaths = {};
539
+ for (const [path, pathItem] of Object.entries(paths)) {
540
+ if (this.getRouteInfo(path).hideFromDocs) continue;
541
+ if (config.routeFilter) {
542
+ if (!config.routeFilter(path, pathItem)) continue;
543
+ }
544
+ filteredPaths[path] = pathItem;
545
+ }
546
+ return filteredPaths;
547
+ }
548
+ /**
549
+ * Get route info by matching path against controller routes
550
+ */
551
+ getRouteInfo(path) {
552
+ for (const [route, info] of this.routeInfoMap.entries()) if (path === route || path.startsWith(`${route}/`)) return info;
553
+ return { hideFromDocs: false };
554
+ }
555
+ /**
556
+ * Filter unreferenced schemas from OpenAPI spec
557
+ */
558
+ filterSchemas(spec) {
559
+ const referencedSchemas = /* @__PURE__ */ new Set();
560
+ this.collectSchemaRefs(spec.paths, referencedSchemas);
561
+ const filteredSchemas = {};
562
+ const components = spec.components;
563
+ if (components?.schemas) {
564
+ for (const [schemaName, schemaValue] of Object.entries(components.schemas)) if (referencedSchemas.has(schemaName)) {
565
+ filteredSchemas[schemaName] = schemaValue;
566
+ this.collectSchemaRefs(schemaValue, referencedSchemas);
567
+ }
568
+ for (const [schemaName, schemaValue] of Object.entries(components.schemas)) if (referencedSchemas.has(schemaName) && !filteredSchemas[schemaName]) filteredSchemas[schemaName] = schemaValue;
569
+ }
570
+ return filteredSchemas;
571
+ }
572
+ /**
573
+ * Recursively collect all schema references from an object
574
+ */
575
+ collectSchemaRefs(obj, refs) {
576
+ if (!obj || typeof obj !== "object") return;
577
+ const record = obj;
578
+ if (record.$ref && typeof record.$ref === "string") {
579
+ const match = /^#\/components\/schemas\/(.+)$/.exec(record.$ref);
580
+ if (match) refs.add(match[1]);
581
+ }
582
+ if (Array.isArray(obj)) for (const item of obj) this.collectSchemaRefs(item, refs);
583
+ else for (const value of Object.values(record)) this.collectSchemaRefs(value, refs);
584
+ }
585
+ };
586
+ OpenAPIService = __decorate([
587
+ Transient(OPENAPI_TOKENS.OpenAPIService),
588
+ __decorateParam(0, inject(OPENAPI_TOKENS.ConfigService)),
589
+ __decorateMetadata("design:paramtypes", [Object])
590
+ ], OpenAPIService);
591
+ //#endregion
592
+ //#region src/openapi/openapi.module.ts
593
+ /**
594
+ * OpenAPI Module
595
+ *
596
+ * Provides configurable OpenAPI documentation endpoints with runtime override support.
597
+ *
598
+ * Features:
599
+ * - Configurable paths for /openapi.json and /docs
600
+ * - Runtime config overrides via middleware
601
+ * - i18n support for titles and descriptions
602
+ * - Route filtering via hideFromDocs and custom routeFilter
603
+ *
604
+ * @example Basic usage
605
+ * ```typescript
606
+ * @Module({
607
+ * imports: [
608
+ * OpenAPIModule.forRoot({
609
+ * info: { title: 'My API', version: '1.0.0' }
610
+ * })
611
+ * ]
612
+ * })
613
+ * export class AppModule {}
614
+ * ```
615
+ *
616
+ * @example With runtime override in middleware
617
+ * ```typescript
618
+ * // In RouteAccessMiddleware
619
+ * constructor(
620
+ * @inject(OPENAPI_TOKENS.ConfigService) private openAPIConfig: IOpenAPIConfigService
621
+ * ) {}
622
+ *
623
+ * async handle(ctx, next) {
624
+ * this.openAPIConfig.override({
625
+ * info: { title: 'Custom API' },
626
+ * routeFilter: (path) => this.shouldInclude(path)
627
+ * })
628
+ * await next()
629
+ * }
630
+ * ```
631
+ */
632
+ var _OpenAPIModule;
633
+ /** Default options when none provided */
634
+ const DEFAULT_OPTIONS = {
635
+ jsonPath: "/api/openapi.json",
636
+ info: {
637
+ title: "API",
638
+ version: "1.0.0"
639
+ }
640
+ };
641
+ let OpenAPIModule = _OpenAPIModule = class OpenAPIModule {
642
+ /**
643
+ * Configure OpenAPI module with static options
644
+ *
645
+ * @param options - OpenAPI configuration (paths, info, security schemes)
646
+ * @returns DynamicModule with options provider
647
+ */
648
+ static forRoot(options = {}) {
649
+ const mergedOptions = {
650
+ ...DEFAULT_OPTIONS,
651
+ ...options,
652
+ info: {
653
+ ...DEFAULT_OPTIONS.info,
654
+ ...options.info,
655
+ title: options.info?.title ?? DEFAULT_OPTIONS.info?.title ?? "API",
656
+ version: options.info?.version ?? DEFAULT_OPTIONS.info?.version ?? "1.0.0"
657
+ }
658
+ };
659
+ return {
660
+ module: _OpenAPIModule,
661
+ providers: [{
662
+ provide: OPENAPI_TOKENS.Options,
663
+ useValue: mergedOptions
664
+ }]
665
+ };
666
+ }
667
+ static forRootAsync(options) {
668
+ return {
669
+ module: _OpenAPIModule,
670
+ providers: [{
671
+ provide: OPENAPI_TOKENS.Options,
672
+ useFactory: options.useFactory,
673
+ inject: options.inject
674
+ }]
675
+ };
676
+ }
677
+ };
678
+ OpenAPIModule = _OpenAPIModule = __decorate([Module({ providers: [{
679
+ provide: OPENAPI_TOKENS.ConfigService,
680
+ useClass: OpenAPIConfigService,
681
+ scope: Scope.Request
682
+ }, {
683
+ provide: OPENAPI_TOKENS.OpenAPIService,
684
+ useClass: OpenAPIService
685
+ }] })], OpenAPIModule);
686
+ //#endregion
687
+ //#region src/router/errors/controller-method-not-found.error.ts
688
+ /**
689
+ * ControllerMethodNotFoundError
690
+ *
691
+ * Thrown when a controller method is registered but doesn't exist on the controller instance.
692
+ * This typically indicates a mismatch between route registration and controller implementation.
693
+ */
694
+ var ControllerMethodNotFoundError = class extends ApplicationError {
695
+ constructor(methodName, controllerName) {
696
+ super("errors.controllerMethodNotFound", ERROR_CODES.ROUTER.CONTROLLER_METHOD_NOT_FOUND, {
697
+ methodName,
698
+ controllerName
699
+ });
700
+ }
701
+ };
702
+ //#endregion
703
+ //#region src/router/errors/hono-app-already-configured.error.ts
704
+ /**
705
+ * Error thrown when HonoApp.configure() is called more than once.
706
+ *
707
+ * HonoApp can only be configured a single time during application bootstrap.
708
+ */
709
+ var HonoAppAlreadyConfiguredError = class extends ApplicationError {
710
+ constructor() {
711
+ super("errors.honoAppAlreadyConfigured", ERROR_CODES.SYSTEM.CONFIGURATION_ERROR);
712
+ }
713
+ };
714
+ //#endregion
715
+ //#region src/router/errors/controller-registration.error.ts
716
+ /**
717
+ * Error thrown when a controller fails to register
718
+ *
719
+ * This typically happens when:
720
+ * - Controller is missing the `@Controller` decorator
721
+ * - Controller route metadata is not set
722
+ * - Controller class name is invalid
723
+ *
724
+ * Error Code: 9005
725
+ */
726
+ var ControllerRegistrationError = class extends ApplicationError {
727
+ constructor(controllerName, reason) {
728
+ super("errors.controllerRegistration", ERROR_CODES.ROUTER.CONTROLLER_REGISTRATION_ERROR, {
729
+ controllerName,
730
+ reason
731
+ });
732
+ }
733
+ };
734
+ //#endregion
735
+ //#region src/router/errors/openapi-route-registration.error.ts
736
+ /**
737
+ * OpenAPIRouteRegistrationError
738
+ *
739
+ * Thrown when an OpenAPI route fails to register properly
740
+ * This indicates a configuration issue with route decorators or metadata
741
+ * Uses i18n key for localized error messages
742
+ *
743
+ * @example
744
+ * ```typescript
745
+ * throw new OpenAPIRouteRegistrationError('/api/v1/users', 'Missing response schema')
746
+ * ```
747
+ */
748
+ var OpenAPIRouteRegistrationError = class extends ApplicationError {
749
+ constructor(path, reason) {
750
+ super("errors.openapiRouteRegistration", ERROR_CODES.ROUTER.OPENAPI_ROUTE_REGISTRATION, {
751
+ path,
752
+ reason
753
+ });
754
+ }
755
+ };
756
+ //#endregion
757
+ //#region src/router/errors/openapi-validation.error.ts
758
+ /**
759
+ * OpenAPIValidationError
760
+ *
761
+ * Thrown when OpenAPI request/response validation fails
762
+ * Uses i18n key for localized error messages
763
+ *
764
+ * HTTP Status: 400 Bad Request
765
+ * Error Code: 1004
766
+ *
767
+ * @example
768
+ * ```typescript
769
+ * throw new OpenAPIValidationError('Request body missing required field: email')
770
+ * ```
771
+ */
772
+ var OpenAPIValidationError = class extends ApplicationError {
773
+ constructor(details) {
774
+ super("errors.openapiValidation", ERROR_CODES.VALIDATION.REQUEST_VALIDATION, { details });
775
+ }
776
+ };
777
+ //#endregion
778
+ //#region src/router/errors/route-not-found.error.ts
779
+ /**
780
+ * Error thrown when a requested route is not found
781
+ *
782
+ * HTTP Status: 404 Not Found
783
+ * Error Code: 4004
784
+ */
785
+ var RouteNotFoundError = class extends ApplicationError {
786
+ constructor(path, method) {
787
+ super("errors.routeNotFound", ERROR_CODES.RESOURCE.ROUTE_NOT_FOUND, {
788
+ path,
789
+ method
790
+ });
791
+ }
792
+ };
793
+ //#endregion
794
+ //#region src/router/errors/schema-validation.error.ts
795
+ /**
796
+ * SchemaValidationError
797
+ *
798
+ * Thrown when Zod schema validation fails
799
+ */
800
+ var SchemaValidationError = class extends ApplicationError {
801
+ constructor(zodError) {
802
+ const issues = zodError.issues.map((err) => ({
803
+ path: err.path.join("."),
804
+ message: err.message,
805
+ code: err.code
806
+ }));
807
+ super("errors.schemaValidation", ERROR_CODES.VALIDATION.SCHEMA_VALIDATION, { issues });
808
+ }
809
+ };
810
+ //#endregion
811
+ //#region src/router/middleware/logger.middleware.ts
812
+ /**
813
+ * Create a Hono middleware that logs HTTP requests using our Logger service
814
+ *
815
+ * Logs request method, path, status code, and duration in milliseconds.
816
+ * Format: [HTTP] METHOD /path -> STATUS (duration ms)
817
+ *
818
+ * @param logger - Logger service instance
819
+ * @returns Hono middleware handler
820
+ *
821
+ * @example
822
+ * ```typescript
823
+ * const logger = container.resolve<LoggerService>(LOGGER_TOKENS.LoggerService)
824
+ * app.use('*', createLoggerMiddleware(logger))
825
+ * ```
826
+ */
827
+ function createLoggerMiddleware(logger) {
828
+ return async (c, next) => {
829
+ const start = Date.now();
830
+ const method = c.req.method;
831
+ const path = c.req.path;
832
+ await next();
833
+ const duration = Date.now() - start;
834
+ const status = c.res.status;
835
+ logger.info(`[HTTP] ${method} ${path} -> ${status}`, {
836
+ method,
837
+ path,
838
+ status,
839
+ duration
840
+ });
841
+ };
842
+ }
843
+ //#endregion
844
+ //#region src/router/schemas/common.schemas.ts
845
+ /**
846
+ * Common OpenAPI Schemas
847
+ *
848
+ * Reusable schema definitions for common API patterns:
849
+ * - Error responses
850
+ * - Pagination
851
+ * - Common parameters
852
+ */
853
+ /**
854
+ * Generic error response schema
855
+ * Used for all error responses (4xx, 5xx)
856
+ * Matches ApplicationError.toErrorResponse() structure
857
+ */
858
+ const errorResponseSchema = z.object({
859
+ code: z.number().int().describe("Application error code"),
860
+ message: z.string().describe("Human-readable error message"),
861
+ timestamp: z.string().datetime().describe("ISO timestamp when error occurred"),
862
+ metadata: z.record(z.string(), z.unknown()).optional().describe("Additional error context"),
863
+ stack: z.string().optional().describe("Stack trace (development only)")
864
+ }).openapi("ErrorResponse");
865
+ /**
866
+ * Validation error response schema
867
+ * Used for 400 Bad Request with validation failures
868
+ * Matches ApplicationError.toErrorResponse() structure with validation-specific metadata
869
+ */
870
+ const validationErrorResponseSchema = z.object({
871
+ code: z.number().int().describe("Application error code"),
872
+ message: z.string().describe("Human-readable error message"),
873
+ timestamp: z.string().datetime().describe("ISO timestamp when error occurred"),
874
+ metadata: z.object({ issues: z.array(z.object({
875
+ path: z.string().describe("Field path that failed validation"),
876
+ message: z.string().describe("Validation failure message"),
877
+ code: z.string().describe("Zod validation error code")
878
+ })) }).describe("Validation error details"),
879
+ stack: z.string().optional().describe("Stack trace (development only)")
880
+ }).openapi("ValidationErrorResponse");
881
+ /**
882
+ * Pagination query parameters schema
883
+ * Used for list endpoints
884
+ */
885
+ const paginationQuerySchema = z.object({
886
+ page: z.coerce.number().int().positive().default(1).describe("Page number (1-indexed)"),
887
+ limit: z.coerce.number().int().positive().max(100).default(20).describe("Items per page (max 100)")
888
+ }).openapi("PaginationQuery");
889
+ /**
890
+ * Paginated response wrapper schema
891
+ * Generic wrapper for paginated list responses
892
+ */
893
+ const paginatedResponseSchema = (itemSchema) => z.object({
894
+ data: z.array(itemSchema).describe("Array of items for current page"),
895
+ pagination: z.object({
896
+ page: z.number().int().positive().describe("Current page number"),
897
+ limit: z.number().int().positive().describe("Items per page"),
898
+ total: z.number().int().nonnegative().describe("Total number of items"),
899
+ totalPages: z.number().int().nonnegative().describe("Total number of pages")
900
+ })
901
+ });
902
+ /**
903
+ * UUID parameter schema
904
+ * Used for :id parameters in RESTful routes
905
+ */
906
+ const uuidParamSchema = z.object({ id: z.string().uuid().describe("Resource UUID") }).openapi("UUIDParam");
907
+ /**
908
+ * Success message response schema
909
+ * Used for operations that don't return data (e.g., DELETE)
910
+ */
911
+ const successMessageSchema = z.object({
912
+ message: z.string().describe("Success message"),
913
+ data: z.record(z.string(), z.unknown()).optional().describe("Optional additional data")
914
+ }).openapi("SuccessMessage");
915
+ /**
916
+ * Common HTTP status error schemas
917
+ * Pre-configured for standard error responses
918
+ */
919
+ const commonErrorSchemas = {
920
+ 400: {
921
+ schema: validationErrorResponseSchema,
922
+ description: "Validation error"
923
+ },
924
+ 401: {
925
+ schema: errorResponseSchema,
926
+ description: "Unauthorized"
927
+ },
928
+ 403: {
929
+ schema: errorResponseSchema,
930
+ description: "Forbidden"
931
+ },
932
+ 404: {
933
+ schema: errorResponseSchema,
934
+ description: "Not found"
935
+ },
936
+ 409: {
937
+ schema: errorResponseSchema,
938
+ description: "Conflict"
939
+ },
940
+ 500: {
941
+ schema: errorResponseSchema,
942
+ description: "Internal server error"
943
+ }
944
+ };
945
+ //#endregion
946
+ //#region src/router/services/route-registration.service.ts
947
+ const invokeHandler = (instance, method, ...args) => {
948
+ try {
949
+ return Promise.resolve(instance[method](...args));
950
+ } catch (err) {
951
+ return Promise.reject(err);
952
+ }
953
+ };
954
+ /**
955
+ * Route registration service
956
+ * Manages controller and route registration with OpenAPI support
957
+ *
958
+ * Responsibilities:
959
+ * - Register RESTful controllers with OpenAPI metadata
960
+ * - Auto-derive HTTP methods/paths from controller method names
961
+ * - Build OpenAPI route configurations with guard execution
962
+ * - Validate all controllers have access decorators (strict mode)
963
+ * - Create controller handlers with DI resolution
964
+ */
965
+ var RouteRegistrationService = class {
966
+ controllerClasses = /* @__PURE__ */ new Map();
967
+ constructor(logger, versioningOptions = null) {
968
+ this.logger = logger;
969
+ this.versioningOptions = versioningOptions;
970
+ }
971
+ /**
972
+ * Configure router with controllers
973
+ *
974
+ * @param app - OpenAPIHono application instance
975
+ * @param controllers - Array of controller classes from modules
976
+ */
977
+ async configure(app, controllers) {
978
+ this.logger.info("Registering controllers", { controllerCount: controllers.length });
979
+ const sortedControllers = [...controllers].sort((a, b) => {
980
+ const aHasHandle = "handle" in a.prototype;
981
+ const bHasHandle = "handle" in b.prototype;
982
+ if (aHasHandle && !bHasHandle) return 1;
983
+ if (!aHasHandle && bHasHandle) return -1;
984
+ return 0;
985
+ });
986
+ const gateways = [];
987
+ const regulars = [];
988
+ for (const c of sortedControllers) if (isGateway(c)) gateways.push(c);
989
+ else regulars.push(c);
990
+ for (const GatewayClass of gateways) await this.registerGateway(app, GatewayClass);
991
+ for (const ControllerClass of regulars) this.registerController(app, ControllerClass);
992
+ this.logger.info("Controller registration complete");
993
+ }
994
+ /**
995
+ * Register a WebSocket gateway
996
+ * Applies versioning and guards, then registers an upgradeWebSocket handler
997
+ */
998
+ async registerGateway(app, GatewayClass) {
999
+ const route = getControllerRoute(GatewayClass);
1000
+ if (!route) throw new ControllerRegistrationError(GatewayClass.name, "Missing @Gateway decorator or route metadata");
1001
+ const controllerOpts = getControllerOptions(GatewayClass);
1002
+ const paths = this.versioningOptions ? this.resolveVersionedPaths(route, controllerOpts) : [route];
1003
+ for (const fullPath of paths) await this.registerGatewayRoute(app, GatewayClass, fullPath);
1004
+ }
1005
+ /**
1006
+ * Register a single WebSocket gateway route
1007
+ */
1008
+ async registerGatewayRoute(app, GatewayClass, fullPath) {
1009
+ const controllerGuards = getControllerGuards(GatewayClass)?.guards ?? [];
1010
+ const { upgradeWebSocket } = await import("hono/cloudflare-workers");
1011
+ const onMsgMethod = getWsOnMessageMethod(GatewayClass);
1012
+ const onCloseMethod = getWsOnCloseMethod(GatewayClass);
1013
+ const onErrMethod = getWsOnErrorMethod(GatewayClass);
1014
+ const wsHandler = upgradeWebSocket((c) => {
1015
+ const gateway = new RouterContext(c).getContainer().resolve(GatewayClass);
1016
+ const events = {};
1017
+ const bindWsHandler = (method, onCatch) => {
1018
+ return (evt, ws) => {
1019
+ const ctx = new GatewayContext(c, ws);
1020
+ c.executionCtx.waitUntil(invokeHandler(gateway, method, evt, ctx).catch((err) => {
1021
+ this.logger.error(`WebSocket ${method} handler error`, {
1022
+ gateway: GatewayClass.name,
1023
+ error: err instanceof Error ? err.message : String(err)
1024
+ });
1025
+ onCatch?.(err, ws);
1026
+ }));
1027
+ };
1028
+ };
1029
+ if (onMsgMethod) events.onMessage = bindWsHandler(onMsgMethod, (_err, ws) => ws.close(1011, "Internal Error"));
1030
+ if (onCloseMethod) events.onClose = bindWsHandler(onCloseMethod);
1031
+ if (onErrMethod) events.onError = bindWsHandler(onErrMethod);
1032
+ return events;
1033
+ });
1034
+ this.logger.info("Registering WebSocket gateway", {
1035
+ gateway: GatewayClass.name,
1036
+ path: fullPath
1037
+ });
1038
+ const handlers = [];
1039
+ if (controllerGuards.length > 0) {
1040
+ this.logger.info("Gateway guards", {
1041
+ gateway: GatewayClass.name,
1042
+ path: fullPath,
1043
+ guardCount: controllerGuards.length
1044
+ });
1045
+ handlers.push(this.createGuardMiddleware(controllerGuards));
1046
+ }
1047
+ handlers.push(wsHandler);
1048
+ app.get(fullPath, ...handlers);
1049
+ }
1050
+ /**
1051
+ * Register a single controller with all its routes
1052
+ * Validates that controller has access decorator (strict mode)
1053
+ */
1054
+ registerController(app, ControllerClass) {
1055
+ const route = getControllerRoute(ControllerClass);
1056
+ if (!route) throw new ControllerRegistrationError(ControllerClass.name, "Missing @Controller decorator or route metadata");
1057
+ const className = ControllerClass.name;
1058
+ this.controllerClasses.set(className, ControllerClass);
1059
+ const prototype = ControllerClass.prototype;
1060
+ const controllerOpts = getControllerOptions(ControllerClass);
1061
+ if (prototype.handle) {
1062
+ if (!this.versioningOptions) this.registerWildcardRoute(app, ControllerClass, route);
1063
+ else for (const versionedRoute of this.resolveVersionedPaths(route, controllerOpts)) this.registerWildcardRoute(app, ControllerClass, versionedRoute);
1064
+ return;
1065
+ }
1066
+ const decoratedMethods = getDecoratedMethods(ControllerClass);
1067
+ const httpDecoratedMethods = getHttpDecoratedMethods(ControllerClass);
1068
+ if (decoratedMethods.length > 0 && httpDecoratedMethods.length > 0) throw new ControllerRegistrationError(ControllerClass.name, "Cannot mix @Route() with HTTP method decorators (@Get, @Post, etc.) in the same controller. Use one pattern or the other.");
1069
+ if (!this.versioningOptions) {
1070
+ this.dispatchRoutes(app, ControllerClass, route, decoratedMethods, httpDecoratedMethods, controllerOpts, prototype);
1071
+ return;
1072
+ }
1073
+ for (const versionedRoute of this.resolveVersionedPaths(route, controllerOpts)) this.dispatchRoutes(app, ControllerClass, versionedRoute, decoratedMethods, httpDecoratedMethods, controllerOpts, prototype);
1074
+ }
1075
+ /**
1076
+ * Dispatch route registration based on decorator type
1077
+ */
1078
+ dispatchRoutes(app, ControllerClass, path, decoratedMethods, httpDecoratedMethods, controllerOpts, prototype) {
1079
+ if (httpDecoratedMethods.length > 0) this.registerHttpRoutes(app, ControllerClass, path, httpDecoratedMethods, controllerOpts);
1080
+ else if (decoratedMethods.length > 0) this.registerOpenAPIRoutes(app, ControllerClass, path, decoratedMethods, controllerOpts);
1081
+ else this.registerRESTfulRoutes(app, ControllerClass, path, prototype);
1082
+ }
1083
+ /**
1084
+ * Resolve versioned paths for a controller based on versioning configuration.
1085
+ *
1086
+ * @param basePath - The base path from @Controller decorator
1087
+ * @param controllerOpts - Controller options (may contain version)
1088
+ * @returns Array of resolved paths (with version prefix if applicable)
1089
+ */
1090
+ resolveVersionedPaths(basePath, controllerOpts) {
1091
+ if (!this.versioningOptions) return [basePath];
1092
+ const version = controllerOpts?.version;
1093
+ if (version === VERSION_NEUTRAL) return [basePath];
1094
+ const prefix = this.versioningOptions.prefix ?? "v";
1095
+ if (version !== void 0) return (Array.isArray(version) ? version : [version]).map((v) => `/${prefix}${v}${basePath}`);
1096
+ if (this.versioningOptions.defaultVersion !== void 0) return (Array.isArray(this.versioningOptions.defaultVersion) ? this.versioningOptions.defaultVersion : [this.versioningOptions.defaultVersion]).map((v) => `/${prefix}${v}${basePath}`);
1097
+ return [basePath];
1098
+ }
1099
+ /**
1100
+ * Create a guard execution middleware
1101
+ *
1102
+ * This middleware executes all guards for a route before the handler.
1103
+ * Guards are executed in order; all must pass for the request to proceed.
1104
+ *
1105
+ * @param guards - Array of guards to execute
1106
+ * @returns Hono middleware function
1107
+ */
1108
+ createGuardMiddleware(guards) {
1109
+ const guardService = new GuardExecutionService(this.logger);
1110
+ return async (c, next) => {
1111
+ const ctx = new RouterContext(c);
1112
+ const container = ctx.getContainer();
1113
+ await guardService.executeGuards(guards, ctx, container);
1114
+ await next();
1115
+ };
1116
+ }
1117
+ /**
1118
+ * Register wildcard route for non-RESTful controllers
1119
+ */
1120
+ registerWildcardRoute(app, ControllerClass, route) {
1121
+ this.logger.info(`Registering wildcard route`, {
1122
+ controller: ControllerClass.name,
1123
+ route: `${route}/:path{.+}`,
1124
+ method: "ALL"
1125
+ });
1126
+ const handler = this.createControllerHandler(ControllerClass, "handle");
1127
+ app.all(route, handler);
1128
+ app.all(`${route}/:path{.+}`, handler);
1129
+ }
1130
+ /**
1131
+ * Register OpenAPI routes with metadata
1132
+ */
1133
+ registerOpenAPIRoutes(app, ControllerClass, route, decoratedMethods, controllerOpts) {
1134
+ const className = ControllerClass.name;
1135
+ const prototype = ControllerClass.prototype;
1136
+ const controllerHidden = controllerOpts?.hideFromDocs ?? false;
1137
+ const controllerGuards = getControllerGuards(ControllerClass)?.guards ?? [];
1138
+ for (const methodName of decoratedMethods) {
1139
+ const routeConfig = getRouteConfig(prototype, methodName);
1140
+ if (!routeConfig) continue;
1141
+ const derived = this.deriveHttpMethodAndPath(methodName, route);
1142
+ if (!derived) {
1143
+ this.logger.warn(`Cannot derive HTTP method/path for ${className}.${methodName}`);
1144
+ continue;
1145
+ }
1146
+ if (routeConfig.hideFromDocs ?? controllerHidden) {
1147
+ this.logger.info(`Registering hidden route (no OpenAPI)`, {
1148
+ controller: className,
1149
+ method: derived.method.toUpperCase(),
1150
+ path: derived.path,
1151
+ methodName
1152
+ });
1153
+ this.registerRouteWithoutOpenAPI(app, ControllerClass, methodName, derived);
1154
+ continue;
1155
+ }
1156
+ const methodGuards = getMethodGuards(prototype, methodName)?.guards ?? [];
1157
+ const allGuards = [...controllerGuards, ...methodGuards];
1158
+ if (allGuards.length > 0) this.logger.info(`Route guards`, {
1159
+ controller: className,
1160
+ method: derived.method.toUpperCase(),
1161
+ path: derived.path,
1162
+ methodName,
1163
+ guardCount: allGuards.length
1164
+ });
1165
+ const metadata = this.mergeMetadata(controllerOpts, routeConfig, ControllerClass, methodName);
1166
+ const openApiRoute = this.buildOpenAPIRoute(derived.method, derived.path, routeConfig, metadata, allGuards, methodName);
1167
+ this.logger.info(`Registering OpenAPI route`, {
1168
+ controller: className,
1169
+ method: derived.method.toUpperCase(),
1170
+ path: derived.path,
1171
+ methodName,
1172
+ tags: metadata.tags
1173
+ });
1174
+ app.openapi(openApiRoute, async (c) => {
1175
+ const ctx = new RouterContext(c);
1176
+ const requestContainer = ctx.getContainer();
1177
+ const controller = requestContainer.resolve(ControllerClass);
1178
+ const method = controller[methodName];
1179
+ if (typeof method === "function") {
1180
+ const injectedArgs = this.resolveMethodInjections(prototype, methodName, requestContainer);
1181
+ return await method.call(controller, ctx, ...injectedArgs);
1182
+ }
1183
+ throw new ControllerMethodNotFoundError(methodName, className);
1184
+ });
1185
+ }
1186
+ }
1187
+ /**
1188
+ * Register routes using HTTP method decorators (@Get, @Post, etc.)
1189
+ * These use explicit method + path instead of convention-based derivation
1190
+ */
1191
+ registerHttpRoutes(app, ControllerClass, basePath, httpDecoratedMethods, controllerOpts) {
1192
+ const className = ControllerClass.name;
1193
+ const prototype = ControllerClass.prototype;
1194
+ const controllerHidden = controllerOpts?.hideFromDocs ?? false;
1195
+ const controllerGuards = getControllerGuards(ControllerClass)?.guards ?? [];
1196
+ for (const methodName of httpDecoratedMethods) {
1197
+ const httpMeta = getHttpRouteMetadata(prototype, methodName);
1198
+ if (!httpMeta) continue;
1199
+ const fullPath = this.joinPaths(basePath, httpMeta.path);
1200
+ const routeConfig = httpMeta.config;
1201
+ const hideFromDocs = routeConfig.hideFromDocs ?? controllerHidden;
1202
+ if (httpMeta.method === "all" || hideFromDocs) {
1203
+ this.logger.info(`Registering route (no OpenAPI)`, {
1204
+ controller: className,
1205
+ method: httpMeta.method.toUpperCase(),
1206
+ path: fullPath,
1207
+ methodName
1208
+ });
1209
+ this.registerRouteWithoutOpenAPI(app, ControllerClass, methodName, {
1210
+ method: httpMeta.method,
1211
+ path: fullPath
1212
+ });
1213
+ continue;
1214
+ }
1215
+ const methodGuards = getMethodGuards(prototype, methodName)?.guards ?? [];
1216
+ const allGuards = [...controllerGuards, ...methodGuards];
1217
+ if (allGuards.length > 0) this.logger.info(`Route guards`, {
1218
+ controller: className,
1219
+ method: httpMeta.method.toUpperCase(),
1220
+ path: fullPath,
1221
+ methodName,
1222
+ guardCount: allGuards.length
1223
+ });
1224
+ const metadata = this.mergeMetadata(controllerOpts, routeConfig, ControllerClass, methodName);
1225
+ const statusCode = routeConfig.statusCode ?? 200;
1226
+ const openApiRoute = this.buildOpenAPIRoute(httpMeta.method, fullPath, routeConfig, metadata, allGuards, void 0, statusCode);
1227
+ this.logger.info(`Registering OpenAPI route`, {
1228
+ controller: className,
1229
+ method: httpMeta.method.toUpperCase(),
1230
+ path: fullPath,
1231
+ methodName,
1232
+ tags: metadata.tags
1233
+ });
1234
+ app.openapi(openApiRoute, async (c) => {
1235
+ const ctx = new RouterContext(c);
1236
+ const requestContainer = ctx.getContainer();
1237
+ const controller = requestContainer.resolve(ControllerClass);
1238
+ const method = controller[methodName];
1239
+ if (typeof method === "function") {
1240
+ const injectedArgs = this.resolveMethodInjections(prototype, methodName, requestContainer);
1241
+ return await method.call(controller, ctx, ...injectedArgs);
1242
+ }
1243
+ throw new ControllerMethodNotFoundError(methodName, className);
1244
+ });
1245
+ }
1246
+ }
1247
+ /**
1248
+ * Join a base path and a route path, normalizing slashes
1249
+ */
1250
+ joinPaths(basePath, routePath) {
1251
+ if (routePath === "/") return basePath;
1252
+ return basePath + routePath;
1253
+ }
1254
+ /**
1255
+ * Register route without OpenAPI metadata (for hidden routes)
1256
+ * Route is functional but won't appear in documentation
1257
+ */
1258
+ registerRouteWithoutOpenAPI(app, ControllerClass, methodName, derived) {
1259
+ const prototype = ControllerClass.prototype;
1260
+ const handler = async (c) => {
1261
+ const ctx = new RouterContext(c);
1262
+ const requestContainer = ctx.getContainer();
1263
+ const controller = requestContainer.resolve(ControllerClass);
1264
+ const method = controller[methodName];
1265
+ if (typeof method === "function") {
1266
+ const injectedArgs = this.resolveMethodInjections(prototype, methodName, requestContainer);
1267
+ return await method.call(controller, ctx, ...injectedArgs);
1268
+ }
1269
+ throw new ControllerMethodNotFoundError(methodName, ControllerClass.name);
1270
+ };
1271
+ switch (derived.method) {
1272
+ case "get":
1273
+ app.get(derived.path, handler);
1274
+ break;
1275
+ case "post":
1276
+ app.post(derived.path, handler);
1277
+ break;
1278
+ case "put":
1279
+ app.put(derived.path, handler);
1280
+ break;
1281
+ case "patch":
1282
+ app.patch(derived.path, handler);
1283
+ break;
1284
+ case "delete":
1285
+ app.delete(derived.path, handler);
1286
+ break;
1287
+ case "all":
1288
+ app.all(derived.path, handler);
1289
+ break;
1290
+ default:
1291
+ app.all(derived.path, handler);
1292
+ break;
1293
+ }
1294
+ }
1295
+ /**
1296
+ * Register traditional RESTful routes without OpenAPI
1297
+ */
1298
+ registerRESTfulRoutes(app, ControllerClass, route, prototype) {
1299
+ if (prototype.index) app.get(route, this.createControllerHandler(ControllerClass, "index"));
1300
+ if (prototype.show) app.get(`${route}/:id`, this.createControllerHandler(ControllerClass, "show"));
1301
+ if (prototype.create) app.post(route, this.createControllerHandler(ControllerClass, "create"));
1302
+ if (prototype.update) app.put(`${route}/:id`, this.createControllerHandler(ControllerClass, "update"));
1303
+ if (prototype.patch) app.patch(`${route}/:id`, this.createControllerHandler(ControllerClass, "patch"));
1304
+ if (prototype.destroy) app.delete(`${route}/:id`, this.createControllerHandler(ControllerClass, "destroy"));
1305
+ }
1306
+ /**
1307
+ * Auto-derive HTTP method and path from controller method name
1308
+ * Uses HTTP_METHODS constant for RESTful convention mapping
1309
+ */
1310
+ deriveHttpMethodAndPath(methodName, basePath) {
1311
+ if (!(methodName in HTTP_METHODS)) return null;
1312
+ const mapping = HTTP_METHODS[methodName];
1313
+ return {
1314
+ method: mapping.method,
1315
+ path: basePath + mapping.path
1316
+ };
1317
+ }
1318
+ /**
1319
+ * Merge controller-level and route-level metadata
1320
+ * Tags are merged (appended), security is merged (union)
1321
+ * Guards automatically add sessionCookie security if present
1322
+ */
1323
+ mergeMetadata(controllerOpts, routeConfig, ControllerClass, methodName) {
1324
+ const tags = [...controllerOpts?.tags ?? [], ...routeConfig.tags ?? []];
1325
+ const prototype = ControllerClass.prototype;
1326
+ const hasMethodGuards = (getMethodGuards(prototype, methodName)?.guards.length ?? 0) > 0;
1327
+ const hasControllerGuards = (getControllerGuards(ControllerClass)?.guards.length ?? 0) > 0;
1328
+ const requiresAuth = hasMethodGuards || hasControllerGuards;
1329
+ let security = [];
1330
+ if (routeConfig.security !== void 0) security = [...controllerOpts?.security ?? [], ...routeConfig.security];
1331
+ else if (controllerOpts?.security) security = controllerOpts.security;
1332
+ if (requiresAuth && !security.includes(SECURITY_SCHEMES.SESSION_COOKIE)) security.push(SECURITY_SCHEMES.SESSION_COOKIE);
1333
+ return {
1334
+ tags,
1335
+ security: security.length > 0 ? security.map((scheme) => ({ [scheme]: [] })) : []
1336
+ };
1337
+ }
1338
+ /**
1339
+ * Build OpenAPI route configuration from metadata
1340
+ * Creates a route definition compatible with @hono/zod-openapi
1341
+ * Includes guard execution for proper access control
1342
+ *
1343
+ * Execution order: Global middlewares → Guards → Handler
1344
+ */
1345
+ buildOpenAPIRoute(method, path, routeConfig, metadata, guards, methodName, statusCodeOverride) {
1346
+ try {
1347
+ const route = {
1348
+ method,
1349
+ path,
1350
+ request: {},
1351
+ responses: {}
1352
+ };
1353
+ if (guards.length > 0) route.middleware = [this.createGuardMiddleware(guards)];
1354
+ if (routeConfig.body) {
1355
+ const bodySchema = this.isRouteBodyObject(routeConfig.body) ? routeConfig.body.schema : routeConfig.body;
1356
+ const bodyContentType = this.isRouteBodyObject(routeConfig.body) ? routeConfig.body.contentType ?? "application/json" : DEFAULT_CONTENT_TYPE;
1357
+ route.request = {
1358
+ ...route.request,
1359
+ body: { content: { [bodyContentType]: { schema: bodySchema } } }
1360
+ };
1361
+ }
1362
+ if (routeConfig.query) route.request = {
1363
+ ...route.request,
1364
+ query: routeConfig.query
1365
+ };
1366
+ if (routeConfig.params) route.request = {
1367
+ ...route.request,
1368
+ params: routeConfig.params
1369
+ };
1370
+ const successStatus = statusCodeOverride ?? (methodName && METHOD_STATUS_CODES[methodName]) ?? 200;
1371
+ const responses = {};
1372
+ const responseDef = routeConfig.response;
1373
+ if (responseDef) if (typeof responseDef === "object" && "schema" in responseDef) responses[successStatus] = {
1374
+ content: { [responseDef.contentType ?? "application/json"]: { schema: responseDef.schema } },
1375
+ description: responseDef.description ?? `Response ${successStatus}`
1376
+ };
1377
+ else responses[successStatus] = {
1378
+ content: { [DEFAULT_CONTENT_TYPE]: { schema: responseDef } },
1379
+ description: `Response ${successStatus}`
1380
+ };
1381
+ for (const [statusStr, schema] of Object.entries(commonErrorSchemas)) {
1382
+ const status = parseInt(statusStr);
1383
+ responses[status] ??= schema;
1384
+ }
1385
+ route.responses = responses;
1386
+ if (metadata.tags.length > 0) route.tags = metadata.tags;
1387
+ if (metadata.security.length > 0) route.security = metadata.security;
1388
+ if (routeConfig.description) route.description = routeConfig.description;
1389
+ if (routeConfig.summary) route.summary = routeConfig.summary;
1390
+ return (0, validation_exports.createRoute)(route);
1391
+ } catch (error) {
1392
+ throw new OpenAPIRouteRegistrationError(path, error instanceof Error ? error.message : String(error));
1393
+ }
1394
+ }
1395
+ /**
1396
+ * Check if a body definition is a RouteBodyObject (has schema key) vs bare ZodType
1397
+ */
1398
+ isRouteBodyObject(body) {
1399
+ return typeof body === "object" && "schema" in body;
1400
+ }
1401
+ /**
1402
+ * Resolve method parameter injections from the container
1403
+ *
1404
+ * @param prototype - Controller prototype
1405
+ * @param methodName - Method name to get injections for
1406
+ * @param container - Request-scoped container
1407
+ * @returns Array of resolved dependencies in parameter order
1408
+ */
1409
+ resolveMethodInjections(prototype, methodName, container) {
1410
+ const injections = getMethodInjections(prototype, methodName);
1411
+ if (!injections.length) return [];
1412
+ return injections.map((inj) => container.resolve(inj.token));
1413
+ }
1414
+ /**
1415
+ * Create controller handler that resolves controller from request-scoped container
1416
+ * This ensures each request gets a fresh controller with request-scoped context
1417
+ */
1418
+ createControllerHandler(ControllerClass, methodName) {
1419
+ return async (c) => {
1420
+ this.logger.info("Handler invoked", {
1421
+ path: c.req.path,
1422
+ method: c.req.method,
1423
+ controller: ControllerClass.name,
1424
+ methodName
1425
+ });
1426
+ try {
1427
+ const ctx = new RouterContext(c);
1428
+ const requestContainer = ctx.getContainer();
1429
+ const controller = requestContainer.resolve(ControllerClass);
1430
+ const method = controller[methodName];
1431
+ if (typeof method === "function") {
1432
+ const injectedArgs = this.resolveMethodInjections(ControllerClass.prototype, methodName, requestContainer);
1433
+ return await method.apply(controller, [ctx, ...injectedArgs]);
1434
+ }
1435
+ throw new ControllerMethodNotFoundError(methodName, ControllerClass.name);
1436
+ } catch (error) {
1437
+ this.logger.error("Error in controller handler", {
1438
+ controller: ControllerClass.name,
1439
+ methodName,
1440
+ error: error instanceof Error ? error.message : String(error),
1441
+ stack: error instanceof Error ? error.stack : void 0
1442
+ });
1443
+ throw error;
1444
+ }
1445
+ };
1446
+ }
1447
+ };
1448
+ //#endregion
1449
+ //#region src/router/hono-app.ts
1450
+ const isMiddlewareClass = (arg) => typeof arg === "function" && arg.prototype && "handle" in arg.prototype;
1451
+ /**
1452
+ * HonoApp — extends OpenAPIHono with Stratal-specific setup
1453
+ *
1454
+ * Absorbs all Hono-related setup from the former RouterService and RequestScopeService:
1455
+ * - Request scope middleware (child container per request)
1456
+ * - Global middleware (CORS, logging, error handling)
1457
+ * - defaultHook for validation errors
1458
+ * - `use()` overload for Stratal middleware classes
1459
+ * - `configure()` for module middleware, OpenAPI, routes, and 404
1460
+ */
1461
+ var HonoApp = class extends OpenAPIHono {
1462
+ configured = false;
1463
+ _container;
1464
+ _logger;
1465
+ /**
1466
+ * Reference to the original Hono `use` implementation.
1467
+ * Captured in constructor after super() sets it as an instance property.
1468
+ * Used by private methods to register middleware without going through the override.
1469
+ */
1470
+ nativeUse;
1471
+ constructor(container, logger) {
1472
+ super({ defaultHook: (result, c) => {
1473
+ if (!result.success) {
1474
+ const errorHandler = c.get(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER).resolve(DI_TOKENS.ErrorHandler);
1475
+ const validationError = new SchemaValidationError(result.error);
1476
+ const errorResponse = errorHandler.handle(validationError);
1477
+ return c.json(errorResponse, getHttpStatus(errorResponse.code));
1478
+ }
1479
+ } });
1480
+ this._container = container;
1481
+ this._logger = logger;
1482
+ this.nativeUse = this.use;
1483
+ this.use = ((...args) => {
1484
+ if (isMiddlewareClass(args[0])) {
1485
+ this.applyMiddlewareClasses("*", args);
1486
+ return this;
1487
+ }
1488
+ if (typeof args[0] === "string" && args.length > 1 && isMiddlewareClass(args[1])) {
1489
+ this.applyMiddlewareClasses(args[0], args.slice(1));
1490
+ return this;
1491
+ }
1492
+ return this.nativeUse(...args);
1493
+ });
1494
+ this.setupRequestScope();
1495
+ this.setupGlobalMiddleware();
1496
+ }
1497
+ /**
1498
+ * Configure module middleware, OpenAPI endpoints, controller routes, and 404 handler.
1499
+ * Called once by Application.initialize().
1500
+ */
1501
+ async configure(middlewareConfigs, controllers, versioningOptions) {
1502
+ if (this.configured) throw new HonoAppAlreadyConfiguredError();
1503
+ new MiddlewareConfigurationService(this._logger, versioningOptions ?? null).applyMiddlewares(this, middlewareConfigs, controllers, this._container);
1504
+ this._container.resolve(OPENAPI_TOKENS.OpenAPIService).setupEndpoints(this, controllers);
1505
+ await new RouteRegistrationService(this._logger, versioningOptions ?? null).configure(this, controllers);
1506
+ this.notFound((c) => {
1507
+ throw new RouteNotFoundError(c.req.path, c.req.method);
1508
+ });
1509
+ this.configured = true;
1510
+ }
1511
+ setupRequestScope() {
1512
+ this.nativeUse("*", async (c, next) => {
1513
+ const routerContext = new RouterContext(c);
1514
+ const requestContainer = this._container.createRequestScope(routerContext);
1515
+ c.set(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER, requestContainer);
1516
+ try {
1517
+ await next();
1518
+ } finally {
1519
+ await requestContainer.dispose();
1520
+ }
1521
+ });
1522
+ }
1523
+ setupGlobalMiddleware() {
1524
+ this.nativeUse("*", createLoggerMiddleware(this._logger));
1525
+ this.onError((err, c) => {
1526
+ const errorResponse = c.get(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER).resolve(DI_TOKENS.ErrorHandler).handle(err);
1527
+ return c.json(errorResponse, getHttpStatus(errorResponse.code));
1528
+ });
1529
+ }
1530
+ applyMiddlewareClasses(path, classes) {
1531
+ this.nativeUse(path, async (c, next) => {
1532
+ const requestContainer = c.get(ROUTER_CONTEXT_KEYS.REQUEST_CONTAINER);
1533
+ const ctx = new RouterContext(c);
1534
+ let current = next;
1535
+ for (let i = classes.length - 1; i >= 0; i--) {
1536
+ const prevNext = current;
1537
+ const middleware = requestContainer.resolve(classes[i]);
1538
+ current = () => middleware.handle(ctx, prevNext);
1539
+ }
1540
+ await current();
1541
+ });
1542
+ return this;
1543
+ }
1544
+ };
1545
+ //#endregion
1546
+ //#region src/i18n/services/i18n.service.ts
1547
+ /**
1548
+ * I18n Service
1549
+ *
1550
+ * Request-scoped service for translations.
1551
+ * Injects RouterContext to access request-specific locale.
1552
+ * Uses pre-built CoreContext from MessageLoaderService (singleton) for zero-cost lookups.
1553
+ */
1554
+ var _ref;
1555
+ let I18nService = class I18nService {
1556
+ constructor(loader, routerContext) {
1557
+ this.loader = loader;
1558
+ this.routerContext = routerContext;
1559
+ }
1560
+ /**
1561
+ * Translate a message key
1562
+ *
1563
+ * @param key - Message key (e.g., 'common.actions.save')
1564
+ * @param params - Optional parameters for interpolation
1565
+ * @returns Translated string
1566
+ */
1567
+ t(key, params) {
1568
+ const context = this.loader.getCoreContext(this.getLocale());
1569
+ const result = params !== void 0 ? translate(context, key, params) : translate(context, key);
1570
+ return typeof result === "string" ? result : key;
1571
+ }
1572
+ /**
1573
+ * Get current locale
1574
+ *
1575
+ * @returns Current locale code from RouterContext or default locale
1576
+ */
1577
+ getLocale() {
1578
+ return this.routerContext?.getLocale() ?? "en";
1579
+ }
1580
+ };
1581
+ I18nService = __decorate([
1582
+ Transient(I18N_TOKENS.I18nService),
1583
+ __decorateParam(0, inject(I18N_TOKENS.MessageLoader)),
1584
+ __decorateParam(1, inject(ROUTER_TOKENS.RouterContext, { isOptional: true })),
1585
+ __decorateMetadata("design:paramtypes", [Object, typeof (_ref = typeof RouterContext !== "undefined" && RouterContext) === "function" ? _ref : Object])
1586
+ ], I18nService);
1587
+ //#endregion
1588
+ //#region src/i18n/services/message-loader.service.ts
1589
+ let MessageLoaderService = class MessageLoaderService {
1590
+ cache;
1591
+ contextCache;
1592
+ locales;
1593
+ defaultLocale;
1594
+ constructor(options) {
1595
+ this.options = options;
1596
+ this.defaultLocale = this.options?.defaultLocale ?? "en";
1597
+ this.cache = /* @__PURE__ */ new Map();
1598
+ this.contextCache = /* @__PURE__ */ new Map();
1599
+ const coreMessages = getMessages();
1600
+ const coreLocales = getLocales();
1601
+ const appMessages = this.options?.messages ?? {};
1602
+ const appLocales = Object.keys(appMessages);
1603
+ const allLocales = [...new Set([...coreLocales, ...appLocales])];
1604
+ this.locales = allLocales;
1605
+ for (const locale of allLocales) {
1606
+ const coreLocaleMessages = coreMessages[locale] ?? {};
1607
+ const appLocaleMessages = appMessages[locale] ?? {};
1608
+ const merged = this.deepMerge(coreLocaleMessages, appLocaleMessages);
1609
+ this.cache.set(locale, merged);
1610
+ }
1611
+ }
1612
+ /**
1613
+ * Get CoreContext for a locale (lazily built and cached on first access)
1614
+ * Falls back to default locale if locale not found
1615
+ *
1616
+ * @param locale - Locale code
1617
+ * @returns Cached CoreContext ready for translation
1618
+ */
1619
+ getCoreContext(locale) {
1620
+ const cached = this.contextCache.get(locale);
1621
+ if (cached) return cached;
1622
+ const effectiveLocale = this.cache.has(locale) ? locale : this.defaultLocale;
1623
+ const cachedEffective = this.contextCache.get(effectiveLocale);
1624
+ if (cachedEffective) return cachedEffective;
1625
+ const messages = this.cache.get(effectiveLocale) ?? {};
1626
+ const flattened = this.flattenMessages(messages);
1627
+ const ctx = createCoreContext({
1628
+ locale: effectiveLocale,
1629
+ messages: { [effectiveLocale]: flattened },
1630
+ missingWarn: false,
1631
+ fallbackWarn: false
1632
+ });
1633
+ this.contextCache.set(effectiveLocale, ctx);
1634
+ return ctx;
1635
+ }
1636
+ /**
1637
+ * Get messages for a specific locale
1638
+ * Falls back to default locale if locale not found
1639
+ *
1640
+ * @param locale - Locale code
1641
+ * @returns Message object for the locale
1642
+ */
1643
+ getMessages(locale) {
1644
+ const msgs = this.cache.get(locale);
1645
+ if (!msgs) return this.cache.get(this.defaultLocale) ?? {};
1646
+ return msgs;
1647
+ }
1648
+ /**
1649
+ * Get list of available locale codes
1650
+ *
1651
+ * @returns Array of locale codes
1652
+ */
1653
+ getAvailableLocales() {
1654
+ return this.locales;
1655
+ }
1656
+ /**
1657
+ * Check if a locale is supported
1658
+ *
1659
+ * @param locale - Locale code to check
1660
+ * @returns true if locale is supported
1661
+ */
1662
+ isLocaleSupported(locale) {
1663
+ return this.cache.has(locale);
1664
+ }
1665
+ /**
1666
+ * Get default locale
1667
+ *
1668
+ * @returns Default locale code
1669
+ */
1670
+ getDefaultLocale() {
1671
+ return this.defaultLocale;
1672
+ }
1673
+ /**
1674
+ * Flatten nested messages to dot-notation
1675
+ *
1676
+ * Converts { auth: { login: { title: 'Sign In' } } }
1677
+ * to { 'auth.login.title': 'Sign In' }
1678
+ */
1679
+ flattenMessages(messages, prefix = "") {
1680
+ const result = {};
1681
+ for (const key of Object.keys(messages)) {
1682
+ const value = messages[key];
1683
+ const newKey = prefix ? `${prefix}.${key}` : key;
1684
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) Object.assign(result, this.flattenMessages(value, newKey));
1685
+ else result[newKey] = String(value);
1686
+ }
1687
+ return result;
1688
+ }
1689
+ /**
1690
+ * Deep merge two objects
1691
+ * App messages override core messages at leaf level
1692
+ */
1693
+ deepMerge(target, source) {
1694
+ const result = { ...target };
1695
+ for (const key of Object.keys(source)) {
1696
+ const targetValue = target[key];
1697
+ const sourceValue = source[key];
1698
+ if (typeof targetValue === "object" && targetValue !== null && !Array.isArray(targetValue) && typeof sourceValue === "object" && sourceValue !== null && !Array.isArray(sourceValue)) result[key] = this.deepMerge(targetValue, sourceValue);
1699
+ else result[key] = sourceValue;
1700
+ }
1701
+ return result;
1702
+ }
1703
+ };
1704
+ MessageLoaderService = __decorate([
1705
+ Transient(I18N_TOKENS.MessageLoader),
1706
+ __decorateParam(0, inject(I18N_TOKENS.Options, { isOptional: true })),
1707
+ __decorateMetadata("design:paramtypes", [Object])
1708
+ ], MessageLoaderService);
1709
+ //#endregion
1710
+ //#region src/i18n/i18n.module.ts
1711
+ /**
1712
+ * I18n Module
1713
+ *
1714
+ * Core infrastructure module for internationalization.
1715
+ * Provides message translation and locale handling.
1716
+ *
1717
+ * @example Default usage (system messages only)
1718
+ * ```typescript
1719
+ * // In Application.ts - I18nModule is already included in core modules
1720
+ * // Works with system messages and 'en' default locale
1721
+ * ```
1722
+ *
1723
+ * @example With app-specific configuration
1724
+ * ```typescript
1725
+ * // In apps/backend/src/app.module.ts
1726
+ * import { i18nConfig } from './i18n'
1727
+ *
1728
+ * @Module({
1729
+ * imports: [I18nModule.forRoot(i18nConfig)],
1730
+ * })
1731
+ * export class AppModule {}
1732
+ * ```
1733
+ */
1734
+ var _I18nModule;
1735
+ setupI18nCompiler();
1736
+ z.config({ customError: backendErrorMap });
1737
+ let I18nModule = _I18nModule = class I18nModule {
1738
+ /**
1739
+ * Configure I18n with app-specific options
1740
+ *
1741
+ * Use this method in AppModule to provide custom locale configuration
1742
+ * and app-specific messages that merge with system messages.
1743
+ *
1744
+ * @param options - I18n configuration options
1745
+ * @returns Dynamic module with options provider
1746
+ *
1747
+ * @example
1748
+ * ```typescript
1749
+ * // apps/backend/src/i18n/index.ts
1750
+ * export const i18nConfig: I18nModuleOptions = {
1751
+ * defaultLocale: 'en',
1752
+ * fallbackLocale: 'en',
1753
+ * locales: ['en', 'fr'],
1754
+ * messages: appMessages
1755
+ * }
1756
+ *
1757
+ * // apps/backend/src/app.module.ts
1758
+ * @Module({
1759
+ * imports: [I18nModule.forRoot(i18nConfig)],
1760
+ * })
1761
+ * export class AppModule {}
1762
+ * ```
1763
+ */
1764
+ static forRoot(options = {}) {
1765
+ return {
1766
+ module: _I18nModule,
1767
+ providers: [{
1768
+ provide: I18N_TOKENS.Options,
1769
+ useValue: options
1770
+ }]
1771
+ };
1772
+ }
1773
+ /**
1774
+ * Configure middleware for locale extraction and i18n context
1775
+ */
1776
+ configure(consumer) {
1777
+ consumer.apply(LocaleExtractionMiddleware, I18nContextMiddleware).forRoutes("*");
1778
+ }
1779
+ };
1780
+ I18nModule = _I18nModule = __decorate([Module({ providers: [{
1781
+ provide: I18N_TOKENS.MessageLoader,
1782
+ useClass: MessageLoaderService,
1783
+ scope: Scope.Singleton
1784
+ }, {
1785
+ provide: I18N_TOKENS.I18nService,
1786
+ useClass: I18nService
1787
+ }] })], I18nModule);
1788
+ //#endregion
1789
+ export { LocaleNotSupportedError as A, Get as C, getHttpDecoratedMethods as D, Put as E, messages as F, OpenAPIConfigService as I, OPENAPI_TOKENS as L, setupI18nCompiler as M, getLocales as N, getHttpRouteMetadata as O, getMessages as P, LocaleExtractionMiddleware as R, Delete as S, Post as T, OpenAPIService as _, errorResponseSchema as a, getRouteConfig as b, successMessageSchema as c, RouteNotFoundError as d, OpenAPIValidationError as f, OpenAPIModule as g, HonoAppAlreadyConfiguredError as h, commonErrorSchemas as i, resolveI18nOptions as j, TranslationMissingError as k, uuidParamSchema as l, ControllerRegistrationError as m, HonoApp as n, paginatedResponseSchema as o, OpenAPIRouteRegistrationError as p, RouteRegistrationService as r, paginationQuerySchema as s, I18nModule as t, validationErrorResponseSchema as u, Route as v, Patch as w, All as x, getDecoratedMethods as y, I18nContextMiddleware as z };
1790
+
1791
+ //# sourceMappingURL=i18n.module-qNrpIVts.mjs.map