@nest-omni/core 4.1.3-2 → 4.1.3-22
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.
- package/audit/audit.module.d.ts +11 -0
- package/audit/audit.module.js +65 -1
- package/audit/controllers/audit.controller.d.ts +81 -1
- package/audit/controllers/audit.controller.js +67 -0
- package/audit/decorators/audit-action.decorator.d.ts +74 -0
- package/audit/decorators/audit-action.decorator.js +42 -0
- package/audit/decorators/audit-controller.decorator.d.ts +9 -1
- package/audit/decorators/audit-controller.decorator.js +11 -2
- package/audit/decorators/audit-operation.decorator.d.ts +38 -0
- package/audit/decorators/audit-operation.decorator.js +42 -0
- package/audit/decorators/entity-audit.decorator.d.ts +85 -1
- package/audit/decorators/entity-audit.decorator.js +153 -3
- package/audit/decorators/index.d.ts +2 -0
- package/audit/decorators/index.js +2 -0
- package/audit/dto/audit-action-query.dto.d.ts +13 -0
- package/audit/dto/audit-action-query.dto.js +77 -0
- package/audit/dto/audit-log-query.dto.d.ts +3 -0
- package/audit/dto/audit-log-query.dto.js +3 -0
- package/audit/dto/begin-transaction.dto.d.ts +3 -0
- package/audit/dto/begin-transaction.dto.js +3 -0
- package/audit/dto/compare-entities.dto.d.ts +3 -0
- package/audit/dto/compare-entities.dto.js +3 -0
- package/audit/dto/index.d.ts +1 -0
- package/audit/dto/index.js +1 -0
- package/audit/dto/pre-check-restore.dto.d.ts +3 -0
- package/audit/dto/pre-check-restore.dto.js +3 -0
- package/audit/dto/restore-entity.dto.d.ts +3 -0
- package/audit/dto/restore-entity.dto.js +3 -0
- package/audit/entities/audit-action-summary.entity.d.ts +23 -0
- package/audit/entities/audit-action-summary.entity.js +101 -0
- package/audit/entities/entity-audit-log.entity.d.ts +10 -2
- package/audit/entities/entity-audit-log.entity.js +48 -9
- package/audit/entities/entity-transaction.entity.d.ts +11 -2
- package/audit/entities/entity-transaction.entity.js +42 -3
- package/audit/entities/index.d.ts +3 -0
- package/audit/entities/index.js +3 -0
- package/audit/entities/manual-operation-log.entity.d.ts +4 -2
- package/audit/entities/manual-operation-log.entity.js +12 -9
- package/audit/entities/operation-template.entity.d.ts +4 -0
- package/audit/entities/operation-template.entity.js +4 -0
- package/audit/enums/audit.enums.d.ts +29 -6
- package/audit/enums/audit.enums.js +31 -7
- package/audit/examples/decorator-value-mapping.example.d.ts +70 -0
- package/audit/examples/decorator-value-mapping.example.js +414 -0
- package/audit/index.d.ts +5 -1
- package/audit/index.js +38 -1
- package/audit/interceptors/audit-action.interceptor.d.ts +38 -0
- package/audit/interceptors/audit-action.interceptor.js +215 -0
- package/audit/interceptors/audit.interceptor.d.ts +16 -0
- package/audit/interceptors/audit.interceptor.js +41 -11
- package/audit/interceptors/index.d.ts +1 -0
- package/audit/interceptors/index.js +1 -0
- package/audit/interfaces/audit.interfaces.d.ts +174 -4
- package/audit/services/audit-action.service.d.ts +141 -0
- package/audit/services/audit-action.service.js +244 -0
- package/audit/services/audit-context.service.d.ts +106 -0
- package/audit/services/audit-context.service.js +185 -0
- package/audit/services/audit-strategy.service.d.ts +6 -0
- package/audit/services/audit-strategy.service.js +13 -0
- package/audit/services/entity-audit.service.d.ts +273 -5
- package/audit/services/entity-audit.service.js +840 -60
- package/audit/services/index.d.ts +3 -0
- package/audit/services/index.js +3 -0
- package/audit/services/manual-audit-log.service.d.ts +133 -9
- package/audit/services/manual-audit-log.service.js +157 -42
- package/audit/services/multi-database.service.d.ts +9 -2
- package/audit/services/multi-database.service.js +9 -21
- package/audit/services/operation-description.service.d.ts +71 -2
- package/audit/services/operation-description.service.js +231 -20
- package/audit/services/transaction-audit.service.d.ts +30 -0
- package/audit/services/transaction-audit.service.js +53 -5
- package/audit/subscribers/entity-audit.subscriber.d.ts +20 -0
- package/audit/subscribers/entity-audit.subscriber.js +98 -6
- package/cache/cache-metrics.service.d.ts +67 -0
- package/cache/cache-metrics.service.js +68 -4
- package/cache/cache-serialization.service.d.ts +31 -0
- package/cache/cache-serialization.service.js +25 -0
- package/cache/cache.constants.d.ts +9 -0
- package/cache/cache.constants.js +9 -0
- package/cache/cache.health.d.ts +26 -0
- package/cache/cache.health.js +30 -0
- package/cache/cache.module.d.ts +87 -2
- package/cache/cache.module.js +84 -11
- package/cache/cache.service.d.ts +143 -3
- package/cache/cache.service.js +173 -4
- package/cache/cache.warmup.service.d.ts +39 -0
- package/cache/cache.warmup.service.js +32 -0
- package/cache/decorators/cache-evict.decorator.d.ts +47 -0
- package/cache/decorators/cache-evict.decorator.js +56 -0
- package/cache/decorators/cache-put.decorator.d.ts +34 -0
- package/cache/decorators/cache-put.decorator.js +39 -0
- package/cache/decorators/cacheable.decorator.d.ts +40 -0
- package/cache/decorators/cacheable.decorator.js +55 -0
- package/cache/dependencies/callback.dependency.d.ts +33 -0
- package/cache/dependencies/callback.dependency.js +39 -1
- package/cache/dependencies/chain.dependency.d.ts +28 -0
- package/cache/dependencies/chain.dependency.js +34 -0
- package/cache/dependencies/db.dependency.d.ts +83 -7
- package/cache/dependencies/db.dependency.js +89 -14
- package/cache/dependencies/file.dependency.d.ts +32 -0
- package/cache/dependencies/file.dependency.js +34 -0
- package/cache/dependencies/tag.dependency.d.ts +75 -4
- package/cache/dependencies/tag.dependency.js +145 -11
- package/cache/dependencies/time.dependency.d.ts +43 -0
- package/cache/dependencies/time.dependency.js +43 -0
- package/cache/entities/index.d.ts +1 -0
- package/cache/entities/index.js +17 -0
- package/cache/entities/typeorm-cache.entity.d.ts +71 -0
- package/cache/entities/typeorm-cache.entity.js +110 -0
- package/cache/examples/basic-usage.d.ts +15 -0
- package/cache/examples/basic-usage.js +62 -8
- package/cache/index.d.ts +2 -1
- package/cache/index.js +28 -2
- package/cache/interfaces/cache-dependency.interface.d.ts +53 -0
- package/cache/interfaces/cache-options.interface.d.ts +89 -0
- package/cache/interfaces/cache-options.interface.js +6 -0
- package/cache/interfaces/cache-provider.interface.d.ts +78 -0
- package/cache/providers/base-cache.provider.d.ts +14 -0
- package/cache/providers/base-cache.provider.js +16 -0
- package/cache/providers/cls-cache.provider.d.ts +20 -0
- package/cache/providers/cls-cache.provider.js +28 -0
- package/cache/providers/index.d.ts +2 -1
- package/cache/providers/index.js +2 -1
- package/cache/providers/lrucache.provider.d.ts +76 -0
- package/cache/providers/lrucache.provider.js +226 -0
- package/cache/providers/redis-cache.provider.d.ts +26 -0
- package/cache/providers/redis-cache.provider.js +29 -0
- package/cache/providers/typeorm-cache.provider.d.ts +211 -0
- package/cache/providers/typeorm-cache.provider.js +483 -0
- package/cache/utils/dependency-manager.util.d.ts +52 -0
- package/cache/utils/dependency-manager.util.js +59 -0
- package/cache/utils/key-generator.util.d.ts +42 -0
- package/cache/utils/key-generator.util.js +53 -1
- package/common/abstract.entity.d.ts +14 -0
- package/common/abstract.entity.js +14 -0
- package/common/boilerplate.polyfill.d.ts +143 -0
- package/common/boilerplate.polyfill.js +35 -1
- package/common/dto/dto-container.d.ts +16 -0
- package/common/dto/dto-container.js +20 -0
- package/common/dto/dto-decorators.d.ts +18 -0
- package/common/dto/dto-decorators.js +14 -0
- package/common/dto/dto-extensions.d.ts +11 -0
- package/common/dto/dto-extensions.js +9 -0
- package/common/dto/dto-service-accessor.d.ts +17 -0
- package/common/dto/dto-service-accessor.js +18 -0
- package/common/dto/dto-transformer.d.ts +12 -0
- package/common/dto/dto-transformer.js +9 -0
- package/common/dto/index.js +2 -0
- package/common/examples/paginate-and-map.example.d.ts +6 -0
- package/common/examples/paginate-and-map.example.js +26 -0
- package/common/helpers/validation-metadata-helper.d.ts +55 -0
- package/common/helpers/validation-metadata-helper.js +60 -0
- package/common/index.d.ts +1 -0
- package/common/index.js +4 -0
- package/common/utils.d.ts +15 -0
- package/common/utils.js +15 -0
- package/constants/language-code.js +1 -0
- package/decorators/field.decorators.d.ts +72 -3
- package/decorators/field.decorators.js +155 -19
- package/decorators/property.decorators.js +1 -0
- package/decorators/public-route.decorator.js +1 -0
- package/decorators/transform.decorators.d.ts +27 -2
- package/decorators/transform.decorators.js +29 -23
- package/decorators/translate.decorator.js +1 -0
- package/decorators/user.decorator.js +1 -0
- package/decorators/validator.decorators.d.ts +8 -18
- package/decorators/validator.decorators.js +22 -190
- package/file-upload/controllers/file-access.controller.d.ts +23 -0
- package/file-upload/controllers/file-access.controller.js +128 -0
- package/file-upload/decorators/column.decorator.d.ts +151 -0
- package/file-upload/decorators/column.decorator.js +273 -0
- package/file-upload/decorators/csv-data.decorator.d.ts +30 -0
- package/file-upload/decorators/csv-data.decorator.js +85 -0
- package/file-upload/decorators/csv-import.decorator.d.ts +34 -0
- package/file-upload/decorators/csv-import.decorator.js +24 -0
- package/file-upload/decorators/examples/column-mapping.example.d.ts +76 -0
- package/file-upload/decorators/examples/column-mapping.example.js +122 -0
- package/file-upload/decorators/excel-data.decorator.d.ts +30 -0
- package/file-upload/decorators/excel-data.decorator.js +85 -0
- package/file-upload/decorators/file-upload.decorator.d.ts +83 -0
- package/file-upload/decorators/file-upload.decorator.js +172 -0
- package/file-upload/decorators/index.d.ts +5 -0
- package/file-upload/decorators/index.js +38 -0
- package/file-upload/decorators/process.decorator.d.ts +40 -0
- package/file-upload/decorators/process.decorator.js +52 -0
- package/file-upload/decorators/validate-data.decorator.d.ts +91 -0
- package/file-upload/decorators/validate-data.decorator.js +39 -0
- package/file-upload/dto/create-file.dto.d.ts +24 -0
- package/file-upload/dto/create-file.dto.js +112 -0
- package/file-upload/dto/find-files.dto.d.ts +15 -0
- package/file-upload/dto/find-files.dto.js +76 -0
- package/file-upload/dto/index.d.ts +4 -0
- package/file-upload/dto/index.js +20 -0
- package/file-upload/dto/pagination.dto.d.ts +7 -0
- package/file-upload/dto/pagination.dto.js +39 -0
- package/file-upload/dto/update-file.dto.d.ts +15 -0
- package/file-upload/dto/update-file.dto.js +67 -0
- package/file-upload/entities/file-metadata.entity.d.ts +25 -0
- package/file-upload/entities/file-metadata.entity.js +76 -0
- package/file-upload/entities/file.entity.d.ts +114 -0
- package/file-upload/entities/file.entity.js +350 -0
- package/file-upload/entities/index.d.ts +2 -0
- package/file-upload/entities/index.js +18 -0
- package/file-upload/enums/file-type.enum.d.ts +72 -0
- package/file-upload/enums/file-type.enum.js +212 -0
- package/file-upload/exceptions/file-upload.exception.d.ts +57 -0
- package/file-upload/exceptions/file-upload.exception.js +120 -0
- package/file-upload/exceptions/index.d.ts +1 -0
- package/file-upload/exceptions/index.js +17 -0
- package/file-upload/file-upload.module.d.ts +89 -0
- package/file-upload/file-upload.module.js +292 -0
- package/file-upload/index.d.ts +37 -0
- package/file-upload/index.js +77 -0
- package/file-upload/interceptors/file-upload.interceptor.d.ts +101 -0
- package/file-upload/interceptors/file-upload.interceptor.js +594 -0
- package/file-upload/interceptors/index.d.ts +1 -0
- package/file-upload/interceptors/index.js +17 -0
- package/file-upload/interfaces/custom-file-type.interface.d.ts +72 -0
- package/file-upload/interfaces/custom-file-type.interface.js +2 -0
- package/file-upload/interfaces/file-buffer.interface.d.ts +72 -0
- package/file-upload/interfaces/file-buffer.interface.js +2 -0
- package/file-upload/interfaces/file-entity.interface.d.ts +142 -0
- package/file-upload/interfaces/file-entity.interface.js +28 -0
- package/file-upload/interfaces/file-metadata.interface.d.ts +21 -0
- package/file-upload/interfaces/file-metadata.interface.js +2 -0
- package/file-upload/interfaces/file-processor.interface.d.ts +93 -0
- package/file-upload/interfaces/file-processor.interface.js +2 -0
- package/file-upload/interfaces/file-upload-options.interface.d.ts +74 -0
- package/file-upload/interfaces/file-upload-options.interface.js +5 -0
- package/file-upload/interfaces/index.d.ts +7 -0
- package/file-upload/interfaces/index.js +24 -0
- package/file-upload/interfaces/processor-options.interface.d.ts +102 -0
- package/file-upload/interfaces/processor-options.interface.js +2 -0
- package/file-upload/interfaces/storage-provider.interface.d.ts +239 -0
- package/file-upload/interfaces/storage-provider.interface.js +2 -0
- package/file-upload/interfaces/upload-options.interface.d.ts +19 -0
- package/file-upload/interfaces/upload-options.interface.js +2 -0
- package/file-upload/processors/csv.processor.d.ts +98 -0
- package/file-upload/processors/csv.processor.js +391 -0
- package/file-upload/processors/excel.processor.d.ts +130 -0
- package/file-upload/processors/excel.processor.js +547 -0
- package/file-upload/processors/image.processor.d.ts +199 -0
- package/file-upload/processors/image.processor.js +377 -0
- package/file-upload/providers/index.d.ts +2 -0
- package/file-upload/providers/index.js +18 -0
- package/file-upload/providers/local-storage.provider.d.ts +98 -0
- package/file-upload/providers/local-storage.provider.js +484 -0
- package/file-upload/providers/s3-storage.provider.d.ts +87 -0
- package/file-upload/providers/s3-storage.provider.js +455 -0
- package/file-upload/services/file-signature-validator.service.d.ts +118 -0
- package/file-upload/services/file-signature-validator.service.js +376 -0
- package/file-upload/services/file.service.d.ts +193 -0
- package/file-upload/services/file.service.js +638 -0
- package/file-upload/services/index.d.ts +4 -0
- package/file-upload/services/index.js +20 -0
- package/file-upload/services/malicious-file-detector.service.d.ts +300 -0
- package/file-upload/services/malicious-file-detector.service.js +1234 -0
- package/file-upload/services/mime-registry.service.d.ts +47 -0
- package/file-upload/services/mime-registry.service.js +167 -0
- package/file-upload/utils/checksum.util.d.ts +28 -0
- package/file-upload/utils/checksum.util.js +65 -0
- package/file-upload/utils/dynamic-import.util.d.ts +54 -0
- package/file-upload/utils/dynamic-import.util.js +156 -0
- package/file-upload/utils/filename.util.d.ts +59 -0
- package/file-upload/utils/filename.util.js +184 -0
- package/file-upload/utils/filepath.util.d.ts +70 -0
- package/file-upload/utils/filepath.util.js +152 -0
- package/file-upload/utils/index.d.ts +4 -0
- package/file-upload/utils/index.js +20 -0
- package/filters/bad-request.filter.js +19 -4
- package/filters/constraint-errors.js +1 -0
- package/helpers/common.helper.d.ts +13 -0
- package/helpers/common.helper.js +13 -0
- package/http-client/config/http-client.config.d.ts +20 -0
- package/http-client/config/http-client.config.js +48 -21
- package/http-client/decorators/http-client.decorators.d.ts +55 -14
- package/http-client/decorators/http-client.decorators.js +154 -78
- package/http-client/entities/http-log.entity.d.ts +217 -8
- package/http-client/entities/http-log.entity.js +7 -22
- package/http-client/errors/http-client.errors.d.ts +57 -0
- package/http-client/errors/http-client.errors.js +58 -0
- package/http-client/examples/advanced-usage.example.d.ts +40 -0
- package/http-client/examples/advanced-usage.example.js +53 -61
- package/http-client/examples/auth-with-waiting-lock.example.d.ts +31 -0
- package/http-client/examples/auth-with-waiting-lock.example.js +52 -5
- package/http-client/examples/basic-usage.example.d.ts +60 -0
- package/http-client/examples/basic-usage.example.js +60 -0
- package/http-client/examples/multi-api-configuration.example.d.ts +60 -0
- package/http-client/examples/multi-api-configuration.example.js +76 -5
- package/http-client/examples/proxy-from-environment.example.d.ts +133 -0
- package/http-client/examples/proxy-from-environment.example.js +409 -0
- package/http-client/http-client.module.d.ts +48 -2
- package/http-client/http-client.module.js +147 -68
- package/http-client/index.d.ts +1 -1
- package/http-client/index.js +8 -0
- package/http-client/interfaces/api-client-config.interface.d.ts +80 -45
- package/http-client/interfaces/api-client-config.interface.js +3 -0
- package/http-client/interfaces/http-client-config.interface.d.ts +109 -52
- package/http-client/services/api-client-registry.service.d.ts +50 -11
- package/http-client/services/api-client-registry.service.js +90 -250
- package/http-client/services/circuit-breaker.service.d.ts +115 -2
- package/http-client/services/circuit-breaker.service.js +237 -7
- package/http-client/services/http-client.service.d.ts +124 -14
- package/http-client/services/http-client.service.js +437 -148
- package/http-client/services/http-log-query.service.d.ts +83 -0
- package/http-client/services/http-log-query.service.js +121 -13
- package/http-client/services/http-replay.service.d.ts +101 -0
- package/http-client/services/http-replay.service.js +86 -0
- package/http-client/services/index.d.ts +0 -1
- package/http-client/services/index.js +0 -1
- package/http-client/services/log-cleanup.service.d.ts +63 -0
- package/http-client/services/log-cleanup.service.js +54 -2
- package/http-client/services/logging.service.d.ts +116 -7
- package/http-client/services/logging.service.js +349 -86
- package/http-client/utils/call-stack-extractor.util.d.ts +63 -0
- package/http-client/utils/call-stack-extractor.util.js +83 -0
- package/http-client/utils/context-extractor.util.d.ts +49 -0
- package/http-client/utils/context-extractor.util.js +54 -0
- package/http-client/utils/curl-generator.util.d.ts +21 -0
- package/http-client/utils/curl-generator.util.js +44 -3
- package/http-client/utils/index.d.ts +1 -0
- package/http-client/utils/index.js +1 -0
- package/http-client/utils/proxy-environment.util.d.ts +42 -0
- package/http-client/utils/proxy-environment.util.js +148 -0
- package/http-client/utils/request-id.util.d.ts +18 -0
- package/http-client/utils/request-id.util.js +20 -0
- package/http-client/utils/retry-recorder.util.d.ts +42 -0
- package/http-client/utils/retry-recorder.util.js +44 -0
- package/http-client/utils/security-validator.util.d.ts +118 -0
- package/http-client/utils/security-validator.util.js +352 -0
- package/index.d.ts +3 -1
- package/index.js +12 -1
- package/interceptors/translation-interceptor.service.js +5 -0
- package/ip-filter/constants.d.ts +21 -0
- package/ip-filter/constants.js +24 -0
- package/ip-filter/decorators/index.d.ts +1 -0
- package/ip-filter/decorators/index.js +17 -0
- package/ip-filter/decorators/ip-filter.decorator.d.ts +58 -0
- package/ip-filter/decorators/ip-filter.decorator.js +79 -0
- package/ip-filter/guards/index.d.ts +1 -0
- package/ip-filter/guards/index.js +17 -0
- package/ip-filter/guards/ip-filter.guard.d.ts +62 -0
- package/ip-filter/guards/ip-filter.guard.js +174 -0
- package/ip-filter/index.d.ts +7 -0
- package/ip-filter/index.js +23 -0
- package/ip-filter/interfaces/index.d.ts +4 -0
- package/ip-filter/interfaces/index.js +20 -0
- package/ip-filter/interfaces/ip-filter-async-options.interface.d.ts +15 -0
- package/ip-filter/interfaces/ip-filter-async-options.interface.js +2 -0
- package/ip-filter/interfaces/ip-filter-metadata.interface.d.ts +26 -0
- package/ip-filter/interfaces/ip-filter-metadata.interface.js +2 -0
- package/ip-filter/interfaces/ip-filter-options.interface.d.ts +34 -0
- package/ip-filter/interfaces/ip-filter-options.interface.js +2 -0
- package/ip-filter/interfaces/ip-rule.interface.d.ts +36 -0
- package/ip-filter/interfaces/ip-rule.interface.js +2 -0
- package/ip-filter/ip-filter.module.d.ts +55 -0
- package/ip-filter/ip-filter.module.js +105 -0
- package/ip-filter/services/index.d.ts +1 -0
- package/ip-filter/services/index.js +17 -0
- package/ip-filter/services/ip-filter.service.d.ts +92 -0
- package/ip-filter/services/ip-filter.service.js +238 -0
- package/ip-filter/utils/index.d.ts +1 -0
- package/ip-filter/utils/index.js +17 -0
- package/ip-filter/utils/ip-utils.d.ts +61 -0
- package/ip-filter/utils/ip-utils.js +162 -0
- package/package.json +32 -29
- package/providers/context.provider.d.ts +9 -0
- package/providers/context.provider.js +15 -0
- package/providers/generator.provider.d.ts +4 -0
- package/providers/generator.provider.js +4 -0
- package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
- package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
- package/redis-lock/examples/lock-strategy.examples.d.ts +89 -0
- package/redis-lock/examples/lock-strategy.examples.js +130 -15
- package/redis-lock/index.d.ts +2 -0
- package/redis-lock/index.js +8 -1
- package/redis-lock/lock-heartbeat.service.d.ts +80 -0
- package/redis-lock/lock-heartbeat.service.js +232 -0
- package/redis-lock/redis-lock.decorator.d.ts +101 -0
- package/redis-lock/redis-lock.decorator.js +120 -0
- package/redis-lock/redis-lock.module.d.ts +66 -0
- package/redis-lock/redis-lock.module.js +175 -70
- package/redis-lock/redis-lock.service.d.ts +282 -0
- package/redis-lock/redis-lock.service.js +343 -20
- package/setup/bootstrap.setup.d.ts +2 -1
- package/setup/bootstrap.setup.js +22 -1
- package/setup/index.d.ts +1 -0
- package/setup/index.js +1 -0
- package/setup/mode.setup.d.ts +44 -0
- package/setup/mode.setup.js +44 -0
- package/setup/run-in-mode.decorator.d.ts +56 -0
- package/setup/run-in-mode.decorator.js +92 -0
- package/setup/schedule.decorator.d.ts +227 -0
- package/setup/schedule.decorator.js +240 -12
- package/setup/worker.decorator.d.ts +86 -0
- package/setup/worker.decorator.js +97 -0
- package/shared/index.d.ts +1 -1
- package/shared/index.js +1 -1
- package/shared/{serviceRegistryModule.js → service-registry.module.js} +19 -18
- package/shared/services/api-config.service.d.ts +3 -0
- package/shared/services/api-config.service.js +21 -9
- package/shared/services/index.d.ts +0 -1
- package/shared/services/index.js +0 -1
- package/validator-json/decorators.d.ts +17 -0
- package/validator-json/decorators.js +17 -2
- package/validator-json/default.d.ts +6 -0
- package/validator-json/default.js +30 -2
- package/validator-json/defaultConverters.js +1 -0
- package/validator-json/options.d.ts +23 -0
- package/validators/common-validators.d.ts +143 -0
- package/validators/common-validators.js +249 -0
- package/validators/custom-validate.examples.d.ts +23 -0
- package/validators/custom-validate.examples.js +78 -6
- package/validators/custom-validate.validator.d.ts +108 -0
- package/validators/custom-validate.validator.js +85 -0
- package/validators/file-mimetype.validator.d.ts +0 -2
- package/validators/file-mimetype.validator.js +4 -6
- package/validators/index.d.ts +1 -0
- package/validators/index.js +1 -0
- package/validators/is-exists.validator.d.ts +26 -6
- package/validators/is-exists.validator.js +30 -7
- package/validators/is-unique.validator.d.ts +33 -7
- package/validators/is-unique.validator.js +59 -17
- package/validators/skip-empty.validator.d.ts +5 -0
- package/validators/skip-empty.validator.js +5 -0
- package/vault/interfaces/vault-options.interface.d.ts +9 -0
- package/vault/vault-config.loader.d.ts +30 -0
- package/vault/vault-config.loader.js +48 -1
- package/vault/vault-config.service.d.ts +53 -0
- package/vault/vault-config.service.js +57 -0
- package/vault/vault.module.d.ts +4 -0
- package/vault/vault.module.js +4 -0
- package/cache/providers/memory-cache.provider.d.ts +0 -26
- package/cache/providers/memory-cache.provider.js +0 -171
- package/decorators/examples/validation-decorators.example.d.ts +0 -69
- package/decorators/examples/validation-decorators.example.js +0 -331
- package/http-client/services/cache.service.d.ts +0 -24
- package/http-client/services/cache.service.js +0 -264
- package/shared/services/validator.service.d.ts +0 -3
- package/shared/services/validator.service.js +0 -20
- /package/shared/{serviceRegistryModule.d.ts → service-registry.module.d.ts} +0 -0
|
@@ -5,6 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
8
11
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
12
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
13
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -18,32 +21,96 @@ var HttpCircuitBreakerService_1;
|
|
|
18
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
22
|
exports.HttpCircuitBreakerService = void 0;
|
|
20
23
|
const common_1 = require("@nestjs/common");
|
|
24
|
+
/**
|
|
25
|
+
* 熔断器状态
|
|
26
|
+
*/
|
|
21
27
|
var CircuitBreakerState;
|
|
22
28
|
(function (CircuitBreakerState) {
|
|
23
29
|
CircuitBreakerState["CLOSED"] = "CLOSED";
|
|
24
30
|
CircuitBreakerState["OPEN"] = "OPEN";
|
|
25
31
|
CircuitBreakerState["HALF_OPEN"] = "HALF_OPEN";
|
|
26
32
|
})(CircuitBreakerState || (CircuitBreakerState = {}));
|
|
33
|
+
/**
|
|
34
|
+
* 熔断器服务
|
|
35
|
+
* 基于Spring Cloud CircuitBreaker的设计理念
|
|
36
|
+
*/
|
|
27
37
|
let HttpCircuitBreakerService = HttpCircuitBreakerService_1 = class HttpCircuitBreakerService {
|
|
28
38
|
constructor() {
|
|
29
39
|
this.logger = new common_1.Logger(HttpCircuitBreakerService_1.name);
|
|
30
40
|
this.circuitBreakers = new Map();
|
|
41
|
+
/** 默认清理配置 */
|
|
42
|
+
this.cleanupConfig = {
|
|
43
|
+
maxIdleTimeMs: 30 * 60 * 1000, // 30分钟
|
|
44
|
+
cleanupIntervalMs: 5 * 60 * 1000, // 5分钟
|
|
45
|
+
maxSize: 1000, // 最多1000个circuit breaker
|
|
46
|
+
};
|
|
47
|
+
// 启动定期清理任务
|
|
48
|
+
this.startCleanupTask();
|
|
31
49
|
}
|
|
50
|
+
onModuleDestroy() {
|
|
51
|
+
// 清理定时器
|
|
52
|
+
if (this.cleanupTimer) {
|
|
53
|
+
clearInterval(this.cleanupTimer);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 获取或创建熔断器
|
|
58
|
+
*/
|
|
32
59
|
getCircuitBreaker(key, config) {
|
|
33
|
-
|
|
34
|
-
|
|
60
|
+
let circuitBreaker = this.circuitBreakers.get(key);
|
|
61
|
+
if (!circuitBreaker) {
|
|
62
|
+
this.logger.debug(`Creating new circuit breaker with key: ${key}`);
|
|
63
|
+
circuitBreaker = new CircuitBreaker(key, config, this.logger);
|
|
64
|
+
this.circuitBreakers.set(key, circuitBreaker);
|
|
65
|
+
// 检查是否超过最大数量,如果是则触发LRU清理
|
|
66
|
+
if (this.circuitBreakers.size > this.cleanupConfig.maxSize) {
|
|
67
|
+
this.cleanupLRU();
|
|
68
|
+
}
|
|
35
69
|
}
|
|
36
|
-
|
|
70
|
+
else {
|
|
71
|
+
this.logger.debug(`Reusing existing circuit breaker with key: ${key}`);
|
|
72
|
+
// 更新最后访问时间
|
|
73
|
+
circuitBreaker.updateLastAccessTime();
|
|
74
|
+
}
|
|
75
|
+
return circuitBreaker;
|
|
37
76
|
}
|
|
38
|
-
|
|
77
|
+
/**
|
|
78
|
+
* 执行带熔断保护的请求
|
|
79
|
+
*/
|
|
80
|
+
executeWithCircuitBreaker(key, requestFn, config, onStateChange) {
|
|
39
81
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40
82
|
const circuitBreaker = this.getCircuitBreaker(key, config);
|
|
41
|
-
return circuitBreaker.execute(requestFn);
|
|
83
|
+
return circuitBreaker.execute(requestFn, onStateChange);
|
|
42
84
|
});
|
|
43
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* 获取熔断器当前状态
|
|
88
|
+
*/
|
|
89
|
+
getCircuitBreakerState(key) {
|
|
90
|
+
// Log all current circuit breaker keys for debugging
|
|
91
|
+
this.logger.debug(`Looking for circuit breaker key: ${key}. Available keys: [${Array.from(this.circuitBreakers.keys()).join(', ')}]`);
|
|
92
|
+
const circuitBreaker = this.circuitBreakers.get(key);
|
|
93
|
+
if (!circuitBreaker) {
|
|
94
|
+
this.logger.debug(`Circuit breaker not found for key: ${key}`);
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
const state = circuitBreaker.getState();
|
|
98
|
+
if (!state) {
|
|
99
|
+
this.logger.debug(`Circuit breaker getState() returned undefined for key: ${key}`);
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
this.logger.debug(`Circuit breaker state for ${key}: ${state.state}`);
|
|
103
|
+
return state.state;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 重置所有熔断器
|
|
107
|
+
*/
|
|
44
108
|
resetAll() {
|
|
45
109
|
this.circuitBreakers.forEach((cb) => cb.reset());
|
|
46
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* 获取所有熔断器状态
|
|
113
|
+
*/
|
|
47
114
|
getAllStates() {
|
|
48
115
|
const states = {};
|
|
49
116
|
this.circuitBreakers.forEach((cb, key) => {
|
|
@@ -51,11 +118,115 @@ let HttpCircuitBreakerService = HttpCircuitBreakerService_1 = class HttpCircuitB
|
|
|
51
118
|
});
|
|
52
119
|
return states;
|
|
53
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* 获取Circuit Breaker统计信息
|
|
123
|
+
*/
|
|
124
|
+
getStats() {
|
|
125
|
+
const stats = {
|
|
126
|
+
total: this.circuitBreakers.size,
|
|
127
|
+
byState: {
|
|
128
|
+
CLOSED: 0,
|
|
129
|
+
OPEN: 0,
|
|
130
|
+
HALF_OPEN: 0,
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
this.circuitBreakers.forEach((cb) => {
|
|
134
|
+
const state = cb.getState();
|
|
135
|
+
if (state && state.state) {
|
|
136
|
+
stats.byState[state.state]++;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
return stats;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* 清理空闲的Circuit Breaker
|
|
143
|
+
* 清理超过最大空闲时间的Circuit Breaker
|
|
144
|
+
*/
|
|
145
|
+
cleanupIdle() {
|
|
146
|
+
const now = Date.now();
|
|
147
|
+
const keysToDelete = [];
|
|
148
|
+
this.circuitBreakers.forEach((cb, key) => {
|
|
149
|
+
const lastAccess = cb.getLastAccessTime();
|
|
150
|
+
if (now - lastAccess > this.cleanupConfig.maxIdleTimeMs) {
|
|
151
|
+
keysToDelete.push(key);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
keysToDelete.forEach((key) => {
|
|
155
|
+
this.circuitBreakers.delete(key);
|
|
156
|
+
this.logger.debug(`Removed idle circuit breaker: ${key}`);
|
|
157
|
+
});
|
|
158
|
+
if (keysToDelete.length > 0) {
|
|
159
|
+
this.logger.log(`Cleaned up ${keysToDelete.length} idle circuit breaker(s)`);
|
|
160
|
+
}
|
|
161
|
+
return keysToDelete.length;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* 基于LRU策略清理Circuit Breaker
|
|
165
|
+
* 删除最久未访问的Circuit Breaker直到数量降到maxSize以下
|
|
166
|
+
*/
|
|
167
|
+
cleanupLRU() {
|
|
168
|
+
const entries = Array.from(this.circuitBreakers.entries());
|
|
169
|
+
// 按最后访问时间排序(最老的在前)
|
|
170
|
+
entries.sort((a, b) => {
|
|
171
|
+
return a[1].getLastAccessTime() - b[1].getLastAccessTime();
|
|
172
|
+
});
|
|
173
|
+
// 计算需要删除的数量
|
|
174
|
+
const toDelete = entries.slice(0, entries.length - this.cleanupConfig.maxSize);
|
|
175
|
+
toDelete.forEach(([key]) => {
|
|
176
|
+
this.circuitBreakers.delete(key);
|
|
177
|
+
this.logger.debug(`Removed LRU circuit breaker: ${key}`);
|
|
178
|
+
});
|
|
179
|
+
if (toDelete.length > 0) {
|
|
180
|
+
this.logger.warn(`LRU cleanup: removed ${toDelete.length} circuit breaker(s) to maintain max size of ${this.cleanupConfig.maxSize}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* 启动定期清理任务
|
|
185
|
+
*/
|
|
186
|
+
startCleanupTask() {
|
|
187
|
+
this.cleanupTimer = setInterval(() => {
|
|
188
|
+
try {
|
|
189
|
+
this.cleanupIdle();
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
this.logger.error('Error during circuit breaker cleanup', error);
|
|
193
|
+
}
|
|
194
|
+
}, this.cleanupConfig.cleanupIntervalMs);
|
|
195
|
+
this.logger.log(`Circuit breaker cleanup task started (interval: ${this.cleanupConfig.cleanupIntervalMs}ms, maxIdleTime: ${this.cleanupConfig.maxIdleTimeMs}ms)`);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* 手动触发清理(用于测试)
|
|
199
|
+
*/
|
|
200
|
+
manualCleanup() {
|
|
201
|
+
return this.cleanupIdle();
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* 设置清理配置
|
|
205
|
+
*/
|
|
206
|
+
setCleanupConfig(config) {
|
|
207
|
+
Object.assign(this.cleanupConfig, config);
|
|
208
|
+
// 重启清理任务
|
|
209
|
+
if (this.cleanupTimer) {
|
|
210
|
+
clearInterval(this.cleanupTimer);
|
|
211
|
+
}
|
|
212
|
+
this.startCleanupTask();
|
|
213
|
+
this.logger.log(`Circuit breaker cleanup config updated: ${JSON.stringify(this.cleanupConfig)}`);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* 获取清理配置
|
|
217
|
+
*/
|
|
218
|
+
getCleanupConfig() {
|
|
219
|
+
return Object.assign({}, this.cleanupConfig);
|
|
220
|
+
}
|
|
54
221
|
};
|
|
55
222
|
exports.HttpCircuitBreakerService = HttpCircuitBreakerService;
|
|
56
223
|
exports.HttpCircuitBreakerService = HttpCircuitBreakerService = HttpCircuitBreakerService_1 = __decorate([
|
|
57
|
-
(0, common_1.Injectable)()
|
|
224
|
+
(0, common_1.Injectable)(),
|
|
225
|
+
__metadata("design:paramtypes", [])
|
|
58
226
|
], HttpCircuitBreakerService);
|
|
227
|
+
/**
|
|
228
|
+
* 熔断器类
|
|
229
|
+
*/
|
|
59
230
|
class CircuitBreaker {
|
|
60
231
|
constructor(key, config, logger) {
|
|
61
232
|
this.key = key;
|
|
@@ -68,10 +239,29 @@ class CircuitBreaker {
|
|
|
68
239
|
this.nextAttemptTime = 0;
|
|
69
240
|
this.requestCount = 0;
|
|
70
241
|
this.windowStartTime = Date.now();
|
|
242
|
+
this.lastAccessTime = Date.now(); // 添加最后访问时间跟踪
|
|
71
243
|
}
|
|
72
|
-
|
|
244
|
+
/**
|
|
245
|
+
* 更新最后访问时间
|
|
246
|
+
*/
|
|
247
|
+
updateLastAccessTime() {
|
|
248
|
+
this.lastAccessTime = Date.now();
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* 获取最后访问时间
|
|
252
|
+
*/
|
|
253
|
+
getLastAccessTime() {
|
|
254
|
+
return this.lastAccessTime;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* 执行请求
|
|
258
|
+
*/
|
|
259
|
+
execute(requestFn, onStateChange) {
|
|
73
260
|
return __awaiter(this, void 0, void 0, function* () {
|
|
261
|
+
// 保存状态变化回调
|
|
262
|
+
this.onStateChange = onStateChange;
|
|
74
263
|
const currentTime = Date.now();
|
|
264
|
+
// 检查是否需要重置监控窗口
|
|
75
265
|
if (currentTime - this.windowStartTime > this.config.monitoringPeriodMs) {
|
|
76
266
|
this.resetMonitoringWindow();
|
|
77
267
|
}
|
|
@@ -87,6 +277,7 @@ class CircuitBreaker {
|
|
|
87
277
|
break;
|
|
88
278
|
case CircuitBreakerState.CLOSED:
|
|
89
279
|
default:
|
|
280
|
+
// 正常状态,继续执行
|
|
90
281
|
break;
|
|
91
282
|
}
|
|
92
283
|
this.requestCount++;
|
|
@@ -101,10 +292,16 @@ class CircuitBreaker {
|
|
|
101
292
|
}
|
|
102
293
|
});
|
|
103
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* 重置熔断器
|
|
297
|
+
*/
|
|
104
298
|
reset() {
|
|
105
299
|
this.transitionToClosed();
|
|
106
300
|
this.resetMonitoringWindow();
|
|
107
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* 获取熔断器状态
|
|
304
|
+
*/
|
|
108
305
|
getState() {
|
|
109
306
|
return {
|
|
110
307
|
state: this.state,
|
|
@@ -117,6 +314,9 @@ class CircuitBreaker {
|
|
|
117
314
|
config: this.config,
|
|
118
315
|
};
|
|
119
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
* 处理成功请求
|
|
319
|
+
*/
|
|
120
320
|
onSuccess() {
|
|
121
321
|
this.failureCount = 0;
|
|
122
322
|
switch (this.state) {
|
|
@@ -128,9 +328,13 @@ class CircuitBreaker {
|
|
|
128
328
|
break;
|
|
129
329
|
case CircuitBreakerState.CLOSED:
|
|
130
330
|
default:
|
|
331
|
+
// 保持关闭状态
|
|
131
332
|
break;
|
|
132
333
|
}
|
|
133
334
|
}
|
|
335
|
+
/**
|
|
336
|
+
* 处理失败请求
|
|
337
|
+
*/
|
|
134
338
|
onFailure() {
|
|
135
339
|
this.failureCount++;
|
|
136
340
|
this.lastFailureTime = Date.now();
|
|
@@ -148,29 +352,55 @@ class CircuitBreaker {
|
|
|
148
352
|
break;
|
|
149
353
|
}
|
|
150
354
|
}
|
|
355
|
+
/**
|
|
356
|
+
* 转换到关闭状态
|
|
357
|
+
*/
|
|
151
358
|
transitionToClosed() {
|
|
152
359
|
if (this.state !== CircuitBreakerState.CLOSED) {
|
|
153
360
|
this.logger.log(`Circuit breaker ${this.key} transitioned to CLOSED`);
|
|
154
361
|
this.state = CircuitBreakerState.CLOSED;
|
|
155
362
|
this.failureCount = 0;
|
|
156
363
|
this.successCount = 0;
|
|
364
|
+
// 通知状态变化
|
|
365
|
+
this.notifyStateChange(CircuitBreakerState.CLOSED);
|
|
157
366
|
}
|
|
158
367
|
}
|
|
368
|
+
/**
|
|
369
|
+
* 转换到开启状态
|
|
370
|
+
*/
|
|
159
371
|
transitionToOpen() {
|
|
160
372
|
if (this.state !== CircuitBreakerState.OPEN) {
|
|
161
373
|
this.logger.warn(`Circuit breaker ${this.key} transitioned to OPEN due to ${this.failureCount} failures`);
|
|
162
374
|
this.state = CircuitBreakerState.OPEN;
|
|
163
375
|
this.nextAttemptTime = Date.now() + this.config.recoveryTimeoutMs;
|
|
164
376
|
this.successCount = 0;
|
|
377
|
+
// 通知状态变化
|
|
378
|
+
this.notifyStateChange(CircuitBreakerState.OPEN);
|
|
165
379
|
}
|
|
166
380
|
}
|
|
381
|
+
/**
|
|
382
|
+
* 转换到半开状态
|
|
383
|
+
*/
|
|
167
384
|
transitionToHalfOpen() {
|
|
168
385
|
if (this.state !== CircuitBreakerState.HALF_OPEN) {
|
|
169
386
|
this.logger.log(`Circuit breaker ${this.key} transitioned to HALF_OPEN`);
|
|
170
387
|
this.state = CircuitBreakerState.HALF_OPEN;
|
|
171
388
|
this.successCount = 0;
|
|
389
|
+
// 通知状态变化
|
|
390
|
+
this.notifyStateChange(CircuitBreakerState.HALF_OPEN);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* 通知状态变化
|
|
395
|
+
*/
|
|
396
|
+
notifyStateChange(state) {
|
|
397
|
+
if (this.onStateChange) {
|
|
398
|
+
this.onStateChange(state);
|
|
172
399
|
}
|
|
173
400
|
}
|
|
401
|
+
/**
|
|
402
|
+
* 重置监控窗口
|
|
403
|
+
*/
|
|
174
404
|
resetMonitoringWindow() {
|
|
175
405
|
this.windowStartTime = Date.now();
|
|
176
406
|
this.requestCount = 0;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
2
2
|
import { HttpClientConfig } from '../interfaces/http-client-config.interface';
|
|
3
|
+
import { AuthType, ApiKeyConfig, BasicAuthConfig, BearerTokenConfig, CustomAuthConfig, OAuth2Config } from '../interfaces/api-client-config.interface';
|
|
3
4
|
import { HttpCircuitBreakerService } from './circuit-breaker.service';
|
|
4
5
|
import { HttpLoggingService } from './logging.service';
|
|
5
|
-
import { HttpCacheService } from './cache.service';
|
|
6
6
|
import { RedisLockService } from '../../redis-lock/redis-lock.service';
|
|
7
7
|
interface ExtendedAxiosRequestConfig extends AxiosRequestConfig {
|
|
8
8
|
metadata?: {
|
|
@@ -11,32 +11,106 @@ interface ExtendedAxiosRequestConfig extends AxiosRequestConfig {
|
|
|
11
11
|
[key: string]: any;
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* 认证配置接口
|
|
16
|
+
*/
|
|
17
|
+
interface AuthConfig {
|
|
18
|
+
type: AuthType;
|
|
19
|
+
config?: ApiKeyConfig | BasicAuthConfig | BearerTokenConfig | OAuth2Config | CustomAuthConfig;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* HTTP客户端服务
|
|
23
|
+
* 基于Spring RestTemplate的设计理念,集成axios-retry库
|
|
24
|
+
* 支持两种创建模式:
|
|
25
|
+
* 1. 直接创建: 用于简单的HTTP请求场景
|
|
26
|
+
* 2. API客户端模式: 用于需要认证、统计等高级功能的API客户端
|
|
27
|
+
*/
|
|
14
28
|
export declare class HttpClientService {
|
|
15
29
|
private readonly circuitBreakerService;
|
|
16
30
|
private readonly loggingService;
|
|
17
|
-
private readonly cacheService;
|
|
18
31
|
private readonly redisLockService?;
|
|
19
32
|
private readonly logger;
|
|
20
33
|
private readonly axiosInstance;
|
|
21
34
|
private readonly defaultConfig;
|
|
35
|
+
private readonly authConfig?;
|
|
36
|
+
private readonly clientName?;
|
|
22
37
|
private requestStats;
|
|
23
|
-
constructor(circuitBreakerService: HttpCircuitBreakerService, loggingService: HttpLoggingService,
|
|
24
|
-
|
|
38
|
+
constructor(circuitBreakerService: HttpCircuitBreakerService, loggingService: HttpLoggingService, redisLockService?: RedisLockService, config?: HttpClientConfig, clientName?: string, authConfig?: AuthConfig);
|
|
39
|
+
/**
|
|
40
|
+
* 静态工厂方法:创建API客户端模式的 HttpClientService
|
|
41
|
+
* @param dependencies 依赖服务
|
|
42
|
+
* @param config API客户端配置
|
|
43
|
+
* @returns HttpClientService 实例
|
|
44
|
+
*/
|
|
45
|
+
static createApiClient(dependencies: {
|
|
46
|
+
circuitBreakerService: HttpCircuitBreakerService;
|
|
47
|
+
loggingService: HttpLoggingService;
|
|
48
|
+
redisLockService?: RedisLockService;
|
|
49
|
+
}, config: {
|
|
50
|
+
name: string;
|
|
51
|
+
baseURL?: string;
|
|
52
|
+
timeout?: number;
|
|
53
|
+
httpConfig?: HttpClientConfig;
|
|
54
|
+
auth?: AuthConfig;
|
|
55
|
+
}): HttpClientService;
|
|
56
|
+
/**
|
|
57
|
+
* 执行HTTP请求
|
|
58
|
+
*/
|
|
59
|
+
request<T = any>(config: ExtendedAxiosRequestConfig, decoratorContext?: any, clientName?: string): Promise<T>;
|
|
60
|
+
/**
|
|
61
|
+
* 生成curl命令(动态生成,不存储)
|
|
62
|
+
*/
|
|
25
63
|
generateCurlCommand(config: ExtendedAxiosRequestConfig): string;
|
|
64
|
+
/**
|
|
65
|
+
* 生成调试curl命令(动态生成,不存储)
|
|
66
|
+
*/
|
|
26
67
|
generateDebugCurlCommand(config: ExtendedAxiosRequestConfig, response?: AxiosResponse): string;
|
|
68
|
+
/**
|
|
69
|
+
* 获取请求统计信息
|
|
70
|
+
*/
|
|
27
71
|
getStats(): any;
|
|
72
|
+
/**
|
|
73
|
+
* 重置统计信息
|
|
74
|
+
*/
|
|
28
75
|
resetStats(): void;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
76
|
+
/**
|
|
77
|
+
* 获取客户端名称
|
|
78
|
+
*/
|
|
79
|
+
getName(): string | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Capture calling context information
|
|
82
|
+
* @returns Calling context with service class and method name
|
|
83
|
+
*/
|
|
84
|
+
private captureCallingContext;
|
|
85
|
+
get<T = any>(url: string, config?: AxiosRequestConfig, clientName?: string): Promise<T>;
|
|
86
|
+
post<T = any>(url: string, data?: any, config?: AxiosRequestConfig, clientName?: string): Promise<T>;
|
|
87
|
+
put<T = any>(url: string, data?: any, config?: AxiosRequestConfig, clientName?: string): Promise<T>;
|
|
88
|
+
patch<T = any>(url: string, data?: any, config?: AxiosRequestConfig, clientName?: string): Promise<T>;
|
|
89
|
+
delete<T = any>(url: string, config?: AxiosRequestConfig, clientName?: string): Promise<T>;
|
|
90
|
+
/**
|
|
91
|
+
* 带等待锁的认证请求方法
|
|
92
|
+
* 用于需要确保只有一个进程执行认证相关操作的场景
|
|
93
|
+
*
|
|
94
|
+
* @param config 请求配置
|
|
95
|
+
* @param tokenProvider token提供函数
|
|
96
|
+
* @param options 等待锁选项
|
|
97
|
+
* @returns 响应数据
|
|
98
|
+
*/
|
|
34
99
|
authRequest<T = any>(config: AxiosRequestConfig, tokenProvider: () => Promise<string>, options?: {
|
|
35
100
|
lockKey?: string;
|
|
36
101
|
lockTimeout?: number;
|
|
37
102
|
waitTimeout?: number;
|
|
38
103
|
enableRetry?: boolean;
|
|
39
|
-
}): Promise<T>;
|
|
104
|
+
}, clientName?: string): Promise<T>;
|
|
105
|
+
/**
|
|
106
|
+
* 带等待锁的批量认证请求
|
|
107
|
+
* 用于需要批量执行认证相关操作但避免重复认证的场景
|
|
108
|
+
*
|
|
109
|
+
* @param requests 请求数组
|
|
110
|
+
* @param tokenProvider token提供函数
|
|
111
|
+
* @param options 等待锁选项
|
|
112
|
+
* @returns 响应数组
|
|
113
|
+
*/
|
|
40
114
|
authBatchRequest<T = any>(requests: Array<{
|
|
41
115
|
config: AxiosRequestConfig;
|
|
42
116
|
key: string;
|
|
@@ -45,16 +119,52 @@ export declare class HttpClientService {
|
|
|
45
119
|
lockTimeout?: number;
|
|
46
120
|
waitTimeout?: number;
|
|
47
121
|
maxConcurrency?: number;
|
|
48
|
-
}): Promise<Array<T | null>>;
|
|
122
|
+
}, clientName?: string): Promise<Array<T | null>>;
|
|
123
|
+
/**
|
|
124
|
+
* 创建Axios实例并配置axios-retry
|
|
125
|
+
*/
|
|
49
126
|
private createAxiosInstance;
|
|
127
|
+
/**
|
|
128
|
+
* 执行带特性的请求(重试、熔断器等)
|
|
129
|
+
* 返回响应和熔断器状态
|
|
130
|
+
*/
|
|
50
131
|
private executeWithFeatures;
|
|
132
|
+
/**
|
|
133
|
+
* 计算重试延迟
|
|
134
|
+
*/
|
|
51
135
|
private calculateRetryDelay;
|
|
136
|
+
/**
|
|
137
|
+
* 应用装饰器配置
|
|
138
|
+
*/
|
|
52
139
|
private applyDecoratorConfig;
|
|
53
|
-
|
|
140
|
+
/**
|
|
141
|
+
* 生成熔断器键
|
|
142
|
+
*/
|
|
54
143
|
private generateCircuitBreakerKey;
|
|
55
|
-
|
|
56
|
-
|
|
144
|
+
/**
|
|
145
|
+
* 合并默认配置
|
|
146
|
+
*/
|
|
57
147
|
private mergeWithDefaults;
|
|
148
|
+
/**
|
|
149
|
+
* 深度合并对象
|
|
150
|
+
*/
|
|
58
151
|
private deepMerge;
|
|
152
|
+
/**
|
|
153
|
+
* 解析代理配置
|
|
154
|
+
* 支持从环境变量或手动配置中读取
|
|
155
|
+
* @param proxyConfig 代理配置
|
|
156
|
+
* @param targetUrl 目标 URL(用于 NO_PROXY 检查)
|
|
157
|
+
* @returns 解析后的代理配置,如果不应使用代理则返回 false 或 undefined
|
|
158
|
+
*/
|
|
159
|
+
private resolveProxyConfig;
|
|
160
|
+
/**
|
|
161
|
+
* 应用认证配置到请求配置
|
|
162
|
+
*/
|
|
163
|
+
private applyAuthToConfig;
|
|
164
|
+
/**
|
|
165
|
+
* 更新请求统计信息
|
|
166
|
+
* 统一管理所有统计,避免在拦截器中重复统计
|
|
167
|
+
*/
|
|
168
|
+
private updateRequestStats;
|
|
59
169
|
}
|
|
60
170
|
export {};
|