| | 'use strict'; |
| |
|
| | import utils from '../utils.js'; |
| | import AxiosError from '../core/AxiosError.js'; |
| | import transitionalDefaults from './transitional.js'; |
| | import toFormData from '../helpers/toFormData.js'; |
| | import toURLEncodedForm from '../helpers/toURLEncodedForm.js'; |
| | import platform from '../platform/index.js'; |
| | import formDataToJSON from '../helpers/formDataToJSON.js'; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | function stringifySafely(rawValue, parser, encoder) { |
| | if (utils.isString(rawValue)) { |
| | try { |
| | (parser || JSON.parse)(rawValue); |
| | return utils.trim(rawValue); |
| | } catch (e) { |
| | if (e.name !== 'SyntaxError') { |
| | throw e; |
| | } |
| | } |
| | } |
| |
|
| | return (encoder || JSON.stringify)(rawValue); |
| | } |
| |
|
| | const defaults = { |
| |
|
| | transitional: transitionalDefaults, |
| |
|
| | adapter: ['xhr', 'http', 'fetch'], |
| |
|
| | transformRequest: [function transformRequest(data, headers) { |
| | const contentType = headers.getContentType() || ''; |
| | const hasJSONContentType = contentType.indexOf('application/json') > -1; |
| | const isObjectPayload = utils.isObject(data); |
| |
|
| | if (isObjectPayload && utils.isHTMLForm(data)) { |
| | data = new FormData(data); |
| | } |
| |
|
| | const isFormData = utils.isFormData(data); |
| |
|
| | if (isFormData) { |
| | return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; |
| | } |
| |
|
| | if (utils.isArrayBuffer(data) || |
| | utils.isBuffer(data) || |
| | utils.isStream(data) || |
| | utils.isFile(data) || |
| | utils.isBlob(data) || |
| | utils.isReadableStream(data) |
| | ) { |
| | return data; |
| | } |
| | if (utils.isArrayBufferView(data)) { |
| | return data.buffer; |
| | } |
| | if (utils.isURLSearchParams(data)) { |
| | headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); |
| | return data.toString(); |
| | } |
| |
|
| | let isFileList; |
| |
|
| | if (isObjectPayload) { |
| | if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { |
| | return toURLEncodedForm(data, this.formSerializer).toString(); |
| | } |
| |
|
| | if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { |
| | const _FormData = this.env && this.env.FormData; |
| |
|
| | return toFormData( |
| | isFileList ? {'files[]': data} : data, |
| | _FormData && new _FormData(), |
| | this.formSerializer |
| | ); |
| | } |
| | } |
| |
|
| | if (isObjectPayload || hasJSONContentType ) { |
| | headers.setContentType('application/json', false); |
| | return stringifySafely(data); |
| | } |
| |
|
| | return data; |
| | }], |
| |
|
| | transformResponse: [function transformResponse(data) { |
| | const transitional = this.transitional || defaults.transitional; |
| | const forcedJSONParsing = transitional && transitional.forcedJSONParsing; |
| | const JSONRequested = this.responseType === 'json'; |
| |
|
| | if (utils.isResponse(data) || utils.isReadableStream(data)) { |
| | return data; |
| | } |
| |
|
| | if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { |
| | const silentJSONParsing = transitional && transitional.silentJSONParsing; |
| | const strictJSONParsing = !silentJSONParsing && JSONRequested; |
| |
|
| | try { |
| | return JSON.parse(data); |
| | } catch (e) { |
| | if (strictJSONParsing) { |
| | if (e.name === 'SyntaxError') { |
| | throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); |
| | } |
| | throw e; |
| | } |
| | } |
| | } |
| |
|
| | return data; |
| | }], |
| |
|
| | |
| | |
| | |
| | |
| | timeout: 0, |
| |
|
| | xsrfCookieName: 'XSRF-TOKEN', |
| | xsrfHeaderName: 'X-XSRF-TOKEN', |
| |
|
| | maxContentLength: -1, |
| | maxBodyLength: -1, |
| |
|
| | env: { |
| | FormData: platform.classes.FormData, |
| | Blob: platform.classes.Blob |
| | }, |
| |
|
| | validateStatus: function validateStatus(status) { |
| | return status >= 200 && status < 300; |
| | }, |
| |
|
| | headers: { |
| | common: { |
| | 'Accept': 'application/json, text/plain, */*', |
| | 'Content-Type': undefined |
| | } |
| | } |
| | }; |
| |
|
| | utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { |
| | defaults.headers[method] = {}; |
| | }); |
| |
|
| | export default defaults; |
| |
|