axios 1.6.8 → 1.7.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of axios might be problematic. Click here for more details.
- package/CHANGELOG.md +12 -0
- package/README.md +30 -14
- package/dist/axios.js +954 -289
- package/dist/axios.js.map +1 -1
- package/dist/axios.min.js +1 -1
- package/dist/axios.min.js.map +1 -1
- package/dist/browser/axios.cjs +651 -302
- package/dist/browser/axios.cjs.map +1 -1
- package/dist/esm/axios.js +651 -302
- package/dist/esm/axios.js.map +1 -1
- package/dist/esm/axios.min.js +1 -1
- package/dist/esm/axios.min.js.map +1 -1
- package/dist/node/axios.cjs +560 -240
- package/dist/node/axios.cjs.map +1 -1
- package/index.d.cts +5 -2
- package/index.d.ts +5 -2
- package/lib/adapters/adapters.js +3 -1
- package/lib/adapters/fetch.js +197 -0
- package/lib/adapters/xhr.js +31 -101
- package/lib/core/AxiosHeaders.js +4 -0
- package/lib/defaults/index.js +7 -2
- package/lib/env/data.js +1 -1
- package/lib/helpers/AxiosTransformStream.js +9 -8
- package/lib/helpers/composeSignals.js +46 -0
- package/lib/helpers/progressEventReducer.js +32 -0
- package/lib/helpers/resolveConfig.js +57 -0
- package/lib/helpers/throttle.js +5 -3
- package/lib/helpers/trackStream.js +56 -0
- package/lib/platform/common/utils.js +4 -1
- package/lib/utils.js +7 -2
- package/package.json +3 -2
package/dist/node/axios.cjs
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
// Axios v1.
|
1
|
+
// Axios v1.7.0-beta.0 Copyright (c) 2024 Matt Zabriskie and contributors
|
2
2
|
'use strict';
|
3
3
|
|
4
4
|
const FormData$1 = require('form-data');
|
@@ -236,6 +236,8 @@ const isFormData = (thing) => {
|
|
236
236
|
*/
|
237
237
|
const isURLSearchParams = kindOfTest('URLSearchParams');
|
238
238
|
|
239
|
+
const [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);
|
240
|
+
|
239
241
|
/**
|
240
242
|
* Trim excess whitespace off the beginning and end of a string
|
241
243
|
*
|
@@ -624,8 +626,7 @@ const toObjectSet = (arrayOrString, delimiter) => {
|
|
624
626
|
const noop = () => {};
|
625
627
|
|
626
628
|
const toFiniteNumber = (value, defaultValue) => {
|
627
|
-
value = +value;
|
628
|
-
return Number.isFinite(value) ? value : defaultValue;
|
629
|
+
return value != null && Number.isFinite(value = +value) ? value : defaultValue;
|
629
630
|
};
|
630
631
|
|
631
632
|
const ALPHA = 'abcdefghijklmnopqrstuvwxyz';
|
@@ -706,6 +707,10 @@ const utils$1 = {
|
|
706
707
|
isBoolean,
|
707
708
|
isObject,
|
708
709
|
isPlainObject,
|
710
|
+
isReadableStream,
|
711
|
+
isRequest,
|
712
|
+
isResponse,
|
713
|
+
isHeaders,
|
709
714
|
isUndefined,
|
710
715
|
isDate,
|
711
716
|
isFile,
|
@@ -1295,11 +1300,14 @@ const hasStandardBrowserWebWorkerEnv = (() => {
|
|
1295
1300
|
);
|
1296
1301
|
})();
|
1297
1302
|
|
1303
|
+
const origin = hasBrowserEnv && window.location.href || 'http://localhost';
|
1304
|
+
|
1298
1305
|
const utils = /*#__PURE__*/Object.freeze({
|
1299
1306
|
__proto__: null,
|
1300
1307
|
hasBrowserEnv: hasBrowserEnv,
|
1301
1308
|
hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,
|
1302
|
-
hasStandardBrowserEnv: hasStandardBrowserEnv
|
1309
|
+
hasStandardBrowserEnv: hasStandardBrowserEnv,
|
1310
|
+
origin: origin
|
1303
1311
|
});
|
1304
1312
|
|
1305
1313
|
const platform = {
|
@@ -1439,7 +1447,7 @@ const defaults = {
|
|
1439
1447
|
|
1440
1448
|
transitional: transitionalDefaults,
|
1441
1449
|
|
1442
|
-
adapter: ['xhr', 'http'],
|
1450
|
+
adapter: ['xhr', 'http', 'fetch'],
|
1443
1451
|
|
1444
1452
|
transformRequest: [function transformRequest(data, headers) {
|
1445
1453
|
const contentType = headers.getContentType() || '';
|
@@ -1460,7 +1468,8 @@ const defaults = {
|
|
1460
1468
|
utils$1.isBuffer(data) ||
|
1461
1469
|
utils$1.isStream(data) ||
|
1462
1470
|
utils$1.isFile(data) ||
|
1463
|
-
utils$1.isBlob(data)
|
1471
|
+
utils$1.isBlob(data) ||
|
1472
|
+
utils$1.isReadableStream(data)
|
1464
1473
|
) {
|
1465
1474
|
return data;
|
1466
1475
|
}
|
@@ -1503,6 +1512,10 @@ const defaults = {
|
|
1503
1512
|
const forcedJSONParsing = transitional && transitional.forcedJSONParsing;
|
1504
1513
|
const JSONRequested = this.responseType === 'json';
|
1505
1514
|
|
1515
|
+
if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {
|
1516
|
+
return data;
|
1517
|
+
}
|
1518
|
+
|
1506
1519
|
if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {
|
1507
1520
|
const silentJSONParsing = transitional && transitional.silentJSONParsing;
|
1508
1521
|
const strictJSONParsing = !silentJSONParsing && JSONRequested;
|
@@ -1706,6 +1719,10 @@ class AxiosHeaders {
|
|
1706
1719
|
setHeaders(header, valueOrRewrite);
|
1707
1720
|
} else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
|
1708
1721
|
setHeaders(parseHeaders(header), valueOrRewrite);
|
1722
|
+
} else if (utils$1.isHeaders(header)) {
|
1723
|
+
for (const [key, value] of header.entries()) {
|
1724
|
+
setHeader(value, key, rewrite);
|
1725
|
+
}
|
1709
1726
|
} else {
|
1710
1727
|
header != null && setHeader(valueOrRewrite, header, rewrite);
|
1711
1728
|
}
|
@@ -2018,7 +2035,7 @@ function buildFullPath(baseURL, requestedURL) {
|
|
2018
2035
|
return requestedURL;
|
2019
2036
|
}
|
2020
2037
|
|
2021
|
-
const VERSION = "1.
|
2038
|
+
const VERSION = "1.7.0-beta.0";
|
2022
2039
|
|
2023
2040
|
function parseProtocol(url) {
|
2024
2041
|
const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
|
@@ -2083,7 +2100,9 @@ function throttle(fn, freq) {
|
|
2083
2100
|
let timestamp = 0;
|
2084
2101
|
const threshold = 1000 / freq;
|
2085
2102
|
let timer = null;
|
2086
|
-
return function throttled(
|
2103
|
+
return function throttled() {
|
2104
|
+
const force = this === true;
|
2105
|
+
|
2087
2106
|
const now = Date.now();
|
2088
2107
|
if (force || now - timestamp > threshold) {
|
2089
2108
|
if (timer) {
|
@@ -2091,13 +2110,13 @@ function throttle(fn, freq) {
|
|
2091
2110
|
timer = null;
|
2092
2111
|
}
|
2093
2112
|
timestamp = now;
|
2094
|
-
return fn.apply(null,
|
2113
|
+
return fn.apply(null, arguments);
|
2095
2114
|
}
|
2096
2115
|
if (!timer) {
|
2097
2116
|
timer = setTimeout(() => {
|
2098
2117
|
timer = null;
|
2099
2118
|
timestamp = Date.now();
|
2100
|
-
return fn.apply(null,
|
2119
|
+
return fn.apply(null, arguments);
|
2101
2120
|
}, threshold - (now - timestamp));
|
2102
2121
|
}
|
2103
2122
|
};
|
@@ -2215,19 +2234,20 @@ class AxiosTransformStream extends stream__default["default"].Transform{
|
|
2215
2234
|
|
2216
2235
|
process.nextTick(() => {
|
2217
2236
|
self.emit('progress', {
|
2218
|
-
|
2219
|
-
|
2220
|
-
|
2221
|
-
|
2222
|
-
|
2223
|
-
|
2224
|
-
(totalBytes - bytesTransferred) / rate : undefined
|
2237
|
+
loaded: bytesTransferred,
|
2238
|
+
total: totalBytes,
|
2239
|
+
progress: totalBytes ? (bytesTransferred / totalBytes) : undefined,
|
2240
|
+
bytes: progressBytes,
|
2241
|
+
rate: rate ? rate : undefined,
|
2242
|
+
estimated: rate && totalBytes && bytesTransferred <= totalBytes ?
|
2243
|
+
(totalBytes - bytesTransferred) / rate : undefined,
|
2244
|
+
lengthComputable: totalBytes != null
|
2225
2245
|
});
|
2226
2246
|
});
|
2227
2247
|
}, internals.ticksRate);
|
2228
2248
|
|
2229
2249
|
const onFinish = () => {
|
2230
|
-
internals.updateProgress(true);
|
2250
|
+
internals.updateProgress.call(true);
|
2231
2251
|
};
|
2232
2252
|
|
2233
2253
|
this.once('end', onFinish);
|
@@ -3158,44 +3178,35 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {
|
|
3158
3178
|
});
|
3159
3179
|
};
|
3160
3180
|
|
3161
|
-
const
|
3162
|
-
|
3163
|
-
|
3164
|
-
{
|
3165
|
-
write(name, value, expires, path, domain, secure) {
|
3166
|
-
const cookie = [name + '=' + encodeURIComponent(value)];
|
3167
|
-
|
3168
|
-
utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());
|
3169
|
-
|
3170
|
-
utils$1.isString(path) && cookie.push('path=' + path);
|
3171
|
-
|
3172
|
-
utils$1.isString(domain) && cookie.push('domain=' + domain);
|
3173
|
-
|
3174
|
-
secure === true && cookie.push('secure');
|
3181
|
+
const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
|
3182
|
+
let bytesNotified = 0;
|
3183
|
+
const _speedometer = speedometer(50, 250);
|
3175
3184
|
|
3176
|
-
|
3177
|
-
|
3185
|
+
return throttle(e => {
|
3186
|
+
const loaded = e.loaded;
|
3187
|
+
const total = e.lengthComputable ? e.total : undefined;
|
3188
|
+
const progressBytes = loaded - bytesNotified;
|
3189
|
+
const rate = _speedometer(progressBytes);
|
3190
|
+
const inRange = loaded <= total;
|
3178
3191
|
|
3179
|
-
|
3180
|
-
const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
|
3181
|
-
return (match ? decodeURIComponent(match[3]) : null);
|
3182
|
-
},
|
3192
|
+
bytesNotified = loaded;
|
3183
3193
|
|
3184
|
-
|
3185
|
-
|
3186
|
-
|
3187
|
-
|
3194
|
+
const data = {
|
3195
|
+
loaded,
|
3196
|
+
total,
|
3197
|
+
progress: total ? (loaded / total) : undefined,
|
3198
|
+
bytes: progressBytes,
|
3199
|
+
rate: rate ? rate : undefined,
|
3200
|
+
estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
|
3201
|
+
event: e,
|
3202
|
+
lengthComputable: total != null
|
3203
|
+
};
|
3188
3204
|
|
3189
|
-
|
3205
|
+
data[isDownloadStream ? 'download' : 'upload'] = true;
|
3190
3206
|
|
3191
|
-
|
3192
|
-
|
3193
|
-
|
3194
|
-
read() {
|
3195
|
-
return null;
|
3196
|
-
},
|
3197
|
-
remove() {}
|
3198
|
-
};
|
3207
|
+
listener(data);
|
3208
|
+
}, freq);
|
3209
|
+
};
|
3199
3210
|
|
3200
3211
|
const isURLSameOrigin = platform.hasStandardBrowserEnv ?
|
3201
3212
|
|
@@ -3260,80 +3271,220 @@ const isURLSameOrigin = platform.hasStandardBrowserEnv ?
|
|
3260
3271
|
};
|
3261
3272
|
})();
|
3262
3273
|
|
3263
|
-
|
3264
|
-
let bytesNotified = 0;
|
3265
|
-
const _speedometer = speedometer(50, 250);
|
3274
|
+
const cookies = platform.hasStandardBrowserEnv ?
|
3266
3275
|
|
3267
|
-
|
3268
|
-
|
3269
|
-
|
3270
|
-
|
3271
|
-
const rate = _speedometer(progressBytes);
|
3272
|
-
const inRange = loaded <= total;
|
3276
|
+
// Standard browser envs support document.cookie
|
3277
|
+
{
|
3278
|
+
write(name, value, expires, path, domain, secure) {
|
3279
|
+
const cookie = [name + '=' + encodeURIComponent(value)];
|
3273
3280
|
|
3274
|
-
|
3281
|
+
utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());
|
3275
3282
|
|
3276
|
-
|
3277
|
-
loaded,
|
3278
|
-
total,
|
3279
|
-
progress: total ? (loaded / total) : undefined,
|
3280
|
-
bytes: progressBytes,
|
3281
|
-
rate: rate ? rate : undefined,
|
3282
|
-
estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
|
3283
|
-
event: e
|
3284
|
-
};
|
3283
|
+
utils$1.isString(path) && cookie.push('path=' + path);
|
3285
3284
|
|
3286
|
-
|
3285
|
+
utils$1.isString(domain) && cookie.push('domain=' + domain);
|
3287
3286
|
|
3288
|
-
|
3287
|
+
secure === true && cookie.push('secure');
|
3288
|
+
|
3289
|
+
document.cookie = cookie.join('; ');
|
3290
|
+
},
|
3291
|
+
|
3292
|
+
read(name) {
|
3293
|
+
const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
|
3294
|
+
return (match ? decodeURIComponent(match[3]) : null);
|
3295
|
+
},
|
3296
|
+
|
3297
|
+
remove(name) {
|
3298
|
+
this.write(name, '', Date.now() - 86400000);
|
3299
|
+
}
|
3300
|
+
}
|
3301
|
+
|
3302
|
+
:
|
3303
|
+
|
3304
|
+
// Non-standard browser env (web workers, react-native) lack needed support.
|
3305
|
+
{
|
3306
|
+
write() {},
|
3307
|
+
read() {
|
3308
|
+
return null;
|
3309
|
+
},
|
3310
|
+
remove() {}
|
3311
|
+
};
|
3312
|
+
|
3313
|
+
const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;
|
3314
|
+
|
3315
|
+
/**
|
3316
|
+
* Config-specific merge-function which creates a new config-object
|
3317
|
+
* by merging two configuration objects together.
|
3318
|
+
*
|
3319
|
+
* @param {Object} config1
|
3320
|
+
* @param {Object} config2
|
3321
|
+
*
|
3322
|
+
* @returns {Object} New object resulting from merging config2 to config1
|
3323
|
+
*/
|
3324
|
+
function mergeConfig(config1, config2) {
|
3325
|
+
// eslint-disable-next-line no-param-reassign
|
3326
|
+
config2 = config2 || {};
|
3327
|
+
const config = {};
|
3328
|
+
|
3329
|
+
function getMergedValue(target, source, caseless) {
|
3330
|
+
if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
|
3331
|
+
return utils$1.merge.call({caseless}, target, source);
|
3332
|
+
} else if (utils$1.isPlainObject(source)) {
|
3333
|
+
return utils$1.merge({}, source);
|
3334
|
+
} else if (utils$1.isArray(source)) {
|
3335
|
+
return source.slice();
|
3336
|
+
}
|
3337
|
+
return source;
|
3338
|
+
}
|
3339
|
+
|
3340
|
+
// eslint-disable-next-line consistent-return
|
3341
|
+
function mergeDeepProperties(a, b, caseless) {
|
3342
|
+
if (!utils$1.isUndefined(b)) {
|
3343
|
+
return getMergedValue(a, b, caseless);
|
3344
|
+
} else if (!utils$1.isUndefined(a)) {
|
3345
|
+
return getMergedValue(undefined, a, caseless);
|
3346
|
+
}
|
3347
|
+
}
|
3348
|
+
|
3349
|
+
// eslint-disable-next-line consistent-return
|
3350
|
+
function valueFromConfig2(a, b) {
|
3351
|
+
if (!utils$1.isUndefined(b)) {
|
3352
|
+
return getMergedValue(undefined, b);
|
3353
|
+
}
|
3354
|
+
}
|
3355
|
+
|
3356
|
+
// eslint-disable-next-line consistent-return
|
3357
|
+
function defaultToConfig2(a, b) {
|
3358
|
+
if (!utils$1.isUndefined(b)) {
|
3359
|
+
return getMergedValue(undefined, b);
|
3360
|
+
} else if (!utils$1.isUndefined(a)) {
|
3361
|
+
return getMergedValue(undefined, a);
|
3362
|
+
}
|
3363
|
+
}
|
3364
|
+
|
3365
|
+
// eslint-disable-next-line consistent-return
|
3366
|
+
function mergeDirectKeys(a, b, prop) {
|
3367
|
+
if (prop in config2) {
|
3368
|
+
return getMergedValue(a, b);
|
3369
|
+
} else if (prop in config1) {
|
3370
|
+
return getMergedValue(undefined, a);
|
3371
|
+
}
|
3372
|
+
}
|
3373
|
+
|
3374
|
+
const mergeMap = {
|
3375
|
+
url: valueFromConfig2,
|
3376
|
+
method: valueFromConfig2,
|
3377
|
+
data: valueFromConfig2,
|
3378
|
+
baseURL: defaultToConfig2,
|
3379
|
+
transformRequest: defaultToConfig2,
|
3380
|
+
transformResponse: defaultToConfig2,
|
3381
|
+
paramsSerializer: defaultToConfig2,
|
3382
|
+
timeout: defaultToConfig2,
|
3383
|
+
timeoutMessage: defaultToConfig2,
|
3384
|
+
withCredentials: defaultToConfig2,
|
3385
|
+
withXSRFToken: defaultToConfig2,
|
3386
|
+
adapter: defaultToConfig2,
|
3387
|
+
responseType: defaultToConfig2,
|
3388
|
+
xsrfCookieName: defaultToConfig2,
|
3389
|
+
xsrfHeaderName: defaultToConfig2,
|
3390
|
+
onUploadProgress: defaultToConfig2,
|
3391
|
+
onDownloadProgress: defaultToConfig2,
|
3392
|
+
decompress: defaultToConfig2,
|
3393
|
+
maxContentLength: defaultToConfig2,
|
3394
|
+
maxBodyLength: defaultToConfig2,
|
3395
|
+
beforeRedirect: defaultToConfig2,
|
3396
|
+
transport: defaultToConfig2,
|
3397
|
+
httpAgent: defaultToConfig2,
|
3398
|
+
httpsAgent: defaultToConfig2,
|
3399
|
+
cancelToken: defaultToConfig2,
|
3400
|
+
socketPath: defaultToConfig2,
|
3401
|
+
responseEncoding: defaultToConfig2,
|
3402
|
+
validateStatus: mergeDirectKeys,
|
3403
|
+
headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)
|
3289
3404
|
};
|
3405
|
+
|
3406
|
+
utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
|
3407
|
+
const merge = mergeMap[prop] || mergeDeepProperties;
|
3408
|
+
const configValue = merge(config1[prop], config2[prop], prop);
|
3409
|
+
(utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
|
3410
|
+
});
|
3411
|
+
|
3412
|
+
return config;
|
3290
3413
|
}
|
3291
3414
|
|
3415
|
+
const resolveConfig = (config) => {
|
3416
|
+
const newConfig = mergeConfig({}, config);
|
3417
|
+
|
3418
|
+
let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;
|
3419
|
+
|
3420
|
+
newConfig.headers = headers = AxiosHeaders$1.from(headers);
|
3421
|
+
|
3422
|
+
newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);
|
3423
|
+
|
3424
|
+
// HTTP basic authentication
|
3425
|
+
if (auth) {
|
3426
|
+
headers.set('Authorization', 'Basic ' +
|
3427
|
+
btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))
|
3428
|
+
);
|
3429
|
+
}
|
3430
|
+
|
3431
|
+
let contentType;
|
3432
|
+
|
3433
|
+
if (utils$1.isFormData(data)) {
|
3434
|
+
if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
|
3435
|
+
headers.setContentType(undefined); // Let the browser set it
|
3436
|
+
} else if ((contentType = headers.getContentType()) !== false) {
|
3437
|
+
// fix semicolon duplication issue for ReactNative FormData implementation
|
3438
|
+
const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];
|
3439
|
+
headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));
|
3440
|
+
}
|
3441
|
+
}
|
3442
|
+
|
3443
|
+
// Add xsrf header
|
3444
|
+
// This is only done if running in a standard browser environment.
|
3445
|
+
// Specifically not if we're in a web worker, or react-native.
|
3446
|
+
|
3447
|
+
if (platform.hasStandardBrowserEnv) {
|
3448
|
+
withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
|
3449
|
+
|
3450
|
+
if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {
|
3451
|
+
// Add xsrf header
|
3452
|
+
const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);
|
3453
|
+
|
3454
|
+
if (xsrfValue) {
|
3455
|
+
headers.set(xsrfHeaderName, xsrfValue);
|
3456
|
+
}
|
3457
|
+
}
|
3458
|
+
}
|
3459
|
+
|
3460
|
+
return newConfig;
|
3461
|
+
};
|
3462
|
+
|
3292
3463
|
const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
|
3293
3464
|
|
3294
3465
|
const xhrAdapter = isXHRAdapterSupported && function (config) {
|
3295
3466
|
return new Promise(function dispatchXhrRequest(resolve, reject) {
|
3296
|
-
|
3297
|
-
|
3298
|
-
|
3467
|
+
const _config = resolveConfig(config);
|
3468
|
+
let requestData = _config.data;
|
3469
|
+
const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();
|
3470
|
+
let {responseType} = _config;
|
3299
3471
|
let onCanceled;
|
3300
3472
|
function done() {
|
3301
|
-
if (
|
3302
|
-
|
3303
|
-
}
|
3304
|
-
|
3305
|
-
if (config.signal) {
|
3306
|
-
config.signal.removeEventListener('abort', onCanceled);
|
3473
|
+
if (_config.cancelToken) {
|
3474
|
+
_config.cancelToken.unsubscribe(onCanceled);
|
3307
3475
|
}
|
3308
|
-
}
|
3309
|
-
|
3310
|
-
let contentType;
|
3311
3476
|
|
3312
|
-
|
3313
|
-
|
3314
|
-
requestHeaders.setContentType(false); // Let the browser set it
|
3315
|
-
} else if ((contentType = requestHeaders.getContentType()) !== false) {
|
3316
|
-
// fix semicolon duplication issue for ReactNative FormData implementation
|
3317
|
-
const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];
|
3318
|
-
requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));
|
3477
|
+
if (_config.signal) {
|
3478
|
+
_config.signal.removeEventListener('abort', onCanceled);
|
3319
3479
|
}
|
3320
3480
|
}
|
3321
3481
|
|
3322
3482
|
let request = new XMLHttpRequest();
|
3323
3483
|
|
3324
|
-
|
3325
|
-
if (config.auth) {
|
3326
|
-
const username = config.auth.username || '';
|
3327
|
-
const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';
|
3328
|
-
requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));
|
3329
|
-
}
|
3330
|
-
|
3331
|
-
const fullPath = buildFullPath(config.baseURL, config.url);
|
3332
|
-
|
3333
|
-
request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
|
3484
|
+
request.open(_config.method.toUpperCase(), _config.url, true);
|
3334
3485
|
|
3335
3486
|
// Set the request timeout in MS
|
3336
|
-
request.timeout =
|
3487
|
+
request.timeout = _config.timeout;
|
3337
3488
|
|
3338
3489
|
function onloadend() {
|
3339
3490
|
if (!request) {
|
@@ -3395,7 +3546,7 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3395
3546
|
return;
|
3396
3547
|
}
|
3397
3548
|
|
3398
|
-
reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED,
|
3549
|
+
reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));
|
3399
3550
|
|
3400
3551
|
// Clean up request
|
3401
3552
|
request = null;
|
@@ -3405,7 +3556,7 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3405
3556
|
request.onerror = function handleError() {
|
3406
3557
|
// Real errors are hidden from us by the browser
|
3407
3558
|
// onerror should only fire if it's a network error
|
3408
|
-
reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK,
|
3559
|
+
reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));
|
3409
3560
|
|
3410
3561
|
// Clean up request
|
3411
3562
|
request = null;
|
@@ -3413,37 +3564,21 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3413
3564
|
|
3414
3565
|
// Handle timeout
|
3415
3566
|
request.ontimeout = function handleTimeout() {
|
3416
|
-
let timeoutErrorMessage =
|
3417
|
-
const transitional =
|
3418
|
-
if (
|
3419
|
-
timeoutErrorMessage =
|
3567
|
+
let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';
|
3568
|
+
const transitional = _config.transitional || transitionalDefaults;
|
3569
|
+
if (_config.timeoutErrorMessage) {
|
3570
|
+
timeoutErrorMessage = _config.timeoutErrorMessage;
|
3420
3571
|
}
|
3421
3572
|
reject(new AxiosError(
|
3422
3573
|
timeoutErrorMessage,
|
3423
3574
|
transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
|
3424
|
-
|
3575
|
+
_config,
|
3425
3576
|
request));
|
3426
3577
|
|
3427
3578
|
// Clean up request
|
3428
3579
|
request = null;
|
3429
3580
|
};
|
3430
3581
|
|
3431
|
-
// Add xsrf header
|
3432
|
-
// This is only done if running in a standard browser environment.
|
3433
|
-
// Specifically not if we're in a web worker, or react-native.
|
3434
|
-
if(platform.hasStandardBrowserEnv) {
|
3435
|
-
withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));
|
3436
|
-
|
3437
|
-
if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {
|
3438
|
-
// Add xsrf header
|
3439
|
-
const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);
|
3440
|
-
|
3441
|
-
if (xsrfValue) {
|
3442
|
-
requestHeaders.set(config.xsrfHeaderName, xsrfValue);
|
3443
|
-
}
|
3444
|
-
}
|
3445
|
-
}
|
3446
|
-
|
3447
3582
|
// Remove Content-Type if data is undefined
|
3448
3583
|
requestData === undefined && requestHeaders.setContentType(null);
|
3449
3584
|
|
@@ -3455,26 +3590,26 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3455
3590
|
}
|
3456
3591
|
|
3457
3592
|
// Add withCredentials to request if needed
|
3458
|
-
if (!utils$1.isUndefined(
|
3459
|
-
request.withCredentials = !!
|
3593
|
+
if (!utils$1.isUndefined(_config.withCredentials)) {
|
3594
|
+
request.withCredentials = !!_config.withCredentials;
|
3460
3595
|
}
|
3461
3596
|
|
3462
3597
|
// Add responseType to request if needed
|
3463
3598
|
if (responseType && responseType !== 'json') {
|
3464
|
-
request.responseType =
|
3599
|
+
request.responseType = _config.responseType;
|
3465
3600
|
}
|
3466
3601
|
|
3467
3602
|
// Handle progress if needed
|
3468
|
-
if (typeof
|
3469
|
-
request.addEventListener('progress', progressEventReducer(
|
3603
|
+
if (typeof _config.onDownloadProgress === 'function') {
|
3604
|
+
request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));
|
3470
3605
|
}
|
3471
3606
|
|
3472
3607
|
// Not all browsers support upload events
|
3473
|
-
if (typeof
|
3474
|
-
request.upload.addEventListener('progress', progressEventReducer(
|
3608
|
+
if (typeof _config.onUploadProgress === 'function' && request.upload) {
|
3609
|
+
request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));
|
3475
3610
|
}
|
3476
3611
|
|
3477
|
-
if (
|
3612
|
+
if (_config.cancelToken || _config.signal) {
|
3478
3613
|
// Handle cancellation
|
3479
3614
|
// eslint-disable-next-line func-names
|
3480
3615
|
onCanceled = cancel => {
|
@@ -3486,13 +3621,13 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3486
3621
|
request = null;
|
3487
3622
|
};
|
3488
3623
|
|
3489
|
-
|
3490
|
-
if (
|
3491
|
-
|
3624
|
+
_config.cancelToken && _config.cancelToken.subscribe(onCanceled);
|
3625
|
+
if (_config.signal) {
|
3626
|
+
_config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);
|
3492
3627
|
}
|
3493
3628
|
}
|
3494
3629
|
|
3495
|
-
const protocol = parseProtocol(
|
3630
|
+
const protocol = parseProtocol(_config.url);
|
3496
3631
|
|
3497
3632
|
if (protocol && platform.protocols.indexOf(protocol) === -1) {
|
3498
3633
|
reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));
|
@@ -3505,9 +3640,296 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3505
3640
|
});
|
3506
3641
|
};
|
3507
3642
|
|
3643
|
+
const composeSignals = (signals, timeout) => {
|
3644
|
+
let controller = new AbortController();
|
3645
|
+
|
3646
|
+
let aborted;
|
3647
|
+
|
3648
|
+
const onabort = function (cancel) {
|
3649
|
+
if (!aborted) {
|
3650
|
+
aborted = true;
|
3651
|
+
unsubscribe();
|
3652
|
+
const err = cancel instanceof Error ? cancel : this.reason;
|
3653
|
+
controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));
|
3654
|
+
}
|
3655
|
+
};
|
3656
|
+
|
3657
|
+
let timer = timeout && setTimeout(() => {
|
3658
|
+
onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT));
|
3659
|
+
}, timeout);
|
3660
|
+
|
3661
|
+
const unsubscribe = () => {
|
3662
|
+
if (signals) {
|
3663
|
+
timer && clearTimeout(timer);
|
3664
|
+
timer = null;
|
3665
|
+
signals.forEach(signal => {
|
3666
|
+
signal &&
|
3667
|
+
(signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));
|
3668
|
+
});
|
3669
|
+
signals = null;
|
3670
|
+
}
|
3671
|
+
};
|
3672
|
+
|
3673
|
+
signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));
|
3674
|
+
|
3675
|
+
const {signal} = controller;
|
3676
|
+
|
3677
|
+
signal.unsubscribe = unsubscribe;
|
3678
|
+
|
3679
|
+
return [signal, () => {
|
3680
|
+
timer && clearTimeout(timer);
|
3681
|
+
timer = null;
|
3682
|
+
}];
|
3683
|
+
};
|
3684
|
+
|
3685
|
+
const composeSignals$1 = composeSignals;
|
3686
|
+
|
3687
|
+
const streamChunk = function* (chunk, chunkSize) {
|
3688
|
+
let len = chunk.byteLength;
|
3689
|
+
|
3690
|
+
if (!chunkSize || len < chunkSize) {
|
3691
|
+
yield chunk;
|
3692
|
+
return;
|
3693
|
+
}
|
3694
|
+
|
3695
|
+
let pos = 0;
|
3696
|
+
let end;
|
3697
|
+
|
3698
|
+
while (pos < len) {
|
3699
|
+
end = pos + chunkSize;
|
3700
|
+
yield chunk.slice(pos, end);
|
3701
|
+
pos = end;
|
3702
|
+
}
|
3703
|
+
};
|
3704
|
+
|
3705
|
+
const encoder = new TextEncoder();
|
3706
|
+
|
3707
|
+
const readBytes = async function* (iterable, chunkSize) {
|
3708
|
+
for await (const chunk of iterable) {
|
3709
|
+
yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encoder.encode(String(chunk))), chunkSize);
|
3710
|
+
}
|
3711
|
+
};
|
3712
|
+
|
3713
|
+
const trackStream = (stream, chunkSize, onProgress, onFinish) => {
|
3714
|
+
const iterator = readBytes(stream, chunkSize);
|
3715
|
+
|
3716
|
+
let bytes = 0;
|
3717
|
+
|
3718
|
+
return new ReadableStream({
|
3719
|
+
type: 'bytes',
|
3720
|
+
|
3721
|
+
async pull(controller) {
|
3722
|
+
const {done, value} = await iterator.next();
|
3723
|
+
|
3724
|
+
if (done) {
|
3725
|
+
controller.close();
|
3726
|
+
onFinish();
|
3727
|
+
return;
|
3728
|
+
}
|
3729
|
+
|
3730
|
+
let len = value.byteLength;
|
3731
|
+
onProgress && onProgress(bytes += len);
|
3732
|
+
controller.enqueue(new Uint8Array(value));
|
3733
|
+
},
|
3734
|
+
cancel(reason) {
|
3735
|
+
onFinish(reason);
|
3736
|
+
return iterator.return();
|
3737
|
+
}
|
3738
|
+
}, {
|
3739
|
+
highWaterMark: 2
|
3740
|
+
})
|
3741
|
+
};
|
3742
|
+
|
3743
|
+
const fetchProgressDecorator = (total, fn) => {
|
3744
|
+
const lengthComputable = total != null;
|
3745
|
+
return (loaded) => setTimeout(() => fn({
|
3746
|
+
lengthComputable,
|
3747
|
+
total,
|
3748
|
+
loaded
|
3749
|
+
}));
|
3750
|
+
};
|
3751
|
+
|
3752
|
+
const isFetchSupported = typeof fetch !== 'undefined';
|
3753
|
+
|
3754
|
+
const supportsRequestStreams = isFetchSupported && (() => {
|
3755
|
+
let duplexAccessed = false;
|
3756
|
+
|
3757
|
+
const hasContentType = new Request(platform.origin, {
|
3758
|
+
body: new ReadableStream(),
|
3759
|
+
method: 'POST',
|
3760
|
+
get duplex() {
|
3761
|
+
duplexAccessed = true;
|
3762
|
+
return 'half';
|
3763
|
+
},
|
3764
|
+
}).headers.has('Content-Type');
|
3765
|
+
|
3766
|
+
return duplexAccessed && !hasContentType;
|
3767
|
+
})();
|
3768
|
+
|
3769
|
+
const DEFAULT_CHUNK_SIZE = 64 * 1024;
|
3770
|
+
|
3771
|
+
const resolvers = {
|
3772
|
+
stream: (res) => res.body
|
3773
|
+
};
|
3774
|
+
|
3775
|
+
isFetchSupported && ['text', 'arrayBuffer', 'blob', 'formData'].forEach(type => [
|
3776
|
+
resolvers[type] = utils$1.isFunction(Response.prototype[type]) ? (res) => res[type]() : (_, config) => {
|
3777
|
+
throw new AxiosError(`Response type ${type} is not supported`, AxiosError.ERR_NOT_SUPPORT, config);
|
3778
|
+
}
|
3779
|
+
]);
|
3780
|
+
|
3781
|
+
const getBodyLength = async (body) => {
|
3782
|
+
if(utils$1.isBlob(body)) {
|
3783
|
+
return body.size;
|
3784
|
+
}
|
3785
|
+
|
3786
|
+
if(utils$1.isSpecCompliantForm(body)) {
|
3787
|
+
return (await new Request(body).arrayBuffer()).byteLength;
|
3788
|
+
}
|
3789
|
+
|
3790
|
+
if(utils$1.isArrayBufferView(body)) {
|
3791
|
+
return body.byteLength;
|
3792
|
+
}
|
3793
|
+
|
3794
|
+
if(utils$1.isURLSearchParams(body)) {
|
3795
|
+
body = body + '';
|
3796
|
+
}
|
3797
|
+
|
3798
|
+
if(utils$1.isString(body)) {
|
3799
|
+
return (await new TextEncoder().encode(body)).byteLength;
|
3800
|
+
}
|
3801
|
+
};
|
3802
|
+
|
3803
|
+
const resolveBodyLength = async (headers, body) => {
|
3804
|
+
const length = utils$1.toFiniteNumber(headers.getContentLength());
|
3805
|
+
|
3806
|
+
return length == null ? getBodyLength(body) : length;
|
3807
|
+
};
|
3808
|
+
|
3809
|
+
const fetchAdapter = async (config) => {
|
3810
|
+
let {
|
3811
|
+
url,
|
3812
|
+
method,
|
3813
|
+
data,
|
3814
|
+
signal,
|
3815
|
+
cancelToken,
|
3816
|
+
timeout,
|
3817
|
+
onDownloadProgress,
|
3818
|
+
onUploadProgress,
|
3819
|
+
responseType,
|
3820
|
+
headers,
|
3821
|
+
withCredentials = 'same-origin',
|
3822
|
+
fetchOptions
|
3823
|
+
} = resolveConfig(config);
|
3824
|
+
|
3825
|
+
responseType = responseType ? (responseType + '').toLowerCase() : 'text';
|
3826
|
+
|
3827
|
+
let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?
|
3828
|
+
composeSignals$1([signal, cancelToken], timeout) : [];
|
3829
|
+
|
3830
|
+
let finished, request;
|
3831
|
+
|
3832
|
+
const onFinish = () => {
|
3833
|
+
!finished && setTimeout(() => {
|
3834
|
+
composedSignal && composedSignal.unsubscribe();
|
3835
|
+
});
|
3836
|
+
|
3837
|
+
finished = true;
|
3838
|
+
};
|
3839
|
+
|
3840
|
+
try {
|
3841
|
+
if (onUploadProgress && supportsRequestStreams && method !== 'get' && method !== 'head') {
|
3842
|
+
let requestContentLength = await resolveBodyLength(headers, data);
|
3843
|
+
|
3844
|
+
let _request = new Request(url, {
|
3845
|
+
method,
|
3846
|
+
body: data,
|
3847
|
+
duplex: "half"
|
3848
|
+
});
|
3849
|
+
|
3850
|
+
let contentTypeHeader;
|
3851
|
+
|
3852
|
+
if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
|
3853
|
+
headers.setContentType(contentTypeHeader);
|
3854
|
+
}
|
3855
|
+
|
3856
|
+
data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(
|
3857
|
+
requestContentLength,
|
3858
|
+
progressEventReducer(onUploadProgress)
|
3859
|
+
));
|
3860
|
+
}
|
3861
|
+
|
3862
|
+
if (!utils$1.isString(withCredentials)) {
|
3863
|
+
withCredentials = withCredentials ? 'cors' : 'omit';
|
3864
|
+
}
|
3865
|
+
|
3866
|
+
request = new Request(url, {
|
3867
|
+
...fetchOptions,
|
3868
|
+
signal: composedSignal,
|
3869
|
+
method,
|
3870
|
+
headers: headers.normalize().toJSON(),
|
3871
|
+
body: data,
|
3872
|
+
duplex: "half",
|
3873
|
+
withCredentials
|
3874
|
+
});
|
3875
|
+
|
3876
|
+
let response = await fetch(request);
|
3877
|
+
|
3878
|
+
const isStreamResponse = responseType === 'stream' || responseType === 'response';
|
3879
|
+
|
3880
|
+
if (onDownloadProgress || isStreamResponse) {
|
3881
|
+
const options = {};
|
3882
|
+
|
3883
|
+
Object.getOwnPropertyNames(response).forEach(prop => {
|
3884
|
+
options[prop] = response[prop];
|
3885
|
+
});
|
3886
|
+
|
3887
|
+
const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
|
3888
|
+
|
3889
|
+
response = new Response(
|
3890
|
+
trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(
|
3891
|
+
responseContentLength,
|
3892
|
+
progressEventReducer(onDownloadProgress, true)
|
3893
|
+
), isStreamResponse && onFinish),
|
3894
|
+
options
|
3895
|
+
);
|
3896
|
+
}
|
3897
|
+
|
3898
|
+
responseType = responseType || 'text';
|
3899
|
+
|
3900
|
+
let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);
|
3901
|
+
|
3902
|
+
!isStreamResponse && onFinish();
|
3903
|
+
|
3904
|
+
stopTimeout && stopTimeout();
|
3905
|
+
|
3906
|
+
return await new Promise((resolve, reject) => {
|
3907
|
+
settle(resolve, reject, {
|
3908
|
+
data: responseData,
|
3909
|
+
headers: AxiosHeaders$1.from(response.headers),
|
3910
|
+
status: response.status,
|
3911
|
+
statusText: response.statusText,
|
3912
|
+
config,
|
3913
|
+
request
|
3914
|
+
});
|
3915
|
+
})
|
3916
|
+
} catch (err) {
|
3917
|
+
onFinish();
|
3918
|
+
|
3919
|
+
let {code} = err;
|
3920
|
+
|
3921
|
+
if (err.name === 'NetworkError') {
|
3922
|
+
code = AxiosError.ERR_NETWORK;
|
3923
|
+
}
|
3924
|
+
|
3925
|
+
throw AxiosError.from(err, code, config, request);
|
3926
|
+
}
|
3927
|
+
};
|
3928
|
+
|
3508
3929
|
const knownAdapters = {
|
3509
3930
|
http: httpAdapter,
|
3510
|
-
xhr: xhrAdapter
|
3931
|
+
xhr: xhrAdapter,
|
3932
|
+
fetch: fetchAdapter
|
3511
3933
|
};
|
3512
3934
|
|
3513
3935
|
utils$1.forEach(knownAdapters, (fn, value) => {
|
@@ -3651,108 +4073,6 @@ function dispatchRequest(config) {
|
|
3651
4073
|
});
|
3652
4074
|
}
|
3653
4075
|
|
3654
|
-
const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;
|
3655
|
-
|
3656
|
-
/**
|
3657
|
-
* Config-specific merge-function which creates a new config-object
|
3658
|
-
* by merging two configuration objects together.
|
3659
|
-
*
|
3660
|
-
* @param {Object} config1
|
3661
|
-
* @param {Object} config2
|
3662
|
-
*
|
3663
|
-
* @returns {Object} New object resulting from merging config2 to config1
|
3664
|
-
*/
|
3665
|
-
function mergeConfig(config1, config2) {
|
3666
|
-
// eslint-disable-next-line no-param-reassign
|
3667
|
-
config2 = config2 || {};
|
3668
|
-
const config = {};
|
3669
|
-
|
3670
|
-
function getMergedValue(target, source, caseless) {
|
3671
|
-
if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
|
3672
|
-
return utils$1.merge.call({caseless}, target, source);
|
3673
|
-
} else if (utils$1.isPlainObject(source)) {
|
3674
|
-
return utils$1.merge({}, source);
|
3675
|
-
} else if (utils$1.isArray(source)) {
|
3676
|
-
return source.slice();
|
3677
|
-
}
|
3678
|
-
return source;
|
3679
|
-
}
|
3680
|
-
|
3681
|
-
// eslint-disable-next-line consistent-return
|
3682
|
-
function mergeDeepProperties(a, b, caseless) {
|
3683
|
-
if (!utils$1.isUndefined(b)) {
|
3684
|
-
return getMergedValue(a, b, caseless);
|
3685
|
-
} else if (!utils$1.isUndefined(a)) {
|
3686
|
-
return getMergedValue(undefined, a, caseless);
|
3687
|
-
}
|
3688
|
-
}
|
3689
|
-
|
3690
|
-
// eslint-disable-next-line consistent-return
|
3691
|
-
function valueFromConfig2(a, b) {
|
3692
|
-
if (!utils$1.isUndefined(b)) {
|
3693
|
-
return getMergedValue(undefined, b);
|
3694
|
-
}
|
3695
|
-
}
|
3696
|
-
|
3697
|
-
// eslint-disable-next-line consistent-return
|
3698
|
-
function defaultToConfig2(a, b) {
|
3699
|
-
if (!utils$1.isUndefined(b)) {
|
3700
|
-
return getMergedValue(undefined, b);
|
3701
|
-
} else if (!utils$1.isUndefined(a)) {
|
3702
|
-
return getMergedValue(undefined, a);
|
3703
|
-
}
|
3704
|
-
}
|
3705
|
-
|
3706
|
-
// eslint-disable-next-line consistent-return
|
3707
|
-
function mergeDirectKeys(a, b, prop) {
|
3708
|
-
if (prop in config2) {
|
3709
|
-
return getMergedValue(a, b);
|
3710
|
-
} else if (prop in config1) {
|
3711
|
-
return getMergedValue(undefined, a);
|
3712
|
-
}
|
3713
|
-
}
|
3714
|
-
|
3715
|
-
const mergeMap = {
|
3716
|
-
url: valueFromConfig2,
|
3717
|
-
method: valueFromConfig2,
|
3718
|
-
data: valueFromConfig2,
|
3719
|
-
baseURL: defaultToConfig2,
|
3720
|
-
transformRequest: defaultToConfig2,
|
3721
|
-
transformResponse: defaultToConfig2,
|
3722
|
-
paramsSerializer: defaultToConfig2,
|
3723
|
-
timeout: defaultToConfig2,
|
3724
|
-
timeoutMessage: defaultToConfig2,
|
3725
|
-
withCredentials: defaultToConfig2,
|
3726
|
-
withXSRFToken: defaultToConfig2,
|
3727
|
-
adapter: defaultToConfig2,
|
3728
|
-
responseType: defaultToConfig2,
|
3729
|
-
xsrfCookieName: defaultToConfig2,
|
3730
|
-
xsrfHeaderName: defaultToConfig2,
|
3731
|
-
onUploadProgress: defaultToConfig2,
|
3732
|
-
onDownloadProgress: defaultToConfig2,
|
3733
|
-
decompress: defaultToConfig2,
|
3734
|
-
maxContentLength: defaultToConfig2,
|
3735
|
-
maxBodyLength: defaultToConfig2,
|
3736
|
-
beforeRedirect: defaultToConfig2,
|
3737
|
-
transport: defaultToConfig2,
|
3738
|
-
httpAgent: defaultToConfig2,
|
3739
|
-
httpsAgent: defaultToConfig2,
|
3740
|
-
cancelToken: defaultToConfig2,
|
3741
|
-
socketPath: defaultToConfig2,
|
3742
|
-
responseEncoding: defaultToConfig2,
|
3743
|
-
validateStatus: mergeDirectKeys,
|
3744
|
-
headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)
|
3745
|
-
};
|
3746
|
-
|
3747
|
-
utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
|
3748
|
-
const merge = mergeMap[prop] || mergeDeepProperties;
|
3749
|
-
const configValue = merge(config1[prop], config2[prop], prop);
|
3750
|
-
(utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
|
3751
|
-
});
|
3752
|
-
|
3753
|
-
return config;
|
3754
|
-
}
|
3755
|
-
|
3756
4076
|
const validators$1 = {};
|
3757
4077
|
|
3758
4078
|
// eslint-disable-next-line func-names
|