Spaces:
Build error
Build error
| // File generated from our OpenAPI spec by Stainless. | |
| import { castToError, Headers } from './core'; | |
| export class AnthropicError extends Error {} | |
| export class APIError extends AnthropicError { | |
| readonly status: number | undefined; | |
| readonly headers: Headers | undefined; | |
| readonly error: Object | undefined; | |
| constructor( | |
| status: number | undefined, | |
| error: Object | undefined, | |
| message: string | undefined, | |
| headers: Headers | undefined, | |
| ) { | |
| super(`${APIError.makeMessage(status, error, message)}`); | |
| this.status = status; | |
| this.headers = headers; | |
| this.error = error; | |
| } | |
| private static makeMessage(status: number | undefined, error: any, message: string | undefined) { | |
| const msg = | |
| error?.message ? | |
| typeof error.message === 'string' ? error.message | |
| : JSON.stringify(error.message) | |
| : error ? JSON.stringify(error) | |
| : message; | |
| if (status && msg) { | |
| return `${status} ${msg}`; | |
| } | |
| if (status) { | |
| return `${status} status code (no body)`; | |
| } | |
| if (msg) { | |
| return msg; | |
| } | |
| return '(no status code or body)'; | |
| } | |
| static generate( | |
| status: number | undefined, | |
| errorResponse: Object | undefined, | |
| message: string | undefined, | |
| headers: Headers | undefined, | |
| ) { | |
| if (!status) { | |
| return new APIConnectionError({ cause: castToError(errorResponse) }); | |
| } | |
| const error = errorResponse as Record<string, any>; | |
| if (status === 400) { | |
| return new BadRequestError(status, error, message, headers); | |
| } | |
| if (status === 401) { | |
| return new AuthenticationError(status, error, message, headers); | |
| } | |
| if (status === 403) { | |
| return new PermissionDeniedError(status, error, message, headers); | |
| } | |
| if (status === 404) { | |
| return new NotFoundError(status, error, message, headers); | |
| } | |
| if (status === 409) { | |
| return new ConflictError(status, error, message, headers); | |
| } | |
| if (status === 422) { | |
| return new UnprocessableEntityError(status, error, message, headers); | |
| } | |
| if (status === 429) { | |
| return new RateLimitError(status, error, message, headers); | |
| } | |
| if (status >= 500) { | |
| return new InternalServerError(status, error, message, headers); | |
| } | |
| return new APIError(status, error, message, headers); | |
| } | |
| } | |
| export class APIUserAbortError extends APIError { | |
| override readonly status: undefined = undefined; | |
| constructor({ message }: { message?: string } = {}) { | |
| super(undefined, undefined, message || 'Request was aborted.', undefined); | |
| } | |
| } | |
| export class APIConnectionError extends APIError { | |
| override readonly status: undefined = undefined; | |
| constructor({ message, cause }: { message?: string; cause?: Error | undefined }) { | |
| super(undefined, undefined, message || 'Connection error.', undefined); | |
| // in some environments the 'cause' property is already declared | |
| // @ts-ignore | |
| if (cause) this.cause = cause; | |
| } | |
| } | |
| export class APIConnectionTimeoutError extends APIConnectionError { | |
| constructor({ message }: { message?: string } = {}) { | |
| super({ message: message ?? 'Request timed out.' }); | |
| } | |
| } | |
| export class BadRequestError extends APIError { | |
| override readonly status: 400 = 400; | |
| } | |
| export class AuthenticationError extends APIError { | |
| override readonly status: 401 = 401; | |
| } | |
| export class PermissionDeniedError extends APIError { | |
| override readonly status: 403 = 403; | |
| } | |
| export class NotFoundError extends APIError { | |
| override readonly status: 404 = 404; | |
| } | |
| export class ConflictError extends APIError { | |
| override readonly status: 409 = 409; | |
| } | |
| export class UnprocessableEntityError extends APIError { | |
| override readonly status: 422 = 422; | |
| } | |
| export class RateLimitError extends APIError { | |
| override readonly status: 429 = 429; | |
| } | |
| export class InternalServerError extends APIError {} | |