@nest-omni/core 4.1.3-3 → 4.1.3-31

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 (370) hide show
  1. package/audit/audit.module.d.ts +1 -0
  2. package/audit/audit.module.js +51 -2
  3. package/audit/controllers/audit.controller.d.ts +57 -1
  4. package/audit/controllers/audit.controller.js +43 -0
  5. package/audit/decorators/audit-action.decorator.d.ts +74 -0
  6. package/audit/decorators/audit-action.decorator.js +42 -0
  7. package/audit/decorators/audit-controller.decorator.d.ts +1 -1
  8. package/audit/decorators/audit-controller.decorator.js +2 -2
  9. package/audit/decorators/audit-operation.decorator.d.ts +0 -7
  10. package/audit/decorators/audit-operation.decorator.js +0 -7
  11. package/audit/decorators/entity-audit.decorator.d.ts +78 -2
  12. package/audit/decorators/entity-audit.decorator.js +145 -4
  13. package/audit/decorators/index.d.ts +2 -0
  14. package/audit/decorators/index.js +2 -0
  15. package/audit/dto/audit-action-query.dto.d.ts +13 -0
  16. package/audit/dto/audit-action-query.dto.js +77 -0
  17. package/audit/dto/index.d.ts +1 -0
  18. package/audit/dto/index.js +1 -0
  19. package/audit/entities/audit-action-summary.entity.d.ts +23 -0
  20. package/audit/entities/audit-action-summary.entity.js +101 -0
  21. package/audit/entities/entity-audit-log.entity.d.ts +7 -2
  22. package/audit/entities/entity-audit-log.entity.js +45 -9
  23. package/audit/entities/entity-transaction.entity.d.ts +8 -2
  24. package/audit/entities/entity-transaction.entity.js +39 -3
  25. package/audit/entities/index.d.ts +3 -0
  26. package/audit/entities/index.js +3 -0
  27. package/audit/entities/manual-operation-log.entity.d.ts +0 -2
  28. package/audit/entities/manual-operation-log.entity.js +8 -9
  29. package/audit/enums/audit.enums.d.ts +14 -6
  30. package/audit/enums/audit.enums.js +18 -9
  31. package/audit/examples/decorator-value-mapping.example.d.ts +70 -0
  32. package/audit/examples/decorator-value-mapping.example.js +414 -0
  33. package/audit/index.d.ts +5 -1
  34. package/audit/index.js +29 -2
  35. package/audit/interceptors/audit-action.interceptor.d.ts +39 -0
  36. package/audit/interceptors/audit-action.interceptor.js +217 -0
  37. package/audit/interceptors/audit.interceptor.d.ts +1 -0
  38. package/audit/interceptors/audit.interceptor.js +19 -11
  39. package/audit/interceptors/index.d.ts +1 -0
  40. package/audit/interceptors/index.js +1 -0
  41. package/audit/interfaces/audit.interfaces.d.ts +132 -4
  42. package/audit/services/audit-action.service.d.ts +142 -0
  43. package/audit/services/audit-action.service.js +246 -0
  44. package/audit/services/audit-context.service.d.ts +91 -0
  45. package/audit/services/audit-context.service.js +170 -0
  46. package/audit/services/entity-audit.service.d.ts +220 -9
  47. package/audit/services/entity-audit.service.js +761 -72
  48. package/audit/services/index.d.ts +3 -0
  49. package/audit/services/index.js +3 -0
  50. package/audit/services/manual-audit-log.service.d.ts +23 -23
  51. package/audit/services/manual-audit-log.service.js +34 -57
  52. package/audit/services/multi-database.service.d.ts +0 -5
  53. package/audit/services/multi-database.service.js +0 -24
  54. package/audit/services/operation-description.service.d.ts +14 -3
  55. package/audit/services/operation-description.service.js +165 -26
  56. package/audit/services/transaction-audit.service.d.ts +1 -0
  57. package/audit/services/transaction-audit.service.js +12 -9
  58. package/audit/subscribers/entity-audit.subscriber.d.ts +5 -0
  59. package/audit/subscribers/entity-audit.subscriber.js +69 -5
  60. package/cache/cache.module.d.ts +7 -8
  61. package/cache/cache.module.js +15 -13
  62. package/cache/cache.service.d.ts +6 -4
  63. package/cache/cache.service.js +24 -12
  64. package/cache/decorators/cache-put.decorator.js +5 -4
  65. package/cache/dependencies/callback.dependency.js +9 -0
  66. package/cache/dependencies/db.dependency.d.ts +43 -12
  67. package/cache/dependencies/db.dependency.js +46 -18
  68. package/cache/dependencies/tag.dependency.d.ts +31 -4
  69. package/cache/dependencies/tag.dependency.js +100 -11
  70. package/cache/entities/index.d.ts +1 -0
  71. package/cache/entities/index.js +17 -0
  72. package/cache/entities/typeorm-cache.entity.d.ts +71 -0
  73. package/cache/entities/typeorm-cache.entity.js +110 -0
  74. package/cache/index.d.ts +2 -1
  75. package/cache/index.js +19 -2
  76. package/cache/interfaces/cache-options.interface.d.ts +8 -0
  77. package/cache/providers/index.d.ts +2 -1
  78. package/cache/providers/index.js +2 -1
  79. package/cache/providers/lrucache.provider.d.ts +77 -0
  80. package/cache/providers/lrucache.provider.js +228 -0
  81. package/cache/providers/redis-cache.provider.d.ts +1 -0
  82. package/cache/providers/redis-cache.provider.js +8 -6
  83. package/cache/providers/typeorm-cache.provider.d.ts +211 -0
  84. package/cache/providers/typeorm-cache.provider.js +483 -0
  85. package/common/boilerplate.polyfill.d.ts +1 -0
  86. package/common/boilerplate.polyfill.js +18 -1
  87. package/common/helpers/validation-metadata-helper.d.ts +112 -0
  88. package/common/helpers/validation-metadata-helper.js +164 -0
  89. package/common/index.d.ts +1 -0
  90. package/common/index.js +4 -0
  91. package/decorators/examples/field-i18n.example.d.ts +294 -0
  92. package/decorators/examples/field-i18n.example.js +478 -0
  93. package/decorators/field.decorators.d.ts +95 -3
  94. package/decorators/field.decorators.js +152 -18
  95. package/decorators/transform.decorators.d.ts +0 -2
  96. package/decorators/transform.decorators.js +0 -23
  97. package/decorators/translate.decorator.d.ts +26 -0
  98. package/decorators/translate.decorator.js +26 -1
  99. package/email-log/email-log.constants.d.ts +8 -0
  100. package/email-log/email-log.constants.js +11 -0
  101. package/email-log/email-log.module.d.ts +47 -0
  102. package/email-log/email-log.module.js +140 -0
  103. package/email-log/index.d.ts +11 -0
  104. package/email-log/index.js +48 -0
  105. package/email-log/interfaces/email-log-options.interface.d.ts +61 -0
  106. package/email-log/interfaces/email-log-options.interface.js +134 -0
  107. package/email-log/interfaces/email-log-transport.interface.d.ts +20 -0
  108. package/email-log/interfaces/email-log-transport.interface.js +2 -0
  109. package/email-log/interfaces/index.d.ts +2 -0
  110. package/email-log/interfaces/index.js +18 -0
  111. package/email-log/providers/email-provider.d.ts +42 -0
  112. package/email-log/providers/email-provider.js +127 -0
  113. package/email-log/providers/index.d.ts +1 -0
  114. package/email-log/providers/index.js +17 -0
  115. package/email-log/services/email-log-alert.service.d.ts +46 -0
  116. package/email-log/services/email-log-alert.service.js +162 -0
  117. package/email-log/services/email-log-formatter.service.d.ts +78 -0
  118. package/email-log/services/email-log-formatter.service.js +442 -0
  119. package/email-log/services/email-log-logger.service.d.ts +85 -0
  120. package/email-log/services/email-log-logger.service.js +168 -0
  121. package/email-log/services/email-log-rate-limiter.service.d.ts +42 -0
  122. package/email-log/services/email-log-rate-limiter.service.js +110 -0
  123. package/email-log/services/email-log-transport.service.d.ts +80 -0
  124. package/email-log/services/email-log-transport.service.js +271 -0
  125. package/email-log/services/index.d.ts +5 -0
  126. package/email-log/services/index.js +21 -0
  127. package/email-log/transports/index.d.ts +1 -0
  128. package/email-log/transports/index.js +17 -0
  129. package/email-log/transports/pino-email.transport.d.ts +56 -0
  130. package/email-log/transports/pino-email.transport.js +188 -0
  131. package/email-log/utils/index.d.ts +2 -0
  132. package/email-log/utils/index.js +18 -0
  133. package/email-log/utils/log-level.helper.d.ts +46 -0
  134. package/email-log/utils/log-level.helper.js +74 -0
  135. package/email-log/utils/pino-transport.utils.d.ts +135 -0
  136. package/email-log/utils/pino-transport.utils.js +238 -0
  137. package/file-upload/controllers/file-access.controller.d.ts +23 -0
  138. package/file-upload/controllers/file-access.controller.js +128 -0
  139. package/file-upload/decorators/column.decorator.d.ts +151 -0
  140. package/file-upload/decorators/column.decorator.js +273 -0
  141. package/file-upload/decorators/csv-data.decorator.d.ts +30 -0
  142. package/file-upload/decorators/csv-data.decorator.js +85 -0
  143. package/file-upload/decorators/csv-import.decorator.d.ts +34 -0
  144. package/file-upload/decorators/csv-import.decorator.js +24 -0
  145. package/file-upload/decorators/examples/column-mapping.example.d.ts +76 -0
  146. package/file-upload/decorators/examples/column-mapping.example.js +122 -0
  147. package/file-upload/decorators/excel-data.decorator.d.ts +30 -0
  148. package/file-upload/decorators/excel-data.decorator.js +85 -0
  149. package/file-upload/decorators/file-upload.decorator.d.ts +83 -0
  150. package/file-upload/decorators/file-upload.decorator.js +172 -0
  151. package/file-upload/decorators/index.d.ts +5 -0
  152. package/file-upload/decorators/index.js +38 -0
  153. package/file-upload/decorators/process.decorator.d.ts +40 -0
  154. package/file-upload/decorators/process.decorator.js +52 -0
  155. package/file-upload/decorators/validate-data.decorator.d.ts +91 -0
  156. package/file-upload/decorators/validate-data.decorator.js +39 -0
  157. package/file-upload/dto/create-file.dto.d.ts +24 -0
  158. package/file-upload/dto/create-file.dto.js +112 -0
  159. package/file-upload/dto/find-files.dto.d.ts +15 -0
  160. package/file-upload/dto/find-files.dto.js +76 -0
  161. package/file-upload/dto/index.d.ts +4 -0
  162. package/file-upload/dto/index.js +20 -0
  163. package/file-upload/dto/pagination.dto.d.ts +7 -0
  164. package/file-upload/dto/pagination.dto.js +39 -0
  165. package/file-upload/dto/update-file.dto.d.ts +15 -0
  166. package/file-upload/dto/update-file.dto.js +67 -0
  167. package/file-upload/entities/file-metadata.entity.d.ts +25 -0
  168. package/file-upload/entities/file-metadata.entity.js +76 -0
  169. package/file-upload/entities/file.entity.d.ts +114 -0
  170. package/file-upload/entities/file.entity.js +350 -0
  171. package/file-upload/entities/index.d.ts +2 -0
  172. package/file-upload/entities/index.js +18 -0
  173. package/file-upload/enums/file-type.enum.d.ts +72 -0
  174. package/file-upload/enums/file-type.enum.js +212 -0
  175. package/file-upload/exceptions/file-upload.exception.d.ts +57 -0
  176. package/file-upload/exceptions/file-upload.exception.js +120 -0
  177. package/file-upload/exceptions/index.d.ts +1 -0
  178. package/file-upload/exceptions/index.js +17 -0
  179. package/file-upload/file-upload.module.d.ts +89 -0
  180. package/file-upload/file-upload.module.js +292 -0
  181. package/file-upload/index.d.ts +37 -0
  182. package/file-upload/index.js +77 -0
  183. package/file-upload/interceptors/file-upload.interceptor.d.ts +101 -0
  184. package/file-upload/interceptors/file-upload.interceptor.js +594 -0
  185. package/file-upload/interceptors/index.d.ts +1 -0
  186. package/file-upload/interceptors/index.js +17 -0
  187. package/file-upload/interfaces/custom-file-type.interface.d.ts +72 -0
  188. package/file-upload/interfaces/custom-file-type.interface.js +2 -0
  189. package/file-upload/interfaces/file-buffer.interface.d.ts +72 -0
  190. package/file-upload/interfaces/file-buffer.interface.js +2 -0
  191. package/file-upload/interfaces/file-entity.interface.d.ts +142 -0
  192. package/file-upload/interfaces/file-entity.interface.js +28 -0
  193. package/file-upload/interfaces/file-metadata.interface.d.ts +21 -0
  194. package/file-upload/interfaces/file-metadata.interface.js +2 -0
  195. package/file-upload/interfaces/file-processor.interface.d.ts +93 -0
  196. package/file-upload/interfaces/file-processor.interface.js +2 -0
  197. package/file-upload/interfaces/file-upload-options.interface.d.ts +74 -0
  198. package/file-upload/interfaces/file-upload-options.interface.js +5 -0
  199. package/file-upload/interfaces/index.d.ts +7 -0
  200. package/file-upload/interfaces/index.js +24 -0
  201. package/file-upload/interfaces/processor-options.interface.d.ts +102 -0
  202. package/file-upload/interfaces/processor-options.interface.js +2 -0
  203. package/file-upload/interfaces/storage-provider.interface.d.ts +239 -0
  204. package/file-upload/interfaces/storage-provider.interface.js +2 -0
  205. package/file-upload/interfaces/upload-options.interface.d.ts +19 -0
  206. package/file-upload/interfaces/upload-options.interface.js +2 -0
  207. package/file-upload/processors/csv.processor.d.ts +98 -0
  208. package/file-upload/processors/csv.processor.js +391 -0
  209. package/file-upload/processors/excel.processor.d.ts +130 -0
  210. package/file-upload/processors/excel.processor.js +547 -0
  211. package/file-upload/processors/image.processor.d.ts +199 -0
  212. package/file-upload/processors/image.processor.js +377 -0
  213. package/file-upload/providers/index.d.ts +2 -0
  214. package/file-upload/providers/index.js +18 -0
  215. package/file-upload/providers/local-storage.provider.d.ts +98 -0
  216. package/file-upload/providers/local-storage.provider.js +484 -0
  217. package/file-upload/providers/s3-storage.provider.d.ts +87 -0
  218. package/file-upload/providers/s3-storage.provider.js +455 -0
  219. package/file-upload/services/file-signature-validator.service.d.ts +118 -0
  220. package/file-upload/services/file-signature-validator.service.js +376 -0
  221. package/file-upload/services/file.service.d.ts +193 -0
  222. package/file-upload/services/file.service.js +638 -0
  223. package/file-upload/services/index.d.ts +4 -0
  224. package/file-upload/services/index.js +20 -0
  225. package/file-upload/services/malicious-file-detector.service.d.ts +300 -0
  226. package/file-upload/services/malicious-file-detector.service.js +1234 -0
  227. package/file-upload/services/mime-registry.service.d.ts +47 -0
  228. package/file-upload/services/mime-registry.service.js +167 -0
  229. package/file-upload/utils/checksum.util.d.ts +28 -0
  230. package/file-upload/utils/checksum.util.js +65 -0
  231. package/file-upload/utils/dynamic-import.util.d.ts +54 -0
  232. package/file-upload/utils/dynamic-import.util.js +156 -0
  233. package/file-upload/utils/filename.util.d.ts +59 -0
  234. package/file-upload/utils/filename.util.js +184 -0
  235. package/file-upload/utils/filepath.util.d.ts +70 -0
  236. package/file-upload/utils/filepath.util.js +152 -0
  237. package/file-upload/utils/index.d.ts +4 -0
  238. package/file-upload/utils/index.js +20 -0
  239. package/filters/bad-request.filter.d.ts +9 -0
  240. package/filters/bad-request.filter.js +57 -16
  241. package/http-client/config/http-client.config.d.ts +5 -0
  242. package/http-client/config/http-client.config.js +27 -14
  243. package/http-client/decorators/http-client.decorators.d.ts +7 -28
  244. package/http-client/decorators/http-client.decorators.js +124 -99
  245. package/http-client/entities/http-log.entity.d.ts +0 -20
  246. package/http-client/entities/http-log.entity.js +1 -21
  247. package/http-client/examples/advanced-usage.example.d.ts +4 -5
  248. package/http-client/examples/advanced-usage.example.js +7 -59
  249. package/http-client/examples/axios-config-extended.example.d.ts +17 -0
  250. package/http-client/examples/axios-config-extended.example.js +311 -0
  251. package/http-client/examples/flexible-response-example.d.ts +28 -0
  252. package/http-client/examples/flexible-response-example.js +120 -0
  253. package/http-client/examples/index.d.ts +2 -0
  254. package/http-client/examples/index.js +2 -0
  255. package/http-client/examples/proxy-from-environment.example.d.ts +133 -0
  256. package/http-client/examples/proxy-from-environment.example.js +409 -0
  257. package/http-client/examples/ssl-certificate.example.d.ts +47 -0
  258. package/http-client/examples/ssl-certificate.example.js +432 -0
  259. package/http-client/http-client.module.d.ts +43 -2
  260. package/http-client/http-client.module.js +150 -90
  261. package/http-client/index.d.ts +1 -1
  262. package/http-client/interfaces/api-client-config.interface.d.ts +24 -103
  263. package/http-client/interfaces/http-client-config.interface.d.ts +137 -62
  264. package/http-client/services/api-client-registry.service.d.ts +8 -21
  265. package/http-client/services/api-client-registry.service.js +31 -282
  266. package/http-client/services/circuit-breaker.service.d.ts +69 -2
  267. package/http-client/services/circuit-breaker.service.js +185 -7
  268. package/http-client/services/http-client.service.d.ts +85 -23
  269. package/http-client/services/http-client.service.js +512 -168
  270. package/http-client/services/http-log-query.service.js +0 -13
  271. package/http-client/services/index.d.ts +0 -1
  272. package/http-client/services/index.js +0 -1
  273. package/http-client/services/logging.service.d.ts +69 -16
  274. package/http-client/services/logging.service.js +290 -170
  275. package/http-client/utils/call-stack-extractor.util.d.ts +26 -0
  276. package/http-client/utils/call-stack-extractor.util.js +35 -0
  277. package/http-client/utils/context-extractor.util.d.ts +2 -0
  278. package/http-client/utils/context-extractor.util.js +17 -3
  279. package/http-client/utils/curl-generator.util.js +2 -5
  280. package/http-client/utils/index.d.ts +2 -0
  281. package/http-client/utils/index.js +2 -0
  282. package/http-client/utils/proxy-environment.util.d.ts +42 -0
  283. package/http-client/utils/proxy-environment.util.js +154 -0
  284. package/http-client/utils/retry-recorder.util.d.ts +0 -4
  285. package/http-client/utils/retry-recorder.util.js +2 -27
  286. package/http-client/utils/sanitize.util.d.ts +58 -0
  287. package/http-client/utils/sanitize.util.js +188 -0
  288. package/http-client/utils/security-validator.util.d.ts +118 -0
  289. package/http-client/utils/security-validator.util.js +354 -0
  290. package/index.d.ts +4 -1
  291. package/index.js +6 -1
  292. package/interceptors/translation-interceptor.service.d.ts +7 -0
  293. package/interceptors/translation-interceptor.service.js +40 -8
  294. package/ip-filter/constants.d.ts +21 -0
  295. package/ip-filter/constants.js +24 -0
  296. package/ip-filter/decorators/index.d.ts +1 -0
  297. package/ip-filter/decorators/index.js +17 -0
  298. package/ip-filter/decorators/ip-filter.decorator.d.ts +58 -0
  299. package/ip-filter/decorators/ip-filter.decorator.js +79 -0
  300. package/ip-filter/guards/index.d.ts +1 -0
  301. package/ip-filter/guards/index.js +17 -0
  302. package/ip-filter/guards/ip-filter.guard.d.ts +62 -0
  303. package/ip-filter/guards/ip-filter.guard.js +174 -0
  304. package/ip-filter/index.d.ts +7 -0
  305. package/ip-filter/index.js +23 -0
  306. package/ip-filter/interfaces/index.d.ts +4 -0
  307. package/ip-filter/interfaces/index.js +20 -0
  308. package/ip-filter/interfaces/ip-filter-async-options.interface.d.ts +15 -0
  309. package/ip-filter/interfaces/ip-filter-async-options.interface.js +2 -0
  310. package/ip-filter/interfaces/ip-filter-metadata.interface.d.ts +26 -0
  311. package/ip-filter/interfaces/ip-filter-metadata.interface.js +2 -0
  312. package/ip-filter/interfaces/ip-filter-options.interface.d.ts +34 -0
  313. package/ip-filter/interfaces/ip-filter-options.interface.js +2 -0
  314. package/ip-filter/interfaces/ip-rule.interface.d.ts +36 -0
  315. package/ip-filter/interfaces/ip-rule.interface.js +2 -0
  316. package/ip-filter/ip-filter.module.d.ts +55 -0
  317. package/ip-filter/ip-filter.module.js +105 -0
  318. package/ip-filter/services/index.d.ts +1 -0
  319. package/ip-filter/services/index.js +17 -0
  320. package/ip-filter/services/ip-filter.service.d.ts +92 -0
  321. package/ip-filter/services/ip-filter.service.js +238 -0
  322. package/ip-filter/utils/index.d.ts +1 -0
  323. package/ip-filter/utils/index.js +17 -0
  324. package/ip-filter/utils/ip-utils.d.ts +61 -0
  325. package/ip-filter/utils/ip-utils.js +162 -0
  326. package/package.json +34 -29
  327. package/providers/context.provider.d.ts +9 -0
  328. package/providers/context.provider.js +13 -0
  329. package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
  330. package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
  331. package/redis-lock/index.d.ts +2 -0
  332. package/redis-lock/index.js +5 -1
  333. package/redis-lock/lock-heartbeat.service.d.ts +80 -0
  334. package/redis-lock/lock-heartbeat.service.js +232 -0
  335. package/redis-lock/redis-lock.module.d.ts +6 -0
  336. package/redis-lock/redis-lock.module.js +136 -77
  337. package/redis-lock/redis-lock.service.d.ts +31 -0
  338. package/redis-lock/redis-lock.service.js +124 -17
  339. package/setup/bootstrap.setup.d.ts +2 -1
  340. package/setup/bootstrap.setup.js +3 -2
  341. package/setup/index.d.ts +1 -0
  342. package/setup/index.js +1 -0
  343. package/setup/run-in-mode.decorator.d.ts +56 -0
  344. package/setup/run-in-mode.decorator.js +92 -0
  345. package/setup/schedule.decorator.d.ts +1 -0
  346. package/setup/schedule.decorator.js +28 -13
  347. package/setup/worker.decorator.js +10 -1
  348. package/shared/index.d.ts +1 -1
  349. package/shared/index.js +1 -1
  350. package/shared/{serviceRegistryModule.js → service-registry.module.js} +28 -17
  351. package/shared/services/api-config.service.d.ts +41 -0
  352. package/shared/services/api-config.service.js +175 -8
  353. package/shared/services/index.d.ts +0 -1
  354. package/shared/services/index.js +0 -1
  355. package/validators/custom-validate.validator.d.ts +1 -0
  356. package/validators/custom-validate.validator.js +1 -0
  357. package/validators/file-mimetype.validator.d.ts +0 -2
  358. package/validators/file-mimetype.validator.js +4 -6
  359. package/validators/is-exists.validator.d.ts +15 -6
  360. package/validators/is-exists.validator.js +8 -7
  361. package/validators/is-unique.validator.d.ts +22 -7
  362. package/validators/is-unique.validator.js +41 -17
  363. package/vault/vault-config.service.js +1 -1
  364. package/cache/providers/memory-cache.provider.d.ts +0 -49
  365. package/cache/providers/memory-cache.provider.js +0 -197
  366. package/http-client/services/cache.service.d.ts +0 -76
  367. package/http-client/services/cache.service.js +0 -333
  368. package/shared/services/validator.service.d.ts +0 -3
  369. package/shared/services/validator.service.js +0 -20
  370. /package/shared/{serviceRegistryModule.d.ts → service-registry.module.d.ts} +0 -0
@@ -18,55 +18,102 @@ var HttpClientModule_1;
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.HttpClientModule = void 0;
20
20
  const common_1 = require("@nestjs/common");
21
- const schedule_1 = require("@nestjs/schedule");
22
21
  const config_1 = require("@nestjs/config");
23
22
  const typeorm_1 = require("@nestjs/typeorm");
24
- const cache_service_1 = require("../cache/cache.service");
25
23
  const http_client_service_1 = require("./services/http-client.service");
26
24
  const circuit_breaker_service_1 = require("./services/circuit-breaker.service");
27
25
  const logging_service_1 = require("./services/logging.service");
28
- const cache_service_2 = require("./services/cache.service");
29
26
  const http_log_query_service_1 = require("./services/http-log-query.service");
30
27
  const log_cleanup_service_1 = require("./services/log-cleanup.service");
31
28
  const api_client_registry_service_1 = require("./services/api-client-registry.service");
32
29
  const entities_1 = require("./entities");
33
- const cache_options_interface_1 = require("../cache/interfaces/cache-options.interface");
34
30
  const redis_lock_service_1 = require("../redis-lock/redis-lock.service");
31
+ const http_client_config_1 = require("./config/http-client.config");
35
32
  /**
36
33
  * HTTP客户端模块
37
34
  * 类似Spring Boot的自动配置机制,集成现有的cache服务
35
+ *
36
+ * @example
37
+ * // 最简单的方式 - 使用所有默认配置
38
+ * HttpClientModule.forRoot()
39
+ *
40
+ * @example
41
+ * // 只覆盖部分配置
42
+ * HttpClientModule.forRoot({
43
+ * baseURL: 'https://api.example.com',
44
+ * timeout: 5000,
45
+ * })
46
+ *
47
+ * @example
48
+ * // 深度合并配置
49
+ * HttpClientModule.forRoot({
50
+ * logging: {
51
+ * logLevel: 'debug',
52
+ * // 其他 logging 配置会使用默认值
53
+ * },
54
+ * })
38
55
  */
39
56
  let HttpClientModule = HttpClientModule_1 = class HttpClientModule {
40
57
  /**
41
58
  * 动态注册HTTP客户端模块
59
+ * @param config 用户配置,所有字段都是可选的
60
+ * @returns DynamicModule
42
61
  */
43
62
  static forRoot(config = {}) {
44
- var _a, _b, _c;
45
63
  // 基础服务提供者
46
64
  const baseProviders = [
47
65
  {
48
66
  provide: 'HTTP_CLIENT_CONFIG',
49
- useFactory: (configService, cacheService) => {
67
+ useFactory: (configService) => {
68
+ // 1. 获取环境配置
50
69
  const envConfig = this.loadConfigFromEnvironment(configService);
51
- return Object.assign(Object.assign({}, config), envConfig);
70
+ // 2. 根据环境获取基础默认配置
71
+ const nodeEnv = configService.get('NODE_ENV', 'development');
72
+ const environmentDefaults = (0, http_client_config_1.getHttpClientConfig)(nodeEnv);
73
+ // 3. 深度合并: 环境默认值 -> 环境变量配置 -> 用户配置
74
+ // 用户配置优先级最高,会覆盖前面的配置
75
+ return (0, http_client_config_1.mergeHttpClientConfig)((0, http_client_config_1.mergeHttpClientConfig)(envConfig, environmentDefaults), config);
52
76
  },
53
- inject: [config_1.ConfigService, cache_service_1.CacheService],
77
+ inject: [config_1.ConfigService],
54
78
  },
55
79
  circuit_breaker_service_1.HttpCircuitBreakerService,
56
- logging_service_1.HttpLoggingService,
57
- cache_service_2.HttpCacheService,
80
+ {
81
+ provide: logging_service_1.HttpLoggingService,
82
+ useFactory: (httpConfig) => {
83
+ var _a, _b;
84
+ // Check if database logging is enabled in the config
85
+ const databaseLoggingEnabled = (_b = (_a = httpConfig === null || httpConfig === void 0 ? void 0 : httpConfig.logging) === null || _a === void 0 ? void 0 : _a.databaseLogging) === null || _b === void 0 ? void 0 : _b.enabled;
86
+ return new logging_service_1.HttpLoggingService();
87
+ },
88
+ inject: ['HTTP_CLIENT_CONFIG'],
89
+ },
58
90
  http_log_query_service_1.HttpLogQueryService,
59
- log_cleanup_service_1.HttpLogCleanupService,
60
- api_client_registry_service_1.ApiClientRegistryService,
91
+ {
92
+ provide: log_cleanup_service_1.HttpLogCleanupService,
93
+ useFactory: (logQueryService, httpConfig) => {
94
+ return new log_cleanup_service_1.HttpLogCleanupService(logQueryService, httpConfig.logCleanup || {});
95
+ },
96
+ inject: [http_log_query_service_1.HttpLogQueryService, 'HTTP_CLIENT_CONFIG'],
97
+ },
98
+ {
99
+ provide: api_client_registry_service_1.ApiClientRegistryService,
100
+ useFactory: (circuitBreakerService, loggingService, httpConfig) => {
101
+ return new api_client_registry_service_1.ApiClientRegistryService(circuitBreakerService, loggingService, {});
102
+ },
103
+ inject: [
104
+ circuit_breaker_service_1.HttpCircuitBreakerService,
105
+ logging_service_1.HttpLoggingService,
106
+ 'HTTP_CLIENT_CONFIG',
107
+ ],
108
+ },
61
109
  {
62
110
  provide: http_client_service_1.HttpClientService,
63
- useFactory: (circuitBreakerService, loggingService, cacheService, redisLockService, httpConfig) => {
64
- return new http_client_service_1.HttpClientService(circuitBreakerService, loggingService, cacheService, redisLockService, httpConfig);
111
+ useFactory: (circuitBreakerService, loggingService, redisLockService, httpConfig) => {
112
+ return new http_client_service_1.HttpClientService(circuitBreakerService, loggingService, redisLockService, httpConfig);
65
113
  },
66
114
  inject: [
67
115
  circuit_breaker_service_1.HttpCircuitBreakerService,
68
116
  logging_service_1.HttpLoggingService,
69
- cache_service_2.HttpCacheService,
70
117
  redis_lock_service_1.RedisLockService,
71
118
  'HTTP_CLIENT_CONFIG',
72
119
  ],
@@ -77,19 +124,16 @@ let HttpClientModule = HttpClientModule_1 = class HttpClientModule {
77
124
  http_client_service_1.HttpClientService,
78
125
  circuit_breaker_service_1.HttpCircuitBreakerService,
79
126
  logging_service_1.HttpLoggingService,
80
- cache_service_2.HttpCacheService,
81
127
  http_log_query_service_1.HttpLogQueryService,
82
128
  log_cleanup_service_1.HttpLogCleanupService,
83
129
  api_client_registry_service_1.ApiClientRegistryService,
84
130
  ];
85
- // 动态导入
86
- const dynamicImports = [config_1.ConfigModule];
87
- if ((_b = (_a = config.logging) === null || _a === void 0 ? void 0 : _a.databaseLogging) === null || _b === void 0 ? void 0 : _b.enabled) {
88
- dynamicImports.push(typeorm_1.TypeOrmModule.forFeature([entities_1.HttpLogEntity]));
89
- }
90
- if ((_c = config.logCleanup) === null || _c === void 0 ? void 0 : _c.enabled) {
91
- dynamicImports.push(schedule_1.ScheduleModule.forRoot());
92
- }
131
+ // 动态导入 - 需要根据最终配置判断
132
+ // 由于配置是在运行时确定的,我们使用条件导入
133
+ const dynamicImports = [
134
+ config_1.ConfigModule,
135
+ typeorm_1.TypeOrmModule.forFeature([entities_1.HttpLogEntity]), // 始终导入,服务内部根据配置决定是否使用
136
+ ];
93
137
  return {
94
138
  module: HttpClientModule_1,
95
139
  imports: dynamicImports,
@@ -99,6 +143,17 @@ let HttpClientModule = HttpClientModule_1 = class HttpClientModule {
99
143
  }
100
144
  /**
101
145
  * 异步注册HTTP客户端模块
146
+ * @param config 异步配置,所有字段都是可选的
147
+ * @returns DynamicModule
148
+ *
149
+ * @example
150
+ * HttpClientModule.forRootAsync({
151
+ * useFactory: (configService: ConfigService) => ({
152
+ * baseURL: configService.get('API_BASE_URL'),
153
+ * timeout: 5000,
154
+ * }),
155
+ * inject: [ConfigService],
156
+ * })
102
157
  */
103
158
  static forRootAsync(config) {
104
159
  // 基础服务提供者
@@ -106,27 +161,59 @@ let HttpClientModule = HttpClientModule_1 = class HttpClientModule {
106
161
  {
107
162
  provide: 'HTTP_CLIENT_CONFIG',
108
163
  useFactory: (...args) => __awaiter(this, void 0, void 0, function* () {
164
+ // 1. 获取用户配置
109
165
  const userConfig = yield config.useFactory(...args);
110
- const envConfig = this.loadConfigFromEnvironment(args[0]);
111
- return Object.assign(Object.assign({}, userConfig), envConfig);
166
+ // 2. 获取环境配置
167
+ const configService = args[0];
168
+ const envConfig = this.loadConfigFromEnvironment(configService);
169
+ // 3. 根据环境获取基础默认配置
170
+ const nodeEnv = configService.get('NODE_ENV', 'development');
171
+ const environmentDefaults = (0, http_client_config_1.getHttpClientConfig)(nodeEnv);
172
+ // 4. 深度合并: 环境默认值 -> 环境变量配置 -> 用户配置
173
+ // 用户配置优先级最高,会覆盖前面的配置
174
+ const finalConfig = (0, http_client_config_1.mergeHttpClientConfig)((0, http_client_config_1.mergeHttpClientConfig)(envConfig, environmentDefaults), userConfig);
175
+ return finalConfig;
112
176
  }),
113
177
  inject: config.inject || [config_1.ConfigService],
114
178
  },
115
179
  circuit_breaker_service_1.HttpCircuitBreakerService,
116
- logging_service_1.HttpLoggingService,
117
- cache_service_2.HttpCacheService,
180
+ {
181
+ provide: logging_service_1.HttpLoggingService,
182
+ useFactory: (httpConfig) => {
183
+ var _a, _b;
184
+ // Check if database logging is enabled in the config
185
+ const databaseLoggingEnabled = (_b = (_a = httpConfig === null || httpConfig === void 0 ? void 0 : httpConfig.logging) === null || _a === void 0 ? void 0 : _a.databaseLogging) === null || _b === void 0 ? void 0 : _b.enabled;
186
+ return new logging_service_1.HttpLoggingService();
187
+ },
188
+ inject: ['HTTP_CLIENT_CONFIG'],
189
+ },
118
190
  http_log_query_service_1.HttpLogQueryService,
119
- log_cleanup_service_1.HttpLogCleanupService,
120
- api_client_registry_service_1.ApiClientRegistryService,
191
+ {
192
+ provide: log_cleanup_service_1.HttpLogCleanupService,
193
+ useFactory: (logQueryService, httpConfig) => {
194
+ return new log_cleanup_service_1.HttpLogCleanupService(logQueryService, httpConfig.logCleanup || {});
195
+ },
196
+ inject: [http_log_query_service_1.HttpLogQueryService, 'HTTP_CLIENT_CONFIG'],
197
+ },
198
+ {
199
+ provide: api_client_registry_service_1.ApiClientRegistryService,
200
+ useFactory: (circuitBreakerService, loggingService, httpConfig) => {
201
+ return new api_client_registry_service_1.ApiClientRegistryService(circuitBreakerService, loggingService, {});
202
+ },
203
+ inject: [
204
+ circuit_breaker_service_1.HttpCircuitBreakerService,
205
+ logging_service_1.HttpLoggingService,
206
+ 'HTTP_CLIENT_CONFIG',
207
+ ],
208
+ },
121
209
  {
122
210
  provide: http_client_service_1.HttpClientService,
123
- useFactory: (circuitBreakerService, loggingService, cacheService, redisLockService, httpConfig) => {
124
- return new http_client_service_1.HttpClientService(circuitBreakerService, loggingService, cacheService, redisLockService, httpConfig);
211
+ useFactory: (circuitBreakerService, loggingService, redisLockService, httpConfig) => {
212
+ return new http_client_service_1.HttpClientService(circuitBreakerService, loggingService, redisLockService, httpConfig);
125
213
  },
126
214
  inject: [
127
215
  circuit_breaker_service_1.HttpCircuitBreakerService,
128
216
  logging_service_1.HttpLoggingService,
129
- cache_service_2.HttpCacheService,
130
217
  redis_lock_service_1.RedisLockService,
131
218
  'HTTP_CLIENT_CONFIG',
132
219
  ],
@@ -137,13 +224,16 @@ let HttpClientModule = HttpClientModule_1 = class HttpClientModule {
137
224
  http_client_service_1.HttpClientService,
138
225
  circuit_breaker_service_1.HttpCircuitBreakerService,
139
226
  logging_service_1.HttpLoggingService,
140
- cache_service_2.HttpCacheService,
141
227
  http_log_query_service_1.HttpLogQueryService,
142
228
  log_cleanup_service_1.HttpLogCleanupService,
143
229
  api_client_registry_service_1.ApiClientRegistryService,
144
230
  ];
145
231
  // 动态导入
146
- const dynamicImports = [config_1.ConfigModule, ...(config.imports || [])];
232
+ const dynamicImports = [
233
+ config_1.ConfigModule,
234
+ typeorm_1.TypeOrmModule.forFeature([entities_1.HttpLogEntity]), // 始终导入,服务内部根据配置决定是否使用
235
+ ...(config.imports || []),
236
+ ];
147
237
  return {
148
238
  module: HttpClientModule_1,
149
239
  imports: dynamicImports,
@@ -151,21 +241,32 @@ let HttpClientModule = HttpClientModule_1 = class HttpClientModule {
151
241
  exports: baseExports,
152
242
  };
153
243
  }
244
+ /**
245
+ * 安全地从环境变量解析整数
246
+ * @param configService NestJS ConfigService
247
+ * @param key 环境变量键
248
+ * @param defaultValue 默认值
249
+ * @returns 解析后的数字或默认值
250
+ */
251
+ static parseEnvInt(configService, key, defaultValue) {
252
+ const value = configService.get(key);
253
+ if (value === undefined || value === null || value === '') {
254
+ return defaultValue;
255
+ }
256
+ const parsed = parseInt(value, 10);
257
+ return isNaN(parsed) ? defaultValue : parsed;
258
+ }
154
259
  /**
155
260
  * 从环境变量加载配置
156
261
  */
157
262
  static loadConfigFromEnvironment(configService) {
158
- var _a, _b, _c, _d, _e, _f, _g;
263
+ var _a;
159
264
  return {
160
265
  baseURL: configService.get('HTTP_CLIENT_BASE_URL'),
161
- timeout: configService.get('HTTP_CLIENT_TIMEOUT')
162
- ? parseInt(configService.get('HTTP_CLIENT_TIMEOUT'))
163
- : undefined,
266
+ timeout: this.parseEnvInt(configService, 'HTTP_CLIENT_TIMEOUT'),
164
267
  retry: {
165
268
  enabled: configService.get('HTTP_CLIENT_RETRY_ENABLED') === 'true',
166
- retries: configService.get('HTTP_CLIENT_RETRY_RETRIES')
167
- ? parseInt(configService.get('HTTP_CLIENT_RETRY_RETRIES'))
168
- : undefined,
269
+ retries: this.parseEnvInt(configService, 'HTTP_CLIENT_RETRY_RETRIES'),
169
270
  retryDelay: configService.get('HTTP_CLIENT_RETRY_DELAY_STRATEGY') ===
170
271
  'exponential'
171
272
  ? (retryCount) => Math.pow(2, retryCount) * 1000
@@ -180,49 +281,12 @@ let HttpClientModule = HttpClientModule_1 = class HttpClientModule {
180
281
  circuitBreaker: {
181
282
  enabled: configService.get('HTTP_CLIENT_CIRCUIT_BREAKER_ENABLED') ===
182
283
  'true',
183
- failureThreshold: configService.get('HTTP_CLIENT_CIRCUIT_BREAKER_FAILURE_THRESHOLD')
184
- ? parseInt(configService.get('HTTP_CLIENT_CIRCUIT_BREAKER_FAILURE_THRESHOLD'))
185
- : 5,
186
- recoveryTimeoutMs: configService.get('HTTP_CLIENT_CIRCUIT_BREAKER_RECOVERY_TIMEOUT')
187
- ? parseInt(configService.get('HTTP_CLIENT_CIRCUIT_BREAKER_RECOVERY_TIMEOUT'))
188
- : 60000,
189
- monitoringPeriodMs: configService.get('HTTP_CLIENT_CIRCUIT_BREAKER_MONITORING_PERIOD')
190
- ? parseInt(configService.get('HTTP_CLIENT_CIRCUIT_BREAKER_MONITORING_PERIOD'))
191
- : 10000,
192
- minimumThroughputThreshold: configService.get('HTTP_CLIENT_CIRCUIT_BREAKER_MINIMUM_THROUGHPUT')
193
- ? parseInt(configService.get('HTTP_CLIENT_CIRCUIT_BREAKER_MINIMUM_THROUGHPUT'))
194
- : 10,
284
+ failureThreshold: this.parseEnvInt(configService, 'HTTP_CLIENT_CIRCUIT_BREAKER_FAILURE_THRESHOLD', 5),
285
+ recoveryTimeoutMs: this.parseEnvInt(configService, 'HTTP_CLIENT_CIRCUIT_BREAKER_RECOVERY_TIMEOUT', 60000),
286
+ monitoringPeriodMs: this.parseEnvInt(configService, 'HTTP_CLIENT_CIRCUIT_BREAKER_MONITORING_PERIOD', 10000),
287
+ minimumThroughputThreshold: this.parseEnvInt(configService, 'HTTP_CLIENT_CIRCUIT_BREAKER_MINIMUM_THROUGHPUT', 10),
195
288
  countHalfOpenCalls: configService.get('HTTP_CLIENT_CIRCUIT_BREAKER_COUNT_HALF_OPEN') === 'true',
196
289
  },
197
- cache: {
198
- enabled: configService.get('HTTP_CLIENT_CACHE_ENABLED') !== 'false',
199
- defaultTtl: configService.get('HTTP_CLIENT_CACHE_DEFAULT_TTL')
200
- ? parseInt(configService.get('HTTP_CLIENT_CACHE_DEFAULT_TTL'))
201
- : 300000,
202
- cacheableMethods: ((_b = (_a = configService
203
- .get('HTTP_CLIENT_CACHEABLE_METHODS')) === null || _a === void 0 ? void 0 : _a.split(',')) === null || _b === void 0 ? void 0 : _b.map((method) => method.trim().toUpperCase())) || [
204
- 'GET',
205
- 'HEAD',
206
- ],
207
- cacheableStatusCodes: ((_d = (_c = configService
208
- .get('HTTP_CLIENT_CACHEABLE_STATUS_CODES')) === null || _c === void 0 ? void 0 : _c.split(',')) === null || _d === void 0 ? void 0 : _d.map((code) => parseInt(code.trim()))) || [200, 201, 304],
209
- options: {
210
- layers: ((_f = (_e = configService
211
- .get('HTTP_CLIENT_CACHE_LAYERS')) === null || _e === void 0 ? void 0 : _e.split(',')) === null || _f === void 0 ? void 0 : _f.map((layer) => {
212
- const trimmed = layer.trim();
213
- switch (trimmed) {
214
- case 'cls':
215
- return cache_options_interface_1.CacheLayer.CLS;
216
- case 'memory':
217
- return cache_options_interface_1.CacheLayer.MEMORY;
218
- case 'redis':
219
- return cache_options_interface_1.CacheLayer.REDIS;
220
- default:
221
- return cache_options_interface_1.CacheLayer.MEMORY;
222
- }
223
- })) || [cache_options_interface_1.CacheLayer.MEMORY],
224
- },
225
- },
226
290
  logging: {
227
291
  enabled: configService.get('HTTP_CLIENT_LOGGING_ENABLED') !== 'false',
228
292
  logRequests: configService.get('HTTP_CLIENT_LOG_REQUESTS') !== 'false',
@@ -230,19 +294,15 @@ let HttpClientModule = HttpClientModule_1 = class HttpClientModule {
230
294
  logErrors: configService.get('HTTP_CLIENT_LOG_ERRORS') !== 'false',
231
295
  logHeaders: configService.get('HTTP_CLIENT_LOG_HEADERS') !== 'false',
232
296
  logBody: configService.get('HTTP_CLIENT_LOG_BODY') !== 'false',
233
- maxBodyLength: configService.get('HTTP_CLIENT_LOG_MAX_BODY_LENGTH')
234
- ? parseInt(configService.get('HTTP_CLIENT_LOG_MAX_BODY_LENGTH'))
235
- : undefined,
236
- sanitizeHeaders: (_g = configService
237
- .get('HTTP_CLIENT_LOG_SANITIZE_HEADERS')) === null || _g === void 0 ? void 0 : _g.split(','),
297
+ maxBodyLength: this.parseEnvInt(configService, 'HTTP_CLIENT_LOG_MAX_BODY_LENGTH'),
298
+ sanitize: (_a = configService
299
+ .get('HTTP_CLIENT_LOG_SANITIZE')) === null || _a === void 0 ? void 0 : _a.split(','),
238
300
  logLevel: configService.get('HTTP_CLIENT_LOG_LEVEL'),
239
301
  databaseLogging: {
240
302
  enabled: configService.get('HTTP_CLIENT_DB_LOGGING_ENABLED') ===
241
303
  'true',
242
304
  dataSource: configService.get('HTTP_CLIENT_DB_LOGGING_DATA_SOURCE') ||
243
305
  'default',
244
- tableName: configService.get('HTTP_CLIENT_DB_LOGGING_TABLE_NAME') ||
245
- 'http_logs',
246
306
  },
247
307
  },
248
308
  proxy: {
@@ -1,4 +1,4 @@
1
- export { HttpClientConfig, RetryConfig, CircuitBreakerConfig, HttpCacheConfig, ProxyConfig, LoggingConfig, InterceptorConfig, ConnectionPoolConfig, HttpContext, HttpInterceptor, HttpMethod, HttpStats, } from './interfaces/http-client-config.interface';
1
+ export { HttpClientConfig, AxiosNativeConfig, SslCertificateConfig, RetryConfig, CircuitBreakerConfig, ProxyConfig, LoggingConfig, InterceptorConfig, ConnectionPoolConfig, HttpContext, HttpInterceptor, HttpMethod, HttpStats, } from './interfaces/http-client-config.interface';
2
2
  export * from './interfaces/api-client-config.interface';
3
3
  export { HttpLogEntity, RetryRecord } from './entities';
4
4
  export * from './decorators';
@@ -47,6 +47,7 @@ export interface OAuth2Config {
47
47
  password?: string;
48
48
  redirectUri?: string;
49
49
  refreshToken?: string;
50
+ accessToken?: string;
50
51
  }
51
52
  /**
52
53
  * 自定义鉴权配置
@@ -115,17 +116,36 @@ export interface ResponseTransformerConfig {
115
116
  }
116
117
  /**
117
118
  * API客户端配置
119
+ * 用于创建多个具有不同配置的 HttpClient 实例
118
120
  */
119
121
  export interface ApiClientConfig {
120
122
  /** API名称(用于标识和日志) */
121
123
  name: string;
122
124
  /** 基础URL */
123
125
  baseURL: string;
124
- /** HTTP客户端基础配置 */
125
- httpConfig?: HttpClientConfig;
126
- /** 鉴权配置 */
126
+ /**
127
+ * HttpClient 配置
128
+ * 包含所有 HttpClientConfig 的配置项(timeout, retry, logging, axiosConfig 等)
129
+ */
130
+ httpConfig?: Partial<HttpClientConfig>;
131
+ /**
132
+ * 重试配置(快捷方式,会合并到 httpConfig.retry)
133
+ * @deprecated 使用 httpConfig.retry 代替
134
+ */
135
+ retry?: {
136
+ enabled?: boolean;
137
+ retries?: number;
138
+ retryCondition?: (error: any) => boolean;
139
+ };
140
+ /**
141
+ * 鉴权配置
142
+ * API客户端特有的鉴权功能
143
+ */
127
144
  auth?: AuthConfig;
128
- /** 响应转换配置 */
145
+ /**
146
+ * 响应转换配置
147
+ * API客户端特有的响应处理
148
+ */
129
149
  responseTransformer?: ResponseTransformerConfig;
130
150
  /** 默认请求头 */
131
151
  defaultHeaders?: Record<string, string>;
@@ -137,20 +157,12 @@ export interface ApiClientConfig {
137
157
  response?: Array<(response: AxiosResponse) => AxiosResponse | Promise<AxiosResponse>>;
138
158
  error?: Array<(error: any) => any>;
139
159
  };
140
- /** 重试配置(覆盖全局配置) */
141
- retry?: {
142
- enabled?: boolean;
143
- retries?: number;
144
- retryCondition?: (error: any) => boolean;
145
- };
146
160
  /** 是否启用响应验证 */
147
161
  enableValidation?: boolean;
148
162
  /** 响应时间警告阈值(毫秒) */
149
163
  responseTimeWarningThreshold?: number;
150
164
  /** 自定义标签(用于分类和查询) */
151
165
  tags?: string[];
152
- /** 是否启用详细日志 */
153
- enableDetailedLogging?: boolean;
154
166
  }
155
167
  /**
156
168
  * API客户端实例配置
@@ -184,94 +196,3 @@ export interface ApiClientRegistryConfig {
184
196
  /** 是否启用熔断器 */
185
197
  enableCircuitBreaker?: boolean;
186
198
  }
187
- /**
188
- * API客户端工厂接口
189
- */
190
- export interface ApiClientFactory {
191
- /**
192
- * 创建API客户端实例
193
- */
194
- createClient<T = any>(config: ApiClientInstanceConfig): T;
195
- /**
196
- * 获取已注册的客户端
197
- */
198
- getClient<T = any>(name: string): T;
199
- /**
200
- * 列出所有已注册的客户端
201
- */
202
- listClients(): string[];
203
- /**
204
- * 更新客户端配置
205
- */
206
- updateClient(name: string, config: Partial<ApiClientConfig>): void;
207
- /**
208
- * 移除客户端
209
- */
210
- removeClient(name: string): void;
211
- }
212
- /**
213
- * API客户端接口
214
- */
215
- export interface ApiClient {
216
- /** 客户端名称 */
217
- name: string;
218
- /** 客户端配置 */
219
- config: ApiClientConfig;
220
- /** 基础HTTP请求方法 */
221
- get<T = any>(url: string, config?: AxiosRequestConfig): Promise<T>;
222
- post<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
223
- put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
224
- patch<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
225
- delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<T>;
226
- /** 通用请求方法 */
227
- request<T = any>(config: AxiosRequestConfig): Promise<T>;
228
- /** 获取客户端统计信息 */
229
- getStats(): any;
230
- /** 重置统计信息 */
231
- resetStats(): void;
232
- }
233
- /**
234
- * 通用API响应格式
235
- */
236
- export interface ApiResponse<T = any> {
237
- /** 响应数据 */
238
- data?: T;
239
- /** 响应代码 */
240
- code?: number;
241
- /** 响应消息 */
242
- message?: string;
243
- /** 成功标识 */
244
- success?: boolean;
245
- /** 错误详情 */
246
- error?: {
247
- code?: string;
248
- message?: string;
249
- details?: any;
250
- };
251
- /** 分页信息 */
252
- pagination?: {
253
- page?: number;
254
- pageSize?: number;
255
- total?: number;
256
- totalPages?: number;
257
- };
258
- /** 请求ID */
259
- requestId?: string;
260
- /** 时间戳 */
261
- timestamp?: string;
262
- }
263
- /**
264
- * 错误响应格式
265
- */
266
- export interface ErrorResponse {
267
- /** 错误代码 */
268
- code: string | number;
269
- /** 错误消息 */
270
- message: string;
271
- /** 错误详情 */
272
- details?: any;
273
- /** 堆栈信息 */
274
- stack?: string;
275
- /** 请求ID */
276
- requestId?: string;
277
- }