@morojs/moro 1.0.0

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 (345) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +233 -0
  3. package/dist/core/config/index.d.ts +19 -0
  4. package/dist/core/config/index.js +59 -0
  5. package/dist/core/config/index.js.map +1 -0
  6. package/dist/core/config/loader.d.ts +6 -0
  7. package/dist/core/config/loader.js +288 -0
  8. package/dist/core/config/loader.js.map +1 -0
  9. package/dist/core/config/schema.d.ts +335 -0
  10. package/dist/core/config/schema.js +286 -0
  11. package/dist/core/config/schema.js.map +1 -0
  12. package/dist/core/config/utils.d.ts +50 -0
  13. package/dist/core/config/utils.js +185 -0
  14. package/dist/core/config/utils.js.map +1 -0
  15. package/dist/core/database/adapters/drizzle.d.ts +29 -0
  16. package/dist/core/database/adapters/drizzle.js +366 -0
  17. package/dist/core/database/adapters/drizzle.js.map +1 -0
  18. package/dist/core/database/adapters/index.d.ts +8 -0
  19. package/dist/core/database/adapters/index.js +48 -0
  20. package/dist/core/database/adapters/index.js.map +1 -0
  21. package/dist/core/database/adapters/mongodb.d.ts +35 -0
  22. package/dist/core/database/adapters/mongodb.js +215 -0
  23. package/dist/core/database/adapters/mongodb.js.map +1 -0
  24. package/dist/core/database/adapters/mysql.d.ts +23 -0
  25. package/dist/core/database/adapters/mysql.js +149 -0
  26. package/dist/core/database/adapters/mysql.js.map +1 -0
  27. package/dist/core/database/adapters/postgresql.d.ts +24 -0
  28. package/dist/core/database/adapters/postgresql.js +160 -0
  29. package/dist/core/database/adapters/postgresql.js.map +1 -0
  30. package/dist/core/database/adapters/redis.d.ts +50 -0
  31. package/dist/core/database/adapters/redis.js +266 -0
  32. package/dist/core/database/adapters/redis.js.map +1 -0
  33. package/dist/core/database/adapters/sqlite.d.ts +23 -0
  34. package/dist/core/database/adapters/sqlite.js +194 -0
  35. package/dist/core/database/adapters/sqlite.js.map +1 -0
  36. package/dist/core/database/index.d.ts +2 -0
  37. package/dist/core/database/index.js +20 -0
  38. package/dist/core/database/index.js.map +1 -0
  39. package/dist/core/docs/index.d.ts +63 -0
  40. package/dist/core/docs/index.js +170 -0
  41. package/dist/core/docs/index.js.map +1 -0
  42. package/dist/core/docs/openapi-generator.d.ts +124 -0
  43. package/dist/core/docs/openapi-generator.js +413 -0
  44. package/dist/core/docs/openapi-generator.js.map +1 -0
  45. package/dist/core/docs/simple-docs.d.ts +21 -0
  46. package/dist/core/docs/simple-docs.js +268 -0
  47. package/dist/core/docs/simple-docs.js.map +1 -0
  48. package/dist/core/docs/swagger-ui.d.ts +28 -0
  49. package/dist/core/docs/swagger-ui.js +317 -0
  50. package/dist/core/docs/swagger-ui.js.map +1 -0
  51. package/dist/core/docs/zod-to-openapi.d.ts +29 -0
  52. package/dist/core/docs/zod-to-openapi.js +414 -0
  53. package/dist/core/docs/zod-to-openapi.js.map +1 -0
  54. package/dist/core/events/event-bus.d.ts +27 -0
  55. package/dist/core/events/event-bus.js +193 -0
  56. package/dist/core/events/event-bus.js.map +1 -0
  57. package/dist/core/events/index.d.ts +2 -0
  58. package/dist/core/events/index.js +7 -0
  59. package/dist/core/events/index.js.map +1 -0
  60. package/dist/core/framework.d.ts +57 -0
  61. package/dist/core/framework.js +432 -0
  62. package/dist/core/framework.js.map +1 -0
  63. package/dist/core/http/http-server.d.ts +114 -0
  64. package/dist/core/http/http-server.js +1154 -0
  65. package/dist/core/http/http-server.js.map +1 -0
  66. package/dist/core/http/index.d.ts +3 -0
  67. package/dist/core/http/index.js +10 -0
  68. package/dist/core/http/index.js.map +1 -0
  69. package/dist/core/http/router.d.ts +14 -0
  70. package/dist/core/http/router.js +113 -0
  71. package/dist/core/http/router.js.map +1 -0
  72. package/dist/core/logger/filters.d.ts +9 -0
  73. package/dist/core/logger/filters.js +134 -0
  74. package/dist/core/logger/filters.js.map +1 -0
  75. package/dist/core/logger/index.d.ts +3 -0
  76. package/dist/core/logger/index.js +26 -0
  77. package/dist/core/logger/index.js.map +1 -0
  78. package/dist/core/logger/logger.d.ts +49 -0
  79. package/dist/core/logger/logger.js +332 -0
  80. package/dist/core/logger/logger.js.map +1 -0
  81. package/dist/core/logger/outputs.d.ts +42 -0
  82. package/dist/core/logger/outputs.js +110 -0
  83. package/dist/core/logger/outputs.js.map +1 -0
  84. package/dist/core/middleware/built-in/adapters/cache/file.d.ts +15 -0
  85. package/dist/core/middleware/built-in/adapters/cache/file.js +128 -0
  86. package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -0
  87. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +5 -0
  88. package/dist/core/middleware/built-in/adapters/cache/index.js +28 -0
  89. package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -0
  90. package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +11 -0
  91. package/dist/core/middleware/built-in/adapters/cache/memory.js +65 -0
  92. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -0
  93. package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +17 -0
  94. package/dist/core/middleware/built-in/adapters/cache/redis.js +91 -0
  95. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -0
  96. package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +21 -0
  97. package/dist/core/middleware/built-in/adapters/cdn/azure.js +40 -0
  98. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -0
  99. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +14 -0
  100. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +77 -0
  101. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -0
  102. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +15 -0
  103. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +73 -0
  104. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -0
  105. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +5 -0
  106. package/dist/core/middleware/built-in/adapters/cdn/index.js +28 -0
  107. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +1 -0
  108. package/dist/core/middleware/built-in/adapters/index.d.ts +4 -0
  109. package/dist/core/middleware/built-in/adapters/index.js +26 -0
  110. package/dist/core/middleware/built-in/adapters/index.js.map +1 -0
  111. package/dist/core/middleware/built-in/auth.d.ts +2 -0
  112. package/dist/core/middleware/built-in/auth.js +38 -0
  113. package/dist/core/middleware/built-in/auth.js.map +1 -0
  114. package/dist/core/middleware/built-in/cache.d.ts +3 -0
  115. package/dist/core/middleware/built-in/cache.js +188 -0
  116. package/dist/core/middleware/built-in/cache.js.map +1 -0
  117. package/dist/core/middleware/built-in/cdn.d.ts +3 -0
  118. package/dist/core/middleware/built-in/cdn.js +115 -0
  119. package/dist/core/middleware/built-in/cdn.js.map +1 -0
  120. package/dist/core/middleware/built-in/cookie.d.ts +14 -0
  121. package/dist/core/middleware/built-in/cookie.js +68 -0
  122. package/dist/core/middleware/built-in/cookie.js.map +1 -0
  123. package/dist/core/middleware/built-in/cors.d.ts +2 -0
  124. package/dist/core/middleware/built-in/cors.js +29 -0
  125. package/dist/core/middleware/built-in/cors.js.map +1 -0
  126. package/dist/core/middleware/built-in/csp.d.ts +22 -0
  127. package/dist/core/middleware/built-in/csp.js +74 -0
  128. package/dist/core/middleware/built-in/csp.js.map +1 -0
  129. package/dist/core/middleware/built-in/csrf.d.ts +9 -0
  130. package/dist/core/middleware/built-in/csrf.js +66 -0
  131. package/dist/core/middleware/built-in/csrf.js.map +1 -0
  132. package/dist/core/middleware/built-in/error-tracker.d.ts +1 -0
  133. package/dist/core/middleware/built-in/error-tracker.js +19 -0
  134. package/dist/core/middleware/built-in/error-tracker.js.map +1 -0
  135. package/dist/core/middleware/built-in/index.d.ts +70 -0
  136. package/dist/core/middleware/built-in/index.js +70 -0
  137. package/dist/core/middleware/built-in/index.js.map +1 -0
  138. package/dist/core/middleware/built-in/performance-monitor.d.ts +1 -0
  139. package/dist/core/middleware/built-in/performance-monitor.js +22 -0
  140. package/dist/core/middleware/built-in/performance-monitor.js.map +1 -0
  141. package/dist/core/middleware/built-in/rate-limit.d.ts +6 -0
  142. package/dist/core/middleware/built-in/rate-limit.js +47 -0
  143. package/dist/core/middleware/built-in/rate-limit.js.map +1 -0
  144. package/dist/core/middleware/built-in/request-logger.d.ts +1 -0
  145. package/dist/core/middleware/built-in/request-logger.js +15 -0
  146. package/dist/core/middleware/built-in/request-logger.js.map +1 -0
  147. package/dist/core/middleware/built-in/session.d.ts +41 -0
  148. package/dist/core/middleware/built-in/session.js +209 -0
  149. package/dist/core/middleware/built-in/session.js.map +1 -0
  150. package/dist/core/middleware/built-in/sse.d.ts +6 -0
  151. package/dist/core/middleware/built-in/sse.js +73 -0
  152. package/dist/core/middleware/built-in/sse.js.map +1 -0
  153. package/dist/core/middleware/built-in/validation.d.ts +2 -0
  154. package/dist/core/middleware/built-in/validation.js +31 -0
  155. package/dist/core/middleware/built-in/validation.js.map +1 -0
  156. package/dist/core/middleware/index.d.ts +21 -0
  157. package/dist/core/middleware/index.js +152 -0
  158. package/dist/core/middleware/index.js.map +1 -0
  159. package/dist/core/modules/auto-discovery.d.ts +27 -0
  160. package/dist/core/modules/auto-discovery.js +255 -0
  161. package/dist/core/modules/auto-discovery.js.map +1 -0
  162. package/dist/core/modules/index.d.ts +2 -0
  163. package/dist/core/modules/index.js +11 -0
  164. package/dist/core/modules/index.js.map +1 -0
  165. package/dist/core/modules/modules.d.ts +10 -0
  166. package/dist/core/modules/modules.js +137 -0
  167. package/dist/core/modules/modules.js.map +1 -0
  168. package/dist/core/networking/index.d.ts +2 -0
  169. package/dist/core/networking/index.js +9 -0
  170. package/dist/core/networking/index.js.map +1 -0
  171. package/dist/core/networking/service-discovery.d.ts +38 -0
  172. package/dist/core/networking/service-discovery.js +233 -0
  173. package/dist/core/networking/service-discovery.js.map +1 -0
  174. package/dist/core/networking/websocket-manager.d.ts +27 -0
  175. package/dist/core/networking/websocket-manager.js +211 -0
  176. package/dist/core/networking/websocket-manager.js.map +1 -0
  177. package/dist/core/routing/app-integration.d.ts +42 -0
  178. package/dist/core/routing/app-integration.js +152 -0
  179. package/dist/core/routing/app-integration.js.map +1 -0
  180. package/dist/core/routing/index.d.ts +106 -0
  181. package/dist/core/routing/index.js +343 -0
  182. package/dist/core/routing/index.js.map +1 -0
  183. package/dist/core/runtime/aws-lambda-adapter.d.ts +43 -0
  184. package/dist/core/runtime/aws-lambda-adapter.js +108 -0
  185. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -0
  186. package/dist/core/runtime/base-adapter.d.ts +16 -0
  187. package/dist/core/runtime/base-adapter.js +105 -0
  188. package/dist/core/runtime/base-adapter.js.map +1 -0
  189. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +18 -0
  190. package/dist/core/runtime/cloudflare-workers-adapter.js +131 -0
  191. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -0
  192. package/dist/core/runtime/index.d.ts +14 -0
  193. package/dist/core/runtime/index.js +56 -0
  194. package/dist/core/runtime/index.js.map +1 -0
  195. package/dist/core/runtime/node-adapter.d.ts +15 -0
  196. package/dist/core/runtime/node-adapter.js +204 -0
  197. package/dist/core/runtime/node-adapter.js.map +1 -0
  198. package/dist/core/runtime/vercel-edge-adapter.d.ts +10 -0
  199. package/dist/core/runtime/vercel-edge-adapter.js +106 -0
  200. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -0
  201. package/dist/core/utilities/circuit-breaker.d.ts +14 -0
  202. package/dist/core/utilities/circuit-breaker.js +42 -0
  203. package/dist/core/utilities/circuit-breaker.js.map +1 -0
  204. package/dist/core/utilities/container.d.ts +116 -0
  205. package/dist/core/utilities/container.js +529 -0
  206. package/dist/core/utilities/container.js.map +1 -0
  207. package/dist/core/utilities/hooks.d.ts +24 -0
  208. package/dist/core/utilities/hooks.js +131 -0
  209. package/dist/core/utilities/hooks.js.map +1 -0
  210. package/dist/core/utilities/index.d.ts +4 -0
  211. package/dist/core/utilities/index.js +22 -0
  212. package/dist/core/utilities/index.js.map +1 -0
  213. package/dist/core/validation/index.d.ts +30 -0
  214. package/dist/core/validation/index.js +144 -0
  215. package/dist/core/validation/index.js.map +1 -0
  216. package/dist/index.d.ts +30 -0
  217. package/dist/index.js +72 -0
  218. package/dist/index.js.map +1 -0
  219. package/dist/moro.d.ts +82 -0
  220. package/dist/moro.js +679 -0
  221. package/dist/moro.js.map +1 -0
  222. package/dist/types/cache.d.ts +34 -0
  223. package/dist/types/cache.js +3 -0
  224. package/dist/types/cache.js.map +1 -0
  225. package/dist/types/cdn.d.ts +19 -0
  226. package/dist/types/cdn.js +3 -0
  227. package/dist/types/cdn.js.map +1 -0
  228. package/dist/types/core.d.ts +13 -0
  229. package/dist/types/core.js +3 -0
  230. package/dist/types/core.js.map +1 -0
  231. package/dist/types/database.d.ts +29 -0
  232. package/dist/types/database.js +3 -0
  233. package/dist/types/database.js.map +1 -0
  234. package/dist/types/discovery.d.ts +6 -0
  235. package/dist/types/discovery.js +3 -0
  236. package/dist/types/discovery.js.map +1 -0
  237. package/dist/types/events.d.ts +116 -0
  238. package/dist/types/events.js +3 -0
  239. package/dist/types/events.js.map +1 -0
  240. package/dist/types/hooks.d.ts +38 -0
  241. package/dist/types/hooks.js +3 -0
  242. package/dist/types/hooks.js.map +1 -0
  243. package/dist/types/http.d.ts +51 -0
  244. package/dist/types/http.js +3 -0
  245. package/dist/types/http.js.map +1 -0
  246. package/dist/types/logger.d.ts +77 -0
  247. package/dist/types/logger.js +3 -0
  248. package/dist/types/logger.js.map +1 -0
  249. package/dist/types/module.d.ts +91 -0
  250. package/dist/types/module.js +3 -0
  251. package/dist/types/module.js.map +1 -0
  252. package/dist/types/runtime.d.ts +48 -0
  253. package/dist/types/runtime.js +3 -0
  254. package/dist/types/runtime.js.map +1 -0
  255. package/dist/types/session.d.ts +66 -0
  256. package/dist/types/session.js +3 -0
  257. package/dist/types/session.js.map +1 -0
  258. package/package.json +176 -0
  259. package/src/core/config/index.ts +47 -0
  260. package/src/core/config/loader.ts +366 -0
  261. package/src/core/config/schema.ts +346 -0
  262. package/src/core/config/utils.ts +220 -0
  263. package/src/core/database/README.md +228 -0
  264. package/src/core/database/adapters/drizzle.ts +425 -0
  265. package/src/core/database/adapters/index.ts +45 -0
  266. package/src/core/database/adapters/mongodb.ts +292 -0
  267. package/src/core/database/adapters/mysql.ts +217 -0
  268. package/src/core/database/adapters/postgresql.ts +211 -0
  269. package/src/core/database/adapters/redis.ts +331 -0
  270. package/src/core/database/adapters/sqlite.ts +255 -0
  271. package/src/core/database/index.ts +3 -0
  272. package/src/core/docs/index.ts +245 -0
  273. package/src/core/docs/openapi-generator.ts +588 -0
  274. package/src/core/docs/simple-docs.ts +305 -0
  275. package/src/core/docs/swagger-ui.ts +370 -0
  276. package/src/core/docs/zod-to-openapi.ts +532 -0
  277. package/src/core/events/event-bus.ts +249 -0
  278. package/src/core/events/index.ts +12 -0
  279. package/src/core/framework.ts +621 -0
  280. package/src/core/http/http-server.ts +1421 -0
  281. package/src/core/http/index.ts +11 -0
  282. package/src/core/http/router.ts +153 -0
  283. package/src/core/logger/filters.ts +148 -0
  284. package/src/core/logger/index.ts +20 -0
  285. package/src/core/logger/logger.ts +434 -0
  286. package/src/core/logger/outputs.ts +136 -0
  287. package/src/core/middleware/built-in/adapters/cache/file.ts +106 -0
  288. package/src/core/middleware/built-in/adapters/cache/index.ts +26 -0
  289. package/src/core/middleware/built-in/adapters/cache/memory.ts +73 -0
  290. package/src/core/middleware/built-in/adapters/cache/redis.ts +103 -0
  291. package/src/core/middleware/built-in/adapters/cdn/azure.ts +68 -0
  292. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +100 -0
  293. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +92 -0
  294. package/src/core/middleware/built-in/adapters/cdn/index.ts +23 -0
  295. package/src/core/middleware/built-in/adapters/index.ts +7 -0
  296. package/src/core/middleware/built-in/auth.ts +39 -0
  297. package/src/core/middleware/built-in/cache.ts +228 -0
  298. package/src/core/middleware/built-in/cdn.ts +151 -0
  299. package/src/core/middleware/built-in/cookie.ts +90 -0
  300. package/src/core/middleware/built-in/cors.ts +38 -0
  301. package/src/core/middleware/built-in/csp.ts +107 -0
  302. package/src/core/middleware/built-in/csrf.ts +87 -0
  303. package/src/core/middleware/built-in/error-tracker.ts +16 -0
  304. package/src/core/middleware/built-in/index.ts +57 -0
  305. package/src/core/middleware/built-in/performance-monitor.ts +25 -0
  306. package/src/core/middleware/built-in/rate-limit.ts +60 -0
  307. package/src/core/middleware/built-in/request-logger.ts +14 -0
  308. package/src/core/middleware/built-in/session.ts +311 -0
  309. package/src/core/middleware/built-in/sse.ts +91 -0
  310. package/src/core/middleware/built-in/validation.ts +33 -0
  311. package/src/core/middleware/index.ts +188 -0
  312. package/src/core/modules/auto-discovery.ts +265 -0
  313. package/src/core/modules/index.ts +6 -0
  314. package/src/core/modules/modules.ts +125 -0
  315. package/src/core/networking/index.ts +7 -0
  316. package/src/core/networking/service-discovery.ts +309 -0
  317. package/src/core/networking/websocket-manager.ts +259 -0
  318. package/src/core/routing/app-integration.ts +229 -0
  319. package/src/core/routing/index.ts +519 -0
  320. package/src/core/runtime/aws-lambda-adapter.ts +157 -0
  321. package/src/core/runtime/base-adapter.ts +140 -0
  322. package/src/core/runtime/cloudflare-workers-adapter.ts +166 -0
  323. package/src/core/runtime/index.ts +74 -0
  324. package/src/core/runtime/node-adapter.ts +210 -0
  325. package/src/core/runtime/vercel-edge-adapter.ts +125 -0
  326. package/src/core/utilities/circuit-breaker.ts +46 -0
  327. package/src/core/utilities/container.ts +760 -0
  328. package/src/core/utilities/hooks.ts +148 -0
  329. package/src/core/utilities/index.ts +16 -0
  330. package/src/core/validation/index.ts +216 -0
  331. package/src/index.ts +120 -0
  332. package/src/moro.ts +842 -0
  333. package/src/types/cache.ts +38 -0
  334. package/src/types/cdn.ts +22 -0
  335. package/src/types/core.ts +17 -0
  336. package/src/types/database.ts +40 -0
  337. package/src/types/discovery.ts +7 -0
  338. package/src/types/events.ts +90 -0
  339. package/src/types/hooks.ts +47 -0
  340. package/src/types/http.ts +70 -0
  341. package/src/types/logger.ts +109 -0
  342. package/src/types/module.ts +87 -0
  343. package/src/types/runtime.ts +91 -0
  344. package/src/types/session.ts +89 -0
  345. package/tsconfig.json +21 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../../src/core/http/http-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { MoroHttpServer, middleware } from "./http-server";
2
+ export { Router } from "./router";
3
+ export type { HttpRequest, HttpResponse, HttpHandler, Middleware, } from "../../types/http";
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Router = exports.middleware = exports.MoroHttpServer = void 0;
4
+ // HTTP System - Centralized Exports
5
+ var http_server_1 = require("./http-server");
6
+ Object.defineProperty(exports, "MoroHttpServer", { enumerable: true, get: function () { return http_server_1.MoroHttpServer; } });
7
+ Object.defineProperty(exports, "middleware", { enumerable: true, get: function () { return http_server_1.middleware; } });
8
+ var router_1 = require("./router");
9
+ Object.defineProperty(exports, "Router", { enumerable: true, get: function () { return router_1.Router; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/http/index.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,6CAA2D;AAAlD,6GAAA,cAAc,OAAA;AAAE,yGAAA,UAAU,OAAA;AACnC,mCAAkC;AAAzB,gGAAA,MAAM,OAAA"}
@@ -0,0 +1,14 @@
1
+ import { HttpRequest, HttpResponse, HttpHandler, Middleware, RouteDefinition } from "../../types/http";
2
+ export declare class Router {
3
+ private routes;
4
+ private logger;
5
+ get(path: string, ...handlers: (Middleware | HttpHandler)[]): void;
6
+ post(path: string, ...handlers: (Middleware | HttpHandler)[]): void;
7
+ put(path: string, ...handlers: (Middleware | HttpHandler)[]): void;
8
+ delete(path: string, ...handlers: (Middleware | HttpHandler)[]): void;
9
+ patch(path: string, ...handlers: (Middleware | HttpHandler)[]): void;
10
+ private addRoute;
11
+ private pathToRegex;
12
+ handle(req: HttpRequest, res: HttpResponse, basePath?: string): Promise<boolean>;
13
+ getRoutes(): RouteDefinition[];
14
+ }
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Router = void 0;
4
+ const logger_1 = require("../logger");
5
+ class Router {
6
+ constructor() {
7
+ this.routes = [];
8
+ this.logger = (0, logger_1.createFrameworkLogger)("Router");
9
+ }
10
+ get(path, ...handlers) {
11
+ this.addRoute("GET", path, handlers);
12
+ }
13
+ post(path, ...handlers) {
14
+ this.addRoute("POST", path, handlers);
15
+ }
16
+ put(path, ...handlers) {
17
+ this.addRoute("PUT", path, handlers);
18
+ }
19
+ delete(path, ...handlers) {
20
+ this.addRoute("DELETE", path, handlers);
21
+ }
22
+ patch(path, ...handlers) {
23
+ this.addRoute("PATCH", path, handlers);
24
+ }
25
+ addRoute(method, path, handlers) {
26
+ const { pattern, paramNames } = this.pathToRegex(path);
27
+ const handler = handlers.pop();
28
+ const middleware = handlers;
29
+ this.routes.push({
30
+ method,
31
+ path,
32
+ pattern,
33
+ paramNames,
34
+ handler,
35
+ middleware,
36
+ });
37
+ }
38
+ pathToRegex(path) {
39
+ const paramNames = [];
40
+ // Convert parameterized routes to regex
41
+ const regexPattern = path
42
+ .replace(/\/:([^/]+)/g, (match, paramName) => {
43
+ paramNames.push(paramName);
44
+ return "/([^/]+)";
45
+ })
46
+ .replace(/\//g, "\\/");
47
+ return {
48
+ pattern: new RegExp(`^${regexPattern}$`),
49
+ paramNames,
50
+ };
51
+ }
52
+ async handle(req, res, basePath = "") {
53
+ let path = req.path.startsWith(basePath)
54
+ ? req.path.substring(basePath.length)
55
+ : req.path;
56
+ // If removing basePath results in empty string, default to '/'
57
+ if (path === "" || path === undefined) {
58
+ path = "/";
59
+ }
60
+ this.logger.debug(`Router processing: originalPath="${req.path}", basePath="${basePath}", processedPath="${path}"`, "Processing");
61
+ const route = this.routes.find((r) => r.method === req.method && r.pattern.test(path));
62
+ this.logger.debug(`Found route: ${!!route}${route ? ` ${route.method} ${route.path}` : " none"}`, "RouteMatch");
63
+ if (!route) {
64
+ return false; // Route not found
65
+ }
66
+ // Extract path parameters
67
+ const matches = path.match(route.pattern);
68
+ if (matches) {
69
+ req.params = {};
70
+ route.paramNames.forEach((name, index) => {
71
+ req.params[name] = matches[index + 1];
72
+ });
73
+ }
74
+ // Execute middleware
75
+ for (const mw of route.middleware) {
76
+ await new Promise((resolve, reject) => {
77
+ let nextCalled = false;
78
+ const next = () => {
79
+ if (nextCalled)
80
+ return;
81
+ nextCalled = true;
82
+ resolve();
83
+ };
84
+ try {
85
+ const result = mw(req, res, next);
86
+ if (result instanceof Promise) {
87
+ result
88
+ .then(() => {
89
+ if (!nextCalled)
90
+ next();
91
+ })
92
+ .catch(reject);
93
+ }
94
+ }
95
+ catch (error) {
96
+ reject(error);
97
+ }
98
+ });
99
+ }
100
+ // Execute handler
101
+ const result = await route.handler(req, res);
102
+ // If handler returns data and response hasn't been sent, send it
103
+ if (result !== undefined && result !== null && !res.headersSent) {
104
+ res.json(result);
105
+ }
106
+ return true;
107
+ }
108
+ getRoutes() {
109
+ return [...this.routes];
110
+ }
111
+ }
112
+ exports.Router = Router;
113
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/core/http/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { LogFilter } from "../../types/logger";
2
+ export declare const levelFilter: (minLevel: string) => LogFilter;
3
+ export declare const contextFilter: (allowedContexts: string[]) => LogFilter;
4
+ export declare const rateLimitFilter: (maxPerSecond: number) => LogFilter;
5
+ export declare const sanitizeFilter: (sensitiveKeys?: string[]) => LogFilter;
6
+ export declare const performanceFilter: (minDuration: number) => LogFilter;
7
+ export declare const errorAggregationFilter: (maxSameErrors?: number, timeWindow?: number) => LogFilter;
8
+ export declare const environmentFilter: (environment: "development" | "production") => LogFilter;
9
+ export declare const moduleFilter: (allowedModules: string[]) => LogFilter;
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.moduleFilter = exports.environmentFilter = exports.errorAggregationFilter = exports.performanceFilter = exports.sanitizeFilter = exports.rateLimitFilter = exports.contextFilter = exports.levelFilter = void 0;
4
+ // Level-based filter
5
+ const levelFilter = (minLevel) => ({
6
+ name: `level-${minLevel}`,
7
+ filter: (entry) => {
8
+ const levels = { debug: 0, info: 1, warn: 2, error: 3, fatal: 4 };
9
+ return levels[entry.level] >= levels[minLevel];
10
+ },
11
+ });
12
+ exports.levelFilter = levelFilter;
13
+ // Context-based filter
14
+ const contextFilter = (allowedContexts) => ({
15
+ name: "context-filter",
16
+ filter: (entry) => {
17
+ if (!entry.context)
18
+ return true;
19
+ return allowedContexts.some((ctx) => entry.context.includes(ctx));
20
+ },
21
+ });
22
+ exports.contextFilter = contextFilter;
23
+ // Rate limiting filter
24
+ const rateLimitFilter = (maxPerSecond) => {
25
+ const timestamps = [];
26
+ return {
27
+ name: "rate-limit",
28
+ filter: (entry) => {
29
+ const now = Date.now();
30
+ const oneSecondAgo = now - 1000;
31
+ // Remove old timestamps
32
+ while (timestamps.length > 0 && timestamps[0] < oneSecondAgo) {
33
+ timestamps.shift();
34
+ }
35
+ // Check rate limit
36
+ if (timestamps.length >= maxPerSecond) {
37
+ return false;
38
+ }
39
+ timestamps.push(now);
40
+ return true;
41
+ },
42
+ };
43
+ };
44
+ exports.rateLimitFilter = rateLimitFilter;
45
+ // Sensitive data filter
46
+ const sanitizeFilter = (sensitiveKeys = ["password", "token", "key", "secret"]) => ({
47
+ name: "sanitize",
48
+ filter: (entry) => {
49
+ if (entry.metadata) {
50
+ const sanitized = { ...entry.metadata };
51
+ for (const key of sensitiveKeys) {
52
+ if (sanitized[key]) {
53
+ sanitized[key] = "[REDACTED]";
54
+ }
55
+ }
56
+ entry.metadata = sanitized;
57
+ }
58
+ // Also sanitize message content
59
+ let sanitizedMessage = entry.message;
60
+ for (const key of sensitiveKeys) {
61
+ const regex = new RegExp(`(${key}["\\s]*[:=]["\\s]*)([^"\\s]+)`, "gi");
62
+ sanitizedMessage = sanitizedMessage.replace(regex, "$1[REDACTED]");
63
+ }
64
+ entry.message = sanitizedMessage;
65
+ return true;
66
+ },
67
+ });
68
+ exports.sanitizeFilter = sanitizeFilter;
69
+ // Performance filter - only log slow operations
70
+ const performanceFilter = (minDuration) => ({
71
+ name: "performance",
72
+ filter: (entry) => {
73
+ if (!entry.performance?.duration)
74
+ return true;
75
+ return entry.performance.duration >= minDuration;
76
+ },
77
+ });
78
+ exports.performanceFilter = performanceFilter;
79
+ // Error aggregation filter - prevent spam
80
+ const errorAggregationFilter = (maxSameErrors = 5, timeWindow = 60000) => {
81
+ const errorCounts = new Map();
82
+ return {
83
+ name: "error-aggregation",
84
+ filter: (entry) => {
85
+ if (entry.level !== "error" && entry.level !== "fatal")
86
+ return true;
87
+ const errorKey = `${entry.message}:${entry.context || ""}`;
88
+ const now = Date.now();
89
+ const existing = errorCounts.get(errorKey);
90
+ if (!existing) {
91
+ errorCounts.set(errorKey, { count: 1, firstSeen: now });
92
+ return true;
93
+ }
94
+ // Reset if outside time window
95
+ if (now - existing.firstSeen > timeWindow) {
96
+ errorCounts.set(errorKey, { count: 1, firstSeen: now });
97
+ return true;
98
+ }
99
+ // Check if we've exceeded the limit
100
+ if (existing.count >= maxSameErrors) {
101
+ return false;
102
+ }
103
+ existing.count++;
104
+ return true;
105
+ },
106
+ };
107
+ };
108
+ exports.errorAggregationFilter = errorAggregationFilter;
109
+ // Development vs Production filter
110
+ const environmentFilter = (environment) => ({
111
+ name: `env-${environment}`,
112
+ filter: (entry) => {
113
+ if (environment === "production") {
114
+ // In production, filter out debug logs and sensitive development info
115
+ if (entry.level === "debug")
116
+ return false;
117
+ if (entry.context?.includes("dev") || entry.context?.includes("test"))
118
+ return false;
119
+ }
120
+ return true;
121
+ },
122
+ });
123
+ exports.environmentFilter = environmentFilter;
124
+ // Module-specific filter
125
+ const moduleFilter = (allowedModules) => ({
126
+ name: "module-filter",
127
+ filter: (entry) => {
128
+ if (!entry.moduleId)
129
+ return true;
130
+ return allowedModules.includes(entry.moduleId);
131
+ },
132
+ });
133
+ exports.moduleFilter = moduleFilter;
134
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/core/logger/filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { MoroLogger, logger, createFrameworkLogger, configureGlobalLogger, applyLoggingConfiguration, } from "./logger";
2
+ export * from "./filters";
3
+ export type { LogLevel, LogEntry, LoggerOptions, Logger, LogOutput, LogFilter, LogMetrics, ColorScheme, } from "../../types/logger";
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.applyLoggingConfiguration = exports.configureGlobalLogger = exports.createFrameworkLogger = exports.logger = exports.MoroLogger = void 0;
18
+ // Logger System - Main Exports
19
+ var logger_1 = require("./logger");
20
+ Object.defineProperty(exports, "MoroLogger", { enumerable: true, get: function () { return logger_1.MoroLogger; } });
21
+ Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
22
+ Object.defineProperty(exports, "createFrameworkLogger", { enumerable: true, get: function () { return logger_1.createFrameworkLogger; } });
23
+ Object.defineProperty(exports, "configureGlobalLogger", { enumerable: true, get: function () { return logger_1.configureGlobalLogger; } });
24
+ Object.defineProperty(exports, "applyLoggingConfiguration", { enumerable: true, get: function () { return logger_1.applyLoggingConfiguration; } });
25
+ __exportStar(require("./filters"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/logger/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+BAA+B;AAC/B,mCAMkB;AALhB,oGAAA,UAAU,OAAA;AACV,gGAAA,MAAM,OAAA;AACN,+GAAA,qBAAqB,OAAA;AACrB,+GAAA,qBAAqB,OAAA;AACrB,mHAAA,yBAAyB,OAAA;AAE3B,4CAA0B"}
@@ -0,0 +1,49 @@
1
+ import { LogLevel, LogEntry, LoggerOptions, Logger, LogOutput, LogFilter, LogMetrics } from "../../types/logger";
2
+ export declare class MoroLogger implements Logger {
3
+ private level;
4
+ private options;
5
+ private outputs;
6
+ private filters;
7
+ private history;
8
+ private timers;
9
+ private metrics;
10
+ private startTime;
11
+ private contextPrefix?;
12
+ private contextMetadata?;
13
+ private static readonly LEVELS;
14
+ private static readonly COLORS;
15
+ private static readonly RESET;
16
+ private static readonly BOLD;
17
+ constructor(options?: LoggerOptions);
18
+ debug(message: string, context?: string, metadata?: Record<string, any>): void;
19
+ info(message: string, context?: string, metadata?: Record<string, any>): void;
20
+ warn(message: string, context?: string, metadata?: Record<string, any>): void;
21
+ error(message: string | Error, context?: string, metadata?: Record<string, any>): void;
22
+ fatal(message: string | Error, context?: string, metadata?: Record<string, any>): void;
23
+ time(label: string): void;
24
+ timeEnd(label: string, context?: string, metadata?: Record<string, any>): void;
25
+ child(context: string, metadata?: Record<string, any>): Logger;
26
+ setLevel(level: LogLevel): void;
27
+ addOutput(output: LogOutput): void;
28
+ removeOutput(name: string): void;
29
+ addFilter(filter: LogFilter): void;
30
+ removeFilter(name: string): void;
31
+ getHistory(count?: number): LogEntry[];
32
+ getMetrics(): LogMetrics;
33
+ clear(): void;
34
+ private log;
35
+ private updateMetrics;
36
+ private writeToConsole;
37
+ private writePrettyLog;
38
+ }
39
+ export declare const logger: MoroLogger;
40
+ /**
41
+ * Configure the global logger with new settings
42
+ * This allows runtime configuration of the logger
43
+ */
44
+ export declare function configureGlobalLogger(options: Partial<LoggerOptions>): void;
45
+ /**
46
+ * Apply logging configuration from the config system and/or createApp options
47
+ */
48
+ export declare function applyLoggingConfiguration(configLogging?: any, appOptions?: Partial<LoggerOptions> | boolean): void;
49
+ export declare const createFrameworkLogger: (context: string) => Logger;