@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,130 +0,0 @@
1
- // Base runtime adapter with common functionality
2
- import { RuntimeAdapter, RuntimeType, RuntimeHttpResponse } from '../../types/runtime';
3
- import { HttpRequest, HttpResponse } from '../../types/http';
4
- import { randomBytes } from 'crypto';
5
-
6
- export abstract class BaseRuntimeAdapter implements RuntimeAdapter {
7
- abstract readonly type: RuntimeType;
8
-
9
- abstract adaptRequest(runtimeRequest: any, ...args: any[]): Promise<HttpRequest>;
10
- abstract adaptResponse(
11
- moroResponse: HttpResponse | RuntimeHttpResponse,
12
- runtimeRequest: any
13
- ): Promise<any>;
14
- abstract createServer(handler: (req: HttpRequest, res: HttpResponse) => Promise<void>): any;
15
-
16
- // Generate UUID without external dependency
17
- protected generateUUID(): string {
18
- return randomBytes(16)
19
- .toString('hex')
20
- .replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/, '$1-$2-$3-$4-$5');
21
- }
22
-
23
- // Common request enhancement
24
- protected enhanceRequest(baseRequest: Partial<HttpRequest>): HttpRequest {
25
- const request = baseRequest as HttpRequest;
26
-
27
- // Add common properties
28
- request.requestId = request.requestId || this.generateUUID();
29
- request.ip = request.ip || 'unknown';
30
- request.params = request.params || {};
31
- request.query = request.query || {};
32
- request.cookies = request.cookies || {};
33
- request.files = request.files || {};
34
-
35
- return request;
36
- }
37
-
38
- // Common response enhancement
39
- protected createMockResponse(): RuntimeHttpResponse {
40
- const response: RuntimeHttpResponse = {
41
- statusCode: 200,
42
- headers: {},
43
- body: null,
44
- headersSent: false,
45
-
46
- status: function (code: number) {
47
- this.statusCode = code;
48
- return this;
49
- },
50
-
51
- json: function (data: any) {
52
- this.headers['Content-Type'] = 'application/json';
53
- this.body = JSON.stringify(data);
54
- this.headersSent = true;
55
- },
56
-
57
- send: function (data: string | Buffer) {
58
- this.body = data;
59
- this.headersSent = true;
60
- },
61
-
62
- cookie: function (name: string, value: string, options?: any) {
63
- // Simple cookie implementation
64
- const cookieString = `${name}=${value}`;
65
- this.headers['Set-Cookie'] = cookieString;
66
- return this;
67
- },
68
-
69
- clearCookie: function (name: string, options?: any) {
70
- this.headers['Set-Cookie'] = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT`;
71
- return this;
72
- },
73
-
74
- redirect: function (url: string, status?: number) {
75
- this.statusCode = status || 302;
76
- this.headers['Location'] = url;
77
- this.headersSent = true;
78
- },
79
-
80
- sendFile: async function (filePath: string) {
81
- throw new Error('sendFile not implemented in this runtime');
82
- },
83
- };
84
-
85
- return response;
86
- }
87
-
88
- // Parse URL and query parameters
89
- protected parseUrl(url: string): {
90
- pathname: string;
91
- query: Record<string, string>;
92
- } {
93
- try {
94
- const urlObj = new URL(url, 'http://localhost');
95
- const query: Record<string, string> = {};
96
-
97
- urlObj.searchParams.forEach((value, key) => {
98
- query[key] = value;
99
- });
100
-
101
- return {
102
- pathname: urlObj.pathname,
103
- query,
104
- };
105
- } catch {
106
- return {
107
- pathname: url,
108
- query: {},
109
- };
110
- }
111
- }
112
-
113
- // Parse body based on content type
114
- protected async parseBody(body: any, contentType?: string): Promise<any> {
115
- if (!body) return undefined;
116
-
117
- if (typeof body === 'string') {
118
- if (contentType?.includes('application/json')) {
119
- try {
120
- return JSON.parse(body);
121
- } catch {
122
- return body;
123
- }
124
- }
125
- return body;
126
- }
127
-
128
- return body;
129
- }
130
- }
@@ -1,152 +0,0 @@
1
- // Cloudflare Workers runtime adapter
2
- import { BaseRuntimeAdapter } from './base-adapter';
3
- import { HttpRequest, HttpResponse } from '../../types/http';
4
- import { RuntimeHttpResponse } from '../../types/runtime';
5
-
6
- export interface WorkersEnv {
7
- [key: string]: any;
8
- }
9
-
10
- export interface WorkersContext {
11
- waitUntil(promise: Promise<any>): void;
12
- passThroughOnException(): void;
13
- }
14
-
15
- export class CloudflareWorkersAdapter extends BaseRuntimeAdapter {
16
- readonly type = 'cloudflare-workers' as const;
17
-
18
- async adaptRequest(request: Request, env: WorkersEnv, ctx: WorkersContext): Promise<HttpRequest> {
19
- const { pathname, query } = this.parseUrl(request.url);
20
-
21
- // Parse body for POST/PUT/PATCH requests
22
- let body: any;
23
- if (['POST', 'PUT', 'PATCH'].includes(request.method)) {
24
- const contentType = request.headers.get('content-type') || '';
25
- if (contentType.includes('application/json')) {
26
- try {
27
- body = await request.json();
28
- } catch {
29
- body = await request.text();
30
- }
31
- } else if (contentType.includes('application/x-www-form-urlencoded')) {
32
- body = await request.formData();
33
- // Convert FormData to object
34
- const formObject: Record<string, any> = {};
35
- body.forEach((value: any, key: string) => {
36
- formObject[key] = value;
37
- });
38
- body = formObject;
39
- } else {
40
- body = await request.text();
41
- }
42
- }
43
-
44
- // Convert Headers to plain object
45
- const headers: Record<string, string> = {};
46
- request.headers.forEach((value, key) => {
47
- headers[key] = value;
48
- });
49
-
50
- const baseRequest = {
51
- method: request.method,
52
- url: request.url,
53
- path: pathname,
54
- query,
55
- body,
56
- headers,
57
- ip: this.getClientIP(headers, request),
58
- params: {},
59
- requestId: '',
60
- cookies: this.parseCookies(headers.cookie || ''),
61
- files: {},
62
- // Add Workers-specific context
63
- env,
64
- ctx,
65
- } as Partial<HttpRequest>;
66
-
67
- return this.enhanceRequest(baseRequest);
68
- }
69
-
70
- async adaptResponse(moroResponse: HttpResponse | RuntimeHttpResponse): Promise<Response> {
71
- const runtimeResponse = moroResponse as RuntimeHttpResponse;
72
-
73
- // Handle different response states
74
- let body = runtimeResponse.body;
75
- let status = runtimeResponse.statusCode || 200;
76
- const headers = runtimeResponse.headers || {};
77
-
78
- // If it's a real HttpResponse, we need to extract the data differently
79
- if ('statusCode' in moroResponse && typeof moroResponse.statusCode === 'number') {
80
- status = moroResponse.statusCode;
81
- }
82
-
83
- // Convert headers to Headers object
84
- const responseHeaders = new Headers();
85
- Object.entries(headers).forEach(([key, value]) => {
86
- responseHeaders.set(key, value);
87
- });
88
-
89
- // Handle different body types
90
- if (typeof body === 'object' && body !== null) {
91
- body = JSON.stringify(body);
92
- responseHeaders.set('Content-Type', 'application/json');
93
- }
94
-
95
- return new Response(body, {
96
- status,
97
- headers: responseHeaders,
98
- });
99
- }
100
-
101
- createServer(handler: (req: HttpRequest, res: HttpResponse) => Promise<void>) {
102
- // Return a Cloudflare Workers-compatible handler function
103
- return async (request: Request, env: WorkersEnv, ctx: WorkersContext) => {
104
- try {
105
- const moroReq = await this.adaptRequest(request, env, ctx);
106
- const moroRes = this.createMockResponse();
107
-
108
- await handler(moroReq, moroRes as any);
109
-
110
- return await this.adaptResponse(moroRes);
111
- } catch (error) {
112
- return new Response(
113
- JSON.stringify({
114
- success: false,
115
- error: 'Internal server error',
116
- message: error instanceof Error ? error.message : 'Unknown error',
117
- }),
118
- {
119
- status: 500,
120
- headers: { 'Content-Type': 'application/json' },
121
- }
122
- );
123
- }
124
- };
125
- }
126
-
127
- // Cloudflare Workers doesn't have a listen method - it's handled by the platform
128
- // listen method is optional in the interface
129
-
130
- private getClientIP(headers: Record<string, string>, request: Request): string {
131
- // Cloudflare provides the real IP in CF-Connecting-IP header
132
- return (
133
- headers['cf-connecting-ip'] ||
134
- headers['x-forwarded-for']?.split(',')[0]?.trim() ||
135
- headers['x-real-ip'] ||
136
- 'unknown'
137
- );
138
- }
139
-
140
- private parseCookies(cookieHeader: string): Record<string, string> {
141
- const cookies: Record<string, string> = {};
142
- if (cookieHeader) {
143
- cookieHeader.split(';').forEach(cookie => {
144
- const [name, ...rest] = cookie.trim().split('=');
145
- if (name && rest.length > 0) {
146
- cookies[name] = rest.join('=');
147
- }
148
- });
149
- }
150
- return cookies;
151
- }
152
- }
@@ -1,62 +0,0 @@
1
- // Runtime adapters export
2
- export { BaseRuntimeAdapter } from './base-adapter';
3
- export { NodeRuntimeAdapter } from './node-adapter';
4
- export { VercelEdgeAdapter } from './vercel-edge-adapter';
5
- export { AWSLambdaAdapter } from './aws-lambda-adapter';
6
- export { CloudflareWorkersAdapter } from './cloudflare-workers-adapter';
7
-
8
- // Re-export types
9
- export type {
10
- RuntimeType,
11
- RuntimeAdapter,
12
- RuntimeConfig,
13
- RuntimeMoroOptions,
14
- RuntimeHttpResponse,
15
- } from '../../types/runtime';
16
-
17
- // Re-export specific runtime types
18
- export type { LambdaEvent, LambdaContext, LambdaResponse } from './aws-lambda-adapter';
19
- export type { WorkersEnv, WorkersContext } from './cloudflare-workers-adapter';
20
-
21
- // Runtime factory functions
22
- import { NodeRuntimeAdapter } from './node-adapter';
23
- import { VercelEdgeAdapter } from './vercel-edge-adapter';
24
- import { AWSLambdaAdapter } from './aws-lambda-adapter';
25
- import { CloudflareWorkersAdapter } from './cloudflare-workers-adapter';
26
- import { RuntimeType, RuntimeAdapter } from '../../types/runtime';
27
-
28
- export function createRuntimeAdapter(type: RuntimeType): RuntimeAdapter {
29
- switch (type) {
30
- case 'node':
31
- return new NodeRuntimeAdapter();
32
- case 'vercel-edge':
33
- return new VercelEdgeAdapter();
34
- case 'aws-lambda':
35
- return new AWSLambdaAdapter();
36
- case 'cloudflare-workers':
37
- return new CloudflareWorkersAdapter();
38
- default:
39
- throw new Error(`Unsupported runtime type: ${type}`);
40
- }
41
- }
42
-
43
- // Convenience functions for creating runtime-specific handlers
44
- export function createNodeHandler(handler: (req: any, res: any) => Promise<void>) {
45
- const adapter = new NodeRuntimeAdapter();
46
- return adapter.createServer(handler);
47
- }
48
-
49
- export function createEdgeHandler(handler: (req: any, res: any) => Promise<void>) {
50
- const adapter = new VercelEdgeAdapter();
51
- return adapter.createServer(handler);
52
- }
53
-
54
- export function createLambdaHandler(handler: (req: any, res: any) => Promise<void>) {
55
- const adapter = new AWSLambdaAdapter();
56
- return adapter.createServer(handler);
57
- }
58
-
59
- export function createWorkerHandler(handler: (req: any, res: any) => Promise<void>) {
60
- const adapter = new CloudflareWorkersAdapter();
61
- return adapter.createServer(handler);
62
- }
@@ -1,196 +0,0 @@
1
- // Node.js runtime adapter
2
- import { IncomingMessage, ServerResponse } from 'http';
3
- import { BaseRuntimeAdapter } from './base-adapter';
4
- import { HttpRequest, HttpResponse } from '../../types/http';
5
- import { RuntimeHttpResponse } from '../../types/runtime';
6
- import { MoroHttpServer } from '../http/http-server';
7
-
8
- export class NodeRuntimeAdapter extends BaseRuntimeAdapter {
9
- readonly type = 'node' as const;
10
-
11
- async adaptRequest(req: IncomingMessage): Promise<HttpRequest> {
12
- const { pathname, query } = this.parseUrl(req.url || '/');
13
-
14
- // Parse body for POST/PUT/PATCH requests
15
- let body: any;
16
- if (['POST', 'PUT', 'PATCH'].includes(req.method!)) {
17
- body = await this.parseRequestBody(req);
18
- }
19
-
20
- const baseRequest = {
21
- // Copy IncomingMessage properties we need
22
- method: req.method!,
23
- url: req.url!,
24
- headers: req.headers as Record<string, string>,
25
- httpVersion: req.httpVersion,
26
- httpVersionMajor: req.httpVersionMajor,
27
- httpVersionMinor: req.httpVersionMinor,
28
- socket: req.socket,
29
-
30
- // Add MoroJS-specific properties
31
- path: pathname,
32
- query,
33
- body,
34
- ip: this.getClientIP(req),
35
- params: {},
36
- requestId: '',
37
- cookies: {},
38
- files: {},
39
- } as Partial<HttpRequest>;
40
-
41
- return this.enhanceRequest(baseRequest);
42
- }
43
-
44
- async adaptResponse(
45
- moroResponse: HttpResponse | RuntimeHttpResponse,
46
- req: IncomingMessage
47
- ): Promise<ServerResponse> {
48
- // For Node.js, we typically work with the actual ServerResponse
49
- // This method is mainly for converting mock responses back to real ones
50
- return moroResponse as any;
51
- }
52
-
53
- createServer(handler: (req: HttpRequest, res: HttpResponse) => Promise<void>): MoroHttpServer {
54
- const httpServer = new MoroHttpServer();
55
-
56
- // Replace the default request handler with our runtime-aware handler
57
- const originalServer = httpServer.getServer();
58
- originalServer.removeAllListeners('request');
59
-
60
- originalServer.on('request', async (req: IncomingMessage, res: ServerResponse) => {
61
- try {
62
- const moroReq = await this.adaptRequest(req);
63
- const moroRes = this.enhanceResponse(res);
64
-
65
- await handler(moroReq, moroRes);
66
- } catch (error) {
67
- if (!res.headersSent) {
68
- res.statusCode = 500;
69
- res.setHeader('Content-Type', 'application/json');
70
- res.end(
71
- JSON.stringify({
72
- success: false,
73
- error: 'Internal server error',
74
- message: error instanceof Error ? error.message : 'Unknown error',
75
- })
76
- );
77
- }
78
- }
79
- });
80
-
81
- return httpServer;
82
- }
83
-
84
- listen(server: MoroHttpServer, port: number, host?: string, callback?: () => void): void {
85
- server.listen(port, host as any, callback);
86
- }
87
-
88
- // Helper methods
89
- private async parseRequestBody(req: IncomingMessage): Promise<any> {
90
- return new Promise((resolve, reject) => {
91
- let body = '';
92
- req.on('data', chunk => {
93
- body += chunk.toString();
94
- });
95
- req.on('end', () => {
96
- try {
97
- const contentType = req.headers['content-type'] || '';
98
- resolve(this.parseBody(body, contentType));
99
- } catch (error) {
100
- reject(error);
101
- }
102
- });
103
- req.on('error', reject);
104
- });
105
- }
106
-
107
- private getClientIP(req: IncomingMessage): string {
108
- const forwarded = req.headers['x-forwarded-for'] as string;
109
- if (forwarded) {
110
- return forwarded.split(',')[0].trim();
111
- }
112
- return req.socket.remoteAddress || 'unknown';
113
- }
114
-
115
- private enhanceResponse(res: ServerResponse): HttpResponse {
116
- const enhanced = res as any;
117
-
118
- // Add MoroJS response methods if they don't exist
119
- if (!enhanced.json) {
120
- enhanced.json = function (data: any) {
121
- this.setHeader('Content-Type', 'application/json');
122
- this.end(JSON.stringify(data));
123
- };
124
- }
125
-
126
- if (!enhanced.status) {
127
- enhanced.status = function (code: number) {
128
- this.statusCode = code;
129
- return this;
130
- };
131
- }
132
-
133
- if (!enhanced.send) {
134
- enhanced.send = function (data: string | Buffer) {
135
- this.end(data);
136
- };
137
- }
138
-
139
- if (!enhanced.cookie) {
140
- enhanced.cookie = function (name: string, value: string, options?: any) {
141
- const cookieString = `${name}=${value}`;
142
- this.setHeader('Set-Cookie', cookieString);
143
- return this;
144
- };
145
- }
146
-
147
- if (!enhanced.clearCookie) {
148
- enhanced.clearCookie = function (name: string, options?: any) {
149
- this.setHeader('Set-Cookie', `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT`);
150
- return this;
151
- };
152
- }
153
-
154
- if (!enhanced.redirect) {
155
- enhanced.redirect = function (url: string, status?: number) {
156
- this.statusCode = status || 302;
157
- this.setHeader('Location', url);
158
- this.end();
159
- };
160
- }
161
-
162
- if (!enhanced.sendFile) {
163
- enhanced.sendFile = async function (filePath: string) {
164
- const fs = await import('fs');
165
- const path = await import('path');
166
-
167
- try {
168
- const data = await fs.promises.readFile(filePath);
169
- const ext = path.extname(filePath);
170
-
171
- // Basic content type detection
172
- const contentTypes: Record<string, string> = {
173
- '.html': 'text/html',
174
- '.js': 'application/javascript',
175
- '.css': 'text/css',
176
- '.json': 'application/json',
177
- '.png': 'image/png',
178
- '.jpg': 'image/jpeg',
179
- '.jpeg': 'image/jpeg',
180
- '.gif': 'image/gif',
181
- '.svg': 'image/svg+xml',
182
- };
183
-
184
- const contentType = contentTypes[ext] || 'application/octet-stream';
185
- this.setHeader('Content-Type', contentType);
186
- this.end(data);
187
- } catch (error) {
188
- this.statusCode = 404;
189
- this.end('File not found');
190
- }
191
- };
192
- }
193
-
194
- return enhanced;
195
- }
196
- }
@@ -1,114 +0,0 @@
1
- // Vercel Edge runtime adapter
2
- import { BaseRuntimeAdapter } from './base-adapter';
3
- import { HttpRequest, HttpResponse } from '../../types/http';
4
- import { RuntimeHttpResponse } from '../../types/runtime';
5
-
6
- export class VercelEdgeAdapter extends BaseRuntimeAdapter {
7
- readonly type = 'vercel-edge' as const;
8
-
9
- async adaptRequest(request: Request): Promise<HttpRequest> {
10
- const url = new URL(request.url);
11
- const { pathname, query } = this.parseUrl(request.url);
12
-
13
- // Parse body for POST/PUT/PATCH requests
14
- let body: any;
15
- if (['POST', 'PUT', 'PATCH'].includes(request.method)) {
16
- const contentType = request.headers.get('content-type') || '';
17
- if (contentType.includes('application/json')) {
18
- try {
19
- body = await request.json();
20
- } catch {
21
- body = await request.text();
22
- }
23
- } else {
24
- body = await request.text();
25
- }
26
- }
27
-
28
- // Convert Headers to plain object
29
- const headers: Record<string, string> = {};
30
- request.headers.forEach((value, key) => {
31
- headers[key] = value;
32
- });
33
-
34
- const baseRequest = {
35
- method: request.method,
36
- url: request.url,
37
- path: pathname,
38
- query,
39
- body,
40
- headers,
41
- ip: this.getClientIP(headers),
42
- params: {},
43
- requestId: '',
44
- cookies: {},
45
- files: {},
46
- } as Partial<HttpRequest>;
47
-
48
- return this.enhanceRequest(baseRequest);
49
- }
50
-
51
- async adaptResponse(moroResponse: HttpResponse | RuntimeHttpResponse): Promise<Response> {
52
- const runtimeResponse = moroResponse as RuntimeHttpResponse;
53
-
54
- // Handle different response states
55
- let body = runtimeResponse.body;
56
- let status = runtimeResponse.statusCode || 200;
57
- const headers = runtimeResponse.headers || {};
58
-
59
- // If it's a real HttpResponse, we need to extract the data differently
60
- if ('statusCode' in moroResponse && typeof moroResponse.statusCode === 'number') {
61
- status = moroResponse.statusCode;
62
- }
63
-
64
- // Convert headers to Headers object
65
- const responseHeaders = new Headers();
66
- Object.entries(headers).forEach(([key, value]) => {
67
- responseHeaders.set(key, value);
68
- });
69
-
70
- // Handle different body types
71
- if (typeof body === 'object' && body !== null) {
72
- body = JSON.stringify(body);
73
- responseHeaders.set('Content-Type', 'application/json');
74
- }
75
-
76
- return new Response(body, {
77
- status,
78
- headers: responseHeaders,
79
- });
80
- }
81
-
82
- createServer(handler: (req: HttpRequest, res: HttpResponse) => Promise<void>) {
83
- // Return a Vercel Edge-compatible handler function
84
- return async (request: Request) => {
85
- try {
86
- const moroReq = await this.adaptRequest(request);
87
- const moroRes = this.createMockResponse();
88
-
89
- await handler(moroReq, moroRes as any);
90
-
91
- return await this.adaptResponse(moroRes);
92
- } catch (error) {
93
- return new Response(
94
- JSON.stringify({
95
- success: false,
96
- error: 'Internal server error',
97
- message: error instanceof Error ? error.message : 'Unknown error',
98
- }),
99
- {
100
- status: 500,
101
- headers: { 'Content-Type': 'application/json' },
102
- }
103
- );
104
- }
105
- };
106
- }
107
-
108
- // Vercel Edge doesn't have a listen method - it's handled by the platform
109
- // listen method is optional in the interface
110
-
111
- private getClientIP(headers: Record<string, string>): string {
112
- return headers['x-forwarded-for']?.split(',')[0]?.trim() || headers['x-real-ip'] || 'unknown';
113
- }
114
- }
@@ -1,46 +0,0 @@
1
- // src/core/circuit-breaker.ts
2
- export class CircuitBreaker {
3
- private failures = 0;
4
- private lastFailTime = 0;
5
- private state: 'CLOSED' | 'OPEN' | 'HALF_OPEN' = 'CLOSED';
6
-
7
- constructor(
8
- private options: {
9
- failureThreshold: number;
10
- resetTimeout: number;
11
- monitoringPeriod: number;
12
- }
13
- ) {}
14
-
15
- async execute<T>(fn: () => Promise<T>): Promise<T> {
16
- if (this.state === 'OPEN') {
17
- if (Date.now() - this.lastFailTime < this.options.resetTimeout) {
18
- throw new Error('Circuit breaker is OPEN');
19
- }
20
- this.state = 'HALF_OPEN';
21
- }
22
-
23
- try {
24
- const result = await fn();
25
- this.onSuccess();
26
- return result;
27
- } catch (error) {
28
- this.onFailure();
29
- throw error;
30
- }
31
- }
32
-
33
- private onSuccess() {
34
- this.failures = 0;
35
- this.state = 'CLOSED';
36
- }
37
-
38
- private onFailure() {
39
- this.failures++;
40
- this.lastFailTime = Date.now();
41
-
42
- if (this.failures >= this.options.failureThreshold) {
43
- this.state = 'OPEN';
44
- }
45
- }
46
- }