apifox-mock-generator 1.4.6 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/README.md +1 -1
  3. package/dist/package.json +22 -4
  4. package/dist/src/application/use-cases/fetch-apifox-data.use-case.d.ts +19 -0
  5. package/dist/src/application/use-cases/fetch-apifox-data.use-case.d.ts.map +1 -0
  6. package/dist/src/application/use-cases/fetch-apifox-data.use-case.js +29 -0
  7. package/dist/src/application/use-cases/fetch-apifox-data.use-case.js.map +1 -0
  8. package/dist/src/application/use-cases/generate-mock.use-case.d.ts +22 -0
  9. package/dist/src/application/use-cases/generate-mock.use-case.d.ts.map +1 -0
  10. package/dist/src/application/use-cases/generate-mock.use-case.js +42 -0
  11. package/dist/src/application/use-cases/generate-mock.use-case.js.map +1 -0
  12. package/dist/src/application/use-cases/generate-types.use-case.d.ts +22 -0
  13. package/dist/src/application/use-cases/generate-types.use-case.d.ts.map +1 -0
  14. package/dist/src/application/use-cases/generate-types.use-case.js +42 -0
  15. package/dist/src/application/use-cases/generate-types.use-case.js.map +1 -0
  16. package/dist/src/application/use-cases/index.d.ts +8 -0
  17. package/dist/src/application/use-cases/index.d.ts.map +1 -0
  18. package/dist/src/application/use-cases/index.js +8 -0
  19. package/dist/src/application/use-cases/index.js.map +1 -0
  20. package/dist/src/application/use-cases/serve-mock.use-case.d.ts +26 -0
  21. package/dist/src/application/use-cases/serve-mock.use-case.d.ts.map +1 -0
  22. package/dist/src/application/use-cases/serve-mock.use-case.js +103 -0
  23. package/dist/src/application/use-cases/serve-mock.use-case.js.map +1 -0
  24. package/dist/src/core/apifox-client.d.ts +5 -1
  25. package/dist/src/core/apifox-client.d.ts.map +1 -1
  26. package/dist/src/core/apifox-client.js +8 -102
  27. package/dist/src/core/apifox-client.js.map +1 -1
  28. package/dist/src/core/config-loader.d.ts.map +1 -1
  29. package/dist/src/core/config-loader.js +17 -5
  30. package/dist/src/core/config-loader.js.map +1 -1
  31. package/dist/src/core/container-setup.d.ts +9 -0
  32. package/dist/src/core/container-setup.d.ts.map +1 -0
  33. package/dist/src/core/container-setup.js +64 -0
  34. package/dist/src/core/container-setup.js.map +1 -0
  35. package/dist/src/core/container.d.ts +42 -0
  36. package/dist/src/core/container.d.ts.map +1 -0
  37. package/dist/src/core/container.js +70 -0
  38. package/dist/src/core/container.js.map +1 -0
  39. package/dist/src/core/endpoint-filter.d.ts +10 -0
  40. package/dist/src/core/endpoint-filter.d.ts.map +1 -1
  41. package/dist/src/core/endpoint-filter.js +22 -95
  42. package/dist/src/core/endpoint-filter.js.map +1 -1
  43. package/dist/src/core/error-codes.d.ts +22 -0
  44. package/dist/src/core/error-codes.d.ts.map +1 -0
  45. package/dist/src/core/error-codes.js +31 -0
  46. package/dist/src/core/error-codes.js.map +1 -0
  47. package/dist/src/core/error-handler.d.ts +8 -0
  48. package/dist/src/core/error-handler.d.ts.map +1 -0
  49. package/dist/src/core/error-handler.js +45 -0
  50. package/dist/src/core/error-handler.js.map +1 -0
  51. package/dist/src/core/errors.d.ts +49 -0
  52. package/dist/src/core/errors.d.ts.map +1 -0
  53. package/dist/src/core/errors.js +70 -0
  54. package/dist/src/core/errors.js.map +1 -0
  55. package/dist/src/core/mock-config-loader.d.ts.map +1 -1
  56. package/dist/src/core/mock-config-loader.js +24 -7
  57. package/dist/src/core/mock-config-loader.js.map +1 -1
  58. package/dist/src/core/openapi-converter.d.ts +5 -1
  59. package/dist/src/core/openapi-converter.d.ts.map +1 -1
  60. package/dist/src/core/openapi-converter.js +11 -34
  61. package/dist/src/core/openapi-converter.js.map +1 -1
  62. package/dist/src/core/service-keys.d.ts +39 -0
  63. package/dist/src/core/service-keys.d.ts.map +1 -0
  64. package/dist/src/core/service-keys.js +43 -0
  65. package/dist/src/core/service-keys.js.map +1 -0
  66. package/dist/src/domain/entities/api-endpoint.entity.d.ts +57 -0
  67. package/dist/src/domain/entities/api-endpoint.entity.d.ts.map +1 -0
  68. package/dist/src/domain/entities/api-endpoint.entity.js +87 -0
  69. package/dist/src/domain/entities/api-endpoint.entity.js.map +1 -0
  70. package/dist/src/domain/entities/index.d.ts +6 -0
  71. package/dist/src/domain/entities/index.d.ts.map +1 -0
  72. package/dist/src/domain/entities/index.js +6 -0
  73. package/dist/src/domain/entities/index.js.map +1 -0
  74. package/dist/src/domain/entities/mock-route.entity.d.ts +41 -0
  75. package/dist/src/domain/entities/mock-route.entity.d.ts.map +1 -0
  76. package/dist/src/domain/entities/mock-route.entity.js +82 -0
  77. package/dist/src/domain/entities/mock-route.entity.js.map +1 -0
  78. package/dist/src/domain/interfaces/apifox-client.interface.d.ts +14 -0
  79. package/dist/src/domain/interfaces/apifox-client.interface.d.ts.map +1 -0
  80. package/dist/src/domain/interfaces/apifox-client.interface.js +2 -0
  81. package/dist/src/domain/interfaces/apifox-client.interface.js.map +1 -0
  82. package/dist/src/domain/interfaces/file-system.interface.d.ts +46 -0
  83. package/dist/src/domain/interfaces/file-system.interface.d.ts.map +1 -0
  84. package/dist/src/domain/interfaces/file-system.interface.js +2 -0
  85. package/dist/src/domain/interfaces/file-system.interface.js.map +1 -0
  86. package/dist/src/domain/interfaces/generator.interface.d.ts +24 -0
  87. package/dist/src/domain/interfaces/generator.interface.d.ts.map +1 -0
  88. package/dist/src/domain/interfaces/generator.interface.js +2 -0
  89. package/dist/src/domain/interfaces/generator.interface.js.map +1 -0
  90. package/dist/src/domain/interfaces/http-client.interface.d.ts +54 -0
  91. package/dist/src/domain/interfaces/http-client.interface.d.ts.map +1 -0
  92. package/dist/src/domain/interfaces/http-client.interface.js +2 -0
  93. package/dist/src/domain/interfaces/http-client.interface.js.map +1 -0
  94. package/dist/src/domain/interfaces/index.d.ts +11 -0
  95. package/dist/src/domain/interfaces/index.d.ts.map +1 -0
  96. package/dist/src/domain/interfaces/index.js +11 -0
  97. package/dist/src/domain/interfaces/index.js.map +1 -0
  98. package/dist/src/domain/interfaces/logger.interface.d.ts +36 -0
  99. package/dist/src/domain/interfaces/logger.interface.d.ts.map +1 -0
  100. package/dist/src/domain/interfaces/logger.interface.js +2 -0
  101. package/dist/src/domain/interfaces/logger.interface.js.map +1 -0
  102. package/dist/src/domain/interfaces/remote-proxy.interface.d.ts +26 -0
  103. package/dist/src/domain/interfaces/remote-proxy.interface.d.ts.map +1 -0
  104. package/dist/src/domain/interfaces/remote-proxy.interface.js +2 -0
  105. package/dist/src/domain/interfaces/remote-proxy.interface.js.map +1 -0
  106. package/dist/src/domain/interfaces/route-manager.interface.d.ts +34 -0
  107. package/dist/src/domain/interfaces/route-manager.interface.d.ts.map +1 -0
  108. package/dist/src/domain/interfaces/route-manager.interface.js +2 -0
  109. package/dist/src/domain/interfaces/route-manager.interface.js.map +1 -0
  110. package/dist/src/domain/interfaces.d.ts +239 -0
  111. package/dist/src/domain/interfaces.d.ts.map +1 -0
  112. package/dist/src/domain/interfaces.js +2 -0
  113. package/dist/src/domain/interfaces.js.map +1 -0
  114. package/dist/src/domain/services/endpoint-filter.service.d.ts +52 -0
  115. package/dist/src/domain/services/endpoint-filter.service.d.ts.map +1 -0
  116. package/dist/src/domain/services/endpoint-filter.service.js +150 -0
  117. package/dist/src/domain/services/endpoint-filter.service.js.map +1 -0
  118. package/dist/src/domain/services/index.d.ts +7 -0
  119. package/dist/src/domain/services/index.d.ts.map +1 -0
  120. package/dist/src/domain/services/index.js +7 -0
  121. package/dist/src/domain/services/index.js.map +1 -0
  122. package/dist/src/domain/services/openapi-converter.service.d.ts +15 -0
  123. package/dist/src/domain/services/openapi-converter.service.d.ts.map +1 -0
  124. package/dist/src/domain/services/openapi-converter.service.js +74 -0
  125. package/dist/src/domain/services/openapi-converter.service.js.map +1 -0
  126. package/dist/src/domain/services/route-matcher.service.d.ts +38 -0
  127. package/dist/src/domain/services/route-matcher.service.d.ts.map +1 -0
  128. package/dist/src/domain/services/route-matcher.service.js +61 -0
  129. package/dist/src/domain/services/route-matcher.service.js.map +1 -0
  130. package/dist/src/generators/mock-generator.d.ts +2 -1
  131. package/dist/src/generators/mock-generator.d.ts.map +1 -1
  132. package/dist/src/generators/mock-generator.js +13 -8
  133. package/dist/src/generators/mock-generator.js.map +1 -1
  134. package/dist/src/generators/templates/type-template.d.ts +2 -1
  135. package/dist/src/generators/templates/type-template.d.ts.map +1 -1
  136. package/dist/src/generators/templates/type-template.js +72 -48
  137. package/dist/src/generators/templates/type-template.js.map +1 -1
  138. package/dist/src/generators/type-generator.d.ts +2 -1
  139. package/dist/src/generators/type-generator.d.ts.map +1 -1
  140. package/dist/src/generators/type-generator.js +1 -1
  141. package/dist/src/generators/type-generator.js.map +1 -1
  142. package/dist/src/index.d.ts +1 -1
  143. package/dist/src/index.d.ts.map +1 -1
  144. package/dist/src/index.js +1 -1
  145. package/dist/src/index.js.map +1 -1
  146. package/dist/src/infrastructure/apifox/apifox-client.impl.d.ts +22 -0
  147. package/dist/src/infrastructure/apifox/apifox-client.impl.d.ts.map +1 -0
  148. package/dist/src/infrastructure/apifox/apifox-client.impl.js +135 -0
  149. package/dist/src/infrastructure/apifox/apifox-client.impl.js.map +1 -0
  150. package/dist/src/infrastructure/file-system/file-system.impl.d.ts +15 -0
  151. package/dist/src/infrastructure/file-system/file-system.impl.d.ts.map +1 -0
  152. package/dist/src/infrastructure/file-system/file-system.impl.js +45 -0
  153. package/dist/src/infrastructure/file-system/file-system.impl.js.map +1 -0
  154. package/dist/src/infrastructure/http/axios-client.impl.d.ts +19 -0
  155. package/dist/src/infrastructure/http/axios-client.impl.d.ts.map +1 -0
  156. package/dist/src/infrastructure/http/axios-client.impl.js +59 -0
  157. package/dist/src/infrastructure/http/axios-client.impl.js.map +1 -0
  158. package/dist/src/infrastructure/logger/console-logger.impl.d.ts +15 -0
  159. package/dist/src/infrastructure/logger/console-logger.impl.d.ts.map +1 -0
  160. package/dist/src/infrastructure/logger/console-logger.impl.js +30 -0
  161. package/dist/src/infrastructure/logger/console-logger.impl.js.map +1 -0
  162. package/dist/src/infrastructure/route-manager/route-manager.impl.d.ts +14 -0
  163. package/dist/src/infrastructure/route-manager/route-manager.impl.d.ts.map +1 -0
  164. package/dist/src/infrastructure/route-manager/route-manager.impl.js +25 -0
  165. package/dist/src/infrastructure/route-manager/route-manager.impl.js.map +1 -0
  166. package/dist/src/infrastructure/server/hot-reload.d.ts +8 -0
  167. package/dist/src/infrastructure/server/hot-reload.d.ts.map +1 -0
  168. package/dist/src/infrastructure/server/hot-reload.js +132 -0
  169. package/dist/src/infrastructure/server/hot-reload.js.map +1 -0
  170. package/dist/src/infrastructure/server/remote-proxy.d.ts +22 -0
  171. package/dist/src/infrastructure/server/remote-proxy.d.ts.map +1 -0
  172. package/dist/src/infrastructure/server/remote-proxy.js +82 -0
  173. package/dist/src/infrastructure/server/remote-proxy.js.map +1 -0
  174. package/dist/src/infrastructure/server/route-loader.d.ts +18 -0
  175. package/dist/src/infrastructure/server/route-loader.d.ts.map +1 -0
  176. package/dist/src/infrastructure/server/route-loader.js +256 -0
  177. package/dist/src/infrastructure/server/route-loader.js.map +1 -0
  178. package/dist/src/presentation/http/express-server.d.ts +8 -0
  179. package/dist/src/presentation/http/express-server.d.ts.map +1 -0
  180. package/dist/src/presentation/http/express-server.js +65 -0
  181. package/dist/src/presentation/http/express-server.js.map +1 -0
  182. package/dist/src/presentation/http/middleware/error-handler.middleware.d.ts +9 -0
  183. package/dist/src/presentation/http/middleware/error-handler.middleware.d.ts.map +1 -0
  184. package/dist/src/presentation/http/middleware/error-handler.middleware.js +31 -0
  185. package/dist/src/presentation/http/middleware/error-handler.middleware.js.map +1 -0
  186. package/dist/src/presentation/http/route-handler.d.ts +38 -0
  187. package/dist/src/presentation/http/route-handler.d.ts.map +1 -0
  188. package/dist/src/presentation/http/route-handler.js +237 -0
  189. package/dist/src/presentation/http/route-handler.js.map +1 -0
  190. package/dist/src/presentation/http/validation.d.ts +25 -0
  191. package/dist/src/presentation/http/validation.d.ts.map +1 -0
  192. package/dist/src/presentation/http/validation.js +131 -0
  193. package/dist/src/presentation/http/validation.js.map +1 -0
  194. package/dist/src/scripts/cli.js +1 -1
  195. package/dist/src/scripts/cli.js.map +1 -1
  196. package/dist/src/scripts/generate-mock.js +15 -35
  197. package/dist/src/scripts/generate-mock.js.map +1 -1
  198. package/dist/src/scripts/serve-mock.js +9 -87
  199. package/dist/src/scripts/serve-mock.js.map +1 -1
  200. package/dist/src/server/express-server.d.ts +2 -2
  201. package/dist/src/server/express-server.d.ts.map +1 -1
  202. package/dist/src/server/express-server.js +16 -1
  203. package/dist/src/server/express-server.js.map +1 -1
  204. package/dist/src/server/hot-reload.d.ts +2 -2
  205. package/dist/src/server/hot-reload.d.ts.map +1 -1
  206. package/dist/src/server/hot-reload.js.map +1 -1
  207. package/dist/src/server/remote-proxy.d.ts +2 -2
  208. package/dist/src/server/remote-proxy.d.ts.map +1 -1
  209. package/dist/src/server/remote-proxy.js +13 -1
  210. package/dist/src/server/remote-proxy.js.map +1 -1
  211. package/dist/src/server/route-handler.d.ts +5 -3
  212. package/dist/src/server/route-handler.d.ts.map +1 -1
  213. package/dist/src/server/route-handler.js +15 -9
  214. package/dist/src/server/route-handler.js.map +1 -1
  215. package/dist/src/server/route-matcher.d.ts.map +1 -1
  216. package/dist/src/server/route-matcher.js +3 -1
  217. package/dist/src/server/route-matcher.js.map +1 -1
  218. package/dist/src/server/validation.d.ts +20 -1
  219. package/dist/src/server/validation.d.ts.map +1 -1
  220. package/dist/src/server/validation.js +25 -13
  221. package/dist/src/server/validation.js.map +1 -1
  222. package/dist/src/types/index.d.ts +21 -6
  223. package/dist/src/types/index.d.ts.map +1 -1
  224. package/dist/src/types/mock/list.d.ts +13 -0
  225. package/dist/src/types/mock/list.d.ts.map +1 -0
  226. package/dist/src/types/mock/list.js +4 -0
  227. package/dist/src/types/mock/list.js.map +1 -0
  228. package/dist/src/types/mock/v1/auth/login/username.d.ts +1 -1
  229. package/dist/src/types/mock/v1/auth/login/username.d.ts.map +1 -1
  230. package/dist/src/types/mock/v1/dict/data/default.d.ts +25 -0
  231. package/dist/src/types/mock/v1/dict/data/default.d.ts.map +1 -0
  232. package/dist/src/types/mock/v1/dict/data/default.js +4 -0
  233. package/dist/src/types/mock/v1/dict/data/default.js.map +1 -0
  234. package/dist/src/types/mock/v1/dict/data/order.d.ts +25 -0
  235. package/dist/src/types/mock/v1/dict/data/order.d.ts.map +1 -0
  236. package/dist/src/types/mock/v1/dict/data/order.js +4 -0
  237. package/dist/src/types/mock/v1/dict/data/order.js.map +1 -0
  238. package/dist/src/types/mock/v1/dict/data/pagedList.d.ts +62 -0
  239. package/dist/src/types/mock/v1/dict/data/pagedList.d.ts.map +1 -0
  240. package/dist/src/types/mock/v1/dict/data/pagedList.js +4 -0
  241. package/dist/src/types/mock/v1/dict/data/pagedList.js.map +1 -0
  242. package/dist/src/types/mock/v1/dict/data.d.ts +82 -0
  243. package/dist/src/types/mock/v1/dict/data.d.ts.map +1 -0
  244. package/dist/src/types/mock/v1/dict/data.js +4 -0
  245. package/dist/src/types/mock/v1/dict/data.js.map +1 -0
  246. package/dist/src/types/mock/v1/dict/pagedList.d.ts +54 -0
  247. package/dist/src/types/mock/v1/dict/pagedList.d.ts.map +1 -0
  248. package/dist/src/types/mock/v1/dict/pagedList.js +4 -0
  249. package/dist/src/types/mock/v1/dict/pagedList.js.map +1 -0
  250. package/dist/src/types/mock/v1/dict.d.ts +80 -0
  251. package/dist/src/types/mock/v1/dict.d.ts.map +1 -0
  252. package/dist/src/types/mock/v1/dict.js +4 -0
  253. package/dist/src/types/mock/v1/dict.js.map +1 -0
  254. package/dist/src/types/mock/v1/file/download.d.ts +23 -0
  255. package/dist/src/types/mock/v1/file/download.d.ts.map +1 -0
  256. package/dist/src/types/mock/v1/file/download.js +4 -0
  257. package/dist/src/types/mock/v1/file/download.js.map +1 -0
  258. package/dist/src/types/mock/v1/file/pagedList.d.ts +62 -0
  259. package/dist/src/types/mock/v1/file/pagedList.d.ts.map +1 -0
  260. package/dist/src/types/mock/v1/file/pagedList.js +4 -0
  261. package/dist/src/types/mock/v1/file/pagedList.js.map +1 -0
  262. package/dist/src/types/mock/v1/file.d.ts +56 -0
  263. package/dist/src/types/mock/v1/file.d.ts.map +1 -0
  264. package/dist/src/types/mock/v1/file.js +4 -0
  265. package/dist/src/types/mock/v1/file.js.map +1 -0
  266. package/dist/src/types/mock/v1/internal/getToken.d.ts +32 -0
  267. package/dist/src/types/mock/v1/internal/getToken.d.ts.map +1 -0
  268. package/dist/src/types/mock/v1/internal/getToken.js +4 -0
  269. package/dist/src/types/mock/v1/internal/getToken.js.map +1 -0
  270. package/dist/src/types/mock/v1/internal/user/unlock.d.ts +23 -0
  271. package/dist/src/types/mock/v1/internal/user/unlock.d.ts.map +1 -0
  272. package/dist/src/types/mock/v1/internal/user/unlock.js +4 -0
  273. package/dist/src/types/mock/v1/internal/user/unlock.js.map +1 -0
  274. package/dist/src/types/mock/v1/role/disabled.d.ts +25 -0
  275. package/dist/src/types/mock/v1/role/disabled.d.ts.map +1 -0
  276. package/dist/src/types/mock/v1/role/disabled.js +4 -0
  277. package/dist/src/types/mock/v1/role/disabled.js.map +1 -0
  278. package/dist/src/types/mock/v1/role/pagedList.d.ts +2 -2
  279. package/dist/src/types/mock/v1/role/pagedList.d.ts.map +1 -1
  280. package/dist/src/types/mock/v1/role.d.ts +31 -29
  281. package/dist/src/types/mock/v1/role.d.ts.map +1 -1
  282. package/dist/src/types/mock/v1/role.js.map +1 -1
  283. package/dist/src/types/mock/v1/tenant/permission/tree.d.ts +2 -2
  284. package/dist/src/types/mock/v1/tenant/permission/tree.d.ts.map +1 -1
  285. package/dist/src/types/mock/v1/tenant/user/link.d.ts +23 -0
  286. package/dist/src/types/mock/v1/tenant/user/link.d.ts.map +1 -0
  287. package/dist/src/types/mock/v1/tenant/user/link.js +4 -0
  288. package/dist/src/types/mock/v1/tenant/user/link.js.map +1 -0
  289. package/dist/src/types/mock/v1/tenant/user/pagedList.d.ts +8 -0
  290. package/dist/src/types/mock/v1/tenant/user/pagedList.d.ts.map +1 -1
  291. package/dist/src/types/mock/v1/tenant/user/pagedList.js.map +1 -1
  292. package/dist/src/types/mock/v1/tenant/user.d.ts +19 -0
  293. package/dist/src/types/mock/v1/tenant/user.d.ts.map +1 -1
  294. package/dist/src/types/mock/v1/tenant/user.js.map +1 -1
  295. package/dist/src/types/mock/v1/user/exportData.d.ts +25 -0
  296. package/dist/src/types/mock/v1/user/exportData.d.ts.map +1 -0
  297. package/dist/src/types/mock/v1/user/exportData.js +4 -0
  298. package/dist/src/types/mock/v1/user/exportData.js.map +1 -0
  299. package/dist/src/types/mock/v1/user/importData.d.ts +13 -0
  300. package/dist/src/types/mock/v1/user/importData.d.ts.map +1 -0
  301. package/dist/src/types/mock/v1/user/importData.js +4 -0
  302. package/dist/src/types/mock/v1/user/importData.js.map +1 -0
  303. package/dist/src/types/mock/v1/user/info.d.ts +0 -30
  304. package/dist/src/types/mock/v1/user/info.d.ts.map +1 -1
  305. package/dist/src/types/mock/v1/user/info.js.map +1 -1
  306. package/dist/src/types/mock/v1/user/permission/tree.d.ts +4 -2
  307. package/dist/src/types/mock/v1/user/permission/tree.d.ts.map +1 -1
  308. package/dist/src/types/mock/v1/user/permission/tree.js.map +1 -1
  309. package/dist/src/types/mock/v1/user.d.ts +0 -106
  310. package/dist/src/types/mock/v1/user.d.ts.map +1 -1
  311. package/dist/src/types/mock/v1/user.js +1 -1
  312. package/dist/src/types/mock/v1/user.js.map +1 -1
  313. package/dist/src/types/openapi.d.ts +426 -0
  314. package/dist/src/types/openapi.d.ts.map +1 -0
  315. package/dist/src/types/openapi.js +23 -0
  316. package/dist/src/types/openapi.js.map +1 -0
  317. package/dist/src/utils/block-updater.d.ts.map +1 -1
  318. package/dist/src/utils/block-updater.js +5 -4
  319. package/dist/src/utils/block-updater.js.map +1 -1
  320. package/dist/src/utils/code-formatter.d.ts.map +1 -1
  321. package/dist/src/utils/code-formatter.js +2 -0
  322. package/dist/src/utils/code-formatter.js.map +1 -1
  323. package/dist/src/utils/file-helper.d.ts +7 -7
  324. package/dist/src/utils/file-helper.d.ts.map +1 -1
  325. package/dist/src/utils/file-helper.js +11 -8
  326. package/dist/src/utils/file-helper.js.map +1 -1
  327. package/dist/src/utils/file-operations.d.ts +1 -1
  328. package/dist/src/utils/file-operations.d.ts.map +1 -1
  329. package/dist/src/utils/file-operations.js.map +1 -1
  330. package/dist/src/utils/file-utils.d.ts +3 -2
  331. package/dist/src/utils/file-utils.d.ts.map +1 -1
  332. package/dist/src/utils/file-utils.js +1 -1
  333. package/dist/src/utils/file-utils.js.map +1 -1
  334. package/dist/src/utils/path-utils.js.map +1 -1
  335. package/dist/src/utils/type-mapping.d.ts +9 -2
  336. package/dist/src/utils/type-mapping.d.ts.map +1 -1
  337. package/dist/src/utils/type-mapping.js +42 -35
  338. package/dist/src/utils/type-mapping.js.map +1 -1
  339. package/package.json +22 -4
@@ -0,0 +1,239 @@
1
+ import type express from 'express';
2
+ import type { ApifoxConfig, ApiEndpoint, MockRoute } from '../types/index.js';
3
+ import type { OpenAPIDocument, OpenAPISchema, OpenAPISchemaReference } from '../types/openapi.js';
4
+ /**
5
+ * Apifox 客户端接口
6
+ */
7
+ export interface IApifoxClient {
8
+ /**
9
+ * 从 Apifox 获取 OpenAPI 文档
10
+ * @param config Apifox 配置
11
+ * @returns OpenAPI 文档
12
+ */
13
+ fetchOpenAPI(config: ApifoxConfig): Promise<OpenAPIDocument>;
14
+ }
15
+ /**
16
+ * 路由管理器接口
17
+ */
18
+ export interface IRouteManager {
19
+ /**
20
+ * 设置路由
21
+ * @param key 路由键(格式:METHOD path)
22
+ * @param route Mock 路由
23
+ */
24
+ setRoute(key: string, route: MockRoute): void;
25
+ /**
26
+ * 获取路由
27
+ * @param method HTTP 方法
28
+ * @param path 路径
29
+ * @returns Mock 路由,如果不存在则返回 undefined
30
+ */
31
+ getRoute(method: string, path: string): MockRoute | undefined;
32
+ /**
33
+ * 获取所有路由
34
+ * @returns 所有 Mock 路由数组
35
+ */
36
+ getAllRoutes(): MockRoute[];
37
+ /**
38
+ * 移除路由
39
+ * @param key 路由键
40
+ */
41
+ removeRoute(key: string): void;
42
+ /**
43
+ * 清空所有路由
44
+ */
45
+ clear(): void;
46
+ }
47
+ /**
48
+ * 文件系统接口
49
+ */
50
+ export interface IFileSystem {
51
+ /**
52
+ * 读取文件内容
53
+ * @param path 文件路径
54
+ * @returns 文件内容
55
+ */
56
+ readFile(path: string): Promise<string>;
57
+ /**
58
+ * 写入文件内容
59
+ * @param path 文件路径
60
+ * @param content 文件内容
61
+ */
62
+ writeFile(path: string, content: string): Promise<void>;
63
+ /**
64
+ * 检查文件或目录是否存在
65
+ * @param path 路径
66
+ * @returns 是否存在
67
+ */
68
+ exists(path: string): Promise<boolean>;
69
+ /**
70
+ * 确保目录存在(如果不存在则创建)
71
+ * @param path 目录路径
72
+ */
73
+ ensureDir(path: string): Promise<void>;
74
+ /**
75
+ * 读取 JSON 文件
76
+ * @param path 文件路径
77
+ * @returns 解析后的 JSON 对象
78
+ */
79
+ readJson<T>(path: string): Promise<T>;
80
+ /**
81
+ * 写入 JSON 文件
82
+ * @param path 文件路径
83
+ * @param data 要写入的数据
84
+ */
85
+ writeJson(path: string, data: unknown): Promise<void>;
86
+ /**
87
+ * 获取项目根目录
88
+ * @returns 项目根目录路径
89
+ */
90
+ getProjectRoot(): string;
91
+ }
92
+ /**
93
+ * 日志接口
94
+ */
95
+ export interface ILogger {
96
+ /**
97
+ * 输出信息日志
98
+ * @param message 日志消息
99
+ */
100
+ info(message: string): void;
101
+ /**
102
+ * 输出成功日志
103
+ * @param message 日志消息
104
+ */
105
+ success(message: string): void;
106
+ /**
107
+ * 输出警告日志
108
+ * @param message 日志消息
109
+ */
110
+ warn(message: string): void;
111
+ /**
112
+ * 输出错误日志
113
+ * @param message 日志消息
114
+ */
115
+ error(message: string): void;
116
+ /**
117
+ * 输出调试日志
118
+ * @param message 日志消息
119
+ */
120
+ debug(message: string): void;
121
+ /**
122
+ * 输出标题日志
123
+ * @param message 日志消息
124
+ */
125
+ title(message: string): void;
126
+ }
127
+ /**
128
+ * HTTP 请求配置
129
+ */
130
+ export interface HttpRequestConfig {
131
+ headers?: Record<string, string>;
132
+ timeout?: number;
133
+ validateStatus?: (status: number) => boolean;
134
+ [key: string]: unknown;
135
+ }
136
+ /**
137
+ * HTTP 响应
138
+ */
139
+ export interface HttpResponse<T = unknown> {
140
+ data: T;
141
+ status: number;
142
+ statusText: string;
143
+ headers: Record<string, string>;
144
+ }
145
+ /**
146
+ * HTTP 客户端接口
147
+ */
148
+ export interface IHttpClient {
149
+ /**
150
+ * 发送 GET 请求
151
+ * @param url 请求 URL
152
+ * @param config 请求配置
153
+ * @returns HTTP 响应
154
+ */
155
+ get<T = unknown>(url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>>;
156
+ /**
157
+ * 发送 POST 请求
158
+ * @param url 请求 URL
159
+ * @param data 请求体数据
160
+ * @param config 请求配置
161
+ * @returns HTTP 响应
162
+ */
163
+ post<T = unknown>(url: string, data?: unknown, config?: HttpRequestConfig): Promise<HttpResponse<T>>;
164
+ /**
165
+ * 发送 PUT 请求
166
+ * @param url 请求 URL
167
+ * @param data 请求体数据
168
+ * @param config 请求配置
169
+ * @returns HTTP 响应
170
+ */
171
+ put<T = unknown>(url: string, data?: unknown, config?: HttpRequestConfig): Promise<HttpResponse<T>>;
172
+ /**
173
+ * 发送 DELETE 请求
174
+ * @param url 请求 URL
175
+ * @param config 请求配置
176
+ * @returns HTTP 响应
177
+ */
178
+ delete<T = unknown>(url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>>;
179
+ }
180
+ /**
181
+ * 代理响应
182
+ */
183
+ export interface ProxyResponse {
184
+ status: number;
185
+ headers: Record<string, string>;
186
+ data: unknown;
187
+ }
188
+ /**
189
+ * 远程代理接口
190
+ */
191
+ export interface IRemoteProxy {
192
+ /**
193
+ * 代理请求到远程服务器
194
+ * @param req Express 请求对象
195
+ * @returns 代理响应
196
+ */
197
+ proxyRequest(req: express.Request): Promise<ProxyResponse>;
198
+ /**
199
+ * 检查远程服务器是否已配置
200
+ * @returns 是否已配置
201
+ */
202
+ isRemoteServerConfigured(): boolean;
203
+ }
204
+ /**
205
+ * 生成器配置
206
+ */
207
+ export interface GeneratorConfig {
208
+ /** Apifox 配置 */
209
+ config: ApifoxConfig;
210
+ /** API 端点列表 */
211
+ endpoints: ApiEndpoint[];
212
+ /** OpenAPI Schema 定义 */
213
+ schemas?: Record<string, OpenAPISchema | OpenAPISchemaReference>;
214
+ }
215
+ /**
216
+ * Mock 生成器接口
217
+ */
218
+ export interface IMockGenerator {
219
+ /**
220
+ * 生成 Mock 文件
221
+ * @param config Apifox 配置
222
+ * @param endpoints API 端点列表
223
+ * @param definitions OpenAPI Schema 定义(可选)
224
+ */
225
+ generateMockFiles(config: ApifoxConfig, endpoints: ApiEndpoint[], definitions?: Record<string, OpenAPISchema | OpenAPISchemaReference>): Promise<void>;
226
+ }
227
+ /**
228
+ * 类型生成器接口
229
+ */
230
+ export interface ITypeGenerator {
231
+ /**
232
+ * 生成 TypeScript 类型文件
233
+ * @param config Apifox 配置
234
+ * @param openapi OpenAPI 文档
235
+ * @param endpoints API 端点列表
236
+ */
237
+ generateTypeFiles(config: ApifoxConfig, openapi: OpenAPIDocument, endpoints: ApiEndpoint[]): Promise<void>;
238
+ }
239
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/domain/interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import type { ILogger } from '../interfaces.js';
2
+ import type { ApiFilter } from '../../types/index.js';
3
+ import { ApiEndpoint } from '../entities/api-endpoint.entity.js';
4
+ /**
5
+ * 中文状态到英文状态的映射
6
+ */
7
+ export declare const STATUS_MAPPING: Record<string, string>;
8
+ /**
9
+ * 端点过滤器服务
10
+ * 负责根据筛选配置过滤 API 端点
11
+ */
12
+ export declare class EndpointFilterService {
13
+ private readonly logger;
14
+ constructor(logger: ILogger);
15
+ /**
16
+ * 根据筛选配置过滤端点
17
+ * @param endpoints 端点列表
18
+ * @param filter 筛选配置
19
+ * @returns 过滤后的端点列表
20
+ */
21
+ filter(endpoints: ApiEndpoint[], filter?: ApiFilter): ApiEndpoint[];
22
+ /**
23
+ * 检查端点是否应该包含
24
+ * @param endpoint 端点
25
+ * @param filter 筛选配置
26
+ * @returns 是否应该包含
27
+ */
28
+ private shouldInclude;
29
+ /**
30
+ * 路径模式匹配(支持通配符 * 和 **)
31
+ * * 匹配单层路径
32
+ * ** 匹配多层路径
33
+ * @param path 路径
34
+ * @param pattern 模式
35
+ * @returns 是否匹配
36
+ */
37
+ private matchPath;
38
+ /**
39
+ * 转换状态值(支持中文到英文的映射)
40
+ * @param status 状态值
41
+ * @returns 转换后的状态值
42
+ */
43
+ private translateStatus;
44
+ }
45
+ /**
46
+ * 路径模式匹配函数(向后兼容导出)
47
+ * @param path 路径
48
+ * @param pattern 模式
49
+ * @returns 是否匹配
50
+ */
51
+ export declare function matchPath(path: string, pattern: string): boolean;
52
+ //# sourceMappingURL=endpoint-filter.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-filter.service.d.ts","sourceRoot":"","sources":["../../../../src/domain/services/endpoint-filter.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQjD,CAAC;AAEF;;;GAGG;AACH,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,OAAO;IAE5C;;;;;OAKG;IACH,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,EAAE;IAUnE;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA2FrB;;;;;;;OAOG;IACH,OAAO,CAAC,SAAS;IAWjB;;;;OAIG;IACH,OAAO,CAAC,eAAe;CAGxB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAShE"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * 中文状态到英文状态的映射
3
+ */
4
+ export const STATUS_MAPPING = {
5
+ 设计中: 'designing',
6
+ 开发中: 'developing',
7
+ 已完成: 'completed',
8
+ 已废弃: 'deprecated',
9
+ 待确定: 'pending',
10
+ 测试中: 'testing',
11
+ 已发布: 'published'
12
+ };
13
+ /**
14
+ * 端点过滤器服务
15
+ * 负责根据筛选配置过滤 API 端点
16
+ */
17
+ export class EndpointFilterService {
18
+ constructor(logger) {
19
+ this.logger = logger;
20
+ }
21
+ /**
22
+ * 根据筛选配置过滤端点
23
+ * @param endpoints 端点列表
24
+ * @param filter 筛选配置
25
+ * @returns 过滤后的端点列表
26
+ */
27
+ filter(endpoints, filter) {
28
+ if (!filter) {
29
+ return endpoints;
30
+ }
31
+ return endpoints.filter(endpoint => {
32
+ return this.shouldInclude(endpoint, filter);
33
+ });
34
+ }
35
+ /**
36
+ * 检查端点是否应该包含
37
+ * @param endpoint 端点
38
+ * @param filter 筛选配置
39
+ * @returns 是否应该包含
40
+ */
41
+ shouldInclude(endpoint, filter) {
42
+ // 1. 检查 includePaths(如果配置了,必须匹配其中之一)
43
+ if (filter.includePaths && filter.includePaths.length > 0) {
44
+ const matched = filter.includePaths.some(pattern => this.matchPath(endpoint.path, pattern));
45
+ if (!matched) {
46
+ this.logger.debug(`[Filter] 路径不匹配 includePaths: ${endpoint.path}`);
47
+ return false;
48
+ }
49
+ }
50
+ // 2. 检查 excludePaths(如果匹配,则排除)
51
+ if (filter.excludePaths && filter.excludePaths.length > 0) {
52
+ const matched = filter.excludePaths.some(pattern => this.matchPath(endpoint.path, pattern));
53
+ if (matched) {
54
+ this.logger.debug(`[Filter] 路径匹配 excludePaths,已排除: ${endpoint.path}`);
55
+ return false;
56
+ }
57
+ }
58
+ // 3. 检查 excludeDeprecated(排除废弃接口)
59
+ if (endpoint.isDeprecated()) {
60
+ this.logger.debug(`[Filter] 废弃接口已排除: ${endpoint.path}`);
61
+ return false;
62
+ }
63
+ // 4. 检查 includeMethods(如果配置了,必须匹配)
64
+ if (filter.includeMethods && filter.includeMethods.length > 0) {
65
+ const includeMethodsUpper = filter.includeMethods.map(m => m.toUpperCase());
66
+ if (!includeMethodsUpper.includes(endpoint.method.toUpperCase())) {
67
+ this.logger.debug(`[Filter] 方法不匹配 includeMethods: ${endpoint.method}`);
68
+ return false;
69
+ }
70
+ }
71
+ // 5. 检查 excludeMethods(如果匹配,则排除)
72
+ if (filter.excludeMethods && filter.excludeMethods.length > 0) {
73
+ const excludeMethodsUpper = filter.excludeMethods.map(m => m.toUpperCase());
74
+ if (excludeMethodsUpper.includes(endpoint.method.toUpperCase())) {
75
+ this.logger.debug(`[Filter] 方法匹配 excludeMethods,已排除: ${endpoint.method}`);
76
+ return false;
77
+ }
78
+ }
79
+ // 6. 检查 includedByTags(基于接口状态过滤)
80
+ if (filter.scope?.includedByTags && filter.scope.includedByTags.length > 0) {
81
+ const includedStatuses = filter.scope.includedByTags.map(this.translateStatus);
82
+ if (!endpoint.status || !includedStatuses.includes(endpoint.status)) {
83
+ this.logger.debug(`[Filter] 接口状态不匹配 includedByTags,已排除: ${endpoint.status} (期望: ${includedStatuses.join(', ')})`);
84
+ return false;
85
+ }
86
+ }
87
+ // 7. 检查 excludedByTags(基于接口状态过滤)
88
+ if (filter.scope?.excludedByTags && filter.scope.excludedByTags.length > 0) {
89
+ const excludedStatuses = filter.scope.excludedByTags.map(this.translateStatus);
90
+ if (endpoint.status && excludedStatuses.includes(endpoint.status)) {
91
+ this.logger.debug(`[Filter] 接口状态匹配 excludedByTags,已排除: ${endpoint.status}`);
92
+ return false;
93
+ }
94
+ }
95
+ // 8. 检查 folderPaths(基于文件夹路径过滤,支持前缀匹配)
96
+ if (filter.scope?.folderPaths && filter.scope.folderPaths.length > 0) {
97
+ if (!endpoint.folderPath) {
98
+ this.logger.debug(`[Filter] 接口缺少文件夹路径,已排除: ${endpoint.path}`);
99
+ return false;
100
+ }
101
+ const matched = filter.scope.folderPaths.some(folderPath => endpoint.isInFolder(folderPath));
102
+ if (!matched) {
103
+ this.logger.debug(`[Filter] 文件夹路径不匹配,已排除: ${endpoint.folderPath} (期望: ${filter.scope.folderPaths.join(', ')})`);
104
+ return false;
105
+ }
106
+ }
107
+ return true;
108
+ }
109
+ /**
110
+ * 路径模式匹配(支持通配符 * 和 **)
111
+ * * 匹配单层路径
112
+ * ** 匹配多层路径
113
+ * @param path 路径
114
+ * @param pattern 模式
115
+ * @returns 是否匹配
116
+ */
117
+ matchPath(path, pattern) {
118
+ const regexPattern = pattern
119
+ .replace(/\*\*/g, '<<<DOUBLE_STAR>>>') // 临时替换 **
120
+ .replace(/\*/g, '[^/]+') // * 匹配单层路径(不包含 /)
121
+ .replace(/<<<DOUBLE_STAR>>>/g, '.*') // ** 匹配多层路径(包含 /)
122
+ .replace(/\//g, '\\/'); // 转义斜杠
123
+ const regex = new RegExp(`^${regexPattern}$`);
124
+ return regex.test(path);
125
+ }
126
+ /**
127
+ * 转换状态值(支持中文到英文的映射)
128
+ * @param status 状态值
129
+ * @returns 转换后的状态值
130
+ */
131
+ translateStatus(status) {
132
+ return STATUS_MAPPING[status] || status;
133
+ }
134
+ }
135
+ /**
136
+ * 路径模式匹配函数(向后兼容导出)
137
+ * @param path 路径
138
+ * @param pattern 模式
139
+ * @returns 是否匹配
140
+ */
141
+ export function matchPath(path, pattern) {
142
+ const regexPattern = pattern
143
+ .replace(/\*\*/g, '<<<DOUBLE_STAR>>>')
144
+ .replace(/\*/g, '[^/]+')
145
+ .replace(/<<<DOUBLE_STAR>>>/g, '.*')
146
+ .replace(/\//g, '\\/');
147
+ const regex = new RegExp(`^${regexPattern}$`);
148
+ return regex.test(path);
149
+ }
150
+ //# sourceMappingURL=endpoint-filter.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-filter.service.js","sourceRoot":"","sources":["../../../../src/domain/services/endpoint-filter.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 业务服务统一导出
3
+ */
4
+ export * from './endpoint-filter.service.js';
5
+ export * from './route-matcher.service.js';
6
+ export * from './openapi-converter.service.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 业务服务统一导出
3
+ */
4
+ export * from './endpoint-filter.service.js';
5
+ export * from './route-matcher.service.js';
6
+ export * from './openapi-converter.service.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domain/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { OpenAPIDocument } from '../../types/openapi.js';
2
+ import { ApiEndpoint } from '../entities/api-endpoint.entity.js';
3
+ /**
4
+ * OpenAPI 转换器服务
5
+ * 负责将 OpenAPI 文档转换为 ApiEndpoint 实体
6
+ */
7
+ export declare class OpenAPIConverterService {
8
+ /**
9
+ * 将 OpenAPI 格式转换为端点数组
10
+ * @param openapi OpenAPI 文档
11
+ * @returns 端点实体数组
12
+ */
13
+ convert(openapi: OpenAPIDocument): ApiEndpoint[];
14
+ }
15
+ //# sourceMappingURL=openapi-converter.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi-converter.service.d.ts","sourceRoot":"","sources":["../../../../src/domain/services/openapi-converter.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAKhB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAGjE;;;GAGG;AACH,qBAAa,uBAAuB;IAClC;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,EAAE;CAuEjD"}
@@ -0,0 +1,74 @@
1
+ import { isParameterReference } from '../../types/openapi.js';
2
+ import { ApiEndpoint } from '../entities/api-endpoint.entity.js';
3
+ /**
4
+ * OpenAPI 转换器服务
5
+ * 负责将 OpenAPI 文档转换为 ApiEndpoint 实体
6
+ */
7
+ export class OpenAPIConverterService {
8
+ /**
9
+ * 将 OpenAPI 格式转换为端点数组
10
+ * @param openapi OpenAPI 文档
11
+ * @returns 端点实体数组
12
+ */
13
+ convert(openapi) {
14
+ const endpoints = [];
15
+ const paths = openapi.paths || {};
16
+ for (const [path, pathItem] of Object.entries(paths)) {
17
+ const typedPathItem = pathItem;
18
+ // 遍历所有可能的 HTTP 方法
19
+ const methods = ['get', 'post', 'put', 'delete', 'patch'];
20
+ for (const method of methods) {
21
+ const operation = typedPathItem[method];
22
+ if (operation) {
23
+ const op = operation;
24
+ const endpointData = {
25
+ path,
26
+ method: method.toUpperCase(),
27
+ name: op.summary || op.operationId || `${method} ${path}`,
28
+ description: op.description,
29
+ operationId: op.operationId,
30
+ tags: op.tags || [],
31
+ deprecated: op.deprecated || false,
32
+ status: op['x-apifox-status'] || '',
33
+ folderPath: op['x-apifox-folder'] || '',
34
+ parameters: op.parameters?.map(p => {
35
+ // 处理参数引用
36
+ if (isParameterReference(p)) {
37
+ // 如果是引用,返回基本信息(实际应该解析引用)
38
+ return {
39
+ name: '',
40
+ in: 'query',
41
+ required: false,
42
+ type: 'string',
43
+ description: undefined,
44
+ schema: undefined
45
+ };
46
+ }
47
+ const param = p;
48
+ const schema = param.schema && !('$ref' in param.schema)
49
+ ? param.schema
50
+ : undefined;
51
+ return {
52
+ name: param.name,
53
+ in: param.in,
54
+ required: param.required || false,
55
+ type: schema?.type || 'string',
56
+ description: param.description,
57
+ schema: schema
58
+ };
59
+ }),
60
+ requestBody: op.requestBody && !('$ref' in op.requestBody)
61
+ ? op.requestBody.content?.['application/json']?.schema
62
+ : undefined,
63
+ responseBody: op.responses?.['200'] && !('$ref' in op.responses['200'])
64
+ ? op.responses['200'].content?.['application/json']?.schema
65
+ : undefined
66
+ };
67
+ endpoints.push(new ApiEndpoint(endpointData));
68
+ }
69
+ }
70
+ }
71
+ return endpoints;
72
+ }
73
+ }
74
+ //# sourceMappingURL=openapi-converter.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi-converter.service.js","sourceRoot":"","sources":["../../../../src/domain/services/openapi-converter.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { MockRoute } from '../entities/mock-route.entity.js';
2
+ /**
3
+ * 路由匹配器服务
4
+ * 负责路由匹配和参数提取
5
+ */
6
+ export declare class RouteMatcherService {
7
+ /**
8
+ * 查找匹配的路由
9
+ * @param routes 路由列表
10
+ * @param method HTTP 方法
11
+ * @param path 路径
12
+ * @returns 匹配的路由,如果不存在则返回 undefined
13
+ */
14
+ findMatchingRoute(routes: MockRoute[], method: string, path: string): MockRoute | undefined;
15
+ /**
16
+ * 提取路径参数
17
+ * @param routePath 路由路径(带参数占位符)
18
+ * @param actualPath 实际路径
19
+ * @returns 路径参数对象
20
+ */
21
+ extractPathParams(routePath: string, actualPath: string): Record<string, string>;
22
+ }
23
+ /**
24
+ * 查找匹配的路由(向后兼容导出)
25
+ * @param routes 路由列表
26
+ * @param method HTTP 方法
27
+ * @param path 路径
28
+ * @returns 匹配的路由
29
+ */
30
+ export declare function findMatchingRoute(routes: MockRoute[], method: string, path: string): MockRoute | undefined;
31
+ /**
32
+ * 提取路径参数(向后兼容导出)
33
+ * @param routePath 路由路径
34
+ * @param actualPath 实际路径
35
+ * @returns 路径参数对象
36
+ */
37
+ export declare function extractPathParams(routePath: string, actualPath: string): Record<string, string>;
38
+ //# sourceMappingURL=route-matcher.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-matcher.service.d.ts","sourceRoot":"","sources":["../../../../src/domain/services/route-matcher.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;OAMG;IACH,iBAAiB,CACf,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,SAAS,GAAG,SAAS;IAIxB;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAqBjF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,SAAS,GAAG,SAAS,CAGvB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGxB"}