@morojs/moro 1.6.0 → 1.6.1

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 (388) hide show
  1. package/README.md +256 -74
  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/file-loader.d.ts +6 -1
  5. package/dist/core/config/file-loader.js +249 -19
  6. package/dist/core/config/file-loader.js.map +1 -1
  7. package/dist/core/config/index.d.ts +12 -41
  8. package/dist/core/config/index.js +54 -65
  9. package/dist/core/config/index.js.map +1 -1
  10. package/dist/core/config/loader.d.ts +7 -0
  11. package/dist/core/config/loader.js +269 -0
  12. package/dist/core/config/loader.js.map +1 -0
  13. package/dist/core/config/schema.d.ts +2 -2
  14. package/dist/core/config/schema.js +44 -52
  15. package/dist/core/config/schema.js.map +1 -1
  16. package/dist/core/config/utils.d.ts +3 -10
  17. package/dist/core/config/utils.js +58 -31
  18. package/dist/core/config/utils.js.map +1 -1
  19. package/dist/core/config/validation.d.ts +17 -0
  20. package/dist/core/config/validation.js +131 -0
  21. package/dist/core/config/validation.js.map +1 -0
  22. package/dist/core/database/adapters/drizzle.d.ts +1 -1
  23. package/dist/core/database/adapters/drizzle.js +11 -18
  24. package/dist/core/database/adapters/drizzle.js.map +1 -1
  25. package/dist/core/database/adapters/index.d.ts +7 -7
  26. package/dist/core/database/adapters/index.js +29 -19
  27. package/dist/core/database/adapters/index.js.map +1 -1
  28. package/dist/core/database/adapters/mongodb.d.ts +1 -13
  29. package/dist/core/database/adapters/mongodb.js +10 -46
  30. package/dist/core/database/adapters/mongodb.js.map +1 -1
  31. package/dist/core/database/adapters/mysql.d.ts +1 -14
  32. package/dist/core/database/adapters/mysql.js +9 -19
  33. package/dist/core/database/adapters/mysql.js.map +1 -1
  34. package/dist/core/database/adapters/postgresql.d.ts +2 -12
  35. package/dist/core/database/adapters/postgresql.js +9 -19
  36. package/dist/core/database/adapters/postgresql.js.map +1 -1
  37. package/dist/core/database/adapters/redis.d.ts +1 -12
  38. package/dist/core/database/adapters/redis.js +13 -48
  39. package/dist/core/database/adapters/redis.js.map +1 -1
  40. package/dist/core/database/adapters/sqlite.d.ts +1 -3
  41. package/dist/core/database/adapters/sqlite.js +8 -19
  42. package/dist/core/database/adapters/sqlite.js.map +1 -1
  43. package/dist/core/database/index.d.ts +2 -2
  44. package/dist/core/database/index.js +18 -2
  45. package/dist/core/database/index.js.map +1 -1
  46. package/dist/core/docs/index.d.ts +9 -9
  47. package/dist/core/docs/index.js +35 -14
  48. package/dist/core/docs/index.js.map +1 -1
  49. package/dist/core/docs/openapi-generator.d.ts +2 -2
  50. package/dist/core/docs/openapi-generator.js +16 -11
  51. package/dist/core/docs/openapi-generator.js.map +1 -1
  52. package/dist/core/docs/schema-to-openapi.d.ts +2 -2
  53. package/dist/core/docs/schema-to-openapi.js +11 -5
  54. package/dist/core/docs/schema-to-openapi.js.map +1 -1
  55. package/dist/core/docs/simple-docs.d.ts +1 -1
  56. package/dist/core/docs/simple-docs.js +9 -4
  57. package/dist/core/docs/simple-docs.js.map +1 -1
  58. package/dist/core/docs/swagger-ui.d.ts +2 -2
  59. package/dist/core/docs/swagger-ui.js +29 -26
  60. package/dist/core/docs/swagger-ui.js.map +1 -1
  61. package/dist/core/docs/zod-to-openapi.js +28 -31
  62. package/dist/core/docs/zod-to-openapi.js.map +1 -1
  63. package/dist/core/events/event-bus.d.ts +1 -1
  64. package/dist/core/events/event-bus.js +10 -6
  65. package/dist/core/events/event-bus.js.map +1 -1
  66. package/dist/core/events/index.d.ts +2 -2
  67. package/dist/core/events/index.js +5 -1
  68. package/dist/core/events/index.js.map +1 -1
  69. package/dist/core/framework.d.ts +12 -19
  70. package/dist/core/framework.js +100 -277
  71. package/dist/core/framework.js.map +1 -1
  72. package/dist/core/http/http-server.d.ts +1 -13
  73. package/dist/core/http/http-server.js +85 -175
  74. package/dist/core/http/http-server.js.map +1 -1
  75. package/dist/core/http/index.d.ts +3 -4
  76. package/dist/core/http/index.js +8 -3
  77. package/dist/core/http/index.js.map +1 -1
  78. package/dist/core/http/router.d.ts +1 -13
  79. package/dist/core/http/router.js +43 -117
  80. package/dist/core/http/router.js.map +1 -1
  81. package/dist/core/logger/filters.d.ts +1 -1
  82. package/dist/core/logger/filters.js +23 -20
  83. package/dist/core/logger/filters.js.map +1 -1
  84. package/dist/core/logger/index.d.ts +3 -3
  85. package/dist/core/logger/index.js +24 -2
  86. package/dist/core/logger/index.js.map +1 -1
  87. package/dist/core/logger/logger.d.ts +14 -30
  88. package/dist/core/logger/logger.js +223 -398
  89. package/dist/core/logger/logger.js.map +1 -1
  90. package/dist/core/logger/outputs.d.ts +1 -1
  91. package/dist/core/logger/outputs.js +17 -8
  92. package/dist/core/logger/outputs.js.map +1 -1
  93. package/dist/core/middleware/built-in/adapters/cache/file.d.ts +1 -1
  94. package/dist/core/middleware/built-in/adapters/cache/file.js +47 -10
  95. package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -1
  96. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +4 -4
  97. package/dist/core/middleware/built-in/adapters/cache/index.js +17 -10
  98. package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -1
  99. package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +1 -1
  100. package/dist/core/middleware/built-in/adapters/cache/memory.js +7 -3
  101. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
  102. package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +1 -3
  103. package/dist/core/middleware/built-in/adapters/cache/redis.js +9 -11
  104. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -1
  105. package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +1 -1
  106. package/dist/core/middleware/built-in/adapters/cdn/azure.js +7 -3
  107. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -1
  108. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +1 -1
  109. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +7 -3
  110. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
  111. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +1 -3
  112. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +10 -12
  113. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -1
  114. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +4 -4
  115. package/dist/core/middleware/built-in/adapters/cdn/index.js +17 -10
  116. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +1 -1
  117. package/dist/core/middleware/built-in/adapters/index.d.ts +4 -4
  118. package/dist/core/middleware/built-in/adapters/index.js +23 -4
  119. package/dist/core/middleware/built-in/adapters/index.js.map +1 -1
  120. package/dist/core/middleware/built-in/auth-helpers.js +22 -11
  121. package/dist/core/middleware/built-in/auth-helpers.js.map +1 -1
  122. package/dist/core/middleware/built-in/auth-providers.d.ts +1 -1
  123. package/dist/core/middleware/built-in/auth-providers.js +9 -4
  124. package/dist/core/middleware/built-in/auth-providers.js.map +1 -1
  125. package/dist/core/middleware/built-in/auth.d.ts +2 -2
  126. package/dist/core/middleware/built-in/auth.js +26 -93
  127. package/dist/core/middleware/built-in/auth.js.map +1 -1
  128. package/dist/core/middleware/built-in/cache.d.ts +2 -2
  129. package/dist/core/middleware/built-in/cache.js +12 -11
  130. package/dist/core/middleware/built-in/cache.js.map +1 -1
  131. package/dist/core/middleware/built-in/cdn.d.ts +2 -2
  132. package/dist/core/middleware/built-in/cdn.js +9 -5
  133. package/dist/core/middleware/built-in/cdn.js.map +1 -1
  134. package/dist/core/middleware/built-in/cookie.d.ts +1 -1
  135. package/dist/core/middleware/built-in/cookie.js +7 -3
  136. package/dist/core/middleware/built-in/cookie.js.map +1 -1
  137. package/dist/core/middleware/built-in/cors.d.ts +1 -1
  138. package/dist/core/middleware/built-in/cors.js +7 -3
  139. package/dist/core/middleware/built-in/cors.js.map +1 -1
  140. package/dist/core/middleware/built-in/csp.d.ts +1 -1
  141. package/dist/core/middleware/built-in/csp.js +8 -5
  142. package/dist/core/middleware/built-in/csp.js.map +1 -1
  143. package/dist/core/middleware/built-in/csrf.d.ts +1 -1
  144. package/dist/core/middleware/built-in/csrf.js +8 -5
  145. package/dist/core/middleware/built-in/csrf.js.map +1 -1
  146. package/dist/core/middleware/built-in/error-tracker.js +7 -3
  147. package/dist/core/middleware/built-in/error-tracker.js.map +1 -1
  148. package/dist/core/middleware/built-in/index.d.ts +27 -28
  149. package/dist/core/middleware/built-in/index.js +78 -48
  150. package/dist/core/middleware/built-in/index.js.map +1 -1
  151. package/dist/core/middleware/built-in/performance-monitor.js +7 -3
  152. package/dist/core/middleware/built-in/performance-monitor.js.map +1 -1
  153. package/dist/core/middleware/built-in/rate-limit.d.ts +1 -1
  154. package/dist/core/middleware/built-in/rate-limit.js +7 -3
  155. package/dist/core/middleware/built-in/rate-limit.js.map +1 -1
  156. package/dist/core/middleware/built-in/request-logger.js +8 -5
  157. package/dist/core/middleware/built-in/request-logger.js.map +1 -1
  158. package/dist/core/middleware/built-in/session.d.ts +2 -2
  159. package/dist/core/middleware/built-in/session.js +15 -11
  160. package/dist/core/middleware/built-in/session.js.map +1 -1
  161. package/dist/core/middleware/built-in/sse.d.ts +1 -1
  162. package/dist/core/middleware/built-in/sse.js +14 -12
  163. package/dist/core/middleware/built-in/sse.js.map +1 -1
  164. package/dist/core/middleware/built-in/validation.d.ts +1 -1
  165. package/dist/core/middleware/built-in/validation.js +7 -3
  166. package/dist/core/middleware/built-in/validation.js.map +1 -1
  167. package/dist/core/middleware/index.d.ts +4 -4
  168. package/dist/core/middleware/index.js +28 -8
  169. package/dist/core/middleware/index.js.map +1 -1
  170. package/dist/core/modules/auto-discovery.d.ts +2 -19
  171. package/dist/core/modules/auto-discovery.js +74 -391
  172. package/dist/core/modules/auto-discovery.js.map +1 -1
  173. package/dist/core/modules/index.d.ts +2 -2
  174. package/dist/core/modules/index.js +9 -2
  175. package/dist/core/modules/index.js.map +1 -1
  176. package/dist/core/modules/modules.d.ts +3 -3
  177. package/dist/core/modules/modules.js +54 -23
  178. package/dist/core/modules/modules.js.map +1 -1
  179. package/dist/core/networking/adapters/index.d.ts +3 -4
  180. package/dist/core/networking/adapters/index.js +7 -3
  181. package/dist/core/networking/adapters/index.js.map +1 -1
  182. package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -1
  183. package/dist/core/networking/adapters/socketio-adapter.js +40 -5
  184. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  185. package/dist/core/networking/adapters/ws-adapter.d.ts +2 -2
  186. package/dist/core/networking/adapters/ws-adapter.js +43 -8
  187. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  188. package/dist/core/networking/index.d.ts +2 -3
  189. package/dist/core/networking/index.js +7 -2
  190. package/dist/core/networking/index.js.map +1 -1
  191. package/dist/core/networking/service-discovery.js +12 -8
  192. package/dist/core/networking/service-discovery.js.map +1 -1
  193. package/dist/core/networking/websocket-adapter.js +2 -1
  194. package/dist/core/networking/websocket-adapter.js.map +1 -1
  195. package/dist/core/networking/websocket-manager.d.ts +3 -3
  196. package/dist/core/networking/websocket-manager.js +11 -9
  197. package/dist/core/networking/websocket-manager.js.map +1 -1
  198. package/dist/core/routing/app-integration.d.ts +2 -2
  199. package/dist/core/routing/app-integration.js +12 -7
  200. package/dist/core/routing/app-integration.js.map +1 -1
  201. package/dist/core/routing/index.d.ts +2 -22
  202. package/dist/core/routing/index.js +27 -185
  203. package/dist/core/routing/index.js.map +1 -1
  204. package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
  205. package/dist/core/runtime/aws-lambda-adapter.js +6 -2
  206. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  207. package/dist/core/runtime/base-adapter.d.ts +2 -2
  208. package/dist/core/runtime/base-adapter.js +7 -3
  209. package/dist/core/runtime/base-adapter.js.map +1 -1
  210. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
  211. package/dist/core/runtime/cloudflare-workers-adapter.js +6 -2
  212. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  213. package/dist/core/runtime/index.d.ts +12 -12
  214. package/dist/core/runtime/index.js +35 -22
  215. package/dist/core/runtime/index.js.map +1 -1
  216. package/dist/core/runtime/node-adapter.d.ts +4 -4
  217. package/dist/core/runtime/node-adapter.js +49 -18
  218. package/dist/core/runtime/node-adapter.js.map +1 -1
  219. package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
  220. package/dist/core/runtime/vercel-edge-adapter.js +6 -2
  221. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  222. package/dist/core/utilities/circuit-breaker.js +5 -1
  223. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  224. package/dist/core/utilities/container.js +22 -12
  225. package/dist/core/utilities/container.js.map +1 -1
  226. package/dist/core/utilities/hooks.d.ts +2 -2
  227. package/dist/core/utilities/hooks.js +12 -7
  228. package/dist/core/utilities/hooks.js.map +1 -1
  229. package/dist/core/utilities/index.d.ts +4 -5
  230. package/dist/core/utilities/index.js +19 -5
  231. package/dist/core/utilities/index.js.map +1 -1
  232. package/dist/core/validation/adapters.d.ts +1 -1
  233. package/dist/core/validation/adapters.js +26 -15
  234. package/dist/core/validation/adapters.js.map +1 -1
  235. package/dist/core/validation/index.d.ts +4 -6
  236. package/dist/core/validation/index.js +28 -57
  237. package/dist/core/validation/index.js.map +1 -1
  238. package/dist/core/validation/schema-interface.js +9 -3
  239. package/dist/core/validation/schema-interface.js.map +1 -1
  240. package/dist/index.d.ts +52 -51
  241. package/dist/index.js +132 -23
  242. package/dist/index.js.map +1 -1
  243. package/dist/moro.d.ts +10 -61
  244. package/dist/moro.js +237 -575
  245. package/dist/moro.js.map +1 -1
  246. package/dist/types/auth.js +9 -3
  247. package/dist/types/auth.js.map +1 -1
  248. package/dist/types/cache.js +2 -1
  249. package/dist/types/cdn.js +2 -1
  250. package/dist/types/config.d.ts +2 -70
  251. package/dist/types/config.js +2 -1
  252. package/dist/types/config.js.map +1 -1
  253. package/dist/types/core.d.ts +42 -36
  254. package/dist/types/core.js +2 -1
  255. package/dist/types/database.js +2 -1
  256. package/dist/types/discovery.js +2 -1
  257. package/dist/types/events.js +2 -1
  258. package/dist/types/hooks.d.ts +1 -1
  259. package/dist/types/hooks.js +2 -1
  260. package/dist/types/http.d.ts +1 -16
  261. package/dist/types/http.js +2 -1
  262. package/dist/types/logger.d.ts +0 -7
  263. package/dist/types/logger.js +2 -1
  264. package/dist/types/module.d.ts +0 -11
  265. package/dist/types/module.js +2 -1
  266. package/dist/types/runtime.d.ts +1 -1
  267. package/dist/types/runtime.js +2 -1
  268. package/dist/types/session.js +2 -1
  269. package/package.json +52 -19
  270. package/src/core/auth/morojs-adapter.ts +13 -18
  271. package/src/core/config/file-loader.ts +273 -13
  272. package/src/core/config/index.ts +34 -83
  273. package/src/core/config/loader.ts +633 -0
  274. package/src/core/config/schema.ts +33 -44
  275. package/src/core/config/utils.ts +31 -24
  276. package/src/core/config/validation.ts +140 -0
  277. package/src/core/database/README.md +16 -26
  278. package/src/core/database/adapters/drizzle.ts +6 -18
  279. package/src/core/database/adapters/index.ts +13 -13
  280. package/src/core/database/adapters/mongodb.ts +5 -53
  281. package/src/core/database/adapters/mysql.ts +4 -32
  282. package/src/core/database/adapters/postgresql.ts +5 -30
  283. package/src/core/database/adapters/redis.ts +8 -61
  284. package/src/core/database/adapters/sqlite.ts +3 -19
  285. package/src/core/database/index.ts +2 -2
  286. package/src/core/docs/index.ts +8 -8
  287. package/src/core/docs/openapi-generator.ts +4 -4
  288. package/src/core/docs/schema-to-openapi.ts +6 -3
  289. package/src/core/docs/simple-docs.ts +2 -2
  290. package/src/core/docs/swagger-ui.ts +16 -19
  291. package/src/core/docs/zod-to-openapi.ts +34 -34
  292. package/src/core/events/event-bus.ts +2 -2
  293. package/src/core/events/index.ts +2 -2
  294. package/src/core/framework.ts +67 -311
  295. package/src/core/http/http-server.ts +45 -190
  296. package/src/core/http/index.ts +3 -4
  297. package/src/core/http/router.ts +40 -129
  298. package/src/core/logger/filters.ts +5 -13
  299. package/src/core/logger/index.ts +3 -4
  300. package/src/core/logger/logger.ts +216 -435
  301. package/src/core/logger/outputs.ts +3 -1
  302. package/src/core/middleware/built-in/adapters/cache/file.ts +3 -3
  303. package/src/core/middleware/built-in/adapters/cache/index.ts +7 -7
  304. package/src/core/middleware/built-in/adapters/cache/memory.ts +2 -2
  305. package/src/core/middleware/built-in/adapters/cache/redis.ts +4 -18
  306. package/src/core/middleware/built-in/adapters/cdn/azure.ts +2 -2
  307. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +2 -2
  308. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +5 -16
  309. package/src/core/middleware/built-in/adapters/cdn/index.ts +7 -7
  310. package/src/core/middleware/built-in/adapters/index.ts +4 -4
  311. package/src/core/middleware/built-in/auth-helpers.ts +1 -1
  312. package/src/core/middleware/built-in/auth-providers.ts +1 -1
  313. package/src/core/middleware/built-in/auth.ts +21 -102
  314. package/src/core/middleware/built-in/cache.ts +6 -8
  315. package/src/core/middleware/built-in/cdn.ts +4 -4
  316. package/src/core/middleware/built-in/cookie.ts +2 -2
  317. package/src/core/middleware/built-in/cors.ts +2 -2
  318. package/src/core/middleware/built-in/csp.ts +3 -3
  319. package/src/core/middleware/built-in/csrf.ts +3 -3
  320. package/src/core/middleware/built-in/error-tracker.ts +1 -1
  321. package/src/core/middleware/built-in/index.ts +30 -38
  322. package/src/core/middleware/built-in/performance-monitor.ts +1 -1
  323. package/src/core/middleware/built-in/rate-limit.ts +2 -2
  324. package/src/core/middleware/built-in/request-logger.ts +1 -3
  325. package/src/core/middleware/built-in/session.ts +8 -7
  326. package/src/core/middleware/built-in/sse.ts +9 -11
  327. package/src/core/middleware/built-in/validation.ts +2 -2
  328. package/src/core/middleware/index.ts +6 -6
  329. package/src/core/modules/auto-discovery.ts +15 -478
  330. package/src/core/modules/index.ts +2 -2
  331. package/src/core/modules/modules.ts +12 -23
  332. package/src/core/networking/adapters/index.ts +3 -4
  333. package/src/core/networking/adapters/socketio-adapter.ts +3 -5
  334. package/src/core/networking/adapters/ws-adapter.ts +9 -8
  335. package/src/core/networking/index.ts +2 -3
  336. package/src/core/networking/service-discovery.ts +7 -6
  337. package/src/core/networking/websocket-manager.ts +7 -7
  338. package/src/core/routing/app-integration.ts +3 -3
  339. package/src/core/routing/index.ts +17 -201
  340. package/src/core/runtime/aws-lambda-adapter.ts +3 -3
  341. package/src/core/runtime/base-adapter.ts +2 -2
  342. package/src/core/runtime/cloudflare-workers-adapter.ts +3 -3
  343. package/src/core/runtime/index.ts +13 -13
  344. package/src/core/runtime/node-adapter.ts +10 -16
  345. package/src/core/runtime/vercel-edge-adapter.ts +3 -3
  346. package/src/core/utilities/hooks.ts +3 -3
  347. package/src/core/utilities/index.ts +4 -5
  348. package/src/core/validation/adapters.ts +1 -1
  349. package/src/core/validation/index.ts +16 -68
  350. package/src/index.ts +66 -73
  351. package/src/moro.ts +204 -685
  352. package/src/types/config.ts +2 -71
  353. package/src/types/core.ts +47 -49
  354. package/src/types/hooks.ts +1 -1
  355. package/src/types/http.ts +1 -23
  356. package/src/types/logger.ts +0 -9
  357. package/src/types/module.ts +0 -12
  358. package/src/types/runtime.ts +1 -1
  359. package/tsconfig.json +2 -4
  360. package/dist/core/config/config-manager.d.ts +0 -44
  361. package/dist/core/config/config-manager.js +0 -104
  362. package/dist/core/config/config-manager.js.map +0 -1
  363. package/dist/core/config/config-sources.d.ts +0 -21
  364. package/dist/core/config/config-sources.js +0 -499
  365. package/dist/core/config/config-sources.js.map +0 -1
  366. package/dist/core/config/config-validator.d.ts +0 -21
  367. package/dist/core/config/config-validator.js +0 -788
  368. package/dist/core/config/config-validator.js.map +0 -1
  369. package/dist/core/http/uws-http-server.d.ts +0 -64
  370. package/dist/core/http/uws-http-server.js +0 -688
  371. package/dist/core/http/uws-http-server.js.map +0 -1
  372. package/dist/core/middleware/built-in/jwt-helpers.d.ts +0 -118
  373. package/dist/core/middleware/built-in/jwt-helpers.js +0 -218
  374. package/dist/core/middleware/built-in/jwt-helpers.js.map +0 -1
  375. package/dist/core/networking/adapters/uws-adapter.d.ts +0 -44
  376. package/dist/core/networking/adapters/uws-adapter.js +0 -513
  377. package/dist/core/networking/adapters/uws-adapter.js.map +0 -1
  378. package/dist/core/utilities/package-utils.d.ts +0 -38
  379. package/dist/core/utilities/package-utils.js +0 -57
  380. package/dist/core/utilities/package-utils.js.map +0 -1
  381. package/jest.config.mjs +0 -41
  382. package/src/core/config/config-manager.ts +0 -133
  383. package/src/core/config/config-sources.ts +0 -596
  384. package/src/core/config/config-validator.ts +0 -1113
  385. package/src/core/http/uws-http-server.ts +0 -794
  386. package/src/core/middleware/built-in/jwt-helpers.ts +0 -243
  387. package/src/core/networking/adapters/uws-adapter.ts +0 -619
  388. package/src/core/utilities/package-utils.ts +0 -59
@@ -1,17 +1,9 @@
1
1
  // src/core/http-server.ts
2
2
  import { IncomingMessage, ServerResponse, createServer, Server } from 'http';
3
3
  import * as zlib from 'zlib';
4
- import { createReadStream } from 'fs';
5
- import * as crypto from 'crypto';
6
4
  import { promisify } from 'util';
7
- import { createFrameworkLogger } from '../logger/index.js';
8
- import {
9
- HttpRequest,
10
- HttpResponse,
11
- HttpHandler,
12
- Middleware,
13
- RouteEntry,
14
- } from '../../types/http.js';
5
+ import { createFrameworkLogger } from '../logger';
6
+ import { HttpRequest, HttpResponse, HttpHandler, Middleware, RouteEntry } from '../../types/http';
15
7
 
16
8
  const gzip = promisify(zlib.gzip);
17
9
  const deflate = promisify(zlib.deflate);
@@ -34,11 +26,6 @@ export class MoroHttpServer {
34
26
  // Request handler pooling to avoid function creation overhead
35
27
  private middlewareExecutionCache = new Map<string, Function>();
36
28
 
37
- // Response caching for ultra-fast common responses
38
- private responseCache = new Map<string, Buffer>();
39
- private responseCacheHits = 0;
40
- private responseCacheMisses = 0;
41
-
42
29
  // String interning for common values (massive memory savings)
43
30
  private static readonly INTERNED_METHODS = new Map([
44
31
  ['GET', 'GET'],
@@ -294,13 +281,18 @@ export class MoroHttpServer {
294
281
  await route.handler(httpReq, httpRes);
295
282
  } catch (error) {
296
283
  // Debug: Log the actual error and where it came from
297
- this.logger.debug('Request error details', 'RequestHandler', {
298
- errorType: typeof error,
299
- errorMessage: error instanceof Error ? error.message : String(error),
300
- errorStack: error instanceof Error ? error.stack : 'No stack trace',
301
- requestPath: req.url,
302
- requestMethod: req.method,
303
- });
284
+ this.logger.debug('🚨 MoroJS Request Error Details:', 'RequestHandler');
285
+ this.logger.debug(`📍 Error type: ${typeof error}`, 'RequestHandler');
286
+ this.logger.debug(
287
+ `📍 Error message: ${error instanceof Error ? error.message : String(error)}`,
288
+ 'RequestHandler'
289
+ );
290
+ this.logger.debug(
291
+ `📍 Error stack: ${error instanceof Error ? error.stack : 'No stack trace'}`,
292
+ 'RequestHandler'
293
+ );
294
+ this.logger.debug(`📍 Request path: ${req.url}`, 'RequestHandler');
295
+ this.logger.debug(`📍 Request method: ${req.method}`, 'RequestHandler');
304
296
 
305
297
  this.logger.error('Request error', 'RequestHandler', {
306
298
  error: error instanceof Error ? error.message : String(error),
@@ -324,10 +316,14 @@ export class MoroHttpServer {
324
316
  httpRes.setHeader('Content-Type', 'application/json');
325
317
  } else {
326
318
  // Even setHeader doesn't exist - object is completely wrong
327
- this.logger.error('Response object is not a proper ServerResponse', 'RequestHandler', {
328
- responseType: typeof httpRes,
329
- responseKeys: Object.keys(httpRes),
330
- });
319
+ this.logger.error(
320
+ '❌ Response object is not a proper ServerResponse:',
321
+ 'RequestHandler',
322
+ {
323
+ responseType: typeof httpRes,
324
+ responseKeys: Object.keys(httpRes),
325
+ }
326
+ );
331
327
  }
332
328
 
333
329
  if (typeof httpRes.end === 'function') {
@@ -340,7 +336,7 @@ export class MoroHttpServer {
340
336
  );
341
337
  } else {
342
338
  this.logger.error(
343
- 'Cannot send error response - end() method missing',
339
+ 'Cannot send error response - end() method missing',
344
340
  'RequestHandler'
345
341
  );
346
342
  }
@@ -505,20 +501,6 @@ export class MoroHttpServer {
505
501
  httpRes.json = async (data: any) => {
506
502
  if (httpRes.headersSent) return;
507
503
 
508
- // PERFORMANCE OPTIMIZATION: Check response cache for common patterns
509
- const cacheKey = this.getResponseCacheKey(data);
510
- if (cacheKey) {
511
- const cachedBuffer = this.responseCache.get(cacheKey);
512
- if (cachedBuffer) {
513
- this.responseCacheHits++;
514
- httpRes.setHeader('Content-Type', 'application/json; charset=utf-8');
515
- httpRes.setHeader('Content-Length', cachedBuffer.length);
516
- httpRes.end(cachedBuffer);
517
- return;
518
- }
519
- this.responseCacheMisses++;
520
- }
521
-
522
504
  // Ultra-fast JSON serialization with zero-copy buffers
523
505
  let jsonString: string;
524
506
 
@@ -605,12 +587,6 @@ export class MoroHttpServer {
605
587
  });
606
588
 
607
589
  httpRes.end(finalBuffer);
608
-
609
- // PERFORMANCE OPTIMIZATION: Cache small, common responses
610
- if (cacheKey && finalBuffer.length < 1024 && this.responseCache.size < 100) {
611
- this.responseCache.set(cacheKey, Buffer.from(finalBuffer));
612
- }
613
-
614
590
  // Return buffer to pool after response (zero-copy achievement!)
615
591
  process.nextTick(() => MoroHttpServer.returnBuffer(buffer));
616
592
  };
@@ -639,26 +615,6 @@ export class MoroHttpServer {
639
615
  };
640
616
 
641
617
  httpRes.cookie = (name: string, value: string, options: any = {}) => {
642
- if (httpRes.headersSent) {
643
- const isCritical =
644
- options.critical ||
645
- name.includes('session') ||
646
- name.includes('auth') ||
647
- name.includes('csrf');
648
- const message = `Cookie '${name}' could not be set - headers already sent`;
649
-
650
- if (isCritical || options.throwOnLateSet) {
651
- throw new Error(`${message}. This may cause authentication or security issues.`);
652
- } else {
653
- this.logger.warn(message, 'CookieWarning', {
654
- cookieName: name,
655
- critical: isCritical,
656
- stackTrace: new Error().stack,
657
- });
658
- }
659
- return httpRes;
660
- }
661
-
662
618
  const cookieValue = encodeURIComponent(value);
663
619
  let cookieString = `${name}=${cookieValue}`;
664
620
 
@@ -722,62 +678,6 @@ export class MoroHttpServer {
722
678
  }
723
679
  };
724
680
 
725
- // Header management utilities
726
- httpRes.hasHeader = (name: string): boolean => {
727
- return httpRes.getHeader(name) !== undefined;
728
- };
729
-
730
- // Note: removeHeader is inherited from ServerResponse, we don't override it
731
-
732
- httpRes.setBulkHeaders = (headers: Record<string, string | number>) => {
733
- if (httpRes.headersSent) {
734
- this.logger.warn('Cannot set headers - headers already sent', 'HeaderWarning', {
735
- attemptedHeaders: Object.keys(headers),
736
- });
737
- return httpRes;
738
- }
739
-
740
- Object.entries(headers).forEach(([key, value]) => {
741
- httpRes.setHeader(key, value);
742
- });
743
- return httpRes;
744
- };
745
-
746
- httpRes.appendHeader = (name: string, value: string | string[]) => {
747
- if (httpRes.headersSent) {
748
- this.logger.warn(
749
- `Cannot append to header '${name}' - headers already sent`,
750
- 'HeaderWarning'
751
- );
752
- return httpRes;
753
- }
754
-
755
- const existing = httpRes.getHeader(name);
756
- if (existing) {
757
- const values = Array.isArray(existing) ? existing : [existing.toString()];
758
- const newValues = Array.isArray(value) ? value : [value];
759
- httpRes.setHeader(name, [...values, ...newValues]);
760
- } else {
761
- httpRes.setHeader(name, value);
762
- }
763
- return httpRes;
764
- };
765
-
766
- // Response state utilities
767
- httpRes.canSetHeaders = (): boolean => {
768
- return !httpRes.headersSent;
769
- };
770
-
771
- httpRes.getResponseState = () => {
772
- return {
773
- headersSent: httpRes.headersSent,
774
- statusCode: httpRes.statusCode,
775
- headers: httpRes.getHeaders ? httpRes.getHeaders() : {},
776
- finished: httpRes.finished || false,
777
- writable: httpRes.writable,
778
- };
779
- };
780
-
781
681
  return httpRes;
782
682
  }
783
683
 
@@ -1023,9 +923,7 @@ export class MoroHttpServer {
1023
923
  .then(() => {
1024
924
  if (!nextCalled) next();
1025
925
  })
1026
- .catch(error => {
1027
- reject(error);
1028
- });
926
+ .catch(reject);
1029
927
  }
1030
928
  } catch (error) {
1031
929
  reject(error);
@@ -1064,47 +962,6 @@ export class MoroHttpServer {
1064
962
  getServer(): Server {
1065
963
  return this.server;
1066
964
  }
1067
-
1068
- // PERFORMANCE OPTIMIZATION: Generate cache key for common response patterns
1069
- private getResponseCacheKey(data: any): string | null {
1070
- // Only cache simple, common responses
1071
- if (!data || typeof data !== 'object') {
1072
- // Simple primitives or strings - generate key
1073
- const key = JSON.stringify(data);
1074
- return key.length < 100 ? key : null;
1075
- }
1076
-
1077
- // Common API response patterns
1078
- if ('hello' in data && Object.keys(data).length <= 2) {
1079
- // Hello world type responses
1080
- return `hello:${JSON.stringify(data)}`;
1081
- }
1082
-
1083
- if ('status' in data && Object.keys(data).length <= 3) {
1084
- // Status responses like {status: "ok", version: "1.0.0"}
1085
- return `status:${JSON.stringify(data)}`;
1086
- }
1087
-
1088
- if ('success' in data && 'message' in data && Object.keys(data).length <= 3) {
1089
- // Simple success/error responses
1090
- return `msg:${data.success}:${data.message}`;
1091
- }
1092
-
1093
- // Don't cache complex objects
1094
- return null;
1095
- }
1096
-
1097
- // Performance statistics
1098
- getPerformanceStats() {
1099
- return {
1100
- responseCacheHits: this.responseCacheHits,
1101
- responseCacheMisses: this.responseCacheMisses,
1102
- responseCacheSize: this.responseCache.size,
1103
- paramObjectPoolSize: this.paramObjectPool.length,
1104
- bufferPoolSize: this.bufferPool.length,
1105
- middlewareExecutionCacheSize: this.middlewareExecutionCache.size,
1106
- };
1107
- }
1108
965
  }
1109
966
 
1110
967
  // Built-in middleware
@@ -1141,6 +998,7 @@ export const middleware = {
1141
998
  },
1142
999
 
1143
1000
  compression: (options: { threshold?: number; level?: number } = {}): Middleware => {
1001
+ const zlib = require('zlib');
1144
1002
  const threshold = options.threshold || 1024;
1145
1003
  const level = options.level || 6;
1146
1004
 
@@ -1160,25 +1018,23 @@ export const middleware = {
1160
1018
  }
1161
1019
 
1162
1020
  if (acceptEncoding.includes('gzip')) {
1021
+ res.setHeader('Content-Encoding', 'gzip');
1163
1022
  zlib.gzip(buffer, { level }, (err: any, compressed: Buffer) => {
1164
1023
  if (err) {
1165
1024
  return isJson ? originalJson.call(res, data) : originalSend.call(res, data);
1166
1025
  }
1167
- if (!res.headersSent) {
1168
- res.setHeader('Content-Encoding', 'gzip');
1169
- res.setHeader('Content-Length', compressed.length);
1170
- }
1026
+ res.setHeader('Content-Length', compressed.length);
1027
+ res.writeHead(res.statusCode || 200, res.getHeaders());
1171
1028
  res.end(compressed);
1172
1029
  });
1173
1030
  } else if (acceptEncoding.includes('deflate')) {
1031
+ res.setHeader('Content-Encoding', 'deflate');
1174
1032
  zlib.deflate(buffer, { level }, (err: any, compressed: Buffer) => {
1175
1033
  if (err) {
1176
1034
  return isJson ? originalJson.call(res, data) : originalSend.call(res, data);
1177
1035
  }
1178
- if (!res.headersSent) {
1179
- res.setHeader('Content-Encoding', 'deflate');
1180
- res.setHeader('Content-Length', compressed.length);
1181
- }
1036
+ res.setHeader('Content-Length', compressed.length);
1037
+ res.writeHead(res.statusCode || 200, res.getHeaders());
1182
1038
  res.end(compressed);
1183
1039
  });
1184
1040
  } else {
@@ -1606,15 +1462,13 @@ export const middleware = {
1606
1462
  // Only handle SSE requests
1607
1463
  if (req.headers.accept?.includes('text/event-stream')) {
1608
1464
  // Set SSE headers
1609
- if (!res.headersSent) {
1610
- res.writeHead(200, {
1611
- 'Content-Type': 'text/event-stream',
1612
- 'Cache-Control': 'no-cache',
1613
- Connection: 'keep-alive',
1614
- 'Access-Control-Allow-Origin': options.cors ? '*' : undefined,
1615
- 'Access-Control-Allow-Headers': options.cors ? 'Cache-Control' : undefined,
1616
- });
1617
- }
1465
+ res.writeHead(200, {
1466
+ 'Content-Type': 'text/event-stream',
1467
+ 'Cache-Control': 'no-cache',
1468
+ Connection: 'keep-alive',
1469
+ 'Access-Control-Allow-Origin': options.cors ? '*' : undefined,
1470
+ 'Access-Control-Allow-Headers': options.cors ? 'Cache-Control' : undefined,
1471
+ });
1618
1472
 
1619
1473
  // Add SSE methods to response
1620
1474
  (res as any).sendEvent = (data: any, event?: string, id?: string) => {
@@ -1715,8 +1569,7 @@ export const middleware = {
1715
1569
  const chunkSize = end - start + 1;
1716
1570
 
1717
1571
  if (start >= fileSize || end >= fileSize) {
1718
- res.status(416);
1719
- res.setHeader('Content-Range', `bytes */${fileSize}`);
1572
+ res.status(416).setHeader('Content-Range', `bytes */${fileSize}`);
1720
1573
  res.json({ success: false, error: 'Range not satisfiable' });
1721
1574
  return;
1722
1575
  }
@@ -1726,7 +1579,7 @@ export const middleware = {
1726
1579
  res.setHeader('Content-Length', chunkSize);
1727
1580
 
1728
1581
  // Stream the range
1729
- const stream = createReadStream(filePath, {
1582
+ const stream = require('fs').createReadStream(filePath, {
1730
1583
  start,
1731
1584
  end,
1732
1585
  });
@@ -1744,12 +1597,12 @@ export const middleware = {
1744
1597
  res.write(`\r\n--${boundary}\r\n`);
1745
1598
  res.write(`Content-Range: bytes ${start}-${end}/${fileSize}\r\n\r\n`);
1746
1599
 
1747
- const stream = createReadStream(filePath, {
1600
+ const stream = require('fs').createReadStream(filePath, {
1748
1601
  start,
1749
1602
  end,
1750
1603
  });
1751
- await new Promise<void>(resolve => {
1752
- stream.on('end', () => resolve());
1604
+ await new Promise(resolve => {
1605
+ stream.on('end', resolve);
1753
1606
  stream.pipe(res, { end: false });
1754
1607
  });
1755
1608
  }
@@ -1783,6 +1636,7 @@ export const middleware = {
1783
1636
  const ignoreMethods = options.ignoreMethods || ['GET', 'HEAD', 'OPTIONS'];
1784
1637
 
1785
1638
  const generateToken = () => {
1639
+ const crypto = require('crypto');
1786
1640
  return crypto.randomBytes(tokenLength).toString('hex');
1787
1641
  };
1788
1642
 
@@ -1871,6 +1725,7 @@ export const middleware = {
1871
1725
  // Generate nonce if requested
1872
1726
  let nonce: string | undefined;
1873
1727
  if (options.nonce) {
1728
+ const crypto = require('crypto');
1874
1729
  nonce = crypto.randomBytes(16).toString('base64');
1875
1730
  (req as any).cspNonce = nonce;
1876
1731
  }
@@ -1,7 +1,6 @@
1
1
  // HTTP System - Centralized Exports
2
- export { MoroHttpServer, middleware } from './http-server.js';
3
- export { UWebSocketsHttpServer } from './uws-http-server.js';
4
- export { Router } from './router.js';
2
+ export { MoroHttpServer, middleware } from './http-server';
3
+ export { Router } from './router';
5
4
 
6
5
  // Type exports
7
- export type { HttpRequest, HttpResponse, HttpHandler, Middleware } from '../../types/http.js';
6
+ export type { HttpRequest, HttpResponse, HttpHandler, Middleware } from '../../types/http';
@@ -5,21 +5,13 @@ import {
5
5
  HttpHandler,
6
6
  Middleware,
7
7
  RouteDefinition,
8
- } from '../../types/http.js';
9
- import { createFrameworkLogger } from '../logger/index.js';
8
+ } from '../../types/http';
9
+ import { createFrameworkLogger } from '../logger';
10
10
 
11
11
  export class Router {
12
12
  private routes: RouteDefinition[] = [];
13
13
  private logger = createFrameworkLogger('Router');
14
14
 
15
- // Performance optimizations - O(1) static route lookup
16
- private staticRoutes = new Map<string, RouteDefinition>(); // "GET:/api/users" -> route
17
- private dynamicRoutes: RouteDefinition[] = []; // Routes with parameters
18
-
19
- // Object pooling for parameters to reduce GC pressure
20
- private paramObjectPool: Record<string, string>[] = [];
21
- private readonly maxPoolSize = 50;
22
-
23
15
  get(path: string, ...handlers: (Middleware | HttpHandler)[]): void {
24
16
  this.addRoute('GET', path, handlers);
25
17
  }
@@ -45,37 +37,14 @@ export class Router {
45
37
  const handler = handlers.pop() as HttpHandler;
46
38
  const middleware = handlers as Middleware[];
47
39
 
48
- const route: RouteDefinition = {
40
+ this.routes.push({
49
41
  method,
50
42
  path,
51
43
  pattern,
52
44
  paramNames,
53
45
  handler,
54
46
  middleware,
55
- };
56
-
57
- // Add to routes array (maintain compatibility)
58
- this.routes.push(route);
59
-
60
- // Performance optimization: separate static and dynamic routes
61
- const isStatic = !path.includes(':') && !path.includes('*');
62
- if (isStatic && middleware.length === 0) {
63
- // Static route with no middleware - use O(1) lookup
64
- const routeKey = `${method}:${path}`;
65
- this.staticRoutes.set(routeKey, route);
66
- this.logger.debug(`Added static route: ${routeKey}`, 'FastRoute');
67
- } else {
68
- // Dynamic route or has middleware - needs regex matching
69
- this.dynamicRoutes.push(route);
70
- this.logger.debug(`Added dynamic route: ${method} ${path}`, 'DynamicRoute');
71
- }
72
-
73
- // Initialize object pool on first route
74
- if (this.paramObjectPool.length === 0) {
75
- for (let i = 0; i < this.maxPoolSize; i++) {
76
- this.paramObjectPool.push({});
77
- }
78
- }
47
+ });
79
48
  }
80
49
 
81
50
  private pathToRegex(path: string): { pattern: RegExp; paramNames: string[] } {
@@ -108,30 +77,10 @@ export class Router {
108
77
  'Processing'
109
78
  );
110
79
 
111
- // PERFORMANCE OPTIMIZATION: Fast path - O(1) static route lookup first
112
- const routeKey = `${req.method}:${path}`;
113
- const staticRoute = this.staticRoutes.get(routeKey);
114
-
115
- if (staticRoute) {
116
- this.logger.debug(`Fast route match: ${routeKey}`, 'FastRoute');
117
-
118
- // Static route with no middleware - execute handler directly
119
- req.params = {}; // No params for static routes
120
- const result = await staticRoute.handler(req, res);
121
-
122
- // If handler returns data and response hasn't been sent, send it
123
- if (result !== undefined && result !== null && !res.headersSent) {
124
- res.json(result);
125
- }
126
-
127
- return true;
128
- }
129
-
130
- // Fallback: Dynamic route matching (with middleware support)
131
- const route = this.dynamicRoutes.find(r => r.method === req.method && r.pattern.test(path));
80
+ const route = this.routes.find(r => r.method === req.method && r.pattern.test(path));
132
81
 
133
82
  this.logger.debug(
134
- `Found dynamic route: ${!!route}${route ? ` ${route.method} ${route.path}` : ' none'}`,
83
+ `Found route: ${!!route}${route ? ` ${route.method} ${route.path}` : ' none'}`,
135
84
  'RouteMatch'
136
85
  );
137
86
 
@@ -139,92 +88,54 @@ export class Router {
139
88
  return false; // Route not found
140
89
  }
141
90
 
142
- // Extract path parameters using object pooling
91
+ // Extract path parameters
143
92
  const matches = path.match(route.pattern);
144
93
  if (matches) {
145
- req.params = this.acquireParamObject();
94
+ req.params = {};
146
95
  route.paramNames.forEach((name, index) => {
147
96
  req.params[name] = matches[index + 1];
148
97
  });
149
98
  }
150
99
 
151
- try {
152
- // Execute middleware
153
- for (const mw of route.middleware) {
154
- await new Promise<void>((resolve, reject) => {
155
- let nextCalled = false;
156
-
157
- const next = () => {
158
- if (nextCalled) return;
159
- nextCalled = true;
160
- resolve();
161
- };
162
-
163
- try {
164
- const result = mw(req, res, next);
165
-
166
- if (result instanceof Promise) {
167
- result
168
- .then(() => {
169
- if (!nextCalled) next();
170
- })
171
- .catch(reject);
172
- }
173
- } catch (error) {
174
- reject(error);
100
+ // Execute middleware
101
+ for (const mw of route.middleware) {
102
+ await new Promise<void>((resolve, reject) => {
103
+ let nextCalled = false;
104
+
105
+ const next = () => {
106
+ if (nextCalled) return;
107
+ nextCalled = true;
108
+ resolve();
109
+ };
110
+
111
+ try {
112
+ const result = mw(req, res, next);
113
+
114
+ if (result instanceof Promise) {
115
+ result
116
+ .then(() => {
117
+ if (!nextCalled) next();
118
+ })
119
+ .catch(reject);
175
120
  }
176
- });
177
-
178
- if (res.headersSent) break; // Early exit if response sent
179
- }
180
-
181
- // Execute handler
182
- const result = await route.handler(req, res);
183
-
184
- // If handler returns data and response hasn't been sent, send it
185
- if (result !== undefined && result !== null && !res.headersSent) {
186
- res.json(result);
187
- }
188
-
189
- return true;
190
- } finally {
191
- // Release parameter object back to pool
192
- if (req.params && matches) {
193
- this.releaseParamObject(req.params);
194
- }
121
+ } catch (error) {
122
+ reject(error);
123
+ }
124
+ });
195
125
  }
196
- }
197
126
 
198
- getRoutes(): RouteDefinition[] {
199
- return [...this.routes];
200
- }
127
+ // Execute handler
128
+ const result = await route.handler(req, res);
201
129
 
202
- // Object pooling methods for performance optimization
203
- private acquireParamObject(): Record<string, string> {
204
- const obj = this.paramObjectPool.pop();
205
- if (obj) {
206
- // Clear the object
207
- for (const key in obj) {
208
- delete obj[key];
209
- }
210
- return obj;
130
+ // If handler returns data and response hasn't been sent, send it
131
+ if (result !== undefined && result !== null && !res.headersSent) {
132
+ res.json(result);
211
133
  }
212
- return {};
213
- }
214
134
 
215
- private releaseParamObject(obj: Record<string, string>): void {
216
- if (this.paramObjectPool.length < this.maxPoolSize) {
217
- this.paramObjectPool.push(obj);
218
- }
135
+ return true;
219
136
  }
220
137
 
221
- // Performance statistics for monitoring
222
- getPerformanceStats() {
223
- return {
224
- totalRoutes: this.routes.length,
225
- staticRoutes: this.staticRoutes.size,
226
- dynamicRoutes: this.dynamicRoutes.length,
227
- paramObjectPoolSize: this.paramObjectPool.length,
228
- };
138
+ getRoutes(): RouteDefinition[] {
139
+ return [...this.routes];
229
140
  }
230
141
  }
@@ -1,5 +1,5 @@
1
1
  // Advanced Logger Filters
2
- import { LogEntry, LogFilter } from '../../types/logger.js';
2
+ import { LogEntry, LogFilter } from '../../types/logger';
3
3
 
4
4
  // Level-based filter
5
5
  export const levelFilter = (minLevel: string): LogFilter => ({
@@ -22,24 +22,16 @@ export const contextFilter = (allowedContexts: string[]): LogFilter => ({
22
22
  // Rate limiting filter
23
23
  export const rateLimitFilter = (maxPerSecond: number): LogFilter => {
24
24
  const timestamps: number[] = [];
25
- let lastCleanup = 0;
26
25
 
27
26
  return {
28
27
  name: 'rate-limit',
29
28
  filter: (entry: LogEntry) => {
30
29
  const now = Date.now();
30
+ const oneSecondAgo = now - 1000;
31
31
 
32
- // Batch cleanup for better performance and thread safety
33
- if (now - lastCleanup > 1000) {
34
- const cutoff = now - 1000;
35
- let keepIndex = 0;
36
- for (let i = 0; i < timestamps.length; i++) {
37
- if (timestamps[i] >= cutoff) {
38
- timestamps[keepIndex++] = timestamps[i];
39
- }
40
- }
41
- timestamps.length = keepIndex;
42
- lastCleanup = now;
32
+ // Remove old timestamps
33
+ while (timestamps.length > 0 && timestamps[0] < oneSecondAgo) {
34
+ timestamps.shift();
43
35
  }
44
36
 
45
37
  // Check rate limit
@@ -5,9 +5,8 @@ export {
5
5
  createFrameworkLogger,
6
6
  configureGlobalLogger,
7
7
  applyLoggingConfiguration,
8
- destroyGlobalLogger,
9
- } from './logger.js';
10
- export * from './filters.js';
8
+ } from './logger';
9
+ export * from './filters';
11
10
 
12
11
  export type {
13
12
  LogLevel,
@@ -18,4 +17,4 @@ export type {
18
17
  LogFilter,
19
18
  LogMetrics,
20
19
  ColorScheme,
21
- } from '../../types/logger.js';
20
+ } from '../../types/logger';