@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
@@ -1 +1 @@
1
- {"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/core/framework.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/core/framework.ts"],"names":[],"mappings":"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","sourcesContent":["import { Server } from 'http';\nimport crypto from 'crypto';\nimport { EventEmitter } from 'events';\nimport { MoroHttpServer, HttpRequest, HttpResponse } from './http/index.js';\nimport { UWebSocketsHttpServer } from './http/uws-http-server.js';\nimport { MoroEngineServer } from './http/moro-engine-server.js';\nimport { MoroHttp2Server, Http2ServerOptions } from './http/http2-server.js';\nimport { Router } from './routing/router.js';\nimport { Container, buildModuleBasePath } from './utilities/index.js';\nimport { ModuleLoader } from './modules/index.js';\nimport { WebSocketManager } from './networking/websocket-manager.js';\nimport { CircuitBreaker } from './utilities/circuit-breaker.js';\nimport {\n isPackageAvailable,\n loadNativeEngine,\n getNativeEngineLoadErrors,\n NativeEngineLoadResult,\n} from './utilities/package-utils.js';\nimport { parseSizeToBytes, type HttpRuntimeLimits } from './http/utils/size.js';\nimport {\n normalizeSSLConfig,\n sslForNode,\n sslForUws,\n sslIsComplete,\n} from './http/utils/ssl-config.js';\nimport { MoroEventBus } from './events/index.js';\nimport { createFrameworkLogger, logger as globalLogger } from './logger/index.js';\nimport { ModuleConfig, InternalRouteDefinition } from '../types/module.js';\nimport { MoroOptions as CoreMoroOptions } from '../types/core.js';\nimport {\n WebSocketAdapter,\n WebSocketAdapterOptions,\n mergeWebSocketConfig,\n} from './networking/websocket-adapter.js';\nimport { cors, helmet, compression } from './middleware/built-in/index.js';\n\n/**\n * Which HTTP server actually booted, and why, when the native engine was\n * bypassed. Exposed via getServerKind() / app.engine for logs, tests and\n * benchmarks that need to assert the transport in use.\n */\nexport interface ServerKind {\n server: 'engine' | 'node' | 'http2';\n /** Package backing the native engine ('@morojs/engine' or 'uWebSockets.js') */\n enginePackage?: string;\n engineVersion?: string | undefined;\n /** Present when the native engine was requested but the Node server booted */\n fallbackReason?: string | undefined;\n /** Protocols the booted server can speak (observability for app.engine). */\n protocols?: Array<'http/1.1' | 'h2'>;\n}\n\n// Flattened, size-resolved server limits built once and passed to whichever\n// server boots (shared shape lives in http/utils/size.ts). Required fields\n// here (maxBodySize/maxUploadSize/maxConnections/timeouts/multipart) are\n// always populated by buildRuntimeLimits().\ntype RuntimeLimits = HttpRuntimeLimits &\n Required<\n Pick<\n HttpRuntimeLimits,\n 'maxBodySize' | 'maxUploadSize' | 'maxConnections' | 'timeouts' | 'multipart'\n >\n >;\n\n// Internal result of resolveEngineMode()\ntype EngineChoice =\n | {\n kind: 'engine';\n engine: NativeEngineLoadResult;\n requested: 'moro' | 'uws';\n /** Serve HTTP/2 natively via the engine's ALPN (engine caps.http2). */\n h2?: boolean;\n }\n | { kind: 'http2' }\n // explicitEngine: the user explicitly chose a native engine that could not\n // be honored (drives warn-level vs info-level fallback logging).\n | { kind: 'node'; fallbackReason?: string; explicitEngine?: boolean };\n\n// Extended MoroOptions that includes both core options and framework-specific options\nexport interface MoroOptions extends CoreMoroOptions {\n http2?: boolean | Http2ServerOptions;\n https?: {\n key: string | Buffer;\n cert: string | Buffer;\n ca?: string | Buffer;\n };\n websocket?:\n | {\n enabled?: boolean;\n adapter?: WebSocketAdapter;\n compression?: boolean;\n customIdGenerator?: () => string;\n options?: WebSocketAdapterOptions;\n }\n | false;\n config?: any; // Full configuration object\n}\n\nexport class Moro extends EventEmitter {\n private httpServer: MoroHttpServer | UWebSocketsHttpServer | MoroEngineServer | MoroHttp2Server;\n private server: Server | any; // HTTP/2 server type or uWebSockets app\n private websocketAdapter?: WebSocketAdapter | undefined;\n private container: Container;\n private moduleLoader: ModuleLoader;\n private websocketManager?: WebSocketManager;\n private circuitBreakers = new Map<string, CircuitBreaker>();\n private rateLimiters = new Map<string, Map<string, { count: number; resetTime: number }>>();\n // Enterprise-grade event system\n private eventBus: MoroEventBus;\n // Framework logger\n private logger: any;\n private options: MoroOptions;\n private config: any;\n private usingUWebSockets = false;\n // True when the Moro-shaped @morojs/engine backs this app (usingUWebSockets\n // stays reserved for the legacy uWS-API-shaped engine)\n private usingEngine = false;\n private usingHttp2 = false;\n // Which server actually booted (engine = native uWS-style engine)\n private engineInfo: ServerKind = { server: 'node' };\n // WebSocket initialization promise to handle async adapter detection\n private websocketSetupPromise: Promise<void> | null = null;\n\n constructor(options: MoroOptions = {}) {\n super();\n this.options = options;\n this.config = options.config || {};\n\n // Configure global logger based on options\n if (options.logger !== undefined) {\n if (options.logger === false) {\n // Disable logging by setting level to fatal (highest level)\n globalLogger.setLevel('fatal');\n } else if (typeof options.logger === 'object') {\n // Configure logger with provided options\n if (options.logger.level) {\n globalLogger.setLevel(options.logger.level);\n }\n // Additional logger options can be configured here in the future\n // For now, we focus on the level setting which is the most common need\n }\n }\n\n // Initialize framework logger after global configuration\n this.logger = createFrameworkLogger('Core');\n\n // Resolve which HTTP server backs this app: the native engine\n // (@morojs/engine, or a legacy user-installed uWebSockets.js), Node's\n // http server, or the http2 server. The engine module is loaded\n // SYNCHRONOUSLY here - UWebSocketsHttpServer finishes initialization\n // asynchronously, so a load failure (package missing, or no prebuilt\n // binary for this Node ABI) surfacing there would never hit the fallback\n // and the app would hang at listen() bound to nothing.\n const engineChoice = this.resolveEngineMode(options);\n\n // One normalized SSL config + one flattened limits object, built here and\n // projected per-runtime, so a single server.ssl / server.limits flows\n // everywhere regardless of which server boots.\n const ssl = normalizeSSLConfig(this.config.server?.ssl, options.https as any, this.logger);\n const rt = this.buildRuntimeLimits();\n\n if (engineChoice.kind === 'engine') {\n try {\n // The two native engines expose different APIs: @morojs/engine is\n // Moro-shaped (serve/respond, one JS crossing each way), the legacy\n // uWS peer is App()-shaped. Pick the adapter by capability.\n const engineSurface = engineChoice.engine.module?.default || engineChoice.engine.module;\n const caps = engineChoice.engine.capabilities;\n if (\n typeof engineSurface?.serve === 'function' &&\n typeof engineSurface?.respond === 'function'\n ) {\n this.httpServer = new MoroEngineServer({\n ssl,\n limits: rt,\n maxBodySize: rt.maxBodySize,\n maxUploadSize: rt.maxUploadSize,\n engineModule: engineChoice.engine.module,\n // Cluster workers each bind the port; SO_REUSEPORT lets the kernel\n // balance accepts across them (Windows is gated to Node earlier).\n reusePort: this.config.performance?.clustering?.enabled === true,\n ...(caps ? { capabilities: caps } : {}),\n ...(engineChoice.h2 ? { http2Settings: this.resolveH2Settings(options) } : {}),\n });\n this.server = (this.httpServer as MoroEngineServer).getServer();\n this.usingEngine = true;\n } else {\n this.httpServer = new UWebSocketsHttpServer({\n sslInlineOnly: ssl ? !sslForUws(ssl) : false,\n limits: rt,\n maxBodySize: rt.maxBodySize,\n maxUploadSize: rt.maxUploadSize,\n engineModule: engineChoice.engine.module,\n ...(ssl ? { ssl: sslForUws(ssl) } : {}),\n });\n this.server = (this.httpServer as UWebSocketsHttpServer).getApp();\n this.usingUWebSockets = true;\n }\n this.engineInfo = {\n server: 'engine',\n enginePackage: engineChoice.engine.source,\n engineVersion: engineChoice.engine.version,\n protocols: engineChoice.h2 && caps?.http2 ? ['h2', 'http/1.1'] : ['http/1.1'],\n };\n this.logger.info(\n `HTTP engine: ${engineChoice.engine.source}` +\n (engineChoice.engine.version ? ` v${engineChoice.engine.version}` : '') +\n ` (native, Node ABI ${process.versions.modules})`,\n 'ServerInit'\n );\n } catch (error) {\n // Construction failed after a successful module load - unexpected, but\n // never boot nothing: fall back to the Node.js http server.\n const reason = error instanceof Error ? error.message : String(error);\n this.logger.warn(\n `Native engine (${engineChoice.requested}) failed to initialize, falling back to Node.js http.Server. Error: ${reason}`,\n 'ServerInit'\n );\n this.usingUWebSockets = false;\n this.usingEngine = false;\n this.engineInfo = { server: 'node', fallbackReason: reason };\n this.httpServer = new MoroHttpServer({\n limits: rt,\n maxBodySize: rt.maxBodySize,\n maxUploadSize: rt.maxUploadSize,\n ...(ssl && sslIsComplete(ssl) ? { ssl: sslForNode(ssl) } : {}),\n });\n this.server = (this.httpServer as MoroHttpServer).getServer();\n }\n } else if (engineChoice.kind === 'http2') {\n // Use HTTP/2 with proper adapter\n const http2Options: Http2ServerOptions = this.resolveH2Settings(options);\n\n // SSL now flows from the unified config (either shape) as well as the\n // legacy options.https, via the normalizer.\n if (ssl) {\n const nodeSsl = sslForNode(ssl);\n http2Options.key = nodeSsl.key;\n http2Options.cert = nodeSsl.cert;\n if (nodeSsl.ca) http2Options.ca = nodeSsl.ca as any;\n }\n\n this.httpServer = new MoroHttp2Server({\n ...http2Options,\n limits: rt,\n maxBodySize: rt.maxBodySize,\n maxUploadSize: rt.maxUploadSize,\n });\n this.server = (this.httpServer as MoroHttp2Server).getServer();\n this.usingHttp2 = true;\n this.engineInfo = { server: 'http2', protocols: ['h2', 'http/1.1'] };\n this.logger.info('HTTP/2 server created with native adapter', 'ServerInit');\n } else {\n // Use standard HTTP/1.1 (Node), now with optional in-process HTTPS.\n this.httpServer = new MoroHttpServer({\n limits: rt,\n maxBodySize: rt.maxBodySize,\n maxUploadSize: rt.maxUploadSize,\n ...(ssl && sslIsComplete(ssl) ? { ssl: sslForNode(ssl) } : {}),\n });\n this.server = (this.httpServer as MoroHttpServer).getServer();\n this.engineInfo = { server: 'node', fallbackReason: engineChoice.fallbackReason };\n if (engineChoice.fallbackReason) {\n // The default engine simply not being installed is expected (it is an\n // optional dependency) - only an EXPLICIT engine choice that cannot be\n // honored deserves warn-level noise on every boot.\n const message = `Native engine unavailable, using Node.js http.Server - ${engineChoice.fallbackReason}`;\n if (engineChoice.explicitEngine) {\n this.logger.warn(message, 'ServerInit');\n } else {\n this.logger.info(message, 'ServerInit');\n }\n }\n }\n\n this.container = new Container();\n this.moduleLoader = new ModuleLoader(this.container);\n\n // Setup WebSocket adapter if enabled in config OR options\n if (\n this.config.websocket.enabled ||\n (options.websocket && typeof options.websocket === 'object')\n ) {\n // Store the promise so we can await it before using websockets\n this.websocketSetupPromise = this.setupWebSockets(\n mergeWebSocketConfig(this.config.websocket, options.websocket)\n );\n }\n\n // Initialize enterprise event bus\n this.eventBus = new MoroEventBus({\n maxListeners: 200,\n enableMetrics: true,\n isolation: 'module',\n });\n\n // Register event bus in DI container as factory\n this.container.register('eventBus', () => this.eventBus);\n\n this.setupCore();\n }\n\n // Middleware support\n use(middleware: any): this {\n this.httpServer.use(middleware);\n return this;\n }\n\n private setupCore() {\n // PERFORMANCE FIX: Only apply middleware if enabled in config OR options\n\n // Security - check config enabled property OR options.security.*.enabled === true\n if (this.config.security.helmet.enabled || this.options.security?.helmet?.enabled === true) {\n this.httpServer.use(helmet());\n }\n\n if (this.config.security.cors.enabled || this.options.security?.cors?.enabled === true) {\n const corsOptions =\n typeof this.options.cors === 'object'\n ? this.options.cors\n : this.config.security.cors\n ? this.config.security.cors\n : {};\n this.httpServer.use(cors(corsOptions));\n }\n\n // Performance middleware - check config enabled property OR options.performance.*.enabled === true\n if (\n this.config.performance.compression.enabled ||\n this.options.performance?.compression?.enabled === true\n ) {\n const compressionOptions =\n typeof this.options.compression === 'object'\n ? this.options.compression\n : this.config.performance.compression\n ? this.config.performance.compression\n : {};\n this.httpServer.use(compression(compressionOptions));\n }\n\n // Body size limits are enforced inside the HTTP server's parseBody\n // (configured via maxBodySize/maxUploadSize above), which responds 413.\n // No per-request middleware needed - keeps the default chain empty.\n\n // Configure request tracking (ID generation) in HTTP server\n if (this.httpServer.setRequestTracking) {\n this.httpServer.setRequestTracking(this.config.server.requestTracking.enabled);\n }\n\n // Request logging middleware - separate from request tracking (ID generation)\n if (this.config.server.requestLogging.enabled) {\n this.httpServer.use(this.requestLoggingMiddleware());\n }\n\n // Error boundary: handled by the HTTP server's top-level catch in\n // handleRequest (which invokes the registered errorHandler / default 500).\n // The old errorBoundaryMiddleware wrapped a callback-style next() in\n // try/catch, which can never observe downstream errors - it cost a promise\n // per request and caught nothing, so it is no longer installed.\n }\n\n /**\n * Setup WebSocket adapter and manager\n */\n private async setupWebSockets(wsConfig: any): Promise<void> {\n try {\n // The Moro-shaped @morojs/engine has native RFC 6455 WebSocket support:\n // upgrades share the HTTP listen socket, driven by the engine's C++ WS\n // path via the EngineWebSocketAdapter.\n if (this.usingEngine) {\n const { EngineWebSocketAdapter } = await import('./networking/adapters/engine-adapter.js');\n this.websocketAdapter = new EngineWebSocketAdapter();\n await this.websocketAdapter.initialize(this.httpServer, wsConfig.options);\n this.websocketManager = new WebSocketManager(this.websocketAdapter, this.container);\n if (wsConfig.compression) this.websocketAdapter.setCompression(true);\n if (wsConfig.customIdGenerator)\n this.websocketAdapter.setCustomIdGenerator(wsConfig.customIdGenerator);\n this.logger.info(\n 'Engine WebSocket adapter initialized (integrated with @morojs/engine)',\n 'WebSocketSetup'\n );\n return;\n }\n\n // If using uWebSockets HTTP server, automatically use uWebSockets for WebSocket too\n if (this.usingUWebSockets) {\n const { UWebSocketsAdapter } = await import('./networking/adapters/index.js');\n this.websocketAdapter = new UWebSocketsAdapter();\n\n // For uWebSockets, we need to integrate with the existing app\n const uwsHttpServer = this.httpServer as UWebSocketsHttpServer;\n await this.websocketAdapter.initialize(uwsHttpServer.getApp(), wsConfig.options);\n\n this.logger.info(\n 'uWebSockets adapter initialized (integrated with HTTP server)',\n 'WebSocketSetup'\n );\n } else {\n // Use provided adapter or try to auto-detect\n if (wsConfig.adapter && typeof wsConfig.adapter === 'object') {\n this.websocketAdapter = wsConfig.adapter;\n } else {\n this.websocketAdapter = (await this.detectWebSocketAdapter()) || undefined;\n }\n\n if (this.websocketAdapter) {\n await this.websocketAdapter.initialize(this.server, wsConfig.options);\n\n this.logger.info(\n `WebSocket adapter initialized: ${this.websocketAdapter.getAdapterName()}`,\n 'WebSocketSetup'\n );\n }\n }\n\n // Configure adapter features (if adapter was created)\n if (this.websocketAdapter) {\n this.websocketManager = new WebSocketManager(this.websocketAdapter, this.container);\n\n if (wsConfig.compression) {\n this.websocketAdapter.setCompression(true);\n }\n if (wsConfig.customIdGenerator) {\n this.websocketAdapter.setCustomIdGenerator(wsConfig.customIdGenerator);\n }\n }\n } catch (error) {\n this.logger.warn(\n 'WebSocket setup failed, continuing without WebSocket support',\n 'WebSocketSetup',\n { error: error instanceof Error ? error.message : String(error) }\n );\n }\n }\n\n /**\n * Auto-detect available WebSocket adapter\n * Tests if the library is actually installed by checking require.resolve\n */\n private async detectWebSocketAdapter(): Promise<WebSocketAdapter | null> {\n // Check if adapter is specified in config\n if (this.config.websocket?.adapter) {\n const adapterType = this.config.websocket.adapter;\n\n if (adapterType === 'uws') {\n // The uws adapter only works integrated with the native engine's own\n // app (setupWebSockets handles that path before detection runs).\n // Standalone it would register routes on a second, never-listening\n // uWS app - fall through to the Node-compatible adapters instead.\n this.logger.warn(\n \"websocket adapter 'uws' requires a native engine HTTP server \" +\n \"(engine: 'moro' or 'uws') - falling back to socket.io/ws detection\",\n 'AdapterDetection'\n );\n } else if (adapterType === 'socket.io' && isPackageAvailable('socket.io')) {\n try {\n const { SocketIOAdapter } = await import('./networking/adapters/index.js');\n return new SocketIOAdapter();\n } catch {\n this.logger.warn('socket.io specified but failed to load', 'AdapterDetection');\n }\n } else if (adapterType === 'ws' && isPackageAvailable('ws')) {\n try {\n const { WSAdapter } = await import('./networking/adapters/index.js');\n return new WSAdapter();\n } catch {\n this.logger.warn('ws specified but failed to load', 'AdapterDetection');\n }\n }\n }\n\n // Auto-detect. The uws adapter is deliberately NOT probed here: it only\n // works integrated with the native engine's app (the usingUWebSockets\n // branch of setupWebSockets), and with the engine installed by default a\n // resolvable package no longer implies the engine is serving HTTP.\n\n // Try socket.io first\n if (isPackageAvailable('socket.io')) {\n try {\n const { SocketIOAdapter } = await import('./networking/adapters/index.js');\n this.logger.debug('socket.io detected and loaded', 'AdapterDetection');\n return new SocketIOAdapter();\n } catch {\n // Failed to load adapter\n }\n }\n\n // Try native ws library last\n if (isPackageAvailable('ws')) {\n try {\n const { WSAdapter } = await import('./networking/adapters/index.js');\n this.logger.debug('ws detected and loaded', 'AdapterDetection');\n return new WSAdapter();\n } catch {\n // Failed to load adapter\n }\n }\n\n this.logger.warn(\n 'No WebSocket adapter found. Install uWebSockets.js, socket.io, or ws for WebSocket support',\n 'AdapterDetection'\n );\n return null;\n }\n\n private requestLoggingMiddleware() {\n return (req: HttpRequest, res: HttpResponse, next: () => void) => {\n const startTime = Date.now();\n\n res.on('finish', () => {\n const duration = Date.now() - startTime;\n // Include request ID in log if request tracking is enabled\n const idPart = req.requestId ? ` [${req.requestId}]` : '';\n this.logger.info(`${req.method} ${req.path} - ${res.statusCode} - ${duration}ms${idPart}`);\n });\n\n next();\n };\n }\n\n // Public API for adding middleware\n addMiddleware(middleware: any) {\n // Check if it's a MiddlewareInterface object - don't add to globalMiddleware\n // MiddlewareInterface objects should be handled by MiddlewareManager\n if (middleware && typeof middleware === 'object' && middleware.install && middleware.metadata) {\n // This is a MiddlewareInterface - log warning and skip\n this.logger.warn(\n `MiddlewareInterface \"${middleware.metadata.name}\" passed to addMiddleware. ` +\n `This should be handled by MiddlewareManager.install() instead.`,\n 'Middleware'\n );\n return this;\n }\n\n // Standard middleware function - add to HTTP server\n this.httpServer.use(middleware);\n this.emit('middleware:added', { middleware });\n return this;\n }\n\n // Public API for database registration\n registerDatabase(adapter: any) {\n this.container.register('database', () => adapter, true);\n this.emit('database:registered', { adapter });\n return this;\n }\n\n // Public API for accessing the DI container\n getContainer(): Container {\n return this.container;\n }\n\n // Public API for accessing HTTP server\n getHttpServer() {\n return this.httpServer;\n }\n\n // Public API for accessing Socket.IO server\n /**\n * Get WebSocket adapter (for backward compatibility)\n * @deprecated Use getWebSocketAdapter() instead\n */\n getIOServer() {\n if (!this.websocketAdapter) {\n throw new Error(\n 'WebSocket adapter not available. Install socket.io or configure a WebSocket adapter.'\n );\n }\n return this.websocketAdapter;\n }\n\n /**\n * Get the WebSocket adapter\n */\n getWebSocketAdapter(): WebSocketAdapter | undefined {\n return this.websocketAdapter;\n }\n\n /**\n * Ensure WebSocket setup is complete (for async adapter detection)\n */\n async ensureWebSocketReady(): Promise<void> {\n if (this.websocketSetupPromise) {\n await this.websocketSetupPromise;\n }\n }\n\n /**\n * Get the WebSocket manager\n */\n getWebSocketManager(): WebSocketManager | undefined {\n return this.websocketManager;\n }\n\n async loadModule(moduleConfig: ModuleConfig): Promise<void> {\n this.logger.info(\n `Loading module: ${moduleConfig.name}@${moduleConfig.version}`,\n 'ModuleLoader'\n );\n\n // Create module event bus once during module loading\n const moduleEventBus = this.eventBus.createModuleBus(moduleConfig.name);\n\n // Register services in DI container\n this.registerServices(moduleConfig);\n\n // Create module router with resilience patterns\n const router = await this.createModuleRouter(moduleConfig, moduleEventBus);\n\n // Setup WebSocket handlers\n if (moduleConfig.websockets) {\n await this.setupWebSocketHandlers(moduleConfig);\n }\n\n // Mount with versioning and configurable API prefix\n this.logger.debug(`Module version before basePath: \"${moduleConfig.version}\"`, 'ModuleLoader');\n const basePath = buildModuleBasePath(\n this.config.modules?.apiPrefix,\n moduleConfig.version,\n moduleConfig.name\n );\n this.logger.debug(`Generated basePath: \"${basePath}\"`, 'ModuleLoader');\n this.mountRouter(basePath, router);\n\n this.logger.info(`Module loaded: ${moduleConfig.name}`, 'ModuleLoader');\n this.emit('moduleLoaded', moduleConfig.name);\n }\n\n private registerServices(config: ModuleConfig): void {\n if (!config.services) return;\n\n for (const service of config.services) {\n const factory = () => {\n const dependencies = (service.dependencies || []).map(dep => this.container.resolve(dep));\n return new service.implementation(...dependencies);\n };\n\n this.container.register(service.name, factory, service.singleton || false);\n }\n\n // Register functional route handlers if they exist\n if (config.routeHandlers) {\n for (const [name, handler] of Object.entries(config.routeHandlers)) {\n this.container.register(name, () => handler, false);\n }\n }\n\n // Register functional socket handlers if they exist\n if (config.socketHandlers) {\n for (const [name, handler] of Object.entries(config.socketHandlers)) {\n this.container.register(name, () => handler, false);\n }\n }\n }\n\n private async createModuleRouter(config: ModuleConfig, moduleEventBus: any): Promise<Router> {\n const router = new Router();\n\n this.logger.debug(`Creating router for module: ${config.name}`, 'Router');\n this.logger.debug(`Module has ${config.routes?.length || 0} routes`, 'Router');\n\n if (!config.routes) return router;\n\n // Calculate basePath for this module\n const basePath = buildModuleBasePath(\n this.config.modules?.apiPrefix,\n config.version,\n config.name\n );\n\n for (const route of config.routes) {\n this.logger.debug(\n `Adding route: ${route.method} ${route.path} -> ${route.handler}`,\n 'Router'\n );\n const handler = await this.createResilientHandler(route, config, moduleEventBus);\n const method = route.method.toLowerCase() as keyof Router;\n\n // Transform path: module root '/' becomes the basePath, other paths are appended\n const routePath = route.path === '/' ? '' : route.path;\n const fullPath = basePath + routePath;\n\n // Add route to router with FULL PATH (including basePath)\n // This ensures UnifiedRouter sees the complete path like /api/v1.0.0/health\n (router[method] as CallableFunction)(fullPath, handler);\n }\n\n this.logger.debug(`Router created with ${router.getRoutes().length} total routes`, 'Router');\n return router;\n }\n\n private async createResilientHandler(\n route: InternalRouteDefinition,\n config: ModuleConfig,\n moduleEventBus: any\n ) {\n const handlerKey = `${config.name}.${route.handler}`;\n\n return async (req: HttpRequest, res: HttpResponse) => {\n const requestId = req.headers['x-request-id'] || crypto.randomBytes(8).toString('hex');\n\n try {\n // Apply module-level middleware first\n if (config.middleware && config.middleware.length > 0) {\n const moduleMiddlewareExecuted = await this.executeModuleMiddleware(\n config.middleware,\n req,\n res\n );\n if (!moduleMiddlewareExecuted) {\n // Middleware handled response or stopped execution\n return;\n }\n }\n\n // Apply route-level middleware\n if (route.middleware && route.middleware.length > 0) {\n const routeMiddlewareExecuted = await this.executeModuleMiddleware(\n route.middleware,\n req,\n res\n );\n if (!routeMiddlewareExecuted) {\n // Middleware handled response or stopped execution\n return;\n }\n }\n\n // Try to get functional handler first, then fall back to service-based\n let handler;\n let useEnhancedReq = false;\n\n if (config.routeHandlers && config.routeHandlers[route.handler]) {\n // New functional handler\n handler = config.routeHandlers[route.handler];\n useEnhancedReq = true;\n this.logger.debug(`Using functional handler: ${route.handler}`, 'Handler', {\n availableHandlers: Object.keys(config.routeHandlers || {}),\n });\n } else if (this.container.has(config.name)) {\n // Old service-based handler\n const service = this.container.resolve(config.name) as any;\n handler = service[route.handler];\n this.logger.debug(`Using service handler: ${config.name}.${route.handler}`, 'Handler');\n } else {\n this.logger.error(`No handler found for route ${route.method} ${route.path}`, 'Handler', {\n routeHandlers: Object.keys(config.routeHandlers || {}),\n containerHasModule: this.container.has(config.name),\n });\n throw new Error(`Handler ${route.handler} not found for module ${config.name}`);\n }\n\n if (!handler || typeof handler !== 'function') {\n throw new Error(`Handler ${route.handler} is not a function`);\n }\n\n // Check authentication if auth configuration is provided\n if ((route as any).auth) {\n const auth = (req as any).auth;\n const authConfig = (route as any).auth;\n\n if (!auth) {\n res.status(401);\n res.json({\n success: false,\n error: 'Authentication required',\n message: 'You must be logged in to access this resource',\n });\n return;\n }\n\n // Check authentication requirement (default is required unless optional: true)\n if (!authConfig.optional && !auth.isAuthenticated) {\n res.status(401);\n res.json({\n success: false,\n error: 'Authentication required',\n message: 'You must be logged in to access this resource',\n });\n return;\n }\n\n // Skip further checks if not authenticated but optional\n if (!auth.isAuthenticated && authConfig.optional) {\n // Continue to handler\n } else if (auth.isAuthenticated) {\n const user = auth.user;\n\n // Check roles if specified\n if (authConfig.roles && authConfig.roles.length > 0) {\n const userRoles = user?.roles || [];\n const hasRole = authConfig.roles.some((role: string) => userRoles.includes(role));\n\n if (!hasRole) {\n res.status(403);\n res.json({\n success: false,\n error: 'Insufficient permissions',\n message: `Required roles: ${authConfig.roles.join(', ')}`,\n userRoles,\n });\n return;\n }\n }\n\n // Check permissions if specified\n if (authConfig.permissions && authConfig.permissions.length > 0) {\n const userPermissions = user?.permissions || [];\n const hasPermission = authConfig.permissions.every((permission: string) =>\n userPermissions.includes(permission)\n );\n\n if (!hasPermission) {\n res.status(403);\n res.json({\n success: false,\n error: 'Insufficient permissions',\n message: `Required permissions: ${authConfig.permissions.join(', ')}`,\n userPermissions,\n });\n return;\n }\n }\n }\n }\n\n // Validate request if validation schema is provided\n if (route.validation) {\n try {\n // Validate body\n if (route.validation.body && req.body !== undefined) {\n req.body = route.validation.body.parse(req.body);\n }\n\n // Validate query\n if (route.validation.query && req.query !== undefined) {\n req.query = route.validation.query.parse(req.query);\n }\n\n // Validate params\n if (route.validation.params && req.params !== undefined) {\n req.params = route.validation.params.parse(req.params);\n }\n\n // Validate headers\n if (route.validation.headers && req.headers !== undefined) {\n req.headers = route.validation.headers.parse(req.headers);\n }\n\n this.logger.debug('Module route validation passed', 'ModuleValidation', {\n route: `${route.method} ${route.path}`,\n module: config.name,\n });\n } catch (validationError: any) {\n if (validationError.issues) {\n this.logger.debug('Module route validation failed', 'ModuleValidation', {\n route: `${route.method} ${route.path}`,\n module: config.name,\n errors: validationError.issues.length,\n });\n\n // Format errors\n const errors = validationError.issues.map((issue: any) => ({\n field: issue.path.length > 0 ? issue.path.join('.') : 'request',\n message: issue.message,\n code: issue.code,\n path: issue.path,\n }));\n\n // Use route-level or global error handler\n const handler = route.onValidationError || this.config.modules.validation.onError;\n if (handler) {\n try {\n // Determine which field failed (simplified - checks first validation type)\n let failedField: 'body' | 'query' | 'params' | 'headers' = 'body';\n if (route.validation.query) failedField = 'query';\n if (route.validation.params) failedField = 'params';\n if (route.validation.headers) failedField = 'headers';\n\n const errorResponse = handler(errors, {\n request: {\n method: req.method || 'UNKNOWN',\n path: req.path || req.url || '',\n url: req.url || '',\n headers: req.headers || {},\n },\n route: {\n path: route.path,\n method: route.method,\n },\n field: failedField,\n });\n\n if (errorResponse.headers) {\n Object.entries(errorResponse.headers).forEach(([key, value]) => {\n res.setHeader(key, String(value));\n });\n }\n\n res.status(errorResponse.status).json(errorResponse.body);\n return;\n } catch (handlerError) {\n this.logger.error('Error in validation error handler', 'ValidationError', {\n error:\n handlerError instanceof Error ? handlerError.message : String(handlerError),\n });\n\n // Fallback if handler throws\n res.status(500).json({\n success: false,\n error: 'Internal error while handling validation error',\n requestId,\n });\n return;\n }\n }\n\n // Default error response if no handler\n res.status(400).json({\n success: false,\n error: 'Validation failed',\n details: errors,\n requestId,\n });\n return;\n }\n throw validationError;\n }\n }\n\n // Prepare request object based on handler type\n let requestToUse: any = req;\n if (useEnhancedReq) {\n // Use the pre-created module event bus\n // IMPORTANT: Spread operator doesn't copy getters from IncomingMessage\n // so we need to explicitly pass critical properties like headers\n requestToUse = {\n ...req,\n headers: req.headers, // Explicitly preserve headers\n params: req.params,\n query: req.query,\n body: req.body,\n path: req.path,\n method: req.method,\n url: req.url,\n ip: req.ip,\n requestId: req.requestId,\n cookies: req.cookies,\n database: this.container.has('database')\n ? this.container.resolve('database')\n : undefined,\n events: moduleEventBus, // Use pre-created event bus\n app: {\n get: (key: string) => (key === 'io' ? this.websocketAdapter : undefined),\n },\n };\n this.logger.debug(`Database available: ${!!requestToUse.database}`, 'Handler', {\n moduleId: config.name,\n });\n }\n\n // Execute with circuit breaker\n const circuitBreaker = this.getCircuitBreaker(handlerKey);\n const result = await circuitBreaker.execute(() => handler(requestToUse, res));\n\n // For functional handlers, ensure the response is sent\n if (useEnhancedReq && result !== undefined && result !== null && !res.headersSent) {\n this.logger.debug(`Sending functional handler result`, 'Handler', {\n result,\n });\n res.json(result);\n }\n\n return result;\n } catch (error: any) {\n this.logger.error(`Route handler error [${requestId}]: ${error.message}`, 'Handler', {\n requestId,\n handlerKey,\n stack: error.stack,\n });\n if (!res.headersSent) {\n res.status(500).json({\n success: false,\n error: 'Internal server error',\n requestId,\n });\n }\n throw error;\n }\n };\n }\n\n /**\n * Execute module middleware (resolve strings or use functions directly)\n * Returns false if middleware stopped execution, true to continue\n */\n private async executeModuleMiddleware(\n middleware: any[],\n req: HttpRequest,\n res: HttpResponse\n ): Promise<boolean> {\n // Get middleware manager from container (may not exist in all contexts)\n let middlewareManager: any = null;\n try {\n middlewareManager = this.container.resolve('middlewareManager');\n } catch {\n // Middleware manager not registered, will fall back to built-in only\n }\n\n for (const mw of middleware) {\n // If middleware is a string, resolve it from built-in or installed middleware\n let resolvedMiddleware: any;\n\n if (typeof mw === 'string') {\n // Try to resolve from middleware manager\n if (middlewareManager) {\n resolvedMiddleware = middlewareManager.get(mw);\n }\n\n if (!resolvedMiddleware) {\n // Try to resolve from built-in middleware\n const { builtInMiddleware } = await import('./middleware/built-in/index.js');\n resolvedMiddleware = (builtInMiddleware as any)[mw];\n }\n\n if (!resolvedMiddleware) {\n this.logger.warn(`Middleware '${mw}' not found, skipping`, 'ModuleMiddleware');\n continue;\n }\n } else if (typeof mw === 'function') {\n // Middleware is already a function\n resolvedMiddleware = mw;\n } else {\n this.logger.warn(`Invalid middleware type: ${typeof mw}, skipping`, 'ModuleMiddleware');\n continue;\n }\n\n // Execute the middleware\n try {\n let middlewareContinue = true;\n\n // Check if it's a MiddlewareInterface (needs to be converted to standard middleware)\n if (\n resolvedMiddleware &&\n typeof resolvedMiddleware === 'object' &&\n typeof resolvedMiddleware.install === 'function'\n ) {\n // This is a MiddlewareInterface, we can't execute it directly\n // These should be installed globally via app.use() or via the middleware manager\n this.logger.warn(\n `Middleware '${typeof mw === 'string' ? mw : 'unknown'}' is a MiddlewareInterface and cannot be used directly in module middleware. Use app.use() to install it globally instead.`,\n 'ModuleMiddleware'\n );\n continue;\n }\n\n await new Promise<void>((resolve, reject) => {\n const next = () => {\n middlewareContinue = true;\n resolve();\n };\n\n const result = resolvedMiddleware(req, res, next);\n\n // Handle async middleware\n if (result && typeof result.then === 'function') {\n result\n .then(() => {\n if (middlewareContinue) {\n resolve();\n }\n })\n .catch(reject);\n }\n });\n\n // Check if response was sent\n if (res.headersSent) {\n return false; // Stop execution\n }\n } catch (error: any) {\n this.logger.error(`Module middleware error: ${error.message}`, 'ModuleMiddleware', {\n middleware: typeof mw === 'string' ? mw : mw.name || 'anonymous',\n stack: error.stack,\n });\n // Let error propagate\n throw error;\n }\n }\n\n return true; // Continue to handler\n }\n\n private mountRouter(basePath: string, router: Router): void {\n this.logger.debug(`Mounting router for basePath: ${basePath}`, 'Router');\n\n // Register module routes directly with http-server\n // Routes are already stored with full paths (basePath + route.path) from createModuleRouter\n const routes = router.getRoutes();\n for (const route of routes) {\n // Routes already have full paths, no need to transform\n const fullPath = route.path;\n const method = route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete' | 'patch';\n\n this.logger.debug(`Registering module route: ${route.method} ${fullPath}`, 'Router');\n\n // Register route directly with http-server using its routing methods\n // Cast to any to handle different server types (MoroHttpServer, UWebSocketsHttpServer, MoroHttp2Server)\n const server = this.httpServer as any;\n if (server[method] && typeof server[method] === 'function') {\n server[method](fullPath, route.handler);\n }\n }\n\n this.logger.info(`Router mounted for ${basePath} with ${routes.length} routes`, 'Router');\n }\n\n private finalModuleHandlerSetup = false;\n\n // Setup final module handler - NO LONGER NEEDED\n // Module routes are now registered directly with http-server via mountRouter()\n setupFinalModuleHandler(): void {\n // Prevent duplicate setup\n if (this.finalModuleHandlerSetup) {\n this.logger.debug('Final module handler already set up, skipping', 'ModuleSystem');\n return;\n }\n this.finalModuleHandlerSetup = true;\n\n this.logger.info(\n 'Module routes registered directly with http-server (no deferred handling needed)',\n 'ModuleSystem'\n );\n\n // No middleware needed - routes are in the http-server route table\n }\n\n private async setupWebSocketHandlers(config: ModuleConfig): Promise<void> {\n if (!this.websocketAdapter || !this.websocketManager) {\n this.logger.warn(\n `Module ${config.name} defines WebSocket handlers but no WebSocket adapter is available`,\n 'WebSocketSetup'\n );\n return;\n }\n\n const namespace = this.websocketAdapter.createNamespace(`/${config.name}`);\n\n for (const wsConfig of config.websockets || []) {\n await this.websocketManager.registerHandler(namespace, wsConfig, config);\n }\n }\n\n private checkRateLimit(\n identifier: string,\n rateLimit: { requests: number; window: number }\n ): boolean {\n if (!this.rateLimiters.has(identifier)) {\n this.rateLimiters.set(identifier, new Map());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const handlerLimiter = this.rateLimiters.get(identifier)!;\n const now = Date.now();\n const limit = handlerLimiter.get(identifier);\n\n if (!limit || now > limit.resetTime) {\n handlerLimiter.set(identifier, {\n count: 1,\n resetTime: now + rateLimit.window,\n });\n return true;\n }\n\n if (limit.count >= rateLimit.requests) {\n return false;\n }\n\n limit.count++;\n return true;\n }\n\n /**\n * Which HTTP server backs this app, which package provides it, and the\n * fallback reason when the native engine was requested but unavailable.\n */\n getServerKind(): ServerKind {\n return { ...this.engineInfo };\n }\n\n // Decide which HTTP server to construct. Engine values:\n // 'moro' (default) - Moro's own native engine (@morojs/engine)\n // 'uws' - opt in to uWebSockets.js\n // 'node' - the Node.js http server (no native engine)\n // A chosen native engine that cannot load on this platform/Node ABI (e.g.\n // no prebuilt binary) silently degrades to the Node.js http server and logs\n // why - the app never fails to boot. The engine load happens here,\n // synchronously; the CJS module cache shares the instance with the server.\n private resolveEngineMode(options: MoroOptions): EngineChoice {\n const server = this.config.server || {};\n // Explicit engine wins. The deprecated useUWebSockets:true counts as an\n // explicit 'uws' choice - it always beat http2 before the engine option\n // existed, and silently changing that transport on upgrade would break\n // existing apps.\n let engineExplicit = server.engine !== undefined || server.useUWebSockets === true;\n let mode: 'moro' | 'node' | 'uws' = server.engine ?? (server.useUWebSockets ? 'uws' : 'moro');\n\n // A user-provided uWS adapter INSTANCE implies the uWS engine when the\n // engine wasn't chosen explicitly - otherwise the instance would be\n // silently discarded in favor of the default engine's WS bridge.\n const wsAdapterOption =\n options.websocket && typeof options.websocket === 'object'\n ? (options.websocket as any).adapter\n : undefined;\n const isUwsAdapterInstance =\n wsAdapterOption &&\n typeof wsAdapterOption.getAdapterName === 'function' &&\n wsAdapterOption.getAdapterName() === 'uWebSockets.js';\n if (isUwsAdapterInstance) {\n if (!engineExplicit && mode === 'moro') {\n mode = 'uws';\n engineExplicit = true;\n } else if (mode === 'moro') {\n this.logger.warn(\n \"A uWebSockets.js adapter instance was provided but engine: 'moro' is set - \" +\n 'the instance is superseded by the Moro engine WebSocket bridge',\n 'ServerInit'\n );\n }\n }\n\n // HTTP/2 is wanted via either the top-level option or server.http2 config.\n const wantH2 = Boolean(options.http2 ?? this.config.server?.http2);\n\n if (mode === 'node') {\n // The Node runtime serves HTTP/2 via the separate MoroHttp2Server.\n return wantH2 ? { kind: 'http2' } : { kind: 'node' };\n }\n\n // Clustering forks workers that each bind the port themselves; the native\n // engines rely on SO_REUSEPORT for that, which Windows lacks. The Node\n // server shares the listener over cluster IPC instead, so fall back there\n // rather than letting workers 2..N crash with EADDRINUSE.\n if (this.config.performance?.clustering?.enabled === true && process.platform === 'win32') {\n return {\n kind: 'node',\n fallbackReason:\n 'clustering on Windows requires the Node.js http server (SO_REUSEPORT is unavailable)',\n explicitEngine: engineExplicit,\n };\n }\n\n // Environments where a native engine cannot apply (edge runtime, an\n // explicit ws/socket.io adapter that needs a Node http.Server)\n const gate = this.nativeEngineGate(options);\n if (gate) {\n // The native engine can't apply here - but http2 still can, and works\n // fine with the ws/socket.io adapters that trigger the gate, so honor an\n // explicit http2 opt-in rather than silently dropping it.\n return wantH2 ? { kind: 'http2' } : { kind: 'node', fallbackReason: gate };\n }\n\n // Load the specific package for the chosen engine - 'moro' never silently\n // uses uWS and vice-versa; each falls back only to Node. The load happens\n // BEFORE the http2 decision so we can feature-detect native ALPN h2.\n const pkg = mode === 'uws' ? 'uWebSockets.js' : '@morojs/engine';\n const loadErrors: string[] = [];\n const engine = loadNativeEngine({ candidates: [pkg], collectErrors: loadErrors });\n if (!engine) {\n // Prefer this load's own failure detail (missing prebuilt binary, ABI\n // mismatch, ...); only degrade to \"not installed\" when there is none.\n const detail =\n (loadErrors.length ? loadErrors : getNativeEngineLoadErrors())\n .map(e => e.split('\\n')[0])\n .join('; ') || `${pkg} is not installed`;\n // An explicit http2 opt-in survives the engine's absence - falling all\n // the way to plain HTTP/1.1 would silently drop the user's choice.\n if (wantH2) {\n this.logger.warn(\n `Native engine (${mode}) unavailable (${detail}) - using the configured http2 server`,\n 'ServerInit'\n );\n return { kind: 'http2' };\n }\n return { kind: 'node', fallbackReason: detail, explicitEngine: engineExplicit };\n }\n\n // HTTP/2 decision, now that the engine is loaded and its capabilities known.\n if (wantH2) {\n const canH2 = engine.capabilities?.http2 === true;\n if (mode === 'uws') {\n // uWebSockets.js does not serve HTTP/2 through this integration.\n this.logger.warn(\n \"engine: 'uws' does not serve HTTP/2 - serving HTTP/1.1 (use engine: \" +\n \"'moro' with an h2-capable build, or engine: 'node' for the http2 server)\",\n 'ServerInit'\n );\n return { kind: 'engine', engine, requested: mode };\n }\n if (canH2) {\n // The Moro engine speaks ALPN h2 + http/1.1 on one TLS port.\n return { kind: 'engine', engine, requested: mode, h2: true };\n }\n // Engine can't do h2. An explicit engine choice keeps the engine (h1);\n // the default engine yields to the dedicated MoroHttp2Server.\n if (engineExplicit) {\n this.logger.warn(\n `engine: '${mode}' (build ${engine.version ?? 'unknown'}) does not support ` +\n 'HTTP/2 - serving HTTP/1.1. Upgrade @morojs/engine or use engine: ' +\n \"'node' for the http2 server.\",\n 'ServerInit'\n );\n return { kind: 'engine', engine, requested: mode };\n }\n return { kind: 'http2' };\n }\n\n return { kind: 'engine', engine, requested: mode };\n }\n\n // Reasons the native engine should not back this app even when loadable:\n // edge/serverless runtimes never use a listening server, and the ws /\n // socket.io adapters attach to a real Node http.Server for upgrades.\n private nativeEngineGate(options: MoroOptions): string | null {\n const runtimeType = (options as any).runtime?.type;\n if (runtimeType && runtimeType !== 'node') {\n return `runtime '${runtimeType}' does not use a Node listening server`;\n }\n\n const optionsAdapter =\n options.websocket && typeof options.websocket === 'object'\n ? options.websocket.adapter\n : undefined;\n if (optionsAdapter && typeof optionsAdapter.getAdapterName === 'function') {\n const name = optionsAdapter.getAdapterName();\n if (name && name !== 'uWebSockets.js') {\n return `websocket adapter '${name}' requires the Node.js http server`;\n }\n }\n\n const configuredAdapter = this.config.websocket?.adapter;\n if (typeof configuredAdapter === 'string' && configuredAdapter !== 'uws') {\n return `websocket adapter '${configuredAdapter}' requires the Node.js http server`;\n }\n\n return null;\n }\n\n /**\n * Parse size string (e.g., \"10mb\", \"5gb\") to bytes.\n * Delegates to the shared utility so every server + config path agrees.\n */\n private parseSizeToBytes(size: string | number): number {\n return parseSizeToBytes(size);\n }\n\n /**\n * Merge HTTP/2 settings from config.server.http2 and the top-level\n * options.http2 (options win — the highest-precedence, back-compat path)\n * into one Http2ServerOptions used by both the engine (ALPN h2) and the\n * MoroHttp2Server fallback.\n */\n private resolveH2Settings(options: MoroOptions): Http2ServerOptions {\n const out: Http2ServerOptions = {};\n const cfg = this.config.server?.http2;\n if (cfg && typeof cfg === 'object') {\n if (cfg.allowHTTP1 !== undefined) out.allowHTTP1 = cfg.allowHTTP1;\n if (cfg.maxSessionMemory !== undefined) out.maxSessionMemory = cfg.maxSessionMemory;\n if (cfg.settings) out.settings = { ...cfg.settings };\n }\n if (typeof options.http2 === 'object') {\n Object.assign(out, options.http2);\n if ((options.http2 as any).settings) {\n out.settings = { ...(out.settings ?? {}), ...(options.http2 as any).settings };\n }\n }\n if (out.allowHTTP1 === undefined) out.allowHTTP1 = true;\n return out;\n }\n\n /**\n * Resolve every size string in server.limits/timeouts/backlog into one flat\n * object of bytes/ms, built once and passed to whichever server boots. A\n * value left undefined means \"use the server's own documented default\".\n */\n private buildRuntimeLimits(): RuntimeLimits {\n const s = this.config.server ?? ({} as any);\n const limits = s.limits ?? {};\n const timeouts = s.timeouts ?? {};\n const size = (v: unknown): number | undefined =>\n v === undefined ? undefined : parseSizeToBytes(v as string | number);\n const multipart = limits.multipart ?? {};\n const maxPartHeaderBytes = size(multipart.maxPartHeaderBytes);\n const maxFileSize = size(multipart.maxFileSize);\n // undefined = use that server's own documented default, so omit the key\n // entirely rather than pass an explicit undefined (exactOptionalPropertyTypes).\n const maxHeaderSize = size(limits.maxHeaderSize);\n const wsMaxMessageSize = size(\n limits.wsMaxMessageSize ?? this.config.websocket?.options?.maxPayloadLength\n );\n const wsBackpressureLimit = size(limits.wsBackpressureLimit);\n const writeHighWaterMark = size(limits.writeHighWaterMark);\n const maxPendingBytes = size(limits.maxPendingBytes);\n return {\n maxBodySize: parseSizeToBytes(s.bodySizeLimit ?? '10mb'),\n maxUploadSize: parseSizeToBytes(s.maxUploadSize ?? '100mb'),\n maxConnections: typeof s.maxConnections === 'number' ? s.maxConnections : 0,\n backlog: s.backlog,\n timeouts: {\n request: timeouts.request,\n idle: timeouts.idle,\n keepAlive: timeouts.keepAlive,\n headers: timeouts.headers,\n },\n maxHeaders: limits.maxHeaders,\n ...(maxHeaderSize !== undefined ? { maxHeaderSize } : {}),\n ...(wsMaxMessageSize !== undefined ? { wsMaxMessageSize } : {}),\n ...(wsBackpressureLimit !== undefined ? { wsBackpressureLimit } : {}),\n ...(writeHighWaterMark !== undefined ? { writeHighWaterMark } : {}),\n ...(maxPendingBytes !== undefined ? { maxPendingBytes } : {}),\n multipart: {\n maxParts: multipart.maxParts,\n maxFiles: multipart.maxFiles,\n ...(maxPartHeaderBytes !== undefined ? { maxPartHeaderBytes } : {}),\n ...(maxFileSize !== undefined ? { maxFileSize } : {}),\n },\n };\n }\n\n private getCircuitBreaker(key: string): CircuitBreaker {\n if (!this.circuitBreakers.has(key)) {\n this.circuitBreakers.set(\n key,\n new CircuitBreaker({\n failureThreshold: 5,\n resetTimeout: 30000,\n monitoringPeriod: 10000,\n })\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.circuitBreakers.get(key)!;\n }\n\n listen(port: number, callback?: () => void): void;\n listen(port: number, host: string, callback?: () => void): void;\n listen(port: number, host?: string | (() => void), callback?: () => void): void {\n if (typeof host === 'function') {\n this.httpServer.listen(port, host);\n } else if (host) {\n this.httpServer.listen(port, host, callback);\n } else {\n this.httpServer.listen(port, callback);\n }\n }\n\n // Compatibility method for existing controllers\n set(key: string, _value: any): void {\n if (key === 'io') {\n // Deprecated: Use websocket adapter instead\n this.logger.warn(\n 'Setting io instance is deprecated. Use websocket adapter configuration.',\n 'Deprecated'\n );\n }\n }\n\n get(key: string): any {\n if (key === 'io') {\n return this.websocketAdapter;\n }\n return undefined;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/core/graphql/adapter.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/core/graphql/adapter.ts"],"names":[],"mappings":"","sourcesContent":["// GraphQL Adapter Interface\nimport type { GraphQLOptions, GraphQLContext } from './types.js';\n\n/**\n * GraphQL adapter interface\n * Adapters handle schema building, query execution, and introspection\n */\nexport interface GraphQLAdapter {\n /**\n * Initialize the adapter with schema and options\n */\n initialize(options: GraphQLOptions): Promise<void>;\n\n /**\n * Execute a GraphQL query/mutation\n */\n execute(request: GraphQLRequest): Promise<GraphQLResponse>;\n\n /**\n * Get schema introspection data\n */\n getIntrospection(): any;\n\n /**\n * Get schema SDL (Schema Definition Language)\n */\n getSchemaSDL(): string;\n\n /**\n * Get the underlying schema object\n */\n getSchema(): any;\n\n /**\n * Get adapter statistics\n */\n getStats(): GraphQLStats;\n\n /**\n * Cleanup resources\n */\n cleanup(): Promise<void>;\n}\n\n/**\n * GraphQL request\n */\nexport interface GraphQLRequest {\n query: string;\n variables?: Record<string, any>;\n operationName?: string;\n context: GraphQLContext;\n}\n\n/**\n * GraphQL response\n */\nexport interface GraphQLResponse {\n data?: any;\n errors?: any[];\n extensions?: Record<string, any>;\n}\n\n/**\n * GraphQL adapter statistics\n */\nexport interface GraphQLStats {\n schema: {\n queries: number;\n mutations: number;\n subscriptions: number;\n types: number;\n };\n jit?: {\n enabled: boolean;\n cacheSize: number;\n };\n}\n\n/**\n * GraphQL adapter options\n * Can be extended by specific adapter implementations\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface GraphQLAdapterOptions extends GraphQLOptions {}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"graphql-js-adapter.js","sourceRoot":"","sources":["../../../../src/core/graphql/adapters/graphql-js-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphql-js-adapter.js","sourceRoot":"","sources":["../../../../src/core/graphql/adapters/graphql-js-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["// GraphQL.js Adapter - Default adapter using graphql-js\nimport { resolveUserPackage } from '../../utilities/package-utils.js';\nimport { createFrameworkLogger } from '../../logger/index.js';\nimport type {\n GraphQLAdapter,\n GraphQLRequest,\n GraphQLResponse,\n GraphQLStats,\n GraphQLAdapterOptions,\n} from '../adapter.js';\nimport type { GraphQLOptions, GraphQLContext } from '../types.js';\nimport type { HttpRequest, HttpResponse } from '../../../types/http.js';\n\nconst logger = createFrameworkLogger('GraphQLAdapter');\n\n/**\n * GraphQL.js adapter implementation\n * Uses the official graphql-js library with optional JIT compilation\n */\nexport class GraphQLJsAdapter implements GraphQLAdapter {\n private schema: any;\n private graphql: any;\n private jitEnabled = false;\n private jitCompiler: any = null;\n private jitCache = new Map<string, any>();\n private jitCacheTTL = 300000; // 5 minutes default\n private jitCacheTimeouts = new Map<string, NodeJS.Timeout>();\n private contextFactory?: (\n req: HttpRequest,\n res: HttpResponse\n ) => GraphQLContext | Promise<GraphQLContext>;\n\n async initialize(options: GraphQLAdapterOptions): Promise<void> {\n try {\n // Dynamically load graphql from user's node_modules\n const graphqlPath = resolveUserPackage('graphql');\n this.graphql = await import(graphqlPath);\n\n logger.info('GraphQL.js adapter loaded', 'Adapter');\n\n // Build schema\n await this.buildSchema(options);\n\n // Initialize JIT if enabled\n if (options.enableJIT !== false) {\n await this.initializeJIT(options);\n }\n\n // Store context factory\n if (options.context) {\n this.contextFactory = options.context;\n }\n\n this.jitCacheTTL = options.jitCacheTTL || 300000; // 5 minutes default\n\n logger.info('GraphQL.js adapter initialized', 'Adapter', {\n jitEnabled: this.jitEnabled,\n });\n } catch (error) {\n logger.error('Failed to initialize GraphQL.js adapter', 'Adapter', { error });\n throw new Error(\n 'GraphQL.js adapter initialization failed.\\n' +\n 'Install graphql with: npm install graphql\\n' +\n `Error: ${error}`\n );\n }\n }\n\n async execute(request: GraphQLRequest): Promise<GraphQLResponse> {\n const { query, variables, operationName, context } = request;\n\n try {\n // Parse query\n const { parse, validate } = this.graphql;\n const document = parse(query);\n\n // Validate query\n const errors = validate(this.schema, document);\n if (errors.length > 0) {\n return { errors };\n }\n\n // Execute with JIT if enabled\n if (this.jitEnabled && this.jitCompiler) {\n return await this.executeWithJIT(document, operationName, variables, context);\n }\n\n // Standard execution\n const { execute } = this.graphql;\n return await execute({\n schema: this.schema,\n document,\n rootValue: null,\n contextValue: context,\n variableValues: variables,\n operationName,\n });\n } catch (error) {\n logger.error('GraphQL execution error', 'Execution', { error });\n return {\n errors: [\n {\n message: error instanceof Error ? error.message : 'Unknown error',\n extensions: { stack: error instanceof Error ? error.stack : undefined },\n },\n ],\n };\n }\n }\n\n getIntrospection(): any {\n const { getIntrospectionQuery, graphqlSync } = this.graphql;\n const query = getIntrospectionQuery();\n return graphqlSync({\n schema: this.schema,\n source: query,\n });\n }\n\n getSchemaSDL(): string {\n const { printSchema } = this.graphql;\n return printSchema(this.schema);\n }\n\n getSchema(): any {\n return this.schema;\n }\n\n getStats(): GraphQLStats {\n const typeMap = this.schema.getTypeMap();\n const queryType = this.schema.getQueryType();\n const mutationType = this.schema.getMutationType();\n const subscriptionType = this.schema.getSubscriptionType();\n\n return {\n schema: {\n queries: queryType ? Object.keys(queryType.getFields() || {}).length : 0,\n mutations: mutationType ? Object.keys(mutationType.getFields() || {}).length : 0,\n subscriptions: subscriptionType\n ? Object.keys(subscriptionType.getFields() || {}).length\n : 0,\n types: Object.keys(typeMap).length,\n },\n jit: this.jitEnabled\n ? {\n enabled: true,\n cacheSize: this.jitCache.size,\n }\n : { enabled: false, cacheSize: 0 },\n };\n }\n\n async cleanup(): Promise<void> {\n // Clear JIT cache and timeouts\n for (const timeout of this.jitCacheTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.jitCacheTimeouts.clear();\n this.jitCache.clear();\n logger.info('GraphQL.js adapter cleaned up', 'Adapter');\n }\n\n private async buildSchema(options: GraphQLOptions): Promise<void> {\n if (options.schema) {\n this.schema = options.schema;\n return;\n }\n\n if (options.typeDefs) {\n const { buildSchema } = this.graphql;\n const typeDefs = Array.isArray(options.typeDefs)\n ? options.typeDefs.join('\\n\\n')\n : options.typeDefs;\n this.schema = buildSchema(typeDefs);\n\n // Apply resolvers\n if (options.resolvers) {\n this.applyResolvers(options.resolvers);\n }\n return;\n }\n\n if (options.pothosSchema) {\n // Handle Pothos schema\n if (typeof options.pothosSchema.toSchema === 'function') {\n this.schema = options.pothosSchema.toSchema();\n } else {\n this.schema = options.pothosSchema;\n }\n return;\n }\n\n throw new Error('No schema provided');\n }\n\n private applyResolvers(resolvers: any): void {\n const typeMap = this.schema.getTypeMap();\n\n for (const [typeName, typeResolvers] of Object.entries(resolvers)) {\n const type = typeMap[typeName];\n if (!type || !('getFields' in type)) continue;\n\n const fields = (type as any).getFields();\n for (const [fieldName, resolver] of Object.entries(typeResolvers as Record<string, any>)) {\n const field = fields[fieldName];\n if (!field) continue;\n\n if (typeof resolver === 'function') {\n field.resolve = resolver;\n } else if (resolver && typeof resolver === 'object' && 'subscribe' in resolver) {\n field.subscribe = resolver.subscribe;\n if (resolver.resolve) {\n field.resolve = resolver.resolve;\n }\n }\n }\n }\n }\n\n private async initializeJIT(_options: GraphQLOptions): Promise<void> {\n try {\n const jitPath = resolveUserPackage('graphql-jit');\n const jitModule = await import(jitPath);\n this.jitCompiler = jitModule;\n this.jitEnabled = true;\n logger.info('GraphQL-JIT enabled for 5-10x performance boost', 'JIT');\n } catch {\n logger.debug('graphql-jit not available, using standard execution', 'JIT');\n }\n }\n\n private async executeWithJIT(\n document: any,\n operationName: string | null | undefined,\n variables: Record<string, any> | null | undefined,\n context: GraphQLContext\n ): Promise<GraphQLResponse> {\n const cacheKey = `${operationName || 'default'}`;\n let compiled = this.jitCache.get(cacheKey);\n\n if (!compiled) {\n compiled = this.jitCompiler.compileQuery(this.schema, document, operationName || undefined);\n\n if (this.jitCompiler.isCompiledQuery(compiled)) {\n this.jitCache.set(cacheKey, compiled);\n\n // Clear any existing timeout\n const existingTimeout = this.jitCacheTimeouts.get(cacheKey);\n if (existingTimeout) {\n clearTimeout(existingTimeout);\n }\n\n // Set new timeout\n const timeout = setTimeout(() => {\n this.jitCache.delete(cacheKey);\n this.jitCacheTimeouts.delete(cacheKey);\n }, this.jitCacheTTL);\n\n this.jitCacheTimeouts.set(cacheKey, timeout);\n }\n }\n\n if (this.jitCompiler.isCompiledQuery(compiled)) {\n return await compiled.query(null, context, variables || {});\n }\n\n // Fallback to standard execution\n const { execute } = this.graphql;\n return await execute({\n schema: this.schema,\n document,\n rootValue: null,\n contextValue: context,\n variableValues: variables,\n operationName,\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/core/graphql/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/core/graphql/core.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAKpE,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,WAAW;IACd,OAAO,CAAkB;IACzB,OAAO,CAAiB;IACxB,cAAc,CAER;IAEd,YAAY,OAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,gBAAgB,CAAC,CAAC;QAE7D,yCAAyC;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,gBAAgB,EAAE,CAAC;QAE9D,qBAAqB;QACrB,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,gBAAgB,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,GAAgB,EAAE,GAAiB;QACrD,gBAAgB;QAChB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1D,sFAAsF;YACtF,IAAI,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;gBACpD,cAAc,CAAC,OAAO,GAAG,aAAa,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,OAAO,GAAG,aAAa,CAAC;gBACvC,cAAc,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;gBACrC,cAAc,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,OAAO,GAAG;gBACvB,OAAO,EAAE,GAAG;gBACZ,QAAQ,EAAE,GAAG;aACd,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,IACE,IAAI,CAAC,OAAO,CAAC,mBAAmB,KAAK,KAAK;YAC1C,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,KAAK,CAAC,EAC/C,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC;aAC3D,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE1D,gBAAgB;QAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;QAC7C,OAAO;;;;;;;;;;;;;;;qDAe0C,IAAI;;;;;;KAMpD,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,GAAgB;QACzC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAI,GAAG,CAAC,KAAa,EAAE,KAAK,CAAC;YACxC,MAAM,SAAS,GAAI,GAAG,CAAC,KAAa,EAAE,SAAS,CAAC;YAChD,MAAM,aAAa,GAAI,GAAG,CAAC,KAAa,EAAE,aAAa,CAAC;YAExD,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YAExB,qDAAqD;YACrD,IAAI,eAAe,GAAG,SAAS,CAAC;YAChC,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAClC,IAAI,CAAC;wBACH,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC1C,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,eAAe,GAAG,SAAS,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,OAAO;gBACL,KAAK;gBACL,SAAS,EAAE,eAAe;gBAC1B,aAAa;gBACb,OAAO,EAAE,EAAoB;aAC9B,CAAC;QACJ,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAW,CAAC;YAC7B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YAEtC,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,OAAO,EAAE,EAAoB;aAC9B,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,KAAa;QACxC,OAAO,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAuB;IACvD,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC","sourcesContent":["// GraphQL Core - Adapter-based GraphQL system\nimport { createFrameworkLogger } from '../logger/index.js';\nimport { GraphQLJsAdapter } from './adapters/graphql-js-adapter.js';\nimport type { GraphQLAdapter, GraphQLRequest } from './adapter.js';\nimport type { HttpRequest, HttpResponse } from '../../types/http.js';\nimport type { GraphQLOptions, GraphQLContext } from './types.js';\n\nconst logger = createFrameworkLogger('GraphQL');\n\n/**\n * GraphQL Core - Manages GraphQL adapter and handles HTTP requests\n */\nexport class GraphQLCore {\n private adapter!: GraphQLAdapter;\n private options: GraphQLOptions;\n private contextFactory?:\n | ((req: HttpRequest, res: HttpResponse) => GraphQLContext | Promise<GraphQLContext>)\n | undefined;\n\n constructor(options: GraphQLOptions) {\n this.options = options;\n this.contextFactory = options.context;\n }\n\n /**\n * Initialize GraphQL system with adapter\n */\n async initialize(): Promise<void> {\n logger.info('Initializing GraphQL system', 'Initialization');\n\n // Create adapter (default to GraphQL.js)\n this.adapter = this.options.adapter || new GraphQLJsAdapter();\n\n // Initialize adapter\n await this.adapter.initialize(this.options);\n\n logger.info('GraphQL system initialized successfully', 'Initialization');\n }\n\n /**\n * Handle HTTP request for GraphQL endpoint\n */\n async handleRequest(req: HttpRequest, res: HttpResponse): Promise<void> {\n // Parse request\n const graphqlRequest = await this.parseRequest(req);\n if (!graphqlRequest) {\n res.status(400).json({ errors: [{ message: 'Invalid GraphQL request' }] });\n return;\n }\n\n // Build context\n if (this.contextFactory) {\n const customContext = await this.contextFactory(req, res);\n // Ensure request/response are present without mutating original (only add if missing)\n if (customContext.request && customContext.response) {\n graphqlRequest.context = customContext;\n } else {\n graphqlRequest.context = customContext;\n graphqlRequest.context.request = req;\n graphqlRequest.context.response = res;\n }\n } else {\n graphqlRequest.context = {\n request: req,\n response: res,\n };\n }\n\n // Check introspection\n if (\n this.options.enableIntrospection === false &&\n this.isIntrospectionQuery(graphqlRequest.query)\n ) {\n res.status(400).json({\n errors: [{ message: 'GraphQL introspection is disabled' }],\n });\n return;\n }\n\n // Execute query\n const result = await this.adapter.execute(graphqlRequest);\n\n // Send response\n res.status(200).json(result);\n }\n\n /**\n * Get GraphQL Playground HTML\n */\n getPlaygroundHTML(): string {\n const path = this.options.path || '/graphql';\n return `\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <title>GraphQL Playground</title>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <link rel=\"stylesheet\" href=\"https://unpkg.com/graphiql@2/graphiql.min.css\" />\n</head>\n<body style=\"margin: 0;\">\n <div id=\"graphiql\" style=\"height: 100vh;\"></div>\n <script crossorigin src=\"https://unpkg.com/react@18/umd/react.production.min.js\"></script>\n <script crossorigin src=\"https://unpkg.com/react-dom@18/umd/react-dom.production.min.js\"></script>\n <script crossorigin src=\"https://unpkg.com/graphiql@2/graphiql.min.js\"></script>\n <script>\n const fetcher = GraphiQL.createFetcher({ url: '${path}' });\n const root = ReactDOM.createRoot(document.getElementById('graphiql'));\n root.render(React.createElement(GraphiQL, { fetcher: fetcher }));\n </script>\n</body>\n</html>\n `.trim();\n }\n\n /**\n * Get schema introspection\n */\n getIntrospection(): any {\n return this.adapter.getIntrospection();\n }\n\n /**\n * Get schema SDL\n */\n getSchemaSDL(): string {\n return this.adapter.getSchemaSDL();\n }\n\n /**\n * Get schema\n */\n getSchema(): any {\n return this.adapter.getSchema();\n }\n\n /**\n * Get adapter\n */\n getAdapter(): GraphQLAdapter {\n return this.adapter;\n }\n\n /**\n * Get statistics\n */\n getStats() {\n return this.adapter.getStats();\n }\n\n /**\n * Cleanup\n */\n async cleanup(): Promise<void> {\n await this.adapter.cleanup();\n }\n\n /**\n * Parse GraphQL request from HTTP request\n */\n private async parseRequest(req: HttpRequest): Promise<GraphQLRequest | null> {\n if (req.method === 'GET') {\n const query = (req.query as any)?.query;\n const variables = (req.query as any)?.variables;\n const operationName = (req.query as any)?.operationName;\n\n if (!query) return null;\n\n // Avoid JSON.parse if already an object or undefined\n let parsedVariables = undefined;\n if (variables) {\n if (typeof variables === 'string') {\n try {\n parsedVariables = JSON.parse(variables);\n } catch {\n return null;\n }\n } else {\n parsedVariables = variables;\n }\n }\n\n return {\n query,\n variables: parsedVariables,\n operationName,\n context: {} as GraphQLContext,\n };\n }\n\n if (req.method === 'POST') {\n const body = req.body as any;\n if (!body || !body.query) return null;\n\n return {\n query: body.query,\n variables: body.variables,\n operationName: body.operationName,\n context: {} as GraphQLContext,\n };\n }\n\n return null;\n }\n\n /**\n * Check if query is introspection\n */\n private isIntrospectionQuery(query: string): boolean {\n return query.includes('__schema') || query.includes('__type');\n }\n}\n\n/**\n * Create GraphQL core instance\n */\nexport function createGraphQLCore(options: GraphQLOptions): GraphQLCore {\n return new GraphQLCore(options);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/graphql/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/graphql/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC","sourcesContent":["// GraphQL System Exports\nexport { GraphQLCore, createGraphQLCore } from './core.js';\nexport type { GraphQLAdapter, GraphQLRequest, GraphQLResponse, GraphQLStats } from './adapter.js';\nexport { GraphQLJsAdapter } from './adapters/graphql-js-adapter.js';\n\n// Re-export types\nexport type * from './types.js';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/graphql/loader.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,IAAI,aAAa,GAAQ,IAAI,CAAC;AAE9B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAClD,aAAa,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,mEAAmE;YACjE,0DAA0D;YAC1D,gDAAgD,CACnD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/graphql/loader.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,IAAI,aAAa,GAAQ,IAAI,CAAC;AAE9B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAClD,aAAa,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,mEAAmE;YACjE,0DAA0D;YAC1D,gDAAgD,CACnD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["// GraphQL Dynamic Loader - Lazy loads graphql package\nimport { resolveUserPackage } from '../utilities/package-utils.js';\n\nlet graphqlModule: any = null;\n\n/**\n * Dynamically load graphql package from user's node_modules\n * This ensures graphql is only required when actually used\n */\nexport async function loadGraphQL() {\n if (graphqlModule) {\n return graphqlModule;\n }\n\n try {\n const graphqlPath = resolveUserPackage('graphql');\n graphqlModule = await import(graphqlPath);\n return graphqlModule;\n } catch {\n throw new Error(\n 'GraphQL package not found. Install it with: npm install graphql\\n' +\n 'For TypeScript-first GraphQL: npm install @pothos/core\\n' +\n 'For performance boost: npm install graphql-jit'\n );\n }\n}\n\n/**\n * Get cached graphql module (must call loadGraphQL first)\n */\nexport function getGraphQL() {\n if (!graphqlModule) {\n throw new Error('GraphQL not loaded. Call loadGraphQL() first.');\n }\n return graphqlModule;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/graphql/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/graphql/types.ts"],"names":[],"mappings":"","sourcesContent":["// GraphQL Types for MoroJS\nimport type { HttpRequest, HttpResponse } from '../../types/http.js';\n\nimport type {\n GraphQLSchema,\n GraphQLFieldResolver,\n GraphQLTypeResolver,\n GraphQLError,\n} from 'graphql';\n\n/**\n * GraphQL context that's passed to all resolvers\n */\nexport interface GraphQLContext {\n request: HttpRequest;\n response: HttpResponse;\n user?: any;\n auth?: any;\n session?: any;\n [key: string]: any;\n}\n\n/**\n * GraphQL resolver function signature\n */\nexport type GraphQLResolver<\n TSource = any,\n TArgs = any,\n TContext = GraphQLContext,\n TResult = any,\n> = GraphQLFieldResolver<TSource, TContext, TArgs, TResult>;\n\n/**\n * GraphQL subscription resolver\n */\nexport interface GraphQLSubscriptionResolver<\n TSource = any,\n TArgs = any,\n TContext = GraphQLContext,\n> {\n subscribe: GraphQLFieldResolver<TSource, TContext, TArgs>;\n resolve?: GraphQLFieldResolver<TSource, TContext, TArgs>;\n}\n\n/**\n * GraphQL schema builder options\n */\nexport interface GraphQLSchemaBuilderOptions {\n typeDefs?: string | string[];\n resolvers?: GraphQLResolvers;\n schema?: GraphQLSchema;\n context?: (req: HttpRequest, res: HttpResponse) => GraphQLContext | Promise<GraphQLContext>;\n formatError?: (error: GraphQLError) => any;\n validationRules?: any[];\n extensions?: any[];\n}\n\n/**\n * GraphQL resolvers map\n */\nexport interface GraphQLResolvers {\n Query?: Record<string, GraphQLResolver>;\n Mutation?: Record<string, GraphQLResolver>;\n Subscription?: Record<string, GraphQLSubscriptionResolver>;\n [key: string]: any;\n}\n\n/**\n * GraphQL execution options\n */\nexport interface GraphQLExecutionOptions {\n schema: GraphQLSchema;\n query: string;\n variables?: Record<string, any>;\n operationName?: string;\n context?: GraphQLContext;\n rootValue?: any;\n fieldResolver?: GraphQLFieldResolver<any, any>;\n typeResolver?: GraphQLTypeResolver<any, any>;\n subscriptionFieldResolver?: GraphQLFieldResolver<any, any>;\n}\n\n/**\n * GraphQL configuration options\n */\nexport interface GraphQLOptions {\n // Adapter\n adapter?: any; // GraphQLAdapter - using any to avoid circular dependency\n\n // Schema definition\n schema?: any; // GraphQLSchema\n typeDefs?: string | string[];\n resolvers?: GraphQLResolvers;\n pothosSchema?: any; // PothosSchemaTypes.ExtendDefaultTypes\n\n // Context\n context?: (req: HttpRequest, res: HttpResponse) => GraphQLContext | Promise<GraphQLContext>;\n\n // Endpoints\n path?: string; // Default: '/graphql'\n playgroundPath?: string; // Default: '/graphql/playground'\n enablePlayground?: boolean; // Default: true in development\n\n // Performance\n enableJIT?: boolean; // Enable GraphQL-JIT compilation (default: true)\n jitCacheTTL?: number; // JIT cache TTL in ms (default: 3600000 - 1 hour)\n\n // Features\n enableIntrospection?: boolean; // Default: true in development\n enableSubscriptions?: boolean; // Default: true if WebSocket enabled\n enableBatching?: boolean; // Enable query batching\n\n // Error handling\n formatError?: (error: GraphQLError) => any;\n debug?: boolean; // Include stack traces in errors\n\n // Validation & security\n validationRules?: any[];\n maxDepth?: number; // Query depth limit\n maxComplexity?: number; // Query complexity limit\n\n // Rate limiting (per operation)\n rateLimit?: {\n queries?: { requests: number; window: number };\n mutations?: { requests: number; window: number };\n subscriptions?: { requests: number; window: number };\n };\n\n // Caching\n enableCache?: boolean;\n cacheAdapter?: any;\n cacheTTL?: number;\n\n // Authentication\n requireAuth?: boolean; // Require auth for all operations\n authScopes?: string[]; // Required scopes\n\n // Extensions\n extensions?: any[];\n plugins?: GraphQLPlugin[];\n\n // Advanced\n rootValue?: any;\n fieldResolver?: GraphQLFieldResolver<any, any>;\n typeResolver?: GraphQLTypeResolver<any, any>;\n parseOptions?: any;\n validationTypeInfo?: any;\n}\n\n/**\n * GraphQL plugin interface\n */\nexport interface GraphQLPlugin {\n name: string;\n requestDidStart?: (context: GraphQLRequestContext) => GraphQLRequestListener | void;\n}\n\n/**\n * GraphQL request context\n */\nexport interface GraphQLRequestContext {\n request: GraphQLRequest;\n response?: GraphQLResponse;\n context: GraphQLContext;\n schema: GraphQLSchema;\n operation?: any;\n operationName?: string | null;\n document?: any;\n metrics?: GraphQLMetrics;\n}\n\n/**\n * GraphQL request listener (for plugins)\n */\nexport interface GraphQLRequestListener {\n parsingDidStart?: () => void;\n validationDidStart?: () => void;\n executionDidStart?: () => void;\n didEncounterErrors?: (errors: readonly GraphQLError[]) => void;\n willSendResponse?: (context: GraphQLRequestContext) => void;\n}\n\n/**\n * GraphQL request\n */\nexport interface GraphQLRequest {\n query: string;\n variables?: Record<string, any>;\n operationName?: string | null;\n extensions?: Record<string, any>;\n}\n\n/**\n * GraphQL response\n */\nexport interface GraphQLResponse {\n data?: any;\n errors?: readonly GraphQLError[];\n extensions?: Record<string, any>;\n}\n\n/**\n * GraphQL execution metrics\n */\nexport interface GraphQLMetrics {\n startTime: number;\n endTime?: number;\n duration?: number;\n parsing?: number;\n validation?: number;\n execution?: number;\n fieldResolution?: Record<string, number>;\n}\n\n/**\n * GraphQL subscription options\n */\nexport interface GraphQLSubscriptionOptions {\n onConnect?: (connectionParams: any, websocket: any, context: any) => any | Promise<any>;\n onDisconnect?: (websocket: any, context: any) => void | Promise<void>;\n keepAlive?: number;\n}\n\n/**\n * GraphQL DataLoader options\n */\nexport interface DataLoaderOptions<K, V> {\n batch?: boolean;\n maxBatchSize?: number;\n cache?: boolean;\n cacheKeyFn?: (key: K) => any;\n cacheMap?: Map<any, Promise<V>>;\n}\n\n/**\n * GraphQL field complexity calculator\n */\nexport type ComplexityEstimator = (options: {\n type: any;\n field: any;\n args: Record<string, any>;\n childComplexity: number;\n}) => number;\n\n/**\n * GraphQL query complexity options\n */\nexport interface QueryComplexityOptions {\n maximumComplexity: number;\n variables?: Record<string, any>;\n onComplete?: (complexity: number) => void;\n estimators?: ComplexityEstimator[];\n}\n\n/**\n * GraphQL depth limit options\n */\nexport interface DepthLimitOptions {\n maxDepth: number;\n callback?: (obj: any) => void;\n}\n"]}
@@ -168,6 +168,8 @@ export class GrpcJsAdapter {
168
168
  // Handle middleware array
169
169
  const handlers = Array.isArray(handler) ? handler : [handler];
170
170
  const finalHandler = handlers[handlers.length - 1];
171
+ if (!finalHandler)
172
+ continue;
171
173
  wrappedImplementation[methodName] = async (call, callback) => {
172
174
  const startTime = Date.now();
173
175
  this.stats.totalCalls++;
@@ -423,6 +425,8 @@ export class GrpcJsAdapter {
423
425
  this.stats.averageLatency =
424
426
  (this.stats.averageLatency * (totalCalls - 1) + latency) / totalCalls;
425
427
  const methodStats = this.stats.byMethod[methodName];
428
+ if (!methodStats)
429
+ return;
426
430
  const methodCalls = methodStats.calls;
427
431
  methodStats.averageLatency =
428
432
  (methodStats.averageLatency * (methodCalls - 1) + latency) / methodCalls;