@ismael1361/router 1.2.91 → 2.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 (290) hide show
  1. package/README.md +956 -505
  2. package/dist/1.0/Doc/index.d.ts.map +1 -0
  3. package/dist/1.0/Doc/type.d.ts.map +1 -0
  4. package/dist/1.0/HandleError.d.ts.map +1 -0
  5. package/dist/1.0/Layer.d.ts.map +1 -0
  6. package/dist/1.0/Middlewares.d.ts.map +1 -0
  7. package/dist/1.0/handler.d.ts.map +1 -0
  8. package/dist/1.0/index.d.ts +150 -0
  9. package/dist/1.0/index.d.ts.map +1 -0
  10. package/dist/1.0/middleware.d.ts.map +1 -0
  11. package/dist/1.0/redocUi/index.d.ts.map +1 -0
  12. package/dist/1.0/router.d.ts.map +1 -0
  13. package/dist/1.0/swagger-markdown/index.d.ts.map +1 -0
  14. package/dist/1.0/swagger-markdown/lib/anchor.d.ts.map +1 -0
  15. package/dist/1.0/swagger-markdown/lib/inArray.d.ts.map +1 -0
  16. package/dist/1.0/swagger-markdown/models/schema.d.ts.map +1 -0
  17. package/dist/1.0/swagger-markdown/transformers/contact.d.ts.map +1 -0
  18. package/dist/1.0/swagger-markdown/transformers/dataTypes.d.ts.map +1 -0
  19. package/dist/1.0/swagger-markdown/transformers/definitions.d.ts.map +1 -0
  20. package/dist/1.0/swagger-markdown/transformers/externalDocs.d.ts.map +1 -0
  21. package/dist/1.0/swagger-markdown/transformers/info.d.ts.map +1 -0
  22. package/dist/1.0/swagger-markdown/transformers/license.d.ts.map +1 -0
  23. package/dist/1.0/swagger-markdown/transformers/path.d.ts.map +1 -0
  24. package/dist/1.0/swagger-markdown/transformers/pathParameters.d.ts.map +1 -0
  25. package/dist/1.0/swagger-markdown/transformers/pathResponses.d.ts.map +1 -0
  26. package/dist/1.0/swagger-markdown/transformers/security.d.ts.map +1 -0
  27. package/dist/1.0/swagger-markdown/transformers/securityDefinitions.d.ts.map +1 -0
  28. package/dist/{type.d.ts → 1.0/type.d.ts} +1 -1
  29. package/dist/1.0/type.d.ts.map +1 -0
  30. package/dist/1.0/utils.d.ts.map +1 -0
  31. package/dist/2.0/HandleError.d.ts +127 -0
  32. package/dist/2.0/HandleError.d.ts.map +1 -0
  33. package/dist/2.0/HandleError.esm.js.map +1 -0
  34. package/dist/2.0/HandleError.js.map +1 -0
  35. package/dist/2.0/Middlewares.d.ts +178 -0
  36. package/dist/2.0/Middlewares.d.ts.map +1 -0
  37. package/dist/{Middlewares.esm.js → 2.0/Middlewares.esm.js} +5 -5
  38. package/dist/2.0/Middlewares.esm.js.map +1 -0
  39. package/dist/{Middlewares.js → 2.0/Middlewares.js} +5 -5
  40. package/dist/2.0/Middlewares.js.map +1 -0
  41. package/dist/2.0/analyzeSwagger.d.ts +7 -0
  42. package/dist/2.0/analyzeSwagger.d.ts.map +1 -0
  43. package/dist/2.0/analyzeSwagger.esm.js +432 -0
  44. package/dist/2.0/analyzeSwagger.esm.js.map +1 -0
  45. package/dist/2.0/analyzeSwagger.js +435 -0
  46. package/dist/2.0/analyzeSwagger.js.map +1 -0
  47. package/dist/2.0/create.d.ts +75 -0
  48. package/dist/2.0/create.d.ts.map +1 -0
  49. package/dist/2.0/create.esm.js +321 -0
  50. package/dist/2.0/create.esm.js.map +1 -0
  51. package/dist/2.0/create.js +323 -0
  52. package/dist/2.0/create.js.map +1 -0
  53. package/dist/2.0/handler.d.ts +149 -0
  54. package/dist/2.0/handler.d.ts.map +1 -0
  55. package/dist/2.0/handler.esm.js +188 -0
  56. package/dist/2.0/handler.esm.js.map +1 -0
  57. package/dist/2.0/handler.js +191 -0
  58. package/dist/2.0/handler.js.map +1 -0
  59. package/dist/2.0/index.d.ts +7 -0
  60. package/dist/2.0/index.d.ts.map +1 -0
  61. package/dist/2.0/redocUi/index.d.ts +4 -0
  62. package/dist/2.0/redocUi/index.d.ts.map +1 -0
  63. package/dist/{redocUi → 2.0/redocUi}/index.esm.js +1 -1
  64. package/dist/2.0/redocUi/index.esm.js.map +1 -0
  65. package/dist/{redocUi → 2.0/redocUi}/index.js +1 -1
  66. package/dist/2.0/redocUi/index.js.map +1 -0
  67. package/dist/2.0/renderChainDocs.d.ts +3 -0
  68. package/dist/2.0/renderChainDocs.d.ts.map +1 -0
  69. package/dist/2.0/renderChainDocs.esm.js +118 -0
  70. package/dist/2.0/renderChainDocs.esm.js.map +1 -0
  71. package/dist/2.0/renderChainDocs.js +120 -0
  72. package/dist/2.0/renderChainDocs.js.map +1 -0
  73. package/dist/2.0/router.d.ts +73 -0
  74. package/dist/2.0/router.d.ts.map +1 -0
  75. package/dist/2.0/router.esm.js +302 -0
  76. package/dist/2.0/router.esm.js.map +1 -0
  77. package/dist/2.0/router.js +304 -0
  78. package/dist/2.0/router.js.map +1 -0
  79. package/dist/2.0/swagger-markdown/index.d.ts +10 -0
  80. package/dist/2.0/swagger-markdown/index.d.ts.map +1 -0
  81. package/dist/{swagger-markdown → 2.0/swagger-markdown}/index.esm.js +1 -1
  82. package/dist/2.0/swagger-markdown/index.esm.js.map +1 -0
  83. package/dist/{swagger-markdown → 2.0/swagger-markdown}/index.js +1 -1
  84. package/dist/2.0/swagger-markdown/index.js.map +1 -0
  85. package/dist/2.0/swagger-markdown/lib/anchor.d.ts +6 -0
  86. package/dist/2.0/swagger-markdown/lib/anchor.d.ts.map +1 -0
  87. package/dist/2.0/swagger-markdown/lib/anchor.esm.js.map +1 -0
  88. package/dist/2.0/swagger-markdown/lib/anchor.js.map +1 -0
  89. package/dist/2.0/swagger-markdown/lib/inArray.d.ts +9 -0
  90. package/dist/2.0/swagger-markdown/lib/inArray.d.ts.map +1 -0
  91. package/dist/2.0/swagger-markdown/lib/inArray.esm.js.map +1 -0
  92. package/dist/2.0/swagger-markdown/lib/inArray.js.map +1 -0
  93. package/dist/2.0/swagger-markdown/models/schema.d.ts +28 -0
  94. package/dist/2.0/swagger-markdown/models/schema.d.ts.map +1 -0
  95. package/dist/2.0/swagger-markdown/models/schema.esm.js.map +1 -0
  96. package/dist/2.0/swagger-markdown/models/schema.js.map +1 -0
  97. package/dist/2.0/swagger-markdown/transformers/contact.d.ts +8 -0
  98. package/dist/2.0/swagger-markdown/transformers/contact.d.ts.map +1 -0
  99. package/dist/2.0/swagger-markdown/transformers/contact.esm.js.map +1 -0
  100. package/dist/2.0/swagger-markdown/transformers/contact.js.map +1 -0
  101. package/dist/2.0/swagger-markdown/transformers/dataTypes.d.ts +9 -0
  102. package/dist/2.0/swagger-markdown/transformers/dataTypes.d.ts.map +1 -0
  103. package/dist/2.0/swagger-markdown/transformers/dataTypes.esm.js.map +1 -0
  104. package/dist/2.0/swagger-markdown/transformers/dataTypes.js.map +1 -0
  105. package/dist/2.0/swagger-markdown/transformers/definitions.d.ts +14 -0
  106. package/dist/2.0/swagger-markdown/transformers/definitions.d.ts.map +1 -0
  107. package/dist/2.0/swagger-markdown/transformers/definitions.esm.js.map +1 -0
  108. package/dist/2.0/swagger-markdown/transformers/definitions.js.map +1 -0
  109. package/dist/2.0/swagger-markdown/transformers/externalDocs.d.ts +4 -0
  110. package/dist/2.0/swagger-markdown/transformers/externalDocs.d.ts.map +1 -0
  111. package/dist/2.0/swagger-markdown/transformers/externalDocs.esm.js.map +1 -0
  112. package/dist/2.0/swagger-markdown/transformers/externalDocs.js.map +1 -0
  113. package/dist/2.0/swagger-markdown/transformers/info.d.ts +11 -0
  114. package/dist/2.0/swagger-markdown/transformers/info.d.ts.map +1 -0
  115. package/dist/2.0/swagger-markdown/transformers/info.esm.js.map +1 -0
  116. package/dist/2.0/swagger-markdown/transformers/info.js.map +1 -0
  117. package/dist/2.0/swagger-markdown/transformers/license.d.ts +8 -0
  118. package/dist/2.0/swagger-markdown/transformers/license.d.ts.map +1 -0
  119. package/dist/2.0/swagger-markdown/transformers/license.esm.js.map +1 -0
  120. package/dist/2.0/swagger-markdown/transformers/license.js.map +1 -0
  121. package/dist/2.0/swagger-markdown/transformers/path.d.ts +9 -0
  122. package/dist/2.0/swagger-markdown/transformers/path.d.ts.map +1 -0
  123. package/dist/2.0/swagger-markdown/transformers/path.esm.js.map +1 -0
  124. package/dist/2.0/swagger-markdown/transformers/path.js.map +1 -0
  125. package/dist/2.0/swagger-markdown/transformers/pathParameters.d.ts +4 -0
  126. package/dist/2.0/swagger-markdown/transformers/pathParameters.d.ts.map +1 -0
  127. package/dist/2.0/swagger-markdown/transformers/pathParameters.esm.js.map +1 -0
  128. package/dist/2.0/swagger-markdown/transformers/pathParameters.js.map +1 -0
  129. package/dist/2.0/swagger-markdown/transformers/pathResponses.d.ts +9 -0
  130. package/dist/2.0/swagger-markdown/transformers/pathResponses.d.ts.map +1 -0
  131. package/dist/2.0/swagger-markdown/transformers/pathResponses.esm.js.map +1 -0
  132. package/dist/2.0/swagger-markdown/transformers/pathResponses.js.map +1 -0
  133. package/dist/2.0/swagger-markdown/transformers/security.d.ts +4 -0
  134. package/dist/2.0/swagger-markdown/transformers/security.d.ts.map +1 -0
  135. package/dist/2.0/swagger-markdown/transformers/security.esm.js.map +1 -0
  136. package/dist/2.0/swagger-markdown/transformers/security.js.map +1 -0
  137. package/dist/2.0/swagger-markdown/transformers/securityDefinitions.d.ts +6 -0
  138. package/dist/2.0/swagger-markdown/transformers/securityDefinitions.d.ts.map +1 -0
  139. package/dist/2.0/swagger-markdown/transformers/securityDefinitions.esm.js.map +1 -0
  140. package/dist/2.0/swagger-markdown/transformers/securityDefinitions.js.map +1 -0
  141. package/dist/2.0/type.d.ts +654 -0
  142. package/dist/2.0/type.d.ts.map +1 -0
  143. package/dist/2.0/utils.d.ts +79 -0
  144. package/dist/2.0/utils.d.ts.map +1 -0
  145. package/dist/{utils.esm.js → 2.0/utils.esm.js} +61 -89
  146. package/dist/2.0/utils.esm.js.map +1 -0
  147. package/dist/{utils.js → 2.0/utils.js} +65 -94
  148. package/dist/2.0/utils.js.map +1 -0
  149. package/dist/index.d.ts +1 -149
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.esm.js +5 -163
  152. package/dist/index.esm.js.map +1 -1
  153. package/dist/index.js +9 -169
  154. package/dist/index.js.map +1 -1
  155. package/package.json +5 -3
  156. package/dist/Doc/index.d.ts.map +0 -1
  157. package/dist/Doc/type.d.ts.map +0 -1
  158. package/dist/HandleError.d.ts.map +0 -1
  159. package/dist/HandleError.esm.js.map +0 -1
  160. package/dist/HandleError.js.map +0 -1
  161. package/dist/Layer.d.ts.map +0 -1
  162. package/dist/Layer.esm.js +0 -274
  163. package/dist/Layer.esm.js.map +0 -1
  164. package/dist/Layer.js +0 -276
  165. package/dist/Layer.js.map +0 -1
  166. package/dist/Middlewares.d.ts.map +0 -1
  167. package/dist/Middlewares.esm.js.map +0 -1
  168. package/dist/Middlewares.js.map +0 -1
  169. package/dist/handler.d.ts.map +0 -1
  170. package/dist/handler.esm.js +0 -171
  171. package/dist/handler.esm.js.map +0 -1
  172. package/dist/handler.js +0 -174
  173. package/dist/handler.js.map +0 -1
  174. package/dist/middleware.d.ts.map +0 -1
  175. package/dist/middleware.esm.js +0 -152
  176. package/dist/middleware.esm.js.map +0 -1
  177. package/dist/middleware.js +0 -155
  178. package/dist/middleware.js.map +0 -1
  179. package/dist/redocUi/index.d.ts.map +0 -1
  180. package/dist/redocUi/index.esm.js.map +0 -1
  181. package/dist/redocUi/index.js.map +0 -1
  182. package/dist/router.d.ts.map +0 -1
  183. package/dist/router.esm.js +0 -719
  184. package/dist/router.esm.js.map +0 -1
  185. package/dist/router.js +0 -740
  186. package/dist/router.js.map +0 -1
  187. package/dist/swagger-markdown/index.d.ts.map +0 -1
  188. package/dist/swagger-markdown/index.esm.js.map +0 -1
  189. package/dist/swagger-markdown/index.js.map +0 -1
  190. package/dist/swagger-markdown/lib/anchor.d.ts.map +0 -1
  191. package/dist/swagger-markdown/lib/anchor.esm.js.map +0 -1
  192. package/dist/swagger-markdown/lib/anchor.js.map +0 -1
  193. package/dist/swagger-markdown/lib/inArray.d.ts.map +0 -1
  194. package/dist/swagger-markdown/lib/inArray.esm.js.map +0 -1
  195. package/dist/swagger-markdown/lib/inArray.js.map +0 -1
  196. package/dist/swagger-markdown/models/schema.d.ts.map +0 -1
  197. package/dist/swagger-markdown/models/schema.esm.js.map +0 -1
  198. package/dist/swagger-markdown/models/schema.js.map +0 -1
  199. package/dist/swagger-markdown/transformers/contact.d.ts.map +0 -1
  200. package/dist/swagger-markdown/transformers/contact.esm.js.map +0 -1
  201. package/dist/swagger-markdown/transformers/contact.js.map +0 -1
  202. package/dist/swagger-markdown/transformers/dataTypes.d.ts.map +0 -1
  203. package/dist/swagger-markdown/transformers/dataTypes.esm.js.map +0 -1
  204. package/dist/swagger-markdown/transformers/dataTypes.js.map +0 -1
  205. package/dist/swagger-markdown/transformers/definitions.d.ts.map +0 -1
  206. package/dist/swagger-markdown/transformers/definitions.esm.js.map +0 -1
  207. package/dist/swagger-markdown/transformers/definitions.js.map +0 -1
  208. package/dist/swagger-markdown/transformers/externalDocs.d.ts.map +0 -1
  209. package/dist/swagger-markdown/transformers/externalDocs.esm.js.map +0 -1
  210. package/dist/swagger-markdown/transformers/externalDocs.js.map +0 -1
  211. package/dist/swagger-markdown/transformers/info.d.ts.map +0 -1
  212. package/dist/swagger-markdown/transformers/info.esm.js.map +0 -1
  213. package/dist/swagger-markdown/transformers/info.js.map +0 -1
  214. package/dist/swagger-markdown/transformers/license.d.ts.map +0 -1
  215. package/dist/swagger-markdown/transformers/license.esm.js.map +0 -1
  216. package/dist/swagger-markdown/transformers/license.js.map +0 -1
  217. package/dist/swagger-markdown/transformers/path.d.ts.map +0 -1
  218. package/dist/swagger-markdown/transformers/path.esm.js.map +0 -1
  219. package/dist/swagger-markdown/transformers/path.js.map +0 -1
  220. package/dist/swagger-markdown/transformers/pathParameters.d.ts.map +0 -1
  221. package/dist/swagger-markdown/transformers/pathParameters.esm.js.map +0 -1
  222. package/dist/swagger-markdown/transformers/pathParameters.js.map +0 -1
  223. package/dist/swagger-markdown/transformers/pathResponses.d.ts.map +0 -1
  224. package/dist/swagger-markdown/transformers/pathResponses.esm.js.map +0 -1
  225. package/dist/swagger-markdown/transformers/pathResponses.js.map +0 -1
  226. package/dist/swagger-markdown/transformers/security.d.ts.map +0 -1
  227. package/dist/swagger-markdown/transformers/security.esm.js.map +0 -1
  228. package/dist/swagger-markdown/transformers/security.js.map +0 -1
  229. package/dist/swagger-markdown/transformers/securityDefinitions.d.ts.map +0 -1
  230. package/dist/swagger-markdown/transformers/securityDefinitions.esm.js.map +0 -1
  231. package/dist/swagger-markdown/transformers/securityDefinitions.js.map +0 -1
  232. package/dist/type.d.ts.map +0 -1
  233. package/dist/utils.d.ts.map +0 -1
  234. package/dist/utils.esm.js.map +0 -1
  235. package/dist/utils.js.map +0 -1
  236. /package/dist/{Doc → 1.0/Doc}/index.d.ts +0 -0
  237. /package/dist/{Doc → 1.0/Doc}/type.d.ts +0 -0
  238. /package/dist/{HandleError.d.ts → 1.0/HandleError.d.ts} +0 -0
  239. /package/dist/{Layer.d.ts → 1.0/Layer.d.ts} +0 -0
  240. /package/dist/{Middlewares.d.ts → 1.0/Middlewares.d.ts} +0 -0
  241. /package/dist/{handler.d.ts → 1.0/handler.d.ts} +0 -0
  242. /package/dist/{middleware.d.ts → 1.0/middleware.d.ts} +0 -0
  243. /package/dist/{redocUi → 1.0/redocUi}/index.d.ts +0 -0
  244. /package/dist/{router.d.ts → 1.0/router.d.ts} +0 -0
  245. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/index.d.ts +0 -0
  246. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/lib/anchor.d.ts +0 -0
  247. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/lib/inArray.d.ts +0 -0
  248. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/models/schema.d.ts +0 -0
  249. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/contact.d.ts +0 -0
  250. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/dataTypes.d.ts +0 -0
  251. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/definitions.d.ts +0 -0
  252. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/externalDocs.d.ts +0 -0
  253. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/info.d.ts +0 -0
  254. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/license.d.ts +0 -0
  255. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/path.d.ts +0 -0
  256. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/pathParameters.d.ts +0 -0
  257. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/pathResponses.d.ts +0 -0
  258. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/security.d.ts +0 -0
  259. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/securityDefinitions.d.ts +0 -0
  260. /package/dist/{utils.d.ts → 1.0/utils.d.ts} +0 -0
  261. /package/dist/{HandleError.esm.js → 2.0/HandleError.esm.js} +0 -0
  262. /package/dist/{HandleError.js → 2.0/HandleError.js} +0 -0
  263. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/lib/anchor.esm.js +0 -0
  264. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/lib/anchor.js +0 -0
  265. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/lib/inArray.esm.js +0 -0
  266. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/lib/inArray.js +0 -0
  267. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/models/schema.esm.js +0 -0
  268. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/models/schema.js +0 -0
  269. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/contact.esm.js +0 -0
  270. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/contact.js +0 -0
  271. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/dataTypes.esm.js +0 -0
  272. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/dataTypes.js +0 -0
  273. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/definitions.esm.js +0 -0
  274. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/definitions.js +0 -0
  275. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/externalDocs.esm.js +0 -0
  276. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/externalDocs.js +0 -0
  277. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/info.esm.js +0 -0
  278. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/info.js +0 -0
  279. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/license.esm.js +0 -0
  280. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/license.js +0 -0
  281. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/path.esm.js +0 -0
  282. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/path.js +0 -0
  283. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/pathParameters.esm.js +0 -0
  284. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/pathParameters.js +0 -0
  285. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/pathResponses.esm.js +0 -0
  286. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/pathResponses.js +0 -0
  287. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/security.esm.js +0 -0
  288. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/security.js +0 -0
  289. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/securityDefinitions.esm.js +0 -0
  290. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/securityDefinitions.js +0 -0
@@ -0,0 +1,118 @@
1
+ import { __rest } from '../node_modules/tslib/tslib.es6.esm.js';
2
+ import { joinObject, joinPaths } from './utils.esm.js';
3
+
4
+ const isOAS3Definition = (obj) => {
5
+ return obj && typeof obj === "object" && ("openapi" in obj || "swagger" in obj);
6
+ };
7
+ const isTreeDoc = (obj) => {
8
+ return obj && typeof obj === "object" && "parent" in obj && "children" in obj;
9
+ };
10
+ const isChildrenDoc = (obj) => {
11
+ return obj && typeof obj === "object" && "operation" in obj && "components" in obj;
12
+ };
13
+ /**
14
+ * Normaliza os children de um ITreeDoc, que podem ser:
15
+ * - Um array (vindo de um router)
16
+ * - Um ITreeDoc único com parent=null (vindo de um handler)
17
+ *
18
+ * Desempacota automaticamente wrappers de handler (ITreeDoc com parent=null).
19
+ */
20
+ const flattenChildren = (children) => {
21
+ const items = Array.isArray(children) ? children : isTreeDoc(children) ? [children] : [];
22
+ const result = [];
23
+ for (const item of items) {
24
+ if (isTreeDoc(item) && item.parent === null) {
25
+ result.push(...flattenChildren(item.children));
26
+ }
27
+ else {
28
+ result.push(item);
29
+ }
30
+ }
31
+ return result;
32
+ };
33
+ const renderChainDocs = (docs) => {
34
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
35
+ let doc = {
36
+ paths: {},
37
+ components: {},
38
+ };
39
+ for (const d of docs) {
40
+ if (!isTreeDoc(d))
41
+ continue;
42
+ // Parent é SwaggerOptions → mescla configuração global
43
+ if (isOAS3Definition(d.parent)) {
44
+ doc = joinObject({}, d.parent, doc);
45
+ continue;
46
+ }
47
+ if (d.path === undefined)
48
+ continue;
49
+ const parentDoc = isChildrenDoc(d.parent) ? d.parent : null;
50
+ const children = flattenChildren(d.children);
51
+ // Coleta operations, components e stackFrames do parent + todos IChildrenDoc filhos
52
+ let mergedOperation = parentDoc ? Object.assign({}, parentDoc.operation) : {};
53
+ let mergedComponents = parentDoc ? Object.assign({}, parentDoc.components) : {};
54
+ const stackFrames = parentDoc ? [parentDoc.stackFrame] : [];
55
+ const componentStackFrames = parentDoc && Object.keys((_a = parentDoc.components) !== null && _a !== void 0 ? _a : {}).length > 0 ? [parentDoc.stackFrame] : [];
56
+ for (const c of children) {
57
+ if (!isTreeDoc(c) && isChildrenDoc(c)) {
58
+ mergedOperation = joinObject(mergedOperation, c.operation);
59
+ mergedComponents = joinObject(mergedComponents, c.components);
60
+ stackFrames.unshift(c.stackFrame);
61
+ if (Object.keys((_b = c.components) !== null && _b !== void 0 ? _b : {}).length > 0) {
62
+ componentStackFrames.unshift(c.stackFrame);
63
+ }
64
+ }
65
+ }
66
+ // Mescla components coletados no doc global
67
+ if (Object.keys(mergedComponents).length > 0) {
68
+ const existingCompFrames = (_d = (_c = doc.components) === null || _c === void 0 ? void 0 : _c.stackFrames) !== null && _d !== void 0 ? _d : [];
69
+ doc.components = Object.assign(Object.assign({}, joinObject((_e = doc.components) !== null && _e !== void 0 ? _e : {}, mergedComponents)), { stackFrames: [...componentStackFrames, ...existingCompFrames] });
70
+ }
71
+ // Se o nó tem method, é um endpoint → cria entrada em paths
72
+ if (d.method) {
73
+ const fullPath = joinPaths(d.path);
74
+ const existing = (_h = (_g = (_f = doc.paths) === null || _f === void 0 ? void 0 : _f[fullPath]) === null || _g === void 0 ? void 0 : _g[d.method]) !== null && _h !== void 0 ? _h : {};
75
+ const existingFrames = (_j = existing.stackFrames) !== null && _j !== void 0 ? _j : [];
76
+ doc.paths = Object.assign(Object.assign({}, doc.paths), { [fullPath]: Object.assign(Object.assign({}, (_k = doc.paths) === null || _k === void 0 ? void 0 : _k[fullPath]), { [d.method]: Object.assign(Object.assign({}, joinObject(existing, mergedOperation)), { stackFrames: [...stackFrames, ...existingFrames] }) }) });
77
+ }
78
+ // Processa ITreeDoc filhos (sub-rotas aninhadas)
79
+ for (const c of children) {
80
+ if (!isTreeDoc(c))
81
+ continue;
82
+ if (isOAS3Definition(c.parent)) {
83
+ doc = joinObject({}, c.parent, doc);
84
+ continue;
85
+ }
86
+ const childDoc = renderChainDocs([c]);
87
+ // Mescla propriedades que não são paths (components, tags, etc.)
88
+ const { paths: childPaths, path: _ } = childDoc, childRest = __rest(childDoc, ["paths", "path"]);
89
+ doc = joinObject({}, childRest, doc);
90
+ // Mescla paths com prefixo correto
91
+ for (const p in childPaths) {
92
+ const fullPath = joinPaths(d.path || "", p);
93
+ for (const m in childPaths[p]) {
94
+ const childEntry = childPaths[p][m];
95
+ const childStackFrames = (_l = childEntry.stackFrames) !== null && _l !== void 0 ? _l : [];
96
+ const existing = (_p = (_o = (_m = doc.paths) === null || _m === void 0 ? void 0 : _m[fullPath]) === null || _o === void 0 ? void 0 : _o[m]) !== null && _p !== void 0 ? _p : {};
97
+ const existingFrames = (_q = existing.stackFrames) !== null && _q !== void 0 ? _q : [];
98
+ doc.paths = Object.assign(Object.assign({}, doc.paths), { [fullPath]: Object.assign(Object.assign({}, (_r = doc.paths) === null || _r === void 0 ? void 0 : _r[fullPath]), { [m]: Object.assign(Object.assign({}, joinObject(existing, mergedOperation, childEntry)), { stackFrames: [...childStackFrames, ...stackFrames, ...existingFrames] }) }) });
99
+ }
100
+ }
101
+ }
102
+ }
103
+ // Aplica defaultResponses em cada operação que não definiu responses
104
+ if (doc.defaultResponses && doc.paths) {
105
+ for (const path in doc.paths) {
106
+ for (const method in doc.paths[path]) {
107
+ const operation = doc.paths[path][method];
108
+ if (typeof operation === "object" && operation !== null) {
109
+ doc.paths[path][method] = Object.assign(Object.assign({}, operation), { responses: joinObject(doc.defaultResponses, (_s = operation.responses) !== null && _s !== void 0 ? _s : {}) });
110
+ }
111
+ }
112
+ }
113
+ }
114
+ return doc;
115
+ };
116
+
117
+ export { renderChainDocs };
118
+ //# sourceMappingURL=renderChainDocs.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderChainDocs.esm.js","sources":["../../src/2.0/renderChainDocs.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGA,MAAM,gBAAgB,GAAG,CAAC,GAAQ,KAA2B;AAC5D,IAAA,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,KAAK,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,GAAQ,KAAqB;AAC/C,IAAA,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,GAAG,IAAI,UAAU,IAAI,GAAG,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,GAAQ,KAAyB;AACvD,IAAA,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,WAAW,IAAI,GAAG,IAAI,YAAY,IAAI,GAAG,CAAC;AACpF,CAAC,CAAC;AAEF;;;;;;AAMG;AACH,MAAM,eAAe,GAAG,CAAC,QAAa,KAAiC;AACtE,IAAA,MAAM,KAAK,GAAU,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAChG,MAAM,MAAM,GAAgC,EAAE,CAAC;AAE/C,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACzB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAK,IAAiB,CAAC,MAAM,KAAK,IAAI,EAAE;YAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAE,IAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC7D;aAAM;AACN,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClB;KACD;AAED,IAAA,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEW,MAAA,eAAe,GAAG,CAAC,IAAgB,KAA6B;;AAC5E,IAAA,IAAI,GAAG,GAA4B;AAClC,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,UAAU,EAAE,EAAE;KACd,CAAC;AAEF,IAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAAE,SAAS;;AAG5B,QAAA,IAAI,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;YAC/B,GAAG,GAAG,UAAU,CAA0B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC7D,SAAS;SACT;AAED,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;AAEnC,QAAA,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,GAAI,CAAC,CAAC,MAAqB,GAAG,IAAI,CAAC;QAC5E,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;;AAG7C,QAAA,IAAI,eAAe,GAAwB,SAAS,GAAE,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,SAAS,CAAC,SAAS,CAAA,GAAK,EAAE,CAAC;AACvF,QAAA,IAAI,gBAAgB,GAAwB,SAAS,GAAE,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,SAAS,CAAC,UAAU,CAAA,GAAK,EAAE,CAAC;AACzF,QAAA,MAAM,WAAW,GAAkB,SAAS,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC3E,QAAA,MAAM,oBAAoB,GAAkB,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA,EAAA,GAAA,SAAS,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAE1I,QAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;gBACtC,eAAe,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC3D,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;AAC9D,gBAAA,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AAClC,gBAAA,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA,EAAA,GAAA,CAAC,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,oBAAA,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;iBAC3C;aACD;SACD;;QAGD,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,MAAM,kBAAkB,GAAkB,CAAA,EAAA,GAAA,CAAC,EAAA,GAAA,GAAG,CAAC,UAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;YACrF,GAAG,CAAC,UAAU,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACV,UAAU,CAAC,MAAA,GAAG,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,gBAAgB,CAAC,CAAA,EAAA,EACrD,WAAW,EAAE,CAAC,GAAG,oBAAoB,EAAE,GAAG,kBAAkB,CAAC,EAAA,CAC7D,CAAC;SACF;;AAGD,QAAA,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACnC,YAAA,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,QAAQ,CAAC,0CAAG,CAAC,CAAC,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;YACzD,MAAM,cAAc,GAAkB,CAAA,EAAA,GAAA,QAAQ,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AACjE,YAAA,GAAG,CAAC,KAAK,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACL,GAAG,CAAC,KAAK,KACZ,CAAC,QAAQ,GACL,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,0CAAG,QAAQ,CAAC,KACxB,CAAC,CAAC,CAAC,MAAM,GACL,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,UAAU,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA,EAAA,EACxC,WAAW,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC,SAGlD,CAAC;SACF;;AAGD,QAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAAE,SAAS;AAE5B,YAAA,IAAI,gBAAgB,CAAE,CAAc,CAAC,MAAM,CAAC,EAAE;gBAC7C,GAAG,GAAG,UAAU,CAA0B,EAAE,EAAG,CAAc,CAAC,MAAwB,EAAE,GAAG,CAAC,CAAC;gBAC7F,SAAS;aACT;YAED,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAa,CAAC,CAAC,CAAC;;AAGlD,YAAA,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAmB,GAAA,QAAQ,EAAtB,SAAS,GAAA,MAAA,CAAK,QAAQ,EAAvD,CAAA,OAAA,EAAA,MAAA,CAA4C,CAAW,CAAC;YAC9D,GAAG,GAAG,UAAU,CAA0B,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;;AAG9D,YAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAC3B,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;gBAE5C,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;oBAC9B,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpC,MAAM,gBAAgB,GAAkB,CAAA,EAAA,GAAA,UAAU,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AACrE,oBAAA,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;oBAClD,MAAM,cAAc,GAAkB,CAAA,EAAA,GAAA,QAAQ,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;oBACjE,GAAG,CAAC,KAAK,GACL,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,GAAG,CAAC,KAAK,CAAA,EAAA,EACZ,CAAC,QAAQ,mCACL,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,QAAQ,CAAC,CAAA,EAAA,EACxB,CAAC,CAAC,mCACE,UAAU,CAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,CAAC,KACpD,WAAW,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC,EAAA,CAAA,EAAA,CAAA,EAAA,CAGvE,CAAC;iBACF;aACD;SACD;KACD;;IAGD,IAAI,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,KAAK,EAAE;AACtC,QAAA,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE;YAC7B,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACrC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;oBACxD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACnB,SAAS,CAAA,EAAA,EACZ,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA,EAAA,GAAA,SAAS,CAAC,SAAS,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC,EAAA,CACtE,CAAC;iBACF;aACD;SACD;KACD;AAED,IAAA,OAAO,GAAG,CAAC;AACZ;;;;"}
@@ -0,0 +1,120 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('../node_modules/tslib/tslib.es6.js');
4
+ var utils = require('./utils.js');
5
+
6
+ const isOAS3Definition = (obj) => {
7
+ return obj && typeof obj === "object" && ("openapi" in obj || "swagger" in obj);
8
+ };
9
+ const isTreeDoc = (obj) => {
10
+ return obj && typeof obj === "object" && "parent" in obj && "children" in obj;
11
+ };
12
+ const isChildrenDoc = (obj) => {
13
+ return obj && typeof obj === "object" && "operation" in obj && "components" in obj;
14
+ };
15
+ /**
16
+ * Normaliza os children de um ITreeDoc, que podem ser:
17
+ * - Um array (vindo de um router)
18
+ * - Um ITreeDoc único com parent=null (vindo de um handler)
19
+ *
20
+ * Desempacota automaticamente wrappers de handler (ITreeDoc com parent=null).
21
+ */
22
+ const flattenChildren = (children) => {
23
+ const items = Array.isArray(children) ? children : isTreeDoc(children) ? [children] : [];
24
+ const result = [];
25
+ for (const item of items) {
26
+ if (isTreeDoc(item) && item.parent === null) {
27
+ result.push(...flattenChildren(item.children));
28
+ }
29
+ else {
30
+ result.push(item);
31
+ }
32
+ }
33
+ return result;
34
+ };
35
+ const renderChainDocs = (docs) => {
36
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
37
+ let doc = {
38
+ paths: {},
39
+ components: {},
40
+ };
41
+ for (const d of docs) {
42
+ if (!isTreeDoc(d))
43
+ continue;
44
+ // Parent é SwaggerOptions → mescla configuração global
45
+ if (isOAS3Definition(d.parent)) {
46
+ doc = utils.joinObject({}, d.parent, doc);
47
+ continue;
48
+ }
49
+ if (d.path === undefined)
50
+ continue;
51
+ const parentDoc = isChildrenDoc(d.parent) ? d.parent : null;
52
+ const children = flattenChildren(d.children);
53
+ // Coleta operations, components e stackFrames do parent + todos IChildrenDoc filhos
54
+ let mergedOperation = parentDoc ? Object.assign({}, parentDoc.operation) : {};
55
+ let mergedComponents = parentDoc ? Object.assign({}, parentDoc.components) : {};
56
+ const stackFrames = parentDoc ? [parentDoc.stackFrame] : [];
57
+ const componentStackFrames = parentDoc && Object.keys((_a = parentDoc.components) !== null && _a !== void 0 ? _a : {}).length > 0 ? [parentDoc.stackFrame] : [];
58
+ for (const c of children) {
59
+ if (!isTreeDoc(c) && isChildrenDoc(c)) {
60
+ mergedOperation = utils.joinObject(mergedOperation, c.operation);
61
+ mergedComponents = utils.joinObject(mergedComponents, c.components);
62
+ stackFrames.unshift(c.stackFrame);
63
+ if (Object.keys((_b = c.components) !== null && _b !== void 0 ? _b : {}).length > 0) {
64
+ componentStackFrames.unshift(c.stackFrame);
65
+ }
66
+ }
67
+ }
68
+ // Mescla components coletados no doc global
69
+ if (Object.keys(mergedComponents).length > 0) {
70
+ const existingCompFrames = (_d = (_c = doc.components) === null || _c === void 0 ? void 0 : _c.stackFrames) !== null && _d !== void 0 ? _d : [];
71
+ doc.components = Object.assign(Object.assign({}, utils.joinObject((_e = doc.components) !== null && _e !== void 0 ? _e : {}, mergedComponents)), { stackFrames: [...componentStackFrames, ...existingCompFrames] });
72
+ }
73
+ // Se o nó tem method, é um endpoint → cria entrada em paths
74
+ if (d.method) {
75
+ const fullPath = utils.joinPaths(d.path);
76
+ const existing = (_h = (_g = (_f = doc.paths) === null || _f === void 0 ? void 0 : _f[fullPath]) === null || _g === void 0 ? void 0 : _g[d.method]) !== null && _h !== void 0 ? _h : {};
77
+ const existingFrames = (_j = existing.stackFrames) !== null && _j !== void 0 ? _j : [];
78
+ doc.paths = Object.assign(Object.assign({}, doc.paths), { [fullPath]: Object.assign(Object.assign({}, (_k = doc.paths) === null || _k === void 0 ? void 0 : _k[fullPath]), { [d.method]: Object.assign(Object.assign({}, utils.joinObject(existing, mergedOperation)), { stackFrames: [...stackFrames, ...existingFrames] }) }) });
79
+ }
80
+ // Processa ITreeDoc filhos (sub-rotas aninhadas)
81
+ for (const c of children) {
82
+ if (!isTreeDoc(c))
83
+ continue;
84
+ if (isOAS3Definition(c.parent)) {
85
+ doc = utils.joinObject({}, c.parent, doc);
86
+ continue;
87
+ }
88
+ const childDoc = renderChainDocs([c]);
89
+ // Mescla propriedades que não são paths (components, tags, etc.)
90
+ const { paths: childPaths, path: _ } = childDoc, childRest = tslib_es6.__rest(childDoc, ["paths", "path"]);
91
+ doc = utils.joinObject({}, childRest, doc);
92
+ // Mescla paths com prefixo correto
93
+ for (const p in childPaths) {
94
+ const fullPath = utils.joinPaths(d.path || "", p);
95
+ for (const m in childPaths[p]) {
96
+ const childEntry = childPaths[p][m];
97
+ const childStackFrames = (_l = childEntry.stackFrames) !== null && _l !== void 0 ? _l : [];
98
+ const existing = (_p = (_o = (_m = doc.paths) === null || _m === void 0 ? void 0 : _m[fullPath]) === null || _o === void 0 ? void 0 : _o[m]) !== null && _p !== void 0 ? _p : {};
99
+ const existingFrames = (_q = existing.stackFrames) !== null && _q !== void 0 ? _q : [];
100
+ doc.paths = Object.assign(Object.assign({}, doc.paths), { [fullPath]: Object.assign(Object.assign({}, (_r = doc.paths) === null || _r === void 0 ? void 0 : _r[fullPath]), { [m]: Object.assign(Object.assign({}, utils.joinObject(existing, mergedOperation, childEntry)), { stackFrames: [...childStackFrames, ...stackFrames, ...existingFrames] }) }) });
101
+ }
102
+ }
103
+ }
104
+ }
105
+ // Aplica defaultResponses em cada operação que não definiu responses
106
+ if (doc.defaultResponses && doc.paths) {
107
+ for (const path in doc.paths) {
108
+ for (const method in doc.paths[path]) {
109
+ const operation = doc.paths[path][method];
110
+ if (typeof operation === "object" && operation !== null) {
111
+ doc.paths[path][method] = Object.assign(Object.assign({}, operation), { responses: utils.joinObject(doc.defaultResponses, (_s = operation.responses) !== null && _s !== void 0 ? _s : {}) });
112
+ }
113
+ }
114
+ }
115
+ }
116
+ return doc;
117
+ };
118
+
119
+ exports.renderChainDocs = renderChainDocs;
120
+ //# sourceMappingURL=renderChainDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderChainDocs.js","sources":["../../src/2.0/renderChainDocs.ts"],"sourcesContent":[null],"names":["joinObject","joinPaths","__rest"],"mappings":";;;;;AAGA,MAAM,gBAAgB,GAAG,CAAC,GAAQ,KAA2B;AAC5D,IAAA,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,KAAK,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,GAAQ,KAAqB;AAC/C,IAAA,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,GAAG,IAAI,UAAU,IAAI,GAAG,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,GAAQ,KAAyB;AACvD,IAAA,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,WAAW,IAAI,GAAG,IAAI,YAAY,IAAI,GAAG,CAAC;AACpF,CAAC,CAAC;AAEF;;;;;;AAMG;AACH,MAAM,eAAe,GAAG,CAAC,QAAa,KAAiC;AACtE,IAAA,MAAM,KAAK,GAAU,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAChG,MAAM,MAAM,GAAgC,EAAE,CAAC;AAE/C,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACzB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAK,IAAiB,CAAC,MAAM,KAAK,IAAI,EAAE;YAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAE,IAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC7D;aAAM;AACN,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClB;KACD;AAED,IAAA,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEW,MAAA,eAAe,GAAG,CAAC,IAAgB,KAA6B;;AAC5E,IAAA,IAAI,GAAG,GAA4B;AAClC,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,UAAU,EAAE,EAAE;KACd,CAAC;AAEF,IAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAAE,SAAS;;AAG5B,QAAA,IAAI,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;YAC/B,GAAG,GAAGA,gBAAU,CAA0B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC7D,SAAS;SACT;AAED,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;AAEnC,QAAA,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,GAAI,CAAC,CAAC,MAAqB,GAAG,IAAI,CAAC;QAC5E,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;;AAG7C,QAAA,IAAI,eAAe,GAAwB,SAAS,GAAE,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,SAAS,CAAC,SAAS,CAAA,GAAK,EAAE,CAAC;AACvF,QAAA,IAAI,gBAAgB,GAAwB,SAAS,GAAE,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,SAAS,CAAC,UAAU,CAAA,GAAK,EAAE,CAAC;AACzF,QAAA,MAAM,WAAW,GAAkB,SAAS,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC3E,QAAA,MAAM,oBAAoB,GAAkB,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA,EAAA,GAAA,SAAS,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAE1I,QAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;gBACtC,eAAe,GAAGA,gBAAU,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC3D,gBAAgB,GAAGA,gBAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;AAC9D,gBAAA,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AAClC,gBAAA,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA,EAAA,GAAA,CAAC,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,oBAAA,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;iBAC3C;aACD;SACD;;QAGD,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,MAAM,kBAAkB,GAAkB,CAAA,EAAA,GAAA,CAAC,EAAA,GAAA,GAAG,CAAC,UAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;YACrF,GAAG,CAAC,UAAU,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACVA,gBAAU,CAAC,MAAA,GAAG,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,gBAAgB,CAAC,CAAA,EAAA,EACrD,WAAW,EAAE,CAAC,GAAG,oBAAoB,EAAE,GAAG,kBAAkB,CAAC,EAAA,CAC7D,CAAC;SACF;;AAGD,QAAA,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,MAAM,QAAQ,GAAGC,eAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACnC,YAAA,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,QAAQ,CAAC,0CAAG,CAAC,CAAC,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;YACzD,MAAM,cAAc,GAAkB,CAAA,EAAA,GAAA,QAAQ,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AACjE,YAAA,GAAG,CAAC,KAAK,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACL,GAAG,CAAC,KAAK,KACZ,CAAC,QAAQ,GACL,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,0CAAG,QAAQ,CAAC,KACxB,CAAC,CAAC,CAAC,MAAM,GACL,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAAD,gBAAU,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA,EAAA,EACxC,WAAW,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC,SAGlD,CAAC;SACF;;AAGD,QAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAAE,SAAS;AAE5B,YAAA,IAAI,gBAAgB,CAAE,CAAc,CAAC,MAAM,CAAC,EAAE;gBAC7C,GAAG,GAAGA,gBAAU,CAA0B,EAAE,EAAG,CAAc,CAAC,MAAwB,EAAE,GAAG,CAAC,CAAC;gBAC7F,SAAS;aACT;YAED,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAa,CAAC,CAAC,CAAC;;AAGlD,YAAA,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAmB,GAAA,QAAQ,EAAtB,SAAS,GAAAE,gBAAA,CAAK,QAAQ,EAAvD,CAAA,OAAA,EAAA,MAAA,CAA4C,CAAW,CAAC;YAC9D,GAAG,GAAGF,gBAAU,CAA0B,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;;AAG9D,YAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAC3B,gBAAA,MAAM,QAAQ,GAAGC,eAAS,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;gBAE5C,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;oBAC9B,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpC,MAAM,gBAAgB,GAAkB,CAAA,EAAA,GAAA,UAAU,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AACrE,oBAAA,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;oBAClD,MAAM,cAAc,GAAkB,CAAA,EAAA,GAAA,QAAQ,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;oBACjE,GAAG,CAAC,KAAK,GACL,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,GAAG,CAAC,KAAK,CAAA,EAAA,EACZ,CAAC,QAAQ,mCACL,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,QAAQ,CAAC,CAAA,EAAA,EACxB,CAAC,CAAC,mCACED,gBAAU,CAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,CAAC,KACpD,WAAW,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC,EAAA,CAAA,EAAA,CAAA,EAAA,CAGvE,CAAC;iBACF;aACD;SACD;KACD;;IAGD,IAAI,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,KAAK,EAAE;AACtC,QAAA,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE;YAC7B,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACrC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;oBACxD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACnB,SAAS,CAAA,EAAA,EACZ,SAAS,EAAEA,gBAAU,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA,EAAA,GAAA,SAAS,CAAC,SAAS,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC,EAAA,CACtE,CAAC;iBACF;aACD;SACD;KACD;AAED,IAAA,OAAO,GAAG,CAAC;AACZ;;;;"}
@@ -0,0 +1,73 @@
1
+ import type { IRouter } from "./type";
2
+ /**
3
+ * Cria uma instância de {@link IRouter} com suporte a métodos HTTP tipados,
4
+ * sub-rotas aninhadas e geração automática de documentação OpenAPI/Swagger.
5
+ *
6
+ * O router pode ser usado de forma independente e depois montado em uma aplicação
7
+ * ou em outro router via `.route()` ou `.use()`, permitindo modularizar a API.
8
+ *
9
+ * @returns Instância de {@link IRouter} com todos os métodos HTTP e configuração Swagger.
10
+ *
11
+ * @example
12
+ * // Router básico com rotas
13
+ * import { router } from '@ismael1361/router';
14
+ *
15
+ * const api = router();
16
+ *
17
+ * api.get("/items")
18
+ * .handler((req, res) => {
19
+ * res.json([{ id: 1, name: "Item A" }]);
20
+ * })
21
+ * .doc({ tags: ["Items"], summary: "Listar itens" });
22
+ *
23
+ * api.post("/items")
24
+ * .handler((req, res) => {
25
+ * res.status(201).json({ id: 2, name: "Novo item" });
26
+ * })
27
+ * .doc({ tags: ["Items"], summary: "Criar item" });
28
+ *
29
+ * @example
30
+ * // Montar router em uma aplicação com prefixo
31
+ * import { create, router } from '@ismael1361/router';
32
+ *
33
+ * const app = create();
34
+ * const v1 = router();
35
+ *
36
+ * v1.get("/test/route")
37
+ * .handler((req, res) => {
38
+ * res.send("Hello from v1!");
39
+ * })
40
+ * .doc({ tags: ["V1"], summary: "Rota de teste v1" });
41
+ *
42
+ * app.route("/v1", v1, {
43
+ * security: [{ bearerAuth: [] }],
44
+ * responses: {
45
+ * "400": { description: "Dados inválidos" },
46
+ * "404": { description: "Não encontrado" },
47
+ * },
48
+ * });
49
+ *
50
+ * @example
51
+ * // Router com Swagger habilitado
52
+ * const api = router();
53
+ *
54
+ * api.get("/users/:id")
55
+ * .handler((req, res) => {
56
+ * res.json({ id: req.params.id, name: "Alice" });
57
+ * })
58
+ * .doc({
59
+ * tags: ["Users"],
60
+ * summary: "Buscar usuário por ID",
61
+ * parameters: [
62
+ * { name: "id", in: "path", required: true, schema: { type: "string" } },
63
+ * ],
64
+ * });
65
+ *
66
+ * api.defineSwagger({
67
+ * openapi: "3.0.0",
68
+ * info: { title: "Users API", version: "1.0.0" },
69
+ * path: "/doc",
70
+ * });
71
+ */
72
+ export declare const router: () => IRouter;
73
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/2.0/router.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA0B,OAAO,EAAkH,MAAM,QAAQ,CAAC;AAa9K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,eAAO,MAAM,MAAM,QAAO,OA4RzB,CAAC"}
@@ -0,0 +1,302 @@
1
+ import { __rest } from '../node_modules/tslib/tslib.es6.esm.js';
2
+ import express from 'express';
3
+ import { METHODS } from 'http';
4
+ import { handler } from './handler.esm.js';
5
+ import { joinPaths, isRouter, parseStack, rootStack, joinObject, omit, targetLabels } from './utils.esm.js';
6
+ import path from 'path';
7
+ import { renderChainDocs } from './renderChainDocs.esm.js';
8
+ import swaggerJSDoc from 'swagger-jsdoc';
9
+ import OpenAPISnippet from 'openapi-snippet';
10
+ import { analyzeSwaggerJSONDoc, OpenAPIError } from './analyzeSwagger.esm.js';
11
+ import swaggerUi from 'swagger-ui-express';
12
+ import swaggerMarkdown from './swagger-markdown/index.esm.js';
13
+ import { setup } from './redocUi/index.esm.js';
14
+ import { uuidv4 } from '@ismael1361/utils';
15
+
16
+ /**
17
+ * Cria uma instância de {@link IRouter} com suporte a métodos HTTP tipados,
18
+ * sub-rotas aninhadas e geração automática de documentação OpenAPI/Swagger.
19
+ *
20
+ * O router pode ser usado de forma independente e depois montado em uma aplicação
21
+ * ou em outro router via `.route()` ou `.use()`, permitindo modularizar a API.
22
+ *
23
+ * @returns Instância de {@link IRouter} com todos os métodos HTTP e configuração Swagger.
24
+ *
25
+ * @example
26
+ * // Router básico com rotas
27
+ * import { router } from '@ismael1361/router';
28
+ *
29
+ * const api = router();
30
+ *
31
+ * api.get("/items")
32
+ * .handler((req, res) => {
33
+ * res.json([{ id: 1, name: "Item A" }]);
34
+ * })
35
+ * .doc({ tags: ["Items"], summary: "Listar itens" });
36
+ *
37
+ * api.post("/items")
38
+ * .handler((req, res) => {
39
+ * res.status(201).json({ id: 2, name: "Novo item" });
40
+ * })
41
+ * .doc({ tags: ["Items"], summary: "Criar item" });
42
+ *
43
+ * @example
44
+ * // Montar router em uma aplicação com prefixo
45
+ * import { create, router } from '@ismael1361/router';
46
+ *
47
+ * const app = create();
48
+ * const v1 = router();
49
+ *
50
+ * v1.get("/test/route")
51
+ * .handler((req, res) => {
52
+ * res.send("Hello from v1!");
53
+ * })
54
+ * .doc({ tags: ["V1"], summary: "Rota de teste v1" });
55
+ *
56
+ * app.route("/v1", v1, {
57
+ * security: [{ bearerAuth: [] }],
58
+ * responses: {
59
+ * "400": { description: "Dados inválidos" },
60
+ * "404": { description: "Não encontrado" },
61
+ * },
62
+ * });
63
+ *
64
+ * @example
65
+ * // Router com Swagger habilitado
66
+ * const api = router();
67
+ *
68
+ * api.get("/users/:id")
69
+ * .handler((req, res) => {
70
+ * res.json({ id: req.params.id, name: "Alice" });
71
+ * })
72
+ * .doc({
73
+ * tags: ["Users"],
74
+ * summary: "Buscar usuário por ID",
75
+ * parameters: [
76
+ * { name: "id", in: "path", required: true, schema: { type: "string" } },
77
+ * ],
78
+ * });
79
+ *
80
+ * api.defineSwagger({
81
+ * openapi: "3.0.0",
82
+ * info: { title: "Users API", version: "1.0.0" },
83
+ * path: "/doc",
84
+ * });
85
+ */
86
+ const router = () => {
87
+ const innerRouter = express.Router();
88
+ innerRouter.get("/.well-known/appspecific/com.chrome.devtools.json", (req, res) => {
89
+ const workspaceUuid = uuidv4("-"); // Gera um UUID v4
90
+ res.json({
91
+ workspace: {
92
+ root: "",
93
+ uuid: workspaceUuid,
94
+ },
95
+ });
96
+ });
97
+ let innerSwaggerOptions = null;
98
+ const routesDocs = [
99
+ () => {
100
+ return innerSwaggerOptions
101
+ ? {
102
+ parent: innerSwaggerOptions,
103
+ children: [],
104
+ }
105
+ : null;
106
+ },
107
+ ];
108
+ const defineRouteDoc = (method, path$1, doc, children) => {
109
+ const stack = parseStack().filter(({ dir }) => !path.resolve(dir).startsWith(path.resolve(rootStack[0].dir)))[0];
110
+ routesDocs.push(() => {
111
+ const _a = doc || {}, { components = {} } = _a, operation = __rest(_a, ["components"]);
112
+ return {
113
+ method,
114
+ path: path$1,
115
+ parent: {
116
+ stackFrame: stack,
117
+ operation,
118
+ components,
119
+ },
120
+ children: (children ? children.__chain_docs__ : []) || [],
121
+ };
122
+ });
123
+ };
124
+ // Criamos o objeto com os seus métodos customizados
125
+ const customMethods = {
126
+ __router_path__: "/",
127
+ get path() {
128
+ var _a;
129
+ return joinPaths(((_a = this.parent) === null || _a === void 0 ? void 0 : _a.path) || "/", this.__router_path__);
130
+ },
131
+ param(name, handler) {
132
+ innerRouter.param(name, handler);
133
+ return this;
134
+ },
135
+ get __chain_docs__() {
136
+ return routesDocs.map((getDoc) => getDoc()).filter((doc) => doc !== null && doc !== undefined);
137
+ },
138
+ route() {
139
+ const args = Array.from(arguments);
140
+ const path = typeof args[0] === "string" ? args[0] : "/";
141
+ const route = typeof args[0] === "string" ? (typeof args[1] === "function" ? args[1] : router()) : typeof args[0] === "function" ? args[0] : router();
142
+ if (!isRouter(route)) {
143
+ throw new Error("Invalid router instance");
144
+ }
145
+ route.__router_path__ = path;
146
+ route.parent = this;
147
+ const doc = typeof args[args.length - 1] === "object" && typeof args[args.length - 1] !== "function" ? args[args.length - 1] : undefined;
148
+ innerRouter.use(path, route);
149
+ defineRouteDoc(undefined, path, doc, route);
150
+ return route;
151
+ },
152
+ use() {
153
+ const args = Array.from(arguments);
154
+ const path = typeof args[0] === "string" || args[0] instanceof RegExp || Array.isArray(args[0]) ? args[0] : undefined;
155
+ const handler = path ? (typeof args[1] === "function" ? args[1] : undefined) : typeof args[0] === "function" ? args[0] : undefined;
156
+ const doc = typeof args[args.length - 1] === "object" && typeof args[args.length - 1] !== "function" ? args[args.length - 1] : undefined;
157
+ const route = router();
158
+ route.__router_path__ = path || "/";
159
+ route.parent = this;
160
+ if (handler && isRouter(handler)) {
161
+ route.__router_path__ = path || "/";
162
+ handler.parent = this;
163
+ }
164
+ if (path) {
165
+ if (handler) {
166
+ innerRouter.use(path, handler);
167
+ }
168
+ else {
169
+ innerRouter.use(path, route);
170
+ }
171
+ }
172
+ else if (handler) {
173
+ innerRouter.use(handler);
174
+ }
175
+ defineRouteDoc(undefined, "/", doc);
176
+ return handler ? undefined : route;
177
+ },
178
+ defineSwagger(options) {
179
+ innerSwaggerOptions = options;
180
+ innerSwaggerOptions.stackFrames = [parseStack().filter(({ dir }) => !path.resolve(dir).startsWith(path.resolve(rootStack[0].dir)))[0]];
181
+ const getSwaggerMarkdown = () => {
182
+ return swaggerMarkdown.convert(this.getSwagger());
183
+ };
184
+ const getSwaggerOptions = () => {
185
+ const { options } = this.getSwagger();
186
+ return options;
187
+ };
188
+ const getSwaggerDefinition = () => {
189
+ return swaggerJSDoc(this.getSwagger());
190
+ };
191
+ innerRouter.use("/doc/.md", (res, req) => {
192
+ req.setHeader("Content-Type", "text/markdown");
193
+ req.send(getSwaggerMarkdown());
194
+ });
195
+ innerRouter.use("/doc/markdown", (...args) => {
196
+ swaggerMarkdown.setup(getSwaggerOptions()).apply(this.app, args);
197
+ });
198
+ innerRouter.get("/doc/swagger/definition.json", (req, res) => {
199
+ res.json(getSwaggerDefinition());
200
+ });
201
+ innerRouter.use("/doc/swagger", swaggerUi.serve, (...args) => {
202
+ swaggerUi.setup(getSwaggerDefinition()).apply(this.app, args);
203
+ });
204
+ innerRouter.use("/doc/redoc", (...args) => {
205
+ setup(getSwaggerOptions()).apply(this.app, args);
206
+ });
207
+ return {
208
+ markdownPath: joinPaths(this.path, "/doc/.md"),
209
+ definitionPath: joinPaths(this.path, "/doc/swagger/definition.json"),
210
+ swaggerUiPath: joinPaths(this.path, "/doc/swagger"),
211
+ redocUiPath: joinPaths(this.path, "/doc/redoc"),
212
+ };
213
+ },
214
+ getSwagger() {
215
+ var _a;
216
+ if (!innerSwaggerOptions) {
217
+ throw new Error("Swagger options not defined. Please set the swagger options using the defineSwagger method.");
218
+ }
219
+ const swaggerOptions = Object.assign(Object.assign({}, innerSwaggerOptions), { path: innerSwaggerOptions.path || "/doc", defaultResponses: innerSwaggerOptions.defaultResponses || {} });
220
+ let doc = { paths: (swaggerOptions === null || swaggerOptions === void 0 ? void 0 : swaggerOptions.paths) || {}, components: (swaggerOptions === null || swaggerOptions === void 0 ? void 0 : swaggerOptions.components) || {} };
221
+ doc = joinObject(doc, renderChainDocs(this.__chain_docs__));
222
+ const definition = Object.assign(Object.assign({}, omit(swaggerOptions, "path", "defaultResponses")), omit(doc, "path", "defaultResponses"));
223
+ // Valida o documento OAS antes de gerar os snippets
224
+ const analysisErrors = analyzeSwaggerJSONDoc(definition);
225
+ if (analysisErrors.length > 0) {
226
+ throw analysisErrors[0];
227
+ }
228
+ const targets = innerSwaggerOptions.targets || [
229
+ "c_libcurl",
230
+ "csharp_restsharp",
231
+ "go_native",
232
+ "java_unirest",
233
+ "javascript_xhr",
234
+ "node_native",
235
+ "objc_nsurlsession",
236
+ "ocaml_cohttp",
237
+ "php_curl",
238
+ "python_python3",
239
+ "ruby_native",
240
+ "shell_curl",
241
+ "swift_nsurlsession",
242
+ ];
243
+ for (const path in definition.paths) {
244
+ for (const method in definition.paths[path]) {
245
+ try {
246
+ const generatedCode = OpenAPISnippet.getEndpointSnippets(Object.assign({ servers: [
247
+ {
248
+ url: "http://[hostname]",
249
+ },
250
+ ] }, definition), path, method, targets);
251
+ definition.paths[path][method]["x-codeSamples"] = [];
252
+ for (const snippetIdx in generatedCode.snippets) {
253
+ const snippet = generatedCode.snippets[snippetIdx];
254
+ definition.paths[path][method]["x-codeSamples"][snippetIdx] = { lang: targetLabels[snippet.id], label: snippet.title, source: snippet.content };
255
+ }
256
+ if ("stackFrames" in definition.paths[path][method]) {
257
+ delete definition.paths[path][method].stackFrames;
258
+ }
259
+ }
260
+ catch (e) {
261
+ throw new OpenAPIError(`Sintax error in the OpenAPI definition for ${method.toUpperCase()} ${path}: ${e.message}`, (_a = definition.paths[path][method]) === null || _a === void 0 ? void 0 : _a.stackFrames);
262
+ }
263
+ }
264
+ }
265
+ if (definition.components && "stackFrames" in definition.components) {
266
+ delete definition.components.stackFrames;
267
+ }
268
+ if ("defaultResponses" in definition) {
269
+ delete definition.defaultResponses;
270
+ }
271
+ if ("stackFrames" in definition) {
272
+ delete definition.stackFrames;
273
+ }
274
+ return {
275
+ definition,
276
+ apis: [],
277
+ };
278
+ },
279
+ };
280
+ METHODS.concat("all")
281
+ .map((m) => m.toLowerCase())
282
+ .forEach((method) => {
283
+ customMethods[method] = function (path, doc) {
284
+ const rootHandler = handler((req, res, next) => {
285
+ next();
286
+ });
287
+ innerRouter[method].apply(innerRouter, [path, rootHandler]);
288
+ defineRouteDoc(method, path, doc, rootHandler);
289
+ const props = {};
290
+ return Object.assign(rootHandler, props);
291
+ };
292
+ });
293
+ const routerHandler = function (req, res, next) {
294
+ return innerRouter(req, res, next);
295
+ };
296
+ // Mesclamos o innerRouter (que já é uma função) com os métodos
297
+ // Usamos o 'as any' seguido do 'as CustomRouter' para convencer o TS
298
+ return Object.setPrototypeOf(routerHandler, customMethods);
299
+ };
300
+
301
+ export { router };
302
+ //# sourceMappingURL=router.esm.js.map