@morojs/moro 1.8.0 → 1.8.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 (356) hide show
  1. package/README.md +29 -38
  2. package/dist/core/auth/morojs-adapter.js +95 -45
  3. package/dist/core/auth/morojs-adapter.js.map +1 -1
  4. package/dist/core/config/config-manager.js.map +1 -1
  5. package/dist/core/config/config-sources.js +8 -49
  6. package/dist/core/config/config-sources.js.map +1 -1
  7. package/dist/core/config/config-validator.js +2 -3
  8. package/dist/core/config/config-validator.js.map +1 -1
  9. package/dist/core/config/file-loader.js.map +1 -1
  10. package/dist/core/config/index.js.map +1 -1
  11. package/dist/core/config/schema.js +4 -1
  12. package/dist/core/config/schema.js.map +1 -1
  13. package/dist/core/config/utils.js.map +1 -1
  14. package/dist/core/database/adapters/drizzle.js +2 -2
  15. package/dist/core/database/adapters/drizzle.js.map +1 -1
  16. package/dist/core/database/adapters/index.js.map +1 -1
  17. package/dist/core/database/adapters/mongodb.d.ts +1 -0
  18. package/dist/core/database/adapters/mongodb.js +16 -0
  19. package/dist/core/database/adapters/mongodb.js.map +1 -1
  20. package/dist/core/database/adapters/mysql.d.ts +1 -0
  21. package/dist/core/database/adapters/mysql.js +13 -2
  22. package/dist/core/database/adapters/mysql.js.map +1 -1
  23. package/dist/core/database/adapters/postgresql.js +2 -2
  24. package/dist/core/database/adapters/postgresql.js.map +1 -1
  25. package/dist/core/database/adapters/redis.js.map +1 -1
  26. package/dist/core/database/adapters/sql-safety.js +5 -4
  27. package/dist/core/database/adapters/sql-safety.js.map +1 -1
  28. package/dist/core/database/adapters/sqlite.js.map +1 -1
  29. package/dist/core/database/index.js.map +1 -1
  30. package/dist/core/docs/index.js +11 -7
  31. package/dist/core/docs/index.js.map +1 -1
  32. package/dist/core/docs/openapi-generator.js +8 -6
  33. package/dist/core/docs/openapi-generator.js.map +1 -1
  34. package/dist/core/docs/schema-to-openapi.js +3 -3
  35. package/dist/core/docs/schema-to-openapi.js.map +1 -1
  36. package/dist/core/docs/simple-docs.js.map +1 -1
  37. package/dist/core/docs/swagger-ui.js.map +1 -1
  38. package/dist/core/docs/zod-to-openapi.js +2 -2
  39. package/dist/core/docs/zod-to-openapi.js.map +1 -1
  40. package/dist/core/events/event-bus.js +14 -5
  41. package/dist/core/events/event-bus.js.map +1 -1
  42. package/dist/core/events/index.js.map +1 -1
  43. package/dist/core/framework.d.ts +2 -2
  44. package/dist/core/framework.js +21 -14
  45. package/dist/core/framework.js.map +1 -1
  46. package/dist/core/graphql/adapter.js.map +1 -1
  47. package/dist/core/graphql/adapters/graphql-js-adapter.js.map +1 -1
  48. package/dist/core/graphql/core.js.map +1 -1
  49. package/dist/core/graphql/index.js.map +1 -1
  50. package/dist/core/graphql/loader.js.map +1 -1
  51. package/dist/core/graphql/types.js.map +1 -1
  52. package/dist/core/grpc/adapters/grpc-js-adapter.js +4 -0
  53. package/dist/core/grpc/adapters/grpc-js-adapter.js.map +1 -1
  54. package/dist/core/grpc/adapters/index.js.map +1 -1
  55. package/dist/core/grpc/grpc-adapter.js.map +1 -1
  56. package/dist/core/grpc/grpc-manager.js.map +1 -1
  57. package/dist/core/grpc/index.js.map +1 -1
  58. package/dist/core/grpc/middleware/auth.js +1 -1
  59. package/dist/core/grpc/middleware/auth.js.map +1 -1
  60. package/dist/core/grpc/middleware/logging.js.map +1 -1
  61. package/dist/core/grpc/middleware/validation.js +1 -1
  62. package/dist/core/grpc/middleware/validation.js.map +1 -1
  63. package/dist/core/grpc/types.d.ts +7 -7
  64. package/dist/core/grpc/types.js.map +1 -1
  65. package/dist/core/http/http-server.d.ts +0 -13
  66. package/dist/core/http/http-server.js +34 -141
  67. package/dist/core/http/http-server.js.map +1 -1
  68. package/dist/core/http/http2-server.js +27 -5
  69. package/dist/core/http/http2-server.js.map +1 -1
  70. package/dist/core/http/index.js.map +1 -1
  71. package/dist/core/http/moro-engine-server.d.ts +2 -2
  72. package/dist/core/http/moro-engine-server.js +44 -21
  73. package/dist/core/http/moro-engine-server.js.map +1 -1
  74. package/dist/core/http/utils/compression.js +3 -3
  75. package/dist/core/http/utils/compression.js.map +1 -1
  76. package/dist/core/http/utils/lazy-event-emitter.js.map +1 -1
  77. package/dist/core/http/utils/multipart-parser.js +7 -3
  78. package/dist/core/http/utils/multipart-parser.js.map +1 -1
  79. package/dist/core/http/utils/query-parser.js.map +1 -1
  80. package/dist/core/http/utils/size.js +2 -2
  81. package/dist/core/http/utils/size.js.map +1 -1
  82. package/dist/core/http/utils/ssl-config.d.ts +10 -10
  83. package/dist/core/http/utils/ssl-config.js.map +1 -1
  84. package/dist/core/http/utils/uws-worker-clustering.js +37 -30
  85. package/dist/core/http/utils/uws-worker-clustering.js.map +1 -1
  86. package/dist/core/http/uws-http-server.d.ts +1 -0
  87. package/dist/core/http/uws-http-server.js +80 -22
  88. package/dist/core/http/uws-http-server.js.map +1 -1
  89. package/dist/core/jobs/cron-parser.js +7 -5
  90. package/dist/core/jobs/cron-parser.js.map +1 -1
  91. package/dist/core/jobs/index.js.map +1 -1
  92. package/dist/core/jobs/job-executor.d.ts +1 -1
  93. package/dist/core/jobs/job-executor.js.map +1 -1
  94. package/dist/core/jobs/job-scheduler.d.ts +3 -3
  95. package/dist/core/jobs/job-scheduler.js.map +1 -1
  96. package/dist/core/jobs/job-state-manager.d.ts +3 -3
  97. package/dist/core/jobs/job-state-manager.js +25 -4
  98. package/dist/core/jobs/job-state-manager.js.map +1 -1
  99. package/dist/core/jobs/leader-election.d.ts +15 -0
  100. package/dist/core/jobs/leader-election.js +158 -69
  101. package/dist/core/jobs/leader-election.js.map +1 -1
  102. package/dist/core/jobs/types.d.ts +4 -4
  103. package/dist/core/jobs/types.js.map +1 -1
  104. package/dist/core/jobs/utils.d.ts +1 -1
  105. package/dist/core/jobs/utils.js +7 -3
  106. package/dist/core/jobs/utils.js.map +1 -1
  107. package/dist/core/logger/filters.js +3 -2
  108. package/dist/core/logger/filters.js.map +1 -1
  109. package/dist/core/logger/index.js.map +1 -1
  110. package/dist/core/logger/logger.js +56 -25
  111. package/dist/core/logger/logger.js.map +1 -1
  112. package/dist/core/logger/outputs.js.map +1 -1
  113. package/dist/core/mail/adapters/console-adapter.js.map +1 -1
  114. package/dist/core/mail/adapters/index.js.map +1 -1
  115. package/dist/core/mail/adapters/nodemailer-adapter.js.map +1 -1
  116. package/dist/core/mail/adapters/resend-adapter.js.map +1 -1
  117. package/dist/core/mail/adapters/sendgrid-adapter.js.map +1 -1
  118. package/dist/core/mail/adapters/ses-adapter.js.map +1 -1
  119. package/dist/core/mail/index.js.map +1 -1
  120. package/dist/core/mail/mail-adapter.js.map +1 -1
  121. package/dist/core/mail/mail-manager.d.ts +10 -0
  122. package/dist/core/mail/mail-manager.js +21 -5
  123. package/dist/core/mail/mail-manager.js.map +1 -1
  124. package/dist/core/mail/template-engine.js.map +1 -1
  125. package/dist/core/mail/types.js.map +1 -1
  126. package/dist/core/middleware/built-in/auth/core.js +3 -3
  127. package/dist/core/middleware/built-in/auth/core.js.map +1 -1
  128. package/dist/core/middleware/built-in/auth/helpers.js +4 -4
  129. package/dist/core/middleware/built-in/auth/helpers.js.map +1 -1
  130. package/dist/core/middleware/built-in/auth/hook.js.map +1 -1
  131. package/dist/core/middleware/built-in/auth/index.js.map +1 -1
  132. package/dist/core/middleware/built-in/auth/jwt-helpers.d.ts +4 -4
  133. package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -1
  134. package/dist/core/middleware/built-in/auth/middleware.js.map +1 -1
  135. package/dist/core/middleware/built-in/auth/providers.js.map +1 -1
  136. package/dist/core/middleware/built-in/body-parsers/index.js.map +1 -1
  137. package/dist/core/middleware/built-in/body-size/core.js +2 -2
  138. package/dist/core/middleware/built-in/body-size/core.js.map +1 -1
  139. package/dist/core/middleware/built-in/body-size/hook.js.map +1 -1
  140. package/dist/core/middleware/built-in/body-size/index.js.map +1 -1
  141. package/dist/core/middleware/built-in/body-size/middleware.js.map +1 -1
  142. package/dist/core/middleware/built-in/cache/adapters/cache/file.js +3 -1
  143. package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -1
  144. package/dist/core/middleware/built-in/cache/adapters/cache/index.js.map +1 -1
  145. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
  146. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -1
  147. package/dist/core/middleware/built-in/cache/adapters/index.js.map +1 -1
  148. package/dist/core/middleware/built-in/cache/core.js.map +1 -1
  149. package/dist/core/middleware/built-in/cache/hook.js +3 -3
  150. package/dist/core/middleware/built-in/cache/hook.js.map +1 -1
  151. package/dist/core/middleware/built-in/cache/index.js.map +1 -1
  152. package/dist/core/middleware/built-in/cache/middleware.js.map +1 -1
  153. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -1
  154. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -1
  155. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -1
  156. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js.map +1 -1
  157. package/dist/core/middleware/built-in/cdn/adapters/index.js.map +1 -1
  158. package/dist/core/middleware/built-in/cdn/core.js.map +1 -1
  159. package/dist/core/middleware/built-in/cdn/hook.js.map +1 -1
  160. package/dist/core/middleware/built-in/cdn/index.js.map +1 -1
  161. package/dist/core/middleware/built-in/cdn/middleware.js.map +1 -1
  162. package/dist/core/middleware/built-in/compression/core.js.map +1 -1
  163. package/dist/core/middleware/built-in/compression/hook.js.map +1 -1
  164. package/dist/core/middleware/built-in/compression/index.js.map +1 -1
  165. package/dist/core/middleware/built-in/compression/middleware.js.map +1 -1
  166. package/dist/core/middleware/built-in/cookie/core.js.map +1 -1
  167. package/dist/core/middleware/built-in/cookie/hook.js.map +1 -1
  168. package/dist/core/middleware/built-in/cookie/index.js.map +1 -1
  169. package/dist/core/middleware/built-in/cookie/middleware.js.map +1 -1
  170. package/dist/core/middleware/built-in/cors/core.js.map +1 -1
  171. package/dist/core/middleware/built-in/cors/hook.js.map +1 -1
  172. package/dist/core/middleware/built-in/cors/index.js.map +1 -1
  173. package/dist/core/middleware/built-in/cors/middleware.js.map +1 -1
  174. package/dist/core/middleware/built-in/csp/core.js.map +1 -1
  175. package/dist/core/middleware/built-in/csp/hook.js.map +1 -1
  176. package/dist/core/middleware/built-in/csp/index.js.map +1 -1
  177. package/dist/core/middleware/built-in/csp/middleware.js.map +1 -1
  178. package/dist/core/middleware/built-in/csrf/core.js +1 -1
  179. package/dist/core/middleware/built-in/csrf/core.js.map +1 -1
  180. package/dist/core/middleware/built-in/csrf/hook.js.map +1 -1
  181. package/dist/core/middleware/built-in/csrf/index.js.map +1 -1
  182. package/dist/core/middleware/built-in/csrf/middleware.js.map +1 -1
  183. package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -1
  184. package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -1
  185. package/dist/core/middleware/built-in/graphql/core.js.map +1 -1
  186. package/dist/core/middleware/built-in/graphql/helpers.js.map +1 -1
  187. package/dist/core/middleware/built-in/graphql/hook.js.map +1 -1
  188. package/dist/core/middleware/built-in/graphql/index.js.map +1 -1
  189. package/dist/core/middleware/built-in/graphql/middleware.js.map +1 -1
  190. package/dist/core/middleware/built-in/graphql/subscriptions.js.map +1 -1
  191. package/dist/core/middleware/built-in/helmet/core.js.map +1 -1
  192. package/dist/core/middleware/built-in/helmet/hook.js.map +1 -1
  193. package/dist/core/middleware/built-in/helmet/index.js.map +1 -1
  194. package/dist/core/middleware/built-in/helmet/middleware.js.map +1 -1
  195. package/dist/core/middleware/built-in/http2/core.js.map +1 -1
  196. package/dist/core/middleware/built-in/http2/hook.js.map +1 -1
  197. package/dist/core/middleware/built-in/http2/index.js.map +1 -1
  198. package/dist/core/middleware/built-in/http2/middleware.js.map +1 -1
  199. package/dist/core/middleware/built-in/index.js.map +1 -1
  200. package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -1
  201. package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -1
  202. package/dist/core/middleware/built-in/range/core.js +4 -1
  203. package/dist/core/middleware/built-in/range/core.js.map +1 -1
  204. package/dist/core/middleware/built-in/range/hook.js.map +1 -1
  205. package/dist/core/middleware/built-in/range/index.js.map +1 -1
  206. package/dist/core/middleware/built-in/range/middleware.js.map +1 -1
  207. package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -1
  208. package/dist/core/middleware/built-in/rate-limit/hook.js.map +1 -1
  209. package/dist/core/middleware/built-in/rate-limit/index.js.map +1 -1
  210. package/dist/core/middleware/built-in/rate-limit/middleware.js.map +1 -1
  211. package/dist/core/middleware/built-in/request-logger/index.js.map +1 -1
  212. package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -1
  213. package/dist/core/middleware/built-in/session/core.js +4 -4
  214. package/dist/core/middleware/built-in/session/core.js.map +1 -1
  215. package/dist/core/middleware/built-in/session/hook.js.map +1 -1
  216. package/dist/core/middleware/built-in/session/index.js.map +1 -1
  217. package/dist/core/middleware/built-in/session/middleware.js.map +1 -1
  218. package/dist/core/middleware/built-in/sse/core.js.map +1 -1
  219. package/dist/core/middleware/built-in/sse/hook.js.map +1 -1
  220. package/dist/core/middleware/built-in/sse/index.js.map +1 -1
  221. package/dist/core/middleware/built-in/sse/middleware.js.map +1 -1
  222. package/dist/core/middleware/built-in/static/core.js.map +1 -1
  223. package/dist/core/middleware/built-in/static/hook.js.map +1 -1
  224. package/dist/core/middleware/built-in/static/index.js.map +1 -1
  225. package/dist/core/middleware/built-in/static/middleware.js.map +1 -1
  226. package/dist/core/middleware/built-in/template/core.js +1 -1
  227. package/dist/core/middleware/built-in/template/core.js.map +1 -1
  228. package/dist/core/middleware/built-in/template/hook.js.map +1 -1
  229. package/dist/core/middleware/built-in/template/index.js.map +1 -1
  230. package/dist/core/middleware/built-in/template/middleware.js.map +1 -1
  231. package/dist/core/middleware/built-in/upload/core.js.map +1 -1
  232. package/dist/core/middleware/built-in/upload/hook.js.map +1 -1
  233. package/dist/core/middleware/built-in/upload/index.js.map +1 -1
  234. package/dist/core/middleware/built-in/upload/middleware.js.map +1 -1
  235. package/dist/core/middleware/built-in/validation/core.js.map +1 -1
  236. package/dist/core/middleware/built-in/validation/hook.js.map +1 -1
  237. package/dist/core/middleware/built-in/validation/index.js.map +1 -1
  238. package/dist/core/middleware/built-in/validation/middleware.js.map +1 -1
  239. package/dist/core/middleware/index.js +2 -2
  240. package/dist/core/middleware/index.js.map +1 -1
  241. package/dist/core/modules/auto-discovery.js +11 -7
  242. package/dist/core/modules/auto-discovery.js.map +1 -1
  243. package/dist/core/modules/index.js.map +1 -1
  244. package/dist/core/modules/modules.js +18 -13
  245. package/dist/core/modules/modules.js.map +1 -1
  246. package/dist/core/networking/adapters/engine-adapter.js +1 -1
  247. package/dist/core/networking/adapters/engine-adapter.js.map +1 -1
  248. package/dist/core/networking/adapters/index.js.map +1 -1
  249. package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -0
  250. package/dist/core/networking/adapters/socketio-adapter.js +12 -1
  251. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  252. package/dist/core/networking/adapters/uws-adapter.js +1 -1
  253. package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
  254. package/dist/core/networking/adapters/ws-adapter.d.ts +15 -0
  255. package/dist/core/networking/adapters/ws-adapter.js +120 -6
  256. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  257. package/dist/core/networking/index.js.map +1 -1
  258. package/dist/core/networking/service-discovery.js +7 -5
  259. package/dist/core/networking/service-discovery.js.map +1 -1
  260. package/dist/core/networking/websocket-adapter.d.ts +22 -3
  261. package/dist/core/networking/websocket-adapter.js.map +1 -1
  262. package/dist/core/networking/websocket-manager.js +70 -67
  263. package/dist/core/networking/websocket-manager.js.map +1 -1
  264. package/dist/core/pooling/object-pool-manager.js +6 -0
  265. package/dist/core/pooling/object-pool-manager.js.map +1 -1
  266. package/dist/core/queue/adapters/bull-adapter.js.map +1 -1
  267. package/dist/core/queue/adapters/index.js.map +1 -1
  268. package/dist/core/queue/adapters/kafka-adapter.js +2 -2
  269. package/dist/core/queue/adapters/kafka-adapter.js.map +1 -1
  270. package/dist/core/queue/adapters/memory-adapter.js +6 -6
  271. package/dist/core/queue/adapters/memory-adapter.js.map +1 -1
  272. package/dist/core/queue/adapters/rabbitmq-adapter.d.ts +50 -0
  273. package/dist/core/queue/adapters/rabbitmq-adapter.js +176 -20
  274. package/dist/core/queue/adapters/rabbitmq-adapter.js.map +1 -1
  275. package/dist/core/queue/adapters/sqs-adapter.d.ts +12 -2
  276. package/dist/core/queue/adapters/sqs-adapter.js +75 -24
  277. package/dist/core/queue/adapters/sqs-adapter.js.map +1 -1
  278. package/dist/core/queue/index.js.map +1 -1
  279. package/dist/core/queue/middleware/index.js.map +1 -1
  280. package/dist/core/queue/middleware/monitoring.d.ts +1 -1
  281. package/dist/core/queue/middleware/monitoring.js.map +1 -1
  282. package/dist/core/queue/middleware/priority.js +2 -1
  283. package/dist/core/queue/middleware/priority.js.map +1 -1
  284. package/dist/core/queue/middleware/rate-limit.js.map +1 -1
  285. package/dist/core/queue/queue-adapter.js.map +1 -1
  286. package/dist/core/queue/queue-manager.js.map +1 -1
  287. package/dist/core/queue/types.d.ts +8 -8
  288. package/dist/core/queue/types.js.map +1 -1
  289. package/dist/core/routing/app-integration.js.map +1 -1
  290. package/dist/core/routing/create-router.js.map +1 -1
  291. package/dist/core/routing/index.js.map +1 -1
  292. package/dist/core/routing/path-matcher.js.map +1 -1
  293. package/dist/core/routing/radix-tree.js.map +1 -1
  294. package/dist/core/routing/router.js.map +1 -1
  295. package/dist/core/routing/unified-router.js +12 -4
  296. package/dist/core/routing/unified-router.js.map +1 -1
  297. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  298. package/dist/core/runtime/base-adapter.js +2 -2
  299. package/dist/core/runtime/base-adapter.js.map +1 -1
  300. package/dist/core/runtime/cloudflare-workers-adapter.js +2 -0
  301. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  302. package/dist/core/runtime/index.js.map +1 -1
  303. package/dist/core/runtime/node-adapter.js +19 -17
  304. package/dist/core/runtime/node-adapter.js.map +1 -1
  305. package/dist/core/runtime/vercel-edge-adapter.js +2 -0
  306. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  307. package/dist/core/utilities/circuit-breaker.d.ts +1 -0
  308. package/dist/core/utilities/circuit-breaker.js +25 -2
  309. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  310. package/dist/core/utilities/container.js +9 -9
  311. package/dist/core/utilities/container.js.map +1 -1
  312. package/dist/core/utilities/hooks.js +28 -6
  313. package/dist/core/utilities/hooks.js.map +1 -1
  314. package/dist/core/utilities/index.js.map +1 -1
  315. package/dist/core/utilities/module-path.js.map +1 -1
  316. package/dist/core/utilities/package-utils.js +1 -1
  317. package/dist/core/utilities/package-utils.js.map +1 -1
  318. package/dist/core/utilities/response-helpers.js +1 -1
  319. package/dist/core/utilities/response-helpers.js.map +1 -1
  320. package/dist/core/validation/adapters.js.map +1 -1
  321. package/dist/core/validation/error-handler.js.map +1 -1
  322. package/dist/core/validation/index.js.map +1 -1
  323. package/dist/core/validation/schema-interface.js.map +1 -1
  324. package/dist/core/workers/facade.js.map +1 -1
  325. package/dist/core/workers/index.js.map +1 -1
  326. package/dist/core/workers/worker-entry.d.ts +1 -0
  327. package/dist/core/workers/worker-entry.js +12 -0
  328. package/dist/core/workers/worker-entry.js.map +1 -0
  329. package/dist/core/workers/worker-manager.d.ts +23 -2
  330. package/dist/core/workers/worker-manager.js +117 -17
  331. package/dist/core/workers/worker-manager.js.map +1 -1
  332. package/dist/core/workers/worker.js +8 -6
  333. package/dist/core/workers/worker.js.map +1 -1
  334. package/dist/index.d.ts +1 -1
  335. package/dist/index.js +4 -1
  336. package/dist/index.js.map +1 -1
  337. package/dist/moro.d.ts +18 -1
  338. package/dist/moro.js +168 -50
  339. package/dist/moro.js.map +1 -1
  340. package/dist/types/auth.d.ts +4 -4
  341. package/dist/types/auth.js.map +1 -1
  342. package/dist/types/cache.js.map +1 -1
  343. package/dist/types/cdn.js.map +1 -1
  344. package/dist/types/config.d.ts +10 -10
  345. package/dist/types/config.js.map +1 -1
  346. package/dist/types/core.js.map +1 -1
  347. package/dist/types/database.js.map +1 -1
  348. package/dist/types/discovery.js.map +1 -1
  349. package/dist/types/events.js.map +1 -1
  350. package/dist/types/hooks.js.map +1 -1
  351. package/dist/types/http.js.map +1 -1
  352. package/dist/types/logger.js.map +1 -1
  353. package/dist/types/module.js.map +1 -1
  354. package/dist/types/runtime.js.map +1 -1
  355. package/dist/types/session.js.map +1 -1
  356. package/package.json +29 -17
@@ -53,6 +53,8 @@ function parseCookieHeader(cookieHeader) {
53
53
  const cookiePartsLen = cookieParts.length;
54
54
  for (let i = 0; i < cookiePartsLen; i++) {
55
55
  const cookie = cookieParts[i];
56
+ if (cookie === undefined)
57
+ continue;
56
58
  const equalIndex = cookie.indexOf('=');
57
59
  if (equalIndex > 0) {
58
60
  const name = cookie.substring(0, equalIndex).trim();
@@ -183,7 +185,7 @@ export class MoroIncomingMessage extends IncomingMessage {
183
185
  if (v === undefined) {
184
186
  const forwardedProto = this.headers['x-forwarded-proto'];
185
187
  v = forwardedProto
186
- ? forwardedProto.split(',')[0].trim()
188
+ ? (forwardedProto.split(',')[0] ?? '').trim()
187
189
  : this.socket?.encrypted
188
190
  ? 'https'
189
191
  : 'http';
@@ -263,7 +265,7 @@ export class MoroIncomingMessage extends IncomingMessage {
263
265
  const ct = (this.headers['content-type'] || '');
264
266
  if (!ct)
265
267
  return false;
266
- const mime = ct.split(';')[0].trim().toLowerCase();
268
+ const mime = (ct.split(';')[0] ?? '').trim().toLowerCase();
267
269
  const t = type.toLowerCase();
268
270
  if (t.indexOf('/') === -1) {
269
271
  // e.g. 'json' → match */json or +json suffix
@@ -281,7 +283,7 @@ export class MoroIncomingMessage extends IncomingMessage {
281
283
  const wanted = Array.isArray(types) ? types : [types];
282
284
  if (accept === '*/*' || accept === '')
283
285
  return wanted[0] || false;
284
- const acceptTypes = accept.split(',').map(s => s.split(';')[0].trim().toLowerCase());
286
+ const acceptTypes = accept.split(',').map(s => (s.split(';')[0] ?? '').trim().toLowerCase());
285
287
  for (const w of wanted) {
286
288
  const wl = w.toLowerCase();
287
289
  const wMime = wl.indexOf('/') === -1 ? `application/${wl}` : wl;
@@ -308,7 +310,7 @@ export class MoroIncomingMessage extends IncomingMessage {
308
310
  .split(',')
309
311
  .map(s => {
310
312
  const parts = s.trim().split(';');
311
- const tag = parts[0].toLowerCase();
313
+ const tag = (parts[0] ?? '').toLowerCase();
312
314
  const qPart = parts.find(p => p.trim().startsWith('q='));
313
315
  const q = qPart ? parseFloat(qPart.trim().slice(2)) : 1;
314
316
  return { tag, q: isNaN(q) ? 0 : q };
@@ -696,7 +698,9 @@ export class MoroServerResponse extends ServerResponse {
696
698
  return this;
697
699
  }
698
700
  for (const key in headers) {
699
- this.setHeader(key, headers[key]);
701
+ const value = headers[key];
702
+ if (value !== undefined)
703
+ this.setHeader(key, value);
700
704
  }
701
705
  return this;
702
706
  }
@@ -792,10 +796,15 @@ export class MoroServerResponse extends ServerResponse {
792
796
  // Set Content-Type from extension if not already set
793
797
  if (!this.getHeader('Content-Type')) {
794
798
  // fire-and-forget mime lookup; not awaited to keep signature chainable
795
- this._server.getMimeType(filename.substring(filename.lastIndexOf('.'))).then(mime => {
799
+ void this._server
800
+ .getMimeType(filename.substring(filename.lastIndexOf('.')))
801
+ .then(mime => {
796
802
  if (!this.getHeader('Content-Type') && !this.headersSent) {
797
803
  this.setHeader('Content-Type', mime);
798
804
  }
805
+ })
806
+ .catch(() => {
807
+ // best-effort content-type inference
799
808
  });
800
809
  }
801
810
  }
@@ -956,7 +965,8 @@ export class MoroHttpServer {
956
965
  }
957
966
  if (limits?.maxHeaders)
958
967
  this.server.maxHeadersCount = limits.maxHeaders;
959
- this.listenBacklog = limits?.backlog;
968
+ if (limits?.backlog !== undefined)
969
+ this.listenBacklog = limits.backlog;
960
970
  }
961
971
  // Direct router dispatch - called after global middleware, before the legacy
962
972
  // route table. Returning true (or a promise of true) means the request was handled.
@@ -1235,7 +1245,11 @@ export class MoroHttpServer {
1235
1245
  const paramNames = route.paramNames;
1236
1246
  const paramNamesLen = paramNames.length;
1237
1247
  for (let i = 0; i < paramNamesLen; i++) {
1238
- params[paramNames[i]] = matches[i + 1];
1248
+ const paramName = paramNames[i];
1249
+ const value = matches[i + 1];
1250
+ if (paramName !== undefined && value !== undefined) {
1251
+ params[paramName] = value;
1252
+ }
1239
1253
  }
1240
1254
  httpReq.params = params;
1241
1255
  }
@@ -1469,12 +1483,12 @@ export class MoroHttpServer {
1469
1483
  error.received = contentLength;
1470
1484
  return Promise.reject(error);
1471
1485
  }
1472
- // For very large payloads, return a streaming interface instead of buffering
1473
- if (contentLength > maxSize / 2) {
1474
- // Stream for payloads > 50MB (uploads) or > 5MB (JSON/form)
1475
- return this.createStreamingBodyParser(req, contentType, maxSize);
1476
- }
1477
- // Standard buffered parsing for smaller payloads
1486
+ // Buffer every body up to maxSize and parse it into its real shape. The
1487
+ // incremental limit check below already bounds memory, and every other
1488
+ // backend (uWS, engine) returns the parsed body here - previously bodies
1489
+ // between maxSize/2 and maxSize resolved to a { type, parser } descriptor
1490
+ // object instead, so handlers/validation on the Node backend silently saw
1491
+ // a bogus shape for the exact same request that parsed normally elsewhere.
1478
1492
  return new Promise((resolve, reject) => {
1479
1493
  const chunks = [];
1480
1494
  let totalLength = 0;
@@ -1496,7 +1510,10 @@ export class MoroHttpServer {
1496
1510
  try {
1497
1511
  // Single-chunk fast path (most JSON bodies arrive in one chunk);
1498
1512
  // otherwise concat with the known total length to avoid a re-scan
1499
- const body = chunks.length === 1 ? chunks[0] : Buffer.concat(chunks, totalLength);
1513
+ const firstChunk = chunks[0];
1514
+ const body = chunks.length === 1 && firstChunk !== undefined
1515
+ ? firstChunk
1516
+ : Buffer.concat(chunks, totalLength);
1500
1517
  if (contentType.includes('application/json')) {
1501
1518
  // Empty JSON body -> null (parity with the engine/uWS servers, and
1502
1519
  // avoids JSON.parse('') throwing and 500ing an empty POST).
@@ -1525,132 +1542,6 @@ export class MoroHttpServer {
1525
1542
  req.on('error', reject);
1526
1543
  });
1527
1544
  }
1528
- /**
1529
- * Create a streaming body parser for large payloads
1530
- * Returns a streaming interface instead of buffering
1531
- */
1532
- createStreamingBodyParser(req, contentType, maxSize) {
1533
- let totalLength = 0;
1534
- const chunks = [];
1535
- return new Promise((resolve, reject) => {
1536
- const streamParser = {
1537
- // Streaming JSON parser for large JSON payloads
1538
- json: () => this.streamJsonParse(req, maxSize),
1539
- // Streaming form data parser
1540
- form: () => this.streamFormParse(req, maxSize),
1541
- // Raw stream access
1542
- stream: () => ({
1543
- onData: (callback) => {
1544
- req.on('data', (chunk) => {
1545
- totalLength += chunk.length;
1546
- if (totalLength > maxSize) {
1547
- reject(new Error('Request body too large'));
1548
- return;
1549
- }
1550
- callback(chunk);
1551
- });
1552
- },
1553
- onEnd: (callback) => {
1554
- req.on('end', callback);
1555
- },
1556
- onError: (callback) => {
1557
- req.on('error', callback);
1558
- },
1559
- }),
1560
- // Traditional buffered parsing (fallback)
1561
- buffer: async () => {
1562
- return new Promise((resolveBuffer, rejectBuffer) => {
1563
- req.on('data', (chunk) => {
1564
- totalLength += chunk.length;
1565
- if (totalLength > maxSize) {
1566
- rejectBuffer(new Error('Request body too large'));
1567
- return;
1568
- }
1569
- chunks.push(chunk);
1570
- });
1571
- req.on('end', () => {
1572
- try {
1573
- const body = Buffer.concat(chunks);
1574
- if (contentType.includes('application/json')) {
1575
- resolveBuffer(JSON.parse(body.toString()));
1576
- }
1577
- else {
1578
- resolveBuffer(body.toString());
1579
- }
1580
- }
1581
- catch (error) {
1582
- rejectBuffer(error);
1583
- }
1584
- });
1585
- req.on('error', rejectBuffer);
1586
- });
1587
- },
1588
- };
1589
- // Auto-detect and return appropriate parser
1590
- if (contentType.includes('application/json')) {
1591
- resolve({ type: 'json', parser: streamParser.json });
1592
- }
1593
- else if (contentType.includes('application/x-www-form-urlencoded')) {
1594
- resolve({ type: 'form', parser: streamParser.form });
1595
- }
1596
- else {
1597
- resolve({ type: 'stream', parser: streamParser.stream });
1598
- }
1599
- });
1600
- }
1601
- /**
1602
- * Streaming JSON parser for large payloads
1603
- */
1604
- async streamJsonParse(req, maxSize) {
1605
- return new Promise((resolve, reject) => {
1606
- let jsonString = '';
1607
- let totalLength = 0;
1608
- req.on('data', (chunk) => {
1609
- totalLength += chunk.length;
1610
- if (totalLength > maxSize) {
1611
- reject(new Error('Request body too large'));
1612
- return;
1613
- }
1614
- jsonString += chunk.toString();
1615
- });
1616
- req.on('end', () => {
1617
- try {
1618
- // For very large JSON, consider streaming JSON parsing in the future
1619
- resolve(JSON.parse(jsonString));
1620
- }
1621
- catch (error) {
1622
- reject(error);
1623
- }
1624
- });
1625
- req.on('error', reject);
1626
- });
1627
- }
1628
- /**
1629
- * Streaming form data parser
1630
- */
1631
- async streamFormParse(req, maxSize) {
1632
- return new Promise((resolve, reject) => {
1633
- let formData = '';
1634
- let totalLength = 0;
1635
- req.on('data', (chunk) => {
1636
- totalLength += chunk.length;
1637
- if (totalLength > maxSize) {
1638
- reject(new Error('Request body too large'));
1639
- return;
1640
- }
1641
- formData += chunk.toString();
1642
- });
1643
- req.on('end', () => {
1644
- try {
1645
- resolve(this.parseUrlEncoded(formData));
1646
- }
1647
- catch (error) {
1648
- reject(error);
1649
- }
1650
- });
1651
- req.on('error', reject);
1652
- });
1653
- }
1654
1545
  parseMultipart(buffer, contentType) {
1655
1546
  // Shared implementation - the native engine server parses uploads with
1656
1547
  // the exact same code so both transports agree on body/files shape
@@ -1718,6 +1609,8 @@ export class MoroHttpServer {
1718
1609
  // Only test routes with matching method and segment count
1719
1610
  for (let i = 0; i < candidateLen; i++) {
1720
1611
  const candidateRoute = candidateRoutes[i];
1612
+ if (candidateRoute === undefined)
1613
+ continue;
1721
1614
  if (candidateRoute.method === method && candidateRoute.pattern.test(normalizedPath)) {
1722
1615
  route = candidateRoute;
1723
1616
  break;