@morojs/moro 1.6.1 → 1.6.2

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 (404) 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 +190 -176
  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/adapters/cache/file.d.ts +1 -1
  97. package/dist/core/middleware/built-in/adapters/cache/file.js +10 -47
  98. package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -1
  99. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +4 -4
  100. package/dist/core/middleware/built-in/adapters/cache/index.js +10 -17
  101. package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -1
  102. package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +1 -1
  103. package/dist/core/middleware/built-in/adapters/cache/memory.js +3 -7
  104. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
  105. package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +3 -1
  106. package/dist/core/middleware/built-in/adapters/cache/redis.js +11 -9
  107. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -1
  108. package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +1 -1
  109. package/dist/core/middleware/built-in/adapters/cdn/azure.js +3 -7
  110. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -1
  111. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +1 -1
  112. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +3 -7
  113. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
  114. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +3 -1
  115. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +12 -10
  116. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -1
  117. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +4 -4
  118. package/dist/core/middleware/built-in/adapters/cdn/index.js +10 -17
  119. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +1 -1
  120. package/dist/core/middleware/built-in/adapters/index.d.ts +4 -4
  121. package/dist/core/middleware/built-in/adapters/index.js +4 -23
  122. package/dist/core/middleware/built-in/adapters/index.js.map +1 -1
  123. package/dist/core/middleware/built-in/auth-helpers.js +11 -22
  124. package/dist/core/middleware/built-in/auth-helpers.js.map +1 -1
  125. package/dist/core/middleware/built-in/auth-providers.d.ts +1 -1
  126. package/dist/core/middleware/built-in/auth-providers.js +4 -9
  127. package/dist/core/middleware/built-in/auth-providers.js.map +1 -1
  128. package/dist/core/middleware/built-in/auth.d.ts +2 -2
  129. package/dist/core/middleware/built-in/auth.js +93 -26
  130. package/dist/core/middleware/built-in/auth.js.map +1 -1
  131. package/dist/core/middleware/built-in/cache.d.ts +2 -2
  132. package/dist/core/middleware/built-in/cache.js +11 -12
  133. package/dist/core/middleware/built-in/cache.js.map +1 -1
  134. package/dist/core/middleware/built-in/cdn.d.ts +2 -2
  135. package/dist/core/middleware/built-in/cdn.js +5 -9
  136. package/dist/core/middleware/built-in/cdn.js.map +1 -1
  137. package/dist/core/middleware/built-in/cookie.d.ts +1 -1
  138. package/dist/core/middleware/built-in/cookie.js +3 -7
  139. package/dist/core/middleware/built-in/cookie.js.map +1 -1
  140. package/dist/core/middleware/built-in/cors.d.ts +1 -1
  141. package/dist/core/middleware/built-in/cors.js +3 -7
  142. package/dist/core/middleware/built-in/cors.js.map +1 -1
  143. package/dist/core/middleware/built-in/csp.d.ts +1 -1
  144. package/dist/core/middleware/built-in/csp.js +5 -8
  145. package/dist/core/middleware/built-in/csp.js.map +1 -1
  146. package/dist/core/middleware/built-in/csrf.d.ts +1 -1
  147. package/dist/core/middleware/built-in/csrf.js +5 -8
  148. package/dist/core/middleware/built-in/csrf.js.map +1 -1
  149. package/dist/core/middleware/built-in/error-tracker.js +3 -7
  150. package/dist/core/middleware/built-in/error-tracker.js.map +1 -1
  151. package/dist/core/middleware/built-in/index.d.ts +28 -27
  152. package/dist/core/middleware/built-in/index.js +48 -78
  153. package/dist/core/middleware/built-in/index.js.map +1 -1
  154. package/dist/core/middleware/built-in/jwt-helpers.d.ts +118 -0
  155. package/dist/core/middleware/built-in/jwt-helpers.js +218 -0
  156. package/dist/core/middleware/built-in/jwt-helpers.js.map +1 -0
  157. package/dist/core/middleware/built-in/performance-monitor.js +3 -7
  158. package/dist/core/middleware/built-in/performance-monitor.js.map +1 -1
  159. package/dist/core/middleware/built-in/rate-limit.d.ts +1 -1
  160. package/dist/core/middleware/built-in/rate-limit.js +3 -7
  161. package/dist/core/middleware/built-in/rate-limit.js.map +1 -1
  162. package/dist/core/middleware/built-in/request-logger.js +5 -8
  163. package/dist/core/middleware/built-in/request-logger.js.map +1 -1
  164. package/dist/core/middleware/built-in/session.d.ts +2 -2
  165. package/dist/core/middleware/built-in/session.js +11 -15
  166. package/dist/core/middleware/built-in/session.js.map +1 -1
  167. package/dist/core/middleware/built-in/sse.d.ts +1 -1
  168. package/dist/core/middleware/built-in/sse.js +12 -14
  169. package/dist/core/middleware/built-in/sse.js.map +1 -1
  170. package/dist/core/middleware/built-in/validation.d.ts +1 -1
  171. package/dist/core/middleware/built-in/validation.js +3 -7
  172. package/dist/core/middleware/built-in/validation.js.map +1 -1
  173. package/dist/core/middleware/index.d.ts +4 -4
  174. package/dist/core/middleware/index.js +8 -28
  175. package/dist/core/middleware/index.js.map +1 -1
  176. package/dist/core/modules/auto-discovery.d.ts +19 -2
  177. package/dist/core/modules/auto-discovery.js +391 -74
  178. package/dist/core/modules/auto-discovery.js.map +1 -1
  179. package/dist/core/modules/index.d.ts +2 -2
  180. package/dist/core/modules/index.js +2 -9
  181. package/dist/core/modules/index.js.map +1 -1
  182. package/dist/core/modules/modules.d.ts +3 -3
  183. package/dist/core/modules/modules.js +23 -54
  184. package/dist/core/modules/modules.js.map +1 -1
  185. package/dist/core/networking/adapters/index.d.ts +4 -3
  186. package/dist/core/networking/adapters/index.js +3 -7
  187. package/dist/core/networking/adapters/index.js.map +1 -1
  188. package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -1
  189. package/dist/core/networking/adapters/socketio-adapter.js +5 -40
  190. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  191. package/dist/core/networking/adapters/uws-adapter.d.ts +44 -0
  192. package/dist/core/networking/adapters/uws-adapter.js +513 -0
  193. package/dist/core/networking/adapters/uws-adapter.js.map +1 -0
  194. package/dist/core/networking/adapters/ws-adapter.d.ts +2 -2
  195. package/dist/core/networking/adapters/ws-adapter.js +8 -43
  196. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  197. package/dist/core/networking/index.d.ts +3 -2
  198. package/dist/core/networking/index.js +2 -7
  199. package/dist/core/networking/index.js.map +1 -1
  200. package/dist/core/networking/service-discovery.js +8 -12
  201. package/dist/core/networking/service-discovery.js.map +1 -1
  202. package/dist/core/networking/websocket-adapter.js +1 -2
  203. package/dist/core/networking/websocket-adapter.js.map +1 -1
  204. package/dist/core/networking/websocket-manager.d.ts +3 -3
  205. package/dist/core/networking/websocket-manager.js +9 -11
  206. package/dist/core/networking/websocket-manager.js.map +1 -1
  207. package/dist/core/pooling/object-pool-manager.d.ts +140 -0
  208. package/dist/core/pooling/object-pool-manager.js +502 -0
  209. package/dist/core/pooling/object-pool-manager.js.map +1 -0
  210. package/dist/core/routing/app-integration.d.ts +14 -12
  211. package/dist/core/routing/app-integration.js +49 -85
  212. package/dist/core/routing/app-integration.js.map +1 -1
  213. package/dist/core/routing/index.d.ts +17 -11
  214. package/dist/core/routing/index.js +48 -237
  215. package/dist/core/routing/index.js.map +1 -1
  216. package/dist/core/routing/path-matcher.d.ts +67 -0
  217. package/dist/core/routing/path-matcher.js +182 -0
  218. package/dist/core/routing/path-matcher.js.map +1 -0
  219. package/dist/core/routing/router.d.ts +38 -0
  220. package/dist/core/routing/router.js +68 -0
  221. package/dist/core/routing/router.js.map +1 -0
  222. package/dist/core/routing/unified-router.d.ts +148 -0
  223. package/dist/core/routing/unified-router.js +684 -0
  224. package/dist/core/routing/unified-router.js.map +1 -0
  225. package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
  226. package/dist/core/runtime/aws-lambda-adapter.js +2 -6
  227. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  228. package/dist/core/runtime/base-adapter.d.ts +2 -2
  229. package/dist/core/runtime/base-adapter.js +3 -7
  230. package/dist/core/runtime/base-adapter.js.map +1 -1
  231. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
  232. package/dist/core/runtime/cloudflare-workers-adapter.js +2 -6
  233. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  234. package/dist/core/runtime/index.d.ts +12 -12
  235. package/dist/core/runtime/index.js +22 -35
  236. package/dist/core/runtime/index.js.map +1 -1
  237. package/dist/core/runtime/node-adapter.d.ts +4 -4
  238. package/dist/core/runtime/node-adapter.js +18 -49
  239. package/dist/core/runtime/node-adapter.js.map +1 -1
  240. package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
  241. package/dist/core/runtime/vercel-edge-adapter.js +2 -6
  242. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  243. package/dist/core/utilities/circuit-breaker.js +1 -5
  244. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  245. package/dist/core/utilities/container.js +12 -22
  246. package/dist/core/utilities/container.js.map +1 -1
  247. package/dist/core/utilities/hooks.d.ts +2 -2
  248. package/dist/core/utilities/hooks.js +7 -12
  249. package/dist/core/utilities/hooks.js.map +1 -1
  250. package/dist/core/utilities/index.d.ts +5 -4
  251. package/dist/core/utilities/index.js +5 -19
  252. package/dist/core/utilities/index.js.map +1 -1
  253. package/dist/core/utilities/package-utils.d.ts +38 -0
  254. package/dist/core/utilities/package-utils.js +57 -0
  255. package/dist/core/utilities/package-utils.js.map +1 -0
  256. package/dist/core/validation/adapters.d.ts +1 -1
  257. package/dist/core/validation/adapters.js +15 -26
  258. package/dist/core/validation/adapters.js.map +1 -1
  259. package/dist/core/validation/index.d.ts +6 -4
  260. package/dist/core/validation/index.js +57 -28
  261. package/dist/core/validation/index.js.map +1 -1
  262. package/dist/core/validation/schema-interface.js +3 -9
  263. package/dist/core/validation/schema-interface.js.map +1 -1
  264. package/dist/index.d.ts +51 -52
  265. package/dist/index.js +23 -132
  266. package/dist/index.js.map +1 -1
  267. package/dist/moro.d.ts +70 -16
  268. package/dist/moro.js +658 -271
  269. package/dist/moro.js.map +1 -1
  270. package/dist/types/auth.js +3 -9
  271. package/dist/types/auth.js.map +1 -1
  272. package/dist/types/cache.js +1 -2
  273. package/dist/types/cdn.js +1 -2
  274. package/dist/types/config.d.ts +73 -2
  275. package/dist/types/config.js +1 -2
  276. package/dist/types/config.js.map +1 -1
  277. package/dist/types/core.d.ts +36 -42
  278. package/dist/types/core.js +1 -2
  279. package/dist/types/database.js +1 -2
  280. package/dist/types/discovery.js +1 -2
  281. package/dist/types/events.js +1 -2
  282. package/dist/types/hooks.d.ts +1 -1
  283. package/dist/types/hooks.js +1 -2
  284. package/dist/types/http.d.ts +16 -1
  285. package/dist/types/http.js +1 -2
  286. package/dist/types/logger.d.ts +7 -0
  287. package/dist/types/logger.js +1 -2
  288. package/dist/types/module.d.ts +11 -0
  289. package/dist/types/module.js +1 -2
  290. package/dist/types/runtime.d.ts +1 -1
  291. package/dist/types/runtime.js +1 -2
  292. package/dist/types/session.js +1 -2
  293. package/jest.config.mjs +41 -0
  294. package/package.json +19 -52
  295. package/src/core/auth/morojs-adapter.ts +18 -13
  296. package/src/core/config/config-manager.ts +133 -0
  297. package/src/core/config/config-sources.ts +600 -0
  298. package/src/core/config/config-validator.ts +1116 -0
  299. package/src/core/config/file-loader.ts +16 -273
  300. package/src/core/config/index.ts +83 -34
  301. package/src/core/config/schema.ts +47 -33
  302. package/src/core/config/utils.ts +24 -31
  303. package/src/core/database/README.md +26 -16
  304. package/src/core/database/adapters/drizzle.ts +18 -6
  305. package/src/core/database/adapters/index.ts +13 -13
  306. package/src/core/database/adapters/mongodb.ts +53 -5
  307. package/src/core/database/adapters/mysql.ts +32 -4
  308. package/src/core/database/adapters/postgresql.ts +30 -5
  309. package/src/core/database/adapters/redis.ts +61 -8
  310. package/src/core/database/adapters/sqlite.ts +19 -3
  311. package/src/core/database/index.ts +2 -2
  312. package/src/core/docs/index.ts +8 -8
  313. package/src/core/docs/openapi-generator.ts +4 -4
  314. package/src/core/docs/schema-to-openapi.ts +3 -6
  315. package/src/core/docs/simple-docs.ts +2 -2
  316. package/src/core/docs/swagger-ui.ts +19 -16
  317. package/src/core/docs/zod-to-openapi.ts +34 -34
  318. package/src/core/events/event-bus.ts +3 -3
  319. package/src/core/events/index.ts +2 -2
  320. package/src/core/framework.ts +320 -71
  321. package/src/core/http/http-server.ts +203 -143
  322. package/src/core/http/index.ts +4 -3
  323. package/src/core/http/uws-http-server.ts +591 -0
  324. package/src/core/logger/filters.ts +13 -5
  325. package/src/core/logger/index.ts +4 -3
  326. package/src/core/logger/logger.ts +435 -216
  327. package/src/core/logger/outputs.ts +1 -3
  328. package/src/core/middleware/built-in/adapters/cache/file.ts +3 -3
  329. package/src/core/middleware/built-in/adapters/cache/index.ts +7 -7
  330. package/src/core/middleware/built-in/adapters/cache/memory.ts +2 -2
  331. package/src/core/middleware/built-in/adapters/cache/redis.ts +18 -4
  332. package/src/core/middleware/built-in/adapters/cdn/azure.ts +2 -2
  333. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +2 -2
  334. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +16 -5
  335. package/src/core/middleware/built-in/adapters/cdn/index.ts +7 -7
  336. package/src/core/middleware/built-in/adapters/index.ts +4 -4
  337. package/src/core/middleware/built-in/auth-helpers.ts +1 -1
  338. package/src/core/middleware/built-in/auth-providers.ts +1 -1
  339. package/src/core/middleware/built-in/auth.ts +102 -21
  340. package/src/core/middleware/built-in/cache.ts +8 -6
  341. package/src/core/middleware/built-in/cdn.ts +4 -4
  342. package/src/core/middleware/built-in/cookie.ts +2 -2
  343. package/src/core/middleware/built-in/cors.ts +2 -2
  344. package/src/core/middleware/built-in/csp.ts +3 -3
  345. package/src/core/middleware/built-in/csrf.ts +3 -3
  346. package/src/core/middleware/built-in/error-tracker.ts +1 -1
  347. package/src/core/middleware/built-in/index.ts +38 -30
  348. package/src/core/middleware/built-in/jwt-helpers.ts +243 -0
  349. package/src/core/middleware/built-in/performance-monitor.ts +1 -1
  350. package/src/core/middleware/built-in/rate-limit.ts +2 -2
  351. package/src/core/middleware/built-in/request-logger.ts +3 -1
  352. package/src/core/middleware/built-in/session.ts +7 -8
  353. package/src/core/middleware/built-in/sse.ts +11 -9
  354. package/src/core/middleware/built-in/validation.ts +2 -2
  355. package/src/core/middleware/index.ts +6 -6
  356. package/src/core/modules/auto-discovery.ts +478 -15
  357. package/src/core/modules/index.ts +2 -2
  358. package/src/core/modules/modules.ts +23 -12
  359. package/src/core/networking/adapters/index.ts +4 -3
  360. package/src/core/networking/adapters/socketio-adapter.ts +5 -3
  361. package/src/core/networking/adapters/uws-adapter.ts +619 -0
  362. package/src/core/networking/adapters/ws-adapter.ts +8 -9
  363. package/src/core/networking/index.ts +3 -2
  364. package/src/core/networking/service-discovery.ts +6 -7
  365. package/src/core/networking/websocket-manager.ts +7 -7
  366. package/src/core/pooling/object-pool-manager.ts +630 -0
  367. package/src/core/routing/app-integration.ts +60 -112
  368. package/src/core/routing/index.ts +66 -293
  369. package/src/core/routing/path-matcher.ts +222 -0
  370. package/src/core/routing/router.ts +97 -0
  371. package/src/core/routing/unified-router.ts +870 -0
  372. package/src/core/runtime/aws-lambda-adapter.ts +3 -3
  373. package/src/core/runtime/base-adapter.ts +2 -2
  374. package/src/core/runtime/cloudflare-workers-adapter.ts +3 -3
  375. package/src/core/runtime/index.ts +13 -13
  376. package/src/core/runtime/node-adapter.ts +16 -10
  377. package/src/core/runtime/vercel-edge-adapter.ts +3 -3
  378. package/src/core/utilities/hooks.ts +3 -3
  379. package/src/core/utilities/index.ts +5 -4
  380. package/src/core/utilities/package-utils.ts +59 -0
  381. package/src/core/validation/adapters.ts +1 -1
  382. package/src/core/validation/index.ts +68 -16
  383. package/src/index.ts +73 -66
  384. package/src/moro.ts +784 -253
  385. package/src/types/config.ts +74 -2
  386. package/src/types/core.ts +49 -47
  387. package/src/types/hooks.ts +1 -1
  388. package/src/types/http.ts +23 -1
  389. package/src/types/logger.ts +9 -0
  390. package/src/types/module.ts +12 -0
  391. package/src/types/runtime.ts +1 -1
  392. package/tsconfig.json +4 -2
  393. package/dist/core/config/loader.d.ts +0 -7
  394. package/dist/core/config/loader.js +0 -269
  395. package/dist/core/config/loader.js.map +0 -1
  396. package/dist/core/config/validation.d.ts +0 -17
  397. package/dist/core/config/validation.js +0 -131
  398. package/dist/core/config/validation.js.map +0 -1
  399. package/dist/core/http/router.d.ts +0 -14
  400. package/dist/core/http/router.js +0 -109
  401. package/dist/core/http/router.js.map +0 -1
  402. package/src/core/config/loader.ts +0 -633
  403. package/src/core/config/validation.ts +0 -140
  404. package/src/core/http/router.ts +0 -141
@@ -1,13 +1,15 @@
1
1
  // Intelligent Routing System for Moro Framework
2
2
  // Schema-first with automatic middleware ordering and chainable API
3
+ //
4
+ // NOTE: This file exports types and thin facades to UnifiedRouter
5
+ // All routing logic has been consolidated in unified-router.ts
3
6
 
4
- import { ValidationSchema } from '../validation/schema-interface';
5
- import { HttpRequest, HttpResponse } from '../http';
6
- import { createFrameworkLogger } from '../logger';
7
+ import { ValidationSchema } from '../validation/schema-interface.js';
8
+ import { HttpRequest, HttpResponse } from '../http/index.js';
9
+ import { UnifiedRouter } from './unified-router.js';
7
10
 
8
- const logger = createFrameworkLogger('IntelligentRouting');
11
+ // ===== TYPE EXPORTS (Keep all - used by app code) =====
9
12
 
10
- // Core types
11
13
  export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
12
14
  export type RouteHandler<T = any> = (req: HttpRequest, res: HttpResponse) => T | Promise<T>;
13
15
  export type Middleware = (
@@ -16,7 +18,6 @@ export type Middleware = (
16
18
  next: () => void
17
19
  ) => void | Promise<void>;
18
20
 
19
- // Configuration interfaces
20
21
  export interface ValidationConfig {
21
22
  body?: ValidationSchema;
22
23
  query?: ValidationSchema;
@@ -42,107 +43,93 @@ export interface CacheConfig {
42
43
  tags?: string[];
43
44
  }
44
45
 
45
- // Middleware phases for intelligent ordering
46
46
  export interface MiddlewarePhases {
47
- before?: Middleware[]; // Before auth/validation
48
- after?: Middleware[]; // After validation, before handler
49
- transform?: Middleware[]; // Data transformation phase
47
+ before?: Middleware[];
48
+ after?: Middleware[];
49
+ transform?: Middleware[];
50
50
  }
51
51
 
52
- // Core route schema
53
52
  export interface RouteSchema {
54
53
  method: HttpMethod;
55
54
  path: string;
56
55
  handler: RouteHandler;
57
-
58
- // Framework-managed (order-independent)
59
56
  validation?: ValidationConfig;
60
57
  auth?: AuthConfig;
61
58
  rateLimit?: RateLimitConfig;
62
59
  cache?: CacheConfig;
63
-
64
- // Custom middleware with phase hints
65
60
  middleware?: MiddlewarePhases;
66
-
67
- // Metadata
68
61
  description?: string;
69
62
  tags?: string[];
70
63
  }
71
64
 
72
- // Execution phases in optimal order
73
65
  export const EXECUTION_PHASES = [
74
- 'security', // CORS, Helmet (framework-managed)
75
- 'parsing', // Body/query parsing (framework-managed)
76
- 'rateLimit', // Rate limiting (early protection)
77
- 'before', // Custom pre-processing middleware
78
- 'auth', // Authentication/authorization
79
- 'validation', // Request validation
80
- 'transform', // Data transformation middleware
81
- 'cache', // Caching logic
82
- 'after', // Custom post-processing middleware
83
- 'handler', // Route handler (always last)
66
+ 'security',
67
+ 'parsing',
68
+ 'rateLimit',
69
+ 'before',
70
+ 'auth',
71
+ 'validation',
72
+ 'transform',
73
+ 'cache',
74
+ 'after',
75
+ 'handler',
84
76
  ] as const;
85
77
 
86
78
  export type ExecutionPhase = (typeof EXECUTION_PHASES)[number];
87
79
 
88
- // Enhanced request with validation results
89
80
  export interface ValidatedRequest<T = any> extends HttpRequest {
90
81
  validatedBody?: T;
91
82
  validatedQuery?: any;
92
83
  validatedParams?: any;
93
84
  validatedHeaders?: any;
94
- user?: any; // Added by auth middleware
85
+ user?: any;
95
86
  }
96
87
 
97
- // Route builder for chainable API
88
+ // ===== ROUTE BUILDER INTERFACE (Public API) =====
89
+
98
90
  export interface RouteBuilder {
99
- // Validation methods
100
91
  validate(config: ValidationConfig): RouteBuilder;
101
92
  body<T>(schema: ValidationSchema<T>): RouteBuilder;
102
93
  query<T>(schema: ValidationSchema<T>): RouteBuilder;
103
94
  params<T>(schema: ValidationSchema<T>): RouteBuilder;
104
95
  headers<T>(schema: ValidationSchema<T>): RouteBuilder;
105
-
106
- // Security/Auth methods
107
96
  auth(config: AuthConfig): RouteBuilder;
108
97
  rateLimit(config: RateLimitConfig): RouteBuilder;
109
-
110
- // Caching
111
98
  cache(config: CacheConfig): RouteBuilder;
112
-
113
- // Custom middleware with phase control
114
99
  before(...middleware: Middleware[]): RouteBuilder;
115
100
  after(...middleware: Middleware[]): RouteBuilder;
116
101
  transform(...middleware: Middleware[]): RouteBuilder;
117
- use(...middleware: Middleware[]): RouteBuilder; // Alias for 'after'
118
-
119
- // Metadata
102
+ use(...middleware: Middleware[]): RouteBuilder;
120
103
  describe(description: string): RouteBuilder;
121
104
  tag(...tags: string[]): RouteBuilder;
122
-
123
- // Terminal method
124
- handler<T>(handler: RouteHandler<T>): CompiledRoute;
105
+ handler<T>(handler: RouteHandler<T>): void;
125
106
  }
126
107
 
127
- // Compiled route ready for execution
108
+ // ===== COMPILED ROUTE INTERFACE (Public API) =====
109
+
128
110
  export interface CompiledRoute {
129
111
  schema: RouteSchema;
130
112
  execute(req: HttpRequest, res: HttpResponse): Promise<void>;
131
113
  }
132
114
 
133
- // Route builder implementation
115
+ // ===== FACADE IMPLEMENTATIONS (Delegate to UnifiedRouter) =====
116
+
117
+ /**
118
+ * Thin facade to UnifiedRouter.RouteBuilder
119
+ * Maintains backward compatibility while using optimized implementation
120
+ */
134
121
  export class IntelligentRouteBuilder implements RouteBuilder {
135
122
  private schema: Partial<RouteSchema>;
123
+ private router = UnifiedRouter.getInstance();
136
124
 
137
125
  constructor(method: HttpMethod, path: string) {
138
126
  this.schema = {
139
127
  method,
140
128
  path,
141
- middleware: {},
129
+ middleware: {} as MiddlewarePhases,
142
130
  };
143
131
  }
144
132
 
145
- // Validation methods
146
133
  validate(config: ValidationConfig): RouteBuilder {
147
134
  this.schema.validation = { ...this.schema.validation, ...config };
148
135
  return this;
@@ -172,7 +159,6 @@ export class IntelligentRouteBuilder implements RouteBuilder {
172
159
  return this;
173
160
  }
174
161
 
175
- // Security methods
176
162
  auth(config: AuthConfig): RouteBuilder {
177
163
  this.schema.auth = config;
178
164
  return this;
@@ -183,28 +169,29 @@ export class IntelligentRouteBuilder implements RouteBuilder {
183
169
  return this;
184
170
  }
185
171
 
186
- // Caching
187
172
  cache(config: CacheConfig): RouteBuilder {
188
173
  this.schema.cache = config;
189
174
  return this;
190
175
  }
191
176
 
192
- // Custom middleware
193
177
  before(...middleware: Middleware[]): RouteBuilder {
194
178
  if (!this.schema.middleware) this.schema.middleware = {};
195
- this.schema.middleware.before = [...(this.schema.middleware.before || []), ...middleware];
179
+ const phases = this.schema.middleware as MiddlewarePhases;
180
+ phases.before = [...(phases.before || []), ...middleware];
196
181
  return this;
197
182
  }
198
183
 
199
184
  after(...middleware: Middleware[]): RouteBuilder {
200
185
  if (!this.schema.middleware) this.schema.middleware = {};
201
- this.schema.middleware.after = [...(this.schema.middleware.after || []), ...middleware];
186
+ const phases = this.schema.middleware as MiddlewarePhases;
187
+ phases.after = [...(phases.after || []), ...middleware];
202
188
  return this;
203
189
  }
204
190
 
205
191
  transform(...middleware: Middleware[]): RouteBuilder {
206
192
  if (!this.schema.middleware) this.schema.middleware = {};
207
- this.schema.middleware.transform = [...(this.schema.middleware.transform || []), ...middleware];
193
+ const phases = this.schema.middleware as MiddlewarePhases;
194
+ phases.transform = [...(phases.transform || []), ...middleware];
208
195
  return this;
209
196
  }
210
197
 
@@ -212,7 +199,6 @@ export class IntelligentRouteBuilder implements RouteBuilder {
212
199
  return this.after(...middleware);
213
200
  }
214
201
 
215
- // Metadata
216
202
  describe(description: string): RouteBuilder {
217
203
  this.schema.description = description;
218
204
  return this;
@@ -223,8 +209,7 @@ export class IntelligentRouteBuilder implements RouteBuilder {
223
209
  return this;
224
210
  }
225
211
 
226
- // Terminal method - compiles the route
227
- handler<T>(handler: RouteHandler<T>): CompiledRoute {
212
+ handler<T>(handler: RouteHandler<T>): void {
228
213
  if (!handler) {
229
214
  throw new Error('Handler is required');
230
215
  }
@@ -234,255 +219,43 @@ export class IntelligentRouteBuilder implements RouteBuilder {
234
219
  handler,
235
220
  };
236
221
 
237
- logger.debug(
238
- `Compiled route: ${completeSchema.method} ${completeSchema.path}`,
239
- 'RouteCompilation',
240
- {
241
- hasValidation: !!completeSchema.validation,
242
- hasAuth: !!completeSchema.auth,
243
- hasRateLimit: !!completeSchema.rateLimit,
244
- hasCache: !!completeSchema.cache,
245
- customMiddleware: {
246
- before: completeSchema.middleware?.before?.length || 0,
247
- after: completeSchema.middleware?.after?.length || 0,
248
- transform: completeSchema.middleware?.transform?.length || 0,
249
- },
250
- }
251
- );
252
-
253
- return new ExecutableRoute(completeSchema);
222
+ // Delegate to UnifiedRouter
223
+ this.router.registerRoute(completeSchema);
254
224
  }
255
225
  }
256
226
 
257
- // Executable route with intelligent middleware ordering
227
+ /**
228
+ * Thin facade implementing CompiledRoute interface
229
+ * Just stores schema for documentation purposes
230
+ */
258
231
  export class ExecutableRoute implements CompiledRoute {
259
- constructor(public readonly schema: RouteSchema) {}
260
-
261
- async execute(req: HttpRequest, res: HttpResponse): Promise<void> {
262
- const validatedReq = req as ValidatedRequest;
263
-
264
- try {
265
- // Execute middleware in intelligent order
266
- await this.executePhase('before', validatedReq, res);
267
- await this.executePhase('rateLimit', validatedReq, res);
268
- await this.executePhase('auth', validatedReq, res);
269
- await this.executePhase('validation', validatedReq, res);
270
- await this.executePhase('transform', validatedReq, res);
271
- await this.executePhase('cache', validatedReq, res);
272
- await this.executePhase('after', validatedReq, res);
273
-
274
- // Execute handler last
275
- if (!res.headersSent) {
276
- await this.executePhase('handler', validatedReq, res);
277
- }
278
- } catch (error) {
279
- logger.error('Route execution error', 'RouteExecution', {
280
- error: error instanceof Error ? error.message : String(error),
281
- route: `${this.schema.method} ${this.schema.path}`,
282
- requestId: req.requestId,
283
- });
284
-
285
- if (!res.headersSent) {
286
- res.status(500).json({
287
- success: false,
288
- error: 'Internal server error',
289
- requestId: req.requestId,
290
- });
291
- }
292
- }
293
- }
294
-
295
- private async executePhase(
296
- phase: ExecutionPhase,
297
- req: ValidatedRequest,
298
- res: HttpResponse
299
- ): Promise<void> {
300
- switch (phase) {
301
- case 'before':
302
- if (this.schema.middleware?.before) {
303
- for (const middleware of this.schema.middleware.before) {
304
- await this.executeMiddleware(middleware, req, res);
305
- }
306
- }
307
- break;
308
-
309
- case 'rateLimit':
310
- if (this.schema.rateLimit) {
311
- await this.executeRateLimit(req, res);
312
- }
313
- break;
314
-
315
- case 'auth':
316
- if (this.schema.auth) {
317
- await this.executeAuth(req, res);
318
- }
319
- break;
320
-
321
- case 'validation':
322
- if (this.schema.validation) {
323
- await this.executeValidation(req, res);
324
- }
325
- break;
326
-
327
- case 'transform':
328
- if (this.schema.middleware?.transform) {
329
- for (const middleware of this.schema.middleware.transform) {
330
- await this.executeMiddleware(middleware, req, res);
331
- }
332
- }
333
- break;
334
-
335
- case 'cache':
336
- if (this.schema.cache) {
337
- await this.executeCache(req, res);
338
- }
339
- break;
340
-
341
- case 'after':
342
- if (this.schema.middleware?.after) {
343
- for (const middleware of this.schema.middleware.after) {
344
- await this.executeMiddleware(middleware, req, res);
345
- }
346
- }
347
- break;
348
-
349
- case 'handler': {
350
- const result = await this.schema.handler(req, res);
351
- if (result !== undefined && !res.headersSent) {
352
- res.json(result);
353
- }
354
- break;
355
- }
356
- }
357
- }
358
-
359
- private async executeMiddleware(
360
- middleware: Middleware,
361
- req: HttpRequest,
362
- res: HttpResponse
363
- ): Promise<void> {
364
- return new Promise((resolve, reject) => {
365
- try {
366
- const next = () => resolve();
367
- const result = middleware(req, res, next);
368
- if (result instanceof Promise) {
369
- result.then(() => resolve()).catch(reject);
370
- }
371
- } catch (error) {
372
- reject(error);
373
- }
374
- });
375
- }
376
-
377
- private async executeRateLimit(req: HttpRequest, res: HttpResponse): Promise<void> {
378
- // Rate limiting implementation will be added
379
- logger.debug('Rate limit check', 'RateLimit', {
380
- config: this.schema.rateLimit,
381
- ip: req.ip,
382
- });
232
+ constructor(public readonly schema: RouteSchema) {
233
+ // Register with UnifiedRouter
234
+ UnifiedRouter.getInstance().registerRoute(schema);
383
235
  }
384
236
 
385
- private async executeAuth(req: ValidatedRequest, res: HttpResponse): Promise<void> {
386
- // Authentication implementation will be added
387
- logger.debug('Auth check', 'Auth', {
388
- config: this.schema.auth,
389
- });
390
- }
391
-
392
- private async executeValidation(req: ValidatedRequest, res: HttpResponse): Promise<void> {
393
- if (!this.schema.validation) return;
394
-
395
- const { body, query, params, headers } = this.schema.validation;
396
-
397
- // Validate body
398
- if (body && req.body !== undefined) {
399
- try {
400
- req.validatedBody = await body.parseAsync(req.body);
401
- req.body = req.validatedBody; // Update original for compatibility
402
- } catch (error: any) {
403
- this.sendValidationError(res, error, 'body', req.requestId);
404
- return;
405
- }
406
- }
407
-
408
- // Validate query
409
- if (query && req.query !== undefined) {
410
- try {
411
- req.validatedQuery = await query.parseAsync(req.query);
412
- req.query = req.validatedQuery; // Update original for compatibility
413
- } catch (error: any) {
414
- this.sendValidationError(res, error, 'query', req.requestId);
415
- return;
416
- }
417
- }
418
-
419
- // Validate params
420
- if (params && req.params !== undefined) {
421
- try {
422
- req.validatedParams = await params.parseAsync(req.params);
423
- req.params = req.validatedParams; // Update original for compatibility
424
- } catch (error: any) {
425
- this.sendValidationError(res, error, 'params', req.requestId);
426
- return;
427
- }
428
- }
429
-
430
- // Validate headers
431
- if (headers && req.headers !== undefined) {
432
- try {
433
- req.validatedHeaders = await headers.parseAsync(req.headers);
434
- } catch (error: any) {
435
- this.sendValidationError(res, error, 'headers', req.requestId);
436
- return;
437
- }
438
- }
439
-
440
- logger.debug('Validation passed', 'Validation', {
441
- route: `${this.schema.method} ${this.schema.path}`,
442
- validatedFields: Object.keys(this.schema.validation),
443
- });
444
- }
445
-
446
- private sendValidationError(
447
- res: HttpResponse,
448
- error: any,
449
- field: string,
450
- requestId?: string
451
- ): void {
452
- if (error.issues) {
453
- res.status(400).json({
454
- success: false,
455
- error: `Validation failed for ${field}`,
456
- details: error.issues.map((issue: any) => ({
457
- field: issue.path.length > 0 ? issue.path.join('.') : field,
458
- message: issue.message,
459
- code: issue.code,
460
- })),
461
- requestId,
462
- });
463
- } else {
464
- res.status(400).json({
465
- success: false,
466
- error: `Validation failed for ${field}`,
467
- requestId,
468
- });
469
- }
470
- }
471
-
472
- private async executeCache(req: HttpRequest, res: HttpResponse): Promise<void> {
473
- // Caching implementation will be added
474
- logger.debug('Cache check', 'Cache', {
475
- config: this.schema.cache,
476
- });
237
+ async execute(req: HttpRequest, res: HttpResponse): Promise<void> {
238
+ // This is never called - UnifiedRouter handles execution
239
+ // But we implement it for interface compatibility
240
+ throw new Error(
241
+ 'ExecutableRoute.execute() should not be called directly - routing handled by UnifiedRouter'
242
+ );
477
243
  }
478
244
  }
479
245
 
480
- // Factory functions for creating routes
246
+ // ===== FACTORY FUNCTIONS (Backward Compatibility) =====
247
+
481
248
  export function createRoute(method: HttpMethod, path: string): RouteBuilder {
482
249
  return new IntelligentRouteBuilder(method, path);
483
250
  }
484
251
 
485
- // Schema-first route creation
486
252
  export function defineRoute(schema: RouteSchema): CompiledRoute {
487
253
  return new ExecutableRoute(schema);
488
254
  }
255
+
256
+ // ===== RE-EXPORTS FROM UNIFIED ROUTER =====
257
+
258
+ export { UnifiedRouter } from './unified-router.js';
259
+ export { RouteBuilder as UnifiedRouteBuilder } from './unified-router.js';
260
+ export { PathMatcher, type CompiledPath, type MatchResult } from './path-matcher.js';
261
+ export { ObjectPoolManager, getPoolManager } from '../pooling/object-pool-manager.js';