error.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. "use strict";
  2. // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
  3. Object.defineProperty(exports, "__esModule", { value: true });
  4. exports.ContentFilterFinishReasonError = exports.LengthFinishReasonError = exports.InternalServerError = exports.RateLimitError = exports.UnprocessableEntityError = exports.ConflictError = exports.NotFoundError = exports.PermissionDeniedError = exports.AuthenticationError = exports.BadRequestError = exports.APIConnectionTimeoutError = exports.APIConnectionError = exports.APIUserAbortError = exports.APIError = exports.OpenAIError = void 0;
  5. const core_1 = require("./core.js");
  6. class OpenAIError extends Error {
  7. }
  8. exports.OpenAIError = OpenAIError;
  9. class APIError extends OpenAIError {
  10. constructor(status, error, message, headers) {
  11. super(`${APIError.makeMessage(status, error, message)}`);
  12. this.status = status;
  13. this.headers = headers;
  14. this.request_id = headers?.['x-request-id'];
  15. this.error = error;
  16. const data = error;
  17. this.code = data?.['code'];
  18. this.param = data?.['param'];
  19. this.type = data?.['type'];
  20. }
  21. static makeMessage(status, error, message) {
  22. const msg = error?.message ?
  23. typeof error.message === 'string' ?
  24. error.message
  25. : JSON.stringify(error.message)
  26. : error ? JSON.stringify(error)
  27. : message;
  28. if (status && msg) {
  29. return `${status} ${msg}`;
  30. }
  31. if (status) {
  32. return `${status} status code (no body)`;
  33. }
  34. if (msg) {
  35. return msg;
  36. }
  37. return '(no status code or body)';
  38. }
  39. static generate(status, errorResponse, message, headers) {
  40. if (!status || !headers) {
  41. return new APIConnectionError({ message, cause: (0, core_1.castToError)(errorResponse) });
  42. }
  43. const error = errorResponse?.['error'];
  44. if (status === 400) {
  45. return new BadRequestError(status, error, message, headers);
  46. }
  47. if (status === 401) {
  48. return new AuthenticationError(status, error, message, headers);
  49. }
  50. if (status === 403) {
  51. return new PermissionDeniedError(status, error, message, headers);
  52. }
  53. if (status === 404) {
  54. return new NotFoundError(status, error, message, headers);
  55. }
  56. if (status === 409) {
  57. return new ConflictError(status, error, message, headers);
  58. }
  59. if (status === 422) {
  60. return new UnprocessableEntityError(status, error, message, headers);
  61. }
  62. if (status === 429) {
  63. return new RateLimitError(status, error, message, headers);
  64. }
  65. if (status >= 500) {
  66. return new InternalServerError(status, error, message, headers);
  67. }
  68. return new APIError(status, error, message, headers);
  69. }
  70. }
  71. exports.APIError = APIError;
  72. class APIUserAbortError extends APIError {
  73. constructor({ message } = {}) {
  74. super(undefined, undefined, message || 'Request was aborted.', undefined);
  75. }
  76. }
  77. exports.APIUserAbortError = APIUserAbortError;
  78. class APIConnectionError extends APIError {
  79. constructor({ message, cause }) {
  80. super(undefined, undefined, message || 'Connection error.', undefined);
  81. // in some environments the 'cause' property is already declared
  82. // @ts-ignore
  83. if (cause)
  84. this.cause = cause;
  85. }
  86. }
  87. exports.APIConnectionError = APIConnectionError;
  88. class APIConnectionTimeoutError extends APIConnectionError {
  89. constructor({ message } = {}) {
  90. super({ message: message ?? 'Request timed out.' });
  91. }
  92. }
  93. exports.APIConnectionTimeoutError = APIConnectionTimeoutError;
  94. class BadRequestError extends APIError {
  95. }
  96. exports.BadRequestError = BadRequestError;
  97. class AuthenticationError extends APIError {
  98. }
  99. exports.AuthenticationError = AuthenticationError;
  100. class PermissionDeniedError extends APIError {
  101. }
  102. exports.PermissionDeniedError = PermissionDeniedError;
  103. class NotFoundError extends APIError {
  104. }
  105. exports.NotFoundError = NotFoundError;
  106. class ConflictError extends APIError {
  107. }
  108. exports.ConflictError = ConflictError;
  109. class UnprocessableEntityError extends APIError {
  110. }
  111. exports.UnprocessableEntityError = UnprocessableEntityError;
  112. class RateLimitError extends APIError {
  113. }
  114. exports.RateLimitError = RateLimitError;
  115. class InternalServerError extends APIError {
  116. }
  117. exports.InternalServerError = InternalServerError;
  118. class LengthFinishReasonError extends OpenAIError {
  119. constructor() {
  120. super(`Could not parse response content as the length limit was reached`);
  121. }
  122. }
  123. exports.LengthFinishReasonError = LengthFinishReasonError;
  124. class ContentFilterFinishReasonError extends OpenAIError {
  125. constructor() {
  126. super(`Could not parse response content as the request was rejected by the content filter`);
  127. }
  128. }
  129. exports.ContentFilterFinishReasonError = ContentFilterFinishReasonError;
  130. //# sourceMappingURL=error.js.map