axios 1.7.6 → 1.7.8

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.

@@ -1,4 +1,4 @@
1
- // Axios v1.7.6 Copyright (c) 2024 Matt Zabriskie and contributors
1
+ // Axios v1.7.8 Copyright (c) 2024 Matt Zabriskie and contributors
2
2
  'use strict';
3
3
 
4
4
  const FormData$1 = require('form-data');
@@ -16,6 +16,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
16
16
 
17
17
  const FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1);
18
18
  const url__default = /*#__PURE__*/_interopDefaultLegacy(url);
19
+ const proxyFromEnv__default = /*#__PURE__*/_interopDefaultLegacy(proxyFromEnv);
19
20
  const http__default = /*#__PURE__*/_interopDefaultLegacy(http);
20
21
  const https__default = /*#__PURE__*/_interopDefaultLegacy(https);
21
22
  const util__default = /*#__PURE__*/_interopDefaultLegacy(util);
@@ -1171,7 +1172,7 @@ function encode(val) {
1171
1172
  *
1172
1173
  * @param {string} url The base of the url (e.g., http://www.google.com)
1173
1174
  * @param {object} [params] The params to be appended
1174
- * @param {?object} options
1175
+ * @param {?(object|Function)} options
1175
1176
  *
1176
1177
  * @returns {string} The formatted url
1177
1178
  */
@@ -1183,6 +1184,12 @@ function buildURL(url, params, options) {
1183
1184
 
1184
1185
  const _encode = options && options.encode || encode;
1185
1186
 
1187
+ if (utils$1.isFunction(options)) {
1188
+ options = {
1189
+ serialize: options
1190
+ };
1191
+ }
1192
+
1186
1193
  const serializeFn = options && options.serialize;
1187
1194
 
1188
1195
  let serializedParams;
@@ -2071,7 +2078,7 @@ function buildFullPath(baseURL, requestedURL) {
2071
2078
  return requestedURL;
2072
2079
  }
2073
2080
 
2074
- const VERSION = "1.7.6";
2081
+ const VERSION = "1.7.8";
2075
2082
 
2076
2083
  function parseProtocol(url) {
2077
2084
  const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
@@ -2283,7 +2290,7 @@ const readBlob$1 = readBlob;
2283
2290
 
2284
2291
  const BOUNDARY_ALPHABET = utils$1.ALPHABET.ALPHA_DIGIT + '-_';
2285
2292
 
2286
- const textEncoder = new util.TextEncoder();
2293
+ const textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util__default["default"].TextEncoder();
2287
2294
 
2288
2295
  const CRLF = '\r\n';
2289
2296
  const CRLF_BYTES = textEncoder.encode(CRLF);
@@ -2621,7 +2628,7 @@ function dispatchBeforeRedirect(options, responseDetails) {
2621
2628
  function setProxy(options, configProxy, location) {
2622
2629
  let proxy = configProxy;
2623
2630
  if (!proxy && proxy !== false) {
2624
- const proxyUrl = proxyFromEnv.getProxyForUrl(location);
2631
+ const proxyUrl = proxyFromEnv__default["default"].getProxyForUrl(location);
2625
2632
  if (proxyUrl) {
2626
2633
  proxy = new URL(proxyUrl);
2627
2634
  }
@@ -2852,7 +2859,7 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {
2852
2859
  } catch (e) {
2853
2860
  }
2854
2861
  }
2855
- } else if (utils$1.isBlob(data)) {
2862
+ } else if (utils$1.isBlob(data) || utils$1.isFile(data)) {
2856
2863
  data.size && headers.setContentType(data.type || 'application/octet-stream');
2857
2864
  headers.setContentLength(data.size || 0);
2858
2865
  data = stream__default["default"].Readable.from(readBlob$1(data));
@@ -2963,7 +2970,7 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {
2963
2970
  if (config.socketPath) {
2964
2971
  options.socketPath = config.socketPath;
2965
2972
  } else {
2966
- options.hostname = parsed.hostname;
2973
+ options.hostname = parsed.hostname.startsWith("[") ? parsed.hostname.slice(1, -1) : parsed.hostname;
2967
2974
  options.port = parsed.port;
2968
2975
  setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);
2969
2976
  }
@@ -3105,7 +3112,7 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {
3105
3112
  }
3106
3113
 
3107
3114
  const err = new AxiosError(
3108
- 'maxContentLength size of ' + config.maxContentLength + ' exceeded',
3115
+ 'stream has been aborted',
3109
3116
  AxiosError.ERR_BAD_RESPONSE,
3110
3117
  config,
3111
3118
  lastRequest
@@ -3228,68 +3235,18 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {
3228
3235
  });
3229
3236
  };
3230
3237
 
3231
- const isURLSameOrigin = platform.hasStandardBrowserEnv ?
3232
-
3233
- // Standard browser envs have full support of the APIs needed to test
3234
- // whether the request URL is of the same origin as current location.
3235
- (function standardBrowserEnv() {
3236
- const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);
3237
- const urlParsingNode = document.createElement('a');
3238
- let originURL;
3239
-
3240
- /**
3241
- * Parse a URL to discover its components
3242
- *
3243
- * @param {String} url The URL to be parsed
3244
- * @returns {Object}
3245
- */
3246
- function resolveURL(url) {
3247
- let href = url;
3248
-
3249
- if (msie) {
3250
- // IE needs attribute set twice to normalize properties
3251
- urlParsingNode.setAttribute('href', href);
3252
- href = urlParsingNode.href;
3253
- }
3254
-
3255
- urlParsingNode.setAttribute('href', href);
3256
-
3257
- // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
3258
- return {
3259
- href: urlParsingNode.href,
3260
- protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
3261
- host: urlParsingNode.host,
3262
- search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
3263
- hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
3264
- hostname: urlParsingNode.hostname,
3265
- port: urlParsingNode.port,
3266
- pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
3267
- urlParsingNode.pathname :
3268
- '/' + urlParsingNode.pathname
3269
- };
3270
- }
3238
+ const isURLSameOrigin = platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {
3239
+ url = new URL(url, platform.origin);
3271
3240
 
3272
- originURL = resolveURL(window.location.href);
3273
-
3274
- /**
3275
- * Determine if a URL shares the same origin as the current location
3276
- *
3277
- * @param {String} requestURL The URL to test
3278
- * @returns {boolean} True if URL shares the same origin, otherwise false
3279
- */
3280
- return function isURLSameOrigin(requestURL) {
3281
- const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
3282
- return (parsed.protocol === originURL.protocol &&
3283
- parsed.host === originURL.host);
3284
- };
3285
- })() :
3286
-
3287
- // Non standard browser envs (web workers, react-native) lack needed support.
3288
- (function nonStandardBrowserEnv() {
3289
- return function isURLSameOrigin() {
3290
- return true;
3291
- };
3292
- })();
3241
+ return (
3242
+ origin.protocol === url.protocol &&
3243
+ origin.host === url.host &&
3244
+ (isMSIE || origin.port === url.port)
3245
+ );
3246
+ })(
3247
+ new URL(platform.origin),
3248
+ platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)
3249
+ ) : () => true;
3293
3250
 
3294
3251
  const cookies = platform.hasStandardBrowserEnv ?
3295
3252
 
@@ -3346,7 +3303,7 @@ function mergeConfig(config1, config2) {
3346
3303
  config2 = config2 || {};
3347
3304
  const config = {};
3348
3305
 
3349
- function getMergedValue(target, source, caseless) {
3306
+ function getMergedValue(target, source, prop, caseless) {
3350
3307
  if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
3351
3308
  return utils$1.merge.call({caseless}, target, source);
3352
3309
  } else if (utils$1.isPlainObject(source)) {
@@ -3358,11 +3315,11 @@ function mergeConfig(config1, config2) {
3358
3315
  }
3359
3316
 
3360
3317
  // eslint-disable-next-line consistent-return
3361
- function mergeDeepProperties(a, b, caseless) {
3318
+ function mergeDeepProperties(a, b, prop , caseless) {
3362
3319
  if (!utils$1.isUndefined(b)) {
3363
- return getMergedValue(a, b, caseless);
3320
+ return getMergedValue(a, b, prop , caseless);
3364
3321
  } else if (!utils$1.isUndefined(a)) {
3365
- return getMergedValue(undefined, a, caseless);
3322
+ return getMergedValue(undefined, a, prop , caseless);
3366
3323
  }
3367
3324
  }
3368
3325
 
@@ -3420,7 +3377,7 @@ function mergeConfig(config1, config2) {
3420
3377
  socketPath: defaultToConfig2,
3421
3378
  responseEncoding: defaultToConfig2,
3422
3379
  validateStatus: mergeDirectKeys,
3423
- headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)
3380
+ headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)
3424
3381
  };
3425
3382
 
3426
3383
  utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
@@ -3730,14 +3687,34 @@ const streamChunk = function* (chunk, chunkSize) {
3730
3687
  }
3731
3688
  };
3732
3689
 
3733
- const readBytes = async function* (iterable, chunkSize, encode) {
3734
- for await (const chunk of iterable) {
3735
- yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);
3690
+ const readBytes = async function* (iterable, chunkSize) {
3691
+ for await (const chunk of readStream(iterable)) {
3692
+ yield* streamChunk(chunk, chunkSize);
3736
3693
  }
3737
3694
  };
3738
3695
 
3739
- const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {
3740
- const iterator = readBytes(stream, chunkSize, encode);
3696
+ const readStream = async function* (stream) {
3697
+ if (stream[Symbol.asyncIterator]) {
3698
+ yield* stream;
3699
+ return;
3700
+ }
3701
+
3702
+ const reader = stream.getReader();
3703
+ try {
3704
+ for (;;) {
3705
+ const {done, value} = await reader.read();
3706
+ if (done) {
3707
+ break;
3708
+ }
3709
+ yield value;
3710
+ }
3711
+ } finally {
3712
+ await reader.cancel();
3713
+ }
3714
+ };
3715
+
3716
+ const trackStream = (stream, chunkSize, onProgress, onFinish) => {
3717
+ const iterator = readBytes(stream, chunkSize);
3741
3718
 
3742
3719
  let bytes = 0;
3743
3720
  let done;
@@ -3917,7 +3894,7 @@ const fetchAdapter = isFetchSupported && (async (config) => {
3917
3894
  progressEventReducer(asyncDecorator(onUploadProgress))
3918
3895
  );
3919
3896
 
3920
- data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush, encodeText);
3897
+ data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
3921
3898
  }
3922
3899
  }
3923
3900
 
@@ -3960,7 +3937,7 @@ const fetchAdapter = isFetchSupported && (async (config) => {
3960
3937
  trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
3961
3938
  flush && flush();
3962
3939
  unsubscribe && unsubscribe();
3963
- }, encodeText),
3940
+ }),
3964
3941
  options
3965
3942
  );
3966
3943
  }
@@ -4193,6 +4170,14 @@ validators$1.transitional = function transitional(validator, version, message) {
4193
4170
  };
4194
4171
  };
4195
4172
 
4173
+ validators$1.spelling = function spelling(correctSpelling) {
4174
+ return (value, opt) => {
4175
+ // eslint-disable-next-line no-console
4176
+ console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);
4177
+ return true;
4178
+ }
4179
+ };
4180
+
4196
4181
  /**
4197
4182
  * Assert object's properties type
4198
4183
  *
@@ -4262,9 +4247,9 @@ class Axios {
4262
4247
  return await this._request(configOrUrl, config);
4263
4248
  } catch (err) {
4264
4249
  if (err instanceof Error) {
4265
- let dummy;
4250
+ let dummy = {};
4266
4251
 
4267
- Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());
4252
+ Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());
4268
4253
 
4269
4254
  // slice off the Error: ... line
4270
4255
  const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : '';
@@ -4319,6 +4304,11 @@ class Axios {
4319
4304
  }
4320
4305
  }
4321
4306
 
4307
+ validator.assertOptions(config, {
4308
+ baseUrl: validators.spelling('baseURL'),
4309
+ withXsrfToken: validators.spelling('withXSRFToken')
4310
+ }, true);
4311
+
4322
4312
  // Set config.method
4323
4313
  config.method = (config.method || this.defaults.method || 'get').toLowerCase();
4324
4314