@morojs/moro 1.8.0 → 1.8.2

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 +48 -22
  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 +30 -2
  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
package/README.md CHANGED
@@ -22,9 +22,9 @@ Build high-performance APIs with intelligent routing that automatically orders m
22
22
 
23
23
  **Key Features:**
24
24
 
25
- - **Native C++ Engine** - Moro's own HTTP engine, faster than uWebSockets.js: 94k+ req/s real-world, ~500k pipelined, on a single thread
25
+ - **Native C++ Engine** - ~102k req/s real-world through the full framework, 572k pipelined, on a single thread
26
26
  - **Intelligent Routing** - Automatic middleware ordering, no configuration needed
27
- - **Enterprise Auth** - Built-in Auth.js with OAuth & RBAC
27
+ - **Enterprise Auth** - Built-in Better Auth with OAuth & RBAC
28
28
  - **Universal Validation** - Works with Zod, Joi, Yup, or Class Validator
29
29
  - **Message Queues** - Production-ready queues (Bull, RabbitMQ, SQS, Kafka)
30
30
  - **gRPC Support** - Native gRPC for high-performance microservices
@@ -34,21 +34,7 @@ Build high-performance APIs with intelligent routing that automatically orders m
34
34
 
35
35
  ## Performance
36
36
 
37
- The Moro rows run the **full framework** (routing, validation pipeline, middleware) — not a stripped-down stack:
38
-
39
- | Configuration | Req/sec | Latency (avg) | p99 |
40
- | ---------------------------------- | ---------------------------- | ------------- | ------- |
41
- | **Moro + Moro Engine** _(default)_ | **94,000+** | **1.1 ms** | 2.4 ms |
42
- | **Moro + uWebSockets.js** | 91,000+ | 1.1 ms | 3.4 ms |
43
- | **Moro (Node http)** | 58,000+ | 1.8 ms | 6.4 ms |
44
- | **Moro (Clustering)** | scales across all CPU cores¹ | — | — |
45
- | Fastify | 56,625 | 1.9 ms | 4.5 ms |
46
- | Koa | 48,238 | 2.3 ms | 11.5 ms |
47
- | Express | 39,552 | 2.7 ms | 7.9 ms |
48
-
49
- Moro's own native engine is the default — and it outperforms uWebSockets.js in **both** profiles: real-world above, and pipelined ×10 (TechEmpower-style) at **495k req/s vs 470k**, single thread.
50
-
51
- > Methodology: `wrk`, 100 connections, no pipelining (how real HTTP clients behave), best of alternating rounds, Node 24, Apple M2 Ultra — same machine, same day, same tool for every row. ¹ Clustering multiplies throughput across cores; a single-machine loopback benchmark can't measure it honestly (the load generator competes with the workers for the same cores), so no misleading number is shown.
37
+ MoroJS is the fastest Node.js framework we've measured (not just because its ours) — its native engine beats uWebSockets.js in both benchmark profiles while running the **full framework** (routing, validation, middleware): **~102k req/s real-world at 0.9 ms latency** and **572k req/s pipelined**, on a single thread. That's ~1.5× Fastify and ~2× Express out of the box. Full comparison tables, methodology, and saved results live in the **[MoroJS Benchmark repo](https://github.com/Moro-JS/benchmark)**.
52
38
 
53
39
  ## Quick Start
54
40
 
@@ -56,29 +42,33 @@ Moro's own native engine is the default — and it outperforms uWebSockets.js in
56
42
 
57
43
  ```bash
58
44
  npm install @morojs/moro
45
+ npm install zod # peer dependency used by the `z` validation helper below
59
46
  ```
60
47
 
61
48
  ```typescript
62
49
  import { createApp, z } from '@morojs/moro';
63
50
 
64
- const app = createApp();
65
-
66
- // Intelligent routing - order doesn't matter!
67
- app
68
- .post('/users')
69
- .body(
70
- z.object({
71
- name: z.string().min(2),
72
- email: z.string().email(),
73
- })
74
- )
75
- .rateLimit({ requests: 10, window: 60000 })
76
- .handler((req, res) => {
77
- // req.body is fully typed and validated
78
- return { success: true, data: req.body };
79
- });
80
-
81
- app.listen(3000);
51
+ // createApp() is async — await it inside an async context
52
+ (async () => {
53
+ const app = await createApp();
54
+
55
+ // Intelligent routing - order doesn't matter!
56
+ app
57
+ .post('/users')
58
+ .body(
59
+ z.object({
60
+ name: z.string().min(2),
61
+ email: z.string().email(),
62
+ })
63
+ )
64
+ .rateLimit({ requests: 10, window: 60000 })
65
+ .handler((req, res) => {
66
+ // req.body is fully typed and validated
67
+ return { success: true, data: req.body };
68
+ });
69
+
70
+ app.listen(3000);
71
+ })();
82
72
  ```
83
73
 
84
74
  ### Or Use the CLI
@@ -101,7 +91,8 @@ falling back to the Node.js http server wherever a prebuilt binary isn't
101
91
  available. Pick the backend with `server.engine`:
102
92
 
103
93
  ```typescript
104
- const app = createApp({
94
+ // createApp() is async — top-level await (ESM) or wrap in an async function
95
+ const app = await createApp({
105
96
  server: {
106
97
  engine: 'moro', // default - Moro's native engine (Node.js fallback if it can't load)
107
98
  // engine: 'node' - the Node.js http server (no native engine)
@@ -198,7 +189,7 @@ Check out [working examples](https://github.com/Moro-JS/examples) for:
198
189
 
199
190
  - REST APIs with validation
200
191
  - Real-time WebSocket apps
201
- - Auth.js integration
192
+ - Better Auth integration
202
193
  - Multi-runtime deployment
203
194
  - Database integration
204
195
  - And more...
@@ -207,7 +198,7 @@ Check out [working examples](https://github.com/Moro-JS/examples) for:
207
198
 
208
199
  **vs Express** - Intelligent middleware ordering eliminates configuration complexity and race conditions
209
200
 
210
- **vs Fastify** - ~1.7x the throughput out of the box (Moro's native engine), plus multi-runtime deployment without adapters
201
+ **vs Fastify** - ~1.5x the throughput out of the box (Moro's native engine), plus multi-runtime deployment without adapters
211
202
 
212
203
  **vs NestJS** - Functional architecture without decorators, with a fraction of the per-request overhead
213
204
 
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @see https://better-auth.com/
8
8
  */
9
+ import { randomBytes } from 'crypto';
9
10
  import { createFrameworkLogger } from '../logger/index.js';
10
11
  import { resolveUserPackage } from '../utilities/package-utils.js';
11
12
  const logger = createFrameworkLogger('AuthAdapter');
@@ -67,62 +68,84 @@ function toWebRequest(req, basePath) {
67
68
  return new Request(url.toString(), {
68
69
  method: req.method || 'GET',
69
70
  headers,
70
- body,
71
+ ...(body !== undefined ? { body } : {}),
71
72
  });
72
73
  }
74
+ /**
75
+ * Parse a single Set-Cookie header value and apply it to the MoroJS response.
76
+ */
77
+ function applySetCookie(moroResponse, cookie) {
78
+ const [nameValue, ...options] = cookie.split('; ');
79
+ if (nameValue === undefined)
80
+ return;
81
+ const eq = nameValue.indexOf('=');
82
+ if (eq <= 0)
83
+ return;
84
+ const name = nameValue.slice(0, eq);
85
+ const cookieValue = nameValue.slice(eq + 1);
86
+ const cookieOptions = {};
87
+ options.forEach(option => {
88
+ const optEq = option.indexOf('=');
89
+ const optKey = (optEq === -1 ? option : option.slice(0, optEq)).toLowerCase();
90
+ const optValue = optEq === -1 ? '' : option.slice(optEq + 1);
91
+ switch (optKey) {
92
+ case 'max-age':
93
+ cookieOptions.maxAge = parseInt(optValue, 10);
94
+ break;
95
+ case 'expires':
96
+ cookieOptions.expires = new Date(optValue);
97
+ break;
98
+ case 'httponly':
99
+ cookieOptions.httpOnly = true;
100
+ break;
101
+ case 'secure':
102
+ cookieOptions.secure = true;
103
+ break;
104
+ case 'samesite':
105
+ cookieOptions.sameSite = optValue;
106
+ break;
107
+ case 'path':
108
+ cookieOptions.path = optValue;
109
+ break;
110
+ case 'domain':
111
+ cookieOptions.domain = optValue;
112
+ break;
113
+ }
114
+ });
115
+ moroResponse.cookie(name, cookieValue, cookieOptions);
116
+ }
73
117
  /**
74
118
  * Convert Auth.js Web API Response to MoroJS response
75
119
  */
76
120
  async function fromWebResponse(webResponse, moroResponse) {
77
121
  // Set status
78
122
  moroResponse.status(webResponse.status);
79
- // Set headers
123
+ // Set-Cookie is multi-valued and MUST be read via getSetCookie(): the Fetch
124
+ // Headers.forEach() folds multiple Set-Cookie headers into a single
125
+ // comma-joined string, and splitting that on ', ' corrupts any cookie whose
126
+ // Expires attribute contains a comma ("Expires=Wed, 21 Oct 2025 ..."),
127
+ // silently dropping or garbling auth cookies.
128
+ const getSetCookie = webResponse.headers.getSetCookie;
129
+ const setCookies = typeof getSetCookie === 'function' ? getSetCookie.call(webResponse.headers) : [];
130
+ for (const cookie of setCookies) {
131
+ applySetCookie(moroResponse, cookie);
132
+ }
133
+ // Set remaining headers
80
134
  webResponse.headers.forEach((value, key) => {
81
- if (key.toLowerCase() === 'set-cookie') {
82
- // Handle cookies specially for MoroJS
83
- const cookies = value.split(', ');
84
- cookies.forEach(cookie => {
85
- const [nameValue, ...options] = cookie.split('; ');
86
- const [name, cookieValue] = nameValue.split('=');
87
- // Parse cookie options
88
- const cookieOptions = {};
89
- options.forEach(option => {
90
- const [optKey, optValue] = option.split('=');
91
- switch (optKey.toLowerCase()) {
92
- case 'max-age':
93
- cookieOptions.maxAge = parseInt(optValue, 10);
94
- break;
95
- case 'expires':
96
- cookieOptions.expires = new Date(optValue);
97
- break;
98
- case 'httponly':
99
- cookieOptions.httpOnly = true;
100
- break;
101
- case 'secure':
102
- cookieOptions.secure = true;
103
- break;
104
- case 'samesite':
105
- cookieOptions.sameSite = optValue;
106
- break;
107
- case 'path':
108
- cookieOptions.path = optValue;
109
- break;
110
- case 'domain':
111
- cookieOptions.domain = optValue;
112
- break;
113
- }
114
- });
115
- moroResponse.cookie(name, cookieValue, cookieOptions);
116
- });
135
+ const lower = key.toLowerCase();
136
+ if (lower === 'set-cookie') {
137
+ // Handled above via getSetCookie(). Fallback for legacy runtimes without
138
+ // it: apply the (best-effort) folded value as a single cookie.
139
+ if (setCookies.length === 0 && value)
140
+ applySetCookie(moroResponse, value);
141
+ return;
117
142
  }
118
- else if (key.toLowerCase() === 'location') {
143
+ if (lower === 'location') {
119
144
  // Handle redirects
120
145
  moroResponse.redirect(value);
121
146
  return;
122
147
  }
123
- else {
124
- moroResponse.setHeader(key, value);
125
- }
148
+ moroResponse.setHeader(key, value);
126
149
  });
127
150
  // Handle response body
128
151
  const contentType = webResponse.headers.get('content-type');
@@ -172,12 +195,39 @@ export async function MoroJSAuth(config) {
172
195
  };
173
196
  }
174
197
  }
198
+ // Resolve the auth secret. Never fall back to an empty string: an empty
199
+ // secret disables the signing/encryption Better Auth relies on. Fail fast in
200
+ // production, and warn-plus-generate elsewhere (matching the built-in auth
201
+ // middleware's behavior).
202
+ const secret = config.secret ||
203
+ process.env.AUTH_SECRET ||
204
+ (() => {
205
+ if (process.env.NODE_ENV === 'production') {
206
+ throw new Error('[MoroJS Security] No auth secret configured. Set config.secret or the AUTH_SECRET environment variable before starting in production.');
207
+ }
208
+ const generated = randomBytes(32).toString('hex');
209
+ logger.warn('[MoroJS Security] No auth secret configured. A random secret was generated — sessions will NOT survive restarts. Set config.secret or AUTH_SECRET for production use.', 'AuthAdapter');
210
+ return generated;
211
+ })();
212
+ const baseURL = config.baseURL || process.env.BASE_URL || process.env.AUTH_URL || 'http://localhost:3000';
213
+ // Default trustedOrigins to the app's own origin instead of a wildcard.
214
+ // trustedOrigins is Better Auth's origin/CSRF defense for state-changing auth
215
+ // routes and its callback/redirect-URL allowlist; ['*'] trusts every origin.
216
+ // Users can override or extend it via config.trustedOrigins.
217
+ let defaultOrigin;
218
+ try {
219
+ defaultOrigin = new URL(baseURL).origin;
220
+ }
221
+ catch {
222
+ defaultOrigin = baseURL;
223
+ }
224
+ const trustedOrigins = config.trustedOrigins ?? [defaultOrigin];
175
225
  // Initialize Better Auth
176
226
  const betterAuthInstance = betterAuth({
177
- secret: config.secret || process.env.AUTH_SECRET || '',
178
- baseURL: process.env.BASE_URL || process.env.AUTH_URL || 'http://localhost:3000',
227
+ secret,
228
+ baseURL,
179
229
  basePath,
180
- trustedOrigins: ['*'],
230
+ trustedOrigins,
181
231
  session: {
182
232
  expiresIn: config.session?.maxAge || 30 * 24 * 60 * 60,
183
233
  updateAge: config.session?.updateAge || 24 * 60 * 60,
@@ -1 +1 @@
1
- {"version":3,"file":"morojs-adapter.js","sourceRoot":"","sources":["../../../src/core/auth/morojs-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"morojs-adapter.js","sourceRoot":"","sources":["../../../src/core/auth/morojs-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Better Auth Adapter for MoroJS\n *\n * This adapter allows Better Auth to work seamlessly with MoroJS framework.\n * Maintains compatibility with the original Auth.js API.\n *\n * @see https://better-auth.com/\n */\n\nimport { randomBytes } from 'crypto';\nimport { createFrameworkLogger } from '../logger/index.js';\nimport { resolveUserPackage } from '../utilities/package-utils.js';\n\nconst logger = createFrameworkLogger('AuthAdapter');\n\n// Lazy load Better Auth (optional dependency)\nlet betterAuthModule: any = null;\n\n/**\n * Dynamically load Better Auth from user's node_modules\n * This ensures it's only required when actually used\n */\nasync function loadBetterAuth() {\n if (betterAuthModule) {\n return betterAuthModule;\n }\n\n try {\n const betterAuthPath = resolveUserPackage('better-auth');\n betterAuthModule = await import(betterAuthPath);\n return betterAuthModule;\n } catch {\n throw new Error(\n 'Better Auth package not found. Install it with: npm install better-auth\\n' +\n 'See: https://better-auth.com/ for setup instructions'\n );\n }\n}\n\n// Auth types (compatible with Auth.js)\nexport interface AuthConfig {\n providers: any[];\n secret?: string;\n session?: any;\n callbacks?: any;\n events?: any;\n pages?: any;\n adapter?: any;\n debug?: boolean;\n basePath?: string;\n [key: string]: any;\n}\n\nexport interface Session {\n user: {\n id: string;\n name?: string | null;\n email?: string | null;\n image?: string | null;\n [key: string]: any;\n };\n expires: string;\n [key: string]: any;\n}\n\nexport type AuthAction = 'signin' | 'signout' | 'callback' | 'session' | 'providers' | 'csrf';\n\n// MoroJS-specific types\nexport interface MoroJSAuthConfig extends Omit<AuthConfig, 'raw'> {\n /**\n * Base path for auth routes in MoroJS\n * @default \"/api/auth\"\n */\n basePath?: string;\n\n /**\n * MoroJS-specific options\n */\n morojs?: {\n /**\n * Enable MoroJS-specific logging\n * @default false\n */\n debug?: boolean;\n\n /**\n * Custom request/response transformers\n */\n transformers?: {\n request?: (req: any) => any;\n response?: (res: any) => any;\n };\n };\n}\n\nexport interface MoroJSRequest {\n url?: string;\n method?: string;\n headers?: Record<string, string>;\n body?: any;\n query?: Record<string, string>;\n cookies?: Record<string, string>;\n}\n\nexport interface MoroJSResponse {\n status(code: number): MoroJSResponse;\n json(data: any): Promise<void>;\n redirect(url: string): void;\n setHeader(name: string, value: string): void;\n cookie(name: string, value: string, options?: any): void;\n send(data: any): void;\n end(data?: any): void;\n headersSent: boolean;\n}\n\n/**\n * Convert MoroJS request to Auth.js Web API Request\n */\nfunction toWebRequest(req: MoroJSRequest, basePath: string): Request {\n const url = new URL(req.url || '/', 'http://localhost:3000');\n\n // Handle auth routes\n if (url.pathname.startsWith(basePath)) {\n url.pathname = url.pathname.replace(basePath, '');\n }\n\n const headers = new Headers();\n if (req.headers) {\n Object.entries(req.headers).forEach(([key, value]) => {\n headers.set(key, value);\n });\n }\n\n // Add cookies to headers if not present - check first key instead of length\n if (req.cookies) {\n let hasCookies = false;\n let cookieHeader = '';\n for (const name in req.cookies) {\n if (Object.prototype.hasOwnProperty.call(req.cookies, name)) {\n if (hasCookies) {\n cookieHeader += `; ${name}=${req.cookies[name]}`;\n } else {\n cookieHeader = `${name}=${req.cookies[name]}`;\n hasCookies = true;\n }\n }\n }\n\n if (hasCookies && !headers.has('cookie')) {\n headers.set('cookie', cookieHeader);\n }\n }\n\n const body = req.body ? JSON.stringify(req.body) : undefined;\n\n return new Request(url.toString(), {\n method: req.method || 'GET',\n headers,\n ...(body !== undefined ? { body } : {}),\n });\n}\n\n/**\n * Parse a single Set-Cookie header value and apply it to the MoroJS response.\n */\nfunction applySetCookie(moroResponse: MoroJSResponse, cookie: string): void {\n const [nameValue, ...options] = cookie.split('; ');\n if (nameValue === undefined) return;\n const eq = nameValue.indexOf('=');\n if (eq <= 0) return;\n const name = nameValue.slice(0, eq);\n const cookieValue = nameValue.slice(eq + 1);\n\n const cookieOptions: any = {};\n options.forEach(option => {\n const optEq = option.indexOf('=');\n const optKey = (optEq === -1 ? option : option.slice(0, optEq)).toLowerCase();\n const optValue = optEq === -1 ? '' : option.slice(optEq + 1);\n switch (optKey) {\n case 'max-age':\n cookieOptions.maxAge = parseInt(optValue, 10);\n break;\n case 'expires':\n cookieOptions.expires = new Date(optValue);\n break;\n case 'httponly':\n cookieOptions.httpOnly = true;\n break;\n case 'secure':\n cookieOptions.secure = true;\n break;\n case 'samesite':\n cookieOptions.sameSite = optValue;\n break;\n case 'path':\n cookieOptions.path = optValue;\n break;\n case 'domain':\n cookieOptions.domain = optValue;\n break;\n }\n });\n\n moroResponse.cookie(name, cookieValue, cookieOptions);\n}\n\n/**\n * Convert Auth.js Web API Response to MoroJS response\n */\nasync function fromWebResponse(webResponse: Response, moroResponse: MoroJSResponse): Promise<void> {\n // Set status\n moroResponse.status(webResponse.status);\n\n // Set-Cookie is multi-valued and MUST be read via getSetCookie(): the Fetch\n // Headers.forEach() folds multiple Set-Cookie headers into a single\n // comma-joined string, and splitting that on ', ' corrupts any cookie whose\n // Expires attribute contains a comma (\"Expires=Wed, 21 Oct 2025 ...\"),\n // silently dropping or garbling auth cookies.\n const getSetCookie = (webResponse.headers as any).getSetCookie;\n const setCookies: string[] =\n typeof getSetCookie === 'function' ? getSetCookie.call(webResponse.headers) : [];\n for (const cookie of setCookies) {\n applySetCookie(moroResponse, cookie);\n }\n\n // Set remaining headers\n webResponse.headers.forEach((value, key) => {\n const lower = key.toLowerCase();\n if (lower === 'set-cookie') {\n // Handled above via getSetCookie(). Fallback for legacy runtimes without\n // it: apply the (best-effort) folded value as a single cookie.\n if (setCookies.length === 0 && value) applySetCookie(moroResponse, value);\n return;\n }\n if (lower === 'location') {\n // Handle redirects\n moroResponse.redirect(value);\n return;\n }\n moroResponse.setHeader(key, value);\n });\n\n // Handle response body\n const contentType = webResponse.headers.get('content-type');\n\n if (webResponse.status >= 300 && webResponse.status < 400) {\n // Redirect - already handled above\n return;\n } else if (contentType?.includes('application/json')) {\n const data = await webResponse.json();\n await moroResponse.json(data);\n } else {\n const text = await webResponse.text();\n moroResponse.send(text);\n }\n}\n\n/**\n * Main MoroJS Better Auth handler\n *\n * This is the core function that integrates Better Auth with MoroJS\n * Maintains API compatibility with the original Auth.js implementation\n */\nexport async function MoroJSAuth(config: MoroJSAuthConfig): Promise<{\n handler: (req: MoroJSRequest, res: MoroJSResponse) => Promise<void>;\n auth: (req: MoroJSRequest) => Promise<Session | null>;\n}> {\n const basePath = config.basePath || '/api/auth';\n\n // Lazy load Better Auth\n const betterAuthModule = await loadBetterAuth();\n const { betterAuth } = betterAuthModule;\n\n // Convert providers to Better Auth format\n const socialProviders: Record<string, any> = {};\n for (const provider of config.providers || []) {\n if (provider.id === 'google' && provider.clientId && provider.clientSecret) {\n socialProviders.google = {\n clientId: provider.clientId,\n clientSecret: provider.clientSecret,\n };\n } else if (provider.id === 'github' && provider.clientId && provider.clientSecret) {\n socialProviders.github = {\n clientId: provider.clientId,\n clientSecret: provider.clientSecret,\n };\n } else if (provider.id === 'discord' && provider.clientId && provider.clientSecret) {\n socialProviders.discord = {\n clientId: provider.clientId,\n clientSecret: provider.clientSecret,\n };\n }\n }\n\n // Resolve the auth secret. Never fall back to an empty string: an empty\n // secret disables the signing/encryption Better Auth relies on. Fail fast in\n // production, and warn-plus-generate elsewhere (matching the built-in auth\n // middleware's behavior).\n const secret =\n config.secret ||\n process.env.AUTH_SECRET ||\n (() => {\n if (process.env.NODE_ENV === 'production') {\n throw new Error(\n '[MoroJS Security] No auth secret configured. Set config.secret or the AUTH_SECRET environment variable before starting in production.'\n );\n }\n const generated = randomBytes(32).toString('hex');\n logger.warn(\n '[MoroJS Security] No auth secret configured. A random secret was generated — sessions will NOT survive restarts. Set config.secret or AUTH_SECRET for production use.',\n 'AuthAdapter'\n );\n return generated;\n })();\n\n const baseURL =\n config.baseURL || process.env.BASE_URL || process.env.AUTH_URL || 'http://localhost:3000';\n\n // Default trustedOrigins to the app's own origin instead of a wildcard.\n // trustedOrigins is Better Auth's origin/CSRF defense for state-changing auth\n // routes and its callback/redirect-URL allowlist; ['*'] trusts every origin.\n // Users can override or extend it via config.trustedOrigins.\n let defaultOrigin: string;\n try {\n defaultOrigin = new URL(baseURL).origin;\n } catch {\n defaultOrigin = baseURL;\n }\n const trustedOrigins = config.trustedOrigins ?? [defaultOrigin];\n\n // Initialize Better Auth\n const betterAuthInstance = betterAuth({\n secret,\n baseURL,\n basePath,\n trustedOrigins,\n session: {\n expiresIn: config.session?.maxAge || 30 * 24 * 60 * 60,\n updateAge: config.session?.updateAge || 24 * 60 * 60,\n },\n socialProviders,\n });\n\n return {\n /**\n * Main request handler for auth routes\n */\n handler: async (req: MoroJSRequest, res: MoroJSResponse) => {\n try {\n // Convert MoroJS request to Web API request\n const webRequest = toWebRequest(req, basePath);\n\n // Apply request transformer if provided\n let transformedRequest = webRequest;\n if (config.morojs?.transformers?.request) {\n transformedRequest = config.morojs.transformers.request(webRequest);\n }\n\n // Call Better Auth handler\n const authResponse = await betterAuthInstance.handler(transformedRequest);\n\n // Apply response transformer if provided\n let finalResponse = authResponse;\n if (config.morojs?.transformers?.response) {\n finalResponse = config.morojs.transformers.response(authResponse);\n }\n\n // Convert Web API response to MoroJS response\n await fromWebResponse(finalResponse, res);\n } catch (error) {\n logger.error('[MoroJS Auth] Error', 'AuthAdapter', {\n error: error instanceof Error ? error.message : String(error),\n });\n // Robust error handling - check if response methods exist\n if (typeof (res as any).status === 'function' && typeof (res as any).json === 'function') {\n (res as any).status(500).json({\n error: 'Internal server error',\n message: config.morojs?.debug ? (error as Error).message : 'Authentication error',\n });\n } else {\n // Fallback to basic Node.js response methods\n (res as any).statusCode = 500;\n (res as any).setHeader('Content-Type', 'application/json');\n (res as any).end(\n JSON.stringify({\n error: 'Internal server error',\n message: config.morojs?.debug ? (error as Error).message : 'Authentication error',\n })\n );\n }\n }\n },\n\n /**\n * Get session for the current request\n */\n auth: async (req: MoroJSRequest): Promise<Session | null> => {\n try {\n // Convert MoroJS request to Web API request\n const webRequest = toWebRequest(req, basePath);\n\n // Get session from Better Auth\n const session = await betterAuthInstance.api.getSession({\n headers: webRequest.headers,\n });\n\n if (session?.user) {\n return {\n user: {\n id: session.user.id,\n name: session.user.name || null,\n email: session.user.email || null,\n image: session.user.image || null,\n },\n expires: new Date(\n session.session?.expiresAt || Date.now() + 30 * 24 * 60 * 60 * 1000\n ).toISOString(),\n };\n }\n\n return null;\n } catch (error) {\n if (config.morojs?.debug) {\n logger.error('[MoroJS Auth] Session error', 'AuthAdapter', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n return null;\n }\n },\n };\n}\n\n/**\n * MoroJS Auth middleware factory\n *\n * This creates a MoroJS-compatible middleware for authentication\n * Uses Better Auth internally while maintaining the same API\n */\nexport function createAuthMiddleware(config: MoroJSAuthConfig) {\n logger.info('createAuthMiddleware called - creating middleware function', 'AuthAdapter');\n // Return a function that MoroJS can call directly\n return async (app: any) => {\n logger.info('Installing Better Auth middleware...', 'AuthAdapter');\n logger.debug('App object received', 'AuthAdapter', {\n appType: typeof app,\n appConstructor: app.constructor.name,\n });\n\n // Get the hooks from the app's middleware system\n const hooks =\n (app as any).coreFramework?.middlewareManager?.hooks || (app as any).middlewareManager?.hooks;\n\n if (!hooks) {\n logger.error('Could not access MoroJS hooks system', 'AuthAdapter');\n return;\n }\n\n const options = {};\n const mergedConfig = { ...config, ...options };\n const authHandlers = await MoroJSAuth(mergedConfig);\n const basePath = mergedConfig.basePath || '/api/auth';\n\n // Register request hook\n hooks.before('request', async (context: any) => {\n logger.debug('Native adapter hook starting', 'AuthAdapter');\n const req = context.request;\n logger.debug('Request path', 'AuthAdapter', { path: req.path || req.url });\n\n try {\n // Get session from Better Auth\n const session = await authHandlers.auth(req);\n\n // Add auth object to request\n req.auth = {\n session: session,\n user: session?.user || null,\n isAuthenticated: !!session?.user,\n\n // Helper methods\n getSession: async () => session,\n getUser: () => session?.user || null,\n\n // Sign in/out helpers (redirect to auth routes)\n signIn: (provider?: string, options?: any) => {\n const params = new URLSearchParams();\n if (provider) params.set('provider', provider);\n if (options?.callbackUrl) params.set('callbackUrl', options.callbackUrl);\n\n const signInUrl = `${basePath}/signin${provider ? `/${provider}` : ''}${\n params.toString() ? `?${params.toString()}` : ''\n }`;\n\n return { url: signInUrl };\n },\n\n signOut: (options?: any) => {\n const params = new URLSearchParams();\n if (options?.callbackUrl) params.set('callbackUrl', options.callbackUrl);\n\n const signOutUrl = `${basePath}/signout${\n params.toString() ? `?${params.toString()}` : ''\n }`;\n\n return { url: signOutUrl };\n },\n };\n logger.debug('Native adapter hook completed successfully', 'AuthAdapter');\n } catch (error) {\n logger.error('Error in native adapter hook', 'AuthAdapter', {\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n });\n\n logger.info('Better Auth middleware installed successfully!', 'AuthAdapter');\n };\n}\n\n// Types are already exported above, no need to re-export\n\n/**\n * Default export for convenience\n */\nexport default MoroJSAuth;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../../src/core/config/config-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../../src/core/config/config-manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Configuration Manager - Immutable Single Source of Truth\n *\n * This module provides centralized, immutable configuration state management.\n * Configuration is locked at createApp() initialization and cannot be changed afterward.\n *\n * Precedence: Environment Variables > createApp Options > Config File > Defaults\n */\n\nimport { AppConfig } from '../../types/config.js';\nimport { createFrameworkLogger } from '../logger/index.js';\n\nconst logger = createFrameworkLogger('ConfigManager');\n\n/**\n * Global configuration state - immutable after initialization\n */\nlet globalConfig: Readonly<AppConfig> | null = null;\nlet isLocked = false;\n\n/**\n * Initialize and lock global configuration state\n * This should only be called once during createApp() initialization\n */\nexport function initializeAndLockConfig(config: AppConfig): void {\n if (isLocked) {\n throw new Error(\n 'Configuration is already locked and cannot be changed. ' +\n 'Configuration can only be set once during createApp() initialization.'\n );\n }\n\n // Deep freeze the configuration to make it truly immutable\n globalConfig = deepFreeze(config);\n isLocked = true;\n\n logger.info(\n `Configuration locked and initialized: ${process.env.NODE_ENV || 'development'}:${config.server.port}`\n );\n}\n\n/**\n * Get the current global configuration\n * Throws if configuration hasn't been initialized\n */\nexport function getGlobalConfig(): Readonly<AppConfig> {\n if (!globalConfig || !isLocked) {\n throw new Error(\n 'Configuration not initialized. Call createApp() to initialize the configuration system.'\n );\n }\n return globalConfig;\n}\n\n/**\n * Check if configuration has been initialized and locked\n */\nexport function isConfigLocked(): boolean {\n return isLocked && globalConfig !== null;\n}\n\n/**\n * Reset configuration state (for testing only)\n * @internal - This should only be used in tests\n */\nexport function resetConfigForTesting(): void {\n if (\n process.env.NODE_ENV !== 'test' &&\n !process.env.MORO_ALLOW_CONFIG_RESET &&\n !process.env.JEST_WORKER_ID\n ) {\n throw new Error(\n 'Configuration reset is only allowed in test environments. ' +\n 'Set MORO_ALLOW_CONFIG_RESET=true to override this check.'\n );\n }\n\n globalConfig = null;\n isLocked = false;\n logger.debug('Configuration state reset for testing');\n}\n\n/**\n * Deep freeze an object to make it truly immutable\n * This prevents any accidental mutations to the configuration\n */\nfunction deepFreeze<T>(obj: T): Readonly<T> {\n // Get property names\n const propNames = Object.getOwnPropertyNames(obj);\n\n // Freeze properties before freezing self\n for (const name of propNames) {\n const value = (obj as any)[name];\n\n if (value && typeof value === 'object') {\n deepFreeze(value);\n }\n }\n\n return Object.freeze(obj);\n}\n\n/**\n * Get a specific configuration value using dot notation\n * This provides a safe way to access nested config values\n *\n * @example\n * getConfigValue('server.port') // Returns the server port\n * getConfigValue('database.redis.url') // Returns the Redis URL\n */\nexport function getConfigValue<T = any>(path: string): T | undefined {\n const config = getGlobalConfig();\n\n return path.split('.').reduce((obj: any, key: string) => {\n return obj && obj[key] !== undefined ? obj[key] : undefined;\n }, config);\n}\n\n/**\n * Utility functions for common environment checks\n * These now read NODE_ENV directly for consistency with Node.js ecosystem\n */\nexport function isDevelopment(): boolean {\n return process.env.NODE_ENV === 'development';\n}\n\nexport function isProduction(): boolean {\n return process.env.NODE_ENV === 'production';\n}\n\nexport function isStaging(): boolean {\n return process.env.NODE_ENV === 'staging';\n}\n"]}