@morojs/moro 1.5.17 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/README.md +70 -269
  2. package/dist/core/auth/morojs-adapter.js +5 -9
  3. package/dist/core/auth/morojs-adapter.js.map +1 -1
  4. package/dist/core/config/config-manager.d.ts +1 -1
  5. package/dist/core/config/config-manager.js +10 -20
  6. package/dist/core/config/config-manager.js.map +1 -1
  7. package/dist/core/config/config-sources.d.ts +2 -2
  8. package/dist/core/config/config-sources.js +17 -20
  9. package/dist/core/config/config-sources.js.map +1 -1
  10. package/dist/core/config/config-validator.d.ts +1 -1
  11. package/dist/core/config/config-validator.js +33 -10
  12. package/dist/core/config/config-validator.js.map +1 -1
  13. package/dist/core/config/file-loader.d.ts +1 -1
  14. package/dist/core/config/file-loader.js +19 -78
  15. package/dist/core/config/file-loader.js.map +1 -1
  16. package/dist/core/config/index.d.ts +8 -8
  17. package/dist/core/config/index.js +25 -51
  18. package/dist/core/config/index.js.map +1 -1
  19. package/dist/core/config/schema.d.ts +2 -2
  20. package/dist/core/config/schema.js +11 -13
  21. package/dist/core/config/schema.js.map +1 -1
  22. package/dist/core/config/utils.d.ts +1 -1
  23. package/dist/core/config/utils.js +18 -32
  24. package/dist/core/config/utils.js.map +1 -1
  25. package/dist/core/database/adapters/drizzle.d.ts +1 -1
  26. package/dist/core/database/adapters/drizzle.js +18 -11
  27. package/dist/core/database/adapters/drizzle.js.map +1 -1
  28. package/dist/core/database/adapters/index.d.ts +7 -7
  29. package/dist/core/database/adapters/index.js +19 -29
  30. package/dist/core/database/adapters/index.js.map +1 -1
  31. package/dist/core/database/adapters/mongodb.d.ts +3 -1
  32. package/dist/core/database/adapters/mongodb.js +23 -8
  33. package/dist/core/database/adapters/mongodb.js.map +1 -1
  34. package/dist/core/database/adapters/mysql.d.ts +3 -1
  35. package/dist/core/database/adapters/mysql.js +18 -9
  36. package/dist/core/database/adapters/mysql.js.map +1 -1
  37. package/dist/core/database/adapters/postgresql.d.ts +3 -1
  38. package/dist/core/database/adapters/postgresql.js +18 -8
  39. package/dist/core/database/adapters/postgresql.js.map +1 -1
  40. package/dist/core/database/adapters/redis.d.ts +3 -1
  41. package/dist/core/database/adapters/redis.js +34 -9
  42. package/dist/core/database/adapters/redis.js.map +1 -1
  43. package/dist/core/database/adapters/sqlite.d.ts +3 -1
  44. package/dist/core/database/adapters/sqlite.js +19 -8
  45. package/dist/core/database/adapters/sqlite.js.map +1 -1
  46. package/dist/core/database/index.d.ts +2 -2
  47. package/dist/core/database/index.js +2 -18
  48. package/dist/core/database/index.js.map +1 -1
  49. package/dist/core/docs/index.d.ts +9 -9
  50. package/dist/core/docs/index.js +14 -35
  51. package/dist/core/docs/index.js.map +1 -1
  52. package/dist/core/docs/openapi-generator.d.ts +2 -2
  53. package/dist/core/docs/openapi-generator.js +11 -16
  54. package/dist/core/docs/openapi-generator.js.map +1 -1
  55. package/dist/core/docs/schema-to-openapi.d.ts +2 -2
  56. package/dist/core/docs/schema-to-openapi.js +5 -11
  57. package/dist/core/docs/schema-to-openapi.js.map +1 -1
  58. package/dist/core/docs/simple-docs.d.ts +1 -1
  59. package/dist/core/docs/simple-docs.js +4 -9
  60. package/dist/core/docs/simple-docs.js.map +1 -1
  61. package/dist/core/docs/swagger-ui.d.ts +2 -2
  62. package/dist/core/docs/swagger-ui.js +26 -29
  63. package/dist/core/docs/swagger-ui.js.map +1 -1
  64. package/dist/core/docs/zod-to-openapi.js +31 -28
  65. package/dist/core/docs/zod-to-openapi.js.map +1 -1
  66. package/dist/core/events/event-bus.d.ts +1 -1
  67. package/dist/core/events/event-bus.js +6 -10
  68. package/dist/core/events/event-bus.js.map +1 -1
  69. package/dist/core/events/index.d.ts +2 -2
  70. package/dist/core/events/index.js +1 -5
  71. package/dist/core/events/index.js.map +1 -1
  72. package/dist/core/framework.d.ts +14 -6
  73. package/dist/core/framework.js +150 -88
  74. package/dist/core/framework.js.map +1 -1
  75. package/dist/core/http/http-server.d.ts +1 -1
  76. package/dist/core/http/http-server.js +24 -62
  77. package/dist/core/http/http-server.js.map +1 -1
  78. package/dist/core/http/index.d.ts +4 -3
  79. package/dist/core/http/index.js +3 -8
  80. package/dist/core/http/index.js.map +1 -1
  81. package/dist/core/http/router.d.ts +1 -1
  82. package/dist/core/http/router.js +3 -7
  83. package/dist/core/http/router.js.map +1 -1
  84. package/dist/core/http/uws-http-server.d.ts +64 -0
  85. package/dist/core/http/uws-http-server.js +688 -0
  86. package/dist/core/http/uws-http-server.js.map +1 -0
  87. package/dist/core/logger/filters.d.ts +1 -1
  88. package/dist/core/logger/filters.js +8 -19
  89. package/dist/core/logger/filters.js.map +1 -1
  90. package/dist/core/logger/index.d.ts +3 -3
  91. package/dist/core/logger/index.js +2 -25
  92. package/dist/core/logger/index.js.map +1 -1
  93. package/dist/core/logger/logger.d.ts +1 -1
  94. package/dist/core/logger/logger.js +21 -23
  95. package/dist/core/logger/logger.js.map +1 -1
  96. package/dist/core/logger/outputs.d.ts +1 -1
  97. package/dist/core/logger/outputs.js +8 -15
  98. package/dist/core/logger/outputs.js.map +1 -1
  99. package/dist/core/middleware/built-in/adapters/cache/file.d.ts +1 -1
  100. package/dist/core/middleware/built-in/adapters/cache/file.js +10 -47
  101. package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -1
  102. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +4 -4
  103. package/dist/core/middleware/built-in/adapters/cache/index.js +10 -17
  104. package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -1
  105. package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +1 -1
  106. package/dist/core/middleware/built-in/adapters/cache/memory.js +3 -7
  107. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
  108. package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +3 -1
  109. package/dist/core/middleware/built-in/adapters/cache/redis.js +11 -9
  110. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -1
  111. package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +1 -1
  112. package/dist/core/middleware/built-in/adapters/cdn/azure.js +3 -7
  113. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -1
  114. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +1 -1
  115. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +3 -7
  116. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
  117. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +3 -1
  118. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +12 -10
  119. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -1
  120. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +4 -4
  121. package/dist/core/middleware/built-in/adapters/cdn/index.js +10 -17
  122. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +1 -1
  123. package/dist/core/middleware/built-in/adapters/index.d.ts +4 -4
  124. package/dist/core/middleware/built-in/adapters/index.js +4 -23
  125. package/dist/core/middleware/built-in/adapters/index.js.map +1 -1
  126. package/dist/core/middleware/built-in/auth-helpers.js +11 -22
  127. package/dist/core/middleware/built-in/auth-helpers.js.map +1 -1
  128. package/dist/core/middleware/built-in/auth-providers.d.ts +1 -1
  129. package/dist/core/middleware/built-in/auth-providers.js +4 -9
  130. package/dist/core/middleware/built-in/auth-providers.js.map +1 -1
  131. package/dist/core/middleware/built-in/auth.d.ts +2 -2
  132. package/dist/core/middleware/built-in/auth.js +10 -14
  133. package/dist/core/middleware/built-in/auth.js.map +1 -1
  134. package/dist/core/middleware/built-in/cache.d.ts +2 -2
  135. package/dist/core/middleware/built-in/cache.js +8 -11
  136. package/dist/core/middleware/built-in/cache.js.map +1 -1
  137. package/dist/core/middleware/built-in/cdn.d.ts +2 -2
  138. package/dist/core/middleware/built-in/cdn.js +5 -9
  139. package/dist/core/middleware/built-in/cdn.js.map +1 -1
  140. package/dist/core/middleware/built-in/cookie.d.ts +1 -1
  141. package/dist/core/middleware/built-in/cookie.js +3 -7
  142. package/dist/core/middleware/built-in/cookie.js.map +1 -1
  143. package/dist/core/middleware/built-in/cors.d.ts +1 -1
  144. package/dist/core/middleware/built-in/cors.js +3 -7
  145. package/dist/core/middleware/built-in/cors.js.map +1 -1
  146. package/dist/core/middleware/built-in/csp.d.ts +1 -1
  147. package/dist/core/middleware/built-in/csp.js +5 -8
  148. package/dist/core/middleware/built-in/csp.js.map +1 -1
  149. package/dist/core/middleware/built-in/csrf.d.ts +1 -1
  150. package/dist/core/middleware/built-in/csrf.js +5 -8
  151. package/dist/core/middleware/built-in/csrf.js.map +1 -1
  152. package/dist/core/middleware/built-in/error-tracker.js +3 -7
  153. package/dist/core/middleware/built-in/error-tracker.js.map +1 -1
  154. package/dist/core/middleware/built-in/index.d.ts +28 -28
  155. package/dist/core/middleware/built-in/index.js +47 -82
  156. package/dist/core/middleware/built-in/index.js.map +1 -1
  157. package/dist/core/middleware/built-in/jwt-helpers.d.ts +1 -1
  158. package/dist/core/middleware/built-in/jwt-helpers.js +6 -9
  159. package/dist/core/middleware/built-in/jwt-helpers.js.map +1 -1
  160. package/dist/core/middleware/built-in/performance-monitor.js +3 -7
  161. package/dist/core/middleware/built-in/performance-monitor.js.map +1 -1
  162. package/dist/core/middleware/built-in/rate-limit.d.ts +1 -1
  163. package/dist/core/middleware/built-in/rate-limit.js +3 -7
  164. package/dist/core/middleware/built-in/rate-limit.js.map +1 -1
  165. package/dist/core/middleware/built-in/request-logger.js +3 -7
  166. package/dist/core/middleware/built-in/request-logger.js.map +1 -1
  167. package/dist/core/middleware/built-in/session.d.ts +2 -2
  168. package/dist/core/middleware/built-in/session.js +11 -15
  169. package/dist/core/middleware/built-in/session.js.map +1 -1
  170. package/dist/core/middleware/built-in/sse.d.ts +1 -1
  171. package/dist/core/middleware/built-in/sse.js +3 -7
  172. package/dist/core/middleware/built-in/sse.js.map +1 -1
  173. package/dist/core/middleware/built-in/validation.d.ts +1 -1
  174. package/dist/core/middleware/built-in/validation.js +3 -7
  175. package/dist/core/middleware/built-in/validation.js.map +1 -1
  176. package/dist/core/middleware/index.d.ts +4 -4
  177. package/dist/core/middleware/index.js +8 -28
  178. package/dist/core/middleware/index.js.map +1 -1
  179. package/dist/core/modules/auto-discovery.d.ts +3 -3
  180. package/dist/core/modules/auto-discovery.js +43 -81
  181. package/dist/core/modules/auto-discovery.js.map +1 -1
  182. package/dist/core/modules/index.d.ts +2 -2
  183. package/dist/core/modules/index.js +2 -9
  184. package/dist/core/modules/index.js.map +1 -1
  185. package/dist/core/modules/modules.d.ts +3 -3
  186. package/dist/core/modules/modules.js +11 -52
  187. package/dist/core/modules/modules.js.map +1 -1
  188. package/dist/core/networking/adapters/index.d.ts +4 -3
  189. package/dist/core/networking/adapters/index.js +3 -7
  190. package/dist/core/networking/adapters/index.js.map +1 -1
  191. package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -1
  192. package/dist/core/networking/adapters/socketio-adapter.js +5 -40
  193. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  194. package/dist/core/networking/adapters/uws-adapter.d.ts +44 -0
  195. package/dist/core/networking/adapters/uws-adapter.js +513 -0
  196. package/dist/core/networking/adapters/uws-adapter.js.map +1 -0
  197. package/dist/core/networking/adapters/ws-adapter.d.ts +1 -1
  198. package/dist/core/networking/adapters/ws-adapter.js +7 -42
  199. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  200. package/dist/core/networking/index.d.ts +3 -2
  201. package/dist/core/networking/index.js +2 -7
  202. package/dist/core/networking/index.js.map +1 -1
  203. package/dist/core/networking/service-discovery.js +3 -7
  204. package/dist/core/networking/service-discovery.js.map +1 -1
  205. package/dist/core/networking/websocket-adapter.js +1 -2
  206. package/dist/core/networking/websocket-adapter.js.map +1 -1
  207. package/dist/core/networking/websocket-manager.d.ts +3 -3
  208. package/dist/core/networking/websocket-manager.js +9 -11
  209. package/dist/core/networking/websocket-manager.js.map +1 -1
  210. package/dist/core/routing/app-integration.d.ts +2 -2
  211. package/dist/core/routing/app-integration.js +7 -12
  212. package/dist/core/routing/app-integration.js.map +1 -1
  213. package/dist/core/routing/index.d.ts +2 -2
  214. package/dist/core/routing/index.js +7 -14
  215. package/dist/core/routing/index.js.map +1 -1
  216. package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
  217. package/dist/core/runtime/aws-lambda-adapter.js +2 -6
  218. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  219. package/dist/core/runtime/base-adapter.d.ts +2 -2
  220. package/dist/core/runtime/base-adapter.js +3 -7
  221. package/dist/core/runtime/base-adapter.js.map +1 -1
  222. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
  223. package/dist/core/runtime/cloudflare-workers-adapter.js +2 -6
  224. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  225. package/dist/core/runtime/index.d.ts +12 -12
  226. package/dist/core/runtime/index.js +22 -35
  227. package/dist/core/runtime/index.js.map +1 -1
  228. package/dist/core/runtime/node-adapter.d.ts +4 -4
  229. package/dist/core/runtime/node-adapter.js +6 -43
  230. package/dist/core/runtime/node-adapter.js.map +1 -1
  231. package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
  232. package/dist/core/runtime/vercel-edge-adapter.js +2 -6
  233. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  234. package/dist/core/utilities/circuit-breaker.js +1 -5
  235. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  236. package/dist/core/utilities/container.js +12 -22
  237. package/dist/core/utilities/container.js.map +1 -1
  238. package/dist/core/utilities/hooks.d.ts +2 -2
  239. package/dist/core/utilities/hooks.js +7 -12
  240. package/dist/core/utilities/hooks.js.map +1 -1
  241. package/dist/core/utilities/index.d.ts +5 -4
  242. package/dist/core/utilities/index.js +5 -19
  243. package/dist/core/utilities/index.js.map +1 -1
  244. package/dist/core/utilities/package-utils.d.ts +38 -0
  245. package/dist/core/utilities/package-utils.js +57 -0
  246. package/dist/core/utilities/package-utils.js.map +1 -0
  247. package/dist/core/validation/adapters.d.ts +1 -1
  248. package/dist/core/validation/adapters.js +15 -26
  249. package/dist/core/validation/adapters.js.map +1 -1
  250. package/dist/core/validation/index.d.ts +6 -4
  251. package/dist/core/validation/index.js +57 -28
  252. package/dist/core/validation/index.js.map +1 -1
  253. package/dist/core/validation/schema-interface.js +3 -9
  254. package/dist/core/validation/schema-interface.js.map +1 -1
  255. package/dist/index.d.ts +51 -52
  256. package/dist/index.js +23 -132
  257. package/dist/index.js.map +1 -1
  258. package/dist/moro.d.ts +13 -10
  259. package/dist/moro.js +132 -102
  260. package/dist/moro.js.map +1 -1
  261. package/dist/types/auth.js +3 -9
  262. package/dist/types/auth.js.map +1 -1
  263. package/dist/types/cache.js +1 -2
  264. package/dist/types/cdn.js +1 -2
  265. package/dist/types/config.d.ts +13 -1
  266. package/dist/types/config.js +1 -2
  267. package/dist/types/config.js.map +1 -1
  268. package/dist/types/core.d.ts +3 -3
  269. package/dist/types/core.js +1 -2
  270. package/dist/types/database.js +1 -2
  271. package/dist/types/discovery.js +1 -2
  272. package/dist/types/events.js +1 -2
  273. package/dist/types/hooks.d.ts +1 -1
  274. package/dist/types/hooks.js +1 -2
  275. package/dist/types/http.js +1 -2
  276. package/dist/types/logger.js +1 -2
  277. package/dist/types/module.js +1 -2
  278. package/dist/types/runtime.d.ts +1 -1
  279. package/dist/types/runtime.js +1 -2
  280. package/dist/types/session.js +1 -2
  281. package/jest.config.mjs +41 -0
  282. package/package.json +18 -51
  283. package/src/core/auth/morojs-adapter.ts +1 -1
  284. package/src/core/config/config-manager.ts +2 -2
  285. package/src/core/config/config-sources.ts +6 -6
  286. package/src/core/config/config-validator.ts +38 -3
  287. package/src/core/config/file-loader.ts +13 -40
  288. package/src/core/config/index.ts +15 -11
  289. package/src/core/config/schema.ts +3 -2
  290. package/src/core/config/utils.ts +3 -3
  291. package/src/core/database/adapters/drizzle.ts +18 -6
  292. package/src/core/database/adapters/index.ts +13 -13
  293. package/src/core/database/adapters/mongodb.ts +23 -3
  294. package/src/core/database/adapters/mysql.ts +18 -4
  295. package/src/core/database/adapters/postgresql.ts +18 -3
  296. package/src/core/database/adapters/redis.ts +34 -4
  297. package/src/core/database/adapters/sqlite.ts +19 -3
  298. package/src/core/database/index.ts +2 -2
  299. package/src/core/docs/index.ts +8 -8
  300. package/src/core/docs/openapi-generator.ts +4 -4
  301. package/src/core/docs/schema-to-openapi.ts +3 -6
  302. package/src/core/docs/simple-docs.ts +2 -2
  303. package/src/core/docs/swagger-ui.ts +19 -16
  304. package/src/core/docs/zod-to-openapi.ts +34 -34
  305. package/src/core/events/event-bus.ts +2 -2
  306. package/src/core/events/index.ts +2 -2
  307. package/src/core/framework.ts +148 -44
  308. package/src/core/http/http-server.ts +14 -9
  309. package/src/core/http/index.ts +4 -3
  310. package/src/core/http/router.ts +2 -2
  311. package/src/core/http/uws-http-server.ts +794 -0
  312. package/src/core/logger/filters.ts +1 -1
  313. package/src/core/logger/index.ts +3 -3
  314. package/src/core/logger/logger.ts +9 -1
  315. package/src/core/logger/outputs.ts +1 -1
  316. package/src/core/middleware/built-in/adapters/cache/file.ts +3 -3
  317. package/src/core/middleware/built-in/adapters/cache/index.ts +7 -7
  318. package/src/core/middleware/built-in/adapters/cache/memory.ts +2 -2
  319. package/src/core/middleware/built-in/adapters/cache/redis.ts +18 -4
  320. package/src/core/middleware/built-in/adapters/cdn/azure.ts +2 -2
  321. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +2 -2
  322. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +16 -5
  323. package/src/core/middleware/built-in/adapters/cdn/index.ts +7 -7
  324. package/src/core/middleware/built-in/adapters/index.ts +4 -4
  325. package/src/core/middleware/built-in/auth-helpers.ts +1 -1
  326. package/src/core/middleware/built-in/auth-providers.ts +1 -1
  327. package/src/core/middleware/built-in/auth.ts +6 -6
  328. package/src/core/middleware/built-in/cache.ts +5 -5
  329. package/src/core/middleware/built-in/cdn.ts +4 -4
  330. package/src/core/middleware/built-in/cookie.ts +2 -2
  331. package/src/core/middleware/built-in/cors.ts +2 -2
  332. package/src/core/middleware/built-in/csp.ts +3 -3
  333. package/src/core/middleware/built-in/csrf.ts +3 -3
  334. package/src/core/middleware/built-in/error-tracker.ts +1 -1
  335. package/src/core/middleware/built-in/index.ts +31 -31
  336. package/src/core/middleware/built-in/jwt-helpers.ts +6 -3
  337. package/src/core/middleware/built-in/performance-monitor.ts +1 -1
  338. package/src/core/middleware/built-in/rate-limit.ts +2 -2
  339. package/src/core/middleware/built-in/request-logger.ts +1 -1
  340. package/src/core/middleware/built-in/session.ts +7 -8
  341. package/src/core/middleware/built-in/sse.ts +2 -2
  342. package/src/core/middleware/built-in/validation.ts +2 -2
  343. package/src/core/middleware/index.ts +6 -6
  344. package/src/core/modules/auto-discovery.ts +4 -4
  345. package/src/core/modules/index.ts +2 -2
  346. package/src/core/modules/modules.ts +4 -4
  347. package/src/core/networking/adapters/index.ts +4 -3
  348. package/src/core/networking/adapters/socketio-adapter.ts +5 -3
  349. package/src/core/networking/adapters/uws-adapter.ts +619 -0
  350. package/src/core/networking/adapters/ws-adapter.ts +6 -4
  351. package/src/core/networking/index.ts +3 -2
  352. package/src/core/networking/service-discovery.ts +1 -1
  353. package/src/core/networking/websocket-manager.ts +7 -7
  354. package/src/core/routing/app-integration.ts +3 -3
  355. package/src/core/routing/index.ts +3 -3
  356. package/src/core/runtime/aws-lambda-adapter.ts +3 -3
  357. package/src/core/runtime/base-adapter.ts +2 -2
  358. package/src/core/runtime/cloudflare-workers-adapter.ts +3 -3
  359. package/src/core/runtime/index.ts +13 -13
  360. package/src/core/runtime/node-adapter.ts +4 -4
  361. package/src/core/runtime/vercel-edge-adapter.ts +3 -3
  362. package/src/core/utilities/hooks.ts +3 -3
  363. package/src/core/utilities/index.ts +5 -4
  364. package/src/core/utilities/package-utils.ts +59 -0
  365. package/src/core/validation/adapters.ts +1 -1
  366. package/src/core/validation/index.ts +68 -16
  367. package/src/index.ts +73 -66
  368. package/src/moro.ts +144 -51
  369. package/src/types/config.ts +13 -1
  370. package/src/types/core.ts +3 -3
  371. package/src/types/hooks.ts +1 -1
  372. package/src/types/runtime.ts +1 -1
  373. package/tsconfig.json +4 -2
package/src/index.ts CHANGED
@@ -7,9 +7,9 @@ export {
7
7
  createAppEdge,
8
8
  createAppLambda,
9
9
  createAppWorker,
10
- } from './moro';
10
+ } from './moro.js';
11
11
 
12
- export type { MoroOptions } from './core/framework';
12
+ export type { MoroOptions } from './core/framework.js';
13
13
 
14
14
  // Export auth types and middleware
15
15
  export type {
@@ -29,13 +29,13 @@ export type {
29
29
  EmailProvider,
30
30
  SignInOptions,
31
31
  SignOutOptions,
32
- } from './types/auth';
32
+ } from './types/auth.js';
33
33
 
34
34
  // Export native @auth/morojs adapter
35
- export { createAuthMiddleware, MoroJSAuth } from './core/auth/morojs-adapter';
35
+ export { createAuthMiddleware, MoroJSAuth } from './core/auth/morojs-adapter.js';
36
36
 
37
37
  // Export Auth.js middleware and providers
38
- export { auth, providers } from './core/middleware/built-in/auth';
38
+ export { auth, providers } from './core/middleware/built-in/auth.js';
39
39
 
40
40
  // Runtime system exports
41
41
  export type {
@@ -43,7 +43,7 @@ export type {
43
43
  RuntimeAdapter,
44
44
  RuntimeConfig,
45
45
  RuntimeHttpResponse,
46
- } from './types/runtime';
46
+ } from './types/runtime.js';
47
47
 
48
48
  export {
49
49
  NodeRuntimeAdapter,
@@ -55,23 +55,27 @@ export {
55
55
  createEdgeHandler,
56
56
  createLambdaHandler,
57
57
  createWorkerHandler,
58
- } from './core/runtime';
58
+ } from './core/runtime/index.js';
59
59
 
60
60
  // Runtime-specific types
61
- export type { LambdaEvent, LambdaContext, LambdaResponse } from './core/runtime/aws-lambda-adapter';
62
- export type { WorkersEnv, WorkersContext } from './core/runtime/cloudflare-workers-adapter';
61
+ export type {
62
+ LambdaEvent,
63
+ LambdaContext,
64
+ LambdaResponse,
65
+ } from './core/runtime/aws-lambda-adapter.js';
66
+ export type { WorkersEnv, WorkersContext } from './core/runtime/cloudflare-workers-adapter.js';
63
67
 
64
68
  // Core exports
65
- export { MoroHttpServer, middleware as httpMiddleware } from './core/http';
66
- export { builtInMiddleware, simpleMiddleware } from './core/middleware/built-in';
69
+ export {
70
+ MoroHttpServer,
71
+ UWebSocketsHttpServer,
72
+ middleware as httpMiddleware,
73
+ } from './core/http/index.js';
74
+ export { builtInMiddleware, simpleMiddleware } from './core/middleware/built-in/index.js';
67
75
 
68
76
  // Networking System
69
- export {
70
- WebSocketManager,
71
- ServiceRegistry,
72
- ServiceInfo,
73
- ServiceDiscoveryOptions,
74
- } from './core/networking';
77
+ export { WebSocketManager, ServiceRegistry } from './core/networking/index.js';
78
+ export type { ServiceInfo, ServiceDiscoveryOptions } from './core/networking/service-discovery.js';
75
79
 
76
80
  // Utilities and Container System
77
81
  export {
@@ -87,10 +91,13 @@ export {
87
91
  HookManager,
88
92
  HOOK_EVENTS,
89
93
  middleware,
90
- } from './core/utilities';
94
+ isPackageAvailable,
95
+ resolveUserPackage,
96
+ createUserRequire,
97
+ } from './core/utilities/index.js';
91
98
 
92
99
  // Event System
93
- export { MoroEventBus } from './core/events';
100
+ export { MoroEventBus } from './core/events/index.js';
94
101
  export type {
95
102
  EventContext,
96
103
  EventPayload,
@@ -100,38 +107,29 @@ export type {
100
107
  EventMetrics,
101
108
  SystemEvents,
102
109
  EventHandler,
103
- } from './types/events';
110
+ } from './types/events.js';
104
111
 
105
112
  // Logger System
106
- export { createFrameworkLogger, logger } from './core/logger';
113
+ export { createFrameworkLogger, logger } from './core/logger/index.js';
107
114
 
108
115
  // Universal Validation System
109
- export { validate, body, query, params, combineSchemas } from './core/validation';
110
-
111
- // Dynamic Zod export (optional dependency)
112
- let z: any;
113
- try {
114
- z = require('zod').z;
115
- } catch {
116
- // Zod not available - that's fine!
117
- z = undefined;
118
- }
119
- export { z };
116
+ export { validate, body, query, params, combineSchemas, z } from './core/validation/index.js';
117
+
120
118
  export type {
121
119
  ValidationConfig,
122
120
  ValidationResult,
123
121
  ValidationErrorDetail,
124
122
  ValidatedRequest,
125
- } from './core/validation';
123
+ } from './core/validation/index.js';
126
124
 
127
- // Universal Validation Interfaces and Adapters
125
+ // Validation Interfaces and Adapters
128
126
  export type {
129
127
  ValidationSchema,
130
128
  ValidationError,
131
129
  InferSchemaType,
132
- } from './core/validation/schema-interface';
133
- export { normalizeValidationError } from './core/validation/schema-interface';
134
- export { joi, yup, fn as customValidator, classValidator } from './core/validation/adapters';
130
+ } from './core/validation/schema-interface.js';
131
+ export { normalizeValidationError } from './core/validation/schema-interface.js';
132
+ export { joi, yup, fn as customValidator, classValidator } from './core/validation/adapters.js';
135
133
 
136
134
  // Module System
137
135
  export {
@@ -139,8 +137,8 @@ export {
139
137
  ModuleLoader,
140
138
  ModuleDiscovery,
141
139
  autoDiscoverModuleDirectories,
142
- } from './core/modules';
143
- export type { ModuleDefinition, ModuleRoute, ModuleSocket, ModuleConfig } from './types/module';
140
+ } from './core/modules/index.js';
141
+ export type { ModuleDefinition, ModuleRoute, ModuleSocket, ModuleConfig } from './types/module.js';
144
142
 
145
143
  // WebSocket Adapter System
146
144
  export type {
@@ -151,14 +149,18 @@ export type {
151
149
  WebSocketEmitter,
152
150
  WebSocketMiddleware,
153
151
  WebSocketEventHandler,
154
- } from './core/networking/websocket-adapter';
152
+ } from './core/networking/websocket-adapter.js';
155
153
 
156
154
  // Built-in WebSocket Adapters
157
- export { SocketIOAdapter, WSAdapter } from './core/networking/adapters';
155
+ export {
156
+ SocketIOAdapter,
157
+ WSAdapter,
158
+ UWebSocketsAdapter,
159
+ } from './core/networking/adapters/index.js';
158
160
 
159
161
  // Intelligent Routing System
160
- export { createRoute, defineRoute, EXECUTION_PHASES } from './core/routing';
161
- export { IntelligentRoutingManager, RouteRegistry } from './core/routing/app-integration';
162
+ export { createRoute, defineRoute, EXECUTION_PHASES } from './core/routing/index.js';
163
+ export { IntelligentRoutingManager, RouteRegistry } from './core/routing/app-integration.js';
162
164
  export type {
163
165
  RouteBuilder,
164
166
  RouteSchema,
@@ -169,7 +171,7 @@ export type {
169
171
  CacheConfig,
170
172
  MiddlewarePhases,
171
173
  ExecutionPhase,
172
- } from './core/routing';
174
+ } from './core/routing/index.js';
173
175
 
174
176
  // Documentation System
175
177
  export {
@@ -177,8 +179,8 @@ export {
177
179
  AppDocumentationManager,
178
180
  createDocumentationSystem,
179
181
  generateDocsFromIntelligentRoutes,
180
- } from './core/docs';
181
- export type { DocsConfig } from './core/docs';
182
+ } from './core/docs/index.js';
183
+ export type { DocsConfig } from './core/docs/index.js';
182
184
 
183
185
  // Configuration utilities
184
186
  export {
@@ -193,34 +195,39 @@ export {
193
195
  requireEnvVars,
194
196
  envVar,
195
197
  getConfigValue,
196
- } from './core/config/utils';
198
+ } from './core/config/utils.js';
197
199
 
198
- export { initializeConfig, getGlobalConfig, isConfigInitialized, resetConfig } from './core/config';
200
+ export {
201
+ initializeConfig,
202
+ getGlobalConfig,
203
+ isConfigInitialized,
204
+ resetConfig,
205
+ } from './core/config/index.js';
199
206
 
200
207
  // Export configuration types for TypeScript users
201
- export type { AppConfig } from './core/config';
208
+ export type { AppConfig } from './core/config/index.js';
202
209
 
203
210
  // Middleware System
204
- export { MiddlewareManager } from './core/middleware';
205
- export type { MiddlewareInterface, MoroMiddleware } from './core/middleware';
211
+ export { MiddlewareManager } from './core/middleware/index.js';
212
+ export type { MiddlewareInterface, MoroMiddleware } from './core/middleware/index.js';
206
213
 
207
214
  // Types
208
- export type * from './types/core';
209
- export type * from './types/http';
210
- export type * from './types/hooks';
211
- export type * from './types/cache';
212
- export type * from './types/cdn';
213
- export type * from './types/database';
214
- export type * from './types/logger';
215
- export type * from './types/session';
216
- export type * from './types/discovery';
215
+ export type * from './types/core.js';
216
+ export type * from './types/http.js';
217
+ export type * from './types/hooks.js';
218
+ export type * from './types/cache.js';
219
+ export type * from './types/cdn.js';
220
+ export type * from './types/database.js';
221
+ export type * from './types/logger.js';
222
+ export type * from './types/session.js';
223
+ export type * from './types/discovery.js';
217
224
 
218
225
  // Adapters
219
- export * from './core/middleware/built-in/adapters';
220
- export * from './core/database/adapters';
226
+ export * from './core/middleware/built-in/adapters/index.js';
227
+ export * from './core/database/adapters/index.js';
221
228
 
222
229
  // Re-export commonly used types for convenience
223
- export type { CacheAdapter, CacheOptions, CacheStrategy } from './types/cache';
224
- export type { CDNAdapter, CDNOptions } from './types/cdn';
225
- export type { DatabaseAdapter, DatabaseTransaction, DatabaseConfig } from './types/database';
226
- export type { CookieOptions } from './types/http';
230
+ export type { CacheAdapter, CacheOptions, CacheStrategy } from './types/cache.js';
231
+ export type { CDNAdapter, CDNOptions } from './types/cdn.js';
232
+ export type { DatabaseAdapter, DatabaseTransaction, DatabaseConfig } from './types/database.js';
233
+ export type { CookieOptions } from './types/http.js';
package/src/moro.ts CHANGED
@@ -1,26 +1,29 @@
1
1
  // Moro Framework - Modern TypeScript API Framework
2
2
  // Built for developers who demand performance, elegance, and zero compromises
3
3
  // Event-driven • Modular • Enterprise-ready • Developer-first
4
- import { Moro as MoroCore } from './core/framework';
5
- import { HttpRequest, HttpResponse, middleware } from './core/http';
6
- import { ModuleConfig, InternalRouteDefinition } from './types/module';
7
- import { MoroOptions } from './types/core';
8
- import { ModuleDefaultsConfig } from './types/config';
9
- import { MoroEventBus } from './core/events';
10
- import { createFrameworkLogger, applyLoggingConfiguration } from './core/logger';
11
- import { Logger } from './types/logger';
12
- import { MiddlewareManager } from './core/middleware';
13
- import { IntelligentRoutingManager } from './core/routing/app-integration';
14
- import { RouteBuilder, RouteSchema, CompiledRoute } from './core/routing';
15
- import { AppDocumentationManager, DocsConfig } from './core/docs';
4
+ import { Moro as MoroCore } from './core/framework.js';
5
+ import { HttpRequest, HttpResponse, middleware } from './core/http/index.js';
6
+ import { ModuleConfig, InternalRouteDefinition } from './types/module.js';
7
+ import { MoroOptions } from './types/core.js';
8
+ import { ModuleDefaultsConfig } from './types/config.js';
9
+ import { MoroEventBus } from './core/events/index.js';
10
+ import { createFrameworkLogger, applyLoggingConfiguration } from './core/logger/index.js';
11
+ import { Logger } from './types/logger.js';
12
+ import { MiddlewareManager } from './core/middleware/index.js';
13
+ import { IntelligentRoutingManager } from './core/routing/app-integration.js';
14
+ import { RouteBuilder, RouteSchema, CompiledRoute } from './core/routing/index.js';
15
+ import { AppDocumentationManager, DocsConfig } from './core/docs/index.js';
16
16
  import { EventEmitter } from 'events';
17
+ import cluster from 'cluster';
18
+ import os from 'os';
19
+ import { normalizeValidationError } from './core/validation/schema-interface.js';
17
20
  // Configuration System Integration
18
- import { initializeConfig, type AppConfig } from './core/config';
21
+ import { initializeConfig, type AppConfig } from './core/config/index.js';
19
22
  // Runtime System Integration
20
- import { RuntimeAdapter, RuntimeType, createRuntimeAdapter } from './core/runtime';
23
+ import { RuntimeAdapter, RuntimeType, createRuntimeAdapter } from './core/runtime/index.js';
21
24
 
22
25
  export class Moro extends EventEmitter {
23
- private coreFramework: MoroCore;
26
+ private coreFramework!: MoroCore;
24
27
  private routes: InternalRouteDefinition[] = [];
25
28
  private moduleCounter = 0;
26
29
  private loadedModules = new Set<string>();
@@ -31,7 +34,7 @@ export class Moro extends EventEmitter {
31
34
  private autoDiscoveryInitialized = false;
32
35
  private autoDiscoveryPromise: Promise<void> | null = null;
33
36
  // Enterprise event system integration
34
- private eventBus: MoroEventBus;
37
+ private eventBus!: MoroEventBus;
35
38
  // Application logger
36
39
  private logger!: Logger;
37
40
  // Intelligent routing system
@@ -39,12 +42,18 @@ export class Moro extends EventEmitter {
39
42
  // Documentation system
40
43
  private documentation = new AppDocumentationManager();
41
44
  // Configuration system
42
- private config: AppConfig;
45
+ private config!: AppConfig;
43
46
  // Runtime system
44
- private runtimeAdapter: RuntimeAdapter;
45
- private runtimeType: RuntimeType;
47
+ private runtimeAdapter!: RuntimeAdapter;
48
+ private runtimeType!: RuntimeType;
46
49
  // Middleware system
47
- private middlewareManager: MiddlewareManager;
50
+ private middlewareManager!: MiddlewareManager;
51
+ // Queued WebSocket registrations (for async adapter detection)
52
+ private queuedWebSocketRegistrations: Array<{
53
+ namespace: string;
54
+ handlers: Record<string, Function>;
55
+ processed: boolean;
56
+ }> = [];
48
57
 
49
58
  constructor(options: MoroOptions = {}) {
50
59
  super(); // Call EventEmitter constructor
@@ -88,7 +97,11 @@ export class Moro extends EventEmitter {
88
97
  const frameworkOptions: any = {
89
98
  ...options,
90
99
  logger: this.config.logging,
91
- websocket: this.config.websocket.enabled ? options.websocket || {} : false,
100
+ // Enable websockets if either config has it enabled OR user passed websocket options
101
+ websocket:
102
+ this.config.websocket.enabled || options.websocket
103
+ ? options.websocket || this.config.websocket || {}
104
+ : false,
92
105
  config: this.config,
93
106
  };
94
107
 
@@ -375,34 +388,45 @@ export class Moro extends EventEmitter {
375
388
 
376
389
  // WebSocket helper with events
377
390
  websocket(namespace: string, handlers: Record<string, Function>) {
391
+ // Queue the registration to be processed after adapter initialization
392
+ const registration = { namespace, handlers, processed: false };
393
+ this.queuedWebSocketRegistrations.push(registration);
394
+
395
+ // Try to process immediately if adapter is already ready
378
396
  const adapter = this.coreFramework.getWebSocketAdapter();
379
- if (!adapter) {
380
- throw new Error(
381
- 'WebSocket features require a WebSocket adapter. Install socket.io or configure an adapter:\n' +
382
- 'npm install socket.io\n' +
383
- 'or\n' +
384
- 'new Moro({ websocket: { adapter: new SocketIOAdapter() } })'
385
- );
397
+ if (adapter && !registration.processed) {
398
+ // Adapter is ready, process immediately
399
+ this.processWebSocketRegistration(namespace, handlers, adapter);
400
+ registration.processed = true;
386
401
  }
402
+ // Otherwise, it will be processed when the server starts
403
+
404
+ return this;
405
+ }
387
406
 
407
+ private processWebSocketRegistration(
408
+ namespace: string,
409
+ handlers: Record<string, Function>,
410
+ adapter: any
411
+ ) {
388
412
  this.emit('websocket:registering', { namespace, handlers });
389
413
 
390
414
  const ns = adapter.createNamespace(namespace);
391
415
 
392
416
  Object.entries(handlers).forEach(([event, handler]) => {
393
- ns.on('connection', socket => {
417
+ ns.on('connection', (socket: any) => {
394
418
  this.emit('websocket:connection', { namespace, event, socket });
395
419
 
396
- socket.on(event, (data, callback) => {
420
+ socket.on(event, (data: any, callback: any) => {
397
421
  this.emit('websocket:event', { namespace, event, data });
398
422
 
399
423
  Promise.resolve(handler(socket, data))
400
- .then(result => {
424
+ .then((result: any) => {
401
425
  this.emit('websocket:response', { namespace, event, result });
402
426
  if (callback) callback(result);
403
427
  else if (result) socket.emit(`${event}:response`, result);
404
428
  })
405
- .catch(error => {
429
+ .catch((error: any) => {
406
430
  this.emit('websocket:error', { namespace, event, error });
407
431
  const errorResponse = { success: false, error: error.message };
408
432
  if (callback) callback(errorResponse);
@@ -413,7 +437,40 @@ export class Moro extends EventEmitter {
413
437
  });
414
438
 
415
439
  this.emit('websocket:registered', { namespace, handlers });
416
- return this;
440
+ }
441
+
442
+ private async processQueuedWebSocketRegistrations() {
443
+ // Wait for WebSocket adapter to be ready
444
+ await this.coreFramework.ensureWebSocketReady();
445
+
446
+ const adapter = this.coreFramework.getWebSocketAdapter();
447
+
448
+ // Check if any unprocessed registrations exist
449
+ const unprocessedRegistrations = this.queuedWebSocketRegistrations.filter(r => !r.processed);
450
+
451
+ if (!adapter && unprocessedRegistrations.length > 0) {
452
+ throw new Error(
453
+ 'WebSocket features require a WebSocket adapter.\n\n' +
454
+ 'Option 1: Install socket.io (auto-detected):\n' +
455
+ ' npm install socket.io\n' +
456
+ ' const app = new Moro({ websocket: {} });\n\n' +
457
+ 'Option 2: Configure a specific adapter:\n' +
458
+ " import { SocketIOAdapter } from '@morojs/moro';\n" +
459
+ ' const app = new Moro({ websocket: { adapter: new SocketIOAdapter() } });\n\n' +
460
+ 'Option 3: Enable in config file (moro.config.js):\n' +
461
+ ' export default { websocket: { enabled: true } };'
462
+ );
463
+ }
464
+
465
+ if (adapter) {
466
+ // Process all unprocessed registrations
467
+ for (const registration of this.queuedWebSocketRegistrations) {
468
+ if (!registration.processed) {
469
+ this.processWebSocketRegistration(registration.namespace, registration.handlers, adapter);
470
+ registration.processed = true;
471
+ }
472
+ }
473
+ }
417
474
  }
418
475
 
419
476
  // Start server with events (Node.js only)
@@ -469,9 +526,21 @@ export class Moro extends EventEmitter {
469
526
  }
470
527
 
471
528
  // Check if clustering is enabled for massive performance gains
529
+ // NOTE: uWebSockets.js does NOT support Node.js clustering - it's single-threaded only
530
+ const usingUWebSockets = this.config.server?.useUWebSockets || false;
531
+
472
532
  if (this.config.performance?.clustering?.enabled) {
473
- this.startWithClustering(port, host as string, callback);
474
- return;
533
+ if (usingUWebSockets) {
534
+ this.logger.warn(
535
+ 'Clustering is not supported with uWebSockets.js - running in single-threaded mode. ' +
536
+ 'uWebSockets is so fast that single-threaded performance often exceeds multi-threaded Node.js!',
537
+ 'Cluster'
538
+ );
539
+ // Continue without clustering
540
+ } else {
541
+ this.startWithClustering(port, host as string, callback);
542
+ return;
543
+ }
475
544
  }
476
545
  this.eventBus.emit('server:starting', { port, runtime: this.runtimeType });
477
546
 
@@ -529,16 +598,23 @@ export class Moro extends EventEmitter {
529
598
  }
530
599
  };
531
600
 
532
- // Ensure auto-discovery is complete before starting server
533
- this.ensureAutoDiscoveryComplete()
601
+ // Ensure auto-discovery and WebSocket setup is complete before starting server
602
+ Promise.all([this.ensureAutoDiscoveryComplete(), this.processQueuedWebSocketRegistrations()])
534
603
  .then(() => {
535
604
  startServer();
536
605
  })
537
606
  .catch(error => {
538
- this.logger.error('Auto-discovery initialization failed during server start', 'Framework', {
607
+ this.logger.error('Initialization failed during server start', 'Framework', {
539
608
  error: error instanceof Error ? error.message : String(error),
540
609
  });
541
- // Start server anyway - auto-discovery failure shouldn't prevent startup
610
+ // For auto-discovery failures, start server anyway
611
+ // For WebSocket failures with queued registrations, error will propagate
612
+ if (
613
+ error instanceof Error &&
614
+ error.message.includes('WebSocket features require a WebSocket adapter')
615
+ ) {
616
+ throw error;
617
+ }
542
618
  startServer();
543
619
  });
544
620
  }
@@ -901,7 +977,6 @@ export class Moro extends EventEmitter {
901
977
  req.body = validated;
902
978
  } catch (error: any) {
903
979
  // Handle universal validation errors
904
- const { normalizeValidationError } = require('./core/validation/schema-interface');
905
980
  const normalizedError = normalizeValidationError(error);
906
981
  res.status(400).json({
907
982
  success: false,
@@ -1016,7 +1091,7 @@ export class Moro extends EventEmitter {
1016
1091
 
1017
1092
  // Enhanced auto-discovery initialization
1018
1093
  private async initializeAutoDiscovery(options: MoroOptions): Promise<void> {
1019
- const { ModuleDiscovery } = await import('./core/modules/auto-discovery');
1094
+ const { ModuleDiscovery } = await import('./core/modules/auto-discovery.js');
1020
1095
 
1021
1096
  // Merge auto-discovery configuration
1022
1097
  const autoDiscoveryConfig = this.mergeAutoDiscoveryConfig(options);
@@ -1251,9 +1326,6 @@ export class Moro extends EventEmitter {
1251
1326
  private clusterWorkers = new Map<number, any>();
1252
1327
 
1253
1328
  private startWithClustering(port: number, host?: string, callback?: () => void): void {
1254
- const cluster = require('cluster');
1255
- const os = require('os');
1256
-
1257
1329
  // Worker count calculation - respect user choice
1258
1330
  let workerCount = this.config.performance?.clustering?.workers || os.cpus().length;
1259
1331
 
@@ -1374,9 +1446,8 @@ export class Moro extends EventEmitter {
1374
1446
  }
1375
1447
 
1376
1448
  // Research-based memory optimization for workers
1377
- const os = require('os');
1378
1449
  const totalMemoryGB = os.totalmem() / (1024 * 1024 * 1024);
1379
- const workerCount = Object.keys(require('cluster').workers || {}).length || 1;
1450
+ const workerCount = Object.keys(cluster.workers || {}).length || 1;
1380
1451
 
1381
1452
  // Conservative memory allocation
1382
1453
  const heapSizePerWorkerMB = Math.min(
@@ -1477,11 +1548,33 @@ export class Moro extends EventEmitter {
1477
1548
  });
1478
1549
  };
1479
1550
 
1480
- if (host) {
1481
- this.coreFramework.listen(port, host, workerCallback);
1482
- } else {
1483
- this.coreFramework.listen(port, workerCallback);
1484
- }
1551
+ // Ensure WebSocket setup is complete before starting worker
1552
+ this.processQueuedWebSocketRegistrations()
1553
+ .then(() => {
1554
+ if (host) {
1555
+ this.coreFramework.listen(port, host, workerCallback);
1556
+ } else {
1557
+ this.coreFramework.listen(port, workerCallback);
1558
+ }
1559
+ })
1560
+ .catch(error => {
1561
+ this.logger.error('WebSocket initialization failed in worker', 'Worker', {
1562
+ error: error instanceof Error ? error.message : String(error),
1563
+ });
1564
+ // For WebSocket failures with queued registrations, error will propagate
1565
+ if (
1566
+ error instanceof Error &&
1567
+ error.message.includes('WebSocket features require a WebSocket adapter')
1568
+ ) {
1569
+ throw error;
1570
+ }
1571
+ // Start anyway for other errors
1572
+ if (host) {
1573
+ this.coreFramework.listen(port, host, workerCallback);
1574
+ } else {
1575
+ this.coreFramework.listen(port, workerCallback);
1576
+ }
1577
+ });
1485
1578
  }
1486
1579
  }
1487
1580
 
@@ -12,6 +12,12 @@ export interface ServerConfig {
12
12
  errorBoundary: {
13
13
  enabled: boolean;
14
14
  };
15
+ useUWebSockets?: boolean; // Enable uWebSockets for both HTTP and WebSocket
16
+ ssl?: {
17
+ key_file_name?: string;
18
+ cert_file_name?: string;
19
+ passphrase?: string;
20
+ };
15
21
  }
16
22
 
17
23
  export interface ServiceDiscoveryConfig {
@@ -187,7 +193,7 @@ export interface PerformanceConfig {
187
193
 
188
194
  export interface WebSocketConfig {
189
195
  enabled: boolean;
190
- adapter?: string | 'socket.io' | 'ws';
196
+ adapter?: string | 'socket.io' | 'ws' | 'uws';
191
197
  compression?: boolean;
192
198
  customIdGenerator?: () => string;
193
199
  options?: {
@@ -197,6 +203,12 @@ export interface WebSocketConfig {
197
203
  };
198
204
  path?: string;
199
205
  maxPayloadLength?: number;
206
+ idleTimeout?: number;
207
+ ssl?: {
208
+ key_file_name?: string;
209
+ cert_file_name?: string;
210
+ passphrase?: string;
211
+ };
200
212
  };
201
213
  }
202
214
 
package/src/types/core.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  // Core Framework Types
2
- import { RuntimeConfig } from './runtime';
3
- import { LogLevel, LoggerOptions } from './logger';
4
- import { AppConfig } from './config';
2
+ import { RuntimeConfig } from './runtime.js';
3
+ import { LogLevel, LoggerOptions } from './logger.js';
4
+ import { AppConfig } from './config.js';
5
5
 
6
6
  export interface MoroOptions {
7
7
  autoDiscover?:
@@ -1,5 +1,5 @@
1
1
  // Hooks and Middleware Types
2
- import { HttpRequest, HttpResponse } from './http';
2
+ import { HttpRequest, HttpResponse } from '../core/http/index.js';
3
3
 
4
4
  export type HookFunction = (...args: any[]) => Promise<any> | any;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // Runtime abstraction types for multi-environment support
2
- import { HttpRequest, HttpResponse } from './http';
2
+ import { HttpRequest, HttpResponse } from '../core/http/index.js';
3
3
 
4
4
  export type RuntimeType = 'node' | 'vercel-edge' | 'aws-lambda' | 'cloudflare-workers';
5
5
 
package/tsconfig.json CHANGED
@@ -2,7 +2,8 @@
2
2
  {
3
3
  "compilerOptions": {
4
4
  "target": "ES2022",
5
- "module": "commonjs",
5
+ "module": "NodeNext",
6
+ "moduleResolution": "NodeNext",
6
7
  "lib": ["ES2022"],
7
8
  "outDir": "./dist",
8
9
  "rootDir": "./src",
@@ -14,7 +15,8 @@
14
15
  "emitDecoratorMetadata": true,
15
16
  "resolveJsonModule": true,
16
17
  "declaration": true,
17
- "sourceMap": true
18
+ "sourceMap": true,
19
+ "isolatedModules": true
18
20
  },
19
21
  "include": ["src/**/*"],
20
22
  "exclude": ["node_modules", "dist"]