@ismael1361/router 1.2.92 → 2.0.1

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 (296) 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/1.0/type.d.ts.map +1 -0
  29. package/dist/1.0/utils.d.ts.map +1 -0
  30. package/dist/2.0/HandleError.d.ts +127 -0
  31. package/dist/2.0/HandleError.d.ts.map +1 -0
  32. package/dist/2.0/HandleError.esm.js.map +1 -0
  33. package/dist/2.0/HandleError.js.map +1 -0
  34. package/dist/2.0/Middlewares.d.ts +178 -0
  35. package/dist/2.0/Middlewares.d.ts.map +1 -0
  36. package/dist/{Middlewares.esm.js → 2.0/Middlewares.esm.js} +5 -5
  37. package/dist/2.0/Middlewares.esm.js.map +1 -0
  38. package/dist/{Middlewares.js → 2.0/Middlewares.js} +5 -5
  39. package/dist/2.0/Middlewares.js.map +1 -0
  40. package/dist/2.0/analyzeSwagger.d.ts +7 -0
  41. package/dist/2.0/analyzeSwagger.d.ts.map +1 -0
  42. package/dist/2.0/analyzeSwagger.esm.js +432 -0
  43. package/dist/2.0/analyzeSwagger.esm.js.map +1 -0
  44. package/dist/2.0/analyzeSwagger.js +435 -0
  45. package/dist/2.0/analyzeSwagger.js.map +1 -0
  46. package/dist/2.0/create.d.ts +75 -0
  47. package/dist/2.0/create.d.ts.map +1 -0
  48. package/dist/2.0/create.esm.js +321 -0
  49. package/dist/2.0/create.esm.js.map +1 -0
  50. package/dist/2.0/create.js +323 -0
  51. package/dist/2.0/create.js.map +1 -0
  52. package/dist/2.0/doc.d.ts +3 -0
  53. package/dist/2.0/doc.d.ts.map +1 -0
  54. package/dist/2.0/doc.esm.js +10 -0
  55. package/dist/2.0/doc.esm.js.map +1 -0
  56. package/dist/2.0/doc.js +12 -0
  57. package/dist/2.0/doc.js.map +1 -0
  58. package/dist/2.0/handler.d.ts +149 -0
  59. package/dist/2.0/handler.d.ts.map +1 -0
  60. package/dist/2.0/handler.esm.js +188 -0
  61. package/dist/2.0/handler.esm.js.map +1 -0
  62. package/dist/2.0/handler.js +191 -0
  63. package/dist/2.0/handler.js.map +1 -0
  64. package/dist/2.0/index.d.ts +8 -0
  65. package/dist/2.0/index.d.ts.map +1 -0
  66. package/dist/2.0/redocUi/index.d.ts +4 -0
  67. package/dist/2.0/redocUi/index.d.ts.map +1 -0
  68. package/dist/{redocUi → 2.0/redocUi}/index.esm.js +1 -1
  69. package/dist/2.0/redocUi/index.esm.js.map +1 -0
  70. package/dist/{redocUi → 2.0/redocUi}/index.js +1 -1
  71. package/dist/2.0/redocUi/index.js.map +1 -0
  72. package/dist/2.0/renderChainDocs.d.ts +3 -0
  73. package/dist/2.0/renderChainDocs.d.ts.map +1 -0
  74. package/dist/2.0/renderChainDocs.esm.js +118 -0
  75. package/dist/2.0/renderChainDocs.esm.js.map +1 -0
  76. package/dist/2.0/renderChainDocs.js +120 -0
  77. package/dist/2.0/renderChainDocs.js.map +1 -0
  78. package/dist/2.0/router.d.ts +73 -0
  79. package/dist/2.0/router.d.ts.map +1 -0
  80. package/dist/2.0/router.esm.js +320 -0
  81. package/dist/2.0/router.esm.js.map +1 -0
  82. package/dist/2.0/router.js +322 -0
  83. package/dist/2.0/router.js.map +1 -0
  84. package/dist/2.0/swagger-markdown/index.d.ts +10 -0
  85. package/dist/2.0/swagger-markdown/index.d.ts.map +1 -0
  86. package/dist/{swagger-markdown → 2.0/swagger-markdown}/index.esm.js +1 -1
  87. package/dist/2.0/swagger-markdown/index.esm.js.map +1 -0
  88. package/dist/{swagger-markdown → 2.0/swagger-markdown}/index.js +1 -1
  89. package/dist/2.0/swagger-markdown/index.js.map +1 -0
  90. package/dist/2.0/swagger-markdown/lib/anchor.d.ts +6 -0
  91. package/dist/2.0/swagger-markdown/lib/anchor.d.ts.map +1 -0
  92. package/dist/2.0/swagger-markdown/lib/anchor.esm.js.map +1 -0
  93. package/dist/2.0/swagger-markdown/lib/anchor.js.map +1 -0
  94. package/dist/2.0/swagger-markdown/lib/inArray.d.ts +9 -0
  95. package/dist/2.0/swagger-markdown/lib/inArray.d.ts.map +1 -0
  96. package/dist/2.0/swagger-markdown/lib/inArray.esm.js.map +1 -0
  97. package/dist/2.0/swagger-markdown/lib/inArray.js.map +1 -0
  98. package/dist/2.0/swagger-markdown/models/schema.d.ts +28 -0
  99. package/dist/2.0/swagger-markdown/models/schema.d.ts.map +1 -0
  100. package/dist/2.0/swagger-markdown/models/schema.esm.js.map +1 -0
  101. package/dist/2.0/swagger-markdown/models/schema.js.map +1 -0
  102. package/dist/2.0/swagger-markdown/transformers/contact.d.ts +8 -0
  103. package/dist/2.0/swagger-markdown/transformers/contact.d.ts.map +1 -0
  104. package/dist/2.0/swagger-markdown/transformers/contact.esm.js.map +1 -0
  105. package/dist/2.0/swagger-markdown/transformers/contact.js.map +1 -0
  106. package/dist/2.0/swagger-markdown/transformers/dataTypes.d.ts +9 -0
  107. package/dist/2.0/swagger-markdown/transformers/dataTypes.d.ts.map +1 -0
  108. package/dist/2.0/swagger-markdown/transformers/dataTypes.esm.js.map +1 -0
  109. package/dist/2.0/swagger-markdown/transformers/dataTypes.js.map +1 -0
  110. package/dist/2.0/swagger-markdown/transformers/definitions.d.ts +14 -0
  111. package/dist/2.0/swagger-markdown/transformers/definitions.d.ts.map +1 -0
  112. package/dist/2.0/swagger-markdown/transformers/definitions.esm.js.map +1 -0
  113. package/dist/2.0/swagger-markdown/transformers/definitions.js.map +1 -0
  114. package/dist/2.0/swagger-markdown/transformers/externalDocs.d.ts +4 -0
  115. package/dist/2.0/swagger-markdown/transformers/externalDocs.d.ts.map +1 -0
  116. package/dist/2.0/swagger-markdown/transformers/externalDocs.esm.js.map +1 -0
  117. package/dist/2.0/swagger-markdown/transformers/externalDocs.js.map +1 -0
  118. package/dist/2.0/swagger-markdown/transformers/info.d.ts +11 -0
  119. package/dist/2.0/swagger-markdown/transformers/info.d.ts.map +1 -0
  120. package/dist/2.0/swagger-markdown/transformers/info.esm.js.map +1 -0
  121. package/dist/2.0/swagger-markdown/transformers/info.js.map +1 -0
  122. package/dist/2.0/swagger-markdown/transformers/license.d.ts +8 -0
  123. package/dist/2.0/swagger-markdown/transformers/license.d.ts.map +1 -0
  124. package/dist/2.0/swagger-markdown/transformers/license.esm.js.map +1 -0
  125. package/dist/2.0/swagger-markdown/transformers/license.js.map +1 -0
  126. package/dist/2.0/swagger-markdown/transformers/path.d.ts +9 -0
  127. package/dist/2.0/swagger-markdown/transformers/path.d.ts.map +1 -0
  128. package/dist/2.0/swagger-markdown/transformers/path.esm.js.map +1 -0
  129. package/dist/2.0/swagger-markdown/transformers/path.js.map +1 -0
  130. package/dist/2.0/swagger-markdown/transformers/pathParameters.d.ts +4 -0
  131. package/dist/2.0/swagger-markdown/transformers/pathParameters.d.ts.map +1 -0
  132. package/dist/2.0/swagger-markdown/transformers/pathParameters.esm.js.map +1 -0
  133. package/dist/2.0/swagger-markdown/transformers/pathParameters.js.map +1 -0
  134. package/dist/2.0/swagger-markdown/transformers/pathResponses.d.ts +9 -0
  135. package/dist/2.0/swagger-markdown/transformers/pathResponses.d.ts.map +1 -0
  136. package/dist/2.0/swagger-markdown/transformers/pathResponses.esm.js.map +1 -0
  137. package/dist/2.0/swagger-markdown/transformers/pathResponses.js.map +1 -0
  138. package/dist/2.0/swagger-markdown/transformers/security.d.ts +4 -0
  139. package/dist/2.0/swagger-markdown/transformers/security.d.ts.map +1 -0
  140. package/dist/2.0/swagger-markdown/transformers/security.esm.js.map +1 -0
  141. package/dist/2.0/swagger-markdown/transformers/security.js.map +1 -0
  142. package/dist/2.0/swagger-markdown/transformers/securityDefinitions.d.ts +6 -0
  143. package/dist/2.0/swagger-markdown/transformers/securityDefinitions.d.ts.map +1 -0
  144. package/dist/2.0/swagger-markdown/transformers/securityDefinitions.esm.js.map +1 -0
  145. package/dist/2.0/swagger-markdown/transformers/securityDefinitions.js.map +1 -0
  146. package/dist/2.0/type.d.ts +661 -0
  147. package/dist/2.0/type.d.ts.map +1 -0
  148. package/dist/2.0/utils.d.ts +79 -0
  149. package/dist/2.0/utils.d.ts.map +1 -0
  150. package/dist/{utils.esm.js → 2.0/utils.esm.js} +61 -89
  151. package/dist/2.0/utils.esm.js.map +1 -0
  152. package/dist/{utils.js → 2.0/utils.js} +65 -94
  153. package/dist/2.0/utils.js.map +1 -0
  154. package/dist/index.d.ts +1 -149
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.esm.js +6 -163
  157. package/dist/index.esm.js.map +1 -1
  158. package/dist/index.js +11 -169
  159. package/dist/index.js.map +1 -1
  160. package/package.json +5 -3
  161. package/dist/Doc/index.d.ts.map +0 -1
  162. package/dist/Doc/type.d.ts.map +0 -1
  163. package/dist/HandleError.d.ts.map +0 -1
  164. package/dist/HandleError.esm.js.map +0 -1
  165. package/dist/HandleError.js.map +0 -1
  166. package/dist/Layer.d.ts.map +0 -1
  167. package/dist/Layer.esm.js +0 -274
  168. package/dist/Layer.esm.js.map +0 -1
  169. package/dist/Layer.js +0 -276
  170. package/dist/Layer.js.map +0 -1
  171. package/dist/Middlewares.d.ts.map +0 -1
  172. package/dist/Middlewares.esm.js.map +0 -1
  173. package/dist/Middlewares.js.map +0 -1
  174. package/dist/handler.d.ts.map +0 -1
  175. package/dist/handler.esm.js +0 -171
  176. package/dist/handler.esm.js.map +0 -1
  177. package/dist/handler.js +0 -174
  178. package/dist/handler.js.map +0 -1
  179. package/dist/middleware.d.ts.map +0 -1
  180. package/dist/middleware.esm.js +0 -152
  181. package/dist/middleware.esm.js.map +0 -1
  182. package/dist/middleware.js +0 -155
  183. package/dist/middleware.js.map +0 -1
  184. package/dist/redocUi/index.d.ts.map +0 -1
  185. package/dist/redocUi/index.esm.js.map +0 -1
  186. package/dist/redocUi/index.js.map +0 -1
  187. package/dist/router.d.ts.map +0 -1
  188. package/dist/router.esm.js +0 -723
  189. package/dist/router.esm.js.map +0 -1
  190. package/dist/router.js +0 -744
  191. package/dist/router.js.map +0 -1
  192. package/dist/swagger-markdown/index.d.ts.map +0 -1
  193. package/dist/swagger-markdown/index.esm.js.map +0 -1
  194. package/dist/swagger-markdown/index.js.map +0 -1
  195. package/dist/swagger-markdown/lib/anchor.d.ts.map +0 -1
  196. package/dist/swagger-markdown/lib/anchor.esm.js.map +0 -1
  197. package/dist/swagger-markdown/lib/anchor.js.map +0 -1
  198. package/dist/swagger-markdown/lib/inArray.d.ts.map +0 -1
  199. package/dist/swagger-markdown/lib/inArray.esm.js.map +0 -1
  200. package/dist/swagger-markdown/lib/inArray.js.map +0 -1
  201. package/dist/swagger-markdown/models/schema.d.ts.map +0 -1
  202. package/dist/swagger-markdown/models/schema.esm.js.map +0 -1
  203. package/dist/swagger-markdown/models/schema.js.map +0 -1
  204. package/dist/swagger-markdown/transformers/contact.d.ts.map +0 -1
  205. package/dist/swagger-markdown/transformers/contact.esm.js.map +0 -1
  206. package/dist/swagger-markdown/transformers/contact.js.map +0 -1
  207. package/dist/swagger-markdown/transformers/dataTypes.d.ts.map +0 -1
  208. package/dist/swagger-markdown/transformers/dataTypes.esm.js.map +0 -1
  209. package/dist/swagger-markdown/transformers/dataTypes.js.map +0 -1
  210. package/dist/swagger-markdown/transformers/definitions.d.ts.map +0 -1
  211. package/dist/swagger-markdown/transformers/definitions.esm.js.map +0 -1
  212. package/dist/swagger-markdown/transformers/definitions.js.map +0 -1
  213. package/dist/swagger-markdown/transformers/externalDocs.d.ts.map +0 -1
  214. package/dist/swagger-markdown/transformers/externalDocs.esm.js.map +0 -1
  215. package/dist/swagger-markdown/transformers/externalDocs.js.map +0 -1
  216. package/dist/swagger-markdown/transformers/info.d.ts.map +0 -1
  217. package/dist/swagger-markdown/transformers/info.esm.js.map +0 -1
  218. package/dist/swagger-markdown/transformers/info.js.map +0 -1
  219. package/dist/swagger-markdown/transformers/license.d.ts.map +0 -1
  220. package/dist/swagger-markdown/transformers/license.esm.js.map +0 -1
  221. package/dist/swagger-markdown/transformers/license.js.map +0 -1
  222. package/dist/swagger-markdown/transformers/path.d.ts.map +0 -1
  223. package/dist/swagger-markdown/transformers/path.esm.js.map +0 -1
  224. package/dist/swagger-markdown/transformers/path.js.map +0 -1
  225. package/dist/swagger-markdown/transformers/pathParameters.d.ts.map +0 -1
  226. package/dist/swagger-markdown/transformers/pathParameters.esm.js.map +0 -1
  227. package/dist/swagger-markdown/transformers/pathParameters.js.map +0 -1
  228. package/dist/swagger-markdown/transformers/pathResponses.d.ts.map +0 -1
  229. package/dist/swagger-markdown/transformers/pathResponses.esm.js.map +0 -1
  230. package/dist/swagger-markdown/transformers/pathResponses.js.map +0 -1
  231. package/dist/swagger-markdown/transformers/security.d.ts.map +0 -1
  232. package/dist/swagger-markdown/transformers/security.esm.js.map +0 -1
  233. package/dist/swagger-markdown/transformers/security.js.map +0 -1
  234. package/dist/swagger-markdown/transformers/securityDefinitions.d.ts.map +0 -1
  235. package/dist/swagger-markdown/transformers/securityDefinitions.esm.js.map +0 -1
  236. package/dist/swagger-markdown/transformers/securityDefinitions.js.map +0 -1
  237. package/dist/type.d.ts.map +0 -1
  238. package/dist/utils.d.ts.map +0 -1
  239. package/dist/utils.esm.js.map +0 -1
  240. package/dist/utils.js.map +0 -1
  241. /package/dist/{Doc → 1.0/Doc}/index.d.ts +0 -0
  242. /package/dist/{Doc → 1.0/Doc}/type.d.ts +0 -0
  243. /package/dist/{HandleError.d.ts → 1.0/HandleError.d.ts} +0 -0
  244. /package/dist/{Layer.d.ts → 1.0/Layer.d.ts} +0 -0
  245. /package/dist/{Middlewares.d.ts → 1.0/Middlewares.d.ts} +0 -0
  246. /package/dist/{handler.d.ts → 1.0/handler.d.ts} +0 -0
  247. /package/dist/{middleware.d.ts → 1.0/middleware.d.ts} +0 -0
  248. /package/dist/{redocUi → 1.0/redocUi}/index.d.ts +0 -0
  249. /package/dist/{router.d.ts → 1.0/router.d.ts} +0 -0
  250. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/index.d.ts +0 -0
  251. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/lib/anchor.d.ts +0 -0
  252. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/lib/inArray.d.ts +0 -0
  253. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/models/schema.d.ts +0 -0
  254. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/contact.d.ts +0 -0
  255. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/dataTypes.d.ts +0 -0
  256. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/definitions.d.ts +0 -0
  257. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/externalDocs.d.ts +0 -0
  258. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/info.d.ts +0 -0
  259. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/license.d.ts +0 -0
  260. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/path.d.ts +0 -0
  261. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/pathParameters.d.ts +0 -0
  262. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/pathResponses.d.ts +0 -0
  263. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/security.d.ts +0 -0
  264. /package/dist/{swagger-markdown → 1.0/swagger-markdown}/transformers/securityDefinitions.d.ts +0 -0
  265. /package/dist/{type.d.ts → 1.0/type.d.ts} +0 -0
  266. /package/dist/{utils.d.ts → 1.0/utils.d.ts} +0 -0
  267. /package/dist/{HandleError.esm.js → 2.0/HandleError.esm.js} +0 -0
  268. /package/dist/{HandleError.js → 2.0/HandleError.js} +0 -0
  269. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/lib/anchor.esm.js +0 -0
  270. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/lib/anchor.js +0 -0
  271. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/lib/inArray.esm.js +0 -0
  272. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/lib/inArray.js +0 -0
  273. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/models/schema.esm.js +0 -0
  274. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/models/schema.js +0 -0
  275. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/contact.esm.js +0 -0
  276. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/contact.js +0 -0
  277. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/dataTypes.esm.js +0 -0
  278. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/dataTypes.js +0 -0
  279. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/definitions.esm.js +0 -0
  280. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/definitions.js +0 -0
  281. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/externalDocs.esm.js +0 -0
  282. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/externalDocs.js +0 -0
  283. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/info.esm.js +0 -0
  284. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/info.js +0 -0
  285. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/license.esm.js +0 -0
  286. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/license.js +0 -0
  287. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/path.esm.js +0 -0
  288. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/path.js +0 -0
  289. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/pathParameters.esm.js +0 -0
  290. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/pathParameters.js +0 -0
  291. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/pathResponses.esm.js +0 -0
  292. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/pathResponses.js +0 -0
  293. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/security.esm.js +0 -0
  294. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/security.js +0 -0
  295. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/securityDefinitions.esm.js +0 -0
  296. /package/dist/{swagger-markdown → 2.0/swagger-markdown}/transformers/securityDefinitions.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderChainDocs.d.ts","sourceRoot":"","sources":["../../src/2.0/renderChainDocs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAyC,MAAM,QAAQ,CAAC;AAqC9F,eAAO,MAAM,eAAe,GAAI,MAAM,QAAQ,EAAE,KAAG,OAAO,CAAC,cAAc,CAsHxE,CAAC"}
@@ -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":"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"}
@@ -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":"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"}
@@ -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,OAyTzB,CAAC"}
@@ -0,0 +1,320 @@
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 convertExpressPathToSwagger = (path) => {
182
+ // A regex busca por padrões que começam com ':'
183
+ // Seguidos por caracteres alfanuméricos (o nome do parâmetro)
184
+ // E ignora o sufixo '?' caso seja um parâmetro opcional do Express
185
+ return path.replace(/:([a-zA-Z0-9_]+)\??/g, "{$1}");
186
+ };
187
+ const getSwagger = () => {
188
+ const _a = this.getSwagger(), { definition } = _a, rest = __rest(_a, ["definition"]);
189
+ console.log(Object.keys(definition));
190
+ if (definition.paths) {
191
+ const newPaths = {};
192
+ for (const path in definition.paths) {
193
+ const convertedPath = convertExpressPathToSwagger(path);
194
+ newPaths[convertedPath] = Object.assign({}, definition.paths[path]);
195
+ }
196
+ definition.paths = newPaths;
197
+ }
198
+ return Object.assign({ definition }, rest);
199
+ };
200
+ const getSwaggerMarkdown = () => {
201
+ return swaggerMarkdown.convert(getSwagger());
202
+ };
203
+ const getSwaggerOptions = () => {
204
+ return getSwagger();
205
+ };
206
+ const getSwaggerDefinition = () => {
207
+ return swaggerJSDoc(getSwagger());
208
+ };
209
+ innerRouter.use("/doc/.md", (res, req) => {
210
+ req.setHeader("Content-Type", "text/markdown");
211
+ req.send(getSwaggerMarkdown());
212
+ });
213
+ innerRouter.use("/doc/markdown", (...args) => {
214
+ swaggerMarkdown.setup(getSwaggerOptions()).apply(this.app, args);
215
+ });
216
+ innerRouter.get("/doc/swagger/definition.json", (req, res) => {
217
+ res.json(getSwaggerDefinition());
218
+ });
219
+ innerRouter.use("/doc/swagger", swaggerUi.serve, (...args) => {
220
+ swaggerUi.setup(getSwaggerDefinition()).apply(this.app, args);
221
+ });
222
+ innerRouter.use("/doc/redoc", (...args) => {
223
+ setup(getSwaggerOptions()).apply(this.app, args);
224
+ });
225
+ return {
226
+ markdownPath: joinPaths(this.path, "/doc/.md"),
227
+ definitionPath: joinPaths(this.path, "/doc/swagger/definition.json"),
228
+ swaggerUiPath: joinPaths(this.path, "/doc/swagger"),
229
+ redocUiPath: joinPaths(this.path, "/doc/redoc"),
230
+ };
231
+ },
232
+ getSwagger() {
233
+ var _a;
234
+ if (!innerSwaggerOptions) {
235
+ throw new Error("Swagger options not defined. Please set the swagger options using the defineSwagger method.");
236
+ }
237
+ const swaggerOptions = Object.assign(Object.assign({}, innerSwaggerOptions), { path: innerSwaggerOptions.path || "/doc", defaultResponses: innerSwaggerOptions.defaultResponses || {} });
238
+ let doc = { paths: (swaggerOptions === null || swaggerOptions === void 0 ? void 0 : swaggerOptions.paths) || {}, components: (swaggerOptions === null || swaggerOptions === void 0 ? void 0 : swaggerOptions.components) || {} };
239
+ doc = joinObject(doc, renderChainDocs(this.__chain_docs__));
240
+ const definition = Object.assign(Object.assign({}, omit(swaggerOptions, "path", "defaultResponses")), omit(doc, "path", "defaultResponses"));
241
+ // Valida o documento OAS antes de gerar os snippets
242
+ const analysisErrors = analyzeSwaggerJSONDoc(definition);
243
+ if (analysisErrors.length > 0) {
244
+ throw analysisErrors[0];
245
+ }
246
+ const targets = innerSwaggerOptions.targets || [
247
+ "c_libcurl",
248
+ "csharp_restsharp",
249
+ "go_native",
250
+ "java_unirest",
251
+ "javascript_xhr",
252
+ "node_native",
253
+ "objc_nsurlsession",
254
+ "ocaml_cohttp",
255
+ "php_curl",
256
+ "python_python3",
257
+ "ruby_native",
258
+ "shell_curl",
259
+ "swift_nsurlsession",
260
+ ];
261
+ for (const path in definition.paths) {
262
+ for (const method in definition.paths[path]) {
263
+ try {
264
+ const generatedCode = OpenAPISnippet.getEndpointSnippets(Object.assign({ servers: [
265
+ {
266
+ url: "http://[hostname]",
267
+ },
268
+ ] }, definition), path, method, targets);
269
+ definition.paths[path][method]["x-codeSamples"] = [];
270
+ for (const snippetIdx in generatedCode.snippets) {
271
+ const snippet = generatedCode.snippets[snippetIdx];
272
+ definition.paths[path][method]["x-codeSamples"][snippetIdx] = { lang: targetLabels[snippet.id], label: snippet.title, source: snippet.content };
273
+ }
274
+ if ("stackFrames" in definition.paths[path][method]) {
275
+ delete definition.paths[path][method].stackFrames;
276
+ }
277
+ }
278
+ catch (e) {
279
+ 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);
280
+ }
281
+ }
282
+ }
283
+ if (definition.components && "stackFrames" in definition.components) {
284
+ delete definition.components.stackFrames;
285
+ }
286
+ if ("defaultResponses" in definition) {
287
+ delete definition.defaultResponses;
288
+ }
289
+ if ("stackFrames" in definition) {
290
+ delete definition.stackFrames;
291
+ }
292
+ return {
293
+ definition,
294
+ apis: [],
295
+ };
296
+ },
297
+ };
298
+ METHODS.concat("all")
299
+ .map((m) => m.toLowerCase())
300
+ .forEach((method) => {
301
+ customMethods[method] = function (path, doc) {
302
+ const rootHandler = handler((req, res, next) => {
303
+ next();
304
+ });
305
+ innerRouter[method].apply(innerRouter, [path, rootHandler]);
306
+ defineRouteDoc(method, path, doc, rootHandler);
307
+ const props = {};
308
+ return Object.assign(rootHandler, props);
309
+ };
310
+ });
311
+ const routerHandler = function (req, res, next) {
312
+ return innerRouter(req, res, next);
313
+ };
314
+ // Mesclamos o innerRouter (que já é uma função) com os métodos
315
+ // Usamos o 'as any' seguido do 'as CustomRouter' para convencer o TS
316
+ return Object.setPrototypeOf(routerHandler, customMethods);
317
+ };
318
+
319
+ export { router };
320
+ //# sourceMappingURL=router.esm.js.map