@zudojs/errors 0.1.0 → 1.0.0
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 +21 -0
- package/README.md +29 -8
- package/dist/base/core/baseError.core.d.ts +25 -2
- package/dist/base/core/baseError.core.js +95 -23
- package/dist/base/core/errorMetadata.core.d.ts +62 -5
- package/dist/base/core/errorMetadata.core.js +280 -23
- package/dist/base/types/errorCategory.helpers.js +3 -2
- package/dist/base/types/errorCode.type.d.ts +70 -1
- package/dist/base/types/errorCode.type.js +78 -2
- package/dist/base/types/errorSeverity.type.js +3 -2
- package/dist/base/utils/baseError.utils.d.ts +18 -2
- package/dist/base/utils/baseError.utils.js +68 -17
- package/dist/domain/access/rateLimit.error.d.ts +6 -1
- package/dist/domain/access/rateLimit.error.js +7 -9
- package/dist/domain/api/apiError.base.d.ts +3 -0
- package/dist/domain/api/apiError.base.js +5 -2
- package/dist/domain/api/apiError.lifecycle.d.ts +15 -1
- package/dist/domain/api/apiError.lifecycle.js +27 -7
- package/dist/domain/api/apiError.routing.d.ts +11 -3
- package/dist/domain/api/apiError.routing.js +12 -7
- package/dist/domain/app/domain.error.d.ts +2 -0
- package/dist/domain/app/domain.error.js +3 -1
- package/dist/domain/app/lifecycleError.types.js +2 -8
- package/dist/domain/app/moduleError.types.d.ts +3 -0
- package/dist/domain/app/moduleError.types.js +6 -2
- package/dist/domain/body/bodyParser.error.d.ts +9 -2
- package/dist/domain/body/bodyParser.error.js +20 -12
- package/dist/domain/body/httpBodyError.base.js +1 -2
- package/dist/domain/body/httpBodyError.types.js +1 -3
- package/dist/domain/body/httpFormData.error.js +2 -4
- package/dist/domain/body/multipart.error.js +2 -4
- package/dist/domain/documentation/documentationError.base.js +4 -2
- package/dist/domain/documentation/documentationError.types.js +1 -11
- package/dist/domain/documentation/index.d.ts +1 -1
- package/dist/domain/documentation/index.js +1 -1
- package/dist/domain/event/event.error.d.ts +1 -1
- package/dist/domain/event/event.error.js +1 -1
- package/dist/domain/event/eventError.base.d.ts +4 -1
- package/dist/domain/event/eventError.base.js +7 -9
- package/dist/domain/event/eventError.handler.d.ts +12 -3
- package/dist/domain/event/eventError.handler.js +21 -11
- package/dist/domain/event/eventError.lifecycle.d.ts +20 -3
- package/dist/domain/event/eventError.lifecycle.js +48 -18
- package/dist/domain/event/eventError.serialization.d.ts +10 -2
- package/dist/domain/event/eventError.serialization.js +16 -4
- package/dist/domain/message/message.error.d.ts +1 -0
- package/dist/domain/message/message.error.js +1 -0
- package/dist/domain/message/messageError.base.d.ts +4 -1
- package/dist/domain/message/messageError.base.js +7 -9
- package/dist/domain/message/messageError.handler.d.ts +12 -3
- package/dist/domain/message/messageError.handler.js +22 -12
- package/dist/domain/message/messageError.lifecycle.d.ts +5 -1
- package/dist/domain/message/messageError.lifecycle.js +15 -8
- package/dist/domain/message/messageError.serialization.d.ts +26 -0
- package/dist/domain/message/messageError.serialization.js +35 -0
- package/dist/domain/plugin/pluginError.lifecycle.js +23 -21
- package/dist/domain/plugin/pluginError.runtime.d.ts +5 -1
- package/dist/domain/plugin/pluginError.runtime.js +12 -7
- package/dist/domain/queue/queueError.base.d.ts +19 -0
- package/dist/domain/queue/queueError.base.js +24 -4
- package/dist/domain/queue/queueError.job.js +2 -0
- package/dist/domain/queue/queueError.worker.d.ts +9 -3
- package/dist/domain/queue/queueError.worker.js +14 -6
- package/dist/domain/rpc/rpcError.base.js +0 -2
- package/dist/domain/rpc/rpcError.protocol.js +0 -7
- package/dist/domain/rpc/rpcError.transport.d.ts +10 -1
- package/dist/domain/rpc/rpcError.transport.js +19 -9
- package/dist/domain/scheduler/schedulerError.base.d.ts +17 -3
- package/dist/domain/scheduler/schedulerError.base.js +26 -15
- package/dist/domain/scheduler/schedulerError.execution.d.ts +7 -6
- package/dist/domain/scheduler/schedulerError.execution.js +22 -18
- package/dist/domain/scheduler/schedulerError.schedule.d.ts +15 -5
- package/dist/domain/scheduler/schedulerError.schedule.js +32 -14
- package/dist/domain/schema/index.d.ts +2 -1
- package/dist/domain/schema/index.js +1 -1
- package/dist/domain/schema/schemaError.base.d.ts +31 -5
- package/dist/domain/schema/schemaError.base.js +34 -6
- package/dist/domain/schema/schemaError.types.js +12 -5
- package/dist/domain/serialization/serializationError.base.d.ts +8 -2
- package/dist/domain/serialization/serializationError.base.js +38 -8
- package/dist/domain/serialization/serializationError.types.d.ts +22 -3
- package/dist/domain/serialization/serializationError.types.js +30 -5
- package/dist/domain/shared/domainError.helpers.d.ts +60 -0
- package/dist/domain/shared/domainError.helpers.js +191 -0
- package/dist/domain/state/conflict.error.d.ts +1 -1
- package/dist/domain/state/conflict.error.js +2 -2
- package/dist/domain/state/validationError.base.d.ts +8 -1
- package/dist/domain/state/validationError.base.js +11 -2
- package/dist/infrastructure/adapter/adapterError.base.js +6 -6
- package/dist/infrastructure/adapter/adapterError.lifecycle.js +0 -3
- package/dist/infrastructure/adapter/adapterError.operation.js +0 -5
- package/dist/infrastructure/cache/cacheError.base.js +1 -1
- package/dist/infrastructure/container/containerError.registration.js +6 -4
- package/dist/infrastructure/network/httpAdapter.error.js +4 -2
- package/dist/infrastructure/network/httpClientError.advanced.js +10 -18
- package/dist/infrastructure/network/httpClientError.base.d.ts +11 -0
- package/dist/infrastructure/network/httpClientError.base.js +47 -7
- package/dist/infrastructure/network/httpClientError.common.d.ts +14 -0
- package/dist/infrastructure/network/httpClientError.common.js +21 -31
- package/dist/infrastructure/network/httpClientError.specialized.js +5 -8
- package/dist/infrastructure/network/httpClientError.types.d.ts +23 -2
- package/dist/infrastructure/network/httpClientError.types.js +55 -42
- package/dist/infrastructure/network/httpResponse.error.js +0 -3
- package/dist/infrastructure/network/httpRouterError.base.js +0 -1
- package/dist/infrastructure/network/httpRouterError.types.d.ts +5 -3
- package/dist/infrastructure/network/httpRouterError.types.js +6 -7
- package/dist/infrastructure/network/httpServerError.error.js +6 -10
- package/dist/infrastructure/network/httpServerLifecycleError.base.js +0 -1
- package/dist/infrastructure/network/httpServerLifecycleError.types.js +0 -3
- package/dist/infrastructure/network/httpStream.error.js +0 -1
- package/dist/infrastructure/network/network.error.d.ts +1 -1
- package/dist/infrastructure/network/network.error.js +1 -1
- package/dist/infrastructure/network/networkError.factory.d.ts +9 -2
- package/dist/infrastructure/network/networkError.factory.js +9 -2
- package/dist/infrastructure/network/routePattern.error.d.ts +7 -6
- package/dist/infrastructure/network/routePattern.error.js +16 -8
- package/dist/infrastructure/network/timeoutError.base.d.ts +7 -0
- package/dist/infrastructure/network/timeoutError.base.js +12 -1
- package/dist/infrastructure/network/timeoutError.factory.d.ts +14 -0
- package/dist/infrastructure/network/timeoutError.factory.js +25 -17
- package/dist/infrastructure/service/externalService.error.d.ts +1 -1
- package/dist/infrastructure/service/externalService.error.js +1 -1
- package/dist/infrastructure/service/externalServiceError.base.d.ts +8 -0
- package/dist/infrastructure/service/externalServiceError.base.js +8 -11
- package/dist/infrastructure/service/externalServiceError.factory.d.ts +3 -1
- package/dist/infrastructure/service/externalServiceError.factory.js +3 -1
- package/dist/infrastructure/storage/databaseError.factory.js +1 -1
- package/dist/infrastructure/storage/storageError.factory.js +2 -2
- package/dist/system/cryptoError.factory.js +5 -2
- package/dist/system/runtimeError.base.js +1 -1
- package/dist/utils/errorHandler.core.d.ts +42 -8
- package/dist/utils/errorHandler.core.js +116 -63
- package/dist/utils/errorHandler.factory.d.ts +1 -1
- package/dist/utils/errorHandler.factory.js +2 -2
- package/dist/utils/errorHandler.types.d.ts +37 -1
- package/dist/utils/errorMapper.core.d.ts +1 -1
- package/dist/utils/errorMapper.core.js +1 -1
- package/dist/utils/errorMapper.mappers.d.ts +27 -6
- package/dist/utils/errorMapper.mappers.js +57 -49
- package/dist/utils/errorSerializer.core.d.ts +22 -3
- package/dist/utils/errorSerializer.core.js +88 -40
- package/dist/utils/errorSerializer.factory.d.ts +1 -1
- package/dist/utils/errorSerializer.factory.js +2 -26
- package/dist/utils/errorSerializer.types.d.ts +14 -4
- package/dist/utils/errorUtils.extraction.js +3 -2
- package/dist/utils/errorUtils.transform.d.ts +1 -1
- package/dist/utils/errorUtils.transform.js +2 -26
- package/dist/utils/errorUtils.typeCheck.js +7 -7
- package/package.json +21 -10
- package/dist/.tsbuildinfo +0 -1
- package/dist/base/core/baseError.core.d.ts.map +0 -1
- package/dist/base/core/baseError.core.js.map +0 -1
- package/dist/base/core/errorMetadata.core.d.ts.map +0 -1
- package/dist/base/core/errorMetadata.core.js.map +0 -1
- package/dist/base/core/errorMetadata.type.d.ts.map +0 -1
- package/dist/base/core/errorMetadata.type.js.map +0 -1
- package/dist/base/core/index.d.ts.map +0 -1
- package/dist/base/core/index.js.map +0 -1
- package/dist/base/index.d.ts.map +0 -1
- package/dist/base/index.js.map +0 -1
- package/dist/base/types/baseError.type.d.ts.map +0 -1
- package/dist/base/types/baseError.type.js.map +0 -1
- package/dist/base/types/errorCategory.enum.d.ts.map +0 -1
- package/dist/base/types/errorCategory.enum.js.map +0 -1
- package/dist/base/types/errorCategory.helpers.d.ts.map +0 -1
- package/dist/base/types/errorCategory.helpers.js.map +0 -1
- package/dist/base/types/errorCategory.type.d.ts.map +0 -1
- package/dist/base/types/errorCategory.type.js.map +0 -1
- package/dist/base/types/errorCode.type.d.ts.map +0 -1
- package/dist/base/types/errorCode.type.js.map +0 -1
- package/dist/base/types/errorSeverity.type.d.ts.map +0 -1
- package/dist/base/types/errorSeverity.type.js.map +0 -1
- package/dist/base/types/index.d.ts.map +0 -1
- package/dist/base/types/index.js.map +0 -1
- package/dist/base/utils/baseError.utils.d.ts.map +0 -1
- package/dist/base/utils/baseError.utils.js.map +0 -1
- package/dist/base/utils/index.d.ts.map +0 -1
- package/dist/base/utils/index.js.map +0 -1
- package/dist/domain/access/authentication.error.d.ts.map +0 -1
- package/dist/domain/access/authentication.error.js.map +0 -1
- package/dist/domain/access/authorization.error.d.ts.map +0 -1
- package/dist/domain/access/authorization.error.js.map +0 -1
- package/dist/domain/access/index.d.ts.map +0 -1
- package/dist/domain/access/index.js.map +0 -1
- package/dist/domain/access/rateLimit.error.d.ts.map +0 -1
- package/dist/domain/access/rateLimit.error.js.map +0 -1
- package/dist/domain/api/api.error.d.ts.map +0 -1
- package/dist/domain/api/api.error.js.map +0 -1
- package/dist/domain/api/apiError.base.d.ts.map +0 -1
- package/dist/domain/api/apiError.base.js.map +0 -1
- package/dist/domain/api/apiError.lifecycle.d.ts.map +0 -1
- package/dist/domain/api/apiError.lifecycle.js.map +0 -1
- package/dist/domain/api/apiError.routing.d.ts.map +0 -1
- package/dist/domain/api/apiError.routing.js.map +0 -1
- package/dist/domain/api/index.d.ts.map +0 -1
- package/dist/domain/api/index.js.map +0 -1
- package/dist/domain/app/application.error.d.ts.map +0 -1
- package/dist/domain/app/application.error.js.map +0 -1
- package/dist/domain/app/configuration.error.d.ts.map +0 -1
- package/dist/domain/app/configuration.error.js.map +0 -1
- package/dist/domain/app/domain.error.d.ts.map +0 -1
- package/dist/domain/app/domain.error.js.map +0 -1
- package/dist/domain/app/index.d.ts.map +0 -1
- package/dist/domain/app/index.js.map +0 -1
- package/dist/domain/app/lifecycle.error.d.ts.map +0 -1
- package/dist/domain/app/lifecycle.error.js.map +0 -1
- package/dist/domain/app/lifecycleError.base.d.ts.map +0 -1
- package/dist/domain/app/lifecycleError.base.js.map +0 -1
- package/dist/domain/app/lifecycleError.types.d.ts.map +0 -1
- package/dist/domain/app/lifecycleError.types.js.map +0 -1
- package/dist/domain/app/module.error.d.ts.map +0 -1
- package/dist/domain/app/module.error.js.map +0 -1
- package/dist/domain/app/moduleError.base.d.ts.map +0 -1
- package/dist/domain/app/moduleError.base.js.map +0 -1
- package/dist/domain/app/moduleError.types.d.ts.map +0 -1
- package/dist/domain/app/moduleError.types.js.map +0 -1
- package/dist/domain/body/bodyParser.error.d.ts.map +0 -1
- package/dist/domain/body/bodyParser.error.js.map +0 -1
- package/dist/domain/body/httpBody.error.d.ts.map +0 -1
- package/dist/domain/body/httpBody.error.js.map +0 -1
- package/dist/domain/body/httpBodyError.base.d.ts.map +0 -1
- package/dist/domain/body/httpBodyError.base.js.map +0 -1
- package/dist/domain/body/httpBodyError.types.d.ts.map +0 -1
- package/dist/domain/body/httpBodyError.types.js.map +0 -1
- package/dist/domain/body/httpFormData.error.d.ts.map +0 -1
- package/dist/domain/body/httpFormData.error.js.map +0 -1
- package/dist/domain/body/index.d.ts.map +0 -1
- package/dist/domain/body/index.js.map +0 -1
- package/dist/domain/body/multipart.error.d.ts.map +0 -1
- package/dist/domain/body/multipart.error.js.map +0 -1
- package/dist/domain/documentation/documentation.error.d.ts.map +0 -1
- package/dist/domain/documentation/documentation.error.js.map +0 -1
- package/dist/domain/documentation/documentationError.base.d.ts.map +0 -1
- package/dist/domain/documentation/documentationError.base.js.map +0 -1
- package/dist/domain/documentation/documentationError.types.d.ts.map +0 -1
- package/dist/domain/documentation/documentationError.types.js.map +0 -1
- package/dist/domain/documentation/index.d.ts.map +0 -1
- package/dist/domain/documentation/index.js.map +0 -1
- package/dist/domain/event/event.error.d.ts.map +0 -1
- package/dist/domain/event/event.error.js.map +0 -1
- package/dist/domain/event/eventError.base.d.ts.map +0 -1
- package/dist/domain/event/eventError.base.js.map +0 -1
- package/dist/domain/event/eventError.handler.d.ts.map +0 -1
- package/dist/domain/event/eventError.handler.js.map +0 -1
- package/dist/domain/event/eventError.lifecycle.d.ts.map +0 -1
- package/dist/domain/event/eventError.lifecycle.js.map +0 -1
- package/dist/domain/event/eventError.serialization.d.ts.map +0 -1
- package/dist/domain/event/eventError.serialization.js.map +0 -1
- package/dist/domain/event/index.d.ts.map +0 -1
- package/dist/domain/event/index.js.map +0 -1
- package/dist/domain/index.d.ts.map +0 -1
- package/dist/domain/index.js.map +0 -1
- package/dist/domain/message/index.d.ts.map +0 -1
- package/dist/domain/message/index.js.map +0 -1
- package/dist/domain/message/message.error.d.ts.map +0 -1
- package/dist/domain/message/message.error.js.map +0 -1
- package/dist/domain/message/messageError.base.d.ts.map +0 -1
- package/dist/domain/message/messageError.base.js.map +0 -1
- package/dist/domain/message/messageError.handler.d.ts.map +0 -1
- package/dist/domain/message/messageError.handler.js.map +0 -1
- package/dist/domain/message/messageError.lifecycle.d.ts.map +0 -1
- package/dist/domain/message/messageError.lifecycle.js.map +0 -1
- package/dist/domain/message/messageError.validation.d.ts.map +0 -1
- package/dist/domain/message/messageError.validation.js.map +0 -1
- package/dist/domain/plugin/index.d.ts.map +0 -1
- package/dist/domain/plugin/index.js.map +0 -1
- package/dist/domain/plugin/plugin.error.d.ts.map +0 -1
- package/dist/domain/plugin/plugin.error.js.map +0 -1
- package/dist/domain/plugin/pluginError.base.d.ts.map +0 -1
- package/dist/domain/plugin/pluginError.base.js.map +0 -1
- package/dist/domain/plugin/pluginError.lifecycle.d.ts.map +0 -1
- package/dist/domain/plugin/pluginError.lifecycle.js.map +0 -1
- package/dist/domain/plugin/pluginError.runtime.d.ts.map +0 -1
- package/dist/domain/plugin/pluginError.runtime.js.map +0 -1
- package/dist/domain/queue/index.d.ts.map +0 -1
- package/dist/domain/queue/index.js.map +0 -1
- package/dist/domain/queue/queue.error.d.ts.map +0 -1
- package/dist/domain/queue/queue.error.js.map +0 -1
- package/dist/domain/queue/queueError.base.d.ts.map +0 -1
- package/dist/domain/queue/queueError.base.js.map +0 -1
- package/dist/domain/queue/queueError.job.d.ts.map +0 -1
- package/dist/domain/queue/queueError.job.js.map +0 -1
- package/dist/domain/queue/queueError.queue.d.ts.map +0 -1
- package/dist/domain/queue/queueError.queue.js.map +0 -1
- package/dist/domain/queue/queueError.worker.d.ts.map +0 -1
- package/dist/domain/queue/queueError.worker.js.map +0 -1
- package/dist/domain/rpc/index.d.ts.map +0 -1
- package/dist/domain/rpc/index.js.map +0 -1
- package/dist/domain/rpc/rpc.error.d.ts.map +0 -1
- package/dist/domain/rpc/rpc.error.js.map +0 -1
- package/dist/domain/rpc/rpcError.base.d.ts.map +0 -1
- package/dist/domain/rpc/rpcError.base.js.map +0 -1
- package/dist/domain/rpc/rpcError.protocol.d.ts.map +0 -1
- package/dist/domain/rpc/rpcError.protocol.js.map +0 -1
- package/dist/domain/rpc/rpcError.transport.d.ts.map +0 -1
- package/dist/domain/rpc/rpcError.transport.js.map +0 -1
- package/dist/domain/scheduler/index.d.ts.map +0 -1
- package/dist/domain/scheduler/index.js.map +0 -1
- package/dist/domain/scheduler/scheduler.error.d.ts.map +0 -1
- package/dist/domain/scheduler/scheduler.error.js.map +0 -1
- package/dist/domain/scheduler/schedulerError.base.d.ts.map +0 -1
- package/dist/domain/scheduler/schedulerError.base.js.map +0 -1
- package/dist/domain/scheduler/schedulerError.execution.d.ts.map +0 -1
- package/dist/domain/scheduler/schedulerError.execution.js.map +0 -1
- package/dist/domain/scheduler/schedulerError.schedule.d.ts.map +0 -1
- package/dist/domain/scheduler/schedulerError.schedule.js.map +0 -1
- package/dist/domain/schema/index.d.ts.map +0 -1
- package/dist/domain/schema/index.js.map +0 -1
- package/dist/domain/schema/schema.error.d.ts.map +0 -1
- package/dist/domain/schema/schema.error.js.map +0 -1
- package/dist/domain/schema/schemaError.base.d.ts.map +0 -1
- package/dist/domain/schema/schemaError.base.js.map +0 -1
- package/dist/domain/schema/schemaError.types.d.ts.map +0 -1
- package/dist/domain/schema/schemaError.types.js.map +0 -1
- package/dist/domain/serialization/index.d.ts.map +0 -1
- package/dist/domain/serialization/index.js.map +0 -1
- package/dist/domain/serialization/serialization.error.d.ts.map +0 -1
- package/dist/domain/serialization/serialization.error.js.map +0 -1
- package/dist/domain/serialization/serializationError.base.d.ts.map +0 -1
- package/dist/domain/serialization/serializationError.base.js.map +0 -1
- package/dist/domain/serialization/serializationError.types.d.ts.map +0 -1
- package/dist/domain/serialization/serializationError.types.js.map +0 -1
- package/dist/domain/state/conflict.error.d.ts.map +0 -1
- package/dist/domain/state/conflict.error.js.map +0 -1
- package/dist/domain/state/index.d.ts.map +0 -1
- package/dist/domain/state/index.js.map +0 -1
- package/dist/domain/state/notFound.error.d.ts.map +0 -1
- package/dist/domain/state/notFound.error.js.map +0 -1
- package/dist/domain/state/validation.error.d.ts.map +0 -1
- package/dist/domain/state/validation.error.js.map +0 -1
- package/dist/domain/state/validationError.base.d.ts.map +0 -1
- package/dist/domain/state/validationError.base.js.map +0 -1
- package/dist/domain/state/validationError.helpers.d.ts.map +0 -1
- package/dist/domain/state/validationError.helpers.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/infrastructure/adapter/adapter.error.d.ts.map +0 -1
- package/dist/infrastructure/adapter/adapter.error.js.map +0 -1
- package/dist/infrastructure/adapter/adapterError.base.d.ts.map +0 -1
- package/dist/infrastructure/adapter/adapterError.base.js.map +0 -1
- package/dist/infrastructure/adapter/adapterError.lifecycle.d.ts.map +0 -1
- package/dist/infrastructure/adapter/adapterError.lifecycle.js.map +0 -1
- package/dist/infrastructure/adapter/adapterError.operation.d.ts.map +0 -1
- package/dist/infrastructure/adapter/adapterError.operation.js.map +0 -1
- package/dist/infrastructure/adapter/index.d.ts.map +0 -1
- package/dist/infrastructure/adapter/index.js.map +0 -1
- package/dist/infrastructure/cache/cache.error.d.ts.map +0 -1
- package/dist/infrastructure/cache/cache.error.js.map +0 -1
- package/dist/infrastructure/cache/cacheError.base.d.ts.map +0 -1
- package/dist/infrastructure/cache/cacheError.base.js.map +0 -1
- package/dist/infrastructure/cache/cacheError.factory.d.ts.map +0 -1
- package/dist/infrastructure/cache/cacheError.factory.js.map +0 -1
- package/dist/infrastructure/cache/index.d.ts.map +0 -1
- package/dist/infrastructure/cache/index.js.map +0 -1
- package/dist/infrastructure/container/container.error.d.ts.map +0 -1
- package/dist/infrastructure/container/container.error.js.map +0 -1
- package/dist/infrastructure/container/containerError.base.d.ts.map +0 -1
- package/dist/infrastructure/container/containerError.base.js.map +0 -1
- package/dist/infrastructure/container/containerError.registration.d.ts.map +0 -1
- package/dist/infrastructure/container/containerError.registration.js.map +0 -1
- package/dist/infrastructure/container/index.d.ts.map +0 -1
- package/dist/infrastructure/container/index.js.map +0 -1
- package/dist/infrastructure/index.d.ts.map +0 -1
- package/dist/infrastructure/index.js.map +0 -1
- package/dist/infrastructure/middleware/index.d.ts.map +0 -1
- package/dist/infrastructure/middleware/index.js.map +0 -1
- package/dist/infrastructure/middleware/middleware.error.d.ts.map +0 -1
- package/dist/infrastructure/middleware/middleware.error.js.map +0 -1
- package/dist/infrastructure/network/http.error.d.ts.map +0 -1
- package/dist/infrastructure/network/http.error.js.map +0 -1
- package/dist/infrastructure/network/httpAdapter.error.d.ts.map +0 -1
- package/dist/infrastructure/network/httpAdapter.error.js.map +0 -1
- package/dist/infrastructure/network/httpClient.errors.d.ts.map +0 -1
- package/dist/infrastructure/network/httpClient.errors.js.map +0 -1
- package/dist/infrastructure/network/httpClientError.advanced.d.ts.map +0 -1
- package/dist/infrastructure/network/httpClientError.advanced.js.map +0 -1
- package/dist/infrastructure/network/httpClientError.base.d.ts.map +0 -1
- package/dist/infrastructure/network/httpClientError.base.js.map +0 -1
- package/dist/infrastructure/network/httpClientError.common.d.ts.map +0 -1
- package/dist/infrastructure/network/httpClientError.common.js.map +0 -1
- package/dist/infrastructure/network/httpClientError.error.d.ts.map +0 -1
- package/dist/infrastructure/network/httpClientError.error.js.map +0 -1
- package/dist/infrastructure/network/httpClientError.options.d.ts.map +0 -1
- package/dist/infrastructure/network/httpClientError.options.js.map +0 -1
- package/dist/infrastructure/network/httpClientError.specialized.d.ts.map +0 -1
- package/dist/infrastructure/network/httpClientError.specialized.js.map +0 -1
- package/dist/infrastructure/network/httpClientError.types.d.ts.map +0 -1
- package/dist/infrastructure/network/httpClientError.types.js.map +0 -1
- package/dist/infrastructure/network/httpError.base.d.ts.map +0 -1
- package/dist/infrastructure/network/httpError.base.js.map +0 -1
- package/dist/infrastructure/network/httpError.helpers.d.ts.map +0 -1
- package/dist/infrastructure/network/httpError.helpers.js.map +0 -1
- package/dist/infrastructure/network/httpResponse.error.d.ts.map +0 -1
- package/dist/infrastructure/network/httpResponse.error.js.map +0 -1
- package/dist/infrastructure/network/httpRouter.error.d.ts.map +0 -1
- package/dist/infrastructure/network/httpRouter.error.js.map +0 -1
- package/dist/infrastructure/network/httpRouterError.base.d.ts.map +0 -1
- package/dist/infrastructure/network/httpRouterError.base.js.map +0 -1
- package/dist/infrastructure/network/httpRouterError.types.d.ts.map +0 -1
- package/dist/infrastructure/network/httpRouterError.types.js.map +0 -1
- package/dist/infrastructure/network/httpServerError.error.d.ts.map +0 -1
- package/dist/infrastructure/network/httpServerError.error.js.map +0 -1
- package/dist/infrastructure/network/httpServerLifecycle.error.d.ts.map +0 -1
- package/dist/infrastructure/network/httpServerLifecycle.error.js.map +0 -1
- package/dist/infrastructure/network/httpServerLifecycleError.base.d.ts.map +0 -1
- package/dist/infrastructure/network/httpServerLifecycleError.base.js.map +0 -1
- package/dist/infrastructure/network/httpServerLifecycleError.types.d.ts.map +0 -1
- package/dist/infrastructure/network/httpServerLifecycleError.types.js.map +0 -1
- package/dist/infrastructure/network/httpStream.error.d.ts.map +0 -1
- package/dist/infrastructure/network/httpStream.error.js.map +0 -1
- package/dist/infrastructure/network/index.d.ts.map +0 -1
- package/dist/infrastructure/network/index.js.map +0 -1
- package/dist/infrastructure/network/network.error.d.ts.map +0 -1
- package/dist/infrastructure/network/network.error.js.map +0 -1
- package/dist/infrastructure/network/networkError.base.d.ts.map +0 -1
- package/dist/infrastructure/network/networkError.base.js.map +0 -1
- package/dist/infrastructure/network/networkError.factory.d.ts.map +0 -1
- package/dist/infrastructure/network/networkError.factory.js.map +0 -1
- package/dist/infrastructure/network/routePattern.error.d.ts.map +0 -1
- package/dist/infrastructure/network/routePattern.error.js.map +0 -1
- package/dist/infrastructure/network/timeout.error.d.ts.map +0 -1
- package/dist/infrastructure/network/timeout.error.js.map +0 -1
- package/dist/infrastructure/network/timeoutError.base.d.ts.map +0 -1
- package/dist/infrastructure/network/timeoutError.base.js.map +0 -1
- package/dist/infrastructure/network/timeoutError.factory.d.ts.map +0 -1
- package/dist/infrastructure/network/timeoutError.factory.js.map +0 -1
- package/dist/infrastructure/service/externalService.error.d.ts.map +0 -1
- package/dist/infrastructure/service/externalService.error.js.map +0 -1
- package/dist/infrastructure/service/externalServiceError.base.d.ts.map +0 -1
- package/dist/infrastructure/service/externalServiceError.base.js.map +0 -1
- package/dist/infrastructure/service/externalServiceError.factory.d.ts.map +0 -1
- package/dist/infrastructure/service/externalServiceError.factory.js.map +0 -1
- package/dist/infrastructure/service/index.d.ts.map +0 -1
- package/dist/infrastructure/service/index.js.map +0 -1
- package/dist/infrastructure/service/service.error.d.ts.map +0 -1
- package/dist/infrastructure/service/service.error.js.map +0 -1
- package/dist/infrastructure/service/serviceError.base.d.ts.map +0 -1
- package/dist/infrastructure/service/serviceError.base.js.map +0 -1
- package/dist/infrastructure/service/serviceError.factory.d.ts.map +0 -1
- package/dist/infrastructure/service/serviceError.factory.js.map +0 -1
- package/dist/infrastructure/storage/database.error.d.ts.map +0 -1
- package/dist/infrastructure/storage/database.error.js.map +0 -1
- package/dist/infrastructure/storage/databaseError.base.d.ts.map +0 -1
- package/dist/infrastructure/storage/databaseError.base.js.map +0 -1
- package/dist/infrastructure/storage/databaseError.factory.d.ts.map +0 -1
- package/dist/infrastructure/storage/databaseError.factory.js.map +0 -1
- package/dist/infrastructure/storage/index.d.ts.map +0 -1
- package/dist/infrastructure/storage/index.js.map +0 -1
- package/dist/infrastructure/storage/storage.error.d.ts.map +0 -1
- package/dist/infrastructure/storage/storage.error.js.map +0 -1
- package/dist/infrastructure/storage/storageError.base.d.ts.map +0 -1
- package/dist/infrastructure/storage/storageError.base.js.map +0 -1
- package/dist/infrastructure/storage/storageError.factory.d.ts.map +0 -1
- package/dist/infrastructure/storage/storageError.factory.js.map +0 -1
- package/dist/system/crypto.error.d.ts.map +0 -1
- package/dist/system/crypto.error.js.map +0 -1
- package/dist/system/cryptoError.base.d.ts.map +0 -1
- package/dist/system/cryptoError.base.js.map +0 -1
- package/dist/system/cryptoError.factory.d.ts.map +0 -1
- package/dist/system/cryptoError.factory.js.map +0 -1
- package/dist/system/index.d.ts.map +0 -1
- package/dist/system/index.js.map +0 -1
- package/dist/system/logging/index.d.ts.map +0 -1
- package/dist/system/logging/index.js.map +0 -1
- package/dist/system/logging/logging.error.d.ts.map +0 -1
- package/dist/system/logging/logging.error.js.map +0 -1
- package/dist/system/runtime.error.d.ts.map +0 -1
- package/dist/system/runtime.error.js.map +0 -1
- package/dist/system/runtimeError.base.d.ts.map +0 -1
- package/dist/system/runtimeError.base.js.map +0 -1
- package/dist/system/runtimeError.types.d.ts.map +0 -1
- package/dist/system/runtimeError.types.js.map +0 -1
- package/dist/system/system.error.d.ts.map +0 -1
- package/dist/system/system.error.js.map +0 -1
- package/dist/system/systemError.base.d.ts.map +0 -1
- package/dist/system/systemError.base.js.map +0 -1
- package/dist/system/systemError.factory.d.ts.map +0 -1
- package/dist/system/systemError.factory.js.map +0 -1
- package/dist/utils/errorHandler.core.d.ts.map +0 -1
- package/dist/utils/errorHandler.core.js.map +0 -1
- package/dist/utils/errorHandler.factory.d.ts.map +0 -1
- package/dist/utils/errorHandler.factory.js.map +0 -1
- package/dist/utils/errorHandler.types.d.ts.map +0 -1
- package/dist/utils/errorHandler.types.js.map +0 -1
- package/dist/utils/errorMapper.core.d.ts.map +0 -1
- package/dist/utils/errorMapper.core.js.map +0 -1
- package/dist/utils/errorMapper.mappers.d.ts.map +0 -1
- package/dist/utils/errorMapper.mappers.js.map +0 -1
- package/dist/utils/errorMapper.registry.d.ts.map +0 -1
- package/dist/utils/errorMapper.registry.js.map +0 -1
- package/dist/utils/errorMapper.types.d.ts.map +0 -1
- package/dist/utils/errorMapper.types.js.map +0 -1
- package/dist/utils/errorSerializer.core.d.ts.map +0 -1
- package/dist/utils/errorSerializer.core.js.map +0 -1
- package/dist/utils/errorSerializer.factory.d.ts.map +0 -1
- package/dist/utils/errorSerializer.factory.js.map +0 -1
- package/dist/utils/errorSerializer.types.d.ts.map +0 -1
- package/dist/utils/errorSerializer.types.js.map +0 -1
- package/dist/utils/errorUtils.extraction.d.ts.map +0 -1
- package/dist/utils/errorUtils.extraction.js.map +0 -1
- package/dist/utils/errorUtils.helper.d.ts.map +0 -1
- package/dist/utils/errorUtils.helper.js.map +0 -1
- package/dist/utils/errorUtils.transform.d.ts.map +0 -1
- package/dist/utils/errorUtils.transform.js.map +0 -1
- package/dist/utils/errorUtils.typeCheck.d.ts.map +0 -1
- package/dist/utils/errorUtils.typeCheck.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helpers for domain error classes.
|
|
3
|
+
*
|
|
4
|
+
* These utilities keep untrusted input out of error messages, make
|
|
5
|
+
* normalizers robust against exotic thrown values, and validate the
|
|
6
|
+
* numeric arguments that domain errors record.
|
|
7
|
+
*/
|
|
8
|
+
/** Default maximum length for untrusted strings embedded in messages. */
|
|
9
|
+
export const MAX_MESSAGE_FRAGMENT_LENGTH = 200;
|
|
10
|
+
/** Control characters (C0 range, DEL, and C1 range) that must not reach logs. */
|
|
11
|
+
// eslint-disable-next-line no-control-regex
|
|
12
|
+
const CONTROL_CHARS = /[\u0000-\u001f\u007f-\u009f]/g;
|
|
13
|
+
/** Default maximum length for untrusted strings stored in metadata. */
|
|
14
|
+
export const MAX_METADATA_FRAGMENT_LENGTH = 1024;
|
|
15
|
+
/**
|
|
16
|
+
* Removes control characters (including newlines and ANSI escapes) and
|
|
17
|
+
* truncates the string so it can be safely embedded in a message or log line.
|
|
18
|
+
*/
|
|
19
|
+
export function sanitizeFragment(value, maxLength = MAX_MESSAGE_FRAGMENT_LENGTH) {
|
|
20
|
+
const text = typeof value === "string" ? value : safeStringify(value);
|
|
21
|
+
const cleaned = text.replace(CONTROL_CHARS, " ");
|
|
22
|
+
if (cleaned.length <= maxLength)
|
|
23
|
+
return cleaned;
|
|
24
|
+
return `${cleaned.slice(0, maxLength)}… [truncated ${cleaned.length - maxLength} chars]`;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Serializes any value to a string without throwing.
|
|
28
|
+
*
|
|
29
|
+
* Handles BigInt, circular structures, symbols, and objects whose
|
|
30
|
+
* `toString` throws. Never returns more than `maxLength` characters.
|
|
31
|
+
*/
|
|
32
|
+
export function safeStringify(value, maxLength = MAX_METADATA_FRAGMENT_LENGTH) {
|
|
33
|
+
let text;
|
|
34
|
+
try {
|
|
35
|
+
if (typeof value === "string") {
|
|
36
|
+
text = value;
|
|
37
|
+
}
|
|
38
|
+
else if (typeof value === "bigint") {
|
|
39
|
+
text = `${value.toString()}n`;
|
|
40
|
+
}
|
|
41
|
+
else if (typeof value === "symbol") {
|
|
42
|
+
text = value.toString();
|
|
43
|
+
}
|
|
44
|
+
else if (typeof value === "function") {
|
|
45
|
+
text = `[function ${value.name || "anonymous"}]`;
|
|
46
|
+
}
|
|
47
|
+
else if (value === undefined) {
|
|
48
|
+
text = "undefined";
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const seen = new WeakSet();
|
|
52
|
+
const json = JSON.stringify(value, (_key, item) => {
|
|
53
|
+
if (typeof item === "bigint")
|
|
54
|
+
return `${item.toString()}n`;
|
|
55
|
+
if (typeof item === "symbol")
|
|
56
|
+
return item.toString();
|
|
57
|
+
if (typeof item === "object" && item !== null) {
|
|
58
|
+
if (seen.has(item))
|
|
59
|
+
return "[Circular]";
|
|
60
|
+
seen.add(item);
|
|
61
|
+
}
|
|
62
|
+
return item;
|
|
63
|
+
});
|
|
64
|
+
text = json === undefined ? String(value) : json;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
try {
|
|
69
|
+
text = Object.prototype.toString.call(value);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
text = "[unserializable]";
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (text.length <= maxLength)
|
|
76
|
+
return text;
|
|
77
|
+
return `${text.slice(0, maxLength)}…`;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Describes a value by type and size without revealing its contents.
|
|
81
|
+
*
|
|
82
|
+
* Use this instead of embedding submitted values into exposed messages.
|
|
83
|
+
*/
|
|
84
|
+
export function describeValue(value) {
|
|
85
|
+
if (value === null)
|
|
86
|
+
return "null";
|
|
87
|
+
if (value === undefined)
|
|
88
|
+
return "undefined";
|
|
89
|
+
if (Array.isArray(value))
|
|
90
|
+
return `array(${value.length})`;
|
|
91
|
+
switch (typeof value) {
|
|
92
|
+
case "string":
|
|
93
|
+
return `string(${value.length})`;
|
|
94
|
+
case "number":
|
|
95
|
+
return Number.isFinite(value) ? "number" : `number(${String(value)})`;
|
|
96
|
+
case "bigint":
|
|
97
|
+
return "bigint";
|
|
98
|
+
case "boolean":
|
|
99
|
+
return `boolean(${String(value)})`;
|
|
100
|
+
case "symbol":
|
|
101
|
+
return "symbol";
|
|
102
|
+
case "function":
|
|
103
|
+
return "function";
|
|
104
|
+
default: {
|
|
105
|
+
if (value instanceof Date)
|
|
106
|
+
return "date";
|
|
107
|
+
const proto = Object.getPrototypeOf(value);
|
|
108
|
+
if (proto === null || proto === Object.prototype)
|
|
109
|
+
return "object";
|
|
110
|
+
const name = value.constructor
|
|
111
|
+
?.name;
|
|
112
|
+
return name ? `object(${name})` : "object";
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Produces a message for an unknown thrown value without throwing.
|
|
118
|
+
*/
|
|
119
|
+
export function safeErrorMessage(error) {
|
|
120
|
+
if (error instanceof Error) {
|
|
121
|
+
return typeof error.message === "string" ? error.message : "Unknown error";
|
|
122
|
+
}
|
|
123
|
+
if (typeof error === "string")
|
|
124
|
+
return error;
|
|
125
|
+
if (error === null || error === undefined)
|
|
126
|
+
return "Unknown error";
|
|
127
|
+
const text = safeStringify(error, MAX_MESSAGE_FRAGMENT_LENGTH);
|
|
128
|
+
return text.length > 0 ? text : "Unknown error";
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Asserts that a numeric argument is finite and non-negative.
|
|
132
|
+
*/
|
|
133
|
+
export function assertFiniteNonNegative(name, value) {
|
|
134
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
|
|
135
|
+
throw new RangeError(`${name} must be a finite non-negative number.`);
|
|
136
|
+
}
|
|
137
|
+
return value;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Normalizes a retry-after value in seconds to a finite, non-negative integer
|
|
141
|
+
* (rounded up), as required by the HTTP `Retry-After` header.
|
|
142
|
+
*/
|
|
143
|
+
export function normalizeRetryAfterSeconds(value, name = "retryAfterSeconds") {
|
|
144
|
+
return Math.ceil(assertFiniteNonNegative(name, value));
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Merges caller-provided metadata with class-specific fields, letting the
|
|
148
|
+
* class-specific fields win.
|
|
149
|
+
*/
|
|
150
|
+
export function mergeMetadata(callerMetadata, own) {
|
|
151
|
+
return { ...(callerMetadata ?? {}), ...own };
|
|
152
|
+
}
|
|
153
|
+
/** Keys that hold submitted values inside validation/schema issues. */
|
|
154
|
+
const VALUE_KEYS = new Set(["value", "received", "input", "actual"]);
|
|
155
|
+
/**
|
|
156
|
+
* Removes submitted values from a list of issue objects so they can be
|
|
157
|
+
* exposed to clients. Values are replaced by a type/size description under
|
|
158
|
+
* `<key>Type`.
|
|
159
|
+
*/
|
|
160
|
+
export function redactIssueValues(issues) {
|
|
161
|
+
return issues.map((issue) => {
|
|
162
|
+
if (typeof issue !== "object" || issue === null || Array.isArray(issue)) {
|
|
163
|
+
return issue;
|
|
164
|
+
}
|
|
165
|
+
const out = {};
|
|
166
|
+
for (const [key, val] of Object.entries(issue)) {
|
|
167
|
+
if (VALUE_KEYS.has(key)) {
|
|
168
|
+
out[`${key}Type`] = describeValue(val);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
out[key] = val;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return out;
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Converts issue objects into JSON-safe structures (no BigInt, no cycles)
|
|
179
|
+
* so that `JSON.stringify` on the error never throws.
|
|
180
|
+
*/
|
|
181
|
+
export function toJsonSafeIssues(issues) {
|
|
182
|
+
return issues.map((issue) => {
|
|
183
|
+
try {
|
|
184
|
+
return JSON.parse(safeStringify(issue, Number.POSITIVE_INFINITY));
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return issue;
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=domainError.helpers.js.map
|
|
@@ -21,6 +21,6 @@ export declare function isConflictError(value: unknown): value is ConflictError;
|
|
|
21
21
|
export declare function alreadyExistsError(resource: string, identifier?: string | number): ConflictError;
|
|
22
22
|
/** Creates an error indicating that a duplicate value was submitted. */
|
|
23
23
|
export declare function duplicateError(field: string, value?: string | number): ConflictError;
|
|
24
|
-
/** Creates an error indicating that a resource is currently locked. */
|
|
24
|
+
/** Creates an error indicating that a resource is currently locked (HTTP 423). */
|
|
25
25
|
export declare function resourceLockedError(resource: string, identifier?: string | number): ConflictError;
|
|
26
26
|
//# sourceMappingURL=conflict.error.d.ts.map
|
|
@@ -58,7 +58,7 @@ export function duplicateError(field, value) {
|
|
|
58
58
|
},
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
-
/** Creates an error indicating that a resource is currently locked. */
|
|
61
|
+
/** Creates an error indicating that a resource is currently locked (HTTP 423). */
|
|
62
62
|
export function resourceLockedError(resource, identifier) {
|
|
63
63
|
const message = identifier !== undefined
|
|
64
64
|
? `${resource} with identifier "${String(identifier)}" is currently locked.`
|
|
@@ -66,7 +66,7 @@ export function resourceLockedError(resource, identifier) {
|
|
|
66
66
|
return new ConflictError(message, {
|
|
67
67
|
code: ErrorCode.RESOURCE_LOCKED,
|
|
68
68
|
category: ErrorCategory.CONFLICT,
|
|
69
|
-
statusCode:
|
|
69
|
+
statusCode: 423,
|
|
70
70
|
expose: true,
|
|
71
71
|
metadata: {
|
|
72
72
|
resource,
|
|
@@ -31,7 +31,14 @@ export declare class ValidationError extends BaseError {
|
|
|
31
31
|
get issueCount(): number;
|
|
32
32
|
/** Returns issues associated with a specific field. */
|
|
33
33
|
issuesForField(field: string): readonly ValidationIssue[];
|
|
34
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Returns a serialized representation including validation issues.
|
|
36
|
+
*
|
|
37
|
+
* When the error is exposable (the default), submitted values inside
|
|
38
|
+
* issues (`value`) are replaced by a type/size description so that secrets
|
|
39
|
+
* such as passwords are never echoed to clients or written to logs. The
|
|
40
|
+
* output is always JSON-safe (BigInt and cyclic values are stringified).
|
|
41
|
+
*/
|
|
35
42
|
toJSON(): {
|
|
36
43
|
name: string;
|
|
37
44
|
message: string;
|
|
@@ -2,6 +2,7 @@ import { BaseError } from "../../base/core/baseError.core.js";
|
|
|
2
2
|
import { ErrorCategory } from "../../base/types/errorCategory.type.js";
|
|
3
3
|
import { ErrorCode } from "../../base/types/errorCode.type.js";
|
|
4
4
|
import { ErrorSeverity } from "../../base/types/errorSeverity.type.js";
|
|
5
|
+
import { redactIssueValues, toJsonSafeIssues, } from "../shared/domainError.helpers.js";
|
|
5
6
|
/**
|
|
6
7
|
* Error raised when input fails validation.
|
|
7
8
|
*/
|
|
@@ -31,11 +32,19 @@ export class ValidationError extends BaseError {
|
|
|
31
32
|
issuesForField(field) {
|
|
32
33
|
return this.issues.filter((issue) => issue.field === field || issue.path?.[0] === field);
|
|
33
34
|
}
|
|
34
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Returns a serialized representation including validation issues.
|
|
37
|
+
*
|
|
38
|
+
* When the error is exposable (the default), submitted values inside
|
|
39
|
+
* issues (`value`) are replaced by a type/size description so that secrets
|
|
40
|
+
* such as passwords are never echoed to clients or written to logs. The
|
|
41
|
+
* output is always JSON-safe (BigInt and cyclic values are stringified).
|
|
42
|
+
*/
|
|
35
43
|
toJSON() {
|
|
44
|
+
const safeIssues = toJsonSafeIssues(this.issues);
|
|
36
45
|
return {
|
|
37
46
|
...super.toJSON(),
|
|
38
|
-
issues: this.
|
|
47
|
+
issues: this.expose ? redactIssueValues(safeIssues) : safeIssues,
|
|
39
48
|
};
|
|
40
49
|
}
|
|
41
50
|
}
|
|
@@ -41,10 +41,10 @@ export class AdapterNotFoundError extends AdapterError {
|
|
|
41
41
|
super(`Adapter "${adapterName}" is not registered.`, {
|
|
42
42
|
code: ErrorCode.ADAPTER_NOT_FOUND,
|
|
43
43
|
adapter: adapterName,
|
|
44
|
-
statusCode:
|
|
45
|
-
expose:
|
|
44
|
+
statusCode: 500,
|
|
45
|
+
expose: false,
|
|
46
|
+
isOperational: false,
|
|
46
47
|
});
|
|
47
|
-
this.name = "AdapterNotFoundError";
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
/** Error thrown when an adapter is already registered. */
|
|
@@ -53,10 +53,10 @@ export class AdapterAlreadyRegisteredError extends AdapterError {
|
|
|
53
53
|
super(`Adapter "${adapterName}" is already registered.`, {
|
|
54
54
|
code: ErrorCode.ADAPTER_ALREADY_REGISTERED,
|
|
55
55
|
adapter: adapterName,
|
|
56
|
-
statusCode:
|
|
57
|
-
expose:
|
|
56
|
+
statusCode: 500,
|
|
57
|
+
expose: false,
|
|
58
|
+
isOperational: false,
|
|
58
59
|
});
|
|
59
|
-
this.name = "AdapterAlreadyRegisteredError";
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
//# sourceMappingURL=adapterError.base.js.map
|
|
@@ -14,7 +14,6 @@ export class AdapterInitializationError extends AdapterError {
|
|
|
14
14
|
expose: false,
|
|
15
15
|
isOperational: false,
|
|
16
16
|
});
|
|
17
|
-
this.name = "AdapterInitializationError";
|
|
18
17
|
}
|
|
19
18
|
}
|
|
20
19
|
/** Error thrown when an adapter fails to configure. */
|
|
@@ -28,7 +27,6 @@ export class AdapterConfigurationError extends AdapterError {
|
|
|
28
27
|
expose: false,
|
|
29
28
|
isOperational: false,
|
|
30
29
|
});
|
|
31
|
-
this.name = "AdapterConfigurationError";
|
|
32
30
|
}
|
|
33
31
|
}
|
|
34
32
|
/** Error thrown when an adapter fails to dispose. */
|
|
@@ -42,7 +40,6 @@ export class AdapterDisposeError extends AdapterError {
|
|
|
42
40
|
expose: false,
|
|
43
41
|
isOperational: false,
|
|
44
42
|
});
|
|
45
|
-
this.name = "AdapterDisposeError";
|
|
46
43
|
}
|
|
47
44
|
}
|
|
48
45
|
//# sourceMappingURL=adapterError.lifecycle.js.map
|
|
@@ -13,7 +13,6 @@ export class AdapterNotSupportedError extends AdapterError {
|
|
|
13
13
|
statusCode: 501,
|
|
14
14
|
expose: true,
|
|
15
15
|
});
|
|
16
|
-
this.name = "AdapterNotSupportedError";
|
|
17
16
|
}
|
|
18
17
|
}
|
|
19
18
|
/** Error thrown when an adapter capability is missing. */
|
|
@@ -26,7 +25,6 @@ export class AdapterCapabilityMissingError extends AdapterError {
|
|
|
26
25
|
statusCode: 500,
|
|
27
26
|
expose: false,
|
|
28
27
|
});
|
|
29
|
-
this.name = "AdapterCapabilityMissingError";
|
|
30
28
|
}
|
|
31
29
|
}
|
|
32
30
|
/** Error thrown when an adapter fails to connect. */
|
|
@@ -40,7 +38,6 @@ export class AdapterConnectionError extends AdapterError {
|
|
|
40
38
|
expose: false,
|
|
41
39
|
isOperational: false,
|
|
42
40
|
});
|
|
43
|
-
this.name = "AdapterConnectionError";
|
|
44
41
|
}
|
|
45
42
|
}
|
|
46
43
|
/** Error thrown when an adapter operation fails. */
|
|
@@ -55,7 +52,6 @@ export class AdapterOperationError extends AdapterError {
|
|
|
55
52
|
expose: false,
|
|
56
53
|
isOperational: false,
|
|
57
54
|
});
|
|
58
|
-
this.name = "AdapterOperationError";
|
|
59
55
|
}
|
|
60
56
|
}
|
|
61
57
|
/** Error thrown when an adapter operation times out. */
|
|
@@ -71,7 +67,6 @@ export class AdapterTimeoutError extends AdapterError {
|
|
|
71
67
|
expose: false,
|
|
72
68
|
isOperational: false,
|
|
73
69
|
});
|
|
74
|
-
this.name = "AdapterTimeoutError";
|
|
75
70
|
this.timeout = timeout;
|
|
76
71
|
}
|
|
77
72
|
}
|
|
@@ -33,7 +33,7 @@ export class CacheError extends BaseError {
|
|
|
33
33
|
constructor(message = "A cache operation failed.", options = {}) {
|
|
34
34
|
super(message, {
|
|
35
35
|
...options,
|
|
36
|
-
code: options.code ?? ErrorCode.
|
|
36
|
+
code: options.code ?? ErrorCode.CACHE,
|
|
37
37
|
category: options.category ?? ErrorCategory.CACHE,
|
|
38
38
|
severity: options.severity ?? ErrorSeverity.ERROR,
|
|
39
39
|
statusCode: options.statusCode ?? 500,
|
|
@@ -11,8 +11,9 @@ export class DuplicateRegistrationError extends ContainerError {
|
|
|
11
11
|
super(message ?? `Token "${token}" is already registered.`, {
|
|
12
12
|
code: ErrorCode.CONTAINER_DUPLICATE_REGISTRATION,
|
|
13
13
|
token,
|
|
14
|
-
statusCode:
|
|
15
|
-
expose:
|
|
14
|
+
statusCode: 500,
|
|
15
|
+
expose: false,
|
|
16
|
+
isOperational: false,
|
|
16
17
|
});
|
|
17
18
|
this.token = token;
|
|
18
19
|
this.existingScope = options.existingScope;
|
|
@@ -34,8 +35,9 @@ export class RegistrationNotFoundError extends ContainerError {
|
|
|
34
35
|
super(message ?? `No registration found for token "${token}".`, {
|
|
35
36
|
code: ErrorCode.CONTAINER_REGISTRATION_NOT_FOUND,
|
|
36
37
|
token,
|
|
37
|
-
statusCode:
|
|
38
|
-
expose:
|
|
38
|
+
statusCode: 500,
|
|
39
|
+
expose: false,
|
|
40
|
+
isOperational: false,
|
|
39
41
|
});
|
|
40
42
|
this.requestedToken = token;
|
|
41
43
|
}
|
|
@@ -19,7 +19,6 @@ export class HttpAdapterError extends BaseError {
|
|
|
19
19
|
statusCode: options.statusCode ?? 500,
|
|
20
20
|
expose: options.expose ?? false,
|
|
21
21
|
});
|
|
22
|
-
this.name = "HttpAdapterError";
|
|
23
22
|
this.adapter = options.adapter;
|
|
24
23
|
}
|
|
25
24
|
}
|
|
@@ -38,12 +37,15 @@ export class RequestBodyTooLargeError extends HttpAdapterError {
|
|
|
38
37
|
constructor(maxSize, actualSize) {
|
|
39
38
|
super(`HTTP request body exceeds the maximum allowed size of ${maxSize} bytes (actual: ${actualSize}).`, {
|
|
40
39
|
code: ErrorCode.HTTP_REQUEST_BODY_TOO_LARGE,
|
|
40
|
+
statusCode: 413,
|
|
41
|
+
expose: true,
|
|
42
|
+
isOperational: true,
|
|
43
|
+
severity: ErrorSeverity.WARNING,
|
|
41
44
|
metadata: {
|
|
42
45
|
maxSize,
|
|
43
46
|
actualSize,
|
|
44
47
|
},
|
|
45
48
|
});
|
|
46
|
-
this.name = "RequestBodyTooLargeError";
|
|
47
49
|
this.maxSize = maxSize;
|
|
48
50
|
this.actualSize = actualSize;
|
|
49
51
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Advanced HTTP client error classes (422+).
|
|
3
3
|
*/
|
|
4
|
+
import { ErrorCode } from "../../base/types/errorCode.type.js";
|
|
4
5
|
import { HttpError } from "./http.error.js";
|
|
5
6
|
/** 422 Unprocessable Entity */
|
|
6
7
|
export class UnprocessableEntityError extends HttpError {
|
|
@@ -8,9 +9,8 @@ export class UnprocessableEntityError extends HttpError {
|
|
|
8
9
|
super(message, {
|
|
9
10
|
...options,
|
|
10
11
|
statusCode: 422,
|
|
11
|
-
code: options.code ??
|
|
12
|
+
code: options.code ?? ErrorCode.HTTP_UNPROCESSABLE_ENTITY,
|
|
12
13
|
});
|
|
13
|
-
this.name = "UnprocessableEntityError";
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
/** 423 Locked */
|
|
@@ -19,9 +19,8 @@ export class LockedError extends HttpError {
|
|
|
19
19
|
super(message, {
|
|
20
20
|
...options,
|
|
21
21
|
statusCode: 423,
|
|
22
|
-
code: options.code ??
|
|
22
|
+
code: options.code ?? ErrorCode.HTTP_LOCKED,
|
|
23
23
|
});
|
|
24
|
-
this.name = "LockedError";
|
|
25
24
|
}
|
|
26
25
|
}
|
|
27
26
|
/** 424 Failed Dependency */
|
|
@@ -30,9 +29,8 @@ export class FailedDependencyError extends HttpError {
|
|
|
30
29
|
super(message, {
|
|
31
30
|
...options,
|
|
32
31
|
statusCode: 424,
|
|
33
|
-
code: options.code ??
|
|
32
|
+
code: options.code ?? ErrorCode.HTTP_FAILED_DEPENDENCY,
|
|
34
33
|
});
|
|
35
|
-
this.name = "FailedDependencyError";
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
36
|
/** 425 Too Early */
|
|
@@ -41,9 +39,8 @@ export class TooEarlyError extends HttpError {
|
|
|
41
39
|
super(message, {
|
|
42
40
|
...options,
|
|
43
41
|
statusCode: 425,
|
|
44
|
-
code: options.code ??
|
|
42
|
+
code: options.code ?? ErrorCode.HTTP_TOO_EARLY,
|
|
45
43
|
});
|
|
46
|
-
this.name = "TooEarlyError";
|
|
47
44
|
}
|
|
48
45
|
}
|
|
49
46
|
/** 426 Upgrade Required */
|
|
@@ -52,9 +49,8 @@ export class UpgradeRequiredError extends HttpError {
|
|
|
52
49
|
super(message, {
|
|
53
50
|
...options,
|
|
54
51
|
statusCode: 426,
|
|
55
|
-
code: options.code ??
|
|
52
|
+
code: options.code ?? ErrorCode.HTTP_UPGRADE_REQUIRED,
|
|
56
53
|
});
|
|
57
|
-
this.name = "UpgradeRequiredError";
|
|
58
54
|
}
|
|
59
55
|
}
|
|
60
56
|
/** 428 Precondition Required */
|
|
@@ -63,9 +59,8 @@ export class PreconditionRequiredError extends HttpError {
|
|
|
63
59
|
super(message, {
|
|
64
60
|
...options,
|
|
65
61
|
statusCode: 428,
|
|
66
|
-
code: options.code ??
|
|
62
|
+
code: options.code ?? ErrorCode.HTTP_PRECONDITION_REQUIRED,
|
|
67
63
|
});
|
|
68
|
-
this.name = "PreconditionRequiredError";
|
|
69
64
|
}
|
|
70
65
|
}
|
|
71
66
|
/** 429 Too Many Requests */
|
|
@@ -74,9 +69,8 @@ export class TooManyRequestsError extends HttpError {
|
|
|
74
69
|
super(message, {
|
|
75
70
|
...options,
|
|
76
71
|
statusCode: 429,
|
|
77
|
-
code: options.code ??
|
|
72
|
+
code: options.code ?? ErrorCode.HTTP_TOO_MANY_REQUESTS,
|
|
78
73
|
});
|
|
79
|
-
this.name = "TooManyRequestsError";
|
|
80
74
|
}
|
|
81
75
|
}
|
|
82
76
|
/** 431 Request Header Fields Too Large */
|
|
@@ -85,9 +79,8 @@ export class RequestHeaderFieldsTooLargeError extends HttpError {
|
|
|
85
79
|
super(message, {
|
|
86
80
|
...options,
|
|
87
81
|
statusCode: 431,
|
|
88
|
-
code: options.code ??
|
|
82
|
+
code: options.code ?? ErrorCode.HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE,
|
|
89
83
|
});
|
|
90
|
-
this.name = "RequestHeaderFieldsTooLargeError";
|
|
91
84
|
}
|
|
92
85
|
}
|
|
93
86
|
/** 499 Request Aborted */
|
|
@@ -96,9 +89,8 @@ export class RequestAbortedError extends HttpError {
|
|
|
96
89
|
super(message, {
|
|
97
90
|
...options,
|
|
98
91
|
statusCode: 499,
|
|
99
|
-
code: options.code ??
|
|
92
|
+
code: options.code ?? ErrorCode.HTTP_REQUEST_ABORTED,
|
|
100
93
|
});
|
|
101
|
-
this.name = "RequestAbortedError";
|
|
102
94
|
}
|
|
103
95
|
}
|
|
104
96
|
//# sourceMappingURL=httpClientError.advanced.js.map
|
|
@@ -11,6 +11,8 @@ export interface HttpClientClientErrorOptions {
|
|
|
11
11
|
readonly code?: string;
|
|
12
12
|
readonly expose?: boolean;
|
|
13
13
|
readonly metadata?: ErrorMetadata;
|
|
14
|
+
/** Local status code. Defaults to a mapping of the upstream `status` (502 for upstream failures). */
|
|
15
|
+
readonly statusCode?: number;
|
|
14
16
|
readonly status?: number;
|
|
15
17
|
readonly statusText?: string;
|
|
16
18
|
readonly url?: string;
|
|
@@ -35,4 +37,13 @@ export declare class HttpClientError extends BaseError {
|
|
|
35
37
|
get isAbortError(): boolean;
|
|
36
38
|
get isHttpStatusError(): boolean;
|
|
37
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Maps an upstream HTTP status to the local status reported to our caller.
|
|
42
|
+
*
|
|
43
|
+
* Upstream failures are our problem, not the caller's: everything except
|
|
44
|
+
* 429 (which is passed through) maps to 502 Bad Gateway.
|
|
45
|
+
*/
|
|
46
|
+
export declare function mapUpstreamStatus(status: number | undefined): number;
|
|
47
|
+
/** Removes credentials and the query string from a URL before storing it. */
|
|
48
|
+
export declare function stripUrlCredentials(url: string): string;
|
|
38
49
|
//# sourceMappingURL=httpClientError.base.d.ts.map
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
* HTTP client error base class.
|
|
3
3
|
*/
|
|
4
4
|
import { BaseError } from "../../base/core/baseError.core.js";
|
|
5
|
+
import { ErrorCategory } from "../../base/types/errorCategory.type.js";
|
|
6
|
+
import { ErrorCode } from "../../base/types/errorCode.type.js";
|
|
7
|
+
import { ErrorSeverity } from "../../base/types/errorSeverity.type.js";
|
|
5
8
|
/**
|
|
6
9
|
* Base HTTP client error for outbound request failures.
|
|
7
10
|
*
|
|
@@ -15,30 +18,67 @@ export class HttpClientError extends BaseError {
|
|
|
15
18
|
response;
|
|
16
19
|
request;
|
|
17
20
|
constructor(message, options = {}) {
|
|
21
|
+
const url = options.url !== undefined ? stripUrlCredentials(options.url) : undefined;
|
|
18
22
|
super(message, {
|
|
19
|
-
code: options.code ??
|
|
23
|
+
code: options.code ?? ErrorCode.HTTP_CLIENT,
|
|
24
|
+
category: ErrorCategory.NETWORK,
|
|
25
|
+
severity: ErrorSeverity.ERROR,
|
|
26
|
+
statusCode: options.statusCode ?? mapUpstreamStatus(options.status),
|
|
20
27
|
expose: options.expose ?? false,
|
|
21
|
-
|
|
28
|
+
isOperational: true,
|
|
29
|
+
metadata: {
|
|
30
|
+
...options.metadata,
|
|
31
|
+
...(options.status !== undefined ? { upstreamStatus: options.status } : {}),
|
|
32
|
+
...(url !== undefined ? { url } : {}),
|
|
33
|
+
},
|
|
22
34
|
cause: options.cause,
|
|
23
35
|
});
|
|
24
|
-
this.name = "HttpClientError";
|
|
25
36
|
this.status = options.status;
|
|
26
37
|
this.statusText = options.statusText;
|
|
27
|
-
this.url =
|
|
38
|
+
this.url = url;
|
|
28
39
|
this.response = options.response;
|
|
29
40
|
this.request = options.request;
|
|
30
41
|
}
|
|
31
42
|
get isNetworkError() {
|
|
32
|
-
return this.code ===
|
|
43
|
+
return (this.code === ErrorCode.HTTP_CLIENT_NETWORK ||
|
|
44
|
+
this.code === "HTTP_CLIENT_NETWORK_ERROR");
|
|
33
45
|
}
|
|
34
46
|
get isTimeoutError() {
|
|
35
|
-
return this.code ===
|
|
47
|
+
return (this.code === ErrorCode.HTTP_CLIENT_TIMEOUT ||
|
|
48
|
+
this.code === "HTTP_CLIENT_TIMEOUT");
|
|
36
49
|
}
|
|
37
50
|
get isAbortError() {
|
|
38
|
-
return this.code ===
|
|
51
|
+
return (this.code === ErrorCode.HTTP_CLIENT_ABORTED ||
|
|
52
|
+
this.code === "HTTP_CLIENT_ABORTED");
|
|
39
53
|
}
|
|
40
54
|
get isHttpStatusError() {
|
|
41
55
|
return this.status !== undefined;
|
|
42
56
|
}
|
|
43
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Maps an upstream HTTP status to the local status reported to our caller.
|
|
60
|
+
*
|
|
61
|
+
* Upstream failures are our problem, not the caller's: everything except
|
|
62
|
+
* 429 (which is passed through) maps to 502 Bad Gateway.
|
|
63
|
+
*/
|
|
64
|
+
export function mapUpstreamStatus(status) {
|
|
65
|
+
if (status === 429)
|
|
66
|
+
return 429;
|
|
67
|
+
return 502;
|
|
68
|
+
}
|
|
69
|
+
/** Removes credentials and the query string from a URL before storing it. */
|
|
70
|
+
export function stripUrlCredentials(url) {
|
|
71
|
+
try {
|
|
72
|
+
const parsed = new URL(url);
|
|
73
|
+
parsed.username = "";
|
|
74
|
+
parsed.password = "";
|
|
75
|
+
parsed.search = "";
|
|
76
|
+
parsed.hash = "";
|
|
77
|
+
return parsed.toString();
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
const withoutQuery = url.split(/[?#]/)[0] ?? url;
|
|
81
|
+
return withoutQuery.replace(/\/\/[^/@]*@/, "//");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
44
84
|
//# sourceMappingURL=httpClientError.base.js.map
|
|
@@ -23,6 +23,20 @@ export declare class HttpNotFoundError extends HttpError {
|
|
|
23
23
|
export declare class MethodNotAllowedError extends HttpError {
|
|
24
24
|
readonly methods: readonly string[];
|
|
25
25
|
constructor(methods?: readonly string[], message?: string, options?: HttpClientErrorOptions);
|
|
26
|
+
toJSON(): {
|
|
27
|
+
name: string;
|
|
28
|
+
message: string;
|
|
29
|
+
code: string;
|
|
30
|
+
category: import("../../index.js").ErrorCategory;
|
|
31
|
+
severity: import("../../index.js").ErrorSeverity;
|
|
32
|
+
statusCode: number;
|
|
33
|
+
expose: boolean;
|
|
34
|
+
isOperational: boolean;
|
|
35
|
+
metadata: Readonly<import("../../index.js").ErrorMetadata>;
|
|
36
|
+
stack?: string;
|
|
37
|
+
cause?: import("../../index.js").SerializedBaseError | unknown;
|
|
38
|
+
methods: readonly string[];
|
|
39
|
+
};
|
|
26
40
|
}
|
|
27
41
|
/** 406 Not Acceptable */
|
|
28
42
|
export declare class NotAcceptableError extends HttpError {
|