@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,142 +0,0 @@
1
- // Hook System for Moro
2
- import { EventEmitter } from 'events';
3
- import { HookFunction, HookContext, MoroMiddleware } from '../../types/hooks';
4
- import { createFrameworkLogger } from '../logger';
5
-
6
- export const HOOK_EVENTS = {
7
- BEFORE_REQUEST: 'before:request',
8
- AFTER_REQUEST: 'after:request',
9
- BEFORE_RESPONSE: 'before:response',
10
- AFTER_RESPONSE: 'after:response',
11
- ERROR: 'error',
12
- } as const;
13
-
14
- export class HookManager extends EventEmitter {
15
- private hooks = new Map<string, HookFunction[]>();
16
- private beforeHooks = new Map<string, HookFunction[]>();
17
- private afterHooks = new Map<string, HookFunction[]>();
18
- private logger = createFrameworkLogger('Hooks');
19
-
20
- constructor() {
21
- super();
22
- // Initialize hook arrays
23
- Object.values(HOOK_EVENTS).forEach(event => {
24
- this.hooks.set(event, []);
25
- this.beforeHooks.set(event, []);
26
- this.afterHooks.set(event, []);
27
- });
28
- }
29
-
30
- // Register a hook for a specific event
31
- hook(event: string, fn: HookFunction): this {
32
- if (!this.hooks.has(event)) {
33
- this.hooks.set(event, []);
34
- }
35
- this.hooks.get(event)!.push(fn);
36
- return this;
37
- }
38
-
39
- // Register a before hook
40
- before(event: string, fn: HookFunction): this {
41
- if (!this.beforeHooks.has(event)) {
42
- this.beforeHooks.set(event, []);
43
- }
44
- this.beforeHooks.get(event)!.push(fn);
45
- return this;
46
- }
47
-
48
- // Register an after hook
49
- after(event: string, fn: HookFunction): this {
50
- if (!this.afterHooks.has(event)) {
51
- this.afterHooks.set(event, []);
52
- }
53
- this.afterHooks.get(event)!.push(fn);
54
- return this;
55
- }
56
-
57
- // Execute hooks for an event
58
- async execute(event: string, context: HookContext = {}): Promise<HookContext> {
59
- // Execute before hooks
60
- const beforeHooks = this.beforeHooks.get(event) || [];
61
- for (const hook of beforeHooks) {
62
- await this.executeHook(hook, context);
63
- }
64
-
65
- // Execute main hooks
66
- const hooks = this.hooks.get(event) || [];
67
- for (const hook of hooks) {
68
- await this.executeHook(hook, context);
69
- }
70
-
71
- // Execute after hooks
72
- const afterHooks = this.afterHooks.get(event) || [];
73
- for (const hook of afterHooks) {
74
- await this.executeHook(hook, context);
75
- }
76
-
77
- // Emit event for listeners
78
- this.emit(event, context);
79
-
80
- return context;
81
- }
82
-
83
- // Execute a single hook with error handling
84
- private async executeHook(hook: HookFunction, context: HookContext): Promise<void> {
85
- try {
86
- await hook(context);
87
- } catch (error) {
88
- this.logger.error('Hook execution error', 'HookExecution', {
89
- error: error instanceof Error ? error.message : String(error),
90
- context: context.request?.method || 'unknown',
91
- });
92
- throw error;
93
- }
94
- }
95
-
96
- // Remove hooks
97
- removeHook(event: string, fn?: HookFunction): this {
98
- if (!fn) {
99
- this.hooks.delete(event);
100
- this.beforeHooks.delete(event);
101
- this.afterHooks.delete(event);
102
- } else {
103
- [this.hooks, this.beforeHooks, this.afterHooks].forEach(map => {
104
- const hooks = map.get(event);
105
- if (hooks) {
106
- const index = hooks.indexOf(fn);
107
- if (index !== -1) {
108
- hooks.splice(index, 1);
109
- }
110
- }
111
- });
112
- }
113
- return this;
114
- }
115
-
116
- // Get all registered hooks for debugging
117
- getHooks(event?: string): Record<string, any> {
118
- if (event) {
119
- return {
120
- before: this.beforeHooks.get(event) || [],
121
- main: this.hooks.get(event) || [],
122
- after: this.afterHooks.get(event) || [],
123
- };
124
- }
125
-
126
- const allHooks: Record<string, any> = {};
127
- const allEvents = new Set([
128
- ...this.hooks.keys(),
129
- ...this.beforeHooks.keys(),
130
- ...this.afterHooks.keys(),
131
- ]);
132
-
133
- allEvents.forEach(event => {
134
- allHooks[event] = this.getHooks(event);
135
- });
136
-
137
- return allHooks;
138
- }
139
- }
140
-
141
- // Built-in middleware - now organized in individual files
142
- export { simpleMiddleware as middleware } from '../middleware/index';
@@ -1,16 +0,0 @@
1
- // Core Utilities - Centralized Exports
2
- export {
3
- Container,
4
- FunctionalContainer,
5
- ServiceScope,
6
- ServiceLifecycle,
7
- withLogging,
8
- withCaching,
9
- withRetry,
10
- withTimeout,
11
- } from './container';
12
- export { CircuitBreaker } from './circuit-breaker';
13
- export { HookManager, HOOK_EVENTS } from './hooks';
14
-
15
- // Re-export middleware from hooks
16
- export { middleware } from './hooks';
@@ -1,147 +0,0 @@
1
- // Validation Library Adapters for Moro Framework
2
- // Makes Joi, Yup, and other libraries compatible with ValidationSchema interface
3
-
4
- import { ValidationSchema, ValidationError, normalizeValidationError } from './schema-interface';
5
-
6
- /**
7
- * Zod Compatibility Check
8
- * Zod ALREADY implements ValidationSchema interface natively!
9
- * No adapter needed - it just works.
10
- */
11
-
12
- /**
13
- * Joi Adapter - makes Joi schemas compatible with ValidationSchema
14
- */
15
- export class JoiAdapter<T = any> implements ValidationSchema<T> {
16
- constructor(private joiSchema: any) {
17
- if (!joiSchema || typeof joiSchema.validateAsync !== 'function') {
18
- throw new Error('Invalid Joi schema provided to JoiAdapter');
19
- }
20
- }
21
-
22
- async parseAsync(data: unknown): Promise<T> {
23
- try {
24
- const result = await this.joiSchema.validateAsync(data, { abortEarly: false });
25
- return result as T;
26
- } catch (error) {
27
- throw normalizeValidationError(error);
28
- }
29
- }
30
- }
31
-
32
- /**
33
- * Yup Adapter - makes Yup schemas compatible with ValidationSchema
34
- */
35
- export class YupAdapter<T = any> implements ValidationSchema<T> {
36
- constructor(private yupSchema: any) {
37
- if (!yupSchema || typeof yupSchema.validate !== 'function') {
38
- throw new Error('Invalid Yup schema provided to YupAdapter');
39
- }
40
- }
41
-
42
- async parseAsync(data: unknown): Promise<T> {
43
- try {
44
- const result = await this.yupSchema.validate(data, { abortEarly: false });
45
- return result as T;
46
- } catch (error) {
47
- throw normalizeValidationError(error);
48
- }
49
- }
50
- }
51
-
52
- /**
53
- * Custom Validation Function Adapter
54
- * Allows users to use simple validation functions
55
- */
56
- export class FunctionAdapter<T = any> implements ValidationSchema<T> {
57
- constructor(
58
- private validateFn: (data: unknown) => T | Promise<T>,
59
- private name: string = 'custom'
60
- ) {
61
- if (typeof validateFn !== 'function') {
62
- throw new Error('Validation function is required for FunctionAdapter');
63
- }
64
- }
65
-
66
- async parseAsync(data: unknown): Promise<T> {
67
- try {
68
- return await this.validateFn(data);
69
- } catch (error) {
70
- throw new ValidationError([
71
- {
72
- path: [],
73
- message: error instanceof Error ? error.message : String(error),
74
- code: this.name,
75
- },
76
- ]);
77
- }
78
- }
79
- }
80
-
81
- /**
82
- * Class Validator Adapter (for TypeScript decorators)
83
- */
84
- export class ClassValidatorAdapter<T extends object = any> implements ValidationSchema<T> {
85
- constructor(
86
- private ClassType: new () => T,
87
- private validate?: (obj: any) => Promise<any[]>
88
- ) {
89
- if (typeof ClassType !== 'function') {
90
- throw new Error('Class constructor is required for ClassValidatorAdapter');
91
- }
92
- }
93
-
94
- async parseAsync(data: unknown): Promise<T> {
95
- try {
96
- const instance = Object.assign(new this.ClassType(), data as Record<string, any>);
97
-
98
- if (this.validate) {
99
- const errors = await this.validate(instance);
100
- if (errors && errors.length > 0) {
101
- throw new ValidationError(
102
- errors.map((error: any, index: number) => ({
103
- path: error.property ? [error.property] : [index],
104
- message: Object.values(error.constraints || {}).join(', ') || 'Validation failed',
105
- code: 'class_validator',
106
- }))
107
- );
108
- }
109
- }
110
-
111
- return instance as T;
112
- } catch (error) {
113
- if (error instanceof ValidationError) throw error;
114
- throw normalizeValidationError(error);
115
- }
116
- }
117
- }
118
-
119
- /**
120
- * Utility functions for creating adapters
121
- */
122
- export function joi<T = any>(joiSchema: any): ValidationSchema<T> {
123
- return new JoiAdapter<T>(joiSchema);
124
- }
125
-
126
- export function yup<T = any>(yupSchema: any): ValidationSchema<T> {
127
- return new YupAdapter<T>(yupSchema);
128
- }
129
-
130
- export function fn<T = any>(
131
- validateFn: (data: unknown) => T | Promise<T>,
132
- name?: string
133
- ): ValidationSchema<T> {
134
- return new FunctionAdapter<T>(validateFn, name);
135
- }
136
-
137
- export function classValidator<T extends object = any>(
138
- ClassType: new () => T,
139
- validate?: (obj: any) => Promise<any[]>
140
- ): ValidationSchema<T> {
141
- return new ClassValidatorAdapter<T>(ClassType, validate);
142
- }
143
-
144
- // Type helpers
145
- export type JoiSchema<T> = ValidationSchema<T>;
146
- export type YupSchema<T> = ValidationSchema<T>;
147
- export type CustomValidator<T> = ValidationSchema<T>;
@@ -1,206 +0,0 @@
1
- // Universal Validation System for Moro Framework
2
- // Works with Zod, Joi, Yup, and any validation library via adapters
3
-
4
- import { HttpRequest, HttpResponse } from '../http';
5
- import { createFrameworkLogger } from '../logger';
6
- import {
7
- ValidationSchema,
8
- ValidationError,
9
- normalizeValidationError,
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
15
-
16
- const logger = createFrameworkLogger('Validation');
17
-
18
- // Universal validation configuration interface
19
- export interface ValidationConfig {
20
- body?: ValidationSchema;
21
- query?: ValidationSchema;
22
- params?: ValidationSchema;
23
- headers?: ValidationSchema;
24
- }
25
-
26
- // Validation result types
27
- export interface ValidationResult<T = any> {
28
- success: boolean;
29
- data?: T;
30
- errors?: ValidationErrorDetail[];
31
- }
32
-
33
- export interface ValidationErrorDetail {
34
- field: string;
35
- message: string;
36
- code: string;
37
- }
38
-
39
- // Enhanced request type with validated data
40
- export interface ValidatedRequest<T = any> extends HttpRequest {
41
- validatedBody?: T;
42
- validatedQuery?: any;
43
- validatedParams?: any;
44
- validatedHeaders?: any;
45
- }
46
-
47
- // Main validation wrapper function
48
- export function validate<TBody = any, TQuery = any, TParams = any>(
49
- config: ValidationConfig,
50
- handler: (req: ValidatedRequest<TBody>, res: HttpResponse) => any | Promise<any>
51
- ) {
52
- return async (req: HttpRequest, res: HttpResponse): Promise<any> => {
53
- try {
54
- const validatedReq = req as ValidatedRequest<TBody>;
55
-
56
- // Validate body
57
- if (config.body) {
58
- const result = await validateField(config.body, req.body, 'body');
59
- if (!result.success) {
60
- return sendValidationError(res, result.errors!, 'body');
61
- }
62
- validatedReq.validatedBody = result.data;
63
- validatedReq.body = result.data; // Also update original body for compatibility
64
- }
65
-
66
- // Validate query parameters
67
- if (config.query) {
68
- const result = await validateField(config.query, req.query, 'query');
69
- if (!result.success) {
70
- return sendValidationError(res, result.errors!, 'query');
71
- }
72
- validatedReq.validatedQuery = result.data;
73
- validatedReq.query = result.data; // Also update original query for compatibility
74
- }
75
-
76
- // Validate path parameters
77
- if (config.params) {
78
- const result = await validateField(config.params, req.params, 'params');
79
- if (!result.success) {
80
- return sendValidationError(res, result.errors!, 'params');
81
- }
82
- validatedReq.validatedParams = result.data;
83
- validatedReq.params = result.data; // Also update original params for compatibility
84
- }
85
-
86
- // Validate headers
87
- if (config.headers) {
88
- const result = await validateField(config.headers, req.headers, 'headers');
89
- if (!result.success) {
90
- return sendValidationError(res, result.errors!, 'headers');
91
- }
92
- validatedReq.validatedHeaders = result.data;
93
- }
94
-
95
- logger.debug('Request validation passed', 'ValidationSuccess', {
96
- path: req.path,
97
- method: req.method,
98
- validatedFields: Object.keys(config),
99
- });
100
-
101
- // Execute the handler with validated request
102
- return await handler(validatedReq, res);
103
- } catch (error) {
104
- logger.error('Validation wrapper error', 'ValidationError', {
105
- error: error instanceof Error ? error.message : String(error),
106
- path: req.path,
107
- method: req.method,
108
- });
109
-
110
- if (!res.headersSent) {
111
- res.status(500).json({
112
- success: false,
113
- error: 'Internal validation error',
114
- requestId: req.requestId,
115
- });
116
- }
117
- }
118
- };
119
- }
120
-
121
- // Validate individual field using universal schema interface
122
- async function validateField(
123
- schema: ValidationSchema,
124
- data: any,
125
- fieldName: string
126
- ): Promise<ValidationResult> {
127
- try {
128
- const validated = await schema.parseAsync(data);
129
- return {
130
- success: true,
131
- data: validated,
132
- };
133
- } catch (error) {
134
- const normalizedError = normalizeValidationError(error);
135
- const errors: ValidationErrorDetail[] = normalizedError.issues.map(issue => ({
136
- field: issue.path.length > 0 ? issue.path.join('.') : fieldName,
137
- message: issue.message,
138
- code: issue.code,
139
- }));
140
-
141
- logger.debug('Field validation failed', 'ValidationFailed', {
142
- field: fieldName,
143
- errors: errors.length,
144
- details: errors,
145
- });
146
-
147
- return {
148
- success: false,
149
- errors,
150
- };
151
- }
152
- }
153
-
154
- // Send validation error response
155
- function sendValidationError(
156
- res: HttpResponse,
157
- errors: ValidationErrorDetail[],
158
- field: string
159
- ): void {
160
- logger.debug('Sending validation error response', 'ValidationResponse', {
161
- field,
162
- errorCount: errors.length,
163
- });
164
-
165
- res.status(400).json({
166
- success: false,
167
- error: `Validation failed for ${field}`,
168
- details: errors,
169
- requestId: (res as any).req?.requestId,
170
- });
171
- }
172
-
173
- // Convenience functions for single-field validation
174
- export function body<T>(schema: ValidationSchema<T>) {
175
- return (handler: (req: ValidatedRequest<T>, res: HttpResponse) => any | Promise<any>) => {
176
- return validate({ body: schema }, handler);
177
- };
178
- }
179
-
180
- export function query<T>(schema: ValidationSchema<T>) {
181
- return (handler: (req: ValidatedRequest<any>, res: HttpResponse) => any | Promise<any>) => {
182
- return validate({ query: schema }, handler);
183
- };
184
- }
185
-
186
- export function params<T>(schema: ValidationSchema<T>) {
187
- return (handler: (req: ValidatedRequest<any>, res: HttpResponse) => any | Promise<any>) => {
188
- return validate({ params: schema }, handler);
189
- };
190
- }
191
-
192
- // Schema composition helpers
193
- export function combineSchemas(schemas: ValidationConfig): ValidationConfig {
194
- return schemas;
195
- }
196
-
197
- // 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
@@ -1,100 +0,0 @@
1
- // Universal Validation Schema Interface for Moro Framework
2
- // Allows Zod, Joi, Yup, and other validation libraries to work seamlessly
3
-
4
- /**
5
- * Standard validation error structure
6
- */
7
- export interface ValidationIssue {
8
- path: (string | number)[];
9
- message: string;
10
- code: string;
11
- }
12
-
13
- /**
14
- * Standard validation error class
15
- * Compatible with ZodError structure
16
- */
17
- export class ValidationError extends Error {
18
- public readonly issues: ValidationIssue[];
19
-
20
- constructor(issues: ValidationIssue[]) {
21
- const message = `Validation failed: ${issues.map(i => i.message).join(', ')}`;
22
- super(message);
23
- this.name = 'ValidationError';
24
- this.issues = issues;
25
- }
26
- }
27
-
28
- /**
29
- * Universal validation schema interface
30
- * This is what Zod naturally implements! No breaking changes needed.
31
- */
32
- export interface ValidationSchema<T = any> {
33
- /**
34
- * Parse data asynchronously and return validated result
35
- * Throws ValidationError on validation failure
36
- */
37
- parseAsync(data: unknown): Promise<T>;
38
- }
39
-
40
- /**
41
- * Check if an object implements the ValidationSchema interface
42
- */
43
- export function isValidationSchema(obj: any): obj is ValidationSchema {
44
- return obj && typeof obj.parseAsync === 'function';
45
- }
46
-
47
- /**
48
- * Convert various error formats to our standard ValidationError
49
- */
50
- export function normalizeValidationError(error: any): ValidationError {
51
- // Already our format
52
- if (error instanceof ValidationError) {
53
- return error;
54
- }
55
-
56
- // Zod error format
57
- if (error && error.issues && Array.isArray(error.issues)) {
58
- return new ValidationError(
59
- error.issues.map((issue: any) => ({
60
- path: issue.path || [],
61
- message: issue.message || 'Validation failed',
62
- code: issue.code || 'invalid',
63
- }))
64
- );
65
- }
66
-
67
- // Joi error format
68
- if (error && error.details && Array.isArray(error.details)) {
69
- return new ValidationError(
70
- error.details.map((detail: any) => ({
71
- path: detail.path || [],
72
- message: detail.message || 'Validation failed',
73
- code: detail.type || 'invalid',
74
- }))
75
- );
76
- }
77
-
78
- // Yup error format
79
- if (error && error.errors && Array.isArray(error.errors)) {
80
- return new ValidationError(
81
- error.errors.map((msg: string, index: number) => ({
82
- path: error.path ? [error.path] : [index],
83
- message: msg,
84
- code: error.type || 'invalid',
85
- }))
86
- );
87
- }
88
-
89
- // Generic error
90
- return new ValidationError([
91
- {
92
- path: [],
93
- message: error.message || String(error),
94
- code: 'unknown',
95
- },
96
- ]);
97
- }
98
-
99
- // Type helper for inferring types from validation schemas
100
- export type InferSchemaType<T> = T extends ValidationSchema<infer U> ? U : never;