axios 1.6.7 → 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 +31 -0
- package/README.md +35 -16
- package/dist/axios.js +1271 -580
- 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 +562 -243
- 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/http.js +1 -1
- package/lib/adapters/xhr.js +31 -101
- package/lib/core/AxiosHeaders.js +4 -0
- package/lib/core/mergeConfig.js +1 -1
- 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 +26 -25
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');
|
@@ -10,7 +10,7 @@ const util = require('util');
|
|
10
10
|
const followRedirects = require('follow-redirects');
|
11
11
|
const zlib = require('zlib');
|
12
12
|
const stream = require('stream');
|
13
|
-
const
|
13
|
+
const events = require('events');
|
14
14
|
|
15
15
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
16
16
|
|
@@ -22,7 +22,6 @@ const util__default = /*#__PURE__*/_interopDefaultLegacy(util);
|
|
22
22
|
const followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects);
|
23
23
|
const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib);
|
24
24
|
const stream__default = /*#__PURE__*/_interopDefaultLegacy(stream);
|
25
|
-
const EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter);
|
26
25
|
|
27
26
|
function bind(fn, thisArg) {
|
28
27
|
return function wrap() {
|
@@ -237,6 +236,8 @@ const isFormData = (thing) => {
|
|
237
236
|
*/
|
238
237
|
const isURLSearchParams = kindOfTest('URLSearchParams');
|
239
238
|
|
239
|
+
const [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);
|
240
|
+
|
240
241
|
/**
|
241
242
|
* Trim excess whitespace off the beginning and end of a string
|
242
243
|
*
|
@@ -625,8 +626,7 @@ const toObjectSet = (arrayOrString, delimiter) => {
|
|
625
626
|
const noop = () => {};
|
626
627
|
|
627
628
|
const toFiniteNumber = (value, defaultValue) => {
|
628
|
-
value = +value;
|
629
|
-
return Number.isFinite(value) ? value : defaultValue;
|
629
|
+
return value != null && Number.isFinite(value = +value) ? value : defaultValue;
|
630
630
|
};
|
631
631
|
|
632
632
|
const ALPHA = 'abcdefghijklmnopqrstuvwxyz';
|
@@ -707,6 +707,10 @@ const utils$1 = {
|
|
707
707
|
isBoolean,
|
708
708
|
isObject,
|
709
709
|
isPlainObject,
|
710
|
+
isReadableStream,
|
711
|
+
isRequest,
|
712
|
+
isResponse,
|
713
|
+
isHeaders,
|
710
714
|
isUndefined,
|
711
715
|
isDate,
|
712
716
|
isFile,
|
@@ -1296,11 +1300,14 @@ const hasStandardBrowserWebWorkerEnv = (() => {
|
|
1296
1300
|
);
|
1297
1301
|
})();
|
1298
1302
|
|
1303
|
+
const origin = hasBrowserEnv && window.location.href || 'http://localhost';
|
1304
|
+
|
1299
1305
|
const utils = /*#__PURE__*/Object.freeze({
|
1300
1306
|
__proto__: null,
|
1301
1307
|
hasBrowserEnv: hasBrowserEnv,
|
1302
1308
|
hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,
|
1303
|
-
hasStandardBrowserEnv: hasStandardBrowserEnv
|
1309
|
+
hasStandardBrowserEnv: hasStandardBrowserEnv,
|
1310
|
+
origin: origin
|
1304
1311
|
});
|
1305
1312
|
|
1306
1313
|
const platform = {
|
@@ -1440,7 +1447,7 @@ const defaults = {
|
|
1440
1447
|
|
1441
1448
|
transitional: transitionalDefaults,
|
1442
1449
|
|
1443
|
-
adapter: ['xhr', 'http'],
|
1450
|
+
adapter: ['xhr', 'http', 'fetch'],
|
1444
1451
|
|
1445
1452
|
transformRequest: [function transformRequest(data, headers) {
|
1446
1453
|
const contentType = headers.getContentType() || '';
|
@@ -1461,7 +1468,8 @@ const defaults = {
|
|
1461
1468
|
utils$1.isBuffer(data) ||
|
1462
1469
|
utils$1.isStream(data) ||
|
1463
1470
|
utils$1.isFile(data) ||
|
1464
|
-
utils$1.isBlob(data)
|
1471
|
+
utils$1.isBlob(data) ||
|
1472
|
+
utils$1.isReadableStream(data)
|
1465
1473
|
) {
|
1466
1474
|
return data;
|
1467
1475
|
}
|
@@ -1504,6 +1512,10 @@ const defaults = {
|
|
1504
1512
|
const forcedJSONParsing = transitional && transitional.forcedJSONParsing;
|
1505
1513
|
const JSONRequested = this.responseType === 'json';
|
1506
1514
|
|
1515
|
+
if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {
|
1516
|
+
return data;
|
1517
|
+
}
|
1518
|
+
|
1507
1519
|
if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {
|
1508
1520
|
const silentJSONParsing = transitional && transitional.silentJSONParsing;
|
1509
1521
|
const strictJSONParsing = !silentJSONParsing && JSONRequested;
|
@@ -1707,6 +1719,10 @@ class AxiosHeaders {
|
|
1707
1719
|
setHeaders(header, valueOrRewrite);
|
1708
1720
|
} else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
|
1709
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
|
+
}
|
1710
1726
|
} else {
|
1711
1727
|
header != null && setHeader(valueOrRewrite, header, rewrite);
|
1712
1728
|
}
|
@@ -2019,7 +2035,7 @@ function buildFullPath(baseURL, requestedURL) {
|
|
2019
2035
|
return requestedURL;
|
2020
2036
|
}
|
2021
2037
|
|
2022
|
-
const VERSION = "1.
|
2038
|
+
const VERSION = "1.7.0-beta.0";
|
2023
2039
|
|
2024
2040
|
function parseProtocol(url) {
|
2025
2041
|
const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
|
@@ -2084,7 +2100,9 @@ function throttle(fn, freq) {
|
|
2084
2100
|
let timestamp = 0;
|
2085
2101
|
const threshold = 1000 / freq;
|
2086
2102
|
let timer = null;
|
2087
|
-
return function throttled(
|
2103
|
+
return function throttled() {
|
2104
|
+
const force = this === true;
|
2105
|
+
|
2088
2106
|
const now = Date.now();
|
2089
2107
|
if (force || now - timestamp > threshold) {
|
2090
2108
|
if (timer) {
|
@@ -2092,13 +2110,13 @@ function throttle(fn, freq) {
|
|
2092
2110
|
timer = null;
|
2093
2111
|
}
|
2094
2112
|
timestamp = now;
|
2095
|
-
return fn.apply(null,
|
2113
|
+
return fn.apply(null, arguments);
|
2096
2114
|
}
|
2097
2115
|
if (!timer) {
|
2098
2116
|
timer = setTimeout(() => {
|
2099
2117
|
timer = null;
|
2100
2118
|
timestamp = Date.now();
|
2101
|
-
return fn.apply(null,
|
2119
|
+
return fn.apply(null, arguments);
|
2102
2120
|
}, threshold - (now - timestamp));
|
2103
2121
|
}
|
2104
2122
|
};
|
@@ -2216,19 +2234,20 @@ class AxiosTransformStream extends stream__default["default"].Transform{
|
|
2216
2234
|
|
2217
2235
|
process.nextTick(() => {
|
2218
2236
|
self.emit('progress', {
|
2219
|
-
|
2220
|
-
|
2221
|
-
|
2222
|
-
|
2223
|
-
|
2224
|
-
|
2225
|
-
(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
|
2226
2245
|
});
|
2227
2246
|
});
|
2228
2247
|
}, internals.ticksRate);
|
2229
2248
|
|
2230
2249
|
const onFinish = () => {
|
2231
|
-
internals.updateProgress(true);
|
2250
|
+
internals.updateProgress.call(true);
|
2232
2251
|
};
|
2233
2252
|
|
2234
2253
|
this.once('end', onFinish);
|
@@ -2662,7 +2681,7 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {
|
|
2662
2681
|
}
|
2663
2682
|
|
2664
2683
|
// temporary internal emitter until the AxiosRequest class will be implemented
|
2665
|
-
const emitter = new
|
2684
|
+
const emitter = new events.EventEmitter();
|
2666
2685
|
|
2667
2686
|
const onFinished = () => {
|
2668
2687
|
if (config.cancelToken) {
|
@@ -3159,44 +3178,35 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {
|
|
3159
3178
|
});
|
3160
3179
|
};
|
3161
3180
|
|
3162
|
-
const
|
3163
|
-
|
3164
|
-
|
3165
|
-
{
|
3166
|
-
write(name, value, expires, path, domain, secure) {
|
3167
|
-
const cookie = [name + '=' + encodeURIComponent(value)];
|
3168
|
-
|
3169
|
-
utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());
|
3170
|
-
|
3171
|
-
utils$1.isString(path) && cookie.push('path=' + path);
|
3172
|
-
|
3173
|
-
utils$1.isString(domain) && cookie.push('domain=' + domain);
|
3174
|
-
|
3175
|
-
secure === true && cookie.push('secure');
|
3181
|
+
const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
|
3182
|
+
let bytesNotified = 0;
|
3183
|
+
const _speedometer = speedometer(50, 250);
|
3176
3184
|
|
3177
|
-
|
3178
|
-
|
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;
|
3179
3191
|
|
3180
|
-
|
3181
|
-
const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
|
3182
|
-
return (match ? decodeURIComponent(match[3]) : null);
|
3183
|
-
},
|
3192
|
+
bytesNotified = loaded;
|
3184
3193
|
|
3185
|
-
|
3186
|
-
|
3187
|
-
|
3188
|
-
|
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
|
+
};
|
3189
3204
|
|
3190
|
-
|
3205
|
+
data[isDownloadStream ? 'download' : 'upload'] = true;
|
3191
3206
|
|
3192
|
-
|
3193
|
-
|
3194
|
-
|
3195
|
-
read() {
|
3196
|
-
return null;
|
3197
|
-
},
|
3198
|
-
remove() {}
|
3199
|
-
};
|
3207
|
+
listener(data);
|
3208
|
+
}, freq);
|
3209
|
+
};
|
3200
3210
|
|
3201
3211
|
const isURLSameOrigin = platform.hasStandardBrowserEnv ?
|
3202
3212
|
|
@@ -3261,80 +3271,220 @@ const isURLSameOrigin = platform.hasStandardBrowserEnv ?
|
|
3261
3271
|
};
|
3262
3272
|
})();
|
3263
3273
|
|
3264
|
-
|
3265
|
-
let bytesNotified = 0;
|
3266
|
-
const _speedometer = speedometer(50, 250);
|
3274
|
+
const cookies = platform.hasStandardBrowserEnv ?
|
3267
3275
|
|
3268
|
-
|
3269
|
-
|
3270
|
-
|
3271
|
-
|
3272
|
-
const rate = _speedometer(progressBytes);
|
3273
|
-
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)];
|
3274
3280
|
|
3275
|
-
|
3281
|
+
utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());
|
3276
3282
|
|
3277
|
-
|
3278
|
-
loaded,
|
3279
|
-
total,
|
3280
|
-
progress: total ? (loaded / total) : undefined,
|
3281
|
-
bytes: progressBytes,
|
3282
|
-
rate: rate ? rate : undefined,
|
3283
|
-
estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
|
3284
|
-
event: e
|
3285
|
-
};
|
3283
|
+
utils$1.isString(path) && cookie.push('path=' + path);
|
3286
3284
|
|
3287
|
-
|
3285
|
+
utils$1.isString(domain) && cookie.push('domain=' + domain);
|
3288
3286
|
|
3289
|
-
|
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() {}
|
3290
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)
|
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;
|
3291
3413
|
}
|
3292
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
|
+
|
3293
3463
|
const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
|
3294
3464
|
|
3295
3465
|
const xhrAdapter = isXHRAdapterSupported && function (config) {
|
3296
3466
|
return new Promise(function dispatchXhrRequest(resolve, reject) {
|
3297
|
-
|
3298
|
-
|
3299
|
-
|
3467
|
+
const _config = resolveConfig(config);
|
3468
|
+
let requestData = _config.data;
|
3469
|
+
const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();
|
3470
|
+
let {responseType} = _config;
|
3300
3471
|
let onCanceled;
|
3301
3472
|
function done() {
|
3302
|
-
if (
|
3303
|
-
|
3304
|
-
}
|
3305
|
-
|
3306
|
-
if (config.signal) {
|
3307
|
-
config.signal.removeEventListener('abort', onCanceled);
|
3473
|
+
if (_config.cancelToken) {
|
3474
|
+
_config.cancelToken.unsubscribe(onCanceled);
|
3308
3475
|
}
|
3309
|
-
}
|
3310
|
-
|
3311
|
-
let contentType;
|
3312
3476
|
|
3313
|
-
|
3314
|
-
|
3315
|
-
requestHeaders.setContentType(false); // Let the browser set it
|
3316
|
-
} else if ((contentType = requestHeaders.getContentType()) !== false) {
|
3317
|
-
// fix semicolon duplication issue for ReactNative FormData implementation
|
3318
|
-
const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];
|
3319
|
-
requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));
|
3477
|
+
if (_config.signal) {
|
3478
|
+
_config.signal.removeEventListener('abort', onCanceled);
|
3320
3479
|
}
|
3321
3480
|
}
|
3322
3481
|
|
3323
3482
|
let request = new XMLHttpRequest();
|
3324
3483
|
|
3325
|
-
|
3326
|
-
if (config.auth) {
|
3327
|
-
const username = config.auth.username || '';
|
3328
|
-
const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';
|
3329
|
-
requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));
|
3330
|
-
}
|
3331
|
-
|
3332
|
-
const fullPath = buildFullPath(config.baseURL, config.url);
|
3333
|
-
|
3334
|
-
request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
|
3484
|
+
request.open(_config.method.toUpperCase(), _config.url, true);
|
3335
3485
|
|
3336
3486
|
// Set the request timeout in MS
|
3337
|
-
request.timeout =
|
3487
|
+
request.timeout = _config.timeout;
|
3338
3488
|
|
3339
3489
|
function onloadend() {
|
3340
3490
|
if (!request) {
|
@@ -3396,7 +3546,7 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3396
3546
|
return;
|
3397
3547
|
}
|
3398
3548
|
|
3399
|
-
reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED,
|
3549
|
+
reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));
|
3400
3550
|
|
3401
3551
|
// Clean up request
|
3402
3552
|
request = null;
|
@@ -3406,7 +3556,7 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3406
3556
|
request.onerror = function handleError() {
|
3407
3557
|
// Real errors are hidden from us by the browser
|
3408
3558
|
// onerror should only fire if it's a network error
|
3409
|
-
reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK,
|
3559
|
+
reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));
|
3410
3560
|
|
3411
3561
|
// Clean up request
|
3412
3562
|
request = null;
|
@@ -3414,37 +3564,21 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3414
3564
|
|
3415
3565
|
// Handle timeout
|
3416
3566
|
request.ontimeout = function handleTimeout() {
|
3417
|
-
let timeoutErrorMessage =
|
3418
|
-
const transitional =
|
3419
|
-
if (
|
3420
|
-
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;
|
3421
3571
|
}
|
3422
3572
|
reject(new AxiosError(
|
3423
3573
|
timeoutErrorMessage,
|
3424
3574
|
transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
|
3425
|
-
|
3575
|
+
_config,
|
3426
3576
|
request));
|
3427
3577
|
|
3428
3578
|
// Clean up request
|
3429
3579
|
request = null;
|
3430
3580
|
};
|
3431
3581
|
|
3432
|
-
// Add xsrf header
|
3433
|
-
// This is only done if running in a standard browser environment.
|
3434
|
-
// Specifically not if we're in a web worker, or react-native.
|
3435
|
-
if(platform.hasStandardBrowserEnv) {
|
3436
|
-
withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));
|
3437
|
-
|
3438
|
-
if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {
|
3439
|
-
// Add xsrf header
|
3440
|
-
const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);
|
3441
|
-
|
3442
|
-
if (xsrfValue) {
|
3443
|
-
requestHeaders.set(config.xsrfHeaderName, xsrfValue);
|
3444
|
-
}
|
3445
|
-
}
|
3446
|
-
}
|
3447
|
-
|
3448
3582
|
// Remove Content-Type if data is undefined
|
3449
3583
|
requestData === undefined && requestHeaders.setContentType(null);
|
3450
3584
|
|
@@ -3456,26 +3590,26 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3456
3590
|
}
|
3457
3591
|
|
3458
3592
|
// Add withCredentials to request if needed
|
3459
|
-
if (!utils$1.isUndefined(
|
3460
|
-
request.withCredentials = !!
|
3593
|
+
if (!utils$1.isUndefined(_config.withCredentials)) {
|
3594
|
+
request.withCredentials = !!_config.withCredentials;
|
3461
3595
|
}
|
3462
3596
|
|
3463
3597
|
// Add responseType to request if needed
|
3464
3598
|
if (responseType && responseType !== 'json') {
|
3465
|
-
request.responseType =
|
3599
|
+
request.responseType = _config.responseType;
|
3466
3600
|
}
|
3467
3601
|
|
3468
3602
|
// Handle progress if needed
|
3469
|
-
if (typeof
|
3470
|
-
request.addEventListener('progress', progressEventReducer(
|
3603
|
+
if (typeof _config.onDownloadProgress === 'function') {
|
3604
|
+
request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));
|
3471
3605
|
}
|
3472
3606
|
|
3473
3607
|
// Not all browsers support upload events
|
3474
|
-
if (typeof
|
3475
|
-
request.upload.addEventListener('progress', progressEventReducer(
|
3608
|
+
if (typeof _config.onUploadProgress === 'function' && request.upload) {
|
3609
|
+
request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));
|
3476
3610
|
}
|
3477
3611
|
|
3478
|
-
if (
|
3612
|
+
if (_config.cancelToken || _config.signal) {
|
3479
3613
|
// Handle cancellation
|
3480
3614
|
// eslint-disable-next-line func-names
|
3481
3615
|
onCanceled = cancel => {
|
@@ -3487,13 +3621,13 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3487
3621
|
request = null;
|
3488
3622
|
};
|
3489
3623
|
|
3490
|
-
|
3491
|
-
if (
|
3492
|
-
|
3624
|
+
_config.cancelToken && _config.cancelToken.subscribe(onCanceled);
|
3625
|
+
if (_config.signal) {
|
3626
|
+
_config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);
|
3493
3627
|
}
|
3494
3628
|
}
|
3495
3629
|
|
3496
|
-
const protocol = parseProtocol(
|
3630
|
+
const protocol = parseProtocol(_config.url);
|
3497
3631
|
|
3498
3632
|
if (protocol && platform.protocols.indexOf(protocol) === -1) {
|
3499
3633
|
reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));
|
@@ -3506,9 +3640,296 @@ const xhrAdapter = isXHRAdapterSupported && function (config) {
|
|
3506
3640
|
});
|
3507
3641
|
};
|
3508
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
|
+
|
3509
3929
|
const knownAdapters = {
|
3510
3930
|
http: httpAdapter,
|
3511
|
-
xhr: xhrAdapter
|
3931
|
+
xhr: xhrAdapter,
|
3932
|
+
fetch: fetchAdapter
|
3512
3933
|
};
|
3513
3934
|
|
3514
3935
|
utils$1.forEach(knownAdapters, (fn, value) => {
|
@@ -3652,108 +4073,6 @@ function dispatchRequest(config) {
|
|
3652
4073
|
});
|
3653
4074
|
}
|
3654
4075
|
|
3655
|
-
const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? thing.toJSON() : thing;
|
3656
|
-
|
3657
|
-
/**
|
3658
|
-
* Config-specific merge-function which creates a new config-object
|
3659
|
-
* by merging two configuration objects together.
|
3660
|
-
*
|
3661
|
-
* @param {Object} config1
|
3662
|
-
* @param {Object} config2
|
3663
|
-
*
|
3664
|
-
* @returns {Object} New object resulting from merging config2 to config1
|
3665
|
-
*/
|
3666
|
-
function mergeConfig(config1, config2) {
|
3667
|
-
// eslint-disable-next-line no-param-reassign
|
3668
|
-
config2 = config2 || {};
|
3669
|
-
const config = {};
|
3670
|
-
|
3671
|
-
function getMergedValue(target, source, caseless) {
|
3672
|
-
if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
|
3673
|
-
return utils$1.merge.call({caseless}, target, source);
|
3674
|
-
} else if (utils$1.isPlainObject(source)) {
|
3675
|
-
return utils$1.merge({}, source);
|
3676
|
-
} else if (utils$1.isArray(source)) {
|
3677
|
-
return source.slice();
|
3678
|
-
}
|
3679
|
-
return source;
|
3680
|
-
}
|
3681
|
-
|
3682
|
-
// eslint-disable-next-line consistent-return
|
3683
|
-
function mergeDeepProperties(a, b, caseless) {
|
3684
|
-
if (!utils$1.isUndefined(b)) {
|
3685
|
-
return getMergedValue(a, b, caseless);
|
3686
|
-
} else if (!utils$1.isUndefined(a)) {
|
3687
|
-
return getMergedValue(undefined, a, caseless);
|
3688
|
-
}
|
3689
|
-
}
|
3690
|
-
|
3691
|
-
// eslint-disable-next-line consistent-return
|
3692
|
-
function valueFromConfig2(a, b) {
|
3693
|
-
if (!utils$1.isUndefined(b)) {
|
3694
|
-
return getMergedValue(undefined, b);
|
3695
|
-
}
|
3696
|
-
}
|
3697
|
-
|
3698
|
-
// eslint-disable-next-line consistent-return
|
3699
|
-
function defaultToConfig2(a, b) {
|
3700
|
-
if (!utils$1.isUndefined(b)) {
|
3701
|
-
return getMergedValue(undefined, b);
|
3702
|
-
} else if (!utils$1.isUndefined(a)) {
|
3703
|
-
return getMergedValue(undefined, a);
|
3704
|
-
}
|
3705
|
-
}
|
3706
|
-
|
3707
|
-
// eslint-disable-next-line consistent-return
|
3708
|
-
function mergeDirectKeys(a, b, prop) {
|
3709
|
-
if (prop in config2) {
|
3710
|
-
return getMergedValue(a, b);
|
3711
|
-
} else if (prop in config1) {
|
3712
|
-
return getMergedValue(undefined, a);
|
3713
|
-
}
|
3714
|
-
}
|
3715
|
-
|
3716
|
-
const mergeMap = {
|
3717
|
-
url: valueFromConfig2,
|
3718
|
-
method: valueFromConfig2,
|
3719
|
-
data: valueFromConfig2,
|
3720
|
-
baseURL: defaultToConfig2,
|
3721
|
-
transformRequest: defaultToConfig2,
|
3722
|
-
transformResponse: defaultToConfig2,
|
3723
|
-
paramsSerializer: defaultToConfig2,
|
3724
|
-
timeout: defaultToConfig2,
|
3725
|
-
timeoutMessage: defaultToConfig2,
|
3726
|
-
withCredentials: defaultToConfig2,
|
3727
|
-
withXSRFToken: defaultToConfig2,
|
3728
|
-
adapter: defaultToConfig2,
|
3729
|
-
responseType: defaultToConfig2,
|
3730
|
-
xsrfCookieName: defaultToConfig2,
|
3731
|
-
xsrfHeaderName: defaultToConfig2,
|
3732
|
-
onUploadProgress: defaultToConfig2,
|
3733
|
-
onDownloadProgress: defaultToConfig2,
|
3734
|
-
decompress: defaultToConfig2,
|
3735
|
-
maxContentLength: defaultToConfig2,
|
3736
|
-
maxBodyLength: defaultToConfig2,
|
3737
|
-
beforeRedirect: defaultToConfig2,
|
3738
|
-
transport: defaultToConfig2,
|
3739
|
-
httpAgent: defaultToConfig2,
|
3740
|
-
httpsAgent: defaultToConfig2,
|
3741
|
-
cancelToken: defaultToConfig2,
|
3742
|
-
socketPath: defaultToConfig2,
|
3743
|
-
responseEncoding: defaultToConfig2,
|
3744
|
-
validateStatus: mergeDirectKeys,
|
3745
|
-
headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)
|
3746
|
-
};
|
3747
|
-
|
3748
|
-
utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
|
3749
|
-
const merge = mergeMap[prop] || mergeDeepProperties;
|
3750
|
-
const configValue = merge(config1[prop], config2[prop], prop);
|
3751
|
-
(utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
|
3752
|
-
});
|
3753
|
-
|
3754
|
-
return config;
|
3755
|
-
}
|
3756
|
-
|
3757
4076
|
const validators$1 = {};
|
3758
4077
|
|
3759
4078
|
// eslint-disable-next-line func-names
|