@morojs/moro 1.6.1 → 1.6.3

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 (575) 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 +202 -185
  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/auth/core.d.ts +78 -0
  97. package/dist/core/middleware/built-in/auth/core.js +358 -0
  98. package/dist/core/middleware/built-in/auth/core.js.map +1 -0
  99. package/dist/core/middleware/built-in/{auth-helpers.js → auth/helpers.js} +12 -23
  100. package/dist/core/middleware/built-in/auth/helpers.js.map +1 -0
  101. package/dist/core/middleware/built-in/auth/hook.d.ts +30 -0
  102. package/dist/core/middleware/built-in/auth/hook.js +99 -0
  103. package/dist/core/middleware/built-in/auth/hook.js.map +1 -0
  104. package/dist/core/middleware/built-in/auth/index.d.ts +7 -0
  105. package/dist/core/middleware/built-in/auth/index.js +15 -0
  106. package/dist/core/middleware/built-in/auth/index.js.map +1 -0
  107. package/dist/core/middleware/built-in/auth/jwt-helpers.d.ts +118 -0
  108. package/dist/core/middleware/built-in/auth/jwt-helpers.js +218 -0
  109. package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -0
  110. package/dist/core/middleware/built-in/auth/middleware.d.ts +23 -0
  111. package/dist/core/middleware/built-in/auth/middleware.js +71 -0
  112. package/dist/core/middleware/built-in/auth/middleware.js.map +1 -0
  113. package/dist/core/middleware/built-in/{auth-providers.d.ts → auth/providers.d.ts} +1 -1
  114. package/dist/core/middleware/built-in/{auth-providers.js → auth/providers.js} +5 -10
  115. package/dist/core/middleware/built-in/auth/providers.js.map +1 -0
  116. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/file.d.ts +1 -1
  117. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/file.js +10 -47
  118. package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -0
  119. package/dist/core/middleware/built-in/cache/adapters/cache/index.d.ts +5 -0
  120. package/dist/core/middleware/built-in/cache/adapters/cache/index.js +21 -0
  121. package/dist/core/middleware/built-in/cache/adapters/cache/index.js.map +1 -0
  122. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/memory.d.ts +1 -1
  123. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/memory.js +3 -7
  124. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -0
  125. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/redis.d.ts +3 -1
  126. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/redis.js +11 -9
  127. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -0
  128. package/dist/core/middleware/built-in/cache/adapters/index.d.ts +2 -0
  129. package/dist/core/middleware/built-in/cache/adapters/index.js +5 -0
  130. package/dist/core/middleware/built-in/cache/adapters/index.js.map +1 -0
  131. package/dist/core/middleware/built-in/cache/core.d.ts +37 -0
  132. package/dist/core/middleware/built-in/cache/core.js +87 -0
  133. package/dist/core/middleware/built-in/cache/core.js.map +1 -0
  134. package/dist/core/middleware/built-in/cache/hook.d.ts +20 -0
  135. package/dist/core/middleware/built-in/{cache.js → cache/hook.js} +30 -14
  136. package/dist/core/middleware/built-in/cache/hook.js.map +1 -0
  137. package/dist/core/middleware/built-in/cache/index.d.ts +3 -0
  138. package/dist/core/middleware/built-in/cache/index.js +9 -0
  139. package/dist/core/middleware/built-in/cache/index.js.map +1 -0
  140. package/dist/core/middleware/built-in/cache/middleware.d.ts +17 -0
  141. package/dist/core/middleware/built-in/cache/middleware.js +44 -0
  142. package/dist/core/middleware/built-in/cache/middleware.js.map +1 -0
  143. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/azure.d.ts +1 -1
  144. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/azure.js +3 -7
  145. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -0
  146. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudflare.d.ts +1 -1
  147. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudflare.js +3 -7
  148. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -0
  149. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudfront.d.ts +3 -1
  150. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudfront.js +12 -10
  151. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -0
  152. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.d.ts +5 -0
  153. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js +21 -0
  154. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js.map +1 -0
  155. package/dist/core/middleware/built-in/cdn/adapters/index.d.ts +2 -0
  156. package/dist/core/middleware/built-in/cdn/adapters/index.js +5 -0
  157. package/dist/core/middleware/built-in/cdn/adapters/index.js.map +1 -0
  158. package/dist/core/middleware/built-in/cdn/core.d.ts +43 -0
  159. package/dist/core/middleware/built-in/cdn/core.js +144 -0
  160. package/dist/core/middleware/built-in/cdn/core.js.map +1 -0
  161. package/dist/core/middleware/built-in/cdn/hook.d.ts +22 -0
  162. package/dist/core/middleware/built-in/cdn/hook.js +70 -0
  163. package/dist/core/middleware/built-in/cdn/hook.js.map +1 -0
  164. package/dist/core/middleware/built-in/cdn/index.d.ts +5 -0
  165. package/dist/core/middleware/built-in/cdn/index.js +11 -0
  166. package/dist/core/middleware/built-in/cdn/index.js.map +1 -0
  167. package/dist/core/middleware/built-in/cdn/middleware.d.ts +21 -0
  168. package/dist/core/middleware/built-in/cdn/middleware.js +52 -0
  169. package/dist/core/middleware/built-in/cdn/middleware.js.map +1 -0
  170. package/dist/core/middleware/built-in/cookie/core.d.ts +37 -0
  171. package/dist/core/middleware/built-in/cookie/core.js +83 -0
  172. package/dist/core/middleware/built-in/cookie/core.js.map +1 -0
  173. package/dist/core/middleware/built-in/cookie/hook.d.ts +20 -0
  174. package/dist/core/middleware/built-in/cookie/hook.js +47 -0
  175. package/dist/core/middleware/built-in/cookie/hook.js.map +1 -0
  176. package/dist/core/middleware/built-in/cookie/index.d.ts +3 -0
  177. package/dist/core/middleware/built-in/cookie/index.js +9 -0
  178. package/dist/core/middleware/built-in/cookie/index.js.map +1 -0
  179. package/dist/core/middleware/built-in/cookie/middleware.d.ts +17 -0
  180. package/dist/core/middleware/built-in/cookie/middleware.js +36 -0
  181. package/dist/core/middleware/built-in/cookie/middleware.js.map +1 -0
  182. package/dist/core/middleware/built-in/cors/core.d.ts +23 -0
  183. package/dist/core/middleware/built-in/cors/core.js +51 -0
  184. package/dist/core/middleware/built-in/cors/core.js.map +1 -0
  185. package/dist/core/middleware/built-in/cors/hook.d.ts +17 -0
  186. package/dist/core/middleware/built-in/cors/hook.js +37 -0
  187. package/dist/core/middleware/built-in/cors/hook.js.map +1 -0
  188. package/dist/core/middleware/built-in/cors/index.d.ts +3 -0
  189. package/dist/core/middleware/built-in/cors/index.js +9 -0
  190. package/dist/core/middleware/built-in/cors/index.js.map +1 -0
  191. package/dist/core/middleware/built-in/cors/middleware.d.ts +16 -0
  192. package/dist/core/middleware/built-in/cors/middleware.js +22 -0
  193. package/dist/core/middleware/built-in/cors/middleware.js.map +1 -0
  194. package/dist/core/middleware/built-in/csp/core.d.ts +45 -0
  195. package/dist/core/middleware/built-in/csp/core.js +88 -0
  196. package/dist/core/middleware/built-in/csp/core.js.map +1 -0
  197. package/dist/core/middleware/built-in/csp/hook.d.ts +22 -0
  198. package/dist/core/middleware/built-in/csp/hook.js +47 -0
  199. package/dist/core/middleware/built-in/csp/hook.js.map +1 -0
  200. package/dist/core/middleware/built-in/csp/index.d.ts +3 -0
  201. package/dist/core/middleware/built-in/csp/index.js +9 -0
  202. package/dist/core/middleware/built-in/csp/index.js.map +1 -0
  203. package/dist/core/middleware/built-in/csp/middleware.d.ts +19 -0
  204. package/dist/core/middleware/built-in/csp/middleware.js +29 -0
  205. package/dist/core/middleware/built-in/csp/middleware.js.map +1 -0
  206. package/dist/core/middleware/built-in/csrf/core.d.ts +28 -0
  207. package/dist/core/middleware/built-in/csrf/core.js +69 -0
  208. package/dist/core/middleware/built-in/csrf/core.js.map +1 -0
  209. package/dist/core/middleware/built-in/csrf/hook.d.ts +17 -0
  210. package/dist/core/middleware/built-in/csrf/hook.js +45 -0
  211. package/dist/core/middleware/built-in/csrf/hook.js.map +1 -0
  212. package/dist/core/middleware/built-in/csrf/index.d.ts +3 -0
  213. package/dist/core/middleware/built-in/csrf/index.js +9 -0
  214. package/dist/core/middleware/built-in/csrf/index.js.map +1 -0
  215. package/dist/core/middleware/built-in/csrf/middleware.d.ts +16 -0
  216. package/dist/core/middleware/built-in/csrf/middleware.js +34 -0
  217. package/dist/core/middleware/built-in/csrf/middleware.js.map +1 -0
  218. package/dist/core/middleware/built-in/error-tracker/index.d.ts +1 -0
  219. package/dist/core/middleware/built-in/error-tracker/index.js +4 -0
  220. package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -0
  221. package/dist/core/middleware/built-in/error-tracker/middleware.d.ts +12 -0
  222. package/dist/core/middleware/built-in/error-tracker/middleware.js +26 -0
  223. package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -0
  224. package/dist/core/middleware/built-in/index.d.ts +28 -61
  225. package/dist/core/middleware/built-in/index.js +48 -78
  226. package/dist/core/middleware/built-in/index.js.map +1 -1
  227. package/dist/core/middleware/built-in/performance-monitor/index.d.ts +1 -0
  228. package/dist/core/middleware/built-in/performance-monitor/index.js +4 -0
  229. package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -0
  230. package/dist/core/middleware/built-in/performance-monitor/middleware.d.ts +12 -0
  231. package/dist/core/middleware/built-in/performance-monitor/middleware.js +29 -0
  232. package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -0
  233. package/dist/core/middleware/built-in/rate-limit/core.d.ts +33 -0
  234. package/dist/core/middleware/built-in/rate-limit/core.js +86 -0
  235. package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -0
  236. package/dist/core/middleware/built-in/rate-limit/hook.d.ts +20 -0
  237. package/dist/core/middleware/built-in/{rate-limit.js → rate-limit/hook.js} +24 -22
  238. package/dist/core/middleware/built-in/rate-limit/hook.js.map +1 -0
  239. package/dist/core/middleware/built-in/rate-limit/index.d.ts +3 -0
  240. package/dist/core/middleware/built-in/rate-limit/index.js +9 -0
  241. package/dist/core/middleware/built-in/rate-limit/index.js.map +1 -0
  242. package/dist/core/middleware/built-in/rate-limit/middleware.d.ts +16 -0
  243. package/dist/core/middleware/built-in/rate-limit/middleware.js +35 -0
  244. package/dist/core/middleware/built-in/rate-limit/middleware.js.map +1 -0
  245. package/dist/core/middleware/built-in/request-logger/index.d.ts +1 -0
  246. package/dist/core/middleware/built-in/request-logger/index.js +4 -0
  247. package/dist/core/middleware/built-in/request-logger/index.js.map +1 -0
  248. package/dist/core/middleware/built-in/request-logger/middleware.d.ts +12 -0
  249. package/dist/core/middleware/built-in/request-logger/middleware.js +24 -0
  250. package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -0
  251. package/dist/core/middleware/built-in/session/core.d.ts +73 -0
  252. package/dist/core/middleware/built-in/session/core.js +227 -0
  253. package/dist/core/middleware/built-in/session/core.js.map +1 -0
  254. package/dist/core/middleware/built-in/session/hook.d.ts +17 -0
  255. package/dist/core/middleware/built-in/session/hook.js +53 -0
  256. package/dist/core/middleware/built-in/session/hook.js.map +1 -0
  257. package/dist/core/middleware/built-in/session/index.d.ts +3 -0
  258. package/dist/core/middleware/built-in/session/index.js +9 -0
  259. package/dist/core/middleware/built-in/session/index.js.map +1 -0
  260. package/dist/core/middleware/built-in/session/middleware.d.ts +17 -0
  261. package/dist/core/middleware/built-in/session/middleware.js +38 -0
  262. package/dist/core/middleware/built-in/session/middleware.js.map +1 -0
  263. package/dist/core/middleware/built-in/sse/core.d.ts +44 -0
  264. package/dist/core/middleware/built-in/sse/core.js +117 -0
  265. package/dist/core/middleware/built-in/sse/core.js.map +1 -0
  266. package/dist/core/middleware/built-in/sse/hook.d.ts +18 -0
  267. package/dist/core/middleware/built-in/sse/hook.js +60 -0
  268. package/dist/core/middleware/built-in/sse/hook.js.map +1 -0
  269. package/dist/core/middleware/built-in/sse/index.d.ts +3 -0
  270. package/dist/core/middleware/built-in/sse/index.js +9 -0
  271. package/dist/core/middleware/built-in/sse/index.js.map +1 -0
  272. package/dist/core/middleware/built-in/sse/middleware.d.ts +18 -0
  273. package/dist/core/middleware/built-in/sse/middleware.js +43 -0
  274. package/dist/core/middleware/built-in/sse/middleware.js.map +1 -0
  275. package/dist/core/middleware/built-in/validation/core.d.ts +23 -0
  276. package/dist/core/middleware/built-in/validation/core.js +93 -0
  277. package/dist/core/middleware/built-in/validation/core.js.map +1 -0
  278. package/dist/core/middleware/built-in/validation/hook.d.ts +13 -0
  279. package/dist/core/middleware/built-in/{validation.js → validation/hook.js} +16 -9
  280. package/dist/core/middleware/built-in/validation/hook.js.map +1 -0
  281. package/dist/core/middleware/built-in/validation/index.d.ts +3 -0
  282. package/dist/core/middleware/built-in/validation/index.js +9 -0
  283. package/dist/core/middleware/built-in/validation/index.js.map +1 -0
  284. package/dist/core/middleware/built-in/validation/middleware.d.ts +16 -0
  285. package/dist/core/middleware/built-in/validation/middleware.js +27 -0
  286. package/dist/core/middleware/built-in/validation/middleware.js.map +1 -0
  287. package/dist/core/middleware/index.d.ts +4 -4
  288. package/dist/core/middleware/index.js +14 -28
  289. package/dist/core/middleware/index.js.map +1 -1
  290. package/dist/core/modules/auto-discovery.d.ts +19 -2
  291. package/dist/core/modules/auto-discovery.js +391 -74
  292. package/dist/core/modules/auto-discovery.js.map +1 -1
  293. package/dist/core/modules/index.d.ts +2 -2
  294. package/dist/core/modules/index.js +2 -9
  295. package/dist/core/modules/index.js.map +1 -1
  296. package/dist/core/modules/modules.d.ts +3 -3
  297. package/dist/core/modules/modules.js +23 -54
  298. package/dist/core/modules/modules.js.map +1 -1
  299. package/dist/core/networking/adapters/index.d.ts +4 -3
  300. package/dist/core/networking/adapters/index.js +3 -7
  301. package/dist/core/networking/adapters/index.js.map +1 -1
  302. package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -1
  303. package/dist/core/networking/adapters/socketio-adapter.js +5 -40
  304. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  305. package/dist/core/networking/adapters/uws-adapter.d.ts +44 -0
  306. package/dist/core/networking/adapters/uws-adapter.js +513 -0
  307. package/dist/core/networking/adapters/uws-adapter.js.map +1 -0
  308. package/dist/core/networking/adapters/ws-adapter.d.ts +2 -2
  309. package/dist/core/networking/adapters/ws-adapter.js +8 -43
  310. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  311. package/dist/core/networking/index.d.ts +3 -2
  312. package/dist/core/networking/index.js +2 -7
  313. package/dist/core/networking/index.js.map +1 -1
  314. package/dist/core/networking/service-discovery.js +8 -12
  315. package/dist/core/networking/service-discovery.js.map +1 -1
  316. package/dist/core/networking/websocket-adapter.js +1 -2
  317. package/dist/core/networking/websocket-adapter.js.map +1 -1
  318. package/dist/core/networking/websocket-manager.d.ts +3 -3
  319. package/dist/core/networking/websocket-manager.js +9 -11
  320. package/dist/core/networking/websocket-manager.js.map +1 -1
  321. package/dist/core/pooling/object-pool-manager.d.ts +140 -0
  322. package/dist/core/pooling/object-pool-manager.js +502 -0
  323. package/dist/core/pooling/object-pool-manager.js.map +1 -0
  324. package/dist/core/routing/app-integration.d.ts +14 -12
  325. package/dist/core/routing/app-integration.js +49 -85
  326. package/dist/core/routing/app-integration.js.map +1 -1
  327. package/dist/core/routing/index.d.ts +17 -11
  328. package/dist/core/routing/index.js +48 -237
  329. package/dist/core/routing/index.js.map +1 -1
  330. package/dist/core/routing/path-matcher.d.ts +67 -0
  331. package/dist/core/routing/path-matcher.js +182 -0
  332. package/dist/core/routing/path-matcher.js.map +1 -0
  333. package/dist/core/routing/router.d.ts +38 -0
  334. package/dist/core/routing/router.js +68 -0
  335. package/dist/core/routing/router.js.map +1 -0
  336. package/dist/core/routing/unified-router.d.ts +132 -0
  337. package/dist/core/routing/unified-router.js +639 -0
  338. package/dist/core/routing/unified-router.js.map +1 -0
  339. package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
  340. package/dist/core/runtime/aws-lambda-adapter.js +2 -6
  341. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  342. package/dist/core/runtime/base-adapter.d.ts +2 -2
  343. package/dist/core/runtime/base-adapter.js +3 -7
  344. package/dist/core/runtime/base-adapter.js.map +1 -1
  345. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
  346. package/dist/core/runtime/cloudflare-workers-adapter.js +2 -6
  347. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  348. package/dist/core/runtime/index.d.ts +12 -12
  349. package/dist/core/runtime/index.js +22 -35
  350. package/dist/core/runtime/index.js.map +1 -1
  351. package/dist/core/runtime/node-adapter.d.ts +4 -4
  352. package/dist/core/runtime/node-adapter.js +18 -49
  353. package/dist/core/runtime/node-adapter.js.map +1 -1
  354. package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
  355. package/dist/core/runtime/vercel-edge-adapter.js +2 -6
  356. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  357. package/dist/core/utilities/circuit-breaker.js +1 -5
  358. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  359. package/dist/core/utilities/container.js +12 -22
  360. package/dist/core/utilities/container.js.map +1 -1
  361. package/dist/core/utilities/hooks.d.ts +2 -2
  362. package/dist/core/utilities/hooks.js +7 -12
  363. package/dist/core/utilities/hooks.js.map +1 -1
  364. package/dist/core/utilities/index.d.ts +5 -4
  365. package/dist/core/utilities/index.js +5 -19
  366. package/dist/core/utilities/index.js.map +1 -1
  367. package/dist/core/utilities/package-utils.d.ts +38 -0
  368. package/dist/core/utilities/package-utils.js +57 -0
  369. package/dist/core/utilities/package-utils.js.map +1 -0
  370. package/dist/core/validation/adapters.d.ts +1 -1
  371. package/dist/core/validation/adapters.js +15 -26
  372. package/dist/core/validation/adapters.js.map +1 -1
  373. package/dist/core/validation/index.d.ts +6 -4
  374. package/dist/core/validation/index.js +57 -28
  375. package/dist/core/validation/index.js.map +1 -1
  376. package/dist/core/validation/schema-interface.js +3 -9
  377. package/dist/core/validation/schema-interface.js.map +1 -1
  378. package/dist/index.d.ts +52 -52
  379. package/dist/index.js +24 -132
  380. package/dist/index.js.map +1 -1
  381. package/dist/moro.d.ts +70 -16
  382. package/dist/moro.js +650 -269
  383. package/dist/moro.js.map +1 -1
  384. package/dist/types/auth.js +3 -9
  385. package/dist/types/auth.js.map +1 -1
  386. package/dist/types/cache.js +1 -2
  387. package/dist/types/cdn.js +1 -2
  388. package/dist/types/config.d.ts +73 -2
  389. package/dist/types/config.js +1 -2
  390. package/dist/types/config.js.map +1 -1
  391. package/dist/types/core.d.ts +36 -42
  392. package/dist/types/core.js +1 -2
  393. package/dist/types/database.js +1 -2
  394. package/dist/types/discovery.js +1 -2
  395. package/dist/types/events.js +1 -2
  396. package/dist/types/hooks.d.ts +4 -1
  397. package/dist/types/hooks.js +1 -2
  398. package/dist/types/http.d.ts +16 -1
  399. package/dist/types/http.js +1 -2
  400. package/dist/types/logger.d.ts +7 -0
  401. package/dist/types/logger.js +1 -2
  402. package/dist/types/module.d.ts +11 -0
  403. package/dist/types/module.js +1 -2
  404. package/dist/types/runtime.d.ts +1 -1
  405. package/dist/types/runtime.js +1 -2
  406. package/dist/types/session.js +1 -2
  407. package/package.json +18 -55
  408. package/dist/core/config/loader.d.ts +0 -7
  409. package/dist/core/config/loader.js +0 -269
  410. package/dist/core/config/loader.js.map +0 -1
  411. package/dist/core/config/validation.d.ts +0 -17
  412. package/dist/core/config/validation.js +0 -131
  413. package/dist/core/config/validation.js.map +0 -1
  414. package/dist/core/http/router.d.ts +0 -14
  415. package/dist/core/http/router.js +0 -109
  416. package/dist/core/http/router.js.map +0 -1
  417. package/dist/core/middleware/built-in/adapters/cache/file.js.map +0 -1
  418. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +0 -5
  419. package/dist/core/middleware/built-in/adapters/cache/index.js +0 -28
  420. package/dist/core/middleware/built-in/adapters/cache/index.js.map +0 -1
  421. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +0 -1
  422. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +0 -1
  423. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +0 -1
  424. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +0 -1
  425. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +0 -1
  426. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +0 -5
  427. package/dist/core/middleware/built-in/adapters/cdn/index.js +0 -28
  428. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +0 -1
  429. package/dist/core/middleware/built-in/adapters/index.d.ts +0 -4
  430. package/dist/core/middleware/built-in/adapters/index.js +0 -26
  431. package/dist/core/middleware/built-in/adapters/index.js.map +0 -1
  432. package/dist/core/middleware/built-in/auth-helpers.js.map +0 -1
  433. package/dist/core/middleware/built-in/auth-providers.js.map +0 -1
  434. package/dist/core/middleware/built-in/auth.d.ts +0 -30
  435. package/dist/core/middleware/built-in/auth.js +0 -281
  436. package/dist/core/middleware/built-in/auth.js.map +0 -1
  437. package/dist/core/middleware/built-in/cache.d.ts +0 -3
  438. package/dist/core/middleware/built-in/cache.js.map +0 -1
  439. package/dist/core/middleware/built-in/cdn.d.ts +0 -3
  440. package/dist/core/middleware/built-in/cdn.js +0 -113
  441. package/dist/core/middleware/built-in/cdn.js.map +0 -1
  442. package/dist/core/middleware/built-in/cookie.d.ts +0 -14
  443. package/dist/core/middleware/built-in/cookie.js +0 -68
  444. package/dist/core/middleware/built-in/cookie.js.map +0 -1
  445. package/dist/core/middleware/built-in/cors.d.ts +0 -2
  446. package/dist/core/middleware/built-in/cors.js +0 -29
  447. package/dist/core/middleware/built-in/cors.js.map +0 -1
  448. package/dist/core/middleware/built-in/csp.d.ts +0 -22
  449. package/dist/core/middleware/built-in/csp.js +0 -71
  450. package/dist/core/middleware/built-in/csp.js.map +0 -1
  451. package/dist/core/middleware/built-in/csrf.d.ts +0 -9
  452. package/dist/core/middleware/built-in/csrf.js +0 -63
  453. package/dist/core/middleware/built-in/csrf.js.map +0 -1
  454. package/dist/core/middleware/built-in/error-tracker.d.ts +0 -1
  455. package/dist/core/middleware/built-in/error-tracker.js +0 -19
  456. package/dist/core/middleware/built-in/error-tracker.js.map +0 -1
  457. package/dist/core/middleware/built-in/performance-monitor.d.ts +0 -1
  458. package/dist/core/middleware/built-in/performance-monitor.js +0 -22
  459. package/dist/core/middleware/built-in/performance-monitor.js.map +0 -1
  460. package/dist/core/middleware/built-in/rate-limit.d.ts +0 -6
  461. package/dist/core/middleware/built-in/rate-limit.js.map +0 -1
  462. package/dist/core/middleware/built-in/request-logger.d.ts +0 -1
  463. package/dist/core/middleware/built-in/request-logger.js +0 -16
  464. package/dist/core/middleware/built-in/request-logger.js.map +0 -1
  465. package/dist/core/middleware/built-in/session.d.ts +0 -41
  466. package/dist/core/middleware/built-in/session.js +0 -209
  467. package/dist/core/middleware/built-in/session.js.map +0 -1
  468. package/dist/core/middleware/built-in/sse.d.ts +0 -6
  469. package/dist/core/middleware/built-in/sse.js +0 -71
  470. package/dist/core/middleware/built-in/sse.js.map +0 -1
  471. package/dist/core/middleware/built-in/validation.d.ts +0 -2
  472. package/dist/core/middleware/built-in/validation.js.map +0 -1
  473. package/src/core/auth/README.md +0 -339
  474. package/src/core/auth/morojs-adapter.ts +0 -410
  475. package/src/core/config/file-loader.ts +0 -407
  476. package/src/core/config/index.ts +0 -60
  477. package/src/core/config/loader.ts +0 -633
  478. package/src/core/config/schema.ts +0 -150
  479. package/src/core/config/utils.ts +0 -251
  480. package/src/core/config/validation.ts +0 -140
  481. package/src/core/database/README.md +0 -228
  482. package/src/core/database/adapters/drizzle.ts +0 -403
  483. package/src/core/database/adapters/index.ts +0 -42
  484. package/src/core/database/adapters/mongodb.ts +0 -269
  485. package/src/core/database/adapters/mysql.ts +0 -207
  486. package/src/core/database/adapters/postgresql.ts +0 -201
  487. package/src/core/database/adapters/redis.ts +0 -326
  488. package/src/core/database/adapters/sqlite.ts +0 -247
  489. package/src/core/database/index.ts +0 -3
  490. package/src/core/docs/index.ts +0 -231
  491. package/src/core/docs/openapi-generator.ts +0 -576
  492. package/src/core/docs/schema-to-openapi.ts +0 -148
  493. package/src/core/docs/simple-docs.ts +0 -295
  494. package/src/core/docs/swagger-ui.ts +0 -351
  495. package/src/core/docs/zod-to-openapi.ts +0 -532
  496. package/src/core/events/event-bus.ts +0 -231
  497. package/src/core/events/index.ts +0 -12
  498. package/src/core/framework.ts +0 -636
  499. package/src/core/http/http-server.ts +0 -1787
  500. package/src/core/http/index.ts +0 -6
  501. package/src/core/http/router.ts +0 -141
  502. package/src/core/logger/filters.ts +0 -145
  503. package/src/core/logger/index.ts +0 -20
  504. package/src/core/logger/logger.ts +0 -814
  505. package/src/core/logger/outputs.ts +0 -134
  506. package/src/core/middleware/built-in/adapters/cache/file.ts +0 -104
  507. package/src/core/middleware/built-in/adapters/cache/index.ts +0 -23
  508. package/src/core/middleware/built-in/adapters/cache/memory.ts +0 -73
  509. package/src/core/middleware/built-in/adapters/cache/redis.ts +0 -100
  510. package/src/core/middleware/built-in/adapters/cdn/azure.ts +0 -60
  511. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +0 -83
  512. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +0 -83
  513. package/src/core/middleware/built-in/adapters/cdn/index.ts +0 -23
  514. package/src/core/middleware/built-in/adapters/index.ts +0 -7
  515. package/src/core/middleware/built-in/auth-helpers.ts +0 -401
  516. package/src/core/middleware/built-in/auth-providers.ts +0 -480
  517. package/src/core/middleware/built-in/auth.ts +0 -329
  518. package/src/core/middleware/built-in/cache.ts +0 -211
  519. package/src/core/middleware/built-in/cdn.ts +0 -124
  520. package/src/core/middleware/built-in/cookie.ts +0 -85
  521. package/src/core/middleware/built-in/cors.ts +0 -38
  522. package/src/core/middleware/built-in/csp.ts +0 -101
  523. package/src/core/middleware/built-in/csrf.ts +0 -82
  524. package/src/core/middleware/built-in/error-tracker.ts +0 -16
  525. package/src/core/middleware/built-in/index.ts +0 -79
  526. package/src/core/middleware/built-in/performance-monitor.ts +0 -25
  527. package/src/core/middleware/built-in/rate-limit.ts +0 -60
  528. package/src/core/middleware/built-in/request-logger.ts +0 -14
  529. package/src/core/middleware/built-in/session.ts +0 -288
  530. package/src/core/middleware/built-in/sse.ts +0 -86
  531. package/src/core/middleware/built-in/validation.ts +0 -33
  532. package/src/core/middleware/index.ts +0 -177
  533. package/src/core/modules/auto-discovery.ts +0 -263
  534. package/src/core/modules/index.ts +0 -3
  535. package/src/core/modules/modules.ts +0 -124
  536. package/src/core/networking/adapters/index.ts +0 -16
  537. package/src/core/networking/adapters/socketio-adapter.ts +0 -252
  538. package/src/core/networking/adapters/ws-adapter.ts +0 -430
  539. package/src/core/networking/index.ts +0 -3
  540. package/src/core/networking/service-discovery.ts +0 -304
  541. package/src/core/networking/websocket-adapter.ts +0 -217
  542. package/src/core/networking/websocket-manager.ts +0 -308
  543. package/src/core/routing/app-integration.ts +0 -216
  544. package/src/core/routing/index.ts +0 -488
  545. package/src/core/runtime/aws-lambda-adapter.ts +0 -147
  546. package/src/core/runtime/base-adapter.ts +0 -130
  547. package/src/core/runtime/cloudflare-workers-adapter.ts +0 -152
  548. package/src/core/runtime/index.ts +0 -62
  549. package/src/core/runtime/node-adapter.ts +0 -196
  550. package/src/core/runtime/vercel-edge-adapter.ts +0 -114
  551. package/src/core/utilities/circuit-breaker.ts +0 -46
  552. package/src/core/utilities/container.ts +0 -736
  553. package/src/core/utilities/hooks.ts +0 -142
  554. package/src/core/utilities/index.ts +0 -16
  555. package/src/core/validation/adapters.ts +0 -147
  556. package/src/core/validation/index.ts +0 -206
  557. package/src/core/validation/schema-interface.ts +0 -100
  558. package/src/index.ts +0 -226
  559. package/src/moro.ts +0 -1197
  560. package/src/types/auth.ts +0 -440
  561. package/src/types/cache.ts +0 -38
  562. package/src/types/cdn.ts +0 -22
  563. package/src/types/config.ts +0 -157
  564. package/src/types/core.ts +0 -56
  565. package/src/types/database.ts +0 -32
  566. package/src/types/discovery.ts +0 -7
  567. package/src/types/events.ts +0 -82
  568. package/src/types/hooks.ts +0 -47
  569. package/src/types/http.ts +0 -67
  570. package/src/types/logger.ts +0 -93
  571. package/src/types/module.ts +0 -87
  572. package/src/types/runtime.ts +0 -76
  573. package/src/types/session.ts +0 -89
  574. package/tsconfig.json +0 -21
  575. /package/dist/core/middleware/built-in/{auth-helpers.d.ts → auth/helpers.d.ts} +0 -0
@@ -1,82 +1,27 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.middleware = exports.MoroHttpServer = void 0;
37
1
  // src/core/http-server.ts
38
- const http_1 = require("http");
39
- const zlib = __importStar(require("zlib"));
40
- const util_1 = require("util");
41
- const logger_1 = require("../logger");
42
- const gzip = (0, util_1.promisify)(zlib.gzip);
43
- const deflate = (0, util_1.promisify)(zlib.deflate);
44
- class MoroHttpServer {
2
+ import { createServer } from 'http';
3
+ import * as zlib from 'zlib';
4
+ import { createReadStream } from 'fs';
5
+ import * as crypto from 'crypto';
6
+ import { promisify } from 'util';
7
+ import { createFrameworkLogger } from '../logger/index.js';
8
+ import { PathMatcher } from '../routing/path-matcher.js';
9
+ import { ObjectPoolManager } from '../pooling/object-pool-manager.js';
10
+ const gzip = promisify(zlib.gzip);
11
+ const deflate = promisify(zlib.deflate);
12
+ export class MoroHttpServer {
45
13
  server;
46
14
  routes = [];
47
15
  globalMiddleware = [];
48
16
  compressionEnabled = true;
49
17
  compressionThreshold = 1024;
50
- logger = (0, logger_1.createFrameworkLogger)('HttpServer');
18
+ requestTrackingEnabled = true; // Generate request IDs
19
+ logger = createFrameworkLogger('HttpServer');
51
20
  hookManager;
52
21
  requestCounter = 0;
53
- // Efficient object pooling with minimal overhead
54
- paramObjectPool = [];
55
- bufferPool = [];
56
- maxPoolSize = 50;
57
- // Request handler pooling to avoid function creation overhead
58
- middlewareExecutionCache = new Map();
59
- // String interning for common values (massive memory savings)
60
- static INTERNED_METHODS = new Map([
61
- ['GET', 'GET'],
62
- ['POST', 'POST'],
63
- ['PUT', 'PUT'],
64
- ['DELETE', 'DELETE'],
65
- ['PATCH', 'PATCH'],
66
- ['HEAD', 'HEAD'],
67
- ['OPTIONS', 'OPTIONS'],
68
- ]);
69
- static INTERNED_HEADERS = new Map([
70
- ['content-type', 'content-type'],
71
- ['content-length', 'content-length'],
72
- ['authorization', 'authorization'],
73
- ['accept', 'accept'],
74
- ['user-agent', 'user-agent'],
75
- ['host', 'host'],
76
- ['connection', 'connection'],
77
- ['cache-control', 'cache-control'],
78
- ]);
79
- // Pre-compiled response templates for ultra-common responses
22
+ // Use shared object pool manager
23
+ poolManager = ObjectPoolManager.getInstance();
24
+ // Pre-compiled response templates for common responses
80
25
  static RESPONSE_TEMPLATES = {
81
26
  notFound: Buffer.from('{"success":false,"error":"Not found"}'),
82
27
  unauthorized: Buffer.from('{"success":false,"error":"Unauthorized"}'),
@@ -85,7 +30,7 @@ class MoroHttpServer {
85
30
  methodNotAllowed: Buffer.from('{"success":false,"error":"Method not allowed"}'),
86
31
  rateLimited: Buffer.from('{"success":false,"error":"Rate limit exceeded"}'),
87
32
  };
88
- // Ultra-fast buffer pool for zero-copy operations (Rust-level performance)
33
+ // Buffer pool for zero-copy operations
89
34
  static BUFFER_SIZES = [64, 256, 1024, 4096, 16384];
90
35
  static BUFFER_POOLS = new Map();
91
36
  static {
@@ -120,7 +65,7 @@ class MoroHttpServer {
120
65
  }
121
66
  }
122
67
  constructor() {
123
- this.server = (0, http_1.createServer)(this.handleRequest.bind(this));
68
+ this.server = createServer(this.handleRequest.bind(this));
124
69
  // Optimize server for high performance (conservative settings for compatibility)
125
70
  this.server.keepAliveTimeout = 5000; // 5 seconds
126
71
  this.server.headersTimeout = 6000; // 6 seconds
@@ -140,6 +85,10 @@ class MoroHttpServer {
140
85
  this.compressionThreshold = Infinity; // Never compress
141
86
  }
142
87
  }
88
+ // Configure request tracking (ID generation)
89
+ setRequestTracking(enabled) {
90
+ this.requestTrackingEnabled = enabled;
91
+ }
143
92
  // Middleware management
144
93
  use(middleware) {
145
94
  this.globalMiddleware.push(middleware);
@@ -195,39 +144,33 @@ class MoroHttpServer {
195
144
  }
196
145
  }
197
146
  pathToRegex(path) {
198
- const paramNames = [];
199
- // Convert parameterized routes to regex
200
- const regexPattern = path
201
- .replace(/\/:([^/]+)/g, (match, paramName) => {
202
- paramNames.push(paramName);
203
- return '/([^/]+)';
204
- })
205
- .replace(/\//g, '\\/');
147
+ // Use shared PathMatcher for consistent path compilation
148
+ const compiled = PathMatcher.compile(path);
206
149
  return {
207
- pattern: new RegExp(`^${regexPattern}$`),
208
- paramNames,
150
+ pattern: compiled.pattern || new RegExp(`^${path.replace(/\//g, '\\/')}$`),
151
+ paramNames: compiled.paramNames,
209
152
  };
210
153
  }
211
154
  async handleRequest(req, res) {
212
155
  const httpReq = this.enhanceRequest(req);
213
- const httpRes = this.enhanceResponse(res);
156
+ const httpRes = this.enhanceResponse(res, httpReq);
214
157
  // Store original params for efficient cleanup
215
158
  const originalParams = httpReq.params;
216
159
  try {
217
- // Optimized URL and query parsing
160
+ // Optimized URL and query parsing with object pooling
218
161
  const urlString = req.url;
219
162
  const queryIndex = urlString.indexOf('?');
220
163
  if (queryIndex === -1) {
221
- // No query string - fast path
164
+ // No query string
222
165
  httpReq.path = urlString;
223
166
  httpReq.query = {};
224
167
  }
225
168
  else {
226
- // Has query string - parse efficiently
169
+ // Has query string - parse efficiently with pooled object
227
170
  httpReq.path = urlString.substring(0, queryIndex);
228
- httpReq.query = this.parseQueryString(urlString.substring(queryIndex + 1));
171
+ httpReq.query = this.parseQueryStringPooled(urlString.substring(queryIndex + 1));
229
172
  }
230
- // Ultra-fast method checking - avoid array includes
173
+ // Method checking - avoid array includes
231
174
  const method = req.method;
232
175
  if (method === 'POST' || method === 'PUT' || method === 'PATCH') {
233
176
  httpReq.body = await this.parseBody(req);
@@ -248,7 +191,7 @@ class MoroHttpServer {
248
191
  // Find matching route
249
192
  const route = this.findRoute(req.method, httpReq.path);
250
193
  if (!route) {
251
- // Ultra-fast 404 response with pre-compiled buffer
194
+ // 404 response with pre-compiled buffer
252
195
  httpRes.statusCode = 404;
253
196
  httpRes.setHeader('Content-Type', 'application/json; charset=utf-8');
254
197
  httpRes.setHeader('Content-Length', MoroHttpServer.RESPONSE_TEMPLATES.notFound.length);
@@ -271,12 +214,13 @@ class MoroHttpServer {
271
214
  }
272
215
  catch (error) {
273
216
  // Debug: Log the actual error and where it came from
274
- this.logger.debug('🚨 MoroJS Request Error Details:', 'RequestHandler');
275
- this.logger.debug(`📍 Error type: ${typeof error}`, 'RequestHandler');
276
- this.logger.debug(`📍 Error message: ${error instanceof Error ? error.message : String(error)}`, 'RequestHandler');
277
- this.logger.debug(`📍 Error stack: ${error instanceof Error ? error.stack : 'No stack trace'}`, 'RequestHandler');
278
- this.logger.debug(`📍 Request path: ${req.url}`, 'RequestHandler');
279
- this.logger.debug(`📍 Request method: ${req.method}`, 'RequestHandler');
217
+ this.logger.debug('Request error details', 'RequestHandler', {
218
+ errorType: typeof error,
219
+ errorMessage: error instanceof Error ? error.message : String(error),
220
+ errorStack: error instanceof Error ? error.stack : 'No stack trace',
221
+ requestPath: req.url,
222
+ requestMethod: req.method,
223
+ });
280
224
  this.logger.error('Request error', 'RequestHandler', {
281
225
  error: error instanceof Error ? error.message : String(error),
282
226
  requestId: httpReq.requestId,
@@ -293,14 +237,14 @@ class MoroHttpServer {
293
237
  });
294
238
  }
295
239
  else {
296
- // Ultra-defensive fallback - check each method individually
240
+ // Defensive fallback - check each method individually
297
241
  if (typeof httpRes.setHeader === 'function') {
298
242
  httpRes.statusCode = 500;
299
243
  httpRes.setHeader('Content-Type', 'application/json');
300
244
  }
301
245
  else {
302
246
  // Even setHeader doesn't exist - object is completely wrong
303
- this.logger.error('Response object is not a proper ServerResponse:', 'RequestHandler', {
247
+ this.logger.error('Response object is not a proper ServerResponse', 'RequestHandler', {
304
248
  responseType: typeof httpRes,
305
249
  responseKeys: Object.keys(httpRes),
306
250
  });
@@ -313,7 +257,7 @@ class MoroHttpServer {
313
257
  }));
314
258
  }
315
259
  else {
316
- this.logger.error('Cannot send error response - end() method missing', 'RequestHandler');
260
+ this.logger.error('Cannot send error response - end() method missing', 'RequestHandler');
317
261
  }
318
262
  }
319
263
  }
@@ -342,50 +286,27 @@ class MoroHttpServer {
342
286
  }
343
287
  });
344
288
  }
345
- // Efficient object pooling for parameter objects with ES2022 optimizations
289
+ // Use shared object pool for parameter objects
346
290
  acquireParamObject() {
347
- const obj = this.paramObjectPool.pop();
348
- if (obj) {
349
- // ES2022: Use Object.hasOwn for safer property checks and faster clearing
350
- // Clear existing properties more efficiently
351
- for (const key in obj) {
352
- if (Object.hasOwn(obj, key)) {
353
- delete obj[key];
354
- }
355
- }
356
- return obj;
357
- }
358
- return {};
291
+ return this.poolManager.acquireParams();
359
292
  }
360
293
  releaseParamObject(params) {
361
- if (this.paramObjectPool.length < this.maxPoolSize) {
362
- this.paramObjectPool.push(params);
363
- }
294
+ this.poolManager.releaseParams(params);
364
295
  }
365
296
  // Force cleanup of all pooled objects
366
297
  forceCleanupPools() {
367
- // ES2022: More efficient array clearing
368
- this.paramObjectPool.splice(0);
369
- this.bufferPool.splice(0);
298
+ // Use shared pool manager cleanup
299
+ this.poolManager.clearAll();
370
300
  // Force garbage collection if available
371
- // Use modern globalThis check with optional chaining
372
301
  if (globalThis?.gc) {
373
302
  globalThis.gc();
374
303
  }
375
304
  }
376
305
  acquireBuffer(size) {
377
- // ES2022: Use findIndex for better performance than find + indexOf
378
- const index = this.bufferPool.findIndex(b => b.length >= size);
379
- if (index !== -1) {
380
- const buffer = this.bufferPool.splice(index, 1)[0];
381
- return buffer.subarray(0, size);
382
- }
383
- return Buffer.allocUnsafe(size);
306
+ return this.poolManager.acquireBuffer(size);
384
307
  }
385
308
  releaseBuffer(buffer) {
386
- if (this.bufferPool.length < this.maxPoolSize && buffer.length <= 8192) {
387
- this.bufferPool.push(buffer);
388
- }
309
+ this.poolManager.releaseBuffer(buffer);
389
310
  }
390
311
  streamLargeResponse(res, data) {
391
312
  res.setHeader('Content-Type', 'application/json; charset=utf-8');
@@ -404,7 +325,7 @@ class MoroHttpServer {
404
325
  if (this.pathNormalizationCache.has(path)) {
405
326
  return this.pathNormalizationCache.get(path);
406
327
  }
407
- // Fast normalization: remove trailing slash (except root), decode once
328
+ // Normalization: remove trailing slash (except root), decode once
408
329
  let normalized = path;
409
330
  if (normalized.length > 1 && normalized.endsWith('/')) {
410
331
  normalized = normalized.slice(0, -1);
@@ -422,8 +343,8 @@ class MoroHttpServer {
422
343
  httpReq.body = null;
423
344
  httpReq.path = '';
424
345
  httpReq.ip = req.socket.remoteAddress || '';
425
- // Faster request ID generation
426
- httpReq.requestId = Date.now().toString(36) + (++this.requestCounter).toString(36);
346
+ // Request ID generation using pool manager (if enabled)
347
+ httpReq.requestId = this.requestTrackingEnabled ? this.poolManager.generateRequestId() : '';
427
348
  httpReq.headers = req.headers;
428
349
  // Parse cookies
429
350
  httpReq.cookies = this.parseCookies(req.headers.cookie || '');
@@ -441,8 +362,10 @@ class MoroHttpServer {
441
362
  });
442
363
  return cookies;
443
364
  }
444
- enhanceResponse(res) {
365
+ enhanceResponse(res, req) {
445
366
  const httpRes = res;
367
+ // Store request reference for access to headers (needed for compression, logging, etc.)
368
+ httpRes.req = req;
446
369
  // BULLETPROOF status method - always works
447
370
  httpRes.status = (code) => {
448
371
  httpRes.statusCode = code;
@@ -451,28 +374,31 @@ class MoroHttpServer {
451
374
  httpRes.json = async (data) => {
452
375
  if (httpRes.headersSent)
453
376
  return;
454
- // Ultra-fast JSON serialization with zero-copy buffers
377
+ // JSON serialization with zero-copy buffers
455
378
  let jsonString;
456
379
  // Enhanced JSON optimization for common API patterns
380
+ // Only optimize simple patterns without extra fields
457
381
  if (data && typeof data === 'object' && 'success' in data) {
458
- if ('data' in data && 'error' in data && !('total' in data)) {
459
- // {success, data, error} pattern
382
+ const keys = Object.keys(data);
383
+ const keyCount = keys.length;
384
+ if (keyCount === 3 && 'data' in data && 'error' in data) {
385
+ // {success, data, error} pattern (exactly 3 keys)
460
386
  jsonString = `{"success":${data.success},"data":${JSON.stringify(data.data)},"error":${JSON.stringify(data.error)}}`;
461
387
  }
462
- else if ('data' in data && 'total' in data && !('error' in data)) {
463
- // {success, data, total} pattern
388
+ else if (keyCount === 3 && 'data' in data && 'total' in data) {
389
+ // {success, data, total} pattern (exactly 3 keys)
464
390
  jsonString = `{"success":${data.success},"data":${JSON.stringify(data.data)},"total":${data.total}}`;
465
391
  }
466
- else if ('data' in data && !('error' in data) && !('total' in data)) {
467
- // {success, data} pattern
392
+ else if (keyCount === 2 && 'data' in data) {
393
+ // {success, data} pattern (exactly 2 keys)
468
394
  jsonString = `{"success":${data.success},"data":${JSON.stringify(data.data)}}`;
469
395
  }
470
- else if ('error' in data && !('data' in data) && !('total' in data)) {
471
- // {success, error} pattern
396
+ else if (keyCount === 2 && 'error' in data) {
397
+ // {success, error} pattern (exactly 2 keys)
472
398
  jsonString = `{"success":${data.success},"error":${JSON.stringify(data.error)}}`;
473
399
  }
474
400
  else {
475
- // Complex object - use standard JSON.stringify
401
+ // Complex object or has additional fields - use standard JSON.stringify
476
402
  jsonString = JSON.stringify(data);
477
403
  }
478
404
  }
@@ -555,6 +481,24 @@ class MoroHttpServer {
555
481
  httpRes.end(data);
556
482
  };
557
483
  httpRes.cookie = (name, value, options = {}) => {
484
+ if (httpRes.headersSent) {
485
+ const isCritical = options.critical ||
486
+ name.includes('session') ||
487
+ name.includes('auth') ||
488
+ name.includes('csrf');
489
+ const message = `Cookie '${name}' could not be set - headers already sent`;
490
+ if (isCritical || options.throwOnLateSet) {
491
+ throw new Error(`${message}. This may cause authentication or security issues.`);
492
+ }
493
+ else {
494
+ this.logger.warn(message, 'CookieWarning', {
495
+ cookieName: name,
496
+ critical: isCritical,
497
+ stackTrace: new Error().stack,
498
+ });
499
+ }
500
+ return httpRes;
501
+ }
558
502
  const cookieValue = encodeURIComponent(value);
559
503
  let cookieString = `${name}=${cookieValue}`;
560
504
  if (options.maxAge)
@@ -594,8 +538,8 @@ class MoroHttpServer {
594
538
  if (httpRes.headersSent)
595
539
  return;
596
540
  try {
597
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
598
- const path = await Promise.resolve().then(() => __importStar(require('path')));
541
+ const fs = await import('fs/promises');
542
+ const path = await import('path');
599
543
  const extension = path.extname(filePath);
600
544
  const mime = await this.getMimeType(extension);
601
545
  const stats = await fs.stat(filePath);
@@ -615,6 +559,52 @@ class MoroHttpServer {
615
559
  httpRes.status(404).json({ success: false, error: 'File not found' });
616
560
  }
617
561
  };
562
+ // Header management utilities
563
+ httpRes.hasHeader = (name) => {
564
+ return httpRes.getHeader(name) !== undefined;
565
+ };
566
+ // Note: removeHeader is inherited from ServerResponse, we don't override it
567
+ httpRes.setBulkHeaders = (headers) => {
568
+ if (httpRes.headersSent) {
569
+ this.logger.warn('Cannot set headers - headers already sent', 'HeaderWarning', {
570
+ attemptedHeaders: Object.keys(headers),
571
+ });
572
+ return httpRes;
573
+ }
574
+ Object.entries(headers).forEach(([key, value]) => {
575
+ httpRes.setHeader(key, value);
576
+ });
577
+ return httpRes;
578
+ };
579
+ httpRes.appendHeader = (name, value) => {
580
+ if (httpRes.headersSent) {
581
+ this.logger.warn(`Cannot append to header '${name}' - headers already sent`, 'HeaderWarning');
582
+ return httpRes;
583
+ }
584
+ const existing = httpRes.getHeader(name);
585
+ if (existing) {
586
+ const values = Array.isArray(existing) ? existing : [existing.toString()];
587
+ const newValues = Array.isArray(value) ? value : [value];
588
+ httpRes.setHeader(name, [...values, ...newValues]);
589
+ }
590
+ else {
591
+ httpRes.setHeader(name, value);
592
+ }
593
+ return httpRes;
594
+ };
595
+ // Response state utilities
596
+ httpRes.canSetHeaders = () => {
597
+ return !httpRes.headersSent;
598
+ };
599
+ httpRes.getResponseState = () => {
600
+ return {
601
+ headersSent: httpRes.headersSent,
602
+ statusCode: httpRes.statusCode,
603
+ headers: httpRes.getHeaders ? httpRes.getHeaders() : {},
604
+ finished: httpRes.finished || false,
605
+ writable: httpRes.writable,
606
+ };
607
+ };
618
608
  return httpRes;
619
609
  }
620
610
  async getMimeType(ext) {
@@ -733,12 +723,18 @@ class MoroHttpServer {
733
723
  }
734
724
  return result;
735
725
  }
726
+ // Legacy method for backward compatibility
736
727
  parseQueryString(queryString) {
737
- const result = {};
728
+ return this.parseQueryStringPooled(queryString);
729
+ }
730
+ // Optimized query string parser with object pooling
731
+ parseQueryStringPooled(queryString) {
738
732
  if (!queryString)
739
- return result;
733
+ return {};
734
+ const result = this.poolManager.acquireQuery();
740
735
  const pairs = queryString.split('&');
741
- for (const pair of pairs) {
736
+ for (let i = 0; i < pairs.length; i++) {
737
+ const pair = pairs[i];
742
738
  const equalIndex = pair.indexOf('=');
743
739
  if (equalIndex === -1) {
744
740
  result[decodeURIComponent(pair)] = '';
@@ -757,7 +753,7 @@ class MoroHttpServer {
757
753
  dynamicRoutes = [];
758
754
  routesBySegmentCount = new Map();
759
755
  pathNormalizationCache = new Map();
760
- // Ultra-fast CPU cache-friendly optimizations (Rust-level performance)
756
+ // CPU cache-friendly optimizations
761
757
  routeHitCount = new Map(); // Track route popularity for cache optimization
762
758
  static HOT_ROUTE_THRESHOLD = 100; // Routes accessed 100+ times get hot path treatment
763
759
  findRoute(method, path) {
@@ -802,33 +798,43 @@ class MoroHttpServer {
802
798
  }
803
799
  return route;
804
800
  }
801
+ // Optimized middleware execution with reduced Promise allocation
805
802
  async executeMiddleware(middleware, req, res) {
806
- for (const mw of middleware) {
803
+ for (let i = 0; i < middleware.length; i++) {
807
804
  // Short-circuit if response already sent
808
805
  if (res.headersSent)
809
806
  return;
807
+ const mw = middleware[i];
810
808
  await new Promise((resolve, reject) => {
811
- let nextCalled = false;
809
+ let resolved = false;
810
+ // Reuse next function to reduce allocations
812
811
  const next = () => {
813
- if (nextCalled)
812
+ if (resolved)
814
813
  return;
815
- nextCalled = true;
814
+ resolved = true;
816
815
  resolve();
817
816
  };
818
817
  try {
819
818
  const result = mw(req, res, next);
820
819
  // Handle async middleware
821
- if (result instanceof Promise) {
820
+ if (result && typeof result.then === 'function') {
822
821
  result
823
822
  .then(() => {
824
- if (!nextCalled)
823
+ if (!resolved)
825
824
  next();
826
825
  })
827
826
  .catch(reject);
828
827
  }
828
+ else if (!resolved) {
829
+ // Sync middleware that didn't call next
830
+ next();
831
+ }
829
832
  }
830
833
  catch (error) {
831
- reject(error);
834
+ if (!resolved) {
835
+ resolved = true;
836
+ reject(error);
837
+ }
832
838
  }
833
839
  });
834
840
  }
@@ -858,10 +864,19 @@ class MoroHttpServer {
858
864
  getServer() {
859
865
  return this.server;
860
866
  }
867
+ // Performance statistics
868
+ getPerformanceStats() {
869
+ const poolStats = this.poolManager.getStats();
870
+ return {
871
+ paramObjectPoolSize: poolStats.paramPool.poolSize,
872
+ queryObjectPoolSize: poolStats.queryPool.poolSize,
873
+ headerObjectPoolSize: poolStats.headerPool.poolSize,
874
+ poolManager: poolStats,
875
+ };
876
+ }
861
877
  }
862
- exports.MoroHttpServer = MoroHttpServer;
863
878
  // Built-in middleware
864
- exports.middleware = {
879
+ export const middleware = {
865
880
  cors: (options = {}) => {
866
881
  return (req, res, next) => {
867
882
  res.setHeader('Access-Control-Allow-Origin', options.origin || '*');
@@ -889,7 +904,6 @@ exports.middleware = {
889
904
  };
890
905
  },
891
906
  compression: (options = {}) => {
892
- const zlib = require('zlib');
893
907
  const threshold = options.threshold || 1024;
894
908
  const level = options.level || 6;
895
909
  return (req, res, next) => {
@@ -904,24 +918,26 @@ exports.middleware = {
904
918
  return isJson ? originalJson.call(res, data) : originalSend.call(res, data);
905
919
  }
906
920
  if (acceptEncoding.includes('gzip')) {
907
- res.setHeader('Content-Encoding', 'gzip');
908
921
  zlib.gzip(buffer, { level }, (err, compressed) => {
909
922
  if (err) {
910
923
  return isJson ? originalJson.call(res, data) : originalSend.call(res, data);
911
924
  }
912
- res.setHeader('Content-Length', compressed.length);
913
- res.writeHead(res.statusCode || 200, res.getHeaders());
925
+ if (!res.headersSent) {
926
+ res.setHeader('Content-Encoding', 'gzip');
927
+ res.setHeader('Content-Length', compressed.length);
928
+ }
914
929
  res.end(compressed);
915
930
  });
916
931
  }
917
932
  else if (acceptEncoding.includes('deflate')) {
918
- res.setHeader('Content-Encoding', 'deflate');
919
933
  zlib.deflate(buffer, { level }, (err, compressed) => {
920
934
  if (err) {
921
935
  return isJson ? originalJson.call(res, data) : originalSend.call(res, data);
922
936
  }
923
- res.setHeader('Content-Length', compressed.length);
924
- res.writeHead(res.statusCode || 200, res.getHeaders());
937
+ if (!res.headersSent) {
938
+ res.setHeader('Content-Encoding', 'deflate');
939
+ res.setHeader('Content-Length', compressed.length);
940
+ }
925
941
  res.end(compressed);
926
942
  });
927
943
  }
@@ -976,9 +992,9 @@ exports.middleware = {
976
992
  return;
977
993
  }
978
994
  try {
979
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
980
- const path = await Promise.resolve().then(() => __importStar(require('path')));
981
- const crypto = await Promise.resolve().then(() => __importStar(require('crypto')));
995
+ const fs = await import('fs/promises');
996
+ const path = await import('path');
997
+ const crypto = await import('crypto');
982
998
  let filePath = path.join(options.root, req.path);
983
999
  // Security: prevent directory traversal
984
1000
  if (!filePath.startsWith(path.resolve(options.root))) {
@@ -1146,8 +1162,8 @@ exports.middleware = {
1146
1162
  // Add render method to response
1147
1163
  res.render = async (template, data = {}) => {
1148
1164
  try {
1149
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
1150
- const path = await Promise.resolve().then(() => __importStar(require('path')));
1165
+ const fs = await import('fs/promises');
1166
+ const path = await import('path');
1151
1167
  const templatePath = path.join(options.views, `${template}.html`);
1152
1168
  let templateContent;
1153
1169
  // Check cache first
@@ -1265,13 +1281,15 @@ exports.middleware = {
1265
1281
  // Only handle SSE requests
1266
1282
  if (req.headers.accept?.includes('text/event-stream')) {
1267
1283
  // Set SSE headers
1268
- res.writeHead(200, {
1269
- 'Content-Type': 'text/event-stream',
1270
- 'Cache-Control': 'no-cache',
1271
- Connection: 'keep-alive',
1272
- 'Access-Control-Allow-Origin': options.cors ? '*' : undefined,
1273
- 'Access-Control-Allow-Headers': options.cors ? 'Cache-Control' : undefined,
1274
- });
1284
+ if (!res.headersSent) {
1285
+ res.writeHead(200, {
1286
+ 'Content-Type': 'text/event-stream',
1287
+ 'Cache-Control': 'no-cache',
1288
+ Connection: 'keep-alive',
1289
+ 'Access-Control-Allow-Origin': options.cors ? '*' : undefined,
1290
+ 'Access-Control-Allow-Headers': options.cors ? 'Cache-Control' : undefined,
1291
+ });
1292
+ }
1275
1293
  // Add SSE methods to response
1276
1294
  res.sendEvent = (data, event, id) => {
1277
1295
  if (id)
@@ -1315,8 +1333,8 @@ exports.middleware = {
1315
1333
  // Add range support to response
1316
1334
  res.sendRange = async (filePath, stats) => {
1317
1335
  try {
1318
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
1319
- const path = await Promise.resolve().then(() => __importStar(require('path')));
1336
+ const fs = await import('fs/promises');
1337
+ const path = await import('path');
1320
1338
  if (!stats) {
1321
1339
  stats = await fs.stat(filePath);
1322
1340
  }
@@ -1352,7 +1370,8 @@ exports.middleware = {
1352
1370
  const { start, end } = ranges[0];
1353
1371
  const chunkSize = end - start + 1;
1354
1372
  if (start >= fileSize || end >= fileSize) {
1355
- res.status(416).setHeader('Content-Range', `bytes */${fileSize}`);
1373
+ res.status(416);
1374
+ res.setHeader('Content-Range', `bytes */${fileSize}`);
1356
1375
  res.json({ success: false, error: 'Range not satisfiable' });
1357
1376
  return;
1358
1377
  }
@@ -1360,7 +1379,7 @@ exports.middleware = {
1360
1379
  res.setHeader('Content-Range', `bytes ${start}-${end}/${fileSize}`);
1361
1380
  res.setHeader('Content-Length', chunkSize);
1362
1381
  // Stream the range
1363
- const stream = require('fs').createReadStream(filePath, {
1382
+ const stream = createReadStream(filePath, {
1364
1383
  start,
1365
1384
  end,
1366
1385
  });
@@ -1377,12 +1396,12 @@ exports.middleware = {
1377
1396
  const chunkSize = end - start + 1;
1378
1397
  res.write(`\r\n--${boundary}\r\n`);
1379
1398
  res.write(`Content-Range: bytes ${start}-${end}/${fileSize}\r\n\r\n`);
1380
- const stream = require('fs').createReadStream(filePath, {
1399
+ const stream = createReadStream(filePath, {
1381
1400
  start,
1382
1401
  end,
1383
1402
  });
1384
1403
  await new Promise(resolve => {
1385
- stream.on('end', resolve);
1404
+ stream.on('end', () => resolve());
1386
1405
  stream.pipe(res, { end: false });
1387
1406
  });
1388
1407
  }
@@ -1405,7 +1424,6 @@ exports.middleware = {
1405
1424
  const headerName = options.headerName || 'x-csrf-token';
1406
1425
  const ignoreMethods = options.ignoreMethods || ['GET', 'HEAD', 'OPTIONS'];
1407
1426
  const generateToken = () => {
1408
- const crypto = require('crypto');
1409
1427
  return crypto.randomBytes(tokenLength).toString('hex');
1410
1428
  };
1411
1429
  const verifyToken = (token, sessionToken) => {
@@ -1462,7 +1480,6 @@ exports.middleware = {
1462
1480
  // Generate nonce if requested
1463
1481
  let nonce;
1464
1482
  if (options.nonce) {
1465
- const crypto = require('crypto');
1466
1483
  nonce = crypto.randomBytes(16).toString('base64');
1467
1484
  req.cspNonce = nonce;
1468
1485
  }