@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
@@ -22,17 +22,15 @@ exports.PaymentHttpService = exports.GitHubHttpService = void 0;
22
22
  const common_1 = require("@nestjs/common");
23
23
  const decorators_1 = require("../decorators");
24
24
  const http_client_service_1 = require("../services/http-client.service");
25
- const cache_options_interface_1 = require("../../cache/interfaces/cache-options.interface");
26
25
  /**
27
26
  * 高级使用示例 - GitHub API客户端
28
- * 集成现有的三层缓存架构
29
27
  */
30
28
  let GitHubHttpService = class GitHubHttpService {
31
29
  constructor(httpClient) {
32
30
  this.httpClient = httpClient;
33
31
  }
34
32
  /**
35
- * 获取用户信息 - 带重试、熔断器、缓存和日志
33
+ * 获取用户信息 - 带重试、熔断器和日志
36
34
  */
37
35
  getUser(username) {
38
36
  return __awaiter(this, void 0, void 0, function* () {
@@ -40,7 +38,7 @@ let GitHubHttpService = class GitHubHttpService {
40
38
  });
41
39
  }
42
40
  /**
43
- * 搜索仓库 - 带重试和缓存
41
+ * 搜索仓库 - 带重试
44
42
  */
45
43
  searchRepositories(query_1) {
46
44
  return __awaiter(this, arguments, void 0, function* (query, sort = 'stars', order = 'desc') {
@@ -102,7 +100,7 @@ let GitHubHttpService = class GitHubHttpService {
102
100
  });
103
101
  }
104
102
  /**
105
- * 条件缓存示例
103
+ * 获取仓库详情
106
104
  */
107
105
  getRepositoryDetails(owner, repo, options) {
108
106
  return __awaiter(this, void 0, void 0, function* () {
@@ -126,11 +124,6 @@ __decorate([
126
124
  failureThreshold: 3,
127
125
  recoveryTimeoutMs: 30000,
128
126
  }),
129
- (0, decorators_1.HttpCacheable)({
130
- ttl: 300000, // 5分钟缓存
131
- layers: ['cls', 'memory', 'redis'], // 使用三层缓存
132
- namespace: 'github',
133
- }),
134
127
  (0, decorators_1.HttpLogRequest)({
135
128
  databaseLog: true,
136
129
  logHeaders: true,
@@ -146,12 +139,6 @@ __decorate([
146
139
  ], GitHubHttpService.prototype, "getUser", null);
147
140
  __decorate([
148
141
  (0, decorators_1.HttpRetry)({ retries: 3 }),
149
- (0, decorators_1.HttpCacheable)({
150
- ttl: 600000, // 10分钟缓存
151
- layers: ['memory', 'redis'], // 仅使用内存和Redis缓存
152
- namespace: 'github-search',
153
- condition: (args) => args[0].length > 2, // 只缓存搜索词长度大于2的请求
154
- }),
155
142
  __metadata("design:type", Function),
156
143
  __metadata("design:paramtypes", [String, String, String]),
157
144
  __metadata("design:returntype", Promise)
@@ -162,10 +149,6 @@ __decorate([
162
149
  port: 8080,
163
150
  protocol: 'http',
164
151
  }),
165
- (0, decorators_1.HttpCacheable)({
166
- ttl: 120000, // 2分钟缓存
167
- namespace: 'github-repos',
168
- }),
169
152
  __metadata("design:type", Function),
170
153
  __metadata("design:paramtypes", [String]),
171
154
  __metadata("design:returntype", Promise)
@@ -175,7 +158,7 @@ __decorate([
175
158
  logHeaders: true,
176
159
  logBody: true,
177
160
  databaseLog: true,
178
- sanitizeHeaders: ['authorization', 'x-api-key'],
161
+ sanitize: ['authorization', 'x-api-key'],
179
162
  }),
180
163
  __metadata("design:type", Function),
181
164
  __metadata("design:paramtypes", [Object, String]),
@@ -186,39 +169,14 @@ __decorate([
186
169
  failureThreshold: 5,
187
170
  recoveryTimeoutMs: 60000,
188
171
  }),
189
- (0, decorators_1.HttpCacheable)({
190
- ttl: 900000, // 15分钟缓存
191
- namespace: 'github-contributors',
192
- }),
193
172
  __metadata("design:type", Function),
194
173
  __metadata("design:paramtypes", [String, String]),
195
174
  __metadata("design:returntype", Promise)
196
175
  ], GitHubHttpService.prototype, "getRepositoryContributors", null);
197
- __decorate([
198
- (0, decorators_1.HttpCacheable)({
199
- ttl: 120000, // 2分钟缓存
200
- layers: ['memory'], // 仅内存缓存
201
- namespace: 'github-repo-details',
202
- condition: (args) => { var _a; return ((_a = args[2]) === null || _a === void 0 ? void 0 : _a.public) === true; }, // 只缓存公开仓库
203
- unless: (result, args) => (result === null || result === void 0 ? void 0 : result.archived) === true, // 不缓存已归档的仓库
204
- }),
205
- __metadata("design:type", Function),
206
- __metadata("design:paramtypes", [String, String, Object]),
207
- __metadata("design:returntype", Promise)
208
- ], GitHubHttpService.prototype, "getRepositoryDetails", null);
209
176
  exports.GitHubHttpService = GitHubHttpService = __decorate([
210
177
  (0, decorators_1.HttpClient)({
211
178
  baseURL: 'https://api.github.com',
212
179
  timeout: 10000,
213
- cache: {
214
- enabled: true,
215
- defaultTtl: 300000,
216
- cacheableMethods: ['GET', 'HEAD'],
217
- cacheableStatusCodes: [200, 304],
218
- options: {
219
- layers: [cache_options_interface_1.CacheLayer.MEMORY, cache_options_interface_1.CacheLayer.REDIS], // 使用现有的三层缓存
220
- },
221
- },
222
180
  logging: {
223
181
  enabled: true,
224
182
  logRequests: true,
@@ -227,7 +185,7 @@ exports.GitHubHttpService = GitHubHttpService = __decorate([
227
185
  logHeaders: true,
228
186
  logBody: true,
229
187
  maxBodyLength: 1000,
230
- sanitizeHeaders: ['authorization'],
188
+ sanitize: ['authorization'],
231
189
  logLevel: 'info',
232
190
  },
233
191
  }),
@@ -257,7 +215,7 @@ let PaymentHttpService = class PaymentHttpService {
257
215
  });
258
216
  }
259
217
  /**
260
- * 查询支付状态 - 可缓存
218
+ * 查询支付状态
261
219
  */
262
220
  getPaymentStatus(paymentId, apiKey) {
263
221
  return __awaiter(this, void 0, void 0, function* () {
@@ -322,16 +280,6 @@ __decorate([
322
280
  __metadata("design:paramtypes", [Object, String]),
323
281
  __metadata("design:returntype", Promise)
324
282
  ], PaymentHttpService.prototype, "createPayment", null);
325
- __decorate([
326
- (0, decorators_1.HttpCacheable)({
327
- ttl: 30000, // 30秒缓存
328
- layers: ['redis'], // 仅Redis缓存,确保多实例共享
329
- namespace: 'payment-status',
330
- }),
331
- __metadata("design:type", Function),
332
- __metadata("design:paramtypes", [String, String]),
333
- __metadata("design:returntype", Promise)
334
- ], PaymentHttpService.prototype, "getPaymentStatus", null);
335
283
  __decorate([
336
284
  (0, decorators_1.HttpRetry)({
337
285
  retries: 2,
@@ -367,7 +315,7 @@ exports.PaymentHttpService = PaymentHttpService = __decorate([
367
315
  logHeaders: false, // 不记录敏感头信息
368
316
  logBody: false, // 不记录支付数据
369
317
  maxBodyLength: 1000,
370
- sanitizeHeaders: ['authorization', 'x-api-key', 'x-client-secret'],
318
+ sanitize: ['authorization', 'x-api-key', 'x-client-secret'],
371
319
  logLevel: 'info',
372
320
  },
373
321
  }),
@@ -0,0 +1,17 @@
1
+ import { HttpClientConfig } from '../interfaces/http-client-config.interface';
2
+ /**
3
+ * axiosConfig 透传配置示例
4
+ * 展示如何通过 axiosConfig 直接传递 Axios 原生配置
5
+ */
6
+ export declare function httpAgentExample(): void;
7
+ export declare function redirectAndValidationExample(): void;
8
+ export declare function responseTypeExample(): void;
9
+ export declare function sizeAndRateLimitExample(): void;
10
+ export declare function paramsSerializationExample(): void;
11
+ export declare function formSerializationExample(): void;
12
+ export declare function securityOptionsExample(): void;
13
+ export declare function abortControllerExample(): void;
14
+ export declare function transitionalOptionsExample(): void;
15
+ export declare function progressEventsExample(): void;
16
+ export declare function comprehensiveConfigExample(): HttpClientConfig;
17
+ export declare function environmentSpecificConfig(): HttpClientConfig;
@@ -0,0 +1,311 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.httpAgentExample = httpAgentExample;
4
+ exports.redirectAndValidationExample = redirectAndValidationExample;
5
+ exports.responseTypeExample = responseTypeExample;
6
+ exports.sizeAndRateLimitExample = sizeAndRateLimitExample;
7
+ exports.paramsSerializationExample = paramsSerializationExample;
8
+ exports.formSerializationExample = formSerializationExample;
9
+ exports.securityOptionsExample = securityOptionsExample;
10
+ exports.abortControllerExample = abortControllerExample;
11
+ exports.transitionalOptionsExample = transitionalOptionsExample;
12
+ exports.progressEventsExample = progressEventsExample;
13
+ exports.comprehensiveConfigExample = comprehensiveConfigExample;
14
+ exports.environmentSpecificConfig = environmentSpecificConfig;
15
+ const http_1 = require("http");
16
+ const https_1 = require("https");
17
+ /**
18
+ * axiosConfig 透传配置示例
19
+ * 展示如何通过 axiosConfig 直接传递 Axios 原生配置
20
+ */
21
+ // ============================================================================
22
+ // 示例 1: 使用 httpAgent 和 httpsAgent 启用连接池
23
+ // ============================================================================
24
+ function httpAgentExample() {
25
+ const config = {
26
+ baseURL: 'https://api.example.com',
27
+ timeout: 30000,
28
+ // 通过 axiosConfig 透传 Axios 原生配置
29
+ axiosConfig: {
30
+ // 启用 HTTP keep-alive 连接池
31
+ httpAgent: new http_1.Agent({
32
+ keepAlive: true,
33
+ keepAliveMsecs: 1000,
34
+ maxSockets: 50,
35
+ maxFreeSockets: 10,
36
+ timeout: 60000,
37
+ }),
38
+ // 启用 HTTPS keep-alive 连接池
39
+ httpsAgent: new https_1.Agent({
40
+ keepAlive: true,
41
+ keepAliveMsecs: 1000,
42
+ maxSockets: 50,
43
+ maxFreeSockets: 10,
44
+ timeout: 60000,
45
+ // 可选:跳过证书验证(不推荐用于生产环境)
46
+ rejectUnauthorized: true,
47
+ }),
48
+ },
49
+ };
50
+ // 创建 HttpClientService 实例...
51
+ }
52
+ // ============================================================================
53
+ // 示例 2: 配置重定向和响应验证
54
+ // ============================================================================
55
+ function redirectAndValidationExample() {
56
+ const config = {
57
+ baseURL: 'https://api.example.com',
58
+ axiosConfig: {
59
+ // 禁止自动跟随重定向
60
+ maxRedirects: 0,
61
+ // 或者限制重定向次数
62
+ // maxRedirects: 5,
63
+ // 自定义状态码验证逻辑
64
+ validateStatus: (status) => {
65
+ // 将 400-499 视为成功(不抛出异常)
66
+ return status >= 200 && status < 500;
67
+ },
68
+ // 重定向前回调
69
+ beforeRedirect: (options, { headers }) => {
70
+ // 可以在这里修改重定向请求
71
+ if (options.hostname === 'restricted.com') {
72
+ throw new Error('Redirect to restricted domain not allowed');
73
+ }
74
+ },
75
+ },
76
+ };
77
+ }
78
+ // ============================================================================
79
+ // 示例 3: 配置响应类型和数据转换
80
+ // ============================================================================
81
+ function responseTypeExample() {
82
+ const config = {
83
+ baseURL: 'https://api.example.com',
84
+ axiosConfig: {
85
+ // 指定响应类型
86
+ responseType: 'arraybuffer', // 'arraybuffer' | 'document' | 'json' | 'text' | 'stream' | 'blob'
87
+ responseEncoding: 'utf8',
88
+ // 自定义请求/响应转换器
89
+ transformRequest: [
90
+ (data, headers) => {
91
+ // 在发送前修改数据
92
+ if (typeof data === 'object') {
93
+ // 自动添加时间戳
94
+ data.timestamp = Date.now();
95
+ }
96
+ return JSON.stringify(data);
97
+ },
98
+ ...require('axios').defaults.transformRequest,
99
+ ],
100
+ transformResponse: [
101
+ (data) => {
102
+ // 在接收后修改数据
103
+ if (typeof data === 'string') {
104
+ try {
105
+ const parsed = JSON.parse(data);
106
+ // 统一处理响应格式
107
+ return parsed.data || parsed;
108
+ }
109
+ catch (_a) {
110
+ return data;
111
+ }
112
+ }
113
+ return data;
114
+ },
115
+ ...require('axios').defaults.transformResponse,
116
+ ],
117
+ },
118
+ };
119
+ }
120
+ // ============================================================================
121
+ // 示例 4: 配置大小限制和速率限制
122
+ // ============================================================================
123
+ function sizeAndRateLimitExample() {
124
+ const config = {
125
+ baseURL: 'https://api.example.com',
126
+ axiosConfig: {
127
+ // 响应体大小限制(字节)
128
+ maxContentLength: 10 * 1024 * 1024, // 10MB
129
+ // 请求体大小限制(字节)
130
+ maxBodyLength: 5 * 1024 * 1024, // 5MB
131
+ // 速率限制 [上传 B/s, 下载 B/s]
132
+ maxRate: [1024 * 1024, 2 * 1024 * 1024], // 上传 1MB/s, 下载 2MB/s
133
+ },
134
+ };
135
+ }
136
+ // ============================================================================
137
+ // 示例 5: 配置参数序列化
138
+ // ============================================================================
139
+ function paramsSerializationExample() {
140
+ const config = {
141
+ baseURL: 'https://api.example.com',
142
+ axiosConfig: {
143
+ paramsSerializer: {
144
+ // 自定义编码函数
145
+ encode: (param) => {
146
+ return encodeURIComponent(param)
147
+ .replace(/%40/gi, '@')
148
+ .replace(/%3A/gi, ':')
149
+ .replace(/%24/g, '$')
150
+ .replace(/%2C/gi, ',')
151
+ .replace(/%20/g, '+');
152
+ },
153
+ // 数组索引格式
154
+ indexes: true, // true=a[0]=b, false=a[]=b, null=a=b
155
+ },
156
+ },
157
+ };
158
+ }
159
+ // ============================================================================
160
+ // 示例 6: 配置表单序列化
161
+ // ============================================================================
162
+ function formSerializationExample() {
163
+ const config = {
164
+ baseURL: 'https://api.example.com',
165
+ axiosConfig: {
166
+ formSerializer: {
167
+ // 自定义访问器
168
+ visitor: (value, key, path) => {
169
+ // 自定义值转换逻辑
170
+ if (value instanceof Date) {
171
+ return value.toISOString();
172
+ }
173
+ return value;
174
+ },
175
+ // 使用点符号而不是括号
176
+ dots: true,
177
+ // 保留特殊结尾(如 {})
178
+ metaTokens: true,
179
+ // 数组索引格式
180
+ indexes: true,
181
+ },
182
+ },
183
+ };
184
+ }
185
+ // ============================================================================
186
+ // 示例 7: 配置安全选项
187
+ // ============================================================================
188
+ function securityOptionsExample() {
189
+ const config = {
190
+ baseURL: 'https://api.example.com',
191
+ axiosConfig: {
192
+ // 是否允许绝对 URL 覆盖 baseURL
193
+ allowAbsoluteUrls: true,
194
+ // 跨域请求是否携带凭证
195
+ withCredentials: true,
196
+ // 禁用自动解压
197
+ decompress: false,
198
+ // 使用不安全的 HTTP 解析器(允许无效的 HTTP 头)
199
+ // 警告:仅在与非标准 HTTP 实现交互时使用
200
+ insecureHTTPParser: false,
201
+ },
202
+ };
203
+ }
204
+ // ============================================================================
205
+ // 示例 8: 使用 AbortSignal 取消请求
206
+ // ============================================================================
207
+ function abortControllerExample() {
208
+ const config = {
209
+ baseURL: 'https://api.example.com',
210
+ axiosConfig: {
211
+ // 可以在每次请求时动态设置
212
+ // signal: new AbortController().signal,
213
+ },
214
+ };
215
+ // 使用示例:
216
+ // const abortController = new AbortController();
217
+ // config.axiosConfig!.signal = abortController.signal;
218
+ //
219
+ // setTimeout(() => abortController.abort(), 5000); // 5秒后取消
220
+ }
221
+ // ============================================================================
222
+ // 示例 9: 向后兼容选项
223
+ // ============================================================================
224
+ function transitionalOptionsExample() {
225
+ const config = {
226
+ baseURL: 'https://api.example.com',
227
+ axiosConfig: {
228
+ transitional: {
229
+ // 静默 JSON 解析错误(旧行为)
230
+ silentJSONParsing: false,
231
+ // 即使 responseType 不是 'json' 也尝试解析
232
+ forcedJSONParsing: true,
233
+ // 超时时抛出明确的 ETIMEDOUT 错误
234
+ clarifyTimeoutError: true,
235
+ },
236
+ },
237
+ };
238
+ }
239
+ // ============================================================================
240
+ // 示例 10: 进度事件(浏览器环境)
241
+ // ============================================================================
242
+ function progressEventsExample() {
243
+ const config = {
244
+ baseURL: 'https://api.example.com',
245
+ axiosConfig: {
246
+ // 上传进度
247
+ onUploadProgress: (progressEvent) => {
248
+ const percentCompleted = Math.round((progressEvent.loaded * 100) / (progressEvent.total || 1));
249
+ console.log(`Upload ${percentCompleted}%`);
250
+ },
251
+ // 下载进度
252
+ onDownloadProgress: (progressEvent) => {
253
+ const percentCompleted = Math.round((progressEvent.loaded * 100) / (progressEvent.total || 1));
254
+ console.log(`Download ${percentCompleted}%`);
255
+ },
256
+ },
257
+ };
258
+ }
259
+ // ============================================================================
260
+ // 示例 11: 综合配置
261
+ // ============================================================================
262
+ function comprehensiveConfigExample() {
263
+ const config = {
264
+ // 显式配置(优先级高)
265
+ baseURL: 'https://api.example.com',
266
+ timeout: 30000,
267
+ // 内置功能配置
268
+ retry: {
269
+ enabled: true,
270
+ retries: 3,
271
+ },
272
+ circuitBreaker: {
273
+ enabled: true,
274
+ failureThreshold: 5,
275
+ },
276
+ logging: {
277
+ enabled: true,
278
+ logLevel: 'info',
279
+ },
280
+ // Axios 原生配置透传(优先级低,会被显式配置覆盖)
281
+ axiosConfig: {
282
+ httpAgent: new http_1.Agent({ keepAlive: true }),
283
+ httpsAgent: new https_1.Agent({ keepAlive: true }),
284
+ maxRedirects: 5,
285
+ responseType: 'json',
286
+ validateStatus: (status) => status >= 200 && status < 300,
287
+ maxContentLength: 10 * 1024 * 1024,
288
+ },
289
+ };
290
+ return config;
291
+ }
292
+ // ============================================================================
293
+ // 示例 12: 环境相关的配置
294
+ // ============================================================================
295
+ function environmentSpecificConfig() {
296
+ const isDevelopment = process.env.NODE_ENV === 'development';
297
+ const config = {
298
+ baseURL: isDevelopment
299
+ ? 'https://dev-api.example.com'
300
+ : 'https://api.example.com',
301
+ axiosConfig: {
302
+ // 开发环境使用更宽松的验证
303
+ validateStatus: isDevelopment
304
+ ? (status) => status >= 200 && status < 500
305
+ : (status) => status >= 200 && status < 300,
306
+ // 开发环境禁用 keep-alive 以便调试
307
+ httpAgent: isDevelopment ? undefined : new http_1.Agent({ keepAlive: true }),
308
+ },
309
+ };
310
+ return config;
311
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * HttpClientService 灵活返回示例
3
+ * 展示如何根据不同需求获取不同的响应数据
4
+ */
5
+ import { HttpClientService } from '../services/http-client.service';
6
+ declare function getFullResponseExample(httpClient: HttpClientService): Promise<any>;
7
+ declare function getCustomResponseExample(httpClient: HttpClientService): Promise<any>;
8
+ declare function getPagedResponseExample(httpClient: HttpClientService): Promise<{
9
+ data: any;
10
+ currentPage: number;
11
+ pageSize: number;
12
+ totalPages: number;
13
+ totalItems: number;
14
+ hasNextPage: any;
15
+ hasPrevPage: any;
16
+ }>;
17
+ declare function getRedirectUrlExample(httpClient: HttpClientService): Promise<{
18
+ redirected: boolean;
19
+ url: any;
20
+ data?: undefined;
21
+ } | {
22
+ redirected: boolean;
23
+ data: any;
24
+ url?: undefined;
25
+ }>;
26
+ declare function getDefaultBehaviorExample(httpClient: HttpClientService): Promise<any>;
27
+ declare function conditionalReturnExample(httpClient: HttpClientService, needHeaders: boolean): Promise<any>;
28
+ export { getFullResponseExample, getCustomResponseExample, getPagedResponseExample, getRedirectUrlExample, getDefaultBehaviorExample, conditionalReturnExample, };
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ /**
3
+ * HttpClientService 灵活返回示例
4
+ * 展示如何根据不同需求获取不同的响应数据
5
+ */
6
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
13
+ });
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.getFullResponseExample = getFullResponseExample;
17
+ exports.getCustomResponseExample = getCustomResponseExample;
18
+ exports.getPagedResponseExample = getPagedResponseExample;
19
+ exports.getRedirectUrlExample = getRedirectUrlExample;
20
+ exports.getDefaultBehaviorExample = getDefaultBehaviorExample;
21
+ exports.conditionalReturnExample = conditionalReturnExample;
22
+ // 示例1: 获取完整响应对象(包含headers, status等)
23
+ function getFullResponseExample(httpClient) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ // 返回完整的AxiosResponse对象
26
+ const fullResponse = yield httpClient.get('https://api.example.com/data', {}, // config
27
+ 'my-client', // clientName
28
+ { returnType: 'full' });
29
+ // 现在可以访问headers、status等信息
30
+ console.log('Status:', fullResponse.status);
31
+ console.log('Headers:', fullResponse.headers);
32
+ console.log('Data:', fullResponse.data);
33
+ // 例如检查特定header
34
+ const contentType = fullResponse.headers['content-type'];
35
+ const location = fullResponse.headers['location'];
36
+ return fullResponse.data; // 仍然可以获取data
37
+ });
38
+ }
39
+ // 示例2: 自定义返回格式
40
+ function getCustomResponseExample(httpClient) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ // 自定义转换函数 - 只返回需要的字段
43
+ const customResponse = yield httpClient.get('https://api.example.com/users', {}, 'my-client', {
44
+ returnType: 'custom',
45
+ transform: (response) => {
46
+ var _a;
47
+ return ({
48
+ data: response.data,
49
+ totalCount: response.headers['x-total-count'],
50
+ currentPage: response.headers['x-current-page'],
51
+ hasNext: (_a = response.headers['link']) === null || _a === void 0 ? void 0 : _a.includes('rel="next"'),
52
+ });
53
+ },
54
+ });
55
+ console.log('Total Count:', customResponse.totalCount);
56
+ console.log('Has Next Page:', customResponse.hasNext);
57
+ return customResponse;
58
+ });
59
+ }
60
+ // 示例3: 从headers中提取分页信息
61
+ function getPagedResponseExample(httpClient) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ var _a, _b;
64
+ const response = yield httpClient.get('https://api.example.com/items?page=1&size=10', {}, 'my-client', { returnType: 'full' });
65
+ // 提取分页信息
66
+ const paginationInfo = {
67
+ data: response.data,
68
+ currentPage: parseInt(response.headers['x-page'] || '1'),
69
+ pageSize: parseInt(response.headers['x-per-page'] || '10'),
70
+ totalPages: parseInt(response.headers['x-total-pages'] || '1'),
71
+ totalItems: parseInt(response.headers['x-total-items'] || '0'),
72
+ hasNextPage: ((_a = response.headers['link']) === null || _a === void 0 ? void 0 : _a.includes('rel="next"')) || false,
73
+ hasPrevPage: ((_b = response.headers['link']) === null || _b === void 0 ? void 0 : _b.includes('rel="prev"')) || false,
74
+ };
75
+ return paginationInfo;
76
+ });
77
+ }
78
+ // 示例4: 检查重定向URL
79
+ function getRedirectUrlExample(httpClient) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ const response = yield httpClient.get('https://api.example.com/redirect-me', { maxRedirects: 0 }, // 禁止自动重定向以便捕获Location header
82
+ 'my-client', { returnType: 'full' });
83
+ // 对于3xx重定向状态,获取重定向URL
84
+ if (response.status >= 300 && response.status < 400) {
85
+ const redirectUrl = response.headers['location'];
86
+ console.log('Redirect URL:', redirectUrl);
87
+ return { redirected: true, url: redirectUrl };
88
+ }
89
+ return { redirected: false, data: response.data };
90
+ });
91
+ }
92
+ // 示例5: 向后兼容 - 默认行为(只返回data)
93
+ function getDefaultBehaviorExample(httpClient) {
94
+ return __awaiter(this, void 0, void 0, function* () {
95
+ // 不传递returnOptions参数,保持原有行为
96
+ const data = yield httpClient.get('https://api.example.com/simple-data');
97
+ // 直接得到data,无需.response.data
98
+ console.log('Simple data:', data);
99
+ return data;
100
+ });
101
+ }
102
+ // 示例6: 条件性返回不同格式
103
+ function conditionalReturnExample(httpClient, needHeaders) {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ const returnOptions = needHeaders
106
+ ? { returnType: 'full' }
107
+ : { returnType: 'data' }; // 默认
108
+ const result = yield httpClient.post('https://api.example.com/process', { action: 'calculate' }, {}, 'my-client', returnOptions);
109
+ if (needHeaders) {
110
+ // 处理完整响应
111
+ const fullResponse = result;
112
+ console.log('Processing time:', fullResponse.headers['x-processing-time']);
113
+ return fullResponse.data;
114
+ }
115
+ else {
116
+ // 直接使用data
117
+ return result;
118
+ }
119
+ });
120
+ }
@@ -1,3 +1,5 @@
1
1
  export * from './basic-usage.example';
2
2
  export * from './advanced-usage.example';
3
3
  export * from './multi-api-configuration.example';
4
+ export * from './axios-config-extended.example';
5
+ export * from './ssl-certificate.example';
@@ -17,3 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./basic-usage.example"), exports);
18
18
  __exportStar(require("./advanced-usage.example"), exports);
19
19
  __exportStar(require("./multi-api-configuration.example"), exports);
20
+ __exportStar(require("./axios-config-extended.example"), exports);
21
+ __exportStar(require("./ssl-certificate.example"), exports);