117 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			117 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
 | ||
|  | import { castToError } from "../internal/errors.mjs"; | ||
|  | export class OpenAIError extends Error { | ||
|  | } | ||
|  | export class APIError extends OpenAIError { | ||
|  |     constructor(status, error, message, headers) { | ||
|  |         super(`${APIError.makeMessage(status, error, message)}`); | ||
|  |         this.status = status; | ||
|  |         this.headers = headers; | ||
|  |         this.requestID = headers?.get('x-request-id'); | ||
|  |         this.error = error; | ||
|  |         const data = error; | ||
|  |         this.code = data?.['code']; | ||
|  |         this.param = data?.['param']; | ||
|  |         this.type = data?.['type']; | ||
|  |     } | ||
|  |     static makeMessage(status, error, message) { | ||
|  |         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, errorResponse, message, headers) { | ||
|  |         if (!status || !headers) { | ||
|  |             return new APIConnectionError({ message, cause: castToError(errorResponse) }); | ||
|  |         } | ||
|  |         const error = errorResponse?.['error']; | ||
|  |         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 { | ||
|  |     constructor({ message } = {}) { | ||
|  |         super(undefined, undefined, message || 'Request was aborted.', undefined); | ||
|  |     } | ||
|  | } | ||
|  | export class APIConnectionError extends APIError { | ||
|  |     constructor({ message, cause }) { | ||
|  |         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 } = {}) { | ||
|  |         super({ message: message ?? 'Request timed out.' }); | ||
|  |     } | ||
|  | } | ||
|  | export class BadRequestError extends APIError { | ||
|  | } | ||
|  | export class AuthenticationError extends APIError { | ||
|  | } | ||
|  | export class PermissionDeniedError extends APIError { | ||
|  | } | ||
|  | export class NotFoundError extends APIError { | ||
|  | } | ||
|  | export class ConflictError extends APIError { | ||
|  | } | ||
|  | export class UnprocessableEntityError extends APIError { | ||
|  | } | ||
|  | export class RateLimitError extends APIError { | ||
|  | } | ||
|  | export class InternalServerError extends APIError { | ||
|  | } | ||
|  | export class LengthFinishReasonError extends OpenAIError { | ||
|  |     constructor() { | ||
|  |         super(`Could not parse response content as the length limit was reached`); | ||
|  |     } | ||
|  | } | ||
|  | export class ContentFilterFinishReasonError extends OpenAIError { | ||
|  |     constructor() { | ||
|  |         super(`Could not parse response content as the request was rejected by the content filter`); | ||
|  |     } | ||
|  | } | ||
|  | export class InvalidWebhookSignatureError extends Error { | ||
|  |     constructor(message) { | ||
|  |         super(message); | ||
|  |     } | ||
|  | } | ||
|  | //# sourceMappingURL=error.mjs.map
 |