@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,661 @@
1
+ import type * as core from "express-serve-static-core";
2
+ import type { NextFunction } from "express";
3
+ import type swaggerJSDoc from "swagger-jsdoc";
4
+ import type { Readable } from "stream";
5
+ type IsBad<T> = 0 extends 1 & T ? true : [T] extends [never] ? true : unknown extends T ? true : "" extends T ? true : string extends T ? true : false;
6
+ type Join<A, B> = IsBad<A> extends true ? B : IsBad<B> extends true ? A : A & B;
7
+ export type ExtractRouteParameters<Path extends string> = Extract<keyof core.RouteParameters<Path>, string>;
8
+ export type ParamsDictionary<P extends string = string> = {
9
+ [key in P]: string;
10
+ };
11
+ export interface Request<P extends string = string, ReqBody = {}, ReqQuery = core.Query, ResBody = any> extends core.Request<ParamsDictionary<P>, ResBody, ReqBody, ReqQuery, Record<string, any>> {
12
+ __executedMiddlewares__?: Set<any>;
13
+ clientIp?: string;
14
+ /**
15
+ * Controla a execução do middleware para a requisição atual.
16
+ * Útil para garantir que um middleware seja executado apenas uma vez, mesmo que seja
17
+ * aplicado em múltiplos níveis de rotas.
18
+ *
19
+ * @param {boolean} [isOnce=true] - Se `true`, o middleware não será executado novamente para a mesma requisição. Se `false`, permite que o middleware seja executado novamente.
20
+ *
21
+ * @example
22
+ * // Middleware que executa uma lógica apenas uma vez por requisição.
23
+ * const myMiddleware: MiddlewareFC = (req, res, next) => {
24
+ * // Garante que este bloco de código execute apenas uma vez.
25
+ * req.executeOnce?.();
26
+ *
27
+ * console.log("Este middleware só roda uma vez!");
28
+ * next();
29
+ * };
30
+ */
31
+ executeOnce?: (isOnce?: boolean) => void;
32
+ }
33
+ export type JoinRequest<A extends Request, B extends Request> = A extends Request<infer AP, infer AReqBody, infer AReqQuery, infer AResBody> & infer AReq ? B extends Request<infer BP, infer BReqBody, infer BReqQuery, infer BResBody> & infer BReq ? Request<Join<AP, BP>, Join<AReqBody, BReqBody>, Join<AReqQuery, BReqQuery>, Join<AResBody, BResBody>> & (AReq & BReq) : never : never;
34
+ export interface Response<ResBody = any> extends core.Response<ResBody, Record<string, any>> {
35
+ }
36
+ export type JoinResponse<A extends Response, B extends Response> = A extends Response<infer AResBody> ? (B extends Response<infer BResBody> ? Response<AResBody & BResBody> : never) : never;
37
+ export interface RequestHandler<Req extends Request = Request, Res extends Response = Response> {
38
+ (req: Req, res: Res, next: NextFunction): unknown;
39
+ }
40
+ export type { NextFunction };
41
+ export type TDocComponents = swaggerJSDoc.Components;
42
+ export type TDocOperation = (swaggerJSDoc.Operation & {
43
+ components?: TDocComponents;
44
+ }) | swaggerJSDoc.Operation;
45
+ export interface IDoc<R = TDocOperation> {
46
+ (operation: TDocOperation, components?: TDocComponents): R;
47
+ }
48
+ export interface IHandler<Rq extends Request = Request, Rs extends Response = Response> extends RequestHandler<Rq, Rs> {
49
+ /**
50
+ * Adiciona um middleware ou handler à cadeia de execução, mesclando os tipos
51
+ * genéricos de request e response com os já acumulados.
52
+ *
53
+ * @typeParam Req - Tipo de request do handler sendo adicionado.
54
+ * @typeParam Res - Tipo de response do handler sendo adicionado.
55
+ * @param fn - Função handler ou instância de {@link IHandler} a ser encadeada.
56
+ * @returns Nova instância de {@link IHandler} com os tipos mesclados.
57
+ *
58
+ * @example
59
+ * app.get("/profile/:id")
60
+ * .handler((req, res, next) => {
61
+ * // middleware intermediário
62
+ * console.log(`Acessando perfil ${req.params.id}`);
63
+ * next();
64
+ * })
65
+ * .handler((req, res) => {
66
+ * res.json({ id: req.params.id });
67
+ * });
68
+ */
69
+ handler<Req extends Request = Request, Res extends Response = Response>(fn: RequestHandler<Req & Rq, Res & Rs> | IHandler<Req & Rq, Res & Rs>): IHandler<JoinRequest<Rq, Req>, JoinResponse<Rs, Res>>;
70
+ /**
71
+ * Anexa documentação OpenAPI/Swagger ao handler atual sem alterar o fluxo de execução.
72
+ * A documentação é mesclada na árvore interna e utilizada na geração do spec OpenAPI.
73
+ *
74
+ * @param operation - Objeto de operação OpenAPI (tags, summary, parameters, requestBody, etc.).
75
+ * @param components - Componentes OpenAPI adicionais (schemas, securitySchemes, etc.).
76
+ * @returns A mesma instância de {@link IHandler}, permitindo encadeamento contínuo.
77
+ *
78
+ * @example
79
+ * app.get("/users/:userId")
80
+ * .handler(authMiddleware)
81
+ * .doc({
82
+ * tags: ["Users"],
83
+ * summary: "Buscar usuário por ID",
84
+ * parameters: [
85
+ * { name: "userId", in: "path", required: true, schema: { type: "string" } },
86
+ * ],
87
+ * })
88
+ * .handler((req, res) => {
89
+ * res.json({ userId: req.params.userId });
90
+ * });
91
+ *
92
+ * @example
93
+ * // Documentação com componentes de segurança
94
+ * app.delete("/users/:id")
95
+ * .handler(authMiddleware)
96
+ * .doc(
97
+ * {
98
+ * tags: ["Users"],
99
+ * summary: "Remover usuário",
100
+ * security: [{ bearerAuth: [] }],
101
+ * },
102
+ * {
103
+ * securitySchemes: {
104
+ * bearerAuth: { type: "http", scheme: "bearer" },
105
+ * },
106
+ * },
107
+ * )
108
+ * .handler((req, res) => {
109
+ * res.sendStatus(204);
110
+ * });
111
+ */
112
+ doc: IDoc<IHandler<Rq, Rs>>;
113
+ }
114
+ export interface IMiddleware<Rq extends Request = Request, Rs extends Response = Response> extends RequestHandler<Rq, Rs> {
115
+ /**
116
+ * Anexa documentação OpenAPI/Swagger ao middleware sem alterar o fluxo de execução.
117
+ * A documentação é mesclada na árvore interna quando o middleware é encadeado via
118
+ * `.handler()` em um {@link IHandler}.
119
+ *
120
+ * @param operation - Objeto de operação OpenAPI (security, parameters, requestBody, etc.).
121
+ * @param components - Componentes OpenAPI adicionais (schemas, securitySchemes, etc.).
122
+ * @returns A mesma instância de {@link IMiddleware}, permitindo encadeamento de `.doc()`.
123
+ *
124
+ * @example
125
+ * const authMiddleware = middleware((req: AuthRequest, res, next) => {
126
+ * next();
127
+ * }).doc({
128
+ * security: [{ bearerAuth: [] }],
129
+ * components: {
130
+ * securitySchemes: {
131
+ * bearerAuth: { type: "http", scheme: "bearer" },
132
+ * },
133
+ * },
134
+ * });
135
+ *
136
+ * @example
137
+ * // Documentação com parâmetros de header
138
+ * const apiKeyMiddleware = middleware((req, res, next) => {
139
+ * if (!req.headers["x-api-key"]) {
140
+ * res.status(401).json({ error: "API key required" });
141
+ * return;
142
+ * }
143
+ * next();
144
+ * }).doc({
145
+ * parameters: [
146
+ * { name: "x-api-key", in: "header", required: true, schema: { type: "string" } },
147
+ * ],
148
+ * });
149
+ */
150
+ doc: IDoc<IMiddleware<Rq, Rs>>;
151
+ }
152
+ export type Methods = "all" | "get" | "post" | "put" | "delete" | "patch" | "options" | "head";
153
+ export type PathParams = string | RegExp | Array<string | RegExp>;
154
+ /**
155
+ * Interface que define a assinatura de um método HTTP no router (ex.: `.get()`, `.post()`, `.delete()`).
156
+ * Ao ser chamado com um caminho de rota, retorna um {@link IHandler} tipado com os parâmetros
157
+ * extraídos automaticamente da string de rota.
158
+ *
159
+ * @typeParam Method - O método HTTP associado (ex.: `"get"`, `"post"`, `"all"`).
160
+ *
161
+ * @example
162
+ * // Parâmetros de rota são inferidos automaticamente
163
+ * app.get("/users/:userId/posts/:postId")
164
+ * .handler((req, res) => {
165
+ * // req.params.userId e req.params.postId são inferidos como string
166
+ * res.json({ userId: req.params.userId, postId: req.params.postId });
167
+ * });
168
+ *
169
+ * @example
170
+ * // Com documentação OpenAPI inline
171
+ * app.post("/items", { tags: ["Items"], summary: "Criar item" })
172
+ * .handler((req, res) => {
173
+ * res.status(201).json({ id: 1 });
174
+ * });
175
+ */
176
+ export interface IRouterMatcher<Method extends Methods = any> {
177
+ /**
178
+ * Registra um handler para o método HTTP associado neste caminho de rota, retornando um {@link IHandler} com os tipos de parâmetros extraídos.
179
+ *
180
+ * @param path - Caminho de rota, que pode conter parâmetros nomeados (ex.: `"/users/:id"`).
181
+ * @param doc - Documentação OpenAPI/Swagger para a rota.
182
+ * @returns Instância de {@link IHandler} com os tipos de request e response adequados.
183
+ *
184
+ * @example
185
+ * app.get("/users/:userId")
186
+ * .handler((req, res) => {
187
+ * // req.params.userId é inferido como string
188
+ * res.json({ userId: req.params.userId });
189
+ * });
190
+ *
191
+ * @example
192
+ * // Com documentação OpenAPI inline
193
+ * app.post("/items", { tags: ["Items"], summary: "Criar item" })
194
+ * .handler((req, res) => {
195
+ * res.status(201).json({ id: 1 });
196
+ * });
197
+ */
198
+ <Path extends string, P extends string = ExtractRouteParameters<Path>>(path: Path, doc?: TDocOperation): IHandler<Request<P>>;
199
+ /**
200
+ * Registra um handler para o método HTTP associado neste caminho de rota, retornando um {@link IHandler} com os tipos de parâmetros extraídos.
201
+ *
202
+ * @param path - Caminho de rota, que pode conter parâmetros nomeados (ex.: `"/users/:id"`).
203
+ * @param doc - Documentação OpenAPI/Swagger para a rota.
204
+ * @returns Instância de {@link IHandler} com os tipos de request e response adequados.
205
+ *
206
+ * @example
207
+ * app.get("/users/:userId", { tags: ["Users"], summary: "Buscar usuário por ID" })
208
+ * .handler((req, res) => {
209
+ * res.json({ userId: req.params.userId });
210
+ * });
211
+ *
212
+ * @example
213
+ * // Documentação com componentes de segurança
214
+ * app.delete("/users/:id", { security: [{ bearerAuth: [] }] }, {
215
+ * securitySchemes: {
216
+ * bearerAuth: { type: "http", scheme: "bearer" },
217
+ * },
218
+ * })
219
+ * .handler((req, res) => {
220
+ * res.sendStatus(204);
221
+ * });
222
+ */
223
+ (path: PathParams, doc?: TDocOperation): IHandler;
224
+ }
225
+ /**
226
+ * Interface principal do router, que estende {@link RequestHandler} e expõe métodos HTTP,
227
+ * sub-rotas, middlewares e configuração de documentação OpenAPI/Swagger.
228
+ *
229
+ * Pode ser criado via `router()` e aninhado em outros routers ou em uma aplicação via `.route()` ou `.use()`.
230
+ *
231
+ * @example
232
+ * // Criar um router e definir rotas
233
+ * import { router } from "./2.0";
234
+ *
235
+ * const api = router();
236
+ *
237
+ * api.get("/users")
238
+ * .handler((req, res) => {
239
+ * res.json([{ name: "Alice" }]);
240
+ * })
241
+ * .doc({ tags: ["Users"], summary: "Listar usuários" });
242
+ *
243
+ * api.post("/users")
244
+ * .handler((req, res) => {
245
+ * res.status(201).json({ id: 1 });
246
+ * })
247
+ * .doc({ tags: ["Users"], summary: "Criar usuário" });
248
+ *
249
+ * @example
250
+ * // Aninhar routers com prefixo
251
+ * const v1 = router();
252
+ *
253
+ * v1.get("/test/route")
254
+ * .handler((req, res) => {
255
+ * res.send("Hello from v1!");
256
+ * })
257
+ * .doc({ tags: ["V1"], summary: "Rota de teste v1" });
258
+ *
259
+ * app.route("/v1", v1, {
260
+ * security: [{ bearerAuth: [] }],
261
+ * responses: {
262
+ * "400": { description: "Dados inválidos" },
263
+ * "404": { description: "Não encontrado" },
264
+ * },
265
+ * });
266
+ *
267
+ * @example
268
+ * // Configurar documentação Swagger
269
+ * app.defineSwagger({
270
+ * openapi: "3.0.0",
271
+ * info: { title: "My API", version: "1.0.0" },
272
+ * defaultResponses: {
273
+ * 400: { description: "Dados inválidos" },
274
+ * 401: { description: "Falha na autenticação" },
275
+ * 500: { description: "Erro interno do servidor" },
276
+ * },
277
+ * });
278
+ */
279
+ export interface IRouter extends RequestHandler {
280
+ /** Mapeia um callback para parâmetros de rota nomeados, equivalente a `app.param()` do Express. */
281
+ "param": core.Application["param"];
282
+ /** Registra um handler para todos os métodos HTTP no caminho especificado. */
283
+ "all": IRouterMatcher<"all">;
284
+ /** Registra um handler para requisições GET. */
285
+ "get": IRouterMatcher<"get">;
286
+ /** Registra um handler para requisições POST. */
287
+ "post": IRouterMatcher<"post">;
288
+ /** Registra um handler para requisições PUT. */
289
+ "put": IRouterMatcher<"put">;
290
+ /** Registra um handler para requisições DELETE. */
291
+ "delete": IRouterMatcher<"delete">;
292
+ /** Registra um handler para requisições PATCH. */
293
+ "patch": IRouterMatcher<"patch">;
294
+ /** Registra um handler para requisições OPTIONS. */
295
+ "options": IRouterMatcher<"options">;
296
+ /** Registra um handler para requisições HEAD. */
297
+ "head": IRouterMatcher<"head">;
298
+ "checkout": IRouterMatcher;
299
+ "copy": IRouterMatcher;
300
+ "lock": IRouterMatcher;
301
+ "merge": IRouterMatcher;
302
+ "mkactivity": IRouterMatcher;
303
+ "mkcol": IRouterMatcher;
304
+ "move": IRouterMatcher;
305
+ "m-search": IRouterMatcher;
306
+ "notify": IRouterMatcher;
307
+ "purge": IRouterMatcher;
308
+ "report": IRouterMatcher;
309
+ "search": IRouterMatcher;
310
+ "subscribe": IRouterMatcher;
311
+ "trace": IRouterMatcher;
312
+ "unlock": IRouterMatcher;
313
+ "unsubscribe": IRouterMatcher;
314
+ /** Router pai ao qual este router está aninhado, ou `null` se for o router raiz. */
315
+ "parent": IRouter | null;
316
+ /** Caminho de prefixo deste router dentro do router pai. */
317
+ "path": string;
318
+ /**
319
+ * Cria ou anexa um sub-router em um prefixo de rota, permitindo modularizar a aplicação.
320
+ *
321
+ * @param prefix - Prefixo de caminho para o sub-router.
322
+ * @param router - Instância de {@link IRouter} a ser aninhada (opcional).
323
+ * @param doc - Documentação OpenAPI aplicada a todas as rotas do sub-router.
324
+ * @returns O sub-router criado ou anexado.
325
+ *
326
+ * @example
327
+ * // Criar sub-router inline
328
+ * const usersRoute = app.route("/users");
329
+ * usersRoute.get("/").handler((req, res) => res.json([]));
330
+ *
331
+ * @example
332
+ * // Anexar router existente com documentação
333
+ * const v1 = router();
334
+ * v1.get("/items").handler((req, res) => res.json([]));
335
+ *
336
+ * app.route("/v1", v1, {
337
+ * security: [{ bearerAuth: [] }],
338
+ * });
339
+ */
340
+ route<T extends string>(prefix: T, doc?: TDocOperation): IRouter;
341
+ route<T extends string>(prefix: T, router: IRouter, doc?: TDocOperation): IRouter;
342
+ route(router: IRouter, doc?: TDocOperation): IRouter;
343
+ /**
344
+ * Registra um middleware, handler ou sub-router no caminho especificado.
345
+ * Quando chamado apenas com prefixo e sem handler, retorna um {@link IHandler} encadeável.
346
+ *
347
+ * @param prefix - Prefixo de caminho (opcional).
348
+ * @param handler - Instância de {@link IRouter}, {@link RequestHandler} ou middleware.
349
+ * @param doc - Documentação OpenAPI para o middleware.
350
+ *
351
+ * @example
352
+ * // Middleware global sem prefixo
353
+ * app.use((req, res, next) => {
354
+ * console.log(`${req.method} ${req.url}`);
355
+ * next();
356
+ * });
357
+ *
358
+ * @example
359
+ * // Sub-router com prefixo
360
+ * const apiRouter = router();
361
+ * app.use("/api", apiRouter);
362
+ *
363
+ * @example
364
+ * // Handler encadeável com prefixo
365
+ * app.use("/health")
366
+ * .handler((req, res) => {
367
+ * res.json({ status: "ok" });
368
+ * });
369
+ */
370
+ use<T extends string, P extends string = ExtractRouteParameters<T>>(prefix: T, doc?: TDocOperation): IHandler<Request<P>>;
371
+ use<T extends string, P extends string = ExtractRouteParameters<T>>(prefix: T, handler: IRouter | RequestHandler, doc?: TDocOperation): void;
372
+ use(handler: IRouter | RequestHandler, doc?: TDocOperation): void;
373
+ /**
374
+ * Define as opções de documentação Swagger/OpenAPI para este router.
375
+ * Habilita a geração automática de spec OpenAPI e endpoints de documentação
376
+ * (Swagger UI, Markdown, etc.).
377
+ *
378
+ * @param options - Configuração OpenAPI 3.0 com opções adicionais como
379
+ * `defaultResponses`, `path` e `targets` para snippets.
380
+ *
381
+ * @example
382
+ * app.defineSwagger({
383
+ * openapi: "3.0.0",
384
+ * info: { title: "My API", version: "1.0.0" },
385
+ * path: "/doc",
386
+ * defaultResponses: {
387
+ * 400: { description: "Dados inválidos" },
388
+ * 401: { description: "Falha na autenticação" },
389
+ * 500: { description: "Erro interno do servidor" },
390
+ * },
391
+ * targets: ["shell_curl", "javascript_xhr", "node_native"],
392
+ * });
393
+ */
394
+ defineSwagger(options: SwaggerOptions): void;
395
+ /**
396
+ * Retorna a especificação Swagger/OpenAPI gerada a partir de todas as rotas,
397
+ * handlers e documentações registradas neste router.
398
+ *
399
+ * @returns Objeto de opções compatível com `swagger-jsdoc`.
400
+ *
401
+ * @example
402
+ * const spec = app.getSwagger();
403
+ * console.log(JSON.stringify(spec, null, 2));
404
+ */
405
+ getSwagger(): swaggerJSDoc.Options;
406
+ }
407
+ /**
408
+ * Define a estrutura da documentação Swagger/OpenAPI que pode ser anexada a um middleware.
409
+ * Permite que middlewares contribuam com definições de segurança, parâmetros, etc., que são
410
+ * mescladas com a documentação da rota final.
411
+ *
412
+ * @see MiddlewareFC
413
+ * @example
414
+ * const authMiddleware: MiddlewareFC = (req, res, next) => { next(); };
415
+ * authMiddleware.doc = {
416
+ * security: [{ BearerAuth: [] }],
417
+ * components: {
418
+ * securitySchemes: { BearerAuth: { type: "http", scheme: "bearer" } }
419
+ * }
420
+ * };
421
+ */
422
+ export type MiddlewareFCDoc = swaggerJSDoc.Operation & {
423
+ components?: swaggerJSDoc.Components;
424
+ };
425
+ export type SnippetTargets = "c_libcurl" | "csharp_restsharp" | "csharp_httpclient" | "go_native" | "java_okhttp" | "java_unirest" | "javascript_jquery" | "javascript_xhr" | "node_native" | "node_request" | "node_unirest" | "objc_nsurlsession" | "ocaml_cohttp" | "php_curl" | "php_http1" | "php_http2" | "python_python3" | "python_requests" | "ruby_native" | "shell_curl" | "shell_httpie" | "shell_wget" | "swift_nsurlsession";
426
+ export interface SwaggerOptions extends swaggerJSDoc.OAS3Definition {
427
+ path?: string;
428
+ defaultResponses?: swaggerJSDoc.Responses;
429
+ targets?: SnippetTargets[];
430
+ }
431
+ export interface IStackFrame {
432
+ functionName: string;
433
+ filePath: string;
434
+ dir: string;
435
+ lineNumber: number;
436
+ columnNumber: number;
437
+ }
438
+ export interface IChildrenDoc {
439
+ stackFrame: IStackFrame;
440
+ operation: swaggerJSDoc.Operation;
441
+ components: swaggerJSDoc.Components;
442
+ }
443
+ export interface IParentDoc extends IChildrenDoc {
444
+ }
445
+ export interface ITreeDoc {
446
+ method?: Methods;
447
+ path?: string;
448
+ parent: IParentDoc | SwaggerOptions | null;
449
+ children: (IChildrenDoc | ITreeDoc)[];
450
+ }
451
+ export interface IStackLog {
452
+ time: Date;
453
+ level: "ERROR" | "WARN" | "INFO" | "DEBUG";
454
+ name: string;
455
+ message: string;
456
+ source?: string;
457
+ statusCode: number;
458
+ duration: number;
459
+ meta?: string;
460
+ }
461
+ export interface IStacksOptions {
462
+ /** Caminho de rota de empilhamento dos logs */
463
+ path?: string;
464
+ /** Limite máximo de logs a serem empilhadas */
465
+ limit?: number;
466
+ /** Caminho base para o arquivo dos logs empilhados */
467
+ filePath?: string;
468
+ beforeStack?(...stacks: IStackLog[]): Array<IStackLog | string | Error>;
469
+ }
470
+ /**
471
+ * Interface principal da aplicação, estende {@link IRouter} com capacidades de servidor HTTP,
472
+ * configuração do Express e sistema de logging por pilha de stacks.
473
+ *
474
+ * Criada pela função `create()` exportada em `create.ts`, que encapsula uma instância Express
475
+ * com roteamento tipado, documentação OpenAPI e rastreamento de requisições.
476
+ *
477
+ * @example
478
+ * // Criar aplicação e iniciar servidor
479
+ * import { create } from "./2.0";
480
+ *
481
+ * const app = create();
482
+ *
483
+ * app.get("/hello/:name")
484
+ * .handler((req, res) => {
485
+ * res.send(`Hello, ${req.params.name}!`);
486
+ * });
487
+ *
488
+ * app.listen(3000, () => {
489
+ * console.log("Server is running on http://localhost:3000");
490
+ * });
491
+ *
492
+ * @example
493
+ * // Aplicação completa com sub-routers, Swagger e stacks
494
+ * const app = create();
495
+ *
496
+ * const v1 = router();
497
+ * v1.get("/users")
498
+ * .handler((req, res) => res.json([]))
499
+ * .doc({ tags: ["Users"], summary: "Listar usuários" });
500
+ *
501
+ * app.route("/v1", v1);
502
+ *
503
+ * app.defineSwagger({
504
+ * openapi: "3.0.0",
505
+ * info: { title: "My API", version: "1.0.0" },
506
+ * });
507
+ *
508
+ * app.defineStacks({
509
+ * path: "/stacks",
510
+ * limit: 200,
511
+ * filePath: "./logs/stacks.log",
512
+ * });
513
+ *
514
+ * app.listen(8080);
515
+ */
516
+ export interface IApplication extends IRouter {
517
+ /**
518
+ * Inicia o servidor HTTP escutando na porta especificada, equivalente a `app.listen()` do Express.
519
+ *
520
+ * @example
521
+ * app.listen(3000, () => {
522
+ * console.log("Server is running on http://localhost:3000");
523
+ * });
524
+ *
525
+ * @example
526
+ * // Com host específico
527
+ * app.listen(8080, "0.0.0.0", () => {
528
+ * console.log("Server is running on http://0.0.0.0:8080");
529
+ * });
530
+ */
531
+ listen: core.Application["listen"];
532
+ /**
533
+ * Desabilita a configuração `setting`. Equivalente a `app.set(setting, false)`.
534
+ *
535
+ * @example
536
+ * app.disable("x-powered-by");
537
+ */
538
+ disable: core.Application["disable"];
539
+ /**
540
+ * Habilita a configuração `setting`. Equivalente a `app.set(setting, true)`.
541
+ *
542
+ * @example
543
+ * app.enable("trust proxy");
544
+ */
545
+ enable: core.Application["enable"];
546
+ /**
547
+ * Retorna `true` se a configuração `setting` está desabilitada.
548
+ *
549
+ * @example
550
+ * if (app.disabled("x-powered-by")) {
551
+ * console.log("x-powered-by está desabilitado");
552
+ * }
553
+ */
554
+ disabled: core.Application["disabled"];
555
+ /**
556
+ * Retorna `true` se a configuração `setting` está habilitada.
557
+ *
558
+ * @example
559
+ * if (app.enabled("trust proxy")) {
560
+ * console.log("trust proxy está habilitado");
561
+ * }
562
+ */
563
+ enabled: core.Application["enabled"];
564
+ /**
565
+ * Registra uma engine de template para a extensão de arquivo especificada.
566
+ *
567
+ * @example
568
+ * app.engine("html", require("ejs").renderFile);
569
+ */
570
+ engine: core.Application["engine"];
571
+ /**
572
+ * Mapeia um callback para parâmetros de rota nomeados.
573
+ *
574
+ * @example
575
+ * app.param("userId", (req, res, next, id) => {
576
+ * console.log(`Parâmetro userId: ${id}`);
577
+ * next();
578
+ * });
579
+ */
580
+ param: core.Application["param"];
581
+ /**
582
+ * Renderiza uma view e envia a string HTML resultante ao cliente.
583
+ *
584
+ * @example
585
+ * app.render("index", { title: "Home" }, (err, html) => {
586
+ * if (err) console.error(err);
587
+ * console.log(html);
588
+ * });
589
+ */
590
+ render: core.Application["render"];
591
+ /**
592
+ * Retorna todos os logs de stack registrados, lidos a partir do arquivo de log configurado.
593
+ *
594
+ * @returns Array de {@link IStackLog} com os registros de requisições.
595
+ *
596
+ * @example
597
+ * const stacks = app.getStacks();
598
+ * console.log(`Total de logs: ${stacks.length}`);
599
+ * stacks.forEach((log) => {
600
+ * console.log(`[${log.level}] ${log.name} - ${log.message} (${log.duration}ms)`);
601
+ * });
602
+ */
603
+ getStacks(): IStackLog[];
604
+ /**
605
+ * Configura o sistema de logging por pilha de stacks, que registra informações
606
+ * sobre cada requisição (tempo, status, duração, etc.) em um arquivo de log.
607
+ *
608
+ * @param options - Opções de configuração do sistema de stacks.
609
+ * @returns Objeto com o caminho da rota de visualização dos stacks.
610
+ *
611
+ * @example
612
+ * const { stacksPath } = app.defineStacks({
613
+ * path: "/stacks",
614
+ * limit: 100,
615
+ * filePath: "./logs/stacks.log",
616
+ * beforeStack(...stacks) {
617
+ * // Filtrar logs antes de salvar
618
+ * return stacks.filter((s) => typeof s !== "string" && s.level === "ERROR");
619
+ * },
620
+ * });
621
+ *
622
+ * console.log(`Stacks disponíveis em: ${stacksPath}`);
623
+ */
624
+ defineStacks(options?: IStacksOptions): {
625
+ stacksPath: string;
626
+ };
627
+ }
628
+ export interface FileInfo {
629
+ /** Name of the form field associated with this file. */
630
+ fieldname: string;
631
+ /** Name of the file on the uploader's computer. */
632
+ originalname: string;
633
+ /**
634
+ * Value of the `Content-Transfer-Encoding` header for this file.
635
+ * @deprecated since July 2015
636
+ * @see RFC 7578, Section 4.7
637
+ */
638
+ encoding: string;
639
+ /** Value of the `Content-Type` header for this file. */
640
+ mimetype: string;
641
+ /** Size of the file in bytes. */
642
+ size: number;
643
+ /**
644
+ * A readable stream of this file. Only available to the `_handleFile`
645
+ * callback for custom `StorageEngine`s.
646
+ */
647
+ stream: Readable;
648
+ /** `DiskStorage` only: Directory to which this file has been uploaded. */
649
+ destination: string;
650
+ /** `DiskStorage` only: Name of this file within `destination`. */
651
+ filename: string;
652
+ /** `DiskStorage` only: Full path to the uploaded file. */
653
+ path: string;
654
+ /** `MemoryStorage` only: A Buffer containing the entire file. */
655
+ buffer: Buffer;
656
+ }
657
+ export interface FilesRequest extends Request {
658
+ file: FileInfo;
659
+ files: FileInfo[];
660
+ }
661
+ //# sourceMappingURL=type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/2.0/type.ts"],"names":[],"mappings":"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"}