@dofe/infra-common 0.1.1
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/dist/adapters/base.adapter.d.ts +84 -0
- package/dist/adapters/base.adapter.d.ts.map +1 -0
- package/dist/adapters/base.adapter.js +19 -0
- package/dist/adapters/base.adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +35 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +53 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/common.module.d.ts +7 -0
- package/dist/common.module.d.ts.map +1 -0
- package/dist/common.module.js +26 -0
- package/dist/common.module.js.map +1 -0
- package/dist/config/agentx.config.d.ts +37 -0
- package/dist/config/agentx.config.d.ts.map +1 -0
- package/dist/config/agentx.config.js +81 -0
- package/dist/config/agentx.config.js.map +1 -0
- package/dist/config/configuration.d.ts +55 -0
- package/dist/config/configuration.d.ts.map +1 -0
- package/dist/config/configuration.js +336 -0
- package/dist/config/configuration.js.map +1 -0
- package/dist/config/constant/config.constants.d.ts +48 -0
- package/dist/config/constant/config.constants.d.ts.map +1 -0
- package/dist/config/constant/config.constants.js +86 -0
- package/dist/config/constant/config.constants.js.map +1 -0
- package/dist/config/dto/config.dto.d.ts +222 -0
- package/dist/config/dto/config.dto.d.ts.map +1 -0
- package/dist/config/dto/config.dto.js +42 -0
- package/dist/config/dto/config.dto.js.map +1 -0
- package/dist/config/env-config.service.d.ts +147 -0
- package/dist/config/env-config.service.d.ts.map +1 -0
- package/dist/config/env-config.service.js +296 -0
- package/dist/config/env-config.service.js.map +1 -0
- package/dist/config/features/feature-errors.d.ts +13 -0
- package/dist/config/features/feature-errors.d.ts.map +1 -0
- package/dist/config/features/feature-errors.js +25 -0
- package/dist/config/features/feature-errors.js.map +1 -0
- package/dist/config/features/feature-registry.d.ts +26 -0
- package/dist/config/features/feature-registry.d.ts.map +1 -0
- package/dist/config/features/feature-registry.js +172 -0
- package/dist/config/features/feature-registry.js.map +1 -0
- package/dist/config/features/index.d.ts +4 -0
- package/dist/config/features/index.d.ts.map +1 -0
- package/dist/config/features/index.js +9 -0
- package/dist/config/features/index.js.map +1 -0
- package/dist/config/validation/env.validation.d.ts +132 -0
- package/dist/config/validation/env.validation.d.ts.map +1 -0
- package/dist/config/validation/env.validation.js +304 -0
- package/dist/config/validation/env.validation.js.map +1 -0
- package/dist/config/validation/index.d.ts +21 -0
- package/dist/config/validation/index.d.ts.map +1 -0
- package/dist/config/validation/index.js +119 -0
- package/dist/config/validation/index.js.map +1 -0
- package/dist/config/validation/keys.validation.d.ts +884 -0
- package/dist/config/validation/keys.validation.d.ts.map +1 -0
- package/dist/config/validation/keys.validation.js +506 -0
- package/dist/config/validation/keys.validation.js.map +1 -0
- package/dist/config/validation/yaml.validation.d.ts +765 -0
- package/dist/config/validation/yaml.validation.d.ts.map +1 -0
- package/dist/config/validation/yaml.validation.js +488 -0
- package/dist/config/validation/yaml.validation.js.map +1 -0
- package/dist/config/vendor.config.d.ts +48 -0
- package/dist/config/vendor.config.d.ts.map +1 -0
- package/dist/config/vendor.config.js +136 -0
- package/dist/config/vendor.config.js.map +1 -0
- package/dist/decorators/api-key/api-key.decorator.d.ts +25 -0
- package/dist/decorators/api-key/api-key.decorator.d.ts.map +1 -0
- package/dist/decorators/api-key/api-key.decorator.js +30 -0
- package/dist/decorators/api-key/api-key.decorator.js.map +1 -0
- package/dist/decorators/api-key/index.d.ts +2 -0
- package/dist/decorators/api-key/index.d.ts.map +1 -0
- package/dist/decorators/api-key/index.js +18 -0
- package/dist/decorators/api-key/index.js.map +1 -0
- package/dist/decorators/app-version/app-version.controller.d.ts +30 -0
- package/dist/decorators/app-version/app-version.controller.d.ts.map +1 -0
- package/dist/decorators/app-version/app-version.controller.js +159 -0
- package/dist/decorators/app-version/app-version.controller.js.map +1 -0
- package/dist/decorators/app-version/app-version.interceptor.d.ts +15 -0
- package/dist/decorators/app-version/app-version.interceptor.d.ts.map +1 -0
- package/dist/decorators/app-version/app-version.interceptor.js +42 -0
- package/dist/decorators/app-version/app-version.interceptor.js.map +1 -0
- package/dist/decorators/app-version/app-version.module.d.ts +8 -0
- package/dist/decorators/app-version/app-version.module.d.ts.map +1 -0
- package/dist/decorators/app-version/app-version.module.js +39 -0
- package/dist/decorators/app-version/app-version.module.js.map +1 -0
- package/dist/decorators/app-version/app-version.service.d.ts +88 -0
- package/dist/decorators/app-version/app-version.service.d.ts.map +1 -0
- package/dist/decorators/app-version/app-version.service.js +251 -0
- package/dist/decorators/app-version/app-version.service.js.map +1 -0
- package/dist/decorators/app-version/index.d.ts +8 -0
- package/dist/decorators/app-version/index.d.ts.map +1 -0
- package/dist/decorators/app-version/index.js +15 -0
- package/dist/decorators/app-version/index.js.map +1 -0
- package/dist/decorators/audit-log.decorator.d.ts +41 -0
- package/dist/decorators/audit-log.decorator.d.ts.map +1 -0
- package/dist/decorators/audit-log.decorator.js +19 -0
- package/dist/decorators/audit-log.decorator.js.map +1 -0
- package/dist/decorators/cache/cache.decorator.d.ts +256 -0
- package/dist/decorators/cache/cache.decorator.d.ts.map +1 -0
- package/dist/decorators/cache/cache.decorator.js +339 -0
- package/dist/decorators/cache/cache.decorator.js.map +1 -0
- package/dist/decorators/cache/cache.interceptor.d.ts +43 -0
- package/dist/decorators/cache/cache.interceptor.d.ts.map +1 -0
- package/dist/decorators/cache/cache.interceptor.js +219 -0
- package/dist/decorators/cache/cache.interceptor.js.map +1 -0
- package/dist/decorators/cache/cache.module.d.ts +9 -0
- package/dist/decorators/cache/cache.module.d.ts.map +1 -0
- package/dist/decorators/cache/cache.module.js +36 -0
- package/dist/decorators/cache/cache.module.js.map +1 -0
- package/dist/decorators/cache/index.d.ts +7 -0
- package/dist/decorators/cache/index.d.ts.map +1 -0
- package/dist/decorators/cache/index.js +32 -0
- package/dist/decorators/cache/index.js.map +1 -0
- package/dist/decorators/data-visibility/data-visibility.decorator.d.ts +74 -0
- package/dist/decorators/data-visibility/data-visibility.decorator.d.ts.map +1 -0
- package/dist/decorators/data-visibility/data-visibility.decorator.js +87 -0
- package/dist/decorators/data-visibility/data-visibility.decorator.js.map +1 -0
- package/dist/decorators/data-visibility/index.d.ts +2 -0
- package/dist/decorators/data-visibility/index.d.ts.map +1 -0
- package/dist/decorators/data-visibility/index.js +18 -0
- package/dist/decorators/data-visibility/index.js.map +1 -0
- package/dist/decorators/event/event.decorator.d.ts +152 -0
- package/dist/decorators/event/event.decorator.d.ts.map +1 -0
- package/dist/decorators/event/event.decorator.js +158 -0
- package/dist/decorators/event/event.decorator.js.map +1 -0
- package/dist/decorators/event/event.interceptor.d.ts +23 -0
- package/dist/decorators/event/event.interceptor.d.ts.map +1 -0
- package/dist/decorators/event/event.interceptor.js +140 -0
- package/dist/decorators/event/event.interceptor.js.map +1 -0
- package/dist/decorators/event/event.module.d.ts +9 -0
- package/dist/decorators/event/event.module.d.ts.map +1 -0
- package/dist/decorators/event/event.module.js +59 -0
- package/dist/decorators/event/event.module.js.map +1 -0
- package/dist/decorators/event/handlers/cache-event.handler.d.ts +55 -0
- package/dist/decorators/event/handlers/cache-event.handler.d.ts.map +1 -0
- package/dist/decorators/event/handlers/cache-event.handler.js +159 -0
- package/dist/decorators/event/handlers/cache-event.handler.js.map +1 -0
- package/dist/decorators/event/index.d.ts +8 -0
- package/dist/decorators/event/index.d.ts.map +1 -0
- package/dist/decorators/event/index.js +26 -0
- package/dist/decorators/event/index.js.map +1 -0
- package/dist/decorators/feature-flag/feature-flag.decorator.d.ts +144 -0
- package/dist/decorators/feature-flag/feature-flag.decorator.d.ts.map +1 -0
- package/dist/decorators/feature-flag/feature-flag.decorator.js +135 -0
- package/dist/decorators/feature-flag/feature-flag.decorator.js.map +1 -0
- package/dist/decorators/feature-flag/feature-flag.interceptor.d.ts +30 -0
- package/dist/decorators/feature-flag/feature-flag.interceptor.d.ts.map +1 -0
- package/dist/decorators/feature-flag/feature-flag.interceptor.js +127 -0
- package/dist/decorators/feature-flag/feature-flag.interceptor.js.map +1 -0
- package/dist/decorators/feature-flag/feature-flag.module.d.ts +9 -0
- package/dist/decorators/feature-flag/feature-flag.module.d.ts.map +1 -0
- package/dist/decorators/feature-flag/feature-flag.module.js +39 -0
- package/dist/decorators/feature-flag/feature-flag.module.js.map +1 -0
- package/dist/decorators/feature-flag/feature-flag.service.d.ts +102 -0
- package/dist/decorators/feature-flag/feature-flag.service.d.ts.map +1 -0
- package/dist/decorators/feature-flag/feature-flag.service.js +373 -0
- package/dist/decorators/feature-flag/feature-flag.service.js.map +1 -0
- package/dist/decorators/feature-flag/feature-flag.service.spec.d.ts +2 -0
- package/dist/decorators/feature-flag/feature-flag.service.spec.d.ts.map +1 -0
- package/dist/decorators/feature-flag/feature-flag.service.spec.js +264 -0
- package/dist/decorators/feature-flag/feature-flag.service.spec.js.map +1 -0
- package/dist/decorators/feature-flag/index.d.ts +8 -0
- package/dist/decorators/feature-flag/index.d.ts.map +1 -0
- package/dist/decorators/feature-flag/index.js +23 -0
- package/dist/decorators/feature-flag/index.js.map +1 -0
- package/dist/decorators/rate-limit/dto/rate-limit.dto.d.ts +174 -0
- package/dist/decorators/rate-limit/dto/rate-limit.dto.d.ts.map +1 -0
- package/dist/decorators/rate-limit/dto/rate-limit.dto.js +8 -0
- package/dist/decorators/rate-limit/dto/rate-limit.dto.js.map +1 -0
- package/dist/decorators/rate-limit/index.d.ts +24 -0
- package/dist/decorators/rate-limit/index.d.ts.map +1 -0
- package/dist/decorators/rate-limit/index.js +44 -0
- package/dist/decorators/rate-limit/index.js.map +1 -0
- package/dist/decorators/rate-limit/rate-limit.constants.d.ts +16 -0
- package/dist/decorators/rate-limit/rate-limit.constants.d.ts.map +1 -0
- package/dist/decorators/rate-limit/rate-limit.constants.js +22 -0
- package/dist/decorators/rate-limit/rate-limit.constants.js.map +1 -0
- package/dist/decorators/rate-limit/rate-limit.decorator.d.ts +132 -0
- package/dist/decorators/rate-limit/rate-limit.decorator.d.ts.map +1 -0
- package/dist/decorators/rate-limit/rate-limit.decorator.js +185 -0
- package/dist/decorators/rate-limit/rate-limit.decorator.js.map +1 -0
- package/dist/decorators/rate-limit/rate-limit.exception.d.ts +39 -0
- package/dist/decorators/rate-limit/rate-limit.exception.d.ts.map +1 -0
- package/dist/decorators/rate-limit/rate-limit.exception.js +67 -0
- package/dist/decorators/rate-limit/rate-limit.exception.js.map +1 -0
- package/dist/decorators/rate-limit/rate-limit.module.d.ts +25 -0
- package/dist/decorators/rate-limit/rate-limit.module.d.ts.map +1 -0
- package/dist/decorators/rate-limit/rate-limit.module.js +48 -0
- package/dist/decorators/rate-limit/rate-limit.module.js.map +1 -0
- package/dist/decorators/rate-limit/rate-limit.service.d.ts +102 -0
- package/dist/decorators/rate-limit/rate-limit.service.d.ts.map +1 -0
- package/dist/decorators/rate-limit/rate-limit.service.js +390 -0
- package/dist/decorators/rate-limit/rate-limit.service.js.map +1 -0
- package/dist/decorators/response.decorator.d.ts +10 -0
- package/dist/decorators/response.decorator.d.ts.map +1 -0
- package/dist/decorators/response.decorator.js +58 -0
- package/dist/decorators/response.decorator.js.map +1 -0
- package/dist/decorators/skip-version-check.decorator.d.ts +25 -0
- package/dist/decorators/skip-version-check.decorator.d.ts.map +1 -0
- package/dist/decorators/skip-version-check.decorator.js +31 -0
- package/dist/decorators/skip-version-check.decorator.js.map +1 -0
- package/dist/decorators/tenant/index.d.ts +2 -0
- package/dist/decorators/tenant/index.d.ts.map +1 -0
- package/dist/decorators/tenant/index.js +18 -0
- package/dist/decorators/tenant/index.js.map +1 -0
- package/dist/decorators/tenant/tenant.decorator.d.ts +82 -0
- package/dist/decorators/tenant/tenant.decorator.d.ts.map +1 -0
- package/dist/decorators/tenant/tenant.decorator.js +98 -0
- package/dist/decorators/tenant/tenant.decorator.js.map +1 -0
- package/dist/decorators/transaction/index.d.ts +6 -0
- package/dist/decorators/transaction/index.d.ts.map +1 -0
- package/dist/decorators/transaction/index.js +12 -0
- package/dist/decorators/transaction/index.js.map +1 -0
- package/dist/decorators/transaction/transactional.decorator.d.ts +234 -0
- package/dist/decorators/transaction/transactional.decorator.d.ts.map +1 -0
- package/dist/decorators/transaction/transactional.decorator.js +433 -0
- package/dist/decorators/transaction/transactional.decorator.js.map +1 -0
- package/dist/decorators/ts-rest-controller.decorator.d.ts +38 -0
- package/dist/decorators/ts-rest-controller.decorator.d.ts.map +1 -0
- package/dist/decorators/ts-rest-controller.decorator.js +25 -0
- package/dist/decorators/ts-rest-controller.decorator.js.map +1 -0
- package/dist/decorators/validation.decorator.d.ts +4 -0
- package/dist/decorators/validation.decorator.d.ts.map +1 -0
- package/dist/decorators/validation.decorator.js +121 -0
- package/dist/decorators/validation.decorator.js.map +1 -0
- package/dist/decorators/version/index.d.ts +7 -0
- package/dist/decorators/version/index.d.ts.map +1 -0
- package/dist/decorators/version/index.js +25 -0
- package/dist/decorators/version/index.js.map +1 -0
- package/dist/decorators/version/version.decorator.d.ts +96 -0
- package/dist/decorators/version/version.decorator.d.ts.map +1 -0
- package/dist/decorators/version/version.decorator.js +146 -0
- package/dist/decorators/version/version.decorator.js.map +1 -0
- package/dist/decorators/version/version.interceptor.d.ts +19 -0
- package/dist/decorators/version/version.interceptor.d.ts.map +1 -0
- package/dist/decorators/version/version.interceptor.js +86 -0
- package/dist/decorators/version/version.interceptor.js.map +1 -0
- package/dist/decorators/version/version.module.d.ts +8 -0
- package/dist/decorators/version/version.module.d.ts.map +1 -0
- package/dist/decorators/version/version.module.js +33 -0
- package/dist/decorators/version/version.module.js.map +1 -0
- package/dist/encryption.service.d.ts +15 -0
- package/dist/encryption.service.d.ts.map +1 -0
- package/dist/encryption.service.js +35 -0
- package/dist/encryption.service.js.map +1 -0
- package/dist/enums/action.enum.d.ts +8 -0
- package/dist/enums/action.enum.d.ts.map +1 -0
- package/dist/enums/action.enum.js +12 -0
- package/dist/enums/action.enum.js.map +1 -0
- package/dist/enums/error-codes.d.ts +33 -0
- package/dist/enums/error-codes.d.ts.map +1 -0
- package/dist/enums/error-codes.js +52 -0
- package/dist/enums/error-codes.js.map +1 -0
- package/dist/enums/role.enum.d.ts +5 -0
- package/dist/enums/role.enum.d.ts.map +1 -0
- package/dist/enums/role.enum.js +9 -0
- package/dist/enums/role.enum.js.map +1 -0
- package/dist/filter/exception/api.exception.d.ts +77 -0
- package/dist/filter/exception/api.exception.d.ts.map +1 -0
- package/dist/filter/exception/api.exception.js +151 -0
- package/dist/filter/exception/api.exception.js.map +1 -0
- package/dist/filter/exception/exception.d.ts +8 -0
- package/dist/filter/exception/exception.d.ts.map +1 -0
- package/dist/filter/exception/exception.js +50 -0
- package/dist/filter/exception/exception.js.map +1 -0
- package/dist/filter/exception/http.exception.d.ts +11 -0
- package/dist/filter/exception/http.exception.d.ts.map +1 -0
- package/dist/filter/exception/http.exception.js +152 -0
- package/dist/filter/exception/http.exception.js.map +1 -0
- package/dist/guards/api-key.guard.d.ts +42 -0
- package/dist/guards/api-key.guard.d.ts.map +1 -0
- package/dist/guards/api-key.guard.js +159 -0
- package/dist/guards/api-key.guard.js.map +1 -0
- package/dist/guards/auth.guard.d.ts +39 -0
- package/dist/guards/auth.guard.d.ts.map +1 -0
- package/dist/guards/auth.guard.js +178 -0
- package/dist/guards/auth.guard.js.map +1 -0
- package/dist/guards/data-visibility.guard.d.ts +18 -0
- package/dist/guards/data-visibility.guard.d.ts.map +1 -0
- package/dist/guards/data-visibility.guard.js +84 -0
- package/dist/guards/data-visibility.guard.js.map +1 -0
- package/dist/guards/index.d.ts +7 -0
- package/dist/guards/index.d.ts.map +1 -0
- package/dist/guards/index.js +23 -0
- package/dist/guards/index.js.map +1 -0
- package/dist/guards/permission.guard.d.ts +20 -0
- package/dist/guards/permission.guard.d.ts.map +1 -0
- package/dist/guards/permission.guard.js +141 -0
- package/dist/guards/permission.guard.js.map +1 -0
- package/dist/guards/tenant-context.guard.d.ts +12 -0
- package/dist/guards/tenant-context.guard.d.ts.map +1 -0
- package/dist/guards/tenant-context.guard.js +94 -0
- package/dist/guards/tenant-context.guard.js.map +1 -0
- package/dist/guards/version.guard.d.ts +100 -0
- package/dist/guards/version.guard.d.ts.map +1 -0
- package/dist/guards/version.guard.js +233 -0
- package/dist/guards/version.guard.js.map +1 -0
- package/dist/index.d.ts +60 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptor/audit/audit-log.interceptor.d.ts +16 -0
- package/dist/interceptor/audit/audit-log.interceptor.d.ts.map +1 -0
- package/dist/interceptor/audit/audit-log.interceptor.js +156 -0
- package/dist/interceptor/audit/audit-log.interceptor.js.map +1 -0
- package/dist/interceptor/audit/index.d.ts +2 -0
- package/dist/interceptor/audit/index.d.ts.map +1 -0
- package/dist/interceptor/audit/index.js +18 -0
- package/dist/interceptor/audit/index.js.map +1 -0
- package/dist/interceptor/mask/index.d.ts +2 -0
- package/dist/interceptor/mask/index.d.ts.map +1 -0
- package/dist/interceptor/mask/index.js +18 -0
- package/dist/interceptor/mask/index.js.map +1 -0
- package/dist/interceptor/mask/mask.interceptor.d.ts +79 -0
- package/dist/interceptor/mask/mask.interceptor.d.ts.map +1 -0
- package/dist/interceptor/mask/mask.interceptor.js +197 -0
- package/dist/interceptor/mask/mask.interceptor.js.map +1 -0
- package/dist/interceptor/rate-limit/no-rate-limit.interceptor.d.ts +6 -0
- package/dist/interceptor/rate-limit/no-rate-limit.interceptor.d.ts.map +1 -0
- package/dist/interceptor/rate-limit/no-rate-limit.interceptor.js +20 -0
- package/dist/interceptor/rate-limit/no-rate-limit.interceptor.js.map +1 -0
- package/dist/interceptor/rate-limit/rate-limit.interceptor.d.ts +45 -0
- package/dist/interceptor/rate-limit/rate-limit.interceptor.d.ts.map +1 -0
- package/dist/interceptor/rate-limit/rate-limit.interceptor.js +193 -0
- package/dist/interceptor/rate-limit/rate-limit.interceptor.js.map +1 -0
- package/dist/interceptor/transform/transform.interceptor.d.ts +37 -0
- package/dist/interceptor/transform/transform.interceptor.d.ts.map +1 -0
- package/dist/interceptor/transform/transform.interceptor.js +72 -0
- package/dist/interceptor/transform/transform.interceptor.js.map +1 -0
- package/dist/interceptor/transform/transform.interceptor.spec.d.ts +2 -0
- package/dist/interceptor/transform/transform.interceptor.spec.d.ts.map +1 -0
- package/dist/interceptor/transform/transform.interceptor.spec.js +9 -0
- package/dist/interceptor/transform/transform.interceptor.spec.js.map +1 -0
- package/dist/interceptor/version/index.d.ts +2 -0
- package/dist/interceptor/version/index.d.ts.map +1 -0
- package/dist/interceptor/version/index.js +18 -0
- package/dist/interceptor/version/index.js.map +1 -0
- package/dist/interceptor/version/version-header.interceptor.d.ts +31 -0
- package/dist/interceptor/version/version-header.interceptor.d.ts.map +1 -0
- package/dist/interceptor/version/version-header.interceptor.js +62 -0
- package/dist/interceptor/version/version-header.interceptor.js.map +1 -0
- package/dist/middleware/request.middleware.d.ts +27 -0
- package/dist/middleware/request.middleware.d.ts.map +1 -0
- package/dist/middleware/request.middleware.js +141 -0
- package/dist/middleware/request.middleware.js.map +1 -0
- package/dist/middleware/tenant-isolation.middleware.d.ts +12 -0
- package/dist/middleware/tenant-isolation.middleware.d.ts.map +1 -0
- package/dist/middleware/tenant-isolation.middleware.js +51 -0
- package/dist/middleware/tenant-isolation.middleware.js.map +1 -0
- package/dist/pipes/transform-root.pipe.d.ts +5 -0
- package/dist/pipes/transform-root.pipe.d.ts.map +1 -0
- package/dist/pipes/transform-root.pipe.js +24 -0
- package/dist/pipes/transform-root.pipe.js.map +1 -0
- package/dist/ts-rest/index.d.ts +36 -0
- package/dist/ts-rest/index.d.ts.map +1 -0
- package/dist/ts-rest/index.js +65 -0
- package/dist/ts-rest/index.js.map +1 -0
- package/dist/ts-rest/response.helper.d.ts +261 -0
- package/dist/ts-rest/response.helper.d.ts.map +1 -0
- package/dist/ts-rest/response.helper.js +372 -0
- package/dist/ts-rest/response.helper.js.map +1 -0
- package/dist/utils/audit-log-helper.util.d.ts +41 -0
- package/dist/utils/audit-log-helper.util.d.ts.map +1 -0
- package/dist/utils/audit-log-helper.util.js +115 -0
- package/dist/utils/audit-log-helper.util.js.map +1 -0
- package/dist/utils/audit-signature.util.d.ts +64 -0
- package/dist/utils/audit-signature.util.d.ts.map +1 -0
- package/dist/utils/audit-signature.util.js +155 -0
- package/dist/utils/audit-signature.util.js.map +1 -0
- package/dist/utils/prisma-error.util.d.ts +160 -0
- package/dist/utils/prisma-error.util.d.ts.map +1 -0
- package/dist/utils/prisma-error.util.js +342 -0
- package/dist/utils/prisma-error.util.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Role = void 0;
|
|
4
|
+
var Role;
|
|
5
|
+
(function (Role) {
|
|
6
|
+
Role["User"] = "user";
|
|
7
|
+
Role["Admin"] = "admin";
|
|
8
|
+
})(Role || (exports.Role = Role = {}));
|
|
9
|
+
//# sourceMappingURL=role.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.enum.js","sourceRoot":"","sources":["../../src/enums/role.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,IAGX;AAHD,WAAY,IAAI;IACd,qBAAa,CAAA;IACb,uBAAe,CAAA;AACjB,CAAC,EAHW,IAAI,oBAAJ,IAAI,QAGf"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ApiException - Enhanced exception using @repo/contracts
|
|
3
|
+
* 增强版 ApiException,使用 @repo/contracts 中的错误定义
|
|
4
|
+
*/
|
|
5
|
+
import { HttpException } from '@nestjs/common';
|
|
6
|
+
import { ApiErrorCode } from '@dofe/infra-contracts';
|
|
7
|
+
export declare class ApiException extends HttpException {
|
|
8
|
+
readonly errorCode: ApiErrorCode;
|
|
9
|
+
readonly errorType: string;
|
|
10
|
+
readonly errorData: unknown;
|
|
11
|
+
readonly domain: string;
|
|
12
|
+
/**
|
|
13
|
+
* Create exception from error type string (backward compatible)
|
|
14
|
+
* 从错误类型字符串创建异常(向后兼容)
|
|
15
|
+
*/
|
|
16
|
+
constructor(errorType: string, data?: unknown);
|
|
17
|
+
/**
|
|
18
|
+
* Create exception from error code (recommended)
|
|
19
|
+
* 从错误码创建异常(推荐方式)
|
|
20
|
+
*/
|
|
21
|
+
static fromCode(errorCode: ApiErrorCode, data?: unknown): ApiException;
|
|
22
|
+
/**
|
|
23
|
+
* Get error code
|
|
24
|
+
*/
|
|
25
|
+
getErrorCode(): ApiErrorCode;
|
|
26
|
+
/**
|
|
27
|
+
* Get error message without i18n (fallback)
|
|
28
|
+
*/
|
|
29
|
+
getErrorMessageWithoutI18n(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Get localized error message using i18n
|
|
32
|
+
* 使用 i18n 获取本地化错误消息
|
|
33
|
+
*
|
|
34
|
+
* Uses namespace: errors.{domain}.{errorType}
|
|
35
|
+
*/
|
|
36
|
+
getErrorMessage(i18n: any): string;
|
|
37
|
+
/**
|
|
38
|
+
* Get error data
|
|
39
|
+
*/
|
|
40
|
+
getErrorData(): unknown;
|
|
41
|
+
/**
|
|
42
|
+
* Get error type
|
|
43
|
+
*/
|
|
44
|
+
getErrorType(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Convert to JSON response format
|
|
47
|
+
* 转换为 JSON 响应格式
|
|
48
|
+
*
|
|
49
|
+
* Note: `code` is numeric for backward compatibility
|
|
50
|
+
* `error.errorCode` is string for type safety
|
|
51
|
+
*/
|
|
52
|
+
toJSON(): {
|
|
53
|
+
code: number;
|
|
54
|
+
msg: string;
|
|
55
|
+
data: null;
|
|
56
|
+
error: {
|
|
57
|
+
errorCode: string;
|
|
58
|
+
errorType: string;
|
|
59
|
+
errorData: unknown;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Helper function to throw ApiException from error code
|
|
65
|
+
* 从错误码抛出 ApiException 的辅助函数
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* throw apiError(UserErrorCode.UserNotFound);
|
|
69
|
+
* throw apiError(UserErrorCode.InvalidPassword, { attempts: 3 });
|
|
70
|
+
*/
|
|
71
|
+
export declare function apiError(errorCode: ApiErrorCode, data?: unknown): ApiException;
|
|
72
|
+
/**
|
|
73
|
+
* 获取适合写入日志的短错误信息(单行,避免堆栈刷屏)
|
|
74
|
+
* ApiException 的 message 为空,需用 errorCode/errorType 或 getErrorMessageWithoutI18n()
|
|
75
|
+
*/
|
|
76
|
+
export declare function getLoggableErrorMessage(error: unknown): string;
|
|
77
|
+
//# sourceMappingURL=api.exception.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.exception.d.ts","sourceRoot":"","sources":["../../../src/filter/exception/api.exception.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,YAAY,EAKb,MAAM,uBAAuB,CAAC;AAmB/B,qBAAa,YAAa,SAAQ,aAAa;IAC7C,SAAgB,SAAS,EAAE,YAAY,CAAC;IACxC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;;OAGG;gBACS,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,OAAc;IAsBnD;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,GAAE,OAAc,GAAG,YAAY;IAQ5E;;OAEG;IACH,YAAY,IAAI,YAAY;IAI5B;;OAEG;IACH,0BAA0B,IAAI,MAAM;IAIpC;;;;;OAKG;IAEH,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAalC;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;;;;;OAMG;IACH,MAAM,IAAI;QACR,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,IAAI,CAAC;QACX,KAAK,EAAE;YACL,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,OAAO,CAAC;SACpB,CAAC;KACH;CAYF;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,SAAS,EAAE,YAAY,EACvB,IAAI,GAAE,OAAc,GACnB,YAAY,CAEd;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAa9D"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ApiException - Enhanced exception using @repo/contracts
|
|
4
|
+
* 增强版 ApiException,使用 @repo/contracts 中的错误定义
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ApiException = void 0;
|
|
8
|
+
exports.apiError = apiError;
|
|
9
|
+
exports.getLoggableErrorMessage = getLoggableErrorMessage;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const infra_contracts_1 = require("@dofe/infra-contracts");
|
|
12
|
+
// Domain mapping for i18n namespace
|
|
13
|
+
const ERROR_DOMAIN_MAP = {
|
|
14
|
+
// User errors (2xx)
|
|
15
|
+
'20': 'user',
|
|
16
|
+
'21': 'user',
|
|
17
|
+
// Common errors (9xx)
|
|
18
|
+
'90': 'common',
|
|
19
|
+
'91': 'common',
|
|
20
|
+
'92': 'common',
|
|
21
|
+
'99': 'common',
|
|
22
|
+
};
|
|
23
|
+
function getDomainFromCode(errorCode) {
|
|
24
|
+
const prefix = errorCode.slice(0, 2);
|
|
25
|
+
return ERROR_DOMAIN_MAP[prefix] || 'common';
|
|
26
|
+
}
|
|
27
|
+
class ApiException extends common_1.HttpException {
|
|
28
|
+
errorCode;
|
|
29
|
+
errorType;
|
|
30
|
+
errorData;
|
|
31
|
+
domain;
|
|
32
|
+
/**
|
|
33
|
+
* Create exception from error type string (backward compatible)
|
|
34
|
+
* 从错误类型字符串创建异常(向后兼容)
|
|
35
|
+
*/
|
|
36
|
+
constructor(errorType, data = null) {
|
|
37
|
+
// Find error code from type
|
|
38
|
+
const entry = Object.entries(infra_contracts_1.AllErrorTypes).find(([, type]) => type === errorType);
|
|
39
|
+
if (!entry) {
|
|
40
|
+
throw new Error(`Unknown error type: ${errorType}`);
|
|
41
|
+
}
|
|
42
|
+
const errorCode = entry[0];
|
|
43
|
+
const httpStatus = (0, infra_contracts_1.getHttpStatus)(errorCode);
|
|
44
|
+
super('', httpStatus);
|
|
45
|
+
this.errorCode = errorCode;
|
|
46
|
+
this.errorType = errorType;
|
|
47
|
+
this.errorData = data;
|
|
48
|
+
this.domain = getDomainFromCode(errorCode);
|
|
49
|
+
this.name = 'ApiException';
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create exception from error code (recommended)
|
|
53
|
+
* 从错误码创建异常(推荐方式)
|
|
54
|
+
*/
|
|
55
|
+
static fromCode(errorCode, data = null) {
|
|
56
|
+
const errorType = (0, infra_contracts_1.getErrorType)(errorCode);
|
|
57
|
+
if (!errorType) {
|
|
58
|
+
throw new Error(`Unknown error code: ${errorCode}`);
|
|
59
|
+
}
|
|
60
|
+
return new ApiException(errorType, data);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get error code
|
|
64
|
+
*/
|
|
65
|
+
getErrorCode() {
|
|
66
|
+
return this.errorCode;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get error message without i18n (fallback)
|
|
70
|
+
*/
|
|
71
|
+
getErrorMessageWithoutI18n() {
|
|
72
|
+
return (0, infra_contracts_1.getErrorMessage)(this.errorType);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get localized error message using i18n
|
|
76
|
+
* 使用 i18n 获取本地化错误消息
|
|
77
|
+
*
|
|
78
|
+
* Uses namespace: errors.{domain}.{errorType}
|
|
79
|
+
*/
|
|
80
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
81
|
+
getErrorMessage(i18n) {
|
|
82
|
+
// Use errors.{domain}.{errorType} namespace
|
|
83
|
+
const key = `errors.${this.domain}.${this.errorType}`;
|
|
84
|
+
const message = i18n.t(key, { lang: i18n.lang });
|
|
85
|
+
if (message && message !== key) {
|
|
86
|
+
return message;
|
|
87
|
+
}
|
|
88
|
+
// Fallback to error type
|
|
89
|
+
return this.getErrorMessageWithoutI18n() || this.errorType || '';
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get error data
|
|
93
|
+
*/
|
|
94
|
+
getErrorData() {
|
|
95
|
+
return this.errorData;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get error type
|
|
99
|
+
*/
|
|
100
|
+
getErrorType() {
|
|
101
|
+
return this.errorType;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Convert to JSON response format
|
|
105
|
+
* 转换为 JSON 响应格式
|
|
106
|
+
*
|
|
107
|
+
* Note: `code` is numeric for backward compatibility
|
|
108
|
+
* `error.errorCode` is string for type safety
|
|
109
|
+
*/
|
|
110
|
+
toJSON() {
|
|
111
|
+
return {
|
|
112
|
+
code: Number(this.errorCode),
|
|
113
|
+
msg: this.errorType,
|
|
114
|
+
data: null,
|
|
115
|
+
error: {
|
|
116
|
+
errorCode: this.errorCode,
|
|
117
|
+
errorType: this.errorType,
|
|
118
|
+
errorData: this.errorData,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.ApiException = ApiException;
|
|
124
|
+
/**
|
|
125
|
+
* Helper function to throw ApiException from error code
|
|
126
|
+
* 从错误码抛出 ApiException 的辅助函数
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* throw apiError(UserErrorCode.UserNotFound);
|
|
130
|
+
* throw apiError(UserErrorCode.InvalidPassword, { attempts: 3 });
|
|
131
|
+
*/
|
|
132
|
+
function apiError(errorCode, data = null) {
|
|
133
|
+
return ApiException.fromCode(errorCode, data);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* 获取适合写入日志的短错误信息(单行,避免堆栈刷屏)
|
|
137
|
+
* ApiException 的 message 为空,需用 errorCode/errorType 或 getErrorMessageWithoutI18n()
|
|
138
|
+
*/
|
|
139
|
+
function getLoggableErrorMessage(error) {
|
|
140
|
+
if (error instanceof ApiException) {
|
|
141
|
+
const msg = error.getErrorMessageWithoutI18n();
|
|
142
|
+
return msg
|
|
143
|
+
? `${error.errorCode}: ${msg}`
|
|
144
|
+
: `${error.errorCode}: ${error.errorType}`;
|
|
145
|
+
}
|
|
146
|
+
if (error instanceof Error) {
|
|
147
|
+
return (error.message || error.stack?.split('\n')[0]?.trim() || 'Unknown error');
|
|
148
|
+
}
|
|
149
|
+
return String(error ?? 'Unknown error');
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=api.exception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.exception.js","sourceRoot":"","sources":["../../../src/filter/exception/api.exception.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ArgumentsHost, ExceptionFilter } from '@nestjs/common';
|
|
2
|
+
import { Logger } from 'winston';
|
|
3
|
+
export declare class ExceptionsFilter implements ExceptionFilter {
|
|
4
|
+
private readonly logger;
|
|
5
|
+
constructor(logger: Logger);
|
|
6
|
+
catch(exception: any, host: ArgumentsHost): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=exception.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exception.d.ts","sourceRoot":"","sources":["../../../src/filter/exception/exception.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,eAAe,EAIhB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,qBACa,gBAAiB,YAAW,eAAe;IAEnB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAGlE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa;CA2B1C"}
|
|
@@ -0,0 +1,50 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ExceptionsFilter = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const nest_winston_1 = require("nest-winston");
|
|
18
|
+
const winston_1 = require("winston");
|
|
19
|
+
const infra_utils_1 = require("@dofe/infra-utils");
|
|
20
|
+
let ExceptionsFilter = class ExceptionsFilter {
|
|
21
|
+
logger;
|
|
22
|
+
constructor(logger) {
|
|
23
|
+
this.logger = logger;
|
|
24
|
+
}
|
|
25
|
+
catch(exception, host) {
|
|
26
|
+
const ctx = host.switchToHttp();
|
|
27
|
+
const response = ctx.getResponse();
|
|
28
|
+
const request = ctx.getRequest();
|
|
29
|
+
const status = exception instanceof common_1.HttpException
|
|
30
|
+
? exception.getStatus()
|
|
31
|
+
: common_1.HttpStatus.INTERNAL_SERVER_ERROR;
|
|
32
|
+
let msg = exception.message || (status >= 500 ? 'Service Error' : 'Client Error');
|
|
33
|
+
if (Object.prototype.toString.call(response) === '[object Object]' &&
|
|
34
|
+
response.message) {
|
|
35
|
+
msg = response.message;
|
|
36
|
+
}
|
|
37
|
+
this.logger.error(msg, (0, infra_utils_1.getReqMainInfo)(request, { ...response, statusCode: status }));
|
|
38
|
+
response.status(status).json({
|
|
39
|
+
code: status,
|
|
40
|
+
msg: `Service Error: ${exception}`,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
exports.ExceptionsFilter = ExceptionsFilter;
|
|
45
|
+
exports.ExceptionsFilter = ExceptionsFilter = __decorate([
|
|
46
|
+
(0, common_1.Catch)(),
|
|
47
|
+
__param(0, (0, common_1.Inject)(nest_winston_1.WINSTON_MODULE_PROVIDER)),
|
|
48
|
+
__metadata("design:paramtypes", [winston_1.Logger])
|
|
49
|
+
], ExceptionsFilter);
|
|
50
|
+
//# sourceMappingURL=exception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exception.js","sourceRoot":"","sources":["../../../src/filter/exception/exception.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAOwB;AAExB,+CAAuD;AACvD,qCAAiC;AACjC,mDAAmD;AAG5C,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAEyB;IADpD,YACoD,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAC/D,CAAC;IAEJ,KAAK,CAAC,SAAc,EAAE,IAAmB;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAEjC,MAAM,MAAM,GACV,SAAS,YAAY,sBAAa;YAChC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE;YACvB,CAAC,CAAC,mBAAU,CAAC,qBAAqB,CAAC;QACvC,IAAI,GAAG,GACL,SAAS,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAC1E,IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,iBAAiB;YAC9D,QAAQ,CAAC,OAAO,EAChB,CAAC;YACD,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,GAAG,EACH,IAAA,4BAAc,EAAC,OAAO,EAAE,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAC7D,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC3B,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,kBAAkB,SAAS,EAAE;SACnC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAhCY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,cAAK,GAAE;IAGH,WAAA,IAAA,eAAM,EAAC,sCAAuB,CAAC,CAAA;qCAA0B,gBAAM;GAFvD,gBAAgB,CAgC5B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ExceptionFilter, ArgumentsHost, HttpException } from '@nestjs/common';
|
|
2
|
+
import { ApiException } from '@/filter/exception/api.exception';
|
|
3
|
+
import { Logger } from 'winston';
|
|
4
|
+
export declare class HttpExceptionFilter implements ExceptionFilter {
|
|
5
|
+
private readonly logger;
|
|
6
|
+
constructor(logger: Logger);
|
|
7
|
+
catch(exception: HttpException | ApiException, host: ArgumentsHost): void;
|
|
8
|
+
private getChannelFromHost;
|
|
9
|
+
private buildResponseBody;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=http.exception.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.exception.d.ts","sourceRoot":"","sources":["../../../src/filter/exception/http.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,aAAa,EACb,aAAa,EAGd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKjC,qBACa,mBAAoB,YAAW,eAAe;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAGlE,KAAK,CAAC,SAAS,EAAE,aAAa,GAAG,YAAY,EAAE,IAAI,EAAE,aAAa;IA8ElE,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,iBAAiB;CAuD1B"}
|
|
@@ -0,0 +1,152 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.HttpExceptionFilter = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const nestjs_i18n_1 = require("nestjs-i18n");
|
|
18
|
+
const api_exception_1 = require("@/filter/exception/api.exception");
|
|
19
|
+
const nest_winston_1 = require("nest-winston");
|
|
20
|
+
const winston_1 = require("winston");
|
|
21
|
+
// import { errorFromType } from '@/ts-rest/response.helper';
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
23
|
+
// errorFromType is re-exported but not used in this file
|
|
24
|
+
let HttpExceptionFilter = class HttpExceptionFilter {
|
|
25
|
+
logger;
|
|
26
|
+
constructor(logger) {
|
|
27
|
+
this.logger = logger;
|
|
28
|
+
}
|
|
29
|
+
catch(exception, host) {
|
|
30
|
+
// console.log('TECHWU HttpExceptionFilter', exception);
|
|
31
|
+
const { channel, message } = this.getChannelFromHost(host);
|
|
32
|
+
// console.log('TECHWU exception', exception);
|
|
33
|
+
if (channel) {
|
|
34
|
+
this.logger.error(exception.message, exception.stack);
|
|
35
|
+
channel.nack(message, false, false);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const i18n = nestjs_i18n_1.I18nContext.current(host);
|
|
39
|
+
const ctx = host.switchToHttp();
|
|
40
|
+
const response = ctx.getResponse();
|
|
41
|
+
const request = ctx.getRequest();
|
|
42
|
+
const status = exception.getStatus();
|
|
43
|
+
// 特殊处理参数校验失败
|
|
44
|
+
let validationErrors = null;
|
|
45
|
+
if (exception instanceof common_1.BadRequestException) {
|
|
46
|
+
const exceptionResponse = exception.getResponse();
|
|
47
|
+
// 处理 ts-rest 校验错误(TsRestRequestValidationError / RequestValidationError)
|
|
48
|
+
// exceptionResponse 格式: { paramsResult, headersResult, queryResult, bodyResult }
|
|
49
|
+
if (exceptionResponse &&
|
|
50
|
+
typeof exceptionResponse === 'object' &&
|
|
51
|
+
!Array.isArray(exceptionResponse)) {
|
|
52
|
+
const tsRestErrors = [];
|
|
53
|
+
const parts = [
|
|
54
|
+
['params', exceptionResponse.paramsResult],
|
|
55
|
+
['headers', exceptionResponse.headersResult],
|
|
56
|
+
['query', exceptionResponse.queryResult],
|
|
57
|
+
['body', exceptionResponse.bodyResult],
|
|
58
|
+
];
|
|
59
|
+
for (const [location, zodError] of parts) {
|
|
60
|
+
if (zodError && zodError.issues && Array.isArray(zodError.issues)) {
|
|
61
|
+
for (const issue of zodError.issues) {
|
|
62
|
+
const path = issue.path && issue.path.length > 0
|
|
63
|
+
? issue.path.join('.')
|
|
64
|
+
: '';
|
|
65
|
+
const fieldDesc = path ? `${location}.${path}` : location;
|
|
66
|
+
tsRestErrors.push(`[${fieldDesc}] ${issue.message}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (tsRestErrors.length > 0) {
|
|
71
|
+
validationErrors = tsRestErrors;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// 处理标准 NestJS 参数校验失败(class-validator)
|
|
75
|
+
if (!validationErrors &&
|
|
76
|
+
exceptionResponse &&
|
|
77
|
+
exceptionResponse.message) {
|
|
78
|
+
if (Array.isArray(exceptionResponse.message)) {
|
|
79
|
+
validationErrors = exceptionResponse.message;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
validationErrors = [exceptionResponse.message];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const responseBody = this.buildResponseBody(exception, request, status, i18n, validationErrors);
|
|
87
|
+
const { timestamp, path, ...responseRet } = responseBody;
|
|
88
|
+
// console.log('TECHWU , responseBody', responseBody)
|
|
89
|
+
response.status(status).send(responseRet);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
getChannelFromHost(host) {
|
|
93
|
+
try {
|
|
94
|
+
const ctx = host.switchToRpc();
|
|
95
|
+
const context = ctx.getContext();
|
|
96
|
+
const channel = context.getChannelRef ? context.getChannelRef() : null;
|
|
97
|
+
const message = context.getMessage ? context.getMessage() : null;
|
|
98
|
+
return { channel, message };
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error('获取通道或消息时发生错误', error);
|
|
102
|
+
return { channel: null, message: null };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
buildResponseBody(exception, request, status, i18n, validationErrors) {
|
|
106
|
+
const isApiException = exception instanceof api_exception_1.ApiException;
|
|
107
|
+
const timestamp = new Date().toLocaleString('zh-CN', {
|
|
108
|
+
timeZone: 'Asia/Shanghai',
|
|
109
|
+
});
|
|
110
|
+
const path = request.url;
|
|
111
|
+
// Get traceId for error tracking
|
|
112
|
+
const traceId = request.traceId;
|
|
113
|
+
// Get error code
|
|
114
|
+
const code = isApiException ? exception.getErrorCode() : status;
|
|
115
|
+
// Get error message
|
|
116
|
+
const message = isApiException
|
|
117
|
+
? exception.getErrorMessage(i18n)
|
|
118
|
+
: exception.message || exception.getResponse();
|
|
119
|
+
// Get error data
|
|
120
|
+
const data = isApiException ? exception.getErrorData() : undefined;
|
|
121
|
+
const responseBody = {
|
|
122
|
+
code,
|
|
123
|
+
msg: message, // 使用 msg 与成功响应保持一致
|
|
124
|
+
traceId, // 添加 traceId 便于问题追踪
|
|
125
|
+
timestamp,
|
|
126
|
+
path,
|
|
127
|
+
};
|
|
128
|
+
// Add enhanced error details for ApiException
|
|
129
|
+
if (isApiException) {
|
|
130
|
+
responseBody.error = data;
|
|
131
|
+
}
|
|
132
|
+
// 如果是参数校验失败,添加详细的错误信息
|
|
133
|
+
if (validationErrors && validationErrors.length > 0) {
|
|
134
|
+
if (!responseBody.error ||
|
|
135
|
+
typeof responseBody.error !== 'object' ||
|
|
136
|
+
Array.isArray(responseBody.error)) {
|
|
137
|
+
responseBody.error = {
|
|
138
|
+
originalError: responseBody.error,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
responseBody.error.errorData = validationErrors;
|
|
142
|
+
}
|
|
143
|
+
return responseBody;
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
exports.HttpExceptionFilter = HttpExceptionFilter;
|
|
147
|
+
exports.HttpExceptionFilter = HttpExceptionFilter = __decorate([
|
|
148
|
+
(0, common_1.Catch)(common_1.HttpException, api_exception_1.ApiException),
|
|
149
|
+
__param(0, (0, common_1.Inject)(nest_winston_1.WINSTON_MODULE_PROVIDER)),
|
|
150
|
+
__metadata("design:paramtypes", [winston_1.Logger])
|
|
151
|
+
], HttpExceptionFilter);
|
|
152
|
+
//# sourceMappingURL=http.exception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.exception.js","sourceRoot":"","sources":["../../../src/filter/exception/http.exception.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CanActivate, ExecutionContext } from '@nestjs/common';
|
|
2
|
+
import { Reflector } from '@nestjs/core';
|
|
3
|
+
import { Logger } from 'winston';
|
|
4
|
+
/**
|
|
5
|
+
* API Key 守卫
|
|
6
|
+
* 允许使用有效的 API Key 跳过部分验证(如用户认证、租户验证等)
|
|
7
|
+
*
|
|
8
|
+
* 安全特性:
|
|
9
|
+
* 1. API Key 必须预定义在环境变量中
|
|
10
|
+
* 2. 记录所有 API Key 调用日志
|
|
11
|
+
* 3. 支持可选的租户强制验证
|
|
12
|
+
*/
|
|
13
|
+
export declare class ApiKeyGuard implements CanActivate {
|
|
14
|
+
private readonly reflector;
|
|
15
|
+
private readonly logger;
|
|
16
|
+
private readonly validApiKeys;
|
|
17
|
+
private readonly enabled;
|
|
18
|
+
constructor(reflector: Reflector, logger: Logger);
|
|
19
|
+
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
20
|
+
/**
|
|
21
|
+
* 从请求中提取 API Key
|
|
22
|
+
* 支持从 header 或 query 参数获取
|
|
23
|
+
*/
|
|
24
|
+
private extractApiKey;
|
|
25
|
+
/**
|
|
26
|
+
* 验证 API Key
|
|
27
|
+
*/
|
|
28
|
+
private validateApiKey;
|
|
29
|
+
/**
|
|
30
|
+
* 设置内部服务上下文
|
|
31
|
+
*/
|
|
32
|
+
private setInternalServiceContext;
|
|
33
|
+
/**
|
|
34
|
+
* 遮蔽 API Key 用于日志记录
|
|
35
|
+
*/
|
|
36
|
+
private maskApiKey;
|
|
37
|
+
/**
|
|
38
|
+
* 获取 API Key 标识符(用于区分不同的 Key)
|
|
39
|
+
*/
|
|
40
|
+
private getKeyId;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=api-key.guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key.guard.d.ts","sourceRoot":"","sources":["../../src/guards/api-key.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,gBAAgB,EAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAOjC;;;;;;;;GAQG;AACH,qBACa,WAAY,YAAW,WAAW;IAK3C,OAAO,CAAC,QAAQ,CAAC,SAAS;IACO,OAAO,CAAC,QAAQ,CAAC,MAAM;IAL1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAGf,SAAS,EAAE,SAAS,EACa,MAAM,EAAE,MAAM;IAmB5D,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyC9D;;;OAGG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA4BjC;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAGjB"}
|