@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,288 +0,0 @@
1
- // Session Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { createFrameworkLogger } from '../../logger';
4
- import { CacheAdapter } from '../../../types/cache';
5
- import { MemoryCacheAdapter } from './adapters/cache/memory';
6
- import { RedisCacheAdapter } from './adapters/cache/redis';
7
- import { FileCacheAdapter } from './adapters/cache/file';
8
-
9
- const logger = createFrameworkLogger('SessionMiddleware');
10
-
11
- export interface SessionOptions {
12
- // Session store configuration
13
- store?: 'memory' | 'redis' | 'file' | CacheAdapter;
14
- storeOptions?: {
15
- // Redis options
16
- host?: string;
17
- port?: number;
18
- password?: string;
19
- keyPrefix?: string;
20
- // File options
21
- path?: string;
22
- // Memory options
23
- max?: number;
24
- };
25
-
26
- // Session configuration
27
- secret?: string;
28
- name?: string; // Session cookie name
29
- genid?: () => string; // Session ID generator
30
- rolling?: boolean; // Reset expiry on each request
31
- resave?: boolean; // Save session even if not modified
32
- saveUninitialized?: boolean; // Save new but not modified sessions
33
-
34
- // Cookie configuration
35
- cookie?: {
36
- maxAge?: number; // Session timeout in ms
37
- expires?: Date; // Absolute expiry
38
- httpOnly?: boolean; // Prevent XSS access
39
- secure?: boolean; // HTTPS only
40
- sameSite?: 'strict' | 'lax' | 'none';
41
- domain?: string;
42
- path?: string;
43
- };
44
-
45
- // Security
46
- proxy?: boolean; // Trust proxy for secure cookies
47
- unset?: 'destroy' | 'keep'; // What to do when session is unset
48
- }
49
-
50
- export interface SessionData {
51
- [key: string]: any;
52
- cookie?: {
53
- originalMaxAge?: number;
54
- expires?: Date;
55
- secure?: boolean;
56
- httpOnly?: boolean;
57
- sameSite?: string;
58
- };
59
- }
60
-
61
- class Session {
62
- private data: SessionData = {};
63
- private id: string;
64
- private store: CacheAdapter;
65
- private options: SessionOptions;
66
- private isNew: boolean = false;
67
- private isModified: boolean = false;
68
-
69
- constructor(id: string, store: CacheAdapter, options: SessionOptions, isNew: boolean = false) {
70
- this.id = id;
71
- this.store = store;
72
- this.options = options;
73
- this.isNew = isNew;
74
- }
75
-
76
- // Proxy to make session.prop = value work
77
- static create(
78
- id: string,
79
- store: CacheAdapter,
80
- options: SessionOptions,
81
- data: SessionData = {},
82
- isNew: boolean = false
83
- ): Session {
84
- const session = new Session(id, store, options, isNew);
85
- session.data = data;
86
-
87
- return new Proxy(session, {
88
- get(target, prop) {
89
- if (prop in target) {
90
- return target[prop as keyof Session];
91
- }
92
- return target.data[prop as string];
93
- },
94
-
95
- set(target, prop, value) {
96
- if (prop in target) {
97
- (target as any)[prop] = value;
98
- } else {
99
- target.data[prop as string] = value;
100
- target.isModified = true;
101
- }
102
- return true;
103
- },
104
-
105
- has(target, prop) {
106
- return prop in target || prop in target.data;
107
- },
108
-
109
- deleteProperty(target, prop) {
110
- if (prop in target.data) {
111
- delete target.data[prop as string];
112
- target.isModified = true;
113
- return true;
114
- }
115
- return false;
116
- },
117
- });
118
- }
119
-
120
- async save(): Promise<void> {
121
- if (this.isModified || this.isNew || this.options.resave) {
122
- const ttl = this.options.cookie?.maxAge
123
- ? Math.floor(this.options.cookie.maxAge / 1000)
124
- : 86400; // 24h default
125
- await this.store.set(this.id, this.data, ttl);
126
- this.isModified = false;
127
- this.isNew = false;
128
- logger.debug(`Session saved: ${this.id}`, 'SessionSave');
129
- }
130
- }
131
-
132
- async destroy(): Promise<void> {
133
- await this.store.del(this.id);
134
- this.data = {};
135
- this.isModified = false;
136
- logger.debug(`Session destroyed: ${this.id}`, 'SessionDestroy');
137
- }
138
-
139
- async regenerate(): Promise<string> {
140
- await this.destroy();
141
- this.id = this.generateId();
142
- this.isNew = true;
143
- this.isModified = true;
144
- logger.debug(`Session regenerated: ${this.id}`, 'SessionRegenerate');
145
- return this.id;
146
- }
147
-
148
- async touch(): Promise<void> {
149
- if (this.options.rolling) {
150
- this.isModified = true;
151
- await this.save();
152
- }
153
- }
154
-
155
- private generateId(): string {
156
- if (this.options.genid) {
157
- return this.options.genid();
158
- }
159
-
160
- const crypto = require('crypto');
161
- return crypto.randomBytes(24).toString('hex');
162
- }
163
-
164
- get sessionID(): string {
165
- return this.id;
166
- }
167
- }
168
-
169
- export const session = (options: SessionOptions = {}): MiddlewareInterface => ({
170
- name: 'session',
171
- version: '1.0.0',
172
- metadata: {
173
- name: 'session',
174
- version: '1.0.0',
175
- description: 'Session management middleware with multiple store adapters',
176
- author: 'MoroJS Team',
177
- },
178
-
179
- install: async (hooks: any, middlewareOptions: any = {}) => {
180
- logger.debug('Installing session middleware', 'Installation');
181
-
182
- // Merge options
183
- const config: SessionOptions = {
184
- store: 'memory',
185
- name: 'connect.sid',
186
- secret: 'moro-session-secret',
187
- rolling: false,
188
- resave: false,
189
- saveUninitialized: false,
190
- cookie: {
191
- maxAge: 24 * 60 * 60 * 1000, // 24 hours
192
- httpOnly: true,
193
- secure: false,
194
- sameSite: 'lax',
195
- path: '/',
196
- },
197
- unset: 'keep',
198
- ...options,
199
- ...middlewareOptions,
200
- };
201
-
202
- // Initialize store
203
- let store: CacheAdapter;
204
-
205
- if (typeof config.store === 'string') {
206
- switch (config.store) {
207
- case 'redis':
208
- store = new RedisCacheAdapter({
209
- keyPrefix: 'sess:',
210
- ...config.storeOptions,
211
- });
212
- break;
213
- case 'file':
214
- store = new FileCacheAdapter({
215
- cacheDir: config.storeOptions?.path || './sessions',
216
- });
217
- break;
218
- case 'memory':
219
- default:
220
- store = new MemoryCacheAdapter();
221
- break;
222
- }
223
- } else {
224
- store = config.store as CacheAdapter;
225
- }
226
-
227
- // Generate session ID
228
- const generateSessionId = (): string => {
229
- if (config.genid) {
230
- return config.genid();
231
- }
232
- const crypto = require('crypto');
233
- return crypto.randomBytes(24).toString('hex');
234
- };
235
-
236
- hooks.before('request', async (context: HookContext) => {
237
- const req = context.request as any;
238
- const res = context.response as any;
239
-
240
- // Get session ID from cookie
241
- let sessionId = req.cookies?.[config.name!];
242
- let sessionData: SessionData = {};
243
- let isNew = false;
244
-
245
- if (sessionId) {
246
- try {
247
- sessionData = (await store.get(sessionId)) || {};
248
- logger.debug(`Session loaded: ${sessionId}`, 'SessionLoad');
249
- } catch (error) {
250
- logger.warn(`Failed to load session: ${sessionId}`, 'SessionLoadError', { error });
251
- sessionId = generateSessionId();
252
- isNew = true;
253
- }
254
- } else {
255
- sessionId = generateSessionId();
256
- isNew = true;
257
- }
258
-
259
- // Create session object
260
- req.session = Session.create(sessionId, store, config, sessionData, isNew);
261
-
262
- // Set session cookie
263
- if (isNew || config.rolling) {
264
- res.cookie(config.name!, sessionId, {
265
- ...config.cookie,
266
- secure:
267
- config.cookie?.secure || (config.proxy && req.headers['x-forwarded-proto'] === 'https'),
268
- });
269
- }
270
- });
271
-
272
- hooks.after('response', async (context: HookContext) => {
273
- const req = context.request as any;
274
-
275
- if (req.session) {
276
- try {
277
- if (config.saveUninitialized || !req.session.isNew || req.session.isModified) {
278
- await req.session.save();
279
- }
280
- } catch (error) {
281
- logger.error('Failed to save session', 'SessionSaveError', { error });
282
- }
283
- }
284
- });
285
-
286
- logger.info(`Session middleware installed with ${config.store} store`, 'Installation');
287
- },
288
- });
@@ -1,86 +0,0 @@
1
- // Server-Sent Events Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { createFrameworkLogger } from '../../logger';
4
-
5
- const logger = createFrameworkLogger('SSEMiddleware');
6
-
7
- export const sse = (
8
- options: {
9
- heartbeat?: number;
10
- retry?: number;
11
- cors?: boolean;
12
- } = {}
13
- ): MiddlewareInterface => ({
14
- name: 'sse',
15
- version: '1.0.0',
16
- metadata: {
17
- name: 'sse',
18
- version: '1.0.0',
19
- description: 'Server-Sent Events middleware with heartbeat and retry support',
20
- author: 'MoroJS Team',
21
- },
22
-
23
- install: async (hooks: any, middlewareOptions: any = {}) => {
24
- logger.debug('Installing SSE middleware', 'Installation');
25
-
26
- hooks.before('request', async (context: HookContext) => {
27
- const req = context.request as any;
28
- const res = context.response as any;
29
-
30
- // Only handle SSE requests
31
- if (!req.headers.accept?.includes('text/event-stream')) {
32
- return;
33
- }
34
-
35
- logger.debug('Setting up SSE connection', 'SSESetup');
36
-
37
- // Set SSE headers
38
- res.writeHead(200, {
39
- 'Content-Type': 'text/event-stream',
40
- 'Cache-Control': 'no-cache',
41
- Connection: 'keep-alive',
42
- 'Access-Control-Allow-Origin': options.cors ? '*' : undefined,
43
- 'Access-Control-Allow-Headers': options.cors ? 'Cache-Control' : undefined,
44
- });
45
-
46
- // Add SSE methods to response
47
- res.sendEvent = (data: any, event?: string, id?: string) => {
48
- if (id) res.write(`id: ${id}\n`);
49
- if (event) res.write(`event: ${event}\n`);
50
- res.write(`data: ${typeof data === 'string' ? data : JSON.stringify(data)}\n\n`);
51
- };
52
-
53
- res.sendComment = (comment: string) => {
54
- res.write(`: ${comment}\n\n`);
55
- };
56
-
57
- res.sendRetry = (ms: number) => {
58
- res.write(`retry: ${ms}\n\n`);
59
- };
60
-
61
- // Set up heartbeat if configured
62
- let heartbeatInterval: NodeJS.Timeout | null = null;
63
- if (options.heartbeat) {
64
- heartbeatInterval = setInterval(() => {
65
- res.sendComment('heartbeat');
66
- }, options.heartbeat);
67
- }
68
-
69
- // Set retry if configured
70
- if (options.retry) {
71
- res.sendRetry(options.retry);
72
- }
73
-
74
- // Clean up on close
75
- req.on('close', () => {
76
- if (heartbeatInterval) {
77
- clearInterval(heartbeatInterval);
78
- }
79
- logger.debug('SSE connection closed', 'SSECleanup');
80
- });
81
-
82
- // Mark that this middleware handled the request
83
- (context as any).handled = true;
84
- });
85
- },
86
- });
@@ -1,33 +0,0 @@
1
- // Validation Middleware
2
- import { MiddlewareInterface, HookContext } from '../../../types/hooks';
3
- import { createFrameworkLogger } from '../../logger';
4
-
5
- const logger = createFrameworkLogger('ValidationMiddleware');
6
-
7
- export const validation = (): MiddlewareInterface => ({
8
- name: 'validation',
9
- version: '1.0.0',
10
- metadata: {
11
- name: 'validation',
12
- version: '1.0.0',
13
- description: 'Request validation middleware with content type checking',
14
- author: 'MoroJS Team',
15
- },
16
-
17
- install: async (hooks: any, options: any = {}) => {
18
- logger.debug('Installing validation middleware', 'Installation');
19
-
20
- hooks.before('request', async (context: HookContext) => {
21
- const request = context.request as any;
22
-
23
- // Basic content type validation
24
- if (request.method === 'POST' || request.method === 'PUT') {
25
- const contentType = request.headers['content-type'];
26
- if (contentType && contentType.includes('application/json')) {
27
- logger.debug('Validation: JSON content type verified', 'ContentType');
28
- // Additional validation logic would go here
29
- }
30
- }
31
- });
32
- },
33
- });
@@ -1,177 +0,0 @@
1
- // Middleware System for Moro
2
- import { EventEmitter } from 'events';
3
- import { HookManager } from '../utilities';
4
- import {
5
- MiddlewareMetadata,
6
- MiddlewareContext,
7
- MiddlewareInterface,
8
- SimpleMiddlewareFunction,
9
- MoroMiddleware,
10
- } from '../../types/hooks';
11
- import { createFrameworkLogger } from '../logger';
12
-
13
- // Export types needed by built-in middleware
14
- export type { MiddlewareInterface, MoroMiddleware } from '../../types/hooks';
15
-
16
- export class MiddlewareManager extends EventEmitter {
17
- private middleware = new Map<string, MiddlewareInterface>();
18
- private simpleMiddleware = new Map<string, SimpleMiddlewareFunction>();
19
- private hooks: HookManager;
20
- private logger = createFrameworkLogger('Middleware');
21
-
22
- constructor() {
23
- super();
24
- this.hooks = new HookManager();
25
- }
26
-
27
- // Register middleware without installing
28
- register(name: string, middleware: MiddlewareInterface): void {
29
- if (this.middleware.has(name)) {
30
- throw new Error(`Middleware ${name} is already registered`);
31
- }
32
-
33
- this.middleware.set(name, middleware);
34
- this.logger.debug(`Registered middleware: ${name}`, 'Registration');
35
- this.emit('registered', { name, middleware });
36
- }
37
-
38
- // Install simple function-style middleware
39
- install(middleware: SimpleMiddlewareFunction | MiddlewareInterface, options: any = {}): void {
40
- if (typeof middleware === 'function') {
41
- // Simple function-style middleware
42
- const simpleName = middleware.name || 'anonymous';
43
- this.logger.debug(`Installing simple middleware: ${simpleName}`, 'Installation');
44
-
45
- this.simpleMiddleware.set(simpleName, middleware);
46
- this.emit('installed', { name: simpleName, type: 'simple' });
47
- this.logger.info(`Simple middleware installed: ${simpleName}`, 'Installation');
48
- return;
49
- }
50
-
51
- // Advanced middleware with dependencies and lifecycle
52
- const name = middleware.metadata?.name || 'unknown';
53
-
54
- if (this.middleware.has(name)) {
55
- throw new Error(`Middleware ${name} is already installed`);
56
- }
57
-
58
- // Check dependencies
59
- if (middleware.metadata?.dependencies) {
60
- for (const dep of middleware.metadata.dependencies) {
61
- if (!this.middleware.has(dep)) {
62
- throw new Error(`Dependency ${dep} not found for middleware ${name}`);
63
- }
64
- }
65
- }
66
-
67
- // Store middleware
68
- this.middleware.set(name, middleware);
69
-
70
- this.logger.debug(`Installing middleware: ${name}`, 'Installation');
71
-
72
- // Initialize middleware
73
- if (middleware.install) {
74
- middleware.install(this.hooks, options);
75
- }
76
-
77
- this.emit('installed', { name, middleware, options });
78
- this.logger.info(`Middleware installed: ${name}`, 'Installation');
79
- }
80
-
81
- // Uninstall middleware and clean up
82
- uninstall(name: string): void {
83
- if (!this.middleware.has(name)) {
84
- throw new Error(`Middleware ${name} is not installed`);
85
- }
86
-
87
- const middleware = this.middleware.get(name)!;
88
-
89
- this.logger.debug(`Uninstalling middleware: ${name}`, 'Uninstallation');
90
-
91
- // Call cleanup if available
92
- if (middleware.uninstall) {
93
- middleware.uninstall(this.hooks);
94
- }
95
-
96
- this.middleware.delete(name);
97
- this.emit('uninstalled', { name, middleware });
98
- this.logger.info(`Middleware uninstalled: ${name}`, 'Uninstallation');
99
- }
100
-
101
- // Get installed middleware
102
- getInstalled(): string[] {
103
- return Array.from(this.middleware.keys());
104
- }
105
-
106
- // Get middleware configuration
107
- getConfig(name: string): any {
108
- return this.middleware.get(name)?.metadata;
109
- }
110
-
111
- // Check if middleware is installed
112
- isInstalled(name: string): boolean {
113
- return this.middleware.has(name);
114
- }
115
-
116
- // List all registered middleware
117
- list(): MiddlewareInterface[] {
118
- return Array.from(this.middleware.values());
119
- }
120
-
121
- // Dependency resolution with topological sorting for optimal middleware loading
122
- async installWithDependencies(
123
- middleware: MiddlewareInterface[],
124
- options?: Record<string, any>
125
- ): Promise<void> {
126
- // Advanced topological sort for dependency resolution
127
- const resolved = this.topologicalSort(middleware);
128
-
129
- for (const middlewareItem of resolved) {
130
- const middlewareOptions = options?.[middlewareItem.name];
131
- await this.install(middlewareItem, middlewareOptions);
132
- }
133
- }
134
-
135
- // Optimized topological sort implementation for middleware dependencies
136
- private topologicalSort(middleware: MiddlewareInterface[]): MiddlewareInterface[] {
137
- const visited = new Set<string>();
138
- const temp = new Set<string>();
139
- const result: MiddlewareInterface[] = [];
140
-
141
- const visit = (middlewareItem: MiddlewareInterface) => {
142
- if (temp.has(middlewareItem.name)) {
143
- throw new Error(`Circular dependency detected: ${middlewareItem.name}`);
144
- }
145
-
146
- if (!visited.has(middlewareItem.name)) {
147
- temp.add(middlewareItem.name);
148
-
149
- // Visit dependencies first
150
- if (middlewareItem.dependencies) {
151
- for (const depName of middlewareItem.dependencies) {
152
- const dependency = middleware.find(m => m.name === depName);
153
- if (dependency) {
154
- visit(dependency);
155
- }
156
- }
157
- }
158
-
159
- temp.delete(middlewareItem.name);
160
- visited.add(middlewareItem.name);
161
- result.push(middlewareItem);
162
- }
163
- };
164
-
165
- for (const middlewareItem of middleware) {
166
- if (!visited.has(middlewareItem.name)) {
167
- visit(middlewareItem);
168
- }
169
- }
170
-
171
- return result;
172
- }
173
- }
174
-
175
- // Built-in middleware exports
176
- export { builtInMiddleware, simpleMiddleware } from './built-in';
177
- export * from './built-in';