@morojs/moro 1.6.1 → 1.6.2

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 (404) hide show
  1. package/README.md +74 -256
  2. package/dist/core/auth/morojs-adapter.js +20 -20
  3. package/dist/core/auth/morojs-adapter.js.map +1 -1
  4. package/dist/core/config/config-manager.d.ts +44 -0
  5. package/dist/core/config/config-manager.js +104 -0
  6. package/dist/core/config/config-manager.js.map +1 -0
  7. package/dist/core/config/config-sources.d.ts +21 -0
  8. package/dist/core/config/config-sources.js +503 -0
  9. package/dist/core/config/config-sources.js.map +1 -0
  10. package/dist/core/config/config-validator.d.ts +21 -0
  11. package/dist/core/config/config-validator.js +791 -0
  12. package/dist/core/config/config-validator.js.map +1 -0
  13. package/dist/core/config/file-loader.d.ts +1 -6
  14. package/dist/core/config/file-loader.js +21 -249
  15. package/dist/core/config/file-loader.js.map +1 -1
  16. package/dist/core/config/index.d.ts +41 -12
  17. package/dist/core/config/index.js +65 -54
  18. package/dist/core/config/index.js.map +1 -1
  19. package/dist/core/config/schema.d.ts +2 -2
  20. package/dist/core/config/schema.js +55 -44
  21. package/dist/core/config/schema.js.map +1 -1
  22. package/dist/core/config/utils.d.ts +10 -3
  23. package/dist/core/config/utils.js +31 -58
  24. package/dist/core/config/utils.js.map +1 -1
  25. package/dist/core/database/adapters/drizzle.d.ts +1 -1
  26. package/dist/core/database/adapters/drizzle.js +18 -11
  27. package/dist/core/database/adapters/drizzle.js.map +1 -1
  28. package/dist/core/database/adapters/index.d.ts +7 -7
  29. package/dist/core/database/adapters/index.js +19 -29
  30. package/dist/core/database/adapters/index.js.map +1 -1
  31. package/dist/core/database/adapters/mongodb.d.ts +13 -1
  32. package/dist/core/database/adapters/mongodb.js +46 -10
  33. package/dist/core/database/adapters/mongodb.js.map +1 -1
  34. package/dist/core/database/adapters/mysql.d.ts +14 -1
  35. package/dist/core/database/adapters/mysql.js +19 -9
  36. package/dist/core/database/adapters/mysql.js.map +1 -1
  37. package/dist/core/database/adapters/postgresql.d.ts +12 -2
  38. package/dist/core/database/adapters/postgresql.js +19 -9
  39. package/dist/core/database/adapters/postgresql.js.map +1 -1
  40. package/dist/core/database/adapters/redis.d.ts +12 -1
  41. package/dist/core/database/adapters/redis.js +48 -13
  42. package/dist/core/database/adapters/redis.js.map +1 -1
  43. package/dist/core/database/adapters/sqlite.d.ts +3 -1
  44. package/dist/core/database/adapters/sqlite.js +19 -8
  45. package/dist/core/database/adapters/sqlite.js.map +1 -1
  46. package/dist/core/database/index.d.ts +2 -2
  47. package/dist/core/database/index.js +2 -18
  48. package/dist/core/database/index.js.map +1 -1
  49. package/dist/core/docs/index.d.ts +9 -9
  50. package/dist/core/docs/index.js +14 -35
  51. package/dist/core/docs/index.js.map +1 -1
  52. package/dist/core/docs/openapi-generator.d.ts +2 -2
  53. package/dist/core/docs/openapi-generator.js +11 -16
  54. package/dist/core/docs/openapi-generator.js.map +1 -1
  55. package/dist/core/docs/schema-to-openapi.d.ts +2 -2
  56. package/dist/core/docs/schema-to-openapi.js +5 -11
  57. package/dist/core/docs/schema-to-openapi.js.map +1 -1
  58. package/dist/core/docs/simple-docs.d.ts +1 -1
  59. package/dist/core/docs/simple-docs.js +4 -9
  60. package/dist/core/docs/simple-docs.js.map +1 -1
  61. package/dist/core/docs/swagger-ui.d.ts +2 -2
  62. package/dist/core/docs/swagger-ui.js +26 -29
  63. package/dist/core/docs/swagger-ui.js.map +1 -1
  64. package/dist/core/docs/zod-to-openapi.js +31 -28
  65. package/dist/core/docs/zod-to-openapi.js.map +1 -1
  66. package/dist/core/events/event-bus.d.ts +1 -1
  67. package/dist/core/events/event-bus.js +7 -11
  68. package/dist/core/events/event-bus.js.map +1 -1
  69. package/dist/core/events/index.d.ts +2 -2
  70. package/dist/core/events/index.js +1 -5
  71. package/dist/core/events/index.js.map +1 -1
  72. package/dist/core/framework.d.ts +20 -13
  73. package/dist/core/framework.js +285 -102
  74. package/dist/core/framework.js.map +1 -1
  75. package/dist/core/http/http-server.d.ts +59 -7
  76. package/dist/core/http/http-server.js +190 -176
  77. package/dist/core/http/http-server.js.map +1 -1
  78. package/dist/core/http/index.d.ts +4 -3
  79. package/dist/core/http/index.js +3 -8
  80. package/dist/core/http/index.js.map +1 -1
  81. package/dist/core/http/uws-http-server.d.ts +46 -0
  82. package/dist/core/http/uws-http-server.js +523 -0
  83. package/dist/core/http/uws-http-server.js.map +1 -0
  84. package/dist/core/logger/filters.d.ts +1 -1
  85. package/dist/core/logger/filters.js +20 -23
  86. package/dist/core/logger/filters.js.map +1 -1
  87. package/dist/core/logger/index.d.ts +3 -3
  88. package/dist/core/logger/index.js +2 -24
  89. package/dist/core/logger/index.js.map +1 -1
  90. package/dist/core/logger/logger.d.ts +30 -14
  91. package/dist/core/logger/logger.js +398 -223
  92. package/dist/core/logger/logger.js.map +1 -1
  93. package/dist/core/logger/outputs.d.ts +1 -1
  94. package/dist/core/logger/outputs.js +8 -17
  95. package/dist/core/logger/outputs.js.map +1 -1
  96. package/dist/core/middleware/built-in/adapters/cache/file.d.ts +1 -1
  97. package/dist/core/middleware/built-in/adapters/cache/file.js +10 -47
  98. package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -1
  99. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +4 -4
  100. package/dist/core/middleware/built-in/adapters/cache/index.js +10 -17
  101. package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -1
  102. package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +1 -1
  103. package/dist/core/middleware/built-in/adapters/cache/memory.js +3 -7
  104. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
  105. package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +3 -1
  106. package/dist/core/middleware/built-in/adapters/cache/redis.js +11 -9
  107. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -1
  108. package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +1 -1
  109. package/dist/core/middleware/built-in/adapters/cdn/azure.js +3 -7
  110. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -1
  111. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +1 -1
  112. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +3 -7
  113. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
  114. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +3 -1
  115. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +12 -10
  116. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -1
  117. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +4 -4
  118. package/dist/core/middleware/built-in/adapters/cdn/index.js +10 -17
  119. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +1 -1
  120. package/dist/core/middleware/built-in/adapters/index.d.ts +4 -4
  121. package/dist/core/middleware/built-in/adapters/index.js +4 -23
  122. package/dist/core/middleware/built-in/adapters/index.js.map +1 -1
  123. package/dist/core/middleware/built-in/auth-helpers.js +11 -22
  124. package/dist/core/middleware/built-in/auth-helpers.js.map +1 -1
  125. package/dist/core/middleware/built-in/auth-providers.d.ts +1 -1
  126. package/dist/core/middleware/built-in/auth-providers.js +4 -9
  127. package/dist/core/middleware/built-in/auth-providers.js.map +1 -1
  128. package/dist/core/middleware/built-in/auth.d.ts +2 -2
  129. package/dist/core/middleware/built-in/auth.js +93 -26
  130. package/dist/core/middleware/built-in/auth.js.map +1 -1
  131. package/dist/core/middleware/built-in/cache.d.ts +2 -2
  132. package/dist/core/middleware/built-in/cache.js +11 -12
  133. package/dist/core/middleware/built-in/cache.js.map +1 -1
  134. package/dist/core/middleware/built-in/cdn.d.ts +2 -2
  135. package/dist/core/middleware/built-in/cdn.js +5 -9
  136. package/dist/core/middleware/built-in/cdn.js.map +1 -1
  137. package/dist/core/middleware/built-in/cookie.d.ts +1 -1
  138. package/dist/core/middleware/built-in/cookie.js +3 -7
  139. package/dist/core/middleware/built-in/cookie.js.map +1 -1
  140. package/dist/core/middleware/built-in/cors.d.ts +1 -1
  141. package/dist/core/middleware/built-in/cors.js +3 -7
  142. package/dist/core/middleware/built-in/cors.js.map +1 -1
  143. package/dist/core/middleware/built-in/csp.d.ts +1 -1
  144. package/dist/core/middleware/built-in/csp.js +5 -8
  145. package/dist/core/middleware/built-in/csp.js.map +1 -1
  146. package/dist/core/middleware/built-in/csrf.d.ts +1 -1
  147. package/dist/core/middleware/built-in/csrf.js +5 -8
  148. package/dist/core/middleware/built-in/csrf.js.map +1 -1
  149. package/dist/core/middleware/built-in/error-tracker.js +3 -7
  150. package/dist/core/middleware/built-in/error-tracker.js.map +1 -1
  151. package/dist/core/middleware/built-in/index.d.ts +28 -27
  152. package/dist/core/middleware/built-in/index.js +48 -78
  153. package/dist/core/middleware/built-in/index.js.map +1 -1
  154. package/dist/core/middleware/built-in/jwt-helpers.d.ts +118 -0
  155. package/dist/core/middleware/built-in/jwt-helpers.js +218 -0
  156. package/dist/core/middleware/built-in/jwt-helpers.js.map +1 -0
  157. package/dist/core/middleware/built-in/performance-monitor.js +3 -7
  158. package/dist/core/middleware/built-in/performance-monitor.js.map +1 -1
  159. package/dist/core/middleware/built-in/rate-limit.d.ts +1 -1
  160. package/dist/core/middleware/built-in/rate-limit.js +3 -7
  161. package/dist/core/middleware/built-in/rate-limit.js.map +1 -1
  162. package/dist/core/middleware/built-in/request-logger.js +5 -8
  163. package/dist/core/middleware/built-in/request-logger.js.map +1 -1
  164. package/dist/core/middleware/built-in/session.d.ts +2 -2
  165. package/dist/core/middleware/built-in/session.js +11 -15
  166. package/dist/core/middleware/built-in/session.js.map +1 -1
  167. package/dist/core/middleware/built-in/sse.d.ts +1 -1
  168. package/dist/core/middleware/built-in/sse.js +12 -14
  169. package/dist/core/middleware/built-in/sse.js.map +1 -1
  170. package/dist/core/middleware/built-in/validation.d.ts +1 -1
  171. package/dist/core/middleware/built-in/validation.js +3 -7
  172. package/dist/core/middleware/built-in/validation.js.map +1 -1
  173. package/dist/core/middleware/index.d.ts +4 -4
  174. package/dist/core/middleware/index.js +8 -28
  175. package/dist/core/middleware/index.js.map +1 -1
  176. package/dist/core/modules/auto-discovery.d.ts +19 -2
  177. package/dist/core/modules/auto-discovery.js +391 -74
  178. package/dist/core/modules/auto-discovery.js.map +1 -1
  179. package/dist/core/modules/index.d.ts +2 -2
  180. package/dist/core/modules/index.js +2 -9
  181. package/dist/core/modules/index.js.map +1 -1
  182. package/dist/core/modules/modules.d.ts +3 -3
  183. package/dist/core/modules/modules.js +23 -54
  184. package/dist/core/modules/modules.js.map +1 -1
  185. package/dist/core/networking/adapters/index.d.ts +4 -3
  186. package/dist/core/networking/adapters/index.js +3 -7
  187. package/dist/core/networking/adapters/index.js.map +1 -1
  188. package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -1
  189. package/dist/core/networking/adapters/socketio-adapter.js +5 -40
  190. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  191. package/dist/core/networking/adapters/uws-adapter.d.ts +44 -0
  192. package/dist/core/networking/adapters/uws-adapter.js +513 -0
  193. package/dist/core/networking/adapters/uws-adapter.js.map +1 -0
  194. package/dist/core/networking/adapters/ws-adapter.d.ts +2 -2
  195. package/dist/core/networking/adapters/ws-adapter.js +8 -43
  196. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  197. package/dist/core/networking/index.d.ts +3 -2
  198. package/dist/core/networking/index.js +2 -7
  199. package/dist/core/networking/index.js.map +1 -1
  200. package/dist/core/networking/service-discovery.js +8 -12
  201. package/dist/core/networking/service-discovery.js.map +1 -1
  202. package/dist/core/networking/websocket-adapter.js +1 -2
  203. package/dist/core/networking/websocket-adapter.js.map +1 -1
  204. package/dist/core/networking/websocket-manager.d.ts +3 -3
  205. package/dist/core/networking/websocket-manager.js +9 -11
  206. package/dist/core/networking/websocket-manager.js.map +1 -1
  207. package/dist/core/pooling/object-pool-manager.d.ts +140 -0
  208. package/dist/core/pooling/object-pool-manager.js +502 -0
  209. package/dist/core/pooling/object-pool-manager.js.map +1 -0
  210. package/dist/core/routing/app-integration.d.ts +14 -12
  211. package/dist/core/routing/app-integration.js +49 -85
  212. package/dist/core/routing/app-integration.js.map +1 -1
  213. package/dist/core/routing/index.d.ts +17 -11
  214. package/dist/core/routing/index.js +48 -237
  215. package/dist/core/routing/index.js.map +1 -1
  216. package/dist/core/routing/path-matcher.d.ts +67 -0
  217. package/dist/core/routing/path-matcher.js +182 -0
  218. package/dist/core/routing/path-matcher.js.map +1 -0
  219. package/dist/core/routing/router.d.ts +38 -0
  220. package/dist/core/routing/router.js +68 -0
  221. package/dist/core/routing/router.js.map +1 -0
  222. package/dist/core/routing/unified-router.d.ts +148 -0
  223. package/dist/core/routing/unified-router.js +684 -0
  224. package/dist/core/routing/unified-router.js.map +1 -0
  225. package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
  226. package/dist/core/runtime/aws-lambda-adapter.js +2 -6
  227. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  228. package/dist/core/runtime/base-adapter.d.ts +2 -2
  229. package/dist/core/runtime/base-adapter.js +3 -7
  230. package/dist/core/runtime/base-adapter.js.map +1 -1
  231. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
  232. package/dist/core/runtime/cloudflare-workers-adapter.js +2 -6
  233. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  234. package/dist/core/runtime/index.d.ts +12 -12
  235. package/dist/core/runtime/index.js +22 -35
  236. package/dist/core/runtime/index.js.map +1 -1
  237. package/dist/core/runtime/node-adapter.d.ts +4 -4
  238. package/dist/core/runtime/node-adapter.js +18 -49
  239. package/dist/core/runtime/node-adapter.js.map +1 -1
  240. package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
  241. package/dist/core/runtime/vercel-edge-adapter.js +2 -6
  242. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  243. package/dist/core/utilities/circuit-breaker.js +1 -5
  244. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  245. package/dist/core/utilities/container.js +12 -22
  246. package/dist/core/utilities/container.js.map +1 -1
  247. package/dist/core/utilities/hooks.d.ts +2 -2
  248. package/dist/core/utilities/hooks.js +7 -12
  249. package/dist/core/utilities/hooks.js.map +1 -1
  250. package/dist/core/utilities/index.d.ts +5 -4
  251. package/dist/core/utilities/index.js +5 -19
  252. package/dist/core/utilities/index.js.map +1 -1
  253. package/dist/core/utilities/package-utils.d.ts +38 -0
  254. package/dist/core/utilities/package-utils.js +57 -0
  255. package/dist/core/utilities/package-utils.js.map +1 -0
  256. package/dist/core/validation/adapters.d.ts +1 -1
  257. package/dist/core/validation/adapters.js +15 -26
  258. package/dist/core/validation/adapters.js.map +1 -1
  259. package/dist/core/validation/index.d.ts +6 -4
  260. package/dist/core/validation/index.js +57 -28
  261. package/dist/core/validation/index.js.map +1 -1
  262. package/dist/core/validation/schema-interface.js +3 -9
  263. package/dist/core/validation/schema-interface.js.map +1 -1
  264. package/dist/index.d.ts +51 -52
  265. package/dist/index.js +23 -132
  266. package/dist/index.js.map +1 -1
  267. package/dist/moro.d.ts +70 -16
  268. package/dist/moro.js +658 -271
  269. package/dist/moro.js.map +1 -1
  270. package/dist/types/auth.js +3 -9
  271. package/dist/types/auth.js.map +1 -1
  272. package/dist/types/cache.js +1 -2
  273. package/dist/types/cdn.js +1 -2
  274. package/dist/types/config.d.ts +73 -2
  275. package/dist/types/config.js +1 -2
  276. package/dist/types/config.js.map +1 -1
  277. package/dist/types/core.d.ts +36 -42
  278. package/dist/types/core.js +1 -2
  279. package/dist/types/database.js +1 -2
  280. package/dist/types/discovery.js +1 -2
  281. package/dist/types/events.js +1 -2
  282. package/dist/types/hooks.d.ts +1 -1
  283. package/dist/types/hooks.js +1 -2
  284. package/dist/types/http.d.ts +16 -1
  285. package/dist/types/http.js +1 -2
  286. package/dist/types/logger.d.ts +7 -0
  287. package/dist/types/logger.js +1 -2
  288. package/dist/types/module.d.ts +11 -0
  289. package/dist/types/module.js +1 -2
  290. package/dist/types/runtime.d.ts +1 -1
  291. package/dist/types/runtime.js +1 -2
  292. package/dist/types/session.js +1 -2
  293. package/jest.config.mjs +41 -0
  294. package/package.json +19 -52
  295. package/src/core/auth/morojs-adapter.ts +18 -13
  296. package/src/core/config/config-manager.ts +133 -0
  297. package/src/core/config/config-sources.ts +600 -0
  298. package/src/core/config/config-validator.ts +1116 -0
  299. package/src/core/config/file-loader.ts +16 -273
  300. package/src/core/config/index.ts +83 -34
  301. package/src/core/config/schema.ts +47 -33
  302. package/src/core/config/utils.ts +24 -31
  303. package/src/core/database/README.md +26 -16
  304. package/src/core/database/adapters/drizzle.ts +18 -6
  305. package/src/core/database/adapters/index.ts +13 -13
  306. package/src/core/database/adapters/mongodb.ts +53 -5
  307. package/src/core/database/adapters/mysql.ts +32 -4
  308. package/src/core/database/adapters/postgresql.ts +30 -5
  309. package/src/core/database/adapters/redis.ts +61 -8
  310. package/src/core/database/adapters/sqlite.ts +19 -3
  311. package/src/core/database/index.ts +2 -2
  312. package/src/core/docs/index.ts +8 -8
  313. package/src/core/docs/openapi-generator.ts +4 -4
  314. package/src/core/docs/schema-to-openapi.ts +3 -6
  315. package/src/core/docs/simple-docs.ts +2 -2
  316. package/src/core/docs/swagger-ui.ts +19 -16
  317. package/src/core/docs/zod-to-openapi.ts +34 -34
  318. package/src/core/events/event-bus.ts +3 -3
  319. package/src/core/events/index.ts +2 -2
  320. package/src/core/framework.ts +320 -71
  321. package/src/core/http/http-server.ts +203 -143
  322. package/src/core/http/index.ts +4 -3
  323. package/src/core/http/uws-http-server.ts +591 -0
  324. package/src/core/logger/filters.ts +13 -5
  325. package/src/core/logger/index.ts +4 -3
  326. package/src/core/logger/logger.ts +435 -216
  327. package/src/core/logger/outputs.ts +1 -3
  328. package/src/core/middleware/built-in/adapters/cache/file.ts +3 -3
  329. package/src/core/middleware/built-in/adapters/cache/index.ts +7 -7
  330. package/src/core/middleware/built-in/adapters/cache/memory.ts +2 -2
  331. package/src/core/middleware/built-in/adapters/cache/redis.ts +18 -4
  332. package/src/core/middleware/built-in/adapters/cdn/azure.ts +2 -2
  333. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +2 -2
  334. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +16 -5
  335. package/src/core/middleware/built-in/adapters/cdn/index.ts +7 -7
  336. package/src/core/middleware/built-in/adapters/index.ts +4 -4
  337. package/src/core/middleware/built-in/auth-helpers.ts +1 -1
  338. package/src/core/middleware/built-in/auth-providers.ts +1 -1
  339. package/src/core/middleware/built-in/auth.ts +102 -21
  340. package/src/core/middleware/built-in/cache.ts +8 -6
  341. package/src/core/middleware/built-in/cdn.ts +4 -4
  342. package/src/core/middleware/built-in/cookie.ts +2 -2
  343. package/src/core/middleware/built-in/cors.ts +2 -2
  344. package/src/core/middleware/built-in/csp.ts +3 -3
  345. package/src/core/middleware/built-in/csrf.ts +3 -3
  346. package/src/core/middleware/built-in/error-tracker.ts +1 -1
  347. package/src/core/middleware/built-in/index.ts +38 -30
  348. package/src/core/middleware/built-in/jwt-helpers.ts +243 -0
  349. package/src/core/middleware/built-in/performance-monitor.ts +1 -1
  350. package/src/core/middleware/built-in/rate-limit.ts +2 -2
  351. package/src/core/middleware/built-in/request-logger.ts +3 -1
  352. package/src/core/middleware/built-in/session.ts +7 -8
  353. package/src/core/middleware/built-in/sse.ts +11 -9
  354. package/src/core/middleware/built-in/validation.ts +2 -2
  355. package/src/core/middleware/index.ts +6 -6
  356. package/src/core/modules/auto-discovery.ts +478 -15
  357. package/src/core/modules/index.ts +2 -2
  358. package/src/core/modules/modules.ts +23 -12
  359. package/src/core/networking/adapters/index.ts +4 -3
  360. package/src/core/networking/adapters/socketio-adapter.ts +5 -3
  361. package/src/core/networking/adapters/uws-adapter.ts +619 -0
  362. package/src/core/networking/adapters/ws-adapter.ts +8 -9
  363. package/src/core/networking/index.ts +3 -2
  364. package/src/core/networking/service-discovery.ts +6 -7
  365. package/src/core/networking/websocket-manager.ts +7 -7
  366. package/src/core/pooling/object-pool-manager.ts +630 -0
  367. package/src/core/routing/app-integration.ts +60 -112
  368. package/src/core/routing/index.ts +66 -293
  369. package/src/core/routing/path-matcher.ts +222 -0
  370. package/src/core/routing/router.ts +97 -0
  371. package/src/core/routing/unified-router.ts +870 -0
  372. package/src/core/runtime/aws-lambda-adapter.ts +3 -3
  373. package/src/core/runtime/base-adapter.ts +2 -2
  374. package/src/core/runtime/cloudflare-workers-adapter.ts +3 -3
  375. package/src/core/runtime/index.ts +13 -13
  376. package/src/core/runtime/node-adapter.ts +16 -10
  377. package/src/core/runtime/vercel-edge-adapter.ts +3 -3
  378. package/src/core/utilities/hooks.ts +3 -3
  379. package/src/core/utilities/index.ts +5 -4
  380. package/src/core/utilities/package-utils.ts +59 -0
  381. package/src/core/validation/adapters.ts +1 -1
  382. package/src/core/validation/index.ts +68 -16
  383. package/src/index.ts +73 -66
  384. package/src/moro.ts +784 -253
  385. package/src/types/config.ts +74 -2
  386. package/src/types/core.ts +49 -47
  387. package/src/types/hooks.ts +1 -1
  388. package/src/types/http.ts +23 -1
  389. package/src/types/logger.ts +9 -0
  390. package/src/types/module.ts +12 -0
  391. package/src/types/runtime.ts +1 -1
  392. package/tsconfig.json +4 -2
  393. package/dist/core/config/loader.d.ts +0 -7
  394. package/dist/core/config/loader.js +0 -269
  395. package/dist/core/config/loader.js.map +0 -1
  396. package/dist/core/config/validation.d.ts +0 -17
  397. package/dist/core/config/validation.js +0 -131
  398. package/dist/core/config/validation.js.map +0 -1
  399. package/dist/core/http/router.d.ts +0 -14
  400. package/dist/core/http/router.js +0 -109
  401. package/dist/core/http/router.js.map +0 -1
  402. package/src/core/config/loader.ts +0 -633
  403. package/src/core/config/validation.ts +0 -140
  404. package/src/core/http/router.ts +0 -141
@@ -1,7 +1,7 @@
1
1
  // Advanced Logger Outputs
2
2
  import { writeFile, appendFile, mkdir } from 'fs/promises';
3
3
  import { join, dirname } from 'path';
4
- import { LogEntry, LogOutput } from '../../types/logger';
4
+ import { LogEntry, LogOutput } from '../../types/logger.js';
5
5
 
6
6
  // File output for persistent logging
7
7
  export class FileOutput implements LogOutput {
@@ -29,7 +29,6 @@ export class FileOutput implements LogOutput {
29
29
 
30
30
  // TODO: Implement log rotation if needed
31
31
  } catch (error) {
32
- // Use console.error as fallback since this is the logger itself
33
32
  console.error('File logger error:', error);
34
33
  }
35
34
  }
@@ -77,7 +76,6 @@ export class WebhookOutput implements LogOutput {
77
76
  throw new Error(`Webhook failed: ${response.status}`);
78
77
  }
79
78
  } catch (error) {
80
- // Use console.error as fallback since this is the logger itself
81
79
  console.error('Webhook logger error:', error);
82
80
  }
83
81
  }
@@ -1,6 +1,7 @@
1
1
  // File System Cache Adapter
2
- import { CacheAdapter } from '../../../../../types/cache';
3
- import { createFrameworkLogger } from '../../../../logger';
2
+ import { CacheAdapter } from '../../../../../types/cache.js';
3
+ import { createFrameworkLogger } from '../../../../logger/index.js';
4
+ import crypto from 'crypto';
4
5
 
5
6
  const logger = createFrameworkLogger('FileCacheAdapter');
6
7
 
@@ -22,7 +23,6 @@ export class FileCacheAdapter implements CacheAdapter {
22
23
  }
23
24
 
24
25
  private getFilePath(key: string): string {
25
- const crypto = require('crypto');
26
26
  const hash = crypto.createHash('md5').update(key).digest('hex');
27
27
  return `${this.cacheDir}/${hash}.json`;
28
28
  }
@@ -1,12 +1,12 @@
1
1
  // Cache Adapters
2
- export { MemoryCacheAdapter } from './memory';
3
- export { RedisCacheAdapter } from './redis';
4
- export { FileCacheAdapter } from './file';
2
+ export { MemoryCacheAdapter } from './memory.js';
3
+ export { RedisCacheAdapter } from './redis.js';
4
+ export { FileCacheAdapter } from './file.js';
5
5
 
6
- import { MemoryCacheAdapter } from './memory';
7
- import { RedisCacheAdapter } from './redis';
8
- import { FileCacheAdapter } from './file';
9
- import { CacheAdapter } from '../../../../../types/cache';
6
+ import { MemoryCacheAdapter } from './memory.js';
7
+ import { RedisCacheAdapter } from './redis.js';
8
+ import { FileCacheAdapter } from './file.js';
9
+ import { CacheAdapter } from '../../../../../types/cache.js';
10
10
 
11
11
  // Adapter factory function for auto-loading
12
12
  export function createCacheAdapter(type: string, options: any = {}): CacheAdapter {
@@ -1,6 +1,6 @@
1
1
  // Memory Cache Adapter
2
- import { CacheAdapter } from '../../../../../types/cache';
3
- import { createFrameworkLogger } from '../../../../logger';
2
+ import { CacheAdapter } from '../../../../../types/cache.js';
3
+ import { createFrameworkLogger } from '../../../../logger/index.js';
4
4
 
5
5
  const logger = createFrameworkLogger('MemoryCacheAdapter');
6
6
 
@@ -1,6 +1,7 @@
1
1
  // Redis Cache Adapter
2
- import { CacheAdapter } from '../../../../../types/cache';
3
- import { createFrameworkLogger } from '../../../../logger';
2
+ import { CacheAdapter } from '../../../../../types/cache.js';
3
+ import { createFrameworkLogger } from '../../../../logger/index.js';
4
+ import { resolveUserPackage } from '../../../../utilities/package-utils.js';
4
5
 
5
6
  const logger = createFrameworkLogger('RedisCacheAdapter');
6
7
 
@@ -16,9 +17,22 @@ export class RedisCacheAdapter implements CacheAdapter {
16
17
  keyPrefix?: string;
17
18
  } = {}
18
19
  ) {
20
+ this.initPromise = this.initialize(options);
21
+ }
22
+
23
+ private initPromise: Promise<void>;
24
+
25
+ private async initialize(options: {
26
+ host?: string;
27
+ port?: number;
28
+ password?: string;
29
+ db?: number;
30
+ keyPrefix?: string;
31
+ }): Promise<void> {
19
32
  try {
20
- const redis = require('redis');
21
- this.client = redis.createClient({
33
+ const redisPath = resolveUserPackage('redis');
34
+ const redis = await import(redisPath);
35
+ this.client = redis.default.createClient({
22
36
  host: options.host || 'localhost',
23
37
  port: options.port || 6379,
24
38
  password: options.password,
@@ -1,6 +1,6 @@
1
1
  // Azure CDN Adapter
2
- import { CDNAdapter } from '../../../../../types/cdn';
3
- import { createFrameworkLogger } from '../../../../logger';
2
+ import { CDNAdapter } from '../../../../../types/cdn.js';
3
+ import { createFrameworkLogger } from '../../../../logger/index.js';
4
4
 
5
5
  const logger = createFrameworkLogger('AzureCDNAdapter');
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Cloudflare CDN Adapter
2
- import { CDNAdapter } from '../../../../../types/cdn';
3
- import { createFrameworkLogger } from '../../../../logger';
2
+ import { CDNAdapter } from '../../../../../types/cdn.js';
3
+ import { createFrameworkLogger } from '../../../../logger/index.js';
4
4
 
5
5
  const logger = createFrameworkLogger('CloudflareCDNAdapter');
6
6
 
@@ -1,6 +1,7 @@
1
1
  // AWS CloudFront CDN Adapter
2
- import { CDNAdapter } from '../../../../../types/cdn';
3
- import { createFrameworkLogger } from '../../../../logger';
2
+ import { CDNAdapter } from '../../../../../types/cdn.js';
3
+ import { createFrameworkLogger } from '../../../../logger/index.js';
4
+ import { resolveUserPackage } from '../../../../utilities/package-utils.js';
4
5
 
5
6
  const logger = createFrameworkLogger('CloudFrontCDNAdapter');
6
7
 
@@ -15,16 +16,26 @@ export class CloudFrontCDNAdapter implements CDNAdapter {
15
16
  distributionId: string;
16
17
  }) {
17
18
  this.distributionId = options.distributionId;
19
+ this.initPromise = this.initialize(options);
20
+ }
21
+
22
+ private initPromise: Promise<void>;
18
23
 
24
+ private async initialize(options: {
25
+ accessKeyId: string;
26
+ secretAccessKey: string;
27
+ region: string;
28
+ }): Promise<void> {
19
29
  try {
20
- const AWS = require('aws-sdk');
21
- AWS.config.update({
30
+ const awsPath = resolveUserPackage('aws-sdk');
31
+ const AWS = await import(awsPath);
32
+ AWS.default.config.update({
22
33
  accessKeyId: options.accessKeyId,
23
34
  secretAccessKey: options.secretAccessKey,
24
35
  region: options.region,
25
36
  });
26
37
 
27
- this.cloudfront = new AWS.CloudFront();
38
+ this.cloudfront = new AWS.default.CloudFront();
28
39
  logger.info('CloudFront CDN adapter initialized', 'CloudFront');
29
40
  } catch (error) {
30
41
  logger.error('AWS SDK not available', 'CloudFront');
@@ -1,12 +1,12 @@
1
1
  // CDN Adapters
2
- export { CloudflareCDNAdapter } from './cloudflare';
3
- export { CloudFrontCDNAdapter } from './cloudfront';
4
- export { AzureCDNAdapter } from './azure';
2
+ export { CloudflareCDNAdapter } from './cloudflare.js';
3
+ export { CloudFrontCDNAdapter } from './cloudfront.js';
4
+ export { AzureCDNAdapter } from './azure.js';
5
5
 
6
- import { CloudflareCDNAdapter } from './cloudflare';
7
- import { CloudFrontCDNAdapter } from './cloudfront';
8
- import { AzureCDNAdapter } from './azure';
9
- import { CDNAdapter } from '../../../../../types/cdn';
6
+ import { CloudflareCDNAdapter } from './cloudflare.js';
7
+ import { CloudFrontCDNAdapter } from './cloudfront.js';
8
+ import { AzureCDNAdapter } from './azure.js';
9
+ import { CDNAdapter } from '../../../../../types/cdn.js';
10
10
 
11
11
  // Adapter factory function for auto-loading
12
12
  export function createCDNAdapter(type: string, options: any = {}): CDNAdapter {
@@ -1,7 +1,7 @@
1
1
  // Adapters Index
2
- export * from './cache';
3
- export * from './cdn';
2
+ export * from './cache/index.js';
3
+ export * from './cdn/index.js';
4
4
 
5
5
  // Re-export factory functions for convenience
6
- export { createCacheAdapter } from './cache';
7
- export { createCDNAdapter } from './cdn';
6
+ export { createCacheAdapter } from './cache/index.js';
7
+ export { createCDNAdapter } from './cdn/index.js';
@@ -1,5 +1,5 @@
1
1
  // Auth Helper Middleware and Utilities
2
- import { AuthRequest } from '../../../types/auth';
2
+ import { AuthRequest } from '../../../types/auth.js';
3
3
 
4
4
  export interface AuthGuardOptions {
5
5
  redirectTo?: string;
@@ -1,5 +1,5 @@
1
1
  // Extended Auth.js Provider Configurations
2
- import { AuthProvider } from '../../../types/auth';
2
+ import { AuthProvider } from '../../../types/auth.js';
3
3
 
4
4
  /**
5
5
  * Popular OAuth Providers for Auth.js
@@ -1,7 +1,8 @@
1
1
  // Auth.js Authentication Middleware
2
2
 
3
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
4
- import { createFrameworkLogger } from '../../logger';
3
+ import crypto from 'crypto';
4
+ import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
5
+ import { createFrameworkLogger } from '../../logger/index.js';
5
6
  import {
6
7
  AuthOptions,
7
8
  AuthProvider,
@@ -11,7 +12,8 @@ import {
11
12
  OAuthProvider,
12
13
  CredentialsProvider,
13
14
  EmailProvider,
14
- } from '../../../types/auth';
15
+ } from '../../../types/auth.js';
16
+ import { safeVerifyJWT, createAuthErrorResponse } from './jwt-helpers.js';
15
17
 
16
18
  const logger = createFrameworkLogger('AuthMiddleware');
17
19
 
@@ -151,7 +153,15 @@ export const auth = (options: AuthOptions): MiddlewareInterface => ({
151
153
  return authInstance.getSession({ req });
152
154
  },
153
155
  getToken: async () => {
154
- return authInstance.verifyJWT(authRequest.token || '');
156
+ try {
157
+ return authInstance.verifyJWT(authRequest.token || '');
158
+ } catch (error: any) {
159
+ // Handle JWT errors gracefully in getToken method
160
+ logger.debug('Failed to verify token in getToken', 'TokenValidation', {
161
+ error: error.message,
162
+ });
163
+ return null;
164
+ }
155
165
  },
156
166
  getCsrfToken: async () => {
157
167
  return authInstance.getCsrfToken();
@@ -177,8 +187,60 @@ export const auth = (options: AuthOptions): MiddlewareInterface => ({
177
187
  if (decoded) {
178
188
  session = await authInstance.getSession({ req: { ...req, token } });
179
189
  }
180
- } catch (error) {
181
- logger.debug('Invalid JWT token', 'TokenValidation', { error });
190
+ } catch (error: any) {
191
+ // Handle specific JWT errors gracefully and return proper HTTP responses
192
+ if (error.name === 'TokenExpiredError') {
193
+ logger.debug('JWT token expired', 'TokenValidation', {
194
+ message: error.message,
195
+ expiredAt: error.expiredAt,
196
+ });
197
+
198
+ // If this is a protected route request, return a proper 401 response
199
+ if (req.headers.accept?.includes('application/json')) {
200
+ return res.status(401).json(
201
+ createAuthErrorResponse({
202
+ type: 'expired',
203
+ message: error.message,
204
+ expiredAt: error.expiredAt,
205
+ })
206
+ );
207
+ }
208
+ } else if (error.name === 'JsonWebTokenError') {
209
+ logger.debug('Invalid JWT token format', 'TokenValidation', {
210
+ message: error.message,
211
+ });
212
+
213
+ // If this is a protected route request, return a proper 401 response
214
+ if (req.headers.accept?.includes('application/json')) {
215
+ return res.status(401).json(
216
+ createAuthErrorResponse({
217
+ type: 'invalid',
218
+ message: error.message,
219
+ })
220
+ );
221
+ }
222
+ } else if (error.name === 'NotBeforeError') {
223
+ logger.debug('JWT token not active yet', 'TokenValidation', {
224
+ message: error.message,
225
+ date: error.date,
226
+ });
227
+
228
+ // If this is a protected route request, return a proper 401 response
229
+ if (req.headers.accept?.includes('application/json')) {
230
+ return res.status(401).json(
231
+ createAuthErrorResponse({
232
+ type: 'malformed',
233
+ message: error.message,
234
+ date: error.date,
235
+ })
236
+ );
237
+ }
238
+ } else {
239
+ logger.debug('JWT token validation failed', 'TokenValidation', {
240
+ error: error.message || error,
241
+ });
242
+ }
243
+ // Continue with unauthenticated state for non-API requests
182
244
  }
183
245
  }
184
246
 
@@ -229,11 +291,11 @@ export const auth = (options: AuthOptions): MiddlewareInterface => ({
229
291
  },
230
292
  });
231
293
 
232
- // Mock Auth.js implementation (would be replaced with actual Auth.js)
294
+ // Auth.js implementation with proper JWT handling
233
295
  async function initializeAuthJS(config: AuthOptions): Promise<any> {
234
296
  return {
235
297
  handler: async (req: any, res: any) => {
236
- // Mock Auth.js request handler
298
+ // Basic Auth.js request handler
237
299
  const path = req.url.replace(config.basePath!, '');
238
300
 
239
301
  if (path.startsWith('/signin')) {
@@ -254,7 +316,7 @@ async function initializeAuthJS(config: AuthOptions): Promise<any> {
254
316
  },
255
317
 
256
318
  getSession: async ({ req }: { req: any }) => {
257
- // Mock session retrieval
319
+ // Basic session retrieval
258
320
  const sessionId =
259
321
  req.cookies?.['next-auth.session-token'] ||
260
322
  req.cookies?.['__Secure-next-auth.session-token'];
@@ -270,34 +332,53 @@ async function initializeAuthJS(config: AuthOptions): Promise<any> {
270
332
  },
271
333
 
272
334
  verifyJWT: async (token: string) => {
273
- // Mock JWT verification
274
- try {
275
- // In real implementation, use jose or jsonwebtoken
276
- const payload = JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString());
277
- return payload;
278
- } catch {
279
- return null;
335
+ const secret = process.env.JWT_SECRET || config.jwt?.secret || config.secret || '';
336
+
337
+ // Use the safe JWT verification function
338
+ const result = await safeVerifyJWT(token, secret);
339
+
340
+ if (!result.success) {
341
+ // Create a custom error that includes the structured error information
342
+ const customError = new Error(result.error?.message || 'JWT verification failed');
343
+
344
+ // Add the error type information for upstream handling
345
+ (customError as any).jwtErrorType = result.error?.type;
346
+ (customError as any).jwtErrorDetails = result.error;
347
+
348
+ // Map the safe error types back to standard JWT error names for compatibility
349
+ if (result.error?.type === 'expired') {
350
+ customError.name = 'TokenExpiredError';
351
+ (customError as any).expiredAt = result.error.expiredAt;
352
+ } else if (result.error?.type === 'invalid') {
353
+ customError.name = 'JsonWebTokenError';
354
+ } else if (result.error?.type === 'malformed') {
355
+ customError.name = 'NotBeforeError';
356
+ (customError as any).date = result.error.date;
357
+ }
358
+
359
+ throw customError;
280
360
  }
361
+
362
+ return result.payload;
281
363
  },
282
364
 
283
365
  signIn: async (provider?: string, options?: any) => {
284
- // Mock sign in
366
+ // Basic sign in redirect
285
367
  return { url: `${config.basePath}/signin${provider ? `/${provider}` : ''}` };
286
368
  },
287
369
 
288
370
  signOut: async (options?: any) => {
289
- // Mock sign out
371
+ // Basic sign out redirect
290
372
  return { url: `${config.basePath}/signout` };
291
373
  },
292
374
 
293
375
  updateSession: async (session: any) => {
294
- // Mock session update
376
+ // Basic session update
295
377
  return session;
296
378
  },
297
379
 
298
380
  getCsrfToken: async () => {
299
- // Mock CSRF token generation
300
- const crypto = require('crypto');
381
+ // Basic CSRF token generation
301
382
  return crypto.randomBytes(32).toString('hex');
302
383
  },
303
384
  };
@@ -1,8 +1,9 @@
1
1
  // Built-in Cache Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { CacheAdapter, CacheOptions, CachedResponse } from '../../../types/cache';
4
- import { createFrameworkLogger } from '../../logger';
5
- import { createCacheAdapter } from './adapters/cache';
2
+ import crypto from 'crypto';
3
+ import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
4
+ import { CacheAdapter, CacheOptions, CachedResponse } from '../../../types/cache.js';
5
+ import { createFrameworkLogger } from '../../logger/index.js';
6
+ import { createCacheAdapter } from './adapters/cache/index.js';
6
7
 
7
8
  const logger = createFrameworkLogger('CacheMiddleware');
8
9
 
@@ -188,14 +189,15 @@ export const cache = (options: CacheOptions = {}): MiddlewareInterface => ({
188
189
  parts.push(`stale-while-revalidate=${directives.staleWhileRevalidate}`);
189
190
  }
190
191
 
191
- res.setHeader('Cache-Control', parts.join(', '));
192
+ if (!res.headersSent) {
193
+ res.setHeader('Cache-Control', parts.join(', '));
194
+ }
192
195
  return res;
193
196
  };
194
197
 
195
198
  // Add ETag generation
196
199
  if (options.etag !== false) {
197
200
  res.generateETag = (content: string | Buffer) => {
198
- const crypto = require('crypto');
199
201
  const hash = crypto.createHash('md5').update(content).digest('hex');
200
202
  const prefix = options.etag === 'weak' ? 'W/' : '';
201
203
  return `${prefix}"${hash}"`;
@@ -1,8 +1,8 @@
1
1
  // Built-in CDN Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { CDNAdapter, CDNOptions } from '../../../types/cdn';
4
- import { createFrameworkLogger } from '../../logger';
5
- import { createCDNAdapter } from './adapters/cdn';
2
+ import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
3
+ import { CDNAdapter, CDNOptions } from '../../../types/cdn.js';
4
+ import { createFrameworkLogger } from '../../logger/index.js';
5
+ import { createCDNAdapter } from './adapters/cdn/index.js';
6
6
 
7
7
  const logger = createFrameworkLogger('CDNMiddleware');
8
8
 
@@ -1,6 +1,6 @@
1
1
  // Cookie Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { createFrameworkLogger } from '../../logger';
2
+ import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
3
+ import { createFrameworkLogger } from '../../logger/index.js';
4
4
 
5
5
  const logger = createFrameworkLogger('CookieMiddleware');
6
6
 
@@ -1,6 +1,6 @@
1
1
  // CORS Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { createFrameworkLogger } from '../../logger';
2
+ import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
3
+ import { createFrameworkLogger } from '../../logger/index.js';
4
4
 
5
5
  const logger = createFrameworkLogger('CorsMiddleware');
6
6
 
@@ -1,6 +1,7 @@
1
1
  // Content Security Policy Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { createFrameworkLogger } from '../../logger';
2
+ import crypto from 'crypto';
3
+ import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
4
+ import { createFrameworkLogger } from '../../logger/index.js';
4
5
 
5
6
  const logger = createFrameworkLogger('CSPMiddleware');
6
7
 
@@ -58,7 +59,6 @@ export const csp = (
58
59
  // Generate nonce if requested
59
60
  let nonce: string | undefined;
60
61
  if (options.nonce) {
61
- const crypto = require('crypto');
62
62
  nonce = crypto.randomBytes(16).toString('base64');
63
63
  req.cspNonce = nonce;
64
64
  }
@@ -1,6 +1,7 @@
1
1
  // CSRF Protection Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { createFrameworkLogger } from '../../logger';
2
+ import crypto from 'crypto';
3
+ import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
4
+ import { createFrameworkLogger } from '../../logger/index.js';
4
5
 
5
6
  const logger = createFrameworkLogger('CSRFMiddleware');
6
7
 
@@ -33,7 +34,6 @@ export const csrf = (
33
34
  const ignoreMethods = options.ignoreMethods || ['GET', 'HEAD', 'OPTIONS'];
34
35
 
35
36
  const generateToken = () => {
36
- const crypto = require('crypto');
37
37
  return crypto.randomBytes(tokenLength).toString('hex');
38
38
  };
39
39
 
@@ -1,5 +1,5 @@
1
1
  // Error tracking middleware
2
- import { createFrameworkLogger } from '../../logger';
2
+ import { createFrameworkLogger } from '../../logger/index.js';
3
3
 
4
4
  const logger = createFrameworkLogger('ErrorTracker');
5
5
 
@@ -1,22 +1,22 @@
1
1
  // Built-in Middleware Exports
2
- export { auth } from './auth';
3
- export { rateLimit } from './rate-limit';
4
- export { cors } from './cors';
5
- export { validation } from './validation';
6
- export { requestLogger } from './request-logger';
7
- export { performanceMonitor } from './performance-monitor';
8
- export { errorTracker } from './error-tracker';
2
+ export { auth } from './auth.js';
3
+ export { rateLimit } from './rate-limit.js';
4
+ export { cors } from './cors.js';
5
+ export { validation } from './validation.js';
6
+ export { requestLogger } from './request-logger.js';
7
+ export { performanceMonitor } from './performance-monitor.js';
8
+ export { errorTracker } from './error-tracker.js';
9
9
 
10
10
  // Advanced Security & Performance Middleware
11
- export { cookie } from './cookie';
12
- export { csrf } from './csrf';
13
- export { csp } from './csp';
14
- export { sse } from './sse';
15
- export { session } from './session';
11
+ export { cookie } from './cookie.js';
12
+ export { csrf } from './csrf.js';
13
+ export { csp } from './csp.js';
14
+ export { sse } from './sse.js';
15
+ export { session } from './session.js';
16
16
 
17
17
  // Clean Architecture Middleware
18
- export { cache } from './cache';
19
- export { cdn } from './cdn';
18
+ export { cache } from './cache.js';
19
+ export { cdn } from './cdn.js';
20
20
 
21
21
  // Auth Helpers and Extended Providers
22
22
  export {
@@ -31,30 +31,38 @@ export {
31
31
  authUtils,
32
32
  authResponses,
33
33
  sessionHelpers,
34
- } from './auth-helpers';
34
+ } from './auth-helpers.js';
35
+
36
+ // JWT Utilities for Custom Middleware
37
+ export {
38
+ safeVerifyJWT,
39
+ extractJWTFromHeader,
40
+ createAuthErrorResponse,
41
+ type JWTVerificationResult,
42
+ } from './jwt-helpers.js';
35
43
 
36
44
  export {
37
45
  extendedProviders,
38
46
  enterpriseProviders,
39
47
  createCustomOAuthProvider,
40
48
  createCustomOIDCProvider,
41
- } from './auth-providers';
49
+ } from './auth-providers.js';
42
50
 
43
51
  // Import for collections
44
- import { auth } from './auth';
45
- import { rateLimit } from './rate-limit';
46
- import { cors } from './cors';
47
- import { validation } from './validation';
48
- import { requestLogger } from './request-logger';
49
- import { performanceMonitor } from './performance-monitor';
50
- import { errorTracker } from './error-tracker';
51
- import { cookie } from './cookie';
52
- import { csrf } from './csrf';
53
- import { csp } from './csp';
54
- import { sse } from './sse';
55
- import { session } from './session';
56
- import { cache } from './cache';
57
- import { cdn } from './cdn';
52
+ import { auth } from './auth.js';
53
+ import { rateLimit } from './rate-limit.js';
54
+ import { cors } from './cors.js';
55
+ import { validation } from './validation.js';
56
+ import { requestLogger } from './request-logger.js';
57
+ import { performanceMonitor } from './performance-monitor.js';
58
+ import { errorTracker } from './error-tracker.js';
59
+ import { cookie } from './cookie.js';
60
+ import { csrf } from './csrf.js';
61
+ import { csp } from './csp.js';
62
+ import { sse } from './sse.js';
63
+ import { session } from './session.js';
64
+ import { cache } from './cache.js';
65
+ import { cdn } from './cdn.js';
58
66
 
59
67
  export const builtInMiddleware = {
60
68
  auth,