@morojs/moro 1.5.16 → 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 +16 -6
  73. package/dist/core/framework.js +182 -92
  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 +26 -209
  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 +51 -44
  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 +27 -2
  158. package/dist/core/middleware/built-in/jwt-helpers.js +32 -10
  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 +30 -10
  259. package/dist/moro.js +262 -126
  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 +190 -49
  308. package/src/core/http/http-server.ts +16 -159
  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 +64 -41
  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 +32 -4
  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 +303 -75
  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
@@ -5,6 +5,8 @@
5
5
  * in their custom authentication middleware.
6
6
  */
7
7
 
8
+ import { resolveUserPackage } from '../../utilities/package-utils.js';
9
+
8
10
  export interface JWTVerificationResult {
9
11
  success: boolean;
10
12
  payload?: any;
@@ -24,15 +26,16 @@ export interface JWTVerificationResult {
24
26
  * @param options - Additional JWT verification options
25
27
  * @returns JWTVerificationResult with success status and payload or error details
26
28
  */
27
- export function safeVerifyJWT(
29
+ export async function safeVerifyJWT(
28
30
  token: string,
29
31
  secret: string,
30
32
  options: any = {}
31
- ): JWTVerificationResult {
33
+ ): Promise<JWTVerificationResult> {
32
34
  // Check if jsonwebtoken is available
33
35
  let jwt: any;
34
36
  try {
35
- jwt = require('jsonwebtoken');
37
+ const jwtPath = resolveUserPackage('jsonwebtoken');
38
+ jwt = await import(jwtPath);
36
39
  } catch (error) {
37
40
  return {
38
41
  success: false,
@@ -178,7 +181,7 @@ export function createAuthErrorResponse(error: JWTVerificationResult['error']) {
178
181
  }
179
182
 
180
183
  /**
181
- * Example usage for custom middleware:
184
+ * Example usage for custom middleware with elegant error handling:
182
185
  *
183
186
  * ```typescript
184
187
  * import { safeVerifyJWT, extractJWTFromHeader, createAuthErrorResponse } from '@morojs/moro';
@@ -197,6 +200,7 @@ export function createAuthErrorResponse(error: JWTVerificationResult['error']) {
197
200
  * const result = safeVerifyJWT(token, process.env.JWT_SECRET!);
198
201
  *
199
202
  * if (!result.success) {
203
+ * // This provides elegant, user-friendly error messages instead of stack traces
200
204
  * const errorResponse = createAuthErrorResponse(result.error);
201
205
  * return res.status(401).json(errorResponse);
202
206
  * }
@@ -212,4 +216,28 @@ export function createAuthErrorResponse(error: JWTVerificationResult['error']) {
212
216
  * next();
213
217
  * };
214
218
  * ```
219
+ *
220
+ * Benefits of using safeVerifyJWT vs raw jsonwebtoken.verify():
221
+ *
222
+ * ❌ Raw approach (shows ugly error messages to users):
223
+ * ```typescript
224
+ * try {
225
+ * const decoded = jwt.verify(token, secret);
226
+ * req.user = decoded;
227
+ * } catch (error) {
228
+ * // This exposes technical details and stack traces to users:
229
+ * // "Invalid token: TokenExpiredError: jwt expired at /node_modules/jsonwebtoken/verify.js:190:21..."
230
+ * throw error; // BAD - exposes internal details
231
+ * }
232
+ * ```
233
+ *
234
+ * ✅ Safe approach (shows clean, user-friendly messages):
235
+ * ```typescript
236
+ * const result = safeVerifyJWT(token, secret);
237
+ * if (!result.success) {
238
+ * // This returns clean messages like:
239
+ * // { "error": "Token expired", "message": "Your session has expired. Please sign in again." }
240
+ * return res.status(401).json(createAuthErrorResponse(result.error));
241
+ * }
242
+ * ```
215
243
  */
@@ -1,5 +1,5 @@
1
1
  // Performance monitoring middleware
2
- import { createFrameworkLogger } from '../../logger';
2
+ import { createFrameworkLogger } from '../../logger/index.js';
3
3
 
4
4
  const logger = createFrameworkLogger('PerformanceMonitor');
5
5
 
@@ -1,6 +1,6 @@
1
1
  // Rate Limiting Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { createFrameworkLogger } from '../../logger';
2
+ import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
3
+ import { createFrameworkLogger } from '../../logger/index.js';
4
4
 
5
5
  const logger = createFrameworkLogger('RateLimitMiddleware');
6
6
 
@@ -1,5 +1,5 @@
1
1
  // Simple request logging middleware
2
- import { createFrameworkLogger } from '../../logger';
2
+ import { createFrameworkLogger } from '../../logger/index.js';
3
3
 
4
4
  const logger = createFrameworkLogger('RequestLogger');
5
5
 
@@ -1,10 +1,11 @@
1
1
  // Session Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { createFrameworkLogger } from '../../logger';
4
- import { CacheAdapter } from '../../../types/cache';
5
- import { MemoryCacheAdapter } from './adapters/cache/memory';
6
- import { RedisCacheAdapter } from './adapters/cache/redis';
7
- import { FileCacheAdapter } from './adapters/cache/file';
2
+ import crypto from 'crypto';
3
+ import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
4
+ import { createFrameworkLogger } from '../../logger/index.js';
5
+ import { CacheAdapter } from '../../../types/cache.js';
6
+ import { MemoryCacheAdapter } from './adapters/cache/memory.js';
7
+ import { RedisCacheAdapter } from './adapters/cache/redis.js';
8
+ import { FileCacheAdapter } from './adapters/cache/file.js';
8
9
 
9
10
  const logger = createFrameworkLogger('SessionMiddleware');
10
11
 
@@ -157,7 +158,6 @@ class Session {
157
158
  return this.options.genid();
158
159
  }
159
160
 
160
- const crypto = require('crypto');
161
161
  return crypto.randomBytes(24).toString('hex');
162
162
  }
163
163
 
@@ -229,7 +229,6 @@ export const session = (options: SessionOptions = {}): MiddlewareInterface => ({
229
229
  if (config.genid) {
230
230
  return config.genid();
231
231
  }
232
- const crypto = require('crypto');
233
232
  return crypto.randomBytes(24).toString('hex');
234
233
  };
235
234
 
@@ -1,6 +1,6 @@
1
1
  // Server-Sent Events Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { createFrameworkLogger } from '../../logger';
2
+ import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
3
+ import { createFrameworkLogger } from '../../logger/index.js';
4
4
 
5
5
  const logger = createFrameworkLogger('SSEMiddleware');
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Validation Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { createFrameworkLogger } from '../../logger';
2
+ import { MiddlewareInterface, HookContext } from '../../../types/hooks.js';
3
+ import { createFrameworkLogger } from '../../logger/index.js';
4
4
 
5
5
  const logger = createFrameworkLogger('ValidationMiddleware');
6
6
 
@@ -1,17 +1,17 @@
1
1
  // Middleware System for Moro
2
2
  import { EventEmitter } from 'events';
3
- import { HookManager } from '../utilities';
3
+ import { HookManager } from '../utilities/index.js';
4
4
  import {
5
5
  MiddlewareMetadata,
6
6
  MiddlewareContext,
7
7
  MiddlewareInterface,
8
8
  SimpleMiddlewareFunction,
9
9
  MoroMiddleware,
10
- } from '../../types/hooks';
11
- import { createFrameworkLogger } from '../logger';
10
+ } from '../../types/hooks.js';
11
+ import { createFrameworkLogger } from '../logger/index.js';
12
12
 
13
13
  // Export types needed by built-in middleware
14
- export type { MiddlewareInterface, MoroMiddleware } from '../../types/hooks';
14
+ export type { MiddlewareInterface, MoroMiddleware } from '../../types/hooks.js';
15
15
 
16
16
  export class MiddlewareManager extends EventEmitter {
17
17
  private middleware = new Map<string, MiddlewareInterface>();
@@ -173,5 +173,5 @@ export class MiddlewareManager extends EventEmitter {
173
173
  }
174
174
 
175
175
  // Built-in middleware exports
176
- export { builtInMiddleware, simpleMiddleware } from './built-in';
177
- export * from './built-in';
176
+ export { builtInMiddleware, simpleMiddleware } from './built-in/index.js';
177
+ export * from './built-in/index.js';
@@ -1,10 +1,10 @@
1
1
  // Auto-discovery system for Moro modules
2
2
  import { readdirSync, statSync } from 'fs';
3
3
  import { join, extname, relative, isAbsolute } from 'path';
4
- import { ModuleConfig } from '../../types/module';
5
- import { DiscoveryOptions } from '../../types/discovery';
6
- import { ModuleDefaultsConfig } from '../../types/config';
7
- import { createFrameworkLogger } from '../logger';
4
+ import { ModuleConfig } from '../../types/module.js';
5
+ import { DiscoveryOptions } from '../../types/discovery.js';
6
+ import { ModuleDefaultsConfig } from '../../types/config.js';
7
+ import { createFrameworkLogger } from '../logger/index.js';
8
8
 
9
9
  export class ModuleDiscovery {
10
10
  private baseDir: string;
@@ -1,3 +1,3 @@
1
1
  // Module System - Centralized Exports
2
- export { defineModule, ModuleLoader } from './modules';
3
- export { ModuleDiscovery, autoDiscoverModuleDirectories } from './auto-discovery';
2
+ export { defineModule, ModuleLoader } from './modules.js';
3
+ export { ModuleDiscovery, autoDiscoverModuleDirectories } from './auto-discovery.js';
@@ -1,10 +1,10 @@
1
1
  // Module System - Definition and Loading
2
2
  import { promises as fs } from 'fs';
3
3
  import path from 'path';
4
- import { Container } from '../utilities';
5
- import { ModuleConfig } from '../../types/module';
6
- import { ModuleDefinition, ModuleRoute, ModuleSocket } from '../../types/module';
7
- import { createFrameworkLogger } from '../logger';
4
+ import { Container } from '../utilities/index.js';
5
+ import { ModuleConfig } from '../../types/module.js';
6
+ import { ModuleDefinition, ModuleRoute, ModuleSocket } from '../../types/module.js';
7
+ import { createFrameworkLogger } from '../logger/index.js';
8
8
 
9
9
  // Module Definition Function
10
10
  export function defineModule(definition: ModuleDefinition): ModuleConfig {
@@ -1,8 +1,9 @@
1
1
  // WebSocket Adapters for Moro Framework
2
2
  // Export all available adapters from this centralized location
3
3
 
4
- export { SocketIOAdapter } from './socketio-adapter';
5
- export { WSAdapter } from './ws-adapter';
4
+ export { SocketIOAdapter } from './socketio-adapter.js';
5
+ export { WSAdapter } from './ws-adapter.js';
6
+ export { UWebSocketsAdapter } from './uws-adapter.js';
6
7
 
7
8
  // Re-export the adapter interface for convenience
8
9
  export type {
@@ -13,4 +14,4 @@ export type {
13
14
  WebSocketEmitter,
14
15
  WebSocketMiddleware,
15
16
  WebSocketEventHandler,
16
- } from '../websocket-adapter';
17
+ } from '../websocket-adapter.js';
@@ -1,6 +1,7 @@
1
1
  // Socket.IO WebSocket Adapter for Moro Framework
2
2
  // Implements the WebSocket adapter interface using Socket.IO
3
3
 
4
+ import { resolveUserPackage } from '../../utilities/package-utils.js';
4
5
  import {
5
6
  WebSocketAdapter,
6
7
  WebSocketAdapterOptions,
@@ -8,7 +9,7 @@ import {
8
9
  WebSocketConnection,
9
10
  WebSocketEmitter,
10
11
  WebSocketMiddleware,
11
- } from '../websocket-adapter';
12
+ } from '../websocket-adapter.js';
12
13
 
13
14
  /**
14
15
  * Socket.IO adapter implementation
@@ -19,8 +20,9 @@ export class SocketIOAdapter implements WebSocketAdapter {
19
20
 
20
21
  async initialize(httpServer: any, options: WebSocketAdapterOptions = {}): Promise<void> {
21
22
  try {
22
- // Dynamic import to avoid requiring socket.io as a hard dependency
23
- const { Server } = await import('socket.io');
23
+ // Dynamic import from user's context to find their installed socket.io
24
+ const socketIOPath = resolveUserPackage('socket.io');
25
+ const { Server } = await import(socketIOPath);
24
26
 
25
27
  this.io = new Server(httpServer, {
26
28
  cors: options.cors || { origin: '*' },