@morojs/moro 1.6.1 → 1.6.3

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 (575) hide show
  1. package/README.md +74 -256
  2. package/dist/core/auth/morojs-adapter.js +20 -20
  3. package/dist/core/auth/morojs-adapter.js.map +1 -1
  4. package/dist/core/config/config-manager.d.ts +44 -0
  5. package/dist/core/config/config-manager.js +104 -0
  6. package/dist/core/config/config-manager.js.map +1 -0
  7. package/dist/core/config/config-sources.d.ts +21 -0
  8. package/dist/core/config/config-sources.js +503 -0
  9. package/dist/core/config/config-sources.js.map +1 -0
  10. package/dist/core/config/config-validator.d.ts +21 -0
  11. package/dist/core/config/config-validator.js +791 -0
  12. package/dist/core/config/config-validator.js.map +1 -0
  13. package/dist/core/config/file-loader.d.ts +1 -6
  14. package/dist/core/config/file-loader.js +21 -249
  15. package/dist/core/config/file-loader.js.map +1 -1
  16. package/dist/core/config/index.d.ts +41 -12
  17. package/dist/core/config/index.js +65 -54
  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 +55 -44
  21. package/dist/core/config/schema.js.map +1 -1
  22. package/dist/core/config/utils.d.ts +10 -3
  23. package/dist/core/config/utils.js +31 -58
  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 +13 -1
  32. package/dist/core/database/adapters/mongodb.js +46 -10
  33. package/dist/core/database/adapters/mongodb.js.map +1 -1
  34. package/dist/core/database/adapters/mysql.d.ts +14 -1
  35. package/dist/core/database/adapters/mysql.js +19 -9
  36. package/dist/core/database/adapters/mysql.js.map +1 -1
  37. package/dist/core/database/adapters/postgresql.d.ts +12 -2
  38. package/dist/core/database/adapters/postgresql.js +19 -9
  39. package/dist/core/database/adapters/postgresql.js.map +1 -1
  40. package/dist/core/database/adapters/redis.d.ts +12 -1
  41. package/dist/core/database/adapters/redis.js +48 -13
  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 +7 -11
  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 +20 -13
  73. package/dist/core/framework.js +285 -102
  74. package/dist/core/framework.js.map +1 -1
  75. package/dist/core/http/http-server.d.ts +59 -7
  76. package/dist/core/http/http-server.js +202 -185
  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/uws-http-server.d.ts +46 -0
  82. package/dist/core/http/uws-http-server.js +523 -0
  83. package/dist/core/http/uws-http-server.js.map +1 -0
  84. package/dist/core/logger/filters.d.ts +1 -1
  85. package/dist/core/logger/filters.js +20 -23
  86. package/dist/core/logger/filters.js.map +1 -1
  87. package/dist/core/logger/index.d.ts +3 -3
  88. package/dist/core/logger/index.js +2 -24
  89. package/dist/core/logger/index.js.map +1 -1
  90. package/dist/core/logger/logger.d.ts +30 -14
  91. package/dist/core/logger/logger.js +398 -223
  92. package/dist/core/logger/logger.js.map +1 -1
  93. package/dist/core/logger/outputs.d.ts +1 -1
  94. package/dist/core/logger/outputs.js +8 -17
  95. package/dist/core/logger/outputs.js.map +1 -1
  96. package/dist/core/middleware/built-in/auth/core.d.ts +78 -0
  97. package/dist/core/middleware/built-in/auth/core.js +358 -0
  98. package/dist/core/middleware/built-in/auth/core.js.map +1 -0
  99. package/dist/core/middleware/built-in/{auth-helpers.js → auth/helpers.js} +12 -23
  100. package/dist/core/middleware/built-in/auth/helpers.js.map +1 -0
  101. package/dist/core/middleware/built-in/auth/hook.d.ts +30 -0
  102. package/dist/core/middleware/built-in/auth/hook.js +99 -0
  103. package/dist/core/middleware/built-in/auth/hook.js.map +1 -0
  104. package/dist/core/middleware/built-in/auth/index.d.ts +7 -0
  105. package/dist/core/middleware/built-in/auth/index.js +15 -0
  106. package/dist/core/middleware/built-in/auth/index.js.map +1 -0
  107. package/dist/core/middleware/built-in/auth/jwt-helpers.d.ts +118 -0
  108. package/dist/core/middleware/built-in/auth/jwt-helpers.js +218 -0
  109. package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -0
  110. package/dist/core/middleware/built-in/auth/middleware.d.ts +23 -0
  111. package/dist/core/middleware/built-in/auth/middleware.js +71 -0
  112. package/dist/core/middleware/built-in/auth/middleware.js.map +1 -0
  113. package/dist/core/middleware/built-in/{auth-providers.d.ts → auth/providers.d.ts} +1 -1
  114. package/dist/core/middleware/built-in/{auth-providers.js → auth/providers.js} +5 -10
  115. package/dist/core/middleware/built-in/auth/providers.js.map +1 -0
  116. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/file.d.ts +1 -1
  117. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/file.js +10 -47
  118. package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -0
  119. package/dist/core/middleware/built-in/cache/adapters/cache/index.d.ts +5 -0
  120. package/dist/core/middleware/built-in/cache/adapters/cache/index.js +21 -0
  121. package/dist/core/middleware/built-in/cache/adapters/cache/index.js.map +1 -0
  122. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/memory.d.ts +1 -1
  123. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/memory.js +3 -7
  124. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -0
  125. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/redis.d.ts +3 -1
  126. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/redis.js +11 -9
  127. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -0
  128. package/dist/core/middleware/built-in/cache/adapters/index.d.ts +2 -0
  129. package/dist/core/middleware/built-in/cache/adapters/index.js +5 -0
  130. package/dist/core/middleware/built-in/cache/adapters/index.js.map +1 -0
  131. package/dist/core/middleware/built-in/cache/core.d.ts +37 -0
  132. package/dist/core/middleware/built-in/cache/core.js +87 -0
  133. package/dist/core/middleware/built-in/cache/core.js.map +1 -0
  134. package/dist/core/middleware/built-in/cache/hook.d.ts +20 -0
  135. package/dist/core/middleware/built-in/{cache.js → cache/hook.js} +30 -14
  136. package/dist/core/middleware/built-in/cache/hook.js.map +1 -0
  137. package/dist/core/middleware/built-in/cache/index.d.ts +3 -0
  138. package/dist/core/middleware/built-in/cache/index.js +9 -0
  139. package/dist/core/middleware/built-in/cache/index.js.map +1 -0
  140. package/dist/core/middleware/built-in/cache/middleware.d.ts +17 -0
  141. package/dist/core/middleware/built-in/cache/middleware.js +44 -0
  142. package/dist/core/middleware/built-in/cache/middleware.js.map +1 -0
  143. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/azure.d.ts +1 -1
  144. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/azure.js +3 -7
  145. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -0
  146. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudflare.d.ts +1 -1
  147. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudflare.js +3 -7
  148. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -0
  149. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudfront.d.ts +3 -1
  150. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudfront.js +12 -10
  151. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -0
  152. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.d.ts +5 -0
  153. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js +21 -0
  154. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js.map +1 -0
  155. package/dist/core/middleware/built-in/cdn/adapters/index.d.ts +2 -0
  156. package/dist/core/middleware/built-in/cdn/adapters/index.js +5 -0
  157. package/dist/core/middleware/built-in/cdn/adapters/index.js.map +1 -0
  158. package/dist/core/middleware/built-in/cdn/core.d.ts +43 -0
  159. package/dist/core/middleware/built-in/cdn/core.js +144 -0
  160. package/dist/core/middleware/built-in/cdn/core.js.map +1 -0
  161. package/dist/core/middleware/built-in/cdn/hook.d.ts +22 -0
  162. package/dist/core/middleware/built-in/cdn/hook.js +70 -0
  163. package/dist/core/middleware/built-in/cdn/hook.js.map +1 -0
  164. package/dist/core/middleware/built-in/cdn/index.d.ts +5 -0
  165. package/dist/core/middleware/built-in/cdn/index.js +11 -0
  166. package/dist/core/middleware/built-in/cdn/index.js.map +1 -0
  167. package/dist/core/middleware/built-in/cdn/middleware.d.ts +21 -0
  168. package/dist/core/middleware/built-in/cdn/middleware.js +52 -0
  169. package/dist/core/middleware/built-in/cdn/middleware.js.map +1 -0
  170. package/dist/core/middleware/built-in/cookie/core.d.ts +37 -0
  171. package/dist/core/middleware/built-in/cookie/core.js +83 -0
  172. package/dist/core/middleware/built-in/cookie/core.js.map +1 -0
  173. package/dist/core/middleware/built-in/cookie/hook.d.ts +20 -0
  174. package/dist/core/middleware/built-in/cookie/hook.js +47 -0
  175. package/dist/core/middleware/built-in/cookie/hook.js.map +1 -0
  176. package/dist/core/middleware/built-in/cookie/index.d.ts +3 -0
  177. package/dist/core/middleware/built-in/cookie/index.js +9 -0
  178. package/dist/core/middleware/built-in/cookie/index.js.map +1 -0
  179. package/dist/core/middleware/built-in/cookie/middleware.d.ts +17 -0
  180. package/dist/core/middleware/built-in/cookie/middleware.js +36 -0
  181. package/dist/core/middleware/built-in/cookie/middleware.js.map +1 -0
  182. package/dist/core/middleware/built-in/cors/core.d.ts +23 -0
  183. package/dist/core/middleware/built-in/cors/core.js +51 -0
  184. package/dist/core/middleware/built-in/cors/core.js.map +1 -0
  185. package/dist/core/middleware/built-in/cors/hook.d.ts +17 -0
  186. package/dist/core/middleware/built-in/cors/hook.js +37 -0
  187. package/dist/core/middleware/built-in/cors/hook.js.map +1 -0
  188. package/dist/core/middleware/built-in/cors/index.d.ts +3 -0
  189. package/dist/core/middleware/built-in/cors/index.js +9 -0
  190. package/dist/core/middleware/built-in/cors/index.js.map +1 -0
  191. package/dist/core/middleware/built-in/cors/middleware.d.ts +16 -0
  192. package/dist/core/middleware/built-in/cors/middleware.js +22 -0
  193. package/dist/core/middleware/built-in/cors/middleware.js.map +1 -0
  194. package/dist/core/middleware/built-in/csp/core.d.ts +45 -0
  195. package/dist/core/middleware/built-in/csp/core.js +88 -0
  196. package/dist/core/middleware/built-in/csp/core.js.map +1 -0
  197. package/dist/core/middleware/built-in/csp/hook.d.ts +22 -0
  198. package/dist/core/middleware/built-in/csp/hook.js +47 -0
  199. package/dist/core/middleware/built-in/csp/hook.js.map +1 -0
  200. package/dist/core/middleware/built-in/csp/index.d.ts +3 -0
  201. package/dist/core/middleware/built-in/csp/index.js +9 -0
  202. package/dist/core/middleware/built-in/csp/index.js.map +1 -0
  203. package/dist/core/middleware/built-in/csp/middleware.d.ts +19 -0
  204. package/dist/core/middleware/built-in/csp/middleware.js +29 -0
  205. package/dist/core/middleware/built-in/csp/middleware.js.map +1 -0
  206. package/dist/core/middleware/built-in/csrf/core.d.ts +28 -0
  207. package/dist/core/middleware/built-in/csrf/core.js +69 -0
  208. package/dist/core/middleware/built-in/csrf/core.js.map +1 -0
  209. package/dist/core/middleware/built-in/csrf/hook.d.ts +17 -0
  210. package/dist/core/middleware/built-in/csrf/hook.js +45 -0
  211. package/dist/core/middleware/built-in/csrf/hook.js.map +1 -0
  212. package/dist/core/middleware/built-in/csrf/index.d.ts +3 -0
  213. package/dist/core/middleware/built-in/csrf/index.js +9 -0
  214. package/dist/core/middleware/built-in/csrf/index.js.map +1 -0
  215. package/dist/core/middleware/built-in/csrf/middleware.d.ts +16 -0
  216. package/dist/core/middleware/built-in/csrf/middleware.js +34 -0
  217. package/dist/core/middleware/built-in/csrf/middleware.js.map +1 -0
  218. package/dist/core/middleware/built-in/error-tracker/index.d.ts +1 -0
  219. package/dist/core/middleware/built-in/error-tracker/index.js +4 -0
  220. package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -0
  221. package/dist/core/middleware/built-in/error-tracker/middleware.d.ts +12 -0
  222. package/dist/core/middleware/built-in/error-tracker/middleware.js +26 -0
  223. package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -0
  224. package/dist/core/middleware/built-in/index.d.ts +28 -61
  225. package/dist/core/middleware/built-in/index.js +48 -78
  226. package/dist/core/middleware/built-in/index.js.map +1 -1
  227. package/dist/core/middleware/built-in/performance-monitor/index.d.ts +1 -0
  228. package/dist/core/middleware/built-in/performance-monitor/index.js +4 -0
  229. package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -0
  230. package/dist/core/middleware/built-in/performance-monitor/middleware.d.ts +12 -0
  231. package/dist/core/middleware/built-in/performance-monitor/middleware.js +29 -0
  232. package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -0
  233. package/dist/core/middleware/built-in/rate-limit/core.d.ts +33 -0
  234. package/dist/core/middleware/built-in/rate-limit/core.js +86 -0
  235. package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -0
  236. package/dist/core/middleware/built-in/rate-limit/hook.d.ts +20 -0
  237. package/dist/core/middleware/built-in/{rate-limit.js → rate-limit/hook.js} +24 -22
  238. package/dist/core/middleware/built-in/rate-limit/hook.js.map +1 -0
  239. package/dist/core/middleware/built-in/rate-limit/index.d.ts +3 -0
  240. package/dist/core/middleware/built-in/rate-limit/index.js +9 -0
  241. package/dist/core/middleware/built-in/rate-limit/index.js.map +1 -0
  242. package/dist/core/middleware/built-in/rate-limit/middleware.d.ts +16 -0
  243. package/dist/core/middleware/built-in/rate-limit/middleware.js +35 -0
  244. package/dist/core/middleware/built-in/rate-limit/middleware.js.map +1 -0
  245. package/dist/core/middleware/built-in/request-logger/index.d.ts +1 -0
  246. package/dist/core/middleware/built-in/request-logger/index.js +4 -0
  247. package/dist/core/middleware/built-in/request-logger/index.js.map +1 -0
  248. package/dist/core/middleware/built-in/request-logger/middleware.d.ts +12 -0
  249. package/dist/core/middleware/built-in/request-logger/middleware.js +24 -0
  250. package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -0
  251. package/dist/core/middleware/built-in/session/core.d.ts +73 -0
  252. package/dist/core/middleware/built-in/session/core.js +227 -0
  253. package/dist/core/middleware/built-in/session/core.js.map +1 -0
  254. package/dist/core/middleware/built-in/session/hook.d.ts +17 -0
  255. package/dist/core/middleware/built-in/session/hook.js +53 -0
  256. package/dist/core/middleware/built-in/session/hook.js.map +1 -0
  257. package/dist/core/middleware/built-in/session/index.d.ts +3 -0
  258. package/dist/core/middleware/built-in/session/index.js +9 -0
  259. package/dist/core/middleware/built-in/session/index.js.map +1 -0
  260. package/dist/core/middleware/built-in/session/middleware.d.ts +17 -0
  261. package/dist/core/middleware/built-in/session/middleware.js +38 -0
  262. package/dist/core/middleware/built-in/session/middleware.js.map +1 -0
  263. package/dist/core/middleware/built-in/sse/core.d.ts +44 -0
  264. package/dist/core/middleware/built-in/sse/core.js +117 -0
  265. package/dist/core/middleware/built-in/sse/core.js.map +1 -0
  266. package/dist/core/middleware/built-in/sse/hook.d.ts +18 -0
  267. package/dist/core/middleware/built-in/sse/hook.js +60 -0
  268. package/dist/core/middleware/built-in/sse/hook.js.map +1 -0
  269. package/dist/core/middleware/built-in/sse/index.d.ts +3 -0
  270. package/dist/core/middleware/built-in/sse/index.js +9 -0
  271. package/dist/core/middleware/built-in/sse/index.js.map +1 -0
  272. package/dist/core/middleware/built-in/sse/middleware.d.ts +18 -0
  273. package/dist/core/middleware/built-in/sse/middleware.js +43 -0
  274. package/dist/core/middleware/built-in/sse/middleware.js.map +1 -0
  275. package/dist/core/middleware/built-in/validation/core.d.ts +23 -0
  276. package/dist/core/middleware/built-in/validation/core.js +93 -0
  277. package/dist/core/middleware/built-in/validation/core.js.map +1 -0
  278. package/dist/core/middleware/built-in/validation/hook.d.ts +13 -0
  279. package/dist/core/middleware/built-in/{validation.js → validation/hook.js} +16 -9
  280. package/dist/core/middleware/built-in/validation/hook.js.map +1 -0
  281. package/dist/core/middleware/built-in/validation/index.d.ts +3 -0
  282. package/dist/core/middleware/built-in/validation/index.js +9 -0
  283. package/dist/core/middleware/built-in/validation/index.js.map +1 -0
  284. package/dist/core/middleware/built-in/validation/middleware.d.ts +16 -0
  285. package/dist/core/middleware/built-in/validation/middleware.js +27 -0
  286. package/dist/core/middleware/built-in/validation/middleware.js.map +1 -0
  287. package/dist/core/middleware/index.d.ts +4 -4
  288. package/dist/core/middleware/index.js +14 -28
  289. package/dist/core/middleware/index.js.map +1 -1
  290. package/dist/core/modules/auto-discovery.d.ts +19 -2
  291. package/dist/core/modules/auto-discovery.js +391 -74
  292. package/dist/core/modules/auto-discovery.js.map +1 -1
  293. package/dist/core/modules/index.d.ts +2 -2
  294. package/dist/core/modules/index.js +2 -9
  295. package/dist/core/modules/index.js.map +1 -1
  296. package/dist/core/modules/modules.d.ts +3 -3
  297. package/dist/core/modules/modules.js +23 -54
  298. package/dist/core/modules/modules.js.map +1 -1
  299. package/dist/core/networking/adapters/index.d.ts +4 -3
  300. package/dist/core/networking/adapters/index.js +3 -7
  301. package/dist/core/networking/adapters/index.js.map +1 -1
  302. package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -1
  303. package/dist/core/networking/adapters/socketio-adapter.js +5 -40
  304. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  305. package/dist/core/networking/adapters/uws-adapter.d.ts +44 -0
  306. package/dist/core/networking/adapters/uws-adapter.js +513 -0
  307. package/dist/core/networking/adapters/uws-adapter.js.map +1 -0
  308. package/dist/core/networking/adapters/ws-adapter.d.ts +2 -2
  309. package/dist/core/networking/adapters/ws-adapter.js +8 -43
  310. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  311. package/dist/core/networking/index.d.ts +3 -2
  312. package/dist/core/networking/index.js +2 -7
  313. package/dist/core/networking/index.js.map +1 -1
  314. package/dist/core/networking/service-discovery.js +8 -12
  315. package/dist/core/networking/service-discovery.js.map +1 -1
  316. package/dist/core/networking/websocket-adapter.js +1 -2
  317. package/dist/core/networking/websocket-adapter.js.map +1 -1
  318. package/dist/core/networking/websocket-manager.d.ts +3 -3
  319. package/dist/core/networking/websocket-manager.js +9 -11
  320. package/dist/core/networking/websocket-manager.js.map +1 -1
  321. package/dist/core/pooling/object-pool-manager.d.ts +140 -0
  322. package/dist/core/pooling/object-pool-manager.js +502 -0
  323. package/dist/core/pooling/object-pool-manager.js.map +1 -0
  324. package/dist/core/routing/app-integration.d.ts +14 -12
  325. package/dist/core/routing/app-integration.js +49 -85
  326. package/dist/core/routing/app-integration.js.map +1 -1
  327. package/dist/core/routing/index.d.ts +17 -11
  328. package/dist/core/routing/index.js +48 -237
  329. package/dist/core/routing/index.js.map +1 -1
  330. package/dist/core/routing/path-matcher.d.ts +67 -0
  331. package/dist/core/routing/path-matcher.js +182 -0
  332. package/dist/core/routing/path-matcher.js.map +1 -0
  333. package/dist/core/routing/router.d.ts +38 -0
  334. package/dist/core/routing/router.js +68 -0
  335. package/dist/core/routing/router.js.map +1 -0
  336. package/dist/core/routing/unified-router.d.ts +132 -0
  337. package/dist/core/routing/unified-router.js +639 -0
  338. package/dist/core/routing/unified-router.js.map +1 -0
  339. package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
  340. package/dist/core/runtime/aws-lambda-adapter.js +2 -6
  341. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  342. package/dist/core/runtime/base-adapter.d.ts +2 -2
  343. package/dist/core/runtime/base-adapter.js +3 -7
  344. package/dist/core/runtime/base-adapter.js.map +1 -1
  345. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
  346. package/dist/core/runtime/cloudflare-workers-adapter.js +2 -6
  347. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  348. package/dist/core/runtime/index.d.ts +12 -12
  349. package/dist/core/runtime/index.js +22 -35
  350. package/dist/core/runtime/index.js.map +1 -1
  351. package/dist/core/runtime/node-adapter.d.ts +4 -4
  352. package/dist/core/runtime/node-adapter.js +18 -49
  353. package/dist/core/runtime/node-adapter.js.map +1 -1
  354. package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
  355. package/dist/core/runtime/vercel-edge-adapter.js +2 -6
  356. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  357. package/dist/core/utilities/circuit-breaker.js +1 -5
  358. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  359. package/dist/core/utilities/container.js +12 -22
  360. package/dist/core/utilities/container.js.map +1 -1
  361. package/dist/core/utilities/hooks.d.ts +2 -2
  362. package/dist/core/utilities/hooks.js +7 -12
  363. package/dist/core/utilities/hooks.js.map +1 -1
  364. package/dist/core/utilities/index.d.ts +5 -4
  365. package/dist/core/utilities/index.js +5 -19
  366. package/dist/core/utilities/index.js.map +1 -1
  367. package/dist/core/utilities/package-utils.d.ts +38 -0
  368. package/dist/core/utilities/package-utils.js +57 -0
  369. package/dist/core/utilities/package-utils.js.map +1 -0
  370. package/dist/core/validation/adapters.d.ts +1 -1
  371. package/dist/core/validation/adapters.js +15 -26
  372. package/dist/core/validation/adapters.js.map +1 -1
  373. package/dist/core/validation/index.d.ts +6 -4
  374. package/dist/core/validation/index.js +57 -28
  375. package/dist/core/validation/index.js.map +1 -1
  376. package/dist/core/validation/schema-interface.js +3 -9
  377. package/dist/core/validation/schema-interface.js.map +1 -1
  378. package/dist/index.d.ts +52 -52
  379. package/dist/index.js +24 -132
  380. package/dist/index.js.map +1 -1
  381. package/dist/moro.d.ts +70 -16
  382. package/dist/moro.js +650 -269
  383. package/dist/moro.js.map +1 -1
  384. package/dist/types/auth.js +3 -9
  385. package/dist/types/auth.js.map +1 -1
  386. package/dist/types/cache.js +1 -2
  387. package/dist/types/cdn.js +1 -2
  388. package/dist/types/config.d.ts +73 -2
  389. package/dist/types/config.js +1 -2
  390. package/dist/types/config.js.map +1 -1
  391. package/dist/types/core.d.ts +36 -42
  392. package/dist/types/core.js +1 -2
  393. package/dist/types/database.js +1 -2
  394. package/dist/types/discovery.js +1 -2
  395. package/dist/types/events.js +1 -2
  396. package/dist/types/hooks.d.ts +4 -1
  397. package/dist/types/hooks.js +1 -2
  398. package/dist/types/http.d.ts +16 -1
  399. package/dist/types/http.js +1 -2
  400. package/dist/types/logger.d.ts +7 -0
  401. package/dist/types/logger.js +1 -2
  402. package/dist/types/module.d.ts +11 -0
  403. package/dist/types/module.js +1 -2
  404. package/dist/types/runtime.d.ts +1 -1
  405. package/dist/types/runtime.js +1 -2
  406. package/dist/types/session.js +1 -2
  407. package/package.json +18 -55
  408. package/dist/core/config/loader.d.ts +0 -7
  409. package/dist/core/config/loader.js +0 -269
  410. package/dist/core/config/loader.js.map +0 -1
  411. package/dist/core/config/validation.d.ts +0 -17
  412. package/dist/core/config/validation.js +0 -131
  413. package/dist/core/config/validation.js.map +0 -1
  414. package/dist/core/http/router.d.ts +0 -14
  415. package/dist/core/http/router.js +0 -109
  416. package/dist/core/http/router.js.map +0 -1
  417. package/dist/core/middleware/built-in/adapters/cache/file.js.map +0 -1
  418. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +0 -5
  419. package/dist/core/middleware/built-in/adapters/cache/index.js +0 -28
  420. package/dist/core/middleware/built-in/adapters/cache/index.js.map +0 -1
  421. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +0 -1
  422. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +0 -1
  423. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +0 -1
  424. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +0 -1
  425. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +0 -1
  426. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +0 -5
  427. package/dist/core/middleware/built-in/adapters/cdn/index.js +0 -28
  428. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +0 -1
  429. package/dist/core/middleware/built-in/adapters/index.d.ts +0 -4
  430. package/dist/core/middleware/built-in/adapters/index.js +0 -26
  431. package/dist/core/middleware/built-in/adapters/index.js.map +0 -1
  432. package/dist/core/middleware/built-in/auth-helpers.js.map +0 -1
  433. package/dist/core/middleware/built-in/auth-providers.js.map +0 -1
  434. package/dist/core/middleware/built-in/auth.d.ts +0 -30
  435. package/dist/core/middleware/built-in/auth.js +0 -281
  436. package/dist/core/middleware/built-in/auth.js.map +0 -1
  437. package/dist/core/middleware/built-in/cache.d.ts +0 -3
  438. package/dist/core/middleware/built-in/cache.js.map +0 -1
  439. package/dist/core/middleware/built-in/cdn.d.ts +0 -3
  440. package/dist/core/middleware/built-in/cdn.js +0 -113
  441. package/dist/core/middleware/built-in/cdn.js.map +0 -1
  442. package/dist/core/middleware/built-in/cookie.d.ts +0 -14
  443. package/dist/core/middleware/built-in/cookie.js +0 -68
  444. package/dist/core/middleware/built-in/cookie.js.map +0 -1
  445. package/dist/core/middleware/built-in/cors.d.ts +0 -2
  446. package/dist/core/middleware/built-in/cors.js +0 -29
  447. package/dist/core/middleware/built-in/cors.js.map +0 -1
  448. package/dist/core/middleware/built-in/csp.d.ts +0 -22
  449. package/dist/core/middleware/built-in/csp.js +0 -71
  450. package/dist/core/middleware/built-in/csp.js.map +0 -1
  451. package/dist/core/middleware/built-in/csrf.d.ts +0 -9
  452. package/dist/core/middleware/built-in/csrf.js +0 -63
  453. package/dist/core/middleware/built-in/csrf.js.map +0 -1
  454. package/dist/core/middleware/built-in/error-tracker.d.ts +0 -1
  455. package/dist/core/middleware/built-in/error-tracker.js +0 -19
  456. package/dist/core/middleware/built-in/error-tracker.js.map +0 -1
  457. package/dist/core/middleware/built-in/performance-monitor.d.ts +0 -1
  458. package/dist/core/middleware/built-in/performance-monitor.js +0 -22
  459. package/dist/core/middleware/built-in/performance-monitor.js.map +0 -1
  460. package/dist/core/middleware/built-in/rate-limit.d.ts +0 -6
  461. package/dist/core/middleware/built-in/rate-limit.js.map +0 -1
  462. package/dist/core/middleware/built-in/request-logger.d.ts +0 -1
  463. package/dist/core/middleware/built-in/request-logger.js +0 -16
  464. package/dist/core/middleware/built-in/request-logger.js.map +0 -1
  465. package/dist/core/middleware/built-in/session.d.ts +0 -41
  466. package/dist/core/middleware/built-in/session.js +0 -209
  467. package/dist/core/middleware/built-in/session.js.map +0 -1
  468. package/dist/core/middleware/built-in/sse.d.ts +0 -6
  469. package/dist/core/middleware/built-in/sse.js +0 -71
  470. package/dist/core/middleware/built-in/sse.js.map +0 -1
  471. package/dist/core/middleware/built-in/validation.d.ts +0 -2
  472. package/dist/core/middleware/built-in/validation.js.map +0 -1
  473. package/src/core/auth/README.md +0 -339
  474. package/src/core/auth/morojs-adapter.ts +0 -410
  475. package/src/core/config/file-loader.ts +0 -407
  476. package/src/core/config/index.ts +0 -60
  477. package/src/core/config/loader.ts +0 -633
  478. package/src/core/config/schema.ts +0 -150
  479. package/src/core/config/utils.ts +0 -251
  480. package/src/core/config/validation.ts +0 -140
  481. package/src/core/database/README.md +0 -228
  482. package/src/core/database/adapters/drizzle.ts +0 -403
  483. package/src/core/database/adapters/index.ts +0 -42
  484. package/src/core/database/adapters/mongodb.ts +0 -269
  485. package/src/core/database/adapters/mysql.ts +0 -207
  486. package/src/core/database/adapters/postgresql.ts +0 -201
  487. package/src/core/database/adapters/redis.ts +0 -326
  488. package/src/core/database/adapters/sqlite.ts +0 -247
  489. package/src/core/database/index.ts +0 -3
  490. package/src/core/docs/index.ts +0 -231
  491. package/src/core/docs/openapi-generator.ts +0 -576
  492. package/src/core/docs/schema-to-openapi.ts +0 -148
  493. package/src/core/docs/simple-docs.ts +0 -295
  494. package/src/core/docs/swagger-ui.ts +0 -351
  495. package/src/core/docs/zod-to-openapi.ts +0 -532
  496. package/src/core/events/event-bus.ts +0 -231
  497. package/src/core/events/index.ts +0 -12
  498. package/src/core/framework.ts +0 -636
  499. package/src/core/http/http-server.ts +0 -1787
  500. package/src/core/http/index.ts +0 -6
  501. package/src/core/http/router.ts +0 -141
  502. package/src/core/logger/filters.ts +0 -145
  503. package/src/core/logger/index.ts +0 -20
  504. package/src/core/logger/logger.ts +0 -814
  505. package/src/core/logger/outputs.ts +0 -134
  506. package/src/core/middleware/built-in/adapters/cache/file.ts +0 -104
  507. package/src/core/middleware/built-in/adapters/cache/index.ts +0 -23
  508. package/src/core/middleware/built-in/adapters/cache/memory.ts +0 -73
  509. package/src/core/middleware/built-in/adapters/cache/redis.ts +0 -100
  510. package/src/core/middleware/built-in/adapters/cdn/azure.ts +0 -60
  511. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +0 -83
  512. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +0 -83
  513. package/src/core/middleware/built-in/adapters/cdn/index.ts +0 -23
  514. package/src/core/middleware/built-in/adapters/index.ts +0 -7
  515. package/src/core/middleware/built-in/auth-helpers.ts +0 -401
  516. package/src/core/middleware/built-in/auth-providers.ts +0 -480
  517. package/src/core/middleware/built-in/auth.ts +0 -329
  518. package/src/core/middleware/built-in/cache.ts +0 -211
  519. package/src/core/middleware/built-in/cdn.ts +0 -124
  520. package/src/core/middleware/built-in/cookie.ts +0 -85
  521. package/src/core/middleware/built-in/cors.ts +0 -38
  522. package/src/core/middleware/built-in/csp.ts +0 -101
  523. package/src/core/middleware/built-in/csrf.ts +0 -82
  524. package/src/core/middleware/built-in/error-tracker.ts +0 -16
  525. package/src/core/middleware/built-in/index.ts +0 -79
  526. package/src/core/middleware/built-in/performance-monitor.ts +0 -25
  527. package/src/core/middleware/built-in/rate-limit.ts +0 -60
  528. package/src/core/middleware/built-in/request-logger.ts +0 -14
  529. package/src/core/middleware/built-in/session.ts +0 -288
  530. package/src/core/middleware/built-in/sse.ts +0 -86
  531. package/src/core/middleware/built-in/validation.ts +0 -33
  532. package/src/core/middleware/index.ts +0 -177
  533. package/src/core/modules/auto-discovery.ts +0 -263
  534. package/src/core/modules/index.ts +0 -3
  535. package/src/core/modules/modules.ts +0 -124
  536. package/src/core/networking/adapters/index.ts +0 -16
  537. package/src/core/networking/adapters/socketio-adapter.ts +0 -252
  538. package/src/core/networking/adapters/ws-adapter.ts +0 -430
  539. package/src/core/networking/index.ts +0 -3
  540. package/src/core/networking/service-discovery.ts +0 -304
  541. package/src/core/networking/websocket-adapter.ts +0 -217
  542. package/src/core/networking/websocket-manager.ts +0 -308
  543. package/src/core/routing/app-integration.ts +0 -216
  544. package/src/core/routing/index.ts +0 -488
  545. package/src/core/runtime/aws-lambda-adapter.ts +0 -147
  546. package/src/core/runtime/base-adapter.ts +0 -130
  547. package/src/core/runtime/cloudflare-workers-adapter.ts +0 -152
  548. package/src/core/runtime/index.ts +0 -62
  549. package/src/core/runtime/node-adapter.ts +0 -196
  550. package/src/core/runtime/vercel-edge-adapter.ts +0 -114
  551. package/src/core/utilities/circuit-breaker.ts +0 -46
  552. package/src/core/utilities/container.ts +0 -736
  553. package/src/core/utilities/hooks.ts +0 -142
  554. package/src/core/utilities/index.ts +0 -16
  555. package/src/core/validation/adapters.ts +0 -147
  556. package/src/core/validation/index.ts +0 -206
  557. package/src/core/validation/schema-interface.ts +0 -100
  558. package/src/index.ts +0 -226
  559. package/src/moro.ts +0 -1197
  560. package/src/types/auth.ts +0 -440
  561. package/src/types/cache.ts +0 -38
  562. package/src/types/cdn.ts +0 -22
  563. package/src/types/config.ts +0 -157
  564. package/src/types/core.ts +0 -56
  565. package/src/types/database.ts +0 -32
  566. package/src/types/discovery.ts +0 -7
  567. package/src/types/events.ts +0 -82
  568. package/src/types/hooks.ts +0 -47
  569. package/src/types/http.ts +0 -67
  570. package/src/types/logger.ts +0 -93
  571. package/src/types/module.ts +0 -87
  572. package/src/types/runtime.ts +0 -76
  573. package/src/types/session.ts +0 -89
  574. package/tsconfig.json +0 -21
  575. /package/dist/core/middleware/built-in/{auth-helpers.d.ts → auth/helpers.d.ts} +0 -0
@@ -1,263 +0,0 @@
1
- // Auto-discovery system for Moro modules
2
- import { readdirSync, statSync } from 'fs';
3
- import { join, extname } from 'path';
4
- import { ModuleConfig } from '../../types/module';
5
- import { DiscoveryOptions } from '../../types/discovery';
6
- import { logger, createFrameworkLogger } from '../logger';
7
-
8
- export class ModuleDiscovery {
9
- private baseDir: string;
10
- private options: DiscoveryOptions;
11
- private discoveryLogger = createFrameworkLogger('MODULE_DISCOVERY');
12
-
13
- constructor(baseDir: string = process.cwd(), options: DiscoveryOptions = {}) {
14
- this.baseDir = baseDir;
15
- this.options = {
16
- pattern: /\.(module|config)\.(ts|js)$/,
17
- recursive: true,
18
- extensions: ['.ts', '.js'],
19
- ...options,
20
- };
21
- }
22
-
23
- // Auto-discover modules in the filesystem
24
- async discoverModules(): Promise<ModuleConfig[]> {
25
- const modules: ModuleConfig[] = [];
26
- const modulePaths = this.findModuleFiles();
27
-
28
- for (const modulePath of modulePaths) {
29
- try {
30
- const module = await this.loadModule(modulePath);
31
- if (module) {
32
- modules.push(module);
33
- this.discoveryLogger.info(
34
- `Auto-discovered module: ${module.name}@${module.version} from ${modulePath}`
35
- );
36
- }
37
- } catch (error) {
38
- this.discoveryLogger.warn(`Failed to load module from ${modulePath}:`, 'ModuleDiscovery', {
39
- error: error instanceof Error ? error.message : String(error),
40
- });
41
- }
42
- }
43
-
44
- return modules;
45
- }
46
-
47
- // Find modules by directory structure
48
- async discoverModuleDirectories(modulesDir: string = 'src/modules'): Promise<ModuleConfig[]> {
49
- const modules: ModuleConfig[] = [];
50
- const fullPath = join(this.baseDir, modulesDir);
51
-
52
- try {
53
- if (!statSync(fullPath).isDirectory()) {
54
- return modules;
55
- }
56
-
57
- const items = readdirSync(fullPath);
58
-
59
- for (const item of items) {
60
- const itemPath = join(fullPath, item);
61
-
62
- if (statSync(itemPath).isDirectory()) {
63
- const indexPath = join(itemPath, 'index.ts');
64
-
65
- try {
66
- if (statSync(indexPath).isFile()) {
67
- const module = await this.loadModule(indexPath);
68
- if (module) {
69
- modules.push(module);
70
- this.discoveryLogger.info(
71
- `Auto-discovered module directory: ${module.name} from ${item}/`
72
- );
73
- }
74
- }
75
- } catch {
76
- // Try alternate patterns
77
- const alternates = ['module.ts', `${item}.module.ts`, 'config.ts'];
78
-
79
- for (const alt of alternates) {
80
- const altPath = join(itemPath, alt);
81
- try {
82
- if (statSync(altPath).isFile()) {
83
- const module = await this.loadModule(altPath);
84
- if (module) {
85
- modules.push(module);
86
- this.discoveryLogger.info(
87
- `Auto-discovered module: ${module.name} from ${item}/${alt}`
88
- );
89
- break;
90
- }
91
- }
92
- } catch {
93
- // Continue trying
94
- }
95
- }
96
- }
97
- }
98
- }
99
- } catch {
100
- // Directory doesn't exist, that's fine
101
- }
102
-
103
- return modules;
104
- }
105
-
106
- // Find all module files matching the pattern
107
- private findModuleFiles(): string[] {
108
- const files: string[] = [];
109
- this.scanDirectory(this.baseDir, files);
110
- return files.filter(file => this.options.pattern?.test(file));
111
- }
112
-
113
- // Recursively scan directories for module files
114
- private scanDirectory(dir: string, files: string[]): void {
115
- try {
116
- const items = readdirSync(dir);
117
-
118
- for (const item of items) {
119
- const fullPath = join(dir, item);
120
- const stat = statSync(fullPath);
121
-
122
- if (stat.isDirectory()) {
123
- // Skip node_modules and other common directories
124
- if (!['node_modules', '.git', 'dist', 'build'].includes(item) && this.options.recursive) {
125
- this.scanDirectory(fullPath, files);
126
- }
127
- } else if (stat.isFile()) {
128
- const ext = extname(item);
129
- if (this.options.extensions?.includes(ext)) {
130
- files.push(fullPath);
131
- }
132
- }
133
- }
134
- } catch {
135
- // Directory not accessible, skip
136
- }
137
- }
138
-
139
- // Load a module from a file path
140
- private async loadModule(modulePath: string): Promise<ModuleConfig | null> {
141
- try {
142
- const module = await import(modulePath);
143
-
144
- // Try different export patterns
145
- const candidates = [
146
- module.default,
147
- module.module,
148
- module.config,
149
- module,
150
- ...Object.values(module).filter(
151
- exp => exp && typeof exp === 'object' && 'name' in exp && 'version' in exp
152
- ),
153
- ];
154
-
155
- for (const candidate of candidates) {
156
- if (this.isValidModule(candidate)) {
157
- return candidate as ModuleConfig;
158
- }
159
- }
160
-
161
- return null;
162
- } catch (error) {
163
- throw new Error(`Failed to import module: ${(error as Error).message}`);
164
- }
165
- }
166
-
167
- // Validate that an object is a valid ModuleConfig
168
- private isValidModule(obj: any): boolean {
169
- return (
170
- obj &&
171
- typeof obj === 'object' &&
172
- typeof obj.name === 'string' &&
173
- typeof obj.version === 'string' &&
174
- (obj.routes === undefined || Array.isArray(obj.routes)) &&
175
- (obj.websockets === undefined || Array.isArray(obj.websockets)) &&
176
- (obj.services === undefined || Array.isArray(obj.services))
177
- );
178
- }
179
-
180
- // Watch for module changes (for development)
181
- watchModules(callback: (modules: ModuleConfig[]) => void): void {
182
- const fs = require('fs');
183
- const modulePaths = this.findModuleFiles();
184
-
185
- modulePaths.forEach(path => {
186
- try {
187
- fs.watchFile(path, async () => {
188
- this.discoveryLogger.info(`Module file changed: ${path}`);
189
- const modules = await this.discoverModules();
190
- callback(modules);
191
- });
192
- } catch {
193
- // File watching not supported or failed
194
- }
195
- });
196
- }
197
- }
198
-
199
- // Convenience functions
200
- export async function autoDiscoverModules(
201
- baseDir?: string,
202
- options?: DiscoveryOptions
203
- ): Promise<ModuleConfig[]> {
204
- const discovery = new ModuleDiscovery(baseDir, options);
205
- return discovery.discoverModules();
206
- }
207
-
208
- export async function autoDiscoverModuleDirectories(
209
- baseDir?: string,
210
- modulesDir?: string
211
- ): Promise<ModuleConfig[]> {
212
- const discovery = new ModuleDiscovery(baseDir);
213
- return discovery.discoverModuleDirectories(modulesDir);
214
- }
215
-
216
- // Module registry for tracking loaded modules
217
- export class ModuleRegistry {
218
- private modules = new Map<string, ModuleConfig>();
219
- private loadedModules = new Set<string>();
220
-
221
- register(module: ModuleConfig): void {
222
- const key = `${module.name}@${module.version}`;
223
- this.modules.set(key, module);
224
- }
225
-
226
- markLoaded(moduleName: string, version: string): void {
227
- const key = `${moduleName}@${version}`;
228
- this.loadedModules.add(key);
229
- }
230
-
231
- isLoaded(moduleName: string, version: string): boolean {
232
- const key = `${moduleName}@${version}`;
233
- return this.loadedModules.has(key);
234
- }
235
-
236
- getModule(moduleName: string, version?: string): ModuleConfig | undefined {
237
- if (version) {
238
- return this.modules.get(`${moduleName}@${version}`);
239
- }
240
-
241
- // Find latest version if no version specified
242
- const modules = Array.from(this.modules.entries())
243
- .filter(([key]) => key.startsWith(`${moduleName}@`))
244
- .sort(([a], [b]) => b.localeCompare(a)); // Sort by version desc
245
-
246
- return modules[0]?.[1];
247
- }
248
-
249
- getAllModules(): ModuleConfig[] {
250
- return Array.from(this.modules.values());
251
- }
252
-
253
- getLoadedModules(): ModuleConfig[] {
254
- return Array.from(this.modules.entries())
255
- .filter(([key]) => this.loadedModules.has(key))
256
- .map(([, module]) => module);
257
- }
258
-
259
- clear(): void {
260
- this.modules.clear();
261
- this.loadedModules.clear();
262
- }
263
- }
@@ -1,3 +0,0 @@
1
- // Module System - Centralized Exports
2
- export { defineModule, ModuleLoader } from './modules';
3
- export { ModuleDiscovery, autoDiscoverModuleDirectories } from './auto-discovery';
@@ -1,124 +0,0 @@
1
- // Module System - Definition and Loading
2
- import { promises as fs } from 'fs';
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 { logger, createFrameworkLogger } from '../logger';
8
-
9
- // Module Definition Function
10
- export function defineModule(definition: ModuleDefinition): ModuleConfig {
11
- const moduleConfig: ModuleConfig = {
12
- name: definition.name,
13
- version: definition.version,
14
- dependencies: definition.dependencies,
15
- };
16
-
17
- // Store route definitions and handlers
18
- if (definition.routes) {
19
- moduleConfig.routes = definition.routes.map((route, index) => ({
20
- method: route.method,
21
- path: route.path,
22
- handler: `route_handler_${index}`, // Standardized naming
23
- validation: route.validation,
24
- cache: route.cache,
25
- rateLimit: route.rateLimit,
26
- middleware: route.middleware,
27
- }));
28
-
29
- // Store the actual route handler functions
30
- moduleConfig.routeHandlers = definition.routes.reduce(
31
- (acc, route, index) => {
32
- acc[`route_handler_${index}`] = route.handler;
33
- return acc;
34
- },
35
- {} as Record<string, Function>
36
- );
37
- }
38
-
39
- // Store socket definitions and handlers
40
- if (definition.sockets) {
41
- moduleConfig.sockets = definition.sockets.map((socket, index) => ({
42
- event: socket.event,
43
- handler: `socket_handler_${index}`, // Standardized naming
44
- validation: socket.validation,
45
- rateLimit: socket.rateLimit,
46
- rooms: socket.rooms,
47
- broadcast: socket.broadcast,
48
- }));
49
-
50
- // Store the actual socket handler functions
51
- moduleConfig.socketHandlers = definition.sockets.reduce(
52
- (acc, socket, index) => {
53
- acc[`socket_handler_${index}`] = socket.handler;
54
- return acc;
55
- },
56
- {} as Record<string, Function>
57
- );
58
- }
59
-
60
- // Copy config
61
- if (definition.config) {
62
- moduleConfig.config = definition.config;
63
- }
64
-
65
- return moduleConfig;
66
- }
67
-
68
- // Module Loader Class
69
- export class ModuleLoader {
70
- private moduleLogger = createFrameworkLogger('MODULE_LOADER');
71
-
72
- constructor(private container: Container) {}
73
-
74
- async discoverModules(directory: string): Promise<ModuleConfig[]> {
75
- const modules: ModuleConfig[] = [];
76
-
77
- try {
78
- const moduleDir = path.resolve(directory);
79
- const entries = await fs.readdir(moduleDir, { withFileTypes: true });
80
-
81
- for (const entry of entries) {
82
- if (entry.isDirectory()) {
83
- const modulePath = path.join(moduleDir, entry.name, 'index.ts');
84
-
85
- try {
86
- await fs.access(modulePath);
87
- const moduleExports = await import(modulePath);
88
-
89
- // Look for exported module config
90
- for (const exportName of Object.keys(moduleExports)) {
91
- const exported = moduleExports[exportName];
92
- if (exported && typeof exported === 'object' && exported.name && exported.version) {
93
- modules.push(exported as ModuleConfig);
94
- }
95
- }
96
- } catch (error) {
97
- this.moduleLogger.warn(
98
- `⚠️ Could not load module from ${modulePath}:`,
99
- 'ModuleLoader',
100
- {
101
- error: error instanceof Error ? error.message : String(error),
102
- }
103
- );
104
- }
105
- }
106
- }
107
- } catch (error) {
108
- this.moduleLogger.error('Failed to discover modules:', 'ModuleLoader', {
109
- error: error instanceof Error ? error.message : String(error),
110
- });
111
- }
112
-
113
- return modules;
114
- }
115
-
116
- validateModule(config: ModuleConfig): boolean {
117
- if (!config.name || !config.version) {
118
- return false;
119
- }
120
-
121
- // [TODO] Add more validation logic here
122
- return true;
123
- }
124
- }
@@ -1,16 +0,0 @@
1
- // WebSocket Adapters for Moro Framework
2
- // Export all available adapters from this centralized location
3
-
4
- export { SocketIOAdapter } from './socketio-adapter';
5
- export { WSAdapter } from './ws-adapter';
6
-
7
- // Re-export the adapter interface for convenience
8
- export type {
9
- WebSocketAdapter,
10
- WebSocketAdapterOptions,
11
- WebSocketNamespace,
12
- WebSocketConnection,
13
- WebSocketEmitter,
14
- WebSocketMiddleware,
15
- WebSocketEventHandler,
16
- } from '../websocket-adapter';
@@ -1,252 +0,0 @@
1
- // Socket.IO WebSocket Adapter for Moro Framework
2
- // Implements the WebSocket adapter interface using Socket.IO
3
-
4
- import {
5
- WebSocketAdapter,
6
- WebSocketAdapterOptions,
7
- WebSocketNamespace,
8
- WebSocketConnection,
9
- WebSocketEmitter,
10
- WebSocketMiddleware,
11
- } from '../websocket-adapter';
12
-
13
- /**
14
- * Socket.IO adapter implementation
15
- */
16
- export class SocketIOAdapter implements WebSocketAdapter {
17
- private io: any; // Socket.IO server instance
18
- private customIdGenerator?: () => string;
19
-
20
- async initialize(httpServer: any, options: WebSocketAdapterOptions = {}): Promise<void> {
21
- try {
22
- // Dynamic import to avoid requiring socket.io as a hard dependency
23
- const { Server } = await import('socket.io');
24
-
25
- this.io = new Server(httpServer, {
26
- cors: options.cors || { origin: '*' },
27
- path: options.path || '/socket.io/',
28
- compression: options.compression !== false,
29
- maxHttpBufferSize: options.maxPayloadLength,
30
- ...options,
31
- });
32
-
33
- // Apply custom ID generator if set
34
- if (this.customIdGenerator) {
35
- (this.io.engine as any).generateId = this.customIdGenerator;
36
- }
37
-
38
- // Setup compression if enabled
39
- if (options.compression) {
40
- this.setCompression(true);
41
- }
42
- } catch (error) {
43
- throw new Error(
44
- 'Socket.IO not found. Install it with: npm install socket.io\n' +
45
- 'Or use a different WebSocket adapter.'
46
- );
47
- }
48
- }
49
-
50
- createNamespace(namespace: string): WebSocketNamespace {
51
- if (!this.io) {
52
- throw new Error('Socket.IO adapter not initialized');
53
- }
54
-
55
- const ns = this.io.of(namespace);
56
- return new SocketIONamespaceWrapper(ns);
57
- }
58
-
59
- getDefaultNamespace(): WebSocketNamespace {
60
- return this.createNamespace('/');
61
- }
62
-
63
- async close(): Promise<void> {
64
- if (this.io) {
65
- return new Promise(resolve => {
66
- this.io.close(() => resolve());
67
- });
68
- }
69
- }
70
-
71
- setCompression(enabled: boolean, options: any = {}): void {
72
- if (this.io && enabled) {
73
- (this.io.engine as any).compression = true;
74
- (this.io.engine as any).perMessageDeflate = {
75
- threshold: 1024,
76
- concurrencyLimit: 10,
77
- memLevel: 8,
78
- ...options,
79
- };
80
- }
81
- }
82
-
83
- setCustomIdGenerator(generator: () => string): void {
84
- this.customIdGenerator = generator;
85
- if (this.io) {
86
- (this.io.engine as any).generateId = generator;
87
- }
88
- }
89
-
90
- getAdapterName(): string {
91
- return 'socket.io';
92
- }
93
-
94
- getConnectionCount(): number {
95
- if (!this.io) return 0;
96
- return this.io.engine.clientsCount || 0;
97
- }
98
- }
99
-
100
- /**
101
- * Socket.IO namespace wrapper
102
- */
103
- class SocketIONamespaceWrapper implements WebSocketNamespace {
104
- constructor(private namespace: any) {}
105
-
106
- on(event: 'connection', handler: (socket: WebSocketConnection) => void): void {
107
- this.namespace.on(event, (socket: any) => {
108
- handler(new SocketIOConnectionWrapper(socket));
109
- });
110
- }
111
-
112
- emit(event: string, data: any): void {
113
- this.namespace.emit(event, data);
114
- }
115
-
116
- to(room: string | string[]): WebSocketEmitter {
117
- const target = Array.isArray(room)
118
- ? room.reduce((acc, r) => acc.to(r), this.namespace)
119
- : this.namespace.to(room);
120
- return new SocketIOEmitterWrapper(target);
121
- }
122
-
123
- except(room: string | string[]): WebSocketEmitter {
124
- const target = Array.isArray(room)
125
- ? room.reduce((acc, r) => acc.except(r), this.namespace)
126
- : this.namespace.except(room);
127
- return new SocketIOEmitterWrapper(target);
128
- }
129
-
130
- getSockets(): WebSocketConnection[] {
131
- const sockets = this.namespace.sockets;
132
- return Array.from(sockets.values()).map((socket: any) => new SocketIOConnectionWrapper(socket));
133
- }
134
-
135
- getConnectionCount(): number {
136
- return this.namespace.sockets.size;
137
- }
138
-
139
- use(middleware: WebSocketMiddleware): void {
140
- this.namespace.use((socket: any, next: any) => {
141
- middleware(new SocketIOConnectionWrapper(socket), next);
142
- });
143
- }
144
- }
145
-
146
- /**
147
- * Socket.IO connection wrapper
148
- */
149
- class SocketIOConnectionWrapper implements WebSocketConnection {
150
- public data: Record<string, any> = {};
151
-
152
- constructor(private socket: any) {
153
- // Map socket.data to our data property
154
- this.data = socket.data || {};
155
- }
156
-
157
- get id(): string {
158
- return this.socket.id;
159
- }
160
-
161
- get ip(): string | undefined {
162
- return this.socket.handshake?.address;
163
- }
164
-
165
- get headers(): Record<string, string> | undefined {
166
- return this.socket.handshake?.headers;
167
- }
168
-
169
- get connected(): boolean {
170
- return this.socket.connected;
171
- }
172
-
173
- get broadcast(): WebSocketEmitter {
174
- return new SocketIOEmitterWrapper(this.socket.broadcast);
175
- }
176
-
177
- on(event: string, handler: (data: any, callback?: (response?: any) => void) => void): void {
178
- this.socket.on(event, handler);
179
- }
180
-
181
- onAny(handler: (event: string, ...args: any[]) => void): void {
182
- this.socket.onAny(handler);
183
- }
184
-
185
- emit(event: string, data: any): void {
186
- this.socket.emit(event, data);
187
- }
188
-
189
- compressedEmit(event: string, data: any): void {
190
- this.socket.compress(true).emit(event, data);
191
- }
192
-
193
- join(room: string | string[]): void {
194
- if (Array.isArray(room)) {
195
- room.forEach(r => this.socket.join(r));
196
- } else {
197
- this.socket.join(room);
198
- }
199
- }
200
-
201
- leave(room: string | string[]): void {
202
- if (Array.isArray(room)) {
203
- room.forEach(r => this.socket.leave(r));
204
- } else {
205
- this.socket.leave(room);
206
- }
207
- }
208
-
209
- to(room: string | string[]): WebSocketEmitter {
210
- const target = Array.isArray(room)
211
- ? room.reduce((acc, r) => acc.to(r), this.socket)
212
- : this.socket.to(room);
213
- return new SocketIOEmitterWrapper(target);
214
- }
215
-
216
- getRooms(): Set<string> {
217
- return new Set(this.socket.rooms);
218
- }
219
-
220
- disconnect(close?: boolean): void {
221
- this.socket.disconnect(close);
222
- }
223
- }
224
-
225
- /**
226
- * Socket.IO emitter wrapper
227
- */
228
- class SocketIOEmitterWrapper implements WebSocketEmitter {
229
- constructor(private emitter: any) {}
230
-
231
- emit(event: string, data: any): void {
232
- this.emitter.emit(event, data);
233
- }
234
-
235
- to(room: string | string[]): WebSocketEmitter {
236
- const target = Array.isArray(room)
237
- ? room.reduce((acc, r) => acc.to(r), this.emitter)
238
- : this.emitter.to(room);
239
- return new SocketIOEmitterWrapper(target);
240
- }
241
-
242
- except(room: string | string[]): WebSocketEmitter {
243
- const target = Array.isArray(room)
244
- ? room.reduce((acc, r) => acc.except(r), this.emitter)
245
- : this.emitter.except(room);
246
- return new SocketIOEmitterWrapper(target);
247
- }
248
-
249
- compress(compress: boolean): WebSocketEmitter {
250
- return new SocketIOEmitterWrapper(this.emitter.compress(compress));
251
- }
252
- }