Error Handling
All upload methods throw UploadError
with:
- Human-readable message
- Error type classification
- HTTP status code
- Retryability flag
export enum UploadErrorType {
PERMISSION_ERROR = 'PERMISSION_ERROR',
EXPIRED_URL = 'EXPIRED_URL',
FILE_VALIDATION_ERROR = 'FILE_VALIDATION_ERROR',
PRESIGNED_URL_ERROR = 'PRESIGNED_URL_ERROR',
SIGNED_URL_ERROR = 'SIGNED_URL_ERROR',
CORS_CONFIG_ERROR = 'CORS_CONFIG_ERROR',
TEMPORARY_CREDENTIALS_ERROR = 'TEMPORARY_CREDENTIALS_ERROR',
UNKNOWN_UPLOAD_ERROR = 'UNKNOWN_UPLOAD_ERROR',
}
export class UploadError extends Error {
private DEFAULT_ERROR_STATUS_CODE = 500
constructor(
message: string,
public type = UploadErrorType.UNKNOWN_UPLOAD_ERROR,
public retryable = false,
public status?: number,
) {
super(message)
this.name = 'UploadError'
this.status = status || this.DEFAULT_ERROR_STATUS_CODE
}
}