@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
@@ -1,6 +1,7 @@
1
1
  // Native WebSocket Adapter for Moro Framework
2
2
  // Implements the WebSocket adapter interface using the 'ws' library
3
3
 
4
+ import { resolveUserPackage } from '../../utilities/package-utils.js';
4
5
  import {
5
6
  WebSocketAdapter,
6
7
  WebSocketAdapterOptions,
@@ -8,8 +9,8 @@ import {
8
9
  WebSocketConnection,
9
10
  WebSocketEmitter,
10
11
  WebSocketMiddleware,
11
- } from '../websocket-adapter';
12
- import { createFrameworkLogger } from '../../logger';
12
+ } from '../websocket-adapter.js';
13
+ import { createFrameworkLogger } from '../../logger/index.js';
13
14
 
14
15
  /**
15
16
  * Native WebSocket adapter using the 'ws' library
@@ -25,8 +26,9 @@ export class WSAdapter implements WebSocketAdapter {
25
26
 
26
27
  async initialize(httpServer: any, options: WebSocketAdapterOptions = {}): Promise<void> {
27
28
  try {
28
- // Dynamic import to avoid requiring ws as a hard dependency
29
- const { WebSocketServer } = await import('ws');
29
+ // Dynamic import from user's context to find their installed ws library
30
+ const wsPath = resolveUserPackage('ws');
31
+ const { WebSocketServer } = await import(wsPath);
30
32
 
31
33
  this.wss = new WebSocketServer({
32
34
  server: httpServer,
@@ -1,3 +1,4 @@
1
1
  // Networking System - Centralized Exports
2
- export { WebSocketManager } from './websocket-manager';
3
- export { ServiceRegistry, ServiceInfo, ServiceDiscoveryOptions } from './service-discovery';
2
+ export { WebSocketManager } from './websocket-manager.js';
3
+ export { ServiceRegistry } from './service-discovery.js';
4
+ export type { ServiceInfo, ServiceDiscoveryOptions } from './service-discovery.js';
@@ -1,6 +1,6 @@
1
1
  // Service Discovery Client for Microservices
2
2
  // Supports Consul, Kubernetes, and in-memory registry
3
- import { createFrameworkLogger } from '../logger';
3
+ import { createFrameworkLogger } from '../logger/index.js';
4
4
 
5
5
  export interface ServiceInfo {
6
6
  name: string;
@@ -1,10 +1,12 @@
1
1
  // WebSocket Manager for Moro Framework
2
2
  // Manages WebSocket connections using pluggable adapters
3
- import { Container } from '../utilities';
4
- import { CircuitBreaker } from '../utilities';
5
- import { ModuleConfig, WebSocketDefinition } from '../../types/module';
6
- import { WebSocketAdapter, WebSocketNamespace, WebSocketConnection } from './websocket-adapter';
7
- import { createFrameworkLogger } from '../logger';
3
+ import * as zlib from 'zlib';
4
+ import { Container } from '../utilities/index.js';
5
+ import { CircuitBreaker } from '../utilities/index.js';
6
+ import { ModuleConfig, WebSocketDefinition } from '../../types/module.js';
7
+ import { WebSocketAdapter, WebSocketNamespace, WebSocketConnection } from './websocket-adapter.js';
8
+ import { createFrameworkLogger } from '../logger/index.js';
9
+ import { normalizeValidationError } from '../validation/schema-interface.js';
8
10
 
9
11
  export class WebSocketManager {
10
12
  private circuitBreakers = new Map<string, CircuitBreaker>();
@@ -134,7 +136,6 @@ export class WebSocketManager {
134
136
  data = await wsConfig.validation.parseAsync(data);
135
137
  } catch (validationError: any) {
136
138
  // Handle universal validation errors
137
- const { normalizeValidationError } = require('../validation/schema-interface');
138
139
  const normalizedError = normalizeValidationError(validationError);
139
140
  const error = {
140
141
  success: false,
@@ -264,7 +265,6 @@ export class WebSocketManager {
264
265
  if (buffer[0] === 0x1f && buffer[1] === 0x8b) {
265
266
  // This is gzipped data
266
267
  try {
267
- const zlib = require('zlib');
268
268
  return zlib.gunzipSync(buffer);
269
269
  } catch {
270
270
  return buffer;
@@ -8,9 +8,9 @@ import {
8
8
  createRoute,
9
9
  defineRoute,
10
10
  HttpMethod,
11
- } from './index';
12
- import { HttpRequest, HttpResponse } from '../http';
13
- import { createFrameworkLogger } from '../logger';
11
+ } from './index.js';
12
+ import { HttpRequest, HttpResponse } from '../http/index.js';
13
+ import { createFrameworkLogger } from '../logger/index.js';
14
14
 
15
15
  const logger = createFrameworkLogger('AppIntegration');
16
16
 
@@ -1,9 +1,9 @@
1
1
  // Intelligent Routing System for Moro Framework
2
2
  // Schema-first with automatic middleware ordering and chainable API
3
3
 
4
- import { ValidationSchema } from '../validation/schema-interface';
5
- import { HttpRequest, HttpResponse } from '../http';
6
- import { createFrameworkLogger } from '../logger';
4
+ import { ValidationSchema } from '../validation/schema-interface.js';
5
+ import { HttpRequest, HttpResponse } from '../http/index.js';
6
+ import { createFrameworkLogger } from '../logger/index.js';
7
7
 
8
8
  const logger = createFrameworkLogger('IntelligentRouting');
9
9
 
@@ -1,7 +1,7 @@
1
1
  // AWS Lambda runtime adapter
2
- import { BaseRuntimeAdapter } from './base-adapter';
3
- import { HttpRequest, HttpResponse } from '../../types/http';
4
- import { RuntimeHttpResponse } from '../../types/runtime';
2
+ import { BaseRuntimeAdapter } from './base-adapter.js';
3
+ import { HttpRequest, HttpResponse } from '../../types/http.js';
4
+ import { RuntimeHttpResponse } from '../../types/runtime.js';
5
5
 
6
6
  export interface LambdaEvent {
7
7
  httpMethod: string;
@@ -1,6 +1,6 @@
1
1
  // Base runtime adapter with common functionality
2
- import { RuntimeAdapter, RuntimeType, RuntimeHttpResponse } from '../../types/runtime';
3
- import { HttpRequest, HttpResponse } from '../../types/http';
2
+ import { RuntimeAdapter, RuntimeType, RuntimeHttpResponse } from '../../types/runtime.js';
3
+ import { HttpRequest, HttpResponse } from '../../types/http.js';
4
4
  import { randomBytes } from 'crypto';
5
5
 
6
6
  export abstract class BaseRuntimeAdapter implements RuntimeAdapter {
@@ -1,7 +1,7 @@
1
1
  // Cloudflare Workers runtime adapter
2
- import { BaseRuntimeAdapter } from './base-adapter';
3
- import { HttpRequest, HttpResponse } from '../../types/http';
4
- import { RuntimeHttpResponse } from '../../types/runtime';
2
+ import { BaseRuntimeAdapter } from './base-adapter.js';
3
+ import { HttpRequest, HttpResponse } from '../../types/http.js';
4
+ import { RuntimeHttpResponse } from '../../types/runtime.js';
5
5
 
6
6
  export interface WorkersEnv {
7
7
  [key: string]: any;
@@ -1,9 +1,9 @@
1
1
  // Runtime adapters export
2
- export { BaseRuntimeAdapter } from './base-adapter';
3
- export { NodeRuntimeAdapter } from './node-adapter';
4
- export { VercelEdgeAdapter } from './vercel-edge-adapter';
5
- export { AWSLambdaAdapter } from './aws-lambda-adapter';
6
- export { CloudflareWorkersAdapter } from './cloudflare-workers-adapter';
2
+ export { BaseRuntimeAdapter } from './base-adapter.js';
3
+ export { NodeRuntimeAdapter } from './node-adapter.js';
4
+ export { VercelEdgeAdapter } from './vercel-edge-adapter.js';
5
+ export { AWSLambdaAdapter } from './aws-lambda-adapter.js';
6
+ export { CloudflareWorkersAdapter } from './cloudflare-workers-adapter.js';
7
7
 
8
8
  // Re-export types
9
9
  export type {
@@ -12,18 +12,18 @@ export type {
12
12
  RuntimeConfig,
13
13
  RuntimeMoroOptions,
14
14
  RuntimeHttpResponse,
15
- } from '../../types/runtime';
15
+ } from '../../types/runtime.js';
16
16
 
17
17
  // Re-export specific runtime types
18
- export type { LambdaEvent, LambdaContext, LambdaResponse } from './aws-lambda-adapter';
19
- export type { WorkersEnv, WorkersContext } from './cloudflare-workers-adapter';
18
+ export type { LambdaEvent, LambdaContext, LambdaResponse } from './aws-lambda-adapter.js';
19
+ export type { WorkersEnv, WorkersContext } from './cloudflare-workers-adapter.js';
20
20
 
21
21
  // Runtime factory functions
22
- import { NodeRuntimeAdapter } from './node-adapter';
23
- import { VercelEdgeAdapter } from './vercel-edge-adapter';
24
- import { AWSLambdaAdapter } from './aws-lambda-adapter';
25
- import { CloudflareWorkersAdapter } from './cloudflare-workers-adapter';
26
- import { RuntimeType, RuntimeAdapter } from '../../types/runtime';
22
+ import { NodeRuntimeAdapter } from './node-adapter.js';
23
+ import { VercelEdgeAdapter } from './vercel-edge-adapter.js';
24
+ import { AWSLambdaAdapter } from './aws-lambda-adapter.js';
25
+ import { CloudflareWorkersAdapter } from './cloudflare-workers-adapter.js';
26
+ import { RuntimeType, RuntimeAdapter } from '../../types/runtime.js';
27
27
 
28
28
  export function createRuntimeAdapter(type: RuntimeType): RuntimeAdapter {
29
29
  switch (type) {
@@ -1,9 +1,9 @@
1
1
  // Node.js runtime adapter
2
2
  import { IncomingMessage, ServerResponse } from 'http';
3
- import { BaseRuntimeAdapter } from './base-adapter';
4
- import { HttpRequest, HttpResponse } from '../../types/http';
5
- import { RuntimeHttpResponse } from '../../types/runtime';
6
- import { MoroHttpServer } from '../http/http-server';
3
+ import { BaseRuntimeAdapter } from './base-adapter.js';
4
+ import { HttpRequest, HttpResponse } from '../../types/http.js';
5
+ import { RuntimeHttpResponse } from '../../types/runtime.js';
6
+ import { MoroHttpServer } from '../http/http-server.js';
7
7
 
8
8
  export class NodeRuntimeAdapter extends BaseRuntimeAdapter {
9
9
  readonly type = 'node' as const;
@@ -1,7 +1,7 @@
1
1
  // Vercel Edge runtime adapter
2
- import { BaseRuntimeAdapter } from './base-adapter';
3
- import { HttpRequest, HttpResponse } from '../../types/http';
4
- import { RuntimeHttpResponse } from '../../types/runtime';
2
+ import { BaseRuntimeAdapter } from './base-adapter.js';
3
+ import { HttpRequest, HttpResponse } from '../../types/http.js';
4
+ import { RuntimeHttpResponse } from '../../types/runtime.js';
5
5
 
6
6
  export class VercelEdgeAdapter extends BaseRuntimeAdapter {
7
7
  readonly type = 'vercel-edge' as const;
@@ -1,7 +1,7 @@
1
1
  // Hook System for Moro
2
2
  import { EventEmitter } from 'events';
3
- import { HookFunction, HookContext, MoroMiddleware } from '../../types/hooks';
4
- import { createFrameworkLogger } from '../logger';
3
+ import { HookFunction, HookContext, MoroMiddleware } from '../../types/hooks.js';
4
+ import { createFrameworkLogger } from '../logger/index.js';
5
5
 
6
6
  export const HOOK_EVENTS = {
7
7
  BEFORE_REQUEST: 'before:request',
@@ -139,4 +139,4 @@ export class HookManager extends EventEmitter {
139
139
  }
140
140
 
141
141
  // Built-in middleware - now organized in individual files
142
- export { simpleMiddleware as middleware } from '../middleware/index';
142
+ export { simpleMiddleware as middleware } from '../middleware/index.js';
@@ -8,9 +8,10 @@ export {
8
8
  withCaching,
9
9
  withRetry,
10
10
  withTimeout,
11
- } from './container';
12
- export { CircuitBreaker } from './circuit-breaker';
13
- export { HookManager, HOOK_EVENTS } from './hooks';
11
+ } from './container.js';
12
+ export { CircuitBreaker } from './circuit-breaker.js';
13
+ export { HookManager, HOOK_EVENTS } from './hooks.js';
14
+ export { isPackageAvailable, resolveUserPackage, createUserRequire } from './package-utils.js';
14
15
 
15
16
  // Re-export middleware from hooks
16
- export { middleware } from './hooks';
17
+ export { middleware } from './hooks.js';
@@ -0,0 +1,59 @@
1
+ // Package and Module Resolution Utilities
2
+ // ESM-compatible helpers for detecting and resolving optional dependencies
3
+
4
+ import { createRequire } from 'module';
5
+ import { join } from 'path';
6
+
7
+ /**
8
+ * Check if a package is available in the user's node_modules
9
+ * Uses ESM-compatible module resolution from the user's working directory
10
+ *
11
+ * @param packageName - The name of the package to check (e.g., 'socket.io', 'zod')
12
+ * @returns true if the package is installed, false otherwise
13
+ *
14
+ * @example
15
+ * if (isPackageAvailable('socket.io')) {
16
+ * // socket.io is installed, safe to import
17
+ * const { Server } = await import('socket.io');
18
+ * }
19
+ */
20
+ export function isPackageAvailable(packageName: string): boolean {
21
+ try {
22
+ const userRequire = createRequire(join(process.cwd(), 'package.json'));
23
+ userRequire.resolve(packageName);
24
+ return true;
25
+ } catch {
26
+ return false;
27
+ }
28
+ }
29
+
30
+ /**
31
+ * Resolve a package path from the user's node_modules
32
+ * Uses ESM-compatible module resolution from the user's working directory
33
+ *
34
+ * @param packageName - The name of the package to resolve
35
+ * @returns The resolved package path
36
+ * @throws Error if the package is not found
37
+ *
38
+ * @example
39
+ * const socketIOPath = resolveUserPackage('socket.io');
40
+ * const { Server } = await import(socketIOPath);
41
+ */
42
+ export function resolveUserPackage(packageName: string): string {
43
+ const userRequire = createRequire(join(process.cwd(), 'package.json'));
44
+ return userRequire.resolve(packageName);
45
+ }
46
+
47
+ /**
48
+ * Create a require function for the user's working directory
49
+ * Useful for resolving packages installed by the user, not in Moro's dependencies
50
+ *
51
+ * @returns A require function scoped to the user's working directory
52
+ *
53
+ * @example
54
+ * const userRequire = createUserRequire();
55
+ * const packagePath = userRequire.resolve('some-package');
56
+ */
57
+ export function createUserRequire() {
58
+ return createRequire(join(process.cwd(), 'package.json'));
59
+ }
@@ -1,7 +1,7 @@
1
1
  // Validation Library Adapters for Moro Framework
2
2
  // Makes Joi, Yup, and other libraries compatible with ValidationSchema interface
3
3
 
4
- import { ValidationSchema, ValidationError, normalizeValidationError } from './schema-interface';
4
+ import { ValidationSchema, ValidationError, normalizeValidationError } from './schema-interface.js';
5
5
 
6
6
  /**
7
7
  * Zod Compatibility Check
@@ -1,20 +1,78 @@
1
1
  // Universal Validation System for Moro Framework
2
2
  // Works with Zod, Joi, Yup, and any validation library via adapters
3
3
 
4
- import { HttpRequest, HttpResponse } from '../http';
5
- import { createFrameworkLogger } from '../logger';
4
+ import { HttpRequest, HttpResponse } from '../http/index.js';
5
+ import { createFrameworkLogger } from '../logger/index.js';
6
+ import { createUserRequire, isPackageAvailable } from '../utilities/package-utils.js';
6
7
  import {
7
8
  ValidationSchema,
8
- ValidationError,
9
9
  normalizeValidationError,
10
10
  InferSchemaType,
11
- } from './schema-interface';
12
-
13
- // Re-export zod if available (for backward compatibility)
14
- // The dynamic import is handled in the main index.ts
11
+ ValidationError,
12
+ } from './schema-interface.js';
15
13
 
16
14
  const logger = createFrameworkLogger('Validation');
17
15
 
16
+ // Convenience re-export of Zod (optional - only works if zod is installed)
17
+ // Lazy-loads Zod synchronously on first access
18
+ // If zod is not installed, z will throw a helpful error
19
+ let zodModule: any = null;
20
+ let zodLoadAttempted = false;
21
+
22
+ function loadZodSync() {
23
+ if (zodLoadAttempted) {
24
+ return zodModule;
25
+ }
26
+
27
+ zodLoadAttempted = true;
28
+
29
+ try {
30
+ if (!isPackageAvailable('zod')) {
31
+ zodModule = null;
32
+ return zodModule;
33
+ }
34
+
35
+ // Use synchronous require for immediate availability
36
+ const userRequire = createUserRequire();
37
+ zodModule = userRequire('zod');
38
+ } catch {
39
+ // Zod not installed or failed to load
40
+ zodModule = null;
41
+ }
42
+
43
+ return zodModule;
44
+ }
45
+
46
+ export const z = new Proxy({} as any, {
47
+ get(_target, prop) {
48
+ const zod = loadZodSync();
49
+
50
+ if (!zod) {
51
+ throw new Error(
52
+ 'Zod is not installed. Please install it with: npm install zod\n' +
53
+ 'Or use an alternative validation library (joi, yup, class-validator) via adapters.'
54
+ );
55
+ }
56
+
57
+ if (!zod.z) {
58
+ throw new Error(
59
+ 'Zod module loaded but z export not found. This may be a version compatibility issue.'
60
+ );
61
+ }
62
+
63
+ return zod.z[prop];
64
+ },
65
+ apply(_target, thisArg, args) {
66
+ const zod = loadZodSync();
67
+
68
+ if (!zod?.z) {
69
+ throw new Error('Zod is not installed. Please install it with: npm install zod');
70
+ }
71
+
72
+ return zod.z.apply(thisArg, args);
73
+ },
74
+ });
75
+
18
76
  // Universal validation configuration interface
19
77
  export interface ValidationConfig {
20
78
  body?: ValidationSchema;
@@ -195,12 +253,6 @@ export function combineSchemas(schemas: ValidationConfig): ValidationConfig {
195
253
  }
196
254
 
197
255
  // Re-export common validation tools
198
- export {
199
- ValidationSchema,
200
- ValidationError,
201
- normalizeValidationError,
202
- InferSchemaType,
203
- } from './schema-interface';
204
- export { joi, yup, fn as customValidator, classValidator } from './adapters';
205
-
206
- // Note: z is re-exported from main index.ts with dynamic import
256
+ export { ValidationError, normalizeValidationError } from './schema-interface.js';
257
+ export type { ValidationSchema, InferSchemaType } from './schema-interface.js';
258
+ export { joi, yup, fn as customValidator, classValidator } from './adapters.js';