@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
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
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
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.LRUCacheProvider = void 0;
|
|
22
|
+
const common_1 = require("@nestjs/common");
|
|
23
|
+
const base_cache_provider_1 = require("./base-cache.provider");
|
|
24
|
+
// Dynamic import to handle ESM/CommonJS interop
|
|
25
|
+
const LRUCacheClass = require('lru-cache').LRUCache;
|
|
26
|
+
/**
|
|
27
|
+
* LRU Memory Cache Provider
|
|
28
|
+
*
|
|
29
|
+
* High-performance in-memory LRU (Least Recently Used) cache provider.
|
|
30
|
+
* This is an L2 cache layer with fast access and automatic eviction.
|
|
31
|
+
*
|
|
32
|
+
* Features:
|
|
33
|
+
* - O(1) get/set operations
|
|
34
|
+
* - Automatic LRU eviction when cache is full
|
|
35
|
+
* - Optional TTL (Time To Live) support
|
|
36
|
+
* - Namespace isolation
|
|
37
|
+
* - Cache statistics (size, hit rate, usage percentage)
|
|
38
|
+
*
|
|
39
|
+
* Use Cases:
|
|
40
|
+
* - Session data caching
|
|
41
|
+
* - Frequently accessed configuration
|
|
42
|
+
* - API response caching
|
|
43
|
+
* - Temporary data storage
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const provider = new LRUCacheProvider({
|
|
48
|
+
* maxSize: 1000,
|
|
49
|
+
* ttl: 60000, // optional TTL
|
|
50
|
+
* namespace: 'my-cache',
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
let LRUCacheProvider = class LRUCacheProvider extends base_cache_provider_1.BaseCacheProvider {
|
|
55
|
+
constructor(options) {
|
|
56
|
+
super();
|
|
57
|
+
const { maxSize = 500, ttl, namespace = 'cache:lru' } = options || {};
|
|
58
|
+
this.namespace = namespace;
|
|
59
|
+
this.defaultTtl = ttl;
|
|
60
|
+
this.cache = new LRUCacheClass({
|
|
61
|
+
max: maxSize,
|
|
62
|
+
ttl: ttl,
|
|
63
|
+
updateAgeOnGet: true,
|
|
64
|
+
updateAgeOnHas: true,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
getName() {
|
|
68
|
+
return 'LRUMemory';
|
|
69
|
+
}
|
|
70
|
+
get(key) {
|
|
71
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
72
|
+
try {
|
|
73
|
+
const fullKey = this.getFullKey(key);
|
|
74
|
+
const value = this.cache.get(fullKey);
|
|
75
|
+
return value !== undefined ? value : null;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
console.warn(`LRUCacheProvider: Failed to get key ${key}:`, error);
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
set(key, value, ttl) {
|
|
84
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
try {
|
|
86
|
+
const fullKey = this.getFullKey(key);
|
|
87
|
+
const effectiveTtl = ttl !== null && ttl !== void 0 ? ttl : this.defaultTtl;
|
|
88
|
+
this.cache.set(fullKey, value, { ttl: effectiveTtl });
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
throw new Error(`LRUCacheProvider: Failed to set key ${key}: ${error}`);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
delete(key) {
|
|
96
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
try {
|
|
98
|
+
if (Array.isArray(key)) {
|
|
99
|
+
key.forEach((k) => {
|
|
100
|
+
const fullKey = this.getFullKey(k);
|
|
101
|
+
this.cache.delete(fullKey);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
const fullKey = this.getFullKey(key);
|
|
106
|
+
this.cache.delete(fullKey);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
throw new Error(`LRUCacheProvider: Failed to delete keys: ${error}`);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
deletePattern(pattern) {
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
try {
|
|
117
|
+
const regex = this.patternToRegex(pattern);
|
|
118
|
+
const keys = Array.from(this.cache.keys());
|
|
119
|
+
let deleted = 0;
|
|
120
|
+
for (const key of keys) {
|
|
121
|
+
if (regex.test(String(key))) {
|
|
122
|
+
this.cache.delete(key);
|
|
123
|
+
deleted++;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return deleted;
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
throw new Error(`LRUCacheProvider: Failed to delete pattern ${pattern}: ${error}`);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
clear() {
|
|
134
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
135
|
+
try {
|
|
136
|
+
this.cache.clear();
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
throw new Error(`LRUCacheProvider: Failed to clear cache: ${error}`);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
has(key) {
|
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
+
try {
|
|
146
|
+
const fullKey = this.getFullKey(key);
|
|
147
|
+
return this.cache.has(fullKey);
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
mget(keys) {
|
|
155
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
156
|
+
try {
|
|
157
|
+
return keys.map((key) => {
|
|
158
|
+
const fullKey = this.getFullKey(key);
|
|
159
|
+
const value = this.cache.get(fullKey);
|
|
160
|
+
return value !== undefined ? value : null;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
console.warn(`LRUCacheProvider: Failed to mget:`, error);
|
|
165
|
+
return keys.map(() => null);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
mset(items, ttl) {
|
|
170
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
171
|
+
try {
|
|
172
|
+
const effectiveTtl = ttl !== null && ttl !== void 0 ? ttl : this.defaultTtl;
|
|
173
|
+
items.forEach((item) => {
|
|
174
|
+
const fullKey = this.getFullKey(item.key);
|
|
175
|
+
this.cache.set(fullKey, item.value, { ttl: effectiveTtl });
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
throw new Error(`LRUCacheProvider: Failed to mset: ${error}`);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get cache size
|
|
185
|
+
*/
|
|
186
|
+
getSize() {
|
|
187
|
+
return this.cache.size;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get cache statistics
|
|
191
|
+
*/
|
|
192
|
+
getStats() {
|
|
193
|
+
return {
|
|
194
|
+
provider: 'LRUMemory',
|
|
195
|
+
namespace: this.namespace,
|
|
196
|
+
size: this.cache.size,
|
|
197
|
+
maxSize: this.cache.max,
|
|
198
|
+
calculatedSize: this.cache.calculatedSize,
|
|
199
|
+
usagePercentage: this.cache.max
|
|
200
|
+
? (this.cache.size / this.cache.max) * 100
|
|
201
|
+
: 0,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Clean up expired items
|
|
206
|
+
*/
|
|
207
|
+
cleanup() {
|
|
208
|
+
const beforeSize = this.cache.size;
|
|
209
|
+
this.cache.purgeStale();
|
|
210
|
+
return beforeSize - this.cache.size;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Destroy the provider
|
|
214
|
+
*/
|
|
215
|
+
onModuleDestroy() {
|
|
216
|
+
this.cache.clear();
|
|
217
|
+
}
|
|
218
|
+
getFullKey(key) {
|
|
219
|
+
return `${this.namespace}:${key}`;
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
exports.LRUCacheProvider = LRUCacheProvider;
|
|
223
|
+
exports.LRUCacheProvider = LRUCacheProvider = __decorate([
|
|
224
|
+
(0, common_1.Injectable)(),
|
|
225
|
+
__metadata("design:paramtypes", [Object])
|
|
226
|
+
], LRUCacheProvider);
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import type Redis from 'ioredis';
|
|
2
2
|
import { BaseCacheProvider } from './base-cache.provider';
|
|
3
|
+
/**
|
|
4
|
+
* Token for injecting Redis client
|
|
5
|
+
*/
|
|
3
6
|
export declare const REDIS_CLIENT: unique symbol;
|
|
7
|
+
/**
|
|
8
|
+
* Redis cache provider using ioredis
|
|
9
|
+
*
|
|
10
|
+
* This is the L3 cache layer - distributed caching using Redis.
|
|
11
|
+
* Data is persisted in Redis and shared across all processes/servers.
|
|
12
|
+
*
|
|
13
|
+
* Slowest but most persistent and widely shared cache layer.
|
|
14
|
+
*/
|
|
4
15
|
export declare class RedisCacheProvider extends BaseCacheProvider {
|
|
5
16
|
private readonly redis?;
|
|
6
17
|
private readonly keyPrefix;
|
|
@@ -12,12 +23,27 @@ export declare class RedisCacheProvider extends BaseCacheProvider {
|
|
|
12
23
|
deletePattern(pattern: string): Promise<number>;
|
|
13
24
|
clear(): Promise<void>;
|
|
14
25
|
has(key: string): Promise<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Batch get using Redis MGET
|
|
28
|
+
*/
|
|
15
29
|
mget<T>(keys: string[]): Promise<(T | null)[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Batch set using Redis pipeline
|
|
32
|
+
*/
|
|
16
33
|
mset(items: Array<{
|
|
17
34
|
key: string;
|
|
18
35
|
value: any;
|
|
19
36
|
}>, ttl?: number): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Check if Redis client is available
|
|
39
|
+
*/
|
|
20
40
|
isAvailable(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Get Redis client (for advanced usage)
|
|
43
|
+
*/
|
|
21
44
|
getClient(): Redis | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Get full key with prefix
|
|
47
|
+
*/
|
|
22
48
|
private getFullKey;
|
|
23
49
|
}
|
|
@@ -24,7 +24,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
24
24
|
exports.RedisCacheProvider = exports.REDIS_CLIENT = void 0;
|
|
25
25
|
const common_1 = require("@nestjs/common");
|
|
26
26
|
const base_cache_provider_1 = require("./base-cache.provider");
|
|
27
|
+
/**
|
|
28
|
+
* Token for injecting Redis client
|
|
29
|
+
*/
|
|
27
30
|
exports.REDIS_CLIENT = Symbol('REDIS_CLIENT');
|
|
31
|
+
/**
|
|
32
|
+
* Redis cache provider using ioredis
|
|
33
|
+
*
|
|
34
|
+
* This is the L3 cache layer - distributed caching using Redis.
|
|
35
|
+
* Data is persisted in Redis and shared across all processes/servers.
|
|
36
|
+
*
|
|
37
|
+
* Slowest but most persistent and widely shared cache layer.
|
|
38
|
+
*/
|
|
28
39
|
let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.BaseCacheProvider {
|
|
29
40
|
constructor(redis) {
|
|
30
41
|
super();
|
|
@@ -65,6 +76,7 @@ let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.
|
|
|
65
76
|
const fullKey = this.getFullKey(key);
|
|
66
77
|
const serialized = JSON.stringify(value);
|
|
67
78
|
if (ttl && ttl > 0) {
|
|
79
|
+
// TTL in milliseconds, Redis expects seconds
|
|
68
80
|
yield this.redis.setex(fullKey, Math.ceil(ttl / 1000), serialized);
|
|
69
81
|
}
|
|
70
82
|
else {
|
|
@@ -102,6 +114,7 @@ let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.
|
|
|
102
114
|
const fullPattern = this.getFullKey(pattern);
|
|
103
115
|
let cursor = '0';
|
|
104
116
|
let deletedCount = 0;
|
|
117
|
+
// Use SCAN to find matching keys (more efficient than KEYS)
|
|
105
118
|
do {
|
|
106
119
|
const [nextCursor, keys] = yield this.redis.scan(cursor, 'MATCH', fullPattern, 'COUNT', 100);
|
|
107
120
|
cursor = nextCursor;
|
|
@@ -124,6 +137,7 @@ let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.
|
|
|
124
137
|
return;
|
|
125
138
|
}
|
|
126
139
|
try {
|
|
140
|
+
// Clear all keys with our prefix
|
|
127
141
|
yield this.deletePattern('*');
|
|
128
142
|
}
|
|
129
143
|
catch (error) {
|
|
@@ -146,6 +160,9 @@ let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.
|
|
|
146
160
|
}
|
|
147
161
|
});
|
|
148
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Batch get using Redis MGET
|
|
165
|
+
*/
|
|
149
166
|
mget(keys) {
|
|
150
167
|
return __awaiter(this, void 0, void 0, function* () {
|
|
151
168
|
if (!this.redis || keys.length === 0) {
|
|
@@ -172,6 +189,9 @@ let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.
|
|
|
172
189
|
}
|
|
173
190
|
});
|
|
174
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Batch set using Redis pipeline
|
|
194
|
+
*/
|
|
175
195
|
mset(items, ttl) {
|
|
176
196
|
return __awaiter(this, void 0, void 0, function* () {
|
|
177
197
|
if (!this.redis || items.length === 0) {
|
|
@@ -196,12 +216,21 @@ let RedisCacheProvider = class RedisCacheProvider extends base_cache_provider_1.
|
|
|
196
216
|
}
|
|
197
217
|
});
|
|
198
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Check if Redis client is available
|
|
221
|
+
*/
|
|
199
222
|
isAvailable() {
|
|
200
223
|
return !!this.redis && this.redis.status === 'ready';
|
|
201
224
|
}
|
|
225
|
+
/**
|
|
226
|
+
* Get Redis client (for advanced usage)
|
|
227
|
+
*/
|
|
202
228
|
getClient() {
|
|
203
229
|
return this.redis;
|
|
204
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Get full key with prefix
|
|
233
|
+
*/
|
|
205
234
|
getFullKey(key) {
|
|
206
235
|
return `${this.keyPrefix}${key}`;
|
|
207
236
|
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { DataSource } from 'typeorm';
|
|
2
|
+
import { BaseCacheProvider } from './base-cache.provider';
|
|
3
|
+
/**
|
|
4
|
+
* Options for TypeormCacheProvider
|
|
5
|
+
*/
|
|
6
|
+
export interface TypeormCacheProviderOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Default cache duration in milliseconds
|
|
9
|
+
* Default: 60000 (60 seconds)
|
|
10
|
+
*/
|
|
11
|
+
duration?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Enable or disable caching
|
|
14
|
+
* Default: true
|
|
15
|
+
*/
|
|
16
|
+
enabled?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Data source name to use for cache operations
|
|
19
|
+
* If not specified, uses the default data source
|
|
20
|
+
* Default: 'default'
|
|
21
|
+
*/
|
|
22
|
+
dataSourceName?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Namespace for cache isolation
|
|
25
|
+
* Default: 'cache'
|
|
26
|
+
*/
|
|
27
|
+
namespace?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Whether to automatically clean up expired entries
|
|
30
|
+
* Default: true
|
|
31
|
+
*/
|
|
32
|
+
autoCleanup?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Cleanup interval in milliseconds
|
|
35
|
+
* Default: 300000 (5 minutes)
|
|
36
|
+
*/
|
|
37
|
+
cleanupInterval?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* TypeORM Cache Provider
|
|
41
|
+
*
|
|
42
|
+
* Database-backed cache provider using TypeORM for persistent caching.
|
|
43
|
+
* This is an L3 cache layer that provides:
|
|
44
|
+
* - Persistent cache storage in database
|
|
45
|
+
* - Cross-instance cache sharing
|
|
46
|
+
* - Automatic expiration handling
|
|
47
|
+
* - Namespace isolation
|
|
48
|
+
*
|
|
49
|
+
* Unlike in-memory caches, this provider survives application restarts
|
|
50
|
+
* and can be shared across multiple application instances.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* // In your module:
|
|
55
|
+
* @Module({
|
|
56
|
+
* providers: [
|
|
57
|
+
* {
|
|
58
|
+
* provide: 'TYPEORM_CACHE',
|
|
59
|
+
* useFactory: (dataSource: DataSource) => {
|
|
60
|
+
* return new TypeormCacheProvider({
|
|
61
|
+
* duration: 60000,
|
|
62
|
+
* namespace: 'app:cache',
|
|
63
|
+
* dataSourceName: 'default',
|
|
64
|
+
* });
|
|
65
|
+
* },
|
|
66
|
+
* inject: [DataSource],
|
|
67
|
+
* },
|
|
68
|
+
* ],
|
|
69
|
+
* })
|
|
70
|
+
* export class AppModule {}
|
|
71
|
+
*
|
|
72
|
+
* // In your service:
|
|
73
|
+
* @Injectable()
|
|
74
|
+
* export class UserService {
|
|
75
|
+
* constructor(@Inject('TYPEORM_CACHE') private cache: TypeormCacheProvider) {}
|
|
76
|
+
*
|
|
77
|
+
* async getUser(id: string) {
|
|
78
|
+
* // Try cache first
|
|
79
|
+
* const cached = await this.cache.get(`user:${id}`);
|
|
80
|
+
* if (cached) return cached;
|
|
81
|
+
*
|
|
82
|
+
* // Cache miss - fetch from database
|
|
83
|
+
* const user = await this.userRepository.findOne(id);
|
|
84
|
+
*
|
|
85
|
+
* // Store in cache
|
|
86
|
+
* await this.cache.set(`user:${id}`, user, 60000);
|
|
87
|
+
*
|
|
88
|
+
* return user;
|
|
89
|
+
* }
|
|
90
|
+
* }
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @see https://typeorm.io/#caching
|
|
94
|
+
*/
|
|
95
|
+
export declare class TypeormCacheProvider extends BaseCacheProvider {
|
|
96
|
+
private readonly injectedDataSource?;
|
|
97
|
+
private defaultDuration;
|
|
98
|
+
private enabled;
|
|
99
|
+
private namespace;
|
|
100
|
+
private dataSourceName;
|
|
101
|
+
private autoCleanup;
|
|
102
|
+
private cleanupInterval;
|
|
103
|
+
private cleanupTimer?;
|
|
104
|
+
private dataSource?;
|
|
105
|
+
constructor(injectedDataSource?: DataSource, options?: TypeormCacheProviderOptions);
|
|
106
|
+
/**
|
|
107
|
+
* Get DataSource for cache operations
|
|
108
|
+
* Uses @nest-omni/transaction's getDataSource utility
|
|
109
|
+
*/
|
|
110
|
+
private getDataSource;
|
|
111
|
+
/**
|
|
112
|
+
* Get repository for cache operations
|
|
113
|
+
*/
|
|
114
|
+
private getRepository;
|
|
115
|
+
getName(): string;
|
|
116
|
+
/**
|
|
117
|
+
* Get cached value by key
|
|
118
|
+
*/
|
|
119
|
+
get<T>(key: string): Promise<T | null>;
|
|
120
|
+
/**
|
|
121
|
+
* Set cache value with optional TTL
|
|
122
|
+
*/
|
|
123
|
+
set<T>(key: string, value: T, ttl?: number): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Delete cache entry by key
|
|
126
|
+
*/
|
|
127
|
+
delete(key: string | string[]): Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* Delete cache entries matching a pattern
|
|
130
|
+
* Uses SQL LIKE for pattern matching
|
|
131
|
+
*/
|
|
132
|
+
deletePattern(pattern: string): Promise<number>;
|
|
133
|
+
/**
|
|
134
|
+
* Clear all cache entries in namespace
|
|
135
|
+
*/
|
|
136
|
+
clear(): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Check if key exists and is not expired
|
|
139
|
+
*/
|
|
140
|
+
has(key: string): Promise<boolean>;
|
|
141
|
+
/**
|
|
142
|
+
* Get multiple values by keys
|
|
143
|
+
*/
|
|
144
|
+
mget<T>(keys: string[]): Promise<(T | null)[]>;
|
|
145
|
+
/**
|
|
146
|
+
* Set multiple cache entries
|
|
147
|
+
*/
|
|
148
|
+
mset(items: Array<{
|
|
149
|
+
key: string;
|
|
150
|
+
value: any;
|
|
151
|
+
}>, ttl?: number): Promise<void>;
|
|
152
|
+
/**
|
|
153
|
+
* Get cache configuration
|
|
154
|
+
*/
|
|
155
|
+
getCacheConfig(): {
|
|
156
|
+
duration: number;
|
|
157
|
+
type: string;
|
|
158
|
+
enabled: boolean;
|
|
159
|
+
namespace: string;
|
|
160
|
+
dataSourceName: string;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Get statistics about cache entries
|
|
164
|
+
*/
|
|
165
|
+
getStats(): Promise<{
|
|
166
|
+
totalEntries: number;
|
|
167
|
+
expiredEntries: number;
|
|
168
|
+
validEntries: number;
|
|
169
|
+
enabled: boolean;
|
|
170
|
+
defaultDuration: number;
|
|
171
|
+
type: string;
|
|
172
|
+
namespace: string;
|
|
173
|
+
dataSourceName: string;
|
|
174
|
+
error?: undefined;
|
|
175
|
+
} | {
|
|
176
|
+
totalEntries: number;
|
|
177
|
+
expiredEntries: number;
|
|
178
|
+
validEntries: number;
|
|
179
|
+
enabled: boolean;
|
|
180
|
+
defaultDuration: number;
|
|
181
|
+
type: string;
|
|
182
|
+
namespace: string;
|
|
183
|
+
dataSourceName: string;
|
|
184
|
+
error: string;
|
|
185
|
+
}>;
|
|
186
|
+
/**
|
|
187
|
+
* Clean up expired entries
|
|
188
|
+
*/
|
|
189
|
+
cleanupExpired(): Promise<number>;
|
|
190
|
+
/**
|
|
191
|
+
* Enable or disable caching
|
|
192
|
+
*/
|
|
193
|
+
setEnabled(enabled: boolean): void;
|
|
194
|
+
/**
|
|
195
|
+
* Set namespace
|
|
196
|
+
*/
|
|
197
|
+
setNamespace(namespace: string): void;
|
|
198
|
+
/**
|
|
199
|
+
* Get full key with namespace
|
|
200
|
+
*/
|
|
201
|
+
private getFullKey;
|
|
202
|
+
/**
|
|
203
|
+
* Start automatic cleanup of expired entries
|
|
204
|
+
*/
|
|
205
|
+
private startAutoCleanup;
|
|
206
|
+
/**
|
|
207
|
+
* Stop automatic cleanup
|
|
208
|
+
*/
|
|
209
|
+
private stopAutoCleanup;
|
|
210
|
+
onModuleDestroy(): Promise<void>;
|
|
211
|
+
}
|