stratal 0.0.13 → 0.0.14

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