@morojs/moro 1.5.16 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/README.md +70 -269
  2. package/dist/core/auth/morojs-adapter.js +5 -9
  3. package/dist/core/auth/morojs-adapter.js.map +1 -1
  4. package/dist/core/config/config-manager.d.ts +1 -1
  5. package/dist/core/config/config-manager.js +10 -20
  6. package/dist/core/config/config-manager.js.map +1 -1
  7. package/dist/core/config/config-sources.d.ts +2 -2
  8. package/dist/core/config/config-sources.js +17 -20
  9. package/dist/core/config/config-sources.js.map +1 -1
  10. package/dist/core/config/config-validator.d.ts +1 -1
  11. package/dist/core/config/config-validator.js +33 -10
  12. package/dist/core/config/config-validator.js.map +1 -1
  13. package/dist/core/config/file-loader.d.ts +1 -1
  14. package/dist/core/config/file-loader.js +19 -78
  15. package/dist/core/config/file-loader.js.map +1 -1
  16. package/dist/core/config/index.d.ts +8 -8
  17. package/dist/core/config/index.js +25 -51
  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 +11 -13
  21. package/dist/core/config/schema.js.map +1 -1
  22. package/dist/core/config/utils.d.ts +1 -1
  23. package/dist/core/config/utils.js +18 -32
  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 +3 -1
  32. package/dist/core/database/adapters/mongodb.js +23 -8
  33. package/dist/core/database/adapters/mongodb.js.map +1 -1
  34. package/dist/core/database/adapters/mysql.d.ts +3 -1
  35. package/dist/core/database/adapters/mysql.js +18 -9
  36. package/dist/core/database/adapters/mysql.js.map +1 -1
  37. package/dist/core/database/adapters/postgresql.d.ts +3 -1
  38. package/dist/core/database/adapters/postgresql.js +18 -8
  39. package/dist/core/database/adapters/postgresql.js.map +1 -1
  40. package/dist/core/database/adapters/redis.d.ts +3 -1
  41. package/dist/core/database/adapters/redis.js +34 -9
  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 +6 -10
  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 +16 -6
  73. package/dist/core/framework.js +182 -92
  74. package/dist/core/framework.js.map +1 -1
  75. package/dist/core/http/http-server.d.ts +1 -1
  76. package/dist/core/http/http-server.js +26 -209
  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/router.d.ts +1 -1
  82. package/dist/core/http/router.js +3 -7
  83. package/dist/core/http/router.js.map +1 -1
  84. package/dist/core/http/uws-http-server.d.ts +64 -0
  85. package/dist/core/http/uws-http-server.js +688 -0
  86. package/dist/core/http/uws-http-server.js.map +1 -0
  87. package/dist/core/logger/filters.d.ts +1 -1
  88. package/dist/core/logger/filters.js +8 -19
  89. package/dist/core/logger/filters.js.map +1 -1
  90. package/dist/core/logger/index.d.ts +3 -3
  91. package/dist/core/logger/index.js +2 -25
  92. package/dist/core/logger/index.js.map +1 -1
  93. package/dist/core/logger/logger.d.ts +1 -1
  94. package/dist/core/logger/logger.js +21 -23
  95. package/dist/core/logger/logger.js.map +1 -1
  96. package/dist/core/logger/outputs.d.ts +1 -1
  97. package/dist/core/logger/outputs.js +8 -15
  98. package/dist/core/logger/outputs.js.map +1 -1
  99. package/dist/core/middleware/built-in/adapters/cache/file.d.ts +1 -1
  100. package/dist/core/middleware/built-in/adapters/cache/file.js +10 -47
  101. package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -1
  102. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +4 -4
  103. package/dist/core/middleware/built-in/adapters/cache/index.js +10 -17
  104. package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -1
  105. package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +1 -1
  106. package/dist/core/middleware/built-in/adapters/cache/memory.js +3 -7
  107. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
  108. package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +3 -1
  109. package/dist/core/middleware/built-in/adapters/cache/redis.js +11 -9
  110. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -1
  111. package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +1 -1
  112. package/dist/core/middleware/built-in/adapters/cdn/azure.js +3 -7
  113. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -1
  114. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +1 -1
  115. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +3 -7
  116. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
  117. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +3 -1
  118. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +12 -10
  119. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -1
  120. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +4 -4
  121. package/dist/core/middleware/built-in/adapters/cdn/index.js +10 -17
  122. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +1 -1
  123. package/dist/core/middleware/built-in/adapters/index.d.ts +4 -4
  124. package/dist/core/middleware/built-in/adapters/index.js +4 -23
  125. package/dist/core/middleware/built-in/adapters/index.js.map +1 -1
  126. package/dist/core/middleware/built-in/auth-helpers.js +11 -22
  127. package/dist/core/middleware/built-in/auth-helpers.js.map +1 -1
  128. package/dist/core/middleware/built-in/auth-providers.d.ts +1 -1
  129. package/dist/core/middleware/built-in/auth-providers.js +4 -9
  130. package/dist/core/middleware/built-in/auth-providers.js.map +1 -1
  131. package/dist/core/middleware/built-in/auth.d.ts +2 -2
  132. package/dist/core/middleware/built-in/auth.js +51 -44
  133. package/dist/core/middleware/built-in/auth.js.map +1 -1
  134. package/dist/core/middleware/built-in/cache.d.ts +2 -2
  135. package/dist/core/middleware/built-in/cache.js +8 -11
  136. package/dist/core/middleware/built-in/cache.js.map +1 -1
  137. package/dist/core/middleware/built-in/cdn.d.ts +2 -2
  138. package/dist/core/middleware/built-in/cdn.js +5 -9
  139. package/dist/core/middleware/built-in/cdn.js.map +1 -1
  140. package/dist/core/middleware/built-in/cookie.d.ts +1 -1
  141. package/dist/core/middleware/built-in/cookie.js +3 -7
  142. package/dist/core/middleware/built-in/cookie.js.map +1 -1
  143. package/dist/core/middleware/built-in/cors.d.ts +1 -1
  144. package/dist/core/middleware/built-in/cors.js +3 -7
  145. package/dist/core/middleware/built-in/cors.js.map +1 -1
  146. package/dist/core/middleware/built-in/csp.d.ts +1 -1
  147. package/dist/core/middleware/built-in/csp.js +5 -8
  148. package/dist/core/middleware/built-in/csp.js.map +1 -1
  149. package/dist/core/middleware/built-in/csrf.d.ts +1 -1
  150. package/dist/core/middleware/built-in/csrf.js +5 -8
  151. package/dist/core/middleware/built-in/csrf.js.map +1 -1
  152. package/dist/core/middleware/built-in/error-tracker.js +3 -7
  153. package/dist/core/middleware/built-in/error-tracker.js.map +1 -1
  154. package/dist/core/middleware/built-in/index.d.ts +28 -28
  155. package/dist/core/middleware/built-in/index.js +47 -82
  156. package/dist/core/middleware/built-in/index.js.map +1 -1
  157. package/dist/core/middleware/built-in/jwt-helpers.d.ts +27 -2
  158. package/dist/core/middleware/built-in/jwt-helpers.js +32 -10
  159. package/dist/core/middleware/built-in/jwt-helpers.js.map +1 -1
  160. package/dist/core/middleware/built-in/performance-monitor.js +3 -7
  161. package/dist/core/middleware/built-in/performance-monitor.js.map +1 -1
  162. package/dist/core/middleware/built-in/rate-limit.d.ts +1 -1
  163. package/dist/core/middleware/built-in/rate-limit.js +3 -7
  164. package/dist/core/middleware/built-in/rate-limit.js.map +1 -1
  165. package/dist/core/middleware/built-in/request-logger.js +3 -7
  166. package/dist/core/middleware/built-in/request-logger.js.map +1 -1
  167. package/dist/core/middleware/built-in/session.d.ts +2 -2
  168. package/dist/core/middleware/built-in/session.js +11 -15
  169. package/dist/core/middleware/built-in/session.js.map +1 -1
  170. package/dist/core/middleware/built-in/sse.d.ts +1 -1
  171. package/dist/core/middleware/built-in/sse.js +3 -7
  172. package/dist/core/middleware/built-in/sse.js.map +1 -1
  173. package/dist/core/middleware/built-in/validation.d.ts +1 -1
  174. package/dist/core/middleware/built-in/validation.js +3 -7
  175. package/dist/core/middleware/built-in/validation.js.map +1 -1
  176. package/dist/core/middleware/index.d.ts +4 -4
  177. package/dist/core/middleware/index.js +8 -28
  178. package/dist/core/middleware/index.js.map +1 -1
  179. package/dist/core/modules/auto-discovery.d.ts +3 -3
  180. package/dist/core/modules/auto-discovery.js +43 -81
  181. package/dist/core/modules/auto-discovery.js.map +1 -1
  182. package/dist/core/modules/index.d.ts +2 -2
  183. package/dist/core/modules/index.js +2 -9
  184. package/dist/core/modules/index.js.map +1 -1
  185. package/dist/core/modules/modules.d.ts +3 -3
  186. package/dist/core/modules/modules.js +11 -52
  187. package/dist/core/modules/modules.js.map +1 -1
  188. package/dist/core/networking/adapters/index.d.ts +4 -3
  189. package/dist/core/networking/adapters/index.js +3 -7
  190. package/dist/core/networking/adapters/index.js.map +1 -1
  191. package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -1
  192. package/dist/core/networking/adapters/socketio-adapter.js +5 -40
  193. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  194. package/dist/core/networking/adapters/uws-adapter.d.ts +44 -0
  195. package/dist/core/networking/adapters/uws-adapter.js +513 -0
  196. package/dist/core/networking/adapters/uws-adapter.js.map +1 -0
  197. package/dist/core/networking/adapters/ws-adapter.d.ts +1 -1
  198. package/dist/core/networking/adapters/ws-adapter.js +7 -42
  199. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  200. package/dist/core/networking/index.d.ts +3 -2
  201. package/dist/core/networking/index.js +2 -7
  202. package/dist/core/networking/index.js.map +1 -1
  203. package/dist/core/networking/service-discovery.js +3 -7
  204. package/dist/core/networking/service-discovery.js.map +1 -1
  205. package/dist/core/networking/websocket-adapter.js +1 -2
  206. package/dist/core/networking/websocket-adapter.js.map +1 -1
  207. package/dist/core/networking/websocket-manager.d.ts +3 -3
  208. package/dist/core/networking/websocket-manager.js +9 -11
  209. package/dist/core/networking/websocket-manager.js.map +1 -1
  210. package/dist/core/routing/app-integration.d.ts +2 -2
  211. package/dist/core/routing/app-integration.js +7 -12
  212. package/dist/core/routing/app-integration.js.map +1 -1
  213. package/dist/core/routing/index.d.ts +2 -2
  214. package/dist/core/routing/index.js +7 -14
  215. package/dist/core/routing/index.js.map +1 -1
  216. package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
  217. package/dist/core/runtime/aws-lambda-adapter.js +2 -6
  218. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  219. package/dist/core/runtime/base-adapter.d.ts +2 -2
  220. package/dist/core/runtime/base-adapter.js +3 -7
  221. package/dist/core/runtime/base-adapter.js.map +1 -1
  222. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
  223. package/dist/core/runtime/cloudflare-workers-adapter.js +2 -6
  224. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  225. package/dist/core/runtime/index.d.ts +12 -12
  226. package/dist/core/runtime/index.js +22 -35
  227. package/dist/core/runtime/index.js.map +1 -1
  228. package/dist/core/runtime/node-adapter.d.ts +4 -4
  229. package/dist/core/runtime/node-adapter.js +6 -43
  230. package/dist/core/runtime/node-adapter.js.map +1 -1
  231. package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
  232. package/dist/core/runtime/vercel-edge-adapter.js +2 -6
  233. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  234. package/dist/core/utilities/circuit-breaker.js +1 -5
  235. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  236. package/dist/core/utilities/container.js +12 -22
  237. package/dist/core/utilities/container.js.map +1 -1
  238. package/dist/core/utilities/hooks.d.ts +2 -2
  239. package/dist/core/utilities/hooks.js +7 -12
  240. package/dist/core/utilities/hooks.js.map +1 -1
  241. package/dist/core/utilities/index.d.ts +5 -4
  242. package/dist/core/utilities/index.js +5 -19
  243. package/dist/core/utilities/index.js.map +1 -1
  244. package/dist/core/utilities/package-utils.d.ts +38 -0
  245. package/dist/core/utilities/package-utils.js +57 -0
  246. package/dist/core/utilities/package-utils.js.map +1 -0
  247. package/dist/core/validation/adapters.d.ts +1 -1
  248. package/dist/core/validation/adapters.js +15 -26
  249. package/dist/core/validation/adapters.js.map +1 -1
  250. package/dist/core/validation/index.d.ts +6 -4
  251. package/dist/core/validation/index.js +57 -28
  252. package/dist/core/validation/index.js.map +1 -1
  253. package/dist/core/validation/schema-interface.js +3 -9
  254. package/dist/core/validation/schema-interface.js.map +1 -1
  255. package/dist/index.d.ts +51 -52
  256. package/dist/index.js +23 -132
  257. package/dist/index.js.map +1 -1
  258. package/dist/moro.d.ts +30 -10
  259. package/dist/moro.js +262 -126
  260. package/dist/moro.js.map +1 -1
  261. package/dist/types/auth.js +3 -9
  262. package/dist/types/auth.js.map +1 -1
  263. package/dist/types/cache.js +1 -2
  264. package/dist/types/cdn.js +1 -2
  265. package/dist/types/config.d.ts +13 -1
  266. package/dist/types/config.js +1 -2
  267. package/dist/types/config.js.map +1 -1
  268. package/dist/types/core.d.ts +3 -3
  269. package/dist/types/core.js +1 -2
  270. package/dist/types/database.js +1 -2
  271. package/dist/types/discovery.js +1 -2
  272. package/dist/types/events.js +1 -2
  273. package/dist/types/hooks.d.ts +1 -1
  274. package/dist/types/hooks.js +1 -2
  275. package/dist/types/http.js +1 -2
  276. package/dist/types/logger.js +1 -2
  277. package/dist/types/module.js +1 -2
  278. package/dist/types/runtime.d.ts +1 -1
  279. package/dist/types/runtime.js +1 -2
  280. package/dist/types/session.js +1 -2
  281. package/jest.config.mjs +41 -0
  282. package/package.json +18 -51
  283. package/src/core/auth/morojs-adapter.ts +1 -1
  284. package/src/core/config/config-manager.ts +2 -2
  285. package/src/core/config/config-sources.ts +6 -6
  286. package/src/core/config/config-validator.ts +38 -3
  287. package/src/core/config/file-loader.ts +13 -40
  288. package/src/core/config/index.ts +15 -11
  289. package/src/core/config/schema.ts +3 -2
  290. package/src/core/config/utils.ts +3 -3
  291. package/src/core/database/adapters/drizzle.ts +18 -6
  292. package/src/core/database/adapters/index.ts +13 -13
  293. package/src/core/database/adapters/mongodb.ts +23 -3
  294. package/src/core/database/adapters/mysql.ts +18 -4
  295. package/src/core/database/adapters/postgresql.ts +18 -3
  296. package/src/core/database/adapters/redis.ts +34 -4
  297. package/src/core/database/adapters/sqlite.ts +19 -3
  298. package/src/core/database/index.ts +2 -2
  299. package/src/core/docs/index.ts +8 -8
  300. package/src/core/docs/openapi-generator.ts +4 -4
  301. package/src/core/docs/schema-to-openapi.ts +3 -6
  302. package/src/core/docs/simple-docs.ts +2 -2
  303. package/src/core/docs/swagger-ui.ts +19 -16
  304. package/src/core/docs/zod-to-openapi.ts +34 -34
  305. package/src/core/events/event-bus.ts +2 -2
  306. package/src/core/events/index.ts +2 -2
  307. package/src/core/framework.ts +190 -49
  308. package/src/core/http/http-server.ts +16 -159
  309. package/src/core/http/index.ts +4 -3
  310. package/src/core/http/router.ts +2 -2
  311. package/src/core/http/uws-http-server.ts +794 -0
  312. package/src/core/logger/filters.ts +1 -1
  313. package/src/core/logger/index.ts +3 -3
  314. package/src/core/logger/logger.ts +9 -1
  315. package/src/core/logger/outputs.ts +1 -1
  316. package/src/core/middleware/built-in/adapters/cache/file.ts +3 -3
  317. package/src/core/middleware/built-in/adapters/cache/index.ts +7 -7
  318. package/src/core/middleware/built-in/adapters/cache/memory.ts +2 -2
  319. package/src/core/middleware/built-in/adapters/cache/redis.ts +18 -4
  320. package/src/core/middleware/built-in/adapters/cdn/azure.ts +2 -2
  321. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +2 -2
  322. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +16 -5
  323. package/src/core/middleware/built-in/adapters/cdn/index.ts +7 -7
  324. package/src/core/middleware/built-in/adapters/index.ts +4 -4
  325. package/src/core/middleware/built-in/auth-helpers.ts +1 -1
  326. package/src/core/middleware/built-in/auth-providers.ts +1 -1
  327. package/src/core/middleware/built-in/auth.ts +64 -41
  328. package/src/core/middleware/built-in/cache.ts +5 -5
  329. package/src/core/middleware/built-in/cdn.ts +4 -4
  330. package/src/core/middleware/built-in/cookie.ts +2 -2
  331. package/src/core/middleware/built-in/cors.ts +2 -2
  332. package/src/core/middleware/built-in/csp.ts +3 -3
  333. package/src/core/middleware/built-in/csrf.ts +3 -3
  334. package/src/core/middleware/built-in/error-tracker.ts +1 -1
  335. package/src/core/middleware/built-in/index.ts +31 -31
  336. package/src/core/middleware/built-in/jwt-helpers.ts +32 -4
  337. package/src/core/middleware/built-in/performance-monitor.ts +1 -1
  338. package/src/core/middleware/built-in/rate-limit.ts +2 -2
  339. package/src/core/middleware/built-in/request-logger.ts +1 -1
  340. package/src/core/middleware/built-in/session.ts +7 -8
  341. package/src/core/middleware/built-in/sse.ts +2 -2
  342. package/src/core/middleware/built-in/validation.ts +2 -2
  343. package/src/core/middleware/index.ts +6 -6
  344. package/src/core/modules/auto-discovery.ts +4 -4
  345. package/src/core/modules/index.ts +2 -2
  346. package/src/core/modules/modules.ts +4 -4
  347. package/src/core/networking/adapters/index.ts +4 -3
  348. package/src/core/networking/adapters/socketio-adapter.ts +5 -3
  349. package/src/core/networking/adapters/uws-adapter.ts +619 -0
  350. package/src/core/networking/adapters/ws-adapter.ts +6 -4
  351. package/src/core/networking/index.ts +3 -2
  352. package/src/core/networking/service-discovery.ts +1 -1
  353. package/src/core/networking/websocket-manager.ts +7 -7
  354. package/src/core/routing/app-integration.ts +3 -3
  355. package/src/core/routing/index.ts +3 -3
  356. package/src/core/runtime/aws-lambda-adapter.ts +3 -3
  357. package/src/core/runtime/base-adapter.ts +2 -2
  358. package/src/core/runtime/cloudflare-workers-adapter.ts +3 -3
  359. package/src/core/runtime/index.ts +13 -13
  360. package/src/core/runtime/node-adapter.ts +4 -4
  361. package/src/core/runtime/vercel-edge-adapter.ts +3 -3
  362. package/src/core/utilities/hooks.ts +3 -3
  363. package/src/core/utilities/index.ts +5 -4
  364. package/src/core/utilities/package-utils.ts +59 -0
  365. package/src/core/validation/adapters.ts +1 -1
  366. package/src/core/validation/index.ts +68 -16
  367. package/src/index.ts +73 -66
  368. package/src/moro.ts +303 -75
  369. package/src/types/config.ts +13 -1
  370. package/src/types/core.ts +3 -3
  371. package/src/types/hooks.ts +1 -1
  372. package/src/types/runtime.ts +1 -1
  373. package/tsconfig.json +4 -2
@@ -1,5 +1,5 @@
1
1
  // Advanced Logger Filters
2
- import { LogEntry, LogFilter } from '../../types/logger';
2
+ import { LogEntry, LogFilter } from '../../types/logger.js';
3
3
 
4
4
  // Level-based filter
5
5
  export const levelFilter = (minLevel: string): LogFilter => ({
@@ -6,8 +6,8 @@ export {
6
6
  configureGlobalLogger,
7
7
  applyLoggingConfiguration,
8
8
  destroyGlobalLogger,
9
- } from './logger';
10
- export * from './filters';
9
+ } from './logger.js';
10
+ export * from './filters.js';
11
11
 
12
12
  export type {
13
13
  LogLevel,
@@ -18,4 +18,4 @@ export type {
18
18
  LogFilter,
19
19
  LogMetrics,
20
20
  ColorScheme,
21
- } from '../../types/logger';
21
+ } from '../../types/logger.js';
@@ -10,7 +10,7 @@ import {
10
10
  LogFilter,
11
11
  LogMetrics,
12
12
  ColorScheme,
13
- } from '../../types/logger';
13
+ } from '../../types/logger.js';
14
14
 
15
15
  export class MoroLogger implements Logger {
16
16
  private level: LogLevel = 'info';
@@ -343,6 +343,11 @@ export class MoroLogger implements Logger {
343
343
  context?: string,
344
344
  metadata?: Record<string, any>
345
345
  ): void {
346
+ // Prevent logging after destroy() is called (important for test cleanup)
347
+ if (this.isDestroyed) {
348
+ return;
349
+ }
350
+
346
351
  // Quick level check - use parent level if available (for child loggers)
347
352
  const effectiveLevel = this.parent ? this.parent.level : this.level;
348
353
  if (MoroLogger.LEVELS[level] < MoroLogger.LEVELS[effectiveLevel as LogLevel]) {
@@ -739,6 +744,9 @@ export class MoroLogger implements Logger {
739
744
  this.flushTimeout = setTimeout(() => {
740
745
  this.flushBuffer();
741
746
  }, this.flushInterval);
747
+
748
+ // Unref the timeout so it doesn't prevent process exit (important for tests)
749
+ this.flushTimeout.unref();
742
750
  }
743
751
 
744
752
  public flushBuffer(): void {
@@ -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 {
@@ -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
 
@@ -186,27 +188,59 @@ export const auth = (options: AuthOptions): MiddlewareInterface => ({
186
188
  session = await authInstance.getSession({ req: { ...req, token } });
187
189
  }
188
190
  } catch (error: any) {
189
- // Handle specific JWT errors gracefully
191
+ // Handle specific JWT errors gracefully and return proper HTTP responses
190
192
  if (error.name === 'TokenExpiredError') {
191
193
  logger.debug('JWT token expired', 'TokenValidation', {
192
194
  message: error.message,
193
195
  expiredAt: error.expiredAt,
194
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
+ }
195
208
  } else if (error.name === 'JsonWebTokenError') {
196
209
  logger.debug('Invalid JWT token format', 'TokenValidation', {
197
210
  message: error.message,
198
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
+ }
199
222
  } else if (error.name === 'NotBeforeError') {
200
223
  logger.debug('JWT token not active yet', 'TokenValidation', {
201
224
  message: error.message,
202
225
  date: error.date,
203
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
+ }
204
238
  } else {
205
239
  logger.debug('JWT token validation failed', 'TokenValidation', {
206
240
  error: error.message || error,
207
241
  });
208
242
  }
209
- // Continue with unauthenticated state - don't throw
243
+ // Continue with unauthenticated state for non-API requests
210
244
  }
211
245
  }
212
246
 
@@ -298,44 +332,34 @@ async function initializeAuthJS(config: AuthOptions): Promise<any> {
298
332
  },
299
333
 
300
334
  verifyJWT: async (token: string) => {
301
- // Require jsonwebtoken for JWT verification
302
- let jwt: any;
303
- try {
304
- jwt = require('jsonwebtoken');
305
- } catch (error) {
306
- throw new Error(
307
- 'JWT verification requires the "jsonwebtoken" package. ' +
308
- 'Please install it with: npm install jsonwebtoken @types/jsonwebtoken'
309
- );
310
- }
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
+ }
311
358
 
312
- const secret = process.env.JWT_SECRET || config.jwt?.secret || config.secret;
313
- if (!secret) {
314
- throw new Error(
315
- 'JWT verification requires a secret. ' +
316
- 'Please set JWT_SECRET environment variable, or provide jwt.secret or secret in auth config.'
317
- );
359
+ throw customError;
318
360
  }
319
361
 
320
- try {
321
- const decoded = jwt.verify(token, secret);
322
- return decoded;
323
- } catch (error: any) {
324
- // Handle specific JWT errors gracefully
325
- if (error.name === 'TokenExpiredError') {
326
- // Token expired - handled gracefully by auth middleware
327
- throw error;
328
- } else if (error.name === 'JsonWebTokenError') {
329
- // Invalid token format
330
- throw error;
331
- } else if (error.name === 'NotBeforeError') {
332
- // Token not active yet
333
- throw error;
334
- } else {
335
- // Other JWT errors
336
- throw new Error(`JWT verification failed: ${error.message}`);
337
- }
338
- }
362
+ return result.payload;
339
363
  },
340
364
 
341
365
  signIn: async (provider?: string, options?: any) => {
@@ -355,7 +379,6 @@ async function initializeAuthJS(config: AuthOptions): Promise<any> {
355
379
 
356
380
  getCsrfToken: async () => {
357
381
  // Basic CSRF token generation
358
- const crypto = require('crypto');
359
382
  return crypto.randomBytes(32).toString('hex');
360
383
  },
361
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
 
@@ -197,7 +198,6 @@ export const cache = (options: CacheOptions = {}): MiddlewareInterface => ({
197
198
  // Add ETag generation
198
199
  if (options.etag !== false) {
199
200
  res.generateETag = (content: string | Buffer) => {
200
- const crypto = require('crypto');
201
201
  const hash = crypto.createHash('md5').update(content).digest('hex');
202
202
  const prefix = options.etag === 'weak' ? 'W/' : '';
203
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,7 +31,7 @@ export {
31
31
  authUtils,
32
32
  authResponses,
33
33
  sessionHelpers,
34
- } from './auth-helpers';
34
+ } from './auth-helpers.js';
35
35
 
36
36
  // JWT Utilities for Custom Middleware
37
37
  export {
@@ -39,30 +39,30 @@ export {
39
39
  extractJWTFromHeader,
40
40
  createAuthErrorResponse,
41
41
  type JWTVerificationResult,
42
- } from './jwt-helpers';
42
+ } from './jwt-helpers.js';
43
43
 
44
44
  export {
45
45
  extendedProviders,
46
46
  enterpriseProviders,
47
47
  createCustomOAuthProvider,
48
48
  createCustomOIDCProvider,
49
- } from './auth-providers';
49
+ } from './auth-providers.js';
50
50
 
51
51
  // Import for collections
52
- import { auth } from './auth';
53
- import { rateLimit } from './rate-limit';
54
- import { cors } from './cors';
55
- import { validation } from './validation';
56
- import { requestLogger } from './request-logger';
57
- import { performanceMonitor } from './performance-monitor';
58
- import { errorTracker } from './error-tracker';
59
- import { cookie } from './cookie';
60
- import { csrf } from './csrf';
61
- import { csp } from './csp';
62
- import { sse } from './sse';
63
- import { session } from './session';
64
- import { cache } from './cache';
65
- 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';
66
66
 
67
67
  export const builtInMiddleware = {
68
68
  auth,