@nest-omni/core 4.1.3-12 → 4.1.3-13
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/LICENSE +17 -0
- package/README.md +444 -0
- package/build.sh +45 -0
- package/dist/cache/dependencies/db.dependency.d.ts +109 -0
- package/{cache → dist/cache}/dependencies/db.dependency.js +64 -13
- package/{common → dist/common}/boilerplate.polyfill.js +1 -1
- package/dist/file-upload/decorators/column.decorator.d.ts +151 -0
- package/dist/file-upload/decorators/column.decorator.js +273 -0
- package/dist/file-upload/decorators/csv-data.decorator.d.ts +30 -0
- package/dist/file-upload/decorators/csv-data.decorator.js +85 -0
- package/dist/file-upload/decorators/csv-import.decorator.d.ts +34 -0
- package/dist/file-upload/decorators/csv-import.decorator.js +24 -0
- package/dist/file-upload/decorators/examples/column-mapping.example.d.ts +76 -0
- package/dist/file-upload/decorators/examples/column-mapping.example.js +122 -0
- package/dist/file-upload/decorators/excel-data.decorator.d.ts +30 -0
- package/dist/file-upload/decorators/excel-data.decorator.js +85 -0
- package/dist/file-upload/decorators/index.d.ts +5 -0
- package/dist/file-upload/decorators/index.js +38 -0
- package/dist/file-upload/decorators/validate-data.decorator.d.ts +91 -0
- package/dist/file-upload/decorators/validate-data.decorator.js +39 -0
- package/{file-upload → dist/file-upload}/dto/update-file.dto.d.ts +0 -1
- package/{file-upload → dist/file-upload}/dto/update-file.dto.js +0 -4
- package/{file-upload → dist/file-upload}/entities/file-metadata.entity.d.ts +6 -3
- package/{file-upload → dist/file-upload}/entities/file-metadata.entity.js +2 -10
- package/{file-upload → dist/file-upload}/entities/file.entity.d.ts +3 -18
- package/{file-upload → dist/file-upload}/entities/file.entity.js +0 -34
- package/{file-upload → dist/file-upload}/file-upload.module.d.ts +1 -1
- package/{file-upload → dist/file-upload}/file-upload.module.js +44 -16
- package/{file-upload → dist/file-upload}/index.d.ts +13 -2
- package/{file-upload → dist/file-upload}/index.js +21 -3
- package/dist/file-upload/interceptors/file-upload.interceptor.d.ts +101 -0
- package/dist/file-upload/interceptors/file-upload.interceptor.js +594 -0
- package/dist/file-upload/interfaces/file-processor.interface.d.ts +93 -0
- package/{file-upload → dist/file-upload}/interfaces/file-upload-options.interface.d.ts +3 -46
- package/dist/file-upload/interfaces/file-upload-options.interface.js +5 -0
- package/dist/file-upload/interfaces/processor-options.interface.d.ts +102 -0
- package/dist/file-upload/processors/csv.processor.d.ts +98 -0
- package/dist/file-upload/processors/csv.processor.js +391 -0
- package/dist/file-upload/processors/excel.processor.d.ts +130 -0
- package/dist/file-upload/processors/excel.processor.js +547 -0
- package/dist/file-upload/processors/image.processor.d.ts +199 -0
- package/dist/file-upload/processors/image.processor.js +377 -0
- package/{file-upload → dist/file-upload}/services/file.service.d.ts +3 -0
- package/{file-upload → dist/file-upload}/services/file.service.js +39 -10
- package/{file-upload → dist/file-upload}/services/malicious-file-detector.service.d.ts +29 -3
- package/{file-upload → dist/file-upload}/services/malicious-file-detector.service.js +256 -57
- package/{file-upload → dist/file-upload}/utils/dynamic-import.util.d.ts +6 -2
- package/{file-upload → dist/file-upload}/utils/dynamic-import.util.js +17 -5
- package/{http-client → dist/http-client}/decorators/http-client.decorators.d.ts +4 -2
- package/{http-client → dist/http-client}/decorators/http-client.decorators.js +2 -1
- package/{http-client → dist/http-client}/entities/http-log.entity.js +1 -9
- package/dist/http-client/examples/proxy-from-environment.example.d.ts +133 -0
- package/dist/http-client/examples/proxy-from-environment.example.js +410 -0
- package/{http-client → dist/http-client}/http-client.module.js +65 -6
- package/{http-client → dist/http-client}/interfaces/http-client-config.interface.d.ts +6 -0
- package/{http-client → dist/http-client}/services/http-client.service.d.ts +8 -0
- package/{http-client → dist/http-client}/services/http-client.service.js +61 -17
- package/{http-client → dist/http-client}/services/logging.service.d.ts +1 -1
- package/{http-client → dist/http-client}/services/logging.service.js +74 -58
- package/{http-client → dist/http-client}/utils/index.d.ts +1 -0
- package/{http-client → dist/http-client}/utils/index.js +1 -0
- package/dist/http-client/utils/proxy-environment.util.d.ts +42 -0
- package/dist/http-client/utils/proxy-environment.util.js +148 -0
- package/dist/package.json +105 -0
- package/{shared → dist/shared}/service-registry.module.js +18 -0
- package/dist/transaction/data-source.util.d.ts +142 -0
- package/dist/transaction/data-source.util.js +330 -0
- package/{transaction → dist/transaction}/index.d.ts +1 -0
- package/{transaction → dist/transaction}/index.js +12 -1
- package/{validators → dist/validators}/is-exists.validator.d.ts +19 -2
- package/{validators → dist/validators}/is-exists.validator.js +27 -2
- package/{validators → dist/validators}/is-unique.validator.d.ts +12 -1
- package/{validators → dist/validators}/is-unique.validator.js +26 -1
- package/dist/vault/interfaces/vault-options.interface.js +2 -0
- package/package.json +9 -5
- package/tsconfig.build.json +16 -0
- package/cache/dependencies/db.dependency.d.ts +0 -60
- package/file-upload/decorators/csv-data.decorator.d.ts +0 -44
- package/file-upload/decorators/csv-data.decorator.js +0 -131
- package/file-upload/decorators/excel-data.decorator.d.ts +0 -44
- package/file-upload/decorators/excel-data.decorator.js +0 -125
- package/file-upload/decorators/index.d.ts +0 -4
- package/file-upload/decorators/index.js +0 -20
- package/file-upload/interceptors/file-upload.interceptor.d.ts +0 -48
- package/file-upload/interceptors/file-upload.interceptor.js +0 -434
- /package/{.hygen → dist/.hygen}/new/crud/controller.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/crud/create.dto.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/crud/entity.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/crud/get.dto.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/crud/index-dto.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/crud/index-response.dto.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/crud/module.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/crud/prompt.js +0 -0
- /package/{.hygen → dist/.hygen}/new/crud/service.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/crud/update.dto.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/controller.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/create-command.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/create.dto.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/dto.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/entity.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/get-query.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/module.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/not-found.exception.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/page-options.dto.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/prompt.js +0 -0
- /package/{.hygen → dist/.hygen}/new/module/repository.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/service.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/translation-dto.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/translation-entity.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/translation-repository.ejs.t +0 -0
- /package/{.hygen → dist/.hygen}/new/module/update.dto.ejs.t +0 -0
- /package/{.hygen.js → dist/.hygen.js} +0 -0
- /package/{audit → dist/audit}/audit.module.d.ts +0 -0
- /package/{audit → dist/audit}/audit.module.js +0 -0
- /package/{audit → dist/audit}/controllers/audit.controller.d.ts +0 -0
- /package/{audit → dist/audit}/controllers/audit.controller.js +0 -0
- /package/{audit → dist/audit}/controllers/index.d.ts +0 -0
- /package/{audit → dist/audit}/controllers/index.js +0 -0
- /package/{audit → dist/audit}/decorators/audit-action.decorator.d.ts +0 -0
- /package/{audit → dist/audit}/decorators/audit-action.decorator.js +0 -0
- /package/{audit → dist/audit}/decorators/audit-controller.decorator.d.ts +0 -0
- /package/{audit → dist/audit}/decorators/audit-controller.decorator.js +0 -0
- /package/{audit → dist/audit}/decorators/audit-operation.decorator.d.ts +0 -0
- /package/{audit → dist/audit}/decorators/audit-operation.decorator.js +0 -0
- /package/{audit → dist/audit}/decorators/entity-audit.decorator.d.ts +0 -0
- /package/{audit → dist/audit}/decorators/entity-audit.decorator.js +0 -0
- /package/{audit → dist/audit}/decorators/index.d.ts +0 -0
- /package/{audit → dist/audit}/decorators/index.js +0 -0
- /package/{audit → dist/audit}/dto/audit-log-query.dto.d.ts +0 -0
- /package/{audit → dist/audit}/dto/audit-log-query.dto.js +0 -0
- /package/{audit → dist/audit}/dto/begin-transaction.dto.d.ts +0 -0
- /package/{audit → dist/audit}/dto/begin-transaction.dto.js +0 -0
- /package/{audit → dist/audit}/dto/compare-entities.dto.d.ts +0 -0
- /package/{audit → dist/audit}/dto/compare-entities.dto.js +0 -0
- /package/{audit → dist/audit}/dto/index.d.ts +0 -0
- /package/{audit → dist/audit}/dto/index.js +0 -0
- /package/{audit → dist/audit}/dto/pre-check-restore.dto.d.ts +0 -0
- /package/{audit → dist/audit}/dto/pre-check-restore.dto.js +0 -0
- /package/{audit → dist/audit}/dto/restore-entity.dto.d.ts +0 -0
- /package/{audit → dist/audit}/dto/restore-entity.dto.js +0 -0
- /package/{audit → dist/audit}/entities/audit-action-summary.entity.d.ts +0 -0
- /package/{audit → dist/audit}/entities/audit-action-summary.entity.js +0 -0
- /package/{audit → dist/audit}/entities/entity-audit-log.entity.d.ts +0 -0
- /package/{audit → dist/audit}/entities/entity-audit-log.entity.js +0 -0
- /package/{audit → dist/audit}/entities/entity-transaction.entity.d.ts +0 -0
- /package/{audit → dist/audit}/entities/entity-transaction.entity.js +0 -0
- /package/{audit → dist/audit}/entities/index.d.ts +0 -0
- /package/{audit → dist/audit}/entities/index.js +0 -0
- /package/{audit → dist/audit}/entities/manual-operation-log.entity.d.ts +0 -0
- /package/{audit → dist/audit}/entities/manual-operation-log.entity.js +0 -0
- /package/{audit → dist/audit}/entities/operation-template.entity.d.ts +0 -0
- /package/{audit → dist/audit}/entities/operation-template.entity.js +0 -0
- /package/{audit → dist/audit}/enums/audit.enums.d.ts +0 -0
- /package/{audit → dist/audit}/enums/audit.enums.js +0 -0
- /package/{audit → dist/audit}/enums/index.d.ts +0 -0
- /package/{audit → dist/audit}/enums/index.js +0 -0
- /package/{audit → dist/audit}/index.d.ts +0 -0
- /package/{audit → dist/audit}/index.js +0 -0
- /package/{audit → dist/audit}/interceptors/audit-action.interceptor.d.ts +0 -0
- /package/{audit → dist/audit}/interceptors/audit-action.interceptor.js +0 -0
- /package/{audit → dist/audit}/interceptors/audit.interceptor.d.ts +0 -0
- /package/{audit → dist/audit}/interceptors/audit.interceptor.js +0 -0
- /package/{audit → dist/audit}/interceptors/index.d.ts +0 -0
- /package/{audit → dist/audit}/interceptors/index.js +0 -0
- /package/{audit → dist/audit}/interfaces/audit.interfaces.d.ts +0 -0
- /package/{audit → dist/audit}/interfaces/audit.interfaces.js +0 -0
- /package/{audit → dist/audit}/interfaces/index.d.ts +0 -0
- /package/{audit → dist/audit}/interfaces/index.js +0 -0
- /package/{audit → dist/audit}/services/audit-action.service.d.ts +0 -0
- /package/{audit → dist/audit}/services/audit-action.service.js +0 -0
- /package/{audit → dist/audit}/services/audit-context.service.d.ts +0 -0
- /package/{audit → dist/audit}/services/audit-context.service.js +0 -0
- /package/{audit → dist/audit}/services/audit-strategy.service.d.ts +0 -0
- /package/{audit → dist/audit}/services/audit-strategy.service.js +0 -0
- /package/{audit → dist/audit}/services/entity-audit.service.d.ts +0 -0
- /package/{audit → dist/audit}/services/entity-audit.service.js +0 -0
- /package/{audit → dist/audit}/services/index.d.ts +0 -0
- /package/{audit → dist/audit}/services/index.js +0 -0
- /package/{audit → dist/audit}/services/manual-audit-log.service.d.ts +0 -0
- /package/{audit → dist/audit}/services/manual-audit-log.service.js +0 -0
- /package/{audit → dist/audit}/services/multi-database.service.d.ts +0 -0
- /package/{audit → dist/audit}/services/multi-database.service.js +0 -0
- /package/{audit → dist/audit}/services/operation-description.service.d.ts +0 -0
- /package/{audit → dist/audit}/services/operation-description.service.js +0 -0
- /package/{audit → dist/audit}/services/transaction-audit.service.d.ts +0 -0
- /package/{audit → dist/audit}/services/transaction-audit.service.js +0 -0
- /package/{audit → dist/audit}/subscribers/entity-audit.subscriber.d.ts +0 -0
- /package/{audit → dist/audit}/subscribers/entity-audit.subscriber.js +0 -0
- /package/{audit → dist/audit}/subscribers/index.d.ts +0 -0
- /package/{audit → dist/audit}/subscribers/index.js +0 -0
- /package/{cache → dist/cache}/cache-metrics.service.d.ts +0 -0
- /package/{cache → dist/cache}/cache-metrics.service.js +0 -0
- /package/{cache → dist/cache}/cache-serialization.service.d.ts +0 -0
- /package/{cache → dist/cache}/cache-serialization.service.js +0 -0
- /package/{cache → dist/cache}/cache.constants.d.ts +0 -0
- /package/{cache → dist/cache}/cache.constants.js +0 -0
- /package/{cache → dist/cache}/cache.health.d.ts +0 -0
- /package/{cache → dist/cache}/cache.health.js +0 -0
- /package/{cache → dist/cache}/cache.module.d.ts +0 -0
- /package/{cache → dist/cache}/cache.module.js +0 -0
- /package/{cache → dist/cache}/cache.service.d.ts +0 -0
- /package/{cache → dist/cache}/cache.service.js +0 -0
- /package/{cache → dist/cache}/cache.warmup.service.d.ts +0 -0
- /package/{cache → dist/cache}/cache.warmup.service.js +0 -0
- /package/{cache → dist/cache}/decorators/cache-evict.decorator.d.ts +0 -0
- /package/{cache → dist/cache}/decorators/cache-evict.decorator.js +0 -0
- /package/{cache → dist/cache}/decorators/cache-put.decorator.d.ts +0 -0
- /package/{cache → dist/cache}/decorators/cache-put.decorator.js +0 -0
- /package/{cache → dist/cache}/decorators/cacheable.decorator.d.ts +0 -0
- /package/{cache → dist/cache}/decorators/cacheable.decorator.js +0 -0
- /package/{cache → dist/cache}/decorators/index.d.ts +0 -0
- /package/{cache → dist/cache}/decorators/index.js +0 -0
- /package/{cache → dist/cache}/dependencies/callback.dependency.d.ts +0 -0
- /package/{cache → dist/cache}/dependencies/callback.dependency.js +0 -0
- /package/{cache → dist/cache}/dependencies/chain.dependency.d.ts +0 -0
- /package/{cache → dist/cache}/dependencies/chain.dependency.js +0 -0
- /package/{cache → dist/cache}/dependencies/file.dependency.d.ts +0 -0
- /package/{cache → dist/cache}/dependencies/file.dependency.js +0 -0
- /package/{cache → dist/cache}/dependencies/index.d.ts +0 -0
- /package/{cache → dist/cache}/dependencies/index.js +0 -0
- /package/{cache → dist/cache}/dependencies/tag.dependency.d.ts +0 -0
- /package/{cache → dist/cache}/dependencies/tag.dependency.js +0 -0
- /package/{cache → dist/cache}/dependencies/time.dependency.d.ts +0 -0
- /package/{cache → dist/cache}/dependencies/time.dependency.js +0 -0
- /package/{cache → dist/cache}/examples/basic-usage.d.ts +0 -0
- /package/{cache → dist/cache}/examples/basic-usage.js +0 -0
- /package/{cache → dist/cache}/index.d.ts +0 -0
- /package/{cache → dist/cache}/index.js +0 -0
- /package/{cache → dist/cache}/interfaces/cache-dependency.interface.d.ts +0 -0
- /package/{cache → dist/cache}/interfaces/cache-dependency.interface.js +0 -0
- /package/{cache → dist/cache}/interfaces/cache-options.interface.d.ts +0 -0
- /package/{cache → dist/cache}/interfaces/cache-options.interface.js +0 -0
- /package/{cache → dist/cache}/interfaces/cache-provider.interface.d.ts +0 -0
- /package/{cache → dist/cache}/interfaces/cache-provider.interface.js +0 -0
- /package/{cache → dist/cache}/interfaces/index.d.ts +0 -0
- /package/{cache → dist/cache}/interfaces/index.js +0 -0
- /package/{cache → dist/cache}/providers/base-cache.provider.d.ts +0 -0
- /package/{cache → dist/cache}/providers/base-cache.provider.js +0 -0
- /package/{cache → dist/cache}/providers/cls-cache.provider.d.ts +0 -0
- /package/{cache → dist/cache}/providers/cls-cache.provider.js +0 -0
- /package/{cache → dist/cache}/providers/index.d.ts +0 -0
- /package/{cache → dist/cache}/providers/index.js +0 -0
- /package/{cache → dist/cache}/providers/memory-cache.provider.d.ts +0 -0
- /package/{cache → dist/cache}/providers/memory-cache.provider.js +0 -0
- /package/{cache → dist/cache}/providers/redis-cache.provider.d.ts +0 -0
- /package/{cache → dist/cache}/providers/redis-cache.provider.js +0 -0
- /package/{cache → dist/cache}/utils/dependency-manager.util.d.ts +0 -0
- /package/{cache → dist/cache}/utils/dependency-manager.util.js +0 -0
- /package/{cache → dist/cache}/utils/index.d.ts +0 -0
- /package/{cache → dist/cache}/utils/index.js +0 -0
- /package/{cache → dist/cache}/utils/key-generator.util.d.ts +0 -0
- /package/{cache → dist/cache}/utils/key-generator.util.js +0 -0
- /package/{common → dist/common}/abstract.entity.d.ts +0 -0
- /package/{common → dist/common}/abstract.entity.js +0 -0
- /package/{common → dist/common}/boilerplate.polyfill.d.ts +0 -0
- /package/{common → dist/common}/dto/abstract.dto.d.ts +0 -0
- /package/{common → dist/common}/dto/abstract.dto.js +0 -0
- /package/{common → dist/common}/dto/bulk-id.dto.d.ts +0 -0
- /package/{common → dist/common}/dto/bulk-id.dto.js +0 -0
- /package/{common → dist/common}/dto/create-translation.dto.d.ts +0 -0
- /package/{common → dist/common}/dto/create-translation.dto.js +0 -0
- /package/{common → dist/common}/dto/dto-container.d.ts +0 -0
- /package/{common → dist/common}/dto/dto-container.js +0 -0
- /package/{common → dist/common}/dto/dto-decorators.d.ts +0 -0
- /package/{common → dist/common}/dto/dto-decorators.js +0 -0
- /package/{common → dist/common}/dto/dto-extensions.d.ts +0 -0
- /package/{common → dist/common}/dto/dto-extensions.js +0 -0
- /package/{common → dist/common}/dto/dto-service-accessor.d.ts +0 -0
- /package/{common → dist/common}/dto/dto-service-accessor.js +0 -0
- /package/{common → dist/common}/dto/dto-transformer.d.ts +0 -0
- /package/{common → dist/common}/dto/dto-transformer.js +0 -0
- /package/{common → dist/common}/dto/index.d.ts +0 -0
- /package/{common → dist/common}/dto/index.js +0 -0
- /package/{common → dist/common}/dto/page-meta.dto.d.ts +0 -0
- /package/{common → dist/common}/dto/page-meta.dto.js +0 -0
- /package/{common → dist/common}/dto/page-options.dto.d.ts +0 -0
- /package/{common → dist/common}/dto/page-options.dto.js +0 -0
- /package/{common → dist/common}/dto/page.dto.d.ts +0 -0
- /package/{common → dist/common}/dto/page.dto.js +0 -0
- /package/{common → dist/common}/examples/paginate-and-map.example.d.ts +0 -0
- /package/{common → dist/common}/examples/paginate-and-map.example.js +0 -0
- /package/{common → dist/common}/index.d.ts +0 -0
- /package/{common → dist/common}/index.js +0 -0
- /package/{common → dist/common}/snake-naming.strategy.d.ts +0 -0
- /package/{common → dist/common}/snake-naming.strategy.js +0 -0
- /package/{common → dist/common}/types.d.ts +0 -0
- /package/{common → dist/common}/types.js +0 -0
- /package/{common → dist/common}/utils.d.ts +0 -0
- /package/{common → dist/common}/utils.js +0 -0
- /package/{constants → dist/constants}/index.d.ts +0 -0
- /package/{constants → dist/constants}/index.js +0 -0
- /package/{constants → dist/constants}/language-code.d.ts +0 -0
- /package/{constants → dist/constants}/language-code.js +0 -0
- /package/{constants → dist/constants}/order.d.ts +0 -0
- /package/{constants → dist/constants}/order.js +0 -0
- /package/{decorators → dist/decorators}/api-page-ok-response.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/api-page-ok-response.decorator.js +0 -0
- /package/{decorators → dist/decorators}/api-paginated-response.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/api-paginated-response.decorator.js +0 -0
- /package/{decorators → dist/decorators}/auth-user.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/auth-user.decorator.js +0 -0
- /package/{decorators → dist/decorators}/controller.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/controller.decorator.js +0 -0
- /package/{decorators → dist/decorators}/field.decorators.d.ts +0 -0
- /package/{decorators → dist/decorators}/field.decorators.js +0 -0
- /package/{decorators → dist/decorators}/http.decorators.d.ts +0 -0
- /package/{decorators → dist/decorators}/http.decorators.js +0 -0
- /package/{decorators → dist/decorators}/index.d.ts +0 -0
- /package/{decorators → dist/decorators}/index.js +0 -0
- /package/{decorators → dist/decorators}/operation.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/operation.decorator.js +0 -0
- /package/{decorators → dist/decorators}/paginated-response.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/paginated-response.decorator.js +0 -0
- /package/{decorators → dist/decorators}/property.decorators.d.ts +0 -0
- /package/{decorators → dist/decorators}/property.decorators.js +0 -0
- /package/{decorators → dist/decorators}/public-route.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/public-route.decorator.js +0 -0
- /package/{decorators → dist/decorators}/swagger.schema.d.ts +0 -0
- /package/{decorators → dist/decorators}/swagger.schema.js +0 -0
- /package/{decorators → dist/decorators}/timestamp-column.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/timestamp-column.decorator.js +0 -0
- /package/{decorators → dist/decorators}/transform.decorators.d.ts +0 -0
- /package/{decorators → dist/decorators}/transform.decorators.js +0 -0
- /package/{decorators → dist/decorators}/translate.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/translate.decorator.js +0 -0
- /package/{decorators → dist/decorators}/use-dto.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/use-dto.decorator.js +0 -0
- /package/{decorators → dist/decorators}/user-check.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/user-check.decorator.js +0 -0
- /package/{decorators → dist/decorators}/user.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/user.decorator.js +0 -0
- /package/{decorators → dist/decorators}/user_auth.decorator.d.ts +0 -0
- /package/{decorators → dist/decorators}/user_auth.decorator.js +0 -0
- /package/{decorators → dist/decorators}/validator.decorators.d.ts +0 -0
- /package/{decorators → dist/decorators}/validator.decorators.js +0 -0
- /package/{exceptions → dist/exceptions}/file-not-image.exception.d.ts +0 -0
- /package/{exceptions → dist/exceptions}/file-not-image.exception.js +0 -0
- /package/{exceptions → dist/exceptions}/index.d.ts +0 -0
- /package/{exceptions → dist/exceptions}/index.js +0 -0
- /package/{exceptions → dist/exceptions}/page-type.exception.d.ts +0 -0
- /package/{exceptions → dist/exceptions}/page-type.exception.js +0 -0
- /package/{exceptions → dist/exceptions}/user-not-found.exception.d.ts +0 -0
- /package/{exceptions → dist/exceptions}/user-not-found.exception.js +0 -0
- /package/{file-upload → dist/file-upload}/controllers/file-access.controller.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/controllers/file-access.controller.js +0 -0
- /package/{file-upload → dist/file-upload}/decorators/file-upload.decorator.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/decorators/file-upload.decorator.js +0 -0
- /package/{file-upload → dist/file-upload}/decorators/process.decorator.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/decorators/process.decorator.js +0 -0
- /package/{file-upload → dist/file-upload}/dto/create-file.dto.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/dto/create-file.dto.js +0 -0
- /package/{file-upload → dist/file-upload}/dto/find-files.dto.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/dto/find-files.dto.js +0 -0
- /package/{file-upload → dist/file-upload}/dto/index.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/dto/index.js +0 -0
- /package/{file-upload → dist/file-upload}/dto/pagination.dto.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/dto/pagination.dto.js +0 -0
- /package/{file-upload → dist/file-upload}/entities/index.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/entities/index.js +0 -0
- /package/{file-upload → dist/file-upload}/enums/file-type.enum.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/enums/file-type.enum.js +0 -0
- /package/{file-upload → dist/file-upload}/exceptions/file-upload.exception.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/exceptions/file-upload.exception.js +0 -0
- /package/{file-upload → dist/file-upload}/exceptions/index.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/exceptions/index.js +0 -0
- /package/{file-upload → dist/file-upload}/interceptors/index.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/interceptors/index.js +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/custom-file-type.interface.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/custom-file-type.interface.js +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/file-buffer.interface.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/file-buffer.interface.js +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/file-entity.interface.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/file-entity.interface.js +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/file-metadata.interface.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/file-metadata.interface.js +0 -0
- /package/{file-upload/interfaces/file-upload-options.interface.js → dist/file-upload/interfaces/file-processor.interface.js} +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/index.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/index.js +0 -0
- /package/{file-upload/interfaces/storage-provider.interface.js → dist/file-upload/interfaces/processor-options.interface.js} +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/storage-provider.interface.d.ts +0 -0
- /package/{file-upload/interfaces/upload-options.interface.js → dist/file-upload/interfaces/storage-provider.interface.js} +0 -0
- /package/{file-upload → dist/file-upload}/interfaces/upload-options.interface.d.ts +0 -0
- /package/{http-client/interfaces/http-client-config.interface.js → dist/file-upload/interfaces/upload-options.interface.js} +0 -0
- /package/{file-upload → dist/file-upload}/providers/index.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/providers/index.js +0 -0
- /package/{file-upload → dist/file-upload}/providers/local-storage.provider.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/providers/local-storage.provider.js +0 -0
- /package/{file-upload → dist/file-upload}/providers/s3-storage.provider.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/providers/s3-storage.provider.js +0 -0
- /package/{file-upload → dist/file-upload}/services/file-signature-validator.service.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/services/file-signature-validator.service.js +0 -0
- /package/{file-upload → dist/file-upload}/services/index.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/services/index.js +0 -0
- /package/{file-upload → dist/file-upload}/services/mime-registry.service.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/services/mime-registry.service.js +0 -0
- /package/{file-upload → dist/file-upload}/utils/checksum.util.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/utils/checksum.util.js +0 -0
- /package/{file-upload → dist/file-upload}/utils/filename.util.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/utils/filename.util.js +0 -0
- /package/{file-upload → dist/file-upload}/utils/filepath.util.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/utils/filepath.util.js +0 -0
- /package/{file-upload → dist/file-upload}/utils/index.d.ts +0 -0
- /package/{file-upload → dist/file-upload}/utils/index.js +0 -0
- /package/{filters → dist/filters}/bad-request.filter.d.ts +0 -0
- /package/{filters → dist/filters}/bad-request.filter.js +0 -0
- /package/{filters → dist/filters}/constraint-errors.d.ts +0 -0
- /package/{filters → dist/filters}/constraint-errors.js +0 -0
- /package/{filters → dist/filters}/index.d.ts +0 -0
- /package/{filters → dist/filters}/index.js +0 -0
- /package/{filters → dist/filters}/query-failed.filter.d.ts +0 -0
- /package/{filters → dist/filters}/query-failed.filter.js +0 -0
- /package/{health-checker → dist/health-checker}/health-checker.controller.d.ts +0 -0
- /package/{health-checker → dist/health-checker}/health-checker.controller.js +0 -0
- /package/{health-checker → dist/health-checker}/health-checker.module.d.ts +0 -0
- /package/{health-checker → dist/health-checker}/health-checker.module.js +0 -0
- /package/{health-checker → dist/health-checker}/index.d.ts +0 -0
- /package/{health-checker → dist/health-checker}/index.js +0 -0
- /package/{helpers → dist/helpers}/common.helper.d.ts +0 -0
- /package/{helpers → dist/helpers}/common.helper.js +0 -0
- /package/{helpers → dist/helpers}/date.helper.d.ts +0 -0
- /package/{helpers → dist/helpers}/date.helper.js +0 -0
- /package/{helpers → dist/helpers}/index.d.ts +0 -0
- /package/{helpers → dist/helpers}/index.js +0 -0
- /package/{http-client → dist/http-client}/config/http-client.config.d.ts +0 -0
- /package/{http-client → dist/http-client}/config/http-client.config.js +0 -0
- /package/{http-client → dist/http-client}/config/index.d.ts +0 -0
- /package/{http-client → dist/http-client}/config/index.js +0 -0
- /package/{http-client → dist/http-client}/decorators/index.d.ts +0 -0
- /package/{http-client → dist/http-client}/decorators/index.js +0 -0
- /package/{http-client → dist/http-client}/entities/http-log.entity.d.ts +0 -0
- /package/{http-client → dist/http-client}/entities/index.d.ts +0 -0
- /package/{http-client → dist/http-client}/entities/index.js +0 -0
- /package/{http-client → dist/http-client}/errors/http-client.errors.d.ts +0 -0
- /package/{http-client → dist/http-client}/errors/http-client.errors.js +0 -0
- /package/{http-client → dist/http-client}/errors/index.d.ts +0 -0
- /package/{http-client → dist/http-client}/errors/index.js +0 -0
- /package/{http-client → dist/http-client}/examples/advanced-usage.example.d.ts +0 -0
- /package/{http-client → dist/http-client}/examples/advanced-usage.example.js +0 -0
- /package/{http-client → dist/http-client}/examples/auth-with-waiting-lock.example.d.ts +0 -0
- /package/{http-client → dist/http-client}/examples/auth-with-waiting-lock.example.js +0 -0
- /package/{http-client → dist/http-client}/examples/basic-usage.example.d.ts +0 -0
- /package/{http-client → dist/http-client}/examples/basic-usage.example.js +0 -0
- /package/{http-client → dist/http-client}/examples/index.d.ts +0 -0
- /package/{http-client → dist/http-client}/examples/index.js +0 -0
- /package/{http-client → dist/http-client}/examples/multi-api-configuration.example.d.ts +0 -0
- /package/{http-client → dist/http-client}/examples/multi-api-configuration.example.js +0 -0
- /package/{http-client → dist/http-client}/http-client.module.d.ts +0 -0
- /package/{http-client → dist/http-client}/index.d.ts +0 -0
- /package/{http-client → dist/http-client}/index.js +0 -0
- /package/{http-client → dist/http-client}/interfaces/api-client-config.interface.d.ts +0 -0
- /package/{http-client → dist/http-client}/interfaces/api-client-config.interface.js +0 -0
- /package/{interfaces/IApiFile.js → dist/http-client/interfaces/http-client-config.interface.js} +0 -0
- /package/{http-client → dist/http-client}/services/api-client-registry.service.d.ts +0 -0
- /package/{http-client → dist/http-client}/services/api-client-registry.service.js +0 -0
- /package/{http-client → dist/http-client}/services/cache.service.d.ts +0 -0
- /package/{http-client → dist/http-client}/services/cache.service.js +0 -0
- /package/{http-client → dist/http-client}/services/circuit-breaker.service.d.ts +0 -0
- /package/{http-client → dist/http-client}/services/circuit-breaker.service.js +0 -0
- /package/{http-client → dist/http-client}/services/http-log-query.service.d.ts +0 -0
- /package/{http-client → dist/http-client}/services/http-log-query.service.js +0 -0
- /package/{http-client → dist/http-client}/services/http-replay.service.d.ts +0 -0
- /package/{http-client → dist/http-client}/services/http-replay.service.js +0 -0
- /package/{http-client → dist/http-client}/services/index.d.ts +0 -0
- /package/{http-client → dist/http-client}/services/index.js +0 -0
- /package/{http-client → dist/http-client}/services/log-cleanup.service.d.ts +0 -0
- /package/{http-client → dist/http-client}/services/log-cleanup.service.js +0 -0
- /package/{http-client → dist/http-client}/utils/call-stack-extractor.util.d.ts +0 -0
- /package/{http-client → dist/http-client}/utils/call-stack-extractor.util.js +0 -0
- /package/{http-client → dist/http-client}/utils/context-extractor.util.d.ts +0 -0
- /package/{http-client → dist/http-client}/utils/context-extractor.util.js +0 -0
- /package/{http-client → dist/http-client}/utils/curl-generator.util.d.ts +0 -0
- /package/{http-client → dist/http-client}/utils/curl-generator.util.js +0 -0
- /package/{http-client → dist/http-client}/utils/request-id.util.d.ts +0 -0
- /package/{http-client → dist/http-client}/utils/request-id.util.js +0 -0
- /package/{http-client → dist/http-client}/utils/retry-recorder.util.d.ts +0 -0
- /package/{http-client → dist/http-client}/utils/retry-recorder.util.js +0 -0
- /package/{i18n → dist/i18n}/en_US/validation.json +0 -0
- /package/{i18n → dist/i18n}/zh_CN/validation.json +0 -0
- /package/{index.d.ts → dist/index.d.ts} +0 -0
- /package/{index.js → dist/index.js} +0 -0
- /package/{interceptors → dist/interceptors}/index.d.ts +0 -0
- /package/{interceptors → dist/interceptors}/index.js +0 -0
- /package/{interceptors → dist/interceptors}/language-interceptor.service.d.ts +0 -0
- /package/{interceptors → dist/interceptors}/language-interceptor.service.js +0 -0
- /package/{interceptors → dist/interceptors}/translation-interceptor.service.d.ts +0 -0
- /package/{interceptors → dist/interceptors}/translation-interceptor.service.js +0 -0
- /package/{interfaces → dist/interfaces}/IApiFile.d.ts +0 -0
- /package/{interfaces/IFile.js → dist/interfaces/IApiFile.js} +0 -0
- /package/{interfaces → dist/interfaces}/IFile.d.ts +0 -0
- /package/{interfaces/ITranslationDecoratorInterface.js → dist/interfaces/IFile.js} +0 -0
- /package/{interfaces → dist/interfaces}/ITranslationDecoratorInterface.d.ts +0 -0
- /package/{interfaces/response.js → dist/interfaces/ITranslationDecoratorInterface.js} +0 -0
- /package/{interfaces → dist/interfaces}/index.d.ts +0 -0
- /package/{interfaces → dist/interfaces}/index.js +0 -0
- /package/{interfaces → dist/interfaces}/response.d.ts +0 -0
- /package/{vault/interfaces/vault-options.interface.js → dist/interfaces/response.js} +0 -0
- /package/{middlewares → dist/middlewares}/index.d.ts +0 -0
- /package/{middlewares → dist/middlewares}/index.js +0 -0
- /package/{middlewares → dist/middlewares}/omni-auth.middleware.d.ts +0 -0
- /package/{middlewares → dist/middlewares}/omni-auth.middleware.js +0 -0
- /package/{middlewares → dist/middlewares}/powerby.middleware.d.ts +0 -0
- /package/{middlewares → dist/middlewares}/powerby.middleware.js +0 -0
- /package/{middlewares → dist/middlewares}/request-id.middleware.d.ts +0 -0
- /package/{middlewares → dist/middlewares}/request-id.middleware.js +0 -0
- /package/{middlewares → dist/middlewares}/xml.middleware.d.ts +0 -0
- /package/{middlewares → dist/middlewares}/xml.middleware.js +0 -0
- /package/{providers → dist/providers}/context.provider.d.ts +0 -0
- /package/{providers → dist/providers}/context.provider.js +0 -0
- /package/{providers → dist/providers}/generator.provider.d.ts +0 -0
- /package/{providers → dist/providers}/generator.provider.js +0 -0
- /package/{providers → dist/providers}/index.d.ts +0 -0
- /package/{providers → dist/providers}/index.js +0 -0
- /package/{redis-lock → dist/redis-lock}/comprehensive-lock-cleanup.service.d.ts +0 -0
- /package/{redis-lock → dist/redis-lock}/comprehensive-lock-cleanup.service.js +0 -0
- /package/{redis-lock → dist/redis-lock}/examples/lock-strategy.examples.d.ts +0 -0
- /package/{redis-lock → dist/redis-lock}/examples/lock-strategy.examples.js +0 -0
- /package/{redis-lock → dist/redis-lock}/index.d.ts +0 -0
- /package/{redis-lock → dist/redis-lock}/index.js +0 -0
- /package/{redis-lock → dist/redis-lock}/lock-heartbeat.service.d.ts +0 -0
- /package/{redis-lock → dist/redis-lock}/lock-heartbeat.service.js +0 -0
- /package/{redis-lock → dist/redis-lock}/redis-lock.decorator.d.ts +0 -0
- /package/{redis-lock → dist/redis-lock}/redis-lock.decorator.js +0 -0
- /package/{redis-lock → dist/redis-lock}/redis-lock.module.d.ts +0 -0
- /package/{redis-lock → dist/redis-lock}/redis-lock.module.js +0 -0
- /package/{redis-lock → dist/redis-lock}/redis-lock.service.d.ts +0 -0
- /package/{redis-lock → dist/redis-lock}/redis-lock.service.js +0 -0
- /package/{setup → dist/setup}/bootstrap.setup.d.ts +0 -0
- /package/{setup → dist/setup}/bootstrap.setup.js +0 -0
- /package/{setup → dist/setup}/index.d.ts +0 -0
- /package/{setup → dist/setup}/index.js +0 -0
- /package/{setup → dist/setup}/mode.setup.d.ts +0 -0
- /package/{setup → dist/setup}/mode.setup.js +0 -0
- /package/{setup → dist/setup}/schedule.decorator.d.ts +0 -0
- /package/{setup → dist/setup}/schedule.decorator.js +0 -0
- /package/{setup → dist/setup}/worker.decorator.d.ts +0 -0
- /package/{setup → dist/setup}/worker.decorator.js +0 -0
- /package/{shared → dist/shared}/index.d.ts +0 -0
- /package/{shared → dist/shared}/index.js +0 -0
- /package/{shared → dist/shared}/service-registry.module.d.ts +0 -0
- /package/{shared → dist/shared}/services/api-config.service.d.ts +0 -0
- /package/{shared → dist/shared}/services/api-config.service.js +0 -0
- /package/{shared → dist/shared}/services/generator.service.d.ts +0 -0
- /package/{shared → dist/shared}/services/generator.service.js +0 -0
- /package/{shared → dist/shared}/services/index.d.ts +0 -0
- /package/{shared → dist/shared}/services/index.js +0 -0
- /package/{shared → dist/shared}/services/translation.service.d.ts +0 -0
- /package/{shared → dist/shared}/services/translation.service.js +0 -0
- /package/{transaction → dist/transaction}/__tests__/mocks.d.ts +0 -0
- /package/{transaction → dist/transaction}/__tests__/mocks.js +0 -0
- /package/{transaction → dist/transaction}/base-service-transaction.d.ts +0 -0
- /package/{transaction → dist/transaction}/base-service-transaction.js +0 -0
- /package/{transaction → dist/transaction}/cls-compatibility.service.d.ts +0 -0
- /package/{transaction → dist/transaction}/cls-compatibility.service.js +0 -0
- /package/{transaction → dist/transaction}/data-source-registry.d.ts +0 -0
- /package/{transaction → dist/transaction}/data-source-registry.js +0 -0
- /package/{transaction → dist/transaction}/database-adapter.d.ts +0 -0
- /package/{transaction → dist/transaction}/database-adapter.js +0 -0
- /package/{transaction → dist/transaction}/decorators/entity-datasource.decorator.d.ts +0 -0
- /package/{transaction → dist/transaction}/decorators/entity-datasource.decorator.js +0 -0
- /package/{transaction → dist/transaction}/logging-transactional.interceptor.d.ts +0 -0
- /package/{transaction → dist/transaction}/logging-transactional.interceptor.js +0 -0
- /package/{transaction → dist/transaction}/transaction-context.service.d.ts +0 -0
- /package/{transaction → dist/transaction}/transaction-context.service.js +0 -0
- /package/{transaction → dist/transaction}/transaction-manager.d.ts +0 -0
- /package/{transaction → dist/transaction}/transaction-manager.js +0 -0
- /package/{transaction → dist/transaction}/transaction-synchronization.d.ts +0 -0
- /package/{transaction → dist/transaction}/transaction-synchronization.js +0 -0
- /package/{transaction → dist/transaction}/transaction.errors.d.ts +0 -0
- /package/{transaction → dist/transaction}/transaction.errors.js +0 -0
- /package/{transaction → dist/transaction}/transaction.module.d.ts +0 -0
- /package/{transaction → dist/transaction}/transaction.module.js +0 -0
- /package/{transaction → dist/transaction}/transactional.decorator.d.ts +0 -0
- /package/{transaction → dist/transaction}/transactional.decorator.js +0 -0
- /package/{transaction → dist/transaction}/typeorm-module-wrapper.d.ts +0 -0
- /package/{transaction → dist/transaction}/typeorm-module-wrapper.js +0 -0
- /package/{validator-json → dist/validator-json}/decorators.d.ts +0 -0
- /package/{validator-json → dist/validator-json}/decorators.js +0 -0
- /package/{validator-json → dist/validator-json}/default.d.ts +0 -0
- /package/{validator-json → dist/validator-json}/default.js +0 -0
- /package/{validator-json → dist/validator-json}/defaultConverters.d.ts +0 -0
- /package/{validator-json → dist/validator-json}/defaultConverters.js +0 -0
- /package/{validator-json → dist/validator-json}/index.d.ts +0 -0
- /package/{validator-json → dist/validator-json}/index.js +0 -0
- /package/{validator-json → dist/validator-json}/options.d.ts +0 -0
- /package/{validator-json → dist/validator-json}/options.js +0 -0
- /package/{validators → dist/validators}/common-validators.d.ts +0 -0
- /package/{validators → dist/validators}/common-validators.js +0 -0
- /package/{validators → dist/validators}/custom-validate.examples.d.ts +0 -0
- /package/{validators → dist/validators}/custom-validate.examples.js +0 -0
- /package/{validators → dist/validators}/custom-validate.validator.d.ts +0 -0
- /package/{validators → dist/validators}/custom-validate.validator.js +0 -0
- /package/{validators → dist/validators}/file-mimetype.validator.d.ts +0 -0
- /package/{validators → dist/validators}/file-mimetype.validator.js +0 -0
- /package/{validators → dist/validators}/index.d.ts +0 -0
- /package/{validators → dist/validators}/index.js +0 -0
- /package/{validators → dist/validators}/phone-country-code.validator.d.ts +0 -0
- /package/{validators → dist/validators}/phone-country-code.validator.js +0 -0
- /package/{validators → dist/validators}/same-as.validator.d.ts +0 -0
- /package/{validators → dist/validators}/same-as.validator.js +0 -0
- /package/{validators → dist/validators}/skip-empty.validator.d.ts +0 -0
- /package/{validators → dist/validators}/skip-empty.validator.js +0 -0
- /package/{vault → dist/vault}/index.d.ts +0 -0
- /package/{vault → dist/vault}/index.js +0 -0
- /package/{vault → dist/vault}/interfaces/vault-options.interface.d.ts +0 -0
- /package/{vault → dist/vault}/vault-config.loader.d.ts +0 -0
- /package/{vault → dist/vault}/vault-config.loader.js +0 -0
- /package/{vault → dist/vault}/vault-config.service.d.ts +0 -0
- /package/{vault → dist/vault}/vault-config.service.js +0 -0
- /package/{vault → dist/vault}/vault.module.d.ts +0 -0
- /package/{vault → dist/vault}/vault.module.js +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
Copyright 2024 Jinpy
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
# @nest-omni/core
|
|
2
|
+
|
|
3
|
+
A comprehensive NestJS framework for building enterprise-grade applications with best practices, decorators, validators, filters, interceptors, and utilities.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🎯 **Rich Decorators**: Custom decorators for controllers, routes, validation, and more
|
|
8
|
+
- 🛡️ **Advanced Filters**: Global exception handling with customizable error responses
|
|
9
|
+
- 🔄 **Interceptors**: Request/response transformation, logging, and translation
|
|
10
|
+
- ✅ **Validators**: Custom validators for common use cases (phone numbers, emails, etc.)
|
|
11
|
+
- 🏥 **Health Checks**: Built-in health checker module with configurable endpoints
|
|
12
|
+
- 🔧 **Middleware**: Compression, logging, and session management
|
|
13
|
+
- 📦 **Bootstrap Utilities**: Easy application setup with PM2 support and different modes
|
|
14
|
+
- 🌍 **i18n Support**: Internationalization with nestjs-i18n integration
|
|
15
|
+
- 🔒 **Redis Lock**: Distributed locking mechanism with decorators
|
|
16
|
+
- 📊 **Audit**: Request auditing and logging capabilities
|
|
17
|
+
- 🔐 **Sentry Integration**: Built-in error tracking and performance monitoring
|
|
18
|
+
- 🚀 **TypeScript 5.9+**: Full support for latest TypeScript features
|
|
19
|
+
- 📦 **Zero Config**: Most dependencies bundled - minimal setup required
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install @nest-omni/core
|
|
25
|
+
|
|
26
|
+
# Essential peer dependencies (required)
|
|
27
|
+
npm install @nestjs/common@^11.0.0 @nestjs/core@^11.0.0 @nestjs/platform-express@^11.0.0
|
|
28
|
+
|
|
29
|
+
# Optional peer dependencies (install as needed)
|
|
30
|
+
npm install typeorm@^0.3.20 @nestjs/typeorm@^11.0.0 # For database
|
|
31
|
+
npm install @nestjs/swagger@^11.0.0 # For API documentation
|
|
32
|
+
npm install @nestjs/schedule@^6.0.0 # For scheduled tasks
|
|
33
|
+
npm install nestjs-i18n@^10.5.0 # For internationalization
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Requirements
|
|
37
|
+
|
|
38
|
+
- Node.js >= 18.0.0
|
|
39
|
+
- NestJS >= 11.0.0
|
|
40
|
+
- TypeScript >= 5.9.0
|
|
41
|
+
|
|
42
|
+
## What's New in v3.1.0
|
|
43
|
+
|
|
44
|
+
- ✨ **Updated Dependencies**: All dependencies upgraded to latest stable versions
|
|
45
|
+
- 📦 **Better Bundling**: Core runtime dependencies now bundled (axios, lodash, moment, etc.)
|
|
46
|
+
- 🎯 **Enhanced Exports**: Sub-path exports for better tree-shaking
|
|
47
|
+
- 🔧 **Improved Types**: Better TypeScript support with updated type definitions
|
|
48
|
+
- 🚀 **NestJS 11**: Full support for NestJS 11.x
|
|
49
|
+
- 📊 **Sentry 10**: Upgraded to latest Sentry SDK with improved performance monitoring
|
|
50
|
+
|
|
51
|
+
## Quick Start
|
|
52
|
+
|
|
53
|
+
### 1. Basic Setup
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { Module } from '@nestjs/common';
|
|
57
|
+
import { HealthCheckerModule } from '@nest-omni/core';
|
|
58
|
+
|
|
59
|
+
@Module({
|
|
60
|
+
imports: [HealthCheckerModule],
|
|
61
|
+
})
|
|
62
|
+
export class AppModule {}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 2. Using Bootstrap
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
import { bootstrap } from '@nest-omni/core';
|
|
69
|
+
import { AppModule } from './app.module';
|
|
70
|
+
|
|
71
|
+
bootstrap(AppModule, {
|
|
72
|
+
port: 3000,
|
|
73
|
+
globalPrefix: 'api',
|
|
74
|
+
enableCors: true,
|
|
75
|
+
enableSwagger: true,
|
|
76
|
+
});
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 3. Using Decorators
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
import { Controller, Get } from '@nestjs/common';
|
|
83
|
+
import { ApiController, ApiOperation, PublicRoute } from '@nest-omni/core';
|
|
84
|
+
|
|
85
|
+
@ApiController('users', 'User Management')
|
|
86
|
+
@Controller('users')
|
|
87
|
+
export class UsersController {
|
|
88
|
+
@Get()
|
|
89
|
+
@PublicRoute()
|
|
90
|
+
@ApiOperation({ summary: 'Get all users' })
|
|
91
|
+
findAll() {
|
|
92
|
+
return [];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Sub-path Exports
|
|
98
|
+
|
|
99
|
+
The package now supports sub-path exports for better tree-shaking and smaller bundle sizes:
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
// Import from main entry (includes everything)
|
|
103
|
+
import { ApiController, QueryFailedFilter } from '@nest-omni/core';
|
|
104
|
+
|
|
105
|
+
// Import from specific sub-paths (better tree-shaking)
|
|
106
|
+
import { ApiController } from '@nest-omni/core/decorators';
|
|
107
|
+
import { QueryFailedFilter } from '@nest-omni/core/filters';
|
|
108
|
+
import { TranslationInterceptor } from '@nest-omni/core/interceptors';
|
|
109
|
+
import { IsPhoneNumber } from '@nest-omni/core/validators';
|
|
110
|
+
import { bootstrap } from '@nest-omni/core/setup';
|
|
111
|
+
import { HealthCheckerModule } from '@nest-omni/core/health-checker';
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Available sub-paths:
|
|
115
|
+
- `@nest-omni/core` - Main entry point (all exports)
|
|
116
|
+
- `@nest-omni/core/decorators` - Decorators only
|
|
117
|
+
- `@nest-omni/core/filters` - Exception filters only
|
|
118
|
+
- `@nest-omni/core/interceptors` - Interceptors only
|
|
119
|
+
- `@nest-omni/core/validators` - Custom validators only
|
|
120
|
+
- `@nest-omni/core/setup` - Bootstrap and setup utilities
|
|
121
|
+
- `@nest-omni/core/health-checker` - Health check module
|
|
122
|
+
|
|
123
|
+
## Core Modules
|
|
124
|
+
|
|
125
|
+
### Decorators
|
|
126
|
+
|
|
127
|
+
#### Controller Decorators
|
|
128
|
+
- `@ApiController(path, tag)` - Enhanced API controller with Swagger tags
|
|
129
|
+
- `@PublicRoute()` - Mark route as public (skip authentication)
|
|
130
|
+
|
|
131
|
+
#### Property Decorators
|
|
132
|
+
- `@NumberField(options)` - Number field with validation
|
|
133
|
+
- `@StringField(options)` - String field with validation
|
|
134
|
+
- `@BooleanField(options)` - Boolean field with validation
|
|
135
|
+
- `@DateField(options)` - Date field with validation
|
|
136
|
+
- `@EmailField(options)` - Email field with validation
|
|
137
|
+
- `@PhoneField(options)` - Phone number field with validation
|
|
138
|
+
- `@UrlField(options)` - URL field with validation
|
|
139
|
+
|
|
140
|
+
#### User Decorator
|
|
141
|
+
- `@User()` - Extract user from request
|
|
142
|
+
|
|
143
|
+
#### Transform Decorators
|
|
144
|
+
- `@Trim()` - Trim string values
|
|
145
|
+
- `@ToLowerCase()` - Convert to lowercase
|
|
146
|
+
- `@ToUpperCase()` - Convert to uppercase
|
|
147
|
+
|
|
148
|
+
### Filters
|
|
149
|
+
|
|
150
|
+
Global exception filters for handling common errors:
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
import { BadRequestExceptionFilter, QueryFailedFilter } from '@nest-omni/core';
|
|
154
|
+
|
|
155
|
+
app.useGlobalFilters(
|
|
156
|
+
new BadRequestExceptionFilter(),
|
|
157
|
+
new QueryFailedFilter(),
|
|
158
|
+
);
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Interceptors
|
|
162
|
+
|
|
163
|
+
#### LanguageInterceptor
|
|
164
|
+
Handles language detection and setting:
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
import { LanguageInterceptor } from '@nest-omni/core';
|
|
168
|
+
|
|
169
|
+
app.useGlobalInterceptors(new LanguageInterceptor());
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
#### TranslationInterceptor
|
|
173
|
+
Handles response translation:
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
import { TranslationInterceptor } from '@nest-omni/core';
|
|
177
|
+
|
|
178
|
+
app.useGlobalInterceptors(new TranslationInterceptor());
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Validators
|
|
182
|
+
|
|
183
|
+
Custom validators for common use cases:
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
import { IsPhoneNumber, IsEmail, IsUrl } from '@nest-omni/core';
|
|
187
|
+
|
|
188
|
+
export class CreateUserDto {
|
|
189
|
+
@IsEmail()
|
|
190
|
+
email: string;
|
|
191
|
+
|
|
192
|
+
@IsPhoneNumber()
|
|
193
|
+
phone: string;
|
|
194
|
+
|
|
195
|
+
@IsUrl()
|
|
196
|
+
website: string;
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Health Checker
|
|
201
|
+
|
|
202
|
+
Built-in health check endpoint:
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
import { HealthCheckerModule } from '@nest-omni/core';
|
|
206
|
+
|
|
207
|
+
@Module({
|
|
208
|
+
imports: [
|
|
209
|
+
HealthCheckerModule, // Adds /health endpoint
|
|
210
|
+
],
|
|
211
|
+
})
|
|
212
|
+
export class AppModule {}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Setup & Bootstrap
|
|
216
|
+
|
|
217
|
+
#### Mode-based Setup
|
|
218
|
+
|
|
219
|
+
Support for different execution modes (web, worker, scheduler):
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
import { ModeSetup } from '@nest-omni/core';
|
|
223
|
+
|
|
224
|
+
const mode = ModeSetup.getMode(); // 'web' | 'worker' | 'scheduler'
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
#### Worker Decorator
|
|
228
|
+
|
|
229
|
+
```typescript
|
|
230
|
+
import { Worker } from '@nest-omni/core';
|
|
231
|
+
|
|
232
|
+
export class TaskService {
|
|
233
|
+
@Worker()
|
|
234
|
+
async processTask() {
|
|
235
|
+
// This will only run in worker mode
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
#### Schedule Decorator
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
import { Schedule } from '@nest-omni/core';
|
|
244
|
+
|
|
245
|
+
export class SchedulerService {
|
|
246
|
+
@Schedule()
|
|
247
|
+
@Cron('0 0 * * *')
|
|
248
|
+
async dailyTask() {
|
|
249
|
+
// This will only run in scheduler mode
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
#### Redis Lock
|
|
255
|
+
|
|
256
|
+
分布式锁服务,支持装饰器和服务注入两种使用方式:
|
|
257
|
+
|
|
258
|
+
```typescript
|
|
259
|
+
import { RedisLockModule, UseRedisLock, RedisLockService } from '@nest-omni/core';
|
|
260
|
+
|
|
261
|
+
// 模块配置
|
|
262
|
+
@Module({
|
|
263
|
+
imports: [
|
|
264
|
+
RedisLockModule.forRootAsync({
|
|
265
|
+
imports: [RedisModule],
|
|
266
|
+
inject: [RedisService],
|
|
267
|
+
useFactory: (redisService: RedisService) => ({
|
|
268
|
+
redisClient: redisService.getClient(),
|
|
269
|
+
}),
|
|
270
|
+
}),
|
|
271
|
+
],
|
|
272
|
+
})
|
|
273
|
+
|
|
274
|
+
// 使用装饰器(推荐)
|
|
275
|
+
@Cron('0 * * * *')
|
|
276
|
+
@UseRedisLock('hourly-task', { ttl: 3600000 })
|
|
277
|
+
async hourlyTask() {
|
|
278
|
+
// 在分布式环境下,同一时间只有一个实例会执行
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// 使用服务注入
|
|
282
|
+
async processOrder(orderId: string) {
|
|
283
|
+
const lockResult = await this.lockService.acquireLock(
|
|
284
|
+
`order:${orderId}`,
|
|
285
|
+
{ ttl: 60000 }
|
|
286
|
+
);
|
|
287
|
+
|
|
288
|
+
if (!lockResult.acquired) return;
|
|
289
|
+
|
|
290
|
+
try {
|
|
291
|
+
await this.doProcess(orderId);
|
|
292
|
+
} finally {
|
|
293
|
+
await this.lockService.releaseLock(
|
|
294
|
+
`order:${orderId}`,
|
|
295
|
+
lockResult.lockValue
|
|
296
|
+
);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
**[📖 查看完整文档](./src/redis-lock/README.md)**
|
|
302
|
+
|
|
303
|
+
### Cache System
|
|
304
|
+
|
|
305
|
+
企业级三层缓存架构,支持智能依赖管理:
|
|
306
|
+
|
|
307
|
+
```typescript
|
|
308
|
+
import { CacheModule, Cacheable, TagDependency } from '@nest-omni/core';
|
|
309
|
+
|
|
310
|
+
// 模块配置
|
|
311
|
+
@Module({
|
|
312
|
+
imports: [
|
|
313
|
+
CacheModule.forRoot({
|
|
314
|
+
redis: { host: 'localhost', port: 6379 },
|
|
315
|
+
defaultTtl: 300000, // 5分钟
|
|
316
|
+
}),
|
|
317
|
+
],
|
|
318
|
+
})
|
|
319
|
+
|
|
320
|
+
// 使用装饰器(推荐)
|
|
321
|
+
@Cacheable({
|
|
322
|
+
key: (id: string) => `user:${id}`,
|
|
323
|
+
ttl: 300000,
|
|
324
|
+
dependencies: [new TagDependency(['user-data'])],
|
|
325
|
+
})
|
|
326
|
+
async getUser(id: string): Promise<User> {
|
|
327
|
+
return await this.userRepository.findOne(id);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// 使用服务
|
|
331
|
+
async getProduct(id: string): Promise<Product> {
|
|
332
|
+
return await this.cacheService.getOrSet(
|
|
333
|
+
`product:${id}`,
|
|
334
|
+
() => this.productRepository.findOne(id),
|
|
335
|
+
{ ttl: 600000 }
|
|
336
|
+
);
|
|
337
|
+
}
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**核心特性:**
|
|
341
|
+
- 🏗️ 三层缓存架构(CLS + Memory + Redis)
|
|
342
|
+
- 🔗 6种智能依赖类型(Tag, DB, Callback, Chain, File, Time)
|
|
343
|
+
- 🎯 装饰器支持(@Cacheable, @CacheEvict, @CachePut)
|
|
344
|
+
- 📊 性能监控和统计
|
|
345
|
+
- 🛡️ 自动回填机制
|
|
346
|
+
|
|
347
|
+
**[📖 查看完整文档](./src/cache/README.md)**
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
## Middleware
|
|
352
|
+
|
|
353
|
+
### Compression Middleware
|
|
354
|
+
|
|
355
|
+
Automatically enabled in production:
|
|
356
|
+
|
|
357
|
+
```typescript
|
|
358
|
+
import { setupCompression } from '@nest-omni/core';
|
|
359
|
+
|
|
360
|
+
const app = await NestFactory.create(AppModule);
|
|
361
|
+
setupCompression(app);
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
## Configuration
|
|
365
|
+
|
|
366
|
+
### TypeScript Configuration
|
|
367
|
+
|
|
368
|
+
Your `tsconfig.json`:
|
|
369
|
+
|
|
370
|
+
```json
|
|
371
|
+
{
|
|
372
|
+
"compilerOptions": {
|
|
373
|
+
"experimentalDecorators": true,
|
|
374
|
+
"emitDecoratorMetadata": true,
|
|
375
|
+
"target": "ES2022",
|
|
376
|
+
"module": "commonjs"
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
## Advanced Usage
|
|
382
|
+
|
|
383
|
+
### Custom Exception Handling
|
|
384
|
+
|
|
385
|
+
```typescript
|
|
386
|
+
import { HttpException, HttpStatus } from '@nestjs/common';
|
|
387
|
+
import { BaseExceptionFilter } from '@nest-omni/core';
|
|
388
|
+
|
|
389
|
+
@Catch()
|
|
390
|
+
export class CustomExceptionFilter extends BaseExceptionFilter {
|
|
391
|
+
catch(exception: unknown, host: ArgumentsHost) {
|
|
392
|
+
// Your custom logic
|
|
393
|
+
super.catch(exception, host);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### Integration with i18n
|
|
399
|
+
|
|
400
|
+
```typescript
|
|
401
|
+
import { I18nModule } from 'nestjs-i18n';
|
|
402
|
+
|
|
403
|
+
@Module({
|
|
404
|
+
imports: [
|
|
405
|
+
I18nModule.forRoot({
|
|
406
|
+
fallbackLanguage: 'en',
|
|
407
|
+
loaderOptions: {
|
|
408
|
+
path: path.join(__dirname, '/i18n/'),
|
|
409
|
+
watch: true,
|
|
410
|
+
},
|
|
411
|
+
}),
|
|
412
|
+
],
|
|
413
|
+
})
|
|
414
|
+
export class AppModule {}
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
## PM2 Deployment
|
|
418
|
+
|
|
419
|
+
The framework includes PM2 support for production deployments:
|
|
420
|
+
|
|
421
|
+
```typescript
|
|
422
|
+
import { bootstrap } from '@nest-omni/core';
|
|
423
|
+
|
|
424
|
+
bootstrap(AppModule, {
|
|
425
|
+
pm2: true,
|
|
426
|
+
instances: 4, // or 'max'
|
|
427
|
+
});
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
## License
|
|
431
|
+
|
|
432
|
+
Apache-2.0 © Jinpy
|
|
433
|
+
|
|
434
|
+
## Support
|
|
435
|
+
|
|
436
|
+
- Email: jinpy.he@kuehne-nagel.com
|
|
437
|
+
|
|
438
|
+
## Credits
|
|
439
|
+
|
|
440
|
+
Built with ❤️ using:
|
|
441
|
+
- [NestJS](https://nestjs.com/)
|
|
442
|
+
- [TypeORM](https://typeorm.io/)
|
|
443
|
+
- [class-validator](https://github.com/typestack/class-validator)
|
|
444
|
+
- [class-transformer](https://github.com/typestack/class-transformer)
|
package/build.sh
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
files_to_copy=("package.json" ".npmignore" "yarn.lock" "../../.hygen" "../../.hygen.js")
|
|
4
|
+
|
|
5
|
+
if [ -d "dist" ]; then
|
|
6
|
+
rm -rf dist
|
|
7
|
+
fi
|
|
8
|
+
|
|
9
|
+
yarn run build
|
|
10
|
+
|
|
11
|
+
if [ ! -d "dist" ]; then
|
|
12
|
+
echo "dist directory was not created by the build command."
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
# 新增测试版发布询问
|
|
17
|
+
read -p "是否发布测试版?(yes/no) " is_beta
|
|
18
|
+
|
|
19
|
+
# 版本号递增逻辑
|
|
20
|
+
if [[ "$is_beta" =~ ^[Yy](es)?$ ]]; then
|
|
21
|
+
npm version prerelease -m "Bump version for beta release"
|
|
22
|
+
else
|
|
23
|
+
npm version patch -m "Bump version for release"
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# 文件复制(注意调整到版本号递增之后)
|
|
27
|
+
for file in "${files_to_copy[@]}"; do
|
|
28
|
+
if [ -f "$file" ]; then
|
|
29
|
+
cp "$file" dist/
|
|
30
|
+
elif [ -d "$file" ]; then
|
|
31
|
+
cp -rf "$file" dist/
|
|
32
|
+
else
|
|
33
|
+
echo "Warning: $file does not exist and cannot be copied to dist."
|
|
34
|
+
fi
|
|
35
|
+
done
|
|
36
|
+
|
|
37
|
+
# 发布逻辑
|
|
38
|
+
cd dist || exit
|
|
39
|
+
if [[ "$is_beta" =~ ^[Yy](es)?$ ]]; then
|
|
40
|
+
npm publish --tag beta --access public
|
|
41
|
+
else
|
|
42
|
+
npm publish --access public
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
echo "Build completed, files copied to dist, and package published to npm."
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { DataSource } from 'typeorm';
|
|
2
|
+
import type { CacheDependency } from '../interfaces/cache-dependency.interface';
|
|
3
|
+
/**
|
|
4
|
+
* Options for DbDependency
|
|
5
|
+
*/
|
|
6
|
+
export interface DbDependencyOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Name for this dependency (used in cache key generation)
|
|
9
|
+
* Default: 'db'
|
|
10
|
+
*/
|
|
11
|
+
name?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Data source name to use for querying
|
|
14
|
+
* If not specified, uses the default data source
|
|
15
|
+
*/
|
|
16
|
+
dataSourceName?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Database-based cache dependency
|
|
20
|
+
*
|
|
21
|
+
* This dependency monitors database query results. When the query result changes,
|
|
22
|
+
* the cache becomes invalid.
|
|
23
|
+
*
|
|
24
|
+
* Common use case: Monitor MAX(updated_at) or COUNT(*) to detect data changes.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // Invalidate cache when user data changes
|
|
29
|
+
* @Cacheable({
|
|
30
|
+
* key: (id) => `user:${id}:profile`,
|
|
31
|
+
* dependencies: [
|
|
32
|
+
* new DbDependency(
|
|
33
|
+
* 'SELECT updated_at FROM users WHERE id = ?',
|
|
34
|
+
* (id) => [id]
|
|
35
|
+
* )
|
|
36
|
+
* ]
|
|
37
|
+
* })
|
|
38
|
+
* async getUserProfile(id: string) { }
|
|
39
|
+
*
|
|
40
|
+
* // Invalidate when any user in tenant changes
|
|
41
|
+
* @Cacheable({
|
|
42
|
+
* key: (tenantId) => `users:list:${tenantId}`,
|
|
43
|
+
* dependencies: [
|
|
44
|
+
* new DbDependency(
|
|
45
|
+
* 'SELECT MAX(updated_at) FROM users WHERE tenant_id = ?',
|
|
46
|
+
* (tenantId) => [tenantId]
|
|
47
|
+
* )
|
|
48
|
+
* ]
|
|
49
|
+
* })
|
|
50
|
+
* async getUserList(tenantId: string) { }
|
|
51
|
+
*
|
|
52
|
+
* // Use specific data source
|
|
53
|
+
* @Cacheable({
|
|
54
|
+
* key: (id) => `product:${id}:details`,
|
|
55
|
+
* dependencies: [
|
|
56
|
+
* new DbDependency(
|
|
57
|
+
* 'SELECT updated_at FROM products WHERE id = ?',
|
|
58
|
+
* (id) => [id],
|
|
59
|
+
* { dataSourceName: 'readReplicas' }
|
|
60
|
+
* )
|
|
61
|
+
* ]
|
|
62
|
+
* })
|
|
63
|
+
* async getProductDetails(id: string) { }
|
|
64
|
+
*
|
|
65
|
+
* // With custom name and data source
|
|
66
|
+
* new DbDependency(
|
|
67
|
+
* 'SELECT COUNT(*) FROM events',
|
|
68
|
+
* [],
|
|
69
|
+
* { name: 'eventCount', dataSourceName: 'analytics' }
|
|
70
|
+
* )
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare class DbDependency implements CacheDependency {
|
|
74
|
+
private readonly sql;
|
|
75
|
+
private readonly paramsFactory?;
|
|
76
|
+
private readonly options?;
|
|
77
|
+
private static fallbackDataSource;
|
|
78
|
+
private static defaultDataSourceName;
|
|
79
|
+
constructor(sql: string, paramsFactory?: (...args: any[]) => any[], options?: DbDependencyOptions);
|
|
80
|
+
/**
|
|
81
|
+
* Set a fallback DataSource for database queries
|
|
82
|
+
* This is used when DataSourceUtil cannot provide a DataSource
|
|
83
|
+
* This method is deprecated - use DataSourceUtil.registerDataSource() instead
|
|
84
|
+
* @deprecated Use DataSourceUtil.registerDataSource() to register DataSources
|
|
85
|
+
*/
|
|
86
|
+
static setDataSource(dataSource: DataSource): void;
|
|
87
|
+
/**
|
|
88
|
+
* Set the default data source name for DbDependency
|
|
89
|
+
* @param name The data source name (default: 'default')
|
|
90
|
+
*/
|
|
91
|
+
static setDefaultDataSourceName(name: string): void;
|
|
92
|
+
/**
|
|
93
|
+
* Get the current fallback DataSource
|
|
94
|
+
* @deprecated Use DataSourceUtil.getDataSource() instead
|
|
95
|
+
*/
|
|
96
|
+
static getDataSource(): DataSource | null;
|
|
97
|
+
/**
|
|
98
|
+
* Get DataSource for executing queries
|
|
99
|
+
* Priority: 1. Specific dataSourceName from options, 2. Default from DataSourceUtil, 3. Fallback
|
|
100
|
+
*/
|
|
101
|
+
private getDataSource;
|
|
102
|
+
getKey(): string;
|
|
103
|
+
getData(): Promise<any>;
|
|
104
|
+
isChanged(oldData: any): Promise<boolean>;
|
|
105
|
+
/**
|
|
106
|
+
* Simple hash code generation for strings
|
|
107
|
+
*/
|
|
108
|
+
private hashCode;
|
|
109
|
+
}
|