@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,24 @@
1
+ import { EventEmitter } from "events";
2
+ import { HookFunction, HookContext } from "../../types/hooks";
3
+ export declare const HOOK_EVENTS: {
4
+ readonly BEFORE_REQUEST: "before:request";
5
+ readonly AFTER_REQUEST: "after:request";
6
+ readonly BEFORE_RESPONSE: "before:response";
7
+ readonly AFTER_RESPONSE: "after:response";
8
+ readonly ERROR: "error";
9
+ };
10
+ export declare class HookManager extends EventEmitter {
11
+ private hooks;
12
+ private beforeHooks;
13
+ private afterHooks;
14
+ private logger;
15
+ constructor();
16
+ hook(event: string, fn: HookFunction): this;
17
+ before(event: string, fn: HookFunction): this;
18
+ after(event: string, fn: HookFunction): this;
19
+ execute(event: string, context?: HookContext): Promise<HookContext>;
20
+ private executeHook;
21
+ removeHook(event: string, fn?: HookFunction): this;
22
+ getHooks(event?: string): Record<string, any>;
23
+ }
24
+ export { simpleMiddleware as middleware } from "../middleware/index";
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.middleware = exports.HookManager = exports.HOOK_EVENTS = void 0;
4
+ // Hook System for Moro
5
+ const events_1 = require("events");
6
+ const logger_1 = require("../logger");
7
+ exports.HOOK_EVENTS = {
8
+ BEFORE_REQUEST: "before:request",
9
+ AFTER_REQUEST: "after:request",
10
+ BEFORE_RESPONSE: "before:response",
11
+ AFTER_RESPONSE: "after:response",
12
+ ERROR: "error",
13
+ };
14
+ class HookManager extends events_1.EventEmitter {
15
+ constructor() {
16
+ super();
17
+ this.hooks = new Map();
18
+ this.beforeHooks = new Map();
19
+ this.afterHooks = new Map();
20
+ this.logger = (0, logger_1.createFrameworkLogger)("Hooks");
21
+ // Initialize hook arrays
22
+ Object.values(exports.HOOK_EVENTS).forEach((event) => {
23
+ this.hooks.set(event, []);
24
+ this.beforeHooks.set(event, []);
25
+ this.afterHooks.set(event, []);
26
+ });
27
+ }
28
+ // Register a hook for a specific event
29
+ hook(event, fn) {
30
+ if (!this.hooks.has(event)) {
31
+ this.hooks.set(event, []);
32
+ }
33
+ this.hooks.get(event).push(fn);
34
+ return this;
35
+ }
36
+ // Register a before hook
37
+ before(event, fn) {
38
+ if (!this.beforeHooks.has(event)) {
39
+ this.beforeHooks.set(event, []);
40
+ }
41
+ this.beforeHooks.get(event).push(fn);
42
+ return this;
43
+ }
44
+ // Register an after hook
45
+ after(event, fn) {
46
+ if (!this.afterHooks.has(event)) {
47
+ this.afterHooks.set(event, []);
48
+ }
49
+ this.afterHooks.get(event).push(fn);
50
+ return this;
51
+ }
52
+ // Execute hooks for an event
53
+ async execute(event, context = {}) {
54
+ // Execute before hooks
55
+ const beforeHooks = this.beforeHooks.get(event) || [];
56
+ for (const hook of beforeHooks) {
57
+ await this.executeHook(hook, context);
58
+ }
59
+ // Execute main hooks
60
+ const hooks = this.hooks.get(event) || [];
61
+ for (const hook of hooks) {
62
+ await this.executeHook(hook, context);
63
+ }
64
+ // Execute after hooks
65
+ const afterHooks = this.afterHooks.get(event) || [];
66
+ for (const hook of afterHooks) {
67
+ await this.executeHook(hook, context);
68
+ }
69
+ // Emit event for listeners
70
+ this.emit(event, context);
71
+ return context;
72
+ }
73
+ // Execute a single hook with error handling
74
+ async executeHook(hook, context) {
75
+ try {
76
+ await hook(context);
77
+ }
78
+ catch (error) {
79
+ this.logger.error("Hook execution error", "HookExecution", {
80
+ error: error instanceof Error ? error.message : String(error),
81
+ context: context.request?.method || "unknown",
82
+ });
83
+ throw error;
84
+ }
85
+ }
86
+ // Remove hooks
87
+ removeHook(event, fn) {
88
+ if (!fn) {
89
+ this.hooks.delete(event);
90
+ this.beforeHooks.delete(event);
91
+ this.afterHooks.delete(event);
92
+ }
93
+ else {
94
+ [this.hooks, this.beforeHooks, this.afterHooks].forEach((map) => {
95
+ const hooks = map.get(event);
96
+ if (hooks) {
97
+ const index = hooks.indexOf(fn);
98
+ if (index !== -1) {
99
+ hooks.splice(index, 1);
100
+ }
101
+ }
102
+ });
103
+ }
104
+ return this;
105
+ }
106
+ // Get all registered hooks for debugging
107
+ getHooks(event) {
108
+ if (event) {
109
+ return {
110
+ before: this.beforeHooks.get(event) || [],
111
+ main: this.hooks.get(event) || [],
112
+ after: this.afterHooks.get(event) || [],
113
+ };
114
+ }
115
+ const allHooks = {};
116
+ const allEvents = new Set([
117
+ ...this.hooks.keys(),
118
+ ...this.beforeHooks.keys(),
119
+ ...this.afterHooks.keys(),
120
+ ]);
121
+ allEvents.forEach((event) => {
122
+ allHooks[event] = this.getHooks(event);
123
+ });
124
+ return allHooks;
125
+ }
126
+ }
127
+ exports.HookManager = HookManager;
128
+ // Built-in middleware - now organized in individual files
129
+ var index_1 = require("../middleware/index");
130
+ Object.defineProperty(exports, "middleware", { enumerable: true, get: function () { return index_1.simpleMiddleware; } });
131
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/core/utilities/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { Container, FunctionalContainer, ServiceScope, ServiceLifecycle, withLogging, withCaching, withRetry, withTimeout, } from "./container";
2
+ export { CircuitBreaker } from "./circuit-breaker";
3
+ export { HookManager, HOOK_EVENTS } from "./hooks";
4
+ export { middleware } from "./hooks";
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.middleware = exports.HOOK_EVENTS = exports.HookManager = exports.CircuitBreaker = exports.withTimeout = exports.withRetry = exports.withCaching = exports.withLogging = exports.ServiceLifecycle = exports.ServiceScope = exports.FunctionalContainer = exports.Container = void 0;
4
+ // Core Utilities - Centralized Exports
5
+ var container_1 = require("./container");
6
+ Object.defineProperty(exports, "Container", { enumerable: true, get: function () { return container_1.Container; } });
7
+ Object.defineProperty(exports, "FunctionalContainer", { enumerable: true, get: function () { return container_1.FunctionalContainer; } });
8
+ Object.defineProperty(exports, "ServiceScope", { enumerable: true, get: function () { return container_1.ServiceScope; } });
9
+ Object.defineProperty(exports, "ServiceLifecycle", { enumerable: true, get: function () { return container_1.ServiceLifecycle; } });
10
+ Object.defineProperty(exports, "withLogging", { enumerable: true, get: function () { return container_1.withLogging; } });
11
+ Object.defineProperty(exports, "withCaching", { enumerable: true, get: function () { return container_1.withCaching; } });
12
+ Object.defineProperty(exports, "withRetry", { enumerable: true, get: function () { return container_1.withRetry; } });
13
+ Object.defineProperty(exports, "withTimeout", { enumerable: true, get: function () { return container_1.withTimeout; } });
14
+ var circuit_breaker_1 = require("./circuit-breaker");
15
+ Object.defineProperty(exports, "CircuitBreaker", { enumerable: true, get: function () { return circuit_breaker_1.CircuitBreaker; } });
16
+ var hooks_1 = require("./hooks");
17
+ Object.defineProperty(exports, "HookManager", { enumerable: true, get: function () { return hooks_1.HookManager; } });
18
+ Object.defineProperty(exports, "HOOK_EVENTS", { enumerable: true, get: function () { return hooks_1.HOOK_EVENTS; } });
19
+ // Re-export middleware from hooks
20
+ var hooks_2 = require("./hooks");
21
+ Object.defineProperty(exports, "middleware", { enumerable: true, get: function () { return hooks_2.middleware; } });
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/utilities/index.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AACvC,yCASqB;AARnB,sGAAA,SAAS,OAAA;AACT,gHAAA,mBAAmB,OAAA;AACnB,yGAAA,YAAY,OAAA;AACZ,6GAAA,gBAAgB,OAAA;AAChB,wGAAA,WAAW,OAAA;AACX,wGAAA,WAAW,OAAA;AACX,sGAAA,SAAS,OAAA;AACT,wGAAA,WAAW,OAAA;AAEb,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,iCAAmD;AAA1C,oGAAA,WAAW,OAAA;AAAE,oGAAA,WAAW,OAAA;AAEjC,kCAAkC;AAClC,iCAAqC;AAA5B,mGAAA,UAAU,OAAA"}
@@ -0,0 +1,30 @@
1
+ import { ZodSchema } from "zod";
2
+ import { HttpRequest, HttpResponse } from "../http";
3
+ export interface ValidationConfig {
4
+ body?: ZodSchema;
5
+ query?: ZodSchema;
6
+ params?: ZodSchema;
7
+ headers?: ZodSchema;
8
+ }
9
+ export interface ValidationResult<T = any> {
10
+ success: boolean;
11
+ data?: T;
12
+ errors?: ValidationError[];
13
+ }
14
+ export interface ValidationError {
15
+ field: string;
16
+ message: string;
17
+ code: string;
18
+ }
19
+ export interface ValidatedRequest<T = any> extends HttpRequest {
20
+ validatedBody?: T;
21
+ validatedQuery?: any;
22
+ validatedParams?: any;
23
+ validatedHeaders?: any;
24
+ }
25
+ export declare function validate<TBody = any, TQuery = any, TParams = any>(config: ValidationConfig, handler: (req: ValidatedRequest<TBody>, res: HttpResponse) => any | Promise<any>): (req: HttpRequest, res: HttpResponse) => Promise<any>;
26
+ export declare function body<T>(schema: ZodSchema<T>): (handler: (req: ValidatedRequest<T>, res: HttpResponse) => any | Promise<any>) => (req: HttpRequest, res: HttpResponse) => Promise<any>;
27
+ export declare function query<T>(schema: ZodSchema<T>): (handler: (req: ValidatedRequest<any>, res: HttpResponse) => any | Promise<any>) => (req: HttpRequest, res: HttpResponse) => Promise<any>;
28
+ export declare function params<T>(schema: ZodSchema<T>): (handler: (req: ValidatedRequest<any>, res: HttpResponse) => any | Promise<any>) => (req: HttpRequest, res: HttpResponse) => Promise<any>;
29
+ export declare function combineSchemas(schemas: ValidationConfig): ValidationConfig;
30
+ export { z } from "zod";
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ // Functional Validation System for Moro Framework
3
+ // Elegant, type-safe validation using Zod with functional composition
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.z = void 0;
6
+ exports.validate = validate;
7
+ exports.body = body;
8
+ exports.query = query;
9
+ exports.params = params;
10
+ exports.combineSchemas = combineSchemas;
11
+ const zod_1 = require("zod");
12
+ const logger_1 = require("../logger");
13
+ const logger = (0, logger_1.createFrameworkLogger)("Validation");
14
+ // Main validation wrapper function
15
+ function validate(config, handler) {
16
+ return async (req, res) => {
17
+ try {
18
+ const validatedReq = req;
19
+ // Validate body
20
+ if (config.body) {
21
+ const result = await validateField(config.body, req.body, "body");
22
+ if (!result.success) {
23
+ return sendValidationError(res, result.errors, "body");
24
+ }
25
+ validatedReq.validatedBody = result.data;
26
+ validatedReq.body = result.data; // Also update original body for compatibility
27
+ }
28
+ // Validate query parameters
29
+ if (config.query) {
30
+ const result = await validateField(config.query, req.query, "query");
31
+ if (!result.success) {
32
+ return sendValidationError(res, result.errors, "query");
33
+ }
34
+ validatedReq.validatedQuery = result.data;
35
+ validatedReq.query = result.data; // Also update original query for compatibility
36
+ }
37
+ // Validate path parameters
38
+ if (config.params) {
39
+ const result = await validateField(config.params, req.params, "params");
40
+ if (!result.success) {
41
+ return sendValidationError(res, result.errors, "params");
42
+ }
43
+ validatedReq.validatedParams = result.data;
44
+ validatedReq.params = result.data; // Also update original params for compatibility
45
+ }
46
+ // Validate headers
47
+ if (config.headers) {
48
+ const result = await validateField(config.headers, req.headers, "headers");
49
+ if (!result.success) {
50
+ return sendValidationError(res, result.errors, "headers");
51
+ }
52
+ validatedReq.validatedHeaders = result.data;
53
+ }
54
+ logger.debug("Request validation passed", "ValidationSuccess", {
55
+ path: req.path,
56
+ method: req.method,
57
+ validatedFields: Object.keys(config),
58
+ });
59
+ // Execute the handler with validated request
60
+ return await handler(validatedReq, res);
61
+ }
62
+ catch (error) {
63
+ logger.error("Validation wrapper error", "ValidationError", {
64
+ error: error instanceof Error ? error.message : String(error),
65
+ path: req.path,
66
+ method: req.method,
67
+ });
68
+ if (!res.headersSent) {
69
+ res.status(500).json({
70
+ success: false,
71
+ error: "Internal validation error",
72
+ requestId: req.requestId,
73
+ });
74
+ }
75
+ }
76
+ };
77
+ }
78
+ // Validate individual field
79
+ async function validateField(schema, data, fieldName) {
80
+ try {
81
+ const validated = await schema.parseAsync(data);
82
+ return {
83
+ success: true,
84
+ data: validated,
85
+ };
86
+ }
87
+ catch (error) {
88
+ if (error instanceof zod_1.ZodError) {
89
+ const errors = error.issues.map((err) => ({
90
+ field: err.path.length > 0 ? err.path.join(".") : fieldName,
91
+ message: err.message,
92
+ code: err.code,
93
+ }));
94
+ logger.debug("Field validation failed", "ValidationFailed", {
95
+ field: fieldName,
96
+ errors: errors.length,
97
+ details: errors,
98
+ });
99
+ return {
100
+ success: false,
101
+ errors,
102
+ };
103
+ }
104
+ // Re-throw unexpected errors
105
+ throw error;
106
+ }
107
+ }
108
+ // Send validation error response
109
+ function sendValidationError(res, errors, field) {
110
+ logger.debug("Sending validation error response", "ValidationResponse", {
111
+ field,
112
+ errorCount: errors.length,
113
+ });
114
+ res.status(400).json({
115
+ success: false,
116
+ error: `Validation failed for ${field}`,
117
+ details: errors,
118
+ requestId: res.req?.requestId,
119
+ });
120
+ }
121
+ // Convenience functions for single-field validation
122
+ function body(schema) {
123
+ return (handler) => {
124
+ return validate({ body: schema }, handler);
125
+ };
126
+ }
127
+ function query(schema) {
128
+ return (handler) => {
129
+ return validate({ query: schema }, handler);
130
+ };
131
+ }
132
+ function params(schema) {
133
+ return (handler) => {
134
+ return validate({ params: schema }, handler);
135
+ };
136
+ }
137
+ // Schema composition helpers
138
+ function combineSchemas(schemas) {
139
+ return schemas;
140
+ }
141
+ // Re-export Zod for convenience
142
+ var zod_2 = require("zod");
143
+ Object.defineProperty(exports, "z", { enumerable: true, get: function () { return zod_2.z; } });
144
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/validation/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export { Moro, createApp, createAppNode, createAppEdge, createAppLambda, createAppWorker, } from "./moro";
2
+ export type { MoroOptions } from "./core/framework";
3
+ export type { RuntimeType, RuntimeAdapter, RuntimeConfig, RuntimeHttpResponse, } from "./types/runtime";
4
+ export { NodeRuntimeAdapter, VercelEdgeAdapter, AWSLambdaAdapter, CloudflareWorkersAdapter, createRuntimeAdapter, createNodeHandler, createEdgeHandler, createLambdaHandler, createWorkerHandler, } from "./core/runtime";
5
+ export type { LambdaEvent, LambdaContext, LambdaResponse, } from "./core/runtime/aws-lambda-adapter";
6
+ export type { WorkersEnv, WorkersContext, } from "./core/runtime/cloudflare-workers-adapter";
7
+ export { MoroHttpServer, middleware as httpMiddleware } from "./core/http";
8
+ export { builtInMiddleware, simpleMiddleware, } from "./core/middleware/built-in";
9
+ export { WebSocketManager } from "./core/networking";
10
+ export { Container } from "./core/utilities";
11
+ export { createFrameworkLogger, logger } from "./core/logger";
12
+ export { validate, body, query, params, combineSchemas, z, } from "./core/validation";
13
+ export type { ValidationConfig, ValidationResult, ValidationError, ValidatedRequest, } from "./core/validation";
14
+ export { defineModule } from "./core/modules";
15
+ export type { ModuleDefinition, ModuleRoute, ModuleSocket, ModuleConfig, } from "./types/module";
16
+ export { createRoute, defineRoute, EXECUTION_PHASES } from "./core/routing";
17
+ export { IntelligentRoutingManager, RouteRegistry, } from "./core/routing/app-integration";
18
+ export type { RouteBuilder, RouteSchema, CompiledRoute, HttpMethod, AuthConfig, RateLimitConfig, CacheConfig, MiddlewarePhases, ExecutionPhase, } from "./core/routing";
19
+ export type * from "./types/core";
20
+ export type * from "./types/http";
21
+ export type * from "./types/hooks";
22
+ export type * from "./types/cache";
23
+ export type * from "./types/cdn";
24
+ export type * from "./types/database";
25
+ export * from "./core/middleware/built-in/adapters";
26
+ export * from "./core/database/adapters";
27
+ export type { CacheAdapter, CacheOptions, CacheStrategy } from "./types/cache";
28
+ export type { CDNAdapter, CDNOptions } from "./types/cdn";
29
+ export type { DatabaseAdapter, DatabaseTransaction, DatabaseConfig, } from "./types/database";
30
+ export type { CookieOptions } from "./types/http";
package/dist/index.js ADDED
@@ -0,0 +1,72 @@
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.RouteRegistry = exports.IntelligentRoutingManager = exports.EXECUTION_PHASES = exports.defineRoute = exports.createRoute = exports.defineModule = exports.z = exports.combineSchemas = exports.params = exports.query = exports.body = exports.validate = exports.logger = exports.createFrameworkLogger = exports.Container = exports.WebSocketManager = exports.simpleMiddleware = exports.builtInMiddleware = exports.httpMiddleware = exports.MoroHttpServer = exports.createWorkerHandler = exports.createLambdaHandler = exports.createEdgeHandler = exports.createNodeHandler = exports.createRuntimeAdapter = exports.CloudflareWorkersAdapter = exports.AWSLambdaAdapter = exports.VercelEdgeAdapter = exports.NodeRuntimeAdapter = exports.createAppWorker = exports.createAppLambda = exports.createAppEdge = exports.createAppNode = exports.createApp = exports.Moro = void 0;
18
+ // MoroJS Framework - Main Entry Point
19
+ var moro_1 = require("./moro");
20
+ Object.defineProperty(exports, "Moro", { enumerable: true, get: function () { return moro_1.Moro; } });
21
+ Object.defineProperty(exports, "createApp", { enumerable: true, get: function () { return moro_1.createApp; } });
22
+ Object.defineProperty(exports, "createAppNode", { enumerable: true, get: function () { return moro_1.createAppNode; } });
23
+ Object.defineProperty(exports, "createAppEdge", { enumerable: true, get: function () { return moro_1.createAppEdge; } });
24
+ Object.defineProperty(exports, "createAppLambda", { enumerable: true, get: function () { return moro_1.createAppLambda; } });
25
+ Object.defineProperty(exports, "createAppWorker", { enumerable: true, get: function () { return moro_1.createAppWorker; } });
26
+ var runtime_1 = require("./core/runtime");
27
+ Object.defineProperty(exports, "NodeRuntimeAdapter", { enumerable: true, get: function () { return runtime_1.NodeRuntimeAdapter; } });
28
+ Object.defineProperty(exports, "VercelEdgeAdapter", { enumerable: true, get: function () { return runtime_1.VercelEdgeAdapter; } });
29
+ Object.defineProperty(exports, "AWSLambdaAdapter", { enumerable: true, get: function () { return runtime_1.AWSLambdaAdapter; } });
30
+ Object.defineProperty(exports, "CloudflareWorkersAdapter", { enumerable: true, get: function () { return runtime_1.CloudflareWorkersAdapter; } });
31
+ Object.defineProperty(exports, "createRuntimeAdapter", { enumerable: true, get: function () { return runtime_1.createRuntimeAdapter; } });
32
+ Object.defineProperty(exports, "createNodeHandler", { enumerable: true, get: function () { return runtime_1.createNodeHandler; } });
33
+ Object.defineProperty(exports, "createEdgeHandler", { enumerable: true, get: function () { return runtime_1.createEdgeHandler; } });
34
+ Object.defineProperty(exports, "createLambdaHandler", { enumerable: true, get: function () { return runtime_1.createLambdaHandler; } });
35
+ Object.defineProperty(exports, "createWorkerHandler", { enumerable: true, get: function () { return runtime_1.createWorkerHandler; } });
36
+ // Core exports
37
+ var http_1 = require("./core/http");
38
+ Object.defineProperty(exports, "MoroHttpServer", { enumerable: true, get: function () { return http_1.MoroHttpServer; } });
39
+ Object.defineProperty(exports, "httpMiddleware", { enumerable: true, get: function () { return http_1.middleware; } });
40
+ var built_in_1 = require("./core/middleware/built-in");
41
+ Object.defineProperty(exports, "builtInMiddleware", { enumerable: true, get: function () { return built_in_1.builtInMiddleware; } });
42
+ Object.defineProperty(exports, "simpleMiddleware", { enumerable: true, get: function () { return built_in_1.simpleMiddleware; } });
43
+ var networking_1 = require("./core/networking");
44
+ Object.defineProperty(exports, "WebSocketManager", { enumerable: true, get: function () { return networking_1.WebSocketManager; } });
45
+ var utilities_1 = require("./core/utilities");
46
+ Object.defineProperty(exports, "Container", { enumerable: true, get: function () { return utilities_1.Container; } });
47
+ var logger_1 = require("./core/logger");
48
+ Object.defineProperty(exports, "createFrameworkLogger", { enumerable: true, get: function () { return logger_1.createFrameworkLogger; } });
49
+ Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
50
+ // Validation System (Zod-based)
51
+ var validation_1 = require("./core/validation");
52
+ Object.defineProperty(exports, "validate", { enumerable: true, get: function () { return validation_1.validate; } });
53
+ Object.defineProperty(exports, "body", { enumerable: true, get: function () { return validation_1.body; } });
54
+ Object.defineProperty(exports, "query", { enumerable: true, get: function () { return validation_1.query; } });
55
+ Object.defineProperty(exports, "params", { enumerable: true, get: function () { return validation_1.params; } });
56
+ Object.defineProperty(exports, "combineSchemas", { enumerable: true, get: function () { return validation_1.combineSchemas; } });
57
+ Object.defineProperty(exports, "z", { enumerable: true, get: function () { return validation_1.z; } });
58
+ // Module System
59
+ var modules_1 = require("./core/modules");
60
+ Object.defineProperty(exports, "defineModule", { enumerable: true, get: function () { return modules_1.defineModule; } });
61
+ // Intelligent Routing System
62
+ var routing_1 = require("./core/routing");
63
+ Object.defineProperty(exports, "createRoute", { enumerable: true, get: function () { return routing_1.createRoute; } });
64
+ Object.defineProperty(exports, "defineRoute", { enumerable: true, get: function () { return routing_1.defineRoute; } });
65
+ Object.defineProperty(exports, "EXECUTION_PHASES", { enumerable: true, get: function () { return routing_1.EXECUTION_PHASES; } });
66
+ var app_integration_1 = require("./core/routing/app-integration");
67
+ Object.defineProperty(exports, "IntelligentRoutingManager", { enumerable: true, get: function () { return app_integration_1.IntelligentRoutingManager; } });
68
+ Object.defineProperty(exports, "RouteRegistry", { enumerable: true, get: function () { return app_integration_1.RouteRegistry; } });
69
+ // Adapters
70
+ __exportStar(require("./core/middleware/built-in/adapters"), exports);
71
+ __exportStar(require("./core/database/adapters"), exports);
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,sCAAsC;AACtC,+BAOgB;AANd,4FAAA,IAAI,OAAA;AACJ,iGAAA,SAAS,OAAA;AACT,qGAAA,aAAa,OAAA;AACb,qGAAA,aAAa,OAAA;AACb,uGAAA,eAAe,OAAA;AACf,uGAAA,eAAe,OAAA;AAajB,0CAUwB;AATtB,6GAAA,kBAAkB,OAAA;AAClB,4GAAA,iBAAiB,OAAA;AACjB,2GAAA,gBAAgB,OAAA;AAChB,mHAAA,wBAAwB,OAAA;AACxB,+GAAA,oBAAoB,OAAA;AACpB,4GAAA,iBAAiB,OAAA;AACjB,4GAAA,iBAAiB,OAAA;AACjB,8GAAA,mBAAmB,OAAA;AACnB,8GAAA,mBAAmB,OAAA;AAcrB,eAAe;AACf,oCAA2E;AAAlE,sGAAA,cAAc,OAAA;AAAE,sGAAA,UAAU,OAAkB;AACrD,uDAGoC;AAFlC,6GAAA,iBAAiB,OAAA;AACjB,4GAAA,gBAAgB,OAAA;AAElB,gDAAqD;AAA5C,8GAAA,gBAAgB,OAAA;AACzB,8CAA6C;AAApC,sGAAA,SAAS,OAAA;AAClB,wCAA8D;AAArD,+GAAA,qBAAqB,OAAA;AAAE,gGAAA,MAAM,OAAA;AAEtC,gCAAgC;AAChC,gDAO2B;AANzB,sGAAA,QAAQ,OAAA;AACR,kGAAA,IAAI,OAAA;AACJ,mGAAA,KAAK,OAAA;AACL,oGAAA,MAAM,OAAA;AACN,4GAAA,cAAc,OAAA;AACd,+FAAA,CAAC,OAAA;AASH,gBAAgB;AAChB,0CAA8C;AAArC,uGAAA,YAAY,OAAA;AAQrB,6BAA6B;AAC7B,0CAA4E;AAAnE,sGAAA,WAAW,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AACnD,kEAGwC;AAFtC,4HAAA,yBAAyB,OAAA;AACzB,gHAAA,aAAa,OAAA;AAyBf,WAAW;AACX,sEAAoD;AACpD,2DAAyC"}
package/dist/moro.d.ts ADDED
@@ -0,0 +1,82 @@
1
+ import { Moro as MoroCore } from "./core/framework";
2
+ import { HttpRequest, HttpResponse } from "./core/http";
3
+ import { ModuleConfig } from "./types/module";
4
+ import { MoroOptions } from "./types/core";
5
+ import { MoroEventBus } from "./core/events";
6
+ import { RouteBuilder, RouteSchema, CompiledRoute } from "./core/routing";
7
+ import { DocsConfig } from "./core/docs";
8
+ import { EventEmitter } from "events";
9
+ import { type AppConfig } from "./core/config";
10
+ import { RuntimeAdapter, RuntimeType } from "./core/runtime";
11
+ export declare class Moro extends EventEmitter {
12
+ private coreFramework;
13
+ private routes;
14
+ private moduleCounter;
15
+ private loadedModules;
16
+ private routeHandlers;
17
+ private eventBus;
18
+ private logger;
19
+ private intelligentRouting;
20
+ private documentation;
21
+ private config;
22
+ private runtimeAdapter;
23
+ private runtimeType;
24
+ constructor(options?: MoroOptions);
25
+ /**
26
+ * Get configuration object
27
+ */
28
+ getConfig(): AppConfig;
29
+ /**
30
+ * Get runtime adapter
31
+ */
32
+ getRuntime(): RuntimeAdapter;
33
+ /**
34
+ * Get runtime type
35
+ */
36
+ getRuntimeType(): RuntimeType;
37
+ /**
38
+ * Extract default options from configuration
39
+ */
40
+ private getDefaultOptionsFromConfig;
41
+ get(path: string): RouteBuilder;
42
+ get(path: string, handler: (req: HttpRequest, res: HttpResponse) => any, options?: any): this;
43
+ post(path: string): RouteBuilder;
44
+ post(path: string, handler: (req: HttpRequest, res: HttpResponse) => any, options?: any): this;
45
+ put(path: string): RouteBuilder;
46
+ put(path: string, handler: (req: HttpRequest, res: HttpResponse) => any, options?: any): this;
47
+ delete(path: string): RouteBuilder;
48
+ delete(path: string, handler: (req: HttpRequest, res: HttpResponse) => any, options?: any): this;
49
+ patch(path: string): RouteBuilder;
50
+ patch(path: string, handler: (req: HttpRequest, res: HttpResponse) => any, options?: any): this;
51
+ route(schema: RouteSchema): CompiledRoute;
52
+ enableDocs(config: DocsConfig): void;
53
+ getOpenAPISpec(): import("./core/docs").OpenAPISpec;
54
+ getDocsJSON(): string;
55
+ getDocsYAML(): string;
56
+ refreshDocs(): void;
57
+ use(middlewareOrFunction: any, config?: any): Promise<this>;
58
+ plugin(middleware: any, options?: any): Promise<this>;
59
+ loadModule(moduleOrPath: ModuleConfig | string): Promise<this>;
60
+ database(adapter: any): this;
61
+ websocket(namespace: string, handlers: Record<string, Function>): this;
62
+ listen(port: number, callback?: () => void): void;
63
+ listen(port: number, host: string, callback?: () => void): void;
64
+ getHandler(): any;
65
+ private handleDirectRoutes;
66
+ private findMatchingRoute;
67
+ private pathToRegex;
68
+ get events(): MoroEventBus;
69
+ get core(): MoroCore;
70
+ private addRoute;
71
+ private registerDirectRoutes;
72
+ private rateLimitStore;
73
+ private checkRateLimit;
74
+ private setupDefaultMiddleware;
75
+ private autoDiscoverModules;
76
+ private importModule;
77
+ }
78
+ export declare function createApp(options?: MoroOptions): Moro;
79
+ export declare function createAppNode(options?: Omit<MoroOptions, "runtime">): Moro;
80
+ export declare function createAppEdge(options?: Omit<MoroOptions, "runtime">): Moro;
81
+ export declare function createAppLambda(options?: Omit<MoroOptions, "runtime">): Moro;
82
+ export declare function createAppWorker(options?: Omit<MoroOptions, "runtime">): Moro;