| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 'use strict';
- import utils from '../utils.js';
- class AxiosError extends Error {
- static from(error, code, config, request, response, customProps) {
- const axiosError = new AxiosError(error.message, code || error.code, config, request, response);
- axiosError.cause = error;
- axiosError.name = error.name;
- // Preserve status from the original error if not already set from response
- if (error.status != null && axiosError.status == null) {
- axiosError.status = error.status;
- }
- customProps && Object.assign(axiosError, customProps);
- return axiosError;
- }
- /**
- * Create an Error with the specified message, config, error code, request and response.
- *
- * @param {string} message The error message.
- * @param {string} [code] The error code (for example, 'ECONNABORTED').
- * @param {Object} [config] The config.
- * @param {Object} [request] The request.
- * @param {Object} [response] The response.
- *
- * @returns {Error} The created error.
- */
- constructor(message, code, config, request, response) {
- super(message);
-
- // Make message enumerable to maintain backward compatibility
- // The native Error constructor sets message as non-enumerable,
- // but axios < v1.13.3 had it as enumerable
- Object.defineProperty(this, 'message', {
- value: message,
- enumerable: true,
- writable: true,
- configurable: true
- });
-
- this.name = 'AxiosError';
- this.isAxiosError = true;
- code && (this.code = code);
- config && (this.config = config);
- request && (this.request = request);
- if (response) {
- this.response = response;
- this.status = response.status;
- }
- }
- toJSON() {
- return {
- // Standard
- message: this.message,
- name: this.name,
- // Microsoft
- description: this.description,
- number: this.number,
- // Mozilla
- fileName: this.fileName,
- lineNumber: this.lineNumber,
- columnNumber: this.columnNumber,
- stack: this.stack,
- // Axios
- config: utils.toJSONObject(this.config),
- code: this.code,
- status: this.status,
- };
- }
- }
- // This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.
- AxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';
- AxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';
- AxiosError.ECONNABORTED = 'ECONNABORTED';
- AxiosError.ETIMEDOUT = 'ETIMEDOUT';
- AxiosError.ERR_NETWORK = 'ERR_NETWORK';
- AxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';
- AxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';
- AxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';
- AxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';
- AxiosError.ERR_CANCELED = 'ERR_CANCELED';
- AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';
- AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';
- export default AxiosError;
|