@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,413 @@
1
+ "use strict";
2
+ // OpenAPI Specification Generator for Moro Framework
3
+ // Extracts route information from intelligent routing and generates OpenAPI 3.0 specs
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.defaultSecuritySchemes = exports.OpenAPIGenerator = void 0;
6
+ exports.generateOpenAPIFromRoutes = generateOpenAPIFromRoutes;
7
+ const zod_to_openapi_1 = require("./zod-to-openapi");
8
+ const logger_1 = require("../logger");
9
+ const logger = (0, logger_1.createFrameworkLogger)("OpenAPIGenerator");
10
+ // OpenAPI generator class
11
+ class OpenAPIGenerator {
12
+ constructor(options) {
13
+ this.options = options;
14
+ this.routes = [];
15
+ this.schemas = new Map();
16
+ this.tags = new Set();
17
+ logger.debug("OpenAPI Generator initialized", "Initialization", {
18
+ includeExamples: options.includeExamples,
19
+ includeSchemas: options.includeSchemas,
20
+ });
21
+ }
22
+ // Add routes to the generator
23
+ addRoutes(routes) {
24
+ this.routes.push(...routes);
25
+ // Extract tags from routes
26
+ routes.forEach((route) => {
27
+ if (route.schema.tags) {
28
+ route.schema.tags.forEach((tag) => this.tags.add(tag));
29
+ }
30
+ });
31
+ logger.debug(`Added ${routes.length} routes to documentation`, "RouteAddition", {
32
+ totalRoutes: this.routes.length,
33
+ uniqueTags: this.tags.size,
34
+ });
35
+ }
36
+ // Generate complete OpenAPI specification
37
+ generate() {
38
+ logger.info("Generating OpenAPI specification", "Generation", {
39
+ routeCount: this.routes.length,
40
+ tagCount: this.tags.size,
41
+ });
42
+ const spec = {
43
+ openapi: "3.0.3",
44
+ info: this.options.info,
45
+ servers: this.options.servers || [
46
+ { url: "http://localhost:3000", description: "Development server" },
47
+ ],
48
+ paths: this.generatePaths(),
49
+ tags: this.generateTags(),
50
+ };
51
+ // Add components if schemas are included
52
+ if (this.options.includeSchemas && this.schemas.size > 0) {
53
+ spec.components = {
54
+ schemas: Object.fromEntries(this.schemas),
55
+ securitySchemes: this.options.securitySchemes,
56
+ };
57
+ }
58
+ logger.info("OpenAPI specification generated successfully", "Generation", {
59
+ pathCount: Object.keys(spec.paths).length,
60
+ schemaCount: this.schemas.size,
61
+ tagCount: spec.tags?.length || 0,
62
+ });
63
+ return spec;
64
+ }
65
+ // Generate paths from routes
66
+ generatePaths() {
67
+ const paths = {};
68
+ for (const route of this.routes) {
69
+ const path = this.convertPathToOpenAPI(route.schema.path);
70
+ const method = route.schema.method.toLowerCase();
71
+ if (!paths[path]) {
72
+ paths[path] = {};
73
+ }
74
+ paths[path][method] = this.generateOperation(route.schema);
75
+ }
76
+ return paths;
77
+ }
78
+ // Generate OpenAPI operation from route schema
79
+ generateOperation(route) {
80
+ const operation = {
81
+ summary: route.description || `${route.method} ${route.path}`,
82
+ description: route.description,
83
+ tags: route.tags,
84
+ responses: this.generateResponses(route),
85
+ };
86
+ // Add parameters (query and path)
87
+ const parameters = this.generateParameters(route);
88
+ if (parameters.length > 0) {
89
+ operation.parameters = parameters;
90
+ }
91
+ // Add request body (for POST, PUT, PATCH)
92
+ if (["POST", "PUT", "PATCH"].includes(route.method) &&
93
+ route.validation?.body) {
94
+ operation.requestBody = this.generateRequestBody(route);
95
+ }
96
+ // Add security if auth is required
97
+ if (route.auth) {
98
+ operation.security = this.generateSecurity(route);
99
+ }
100
+ return operation;
101
+ }
102
+ // Generate parameters from validation schemas
103
+ generateParameters(route) {
104
+ const parameters = [];
105
+ // Path parameters
106
+ if (route.validation?.params) {
107
+ const paramSchema = (0, zod_to_openapi_1.zodToOpenAPI)(route.validation.params, this.options);
108
+ if (paramSchema.properties) {
109
+ for (const [name, schema] of Object.entries(paramSchema.properties)) {
110
+ parameters.push({
111
+ name,
112
+ in: "path",
113
+ required: true,
114
+ schema,
115
+ description: schema.description,
116
+ example: this.options.includeExamples ? schema.example : undefined,
117
+ });
118
+ }
119
+ }
120
+ }
121
+ // Query parameters
122
+ if (route.validation?.query) {
123
+ const querySchema = (0, zod_to_openapi_1.zodToOpenAPI)(route.validation.query, this.options);
124
+ if (querySchema.properties) {
125
+ for (const [name, schema] of Object.entries(querySchema.properties)) {
126
+ const isRequired = querySchema.required?.includes(name) || false;
127
+ parameters.push({
128
+ name,
129
+ in: "query",
130
+ required: isRequired,
131
+ schema,
132
+ description: schema.description,
133
+ example: this.options.includeExamples ? schema.example : undefined,
134
+ });
135
+ }
136
+ }
137
+ }
138
+ // Header parameters
139
+ if (route.validation?.headers) {
140
+ const headerSchema = (0, zod_to_openapi_1.zodToOpenAPI)(route.validation.headers, this.options);
141
+ if (headerSchema.properties) {
142
+ for (const [name, schema] of Object.entries(headerSchema.properties)) {
143
+ const isRequired = headerSchema.required?.includes(name) || false;
144
+ parameters.push({
145
+ name,
146
+ in: "header",
147
+ required: isRequired,
148
+ schema,
149
+ description: schema.description,
150
+ example: this.options.includeExamples ? schema.example : undefined,
151
+ });
152
+ }
153
+ }
154
+ }
155
+ return parameters;
156
+ }
157
+ // Generate request body from validation schema
158
+ generateRequestBody(route) {
159
+ if (!route.validation?.body) {
160
+ return {
161
+ description: "Request body",
162
+ required: true,
163
+ content: {
164
+ "application/json": {
165
+ schema: { type: "object" },
166
+ },
167
+ },
168
+ };
169
+ }
170
+ const bodySchema = (0, zod_to_openapi_1.zodToOpenAPI)(route.validation.body, this.options);
171
+ const example = this.options.includeExamples
172
+ ? (0, zod_to_openapi_1.generateExampleFromSchema)(route.validation.body)
173
+ : undefined;
174
+ return {
175
+ description: "Request body",
176
+ required: true,
177
+ content: {
178
+ "application/json": {
179
+ schema: bodySchema,
180
+ example,
181
+ },
182
+ },
183
+ };
184
+ }
185
+ // Generate responses
186
+ generateResponses(route) {
187
+ const responses = {};
188
+ // Success response
189
+ responses["200"] = {
190
+ description: "Successful response",
191
+ content: {
192
+ "application/json": {
193
+ schema: {
194
+ type: "object",
195
+ properties: {
196
+ success: { type: "boolean", example: true },
197
+ data: { type: "object", description: "Response data" },
198
+ message: { type: "string", example: "Operation successful" },
199
+ },
200
+ },
201
+ },
202
+ },
203
+ };
204
+ // Add 201 for POST requests
205
+ if (route.method === "POST") {
206
+ responses["201"] = {
207
+ description: "Resource created successfully",
208
+ content: {
209
+ "application/json": {
210
+ schema: {
211
+ type: "object",
212
+ properties: {
213
+ success: { type: "boolean", example: true },
214
+ data: { type: "object", description: "Created resource" },
215
+ message: {
216
+ type: "string",
217
+ example: "Resource created successfully",
218
+ },
219
+ },
220
+ },
221
+ },
222
+ },
223
+ };
224
+ }
225
+ // Validation error response
226
+ if (route.validation) {
227
+ responses["400"] = {
228
+ description: "Validation error",
229
+ content: {
230
+ "application/json": {
231
+ schema: {
232
+ type: "object",
233
+ properties: {
234
+ success: { type: "boolean", example: false },
235
+ error: { type: "string", example: "Validation failed" },
236
+ details: {
237
+ type: "array",
238
+ items: {
239
+ type: "object",
240
+ properties: {
241
+ field: { type: "string", example: "email" },
242
+ message: {
243
+ type: "string",
244
+ example: "Invalid email address",
245
+ },
246
+ code: { type: "string", example: "invalid_format" },
247
+ },
248
+ },
249
+ },
250
+ requestId: { type: "string", example: "req_123456" },
251
+ },
252
+ },
253
+ },
254
+ },
255
+ };
256
+ }
257
+ // Auth error response
258
+ if (route.auth) {
259
+ responses["401"] = {
260
+ description: "Authentication required",
261
+ content: {
262
+ "application/json": {
263
+ schema: {
264
+ type: "object",
265
+ properties: {
266
+ success: { type: "boolean", example: false },
267
+ error: { type: "string", example: "Authentication required" },
268
+ requestId: { type: "string", example: "req_123456" },
269
+ },
270
+ },
271
+ },
272
+ },
273
+ };
274
+ responses["403"] = {
275
+ description: "Insufficient permissions",
276
+ content: {
277
+ "application/json": {
278
+ schema: {
279
+ type: "object",
280
+ properties: {
281
+ success: { type: "boolean", example: false },
282
+ error: { type: "string", example: "Insufficient permissions" },
283
+ requestId: { type: "string", example: "req_123456" },
284
+ },
285
+ },
286
+ },
287
+ },
288
+ };
289
+ }
290
+ // Rate limit error response
291
+ if (route.rateLimit) {
292
+ responses["429"] = {
293
+ description: "Rate limit exceeded",
294
+ content: {
295
+ "application/json": {
296
+ schema: {
297
+ type: "object",
298
+ properties: {
299
+ success: { type: "boolean", example: false },
300
+ error: { type: "string", example: "Rate limit exceeded" },
301
+ retryAfter: { type: "number", example: 60 },
302
+ requestId: { type: "string", example: "req_123456" },
303
+ },
304
+ },
305
+ },
306
+ },
307
+ };
308
+ }
309
+ // Server error response
310
+ responses["500"] = {
311
+ description: "Internal server error",
312
+ content: {
313
+ "application/json": {
314
+ schema: {
315
+ type: "object",
316
+ properties: {
317
+ success: { type: "boolean", example: false },
318
+ error: { type: "string", example: "Internal server error" },
319
+ requestId: { type: "string", example: "req_123456" },
320
+ },
321
+ },
322
+ },
323
+ },
324
+ };
325
+ return responses;
326
+ }
327
+ // Generate security requirements
328
+ generateSecurity(route) {
329
+ if (!route.auth)
330
+ return [];
331
+ const security = [];
332
+ // Default to bearer token if no specific scheme is defined
333
+ security.push({
334
+ bearerAuth: route.auth.roles || [],
335
+ });
336
+ return security;
337
+ }
338
+ // Generate tags
339
+ generateTags() {
340
+ return Array.from(this.tags).map((tag) => ({
341
+ name: tag,
342
+ description: `Operations related to ${tag}`,
343
+ }));
344
+ }
345
+ // Convert Moro path format to OpenAPI path format
346
+ convertPathToOpenAPI(path) {
347
+ // Convert :param to {param} format
348
+ return path.replace(/:([^/]+)/g, "{$1}");
349
+ }
350
+ // Generate JSON representation
351
+ generateJSON() {
352
+ return JSON.stringify(this.generate(), null, 2);
353
+ }
354
+ // Generate YAML representation (basic implementation)
355
+ generateYAML() {
356
+ const spec = this.generate();
357
+ return this.objectToYAML(spec, 0);
358
+ }
359
+ // Simple YAML converter (basic implementation)
360
+ objectToYAML(obj, indent = 0) {
361
+ const spaces = " ".repeat(indent);
362
+ let yaml = "";
363
+ for (const [key, value] of Object.entries(obj)) {
364
+ if (value === null || value === undefined)
365
+ continue;
366
+ yaml += `${spaces}${key}:`;
367
+ if (typeof value === "object" && !Array.isArray(value)) {
368
+ yaml += "\n" + this.objectToYAML(value, indent + 1);
369
+ }
370
+ else if (Array.isArray(value)) {
371
+ yaml += "\n";
372
+ for (const item of value) {
373
+ if (typeof item === "object") {
374
+ yaml += `${spaces} -\n` + this.objectToYAML(item, indent + 2);
375
+ }
376
+ else {
377
+ yaml += `${spaces} - ${item}\n`;
378
+ }
379
+ }
380
+ }
381
+ else if (typeof value === "string") {
382
+ yaml += ` "${value}"\n`;
383
+ }
384
+ else {
385
+ yaml += ` ${value}\n`;
386
+ }
387
+ }
388
+ return yaml;
389
+ }
390
+ }
391
+ exports.OpenAPIGenerator = OpenAPIGenerator;
392
+ // Convenience function to generate OpenAPI from routes
393
+ function generateOpenAPIFromRoutes(routes, options) {
394
+ const generator = new OpenAPIGenerator(options);
395
+ generator.addRoutes(routes);
396
+ return generator.generate();
397
+ }
398
+ // Default security schemes
399
+ exports.defaultSecuritySchemes = {
400
+ bearerAuth: {
401
+ type: "http",
402
+ scheme: "bearer",
403
+ bearerFormat: "JWT",
404
+ description: "Bearer token authentication",
405
+ },
406
+ apiKey: {
407
+ type: "apiKey",
408
+ in: "header",
409
+ name: "X-API-Key",
410
+ description: "API key authentication",
411
+ },
412
+ };
413
+ //# sourceMappingURL=openapi-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi-generator.js","sourceRoot":"","sources":["../../../src/core/docs/openapi-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { CompiledRoute } from "../routing";
2
+ export interface SimpleDocsOptions {
3
+ title?: string;
4
+ description?: string;
5
+ basePath?: string;
6
+ }
7
+ export declare class SimpleDocsGenerator {
8
+ private options;
9
+ private routes;
10
+ constructor(options?: SimpleDocsOptions);
11
+ addRoutes(routes: CompiledRoute[]): void;
12
+ generateHTML(): string;
13
+ private groupRoutesByTag;
14
+ private generateRouteDocumentation;
15
+ private generateRouteSection;
16
+ private generateValidationInfo;
17
+ private generateAuthInfo;
18
+ private generateRateLimitInfo;
19
+ private generateExamples;
20
+ }
21
+ export declare function createSimpleDocsMiddleware(routes: CompiledRoute[], options?: SimpleDocsOptions): (req: any, res: any, next: () => void) => void;