@morojs/moro 1.7.30 → 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 (373) hide show
  1. package/README.md +89 -46
  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 +119 -48
  6. package/dist/core/config/config-sources.js.map +1 -1
  7. package/dist/core/config/config-validator.js +189 -8
  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 +35 -4
  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 +41 -3
  44. package/dist/core/framework.js +342 -95
  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 +17 -23
  66. package/dist/core/http/http-server.js +109 -249
  67. package/dist/core/http/http-server.js.map +1 -1
  68. package/dist/core/http/http2-server.d.ts +6 -16
  69. package/dist/core/http/http2-server.js +40 -83
  70. package/dist/core/http/http2-server.js.map +1 -1
  71. package/dist/core/http/index.d.ts +1 -0
  72. package/dist/core/http/index.js +3 -0
  73. package/dist/core/http/index.js.map +1 -1
  74. package/dist/core/http/moro-engine-server.d.ts +263 -0
  75. package/dist/core/http/moro-engine-server.js +1962 -0
  76. package/dist/core/http/moro-engine-server.js.map +1 -0
  77. package/dist/core/http/utils/compression.d.ts +47 -0
  78. package/dist/core/http/utils/compression.js +132 -0
  79. package/dist/core/http/utils/compression.js.map +1 -0
  80. package/dist/core/http/utils/lazy-event-emitter.d.ts +11 -0
  81. package/dist/core/http/utils/lazy-event-emitter.js +69 -0
  82. package/dist/core/http/utils/lazy-event-emitter.js.map +1 -0
  83. package/dist/core/http/utils/multipart-parser.d.ts +32 -0
  84. package/dist/core/http/utils/multipart-parser.js +215 -0
  85. package/dist/core/http/utils/multipart-parser.js.map +1 -0
  86. package/dist/core/http/utils/query-parser.d.ts +1 -0
  87. package/dist/core/http/utils/query-parser.js +44 -0
  88. package/dist/core/http/utils/query-parser.js.map +1 -0
  89. package/dist/core/http/utils/size.d.ts +33 -0
  90. package/dist/core/http/utils/size.js +37 -0
  91. package/dist/core/http/utils/size.js.map +1 -0
  92. package/dist/core/http/utils/ssl-config.d.ts +69 -0
  93. package/dist/core/http/utils/ssl-config.js +116 -0
  94. package/dist/core/http/utils/ssl-config.js.map +1 -0
  95. package/dist/core/http/utils/uws-worker-clustering.js +45 -32
  96. package/dist/core/http/utils/uws-worker-clustering.js.map +1 -1
  97. package/dist/core/http/uws-http-server.d.ts +25 -3
  98. package/dist/core/http/uws-http-server.js +465 -86
  99. package/dist/core/http/uws-http-server.js.map +1 -1
  100. package/dist/core/jobs/cron-parser.js +7 -5
  101. package/dist/core/jobs/cron-parser.js.map +1 -1
  102. package/dist/core/jobs/index.js.map +1 -1
  103. package/dist/core/jobs/job-executor.d.ts +1 -1
  104. package/dist/core/jobs/job-executor.js.map +1 -1
  105. package/dist/core/jobs/job-scheduler.d.ts +3 -3
  106. package/dist/core/jobs/job-scheduler.js.map +1 -1
  107. package/dist/core/jobs/job-state-manager.d.ts +3 -3
  108. package/dist/core/jobs/job-state-manager.js +25 -4
  109. package/dist/core/jobs/job-state-manager.js.map +1 -1
  110. package/dist/core/jobs/leader-election.d.ts +15 -0
  111. package/dist/core/jobs/leader-election.js +158 -69
  112. package/dist/core/jobs/leader-election.js.map +1 -1
  113. package/dist/core/jobs/types.d.ts +4 -4
  114. package/dist/core/jobs/types.js.map +1 -1
  115. package/dist/core/jobs/utils.d.ts +1 -1
  116. package/dist/core/jobs/utils.js +7 -3
  117. package/dist/core/jobs/utils.js.map +1 -1
  118. package/dist/core/logger/filters.js +3 -2
  119. package/dist/core/logger/filters.js.map +1 -1
  120. package/dist/core/logger/index.js.map +1 -1
  121. package/dist/core/logger/logger.js +56 -25
  122. package/dist/core/logger/logger.js.map +1 -1
  123. package/dist/core/logger/outputs.js.map +1 -1
  124. package/dist/core/mail/adapters/console-adapter.js.map +1 -1
  125. package/dist/core/mail/adapters/index.js.map +1 -1
  126. package/dist/core/mail/adapters/nodemailer-adapter.js.map +1 -1
  127. package/dist/core/mail/adapters/resend-adapter.js.map +1 -1
  128. package/dist/core/mail/adapters/sendgrid-adapter.js.map +1 -1
  129. package/dist/core/mail/adapters/ses-adapter.js.map +1 -1
  130. package/dist/core/mail/index.js.map +1 -1
  131. package/dist/core/mail/mail-adapter.js.map +1 -1
  132. package/dist/core/mail/mail-manager.d.ts +10 -0
  133. package/dist/core/mail/mail-manager.js +21 -5
  134. package/dist/core/mail/mail-manager.js.map +1 -1
  135. package/dist/core/mail/template-engine.js.map +1 -1
  136. package/dist/core/mail/types.js.map +1 -1
  137. package/dist/core/middleware/built-in/auth/core.js +3 -3
  138. package/dist/core/middleware/built-in/auth/core.js.map +1 -1
  139. package/dist/core/middleware/built-in/auth/helpers.js +4 -4
  140. package/dist/core/middleware/built-in/auth/helpers.js.map +1 -1
  141. package/dist/core/middleware/built-in/auth/hook.js.map +1 -1
  142. package/dist/core/middleware/built-in/auth/index.js.map +1 -1
  143. package/dist/core/middleware/built-in/auth/jwt-helpers.d.ts +4 -4
  144. package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -1
  145. package/dist/core/middleware/built-in/auth/middleware.js.map +1 -1
  146. package/dist/core/middleware/built-in/auth/providers.js.map +1 -1
  147. package/dist/core/middleware/built-in/body-parsers/index.js.map +1 -1
  148. package/dist/core/middleware/built-in/body-size/core.js +2 -2
  149. package/dist/core/middleware/built-in/body-size/core.js.map +1 -1
  150. package/dist/core/middleware/built-in/body-size/hook.js.map +1 -1
  151. package/dist/core/middleware/built-in/body-size/index.js.map +1 -1
  152. package/dist/core/middleware/built-in/body-size/middleware.js.map +1 -1
  153. package/dist/core/middleware/built-in/cache/adapters/cache/file.js +3 -1
  154. package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -1
  155. package/dist/core/middleware/built-in/cache/adapters/cache/index.js.map +1 -1
  156. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
  157. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -1
  158. package/dist/core/middleware/built-in/cache/adapters/index.js.map +1 -1
  159. package/dist/core/middleware/built-in/cache/core.js.map +1 -1
  160. package/dist/core/middleware/built-in/cache/hook.js +3 -3
  161. package/dist/core/middleware/built-in/cache/hook.js.map +1 -1
  162. package/dist/core/middleware/built-in/cache/index.js.map +1 -1
  163. package/dist/core/middleware/built-in/cache/middleware.js.map +1 -1
  164. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -1
  165. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -1
  166. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -1
  167. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js.map +1 -1
  168. package/dist/core/middleware/built-in/cdn/adapters/index.js.map +1 -1
  169. package/dist/core/middleware/built-in/cdn/core.js.map +1 -1
  170. package/dist/core/middleware/built-in/cdn/hook.js.map +1 -1
  171. package/dist/core/middleware/built-in/cdn/index.js.map +1 -1
  172. package/dist/core/middleware/built-in/cdn/middleware.js.map +1 -1
  173. package/dist/core/middleware/built-in/compression/core.d.ts +3 -0
  174. package/dist/core/middleware/built-in/compression/core.js +28 -34
  175. package/dist/core/middleware/built-in/compression/core.js.map +1 -1
  176. package/dist/core/middleware/built-in/compression/hook.js.map +1 -1
  177. package/dist/core/middleware/built-in/compression/index.js.map +1 -1
  178. package/dist/core/middleware/built-in/compression/middleware.js.map +1 -1
  179. package/dist/core/middleware/built-in/cookie/core.js.map +1 -1
  180. package/dist/core/middleware/built-in/cookie/hook.js.map +1 -1
  181. package/dist/core/middleware/built-in/cookie/index.js.map +1 -1
  182. package/dist/core/middleware/built-in/cookie/middleware.js.map +1 -1
  183. package/dist/core/middleware/built-in/cors/core.js.map +1 -1
  184. package/dist/core/middleware/built-in/cors/hook.js.map +1 -1
  185. package/dist/core/middleware/built-in/cors/index.js.map +1 -1
  186. package/dist/core/middleware/built-in/cors/middleware.js.map +1 -1
  187. package/dist/core/middleware/built-in/csp/core.js.map +1 -1
  188. package/dist/core/middleware/built-in/csp/hook.js.map +1 -1
  189. package/dist/core/middleware/built-in/csp/index.js.map +1 -1
  190. package/dist/core/middleware/built-in/csp/middleware.js.map +1 -1
  191. package/dist/core/middleware/built-in/csrf/core.js +1 -1
  192. package/dist/core/middleware/built-in/csrf/core.js.map +1 -1
  193. package/dist/core/middleware/built-in/csrf/hook.js.map +1 -1
  194. package/dist/core/middleware/built-in/csrf/index.js.map +1 -1
  195. package/dist/core/middleware/built-in/csrf/middleware.js.map +1 -1
  196. package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -1
  197. package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -1
  198. package/dist/core/middleware/built-in/graphql/core.js.map +1 -1
  199. package/dist/core/middleware/built-in/graphql/helpers.js.map +1 -1
  200. package/dist/core/middleware/built-in/graphql/hook.js.map +1 -1
  201. package/dist/core/middleware/built-in/graphql/index.js.map +1 -1
  202. package/dist/core/middleware/built-in/graphql/middleware.js.map +1 -1
  203. package/dist/core/middleware/built-in/graphql/subscriptions.js.map +1 -1
  204. package/dist/core/middleware/built-in/helmet/core.js.map +1 -1
  205. package/dist/core/middleware/built-in/helmet/hook.js.map +1 -1
  206. package/dist/core/middleware/built-in/helmet/index.js.map +1 -1
  207. package/dist/core/middleware/built-in/helmet/middleware.js.map +1 -1
  208. package/dist/core/middleware/built-in/http2/core.js.map +1 -1
  209. package/dist/core/middleware/built-in/http2/hook.js.map +1 -1
  210. package/dist/core/middleware/built-in/http2/index.js.map +1 -1
  211. package/dist/core/middleware/built-in/http2/middleware.js.map +1 -1
  212. package/dist/core/middleware/built-in/index.js.map +1 -1
  213. package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -1
  214. package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -1
  215. package/dist/core/middleware/built-in/range/core.js +4 -1
  216. package/dist/core/middleware/built-in/range/core.js.map +1 -1
  217. package/dist/core/middleware/built-in/range/hook.js.map +1 -1
  218. package/dist/core/middleware/built-in/range/index.js.map +1 -1
  219. package/dist/core/middleware/built-in/range/middleware.js.map +1 -1
  220. package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -1
  221. package/dist/core/middleware/built-in/rate-limit/hook.js.map +1 -1
  222. package/dist/core/middleware/built-in/rate-limit/index.js.map +1 -1
  223. package/dist/core/middleware/built-in/rate-limit/middleware.js.map +1 -1
  224. package/dist/core/middleware/built-in/request-logger/index.js.map +1 -1
  225. package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -1
  226. package/dist/core/middleware/built-in/session/core.js +4 -4
  227. package/dist/core/middleware/built-in/session/core.js.map +1 -1
  228. package/dist/core/middleware/built-in/session/hook.js.map +1 -1
  229. package/dist/core/middleware/built-in/session/index.js.map +1 -1
  230. package/dist/core/middleware/built-in/session/middleware.js.map +1 -1
  231. package/dist/core/middleware/built-in/sse/core.js.map +1 -1
  232. package/dist/core/middleware/built-in/sse/hook.js.map +1 -1
  233. package/dist/core/middleware/built-in/sse/index.js.map +1 -1
  234. package/dist/core/middleware/built-in/sse/middleware.js.map +1 -1
  235. package/dist/core/middleware/built-in/static/core.js.map +1 -1
  236. package/dist/core/middleware/built-in/static/hook.js.map +1 -1
  237. package/dist/core/middleware/built-in/static/index.js.map +1 -1
  238. package/dist/core/middleware/built-in/static/middleware.js.map +1 -1
  239. package/dist/core/middleware/built-in/template/core.js +1 -1
  240. package/dist/core/middleware/built-in/template/core.js.map +1 -1
  241. package/dist/core/middleware/built-in/template/hook.js.map +1 -1
  242. package/dist/core/middleware/built-in/template/index.js.map +1 -1
  243. package/dist/core/middleware/built-in/template/middleware.js.map +1 -1
  244. package/dist/core/middleware/built-in/upload/core.js.map +1 -1
  245. package/dist/core/middleware/built-in/upload/hook.js.map +1 -1
  246. package/dist/core/middleware/built-in/upload/index.js.map +1 -1
  247. package/dist/core/middleware/built-in/upload/middleware.js.map +1 -1
  248. package/dist/core/middleware/built-in/validation/core.js.map +1 -1
  249. package/dist/core/middleware/built-in/validation/hook.js.map +1 -1
  250. package/dist/core/middleware/built-in/validation/index.js.map +1 -1
  251. package/dist/core/middleware/built-in/validation/middleware.js.map +1 -1
  252. package/dist/core/middleware/index.js +2 -2
  253. package/dist/core/middleware/index.js.map +1 -1
  254. package/dist/core/modules/auto-discovery.js +11 -7
  255. package/dist/core/modules/auto-discovery.js.map +1 -1
  256. package/dist/core/modules/index.js.map +1 -1
  257. package/dist/core/modules/modules.js +18 -13
  258. package/dist/core/modules/modules.js.map +1 -1
  259. package/dist/core/networking/adapters/engine-adapter.d.ts +23 -0
  260. package/dist/core/networking/adapters/engine-adapter.js +365 -0
  261. package/dist/core/networking/adapters/engine-adapter.js.map +1 -0
  262. package/dist/core/networking/adapters/index.d.ts +1 -0
  263. package/dist/core/networking/adapters/index.js +1 -0
  264. package/dist/core/networking/adapters/index.js.map +1 -1
  265. package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -0
  266. package/dist/core/networking/adapters/socketio-adapter.js +12 -1
  267. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  268. package/dist/core/networking/adapters/uws-adapter.js +27 -16
  269. package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
  270. package/dist/core/networking/adapters/ws-adapter.d.ts +15 -0
  271. package/dist/core/networking/adapters/ws-adapter.js +120 -6
  272. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  273. package/dist/core/networking/index.js.map +1 -1
  274. package/dist/core/networking/service-discovery.js +7 -5
  275. package/dist/core/networking/service-discovery.js.map +1 -1
  276. package/dist/core/networking/websocket-adapter.d.ts +22 -3
  277. package/dist/core/networking/websocket-adapter.js.map +1 -1
  278. package/dist/core/networking/websocket-manager.js +70 -67
  279. package/dist/core/networking/websocket-manager.js.map +1 -1
  280. package/dist/core/pooling/object-pool-manager.js +6 -0
  281. package/dist/core/pooling/object-pool-manager.js.map +1 -1
  282. package/dist/core/queue/adapters/bull-adapter.js.map +1 -1
  283. package/dist/core/queue/adapters/index.js.map +1 -1
  284. package/dist/core/queue/adapters/kafka-adapter.js +2 -2
  285. package/dist/core/queue/adapters/kafka-adapter.js.map +1 -1
  286. package/dist/core/queue/adapters/memory-adapter.js +6 -6
  287. package/dist/core/queue/adapters/memory-adapter.js.map +1 -1
  288. package/dist/core/queue/adapters/rabbitmq-adapter.d.ts +50 -0
  289. package/dist/core/queue/adapters/rabbitmq-adapter.js +176 -20
  290. package/dist/core/queue/adapters/rabbitmq-adapter.js.map +1 -1
  291. package/dist/core/queue/adapters/sqs-adapter.d.ts +12 -2
  292. package/dist/core/queue/adapters/sqs-adapter.js +75 -24
  293. package/dist/core/queue/adapters/sqs-adapter.js.map +1 -1
  294. package/dist/core/queue/index.js.map +1 -1
  295. package/dist/core/queue/middleware/index.js.map +1 -1
  296. package/dist/core/queue/middleware/monitoring.d.ts +1 -1
  297. package/dist/core/queue/middleware/monitoring.js.map +1 -1
  298. package/dist/core/queue/middleware/priority.js +2 -1
  299. package/dist/core/queue/middleware/priority.js.map +1 -1
  300. package/dist/core/queue/middleware/rate-limit.js.map +1 -1
  301. package/dist/core/queue/queue-adapter.js.map +1 -1
  302. package/dist/core/queue/queue-manager.js.map +1 -1
  303. package/dist/core/queue/types.d.ts +8 -8
  304. package/dist/core/queue/types.js.map +1 -1
  305. package/dist/core/routing/app-integration.js.map +1 -1
  306. package/dist/core/routing/create-router.js.map +1 -1
  307. package/dist/core/routing/index.js.map +1 -1
  308. package/dist/core/routing/path-matcher.js.map +1 -1
  309. package/dist/core/routing/radix-tree.js.map +1 -1
  310. package/dist/core/routing/router.js.map +1 -1
  311. package/dist/core/routing/unified-router.js +12 -4
  312. package/dist/core/routing/unified-router.js.map +1 -1
  313. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  314. package/dist/core/runtime/base-adapter.js +2 -2
  315. package/dist/core/runtime/base-adapter.js.map +1 -1
  316. package/dist/core/runtime/cloudflare-workers-adapter.js +2 -0
  317. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  318. package/dist/core/runtime/index.js.map +1 -1
  319. package/dist/core/runtime/node-adapter.js +19 -17
  320. package/dist/core/runtime/node-adapter.js.map +1 -1
  321. package/dist/core/runtime/vercel-edge-adapter.js +2 -0
  322. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  323. package/dist/core/utilities/circuit-breaker.d.ts +1 -0
  324. package/dist/core/utilities/circuit-breaker.js +25 -2
  325. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  326. package/dist/core/utilities/container.js +9 -9
  327. package/dist/core/utilities/container.js.map +1 -1
  328. package/dist/core/utilities/hooks.js +28 -6
  329. package/dist/core/utilities/hooks.js.map +1 -1
  330. package/dist/core/utilities/index.js.map +1 -1
  331. package/dist/core/utilities/module-path.js.map +1 -1
  332. package/dist/core/utilities/package-utils.d.ts +68 -0
  333. package/dist/core/utilities/package-utils.js +198 -1
  334. package/dist/core/utilities/package-utils.js.map +1 -1
  335. package/dist/core/utilities/response-helpers.js +1 -1
  336. package/dist/core/utilities/response-helpers.js.map +1 -1
  337. package/dist/core/validation/adapters.js.map +1 -1
  338. package/dist/core/validation/error-handler.js.map +1 -1
  339. package/dist/core/validation/index.js.map +1 -1
  340. package/dist/core/validation/schema-interface.js.map +1 -1
  341. package/dist/core/workers/facade.js.map +1 -1
  342. package/dist/core/workers/index.js.map +1 -1
  343. package/dist/core/workers/worker-entry.d.ts +1 -0
  344. package/dist/core/workers/worker-entry.js +12 -0
  345. package/dist/core/workers/worker-entry.js.map +1 -0
  346. package/dist/core/workers/worker-manager.d.ts +23 -2
  347. package/dist/core/workers/worker-manager.js +117 -17
  348. package/dist/core/workers/worker-manager.js.map +1 -1
  349. package/dist/core/workers/worker.js +8 -6
  350. package/dist/core/workers/worker.js.map +1 -1
  351. package/dist/index.d.ts +2 -2
  352. package/dist/index.js +5 -2
  353. package/dist/index.js.map +1 -1
  354. package/dist/moro.d.ts +20 -1
  355. package/dist/moro.js +230 -70
  356. package/dist/moro.js.map +1 -1
  357. package/dist/types/auth.d.ts +4 -4
  358. package/dist/types/auth.js.map +1 -1
  359. package/dist/types/cache.js.map +1 -1
  360. package/dist/types/cdn.js.map +1 -1
  361. package/dist/types/config.d.ts +100 -15
  362. package/dist/types/config.js.map +1 -1
  363. package/dist/types/core.js.map +1 -1
  364. package/dist/types/database.js.map +1 -1
  365. package/dist/types/discovery.js.map +1 -1
  366. package/dist/types/events.js.map +1 -1
  367. package/dist/types/hooks.js.map +1 -1
  368. package/dist/types/http.js.map +1 -1
  369. package/dist/types/logger.js.map +1 -1
  370. package/dist/types/module.js.map +1 -1
  371. package/dist/types/runtime.js.map +1 -1
  372. package/dist/types/session.js.map +1 -1
  373. package/package.json +32 -17
@@ -66,8 +66,10 @@ function validateServerConfig(config, path) {
66
66
  const result = {
67
67
  port: validatePort(config.port, `${path}.port`),
68
68
  host: validateString(config.host, `${path}.host`),
69
- maxConnections: validateNumber(config.maxConnections, `${path}.maxConnections`, { min: 1 }),
70
- timeout: validateNumber(config.timeout, `${path}.timeout`, { min: 1000 }),
69
+ // min 0: 0 = unlimited / disabled (these were never applied before, so 0
70
+ // preserves the historical observed behavior — see schema.ts).
71
+ maxConnections: validateNumber(config.maxConnections, `${path}.maxConnections`, { min: 0 }),
72
+ timeout: validateNumber(config.timeout, `${path}.timeout`, { min: 0 }),
71
73
  bodySizeLimit: validateString(config.bodySizeLimit, `${path}.bodySizeLimit`),
72
74
  maxUploadSize: validateString(config.maxUploadSize, `${path}.maxUploadSize`),
73
75
  requestTracking: {
@@ -80,9 +82,49 @@ function validateServerConfig(config, path) {
80
82
  enabled: validateBoolean(config.errorBoundary?.enabled, `${path}.errorBoundary.enabled`),
81
83
  },
82
84
  };
83
- // Optional uWebSockets configuration
85
+ // Optional per-phase timeouts (all ms, >= 0 where 0 = default/disabled).
86
+ if (config.timeouts !== undefined) {
87
+ result.timeouts = validateServerTimeouts(config.timeouts, `${path}.timeouts`);
88
+ }
89
+ // `timeout` is a deprecated alias for `timeouts.request`. Fold it forward
90
+ // when set and the canonical field is absent (matching the useUWebSockets
91
+ // deprecation pattern).
92
+ if (config.timeout && config.timeout > 0 && result.timeouts?.request === undefined) {
93
+ result.timeouts = { ...(result.timeouts ?? {}), request: result.timeout };
94
+ if (config.timeouts?.request === undefined) {
95
+ logger.warn(`${path}.timeout is deprecated - use ${path}.timeouts.request instead`);
96
+ }
97
+ }
98
+ // Optional fine-grained limits.
99
+ if (config.limits !== undefined) {
100
+ result.limits = validateServerLimits(config.limits, `${path}.limits`);
101
+ }
102
+ // Optional TCP backlog.
103
+ if (config.backlog !== undefined) {
104
+ result.backlog = validateNumber(config.backlog, `${path}.backlog`, { min: 0 });
105
+ }
106
+ // Optional HTTP/2 (boolean or options object).
107
+ if (config.http2 !== undefined) {
108
+ result.http2 = validateHttp2Config(config.http2, `${path}.http2`);
109
+ }
110
+ // Optional HTTP engine selection ('moro' | 'node' | 'uws')
111
+ if (config.engine !== undefined) {
112
+ // Map legacy values from the earlier 'auto'/'native' scheme to 'moro'
113
+ let engine = config.engine;
114
+ if (engine === 'auto' || engine === 'native') {
115
+ logger.warn(`${path}.engine: '${engine}' is deprecated - use 'moro' (Moro's native engine)`);
116
+ engine = 'moro';
117
+ }
118
+ result.engine = validateEnum(engine, ['moro', 'node', 'uws'], `${path}.engine`);
119
+ }
120
+ // Optional uWebSockets configuration (deprecated alias for engine: 'uws')
84
121
  if (config.useUWebSockets !== undefined) {
85
122
  result.useUWebSockets = validateBoolean(config.useUWebSockets, `${path}.useUWebSockets`);
123
+ // The default config merges useUWebSockets: false in, so only an actual
124
+ // opt-in warrants the deprecation nudge
125
+ if (result.useUWebSockets && config.engine === undefined) {
126
+ logger.warn(`${path}.useUWebSockets is deprecated - use ${path}.engine: 'uws' instead`);
127
+ }
86
128
  }
87
129
  // Optional SSL configuration
88
130
  if (config.ssl !== undefined) {
@@ -91,22 +133,155 @@ function validateServerConfig(config, path) {
91
133
  return result;
92
134
  }
93
135
  /**
94
- * Validate SSL configuration
136
+ * Validate the unified SSL configuration (superset of both historical
137
+ * shapes). Passes recognized keys through, folds the legacy uWS aliases, and
138
+ * rejects a partial key-without-cert (or vice versa) so a half-configured TLS
139
+ * server fails loudly at boot instead of silently serving plaintext.
95
140
  */
96
141
  function validateSSLConfig(config, path) {
97
142
  if (!config || typeof config !== 'object') {
98
143
  throw new ConfigValidationError(path, config, 'object', 'SSL configuration must be an object');
99
144
  }
100
145
  const result = {};
146
+ // File-path shape (both the uWS key_file_name and node keyFile spellings).
147
+ if (config.keyFile !== undefined)
148
+ result.keyFile = validateString(config.keyFile, `${path}.keyFile`);
149
+ if (config.certFile !== undefined)
150
+ result.certFile = validateString(config.certFile, `${path}.certFile`);
101
151
  if (config.key_file_name !== undefined) {
102
152
  result.key_file_name = validateString(config.key_file_name, `${path}.key_file_name`);
103
153
  }
104
154
  if (config.cert_file_name !== undefined) {
105
155
  result.cert_file_name = validateString(config.cert_file_name, `${path}.cert_file_name`);
106
156
  }
157
+ if (config.ca_file_name !== undefined)
158
+ result.ca_file_name = config.ca_file_name;
159
+ if (config.caFile !== undefined)
160
+ result.caFile = config.caFile;
161
+ // Inline-PEM shape (string or Buffer — pass through without stringifying).
162
+ if (config.key !== undefined)
163
+ result.key = config.key;
164
+ if (config.cert !== undefined)
165
+ result.cert = config.cert;
166
+ if (config.ca !== undefined)
167
+ result.ca = config.ca;
107
168
  if (config.passphrase !== undefined) {
108
169
  result.passphrase = validateString(config.passphrase, `${path}.passphrase`);
109
170
  }
171
+ if (config.minVersion !== undefined) {
172
+ result.minVersion = validateEnum(config.minVersion, ['TLSv1.2', 'TLSv1.3'], `${path}.minVersion`);
173
+ }
174
+ if (config.requestCert !== undefined) {
175
+ result.requestCert = validateBoolean(config.requestCert, `${path}.requestCert`);
176
+ }
177
+ if (config.rejectUnauthorized !== undefined) {
178
+ result.rejectUnauthorized = validateBoolean(config.rejectUnauthorized, `${path}.rejectUnauthorized`);
179
+ }
180
+ const hasKey = Boolean(result.key || result.keyFile || result.key_file_name);
181
+ const hasCert = Boolean(result.cert || result.certFile || result.cert_file_name);
182
+ if (hasKey !== hasCert) {
183
+ throw new ConfigValidationError(path, config, 'key + cert', 'SSL configuration must supply BOTH a key and a certificate (or neither)');
184
+ }
185
+ return result;
186
+ }
187
+ /** Size fields accept a number of bytes or a size string ('16kb', '10mb'). */
188
+ function validateSize(value, path) {
189
+ if (typeof value === 'number')
190
+ return validateNumber(value, path, { min: 0 });
191
+ if (typeof value === 'string') {
192
+ if (!/^(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?$/i.test(value.trim())) {
193
+ throw new ConfigValidationError(path, value, 'size', `Invalid size string: ${value}`);
194
+ }
195
+ return value;
196
+ }
197
+ throw new ConfigValidationError(path, value, 'number|string', 'Size must be a number or size string');
198
+ }
199
+ function validateServerTimeouts(config, path) {
200
+ if (typeof config !== 'object' || config === null) {
201
+ throw new ConfigValidationError(path, config, 'object', 'timeouts must be an object');
202
+ }
203
+ const result = {};
204
+ for (const key of ['request', 'idle', 'keepAlive', 'headers']) {
205
+ if (config[key] !== undefined) {
206
+ result[key] = validateNumber(config[key], `${path}.${key}`, { min: 0 });
207
+ }
208
+ }
209
+ return result;
210
+ }
211
+ function validateServerLimits(config, path) {
212
+ if (typeof config !== 'object' || config === null) {
213
+ throw new ConfigValidationError(path, config, 'object', 'limits must be an object');
214
+ }
215
+ const result = {};
216
+ for (const key of [
217
+ 'maxHeaderSize',
218
+ 'wsMaxMessageSize',
219
+ 'wsBackpressureLimit',
220
+ 'writeHighWaterMark',
221
+ 'maxPendingBytes',
222
+ ]) {
223
+ if (config[key] !== undefined)
224
+ result[key] = validateSize(config[key], `${path}.${key}`);
225
+ }
226
+ if (config.maxHeaders !== undefined) {
227
+ result.maxHeaders = validateNumber(config.maxHeaders, `${path}.maxHeaders`, { min: 1 });
228
+ }
229
+ if (config.multipart !== undefined) {
230
+ const m = config.multipart;
231
+ if (typeof m !== 'object' || m === null) {
232
+ throw new ConfigValidationError(`${path}.multipart`, m, 'object', 'multipart must be an object');
233
+ }
234
+ const mp = {};
235
+ if (m.maxParts !== undefined)
236
+ mp.maxParts = validateNumber(m.maxParts, `${path}.multipart.maxParts`, { min: 1 });
237
+ if (m.maxFiles !== undefined)
238
+ mp.maxFiles = validateNumber(m.maxFiles, `${path}.multipart.maxFiles`, { min: 0 });
239
+ if (m.maxPartHeaderBytes !== undefined)
240
+ mp.maxPartHeaderBytes = validateSize(m.maxPartHeaderBytes, `${path}.multipart.maxPartHeaderBytes`);
241
+ if (m.maxFileSize !== undefined)
242
+ mp.maxFileSize = validateSize(m.maxFileSize, `${path}.multipart.maxFileSize`);
243
+ result.multipart = mp;
244
+ }
245
+ return result;
246
+ }
247
+ function validateHttp2Config(config, path) {
248
+ if (typeof config === 'boolean')
249
+ return config;
250
+ if (typeof config !== 'object' || config === null) {
251
+ throw new ConfigValidationError(path, config, 'boolean|object', 'http2 must be a boolean or an options object');
252
+ }
253
+ const result = {};
254
+ if (config.allowHTTP1 !== undefined)
255
+ result.allowHTTP1 = validateBoolean(config.allowHTTP1, `${path}.allowHTTP1`);
256
+ if (config.maxSessionMemory !== undefined) {
257
+ result.maxSessionMemory = validateNumber(config.maxSessionMemory, `${path}.maxSessionMemory`, {
258
+ min: 1,
259
+ });
260
+ }
261
+ if (config.settings !== undefined) {
262
+ if (typeof config.settings !== 'object' || config.settings === null) {
263
+ throw new ConfigValidationError(`${path}.settings`, config.settings, 'object', 'http2.settings must be an object');
264
+ }
265
+ const s = {};
266
+ for (const key of [
267
+ 'maxConcurrentStreams',
268
+ 'initialWindowSize',
269
+ 'maxFrameSize',
270
+ 'maxHeaderListSize',
271
+ 'headerTableSize',
272
+ 'maxHeaderSize',
273
+ ]) {
274
+ if (config.settings[key] !== undefined) {
275
+ s[key] = validateNumber(config.settings[key], `${path}.settings.${key}`, { min: 0 });
276
+ }
277
+ }
278
+ for (const key of ['enablePush', 'enableConnectProtocol']) {
279
+ if (config.settings[key] !== undefined) {
280
+ s[key] = validateBoolean(config.settings[key], `${path}.settings.${key}`);
281
+ }
282
+ }
283
+ result.settings = s;
284
+ }
110
285
  return result;
111
286
  }
112
287
  /**
@@ -806,11 +981,18 @@ function validateCompressionConfig(config, path) {
806
981
  if (!config || typeof config !== 'object') {
807
982
  throw new ConfigValidationError(path, config, 'object', 'Compression configuration must be an object');
808
983
  }
809
- return {
984
+ const result = {
810
985
  enabled: validateBoolean(config.enabled, `${path}.enabled`),
811
986
  level: validateNumber(config.level, `${path}.level`, { min: 1, max: 9 }),
812
987
  threshold: validateNumber(config.threshold, `${path}.threshold`, { min: 0 }),
813
988
  };
989
+ if (config.encodings !== undefined) {
990
+ if (!Array.isArray(config.encodings)) {
991
+ throw new ConfigValidationError(`${path}.encodings`, config.encodings, 'array', 'encodings must be an array');
992
+ }
993
+ result.encodings = config.encodings.map((e) => validateEnum(e, ['br', 'gzip', 'deflate'], `${path}.encodings[]`));
994
+ }
995
+ return result;
814
996
  }
815
997
  /**
816
998
  * Validate circuit breaker configuration
@@ -987,9 +1169,8 @@ function validateStringArray(value, path) {
987
1169
  // Avoid chained map().filter() - use single pass
988
1170
  const parts = value.split(',');
989
1171
  const result = [];
990
- const len = parts.length;
991
- for (let i = 0; i < len; i++) {
992
- const trimmed = parts[i].trim();
1172
+ for (const part of parts) {
1173
+ const trimmed = part.trim();
993
1174
  if (trimmed.length > 0) {
994
1175
  result.push(trimmed);
995
1176
  }