@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
|
@@ -1,18 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CallStackExtractor = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 调用栈提取工具
|
|
6
|
+
* 用于自动提取HTTP请求的调用服务和方法信息
|
|
7
|
+
*/
|
|
4
8
|
class CallStackExtractor {
|
|
9
|
+
/**
|
|
10
|
+
* 设置装饰器上下文
|
|
11
|
+
*/
|
|
12
|
+
static setDecoratorContext(context) {
|
|
13
|
+
// 只在最外层设置
|
|
14
|
+
if (this.decoratorContextDepth === 0) {
|
|
15
|
+
this.decoratorContext = context;
|
|
16
|
+
}
|
|
17
|
+
this.decoratorContextDepth++;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 获取装饰器上下文
|
|
21
|
+
*/
|
|
22
|
+
static getDecoratorContext() {
|
|
23
|
+
return this.decoratorContext;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 清除装饰器上下文
|
|
27
|
+
*/
|
|
28
|
+
static clearDecoratorContext() {
|
|
29
|
+
this.decoratorContextDepth--;
|
|
30
|
+
// 只在最外层清除
|
|
31
|
+
if (this.decoratorContextDepth <= 0) {
|
|
32
|
+
this.decoratorContext = null;
|
|
33
|
+
this.decoratorContextDepth = 0;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 从调用栈中提取服务和方法信息
|
|
38
|
+
*/
|
|
5
39
|
static extractCallInfo() {
|
|
6
40
|
const stack = new Error().stack;
|
|
7
41
|
if (!stack) {
|
|
8
42
|
return {};
|
|
9
43
|
}
|
|
10
44
|
const lines = stack.split('\n');
|
|
45
|
+
// 跳过当前函数和HTTP客户端内部调用
|
|
11
46
|
const httpClientIndex = lines.findIndex((line) => line.includes('http-client.service.ts') ||
|
|
12
47
|
line.includes('HttpClientService'));
|
|
13
48
|
if (httpClientIndex === -1) {
|
|
14
49
|
return {};
|
|
15
50
|
}
|
|
51
|
+
// 查找实际的业务调用
|
|
16
52
|
for (let i = httpClientIndex + 1; i < lines.length; i++) {
|
|
17
53
|
const line = lines[i];
|
|
18
54
|
const callInfo = this.parseStackLine(line);
|
|
@@ -22,7 +58,11 @@ class CallStackExtractor {
|
|
|
22
58
|
}
|
|
23
59
|
return {};
|
|
24
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* 手动设置调用信息(当自动检测失败时)
|
|
63
|
+
*/
|
|
25
64
|
static setCallInfo(serviceClass, methodName, operationName) {
|
|
65
|
+
// 存储到当前上下文中
|
|
26
66
|
if (typeof global !== 'undefined') {
|
|
27
67
|
global.httpCallContext = {
|
|
28
68
|
serviceClass,
|
|
@@ -32,9 +72,13 @@ class CallStackExtractor {
|
|
|
32
72
|
};
|
|
33
73
|
}
|
|
34
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* 获取手动设置的调用信息
|
|
77
|
+
*/
|
|
35
78
|
static getManualCallInfo() {
|
|
36
79
|
if (typeof global !== 'undefined' && global.httpCallContext) {
|
|
37
80
|
const context = global.httpCallContext;
|
|
81
|
+
// 清理过期的上下文(超过1秒)
|
|
38
82
|
if (Date.now() - context.timestamp < 1000) {
|
|
39
83
|
return {
|
|
40
84
|
serviceClass: context.serviceClass,
|
|
@@ -46,18 +90,29 @@ class CallStackExtractor {
|
|
|
46
90
|
}
|
|
47
91
|
return null;
|
|
48
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* 清理手动设置的调用信息
|
|
95
|
+
*/
|
|
49
96
|
static clearCallInfo() {
|
|
50
97
|
if (typeof global !== 'undefined' && global.httpCallContext) {
|
|
51
98
|
delete global.httpCallContext;
|
|
52
99
|
}
|
|
53
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* 获取调用信息(优先使用手动设置的信息)
|
|
103
|
+
*/
|
|
54
104
|
static getCallInfo() {
|
|
105
|
+
// 首先尝试获取手动设置的信息
|
|
55
106
|
const manualInfo = this.getManualCallInfo();
|
|
56
107
|
if (manualInfo) {
|
|
57
108
|
return manualInfo;
|
|
58
109
|
}
|
|
110
|
+
// 然后尝试从调用栈中自动提取
|
|
59
111
|
return this.extractCallInfo();
|
|
60
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* 从装饰器中提取调用信息
|
|
115
|
+
*/
|
|
61
116
|
static extractFromDecorator(target, propertyKey) {
|
|
62
117
|
var _a;
|
|
63
118
|
const serviceClass = (_a = target.constructor) === null || _a === void 0 ? void 0 : _a.name;
|
|
@@ -70,13 +125,18 @@ class CallStackExtractor {
|
|
|
70
125
|
: undefined,
|
|
71
126
|
};
|
|
72
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* 生成操作名称
|
|
130
|
+
*/
|
|
73
131
|
static generateOperationName(serviceClass, methodName, config) {
|
|
74
132
|
if (!serviceClass || !methodName) {
|
|
75
133
|
return 'Unknown';
|
|
76
134
|
}
|
|
135
|
+
// 根据URL生成操作名称
|
|
77
136
|
let operationName = `${serviceClass}.${methodName}`;
|
|
78
137
|
if (config === null || config === void 0 ? void 0 : config.url) {
|
|
79
138
|
const url = config.url;
|
|
139
|
+
// 提取URL中的关键路径部分
|
|
80
140
|
const pathParts = url
|
|
81
141
|
.split('/')
|
|
82
142
|
.filter((part) => part && !part.includes('{'));
|
|
@@ -89,20 +149,32 @@ class CallStackExtractor {
|
|
|
89
149
|
}
|
|
90
150
|
return operationName;
|
|
91
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* 格式化服务类名
|
|
154
|
+
*/
|
|
92
155
|
static formatServiceClass(serviceClass) {
|
|
93
156
|
if (!serviceClass)
|
|
94
157
|
return 'Unknown';
|
|
158
|
+
// 移除常见的后缀
|
|
95
159
|
return serviceClass.replace(/Service|Controller|Provider|Handler$/, '');
|
|
96
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* 格式化方法名
|
|
163
|
+
*/
|
|
97
164
|
static formatMethodName(methodName) {
|
|
98
165
|
if (!methodName)
|
|
99
166
|
return 'unknown';
|
|
167
|
+
// 将驼峰命名转换为更友好的格式
|
|
100
168
|
return methodName
|
|
101
169
|
.replace(/([A-Z])/g, ' $1')
|
|
102
170
|
.replace(/^./, (str) => str.toUpperCase())
|
|
103
171
|
.trim();
|
|
104
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* 解析调用栈行
|
|
175
|
+
*/
|
|
105
176
|
static parseStackLine(line) {
|
|
177
|
+
// 匹配格式:at ClassName.methodName (/path/to/file.js:line:column)
|
|
106
178
|
const match = line.match(/at\s+([^.]+)\.([^(]+)\s*\(/);
|
|
107
179
|
if (!match) {
|
|
108
180
|
return null;
|
|
@@ -114,6 +186,9 @@ class CallStackExtractor {
|
|
|
114
186
|
operationName: `${serviceClass}.${methodName}`,
|
|
115
187
|
};
|
|
116
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* 判断是否为内部调用
|
|
191
|
+
*/
|
|
117
192
|
static isInternalCall(serviceClass) {
|
|
118
193
|
if (!serviceClass)
|
|
119
194
|
return true;
|
|
@@ -136,3 +211,11 @@ class CallStackExtractor {
|
|
|
136
211
|
}
|
|
137
212
|
}
|
|
138
213
|
exports.CallStackExtractor = CallStackExtractor;
|
|
214
|
+
/**
|
|
215
|
+
* 存储装饰器上下文(用于传递装饰器信息到HTTP客户端)
|
|
216
|
+
*/
|
|
217
|
+
CallStackExtractor.decoratorContext = null;
|
|
218
|
+
/**
|
|
219
|
+
* 装饰器上下文引用计数,用于处理多个装饰器嵌套的情况
|
|
220
|
+
*/
|
|
221
|
+
CallStackExtractor.decoratorContextDepth = 0;
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 上下文信息提取器
|
|
3
|
+
* 从ContextProvider获取请求相关的上下文信息
|
|
4
|
+
*/
|
|
1
5
|
export declare class ContextExtractor {
|
|
6
|
+
/**
|
|
7
|
+
* 获取完整的HTTP请求上下文
|
|
8
|
+
*/
|
|
2
9
|
static getHttpContext(): {
|
|
3
10
|
requestId?: string;
|
|
4
11
|
userId?: string;
|
|
@@ -8,14 +15,41 @@ export declare class ContextExtractor {
|
|
|
8
15
|
metadata?: Record<string, any>;
|
|
9
16
|
tags?: string[];
|
|
10
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* 获取请求ID
|
|
20
|
+
*/
|
|
11
21
|
static getRequestId(): string | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* 获取用户ID
|
|
24
|
+
*/
|
|
12
25
|
static getUserId(): string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* 获取客户端IP
|
|
28
|
+
*/
|
|
13
29
|
static getClientIp(): string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* 获取用户代理
|
|
32
|
+
*/
|
|
14
33
|
static getUserAgent(): string | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* 获取服务名称
|
|
36
|
+
*/
|
|
15
37
|
static getServiceName(): string | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* 获取元数据
|
|
40
|
+
*/
|
|
16
41
|
static getMetadata(): Record<string, any> | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* 获取标签
|
|
44
|
+
*/
|
|
17
45
|
static getTags(): string[];
|
|
46
|
+
/**
|
|
47
|
+
* 添加标签到上下文
|
|
48
|
+
*/
|
|
18
49
|
static addTag(tag: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* 获取上下文摘要
|
|
52
|
+
*/
|
|
19
53
|
static getContextSummary(): {
|
|
20
54
|
requestId?: string;
|
|
21
55
|
userId?: string;
|
|
@@ -24,13 +58,22 @@ export declare class ContextExtractor {
|
|
|
24
58
|
hasUser: boolean;
|
|
25
59
|
requestSource: string;
|
|
26
60
|
};
|
|
61
|
+
/**
|
|
62
|
+
* 获取请求来源信息
|
|
63
|
+
*/
|
|
27
64
|
static getRequestSource(): {
|
|
28
65
|
source: 'internal' | 'external' | 'unknown';
|
|
29
66
|
ip?: string;
|
|
30
67
|
userAgent?: string;
|
|
31
68
|
service?: string;
|
|
32
69
|
};
|
|
70
|
+
/**
|
|
71
|
+
* 判断是否为内部请求
|
|
72
|
+
*/
|
|
33
73
|
static isInternalRequest(): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* 获取安全上下文
|
|
76
|
+
*/
|
|
34
77
|
static getSecurityContext(): {
|
|
35
78
|
isAuthenticated: boolean;
|
|
36
79
|
userId?: string;
|
|
@@ -39,6 +82,12 @@ export declare class ContextExtractor {
|
|
|
39
82
|
permissions: string[];
|
|
40
83
|
securityLevel: 'low' | 'medium' | 'high';
|
|
41
84
|
};
|
|
85
|
+
/**
|
|
86
|
+
* 生成Span ID
|
|
87
|
+
*/
|
|
42
88
|
private static generateSpanId;
|
|
89
|
+
/**
|
|
90
|
+
* 检查172.x.x.x是否为内网IP (172.16.0.0 - 172.31.255.255)
|
|
91
|
+
*/
|
|
43
92
|
private static isInternal172IP;
|
|
44
93
|
}
|
|
@@ -2,12 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ContextExtractor = void 0;
|
|
4
4
|
const providers_1 = require("../../providers");
|
|
5
|
+
/**
|
|
6
|
+
* 上下文信息提取器
|
|
7
|
+
* 从ContextProvider获取请求相关的上下文信息
|
|
8
|
+
*/
|
|
5
9
|
class ContextExtractor {
|
|
10
|
+
/**
|
|
11
|
+
* 获取完整的HTTP请求上下文
|
|
12
|
+
*/
|
|
6
13
|
static getHttpContext() {
|
|
7
14
|
try {
|
|
8
15
|
const requestId = providers_1.ContextProvider.getRequestId();
|
|
9
16
|
const authUser = providers_1.ContextProvider.getAuthUser();
|
|
10
17
|
const router = providers_1.ContextProvider.getRouter();
|
|
18
|
+
const source = providers_1.ContextProvider.getSource();
|
|
11
19
|
return {
|
|
12
20
|
requestId,
|
|
13
21
|
userId: authUser === null || authUser === void 0 ? void 0 : authUser.uid,
|
|
@@ -16,16 +24,21 @@ class ContextExtractor {
|
|
|
16
24
|
metadata: {
|
|
17
25
|
authUser,
|
|
18
26
|
router,
|
|
27
|
+
source, // 添加 source 字段
|
|
19
28
|
},
|
|
20
29
|
tags: [],
|
|
21
30
|
};
|
|
22
31
|
}
|
|
23
32
|
catch (_a) {
|
|
33
|
+
// If no context is available, return empty context
|
|
24
34
|
return {
|
|
25
35
|
tags: [],
|
|
26
36
|
};
|
|
27
37
|
}
|
|
28
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* 获取请求ID
|
|
41
|
+
*/
|
|
29
42
|
static getRequestId() {
|
|
30
43
|
try {
|
|
31
44
|
return providers_1.ContextProvider.getRequestId();
|
|
@@ -34,6 +47,9 @@ class ContextExtractor {
|
|
|
34
47
|
return undefined;
|
|
35
48
|
}
|
|
36
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* 获取用户ID
|
|
52
|
+
*/
|
|
37
53
|
static getUserId() {
|
|
38
54
|
try {
|
|
39
55
|
const authUser = providers_1.ContextProvider.getAuthUser();
|
|
@@ -43,6 +59,9 @@ class ContextExtractor {
|
|
|
43
59
|
return undefined;
|
|
44
60
|
}
|
|
45
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* 获取客户端IP
|
|
64
|
+
*/
|
|
46
65
|
static getClientIp() {
|
|
47
66
|
try {
|
|
48
67
|
const router = providers_1.ContextProvider.getRouter();
|
|
@@ -52,6 +71,9 @@ class ContextExtractor {
|
|
|
52
71
|
return undefined;
|
|
53
72
|
}
|
|
54
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* 获取用户代理
|
|
76
|
+
*/
|
|
55
77
|
static getUserAgent() {
|
|
56
78
|
try {
|
|
57
79
|
const router = providers_1.ContextProvider.getRouter();
|
|
@@ -61,6 +83,9 @@ class ContextExtractor {
|
|
|
61
83
|
return undefined;
|
|
62
84
|
}
|
|
63
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* 获取服务名称
|
|
88
|
+
*/
|
|
64
89
|
static getServiceName() {
|
|
65
90
|
try {
|
|
66
91
|
const authUser = providers_1.ContextProvider.getAuthUser();
|
|
@@ -70,6 +95,9 @@ class ContextExtractor {
|
|
|
70
95
|
return undefined;
|
|
71
96
|
}
|
|
72
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* 获取元数据
|
|
100
|
+
*/
|
|
73
101
|
static getMetadata() {
|
|
74
102
|
try {
|
|
75
103
|
const authUser = providers_1.ContextProvider.getAuthUser();
|
|
@@ -83,6 +111,9 @@ class ContextExtractor {
|
|
|
83
111
|
return undefined;
|
|
84
112
|
}
|
|
85
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* 获取标签
|
|
116
|
+
*/
|
|
86
117
|
static getTags() {
|
|
87
118
|
try {
|
|
88
119
|
const context = this.getHttpContext();
|
|
@@ -92,6 +123,9 @@ class ContextExtractor {
|
|
|
92
123
|
return [];
|
|
93
124
|
}
|
|
94
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* 添加标签到上下文
|
|
128
|
+
*/
|
|
95
129
|
static addTag(tag) {
|
|
96
130
|
try {
|
|
97
131
|
const context = this.getHttpContext();
|
|
@@ -102,8 +136,12 @@ class ContextExtractor {
|
|
|
102
136
|
}
|
|
103
137
|
}
|
|
104
138
|
catch (_a) {
|
|
139
|
+
// Silently fail if context is not available
|
|
105
140
|
}
|
|
106
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* 获取上下文摘要
|
|
144
|
+
*/
|
|
107
145
|
static getContextSummary() {
|
|
108
146
|
const context = this.getHttpContext();
|
|
109
147
|
return {
|
|
@@ -115,11 +153,15 @@ class ContextExtractor {
|
|
|
115
153
|
requestSource: this.getRequestSource().source,
|
|
116
154
|
};
|
|
117
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* 获取请求来源信息
|
|
158
|
+
*/
|
|
118
159
|
static getRequestSource() {
|
|
119
160
|
const context = this.getHttpContext();
|
|
120
161
|
if (!context.clientIp) {
|
|
121
162
|
return { source: 'unknown' };
|
|
122
163
|
}
|
|
164
|
+
// Check if it's an internal IP
|
|
123
165
|
const internalIPs = ['::1', '127.0.0.1', 'localhost'];
|
|
124
166
|
const isInternal = internalIPs.includes(context.clientIp) ||
|
|
125
167
|
context.clientIp.startsWith('192.168.') ||
|
|
@@ -133,10 +175,16 @@ class ContextExtractor {
|
|
|
133
175
|
service: context.appId,
|
|
134
176
|
};
|
|
135
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* 判断是否为内部请求
|
|
180
|
+
*/
|
|
136
181
|
static isInternalRequest() {
|
|
137
182
|
const requestSource = this.getRequestSource();
|
|
138
183
|
return requestSource.source === 'internal';
|
|
139
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* 获取安全上下文
|
|
187
|
+
*/
|
|
140
188
|
static getSecurityContext() {
|
|
141
189
|
try {
|
|
142
190
|
const authUser = providers_1.ContextProvider.getAuthUser();
|
|
@@ -157,9 +205,15 @@ class ContextExtractor {
|
|
|
157
205
|
};
|
|
158
206
|
}
|
|
159
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* 生成Span ID
|
|
210
|
+
*/
|
|
160
211
|
static generateSpanId() {
|
|
161
212
|
return Math.random().toString(36).substring(2, 15);
|
|
162
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* 检查172.x.x.x是否为内网IP (172.16.0.0 - 172.31.255.255)
|
|
216
|
+
*/
|
|
163
217
|
static isInternal172IP(ip) {
|
|
164
218
|
if (!ip.startsWith('172.'))
|
|
165
219
|
return false;
|
|
@@ -1,9 +1,30 @@
|
|
|
1
1
|
import { AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
2
|
+
/**
|
|
3
|
+
* HTTP请求curl命令生成器
|
|
4
|
+
*/
|
|
2
5
|
export declare class CurlGenerator {
|
|
6
|
+
/**
|
|
7
|
+
* 生成curl命令
|
|
8
|
+
*/
|
|
3
9
|
static generateCurlCommand(config: AxiosRequestConfig, response?: AxiosResponse): string;
|
|
10
|
+
/**
|
|
11
|
+
* 生成简化的curl命令(用于日志记录)
|
|
12
|
+
*/
|
|
4
13
|
static generateSimplifiedCurl(config: AxiosRequestConfig): string;
|
|
14
|
+
/**
|
|
15
|
+
* 生成用于调试的详细curl命令
|
|
16
|
+
*/
|
|
5
17
|
static generateDebugCurl(config: AxiosRequestConfig, response?: AxiosResponse): string;
|
|
18
|
+
/**
|
|
19
|
+
* 从curl命令解析请求配置
|
|
20
|
+
*/
|
|
6
21
|
static parseCurlCommand(curlCommand: string): Partial<AxiosRequestConfig>;
|
|
22
|
+
/**
|
|
23
|
+
* 构建完整URL
|
|
24
|
+
*/
|
|
7
25
|
private static buildUrl;
|
|
26
|
+
/**
|
|
27
|
+
* 过滤敏感头信息
|
|
28
|
+
*/
|
|
8
29
|
private static sanitizeHeaderValue;
|
|
9
30
|
}
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CurlGenerator = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* HTTP请求curl命令生成器
|
|
6
|
+
*/
|
|
4
7
|
class CurlGenerator {
|
|
8
|
+
/**
|
|
9
|
+
* 生成curl命令
|
|
10
|
+
*/
|
|
5
11
|
static generateCurlCommand(config, response) {
|
|
6
12
|
const parts = ['curl'];
|
|
13
|
+
// 添加方法
|
|
7
14
|
if (config.method && config.method.toLowerCase() !== 'get') {
|
|
8
15
|
parts.push(`-X ${config.method.toUpperCase()}`);
|
|
9
16
|
}
|
|
17
|
+
// 添加URL
|
|
10
18
|
const url = this.buildUrl(config);
|
|
11
19
|
parts.push(`'${url}'`);
|
|
20
|
+
// 添加头信息
|
|
12
21
|
if (config.headers) {
|
|
13
22
|
Object.entries(config.headers).forEach(([key, value]) => {
|
|
14
23
|
if (value !== undefined && value !== null) {
|
|
@@ -16,12 +25,14 @@ class CurlGenerator {
|
|
|
16
25
|
}
|
|
17
26
|
});
|
|
18
27
|
}
|
|
28
|
+
// 添加数据
|
|
19
29
|
if (config.data) {
|
|
20
30
|
const data = typeof config.data === 'string'
|
|
21
31
|
? config.data
|
|
22
32
|
: JSON.stringify(config.data, null, 2);
|
|
23
33
|
parts.push(`-d '${data}'`);
|
|
24
34
|
}
|
|
35
|
+
// 添加表单数据
|
|
25
36
|
if (config.data instanceof FormData) {
|
|
26
37
|
const formDataParts = [];
|
|
27
38
|
config.data.forEach((value, key) => {
|
|
@@ -34,26 +45,35 @@ class CurlGenerator {
|
|
|
34
45
|
});
|
|
35
46
|
parts.push(...formDataParts);
|
|
36
47
|
}
|
|
48
|
+
// 添加查询参数(如果不在URL中)
|
|
37
49
|
if (config.params && !url.includes('?')) {
|
|
38
50
|
const params = new URLSearchParams(config.params).toString();
|
|
39
51
|
if (params) {
|
|
40
52
|
parts[parts.length - 1] = parts[parts.length - 1].replace(/'/, `?${params}'`);
|
|
41
53
|
}
|
|
42
54
|
}
|
|
43
|
-
|
|
44
|
-
parts.push('-
|
|
45
|
-
parts.push('-
|
|
55
|
+
// 添加其他选项
|
|
56
|
+
parts.push('-i'); // 包含头信息
|
|
57
|
+
parts.push('-s'); // 静默模式
|
|
58
|
+
parts.push('-L'); // 跟随重定向
|
|
59
|
+
// 添加响应状态码注释
|
|
46
60
|
if (response) {
|
|
47
61
|
parts.push(`# Response: ${response.status} ${response.statusText}`);
|
|
48
62
|
}
|
|
49
63
|
return parts.join(' \\\n ');
|
|
50
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* 生成简化的curl命令(用于日志记录)
|
|
67
|
+
*/
|
|
51
68
|
static generateSimplifiedCurl(config) {
|
|
52
69
|
const parts = ['curl'];
|
|
70
|
+
// 添加方法
|
|
53
71
|
if (config.method && config.method.toLowerCase() !== 'get') {
|
|
54
72
|
parts.push(`-X ${config.method.toUpperCase()}`);
|
|
55
73
|
}
|
|
74
|
+
// 添加URL
|
|
56
75
|
parts.push(`'${this.buildUrl(config)}'`);
|
|
76
|
+
// 只添加重要的头信息
|
|
57
77
|
const importantHeaders = [
|
|
58
78
|
'content-type',
|
|
59
79
|
'accept',
|
|
@@ -65,11 +85,13 @@ class CurlGenerator {
|
|
|
65
85
|
.filter(([key]) => importantHeaders.includes(key.toLowerCase()))
|
|
66
86
|
.forEach(([key, value]) => {
|
|
67
87
|
if (value !== undefined && value !== null) {
|
|
88
|
+
// 过滤敏感信息
|
|
68
89
|
const sanitizedValue = this.sanitizeHeaderValue(key, String(value));
|
|
69
90
|
parts.push(`-H '${key}: ${sanitizedValue}'`);
|
|
70
91
|
}
|
|
71
92
|
});
|
|
72
93
|
}
|
|
94
|
+
// 添加数据(简化版)
|
|
73
95
|
if (config.data) {
|
|
74
96
|
const data = typeof config.data === 'string'
|
|
75
97
|
? config.data.substring(0, 200) +
|
|
@@ -79,9 +101,13 @@ class CurlGenerator {
|
|
|
79
101
|
}
|
|
80
102
|
return parts.join(' ');
|
|
81
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* 生成用于调试的详细curl命令
|
|
106
|
+
*/
|
|
82
107
|
static generateDebugCurl(config, response) {
|
|
83
108
|
var _a, _b, _c;
|
|
84
109
|
const curl = this.generateCurlCommand(config, response);
|
|
110
|
+
// 添加调试信息注释
|
|
85
111
|
const debugInfo = [
|
|
86
112
|
'# Debug Information:',
|
|
87
113
|
`# Timestamp: ${new Date().toISOString()}`,
|
|
@@ -94,17 +120,23 @@ class CurlGenerator {
|
|
|
94
120
|
}
|
|
95
121
|
return debugInfo.join('\n') + '\n' + curl;
|
|
96
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* 从curl命令解析请求配置
|
|
125
|
+
*/
|
|
97
126
|
static parseCurlCommand(curlCommand) {
|
|
98
127
|
const config = {};
|
|
99
128
|
try {
|
|
129
|
+
// 提取方法
|
|
100
130
|
const methodMatch = curlCommand.match(/-X\s+(\w+)/);
|
|
101
131
|
if (methodMatch) {
|
|
102
132
|
config.method = methodMatch[1].toLowerCase();
|
|
103
133
|
}
|
|
134
|
+
// 提取URL
|
|
104
135
|
const urlMatch = curlCommand.match(/curl[^']*'([^']+)'/);
|
|
105
136
|
if (urlMatch) {
|
|
106
137
|
config.url = urlMatch[1];
|
|
107
138
|
}
|
|
139
|
+
// 提取头信息
|
|
108
140
|
const headerMatches = curlCommand.match(/-H\s+'([^:]+):\s*([^']+)'/g) || [];
|
|
109
141
|
config.headers = {};
|
|
110
142
|
headerMatches.forEach((header) => {
|
|
@@ -113,6 +145,7 @@ class CurlGenerator {
|
|
|
113
145
|
config.headers[headerMatch[1]] = headerMatch[2];
|
|
114
146
|
}
|
|
115
147
|
});
|
|
148
|
+
// 提取数据
|
|
116
149
|
const dataMatch = curlCommand.match(/-d\s+'([^']+)'/);
|
|
117
150
|
if (dataMatch) {
|
|
118
151
|
try {
|
|
@@ -128,11 +161,16 @@ class CurlGenerator {
|
|
|
128
161
|
}
|
|
129
162
|
return config;
|
|
130
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* 构建完整URL
|
|
166
|
+
*/
|
|
131
167
|
static buildUrl(config) {
|
|
132
168
|
let url = config.url || '';
|
|
169
|
+
// 处理相对URL
|
|
133
170
|
if (config.baseURL && !url.startsWith('http')) {
|
|
134
171
|
url = config.baseURL.replace(/\/$/, '') + '/' + url.replace(/^\//, '');
|
|
135
172
|
}
|
|
173
|
+
// 添加查询参数
|
|
136
174
|
if (config.params) {
|
|
137
175
|
const searchParams = new URLSearchParams();
|
|
138
176
|
Object.entries(config.params).forEach(([key, value]) => {
|
|
@@ -147,6 +185,9 @@ class CurlGenerator {
|
|
|
147
185
|
}
|
|
148
186
|
return url;
|
|
149
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* 过滤敏感头信息
|
|
190
|
+
*/
|
|
150
191
|
static sanitizeHeaderValue(key, value) {
|
|
151
192
|
const sensitiveKeys = [
|
|
152
193
|
'authorization',
|
|
@@ -18,3 +18,4 @@ __exportStar(require("./curl-generator.util"), exports);
|
|
|
18
18
|
__exportStar(require("./retry-recorder.util"), exports);
|
|
19
19
|
__exportStar(require("./context-extractor.util"), exports);
|
|
20
20
|
__exportStar(require("./call-stack-extractor.util"), exports);
|
|
21
|
+
__exportStar(require("./proxy-environment.util"), exports);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ProxyConfig } from '../interfaces/http-client-config.interface';
|
|
2
|
+
/**
|
|
3
|
+
* 代理环境变量解析工具
|
|
4
|
+
* 支持标准的代理环境变量:HTTP_PROXY, HTTPS_PROXY, NO_PROXY
|
|
5
|
+
*/
|
|
6
|
+
export declare class ProxyEnvironmentParser {
|
|
7
|
+
private static readonly logger;
|
|
8
|
+
/**
|
|
9
|
+
* 从环境变量解析代理配置
|
|
10
|
+
* @param protocol 请求协议 (http 或 https)
|
|
11
|
+
* @param targetUrl 目标 URL(用于检查 NO_PROXY)
|
|
12
|
+
* @returns 解析后的代理配置,如果不应使用代理则返回 false
|
|
13
|
+
*/
|
|
14
|
+
static parseFromEnvironment(protocol?: 'http' | 'https', targetUrl?: string): false | Required<Omit<ProxyConfig, 'enabled' | 'fromEnvironment'>>;
|
|
15
|
+
/**
|
|
16
|
+
* 解析代理 URL
|
|
17
|
+
* 支持格式: http://proxy:port, http://user:pass@proxy:port
|
|
18
|
+
*/
|
|
19
|
+
private static parseProxyUrl;
|
|
20
|
+
/**
|
|
21
|
+
* 检查是否应该绕过代理
|
|
22
|
+
* 基于 NO_PROXY 环境变量
|
|
23
|
+
*/
|
|
24
|
+
private static shouldBypassProxy;
|
|
25
|
+
/**
|
|
26
|
+
* 简单的 IP 地址匹配
|
|
27
|
+
* 支持精确匹配和 CIDR 表示法
|
|
28
|
+
*/
|
|
29
|
+
private static isIpMatch;
|
|
30
|
+
/**
|
|
31
|
+
* 获取所有代理相关的环境变量
|
|
32
|
+
*/
|
|
33
|
+
static getProxyEnvironmentVariables(): {
|
|
34
|
+
HTTP_PROXY?: string;
|
|
35
|
+
HTTPS_PROXY?: string;
|
|
36
|
+
NO_PROXY?: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* 检查是否设置了代理环境变量
|
|
40
|
+
*/
|
|
41
|
+
static hasProxyEnvironment(): boolean;
|
|
42
|
+
}
|