diff --git a/dist/restore/index.js b/dist/restore/index.js index 1533d6d..dd8d22d 100644 --- a/dist/restore/index.js +++ b/dist/restore/index.js @@ -74677,122 +74677,6 @@ const pLimit = concurrency => { module.exports = pLimit; -/***/ }), - -/***/ 63329: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -var parseUrl = (__nccwpck_require__(57310).parse); - -var DEFAULT_PORTS = { - ftp: 21, - gopher: 70, - http: 80, - https: 443, - ws: 80, - wss: 443, -}; - -var stringEndsWith = String.prototype.endsWith || function(s) { - return s.length <= this.length && - this.indexOf(s, this.length - s.length) !== -1; -}; - -/** - * @param {string|object} url - The URL, or the result from url.parse. - * @return {string} The URL of the proxy that should handle the request to the - * given URL. If no proxy is set, this will be an empty string. - */ -function getProxyForUrl(url) { - var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {}; - var proto = parsedUrl.protocol; - var hostname = parsedUrl.host; - var port = parsedUrl.port; - if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { - return ''; // Don't proxy URLs without a valid scheme or host. - } - - proto = proto.split(':', 1)[0]; - // Stripping ports in this way instead of using parsedUrl.hostname to make - // sure that the brackets around IPv6 addresses are kept. - hostname = hostname.replace(/:\d*$/, ''); - port = parseInt(port) || DEFAULT_PORTS[proto] || 0; - if (!shouldProxy(hostname, port)) { - return ''; // Don't proxy URLs that match NO_PROXY. - } - - var proxy = - getEnv('npm_config_' + proto + '_proxy') || - getEnv(proto + '_proxy') || - getEnv('npm_config_proxy') || - getEnv('all_proxy'); - if (proxy && proxy.indexOf('://') === -1) { - // Missing scheme in proxy, default to the requested URL's scheme. - proxy = proto + '://' + proxy; - } - return proxy; -} - -/** - * Determines whether a given URL should be proxied. - * - * @param {string} hostname - The host name of the URL. - * @param {number} port - The effective port of the URL. - * @returns {boolean} Whether the given URL should be proxied. - * @private - */ -function shouldProxy(hostname, port) { - var NO_PROXY = - (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase(); - if (!NO_PROXY) { - return true; // Always proxy if NO_PROXY is not set. - } - if (NO_PROXY === '*') { - return false; // Never proxy if wildcard is set. - } - - return NO_PROXY.split(/[,\s]/).every(function(proxy) { - if (!proxy) { - return true; // Skip zero-length hosts. - } - var parsedProxy = proxy.match(/^(.+):(\d+)$/); - var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; - var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; - if (parsedProxyPort && parsedProxyPort !== port) { - return true; // Skip if ports don't match. - } - - if (!/^[.*]/.test(parsedProxyHostname)) { - // No wildcards, so stop proxying if there is an exact match. - return hostname !== parsedProxyHostname; - } - - if (parsedProxyHostname.charAt(0) === '*') { - // Remove leading wildcard. - parsedProxyHostname = parsedProxyHostname.slice(1); - } - // Stop proxying if the hostname ends with the no_proxy host. - return !stringEndsWith.call(hostname, parsedProxyHostname); - }); -} - -/** - * Get the value for an environment variable. - * - * @param {string} key - The name of the environment variable. - * @return {string} The value of the environment variable. - * @private - */ -function getEnv(key) { - return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; -} - -exports.getProxyForUrl = getProxyForUrl; - - /***/ }), /***/ 67214: @@ -135999,35 +135883,20 @@ exports.getPackageJSON = getPackageJSON; /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -/*! Axios v1.13.5 Copyright (c) 2026 Matt Zabriskie and contributors */ - - -const FormData$1 = __nccwpck_require__(91403); -const crypto = __nccwpck_require__(6113); -const url = __nccwpck_require__(57310); -const proxyFromEnv = __nccwpck_require__(63329); -const http = __nccwpck_require__(13685); -const https = __nccwpck_require__(95687); -const http2 = __nccwpck_require__(85158); -const util = __nccwpck_require__(73837); -const followRedirects = __nccwpck_require__(67707); -const zlib = __nccwpck_require__(59796); -const stream = __nccwpck_require__(12781); -const events = __nccwpck_require__(82361); +/*! Axios v1.15.0 Copyright (c) 2026 Matt Zabriskie and contributors */ -function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } -const FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1); -const crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto); -const url__default = /*#__PURE__*/_interopDefaultLegacy(url); -const proxyFromEnv__default = /*#__PURE__*/_interopDefaultLegacy(proxyFromEnv); -const http__default = /*#__PURE__*/_interopDefaultLegacy(http); -const https__default = /*#__PURE__*/_interopDefaultLegacy(https); -const http2__default = /*#__PURE__*/_interopDefaultLegacy(http2); -const util__default = /*#__PURE__*/_interopDefaultLegacy(util); -const followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects); -const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); -const stream__default = /*#__PURE__*/_interopDefaultLegacy(stream); +var FormData$1 = __nccwpck_require__(91403); +var crypto = __nccwpck_require__(6113); +var url = __nccwpck_require__(57310); +var http = __nccwpck_require__(13685); +var https = __nccwpck_require__(95687); +var http2 = __nccwpck_require__(85158); +var util = __nccwpck_require__(73837); +var followRedirects = __nccwpck_require__(67707); +var zlib = __nccwpck_require__(59796); +var stream = __nccwpck_require__(12781); +var events = __nccwpck_require__(82361); /** * Create a bound version of a function with a specified `this` context @@ -136044,21 +135913,25 @@ function bind(fn, thisArg) { // utils is a library of generic helper functions non-specific to axios -const { toString } = Object.prototype; -const { getPrototypeOf } = Object; -const { iterator, toStringTag } = Symbol; - -const kindOf = ((cache) => (thing) => { +const { + toString +} = Object.prototype; +const { + getPrototypeOf +} = Object; +const { + iterator, + toStringTag +} = Symbol; +const kindOf = (cache => thing => { const str = toString.call(thing); return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); })(Object.create(null)); - -const kindOfTest = (type) => { +const kindOfTest = type => { type = type.toLowerCase(); - return (thing) => kindOf(thing) === type; + return thing => kindOf(thing) === type; }; - -const typeOfTest = (type) => (thing) => typeof thing === type; +const typeOfTest = type => thing => typeof thing === type; /** * Determine if a value is a non-null object @@ -136067,7 +135940,9 @@ const typeOfTest = (type) => (thing) => typeof thing === type; * * @returns {boolean} True if value is an Array, otherwise false */ -const { isArray } = Array; +const { + isArray +} = Array; /** * Determine if a value is undefined @@ -136076,7 +135951,7 @@ const { isArray } = Array; * * @returns {boolean} True if the value is undefined, otherwise false */ -const isUndefined = typeOfTest("undefined"); +const isUndefined = typeOfTest('undefined'); /** * Determine if a value is a Buffer @@ -136086,14 +135961,7 @@ const isUndefined = typeOfTest("undefined"); * @returns {boolean} True if value is a Buffer, otherwise false */ function isBuffer(val) { - return ( - val !== null && - !isUndefined(val) && - val.constructor !== null && - !isUndefined(val.constructor) && - isFunction$1(val.constructor.isBuffer) && - val.constructor.isBuffer(val) - ); + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction$1(val.constructor.isBuffer) && val.constructor.isBuffer(val); } /** @@ -136103,7 +135971,7 @@ function isBuffer(val) { * * @returns {boolean} True if value is an ArrayBuffer, otherwise false */ -const isArrayBuffer = kindOfTest("ArrayBuffer"); +const isArrayBuffer = kindOfTest('ArrayBuffer'); /** * Determine if a value is a view on an ArrayBuffer @@ -136114,7 +135982,7 @@ const isArrayBuffer = kindOfTest("ArrayBuffer"); */ function isArrayBufferView(val) { let result; - if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) { + if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { result = ArrayBuffer.isView(val); } else { result = val && val.buffer && isArrayBuffer(val.buffer); @@ -136129,7 +135997,7 @@ function isArrayBufferView(val) { * * @returns {boolean} True if value is a String, otherwise false */ -const isString = typeOfTest("string"); +const isString = typeOfTest('string'); /** * Determine if a value is a Function @@ -136137,7 +136005,7 @@ const isString = typeOfTest("string"); * @param {*} val The value to test * @returns {boolean} True if value is a Function, otherwise false */ -const isFunction$1 = typeOfTest("function"); +const isFunction$1 = typeOfTest('function'); /** * Determine if a value is a Number @@ -136146,7 +136014,7 @@ const isFunction$1 = typeOfTest("function"); * * @returns {boolean} True if value is a Number, otherwise false */ -const isNumber = typeOfTest("number"); +const isNumber = typeOfTest('number'); /** * Determine if a value is an Object @@ -136155,7 +136023,7 @@ const isNumber = typeOfTest("number"); * * @returns {boolean} True if value is an Object, otherwise false */ -const isObject = (thing) => thing !== null && typeof thing === "object"; +const isObject = thing => thing !== null && typeof thing === 'object'; /** * Determine if a value is a Boolean @@ -136163,7 +136031,7 @@ const isObject = (thing) => thing !== null && typeof thing === "object"; * @param {*} thing The value to test * @returns {boolean} True if value is a Boolean, otherwise false */ -const isBoolean = (thing) => thing === true || thing === false; +const isBoolean = thing => thing === true || thing === false; /** * Determine if a value is a plain Object @@ -136172,19 +136040,12 @@ const isBoolean = (thing) => thing === true || thing === false; * * @returns {boolean} True if value is a plain Object, otherwise false */ -const isPlainObject = (val) => { - if (kindOf(val) !== "object") { +const isPlainObject = val => { + if (kindOf(val) !== 'object') { return false; } - const prototype = getPrototypeOf(val); - return ( - (prototype === null || - prototype === Object.prototype || - Object.getPrototypeOf(prototype) === null) && - !(toStringTag in val) && - !(iterator in val) - ); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val); }; /** @@ -136194,17 +136055,13 @@ const isPlainObject = (val) => { * * @returns {boolean} True if value is an empty object, otherwise false */ -const isEmptyObject = (val) => { +const isEmptyObject = val => { // Early return for non-objects or Buffers to prevent RangeError if (!isObject(val) || isBuffer(val)) { return false; } - try { - return ( - Object.keys(val).length === 0 && - Object.getPrototypeOf(val) === Object.prototype - ); + return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; } catch (e) { // Fallback for any other objects that might cause RangeError with Object.keys() return false; @@ -136218,7 +136075,7 @@ const isEmptyObject = (val) => { * * @returns {boolean} True if value is a Date, otherwise false */ -const isDate = kindOfTest("Date"); +const isDate = kindOfTest('Date'); /** * Determine if a value is a File @@ -136227,7 +136084,32 @@ const isDate = kindOfTest("Date"); * * @returns {boolean} True if value is a File, otherwise false */ -const isFile = kindOfTest("File"); +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a React Native Blob + * React Native "blob": an object with a `uri` attribute. Optionally, it can + * also have a `name` and `type` attribute to specify filename and content type + * + * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 + * + * @param {*} value The value to test + * + * @returns {boolean} True if value is a React Native Blob, otherwise false + */ +const isReactNativeBlob = value => { + return !!(value && typeof value.uri !== 'undefined'); +}; + +/** + * Determine if environment is React Native + * ReactNative `FormData` has a non-standard `getParts()` method + * + * @param {*} formData The formData to test + * + * @returns {boolean} True if environment is React Native, otherwise false + */ +const isReactNative = formData => formData && typeof formData.getParts !== 'undefined'; /** * Determine if a value is a Blob @@ -136236,7 +136118,7 @@ const isFile = kindOfTest("File"); * * @returns {boolean} True if value is a Blob, otherwise false */ -const isBlob = kindOfTest("Blob"); +const isBlob = kindOfTest('Blob'); /** * Determine if a value is a FileList @@ -136245,7 +136127,7 @@ const isBlob = kindOfTest("Blob"); * * @returns {boolean} True if value is a File, otherwise false */ -const isFileList = kindOfTest("FileList"); +const isFileList = kindOfTest('FileList'); /** * Determine if a value is a Stream @@ -136254,7 +136136,7 @@ const isFileList = kindOfTest("FileList"); * * @returns {boolean} True if value is a Stream, otherwise false */ -const isStream = (val) => isObject(val) && isFunction$1(val.pipe); +const isStream = val => isObject(val) && isFunction$1(val.pipe); /** * Determine if a value is a FormData @@ -136263,18 +136145,20 @@ const isStream = (val) => isObject(val) && isFunction$1(val.pipe); * * @returns {boolean} True if value is an FormData, otherwise false */ -const isFormData = (thing) => { +function getGlobal() { + if (typeof globalThis !== 'undefined') return globalThis; + if (typeof self !== 'undefined') return self; + if (typeof window !== 'undefined') return window; + if (typeof global !== 'undefined') return global; + return {}; +} +const G = getGlobal(); +const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; +const isFormData = thing => { let kind; - return ( - thing && - ((typeof FormData === "function" && thing instanceof FormData) || - (isFunction$1(thing.append) && - ((kind = kindOf(thing)) === "formdata" || - // detect form-data instance - (kind === "object" && - isFunction$1(thing.toString) && - thing.toString() === "[object FormData]")))) - ); + return thing && (FormDataCtor && thing instanceof FormDataCtor || isFunction$1(thing.append) && ((kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + kind === 'object' && isFunction$1(thing.toString) && thing.toString() === '[object FormData]')); }; /** @@ -136284,14 +136168,8 @@ const isFormData = (thing) => { * * @returns {boolean} True if value is a URLSearchParams object, otherwise false */ -const isURLSearchParams = kindOfTest("URLSearchParams"); - -const [isReadableStream, isRequest, isResponse, isHeaders] = [ - "ReadableStream", - "Request", - "Response", - "Headers", -].map(kindOfTest); +const isURLSearchParams = kindOfTest('URLSearchParams'); +const [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest); /** * Trim excess whitespace off the beginning and end of a string @@ -136300,9 +136178,9 @@ const [isReadableStream, isRequest, isResponse, isHeaders] = [ * * @returns {String} The String freed of excess whitespace */ -const trim = (str) => - str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); - +const trim = str => { + return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); +}; /** * Iterate over an Array or an Object invoking a function for each item. * @@ -136319,21 +136197,21 @@ const trim = (str) => * @param {Boolean} [options.allOwnKeys = false] * @returns {any} */ -function forEach(obj, fn, { allOwnKeys = false } = {}) { +function forEach(obj, fn, { + allOwnKeys = false +} = {}) { // Don't bother if no value provided - if (obj === null || typeof obj === "undefined") { + if (obj === null || typeof obj === 'undefined') { return; } - let i; let l; // Force an array if not already something iterable - if (typeof obj !== "object") { + if (typeof obj !== 'object') { /*eslint no-param-reassign:0*/ obj = [obj]; } - if (isArray(obj)) { // Iterate over array values for (i = 0, l = obj.length; i < l; i++) { @@ -136346,12 +136224,9 @@ function forEach(obj, fn, { allOwnKeys = false } = {}) { } // Iterate over object keys - const keys = allOwnKeys - ? Object.getOwnPropertyNames(obj) - : Object.keys(obj); + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); const len = keys.length; let key; - for (i = 0; i < len; i++) { key = keys[i]; fn.call(null, obj[key], key, obj); @@ -136359,11 +136234,18 @@ function forEach(obj, fn, { allOwnKeys = false } = {}) { } } +/** + * Finds a key in an object, case-insensitive, returning the actual key name. + * Returns null if the object is a Buffer or if no match is found. + * + * @param {Object} obj - The object to search. + * @param {string} key - The key to find (case-insensitive). + * @returns {?string} The actual key name if found, otherwise null. + */ function findKey(obj, key) { if (isBuffer(obj)) { return null; } - key = key.toLowerCase(); const keys = Object.keys(obj); let i = keys.length; @@ -136376,19 +136258,12 @@ function findKey(obj, key) { } return null; } - const _global = (() => { /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" - ? self - : typeof window !== "undefined" - ? window - : global; + if (typeof globalThis !== 'undefined') return globalThis; + return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global; })(); - -const isContextDefined = (context) => - !isUndefined(context) && context !== _global; +const isContextDefined = context => !isUndefined(context) && context !== _global; /** * Accepts varargs expecting each argument to be an object, then @@ -136408,16 +136283,19 @@ const isContextDefined = (context) => * * @returns {Object} Result of all merge properties */ -function merge(/* obj1, obj2, obj3, ... */) { - const { caseless, skipUndefined } = (isContextDefined(this) && this) || {}; +function merge(/* obj1, obj2, obj3, ... */ +) { + const { + caseless, + skipUndefined + } = isContextDefined(this) && this || {}; const result = {}; const assignValue = (val, key) => { // Skip dangerous property names to prevent prototype pollution - if (key === "__proto__" || key === "constructor" || key === "prototype") { + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { return; } - - const targetKey = (caseless && findKey(result, key)) || key; + const targetKey = caseless && findKey(result, key) || key; if (isPlainObject(result[targetKey]) && isPlainObject(val)) { result[targetKey] = merge(result[targetKey], val); } else if (isPlainObject(val)) { @@ -136428,7 +136306,6 @@ function merge(/* obj1, obj2, obj3, ... */) { result[targetKey] = val; } }; - for (let i = 0, l = arguments.length; i < l; i++) { arguments[i] && forEach(arguments[i], assignValue); } @@ -136446,28 +136323,28 @@ function merge(/* obj1, obj2, obj3, ... */) { * @param {Boolean} [options.allOwnKeys] * @returns {Object} The resulting value of object a */ -const extend = (a, b, thisArg, { allOwnKeys } = {}) => { - forEach( - b, - (val, key) => { - if (thisArg && isFunction$1(val)) { - Object.defineProperty(a, key, { - value: bind(val, thisArg), - writable: true, - enumerable: true, - configurable: true, - }); - } else { - Object.defineProperty(a, key, { - value: val, - writable: true, - enumerable: true, - configurable: true, - }); - } - }, - { allOwnKeys }, - ); +const extend = (a, b, thisArg, { + allOwnKeys +} = {}) => { + forEach(b, (val, key) => { + if (thisArg && isFunction$1(val)) { + Object.defineProperty(a, key, { + value: bind(val, thisArg), + writable: true, + enumerable: true, + configurable: true + }); + } else { + Object.defineProperty(a, key, { + value: val, + writable: true, + enumerable: true, + configurable: true + }); + } + }, { + allOwnKeys + }); return a; }; @@ -136478,7 +136355,7 @@ const extend = (a, b, thisArg, { allOwnKeys } = {}) => { * * @returns {string} content value without BOM */ -const stripBOM = (content) => { +const stripBOM = content => { if (content.charCodeAt(0) === 0xfeff) { content = content.slice(1); } @@ -136495,18 +136372,15 @@ const stripBOM = (content) => { * @returns {void} */ const inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create( - superConstructor.prototype, - descriptors, - ); - Object.defineProperty(constructor.prototype, "constructor", { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + Object.defineProperty(constructor.prototype, 'constructor', { value: constructor, writable: true, enumerable: false, - configurable: true, + configurable: true }); - Object.defineProperty(constructor, "super", { - value: superConstructor.prototype, + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype }); props && Object.assign(constructor.prototype, props); }; @@ -136525,31 +136399,21 @@ const toFlatObject = (sourceObj, destObj, filter, propFilter) => { let i; let prop; const merged = {}; - destObj = destObj || {}; // eslint-disable-next-line no-eq-null,eqeqeq if (sourceObj == null) return destObj; - do { props = Object.getOwnPropertyNames(sourceObj); i = props.length; while (i-- > 0) { prop = props[i]; - if ( - (!propFilter || propFilter(prop, sourceObj, destObj)) && - !merged[prop] - ) { + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { destObj[prop] = sourceObj[prop]; merged[prop] = true; } } sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while ( - sourceObj && - (!filter || filter(sourceObj, destObj)) && - sourceObj !== Object.prototype - ); - + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); return destObj; }; @@ -136579,7 +136443,7 @@ const endsWith = (str, searchString, position) => { * * @returns {?Array} */ -const toArray = (thing) => { +const toArray = thing => { if (!thing) return null; if (isArray(thing)) return thing; let i = thing.length; @@ -136600,12 +136464,12 @@ const toArray = (thing) => { * @returns {Array} */ // eslint-disable-next-line func-names -const isTypedArray = ((TypedArray) => { +const isTypedArray = (TypedArray => { // eslint-disable-next-line func-names - return (thing) => { + return thing => { return TypedArray && thing instanceof TypedArray; }; -})(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array)); +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); /** * For each entry in the object, call the function with the key and value. @@ -136617,11 +136481,8 @@ const isTypedArray = ((TypedArray) => { */ const forEachEntry = (obj, fn) => { const generator = obj && obj[iterator]; - const _iterator = generator.call(obj); - let result; - while ((result = _iterator.next()) && !result.done) { const pair = result.value; fn.call(obj, pair[0], pair[1]); @@ -136639,31 +136500,24 @@ const forEachEntry = (obj, fn) => { const matchAll = (regExp, str) => { let matches; const arr = []; - while ((matches = regExp.exec(str)) !== null) { arr.push(matches); } - return arr; }; /* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ -const isHTMLForm = kindOfTest("HTMLFormElement"); - -const toCamelCase = (str) => { - return str - .toLowerCase() - .replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - }); +const isHTMLForm = kindOfTest('HTMLFormElement'); +const toCamelCase = str => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + }); }; /* Creating a function that will check if an object has a property. */ -const hasOwnProperty = ( - ({ hasOwnProperty }) => - (obj, prop) => - hasOwnProperty.call(obj, prop) -)(Object.prototype); +const hasOwnProperty = (({ + hasOwnProperty +}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); /** * Determine if a value is a RegExp object @@ -136672,19 +136526,16 @@ const hasOwnProperty = ( * * @returns {boolean} True if value is a RegExp object, otherwise false */ -const isRegExp = kindOfTest("RegExp"); - +const isRegExp = kindOfTest('RegExp'); const reduceDescriptors = (obj, reducer) => { const descriptors = Object.getOwnPropertyDescriptors(obj); const reducedDescriptors = {}; - forEach(descriptors, (descriptor, name) => { let ret; if ((ret = reducer(descriptor, name, obj)) !== false) { reducedDescriptors[name] = ret || descriptor; } }); - Object.defineProperties(obj, reducedDescriptors); }; @@ -136693,27 +136544,19 @@ const reduceDescriptors = (obj, reducer) => { * @param {Object} obj */ -const freezeMethods = (obj) => { +const freezeMethods = obj => { reduceDescriptors(obj, (descriptor, name) => { // skip restricted props in strict mode - if ( - isFunction$1(obj) && - ["arguments", "caller", "callee"].indexOf(name) !== -1 - ) { + if (isFunction$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { return false; } - const value = obj[name]; - if (!isFunction$1(value)) return; - descriptor.enumerable = false; - - if ("writable" in descriptor) { + if ('writable' in descriptor) { descriptor.writable = false; return; } - if (!descriptor.set) { descriptor.set = () => { throw Error("Can not rewrite read-only method '" + name + "'"); @@ -136722,28 +136565,27 @@ const freezeMethods = (obj) => { }); }; +/** + * Converts an array or a delimited string into an object set with values as keys and true as values. + * Useful for fast membership checks. + * + * @param {Array|string} arrayOrString - The array or string to convert. + * @param {string} delimiter - The delimiter to use if input is a string. + * @returns {Object} An object with keys from the array or string, values set to true. + */ const toObjectSet = (arrayOrString, delimiter) => { const obj = {}; - - const define = (arr) => { - arr.forEach((value) => { + const define = arr => { + arr.forEach(value => { obj[value] = true; }); }; - - isArray(arrayOrString) - ? define(arrayOrString) - : define(String(arrayOrString).split(delimiter)); - + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); return obj; }; - const noop = () => {}; - const toFiniteNumber = (value, defaultValue) => { - return value != null && Number.isFinite((value = +value)) - ? value - : defaultValue; + return value != null && Number.isFinite(value = +value) ? value : defaultValue; }; /** @@ -136754,17 +136596,17 @@ const toFiniteNumber = (value, defaultValue) => { * @returns {boolean} */ function isSpecCompliantForm(thing) { - return !!( - thing && - isFunction$1(thing.append) && - thing[toStringTag] === "FormData" && - thing[iterator] - ); + return !!(thing && isFunction$1(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]); } -const toJSONObject = (obj) => { +/** + * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. + * + * @param {Object} obj - The object to convert. + * @returns {Object} The JSON-compatible object. + */ +const toJSONObject = obj => { const stack = new Array(10); - const visit = (source, i) => { if (isObject(source)) { if (stack.indexOf(source) >= 0) { @@ -136775,74 +136617,81 @@ const toJSONObject = (obj) => { if (isBuffer(source)) { return source; } - - if (!("toJSON" in source)) { + if (!('toJSON' in source)) { stack[i] = source; const target = isArray(source) ? [] : {}; - forEach(source, (value, key) => { const reducedValue = visit(value, i + 1); !isUndefined(reducedValue) && (target[key] = reducedValue); }); - stack[i] = undefined; - return target; } } - return source; }; - return visit(obj, 0); }; -const isAsyncFn = kindOfTest("AsyncFunction"); +/** + * Determines if a value is an async function. + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is an async function, otherwise false. + */ +const isAsyncFn = kindOfTest('AsyncFunction'); -const isThenable = (thing) => - thing && - (isObject(thing) || isFunction$1(thing)) && - isFunction$1(thing.then) && - isFunction$1(thing.catch); +/** + * Determines if a value is thenable (has then and catch methods). + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is thenable, otherwise false. + */ +const isThenable = thing => thing && (isObject(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing.catch); // original code // https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 +/** + * Provides a cross-platform setImmediate implementation. + * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. + * + * @param {boolean} setImmediateSupported - Whether setImmediate is supported. + * @param {boolean} postMessageSupported - Whether postMessage is supported. + * @returns {Function} A function to schedule a callback asynchronously. + */ const _setImmediate = ((setImmediateSupported, postMessageSupported) => { if (setImmediateSupported) { return setImmediate; } + return postMessageSupported ? ((token, callbacks) => { + _global.addEventListener('message', ({ + source, + data + }) => { + if (source === _global && data === token) { + callbacks.length && callbacks.shift()(); + } + }, false); + return cb => { + callbacks.push(cb); + _global.postMessage(token, '*'); + }; + })(`axios@${Math.random()}`, []) : cb => setTimeout(cb); +})(typeof setImmediate === 'function', isFunction$1(_global.postMessage)); - return postMessageSupported - ? ((token, callbacks) => { - _global.addEventListener( - "message", - ({ source, data }) => { - if (source === _global && data === token) { - callbacks.length && callbacks.shift()(); - } - }, - false, - ); - - return (cb) => { - callbacks.push(cb); - _global.postMessage(token, "*"); - }; - })(`axios@${Math.random()}`, []) - : (cb) => setTimeout(cb); -})(typeof setImmediate === "function", isFunction$1(_global.postMessage)); - -const asap = - typeof queueMicrotask !== "undefined" - ? queueMicrotask.bind(_global) - : (typeof process !== "undefined" && process.nextTick) || _setImmediate; +/** + * Schedules a microtask or asynchronous callback as soon as possible. + * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. + * + * @type {Function} + */ +const asap = typeof queueMicrotask !== 'undefined' ? queueMicrotask.bind(_global) : typeof process !== 'undefined' && process.nextTick || _setImmediate; // ********************* -const isIterable = (thing) => thing != null && isFunction$1(thing[iterator]); - -const utils$1 = { +const isIterable = thing => thing != null && isFunction$1(thing[iterator]); +var utils$1 = { isArray, isArrayBuffer, isBuffer, @@ -136861,6 +136710,8 @@ const utils$1 = { isUndefined, isDate, isFile, + isReactNativeBlob, + isReactNative, isBlob, isRegExp, isFunction: isFunction$1, @@ -136883,7 +136734,8 @@ const utils$1 = { matchAll, isHTMLForm, hasOwnProperty, - hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + hasOwnProp: hasOwnProperty, + // an alias to avoid ESLint no-prototype-builtins detection reduceDescriptors, freezeMethods, toObjectSet, @@ -136899,61 +136751,75 @@ const utils$1 = { isThenable, setImmediate: _setImmediate, asap, - isIterable, + isIterable }; class AxiosError extends Error { - static from(error, code, config, request, response, customProps) { - const axiosError = new AxiosError(error.message, code || error.code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - customProps && Object.assign(axiosError, customProps); - return axiosError; - } + static from(error, code, config, request, response, customProps) { + const axiosError = new AxiosError(error.message, code || error.code, config, request, response); + axiosError.cause = error; + axiosError.name = error.name; - /** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ - constructor(message, code, config, request, response) { - super(message); - this.name = 'AxiosError'; - this.isAxiosError = true; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - if (response) { - this.response = response; - this.status = response.status; - } + // Preserve status from the original error if not already set from response + if (error.status != null && axiosError.status == null) { + axiosError.status = error.status; } + customProps && Object.assign(axiosError, customProps); + return axiosError; + } - toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils$1.toJSONObject(this.config), - code: this.code, - status: this.status, - }; + /** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ + constructor(message, code, config, request, response) { + super(message); + + // Make message enumerable to maintain backward compatibility + // The native Error constructor sets message as non-enumerable, + // but axios < v1.13.3 had it as enumerable + Object.defineProperty(this, 'message', { + value: message, + enumerable: true, + writable: true, + configurable: true + }); + this.name = 'AxiosError'; + this.isAxiosError = true; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + if (response) { + this.response = response; + this.status = response.status; } + } + toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.status + }; + } } // This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. @@ -136970,8 +136836,6 @@ AxiosError.ERR_CANCELED = 'ERR_CANCELED'; AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL'; -const AxiosError$1 = AxiosError; - /** * Determines if the given thing is a array or js object. * @@ -137022,7 +136886,6 @@ function renderKey(path, key, dots) { function isFlatArray(arr) { return utils$1.isArray(arr) && !arr.some(isVisitable); } - const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { return /^is[A-Z]/.test(prop); }); @@ -137056,7 +136919,7 @@ function toFormData(obj, formData, options) { } // eslint-disable-next-line no-param-reassign - formData = formData || new (FormData__default["default"] || FormData)(); + formData = formData || new (FormData$1 || FormData)(); // eslint-disable-next-line no-param-reassign options = utils$1.toFlatObject(options, { @@ -137067,7 +136930,6 @@ function toFormData(obj, formData, options) { // eslint-disable-next-line no-eq-null,eqeqeq return !utils$1.isUndefined(source[option]); }); - const metaTokens = options.metaTokens; // eslint-disable-next-line no-use-before-define const visitor = options.visitor || defaultVisitor; @@ -137075,30 +136937,23 @@ function toFormData(obj, formData, options) { const indexes = options.indexes; const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); - if (!utils$1.isFunction(visitor)) { throw new TypeError('visitor must be a function'); } - function convertValue(value) { if (value === null) return ''; - if (utils$1.isDate(value)) { return value.toISOString(); } - if (utils$1.isBoolean(value)) { return value.toString(); } - if (!useBlob && utils$1.isBlob(value)) { - throw new AxiosError$1('Blob is not supported. Use a Buffer instead.'); + throw new AxiosError('Blob is not supported. Use a Buffer instead.'); } - if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); } - return value; } @@ -137114,76 +136969,57 @@ function toFormData(obj, formData, options) { */ function defaultVisitor(value, key, path) { let arr = value; - + if (utils$1.isReactNative(formData) && utils$1.isReactNativeBlob(value)) { + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } if (value && !path && typeof value === 'object') { if (utils$1.endsWith(key, '{}')) { // eslint-disable-next-line no-param-reassign key = metaTokens ? key : key.slice(0, -2); // eslint-disable-next-line no-param-reassign value = JSON.stringify(value); - } else if ( - (utils$1.isArray(value) && isFlatArray(value)) || - ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)) - )) { + } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))) { // eslint-disable-next-line no-param-reassign key = removeBrackets(key); - arr.forEach(function each(el, index) { !(utils$1.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), - convertValue(el) - ); + // eslint-disable-next-line no-nested-ternary + indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + '[]', convertValue(el)); }); return false; } } - if (isVisitable(value)) { return true; } - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; } - const stack = []; - const exposedHelpers = Object.assign(predicates, { defaultVisitor, convertValue, isVisitable }); - function build(value, path) { if (utils$1.isUndefined(value)) return; - if (stack.indexOf(value) !== -1) { throw Error('Circular reference detected in ' + path.join('.')); } - stack.push(value); - utils$1.forEach(value, function each(el, key) { - const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( - formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers - ); - + const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers); if (result === true) { build(el, path ? path.concat(key) : [key]); } }); - stack.pop(); } - if (!utils$1.isObject(obj)) { throw new TypeError('data must be an object'); } - build(obj); - return formData; } @@ -137220,40 +137056,31 @@ function encode$1(str) { */ function AxiosURLSearchParams(params, options) { this._pairs = []; - params && toFormData(params, this, options); } - const prototype = AxiosURLSearchParams.prototype; - prototype.append = function append(name, value) { this._pairs.push([name, value]); }; - prototype.toString = function toString(encoder) { - const _encode = encoder ? function(value) { + const _encode = encoder ? function (value) { return encoder.call(this, value, encode$1); } : encode$1; - return this._pairs.map(function each(pair) { return _encode(pair[0]) + '=' + _encode(pair[1]); }, '').join('&'); }; /** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts + * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with + * their plain counterparts (`:`, `$`, `,`, `+`). * * @param {string} val The value to be encoded. * * @returns {string} The encoded value. */ function encode(val) { - return encodeURIComponent(val). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'); + return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+'); } /** @@ -137269,34 +137096,24 @@ function buildURL(url, params, options) { if (!params) { return url; } - const _encode = options && options.encode || encode; - const _options = utils$1.isFunction(options) ? { serialize: options } : options; - const serializeFn = _options && _options.serialize; - let serializedParams; - if (serializeFn) { serializedParams = serializeFn(params, _options); } else { - serializedParams = utils$1.isURLSearchParams(params) ? - params.toString() : - new AxiosURLSearchParams(params, _options).toString(_encode); + serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, _options).toString(_encode); } - if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); - + const hashmarkIndex = url.indexOf('#'); if (hashmarkIndex !== -1) { url = url.slice(0, hashmarkIndex); } url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; } - return url; } @@ -137367,54 +137184,47 @@ class InterceptorManager { } } -const InterceptorManager$1 = InterceptorManager; - -const transitionalDefaults = { +var transitionalDefaults = { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false, legacyInterceptorReqResOrdering: true }; -const URLSearchParams = url__default["default"].URLSearchParams; +var URLSearchParams = url.URLSearchParams; const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; - const DIGIT = '0123456789'; - const ALPHABET = { DIGIT, ALPHA, ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT }; - const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { let str = ''; - const {length} = alphabet; + const { + length + } = alphabet; const randomValues = new Uint32Array(size); - crypto__default["default"].randomFillSync(randomValues); + crypto.randomFillSync(randomValues); for (let i = 0; i < size; i++) { str += alphabet[randomValues[i] % length]; } - return str; }; - - -const platform$1 = { +var platform$1 = { isNode: true, classes: { URLSearchParams, - FormData: FormData__default["default"], + FormData: FormData$1, Blob: typeof Blob !== 'undefined' && Blob || null }, ALPHABET, generateString, - protocols: [ 'http', 'https', 'file', 'data' ] + protocols: ['http', 'https', 'file', 'data'] }; const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - const _navigator = typeof navigator === 'object' && navigator || undefined; /** @@ -137434,8 +137244,7 @@ const _navigator = typeof navigator === 'object' && navigator || undefined; * * @returns {boolean} */ -const hasStandardBrowserEnv = hasBrowserEnv && - (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); +const hasStandardBrowserEnv = hasBrowserEnv && (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); /** * Determine if we're running in a standard browser webWorker environment @@ -137447,38 +137256,33 @@ const hasStandardBrowserEnv = hasBrowserEnv && * This leads to a problem when axios post `FormData` in webWorker */ const hasStandardBrowserWebWorkerEnv = (() => { - return ( - typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && - typeof self.importScripts === 'function' - ); + return typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && typeof self.importScripts === 'function'; })(); - const origin = hasBrowserEnv && window.location.href || 'http://localhost'; -const utils = /*#__PURE__*/Object.freeze({ +var utils = /*#__PURE__*/Object.freeze({ __proto__: null, hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, hasStandardBrowserEnv: hasStandardBrowserEnv, + hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, navigator: _navigator, origin: origin }); -const platform = { +var platform = { ...utils, ...platform$1 }; function toURLEncodedForm(data, options) { return toFormData(data, new platform.classes.URLSearchParams(), { - visitor: function(value, key, path, helpers) { + visitor: function (value, key, path, helpers) { if (platform.isNode && utils$1.isBuffer(value)) { this.append(key, value.toString('base64')); return false; } - return helpers.defaultVisitor.apply(this, arguments); }, ...options @@ -137532,46 +137336,34 @@ function arrayToObject(arr) { function formDataToJSON(formData) { function buildPath(path, value, target, index) { let name = path[index++]; - if (name === '__proto__') return true; - const isNumericKey = Number.isFinite(+name); const isLast = index >= path.length; name = !name && utils$1.isArray(target) ? target.length : name; - if (isLast) { if (utils$1.hasOwnProp(target, name)) { target[name] = [target[name], value]; } else { target[name] = value; } - return !isNumericKey; } - if (!target[name] || !utils$1.isObject(target[name])) { target[name] = []; } - const result = buildPath(path, value, target[name], index); - if (result && utils$1.isArray(target[name])) { target[name] = arrayToObject(target[name]); } - return !isNumericKey; } - if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { const obj = {}; - utils$1.forEachEntry(formData, (name, value) => { buildPath(parsePropPath(name), value, obj, 0); }); - return obj; } - return null; } @@ -137596,38 +137388,23 @@ function stringifySafely(rawValue, parser, encoder) { } } } - return (encoder || JSON.stringify)(rawValue); } - const defaults = { - transitional: transitionalDefaults, - adapter: ['xhr', 'http', 'fetch'], - transformRequest: [function transformRequest(data, headers) { const contentType = headers.getContentType() || ''; const hasJSONContentType = contentType.indexOf('application/json') > -1; const isObjectPayload = utils$1.isObject(data); - if (isObjectPayload && utils$1.isHTMLForm(data)) { data = new FormData(data); } - const isFormData = utils$1.isFormData(data); - if (isFormData) { return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; } - - if (utils$1.isArrayBuffer(data) || - utils$1.isBuffer(data) || - utils$1.isStream(data) || - utils$1.isFile(data) || - utils$1.isBlob(data) || - utils$1.isReadableStream(data) - ) { + if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data) || utils$1.isReadableStream(data)) { return data; } if (utils$1.isArrayBufferView(data)) { @@ -137637,104 +137414,77 @@ const defaults = { headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); return data.toString(); } - let isFileList; - if (isObjectPayload) { if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { return toURLEncodedForm(data, this.formSerializer).toString(); } - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { const _FormData = this.env && this.env.FormData; - - return toFormData( - isFileList ? {'files[]': data} : data, - _FormData && new _FormData(), - this.formSerializer - ); + return toFormData(isFileList ? { + 'files[]': data + } : data, _FormData && new _FormData(), this.formSerializer); } } - - if (isObjectPayload || hasJSONContentType ) { + if (isObjectPayload || hasJSONContentType) { headers.setContentType('application/json', false); return stringifySafely(data); } - return data; }], - transformResponse: [function transformResponse(data) { const transitional = this.transitional || defaults.transitional; const forcedJSONParsing = transitional && transitional.forcedJSONParsing; const JSONRequested = this.responseType === 'json'; - if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { return data; } - - if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { + if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { const silentJSONParsing = transitional && transitional.silentJSONParsing; const strictJSONParsing = !silentJSONParsing && JSONRequested; - try { return JSON.parse(data, this.parseReviver); } catch (e) { if (strictJSONParsing) { if (e.name === 'SyntaxError') { - throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response); + throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); } throw e; } } } - return data; }], - /** * A timeout in milliseconds to abort a request. If set to 0 (default) a * timeout is not created. */ timeout: 0, - xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', - maxContentLength: -1, maxBodyLength: -1, - env: { FormData: platform.classes.FormData, Blob: platform.classes.Blob }, - validateStatus: function validateStatus(status) { return status >= 200 && status < 300; }, - headers: { common: { - 'Accept': 'application/json, text/plain, */*', + Accept: 'application/json, text/plain, */*', 'Content-Type': undefined } } }; - -utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { +utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], method => { defaults.headers[method] = {}; }); -const defaults$1 = defaults; - // RawAxiosHeaders whose duplicates are ignored by node // c.f. https://nodejs.org/api/http.html#http_message_headers -const ignoreDuplicateOf = utils$1.toObjectSet([ - 'age', 'authorization', 'content-length', 'content-type', 'etag', - 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', - 'last-modified', 'location', 'max-forwards', 'proxy-authorization', - 'referer', 'retry-after', 'user-agent' -]); +const ignoreDuplicateOf = utils$1.toObjectSet(['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent']); /** * Parse headers into an object @@ -137750,21 +137500,18 @@ const ignoreDuplicateOf = utils$1.toObjectSet([ * * @returns {Object} Headers parsed into an object */ -const parseHeaders = rawHeaders => { +var parseHeaders = rawHeaders => { const parsed = {}; let key; let val; let i; - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { i = line.indexOf(':'); key = line.substring(0, i).trim().toLowerCase(); val = line.substring(i + 1).trim(); - - if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + if (!key || parsed[key] && ignoreDuplicateOf[key]) { return; } - if (key === 'set-cookie') { if (parsed[key]) { parsed[key].push(val); @@ -137775,320 +137522,267 @@ const parseHeaders = rawHeaders => { parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; } }); - return parsed; }; const $internals = Symbol('internals'); - +const isValidHeaderValue = value => !/[\r\n]/.test(value); +function assertValidHeaderValue(value, header) { + if (value === false || value == null) { + return; + } + if (utils$1.isArray(value)) { + value.forEach(v => assertValidHeaderValue(v, header)); + return; + } + if (!isValidHeaderValue(String(value))) { + throw new Error(`Invalid character in header content ["${header}"]`); + } +} function normalizeHeader(header) { return header && String(header).trim().toLowerCase(); } - +function stripTrailingCRLF(str) { + let end = str.length; + while (end > 0) { + const charCode = str.charCodeAt(end - 1); + if (charCode !== 10 && charCode !== 13) { + break; + } + end -= 1; + } + return end === str.length ? str : str.slice(0, end); +} function normalizeValue(value) { if (value === false || value == null) { return value; } - - return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); + return utils$1.isArray(value) ? value.map(normalizeValue) : stripTrailingCRLF(String(value)); } - function parseTokens(str) { const tokens = Object.create(null); const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; let match; - - while ((match = tokensRE.exec(str))) { + while (match = tokensRE.exec(str)) { tokens[match[1]] = match[2]; } - return tokens; } - -const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - +const isValidHeaderName = str => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { if (utils$1.isFunction(filter)) { return filter.call(this, value, header); } - if (isHeaderNameFilter) { value = header; } - if (!utils$1.isString(value)) return; - if (utils$1.isString(filter)) { return value.indexOf(filter) !== -1; } - if (utils$1.isRegExp(filter)) { return filter.test(value); } } - function formatHeader(header) { - return header.trim() - .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { - return char.toUpperCase() + str; - }); + return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); } - function buildAccessors(obj, header) { const accessorName = utils$1.toCamelCase(' ' + header); - ['get', 'set', 'has'].forEach(methodName => { Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { + value: function (arg1, arg2, arg3) { return this[methodName].call(this, header, arg1, arg2, arg3); }, configurable: true }); }); } - class AxiosHeaders { constructor(headers) { headers && this.set(headers); } - set(header, valueOrRewrite, rewrite) { const self = this; - function setHeader(_value, _header, _rewrite) { const lHeader = normalizeHeader(_header); - if (!lHeader) { throw new Error('header name must be a non-empty string'); } - const key = utils$1.findKey(self, lHeader); - - if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { + if (!key || self[key] === undefined || _rewrite === true || _rewrite === undefined && self[key] !== false) { + assertValidHeaderValue(_value, _header); self[key || _header] = normalizeValue(_value); } } - - const setHeaders = (headers, _rewrite) => - utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); - + const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); if (utils$1.isPlainObject(header) || header instanceof this.constructor) { setHeaders(header, valueOrRewrite); - } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { setHeaders(parseHeaders(header), valueOrRewrite); } else if (utils$1.isObject(header) && utils$1.isIterable(header)) { - let obj = {}, dest, key; + let obj = {}, + dest, + key; for (const entry of header) { if (!utils$1.isArray(entry)) { throw TypeError('Object iterator must return a key-value pair'); } - - obj[key = entry[0]] = (dest = obj[key]) ? - (utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1]; + obj[key = entry[0]] = (dest = obj[key]) ? utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]] : entry[1]; } - setHeaders(obj, valueOrRewrite); } else { header != null && setHeader(valueOrRewrite, header, rewrite); } - return this; } - get(header, parser) { header = normalizeHeader(header); - if (header) { const key = utils$1.findKey(this, header); - if (key) { const value = this[key]; - if (!parser) { return value; } - if (parser === true) { return parseTokens(value); } - if (utils$1.isFunction(parser)) { return parser.call(this, value, key); } - if (utils$1.isRegExp(parser)) { return parser.exec(value); } - throw new TypeError('parser must be boolean|regexp|function'); } } } - has(header, matcher) { header = normalizeHeader(header); - if (header) { const key = utils$1.findKey(this, header); - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); } - return false; } - delete(header, matcher) { const self = this; let deleted = false; - function deleteHeader(_header) { _header = normalizeHeader(_header); - if (_header) { const key = utils$1.findKey(self, _header); - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { delete self[key]; - deleted = true; } } } - if (utils$1.isArray(header)) { header.forEach(deleteHeader); } else { deleteHeader(header); } - return deleted; } - clear(matcher) { const keys = Object.keys(this); let i = keys.length; let deleted = false; - while (i--) { const key = keys[i]; - if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { delete this[key]; deleted = true; } } - return deleted; } - normalize(format) { const self = this; const headers = {}; - utils$1.forEach(this, (value, header) => { const key = utils$1.findKey(headers, header); - if (key) { self[key] = normalizeValue(value); delete self[header]; return; } - const normalized = format ? formatHeader(header) : String(header).trim(); - if (normalized !== header) { delete self[header]; } - self[normalized] = normalizeValue(value); - headers[normalized] = true; }); - return this; } - concat(...targets) { return this.constructor.concat(this, ...targets); } - toJSON(asStrings) { const obj = Object.create(null); - utils$1.forEach(this, (value, header) => { value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); }); - return obj; } - [Symbol.iterator]() { return Object.entries(this.toJSON())[Symbol.iterator](); } - toString() { return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); } - getSetCookie() { - return this.get("set-cookie") || []; + return this.get('set-cookie') || []; } - get [Symbol.toStringTag]() { return 'AxiosHeaders'; } - static from(thing) { return thing instanceof this ? thing : new this(thing); } - static concat(first, ...targets) { const computed = new this(first); - - targets.forEach((target) => computed.set(target)); - + targets.forEach(target => computed.set(target)); return computed; } - static accessor(header) { - const internals = this[$internals] = (this[$internals] = { + const internals = this[$internals] = this[$internals] = { accessors: {} - }); - + }; const accessors = internals.accessors; const prototype = this.prototype; - function defineAccessor(_header) { const lHeader = normalizeHeader(_header); - if (!accessors[lHeader]) { buildAccessors(prototype, _header); accessors[lHeader] = true; } } - utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - return this; } } - AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); // reserved names hotfix -utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { +utils$1.reduceDescriptors(AxiosHeaders.prototype, ({ + value +}, key) => { let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` return { get: () => value, set(headerValue) { this[mapped] = headerValue; } - } + }; }); - utils$1.freezeMethods(AxiosHeaders); -const AxiosHeaders$1 = AxiosHeaders; - /** * Transform the data for a request or a response * @@ -138098,17 +137792,14 @@ const AxiosHeaders$1 = AxiosHeaders; * @returns {*} The resulting transformed data */ function transformData(fns, response) { - const config = this || defaults$1; + const config = this || defaults; const context = response || config; - const headers = AxiosHeaders$1.from(context.headers); + const headers = AxiosHeaders.from(context.headers); let data = context.data; - utils$1.forEach(fns, function transform(fn) { data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); }); - headers.normalize(); - return data; } @@ -138116,7 +137807,7 @@ function isCancel(value) { return !!(value && value.__CANCEL__); } -class CanceledError extends AxiosError$1 { +class CanceledError extends AxiosError { /** * A `CanceledError` is an object that is thrown when an operation is canceled. * @@ -138127,14 +137818,12 @@ class CanceledError extends AxiosError$1 { * @returns {CanceledError} The created error. */ constructor(message, config, request) { - super(message == null ? 'canceled' : message, AxiosError$1.ERR_CANCELED, config, request); + super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); this.name = 'CanceledError'; this.__CANCEL__ = true; } } -const CanceledError$1 = CanceledError; - /** * Resolve or reject a Promise based on response status. * @@ -138149,13 +137838,7 @@ function settle(resolve, reject, response) { if (!response.status || !validateStatus || validateStatus(response.status)) { resolve(response); } else { - reject(new AxiosError$1( - 'Request failed with status code ' + response.status, - [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], - response.config, - response.request, - response - )); + reject(new AxiosError('Request failed with status code ' + response.status, [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response)); } } @@ -138173,7 +137856,6 @@ function isAbsoluteURL(url) { if (typeof url !== 'string') { return false; } - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); } @@ -138186,9 +137868,7 @@ function isAbsoluteURL(url) { * @returns {string} The combined URL */ function combineURLs(baseURL, relativeURL) { - return relativeURL - ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') - : baseURL; + return relativeURL ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL; } /** @@ -138209,7 +137889,103 @@ function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { return requestedURL; } -const VERSION = "1.13.5"; +var DEFAULT_PORTS$1 = { + ftp: 21, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443 +}; +function parseUrl(urlString) { + try { + return new URL(urlString); + } catch { + return null; + } +} + +/** + * @param {string|object|URL} url - The URL as a string or URL instance, or a + * compatible object (such as the result from legacy url.parse). + * @return {string} The URL of the proxy that should handle the request to the + * given URL. If no proxy is set, this will be an empty string. + */ +function getProxyForUrl(url) { + var parsedUrl = (typeof url === 'string' ? parseUrl(url) : url) || {}; + var proto = parsedUrl.protocol; + var hostname = parsedUrl.host; + var port = parsedUrl.port; + if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { + return ''; // Don't proxy URLs without a valid scheme or host. + } + proto = proto.split(':', 1)[0]; + // Stripping ports in this way instead of using parsedUrl.hostname to make + // sure that the brackets around IPv6 addresses are kept. + hostname = hostname.replace(/:\d*$/, ''); + port = parseInt(port) || DEFAULT_PORTS$1[proto] || 0; + if (!shouldProxy(hostname, port)) { + return ''; // Don't proxy URLs that match NO_PROXY. + } + var proxy = getEnv(proto + '_proxy') || getEnv('all_proxy'); + if (proxy && proxy.indexOf('://') === -1) { + // Missing scheme in proxy, default to the requested URL's scheme. + proxy = proto + '://' + proxy; + } + return proxy; +} + +/** + * Determines whether a given URL should be proxied. + * + * @param {string} hostname - The host name of the URL. + * @param {number} port - The effective port of the URL. + * @returns {boolean} Whether the given URL should be proxied. + * @private + */ +function shouldProxy(hostname, port) { + var NO_PROXY = getEnv('no_proxy').toLowerCase(); + if (!NO_PROXY) { + return true; // Always proxy if NO_PROXY is not set. + } + if (NO_PROXY === '*') { + return false; // Never proxy if wildcard is set. + } + return NO_PROXY.split(/[,\s]/).every(function (proxy) { + if (!proxy) { + return true; // Skip zero-length hosts. + } + var parsedProxy = proxy.match(/^(.+):(\d+)$/); + var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; + var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; + if (parsedProxyPort && parsedProxyPort !== port) { + return true; // Skip if ports don't match. + } + if (!/^[.*]/.test(parsedProxyHostname)) { + // No wildcards, so stop proxying if there is an exact match. + return hostname !== parsedProxyHostname; + } + if (parsedProxyHostname.charAt(0) === '*') { + // Remove leading wildcard. + parsedProxyHostname = parsedProxyHostname.slice(1); + } + // Stop proxying if the hostname ends with the no_proxy host. + return !hostname.endsWith(parsedProxyHostname); + }); +} + +/** + * Get the value for an environment variable. + * + * @param {string} key - The name of the environment variable. + * @return {string} The value of the environment variable. + * @private + */ +function getEnv(key) { + return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; +} + +const VERSION = "1.15.0"; function parseProtocol(url) { const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); @@ -138231,42 +138007,34 @@ const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; function fromDataURI(uri, asBlob, options) { const _Blob = options && options.Blob || platform.classes.Blob; const protocol = parseProtocol(uri); - if (asBlob === undefined && _Blob) { asBlob = true; } - if (protocol === 'data') { uri = protocol.length ? uri.slice(protocol.length + 1) : uri; - const match = DATA_URL_PATTERN.exec(uri); - if (!match) { - throw new AxiosError$1('Invalid URL', AxiosError$1.ERR_INVALID_URL); + throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); } - const mime = match[1]; const isBase64 = match[2]; const body = match[3]; const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); - if (asBlob) { if (!_Blob) { - throw new AxiosError$1('Blob is not supported', AxiosError$1.ERR_NOT_SUPPORT); + throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); } - - return new _Blob([buffer], {type: mime}); + return new _Blob([buffer], { + type: mime + }); } - return buffer; } - - throw new AxiosError$1('Unsupported protocol ' + protocol, AxiosError$1.ERR_NOT_SUPPORT); + throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); } const kInternals = Symbol('internals'); - -class AxiosTransformStream extends stream__default["default"].Transform{ +class AxiosTransformStream extends stream.Transform { constructor(options) { options = utils$1.toFlatObject(options, { maxRate: 0, @@ -138278,11 +138046,9 @@ class AxiosTransformStream extends stream__default["default"].Transform{ }, null, (prop, source) => { return !utils$1.isUndefined(source[prop]); }); - super({ readableHighWaterMark: options.chunkSize }); - const internals = this[kInternals] = { timeWindow: options.timeWindow, chunkSize: options.chunkSize, @@ -138295,7 +138061,6 @@ class AxiosTransformStream extends stream__default["default"].Transform{ bytes: 0, onReadCallback: null }; - this.on('newListener', event => { if (event === 'progress') { if (!internals.isCaptured) { @@ -138304,36 +138069,26 @@ class AxiosTransformStream extends stream__default["default"].Transform{ } }); } - _read(size) { const internals = this[kInternals]; - if (internals.onReadCallback) { internals.onReadCallback(); } - return super._read(size); } - _transform(chunk, encoding, callback) { const internals = this[kInternals]; const maxRate = internals.maxRate; - const readableHighWaterMark = this.readableHighWaterMark; - const timeWindow = internals.timeWindow; - const divider = 1000 / timeWindow; - const bytesThreshold = (maxRate / divider); + const bytesThreshold = maxRate / divider; const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; - const pushChunk = (_chunk, _callback) => { const bytes = Buffer.byteLength(_chunk); internals.bytesSeen += bytes; internals.bytes += bytes; - internals.isCaptured && this.emit('progress', internals.bytesSeen); - if (this.push(_chunk)) { process.nextTick(_callback); } else { @@ -138343,27 +138098,22 @@ class AxiosTransformStream extends stream__default["default"].Transform{ }; } }; - const transformChunk = (_chunk, _callback) => { const chunkSize = Buffer.byteLength(_chunk); let chunkRemainder = null; let maxChunkSize = readableHighWaterMark; let bytesLeft; let passed = 0; - if (maxRate) { const now = Date.now(); - - if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) { + if (!internals.ts || (passed = now - internals.ts) >= timeWindow) { internals.ts = now; bytesLeft = bytesThreshold - internals.bytes; internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; passed = 0; } - bytesLeft = bytesThreshold - internals.bytes; } - if (maxRate) { if (bytesLeft <= 0) { // next time window @@ -138371,27 +138121,22 @@ class AxiosTransformStream extends stream__default["default"].Transform{ _callback(null, _chunk); }, timeWindow - passed); } - if (bytesLeft < maxChunkSize) { maxChunkSize = bytesLeft; } } - - if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) { + if (maxChunkSize && chunkSize > maxChunkSize && chunkSize - maxChunkSize > minChunkSize) { chunkRemainder = _chunk.subarray(maxChunkSize); _chunk = _chunk.subarray(0, maxChunkSize); } - pushChunk(_chunk, chunkRemainder ? () => { process.nextTick(_callback, null, chunkRemainder); } : _callback); }; - transformChunk(chunk, function transformNextChunk(err, _chunk) { if (err) { return callback(err); } - if (_chunk) { transformChunk(_chunk, transformNextChunk); } else { @@ -138401,10 +138146,9 @@ class AxiosTransformStream extends stream__default["default"].Transform{ } } -const AxiosTransformStream$1 = AxiosTransformStream; - -const {asyncIterator} = Symbol; - +const { + asyncIterator +} = Symbol; const readBlob = async function* (blob) { if (blob.stream) { yield* blob.stream(); @@ -138417,144 +138161,113 @@ const readBlob = async function* (blob) { } }; -const readBlob$1 = readBlob; - const BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_'; - -const textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util__default["default"].TextEncoder(); - +const textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util.TextEncoder(); const CRLF = '\r\n'; const CRLF_BYTES = textEncoder.encode(CRLF); const CRLF_BYTES_COUNT = 2; - class FormDataPart { constructor(name, value) { - const {escapeName} = this.constructor; + const { + escapeName + } = this.constructor; const isStringValue = utils$1.isString(value); - - let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ - !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' - }${CRLF}`; - + let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${!isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : ''}${CRLF}`; if (isStringValue) { value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); } else { - headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}`; + headers += `Content-Type: ${value.type || 'application/octet-stream'}${CRLF}`; } - this.headers = textEncoder.encode(headers + CRLF); - this.contentLength = isStringValue ? value.byteLength : value.size; - this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; - this.name = name; this.value = value; } - - async *encode(){ + async *encode() { yield this.headers; - - const {value} = this; - - if(utils$1.isTypedArray(value)) { + const { + value + } = this; + if (utils$1.isTypedArray(value)) { yield value; } else { - yield* readBlob$1(value); + yield* readBlob(value); } - yield CRLF_BYTES; } - static escapeName(name) { - return String(name).replace(/[\r\n"]/g, (match) => ({ - '\r' : '%0D', - '\n' : '%0A', - '"' : '%22', - }[match])); + return String(name).replace(/[\r\n"]/g, match => ({ + '\r': '%0D', + '\n': '%0A', + '"': '%22' + })[match]); } } - const formDataToStream = (form, headersHandler, options) => { const { tag = 'form-data-boundary', size = 25, boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET) } = options || {}; - - if(!utils$1.isFormData(form)) { + if (!utils$1.isFormData(form)) { throw TypeError('FormData instance required'); } - if (boundary.length < 1 || boundary.length > 70) { - throw Error('boundary must be 10-70 characters long') + throw Error('boundary must be 10-70 characters long'); } - const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF); let contentLength = footerBytes.byteLength; - const parts = Array.from(form.entries()).map(([name, value]) => { const part = new FormDataPart(name, value); contentLength += part.size; return part; }); - contentLength += boundaryBytes.byteLength * parts.length; - contentLength = utils$1.toFiniteNumber(contentLength); - const computedHeaders = { 'Content-Type': `multipart/form-data; boundary=${boundary}` }; - if (Number.isFinite(contentLength)) { computedHeaders['Content-Length'] = contentLength; } - headersHandler && headersHandler(computedHeaders); - - return stream.Readable.from((async function *() { - for(const part of parts) { + return stream.Readable.from(async function* () { + for (const part of parts) { yield boundaryBytes; yield* part.encode(); } - yield footerBytes; - })()); + }()); }; -const formDataToStream$1 = formDataToStream; - -class ZlibHeaderTransformStream extends stream__default["default"].Transform { +class ZlibHeaderTransformStream extends stream.Transform { __transform(chunk, encoding, callback) { this.push(chunk); callback(); } - _transform(chunk, encoding, callback) { if (chunk.length !== 0) { this._transform = this.__transform; // Add Default Compression headers if no zlib headers are present - if (chunk[0] !== 120) { // Hex: 78 + if (chunk[0] !== 120) { + // Hex: 78 const header = Buffer.alloc(2); header[0] = 120; // Hex: 78 - header[1] = 156; // Hex: 9C + header[1] = 156; // Hex: 9C this.push(header, encoding); } } - this.__transform(chunk, encoding, callback); } } -const ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream; - const callbackify = (fn, reducer) => { return utils$1.isAsyncFn(fn) ? function (...args) { const cb = args.pop(); - fn.apply(this, args).then((value) => { + fn.apply(this, args).then(value => { try { reducer ? cb(null, ...reducer(value)) : cb(null, value); } catch (err) { @@ -138564,7 +138277,81 @@ const callbackify = (fn, reducer) => { } : fn; }; -const callbackify$1 = callbackify; +const DEFAULT_PORTS = { + http: 80, + https: 443, + ws: 80, + wss: 443, + ftp: 21 +}; +const parseNoProxyEntry = entry => { + let entryHost = entry; + let entryPort = 0; + if (entryHost.charAt(0) === '[') { + const bracketIndex = entryHost.indexOf(']'); + if (bracketIndex !== -1) { + const host = entryHost.slice(1, bracketIndex); + const rest = entryHost.slice(bracketIndex + 1); + if (rest.charAt(0) === ':' && /^\d+$/.test(rest.slice(1))) { + entryPort = Number.parseInt(rest.slice(1), 10); + } + return [host, entryPort]; + } + } + const firstColon = entryHost.indexOf(':'); + const lastColon = entryHost.lastIndexOf(':'); + if (firstColon !== -1 && firstColon === lastColon && /^\d+$/.test(entryHost.slice(lastColon + 1))) { + entryPort = Number.parseInt(entryHost.slice(lastColon + 1), 10); + entryHost = entryHost.slice(0, lastColon); + } + return [entryHost, entryPort]; +}; +const normalizeNoProxyHost = hostname => { + if (!hostname) { + return hostname; + } + if (hostname.charAt(0) === '[' && hostname.charAt(hostname.length - 1) === ']') { + hostname = hostname.slice(1, -1); + } + return hostname.replace(/\.+$/, ''); +}; +function shouldBypassProxy(location) { + let parsed; + try { + parsed = new URL(location); + } catch (_err) { + return false; + } + const noProxy = (process.env.no_proxy || process.env.NO_PROXY || '').toLowerCase(); + if (!noProxy) { + return false; + } + if (noProxy === '*') { + return true; + } + const port = Number.parseInt(parsed.port, 10) || DEFAULT_PORTS[parsed.protocol.split(':', 1)[0]] || 0; + const hostname = normalizeNoProxyHost(parsed.hostname.toLowerCase()); + return noProxy.split(/[\s,]+/).some(entry => { + if (!entry) { + return false; + } + let [entryHost, entryPort] = parseNoProxyEntry(entry); + entryHost = normalizeNoProxyHost(entryHost); + if (!entryHost) { + return false; + } + if (entryPort && entryPort !== port) { + return false; + } + if (entryHost.charAt(0) === '*') { + entryHost = entryHost.slice(1); + } + if (entryHost.charAt(0) === '.') { + return hostname.endsWith(entryHost); + } + return hostname === entryHost; + }); +} /** * Calculate data maxRate @@ -138579,41 +138366,29 @@ function speedometer(samplesCount, min) { let head = 0; let tail = 0; let firstSampleTS; - min = min !== undefined ? min : 1000; - return function push(chunkLength) { const now = Date.now(); - const startedAt = timestamps[tail]; - if (!firstSampleTS) { firstSampleTS = now; } - bytes[head] = chunkLength; timestamps[head] = now; - let i = tail; let bytesCount = 0; - while (i !== head) { bytesCount += bytes[i++]; i = i % samplesCount; } - head = (head + 1) % samplesCount; - if (head === tail) { tail = (tail + 1) % samplesCount; } - if (now - firstSampleTS < min) { return; } - const passed = startedAt && now - startedAt; - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; }; } @@ -138629,7 +138404,6 @@ function throttle(fn, freq) { let threshold = 1000 / freq; let lastArgs; let timer; - const invoke = (args, now = Date.now()) => { timestamp = now; lastArgs = null; @@ -138639,11 +138413,10 @@ function throttle(fn, freq) { } fn(...args); }; - const throttled = (...args) => { const now = Date.now(); const passed = now - timestamp; - if ( passed >= threshold) { + if (passed >= threshold) { invoke(args, now); } else { lastArgs = args; @@ -138655,29 +138428,24 @@ function throttle(fn, freq) { } } }; - const flush = () => lastArgs && invoke(lastArgs); - return [throttled, flush]; } const progressEventReducer = (listener, isDownloadStream, freq = 3) => { let bytesNotified = 0; const _speedometer = speedometer(50, 250); - return throttle(e => { const loaded = e.loaded; const total = e.lengthComputable ? e.total : undefined; const progressBytes = loaded - bytesNotified; const rate = _speedometer(progressBytes); const inRange = loaded <= total; - bytesNotified = loaded; - const data = { loaded, total, - progress: total ? (loaded / total) : undefined, + progress: total ? loaded / total : undefined, bytes: progressBytes, rate: rate ? rate : undefined, estimated: rate && total && inRange ? (total - loaded) / rate : undefined, @@ -138685,22 +138453,18 @@ const progressEventReducer = (listener, isDownloadStream, freq = 3) => { lengthComputable: total != null, [isDownloadStream ? 'download' : 'upload']: true }; - listener(data); }, freq); }; - const progressEventDecorator = (total, throttled) => { const lengthComputable = total != null; - - return [(loaded) => throttled[0]({ + return [loaded => throttled[0]({ lengthComputable, total, loaded }), throttled[1]]; }; - -const asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args)); +const asyncDecorator = fn => (...args) => utils$1.asap(() => fn(...args)); /** * Estimate decoded byte length of a data:// URL *without* allocating large buffers. @@ -138714,14 +138478,11 @@ const asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args)); function estimateDataURLDecodedBytes(url) { if (!url || typeof url !== 'string') return 0; if (!url.startsWith('data:')) return 0; - const comma = url.indexOf(','); if (comma < 0) return 0; - const meta = url.slice(5, comma); const body = url.slice(comma + 1); const isBase64 = /;base64/i.test(meta); - if (isBase64) { let effectiveLen = body.length; const len = body.length; // cache length @@ -138730,25 +138491,20 @@ function estimateDataURLDecodedBytes(url) { if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) { const a = body.charCodeAt(i + 1); const b = body.charCodeAt(i + 2); - const isHex = - ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) && - ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102)); - + const isHex = (a >= 48 && a <= 57 || a >= 65 && a <= 70 || a >= 97 && a <= 102) && (b >= 48 && b <= 57 || b >= 65 && b <= 70 || b >= 97 && b <= 102); if (isHex) { effectiveLen -= 2; i += 2; } } } - let pad = 0; let idx = len - 1; - - const tailIsPct3D = (j) => - j >= 2 && - body.charCodeAt(j - 2) === 37 && // '%' - body.charCodeAt(j - 1) === 51 && // '3' - (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd' + const tailIsPct3D = j => j >= 2 && body.charCodeAt(j - 2) === 37 && + // '%' + body.charCodeAt(j - 1) === 51 && ( + // '3' + body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd' if (idx >= 0) { if (body.charCodeAt(idx) === 61 /* '=' */) { @@ -138759,7 +138515,6 @@ function estimateDataURLDecodedBytes(url) { idx -= 3; } } - if (pad === 1 && idx >= 0) { if (body.charCodeAt(idx) === 61 /* '=' */) { pad++; @@ -138767,80 +138522,62 @@ function estimateDataURLDecodedBytes(url) { pad++; } } - const groups = Math.floor(effectiveLen / 4); const bytes = groups * 3 - (pad || 0); return bytes > 0 ? bytes : 0; } - return Buffer.byteLength(body, 'utf8'); } const zlibOptions = { - flush: zlib__default["default"].constants.Z_SYNC_FLUSH, - finishFlush: zlib__default["default"].constants.Z_SYNC_FLUSH + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH }; - const brotliOptions = { - flush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH, - finishFlush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH + flush: zlib.constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH }; - -const isBrotliSupported = utils$1.isFunction(zlib__default["default"].createBrotliDecompress); - -const {http: httpFollow, https: httpsFollow} = followRedirects__default["default"]; - +const isBrotliSupported = utils$1.isFunction(zlib.createBrotliDecompress); +const { + http: httpFollow, + https: httpsFollow +} = followRedirects; const isHttps = /https:?/; - const supportedProtocols = platform.protocols.map(protocol => { return protocol + ':'; }); - - const flushOnFinish = (stream, [throttled, flush]) => { - stream - .on('end', flush) - .on('error', flush); - + stream.on('end', flush).on('error', flush); return throttled; }; - class Http2Sessions { constructor() { this.sessions = Object.create(null); } - getSession(authority, options) { options = Object.assign({ sessionTimeout: 1000 }, options); - let authoritySessions = this.sessions[authority]; - if (authoritySessions) { let len = authoritySessions.length; - for (let i = 0; i < len; i++) { const [sessionHandle, sessionOptions] = authoritySessions[i]; - if (!sessionHandle.destroyed && !sessionHandle.closed && util__default["default"].isDeepStrictEqual(sessionOptions, options)) { + if (!sessionHandle.destroyed && !sessionHandle.closed && util.isDeepStrictEqual(sessionOptions, options)) { return sessionHandle; } } } - - const session = http2__default["default"].connect(authority, options); - + const session = http2.connect(authority, options); let removed; - const removeSession = () => { if (removed) { return; } - removed = true; - - let entries = authoritySessions, len = entries.length, i = len; - + let entries = authoritySessions, + len = entries.length, + i = len; while (i--) { if (entries[i][0] === session) { if (len === 1) { @@ -138848,58 +138585,45 @@ class Http2Sessions { } else { entries.splice(i, 1); } + if (!session.closed) { + session.close(); + } return; } } }; - const originalRequestFn = session.request; - - const {sessionTimeout} = options; - - if(sessionTimeout != null) { - + const { + sessionTimeout + } = options; + if (sessionTimeout != null) { let timer; let streamsCount = 0; - session.request = function () { const stream = originalRequestFn.apply(this, arguments); - streamsCount++; - if (timer) { clearTimeout(timer); timer = null; } - stream.once('close', () => { - if (!--streamsCount) { + if (! --streamsCount) { timer = setTimeout(() => { timer = null; removeSession(); }, sessionTimeout); } }); - return stream; }; } - session.once('close', removeSession); - - let entry = [ - session, - options - ]; - - authoritySessions ? authoritySessions.push(entry) : authoritySessions = this.sessions[authority] = [entry]; - - return session; - } -} - -const http2Sessions = new Http2Sessions(); - + let entry = [session, options]; + authoritySessions ? authoritySessions.push(entry) : authoritySessions = this.sessions[authority] = [entry]; + return session; + } +} +const http2Sessions = new Http2Sessions(); /** * If the proxy or config beforeRedirects functions are defined, call them with the options @@ -138930,9 +138654,11 @@ function dispatchBeforeRedirect(options, responseDetails) { function setProxy(options, configProxy, location) { let proxy = configProxy; if (!proxy && proxy !== false) { - const proxyUrl = proxyFromEnv__default["default"].getProxyForUrl(location); + const proxyUrl = getProxyForUrl(location); if (proxyUrl) { - proxy = new URL(proxyUrl); + if (!shouldBypassProxy(location)) { + proxy = new URL(proxyUrl); + } } } if (proxy) { @@ -138940,22 +138666,19 @@ function setProxy(options, configProxy, location) { if (proxy.username) { proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); } - if (proxy.auth) { // Support proxy auth object form const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password); - if (validProxyAuth) { proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); } else if (typeof proxy.auth === 'object') { - throw new AxiosError$1('Invalid proxy authorization', AxiosError$1.ERR_BAD_OPTION, { proxy }); + throw new AxiosError('Invalid proxy authorization', AxiosError.ERR_BAD_OPTION, { + proxy + }); } - const base64 = Buffer.from(proxy.auth, 'utf8').toString('base64'); - options.headers['Proxy-Authorization'] = 'Basic ' + base64; } - options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); const proxyHost = proxy.hostname || proxy.host; options.hostname = proxyHost; @@ -138967,185 +138690,164 @@ function setProxy(options, configProxy, location) { options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; } } - options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { // Configure proxy for redirected request, passing the original config proxy to apply // the exact same logic as if the redirected request was performed by axios directly. setProxy(redirectOptions, configProxy, redirectOptions.href); }; } - const isHttpAdapterSupported = typeof process !== 'undefined' && utils$1.kindOf(process) === 'process'; // temporary hotfix -const wrapAsync = (asyncExecutor) => { +const wrapAsync = asyncExecutor => { return new Promise((resolve, reject) => { let onDone; let isDone; - const done = (value, isRejected) => { if (isDone) return; isDone = true; onDone && onDone(value, isRejected); }; - - const _resolve = (value) => { + const _resolve = value => { done(value); resolve(value); }; - - const _reject = (reason) => { + const _reject = reason => { done(reason, true); reject(reason); }; - - asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); - }) + asyncExecutor(_resolve, _reject, onDoneHandler => onDone = onDoneHandler).catch(_reject); + }); }; - -const resolveFamily = ({address, family}) => { +const resolveFamily = ({ + address, + family +}) => { if (!utils$1.isString(address)) { throw TypeError('address must be a string'); } - return ({ + return { address, family: family || (address.indexOf('.') < 0 ? 6 : 4) - }); + }; }; - -const buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : {address, family}); - +const buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : { + address, + family +}); const http2Transport = { request(options, cb) { - const authority = options.protocol + '//' + options.hostname + ':' + (options.port ||(options.protocol === 'https:' ? 443 : 80)); - - - const {http2Options, headers} = options; - - const session = http2Sessions.getSession(authority, http2Options); - - const { - HTTP2_HEADER_SCHEME, - HTTP2_HEADER_METHOD, - HTTP2_HEADER_PATH, - HTTP2_HEADER_STATUS - } = http2__default["default"].constants; - - const http2Headers = { - [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''), - [HTTP2_HEADER_METHOD]: options.method, - [HTTP2_HEADER_PATH]: options.path, - }; - - utils$1.forEach(headers, (header, name) => { - name.charAt(0) !== ':' && (http2Headers[name] = header); - }); - - const req = session.request(http2Headers); - - req.once('response', (responseHeaders) => { - const response = req; //duplex - - responseHeaders = Object.assign({}, responseHeaders); - - const status = responseHeaders[HTTP2_HEADER_STATUS]; - - delete responseHeaders[HTTP2_HEADER_STATUS]; - - response.headers = responseHeaders; - - response.statusCode = +status; - - cb(response); - }); - - return req; + const authority = options.protocol + '//' + options.hostname + ':' + (options.port || (options.protocol === 'https:' ? 443 : 80)); + const { + http2Options, + headers + } = options; + const session = http2Sessions.getSession(authority, http2Options); + const { + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_STATUS + } = http2.constants; + const http2Headers = { + [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''), + [HTTP2_HEADER_METHOD]: options.method, + [HTTP2_HEADER_PATH]: options.path + }; + utils$1.forEach(headers, (header, name) => { + name.charAt(0) !== ':' && (http2Headers[name] = header); + }); + const req = session.request(http2Headers); + req.once('response', responseHeaders => { + const response = req; //duplex + + responseHeaders = Object.assign({}, responseHeaders); + const status = responseHeaders[HTTP2_HEADER_STATUS]; + delete responseHeaders[HTTP2_HEADER_STATUS]; + response.headers = responseHeaders; + response.statusCode = +status; + cb(response); + }); + return req; } }; /*eslint consistent-return:0*/ -const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { +var httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { - let {data, lookup, family, httpVersion = 1, http2Options} = config; - const {responseType, responseEncoding} = config; + let { + data, + lookup, + family, + httpVersion = 1, + http2Options + } = config; + const { + responseType, + responseEncoding + } = config; const method = config.method.toUpperCase(); let isDone; let rejected = false; let req; - httpVersion = +httpVersion; - if (Number.isNaN(httpVersion)) { throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`); } - if (httpVersion !== 1 && httpVersion !== 2) { throw TypeError(`Unsupported protocol version '${httpVersion}'`); } - const isHttp2 = httpVersion === 2; - if (lookup) { - const _lookup = callbackify$1(lookup, (value) => utils$1.isArray(value) ? value : [value]); + const _lookup = callbackify(lookup, value => utils$1.isArray(value) ? value : [value]); // hotfix to support opt.all option which is required for node 20.x lookup = (hostname, opt, cb) => { _lookup(hostname, opt, (err, arg0, arg1) => { if (err) { return cb(err); } - const addresses = utils$1.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; - opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); }); }; } - const abortEmitter = new events.EventEmitter(); - function abort(reason) { try { - abortEmitter.emit('abort', !reason || reason.type ? new CanceledError$1(null, config, req) : reason); - } catch(err) { + abortEmitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason); + } catch (err) { console.warn('emit error', err); } } - abortEmitter.once('abort', reject); - const onFinished = () => { if (config.cancelToken) { config.cancelToken.unsubscribe(abort); } - if (config.signal) { config.signal.removeEventListener('abort', abort); } - abortEmitter.removeAllListeners(); }; - if (config.cancelToken || config.signal) { config.cancelToken && config.cancelToken.subscribe(abort); if (config.signal) { config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); } } - onDone((response, isRejected) => { isDone = true; - if (isRejected) { rejected = true; onFinished(); return; } - - const {data} = response; - - if (data instanceof stream__default["default"].Readable || data instanceof stream__default["default"].Duplex) { - const offListeners = stream__default["default"].finished(data, () => { + const { + data + } = response; + if (data instanceof stream.Readable || data instanceof stream.Duplex) { + const offListeners = stream.finished(data, () => { offListeners(); onFinished(); }); @@ -139154,33 +138856,21 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { } }); - - - - // Parse url const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined); const protocol = parsed.protocol || supportedProtocols[0]; - if (protocol === 'data:') { // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set. if (config.maxContentLength > -1) { // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed. const dataUrl = String(config.url || fullPath || ''); const estimated = estimateDataURLDecodedBytes(dataUrl); - if (estimated > config.maxContentLength) { - return reject(new AxiosError$1( - 'maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError$1.ERR_BAD_RESPONSE, - config - )); + return reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', AxiosError.ERR_BAD_RESPONSE, config)); } } - let convertedData; - if (method !== 'GET') { return settle(resolve, reject, { status: 405, @@ -139189,51 +138879,43 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { config }); } - try { convertedData = fromDataURI(config.url, responseType === 'blob', { Blob: config.env && config.env.Blob }); } catch (err) { - throw AxiosError$1.from(err, AxiosError$1.ERR_BAD_REQUEST, config); + throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); } - if (responseType === 'text') { convertedData = convertedData.toString(responseEncoding); - if (!responseEncoding || responseEncoding === 'utf8') { convertedData = utils$1.stripBOM(convertedData); } } else if (responseType === 'stream') { - convertedData = stream__default["default"].Readable.from(convertedData); + convertedData = stream.Readable.from(convertedData); } - return settle(resolve, reject, { data: convertedData, status: 200, statusText: 'OK', - headers: new AxiosHeaders$1(), + headers: new AxiosHeaders(), config }); } - if (supportedProtocols.indexOf(protocol) === -1) { - return reject(new AxiosError$1( - 'Unsupported protocol ' + protocol, - AxiosError$1.ERR_BAD_REQUEST, - config - )); + return reject(new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_BAD_REQUEST, config)); } - - const headers = AxiosHeaders$1.from(config.headers).normalize(); + const headers = AxiosHeaders.from(config.headers).normalize(); // Set User-Agent (required by some servers) // See https://github.com/axios/axios/issues/69 // User-Agent is specified; handle case where no UA header is desired // Only set header if it hasn't been set in config headers.set('User-Agent', 'axios/' + VERSION, false); - - const {onUploadProgress, onDownloadProgress} = config; + const { + onUploadProgress, + onDownloadProgress + } = config; const maxRate = config.maxRate; let maxUploadRate = undefined; let maxDownloadRate = undefined; @@ -139241,8 +138923,7 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // support for spec compliant FormData objects if (utils$1.isSpecCompliantForm(data)) { const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); - - data = formDataToStream$1(data, (formHeaders) => { + data = formDataToStream(data, formHeaders => { headers.set(formHeaders); }, { tag: `axios-${VERSION}-boundary`, @@ -139251,69 +138932,49 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // support for https://www.npmjs.com/package/form-data api } else if (utils$1.isFormData(data) && utils$1.isFunction(data.getHeaders)) { headers.set(data.getHeaders()); - if (!headers.hasContentLength()) { try { - const knownLength = await util__default["default"].promisify(data.getLength).call(data); + const knownLength = await util.promisify(data.getLength).call(data); Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); /*eslint no-empty:0*/ - } catch (e) { - } + } catch (e) {} } } else if (utils$1.isBlob(data) || utils$1.isFile(data)) { data.size && headers.setContentType(data.type || 'application/octet-stream'); headers.setContentLength(data.size || 0); - data = stream__default["default"].Readable.from(readBlob$1(data)); + data = stream.Readable.from(readBlob(data)); } else if (data && !utils$1.isStream(data)) { if (Buffer.isBuffer(data)) ; else if (utils$1.isArrayBuffer(data)) { data = Buffer.from(new Uint8Array(data)); } else if (utils$1.isString(data)) { data = Buffer.from(data, 'utf-8'); } else { - return reject(new AxiosError$1( - 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', - AxiosError$1.ERR_BAD_REQUEST, - config - )); + return reject(new AxiosError('Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', AxiosError.ERR_BAD_REQUEST, config)); } // Add Content-Length header if data exists headers.setContentLength(data.length, false); - if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { - return reject(new AxiosError$1( - 'Request body larger than maxBodyLength limit', - AxiosError$1.ERR_BAD_REQUEST, - config - )); + return reject(new AxiosError('Request body larger than maxBodyLength limit', AxiosError.ERR_BAD_REQUEST, config)); } } - const contentLength = utils$1.toFiniteNumber(headers.getContentLength()); - if (utils$1.isArray(maxRate)) { maxUploadRate = maxRate[0]; maxDownloadRate = maxRate[1]; } else { maxUploadRate = maxDownloadRate = maxRate; } - if (data && (onUploadProgress || maxUploadRate)) { if (!utils$1.isStream(data)) { - data = stream__default["default"].Readable.from(data, {objectMode: false}); + data = stream.Readable.from(data, { + objectMode: false + }); } - - data = stream__default["default"].pipeline([data, new AxiosTransformStream$1({ + data = stream.pipeline([data, new AxiosTransformStream({ maxRate: utils$1.toFiniteNumber(maxUploadRate) })], utils$1.noop); - - onUploadProgress && data.on('progress', flushOnFinish( - data, - progressEventDecorator( - contentLength, - progressEventReducer(asyncDecorator(onUploadProgress), false, 3) - ) - )); + onUploadProgress && data.on('progress', flushOnFinish(data, progressEventDecorator(contentLength, progressEventReducer(asyncDecorator(onUploadProgress), false, 3)))); } // HTTP basic authentication @@ -139323,23 +138984,15 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { const password = config.auth.password || ''; auth = username + ':' + password; } - if (!auth && parsed.username) { const urlUsername = parsed.username; const urlPassword = parsed.password; auth = urlUsername + ':' + urlPassword; } - auth && headers.delete('authorization'); - let path; - try { - path = buildURL( - parsed.pathname + parsed.search, - config.params, - config.paramsSerializer - ).replace(/^\?/, ''); + path = buildURL(parsed.pathname + parsed.search, config.params, config.paramsSerializer).replace(/^\?/, ''); } catch (err) { const customErr = new Error(err.message); customErr.config = config; @@ -139347,17 +139000,15 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { customErr.exists = true; return reject(customErr); } - - headers.set( - 'Accept-Encoding', - 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false - ); - + headers.set('Accept-Encoding', 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false); const options = { path, method: method, headers: headers.toJSON(), - agents: { http: config.httpAgent, https: config.httpsAgent }, + agents: { + http: config.httpAgent, + https: config.httpsAgent + }, auth, protocol, family, @@ -139368,26 +139019,23 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // cacheable-lookup integration hotfix !utils$1.isUndefined(lookup) && (options.lookup = lookup); - if (config.socketPath) { options.socketPath = config.socketPath; } else { - options.hostname = parsed.hostname.startsWith("[") ? parsed.hostname.slice(1, -1) : parsed.hostname; + options.hostname = parsed.hostname.startsWith('[') ? parsed.hostname.slice(1, -1) : parsed.hostname; options.port = parsed.port; setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); } - let transport; const isHttpsRequest = isHttps.test(options.protocol); options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; - if (isHttp2) { - transport = http2Transport; + transport = http2Transport; } else { if (config.transport) { transport = config.transport; } else if (config.maxRedirects === 0) { - transport = isHttpsRequest ? https__default["default"] : http__default["default"]; + transport = isHttpsRequest ? https : http; } else { if (config.maxRedirects) { options.maxRedirects = config.maxRedirects; @@ -139398,14 +139046,12 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { transport = isHttpsRequest ? httpsFollow : httpFollow; } } - if (config.maxBodyLength > -1) { options.maxBodyLength = config.maxBodyLength; } else { // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited options.maxBodyLength = Infinity; } - if (config.insecureHTTPParser) { options.insecureHTTPParser = config.insecureHTTPParser; } @@ -139413,24 +139059,13 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // Create the request req = transport.request(options, function handleResponse(res) { if (req.destroyed) return; - const streams = [res]; - const responseLength = utils$1.toFiniteNumber(res.headers['content-length']); - if (onDownloadProgress || maxDownloadRate) { - const transformStream = new AxiosTransformStream$1({ + const transformStream = new AxiosTransformStream({ maxRate: utils$1.toFiniteNumber(maxDownloadRate) }); - - onDownloadProgress && transformStream.on('progress', flushOnFinish( - transformStream, - progressEventDecorator( - responseLength, - progressEventReducer(asyncDecorator(onDownloadProgress), true, 3) - ) - )); - + onDownloadProgress && transformStream.on('progress', flushOnFinish(transformStream, progressEventDecorator(responseLength, progressEventReducer(asyncDecorator(onDownloadProgress), true, 3)))); streams.push(transformStream); } @@ -139447,55 +139082,48 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { if (method === 'HEAD' || res.statusCode === 204) { delete res.headers['content-encoding']; } - switch ((res.headers['content-encoding'] || '').toLowerCase()) { - /*eslint default-case:0*/ - case 'gzip': - case 'x-gzip': - case 'compress': - case 'x-compress': - // add the unzipper to the body stream processing pipeline - streams.push(zlib__default["default"].createUnzip(zlibOptions)); - - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'deflate': - streams.push(new ZlibHeaderTransformStream$1()); + /*eslint default-case:0*/ + case 'gzip': + case 'x-gzip': + case 'compress': + case 'x-compress': + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'deflate': + streams.push(new ZlibHeaderTransformStream()); - // add the unzipper to the body stream processing pipeline - streams.push(zlib__default["default"].createUnzip(zlibOptions)); + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'br': - if (isBrotliSupported) { - streams.push(zlib__default["default"].createBrotliDecompress(brotliOptions)); + // remove the content-encoding in order to not confuse downstream operations delete res.headers['content-encoding']; - } + break; + case 'br': + if (isBrotliSupported) { + streams.push(zlib.createBrotliDecompress(brotliOptions)); + delete res.headers['content-encoding']; + } } } - - responseStream = streams.length > 1 ? stream__default["default"].pipeline(streams, utils$1.noop) : streams[0]; - - - + responseStream = streams.length > 1 ? stream.pipeline(streams, utils$1.noop) : streams[0]; const response = { status: res.statusCode, statusText: res.statusMessage, - headers: new AxiosHeaders$1(res.headers), + headers: new AxiosHeaders(res.headers), config, request: lastRequest }; - if (responseType === 'stream') { response.data = responseStream; settle(resolve, reject, response); } else { const responseBuffer = []; let totalResponseBytes = 0; - responseStream.on('data', function handleStreamData(chunk) { responseBuffer.push(chunk); totalResponseBytes += chunk.length; @@ -139505,31 +139133,21 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // stream.destroy() emit aborted event before calling reject() on Node.js v16 rejected = true; responseStream.destroy(); - abort(new AxiosError$1('maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError$1.ERR_BAD_RESPONSE, config, lastRequest)); + abort(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', AxiosError.ERR_BAD_RESPONSE, config, lastRequest)); } }); - responseStream.on('aborted', function handlerStreamAborted() { if (rejected) { return; } - - const err = new AxiosError$1( - 'stream has been aborted', - AxiosError$1.ERR_BAD_RESPONSE, - config, - lastRequest - ); + const err = new AxiosError('stream has been aborted', AxiosError.ERR_BAD_RESPONSE, config, lastRequest); responseStream.destroy(err); reject(err); }); - responseStream.on('error', function handleStreamError(err) { if (req.destroyed) return; - reject(AxiosError$1.from(err, null, config, lastRequest)); + reject(AxiosError.from(err, null, config, lastRequest)); }); - responseStream.on('end', function handleStreamEnd() { try { let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); @@ -139541,12 +139159,11 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { } response.data = responseData; } catch (err) { - return reject(AxiosError$1.from(err, null, config, response.request, response)); + return reject(AxiosError.from(err, null, config, response.request, response)); } settle(resolve, reject, response); }); } - abortEmitter.once('abort', err => { if (!responseStream.destroyed) { responseStream.emit('error', err); @@ -139554,7 +139171,6 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { } }); }); - abortEmitter.once('abort', err => { if (req.close) { req.close(); @@ -139565,7 +139181,7 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // Handle errors req.on('error', function handleRequestError(err) { - reject(AxiosError$1.from(err, null, config, req)); + reject(AxiosError.from(err, null, config, req)); }); // set tcp keep alive to prevent drop connection by peer @@ -139578,15 +139194,8 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { if (config.timeout) { // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. const timeout = parseInt(config.timeout, 10); - if (Number.isNaN(timeout)) { - abort(new AxiosError$1( - 'error trying to parse `config.timeout` to int', - AxiosError$1.ERR_BAD_OPTION_VALUE, - config, - req - )); - + abort(new AxiosError('error trying to parse `config.timeout` to int', AxiosError.ERR_BAD_OPTION_VALUE, config, req)); return; } @@ -139602,39 +139211,29 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { if (config.timeoutErrorMessage) { timeoutErrorMessage = config.timeoutErrorMessage; } - abort(new AxiosError$1( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, - config, - req - )); + abort(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, req)); }); } else { // explicitly reset the socket timeout value for a possible `keep-alive` request req.setTimeout(0); } - // Send the request if (utils$1.isStream(data)) { let ended = false; let errored = false; - data.on('end', () => { ended = true; }); - data.once('error', err => { errored = true; req.destroy(err); }); - data.on('close', () => { if (!ended && !errored) { - abort(new CanceledError$1('Request stream has been aborted', config, req)); + abort(new CanceledError('Request stream has been aborted', config, req)); } }); - data.pipe(req); } else { data && req.write(data); @@ -139643,71 +139242,55 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { }); }; -const isURLSameOrigin = platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => { +var isURLSameOrigin = platform.hasStandardBrowserEnv ? ((origin, isMSIE) => url => { url = new URL(url, platform.origin); + return origin.protocol === url.protocol && origin.host === url.host && (isMSIE || origin.port === url.port); +})(new URL(platform.origin), platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)) : () => true; - return ( - origin.protocol === url.protocol && - origin.host === url.host && - (isMSIE || origin.port === url.port) - ); -})( - new URL(platform.origin), - platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) -) : () => true; - -const cookies = platform.hasStandardBrowserEnv ? - - // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure, sameSite) { - if (typeof document === 'undefined') return; - - const cookie = [`${name}=${encodeURIComponent(value)}`]; - - if (utils$1.isNumber(expires)) { - cookie.push(`expires=${new Date(expires).toUTCString()}`); - } - if (utils$1.isString(path)) { - cookie.push(`path=${path}`); - } - if (utils$1.isString(domain)) { - cookie.push(`domain=${domain}`); - } - if (secure === true) { - cookie.push('secure'); - } - if (utils$1.isString(sameSite)) { - cookie.push(`SameSite=${sameSite}`); - } - - document.cookie = cookie.join('; '); - }, - - read(name) { - if (typeof document === 'undefined') return null; - const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); - return match ? decodeURIComponent(match[1]) : null; - }, - - remove(name) { - this.write(name, '', Date.now() - 86400000, '/'); +var cookies = platform.hasStandardBrowserEnv ? +// Standard browser envs support document.cookie +{ + write(name, value, expires, path, domain, secure, sameSite) { + if (typeof document === 'undefined') return; + const cookie = [`${name}=${encodeURIComponent(value)}`]; + if (utils$1.isNumber(expires)) { + cookie.push(`expires=${new Date(expires).toUTCString()}`); + } + if (utils$1.isString(path)) { + cookie.push(`path=${path}`); + } + if (utils$1.isString(domain)) { + cookie.push(`domain=${domain}`); + } + if (secure === true) { + cookie.push('secure'); + } + if (utils$1.isString(sameSite)) { + cookie.push(`SameSite=${sameSite}`); } + document.cookie = cookie.join('; '); + }, + read(name) { + if (typeof document === 'undefined') return null; + const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); + return match ? decodeURIComponent(match[1]) : null; + }, + remove(name) { + this.write(name, '', Date.now() - 86400000, '/'); } +} : +// Non-standard browser env (web workers, react-native) lack needed support. +{ + write() {}, + read() { + return null; + }, + remove() {} +}; - : - - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() {}, - read() { - return null; - }, - remove() {} - }; - -const headersToObject = (thing) => - thing instanceof AxiosHeaders$1 ? { ...thing } : thing; +const headersToObject = thing => thing instanceof AxiosHeaders ? { + ...thing +} : thing; /** * Config-specific merge-function which creates a new config-object @@ -139722,10 +139305,11 @@ function mergeConfig(config1, config2) { // eslint-disable-next-line no-param-reassign config2 = config2 || {}; const config = {}; - function getMergedValue(target, source, prop, caseless) { if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { - return utils$1.merge.call({ caseless }, target, source); + return utils$1.merge.call({ + caseless + }, target, source); } else if (utils$1.isPlainObject(source)) { return utils$1.merge({}, source); } else if (utils$1.isArray(source)) { @@ -139733,7 +139317,6 @@ function mergeConfig(config1, config2) { } return source; } - function mergeDeepProperties(a, b, prop, caseless) { if (!utils$1.isUndefined(b)) { return getMergedValue(a, b, prop, caseless); @@ -139766,7 +139349,6 @@ function mergeConfig(config1, config2) { return getMergedValue(undefined, a); } } - const mergeMap = { url: valueFromConfig2, method: valueFromConfig2, @@ -139796,47 +139378,37 @@ function mergeConfig(config1, config2) { socketPath: defaultToConfig2, responseEncoding: defaultToConfig2, validateStatus: mergeDirectKeys, - headers: (a, b, prop) => - mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true), + headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true) }; - - utils$1.forEach( - Object.keys({ ...config1, ...config2 }), - function computeConfigValue(prop) { - if ( - prop === "__proto__" || - prop === "constructor" || - prop === "prototype" - ) - return; - const merge = utils$1.hasOwnProp(mergeMap, prop) - ? mergeMap[prop] - : mergeDeepProperties; - const configValue = merge(config1[prop], config2[prop], prop); - (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || - (config[prop] = configValue); - }, - ); - + utils$1.forEach(Object.keys({ + ...config1, + ...config2 + }), function computeConfigValue(prop) { + if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; + const merge = utils$1.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + utils$1.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue); + }); return config; } -const resolveConfig = (config) => { +var resolveConfig = config => { const newConfig = mergeConfig({}, config); - - let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig; - - newConfig.headers = headers = AxiosHeaders$1.from(headers); - + let { + data, + withXSRFToken, + xsrfHeaderName, + xsrfCookieName, + headers, + auth + } = newConfig; + newConfig.headers = headers = AxiosHeaders.from(headers); newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer); // HTTP basic authentication if (auth) { - headers.set('Authorization', 'Basic ' + - btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : '')) - ); + headers.set('Authorization', 'Basic ' + btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))); } - if (utils$1.isFormData(data)) { if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { headers.setContentType(undefined); // browser handles it @@ -139851,7 +139423,7 @@ const resolveConfig = (config) => { } }); } - } + } // Add xsrf header // This is only done if running in a standard browser environment. @@ -139859,58 +139431,50 @@ const resolveConfig = (config) => { if (platform.hasStandardBrowserEnv) { withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); - - if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) { + if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(newConfig.url)) { // Add xsrf header const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); - if (xsrfValue) { headers.set(xsrfHeaderName, xsrfValue); } } } - return newConfig; }; const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -const xhrAdapter = isXHRAdapterSupported && function (config) { +var xhrAdapter = isXHRAdapterSupported && function (config) { return new Promise(function dispatchXhrRequest(resolve, reject) { const _config = resolveConfig(config); let requestData = _config.data; - const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize(); - let {responseType, onUploadProgress, onDownloadProgress} = _config; + const requestHeaders = AxiosHeaders.from(_config.headers).normalize(); + let { + responseType, + onUploadProgress, + onDownloadProgress + } = _config; let onCanceled; let uploadThrottled, downloadThrottled; let flushUpload, flushDownload; - function done() { flushUpload && flushUpload(); // flush events flushDownload && flushDownload(); // flush events _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); - _config.signal && _config.signal.removeEventListener('abort', onCanceled); } - let request = new XMLHttpRequest(); - request.open(_config.method.toUpperCase(), _config.url, true); // Set the request timeout in MS request.timeout = _config.timeout; - function onloadend() { if (!request) { return; } // Prepare the response - const responseHeaders = AxiosHeaders$1.from( - 'getAllResponseHeaders' in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === 'text' || responseType === 'json' ? - request.responseText : request.response; + const responseHeaders = AxiosHeaders.from('getAllResponseHeaders' in request && request.getAllResponseHeaders()); + const responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response; const response = { data: responseData, status: request.status, @@ -139919,7 +139483,6 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { config, request }; - settle(function _resolve(value) { resolve(value); done(); @@ -139931,7 +139494,6 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { // Clean up request request = null; } - if ('onloadend' in request) { // Use onloadend if available request.onloadend = onloadend; @@ -139960,26 +139522,25 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { if (!request) { return; } - - reject(new AxiosError$1('Request aborted', AxiosError$1.ECONNABORTED, config, request)); + reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); // Clean up request request = null; }; // Handle low level network errors - request.onerror = function handleError(event) { - // Browsers deliver a ProgressEvent in XHR onerror - // (message may be empty; when present, surface it) - // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event - const msg = event && event.message ? event.message : 'Network Error'; - const err = new AxiosError$1(msg, AxiosError$1.ERR_NETWORK, config, request); - // attach the underlying event for consumers who want details - err.event = event || null; - reject(err); - request = null; + request.onerror = function handleError(event) { + // Browsers deliver a ProgressEvent in XHR onerror + // (message may be empty; when present, surface it) + // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event + const msg = event && event.message ? event.message : 'Network Error'; + const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request); + // attach the underlying event for consumers who want details + err.event = event || null; + reject(err); + request = null; }; - + // Handle timeout request.ontimeout = function handleTimeout() { let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded'; @@ -139987,11 +139548,7 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { if (_config.timeoutErrorMessage) { timeoutErrorMessage = _config.timeoutErrorMessage; } - reject(new AxiosError$1( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, - config, - request)); + reject(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, request)); // Clean up request request = null; @@ -140019,19 +139576,16 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { // Handle progress if needed if (onDownloadProgress) { - ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true)); + [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); request.addEventListener('progress', downloadThrottled); } // Not all browsers support upload events if (onUploadProgress && request.upload) { - ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress)); - + [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); request.upload.addEventListener('progress', uploadThrottled); - request.upload.addEventListener('loadend', flushUpload); } - if (_config.cancelToken || _config.signal) { // Handle cancellation // eslint-disable-next-line func-names @@ -140039,52 +139593,45 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { if (!request) { return; } - reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel); + reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); request.abort(); request = null; }; - _config.cancelToken && _config.cancelToken.subscribe(onCanceled); if (_config.signal) { _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled); } } - const protocol = parseProtocol(_config.url); - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError$1('Unsupported protocol ' + protocol + ':', AxiosError$1.ERR_BAD_REQUEST, config)); + reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); return; } - // Send the request request.send(requestData || null); }); }; const composeSignals = (signals, timeout) => { - const {length} = (signals = signals ? signals.filter(Boolean) : []); - + const { + length + } = signals = signals ? signals.filter(Boolean) : []; if (timeout || length) { let controller = new AbortController(); - let aborted; - const onabort = function (reason) { if (!aborted) { aborted = true; unsubscribe(); const err = reason instanceof Error ? reason : this.reason; - controller.abort(err instanceof AxiosError$1 ? err : new CanceledError$1(err instanceof Error ? err.message : err)); + controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err)); } }; - let timer = timeout && setTimeout(() => { timer = null; - onabort(new AxiosError$1(`timeout of ${timeout}ms exceeded`, AxiosError$1.ETIMEDOUT)); + onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT)); }, timeout); - const unsubscribe = () => { if (signals) { timer && clearTimeout(timer); @@ -140095,53 +139642,46 @@ const composeSignals = (signals, timeout) => { signals = null; } }; - - signals.forEach((signal) => signal.addEventListener('abort', onabort)); - - const {signal} = controller; - + signals.forEach(signal => signal.addEventListener('abort', onabort)); + const { + signal + } = controller; signal.unsubscribe = () => utils$1.asap(unsubscribe); - return signal; } }; -const composeSignals$1 = composeSignals; - const streamChunk = function* (chunk, chunkSize) { let len = chunk.byteLength; - - if (!chunkSize || len < chunkSize) { + if (len < chunkSize) { yield chunk; return; } - let pos = 0; let end; - while (pos < len) { end = pos + chunkSize; yield chunk.slice(pos, end); pos = end; } }; - const readBytes = async function* (iterable, chunkSize) { for await (const chunk of readStream(iterable)) { yield* streamChunk(chunk, chunkSize); } }; - const readStream = async function* (stream) { if (stream[Symbol.asyncIterator]) { yield* stream; return; } - const reader = stream.getReader(); try { for (;;) { - const {done, value} = await reader.read(); + const { + done, + value + } = await reader.read(); if (done) { break; } @@ -140151,30 +139691,28 @@ const readStream = async function* (stream) { await reader.cancel(); } }; - const trackStream = (stream, chunkSize, onProgress, onFinish) => { const iterator = readBytes(stream, chunkSize); - let bytes = 0; let done; - let _onFinish = (e) => { + let _onFinish = e => { if (!done) { done = true; onFinish && onFinish(e); } }; - return new ReadableStream({ async pull(controller) { try { - const {done, value} = await iterator.next(); - + const { + done, + value + } = await iterator.next(); if (done) { - _onFinish(); + _onFinish(); controller.close(); return; } - let len = value.byteLength; if (onProgress) { let loadedBytes = bytes += len; @@ -140192,124 +139730,106 @@ const trackStream = (stream, chunkSize, onProgress, onFinish) => { } }, { highWaterMark: 2 - }) + }); }; const DEFAULT_CHUNK_SIZE = 64 * 1024; - -const {isFunction} = utils$1; - -const globalFetchAPI = (({Request, Response}) => ({ - Request, Response +const { + isFunction +} = utils$1; +const globalFetchAPI = (({ + Request, + Response +}) => ({ + Request, + Response }))(utils$1.global); - const { - ReadableStream: ReadableStream$1, TextEncoder: TextEncoder$1 + ReadableStream: ReadableStream$1, + TextEncoder: TextEncoder$1 } = utils$1.global; - - const test = (fn, ...args) => { try { return !!fn(...args); } catch (e) { - return false + return false; } }; - -const factory = (env) => { +const factory = env => { env = utils$1.merge.call({ skipUndefined: true }, globalFetchAPI, env); - - const {fetch: envFetch, Request, Response} = env; + const { + fetch: envFetch, + Request, + Response + } = env; const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; const isRequestSupported = isFunction(Request); const isResponseSupported = isFunction(Response); - if (!isFetchSupported) { return false; } - const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); - - const encodeText = isFetchSupported && (typeof TextEncoder$1 === 'function' ? - ((encoder) => (str) => encoder.encode(str))(new TextEncoder$1()) : - async (str) => new Uint8Array(await new Request(str).arrayBuffer()) - ); - + const encodeText = isFetchSupported && (typeof TextEncoder$1 === 'function' ? (encoder => str => encoder.encode(str))(new TextEncoder$1()) : async str => new Uint8Array(await new Request(str).arrayBuffer())); const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => { let duplexAccessed = false; - + const body = new ReadableStream$1(); const hasContentType = new Request(platform.origin, { - body: new ReadableStream$1(), + body, method: 'POST', get duplex() { duplexAccessed = true; return 'half'; - }, + } }).headers.has('Content-Type'); - + body.cancel(); return duplexAccessed && !hasContentType; }); - - const supportsResponseStream = isResponseSupported && isReadableStreamSupported && - test(() => utils$1.isReadableStream(new Response('').body)); - + const supportsResponseStream = isResponseSupported && isReadableStreamSupported && test(() => utils$1.isReadableStream(new Response('').body)); const resolvers = { - stream: supportsResponseStream && ((res) => res.body) + stream: supportsResponseStream && (res => res.body) }; - - isFetchSupported && ((() => { + isFetchSupported && (() => { ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => { !resolvers[type] && (resolvers[type] = (res, config) => { let method = res && res[type]; - if (method) { return method.call(res); } - - throw new AxiosError$1(`Response type '${type}' is not supported`, AxiosError$1.ERR_NOT_SUPPORT, config); + throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config); }); }); - })()); - - const getBodyLength = async (body) => { + })(); + const getBodyLength = async body => { if (body == null) { return 0; } - if (utils$1.isBlob(body)) { return body.size; } - if (utils$1.isSpecCompliantForm(body)) { const _request = new Request(platform.origin, { method: 'POST', - body, + body }); return (await _request.arrayBuffer()).byteLength; } - if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { return body.byteLength; } - if (utils$1.isURLSearchParams(body)) { body = body + ''; } - if (utils$1.isString(body)) { return (await encodeText(body)).byteLength; } }; - const resolveBodyLength = async (headers, body) => { const length = utils$1.toFiniteNumber(headers.getContentLength()); - return length == null ? getBodyLength(body) : length; }; - - return async (config) => { + return async config => { let { url, method, @@ -140324,152 +139844,107 @@ const factory = (env) => { withCredentials = 'same-origin', fetchOptions } = resolveConfig(config); - let _fetch = envFetch || fetch; - responseType = responseType ? (responseType + '').toLowerCase() : 'text'; - - let composedSignal = composeSignals$1([signal, cancelToken && cancelToken.toAbortSignal()], timeout); - + let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout); let request = null; - const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => { composedSignal.unsubscribe(); }); - let requestContentLength; - try { - if ( - onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' && - (requestContentLength = await resolveBodyLength(headers, data)) !== 0 - ) { + if (onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) { let _request = new Request(url, { method: 'POST', body: data, - duplex: "half" + duplex: 'half' }); - let contentTypeHeader; - if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { headers.setContentType(contentTypeHeader); } - if (_request.body) { - const [onProgress, flush] = progressEventDecorator( - requestContentLength, - progressEventReducer(asyncDecorator(onUploadProgress)) - ); - + const [onProgress, flush] = progressEventDecorator(requestContentLength, progressEventReducer(asyncDecorator(onUploadProgress))); data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); } } - if (!utils$1.isString(withCredentials)) { withCredentials = withCredentials ? 'include' : 'omit'; } // Cloudflare Workers throws when credentials are defined // see https://github.com/cloudflare/workerd/issues/902 - const isCredentialsSupported = isRequestSupported && "credentials" in Request.prototype; - + const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; const resolvedOptions = { ...fetchOptions, signal: composedSignal, method: method.toUpperCase(), headers: headers.normalize().toJSON(), body: data, - duplex: "half", + duplex: 'half', credentials: isCredentialsSupported ? withCredentials : undefined }; - request = isRequestSupported && new Request(url, resolvedOptions); - let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions)); - const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response'); - - if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { + if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) { const options = {}; - ['status', 'statusText', 'headers'].forEach(prop => { options[prop] = response[prop]; }); - const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length')); - - const [onProgress, flush] = onDownloadProgress && progressEventDecorator( - responseContentLength, - progressEventReducer(asyncDecorator(onDownloadProgress), true) - ) || []; - - response = new Response( - trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { - flush && flush(); - unsubscribe && unsubscribe(); - }), - options - ); + const [onProgress, flush] = onDownloadProgress && progressEventDecorator(responseContentLength, progressEventReducer(asyncDecorator(onDownloadProgress), true)) || []; + response = new Response(trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { + flush && flush(); + unsubscribe && unsubscribe(); + }), options); } - responseType = responseType || 'text'; - let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config); - !isStreamResponse && unsubscribe && unsubscribe(); - return await new Promise((resolve, reject) => { settle(resolve, reject, { data: responseData, - headers: AxiosHeaders$1.from(response.headers), + headers: AxiosHeaders.from(response.headers), status: response.status, statusText: response.statusText, config, request }); - }) + }); } catch (err) { unsubscribe && unsubscribe(); - if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { - throw Object.assign( - new AxiosError$1('Network Error', AxiosError$1.ERR_NETWORK, config, request, err && err.response), - { - cause: err.cause || err - } - ) + throw Object.assign(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, err && err.response), { + cause: err.cause || err + }); } - - throw AxiosError$1.from(err, err && err.code, config, request, err && err.response); + throw AxiosError.from(err, err && err.code, config, request, err && err.response); } - } + }; }; - const seedCache = new Map(); - -const getFetch = (config) => { - let env = (config && config.env) || {}; - const {fetch, Request, Response} = env; - const seeds = [ - Request, Response, fetch - ]; - - let len = seeds.length, i = len, - seed, target, map = seedCache; - +const getFetch = config => { + let env = config && config.env || {}; + const { + fetch, + Request, + Response + } = env; + const seeds = [Request, Response, fetch]; + let len = seeds.length, + i = len, + seed, + target, + map = seedCache; while (i--) { seed = seeds[i]; target = map.get(seed); - - target === undefined && map.set(seed, target = (i ? new Map() : factory(env))); - + target === undefined && map.set(seed, target = i ? new Map() : factory(env)); map = target; } - return target; }; - getFetch(); /** @@ -140478,14 +139953,14 @@ getFetch(); * - `http` for Node.js * - `xhr` for browsers * - `fetch` for fetch API-based requests - * + * * @type {Object} */ const knownAdapters = { http: httpAdapter, xhr: xhrAdapter, fetch: { - get: getFetch, + get: getFetch } }; @@ -140493,35 +139968,39 @@ const knownAdapters = { utils$1.forEach(knownAdapters, (fn, value) => { if (fn) { try { - Object.defineProperty(fn, 'name', { value }); + Object.defineProperty(fn, 'name', { + value + }); } catch (e) { // eslint-disable-next-line no-empty } - Object.defineProperty(fn, 'adapterName', { value }); + Object.defineProperty(fn, 'adapterName', { + value + }); } }); /** * Render a rejection reason string for unknown or unsupported adapters - * + * * @param {string} reason * @returns {string} */ -const renderReason = (reason) => `- ${reason}`; +const renderReason = reason => `- ${reason}`; /** * Check if the adapter is resolved (function, null, or false) - * + * * @param {Function|null|false} adapter * @returns {boolean} */ -const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; +const isResolvedHandle = adapter => utils$1.isFunction(adapter) || adapter === null || adapter === false; /** * Get the first suitable adapter from the provided list. * Tries each adapter in order until a supported one is found. * Throws an AxiosError if no adapter is suitable. - * + * * @param {Array|string|Function} adapters - Adapter(s) by name or function. * @param {Object} config - Axios request configuration * @throws {AxiosError} If no suitable adapter is available @@ -140529,63 +140008,44 @@ const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === */ function getAdapter(adapters, config) { adapters = utils$1.isArray(adapters) ? adapters : [adapters]; - - const { length } = adapters; + const { + length + } = adapters; let nameOrAdapter; let adapter; - const rejectedReasons = {}; - for (let i = 0; i < length; i++) { nameOrAdapter = adapters[i]; let id; - adapter = nameOrAdapter; - if (!isResolvedHandle(nameOrAdapter)) { adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - if (adapter === undefined) { - throw new AxiosError$1(`Unknown adapter '${id}'`); + throw new AxiosError(`Unknown adapter '${id}'`); } } - if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) { break; } - rejectedReasons[id || '#' + i] = adapter; } - if (!adapter) { - const reasons = Object.entries(rejectedReasons) - .map(([id, state]) => `adapter ${id} ` + - (state === false ? 'is not supported by the environment' : 'is not available in the build') - ); - - let s = length ? - (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : - 'as no adapter specified'; - - throw new AxiosError$1( - `There is no suitable adapter to dispatch the request ` + s, - 'ERR_NOT_SUPPORT' - ); + const reasons = Object.entries(rejectedReasons).map(([id, state]) => `adapter ${id} ` + (state === false ? 'is not supported by the environment' : 'is not available in the build')); + let s = length ? reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0]) : 'as no adapter specified'; + throw new AxiosError(`There is no suitable adapter to dispatch the request ` + s, 'ERR_NOT_SUPPORT'); } - return adapter; } /** * Exports Axios adapters and utility to resolve an adapter */ -const adapters = { +var adapters = { /** * Resolve an adapter from a list of adapter names or functions. * @type {Function} */ getAdapter, - /** * Exposes all known adapters * @type {Object} @@ -140604,9 +140064,8 @@ function throwIfCancellationRequested(config) { if (config.cancelToken) { config.cancelToken.throwIfRequested(); } - if (config.signal && config.signal.aborted) { - throw new CanceledError$1(null, config); + throw new CanceledError(null, config); } } @@ -140619,33 +140078,20 @@ function throwIfCancellationRequested(config) { */ function dispatchRequest(config) { throwIfCancellationRequested(config); - - config.headers = AxiosHeaders$1.from(config.headers); + config.headers = AxiosHeaders.from(config.headers); // Transform request data - config.data = transformData.call( - config, - config.transformRequest - ); - + config.data = transformData.call(config, config.transformRequest); if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { config.headers.setContentType('application/x-www-form-urlencoded', false); } - - const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter, config); - + const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config); return adapter(config).then(function onAdapterResolution(response) { throwIfCancellationRequested(config); // Transform response data - response.data = transformData.call( - config, - config.transformResponse, - response - ); - - response.headers = AxiosHeaders$1.from(response.headers); - + response.data = transformData.call(config, config.transformResponse, response); + response.headers = AxiosHeaders.from(response.headers); return response; }, function onAdapterRejection(reason) { if (!isCancel(reason)) { @@ -140653,15 +140099,10 @@ function dispatchRequest(config) { // Transform response data if (reason && reason.response) { - reason.response.data = transformData.call( - config, - config.transformResponse, - reason.response - ); - reason.response.headers = AxiosHeaders$1.from(reason.response.headers); + reason.response.data = transformData.call(config, config.transformResponse, reason.response); + reason.response.headers = AxiosHeaders.from(reason.response.headers); } } - return Promise.reject(reason); }); } @@ -140674,7 +140115,6 @@ const validators$1 = {}; return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; }; }); - const deprecatedWarnings = {}; /** @@ -140688,39 +140128,28 @@ const deprecatedWarnings = {}; */ validators$1.transitional = function transitional(validator, version, message) { function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + return '[Axios v' + VERSION + "] Transitional option '" + opt + "'" + desc + (message ? '. ' + message : ''); } // eslint-disable-next-line func-names return (value, opt, opts) => { if (validator === false) { - throw new AxiosError$1( - formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), - AxiosError$1.ERR_DEPRECATED - ); + throw new AxiosError(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), AxiosError.ERR_DEPRECATED); } - if (version && !deprecatedWarnings[opt]) { deprecatedWarnings[opt] = true; // eslint-disable-next-line no-console - console.warn( - formatMessage( - opt, - ' has been deprecated since v' + version + ' and will be removed in the near future' - ) - ); + console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future')); } - return validator ? validator(value, opt, opts) : true; }; }; - validators$1.spelling = function spelling(correctSpelling) { return (value, opt) => { // eslint-disable-next-line no-console console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); return true; - } + }; }; /** @@ -140735,7 +140164,7 @@ validators$1.spelling = function spelling(correctSpelling) { function assertOptions(options, schema, allowUnknown) { if (typeof options !== 'object') { - throw new AxiosError$1('options must be an object', AxiosError$1.ERR_BAD_OPTION_VALUE); + throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); } const keys = Object.keys(options); let i = keys.length; @@ -140746,17 +140175,16 @@ function assertOptions(options, schema, allowUnknown) { const value = options[opt]; const result = value === undefined || validator(value, opt, options); if (result !== true) { - throw new AxiosError$1('option ' + opt + ' must be ' + result, AxiosError$1.ERR_BAD_OPTION_VALUE); + throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); } continue; } if (allowUnknown !== true) { - throw new AxiosError$1('Unknown option ' + opt, AxiosError$1.ERR_BAD_OPTION); + throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); } } } - -const validator = { +var validator = { assertOptions, validators: validators$1 }; @@ -140774,8 +140202,8 @@ class Axios { constructor(instanceConfig) { this.defaults = instanceConfig || {}; this.interceptors = { - request: new InterceptorManager$1(), - response: new InterceptorManager$1() + request: new InterceptorManager(), + response: new InterceptorManager() }; } @@ -140793,27 +140221,35 @@ class Axios { } catch (err) { if (err instanceof Error) { let dummy = {}; - - Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error()); + Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error(); // slice off the Error: ... line - const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + const stack = (() => { + if (!dummy.stack) { + return ''; + } + const firstNewlineIndex = dummy.stack.indexOf('\n'); + return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1); + })(); try { if (!err.stack) { err.stack = stack; // match without the 2 top stack lines - } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - err.stack += '\n' + stack; + } else if (stack) { + const firstNewlineIndex = stack.indexOf('\n'); + const secondNewlineIndex = firstNewlineIndex === -1 ? -1 : stack.indexOf('\n', firstNewlineIndex + 1); + const stackWithoutTwoTopLines = secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1); + if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) { + err.stack += '\n' + stack; + } } } catch (e) { // ignore the case where "stack" is an un-writable property } } - throw err; } } - _request(configOrUrl, config) { /*eslint no-param-reassign:0*/ // Allow for axios('example/url'[, config]) a la fetch API @@ -140823,11 +140259,12 @@ class Axios { } else { config = configOrUrl || {}; } - config = mergeConfig(this.defaults, config); - - const {transitional, paramsSerializer, headers} = config; - + const { + transitional, + paramsSerializer, + headers + } = config; if (transitional !== undefined) { validator.assertOptions(transitional, { silentJSONParsing: validators.transitional(validators.boolean), @@ -140836,7 +140273,6 @@ class Axios { legacyInterceptorReqResOrdering: validators.transitional(validators.boolean) }, false); } - if (paramsSerializer != null) { if (utils$1.isFunction(paramsSerializer)) { config.paramsSerializer = { @@ -140856,7 +140292,6 @@ class Axios { } else { config.allowAbsoluteUrls = true; } - validator.assertOptions(config, { baseUrl: validators.spelling('baseURL'), withXsrfToken: validators.spelling('withXSRFToken') @@ -140866,19 +140301,11 @@ class Axios { config.method = (config.method || this.defaults.method || 'get').toLowerCase(); // Flatten headers - let contextHeaders = headers && utils$1.merge( - headers.common, - headers[config.method] - ); - - headers && utils$1.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - (method) => { - delete headers[method]; - } - ); - - config.headers = AxiosHeaders$1.concat(contextHeaders, headers); + let contextHeaders = headers && utils$1.merge(headers.common, headers[config.method]); + headers && utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], method => { + delete headers[method]; + }); + config.headers = AxiosHeaders.concat(contextHeaders, headers); // filter out skipped interceptors const requestInterceptorChain = []; @@ -140887,47 +140314,35 @@ class Axios { if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { return; } - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - const transitional = config.transitional || transitionalDefaults; const legacyInterceptorReqResOrdering = transitional && transitional.legacyInterceptorReqResOrdering; - if (legacyInterceptorReqResOrdering) { requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); } else { requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); } }); - const responseInterceptorChain = []; this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); }); - let promise; let i = 0; let len; - if (!synchronousRequestInterceptors) { const chain = [dispatchRequest.bind(this), undefined]; chain.unshift(...requestInterceptorChain); chain.push(...responseInterceptorChain); len = chain.length; - promise = Promise.resolve(config); - while (i < len) { promise = promise.then(chain[i++], chain[i++]); } - return promise; } - len = requestInterceptorChain.length; - let newConfig = config; - while (i < len) { const onFulfilled = requestInterceptorChain[i++]; const onRejected = requestInterceptorChain[i++]; @@ -140938,23 +140353,18 @@ class Axios { break; } } - try { promise = dispatchRequest.call(this, newConfig); } catch (error) { return Promise.reject(error); } - i = 0; len = responseInterceptorChain.length; - while (i < len) { promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); } - return promise; } - getUri(config) { config = mergeConfig(this.defaults, config); const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); @@ -140965,7 +140375,7 @@ class Axios { // Provide aliases for supported request methods utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { /*eslint func-names:0*/ - Axios.prototype[method] = function(url, config) { + Axios.prototype[method] = function (url, config) { return this.request(mergeConfig(config || {}, { method, url, @@ -140973,10 +140383,7 @@ utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoDa })); }; }); - utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - function generateHTTPMethod(isForm) { return function httpMethod(url, data, config) { return this.request(mergeConfig(config || {}, { @@ -140989,14 +140396,10 @@ utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) })); }; } - Axios.prototype[method] = generateHTTPMethod(); - Axios.prototype[method + 'Form'] = generateHTTPMethod(true); }); -const Axios$1 = Axios; - /** * A `CancelToken` is an object that can be used to request cancellation of an operation. * @@ -141009,21 +140412,16 @@ class CancelToken { if (typeof executor !== 'function') { throw new TypeError('executor must be a function.'); } - let resolvePromise; - this.promise = new Promise(function promiseExecutor(resolve) { resolvePromise = resolve; }); - const token = this; // eslint-disable-next-line func-names this.promise.then(cancel => { if (!token._listeners) return; - let i = token._listeners.length; - while (i-- > 0) { token._listeners[i](cancel); } @@ -141038,21 +140436,17 @@ class CancelToken { token.subscribe(resolve); _resolve = resolve; }).then(onfulfilled); - promise.cancel = function reject() { token.unsubscribe(_resolve); }; - return promise; }; - executor(function cancel(message, config, request) { if (token.reason) { // Cancellation has already been requested return; } - - token.reason = new CanceledError$1(message, config, request); + token.reason = new CanceledError(message, config, request); resolvePromise(token.reason); }); } @@ -141075,7 +140469,6 @@ class CancelToken { listener(this.reason); return; } - if (this._listeners) { this._listeners.push(listener); } else { @@ -141096,18 +140489,13 @@ class CancelToken { this._listeners.splice(index, 1); } } - toAbortSignal() { const controller = new AbortController(); - - const abort = (err) => { + const abort = err => { controller.abort(err); }; - this.subscribe(abort); - controller.signal.unsubscribe = () => this.unsubscribe(abort); - return controller.signal; } @@ -141127,8 +140515,6 @@ class CancelToken { } } -const CancelToken$1 = CancelToken; - /** * Syntactic sugar for invoking a function and expanding an array for arguments. * @@ -141164,7 +140550,7 @@ function spread(callback) { * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false */ function isAxiosError(payload) { - return utils$1.isObject(payload) && (payload.isAxiosError === true); + return utils$1.isObject(payload) && payload.isAxiosError === true; } const HttpStatusCode = { @@ -141236,15 +140622,12 @@ const HttpStatusCode = { OriginIsUnreachable: 523, TimeoutOccurred: 524, SslHandshakeFailed: 525, - InvalidSslCertificate: 526, + InvalidSslCertificate: 526 }; - Object.entries(HttpStatusCode).forEach(([key, value]) => { HttpStatusCode[value] = key; }); -const HttpStatusCode$1 = HttpStatusCode; - /** * Create an instance of Axios * @@ -141253,38 +140636,41 @@ const HttpStatusCode$1 = HttpStatusCode; * @returns {Axios} A new instance of Axios */ function createInstance(defaultConfig) { - const context = new Axios$1(defaultConfig); - const instance = bind(Axios$1.prototype.request, context); + const context = new Axios(defaultConfig); + const instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance - utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true}); + utils$1.extend(instance, Axios.prototype, context, { + allOwnKeys: true + }); // Copy context to instance - utils$1.extend(instance, context, null, {allOwnKeys: true}); + utils$1.extend(instance, context, null, { + allOwnKeys: true + }); // Factory for creating new instances instance.create = function create(instanceConfig) { return createInstance(mergeConfig(defaultConfig, instanceConfig)); }; - return instance; } // Create the default instance to be exported -const axios = createInstance(defaults$1); +const axios = createInstance(defaults); // Expose Axios class to allow class inheritance -axios.Axios = Axios$1; +axios.Axios = Axios; // Expose Cancel & CancelToken -axios.CanceledError = CanceledError$1; -axios.CancelToken = CancelToken$1; +axios.CanceledError = CanceledError; +axios.CancelToken = CancelToken; axios.isCancel = isCancel; axios.VERSION = VERSION; axios.toFormData = toFormData; // Expose AxiosError class -axios.AxiosError = AxiosError$1; +axios.AxiosError = AxiosError; // alias for CanceledError for backward compatibility axios.Cancel = axios.CanceledError; @@ -141293,7 +140679,6 @@ axios.Cancel = axios.CanceledError; axios.all = function all(promises) { return Promise.all(promises); }; - axios.spread = spread; // Expose isAxiosError @@ -141301,15 +140686,10 @@ axios.isAxiosError = isAxiosError; // Expose mergeConfig axios.mergeConfig = mergeConfig; - -axios.AxiosHeaders = AxiosHeaders$1; - +axios.AxiosHeaders = AxiosHeaders; axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode$1; - +axios.HttpStatusCode = HttpStatusCode; axios.default = axios; module.exports = axios; @@ -143420,7 +142800,7 @@ const { isArray } = Array; * * @returns {boolean} True if the value is undefined, otherwise false */ -const isUndefined = typeOfTest("undefined"); +const isUndefined = typeOfTest('undefined'); /** * Determine if a value is a Buffer @@ -143447,7 +142827,7 @@ function isBuffer(val) { * * @returns {boolean} True if value is an ArrayBuffer, otherwise false */ -const isArrayBuffer = kindOfTest("ArrayBuffer"); +const isArrayBuffer = kindOfTest('ArrayBuffer'); /** * Determine if a value is a view on an ArrayBuffer @@ -143458,7 +142838,7 @@ const isArrayBuffer = kindOfTest("ArrayBuffer"); */ function isArrayBufferView(val) { let result; - if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) { + if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { result = ArrayBuffer.isView(val); } else { result = val && val.buffer && isArrayBuffer(val.buffer); @@ -143473,7 +142853,7 @@ function isArrayBufferView(val) { * * @returns {boolean} True if value is a String, otherwise false */ -const isString = typeOfTest("string"); +const isString = typeOfTest('string'); /** * Determine if a value is a Function @@ -143481,7 +142861,7 @@ const isString = typeOfTest("string"); * @param {*} val The value to test * @returns {boolean} True if value is a Function, otherwise false */ -const isFunction = typeOfTest("function"); +const isFunction = typeOfTest('function'); /** * Determine if a value is a Number @@ -143490,7 +142870,7 @@ const isFunction = typeOfTest("function"); * * @returns {boolean} True if value is a Number, otherwise false */ -const isNumber = typeOfTest("number"); +const isNumber = typeOfTest('number'); /** * Determine if a value is an Object @@ -143499,7 +142879,7 @@ const isNumber = typeOfTest("number"); * * @returns {boolean} True if value is an Object, otherwise false */ -const isObject = (thing) => thing !== null && typeof thing === "object"; +const isObject = (thing) => thing !== null && typeof thing === 'object'; /** * Determine if a value is a Boolean @@ -143517,7 +142897,7 @@ const isBoolean = (thing) => thing === true || thing === false; * @returns {boolean} True if value is a plain Object, otherwise false */ const isPlainObject = (val) => { - if (kindOf(val) !== "object") { + if (kindOf(val) !== 'object') { return false; } @@ -143545,10 +142925,7 @@ const isEmptyObject = (val) => { } try { - return ( - Object.keys(val).length === 0 && - Object.getPrototypeOf(val) === Object.prototype - ); + return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; } catch (e) { // Fallback for any other objects that might cause RangeError with Object.keys() return false; @@ -143562,7 +142939,7 @@ const isEmptyObject = (val) => { * * @returns {boolean} True if value is a Date, otherwise false */ -const isDate = kindOfTest("Date"); +const isDate = kindOfTest('Date'); /** * Determine if a value is a File @@ -143571,7 +142948,32 @@ const isDate = kindOfTest("Date"); * * @returns {boolean} True if value is a File, otherwise false */ -const isFile = kindOfTest("File"); +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a React Native Blob + * React Native "blob": an object with a `uri` attribute. Optionally, it can + * also have a `name` and `type` attribute to specify filename and content type + * + * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 + * + * @param {*} value The value to test + * + * @returns {boolean} True if value is a React Native Blob, otherwise false + */ +const isReactNativeBlob = (value) => { + return !!(value && typeof value.uri !== 'undefined'); +} + +/** + * Determine if environment is React Native + * ReactNative `FormData` has a non-standard `getParts()` method + * + * @param {*} formData The formData to test + * + * @returns {boolean} True if environment is React Native, otherwise false + */ +const isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined'; /** * Determine if a value is a Blob @@ -143580,7 +142982,7 @@ const isFile = kindOfTest("File"); * * @returns {boolean} True if value is a Blob, otherwise false */ -const isBlob = kindOfTest("Blob"); +const isBlob = kindOfTest('Blob'); /** * Determine if a value is a FileList @@ -143589,7 +142991,7 @@ const isBlob = kindOfTest("Blob"); * * @returns {boolean} True if value is a File, otherwise false */ -const isFileList = kindOfTest("FileList"); +const isFileList = kindOfTest('FileList'); /** * Determine if a value is a Stream @@ -143607,17 +143009,27 @@ const isStream = (val) => isObject(val) && isFunction(val.pipe); * * @returns {boolean} True if value is an FormData, otherwise false */ +function getGlobal() { + if (typeof globalThis !== 'undefined') return globalThis; + if (typeof self !== 'undefined') return self; + if (typeof window !== 'undefined') return window; + if (typeof global !== 'undefined') return global; + return {}; +} + +const G = getGlobal(); +const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; + const isFormData = (thing) => { let kind; - return ( - thing && - ((typeof FormData === "function" && thing instanceof FormData) || - (isFunction(thing.append) && - ((kind = kindOf(thing)) === "formdata" || - // detect form-data instance - (kind === "object" && - isFunction(thing.toString) && - thing.toString() === "[object FormData]")))) + return thing && ( + (FormDataCtor && thing instanceof FormDataCtor) || ( + isFunction(thing.append) && ( + (kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') + ) + ) ); }; @@ -143628,13 +143040,13 @@ const isFormData = (thing) => { * * @returns {boolean} True if value is a URLSearchParams object, otherwise false */ -const isURLSearchParams = kindOfTest("URLSearchParams"); +const isURLSearchParams = kindOfTest('URLSearchParams'); const [isReadableStream, isRequest, isResponse, isHeaders] = [ - "ReadableStream", - "Request", - "Response", - "Headers", + 'ReadableStream', + 'Request', + 'Response', + 'Headers', ].map(kindOfTest); /** @@ -143644,9 +143056,9 @@ const [isReadableStream, isRequest, isResponse, isHeaders] = [ * * @returns {String} The String freed of excess whitespace */ -const trim = (str) => - str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); - +const trim = (str) => { + return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); +}; /** * Iterate over an Array or an Object invoking a function for each item. * @@ -143665,7 +143077,7 @@ const trim = (str) => */ function forEach(obj, fn, { allOwnKeys = false } = {}) { // Don't bother if no value provided - if (obj === null || typeof obj === "undefined") { + if (obj === null || typeof obj === 'undefined') { return; } @@ -143673,7 +143085,7 @@ function forEach(obj, fn, { allOwnKeys = false } = {}) { let l; // Force an array if not already something iterable - if (typeof obj !== "object") { + if (typeof obj !== 'object') { /*eslint no-param-reassign:0*/ obj = [obj]; } @@ -143690,9 +143102,7 @@ function forEach(obj, fn, { allOwnKeys = false } = {}) { } // Iterate over object keys - const keys = allOwnKeys - ? Object.getOwnPropertyNames(obj) - : Object.keys(obj); + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); const len = keys.length; let key; @@ -143703,6 +143113,14 @@ function forEach(obj, fn, { allOwnKeys = false } = {}) { } } +/** + * Finds a key in an object, case-insensitive, returning the actual key name. + * Returns null if the object is a Buffer or if no match is found. + * + * @param {Object} obj - The object to search. + * @param {string} key - The key to find (case-insensitive). + * @returns {?string} The actual key name if found, otherwise null. + */ function findKey(obj, key) { if (isBuffer(obj)) { return null; @@ -143723,16 +143141,11 @@ function findKey(obj, key) { const _global = (() => { /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" - ? self - : typeof window !== "undefined" - ? window - : global; + if (typeof globalThis !== 'undefined') return globalThis; + return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global; })(); -const isContextDefined = (context) => - !isUndefined(context) && context !== _global; +const isContextDefined = (context) => !isUndefined(context) && context !== _global; /** * Accepts varargs expecting each argument to be an object, then @@ -143757,7 +143170,7 @@ function merge(/* obj1, obj2, obj3, ... */) { const result = {}; const assignValue = (val, key) => { // Skip dangerous property names to prevent prototype pollution - if (key === "__proto__" || key === "constructor" || key === "prototype") { + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { return; } @@ -143810,7 +143223,7 @@ const extend = (a, b, thisArg, { allOwnKeys } = {}) => { }); } }, - { allOwnKeys }, + { allOwnKeys } ); return a; }; @@ -143839,17 +143252,14 @@ const stripBOM = (content) => { * @returns {void} */ const inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create( - superConstructor.prototype, - descriptors, - ); - Object.defineProperty(constructor.prototype, "constructor", { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + Object.defineProperty(constructor.prototype, 'constructor', { value: constructor, writable: true, enumerable: false, configurable: true, }); - Object.defineProperty(constructor, "super", { + Object.defineProperty(constructor, 'super', { value: superConstructor.prototype, }); props && Object.assign(constructor.prototype, props); @@ -143879,20 +143289,13 @@ const toFlatObject = (sourceObj, destObj, filter, propFilter) => { i = props.length; while (i-- > 0) { prop = props[i]; - if ( - (!propFilter || propFilter(prop, sourceObj, destObj)) && - !merged[prop] - ) { + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { destObj[prop] = sourceObj[prop]; merged[prop] = true; } } sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while ( - sourceObj && - (!filter || filter(sourceObj, destObj)) && - sourceObj !== Object.prototype - ); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); return destObj; }; @@ -143949,7 +143352,7 @@ const isTypedArray = ((TypedArray) => { return (thing) => { return TypedArray && thing instanceof TypedArray; }; -})(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array)); +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); /** * For each entry in the object, call the function with the key and value. @@ -143992,14 +143395,12 @@ const matchAll = (regExp, str) => { }; /* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ -const isHTMLForm = kindOfTest("HTMLFormElement"); +const isHTMLForm = kindOfTest('HTMLFormElement'); const toCamelCase = (str) => { - return str - .toLowerCase() - .replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - }); + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + }); }; /* Creating a function that will check if an object has a property. */ @@ -144016,7 +143417,7 @@ const utils_hasOwnProperty = ( * * @returns {boolean} True if value is a RegExp object, otherwise false */ -const isRegExp = kindOfTest("RegExp"); +const isRegExp = kindOfTest('RegExp'); const reduceDescriptors = (obj, reducer) => { const descriptors = Object.getOwnPropertyDescriptors(obj); @@ -144040,10 +143441,7 @@ const reduceDescriptors = (obj, reducer) => { const freezeMethods = (obj) => { reduceDescriptors(obj, (descriptor, name) => { // skip restricted props in strict mode - if ( - isFunction(obj) && - ["arguments", "caller", "callee"].indexOf(name) !== -1 - ) { + if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { return false; } @@ -144053,7 +143451,7 @@ const freezeMethods = (obj) => { descriptor.enumerable = false; - if ("writable" in descriptor) { + if ('writable' in descriptor) { descriptor.writable = false; return; } @@ -144066,6 +143464,14 @@ const freezeMethods = (obj) => { }); }; +/** + * Converts an array or a delimited string into an object set with values as keys and true as values. + * Useful for fast membership checks. + * + * @param {Array|string} arrayOrString - The array or string to convert. + * @param {string} delimiter - The delimiter to use if input is a string. + * @returns {Object} An object with keys from the array or string, values set to true. + */ const toObjectSet = (arrayOrString, delimiter) => { const obj = {}; @@ -144075,9 +143481,7 @@ const toObjectSet = (arrayOrString, delimiter) => { }); }; - isArray(arrayOrString) - ? define(arrayOrString) - : define(String(arrayOrString).split(delimiter)); + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); return obj; }; @@ -144085,9 +143489,7 @@ const toObjectSet = (arrayOrString, delimiter) => { const noop = () => {}; const toFiniteNumber = (value, defaultValue) => { - return value != null && Number.isFinite((value = +value)) - ? value - : defaultValue; + return value != null && Number.isFinite((value = +value)) ? value : defaultValue; }; /** @@ -144101,11 +143503,17 @@ function isSpecCompliantForm(thing) { return !!( thing && isFunction(thing.append) && - thing[toStringTag] === "FormData" && + thing[toStringTag] === 'FormData' && thing[iterator] ); } +/** + * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. + * + * @param {Object} obj - The object to convert. + * @returns {Object} The JSON-compatible object. + */ const toJSONObject = (obj) => { const stack = new Array(10); @@ -144120,7 +143528,7 @@ const toJSONObject = (obj) => { return source; } - if (!("toJSON" in source)) { + if (!('toJSON' in source)) { stack[i] = source; const target = isArray(source) ? [] : {}; @@ -144141,8 +143549,20 @@ const toJSONObject = (obj) => { return visit(obj, 0); }; -const isAsyncFn = kindOfTest("AsyncFunction"); +/** + * Determines if a value is an async function. + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is an async function, otherwise false. + */ +const isAsyncFn = kindOfTest('AsyncFunction'); +/** + * Determines if a value is thenable (has then and catch methods). + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is thenable, otherwise false. + */ const isThenable = (thing) => thing && (isObject(thing) || isFunction(thing)) && @@ -144152,6 +143572,14 @@ const isThenable = (thing) => // original code // https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 +/** + * Provides a cross-platform setImmediate implementation. + * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. + * + * @param {boolean} setImmediateSupported - Whether setImmediate is supported. + * @param {boolean} postMessageSupported - Whether postMessage is supported. + * @returns {Function} A function to schedule a callback asynchronously. + */ const _setImmediate = ((setImmediateSupported, postMessageSupported) => { if (setImmediateSupported) { return setImmediate; @@ -144160,27 +143588,33 @@ const _setImmediate = ((setImmediateSupported, postMessageSupported) => { return postMessageSupported ? ((token, callbacks) => { _global.addEventListener( - "message", + 'message', ({ source, data }) => { if (source === _global && data === token) { callbacks.length && callbacks.shift()(); } }, - false, + false ); return (cb) => { callbacks.push(cb); - _global.postMessage(token, "*"); + _global.postMessage(token, '*'); }; })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb); -})(typeof setImmediate === "function", isFunction(_global.postMessage)); +})(typeof setImmediate === 'function', isFunction(_global.postMessage)); +/** + * Schedules a microtask or asynchronous callback as soon as possible. + * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. + * + * @type {Function} + */ const asap = - typeof queueMicrotask !== "undefined" + typeof queueMicrotask !== 'undefined' ? queueMicrotask.bind(_global) - : (typeof process !== "undefined" && process.nextTick) || _setImmediate; + : (typeof process !== 'undefined' && process.nextTick) || _setImmediate; // ********************* @@ -144205,6 +143639,8 @@ const isIterable = (thing) => thing != null && isFunction(thing[iterator]); isUndefined, isDate, isFile, + isReactNativeBlob, + isReactNative, isBlob, isRegExp, isFunction, @@ -144252,14 +143688,20 @@ const isIterable = (thing) => thing != null && isFunction(thing[iterator]); class AxiosError extends Error { - static from(error, code, config, request, response, customProps) { - const axiosError = new AxiosError(error.message, code || error.code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - customProps && Object.assign(axiosError, customProps); - return axiosError; + static from(error, code, config, request, response, customProps) { + const axiosError = new AxiosError(error.message, code || error.code, config, request, response); + axiosError.cause = error; + axiosError.name = error.name; + + // Preserve status from the original error if not already set from response + if (error.status != null && axiosError.status == null) { + axiosError.status = error.status; } + customProps && Object.assign(axiosError, customProps); + return axiosError; + } + /** * Create an Error with the specified message, config, error code, request and response. * @@ -144272,37 +143714,48 @@ class AxiosError extends Error { * @returns {Error} The created error. */ constructor(message, code, config, request, response) { - super(message); - this.name = 'AxiosError'; - this.isAxiosError = true; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - if (response) { - this.response = response; - this.status = response.status; - } + super(message); + + // Make message enumerable to maintain backward compatibility + // The native Error constructor sets message as non-enumerable, + // but axios < v1.13.3 had it as enumerable + Object.defineProperty(this, 'message', { + value: message, + enumerable: true, + writable: true, + configurable: true + }); + + this.name = 'AxiosError'; + this.isAxiosError = true; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + if (response) { + this.response = response; + this.status = response.status; + } } - toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils.toJSONObject(this.config), - code: this.code, - status: this.status, - }; - } + toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils.toJSONObject(this.config), + code: this.code, + status: this.status, + }; + } } // This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. @@ -144369,11 +143822,14 @@ function removeBrackets(key) { */ function renderKey(path, key, dots) { if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); + return path + .concat(key) + .map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }) + .join(dots ? '.' : ''); } /** @@ -144423,21 +143879,26 @@ function toFormData(obj, formData, options) { formData = formData || new (classes_FormData || FormData)(); // eslint-disable-next-line no-param-reassign - options = utils.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils.isUndefined(source[option]); - }); + options = utils.toFlatObject( + options, + { + metaTokens: true, + dots: false, + indexes: false, + }, + false, + function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils.isUndefined(source[option]); + } + ); const metaTokens = options.metaTokens; // eslint-disable-next-line no-use-before-define const visitor = options.visitor || defaultVisitor; const dots = options.dots; const indexes = options.indexes; - const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; + const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob); const useBlob = _Blob && utils.isSpecCompliantForm(formData); if (!utils.isFunction(visitor)) { @@ -144479,6 +143940,11 @@ function toFormData(obj, formData, options) { function defaultVisitor(value, key, path) { let arr = value; + if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) { + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } + if (value && !path && typeof value === 'object') { if (utils.endsWith(key, '{}')) { // eslint-disable-next-line no-param-reassign @@ -144487,17 +143953,22 @@ function toFormData(obj, formData, options) { value = JSON.stringify(value); } else if ( (utils.isArray(value) && isFlatArray(value)) || - ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)) - )) { + ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))) + ) { // eslint-disable-next-line no-param-reassign key = removeBrackets(key); arr.forEach(function each(el, index) { - !(utils.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), - convertValue(el) - ); + !(utils.isUndefined(el) || el === null) && + formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true + ? renderKey([key], index, dots) + : indexes === null + ? key + : key + '[]', + convertValue(el) + ); }); return false; } @@ -144517,7 +143988,7 @@ function toFormData(obj, formData, options) { const exposedHelpers = Object.assign(predicates, { defaultVisitor, convertValue, - isVisitable + isVisitable, }); function build(value, path) { @@ -144530,9 +144001,9 @@ function toFormData(obj, formData, options) { stack.push(value); utils.forEach(value, function each(el, key) { - const result = !(utils.isUndefined(el) || el === null) && visitor.call( - formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers - ); + const result = + !(utils.isUndefined(el) || el === null) && + visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers); if (result === true) { build(el, path ? path.concat(key) : [key]); @@ -144574,7 +144045,7 @@ function encode(str) { ')': '%29', '~': '%7E', '%20': '+', - '%00': '\x00' + '%00': '\x00', }; return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { return charMap[match]; @@ -144602,13 +144073,17 @@ AxiosURLSearchParams_prototype.append = function append(name, value) { }; AxiosURLSearchParams_prototype.toString = function toString(encoder) { - const _encode = encoder ? function(value) { - return encoder.call(this, value, encode); - } : encode; + const _encode = encoder + ? function (value) { + return encoder.call(this, value, encode); + } + : encode; - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); + return this._pairs + .map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '') + .join('&'); }; /* harmony default export */ const helpers_AxiosURLSearchParams = (AxiosURLSearchParams); @@ -144620,19 +144095,19 @@ AxiosURLSearchParams_prototype.toString = function toString(encoder) { /** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts + * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with + * their plain counterparts (`:`, `$`, `,`, `+`). * * @param {string} val The value to be encoded. * * @returns {string} The encoded value. */ function buildURL_encode(val) { - return encodeURIComponent(val). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'); + return encodeURIComponent(val) + .replace(/%3A/gi, ':') + .replace(/%24/g, '$') + .replace(/%2C/gi, ',') + .replace(/%20/g, '+'); } /** @@ -144649,11 +144124,13 @@ function buildURL(url, params, options) { return url; } - const _encode = options && options.encode || buildURL_encode; + const _encode = (options && options.encode) || buildURL_encode; - const _options = utils.isFunction(options) ? { - serialize: options - } : options; + const _options = utils.isFunction(options) + ? { + serialize: options, + } + : options; const serializeFn = _options && _options.serialize; @@ -144662,13 +144139,13 @@ function buildURL(url, params, options) { if (serializeFn) { serializedParams = serializeFn(params, _options); } else { - serializedParams = utils.isURLSearchParams(params) ? - params.toString() : - new helpers_AxiosURLSearchParams(params, _options).toString(_encode); + serializedParams = utils.isURLSearchParams(params) + ? params.toString() + : new helpers_AxiosURLSearchParams(params, _options).toString(_encode); } if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); + const hashmarkIndex = url.indexOf('#'); if (hashmarkIndex !== -1) { url = url.slice(0, hashmarkIndex); @@ -144703,7 +144180,7 @@ class InterceptorManager { fulfilled, rejected, synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null + runWhen: options ? options.runWhen : null, }); return this.handlers.length - 1; } @@ -144760,7 +144237,7 @@ class InterceptorManager { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false, - legacyInterceptorReqResOrdering: true + legacyInterceptorReqResOrdering: true, }); // EXTERNAL MODULE: external "url" @@ -144776,19 +144253,19 @@ var external_url_ = __nccwpck_require__(57310); -const ALPHA = 'abcdefghijklmnopqrstuvwxyz' +const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; const DIGIT = '0123456789'; const ALPHABET = { DIGIT, ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT -} + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT, +}; const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { let str = ''; - const {length} = alphabet; + const { length } = alphabet; const randomValues = new Uint32Array(size); external_crypto_.randomFillSync(randomValues); for (let i = 0; i < size; i++) { @@ -144796,25 +144273,24 @@ const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { } return str; -} - +}; /* harmony default export */ const node = ({ isNode: true, classes: { URLSearchParams: URLSearchParams, FormData: classes_FormData, - Blob: typeof Blob !== 'undefined' && Blob || null + Blob: (typeof Blob !== 'undefined' && Blob) || null, }, ALPHABET, generateString, - protocols: [ 'http', 'https', 'file', 'data' ] + protocols: ['http', 'https', 'file', 'data'], }); ;// CONCATENATED MODULE: ./node_modules/axios/lib/platform/common/utils.js const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; -const _navigator = typeof navigator === 'object' && navigator || undefined; +const _navigator = (typeof navigator === 'object' && navigator) || undefined; /** * Determine if we're running in a standard browser environment @@ -144833,7 +144309,8 @@ const _navigator = typeof navigator === 'object' && navigator || undefined; * * @returns {boolean} */ -const hasStandardBrowserEnv = hasBrowserEnv && +const hasStandardBrowserEnv = + hasBrowserEnv && (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); /** @@ -144854,7 +144331,7 @@ const hasStandardBrowserWebWorkerEnv = (() => { ); })(); -const origin = hasBrowserEnv && window.location.href || 'http://localhost'; +const origin = (hasBrowserEnv && window.location.href) || 'http://localhost'; @@ -144864,7 +144341,7 @@ const origin = hasBrowserEnv && window.location.href || 'http://localhost'; /* harmony default export */ const platform = ({ ...common_utils_namespaceObject, - ...node + ...node, }); ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/toURLEncodedForm.js @@ -144876,7 +144353,7 @@ const origin = hasBrowserEnv && window.location.href || 'http://localhost'; function toURLEncodedForm(data, options) { return helpers_toFormData(data, new platform.classes.URLSearchParams(), { - visitor: function(value, key, path, helpers) { + visitor: function (value, key, path, helpers) { if (platform.isNode && utils.isBuffer(value)) { this.append(key, value.toString('base64')); return false; @@ -144884,7 +144361,7 @@ function toURLEncodedForm(data, options) { return helpers.defaultVisitor.apply(this, arguments); }, - ...options + ...options, }); } @@ -144905,7 +144382,7 @@ function parsePropPath(name) { // foo.x.y.z // foo-x-y-z // foo x y z - return utils.matchAll(/\w+|\[(\w*)]/g, name).map(match => { + return utils.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { return match[0] === '[]' ? '' : match[1] || match[0]; }); } @@ -145022,96 +144499,107 @@ function stringifySafely(rawValue, parser, encoder) { } const defaults = { - transitional: defaults_transitional, adapter: ['xhr', 'http', 'fetch'], - transformRequest: [function transformRequest(data, headers) { - const contentType = headers.getContentType() || ''; - const hasJSONContentType = contentType.indexOf('application/json') > -1; - const isObjectPayload = utils.isObject(data); + transformRequest: [ + function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = utils.isObject(data); - if (isObjectPayload && utils.isHTMLForm(data)) { - data = new FormData(data); - } + if (isObjectPayload && utils.isHTMLForm(data)) { + data = new FormData(data); + } - const isFormData = utils.isFormData(data); + const isFormData = utils.isFormData(data); - if (isFormData) { - return hasJSONContentType ? JSON.stringify(helpers_formDataToJSON(data)) : data; - } + if (isFormData) { + return hasJSONContentType ? JSON.stringify(helpers_formDataToJSON(data)) : data; + } - if (utils.isArrayBuffer(data) || - utils.isBuffer(data) || - utils.isStream(data) || - utils.isFile(data) || - utils.isBlob(data) || - utils.isReadableStream(data) - ) { - return data; - } - if (utils.isArrayBufferView(data)) { - return data.buffer; - } - if (utils.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } + if ( + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) || + utils.isReadableStream(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } - let isFileList; + let isFileList; - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } - if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - const _FormData = this.env && this.env.FormData; + if ( + (isFileList = utils.isFileList(data)) || + contentType.indexOf('multipart/form-data') > -1 + ) { + const _FormData = this.env && this.env.FormData; - return helpers_toFormData( - isFileList ? {'files[]': data} : data, - _FormData && new _FormData(), - this.formSerializer - ); + return helpers_toFormData( + isFileList ? { 'files[]': data } : data, + _FormData && new _FormData(), + this.formSerializer + ); + } } - } - if (isObjectPayload || hasJSONContentType ) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } + if (isObjectPayload || hasJSONContentType) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } - return data; - }], + return data; + }, + ], - transformResponse: [function transformResponse(data) { - const transitional = this.transitional || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const JSONRequested = this.responseType === 'json'; + transformResponse: [ + function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; - if (utils.isResponse(data) || utils.isReadableStream(data)) { - return data; - } + if (utils.isResponse(data) || utils.isReadableStream(data)) { + return data; + } - if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; + if ( + data && + utils.isString(data) && + ((forcedJSONParsing && !this.responseType) || JSONRequested) + ) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; - try { - return JSON.parse(data, this.parseReviver); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw core_AxiosError.from(e, core_AxiosError.ERR_BAD_RESPONSE, this, null, this.response); + try { + return JSON.parse(data, this.parseReviver); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw core_AxiosError.from(e, core_AxiosError.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; } - throw e; } } - } - return data; - }], + return data; + }, + ], /** * A timeout in milliseconds to abort a request. If set to 0 (default) a @@ -145127,7 +144615,7 @@ const defaults = { env: { FormData: platform.classes.FormData, - Blob: platform.classes.Blob + Blob: platform.classes.Blob, }, validateStatus: function validateStatus(status) { @@ -145136,10 +144624,10 @@ const defaults = { headers: { common: { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': undefined - } - } + Accept: 'application/json, text/plain, */*', + 'Content-Type': undefined, + }, + }, }; utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { @@ -145156,10 +144644,23 @@ utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { // RawAxiosHeaders whose duplicates are ignored by node // c.f. https://nodejs.org/api/http.html#http_message_headers const ignoreDuplicateOf = utils.toObjectSet([ - 'age', 'authorization', 'content-length', 'content-type', 'etag', - 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', - 'last-modified', 'location', 'max-forwards', 'proxy-authorization', - 'referer', 'retry-after', 'user-agent' + 'age', + 'authorization', + 'content-length', + 'content-type', + 'etag', + 'expires', + 'from', + 'host', + 'if-modified-since', + 'if-unmodified-since', + 'last-modified', + 'location', + 'max-forwards', + 'proxy-authorization', + 'referer', + 'retry-after', + 'user-agent', ]); /** @@ -145176,31 +144677,32 @@ const ignoreDuplicateOf = utils.toObjectSet([ * * @returns {Object} Headers parsed into an object */ -/* harmony default export */ const parseHeaders = (rawHeaders => { +/* harmony default export */ const parseHeaders = ((rawHeaders) => { const parsed = {}; let key; let val; let i; - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { - i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); + rawHeaders && + rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); - if (!key || (parsed[key] && ignoreDuplicateOf[key])) { - return; - } + if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + return; + } - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } } else { - parsed[key] = [val]; + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); + }); return parsed; }); @@ -145213,16 +144715,49 @@ const ignoreDuplicateOf = utils.toObjectSet([ const $internals = Symbol('internals'); +const isValidHeaderValue = (value) => !/[\r\n]/.test(value); + +function assertValidHeaderValue(value, header) { + if (value === false || value == null) { + return; + } + + if (utils.isArray(value)) { + value.forEach((v) => assertValidHeaderValue(v, header)); + return; + } + + if (!isValidHeaderValue(String(value))) { + throw new Error(`Invalid character in header content ["${header}"]`); + } +} + function normalizeHeader(header) { return header && String(header).trim().toLowerCase(); } +function stripTrailingCRLF(str) { + let end = str.length; + + while (end > 0) { + const charCode = str.charCodeAt(end - 1); + + if (charCode !== 10 && charCode !== 13) { + break; + } + + end -= 1; + } + + return end === str.length ? str : str.slice(0, end); +} + function normalizeValue(value) { if (value === false || value == null) { return value; } - return utils.isArray(value) ? value.map(normalizeValue) : String(value); + return utils.isArray(value) ? value.map(normalizeValue) : stripTrailingCRLF(String(value)); } function parseTokens(str) { @@ -145260,8 +144795,10 @@ function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { } function formatHeader(header) { - return header.trim() - .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return header + .trim() + .toLowerCase() + .replace(/([a-z\d])(\w*)/g, (w, char, str) => { return char.toUpperCase() + str; }); } @@ -145269,12 +144806,12 @@ function formatHeader(header) { function buildAccessors(obj, header) { const accessorName = utils.toCamelCase(' ' + header); - ['get', 'set', 'has'].forEach(methodName => { + ['get', 'set', 'has'].forEach((methodName) => { Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { + value: function (arg1, arg2, arg3) { return this[methodName].call(this, header, arg1, arg2, arg3); }, - configurable: true + configurable: true, }); }); } @@ -145296,7 +144833,13 @@ class AxiosHeaders { const key = utils.findKey(self, lHeader); - if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { + if ( + !key || + self[key] === undefined || + _rewrite === true || + (_rewrite === undefined && self[key] !== false) + ) { + assertValidHeaderValue(_value, _header); self[key || _header] = normalizeValue(_value); } } @@ -145305,21 +144848,26 @@ class AxiosHeaders { utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); if (utils.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite) - } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(header, valueOrRewrite); + } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { setHeaders(parseHeaders(header), valueOrRewrite); } else if (utils.isObject(header) && utils.isIterable(header)) { - let obj = {}, dest, key; + let obj = {}, + dest, + key; for (const entry of header) { if (!utils.isArray(entry)) { throw TypeError('Object iterator must return a key-value pair'); } - obj[key = entry[0]] = (dest = obj[key]) ? - (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1]; + obj[(key = entry[0])] = (dest = obj[key]) + ? utils.isArray(dest) + ? [...dest, entry[1]] + : [dest, entry[1]] + : entry[1]; } - setHeaders(obj, valueOrRewrite) + setHeaders(obj, valueOrRewrite); } else { header != null && setHeader(valueOrRewrite, header, rewrite); } @@ -145363,7 +144911,11 @@ class AxiosHeaders { if (header) { const key = utils.findKey(this, header); - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); + return !!( + key && + this[key] !== undefined && + (!matcher || matchHeaderValue(this, this[key], key, matcher)) + ); } return false; @@ -145403,7 +144955,7 @@ class AxiosHeaders { while (i--) { const key = keys[i]; - if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { delete this[key]; deleted = true; } @@ -145447,7 +144999,9 @@ class AxiosHeaders { const obj = Object.create(null); utils.forEach(this, (value, header) => { - value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value); + value != null && + value !== false && + (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value); }); return obj; @@ -145458,11 +145012,13 @@ class AxiosHeaders { } toString() { - return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); + return Object.entries(this.toJSON()) + .map(([header, value]) => header + ': ' + value) + .join('\n'); } getSetCookie() { - return this.get("set-cookie") || []; + return this.get('set-cookie') || []; } get [Symbol.toStringTag]() { @@ -145482,9 +145038,12 @@ class AxiosHeaders { } static accessor(header) { - const internals = this[$internals] = (this[$internals] = { - accessors: {} - }); + const internals = + (this[$internals] = + this[$internals] = + { + accessors: {}, + }); const accessors = internals.accessors; const prototype = this.prototype; @@ -145504,17 +145063,24 @@ class AxiosHeaders { } } -AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); +AxiosHeaders.accessor([ + 'Content-Type', + 'Content-Length', + 'Accept', + 'Accept-Encoding', + 'User-Agent', + 'Authorization', +]); // reserved names hotfix -utils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { +utils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => { let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` return { get: () => value, set(headerValue) { this[mapped] = headerValue; - } - } + }, + }; }); utils.freezeMethods(AxiosHeaders); @@ -145601,13 +145167,17 @@ function settle(resolve, reject, response) { if (!response.status || !validateStatus || validateStatus(response.status)) { resolve(response); } else { - reject(new core_AxiosError( - 'Request failed with status code ' + response.status, - [core_AxiosError.ERR_BAD_REQUEST, core_AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], - response.config, - response.request, - response - )); + reject( + new core_AxiosError( + 'Request failed with status code ' + response.status, + [core_AxiosError.ERR_BAD_REQUEST, core_AxiosError.ERR_BAD_RESPONSE][ + Math.floor(response.status / 100) - 4 + ], + response.config, + response.request, + response + ) + ); } } @@ -145632,7 +145202,6 @@ function isAbsoluteURL(url) { return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); } - ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/combineURLs.js @@ -145674,8 +145243,111 @@ function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { return requestedURL; } -// EXTERNAL MODULE: ./node_modules/proxy-from-env/index.js -var proxy_from_env = __nccwpck_require__(63329); +;// CONCATENATED MODULE: ./node_modules/proxy-from-env/index.js + + +var DEFAULT_PORTS = { + ftp: 21, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443, +}; + +function parseUrl(urlString) { + try { + return new URL(urlString); + } catch { + return null; + } +} + +/** + * @param {string|object|URL} url - The URL as a string or URL instance, or a + * compatible object (such as the result from legacy url.parse). + * @return {string} The URL of the proxy that should handle the request to the + * given URL. If no proxy is set, this will be an empty string. + */ +function getProxyForUrl(url) { + var parsedUrl = (typeof url === 'string' ? parseUrl(url) : url) || {}; + var proto = parsedUrl.protocol; + var hostname = parsedUrl.host; + var port = parsedUrl.port; + if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { + return ''; // Don't proxy URLs without a valid scheme or host. + } + + proto = proto.split(':', 1)[0]; + // Stripping ports in this way instead of using parsedUrl.hostname to make + // sure that the brackets around IPv6 addresses are kept. + hostname = hostname.replace(/:\d*$/, ''); + port = parseInt(port) || DEFAULT_PORTS[proto] || 0; + if (!shouldProxy(hostname, port)) { + return ''; // Don't proxy URLs that match NO_PROXY. + } + + var proxy = getEnv(proto + '_proxy') || getEnv('all_proxy'); + if (proxy && proxy.indexOf('://') === -1) { + // Missing scheme in proxy, default to the requested URL's scheme. + proxy = proto + '://' + proxy; + } + return proxy; +} + +/** + * Determines whether a given URL should be proxied. + * + * @param {string} hostname - The host name of the URL. + * @param {number} port - The effective port of the URL. + * @returns {boolean} Whether the given URL should be proxied. + * @private + */ +function shouldProxy(hostname, port) { + var NO_PROXY = getEnv('no_proxy').toLowerCase(); + if (!NO_PROXY) { + return true; // Always proxy if NO_PROXY is not set. + } + if (NO_PROXY === '*') { + return false; // Never proxy if wildcard is set. + } + + return NO_PROXY.split(/[,\s]/).every(function(proxy) { + if (!proxy) { + return true; // Skip zero-length hosts. + } + var parsedProxy = proxy.match(/^(.+):(\d+)$/); + var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; + var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; + if (parsedProxyPort && parsedProxyPort !== port) { + return true; // Skip if ports don't match. + } + + if (!/^[.*]/.test(parsedProxyHostname)) { + // No wildcards, so stop proxying if there is an exact match. + return hostname !== parsedProxyHostname; + } + + if (parsedProxyHostname.charAt(0) === '*') { + // Remove leading wildcard. + parsedProxyHostname = parsedProxyHostname.slice(1); + } + // Stop proxying if the hostname ends with the no_proxy host. + return !hostname.endsWith(parsedProxyHostname); + }); +} + +/** + * Get the value for an environment variable. + * + * @param {string} key - The name of the environment variable. + * @return {string} The value of the environment variable. + * @private + */ +function getEnv(key) { + return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; +} + // EXTERNAL MODULE: external "http" var external_http_ = __nccwpck_require__(13685); // EXTERNAL MODULE: external "https" @@ -145689,13 +145361,13 @@ var follow_redirects = __nccwpck_require__(67707); // EXTERNAL MODULE: external "zlib" var external_zlib_ = __nccwpck_require__(59796); ;// CONCATENATED MODULE: ./node_modules/axios/lib/env/data.js -const VERSION = "1.13.5"; +const VERSION = "1.15.0"; ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/parseProtocol.js function parseProtocol(url) { const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; + return (match && match[1]) || ''; } ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/fromDataURI.js @@ -145718,7 +145390,7 @@ const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; * @returns {Buffer|Blob} */ function fromDataURI(uri, asBlob, options) { - const _Blob = options && options.Blob || platform.classes.Blob; + const _Blob = (options && options.Blob) || platform.classes.Blob; const protocol = parseProtocol(uri); if (asBlob === undefined && _Blob) { @@ -145744,7 +145416,7 @@ function fromDataURI(uri, asBlob, options) { throw new core_AxiosError('Blob is not supported', core_AxiosError.ERR_NOT_SUPPORT); } - return new _Blob([buffer], {type: mime}); + return new _Blob([buffer], { type: mime }); } return buffer; @@ -145763,24 +145435,29 @@ var external_stream_ = __nccwpck_require__(12781); const kInternals = Symbol('internals'); -class AxiosTransformStream extends external_stream_.Transform{ +class AxiosTransformStream extends external_stream_.Transform { constructor(options) { - options = utils.toFlatObject(options, { - maxRate: 0, - chunkSize: 64 * 1024, - minChunkSize: 100, - timeWindow: 500, - ticksRate: 2, - samplesCount: 15 - }, null, (prop, source) => { - return !utils.isUndefined(source[prop]); - }); + options = utils.toFlatObject( + options, + { + maxRate: 0, + chunkSize: 64 * 1024, + minChunkSize: 100, + timeWindow: 500, + ticksRate: 2, + samplesCount: 15, + }, + null, + (prop, source) => { + return !utils.isUndefined(source[prop]); + } + ); super({ - readableHighWaterMark: options.chunkSize + readableHighWaterMark: options.chunkSize, }); - const internals = this[kInternals] = { + const internals = (this[kInternals] = { timeWindow: options.timeWindow, chunkSize: options.chunkSize, maxRate: options.maxRate, @@ -145790,10 +145467,10 @@ class AxiosTransformStream extends external_stream_.Transform{ notifiedBytesLoaded: 0, ts: Date.now(), bytes: 0, - onReadCallback: null - }; + onReadCallback: null, + }); - this.on('newListener', event => { + this.on('newListener', (event) => { if (event === 'progress') { if (!internals.isCaptured) { internals.isCaptured = true; @@ -145821,8 +145498,11 @@ class AxiosTransformStream extends external_stream_.Transform{ const timeWindow = internals.timeWindow; const divider = 1000 / timeWindow; - const bytesThreshold = (maxRate / divider); - const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; + const bytesThreshold = maxRate / divider; + const minChunkSize = + internals.minChunkSize !== false + ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) + : 0; const pushChunk = (_chunk, _callback) => { const bytes = Buffer.byteLength(_chunk); @@ -145839,7 +145519,7 @@ class AxiosTransformStream extends external_stream_.Transform{ process.nextTick(_callback); }; } - } + }; const transformChunk = (_chunk, _callback) => { const chunkSize = Buffer.byteLength(_chunk); @@ -145851,7 +145531,7 @@ class AxiosTransformStream extends external_stream_.Transform{ if (maxRate) { const now = Date.now(); - if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) { + if (!internals.ts || (passed = now - internals.ts) >= timeWindow) { internals.ts = now; bytesLeft = bytesThreshold - internals.bytes; internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; @@ -145874,14 +145554,19 @@ class AxiosTransformStream extends external_stream_.Transform{ } } - if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) { + if (maxChunkSize && chunkSize > maxChunkSize && chunkSize - maxChunkSize > minChunkSize) { chunkRemainder = _chunk.subarray(maxChunkSize); _chunk = _chunk.subarray(0, maxChunkSize); } - pushChunk(_chunk, chunkRemainder ? () => { - process.nextTick(_callback, null, chunkRemainder); - } : _callback); + pushChunk( + _chunk, + chunkRemainder + ? () => { + process.nextTick(_callback, null, chunkRemainder); + } + : _callback + ); }; transformChunk(chunk, function transformNextChunk(err, _chunk) { @@ -145903,19 +145588,19 @@ class AxiosTransformStream extends external_stream_.Transform{ // EXTERNAL MODULE: external "events" var external_events_ = __nccwpck_require__(82361); ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/readBlob.js -const {asyncIterator} = Symbol; +const { asyncIterator } = Symbol; const readBlob = async function* (blob) { if (blob.stream) { - yield* blob.stream() + yield* blob.stream(); } else if (blob.arrayBuffer) { - yield await blob.arrayBuffer() + yield await blob.arrayBuffer(); } else if (blob[asyncIterator]) { yield* blob[asyncIterator](); } else { yield blob; } -} +}; /* harmony default export */ const helpers_readBlob = (readBlob); @@ -145936,7 +145621,7 @@ const CRLF_BYTES_COUNT = 2; class FormDataPart { constructor(name, value) { - const {escapeName} = this.constructor; + const { escapeName } = this.constructor; const isStringValue = utils.isString(value); let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ @@ -145946,7 +145631,7 @@ class FormDataPart { if (isStringValue) { value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); } else { - headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}` + headers += `Content-Type: ${value.type || 'application/octet-stream'}${CRLF}`; } this.headers = textEncoder.encode(headers + CRLF); @@ -145959,12 +145644,12 @@ class FormDataPart { this.value = value; } - async *encode(){ + async *encode() { yield this.headers; - const {value} = this; + const { value } = this; - if(utils.isTypedArray(value)) { + if (utils.isTypedArray(value)) { yield value; } else { yield* helpers_readBlob(value); @@ -145974,11 +145659,15 @@ class FormDataPart { } static escapeName(name) { - return String(name).replace(/[\r\n"]/g, (match) => ({ - '\r' : '%0D', - '\n' : '%0A', - '"' : '%22', - }[match])); + return String(name).replace( + /[\r\n"]/g, + (match) => + ({ + '\r': '%0D', + '\n': '%0A', + '"': '%22', + })[match] + ); } } @@ -145986,15 +145675,15 @@ const formDataToStream = (form, headersHandler, options) => { const { tag = 'form-data-boundary', size = 25, - boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET) + boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET), } = options || {}; - if(!utils.isFormData(form)) { + if (!utils.isFormData(form)) { throw TypeError('FormData instance required'); } if (boundary.length < 1 || boundary.length > 70) { - throw Error('boundary must be 10-70 characters long') + throw Error('boundary must be 10-70 characters long'); } const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); @@ -146012,8 +145701,8 @@ const formDataToStream = (form, headersHandler, options) => { contentLength = utils.toFiniteNumber(contentLength); const computedHeaders = { - 'Content-Type': `multipart/form-data; boundary=${boundary}` - } + 'Content-Type': `multipart/form-data; boundary=${boundary}`, + }; if (Number.isFinite(contentLength)) { computedHeaders['Content-Length'] = contentLength; @@ -146021,14 +145710,16 @@ const formDataToStream = (form, headersHandler, options) => { headersHandler && headersHandler(computedHeaders); - return external_stream_.Readable.from((async function *() { - for(const part of parts) { - yield boundaryBytes; - yield* part.encode(); - } + return external_stream_.Readable.from( + (async function* () { + for (const part of parts) { + yield boundaryBytes; + yield* part.encode(); + } - yield footerBytes; - })()); + yield footerBytes; + })() + ); }; /* harmony default export */ const helpers_formDataToStream = (formDataToStream); @@ -146049,10 +145740,11 @@ class ZlibHeaderTransformStream extends external_stream_.Transform { this._transform = this.__transform; // Add Default Compression headers if no zlib headers are present - if (chunk[0] !== 120) { // Hex: 78 + if (chunk[0] !== 120) { + // Hex: 78 const header = Buffer.alloc(2); header[0] = 120; // Hex: 78 - header[1] = 156; // Hex: 9C + header[1] = 156; // Hex: 9C this.push(header, encoding); } } @@ -146067,20 +145759,130 @@ class ZlibHeaderTransformStream extends external_stream_.Transform { const callbackify = (fn, reducer) => { - return utils.isAsyncFn(fn) ? function (...args) { - const cb = args.pop(); - fn.apply(this, args).then((value) => { - try { - reducer ? cb(null, ...reducer(value)) : cb(null, value); - } catch (err) { - cb(err); + return utils.isAsyncFn(fn) + ? function (...args) { + const cb = args.pop(); + fn.apply(this, args).then((value) => { + try { + reducer ? cb(null, ...reducer(value)) : cb(null, value); + } catch (err) { + cb(err); + } + }, cb); } - }, cb); - } : fn; -} + : fn; +}; /* harmony default export */ const helpers_callbackify = (callbackify); +;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/shouldBypassProxy.js +const shouldBypassProxy_DEFAULT_PORTS = { + http: 80, + https: 443, + ws: 80, + wss: 443, + ftp: 21, +}; + +const parseNoProxyEntry = (entry) => { + let entryHost = entry; + let entryPort = 0; + + if (entryHost.charAt(0) === '[') { + const bracketIndex = entryHost.indexOf(']'); + + if (bracketIndex !== -1) { + const host = entryHost.slice(1, bracketIndex); + const rest = entryHost.slice(bracketIndex + 1); + + if (rest.charAt(0) === ':' && /^\d+$/.test(rest.slice(1))) { + entryPort = Number.parseInt(rest.slice(1), 10); + } + + return [host, entryPort]; + } + } + + const firstColon = entryHost.indexOf(':'); + const lastColon = entryHost.lastIndexOf(':'); + + if ( + firstColon !== -1 && + firstColon === lastColon && + /^\d+$/.test(entryHost.slice(lastColon + 1)) + ) { + entryPort = Number.parseInt(entryHost.slice(lastColon + 1), 10); + entryHost = entryHost.slice(0, lastColon); + } + + return [entryHost, entryPort]; +}; + +const normalizeNoProxyHost = (hostname) => { + if (!hostname) { + return hostname; + } + + if (hostname.charAt(0) === '[' && hostname.charAt(hostname.length - 1) === ']') { + hostname = hostname.slice(1, -1); + } + + return hostname.replace(/\.+$/, ''); +}; + +function shouldBypassProxy(location) { + let parsed; + + try { + parsed = new URL(location); + } catch (_err) { + return false; + } + + const noProxy = (process.env.no_proxy || process.env.NO_PROXY || '').toLowerCase(); + + if (!noProxy) { + return false; + } + + if (noProxy === '*') { + return true; + } + + const port = + Number.parseInt(parsed.port, 10) || shouldBypassProxy_DEFAULT_PORTS[parsed.protocol.split(':', 1)[0]] || 0; + + const hostname = normalizeNoProxyHost(parsed.hostname.toLowerCase()); + + return noProxy.split(/[\s,]+/).some((entry) => { + if (!entry) { + return false; + } + + let [entryHost, entryPort] = parseNoProxyEntry(entry); + + entryHost = normalizeNoProxyHost(entryHost); + + if (!entryHost) { + return false; + } + + if (entryPort && entryPort !== port) { + return false; + } + + if (entryHost.charAt(0) === '*') { + entryHost = entryHost.slice(1); + } + + if (entryHost.charAt(0) === '.') { + return hostname.endsWith(entryHost); + } + + return hostname === entryHost; + }); +} + ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/speedometer.js @@ -146132,7 +145934,7 @@ function speedometer(samplesCount, min) { const passed = startedAt && now - startedAt; - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; + return passed ? Math.round((bytesCount * 1000) / passed) : undefined; }; } @@ -146159,23 +145961,23 @@ function throttle(fn, freq) { timer = null; } fn(...args); - } + }; const throttled = (...args) => { const now = Date.now(); const passed = now - timestamp; - if ( passed >= threshold) { + if (passed >= threshold) { invoke(args, now); } else { lastArgs = args; if (!timer) { timer = setTimeout(() => { timer = null; - invoke(lastArgs) + invoke(lastArgs); }, threshold - passed); } } - } + }; const flush = () => lastArgs && invoke(lastArgs); @@ -146193,7 +145995,7 @@ const progressEventReducer = (listener, isDownloadStream, freq = 3) => { let bytesNotified = 0; const _speedometer = helpers_speedometer(50, 250); - return helpers_throttle(e => { + return helpers_throttle((e) => { const loaded = e.loaded; const total = e.lengthComputable ? e.total : undefined; const progressBytes = loaded - bytesNotified; @@ -146205,30 +146007,37 @@ const progressEventReducer = (listener, isDownloadStream, freq = 3) => { const data = { loaded, total, - progress: total ? (loaded / total) : undefined, + progress: total ? loaded / total : undefined, bytes: progressBytes, rate: rate ? rate : undefined, estimated: rate && total && inRange ? (total - loaded) / rate : undefined, event: e, lengthComputable: total != null, - [isDownloadStream ? 'download' : 'upload']: true + [isDownloadStream ? 'download' : 'upload']: true, }; listener(data); }, freq); -} +}; const progressEventDecorator = (total, throttled) => { const lengthComputable = total != null; - return [(loaded) => throttled[0]({ - lengthComputable, - total, - loaded - }), throttled[1]]; -} + return [ + (loaded) => + throttled[0]({ + lengthComputable, + total, + loaded, + }), + throttled[1], + ]; +}; -const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args)); +const asyncDecorator = + (fn) => + (...args) => + utils.asap(() => fn(...args)); ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js /** @@ -146332,36 +146141,34 @@ function estimateDataURLDecodedBytes(url) { + const zlibOptions = { flush: external_zlib_.constants.Z_SYNC_FLUSH, - finishFlush: external_zlib_.constants.Z_SYNC_FLUSH + finishFlush: external_zlib_.constants.Z_SYNC_FLUSH, }; const brotliOptions = { flush: external_zlib_.constants.BROTLI_OPERATION_FLUSH, - finishFlush: external_zlib_.constants.BROTLI_OPERATION_FLUSH -} + finishFlush: external_zlib_.constants.BROTLI_OPERATION_FLUSH, +}; const isBrotliSupported = utils.isFunction(external_zlib_.createBrotliDecompress); -const {http: httpFollow, https: httpsFollow} = follow_redirects; +const { http: httpFollow, https: httpsFollow } = follow_redirects; const isHttps = /https:?/; -const supportedProtocols = platform.protocols.map(protocol => { +const supportedProtocols = platform.protocols.map((protocol) => { return protocol + ':'; }); - const flushOnFinish = (stream, [throttled, flush]) => { - stream - .on('end', flush) - .on('error', flush); + stream.on('end', flush).on('error', flush); return throttled; -} +}; class Http2Sessions { constructor() { @@ -146369,9 +146176,12 @@ class Http2Sessions { } getSession(authority, options) { - options = Object.assign({ - sessionTimeout: 1000 - }, options); + options = Object.assign( + { + sessionTimeout: 1000, + }, + options + ); let authoritySessions = this.sessions[authority]; @@ -146380,7 +146190,11 @@ class Http2Sessions { for (let i = 0; i < len; i++) { const [sessionHandle, sessionOptions] = authoritySessions[i]; - if (!sessionHandle.destroyed && !sessionHandle.closed && external_util_.isDeepStrictEqual(sessionOptions, options)) { + if ( + !sessionHandle.destroyed && + !sessionHandle.closed && + external_util_.isDeepStrictEqual(sessionOptions, options) + ) { return sessionHandle; } } @@ -146397,7 +146211,9 @@ class Http2Sessions { removed = true; - let entries = authoritySessions, len = entries.length, i = len; + let entries = authoritySessions, + len = entries.length, + i = len; while (i--) { if (entries[i][0] === session) { @@ -146406,6 +146222,9 @@ class Http2Sessions { } else { entries.splice(i, 1); } + if (!session.closed) { + session.close(); + } return; } } @@ -146413,10 +146232,9 @@ class Http2Sessions { const originalRequestFn = session.request; - const {sessionTimeout} = options; - - if(sessionTimeout != null) { + const { sessionTimeout } = options; + if (sessionTimeout != null) { let timer; let streamsCount = 0; @@ -146440,17 +146258,16 @@ class Http2Sessions { }); return stream; - } + }; } session.once('close', removeSession); - let entry = [ - session, - options - ]; + let entry = [session, options]; - authoritySessions ? authoritySessions.push(entry) : authoritySessions = this.sessions[authority] = [entry]; + authoritySessions + ? authoritySessions.push(entry) + : (authoritySessions = this.sessions[authority] = [entry]); return session; } @@ -146458,7 +146275,6 @@ class Http2Sessions { const http2Sessions = new Http2Sessions(); - /** * If the proxy or config beforeRedirects functions are defined, call them with the options * object. @@ -146488,9 +146304,11 @@ function dispatchBeforeRedirect(options, responseDetails) { function setProxy(options, configProxy, location) { let proxy = configProxy; if (!proxy && proxy !== false) { - const proxyUrl = proxy_from_env.getProxyForUrl(location); + const proxyUrl = getProxyForUrl(location); if (proxyUrl) { - proxy = new URL(proxyUrl); + if (!shouldBypassProxy(location)) { + proxy = new URL(proxyUrl); + } } } if (proxy) { @@ -146533,7 +146351,8 @@ function setProxy(options, configProxy, location) { }; } -const isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process'; +const isHttpAdapterSupported = + typeof process !== 'undefined' && utils.kindOf(process) === 'process'; // temporary hotfix @@ -146546,7 +146365,7 @@ const wrapAsync = (asyncExecutor) => { if (isDone) return; isDone = true; onDone && onDone(value, isRejected); - } + }; const _resolve = (value) => { done(value); @@ -146556,725 +146375,764 @@ const wrapAsync = (asyncExecutor) => { const _reject = (reason) => { done(reason, true); reject(reason); - } + }; asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); - }) + }); }; -const resolveFamily = ({address, family}) => { +const resolveFamily = ({ address, family }) => { if (!utils.isString(address)) { throw TypeError('address must be a string'); } - return ({ + return { address, - family: family || (address.indexOf('.') < 0 ? 6 : 4) - }); -} + family: family || (address.indexOf('.') < 0 ? 6 : 4), + }; +}; -const buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family}); +const buildAddressEntry = (address, family) => + resolveFamily(utils.isObject(address) ? address : { address, family }); const http2Transport = { request(options, cb) { - const authority = options.protocol + '//' + options.hostname + ':' + (options.port ||(options.protocol === 'https:' ? 443 : 80)); - + const authority = + options.protocol + + '//' + + options.hostname + + ':' + + (options.port || (options.protocol === 'https:' ? 443 : 80)); - const {http2Options, headers} = options; + const { http2Options, headers } = options; - const session = http2Sessions.getSession(authority, http2Options); + const session = http2Sessions.getSession(authority, http2Options); - const { - HTTP2_HEADER_SCHEME, - HTTP2_HEADER_METHOD, - HTTP2_HEADER_PATH, - HTTP2_HEADER_STATUS - } = external_http2_.constants; + const { HTTP2_HEADER_SCHEME, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_STATUS } = + external_http2_.constants; - const http2Headers = { - [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''), - [HTTP2_HEADER_METHOD]: options.method, - [HTTP2_HEADER_PATH]: options.path, - } + const http2Headers = { + [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''), + [HTTP2_HEADER_METHOD]: options.method, + [HTTP2_HEADER_PATH]: options.path, + }; - utils.forEach(headers, (header, name) => { - name.charAt(0) !== ':' && (http2Headers[name] = header); - }); + utils.forEach(headers, (header, name) => { + name.charAt(0) !== ':' && (http2Headers[name] = header); + }); - const req = session.request(http2Headers); + const req = session.request(http2Headers); - req.once('response', (responseHeaders) => { - const response = req; //duplex + req.once('response', (responseHeaders) => { + const response = req; //duplex - responseHeaders = Object.assign({}, responseHeaders); + responseHeaders = Object.assign({}, responseHeaders); - const status = responseHeaders[HTTP2_HEADER_STATUS]; + const status = responseHeaders[HTTP2_HEADER_STATUS]; - delete responseHeaders[HTTP2_HEADER_STATUS]; + delete responseHeaders[HTTP2_HEADER_STATUS]; - response.headers = responseHeaders; + response.headers = responseHeaders; - response.statusCode = +status; + response.statusCode = +status; - cb(response); - }) + cb(response); + }); - return req; - } -} + return req; + }, +}; /*eslint consistent-return:0*/ -/* harmony default export */ const http = (isHttpAdapterSupported && function httpAdapter(config) { - return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { - let {data, lookup, family, httpVersion = 1, http2Options} = config; - const {responseType, responseEncoding} = config; - const method = config.method.toUpperCase(); - let isDone; - let rejected = false; - let req; +/* harmony default export */ const http = (isHttpAdapterSupported && + function httpAdapter(config) { + return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { + let { data, lookup, family, httpVersion = 1, http2Options } = config; + const { responseType, responseEncoding } = config; + const method = config.method.toUpperCase(); + let isDone; + let rejected = false; + let req; - httpVersion = +httpVersion; + httpVersion = +httpVersion; - if (Number.isNaN(httpVersion)) { - throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`); - } + if (Number.isNaN(httpVersion)) { + throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`); + } - if (httpVersion !== 1 && httpVersion !== 2) { - throw TypeError(`Unsupported protocol version '${httpVersion}'`); - } + if (httpVersion !== 1 && httpVersion !== 2) { + throw TypeError(`Unsupported protocol version '${httpVersion}'`); + } - const isHttp2 = httpVersion === 2; + const isHttp2 = httpVersion === 2; - if (lookup) { - const _lookup = helpers_callbackify(lookup, (value) => utils.isArray(value) ? value : [value]); - // hotfix to support opt.all option which is required for node 20.x - lookup = (hostname, opt, cb) => { - _lookup(hostname, opt, (err, arg0, arg1) => { - if (err) { - return cb(err); - } + if (lookup) { + const _lookup = helpers_callbackify(lookup, (value) => (utils.isArray(value) ? value : [value])); + // hotfix to support opt.all option which is required for node 20.x + lookup = (hostname, opt, cb) => { + _lookup(hostname, opt, (err, arg0, arg1) => { + if (err) { + return cb(err); + } - const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; + const addresses = utils.isArray(arg0) + ? arg0.map((addr) => buildAddressEntry(addr)) + : [buildAddressEntry(arg0, arg1)]; - opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); - }); + opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); + }); + }; } - } - const abortEmitter = new external_events_.EventEmitter(); + const abortEmitter = new external_events_.EventEmitter(); - function abort(reason) { - try { - abortEmitter.emit('abort', !reason || reason.type ? new cancel_CanceledError(null, config, req) : reason); - } catch(err) { - console.warn('emit error', err); + function abort(reason) { + try { + abortEmitter.emit( + 'abort', + !reason || reason.type ? new cancel_CanceledError(null, config, req) : reason + ); + } catch (err) { + console.warn('emit error', err); + } } - } - abortEmitter.once('abort', reject); + abortEmitter.once('abort', reject); - const onFinished = () => { - if (config.cancelToken) { - config.cancelToken.unsubscribe(abort); - } + const onFinished = () => { + if (config.cancelToken) { + config.cancelToken.unsubscribe(abort); + } - if (config.signal) { - config.signal.removeEventListener('abort', abort); - } + if (config.signal) { + config.signal.removeEventListener('abort', abort); + } - abortEmitter.removeAllListeners(); - } + abortEmitter.removeAllListeners(); + }; - if (config.cancelToken || config.signal) { - config.cancelToken && config.cancelToken.subscribe(abort); - if (config.signal) { - config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); + if (config.cancelToken || config.signal) { + config.cancelToken && config.cancelToken.subscribe(abort); + if (config.signal) { + config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); + } } - } - onDone((response, isRejected) => { - isDone = true; + onDone((response, isRejected) => { + isDone = true; - if (isRejected) { - rejected = true; - onFinished(); - return; - } + if (isRejected) { + rejected = true; + onFinished(); + return; + } - const {data} = response; + const { data } = response; - if (data instanceof external_stream_.Readable || data instanceof external_stream_.Duplex) { - const offListeners = external_stream_.finished(data, () => { - offListeners(); + if (data instanceof external_stream_.Readable || data instanceof external_stream_.Duplex) { + const offListeners = external_stream_.finished(data, () => { + offListeners(); + onFinished(); + }); + } else { onFinished(); - }); - } else { - onFinished(); - } - }); - + } + }); + // Parse url + const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); + const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined); + const protocol = parsed.protocol || supportedProtocols[0]; + + if (protocol === 'data:') { + // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set. + if (config.maxContentLength > -1) { + // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed. + const dataUrl = String(config.url || fullPath || ''); + const estimated = estimateDataURLDecodedBytes(dataUrl); + + if (estimated > config.maxContentLength) { + return reject( + new core_AxiosError( + 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + core_AxiosError.ERR_BAD_RESPONSE, + config + ) + ); + } + } + let convertedData; + if (method !== 'GET') { + return settle(resolve, reject, { + status: 405, + statusText: 'method not allowed', + headers: {}, + config, + }); + } - // Parse url - const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); - const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined); - const protocol = parsed.protocol || supportedProtocols[0]; + try { + convertedData = fromDataURI(config.url, responseType === 'blob', { + Blob: config.env && config.env.Blob, + }); + } catch (err) { + throw core_AxiosError.from(err, core_AxiosError.ERR_BAD_REQUEST, config); + } - if (protocol === 'data:') { - // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set. - if (config.maxContentLength > -1) { - // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed. - const dataUrl = String(config.url || fullPath || ''); - const estimated = estimateDataURLDecodedBytes(dataUrl); + if (responseType === 'text') { + convertedData = convertedData.toString(responseEncoding); - if (estimated > config.maxContentLength) { - return reject(new core_AxiosError( - 'maxContentLength size of ' + config.maxContentLength + ' exceeded', - core_AxiosError.ERR_BAD_RESPONSE, - config - )); + if (!responseEncoding || responseEncoding === 'utf8') { + convertedData = utils.stripBOM(convertedData); + } + } else if (responseType === 'stream') { + convertedData = external_stream_.Readable.from(convertedData); } - } - - let convertedData; - if (method !== 'GET') { return settle(resolve, reject, { - status: 405, - statusText: 'method not allowed', - headers: {}, - config - }); - } - - try { - convertedData = fromDataURI(config.url, responseType === 'blob', { - Blob: config.env && config.env.Blob + data: convertedData, + status: 200, + statusText: 'OK', + headers: new core_AxiosHeaders(), + config, }); - } catch (err) { - throw core_AxiosError.from(err, core_AxiosError.ERR_BAD_REQUEST, config); } - if (responseType === 'text') { - convertedData = convertedData.toString(responseEncoding); - - if (!responseEncoding || responseEncoding === 'utf8') { - convertedData = utils.stripBOM(convertedData); - } - } else if (responseType === 'stream') { - convertedData = external_stream_.Readable.from(convertedData); + if (supportedProtocols.indexOf(protocol) === -1) { + return reject( + new core_AxiosError('Unsupported protocol ' + protocol, core_AxiosError.ERR_BAD_REQUEST, config) + ); } - return settle(resolve, reject, { - data: convertedData, - status: 200, - statusText: 'OK', - headers: new core_AxiosHeaders(), - config - }); - } + const headers = core_AxiosHeaders.from(config.headers).normalize(); - if (supportedProtocols.indexOf(protocol) === -1) { - return reject(new core_AxiosError( - 'Unsupported protocol ' + protocol, - core_AxiosError.ERR_BAD_REQUEST, - config - )); - } + // Set User-Agent (required by some servers) + // See https://github.com/axios/axios/issues/69 + // User-Agent is specified; handle case where no UA header is desired + // Only set header if it hasn't been set in config + headers.set('User-Agent', 'axios/' + VERSION, false); - const headers = core_AxiosHeaders.from(config.headers).normalize(); + const { onUploadProgress, onDownloadProgress } = config; + const maxRate = config.maxRate; + let maxUploadRate = undefined; + let maxDownloadRate = undefined; - // Set User-Agent (required by some servers) - // See https://github.com/axios/axios/issues/69 - // User-Agent is specified; handle case where no UA header is desired - // Only set header if it hasn't been set in config - headers.set('User-Agent', 'axios/' + VERSION, false); + // support for spec compliant FormData objects + if (utils.isSpecCompliantForm(data)) { + const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); - const {onUploadProgress, onDownloadProgress} = config; - const maxRate = config.maxRate; - let maxUploadRate = undefined; - let maxDownloadRate = undefined; + data = helpers_formDataToStream( + data, + (formHeaders) => { + headers.set(formHeaders); + }, + { + tag: `axios-${VERSION}-boundary`, + boundary: (userBoundary && userBoundary[1]) || undefined, + } + ); + // support for https://www.npmjs.com/package/form-data api + } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) { + headers.set(data.getHeaders()); - // support for spec compliant FormData objects - if (utils.isSpecCompliantForm(data)) { - const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); + if (!headers.hasContentLength()) { + try { + const knownLength = await external_util_.promisify(data.getLength).call(data); + Number.isFinite(knownLength) && + knownLength >= 0 && + headers.setContentLength(knownLength); + /*eslint no-empty:0*/ + } catch (e) {} + } + } else if (utils.isBlob(data) || utils.isFile(data)) { + data.size && headers.setContentType(data.type || 'application/octet-stream'); + headers.setContentLength(data.size || 0); + data = external_stream_.Readable.from(helpers_readBlob(data)); + } else if (data && !utils.isStream(data)) { + if (Buffer.isBuffer(data)) { + // Nothing to do... + } else if (utils.isArrayBuffer(data)) { + data = Buffer.from(new Uint8Array(data)); + } else if (utils.isString(data)) { + data = Buffer.from(data, 'utf-8'); + } else { + return reject( + new core_AxiosError( + 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', + core_AxiosError.ERR_BAD_REQUEST, + config + ) + ); + } - data = helpers_formDataToStream(data, (formHeaders) => { - headers.set(formHeaders); - }, { - tag: `axios-${VERSION}-boundary`, - boundary: userBoundary && userBoundary[1] || undefined - }); - // support for https://www.npmjs.com/package/form-data api - } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) { - headers.set(data.getHeaders()); + // Add Content-Length header if data exists + headers.setContentLength(data.length, false); - if (!headers.hasContentLength()) { - try { - const knownLength = await external_util_.promisify(data.getLength).call(data); - Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); - /*eslint no-empty:0*/ - } catch (e) { + if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { + return reject( + new core_AxiosError( + 'Request body larger than maxBodyLength limit', + core_AxiosError.ERR_BAD_REQUEST, + config + ) + ); } } - } else if (utils.isBlob(data) || utils.isFile(data)) { - data.size && headers.setContentType(data.type || 'application/octet-stream'); - headers.setContentLength(data.size || 0); - data = external_stream_.Readable.from(helpers_readBlob(data)); - } else if (data && !utils.isStream(data)) { - if (Buffer.isBuffer(data)) { - // Nothing to do... - } else if (utils.isArrayBuffer(data)) { - data = Buffer.from(new Uint8Array(data)); - } else if (utils.isString(data)) { - data = Buffer.from(data, 'utf-8'); - } else { - return reject(new core_AxiosError( - 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', - core_AxiosError.ERR_BAD_REQUEST, - config - )); - } - // Add Content-Length header if data exists - headers.setContentLength(data.length, false); + const contentLength = utils.toFiniteNumber(headers.getContentLength()); - if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { - return reject(new core_AxiosError( - 'Request body larger than maxBodyLength limit', - core_AxiosError.ERR_BAD_REQUEST, - config - )); + if (utils.isArray(maxRate)) { + maxUploadRate = maxRate[0]; + maxDownloadRate = maxRate[1]; + } else { + maxUploadRate = maxDownloadRate = maxRate; } - } - const contentLength = utils.toFiniteNumber(headers.getContentLength()); + if (data && (onUploadProgress || maxUploadRate)) { + if (!utils.isStream(data)) { + data = external_stream_.Readable.from(data, { objectMode: false }); + } - if (utils.isArray(maxRate)) { - maxUploadRate = maxRate[0]; - maxDownloadRate = maxRate[1]; - } else { - maxUploadRate = maxDownloadRate = maxRate; - } + data = external_stream_.pipeline( + [ + data, + new helpers_AxiosTransformStream({ + maxRate: utils.toFiniteNumber(maxUploadRate), + }), + ], + utils.noop + ); - if (data && (onUploadProgress || maxUploadRate)) { - if (!utils.isStream(data)) { - data = external_stream_.Readable.from(data, {objectMode: false}); + onUploadProgress && + data.on( + 'progress', + flushOnFinish( + data, + progressEventDecorator( + contentLength, + progressEventReducer(asyncDecorator(onUploadProgress), false, 3) + ) + ) + ); } - data = external_stream_.pipeline([data, new helpers_AxiosTransformStream({ - maxRate: utils.toFiniteNumber(maxUploadRate) - })], utils.noop); - - onUploadProgress && data.on('progress', flushOnFinish( - data, - progressEventDecorator( - contentLength, - progressEventReducer(asyncDecorator(onUploadProgress), false, 3) - ) - )); - } - - // HTTP basic authentication - let auth = undefined; - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password || ''; - auth = username + ':' + password; - } + // HTTP basic authentication + let auth = undefined; + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password || ''; + auth = username + ':' + password; + } - if (!auth && parsed.username) { - const urlUsername = parsed.username; - const urlPassword = parsed.password; - auth = urlUsername + ':' + urlPassword; - } + if (!auth && parsed.username) { + const urlUsername = parsed.username; + const urlPassword = parsed.password; + auth = urlUsername + ':' + urlPassword; + } - auth && headers.delete('authorization'); + auth && headers.delete('authorization'); - let path; + let path; - try { - path = buildURL( - parsed.pathname + parsed.search, - config.params, - config.paramsSerializer - ).replace(/^\?/, ''); - } catch (err) { - const customErr = new Error(err.message); - customErr.config = config; - customErr.url = config.url; - customErr.exists = true; - return reject(customErr); - } + try { + path = buildURL( + parsed.pathname + parsed.search, + config.params, + config.paramsSerializer + ).replace(/^\?/, ''); + } catch (err) { + const customErr = new Error(err.message); + customErr.config = config; + customErr.url = config.url; + customErr.exists = true; + return reject(customErr); + } - headers.set( - 'Accept-Encoding', - 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false + headers.set( + 'Accept-Encoding', + 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), + false ); - const options = { - path, - method: method, - headers: headers.toJSON(), - agents: { http: config.httpAgent, https: config.httpsAgent }, - auth, - protocol, - family, - beforeRedirect: dispatchBeforeRedirect, - beforeRedirects: {}, - http2Options - }; - - // cacheable-lookup integration hotfix - !utils.isUndefined(lookup) && (options.lookup = lookup); + const options = { + path, + method: method, + headers: headers.toJSON(), + agents: { http: config.httpAgent, https: config.httpsAgent }, + auth, + protocol, + family, + beforeRedirect: dispatchBeforeRedirect, + beforeRedirects: {}, + http2Options, + }; - if (config.socketPath) { - options.socketPath = config.socketPath; - } else { - options.hostname = parsed.hostname.startsWith("[") ? parsed.hostname.slice(1, -1) : parsed.hostname; - options.port = parsed.port; - setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); - } + // cacheable-lookup integration hotfix + !utils.isUndefined(lookup) && (options.lookup = lookup); - let transport; - const isHttpsRequest = isHttps.test(options.protocol); - options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; + if (config.socketPath) { + options.socketPath = config.socketPath; + } else { + options.hostname = parsed.hostname.startsWith('[') + ? parsed.hostname.slice(1, -1) + : parsed.hostname; + options.port = parsed.port; + setProxy( + options, + config.proxy, + protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path + ); + } + let transport; + const isHttpsRequest = isHttps.test(options.protocol); + options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; - if (isHttp2) { - transport = http2Transport; - } else { - if (config.transport) { - transport = config.transport; - } else if (config.maxRedirects === 0) { - transport = isHttpsRequest ? external_https_ : external_http_; + if (isHttp2) { + transport = http2Transport; } else { - if (config.maxRedirects) { - options.maxRedirects = config.maxRedirects; - } - if (config.beforeRedirect) { - options.beforeRedirects.config = config.beforeRedirect; + if (config.transport) { + transport = config.transport; + } else if (config.maxRedirects === 0) { + transport = isHttpsRequest ? external_https_ : external_http_; + } else { + if (config.maxRedirects) { + options.maxRedirects = config.maxRedirects; + } + if (config.beforeRedirect) { + options.beforeRedirects.config = config.beforeRedirect; + } + transport = isHttpsRequest ? httpsFollow : httpFollow; } - transport = isHttpsRequest ? httpsFollow : httpFollow; } - } - - if (config.maxBodyLength > -1) { - options.maxBodyLength = config.maxBodyLength; - } else { - // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited - options.maxBodyLength = Infinity; - } - if (config.insecureHTTPParser) { - options.insecureHTTPParser = config.insecureHTTPParser; - } - - // Create the request - req = transport.request(options, function handleResponse(res) { - if (req.destroyed) return; - - const streams = [res]; + if (config.maxBodyLength > -1) { + options.maxBodyLength = config.maxBodyLength; + } else { + // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited + options.maxBodyLength = Infinity; + } - const responseLength = utils.toFiniteNumber(res.headers['content-length']); + if (config.insecureHTTPParser) { + options.insecureHTTPParser = config.insecureHTTPParser; + } - if (onDownloadProgress || maxDownloadRate) { - const transformStream = new helpers_AxiosTransformStream({ - maxRate: utils.toFiniteNumber(maxDownloadRate) - }); + // Create the request + req = transport.request(options, function handleResponse(res) { + if (req.destroyed) return; - onDownloadProgress && transformStream.on('progress', flushOnFinish( - transformStream, - progressEventDecorator( - responseLength, - progressEventReducer(asyncDecorator(onDownloadProgress), true, 3) - ) - )); + const streams = [res]; - streams.push(transformStream); - } + const responseLength = utils.toFiniteNumber(res.headers['content-length']); - // decompress the response body transparently if required - let responseStream = res; + if (onDownloadProgress || maxDownloadRate) { + const transformStream = new helpers_AxiosTransformStream({ + maxRate: utils.toFiniteNumber(maxDownloadRate), + }); - // return the last request in case of redirects - const lastRequest = res.req || req; + onDownloadProgress && + transformStream.on( + 'progress', + flushOnFinish( + transformStream, + progressEventDecorator( + responseLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true, 3) + ) + ) + ); - // if decompress disabled we should not decompress - if (config.decompress !== false && res.headers['content-encoding']) { - // if no content, but headers still say that it is encoded, - // remove the header not confuse downstream operations - if (method === 'HEAD' || res.statusCode === 204) { - delete res.headers['content-encoding']; + streams.push(transformStream); } - switch ((res.headers['content-encoding'] || '').toLowerCase()) { - /*eslint default-case:0*/ - case 'gzip': - case 'x-gzip': - case 'compress': - case 'x-compress': - // add the unzipper to the body stream processing pipeline - streams.push(external_zlib_.createUnzip(zlibOptions)); - - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'deflate': - streams.push(new helpers_ZlibHeaderTransformStream()); + // decompress the response body transparently if required + let responseStream = res; - // add the unzipper to the body stream processing pipeline - streams.push(external_zlib_.createUnzip(zlibOptions)); + // return the last request in case of redirects + const lastRequest = res.req || req; - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'br': - if (isBrotliSupported) { - streams.push(external_zlib_.createBrotliDecompress(brotliOptions)); + // if decompress disabled we should not decompress + if (config.decompress !== false && res.headers['content-encoding']) { + // if no content, but headers still say that it is encoded, + // remove the header not confuse downstream operations + if (method === 'HEAD' || res.statusCode === 204) { delete res.headers['content-encoding']; } - } - } - - responseStream = streams.length > 1 ? external_stream_.pipeline(streams, utils.noop) : streams[0]; + switch ((res.headers['content-encoding'] || '').toLowerCase()) { + /*eslint default-case:0*/ + case 'gzip': + case 'x-gzip': + case 'compress': + case 'x-compress': + // add the unzipper to the body stream processing pipeline + streams.push(external_zlib_.createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'deflate': + streams.push(new helpers_ZlibHeaderTransformStream()); + // add the unzipper to the body stream processing pipeline + streams.push(external_zlib_.createUnzip(zlibOptions)); - const response = { - status: res.statusCode, - statusText: res.statusMessage, - headers: new core_AxiosHeaders(res.headers), - config, - request: lastRequest - }; + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'br': + if (isBrotliSupported) { + streams.push(external_zlib_.createBrotliDecompress(brotliOptions)); + delete res.headers['content-encoding']; + } + } + } - if (responseType === 'stream') { - response.data = responseStream; - settle(resolve, reject, response); - } else { - const responseBuffer = []; - let totalResponseBytes = 0; + responseStream = streams.length > 1 ? external_stream_.pipeline(streams, utils.noop) : streams[0]; - responseStream.on('data', function handleStreamData(chunk) { - responseBuffer.push(chunk); - totalResponseBytes += chunk.length; + const response = { + status: res.statusCode, + statusText: res.statusMessage, + headers: new core_AxiosHeaders(res.headers), + config, + request: lastRequest, + }; - // make sure the content length is not over the maxContentLength if specified - if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { - // stream.destroy() emit aborted event before calling reject() on Node.js v16 - rejected = true; - responseStream.destroy(); - abort(new core_AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', - core_AxiosError.ERR_BAD_RESPONSE, config, lastRequest)); - } - }); + if (responseType === 'stream') { + response.data = responseStream; + settle(resolve, reject, response); + } else { + const responseBuffer = []; + let totalResponseBytes = 0; + + responseStream.on('data', function handleStreamData(chunk) { + responseBuffer.push(chunk); + totalResponseBytes += chunk.length; + + // make sure the content length is not over the maxContentLength if specified + if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { + // stream.destroy() emit aborted event before calling reject() on Node.js v16 + rejected = true; + responseStream.destroy(); + abort( + new core_AxiosError( + 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + core_AxiosError.ERR_BAD_RESPONSE, + config, + lastRequest + ) + ); + } + }); - responseStream.on('aborted', function handlerStreamAborted() { - if (rejected) { - return; - } + responseStream.on('aborted', function handlerStreamAborted() { + if (rejected) { + return; + } - const err = new core_AxiosError( - 'stream has been aborted', - core_AxiosError.ERR_BAD_RESPONSE, - config, - lastRequest - ); - responseStream.destroy(err); - reject(err); - }); + const err = new core_AxiosError( + 'stream has been aborted', + core_AxiosError.ERR_BAD_RESPONSE, + config, + lastRequest + ); + responseStream.destroy(err); + reject(err); + }); - responseStream.on('error', function handleStreamError(err) { - if (req.destroyed) return; - reject(core_AxiosError.from(err, null, config, lastRequest)); - }); + responseStream.on('error', function handleStreamError(err) { + if (req.destroyed) return; + reject(core_AxiosError.from(err, null, config, lastRequest)); + }); - responseStream.on('end', function handleStreamEnd() { - try { - let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); - if (responseType !== 'arraybuffer') { - responseData = responseData.toString(responseEncoding); - if (!responseEncoding || responseEncoding === 'utf8') { - responseData = utils.stripBOM(responseData); + responseStream.on('end', function handleStreamEnd() { + try { + let responseData = + responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); + if (responseType !== 'arraybuffer') { + responseData = responseData.toString(responseEncoding); + if (!responseEncoding || responseEncoding === 'utf8') { + responseData = utils.stripBOM(responseData); + } } + response.data = responseData; + } catch (err) { + return reject(core_AxiosError.from(err, null, config, response.request, response)); } - response.data = responseData; - } catch (err) { - return reject(core_AxiosError.from(err, null, config, response.request, response)); + settle(resolve, reject, response); + }); + } + + abortEmitter.once('abort', (err) => { + if (!responseStream.destroyed) { + responseStream.emit('error', err); + responseStream.destroy(); } - settle(resolve, reject, response); }); - } + }); - abortEmitter.once('abort', err => { - if (!responseStream.destroyed) { - responseStream.emit('error', err); - responseStream.destroy(); + abortEmitter.once('abort', (err) => { + if (req.close) { + req.close(); + } else { + req.destroy(err); } }); - }); - - abortEmitter.once('abort', err => { - if (req.close) { - req.close(); - } else { - req.destroy(err); - } - }); - // Handle errors - req.on('error', function handleRequestError(err) { - reject(core_AxiosError.from(err, null, config, req)); - }); - - // set tcp keep alive to prevent drop connection by peer - req.on('socket', function handleRequestSocket(socket) { - // default interval of sending ack packet is 1 minute - socket.setKeepAlive(true, 1000 * 60); - }); - - // Handle request timeout - if (config.timeout) { - // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. - const timeout = parseInt(config.timeout, 10); + // Handle errors + req.on('error', function handleRequestError(err) { + reject(core_AxiosError.from(err, null, config, req)); + }); - if (Number.isNaN(timeout)) { - abort(new core_AxiosError( - 'error trying to parse `config.timeout` to int', - core_AxiosError.ERR_BAD_OPTION_VALUE, - config, - req - )); + // set tcp keep alive to prevent drop connection by peer + req.on('socket', function handleRequestSocket(socket) { + // default interval of sending ack packet is 1 minute + socket.setKeepAlive(true, 1000 * 60); + }); - return; - } + // Handle request timeout + if (config.timeout) { + // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. + const timeout = parseInt(config.timeout, 10); + + if (Number.isNaN(timeout)) { + abort( + new core_AxiosError( + 'error trying to parse `config.timeout` to int', + core_AxiosError.ERR_BAD_OPTION_VALUE, + config, + req + ) + ); - // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. - // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. - // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. - // And then these socket which be hang up will devouring CPU little by little. - // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. - req.setTimeout(timeout, function handleRequestTimeout() { - if (isDone) return; - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || defaults_transitional; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; + return; } - abort(new core_AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? core_AxiosError.ETIMEDOUT : core_AxiosError.ECONNABORTED, - config, - req - )); - }); - } else { - // explicitly reset the socket timeout value for a possible `keep-alive` request - req.setTimeout(0); - } + // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. + // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. + // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. + // And then these socket which be hang up will devouring CPU little by little. + // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. + req.setTimeout(timeout, function handleRequestTimeout() { + if (isDone) return; + let timeoutErrorMessage = config.timeout + ? 'timeout of ' + config.timeout + 'ms exceeded' + : 'timeout exceeded'; + const transitional = config.transitional || defaults_transitional; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + abort( + new core_AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? core_AxiosError.ETIMEDOUT : core_AxiosError.ECONNABORTED, + config, + req + ) + ); + }); + } else { + // explicitly reset the socket timeout value for a possible `keep-alive` request + req.setTimeout(0); + } - // Send the request - if (utils.isStream(data)) { - let ended = false; - let errored = false; + // Send the request + if (utils.isStream(data)) { + let ended = false; + let errored = false; - data.on('end', () => { - ended = true; - }); + data.on('end', () => { + ended = true; + }); - data.once('error', err => { - errored = true; - req.destroy(err); - }); + data.once('error', (err) => { + errored = true; + req.destroy(err); + }); - data.on('close', () => { - if (!ended && !errored) { - abort(new cancel_CanceledError('Request stream has been aborted', config, req)); - } - }); + data.on('close', () => { + if (!ended && !errored) { + abort(new cancel_CanceledError('Request stream has been aborted', config, req)); + } + }); - data.pipe(req); - } else { - data && req.write(data); - req.end(); - } + data.pipe(req); + } else { + data && req.write(data); + req.end(); + } + }); }); -}); const __setProxy = (/* unused pure expression or super */ null && (setProxy)); ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/isURLSameOrigin.js -/* harmony default export */ const isURLSameOrigin = (platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => { - url = new URL(url, platform.origin); +/* harmony default export */ const isURLSameOrigin = (platform.hasStandardBrowserEnv + ? ((origin, isMSIE) => (url) => { + url = new URL(url, platform.origin); - return ( - origin.protocol === url.protocol && - origin.host === url.host && - (isMSIE || origin.port === url.port) - ); -})( - new URL(platform.origin), - platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) -) : () => true); + return ( + origin.protocol === url.protocol && + origin.host === url.host && + (isMSIE || origin.port === url.port) + ); + })( + new URL(platform.origin), + platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) + ) + : () => true); ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/cookies.js -/* harmony default export */ const cookies = (platform.hasStandardBrowserEnv ? - - // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure, sameSite) { - if (typeof document === 'undefined') return; +/* harmony default export */ const cookies = (platform.hasStandardBrowserEnv + ? // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure, sameSite) { + if (typeof document === 'undefined') return; - const cookie = [`${name}=${encodeURIComponent(value)}`]; + const cookie = [`${name}=${encodeURIComponent(value)}`]; - if (utils.isNumber(expires)) { - cookie.push(`expires=${new Date(expires).toUTCString()}`); - } - if (utils.isString(path)) { - cookie.push(`path=${path}`); - } - if (utils.isString(domain)) { - cookie.push(`domain=${domain}`); - } - if (secure === true) { - cookie.push('secure'); - } - if (utils.isString(sameSite)) { - cookie.push(`SameSite=${sameSite}`); - } + if (utils.isNumber(expires)) { + cookie.push(`expires=${new Date(expires).toUTCString()}`); + } + if (utils.isString(path)) { + cookie.push(`path=${path}`); + } + if (utils.isString(domain)) { + cookie.push(`domain=${domain}`); + } + if (secure === true) { + cookie.push('secure'); + } + if (utils.isString(sameSite)) { + cookie.push(`SameSite=${sameSite}`); + } - document.cookie = cookie.join('; '); - }, + document.cookie = cookie.join('; '); + }, - read(name) { - if (typeof document === 'undefined') return null; - const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); - return match ? decodeURIComponent(match[1]) : null; - }, + read(name) { + if (typeof document === 'undefined') return null; + const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); + return match ? decodeURIComponent(match[1]) : null; + }, - remove(name) { - this.write(name, '', Date.now() - 86400000, '/'); + remove(name) { + this.write(name, '', Date.now() - 86400000, '/'); + }, } - } - - : - - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() {}, - read() { - return null; - }, - remove() {} - }); - + : // Non-standard browser env (web workers, react-native) lack needed support. + { + write() {}, + read() { + return null; + }, + remove() {}, + }); ;// CONCATENATED MODULE: ./node_modules/axios/lib/core/mergeConfig.js @@ -147282,8 +147140,7 @@ const __setProxy = (/* unused pure expression or super */ null && (setProxy)); -const headersToObject = (thing) => - thing instanceof core_AxiosHeaders ? { ...thing } : thing; +const headersToObject = (thing) => (thing instanceof core_AxiosHeaders ? { ...thing } : thing); /** * Config-specific merge-function which creates a new config-object @@ -147376,23 +147233,12 @@ function mergeConfig(config1, config2) { mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true), }; - utils.forEach( - Object.keys({ ...config1, ...config2 }), - function computeConfigValue(prop) { - if ( - prop === "__proto__" || - prop === "constructor" || - prop === "prototype" - ) - return; - const merge = utils.hasOwnProp(mergeMap, prop) - ? mergeMap[prop] - : mergeDeepProperties; - const configValue = merge(config1[prop], config2[prop], prop); - (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || - (config[prop] = configValue); - }, - ); + utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { + if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; + const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); return config; } @@ -147414,12 +147260,22 @@ function mergeConfig(config1, config2) { newConfig.headers = headers = core_AxiosHeaders.from(headers); - newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer); + newConfig.url = buildURL( + buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), + config.params, + config.paramsSerializer + ); // HTTP basic authentication if (auth) { - headers.set('Authorization', 'Basic ' + - btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : '')) + headers.set( + 'Authorization', + 'Basic ' + + btoa( + (auth.username || '') + + ':' + + (auth.password ? unescape(encodeURIComponent(auth.password)) : '') + ) ); } @@ -147437,7 +147293,7 @@ function mergeConfig(config1, config2) { } }); } - } + } // Add xsrf header // This is only done if running in a standard browser environment. @@ -147459,7 +147315,6 @@ function mergeConfig(config1, config2) { return newConfig; }); - ;// CONCATENATED MODULE: ./node_modules/axios/lib/adapters/xhr.js @@ -147474,193 +147329,215 @@ function mergeConfig(config1, config2) { const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; -/* harmony default export */ const xhr = (isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - const _config = resolveConfig(config); - let requestData = _config.data; - const requestHeaders = core_AxiosHeaders.from(_config.headers).normalize(); - let {responseType, onUploadProgress, onDownloadProgress} = _config; - let onCanceled; - let uploadThrottled, downloadThrottled; - let flushUpload, flushDownload; +/* harmony default export */ const xhr = (isXHRAdapterSupported && + function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + const _config = resolveConfig(config); + let requestData = _config.data; + const requestHeaders = core_AxiosHeaders.from(_config.headers).normalize(); + let { responseType, onUploadProgress, onDownloadProgress } = _config; + let onCanceled; + let uploadThrottled, downloadThrottled; + let flushUpload, flushDownload; - function done() { - flushUpload && flushUpload(); // flush events - flushDownload && flushDownload(); // flush events + function done() { + flushUpload && flushUpload(); // flush events + flushDownload && flushDownload(); // flush events - _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); + _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); - _config.signal && _config.signal.removeEventListener('abort', onCanceled); - } + _config.signal && _config.signal.removeEventListener('abort', onCanceled); + } - let request = new XMLHttpRequest(); + let request = new XMLHttpRequest(); - request.open(_config.method.toUpperCase(), _config.url, true); + request.open(_config.method.toUpperCase(), _config.url, true); - // Set the request timeout in MS - request.timeout = _config.timeout; + // Set the request timeout in MS + request.timeout = _config.timeout; - function onloadend() { - if (!request) { - return; + function onloadend() { + if (!request) { + return; + } + // Prepare the response + const responseHeaders = core_AxiosHeaders.from( + 'getAllResponseHeaders' in request && request.getAllResponseHeaders() + ); + const responseData = + !responseType || responseType === 'text' || responseType === 'json' + ? request.responseText + : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config, + request, + }; + + settle( + function _resolve(value) { + resolve(value); + done(); + }, + function _reject(err) { + reject(err); + done(); + }, + response + ); + + // Clean up request + request = null; } - // Prepare the response - const responseHeaders = core_AxiosHeaders.from( - 'getAllResponseHeaders' in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === 'text' || responseType === 'json' ? - request.responseText : request.response; - const response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config, - request - }; - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } - // Clean up request - request = null; - } + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if ( + request.status === 0 && + !(request.responseURL && request.responseURL.indexOf('file:') === 0) + ) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } - if ('onloadend' in request) { - // Use onloadend if available - request.onloadend = onloadend; - } else { - // Listen for ready state to emulate onloadend - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { return; } - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - // readystate handler is calling before onerror or ontimeout handlers, - // so we should call onloadend on the next 'tick' - setTimeout(onloadend); - }; - } + reject(new core_AxiosError('Request aborted', core_AxiosError.ECONNABORTED, config, request)); - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } + // Clean up request + request = null; + }; - reject(new core_AxiosError('Request aborted', core_AxiosError.ECONNABORTED, config, request)); + // Handle low level network errors + request.onerror = function handleError(event) { + // Browsers deliver a ProgressEvent in XHR onerror + // (message may be empty; when present, surface it) + // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event + const msg = event && event.message ? event.message : 'Network Error'; + const err = new core_AxiosError(msg, core_AxiosError.ERR_NETWORK, config, request); + // attach the underlying event for consumers who want details + err.event = event || null; + reject(err); + request = null; + }; - // Clean up request - request = null; - }; + // Handle timeout + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = _config.timeout + ? 'timeout of ' + _config.timeout + 'ms exceeded' + : 'timeout exceeded'; + const transitional = _config.transitional || defaults_transitional; + if (_config.timeoutErrorMessage) { + timeoutErrorMessage = _config.timeoutErrorMessage; + } + reject( + new core_AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? core_AxiosError.ETIMEDOUT : core_AxiosError.ECONNABORTED, + config, + request + ) + ); - // Handle low level network errors - request.onerror = function handleError(event) { - // Browsers deliver a ProgressEvent in XHR onerror - // (message may be empty; when present, surface it) - // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event - const msg = event && event.message ? event.message : 'Network Error'; - const err = new core_AxiosError(msg, core_AxiosError.ERR_NETWORK, config, request); - // attach the underlying event for consumers who want details - err.event = event || null; - reject(err); - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = _config.transitional || defaults_transitional; - if (_config.timeoutErrorMessage) { - timeoutErrorMessage = _config.timeoutErrorMessage; - } - reject(new core_AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? core_AxiosError.ETIMEDOUT : core_AxiosError.ECONNABORTED, - config, - request)); + // Clean up request + request = null; + }; - // Clean up request - request = null; - }; + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } - // Add headers to the request - if ('setRequestHeader' in request) { - utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } + // Add withCredentials to request if needed + if (!utils.isUndefined(_config.withCredentials)) { + request.withCredentials = !!_config.withCredentials; + } - // Add withCredentials to request if needed - if (!utils.isUndefined(_config.withCredentials)) { - request.withCredentials = !!_config.withCredentials; - } + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = _config.responseType; + } - // Add responseType to request if needed - if (responseType && responseType !== 'json') { - request.responseType = _config.responseType; - } + // Handle progress if needed + if (onDownloadProgress) { + [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); + request.addEventListener('progress', downloadThrottled); + } - // Handle progress if needed - if (onDownloadProgress) { - ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true)); - request.addEventListener('progress', downloadThrottled); - } + // Not all browsers support upload events + if (onUploadProgress && request.upload) { + [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); - // Not all browsers support upload events - if (onUploadProgress && request.upload) { - ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress)); + request.upload.addEventListener('progress', uploadThrottled); - request.upload.addEventListener('progress', uploadThrottled); + request.upload.addEventListener('loadend', flushUpload); + } - request.upload.addEventListener('loadend', flushUpload); - } + if (_config.cancelToken || _config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = (cancel) => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new cancel_CanceledError(null, config, request) : cancel); + request.abort(); + request = null; + }; - if (_config.cancelToken || _config.signal) { - // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = cancel => { - if (!request) { - return; + _config.cancelToken && _config.cancelToken.subscribe(onCanceled); + if (_config.signal) { + _config.signal.aborted + ? onCanceled() + : _config.signal.addEventListener('abort', onCanceled); } - reject(!cancel || cancel.type ? new cancel_CanceledError(null, config, request) : cancel); - request.abort(); - request = null; - }; - - _config.cancelToken && _config.cancelToken.subscribe(onCanceled); - if (_config.signal) { - _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled); } - } - - const protocol = parseProtocol(_config.url); - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new core_AxiosError('Unsupported protocol ' + protocol + ':', core_AxiosError.ERR_BAD_REQUEST, config)); - return; - } + const protocol = parseProtocol(_config.url); + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject( + new core_AxiosError( + 'Unsupported protocol ' + protocol + ':', + core_AxiosError.ERR_BAD_REQUEST, + config + ) + ); + return; + } - // Send the request - request.send(requestData || null); + // Send the request + request.send(requestData || null); + }); }); -}); ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/composeSignals.js @@ -147668,7 +147545,7 @@ const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; const composeSignals = (signals, timeout) => { - const {length} = (signals = signals ? signals.filter(Boolean) : []); + const { length } = (signals = signals ? signals.filter(Boolean) : []); if (timeout || length) { let controller = new AbortController(); @@ -147680,40 +147557,47 @@ const composeSignals = (signals, timeout) => { aborted = true; unsubscribe(); const err = reason instanceof Error ? reason : this.reason; - controller.abort(err instanceof core_AxiosError ? err : new cancel_CanceledError(err instanceof Error ? err.message : err)); + controller.abort( + err instanceof core_AxiosError + ? err + : new cancel_CanceledError(err instanceof Error ? err.message : err) + ); } - } + }; - let timer = timeout && setTimeout(() => { - timer = null; - onabort(new core_AxiosError(`timeout of ${timeout}ms exceeded`, core_AxiosError.ETIMEDOUT)) - }, timeout) + let timer = + timeout && + setTimeout(() => { + timer = null; + onabort(new core_AxiosError(`timeout of ${timeout}ms exceeded`, core_AxiosError.ETIMEDOUT)); + }, timeout); const unsubscribe = () => { if (signals) { timer && clearTimeout(timer); timer = null; - signals.forEach(signal => { - signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort); + signals.forEach((signal) => { + signal.unsubscribe + ? signal.unsubscribe(onabort) + : signal.removeEventListener('abort', onabort); }); signals = null; } - } + }; signals.forEach((signal) => signal.addEventListener('abort', onabort)); - const {signal} = controller; + const { signal } = controller; signal.unsubscribe = () => utils.asap(unsubscribe); return signal; } -} +}; /* harmony default export */ const helpers_composeSignals = (composeSignals); ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/trackStream.js - const streamChunk = function* (chunk, chunkSize) { let len = chunk.byteLength; @@ -147730,13 +147614,13 @@ const streamChunk = function* (chunk, chunkSize) { yield chunk.slice(pos, end); pos = end; } -} +}; const readBytes = async function* (iterable, chunkSize) { for await (const chunk of readStream(iterable)) { yield* streamChunk(chunk, chunkSize); } -} +}; const readStream = async function* (stream) { if (stream[Symbol.asyncIterator]) { @@ -147747,7 +147631,7 @@ const readStream = async function* (stream) { const reader = stream.getReader(); try { for (;;) { - const {done, value} = await reader.read(); + const { done, value } = await reader.read(); if (done) { break; } @@ -147756,7 +147640,7 @@ const readStream = async function* (stream) { } finally { await reader.cancel(); } -} +}; const trackStream = (stream, chunkSize, onProgress, onFinish) => { const iterator = readBytes(stream, chunkSize); @@ -147768,38 +147652,41 @@ const trackStream = (stream, chunkSize, onProgress, onFinish) => { done = true; onFinish && onFinish(e); } - } + }; - return new ReadableStream({ - async pull(controller) { - try { - const {done, value} = await iterator.next(); + return new ReadableStream( + { + async pull(controller) { + try { + const { done, value } = await iterator.next(); - if (done) { - _onFinish(); - controller.close(); - return; - } + if (done) { + _onFinish(); + controller.close(); + return; + } - let len = value.byteLength; - if (onProgress) { - let loadedBytes = bytes += len; - onProgress(loadedBytes); + let len = value.byteLength; + if (onProgress) { + let loadedBytes = (bytes += len); + onProgress(loadedBytes); + } + controller.enqueue(new Uint8Array(value)); + } catch (err) { + _onFinish(err); + throw err; } - controller.enqueue(new Uint8Array(value)); - } catch (err) { - _onFinish(err); - throw err; - } + }, + cancel(reason) { + _onFinish(reason); + return iterator.return(); + }, }, - cancel(reason) { - _onFinish(reason); - return iterator.return(); + { + highWaterMark: 2, } - }, { - highWaterMark: 2 - }) -} + ); +}; ;// CONCATENATED MODULE: ./node_modules/axios/lib/adapters/fetch.js @@ -147814,31 +147701,33 @@ const trackStream = (stream, chunkSize, onProgress, onFinish) => { const DEFAULT_CHUNK_SIZE = 64 * 1024; -const {isFunction: fetch_isFunction} = utils; +const { isFunction: fetch_isFunction } = utils; -const globalFetchAPI = (({Request, Response}) => ({ - Request, Response +const globalFetchAPI = (({ Request, Response }) => ({ + Request, + Response, }))(utils.global); -const { - ReadableStream: fetch_ReadableStream, TextEncoder: fetch_TextEncoder -} = utils.global; - +const { ReadableStream: fetch_ReadableStream, TextEncoder: fetch_TextEncoder } = utils.global; const test = (fn, ...args) => { try { return !!fn(...args); } catch (e) { - return false + return false; } -} +}; const factory = (env) => { - env = utils.merge.call({ - skipUndefined: true - }, globalFetchAPI, env); + env = utils.merge.call( + { + skipUndefined: true, + }, + globalFetchAPI, + env + ); - const {fetch: envFetch, Request, Response} = env; + const { fetch: envFetch, Request, Response } = env; const isFetchSupported = envFetch ? fetch_isFunction(envFetch) : typeof fetch === 'function'; const isRequestSupported = fetch_isFunction(Request); const isResponseSupported = fetch_isFunction(Response); @@ -147849,46 +147738,65 @@ const factory = (env) => { const isReadableStreamSupported = isFetchSupported && fetch_isFunction(fetch_ReadableStream); - const encodeText = isFetchSupported && (typeof fetch_TextEncoder === 'function' ? - ((encoder) => (str) => encoder.encode(str))(new fetch_TextEncoder()) : - async (str) => new Uint8Array(await new Request(str).arrayBuffer()) - ); + const encodeText = + isFetchSupported && + (typeof fetch_TextEncoder === 'function' + ? ( + (encoder) => (str) => + encoder.encode(str) + )(new fetch_TextEncoder()) + : async (str) => new Uint8Array(await new Request(str).arrayBuffer())); - const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => { - let duplexAccessed = false; + const supportsRequestStream = + isRequestSupported && + isReadableStreamSupported && + test(() => { + let duplexAccessed = false; - const hasContentType = new Request(platform.origin, { - body: new fetch_ReadableStream(), - method: 'POST', - get duplex() { - duplexAccessed = true; - return 'half'; - }, - }).headers.has('Content-Type'); + const body = new fetch_ReadableStream(); - return duplexAccessed && !hasContentType; - }); + const hasContentType = new Request(platform.origin, { + body, + method: 'POST', + get duplex() { + duplexAccessed = true; + return 'half'; + }, + }).headers.has('Content-Type'); + + body.cancel(); - const supportsResponseStream = isResponseSupported && isReadableStreamSupported && + return duplexAccessed && !hasContentType; + }); + + const supportsResponseStream = + isResponseSupported && + isReadableStreamSupported && test(() => utils.isReadableStream(new Response('').body)); const resolvers = { - stream: supportsResponseStream && ((res) => res.body) + stream: supportsResponseStream && ((res) => res.body), }; - isFetchSupported && ((() => { - ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => { - !resolvers[type] && (resolvers[type] = (res, config) => { - let method = res && res[type]; + isFetchSupported && + (() => { + ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => { + !resolvers[type] && + (resolvers[type] = (res, config) => { + let method = res && res[type]; - if (method) { - return method.call(res); - } + if (method) { + return method.call(res); + } - throw new core_AxiosError(`Response type '${type}' is not supported`, core_AxiosError.ERR_NOT_SUPPORT, config); - }) - }); - })()); + throw new core_AxiosError( + `Response type '${type}' is not supported`, + core_AxiosError.ERR_NOT_SUPPORT, + config + ); + }); + }); + })(); const getBodyLength = async (body) => { if (body == null) { @@ -147918,13 +147826,13 @@ const factory = (env) => { if (utils.isString(body)) { return (await encodeText(body)).byteLength; } - } + }; const resolveBodyLength = async (headers, body) => { const length = utils.toFiniteNumber(headers.getContentLength()); return length == null ? getBodyLength(body) : length; - } + }; return async (config) => { let { @@ -147939,38 +147847,47 @@ const factory = (env) => { responseType, headers, withCredentials = 'same-origin', - fetchOptions + fetchOptions, } = resolveConfig(config); let _fetch = envFetch || fetch; responseType = responseType ? (responseType + '').toLowerCase() : 'text'; - let composedSignal = helpers_composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout); + let composedSignal = helpers_composeSignals( + [signal, cancelToken && cancelToken.toAbortSignal()], + timeout + ); let request = null; - const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => { - composedSignal.unsubscribe(); - }); + const unsubscribe = + composedSignal && + composedSignal.unsubscribe && + (() => { + composedSignal.unsubscribe(); + }); let requestContentLength; try { if ( - onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' && + onUploadProgress && + supportsRequestStream && + method !== 'get' && + method !== 'head' && (requestContentLength = await resolveBodyLength(headers, data)) !== 0 ) { let _request = new Request(url, { method: 'POST', body: data, - duplex: "half" + duplex: 'half', }); let contentTypeHeader; if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { - headers.setContentType(contentTypeHeader) + headers.setContentType(contentTypeHeader); } if (_request.body) { @@ -147989,7 +147906,7 @@ const factory = (env) => { // Cloudflare Workers throws when credentials are defined // see https://github.com/cloudflare/workerd/issues/902 - const isCredentialsSupported = isRequestSupported && "credentials" in Request.prototype; + const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; const resolvedOptions = { ...fetchOptions, @@ -147997,29 +147914,35 @@ const factory = (env) => { method: method.toUpperCase(), headers: headers.normalize().toJSON(), body: data, - duplex: "half", - credentials: isCredentialsSupported ? withCredentials : undefined + duplex: 'half', + credentials: isCredentialsSupported ? withCredentials : undefined, }; request = isRequestSupported && new Request(url, resolvedOptions); - let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions)); + let response = await (isRequestSupported + ? _fetch(request, fetchOptions) + : _fetch(url, resolvedOptions)); - const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response'); + const isStreamResponse = + supportsResponseStream && (responseType === 'stream' || responseType === 'response'); if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { const options = {}; - ['status', 'statusText', 'headers'].forEach(prop => { + ['status', 'statusText', 'headers'].forEach((prop) => { options[prop] = response[prop]; }); const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length')); - const [onProgress, flush] = onDownloadProgress && progressEventDecorator( - responseContentLength, - progressEventReducer(asyncDecorator(onDownloadProgress), true) - ) || []; + const [onProgress, flush] = + (onDownloadProgress && + progressEventDecorator( + responseContentLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true) + )) || + []; response = new Response( trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { @@ -148032,7 +147955,10 @@ const factory = (env) => { responseType = responseType || 'text'; - let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config); + let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text']( + response, + config + ); !isStreamResponse && unsubscribe && unsubscribe(); @@ -148043,43 +147969,50 @@ const factory = (env) => { status: response.status, statusText: response.statusText, config, - request - }) - }) + request, + }); + }); } catch (err) { unsubscribe && unsubscribe(); if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { throw Object.assign( - new core_AxiosError('Network Error', core_AxiosError.ERR_NETWORK, config, request, err && err.response), + new core_AxiosError( + 'Network Error', + core_AxiosError.ERR_NETWORK, + config, + request, + err && err.response + ), { - cause: err.cause || err + cause: err.cause || err, } - ) + ); } throw core_AxiosError.from(err, err && err.code, config, request, err && err.response); } - } -} + }; +}; const seedCache = new Map(); const getFetch = (config) => { let env = (config && config.env) || {}; - const {fetch, Request, Response} = env; - const seeds = [ - Request, Response, fetch - ]; + const { fetch, Request, Response } = env; + const seeds = [Request, Response, fetch]; - let len = seeds.length, i = len, - seed, target, map = seedCache; + let len = seeds.length, + i = len, + seed, + target, + map = seedCache; while (i--) { seed = seeds[i]; target = map.get(seed); - target === undefined && map.set(seed, target = (i ? new Map() : factory(env))) + target === undefined && map.set(seed, (target = i ? new Map() : factory(env))); map = target; } @@ -148104,7 +148037,7 @@ const adapter = getFetch(); * - `http` for Node.js * - `xhr` for browsers * - `fetch` for fetch API-based requests - * + * * @type {Object} */ const knownAdapters = { @@ -148112,7 +148045,7 @@ const knownAdapters = { xhr: xhr, fetch: { get: getFetch, - } + }, }; // Assign adapter names for easier debugging and identification @@ -148129,7 +148062,7 @@ utils.forEach(knownAdapters, (fn, value) => { /** * Render a rejection reason string for unknown or unsupported adapters - * + * * @param {string} reason * @returns {string} */ @@ -148137,17 +148070,18 @@ const renderReason = (reason) => `- ${reason}`; /** * Check if the adapter is resolved (function, null, or false) - * + * * @param {Function|null|false} adapter * @returns {boolean} */ -const isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false; +const isResolvedHandle = (adapter) => + utils.isFunction(adapter) || adapter === null || adapter === false; /** * Get the first suitable adapter from the provided list. * Tries each adapter in order until a supported one is found. * Throws an AxiosError if no adapter is suitable. - * + * * @param {Array|string|Function} adapters - Adapter(s) by name or function. * @param {Object} config - Axios request configuration * @throws {AxiosError} If no suitable adapter is available @@ -148184,14 +148118,17 @@ function getAdapter(adapters, config) { } if (!adapter) { - const reasons = Object.entries(rejectedReasons) - .map(([id, state]) => `adapter ${id} ` + + const reasons = Object.entries(rejectedReasons).map( + ([id, state]) => + `adapter ${id} ` + (state === false ? 'is not supported by the environment' : 'is not available in the build') - ); + ); - let s = length ? - (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : - 'as no adapter specified'; + let s = length + ? reasons.length > 1 + ? 'since :\n' + reasons.map(renderReason).join('\n') + : ' ' + renderReason(reasons[0]) + : 'as no adapter specified'; throw new core_AxiosError( `There is no suitable adapter to dispatch the request ` + s, @@ -148216,7 +148153,7 @@ function getAdapter(adapters, config) { * Exposes all known adapters * @type {Object} */ - adapters: knownAdapters + adapters: knownAdapters, }); ;// CONCATENATED MODULE: ./node_modules/axios/lib/core/dispatchRequest.js @@ -148259,10 +148196,7 @@ function dispatchRequest(config) { config.headers = core_AxiosHeaders.from(config.headers); // Transform request data - config.data = transformData.call( - config, - config.transformRequest - ); + config.data = transformData.call(config, config.transformRequest); if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { config.headers.setContentType('application/x-www-form-urlencoded', false); @@ -148270,36 +148204,35 @@ function dispatchRequest(config) { const adapter = adapters.getAdapter(config.adapter || lib_defaults.adapter, config); - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); + return adapter(config).then( + function onAdapterResolution(response) { + throwIfCancellationRequested(config); - // Transform response data - response.data = transformData.call( - config, - config.transformResponse, - response - ); + // Transform response data + response.data = transformData.call(config, config.transformResponse, response); - response.headers = core_AxiosHeaders.from(response.headers); + response.headers = core_AxiosHeaders.from(response.headers); - return response; - }, function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); + return response; + }, + function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData.call( - config, - config.transformResponse, - reason.response - ); - reason.response.headers = core_AxiosHeaders.from(reason.response.headers); + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = core_AxiosHeaders.from(reason.response.headers); + } } - } - return Promise.reject(reason); - }); + return Promise.reject(reason); + } + ); } ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/validator.js @@ -148330,7 +148263,15 @@ const deprecatedWarnings = {}; */ validators.transitional = function transitional(validator, version, message) { function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + return ( + '[Axios v' + + VERSION + + "] Transitional option '" + + opt + + "'" + + desc + + (message ? '. ' + message : '') + ); } // eslint-disable-next-line func-names @@ -148362,7 +148303,7 @@ validators.spelling = function spelling(correctSpelling) { // eslint-disable-next-line no-console console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); return true; - } + }; }; /** @@ -148388,7 +148329,10 @@ function assertOptions(options, schema, allowUnknown) { const value = options[opt]; const result = value === undefined || validator(value, opt, options); if (result !== true) { - throw new core_AxiosError('option ' + opt + ' must be ' + result, core_AxiosError.ERR_BAD_OPTION_VALUE); + throw new core_AxiosError( + 'option ' + opt + ' must be ' + result, + core_AxiosError.ERR_BAD_OPTION_VALUE + ); } continue; } @@ -148400,7 +148344,7 @@ function assertOptions(options, schema, allowUnknown) { /* harmony default export */ const validator = ({ assertOptions, - validators + validators, }); ;// CONCATENATED MODULE: ./node_modules/axios/lib/core/Axios.js @@ -148430,7 +148374,7 @@ class Axios { this.defaults = instanceConfig || {}; this.interceptors = { request: new core_InterceptorManager(), - response: new core_InterceptorManager() + response: new core_InterceptorManager(), }; } @@ -148452,13 +148396,29 @@ class Axios { Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error()); // slice off the Error: ... line - const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + const stack = (() => { + if (!dummy.stack) { + return ''; + } + + const firstNewlineIndex = dummy.stack.indexOf('\n'); + + return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1); + })(); try { if (!err.stack) { err.stack = stack; // match without the 2 top stack lines - } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - err.stack += '\n' + stack + } else if (stack) { + const firstNewlineIndex = stack.indexOf('\n'); + const secondNewlineIndex = + firstNewlineIndex === -1 ? -1 : stack.indexOf('\n', firstNewlineIndex + 1); + const stackWithoutTwoTopLines = + secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1); + + if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) { + err.stack += '\n' + stack; + } } } catch (e) { // ignore the case where "stack" is an un-writable property @@ -148481,27 +148441,35 @@ class Axios { config = mergeConfig(this.defaults, config); - const {transitional, paramsSerializer, headers} = config; + const { transitional, paramsSerializer, headers } = config; if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: Axios_validators.transitional(Axios_validators.boolean), - forcedJSONParsing: Axios_validators.transitional(Axios_validators.boolean), - clarifyTimeoutError: Axios_validators.transitional(Axios_validators.boolean), - legacyInterceptorReqResOrdering: Axios_validators.transitional(Axios_validators.boolean) - }, false); + validator.assertOptions( + transitional, + { + silentJSONParsing: Axios_validators.transitional(Axios_validators.boolean), + forcedJSONParsing: Axios_validators.transitional(Axios_validators.boolean), + clarifyTimeoutError: Axios_validators.transitional(Axios_validators.boolean), + legacyInterceptorReqResOrdering: Axios_validators.transitional(Axios_validators.boolean), + }, + false + ); } if (paramsSerializer != null) { if (utils.isFunction(paramsSerializer)) { config.paramsSerializer = { - serialize: paramsSerializer - } + serialize: paramsSerializer, + }; } else { - validator.assertOptions(paramsSerializer, { - encode: Axios_validators.function, - serialize: Axios_validators.function - }, true); + validator.assertOptions( + paramsSerializer, + { + encode: Axios_validators.function, + serialize: Axios_validators.function, + }, + true + ); } } @@ -148514,26 +148482,25 @@ class Axios { config.allowAbsoluteUrls = true; } - validator.assertOptions(config, { - baseUrl: Axios_validators.spelling('baseURL'), - withXsrfToken: Axios_validators.spelling('withXSRFToken') - }, true); + validator.assertOptions( + config, + { + baseUrl: Axios_validators.spelling('baseURL'), + withXsrfToken: Axios_validators.spelling('withXSRFToken'), + }, + true + ); // Set config.method config.method = (config.method || this.defaults.method || 'get').toLowerCase(); // Flatten headers - let contextHeaders = headers && utils.merge( - headers.common, - headers[config.method] - ); + let contextHeaders = headers && utils.merge(headers.common, headers[config.method]); - headers && utils.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - (method) => { + headers && + utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => { delete headers[method]; - } - ); + }); config.headers = core_AxiosHeaders.concat(contextHeaders, headers); @@ -148548,7 +148515,8 @@ class Axios { synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; const transitional = config.transitional || defaults_transitional; - const legacyInterceptorReqResOrdering = transitional && transitional.legacyInterceptorReqResOrdering; + const legacyInterceptorReqResOrdering = + transitional && transitional.legacyInterceptorReqResOrdering; if (legacyInterceptorReqResOrdering) { requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); @@ -148622,28 +148590,32 @@ class Axios { // Provide aliases for supported request methods utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { /*eslint func-names:0*/ - Axios.prototype[method] = function(url, config) { - return this.request(mergeConfig(config || {}, { - method, - url, - data: (config || {}).data - })); + Axios.prototype[method] = function (url, config) { + return this.request( + mergeConfig(config || {}, { + method, + url, + data: (config || {}).data, + }) + ); }; }); utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - function generateHTTPMethod(isForm) { return function httpMethod(url, data, config) { - return this.request(mergeConfig(config || {}, { - method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url, - data - })); + return this.request( + mergeConfig(config || {}, { + method, + headers: isForm + ? { + 'Content-Type': 'multipart/form-data', + } + : {}, + url, + data, + }) + ); }; } @@ -148681,7 +148653,7 @@ class CancelToken { const token = this; // eslint-disable-next-line func-names - this.promise.then(cancel => { + this.promise.then((cancel) => { if (!token._listeners) return; let i = token._listeners.length; @@ -148693,10 +148665,10 @@ class CancelToken { }); // eslint-disable-next-line func-names - this.promise.then = onfulfilled => { + this.promise.then = (onfulfilled) => { let _resolve; // eslint-disable-next-line func-names - const promise = new Promise(resolve => { + const promise = new Promise((resolve) => { token.subscribe(resolve); _resolve = resolve; }).then(onfulfilled); @@ -148784,7 +148756,7 @@ class CancelToken { }); return { token, - cancel + cancel, }; } } @@ -148834,7 +148806,7 @@ function spread(callback) { * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false */ function isAxiosError(payload) { - return utils.isObject(payload) && (payload.isAxiosError === true); + return utils.isObject(payload) && payload.isAxiosError === true; } ;// CONCATENATED MODULE: ./node_modules/axios/lib/helpers/HttpStatusCode.js @@ -148949,10 +148921,10 @@ function createInstance(defaultConfig) { const instance = bind(core_Axios.prototype.request, context); // Copy axios.prototype to instance - utils.extend(instance, core_Axios.prototype, context, {allOwnKeys: true}); + utils.extend(instance, core_Axios.prototype, context, { allOwnKeys: true }); // Copy context to instance - utils.extend(instance, context, null, {allOwnKeys: true}); + utils.extend(instance, context, null, { allOwnKeys: true }); // Factory for creating new instances instance.create = function create(instanceConfig) { @@ -148996,7 +148968,7 @@ axios.mergeConfig = mergeConfig; axios.AxiosHeaders = core_AxiosHeaders; -axios.formToJSON = thing => helpers_formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing); +axios.formToJSON = (thing) => helpers_formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing); axios.getAdapter = adapters.getAdapter; @@ -149029,7 +149001,7 @@ const { HttpStatusCode: axios_HttpStatusCode, formToJSON, getAdapter: axios_getAdapter, - mergeConfig: axios_mergeConfig + mergeConfig: axios_mergeConfig, } = lib_axios; diff --git a/dist/save/index.js b/dist/save/index.js index e34e795..9b6421e 100644 --- a/dist/save/index.js +++ b/dist/save/index.js @@ -74677,122 +74677,6 @@ const pLimit = concurrency => { module.exports = pLimit; -/***/ }), - -/***/ 63329: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -var parseUrl = (__nccwpck_require__(57310).parse); - -var DEFAULT_PORTS = { - ftp: 21, - gopher: 70, - http: 80, - https: 443, - ws: 80, - wss: 443, -}; - -var stringEndsWith = String.prototype.endsWith || function(s) { - return s.length <= this.length && - this.indexOf(s, this.length - s.length) !== -1; -}; - -/** - * @param {string|object} url - The URL, or the result from url.parse. - * @return {string} The URL of the proxy that should handle the request to the - * given URL. If no proxy is set, this will be an empty string. - */ -function getProxyForUrl(url) { - var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {}; - var proto = parsedUrl.protocol; - var hostname = parsedUrl.host; - var port = parsedUrl.port; - if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { - return ''; // Don't proxy URLs without a valid scheme or host. - } - - proto = proto.split(':', 1)[0]; - // Stripping ports in this way instead of using parsedUrl.hostname to make - // sure that the brackets around IPv6 addresses are kept. - hostname = hostname.replace(/:\d*$/, ''); - port = parseInt(port) || DEFAULT_PORTS[proto] || 0; - if (!shouldProxy(hostname, port)) { - return ''; // Don't proxy URLs that match NO_PROXY. - } - - var proxy = - getEnv('npm_config_' + proto + '_proxy') || - getEnv(proto + '_proxy') || - getEnv('npm_config_proxy') || - getEnv('all_proxy'); - if (proxy && proxy.indexOf('://') === -1) { - // Missing scheme in proxy, default to the requested URL's scheme. - proxy = proto + '://' + proxy; - } - return proxy; -} - -/** - * Determines whether a given URL should be proxied. - * - * @param {string} hostname - The host name of the URL. - * @param {number} port - The effective port of the URL. - * @returns {boolean} Whether the given URL should be proxied. - * @private - */ -function shouldProxy(hostname, port) { - var NO_PROXY = - (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase(); - if (!NO_PROXY) { - return true; // Always proxy if NO_PROXY is not set. - } - if (NO_PROXY === '*') { - return false; // Never proxy if wildcard is set. - } - - return NO_PROXY.split(/[,\s]/).every(function(proxy) { - if (!proxy) { - return true; // Skip zero-length hosts. - } - var parsedProxy = proxy.match(/^(.+):(\d+)$/); - var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; - var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; - if (parsedProxyPort && parsedProxyPort !== port) { - return true; // Skip if ports don't match. - } - - if (!/^[.*]/.test(parsedProxyHostname)) { - // No wildcards, so stop proxying if there is an exact match. - return hostname !== parsedProxyHostname; - } - - if (parsedProxyHostname.charAt(0) === '*') { - // Remove leading wildcard. - parsedProxyHostname = parsedProxyHostname.slice(1); - } - // Stop proxying if the hostname ends with the no_proxy host. - return !stringEndsWith.call(hostname, parsedProxyHostname); - }); -} - -/** - * Get the value for an environment variable. - * - * @param {string} key - The name of the environment variable. - * @return {string} The value of the environment variable. - * @private - */ -function getEnv(key) { - return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; -} - -exports.getProxyForUrl = getProxyForUrl; - - /***/ }), /***/ 67214: @@ -135999,35 +135883,20 @@ exports.getPackageJSON = getPackageJSON; /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -/*! Axios v1.13.5 Copyright (c) 2026 Matt Zabriskie and contributors */ - - -const FormData$1 = __nccwpck_require__(91403); -const crypto = __nccwpck_require__(6113); -const url = __nccwpck_require__(57310); -const proxyFromEnv = __nccwpck_require__(63329); -const http = __nccwpck_require__(13685); -const https = __nccwpck_require__(95687); -const http2 = __nccwpck_require__(85158); -const util = __nccwpck_require__(73837); -const followRedirects = __nccwpck_require__(67707); -const zlib = __nccwpck_require__(59796); -const stream = __nccwpck_require__(12781); -const events = __nccwpck_require__(82361); +/*! Axios v1.15.0 Copyright (c) 2026 Matt Zabriskie and contributors */ -function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } -const FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1); -const crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto); -const url__default = /*#__PURE__*/_interopDefaultLegacy(url); -const proxyFromEnv__default = /*#__PURE__*/_interopDefaultLegacy(proxyFromEnv); -const http__default = /*#__PURE__*/_interopDefaultLegacy(http); -const https__default = /*#__PURE__*/_interopDefaultLegacy(https); -const http2__default = /*#__PURE__*/_interopDefaultLegacy(http2); -const util__default = /*#__PURE__*/_interopDefaultLegacy(util); -const followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects); -const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); -const stream__default = /*#__PURE__*/_interopDefaultLegacy(stream); +var FormData$1 = __nccwpck_require__(91403); +var crypto = __nccwpck_require__(6113); +var url = __nccwpck_require__(57310); +var http = __nccwpck_require__(13685); +var https = __nccwpck_require__(95687); +var http2 = __nccwpck_require__(85158); +var util = __nccwpck_require__(73837); +var followRedirects = __nccwpck_require__(67707); +var zlib = __nccwpck_require__(59796); +var stream = __nccwpck_require__(12781); +var events = __nccwpck_require__(82361); /** * Create a bound version of a function with a specified `this` context @@ -136044,21 +135913,25 @@ function bind(fn, thisArg) { // utils is a library of generic helper functions non-specific to axios -const { toString } = Object.prototype; -const { getPrototypeOf } = Object; -const { iterator, toStringTag } = Symbol; - -const kindOf = ((cache) => (thing) => { +const { + toString +} = Object.prototype; +const { + getPrototypeOf +} = Object; +const { + iterator, + toStringTag +} = Symbol; +const kindOf = (cache => thing => { const str = toString.call(thing); return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); })(Object.create(null)); - -const kindOfTest = (type) => { +const kindOfTest = type => { type = type.toLowerCase(); - return (thing) => kindOf(thing) === type; + return thing => kindOf(thing) === type; }; - -const typeOfTest = (type) => (thing) => typeof thing === type; +const typeOfTest = type => thing => typeof thing === type; /** * Determine if a value is a non-null object @@ -136067,7 +135940,9 @@ const typeOfTest = (type) => (thing) => typeof thing === type; * * @returns {boolean} True if value is an Array, otherwise false */ -const { isArray } = Array; +const { + isArray +} = Array; /** * Determine if a value is undefined @@ -136076,7 +135951,7 @@ const { isArray } = Array; * * @returns {boolean} True if the value is undefined, otherwise false */ -const isUndefined = typeOfTest("undefined"); +const isUndefined = typeOfTest('undefined'); /** * Determine if a value is a Buffer @@ -136086,14 +135961,7 @@ const isUndefined = typeOfTest("undefined"); * @returns {boolean} True if value is a Buffer, otherwise false */ function isBuffer(val) { - return ( - val !== null && - !isUndefined(val) && - val.constructor !== null && - !isUndefined(val.constructor) && - isFunction$1(val.constructor.isBuffer) && - val.constructor.isBuffer(val) - ); + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction$1(val.constructor.isBuffer) && val.constructor.isBuffer(val); } /** @@ -136103,7 +135971,7 @@ function isBuffer(val) { * * @returns {boolean} True if value is an ArrayBuffer, otherwise false */ -const isArrayBuffer = kindOfTest("ArrayBuffer"); +const isArrayBuffer = kindOfTest('ArrayBuffer'); /** * Determine if a value is a view on an ArrayBuffer @@ -136114,7 +135982,7 @@ const isArrayBuffer = kindOfTest("ArrayBuffer"); */ function isArrayBufferView(val) { let result; - if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) { + if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { result = ArrayBuffer.isView(val); } else { result = val && val.buffer && isArrayBuffer(val.buffer); @@ -136129,7 +135997,7 @@ function isArrayBufferView(val) { * * @returns {boolean} True if value is a String, otherwise false */ -const isString = typeOfTest("string"); +const isString = typeOfTest('string'); /** * Determine if a value is a Function @@ -136137,7 +136005,7 @@ const isString = typeOfTest("string"); * @param {*} val The value to test * @returns {boolean} True if value is a Function, otherwise false */ -const isFunction$1 = typeOfTest("function"); +const isFunction$1 = typeOfTest('function'); /** * Determine if a value is a Number @@ -136146,7 +136014,7 @@ const isFunction$1 = typeOfTest("function"); * * @returns {boolean} True if value is a Number, otherwise false */ -const isNumber = typeOfTest("number"); +const isNumber = typeOfTest('number'); /** * Determine if a value is an Object @@ -136155,7 +136023,7 @@ const isNumber = typeOfTest("number"); * * @returns {boolean} True if value is an Object, otherwise false */ -const isObject = (thing) => thing !== null && typeof thing === "object"; +const isObject = thing => thing !== null && typeof thing === 'object'; /** * Determine if a value is a Boolean @@ -136163,7 +136031,7 @@ const isObject = (thing) => thing !== null && typeof thing === "object"; * @param {*} thing The value to test * @returns {boolean} True if value is a Boolean, otherwise false */ -const isBoolean = (thing) => thing === true || thing === false; +const isBoolean = thing => thing === true || thing === false; /** * Determine if a value is a plain Object @@ -136172,19 +136040,12 @@ const isBoolean = (thing) => thing === true || thing === false; * * @returns {boolean} True if value is a plain Object, otherwise false */ -const isPlainObject = (val) => { - if (kindOf(val) !== "object") { +const isPlainObject = val => { + if (kindOf(val) !== 'object') { return false; } - const prototype = getPrototypeOf(val); - return ( - (prototype === null || - prototype === Object.prototype || - Object.getPrototypeOf(prototype) === null) && - !(toStringTag in val) && - !(iterator in val) - ); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val); }; /** @@ -136194,17 +136055,13 @@ const isPlainObject = (val) => { * * @returns {boolean} True if value is an empty object, otherwise false */ -const isEmptyObject = (val) => { +const isEmptyObject = val => { // Early return for non-objects or Buffers to prevent RangeError if (!isObject(val) || isBuffer(val)) { return false; } - try { - return ( - Object.keys(val).length === 0 && - Object.getPrototypeOf(val) === Object.prototype - ); + return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; } catch (e) { // Fallback for any other objects that might cause RangeError with Object.keys() return false; @@ -136218,7 +136075,7 @@ const isEmptyObject = (val) => { * * @returns {boolean} True if value is a Date, otherwise false */ -const isDate = kindOfTest("Date"); +const isDate = kindOfTest('Date'); /** * Determine if a value is a File @@ -136227,7 +136084,32 @@ const isDate = kindOfTest("Date"); * * @returns {boolean} True if value is a File, otherwise false */ -const isFile = kindOfTest("File"); +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a React Native Blob + * React Native "blob": an object with a `uri` attribute. Optionally, it can + * also have a `name` and `type` attribute to specify filename and content type + * + * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 + * + * @param {*} value The value to test + * + * @returns {boolean} True if value is a React Native Blob, otherwise false + */ +const isReactNativeBlob = value => { + return !!(value && typeof value.uri !== 'undefined'); +}; + +/** + * Determine if environment is React Native + * ReactNative `FormData` has a non-standard `getParts()` method + * + * @param {*} formData The formData to test + * + * @returns {boolean} True if environment is React Native, otherwise false + */ +const isReactNative = formData => formData && typeof formData.getParts !== 'undefined'; /** * Determine if a value is a Blob @@ -136236,7 +136118,7 @@ const isFile = kindOfTest("File"); * * @returns {boolean} True if value is a Blob, otherwise false */ -const isBlob = kindOfTest("Blob"); +const isBlob = kindOfTest('Blob'); /** * Determine if a value is a FileList @@ -136245,7 +136127,7 @@ const isBlob = kindOfTest("Blob"); * * @returns {boolean} True if value is a File, otherwise false */ -const isFileList = kindOfTest("FileList"); +const isFileList = kindOfTest('FileList'); /** * Determine if a value is a Stream @@ -136254,7 +136136,7 @@ const isFileList = kindOfTest("FileList"); * * @returns {boolean} True if value is a Stream, otherwise false */ -const isStream = (val) => isObject(val) && isFunction$1(val.pipe); +const isStream = val => isObject(val) && isFunction$1(val.pipe); /** * Determine if a value is a FormData @@ -136263,18 +136145,20 @@ const isStream = (val) => isObject(val) && isFunction$1(val.pipe); * * @returns {boolean} True if value is an FormData, otherwise false */ -const isFormData = (thing) => { +function getGlobal() { + if (typeof globalThis !== 'undefined') return globalThis; + if (typeof self !== 'undefined') return self; + if (typeof window !== 'undefined') return window; + if (typeof global !== 'undefined') return global; + return {}; +} +const G = getGlobal(); +const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; +const isFormData = thing => { let kind; - return ( - thing && - ((typeof FormData === "function" && thing instanceof FormData) || - (isFunction$1(thing.append) && - ((kind = kindOf(thing)) === "formdata" || - // detect form-data instance - (kind === "object" && - isFunction$1(thing.toString) && - thing.toString() === "[object FormData]")))) - ); + return thing && (FormDataCtor && thing instanceof FormDataCtor || isFunction$1(thing.append) && ((kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + kind === 'object' && isFunction$1(thing.toString) && thing.toString() === '[object FormData]')); }; /** @@ -136284,14 +136168,8 @@ const isFormData = (thing) => { * * @returns {boolean} True if value is a URLSearchParams object, otherwise false */ -const isURLSearchParams = kindOfTest("URLSearchParams"); - -const [isReadableStream, isRequest, isResponse, isHeaders] = [ - "ReadableStream", - "Request", - "Response", - "Headers", -].map(kindOfTest); +const isURLSearchParams = kindOfTest('URLSearchParams'); +const [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest); /** * Trim excess whitespace off the beginning and end of a string @@ -136300,9 +136178,9 @@ const [isReadableStream, isRequest, isResponse, isHeaders] = [ * * @returns {String} The String freed of excess whitespace */ -const trim = (str) => - str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); - +const trim = str => { + return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); +}; /** * Iterate over an Array or an Object invoking a function for each item. * @@ -136319,21 +136197,21 @@ const trim = (str) => * @param {Boolean} [options.allOwnKeys = false] * @returns {any} */ -function forEach(obj, fn, { allOwnKeys = false } = {}) { +function forEach(obj, fn, { + allOwnKeys = false +} = {}) { // Don't bother if no value provided - if (obj === null || typeof obj === "undefined") { + if (obj === null || typeof obj === 'undefined') { return; } - let i; let l; // Force an array if not already something iterable - if (typeof obj !== "object") { + if (typeof obj !== 'object') { /*eslint no-param-reassign:0*/ obj = [obj]; } - if (isArray(obj)) { // Iterate over array values for (i = 0, l = obj.length; i < l; i++) { @@ -136346,12 +136224,9 @@ function forEach(obj, fn, { allOwnKeys = false } = {}) { } // Iterate over object keys - const keys = allOwnKeys - ? Object.getOwnPropertyNames(obj) - : Object.keys(obj); + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); const len = keys.length; let key; - for (i = 0; i < len; i++) { key = keys[i]; fn.call(null, obj[key], key, obj); @@ -136359,11 +136234,18 @@ function forEach(obj, fn, { allOwnKeys = false } = {}) { } } +/** + * Finds a key in an object, case-insensitive, returning the actual key name. + * Returns null if the object is a Buffer or if no match is found. + * + * @param {Object} obj - The object to search. + * @param {string} key - The key to find (case-insensitive). + * @returns {?string} The actual key name if found, otherwise null. + */ function findKey(obj, key) { if (isBuffer(obj)) { return null; } - key = key.toLowerCase(); const keys = Object.keys(obj); let i = keys.length; @@ -136376,19 +136258,12 @@ function findKey(obj, key) { } return null; } - const _global = (() => { /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" - ? self - : typeof window !== "undefined" - ? window - : global; + if (typeof globalThis !== 'undefined') return globalThis; + return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global; })(); - -const isContextDefined = (context) => - !isUndefined(context) && context !== _global; +const isContextDefined = context => !isUndefined(context) && context !== _global; /** * Accepts varargs expecting each argument to be an object, then @@ -136408,16 +136283,19 @@ const isContextDefined = (context) => * * @returns {Object} Result of all merge properties */ -function merge(/* obj1, obj2, obj3, ... */) { - const { caseless, skipUndefined } = (isContextDefined(this) && this) || {}; +function merge(/* obj1, obj2, obj3, ... */ +) { + const { + caseless, + skipUndefined + } = isContextDefined(this) && this || {}; const result = {}; const assignValue = (val, key) => { // Skip dangerous property names to prevent prototype pollution - if (key === "__proto__" || key === "constructor" || key === "prototype") { + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { return; } - - const targetKey = (caseless && findKey(result, key)) || key; + const targetKey = caseless && findKey(result, key) || key; if (isPlainObject(result[targetKey]) && isPlainObject(val)) { result[targetKey] = merge(result[targetKey], val); } else if (isPlainObject(val)) { @@ -136428,7 +136306,6 @@ function merge(/* obj1, obj2, obj3, ... */) { result[targetKey] = val; } }; - for (let i = 0, l = arguments.length; i < l; i++) { arguments[i] && forEach(arguments[i], assignValue); } @@ -136446,28 +136323,28 @@ function merge(/* obj1, obj2, obj3, ... */) { * @param {Boolean} [options.allOwnKeys] * @returns {Object} The resulting value of object a */ -const extend = (a, b, thisArg, { allOwnKeys } = {}) => { - forEach( - b, - (val, key) => { - if (thisArg && isFunction$1(val)) { - Object.defineProperty(a, key, { - value: bind(val, thisArg), - writable: true, - enumerable: true, - configurable: true, - }); - } else { - Object.defineProperty(a, key, { - value: val, - writable: true, - enumerable: true, - configurable: true, - }); - } - }, - { allOwnKeys }, - ); +const extend = (a, b, thisArg, { + allOwnKeys +} = {}) => { + forEach(b, (val, key) => { + if (thisArg && isFunction$1(val)) { + Object.defineProperty(a, key, { + value: bind(val, thisArg), + writable: true, + enumerable: true, + configurable: true + }); + } else { + Object.defineProperty(a, key, { + value: val, + writable: true, + enumerable: true, + configurable: true + }); + } + }, { + allOwnKeys + }); return a; }; @@ -136478,7 +136355,7 @@ const extend = (a, b, thisArg, { allOwnKeys } = {}) => { * * @returns {string} content value without BOM */ -const stripBOM = (content) => { +const stripBOM = content => { if (content.charCodeAt(0) === 0xfeff) { content = content.slice(1); } @@ -136495,18 +136372,15 @@ const stripBOM = (content) => { * @returns {void} */ const inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create( - superConstructor.prototype, - descriptors, - ); - Object.defineProperty(constructor.prototype, "constructor", { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + Object.defineProperty(constructor.prototype, 'constructor', { value: constructor, writable: true, enumerable: false, - configurable: true, + configurable: true }); - Object.defineProperty(constructor, "super", { - value: superConstructor.prototype, + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype }); props && Object.assign(constructor.prototype, props); }; @@ -136525,31 +136399,21 @@ const toFlatObject = (sourceObj, destObj, filter, propFilter) => { let i; let prop; const merged = {}; - destObj = destObj || {}; // eslint-disable-next-line no-eq-null,eqeqeq if (sourceObj == null) return destObj; - do { props = Object.getOwnPropertyNames(sourceObj); i = props.length; while (i-- > 0) { prop = props[i]; - if ( - (!propFilter || propFilter(prop, sourceObj, destObj)) && - !merged[prop] - ) { + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { destObj[prop] = sourceObj[prop]; merged[prop] = true; } } sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while ( - sourceObj && - (!filter || filter(sourceObj, destObj)) && - sourceObj !== Object.prototype - ); - + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); return destObj; }; @@ -136579,7 +136443,7 @@ const endsWith = (str, searchString, position) => { * * @returns {?Array} */ -const toArray = (thing) => { +const toArray = thing => { if (!thing) return null; if (isArray(thing)) return thing; let i = thing.length; @@ -136600,12 +136464,12 @@ const toArray = (thing) => { * @returns {Array} */ // eslint-disable-next-line func-names -const isTypedArray = ((TypedArray) => { +const isTypedArray = (TypedArray => { // eslint-disable-next-line func-names - return (thing) => { + return thing => { return TypedArray && thing instanceof TypedArray; }; -})(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array)); +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); /** * For each entry in the object, call the function with the key and value. @@ -136617,11 +136481,8 @@ const isTypedArray = ((TypedArray) => { */ const forEachEntry = (obj, fn) => { const generator = obj && obj[iterator]; - const _iterator = generator.call(obj); - let result; - while ((result = _iterator.next()) && !result.done) { const pair = result.value; fn.call(obj, pair[0], pair[1]); @@ -136639,31 +136500,24 @@ const forEachEntry = (obj, fn) => { const matchAll = (regExp, str) => { let matches; const arr = []; - while ((matches = regExp.exec(str)) !== null) { arr.push(matches); } - return arr; }; /* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ -const isHTMLForm = kindOfTest("HTMLFormElement"); - -const toCamelCase = (str) => { - return str - .toLowerCase() - .replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - }); +const isHTMLForm = kindOfTest('HTMLFormElement'); +const toCamelCase = str => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + }); }; /* Creating a function that will check if an object has a property. */ -const hasOwnProperty = ( - ({ hasOwnProperty }) => - (obj, prop) => - hasOwnProperty.call(obj, prop) -)(Object.prototype); +const hasOwnProperty = (({ + hasOwnProperty +}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); /** * Determine if a value is a RegExp object @@ -136672,19 +136526,16 @@ const hasOwnProperty = ( * * @returns {boolean} True if value is a RegExp object, otherwise false */ -const isRegExp = kindOfTest("RegExp"); - +const isRegExp = kindOfTest('RegExp'); const reduceDescriptors = (obj, reducer) => { const descriptors = Object.getOwnPropertyDescriptors(obj); const reducedDescriptors = {}; - forEach(descriptors, (descriptor, name) => { let ret; if ((ret = reducer(descriptor, name, obj)) !== false) { reducedDescriptors[name] = ret || descriptor; } }); - Object.defineProperties(obj, reducedDescriptors); }; @@ -136693,27 +136544,19 @@ const reduceDescriptors = (obj, reducer) => { * @param {Object} obj */ -const freezeMethods = (obj) => { +const freezeMethods = obj => { reduceDescriptors(obj, (descriptor, name) => { // skip restricted props in strict mode - if ( - isFunction$1(obj) && - ["arguments", "caller", "callee"].indexOf(name) !== -1 - ) { + if (isFunction$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { return false; } - const value = obj[name]; - if (!isFunction$1(value)) return; - descriptor.enumerable = false; - - if ("writable" in descriptor) { + if ('writable' in descriptor) { descriptor.writable = false; return; } - if (!descriptor.set) { descriptor.set = () => { throw Error("Can not rewrite read-only method '" + name + "'"); @@ -136722,28 +136565,27 @@ const freezeMethods = (obj) => { }); }; +/** + * Converts an array or a delimited string into an object set with values as keys and true as values. + * Useful for fast membership checks. + * + * @param {Array|string} arrayOrString - The array or string to convert. + * @param {string} delimiter - The delimiter to use if input is a string. + * @returns {Object} An object with keys from the array or string, values set to true. + */ const toObjectSet = (arrayOrString, delimiter) => { const obj = {}; - - const define = (arr) => { - arr.forEach((value) => { + const define = arr => { + arr.forEach(value => { obj[value] = true; }); }; - - isArray(arrayOrString) - ? define(arrayOrString) - : define(String(arrayOrString).split(delimiter)); - + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); return obj; }; - const noop = () => {}; - const toFiniteNumber = (value, defaultValue) => { - return value != null && Number.isFinite((value = +value)) - ? value - : defaultValue; + return value != null && Number.isFinite(value = +value) ? value : defaultValue; }; /** @@ -136754,17 +136596,17 @@ const toFiniteNumber = (value, defaultValue) => { * @returns {boolean} */ function isSpecCompliantForm(thing) { - return !!( - thing && - isFunction$1(thing.append) && - thing[toStringTag] === "FormData" && - thing[iterator] - ); + return !!(thing && isFunction$1(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]); } -const toJSONObject = (obj) => { +/** + * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. + * + * @param {Object} obj - The object to convert. + * @returns {Object} The JSON-compatible object. + */ +const toJSONObject = obj => { const stack = new Array(10); - const visit = (source, i) => { if (isObject(source)) { if (stack.indexOf(source) >= 0) { @@ -136775,74 +136617,81 @@ const toJSONObject = (obj) => { if (isBuffer(source)) { return source; } - - if (!("toJSON" in source)) { + if (!('toJSON' in source)) { stack[i] = source; const target = isArray(source) ? [] : {}; - forEach(source, (value, key) => { const reducedValue = visit(value, i + 1); !isUndefined(reducedValue) && (target[key] = reducedValue); }); - stack[i] = undefined; - return target; } } - return source; }; - return visit(obj, 0); }; -const isAsyncFn = kindOfTest("AsyncFunction"); +/** + * Determines if a value is an async function. + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is an async function, otherwise false. + */ +const isAsyncFn = kindOfTest('AsyncFunction'); -const isThenable = (thing) => - thing && - (isObject(thing) || isFunction$1(thing)) && - isFunction$1(thing.then) && - isFunction$1(thing.catch); +/** + * Determines if a value is thenable (has then and catch methods). + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is thenable, otherwise false. + */ +const isThenable = thing => thing && (isObject(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing.catch); // original code // https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 +/** + * Provides a cross-platform setImmediate implementation. + * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. + * + * @param {boolean} setImmediateSupported - Whether setImmediate is supported. + * @param {boolean} postMessageSupported - Whether postMessage is supported. + * @returns {Function} A function to schedule a callback asynchronously. + */ const _setImmediate = ((setImmediateSupported, postMessageSupported) => { if (setImmediateSupported) { return setImmediate; } + return postMessageSupported ? ((token, callbacks) => { + _global.addEventListener('message', ({ + source, + data + }) => { + if (source === _global && data === token) { + callbacks.length && callbacks.shift()(); + } + }, false); + return cb => { + callbacks.push(cb); + _global.postMessage(token, '*'); + }; + })(`axios@${Math.random()}`, []) : cb => setTimeout(cb); +})(typeof setImmediate === 'function', isFunction$1(_global.postMessage)); - return postMessageSupported - ? ((token, callbacks) => { - _global.addEventListener( - "message", - ({ source, data }) => { - if (source === _global && data === token) { - callbacks.length && callbacks.shift()(); - } - }, - false, - ); - - return (cb) => { - callbacks.push(cb); - _global.postMessage(token, "*"); - }; - })(`axios@${Math.random()}`, []) - : (cb) => setTimeout(cb); -})(typeof setImmediate === "function", isFunction$1(_global.postMessage)); - -const asap = - typeof queueMicrotask !== "undefined" - ? queueMicrotask.bind(_global) - : (typeof process !== "undefined" && process.nextTick) || _setImmediate; +/** + * Schedules a microtask or asynchronous callback as soon as possible. + * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. + * + * @type {Function} + */ +const asap = typeof queueMicrotask !== 'undefined' ? queueMicrotask.bind(_global) : typeof process !== 'undefined' && process.nextTick || _setImmediate; // ********************* -const isIterable = (thing) => thing != null && isFunction$1(thing[iterator]); - -const utils$1 = { +const isIterable = thing => thing != null && isFunction$1(thing[iterator]); +var utils$1 = { isArray, isArrayBuffer, isBuffer, @@ -136861,6 +136710,8 @@ const utils$1 = { isUndefined, isDate, isFile, + isReactNativeBlob, + isReactNative, isBlob, isRegExp, isFunction: isFunction$1, @@ -136883,7 +136734,8 @@ const utils$1 = { matchAll, isHTMLForm, hasOwnProperty, - hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + hasOwnProp: hasOwnProperty, + // an alias to avoid ESLint no-prototype-builtins detection reduceDescriptors, freezeMethods, toObjectSet, @@ -136899,61 +136751,75 @@ const utils$1 = { isThenable, setImmediate: _setImmediate, asap, - isIterable, + isIterable }; class AxiosError extends Error { - static from(error, code, config, request, response, customProps) { - const axiosError = new AxiosError(error.message, code || error.code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - customProps && Object.assign(axiosError, customProps); - return axiosError; - } + static from(error, code, config, request, response, customProps) { + const axiosError = new AxiosError(error.message, code || error.code, config, request, response); + axiosError.cause = error; + axiosError.name = error.name; - /** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ - constructor(message, code, config, request, response) { - super(message); - this.name = 'AxiosError'; - this.isAxiosError = true; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - if (response) { - this.response = response; - this.status = response.status; - } + // Preserve status from the original error if not already set from response + if (error.status != null && axiosError.status == null) { + axiosError.status = error.status; } + customProps && Object.assign(axiosError, customProps); + return axiosError; + } - toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils$1.toJSONObject(this.config), - code: this.code, - status: this.status, - }; + /** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ + constructor(message, code, config, request, response) { + super(message); + + // Make message enumerable to maintain backward compatibility + // The native Error constructor sets message as non-enumerable, + // but axios < v1.13.3 had it as enumerable + Object.defineProperty(this, 'message', { + value: message, + enumerable: true, + writable: true, + configurable: true + }); + this.name = 'AxiosError'; + this.isAxiosError = true; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + if (response) { + this.response = response; + this.status = response.status; } + } + toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.status + }; + } } // This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. @@ -136970,8 +136836,6 @@ AxiosError.ERR_CANCELED = 'ERR_CANCELED'; AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL'; -const AxiosError$1 = AxiosError; - /** * Determines if the given thing is a array or js object. * @@ -137022,7 +136886,6 @@ function renderKey(path, key, dots) { function isFlatArray(arr) { return utils$1.isArray(arr) && !arr.some(isVisitable); } - const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { return /^is[A-Z]/.test(prop); }); @@ -137056,7 +136919,7 @@ function toFormData(obj, formData, options) { } // eslint-disable-next-line no-param-reassign - formData = formData || new (FormData__default["default"] || FormData)(); + formData = formData || new (FormData$1 || FormData)(); // eslint-disable-next-line no-param-reassign options = utils$1.toFlatObject(options, { @@ -137067,7 +136930,6 @@ function toFormData(obj, formData, options) { // eslint-disable-next-line no-eq-null,eqeqeq return !utils$1.isUndefined(source[option]); }); - const metaTokens = options.metaTokens; // eslint-disable-next-line no-use-before-define const visitor = options.visitor || defaultVisitor; @@ -137075,30 +136937,23 @@ function toFormData(obj, formData, options) { const indexes = options.indexes; const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); - if (!utils$1.isFunction(visitor)) { throw new TypeError('visitor must be a function'); } - function convertValue(value) { if (value === null) return ''; - if (utils$1.isDate(value)) { return value.toISOString(); } - if (utils$1.isBoolean(value)) { return value.toString(); } - if (!useBlob && utils$1.isBlob(value)) { - throw new AxiosError$1('Blob is not supported. Use a Buffer instead.'); + throw new AxiosError('Blob is not supported. Use a Buffer instead.'); } - if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); } - return value; } @@ -137114,76 +136969,57 @@ function toFormData(obj, formData, options) { */ function defaultVisitor(value, key, path) { let arr = value; - + if (utils$1.isReactNative(formData) && utils$1.isReactNativeBlob(value)) { + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } if (value && !path && typeof value === 'object') { if (utils$1.endsWith(key, '{}')) { // eslint-disable-next-line no-param-reassign key = metaTokens ? key : key.slice(0, -2); // eslint-disable-next-line no-param-reassign value = JSON.stringify(value); - } else if ( - (utils$1.isArray(value) && isFlatArray(value)) || - ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)) - )) { + } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))) { // eslint-disable-next-line no-param-reassign key = removeBrackets(key); - arr.forEach(function each(el, index) { !(utils$1.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), - convertValue(el) - ); + // eslint-disable-next-line no-nested-ternary + indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + '[]', convertValue(el)); }); return false; } } - if (isVisitable(value)) { return true; } - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; } - const stack = []; - const exposedHelpers = Object.assign(predicates, { defaultVisitor, convertValue, isVisitable }); - function build(value, path) { if (utils$1.isUndefined(value)) return; - if (stack.indexOf(value) !== -1) { throw Error('Circular reference detected in ' + path.join('.')); } - stack.push(value); - utils$1.forEach(value, function each(el, key) { - const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( - formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers - ); - + const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers); if (result === true) { build(el, path ? path.concat(key) : [key]); } }); - stack.pop(); } - if (!utils$1.isObject(obj)) { throw new TypeError('data must be an object'); } - build(obj); - return formData; } @@ -137220,40 +137056,31 @@ function encode$1(str) { */ function AxiosURLSearchParams(params, options) { this._pairs = []; - params && toFormData(params, this, options); } - const prototype = AxiosURLSearchParams.prototype; - prototype.append = function append(name, value) { this._pairs.push([name, value]); }; - prototype.toString = function toString(encoder) { - const _encode = encoder ? function(value) { + const _encode = encoder ? function (value) { return encoder.call(this, value, encode$1); } : encode$1; - return this._pairs.map(function each(pair) { return _encode(pair[0]) + '=' + _encode(pair[1]); }, '').join('&'); }; /** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts + * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with + * their plain counterparts (`:`, `$`, `,`, `+`). * * @param {string} val The value to be encoded. * * @returns {string} The encoded value. */ function encode(val) { - return encodeURIComponent(val). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'); + return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+'); } /** @@ -137269,34 +137096,24 @@ function buildURL(url, params, options) { if (!params) { return url; } - const _encode = options && options.encode || encode; - const _options = utils$1.isFunction(options) ? { serialize: options } : options; - const serializeFn = _options && _options.serialize; - let serializedParams; - if (serializeFn) { serializedParams = serializeFn(params, _options); } else { - serializedParams = utils$1.isURLSearchParams(params) ? - params.toString() : - new AxiosURLSearchParams(params, _options).toString(_encode); + serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, _options).toString(_encode); } - if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); - + const hashmarkIndex = url.indexOf('#'); if (hashmarkIndex !== -1) { url = url.slice(0, hashmarkIndex); } url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; } - return url; } @@ -137367,54 +137184,47 @@ class InterceptorManager { } } -const InterceptorManager$1 = InterceptorManager; - -const transitionalDefaults = { +var transitionalDefaults = { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false, legacyInterceptorReqResOrdering: true }; -const URLSearchParams = url__default["default"].URLSearchParams; +var URLSearchParams = url.URLSearchParams; const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; - const DIGIT = '0123456789'; - const ALPHABET = { DIGIT, ALPHA, ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT }; - const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { let str = ''; - const {length} = alphabet; + const { + length + } = alphabet; const randomValues = new Uint32Array(size); - crypto__default["default"].randomFillSync(randomValues); + crypto.randomFillSync(randomValues); for (let i = 0; i < size; i++) { str += alphabet[randomValues[i] % length]; } - return str; }; - - -const platform$1 = { +var platform$1 = { isNode: true, classes: { URLSearchParams, - FormData: FormData__default["default"], + FormData: FormData$1, Blob: typeof Blob !== 'undefined' && Blob || null }, ALPHABET, generateString, - protocols: [ 'http', 'https', 'file', 'data' ] + protocols: ['http', 'https', 'file', 'data'] }; const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - const _navigator = typeof navigator === 'object' && navigator || undefined; /** @@ -137434,8 +137244,7 @@ const _navigator = typeof navigator === 'object' && navigator || undefined; * * @returns {boolean} */ -const hasStandardBrowserEnv = hasBrowserEnv && - (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); +const hasStandardBrowserEnv = hasBrowserEnv && (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); /** * Determine if we're running in a standard browser webWorker environment @@ -137447,38 +137256,33 @@ const hasStandardBrowserEnv = hasBrowserEnv && * This leads to a problem when axios post `FormData` in webWorker */ const hasStandardBrowserWebWorkerEnv = (() => { - return ( - typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && - typeof self.importScripts === 'function' - ); + return typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && typeof self.importScripts === 'function'; })(); - const origin = hasBrowserEnv && window.location.href || 'http://localhost'; -const utils = /*#__PURE__*/Object.freeze({ +var utils = /*#__PURE__*/Object.freeze({ __proto__: null, hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, hasStandardBrowserEnv: hasStandardBrowserEnv, + hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, navigator: _navigator, origin: origin }); -const platform = { +var platform = { ...utils, ...platform$1 }; function toURLEncodedForm(data, options) { return toFormData(data, new platform.classes.URLSearchParams(), { - visitor: function(value, key, path, helpers) { + visitor: function (value, key, path, helpers) { if (platform.isNode && utils$1.isBuffer(value)) { this.append(key, value.toString('base64')); return false; } - return helpers.defaultVisitor.apply(this, arguments); }, ...options @@ -137532,46 +137336,34 @@ function arrayToObject(arr) { function formDataToJSON(formData) { function buildPath(path, value, target, index) { let name = path[index++]; - if (name === '__proto__') return true; - const isNumericKey = Number.isFinite(+name); const isLast = index >= path.length; name = !name && utils$1.isArray(target) ? target.length : name; - if (isLast) { if (utils$1.hasOwnProp(target, name)) { target[name] = [target[name], value]; } else { target[name] = value; } - return !isNumericKey; } - if (!target[name] || !utils$1.isObject(target[name])) { target[name] = []; } - const result = buildPath(path, value, target[name], index); - if (result && utils$1.isArray(target[name])) { target[name] = arrayToObject(target[name]); } - return !isNumericKey; } - if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { const obj = {}; - utils$1.forEachEntry(formData, (name, value) => { buildPath(parsePropPath(name), value, obj, 0); }); - return obj; } - return null; } @@ -137596,38 +137388,23 @@ function stringifySafely(rawValue, parser, encoder) { } } } - return (encoder || JSON.stringify)(rawValue); } - const defaults = { - transitional: transitionalDefaults, - adapter: ['xhr', 'http', 'fetch'], - transformRequest: [function transformRequest(data, headers) { const contentType = headers.getContentType() || ''; const hasJSONContentType = contentType.indexOf('application/json') > -1; const isObjectPayload = utils$1.isObject(data); - if (isObjectPayload && utils$1.isHTMLForm(data)) { data = new FormData(data); } - const isFormData = utils$1.isFormData(data); - if (isFormData) { return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; } - - if (utils$1.isArrayBuffer(data) || - utils$1.isBuffer(data) || - utils$1.isStream(data) || - utils$1.isFile(data) || - utils$1.isBlob(data) || - utils$1.isReadableStream(data) - ) { + if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data) || utils$1.isReadableStream(data)) { return data; } if (utils$1.isArrayBufferView(data)) { @@ -137637,104 +137414,77 @@ const defaults = { headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); return data.toString(); } - let isFileList; - if (isObjectPayload) { if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { return toURLEncodedForm(data, this.formSerializer).toString(); } - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { const _FormData = this.env && this.env.FormData; - - return toFormData( - isFileList ? {'files[]': data} : data, - _FormData && new _FormData(), - this.formSerializer - ); + return toFormData(isFileList ? { + 'files[]': data + } : data, _FormData && new _FormData(), this.formSerializer); } } - - if (isObjectPayload || hasJSONContentType ) { + if (isObjectPayload || hasJSONContentType) { headers.setContentType('application/json', false); return stringifySafely(data); } - return data; }], - transformResponse: [function transformResponse(data) { const transitional = this.transitional || defaults.transitional; const forcedJSONParsing = transitional && transitional.forcedJSONParsing; const JSONRequested = this.responseType === 'json'; - if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { return data; } - - if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { + if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { const silentJSONParsing = transitional && transitional.silentJSONParsing; const strictJSONParsing = !silentJSONParsing && JSONRequested; - try { return JSON.parse(data, this.parseReviver); } catch (e) { if (strictJSONParsing) { if (e.name === 'SyntaxError') { - throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response); + throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); } throw e; } } } - return data; }], - /** * A timeout in milliseconds to abort a request. If set to 0 (default) a * timeout is not created. */ timeout: 0, - xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', - maxContentLength: -1, maxBodyLength: -1, - env: { FormData: platform.classes.FormData, Blob: platform.classes.Blob }, - validateStatus: function validateStatus(status) { return status >= 200 && status < 300; }, - headers: { common: { - 'Accept': 'application/json, text/plain, */*', + Accept: 'application/json, text/plain, */*', 'Content-Type': undefined } } }; - -utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { +utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], method => { defaults.headers[method] = {}; }); -const defaults$1 = defaults; - // RawAxiosHeaders whose duplicates are ignored by node // c.f. https://nodejs.org/api/http.html#http_message_headers -const ignoreDuplicateOf = utils$1.toObjectSet([ - 'age', 'authorization', 'content-length', 'content-type', 'etag', - 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', - 'last-modified', 'location', 'max-forwards', 'proxy-authorization', - 'referer', 'retry-after', 'user-agent' -]); +const ignoreDuplicateOf = utils$1.toObjectSet(['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent']); /** * Parse headers into an object @@ -137750,21 +137500,18 @@ const ignoreDuplicateOf = utils$1.toObjectSet([ * * @returns {Object} Headers parsed into an object */ -const parseHeaders = rawHeaders => { +var parseHeaders = rawHeaders => { const parsed = {}; let key; let val; let i; - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { i = line.indexOf(':'); key = line.substring(0, i).trim().toLowerCase(); val = line.substring(i + 1).trim(); - - if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + if (!key || parsed[key] && ignoreDuplicateOf[key]) { return; } - if (key === 'set-cookie') { if (parsed[key]) { parsed[key].push(val); @@ -137775,320 +137522,267 @@ const parseHeaders = rawHeaders => { parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; } }); - return parsed; }; const $internals = Symbol('internals'); - +const isValidHeaderValue = value => !/[\r\n]/.test(value); +function assertValidHeaderValue(value, header) { + if (value === false || value == null) { + return; + } + if (utils$1.isArray(value)) { + value.forEach(v => assertValidHeaderValue(v, header)); + return; + } + if (!isValidHeaderValue(String(value))) { + throw new Error(`Invalid character in header content ["${header}"]`); + } +} function normalizeHeader(header) { return header && String(header).trim().toLowerCase(); } - +function stripTrailingCRLF(str) { + let end = str.length; + while (end > 0) { + const charCode = str.charCodeAt(end - 1); + if (charCode !== 10 && charCode !== 13) { + break; + } + end -= 1; + } + return end === str.length ? str : str.slice(0, end); +} function normalizeValue(value) { if (value === false || value == null) { return value; } - - return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); + return utils$1.isArray(value) ? value.map(normalizeValue) : stripTrailingCRLF(String(value)); } - function parseTokens(str) { const tokens = Object.create(null); const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; let match; - - while ((match = tokensRE.exec(str))) { + while (match = tokensRE.exec(str)) { tokens[match[1]] = match[2]; } - return tokens; } - -const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - +const isValidHeaderName = str => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { if (utils$1.isFunction(filter)) { return filter.call(this, value, header); } - if (isHeaderNameFilter) { value = header; } - if (!utils$1.isString(value)) return; - if (utils$1.isString(filter)) { return value.indexOf(filter) !== -1; } - if (utils$1.isRegExp(filter)) { return filter.test(value); } } - function formatHeader(header) { - return header.trim() - .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { - return char.toUpperCase() + str; - }); + return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); } - function buildAccessors(obj, header) { const accessorName = utils$1.toCamelCase(' ' + header); - ['get', 'set', 'has'].forEach(methodName => { Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { + value: function (arg1, arg2, arg3) { return this[methodName].call(this, header, arg1, arg2, arg3); }, configurable: true }); }); } - class AxiosHeaders { constructor(headers) { headers && this.set(headers); } - set(header, valueOrRewrite, rewrite) { const self = this; - function setHeader(_value, _header, _rewrite) { const lHeader = normalizeHeader(_header); - if (!lHeader) { throw new Error('header name must be a non-empty string'); } - const key = utils$1.findKey(self, lHeader); - - if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { + if (!key || self[key] === undefined || _rewrite === true || _rewrite === undefined && self[key] !== false) { + assertValidHeaderValue(_value, _header); self[key || _header] = normalizeValue(_value); } } - - const setHeaders = (headers, _rewrite) => - utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); - + const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); if (utils$1.isPlainObject(header) || header instanceof this.constructor) { setHeaders(header, valueOrRewrite); - } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { setHeaders(parseHeaders(header), valueOrRewrite); } else if (utils$1.isObject(header) && utils$1.isIterable(header)) { - let obj = {}, dest, key; + let obj = {}, + dest, + key; for (const entry of header) { if (!utils$1.isArray(entry)) { throw TypeError('Object iterator must return a key-value pair'); } - - obj[key = entry[0]] = (dest = obj[key]) ? - (utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1]; + obj[key = entry[0]] = (dest = obj[key]) ? utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]] : entry[1]; } - setHeaders(obj, valueOrRewrite); } else { header != null && setHeader(valueOrRewrite, header, rewrite); } - return this; } - get(header, parser) { header = normalizeHeader(header); - if (header) { const key = utils$1.findKey(this, header); - if (key) { const value = this[key]; - if (!parser) { return value; } - if (parser === true) { return parseTokens(value); } - if (utils$1.isFunction(parser)) { return parser.call(this, value, key); } - if (utils$1.isRegExp(parser)) { return parser.exec(value); } - throw new TypeError('parser must be boolean|regexp|function'); } } } - has(header, matcher) { header = normalizeHeader(header); - if (header) { const key = utils$1.findKey(this, header); - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); } - return false; } - delete(header, matcher) { const self = this; let deleted = false; - function deleteHeader(_header) { _header = normalizeHeader(_header); - if (_header) { const key = utils$1.findKey(self, _header); - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { delete self[key]; - deleted = true; } } } - if (utils$1.isArray(header)) { header.forEach(deleteHeader); } else { deleteHeader(header); } - return deleted; } - clear(matcher) { const keys = Object.keys(this); let i = keys.length; let deleted = false; - while (i--) { const key = keys[i]; - if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { delete this[key]; deleted = true; } } - return deleted; } - normalize(format) { const self = this; const headers = {}; - utils$1.forEach(this, (value, header) => { const key = utils$1.findKey(headers, header); - if (key) { self[key] = normalizeValue(value); delete self[header]; return; } - const normalized = format ? formatHeader(header) : String(header).trim(); - if (normalized !== header) { delete self[header]; } - self[normalized] = normalizeValue(value); - headers[normalized] = true; }); - return this; } - concat(...targets) { return this.constructor.concat(this, ...targets); } - toJSON(asStrings) { const obj = Object.create(null); - utils$1.forEach(this, (value, header) => { value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); }); - return obj; } - [Symbol.iterator]() { return Object.entries(this.toJSON())[Symbol.iterator](); } - toString() { return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); } - getSetCookie() { - return this.get("set-cookie") || []; + return this.get('set-cookie') || []; } - get [Symbol.toStringTag]() { return 'AxiosHeaders'; } - static from(thing) { return thing instanceof this ? thing : new this(thing); } - static concat(first, ...targets) { const computed = new this(first); - - targets.forEach((target) => computed.set(target)); - + targets.forEach(target => computed.set(target)); return computed; } - static accessor(header) { - const internals = this[$internals] = (this[$internals] = { + const internals = this[$internals] = this[$internals] = { accessors: {} - }); - + }; const accessors = internals.accessors; const prototype = this.prototype; - function defineAccessor(_header) { const lHeader = normalizeHeader(_header); - if (!accessors[lHeader]) { buildAccessors(prototype, _header); accessors[lHeader] = true; } } - utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - return this; } } - AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); // reserved names hotfix -utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { +utils$1.reduceDescriptors(AxiosHeaders.prototype, ({ + value +}, key) => { let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` return { get: () => value, set(headerValue) { this[mapped] = headerValue; } - } + }; }); - utils$1.freezeMethods(AxiosHeaders); -const AxiosHeaders$1 = AxiosHeaders; - /** * Transform the data for a request or a response * @@ -138098,17 +137792,14 @@ const AxiosHeaders$1 = AxiosHeaders; * @returns {*} The resulting transformed data */ function transformData(fns, response) { - const config = this || defaults$1; + const config = this || defaults; const context = response || config; - const headers = AxiosHeaders$1.from(context.headers); + const headers = AxiosHeaders.from(context.headers); let data = context.data; - utils$1.forEach(fns, function transform(fn) { data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); }); - headers.normalize(); - return data; } @@ -138116,7 +137807,7 @@ function isCancel(value) { return !!(value && value.__CANCEL__); } -class CanceledError extends AxiosError$1 { +class CanceledError extends AxiosError { /** * A `CanceledError` is an object that is thrown when an operation is canceled. * @@ -138127,14 +137818,12 @@ class CanceledError extends AxiosError$1 { * @returns {CanceledError} The created error. */ constructor(message, config, request) { - super(message == null ? 'canceled' : message, AxiosError$1.ERR_CANCELED, config, request); + super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); this.name = 'CanceledError'; this.__CANCEL__ = true; } } -const CanceledError$1 = CanceledError; - /** * Resolve or reject a Promise based on response status. * @@ -138149,13 +137838,7 @@ function settle(resolve, reject, response) { if (!response.status || !validateStatus || validateStatus(response.status)) { resolve(response); } else { - reject(new AxiosError$1( - 'Request failed with status code ' + response.status, - [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], - response.config, - response.request, - response - )); + reject(new AxiosError('Request failed with status code ' + response.status, [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response)); } } @@ -138173,7 +137856,6 @@ function isAbsoluteURL(url) { if (typeof url !== 'string') { return false; } - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); } @@ -138186,9 +137868,7 @@ function isAbsoluteURL(url) { * @returns {string} The combined URL */ function combineURLs(baseURL, relativeURL) { - return relativeURL - ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') - : baseURL; + return relativeURL ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL; } /** @@ -138209,7 +137889,103 @@ function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { return requestedURL; } -const VERSION = "1.13.5"; +var DEFAULT_PORTS$1 = { + ftp: 21, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443 +}; +function parseUrl(urlString) { + try { + return new URL(urlString); + } catch { + return null; + } +} + +/** + * @param {string|object|URL} url - The URL as a string or URL instance, or a + * compatible object (such as the result from legacy url.parse). + * @return {string} The URL of the proxy that should handle the request to the + * given URL. If no proxy is set, this will be an empty string. + */ +function getProxyForUrl(url) { + var parsedUrl = (typeof url === 'string' ? parseUrl(url) : url) || {}; + var proto = parsedUrl.protocol; + var hostname = parsedUrl.host; + var port = parsedUrl.port; + if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { + return ''; // Don't proxy URLs without a valid scheme or host. + } + proto = proto.split(':', 1)[0]; + // Stripping ports in this way instead of using parsedUrl.hostname to make + // sure that the brackets around IPv6 addresses are kept. + hostname = hostname.replace(/:\d*$/, ''); + port = parseInt(port) || DEFAULT_PORTS$1[proto] || 0; + if (!shouldProxy(hostname, port)) { + return ''; // Don't proxy URLs that match NO_PROXY. + } + var proxy = getEnv(proto + '_proxy') || getEnv('all_proxy'); + if (proxy && proxy.indexOf('://') === -1) { + // Missing scheme in proxy, default to the requested URL's scheme. + proxy = proto + '://' + proxy; + } + return proxy; +} + +/** + * Determines whether a given URL should be proxied. + * + * @param {string} hostname - The host name of the URL. + * @param {number} port - The effective port of the URL. + * @returns {boolean} Whether the given URL should be proxied. + * @private + */ +function shouldProxy(hostname, port) { + var NO_PROXY = getEnv('no_proxy').toLowerCase(); + if (!NO_PROXY) { + return true; // Always proxy if NO_PROXY is not set. + } + if (NO_PROXY === '*') { + return false; // Never proxy if wildcard is set. + } + return NO_PROXY.split(/[,\s]/).every(function (proxy) { + if (!proxy) { + return true; // Skip zero-length hosts. + } + var parsedProxy = proxy.match(/^(.+):(\d+)$/); + var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; + var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; + if (parsedProxyPort && parsedProxyPort !== port) { + return true; // Skip if ports don't match. + } + if (!/^[.*]/.test(parsedProxyHostname)) { + // No wildcards, so stop proxying if there is an exact match. + return hostname !== parsedProxyHostname; + } + if (parsedProxyHostname.charAt(0) === '*') { + // Remove leading wildcard. + parsedProxyHostname = parsedProxyHostname.slice(1); + } + // Stop proxying if the hostname ends with the no_proxy host. + return !hostname.endsWith(parsedProxyHostname); + }); +} + +/** + * Get the value for an environment variable. + * + * @param {string} key - The name of the environment variable. + * @return {string} The value of the environment variable. + * @private + */ +function getEnv(key) { + return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; +} + +const VERSION = "1.15.0"; function parseProtocol(url) { const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); @@ -138231,42 +138007,34 @@ const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; function fromDataURI(uri, asBlob, options) { const _Blob = options && options.Blob || platform.classes.Blob; const protocol = parseProtocol(uri); - if (asBlob === undefined && _Blob) { asBlob = true; } - if (protocol === 'data') { uri = protocol.length ? uri.slice(protocol.length + 1) : uri; - const match = DATA_URL_PATTERN.exec(uri); - if (!match) { - throw new AxiosError$1('Invalid URL', AxiosError$1.ERR_INVALID_URL); + throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); } - const mime = match[1]; const isBase64 = match[2]; const body = match[3]; const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); - if (asBlob) { if (!_Blob) { - throw new AxiosError$1('Blob is not supported', AxiosError$1.ERR_NOT_SUPPORT); + throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); } - - return new _Blob([buffer], {type: mime}); + return new _Blob([buffer], { + type: mime + }); } - return buffer; } - - throw new AxiosError$1('Unsupported protocol ' + protocol, AxiosError$1.ERR_NOT_SUPPORT); + throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); } const kInternals = Symbol('internals'); - -class AxiosTransformStream extends stream__default["default"].Transform{ +class AxiosTransformStream extends stream.Transform { constructor(options) { options = utils$1.toFlatObject(options, { maxRate: 0, @@ -138278,11 +138046,9 @@ class AxiosTransformStream extends stream__default["default"].Transform{ }, null, (prop, source) => { return !utils$1.isUndefined(source[prop]); }); - super({ readableHighWaterMark: options.chunkSize }); - const internals = this[kInternals] = { timeWindow: options.timeWindow, chunkSize: options.chunkSize, @@ -138295,7 +138061,6 @@ class AxiosTransformStream extends stream__default["default"].Transform{ bytes: 0, onReadCallback: null }; - this.on('newListener', event => { if (event === 'progress') { if (!internals.isCaptured) { @@ -138304,36 +138069,26 @@ class AxiosTransformStream extends stream__default["default"].Transform{ } }); } - _read(size) { const internals = this[kInternals]; - if (internals.onReadCallback) { internals.onReadCallback(); } - return super._read(size); } - _transform(chunk, encoding, callback) { const internals = this[kInternals]; const maxRate = internals.maxRate; - const readableHighWaterMark = this.readableHighWaterMark; - const timeWindow = internals.timeWindow; - const divider = 1000 / timeWindow; - const bytesThreshold = (maxRate / divider); + const bytesThreshold = maxRate / divider; const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; - const pushChunk = (_chunk, _callback) => { const bytes = Buffer.byteLength(_chunk); internals.bytesSeen += bytes; internals.bytes += bytes; - internals.isCaptured && this.emit('progress', internals.bytesSeen); - if (this.push(_chunk)) { process.nextTick(_callback); } else { @@ -138343,27 +138098,22 @@ class AxiosTransformStream extends stream__default["default"].Transform{ }; } }; - const transformChunk = (_chunk, _callback) => { const chunkSize = Buffer.byteLength(_chunk); let chunkRemainder = null; let maxChunkSize = readableHighWaterMark; let bytesLeft; let passed = 0; - if (maxRate) { const now = Date.now(); - - if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) { + if (!internals.ts || (passed = now - internals.ts) >= timeWindow) { internals.ts = now; bytesLeft = bytesThreshold - internals.bytes; internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; passed = 0; } - bytesLeft = bytesThreshold - internals.bytes; } - if (maxRate) { if (bytesLeft <= 0) { // next time window @@ -138371,27 +138121,22 @@ class AxiosTransformStream extends stream__default["default"].Transform{ _callback(null, _chunk); }, timeWindow - passed); } - if (bytesLeft < maxChunkSize) { maxChunkSize = bytesLeft; } } - - if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) { + if (maxChunkSize && chunkSize > maxChunkSize && chunkSize - maxChunkSize > minChunkSize) { chunkRemainder = _chunk.subarray(maxChunkSize); _chunk = _chunk.subarray(0, maxChunkSize); } - pushChunk(_chunk, chunkRemainder ? () => { process.nextTick(_callback, null, chunkRemainder); } : _callback); }; - transformChunk(chunk, function transformNextChunk(err, _chunk) { if (err) { return callback(err); } - if (_chunk) { transformChunk(_chunk, transformNextChunk); } else { @@ -138401,10 +138146,9 @@ class AxiosTransformStream extends stream__default["default"].Transform{ } } -const AxiosTransformStream$1 = AxiosTransformStream; - -const {asyncIterator} = Symbol; - +const { + asyncIterator +} = Symbol; const readBlob = async function* (blob) { if (blob.stream) { yield* blob.stream(); @@ -138417,144 +138161,113 @@ const readBlob = async function* (blob) { } }; -const readBlob$1 = readBlob; - const BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_'; - -const textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util__default["default"].TextEncoder(); - +const textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util.TextEncoder(); const CRLF = '\r\n'; const CRLF_BYTES = textEncoder.encode(CRLF); const CRLF_BYTES_COUNT = 2; - class FormDataPart { constructor(name, value) { - const {escapeName} = this.constructor; + const { + escapeName + } = this.constructor; const isStringValue = utils$1.isString(value); - - let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ - !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' - }${CRLF}`; - + let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${!isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : ''}${CRLF}`; if (isStringValue) { value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); } else { - headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}`; + headers += `Content-Type: ${value.type || 'application/octet-stream'}${CRLF}`; } - this.headers = textEncoder.encode(headers + CRLF); - this.contentLength = isStringValue ? value.byteLength : value.size; - this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; - this.name = name; this.value = value; } - - async *encode(){ + async *encode() { yield this.headers; - - const {value} = this; - - if(utils$1.isTypedArray(value)) { + const { + value + } = this; + if (utils$1.isTypedArray(value)) { yield value; } else { - yield* readBlob$1(value); + yield* readBlob(value); } - yield CRLF_BYTES; } - static escapeName(name) { - return String(name).replace(/[\r\n"]/g, (match) => ({ - '\r' : '%0D', - '\n' : '%0A', - '"' : '%22', - }[match])); + return String(name).replace(/[\r\n"]/g, match => ({ + '\r': '%0D', + '\n': '%0A', + '"': '%22' + })[match]); } } - const formDataToStream = (form, headersHandler, options) => { const { tag = 'form-data-boundary', size = 25, boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET) } = options || {}; - - if(!utils$1.isFormData(form)) { + if (!utils$1.isFormData(form)) { throw TypeError('FormData instance required'); } - if (boundary.length < 1 || boundary.length > 70) { - throw Error('boundary must be 10-70 characters long') + throw Error('boundary must be 10-70 characters long'); } - const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF); let contentLength = footerBytes.byteLength; - const parts = Array.from(form.entries()).map(([name, value]) => { const part = new FormDataPart(name, value); contentLength += part.size; return part; }); - contentLength += boundaryBytes.byteLength * parts.length; - contentLength = utils$1.toFiniteNumber(contentLength); - const computedHeaders = { 'Content-Type': `multipart/form-data; boundary=${boundary}` }; - if (Number.isFinite(contentLength)) { computedHeaders['Content-Length'] = contentLength; } - headersHandler && headersHandler(computedHeaders); - - return stream.Readable.from((async function *() { - for(const part of parts) { + return stream.Readable.from(async function* () { + for (const part of parts) { yield boundaryBytes; yield* part.encode(); } - yield footerBytes; - })()); + }()); }; -const formDataToStream$1 = formDataToStream; - -class ZlibHeaderTransformStream extends stream__default["default"].Transform { +class ZlibHeaderTransformStream extends stream.Transform { __transform(chunk, encoding, callback) { this.push(chunk); callback(); } - _transform(chunk, encoding, callback) { if (chunk.length !== 0) { this._transform = this.__transform; // Add Default Compression headers if no zlib headers are present - if (chunk[0] !== 120) { // Hex: 78 + if (chunk[0] !== 120) { + // Hex: 78 const header = Buffer.alloc(2); header[0] = 120; // Hex: 78 - header[1] = 156; // Hex: 9C + header[1] = 156; // Hex: 9C this.push(header, encoding); } } - this.__transform(chunk, encoding, callback); } } -const ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream; - const callbackify = (fn, reducer) => { return utils$1.isAsyncFn(fn) ? function (...args) { const cb = args.pop(); - fn.apply(this, args).then((value) => { + fn.apply(this, args).then(value => { try { reducer ? cb(null, ...reducer(value)) : cb(null, value); } catch (err) { @@ -138564,7 +138277,81 @@ const callbackify = (fn, reducer) => { } : fn; }; -const callbackify$1 = callbackify; +const DEFAULT_PORTS = { + http: 80, + https: 443, + ws: 80, + wss: 443, + ftp: 21 +}; +const parseNoProxyEntry = entry => { + let entryHost = entry; + let entryPort = 0; + if (entryHost.charAt(0) === '[') { + const bracketIndex = entryHost.indexOf(']'); + if (bracketIndex !== -1) { + const host = entryHost.slice(1, bracketIndex); + const rest = entryHost.slice(bracketIndex + 1); + if (rest.charAt(0) === ':' && /^\d+$/.test(rest.slice(1))) { + entryPort = Number.parseInt(rest.slice(1), 10); + } + return [host, entryPort]; + } + } + const firstColon = entryHost.indexOf(':'); + const lastColon = entryHost.lastIndexOf(':'); + if (firstColon !== -1 && firstColon === lastColon && /^\d+$/.test(entryHost.slice(lastColon + 1))) { + entryPort = Number.parseInt(entryHost.slice(lastColon + 1), 10); + entryHost = entryHost.slice(0, lastColon); + } + return [entryHost, entryPort]; +}; +const normalizeNoProxyHost = hostname => { + if (!hostname) { + return hostname; + } + if (hostname.charAt(0) === '[' && hostname.charAt(hostname.length - 1) === ']') { + hostname = hostname.slice(1, -1); + } + return hostname.replace(/\.+$/, ''); +}; +function shouldBypassProxy(location) { + let parsed; + try { + parsed = new URL(location); + } catch (_err) { + return false; + } + const noProxy = (process.env.no_proxy || process.env.NO_PROXY || '').toLowerCase(); + if (!noProxy) { + return false; + } + if (noProxy === '*') { + return true; + } + const port = Number.parseInt(parsed.port, 10) || DEFAULT_PORTS[parsed.protocol.split(':', 1)[0]] || 0; + const hostname = normalizeNoProxyHost(parsed.hostname.toLowerCase()); + return noProxy.split(/[\s,]+/).some(entry => { + if (!entry) { + return false; + } + let [entryHost, entryPort] = parseNoProxyEntry(entry); + entryHost = normalizeNoProxyHost(entryHost); + if (!entryHost) { + return false; + } + if (entryPort && entryPort !== port) { + return false; + } + if (entryHost.charAt(0) === '*') { + entryHost = entryHost.slice(1); + } + if (entryHost.charAt(0) === '.') { + return hostname.endsWith(entryHost); + } + return hostname === entryHost; + }); +} /** * Calculate data maxRate @@ -138579,41 +138366,29 @@ function speedometer(samplesCount, min) { let head = 0; let tail = 0; let firstSampleTS; - min = min !== undefined ? min : 1000; - return function push(chunkLength) { const now = Date.now(); - const startedAt = timestamps[tail]; - if (!firstSampleTS) { firstSampleTS = now; } - bytes[head] = chunkLength; timestamps[head] = now; - let i = tail; let bytesCount = 0; - while (i !== head) { bytesCount += bytes[i++]; i = i % samplesCount; } - head = (head + 1) % samplesCount; - if (head === tail) { tail = (tail + 1) % samplesCount; } - if (now - firstSampleTS < min) { return; } - const passed = startedAt && now - startedAt; - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; }; } @@ -138629,7 +138404,6 @@ function throttle(fn, freq) { let threshold = 1000 / freq; let lastArgs; let timer; - const invoke = (args, now = Date.now()) => { timestamp = now; lastArgs = null; @@ -138639,11 +138413,10 @@ function throttle(fn, freq) { } fn(...args); }; - const throttled = (...args) => { const now = Date.now(); const passed = now - timestamp; - if ( passed >= threshold) { + if (passed >= threshold) { invoke(args, now); } else { lastArgs = args; @@ -138655,29 +138428,24 @@ function throttle(fn, freq) { } } }; - const flush = () => lastArgs && invoke(lastArgs); - return [throttled, flush]; } const progressEventReducer = (listener, isDownloadStream, freq = 3) => { let bytesNotified = 0; const _speedometer = speedometer(50, 250); - return throttle(e => { const loaded = e.loaded; const total = e.lengthComputable ? e.total : undefined; const progressBytes = loaded - bytesNotified; const rate = _speedometer(progressBytes); const inRange = loaded <= total; - bytesNotified = loaded; - const data = { loaded, total, - progress: total ? (loaded / total) : undefined, + progress: total ? loaded / total : undefined, bytes: progressBytes, rate: rate ? rate : undefined, estimated: rate && total && inRange ? (total - loaded) / rate : undefined, @@ -138685,22 +138453,18 @@ const progressEventReducer = (listener, isDownloadStream, freq = 3) => { lengthComputable: total != null, [isDownloadStream ? 'download' : 'upload']: true }; - listener(data); }, freq); }; - const progressEventDecorator = (total, throttled) => { const lengthComputable = total != null; - - return [(loaded) => throttled[0]({ + return [loaded => throttled[0]({ lengthComputable, total, loaded }), throttled[1]]; }; - -const asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args)); +const asyncDecorator = fn => (...args) => utils$1.asap(() => fn(...args)); /** * Estimate decoded byte length of a data:// URL *without* allocating large buffers. @@ -138714,14 +138478,11 @@ const asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args)); function estimateDataURLDecodedBytes(url) { if (!url || typeof url !== 'string') return 0; if (!url.startsWith('data:')) return 0; - const comma = url.indexOf(','); if (comma < 0) return 0; - const meta = url.slice(5, comma); const body = url.slice(comma + 1); const isBase64 = /;base64/i.test(meta); - if (isBase64) { let effectiveLen = body.length; const len = body.length; // cache length @@ -138730,25 +138491,20 @@ function estimateDataURLDecodedBytes(url) { if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) { const a = body.charCodeAt(i + 1); const b = body.charCodeAt(i + 2); - const isHex = - ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) && - ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102)); - + const isHex = (a >= 48 && a <= 57 || a >= 65 && a <= 70 || a >= 97 && a <= 102) && (b >= 48 && b <= 57 || b >= 65 && b <= 70 || b >= 97 && b <= 102); if (isHex) { effectiveLen -= 2; i += 2; } } } - let pad = 0; let idx = len - 1; - - const tailIsPct3D = (j) => - j >= 2 && - body.charCodeAt(j - 2) === 37 && // '%' - body.charCodeAt(j - 1) === 51 && // '3' - (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd' + const tailIsPct3D = j => j >= 2 && body.charCodeAt(j - 2) === 37 && + // '%' + body.charCodeAt(j - 1) === 51 && ( + // '3' + body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd' if (idx >= 0) { if (body.charCodeAt(idx) === 61 /* '=' */) { @@ -138759,7 +138515,6 @@ function estimateDataURLDecodedBytes(url) { idx -= 3; } } - if (pad === 1 && idx >= 0) { if (body.charCodeAt(idx) === 61 /* '=' */) { pad++; @@ -138767,80 +138522,62 @@ function estimateDataURLDecodedBytes(url) { pad++; } } - const groups = Math.floor(effectiveLen / 4); const bytes = groups * 3 - (pad || 0); return bytes > 0 ? bytes : 0; } - return Buffer.byteLength(body, 'utf8'); } const zlibOptions = { - flush: zlib__default["default"].constants.Z_SYNC_FLUSH, - finishFlush: zlib__default["default"].constants.Z_SYNC_FLUSH + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH }; - const brotliOptions = { - flush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH, - finishFlush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH + flush: zlib.constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH }; - -const isBrotliSupported = utils$1.isFunction(zlib__default["default"].createBrotliDecompress); - -const {http: httpFollow, https: httpsFollow} = followRedirects__default["default"]; - +const isBrotliSupported = utils$1.isFunction(zlib.createBrotliDecompress); +const { + http: httpFollow, + https: httpsFollow +} = followRedirects; const isHttps = /https:?/; - const supportedProtocols = platform.protocols.map(protocol => { return protocol + ':'; }); - - const flushOnFinish = (stream, [throttled, flush]) => { - stream - .on('end', flush) - .on('error', flush); - + stream.on('end', flush).on('error', flush); return throttled; }; - class Http2Sessions { constructor() { this.sessions = Object.create(null); } - getSession(authority, options) { options = Object.assign({ sessionTimeout: 1000 }, options); - let authoritySessions = this.sessions[authority]; - if (authoritySessions) { let len = authoritySessions.length; - for (let i = 0; i < len; i++) { const [sessionHandle, sessionOptions] = authoritySessions[i]; - if (!sessionHandle.destroyed && !sessionHandle.closed && util__default["default"].isDeepStrictEqual(sessionOptions, options)) { + if (!sessionHandle.destroyed && !sessionHandle.closed && util.isDeepStrictEqual(sessionOptions, options)) { return sessionHandle; } } } - - const session = http2__default["default"].connect(authority, options); - + const session = http2.connect(authority, options); let removed; - const removeSession = () => { if (removed) { return; } - removed = true; - - let entries = authoritySessions, len = entries.length, i = len; - + let entries = authoritySessions, + len = entries.length, + i = len; while (i--) { if (entries[i][0] === session) { if (len === 1) { @@ -138848,59 +138585,46 @@ class Http2Sessions { } else { entries.splice(i, 1); } + if (!session.closed) { + session.close(); + } return; } } }; - const originalRequestFn = session.request; - - const {sessionTimeout} = options; - - if(sessionTimeout != null) { - + const { + sessionTimeout + } = options; + if (sessionTimeout != null) { let timer; let streamsCount = 0; - session.request = function () { const stream = originalRequestFn.apply(this, arguments); - streamsCount++; - if (timer) { clearTimeout(timer); timer = null; } - stream.once('close', () => { - if (!--streamsCount) { + if (! --streamsCount) { timer = setTimeout(() => { timer = null; removeSession(); }, sessionTimeout); } }); - return stream; }; } - session.once('close', removeSession); - - let entry = [ - session, - options - ]; - - authoritySessions ? authoritySessions.push(entry) : authoritySessions = this.sessions[authority] = [entry]; - + let entry = [session, options]; + authoritySessions ? authoritySessions.push(entry) : authoritySessions = this.sessions[authority] = [entry]; return session; } } - const http2Sessions = new Http2Sessions(); - /** * If the proxy or config beforeRedirects functions are defined, call them with the options * object. @@ -138930,9 +138654,11 @@ function dispatchBeforeRedirect(options, responseDetails) { function setProxy(options, configProxy, location) { let proxy = configProxy; if (!proxy && proxy !== false) { - const proxyUrl = proxyFromEnv__default["default"].getProxyForUrl(location); + const proxyUrl = getProxyForUrl(location); if (proxyUrl) { - proxy = new URL(proxyUrl); + if (!shouldBypassProxy(location)) { + proxy = new URL(proxyUrl); + } } } if (proxy) { @@ -138940,22 +138666,19 @@ function setProxy(options, configProxy, location) { if (proxy.username) { proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); } - if (proxy.auth) { // Support proxy auth object form const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password); - if (validProxyAuth) { proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); } else if (typeof proxy.auth === 'object') { - throw new AxiosError$1('Invalid proxy authorization', AxiosError$1.ERR_BAD_OPTION, { proxy }); + throw new AxiosError('Invalid proxy authorization', AxiosError.ERR_BAD_OPTION, { + proxy + }); } - const base64 = Buffer.from(proxy.auth, 'utf8').toString('base64'); - options.headers['Proxy-Authorization'] = 'Basic ' + base64; } - options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); const proxyHost = proxy.hostname || proxy.host; options.hostname = proxyHost; @@ -138967,185 +138690,164 @@ function setProxy(options, configProxy, location) { options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; } } - options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { // Configure proxy for redirected request, passing the original config proxy to apply // the exact same logic as if the redirected request was performed by axios directly. setProxy(redirectOptions, configProxy, redirectOptions.href); }; } - const isHttpAdapterSupported = typeof process !== 'undefined' && utils$1.kindOf(process) === 'process'; // temporary hotfix -const wrapAsync = (asyncExecutor) => { +const wrapAsync = asyncExecutor => { return new Promise((resolve, reject) => { let onDone; let isDone; - const done = (value, isRejected) => { if (isDone) return; isDone = true; onDone && onDone(value, isRejected); }; - - const _resolve = (value) => { + const _resolve = value => { done(value); resolve(value); }; - - const _reject = (reason) => { + const _reject = reason => { done(reason, true); reject(reason); }; - - asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); - }) + asyncExecutor(_resolve, _reject, onDoneHandler => onDone = onDoneHandler).catch(_reject); + }); }; - -const resolveFamily = ({address, family}) => { +const resolveFamily = ({ + address, + family +}) => { if (!utils$1.isString(address)) { throw TypeError('address must be a string'); } - return ({ + return { address, family: family || (address.indexOf('.') < 0 ? 6 : 4) - }); + }; }; - -const buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : {address, family}); - +const buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : { + address, + family +}); const http2Transport = { request(options, cb) { - const authority = options.protocol + '//' + options.hostname + ':' + (options.port ||(options.protocol === 'https:' ? 443 : 80)); - - - const {http2Options, headers} = options; - - const session = http2Sessions.getSession(authority, http2Options); - - const { - HTTP2_HEADER_SCHEME, - HTTP2_HEADER_METHOD, - HTTP2_HEADER_PATH, - HTTP2_HEADER_STATUS - } = http2__default["default"].constants; - - const http2Headers = { - [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''), - [HTTP2_HEADER_METHOD]: options.method, - [HTTP2_HEADER_PATH]: options.path, - }; - - utils$1.forEach(headers, (header, name) => { - name.charAt(0) !== ':' && (http2Headers[name] = header); - }); - - const req = session.request(http2Headers); - - req.once('response', (responseHeaders) => { - const response = req; //duplex - - responseHeaders = Object.assign({}, responseHeaders); - - const status = responseHeaders[HTTP2_HEADER_STATUS]; - - delete responseHeaders[HTTP2_HEADER_STATUS]; - - response.headers = responseHeaders; - - response.statusCode = +status; - - cb(response); - }); - - return req; + const authority = options.protocol + '//' + options.hostname + ':' + (options.port || (options.protocol === 'https:' ? 443 : 80)); + const { + http2Options, + headers + } = options; + const session = http2Sessions.getSession(authority, http2Options); + const { + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_STATUS + } = http2.constants; + const http2Headers = { + [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''), + [HTTP2_HEADER_METHOD]: options.method, + [HTTP2_HEADER_PATH]: options.path + }; + utils$1.forEach(headers, (header, name) => { + name.charAt(0) !== ':' && (http2Headers[name] = header); + }); + const req = session.request(http2Headers); + req.once('response', responseHeaders => { + const response = req; //duplex + + responseHeaders = Object.assign({}, responseHeaders); + const status = responseHeaders[HTTP2_HEADER_STATUS]; + delete responseHeaders[HTTP2_HEADER_STATUS]; + response.headers = responseHeaders; + response.statusCode = +status; + cb(response); + }); + return req; } }; /*eslint consistent-return:0*/ -const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { +var httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { - let {data, lookup, family, httpVersion = 1, http2Options} = config; - const {responseType, responseEncoding} = config; + let { + data, + lookup, + family, + httpVersion = 1, + http2Options + } = config; + const { + responseType, + responseEncoding + } = config; const method = config.method.toUpperCase(); let isDone; let rejected = false; let req; - httpVersion = +httpVersion; - if (Number.isNaN(httpVersion)) { throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`); } - if (httpVersion !== 1 && httpVersion !== 2) { throw TypeError(`Unsupported protocol version '${httpVersion}'`); } - const isHttp2 = httpVersion === 2; - if (lookup) { - const _lookup = callbackify$1(lookup, (value) => utils$1.isArray(value) ? value : [value]); + const _lookup = callbackify(lookup, value => utils$1.isArray(value) ? value : [value]); // hotfix to support opt.all option which is required for node 20.x lookup = (hostname, opt, cb) => { _lookup(hostname, opt, (err, arg0, arg1) => { if (err) { return cb(err); } - const addresses = utils$1.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; - opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); }); }; } - const abortEmitter = new events.EventEmitter(); - function abort(reason) { try { - abortEmitter.emit('abort', !reason || reason.type ? new CanceledError$1(null, config, req) : reason); - } catch(err) { + abortEmitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason); + } catch (err) { console.warn('emit error', err); } } - abortEmitter.once('abort', reject); - const onFinished = () => { if (config.cancelToken) { config.cancelToken.unsubscribe(abort); } - if (config.signal) { config.signal.removeEventListener('abort', abort); } - abortEmitter.removeAllListeners(); }; - if (config.cancelToken || config.signal) { config.cancelToken && config.cancelToken.subscribe(abort); if (config.signal) { config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); } } - onDone((response, isRejected) => { isDone = true; - if (isRejected) { rejected = true; onFinished(); return; } - - const {data} = response; - - if (data instanceof stream__default["default"].Readable || data instanceof stream__default["default"].Duplex) { - const offListeners = stream__default["default"].finished(data, () => { + const { + data + } = response; + if (data instanceof stream.Readable || data instanceof stream.Duplex) { + const offListeners = stream.finished(data, () => { offListeners(); onFinished(); }); @@ -139154,33 +138856,21 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { } }); - - - - // Parse url const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined); const protocol = parsed.protocol || supportedProtocols[0]; - if (protocol === 'data:') { // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set. if (config.maxContentLength > -1) { // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed. const dataUrl = String(config.url || fullPath || ''); const estimated = estimateDataURLDecodedBytes(dataUrl); - if (estimated > config.maxContentLength) { - return reject(new AxiosError$1( - 'maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError$1.ERR_BAD_RESPONSE, - config - )); + return reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', AxiosError.ERR_BAD_RESPONSE, config)); } } - let convertedData; - if (method !== 'GET') { return settle(resolve, reject, { status: 405, @@ -139189,51 +138879,43 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { config }); } - try { convertedData = fromDataURI(config.url, responseType === 'blob', { Blob: config.env && config.env.Blob }); } catch (err) { - throw AxiosError$1.from(err, AxiosError$1.ERR_BAD_REQUEST, config); + throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); } - if (responseType === 'text') { convertedData = convertedData.toString(responseEncoding); - if (!responseEncoding || responseEncoding === 'utf8') { convertedData = utils$1.stripBOM(convertedData); } } else if (responseType === 'stream') { - convertedData = stream__default["default"].Readable.from(convertedData); + convertedData = stream.Readable.from(convertedData); } - return settle(resolve, reject, { data: convertedData, status: 200, statusText: 'OK', - headers: new AxiosHeaders$1(), + headers: new AxiosHeaders(), config }); } - if (supportedProtocols.indexOf(protocol) === -1) { - return reject(new AxiosError$1( - 'Unsupported protocol ' + protocol, - AxiosError$1.ERR_BAD_REQUEST, - config - )); + return reject(new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_BAD_REQUEST, config)); } - - const headers = AxiosHeaders$1.from(config.headers).normalize(); + const headers = AxiosHeaders.from(config.headers).normalize(); // Set User-Agent (required by some servers) // See https://github.com/axios/axios/issues/69 // User-Agent is specified; handle case where no UA header is desired // Only set header if it hasn't been set in config headers.set('User-Agent', 'axios/' + VERSION, false); - - const {onUploadProgress, onDownloadProgress} = config; + const { + onUploadProgress, + onDownloadProgress + } = config; const maxRate = config.maxRate; let maxUploadRate = undefined; let maxDownloadRate = undefined; @@ -139241,8 +138923,7 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // support for spec compliant FormData objects if (utils$1.isSpecCompliantForm(data)) { const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); - - data = formDataToStream$1(data, (formHeaders) => { + data = formDataToStream(data, formHeaders => { headers.set(formHeaders); }, { tag: `axios-${VERSION}-boundary`, @@ -139251,69 +138932,49 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // support for https://www.npmjs.com/package/form-data api } else if (utils$1.isFormData(data) && utils$1.isFunction(data.getHeaders)) { headers.set(data.getHeaders()); - if (!headers.hasContentLength()) { try { - const knownLength = await util__default["default"].promisify(data.getLength).call(data); + const knownLength = await util.promisify(data.getLength).call(data); Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); /*eslint no-empty:0*/ - } catch (e) { - } + } catch (e) {} } } else if (utils$1.isBlob(data) || utils$1.isFile(data)) { data.size && headers.setContentType(data.type || 'application/octet-stream'); headers.setContentLength(data.size || 0); - data = stream__default["default"].Readable.from(readBlob$1(data)); + data = stream.Readable.from(readBlob(data)); } else if (data && !utils$1.isStream(data)) { if (Buffer.isBuffer(data)) ; else if (utils$1.isArrayBuffer(data)) { data = Buffer.from(new Uint8Array(data)); } else if (utils$1.isString(data)) { data = Buffer.from(data, 'utf-8'); } else { - return reject(new AxiosError$1( - 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', - AxiosError$1.ERR_BAD_REQUEST, - config - )); + return reject(new AxiosError('Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', AxiosError.ERR_BAD_REQUEST, config)); } // Add Content-Length header if data exists headers.setContentLength(data.length, false); - if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { - return reject(new AxiosError$1( - 'Request body larger than maxBodyLength limit', - AxiosError$1.ERR_BAD_REQUEST, - config - )); + return reject(new AxiosError('Request body larger than maxBodyLength limit', AxiosError.ERR_BAD_REQUEST, config)); } } - const contentLength = utils$1.toFiniteNumber(headers.getContentLength()); - if (utils$1.isArray(maxRate)) { maxUploadRate = maxRate[0]; maxDownloadRate = maxRate[1]; } else { maxUploadRate = maxDownloadRate = maxRate; } - if (data && (onUploadProgress || maxUploadRate)) { if (!utils$1.isStream(data)) { - data = stream__default["default"].Readable.from(data, {objectMode: false}); + data = stream.Readable.from(data, { + objectMode: false + }); } - - data = stream__default["default"].pipeline([data, new AxiosTransformStream$1({ + data = stream.pipeline([data, new AxiosTransformStream({ maxRate: utils$1.toFiniteNumber(maxUploadRate) })], utils$1.noop); - - onUploadProgress && data.on('progress', flushOnFinish( - data, - progressEventDecorator( - contentLength, - progressEventReducer(asyncDecorator(onUploadProgress), false, 3) - ) - )); + onUploadProgress && data.on('progress', flushOnFinish(data, progressEventDecorator(contentLength, progressEventReducer(asyncDecorator(onUploadProgress), false, 3)))); } // HTTP basic authentication @@ -139323,23 +138984,15 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { const password = config.auth.password || ''; auth = username + ':' + password; } - if (!auth && parsed.username) { const urlUsername = parsed.username; const urlPassword = parsed.password; auth = urlUsername + ':' + urlPassword; } - auth && headers.delete('authorization'); - let path; - try { - path = buildURL( - parsed.pathname + parsed.search, - config.params, - config.paramsSerializer - ).replace(/^\?/, ''); + path = buildURL(parsed.pathname + parsed.search, config.params, config.paramsSerializer).replace(/^\?/, ''); } catch (err) { const customErr = new Error(err.message); customErr.config = config; @@ -139347,17 +139000,15 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { customErr.exists = true; return reject(customErr); } - - headers.set( - 'Accept-Encoding', - 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false - ); - + headers.set('Accept-Encoding', 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false); const options = { path, method: method, headers: headers.toJSON(), - agents: { http: config.httpAgent, https: config.httpsAgent }, + agents: { + http: config.httpAgent, + https: config.httpsAgent + }, auth, protocol, family, @@ -139368,26 +139019,23 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // cacheable-lookup integration hotfix !utils$1.isUndefined(lookup) && (options.lookup = lookup); - if (config.socketPath) { options.socketPath = config.socketPath; } else { - options.hostname = parsed.hostname.startsWith("[") ? parsed.hostname.slice(1, -1) : parsed.hostname; + options.hostname = parsed.hostname.startsWith('[') ? parsed.hostname.slice(1, -1) : parsed.hostname; options.port = parsed.port; setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); } - let transport; const isHttpsRequest = isHttps.test(options.protocol); options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; - if (isHttp2) { - transport = http2Transport; + transport = http2Transport; } else { if (config.transport) { transport = config.transport; } else if (config.maxRedirects === 0) { - transport = isHttpsRequest ? https__default["default"] : http__default["default"]; + transport = isHttpsRequest ? https : http; } else { if (config.maxRedirects) { options.maxRedirects = config.maxRedirects; @@ -139398,14 +139046,12 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { transport = isHttpsRequest ? httpsFollow : httpFollow; } } - if (config.maxBodyLength > -1) { options.maxBodyLength = config.maxBodyLength; } else { // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited options.maxBodyLength = Infinity; } - if (config.insecureHTTPParser) { options.insecureHTTPParser = config.insecureHTTPParser; } @@ -139413,24 +139059,13 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // Create the request req = transport.request(options, function handleResponse(res) { if (req.destroyed) return; - const streams = [res]; - const responseLength = utils$1.toFiniteNumber(res.headers['content-length']); - if (onDownloadProgress || maxDownloadRate) { - const transformStream = new AxiosTransformStream$1({ + const transformStream = new AxiosTransformStream({ maxRate: utils$1.toFiniteNumber(maxDownloadRate) }); - - onDownloadProgress && transformStream.on('progress', flushOnFinish( - transformStream, - progressEventDecorator( - responseLength, - progressEventReducer(asyncDecorator(onDownloadProgress), true, 3) - ) - )); - + onDownloadProgress && transformStream.on('progress', flushOnFinish(transformStream, progressEventDecorator(responseLength, progressEventReducer(asyncDecorator(onDownloadProgress), true, 3)))); streams.push(transformStream); } @@ -139447,55 +139082,48 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { if (method === 'HEAD' || res.statusCode === 204) { delete res.headers['content-encoding']; } - switch ((res.headers['content-encoding'] || '').toLowerCase()) { - /*eslint default-case:0*/ - case 'gzip': - case 'x-gzip': - case 'compress': - case 'x-compress': - // add the unzipper to the body stream processing pipeline - streams.push(zlib__default["default"].createUnzip(zlibOptions)); - - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'deflate': - streams.push(new ZlibHeaderTransformStream$1()); + /*eslint default-case:0*/ + case 'gzip': + case 'x-gzip': + case 'compress': + case 'x-compress': + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'deflate': + streams.push(new ZlibHeaderTransformStream()); - // add the unzipper to the body stream processing pipeline - streams.push(zlib__default["default"].createUnzip(zlibOptions)); + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'br': - if (isBrotliSupported) { - streams.push(zlib__default["default"].createBrotliDecompress(brotliOptions)); + // remove the content-encoding in order to not confuse downstream operations delete res.headers['content-encoding']; - } + break; + case 'br': + if (isBrotliSupported) { + streams.push(zlib.createBrotliDecompress(brotliOptions)); + delete res.headers['content-encoding']; + } } } - - responseStream = streams.length > 1 ? stream__default["default"].pipeline(streams, utils$1.noop) : streams[0]; - - - + responseStream = streams.length > 1 ? stream.pipeline(streams, utils$1.noop) : streams[0]; const response = { status: res.statusCode, statusText: res.statusMessage, - headers: new AxiosHeaders$1(res.headers), + headers: new AxiosHeaders(res.headers), config, request: lastRequest }; - if (responseType === 'stream') { response.data = responseStream; settle(resolve, reject, response); } else { const responseBuffer = []; let totalResponseBytes = 0; - responseStream.on('data', function handleStreamData(chunk) { responseBuffer.push(chunk); totalResponseBytes += chunk.length; @@ -139505,31 +139133,21 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // stream.destroy() emit aborted event before calling reject() on Node.js v16 rejected = true; responseStream.destroy(); - abort(new AxiosError$1('maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError$1.ERR_BAD_RESPONSE, config, lastRequest)); + abort(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', AxiosError.ERR_BAD_RESPONSE, config, lastRequest)); } }); - responseStream.on('aborted', function handlerStreamAborted() { if (rejected) { return; } - - const err = new AxiosError$1( - 'stream has been aborted', - AxiosError$1.ERR_BAD_RESPONSE, - config, - lastRequest - ); + const err = new AxiosError('stream has been aborted', AxiosError.ERR_BAD_RESPONSE, config, lastRequest); responseStream.destroy(err); reject(err); }); - responseStream.on('error', function handleStreamError(err) { if (req.destroyed) return; - reject(AxiosError$1.from(err, null, config, lastRequest)); + reject(AxiosError.from(err, null, config, lastRequest)); }); - responseStream.on('end', function handleStreamEnd() { try { let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); @@ -139541,12 +139159,11 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { } response.data = responseData; } catch (err) { - return reject(AxiosError$1.from(err, null, config, response.request, response)); + return reject(AxiosError.from(err, null, config, response.request, response)); } settle(resolve, reject, response); }); } - abortEmitter.once('abort', err => { if (!responseStream.destroyed) { responseStream.emit('error', err); @@ -139554,7 +139171,6 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { } }); }); - abortEmitter.once('abort', err => { if (req.close) { req.close(); @@ -139565,7 +139181,7 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { // Handle errors req.on('error', function handleRequestError(err) { - reject(AxiosError$1.from(err, null, config, req)); + reject(AxiosError.from(err, null, config, req)); }); // set tcp keep alive to prevent drop connection by peer @@ -139578,15 +139194,8 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { if (config.timeout) { // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. const timeout = parseInt(config.timeout, 10); - if (Number.isNaN(timeout)) { - abort(new AxiosError$1( - 'error trying to parse `config.timeout` to int', - AxiosError$1.ERR_BAD_OPTION_VALUE, - config, - req - )); - + abort(new AxiosError('error trying to parse `config.timeout` to int', AxiosError.ERR_BAD_OPTION_VALUE, config, req)); return; } @@ -139602,39 +139211,29 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { if (config.timeoutErrorMessage) { timeoutErrorMessage = config.timeoutErrorMessage; } - abort(new AxiosError$1( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, - config, - req - )); + abort(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, req)); }); } else { // explicitly reset the socket timeout value for a possible `keep-alive` request req.setTimeout(0); } - // Send the request if (utils$1.isStream(data)) { let ended = false; let errored = false; - data.on('end', () => { ended = true; }); - data.once('error', err => { errored = true; req.destroy(err); }); - data.on('close', () => { if (!ended && !errored) { - abort(new CanceledError$1('Request stream has been aborted', config, req)); + abort(new CanceledError('Request stream has been aborted', config, req)); } }); - data.pipe(req); } else { data && req.write(data); @@ -139643,71 +139242,55 @@ const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { }); }; -const isURLSameOrigin = platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => { +var isURLSameOrigin = platform.hasStandardBrowserEnv ? ((origin, isMSIE) => url => { url = new URL(url, platform.origin); + return origin.protocol === url.protocol && origin.host === url.host && (isMSIE || origin.port === url.port); +})(new URL(platform.origin), platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)) : () => true; - return ( - origin.protocol === url.protocol && - origin.host === url.host && - (isMSIE || origin.port === url.port) - ); -})( - new URL(platform.origin), - platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) -) : () => true; - -const cookies = platform.hasStandardBrowserEnv ? - - // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure, sameSite) { - if (typeof document === 'undefined') return; - - const cookie = [`${name}=${encodeURIComponent(value)}`]; - - if (utils$1.isNumber(expires)) { - cookie.push(`expires=${new Date(expires).toUTCString()}`); - } - if (utils$1.isString(path)) { - cookie.push(`path=${path}`); - } - if (utils$1.isString(domain)) { - cookie.push(`domain=${domain}`); - } - if (secure === true) { - cookie.push('secure'); - } - if (utils$1.isString(sameSite)) { - cookie.push(`SameSite=${sameSite}`); - } - - document.cookie = cookie.join('; '); - }, - - read(name) { - if (typeof document === 'undefined') return null; - const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); - return match ? decodeURIComponent(match[1]) : null; - }, - - remove(name) { - this.write(name, '', Date.now() - 86400000, '/'); +var cookies = platform.hasStandardBrowserEnv ? +// Standard browser envs support document.cookie +{ + write(name, value, expires, path, domain, secure, sameSite) { + if (typeof document === 'undefined') return; + const cookie = [`${name}=${encodeURIComponent(value)}`]; + if (utils$1.isNumber(expires)) { + cookie.push(`expires=${new Date(expires).toUTCString()}`); + } + if (utils$1.isString(path)) { + cookie.push(`path=${path}`); + } + if (utils$1.isString(domain)) { + cookie.push(`domain=${domain}`); + } + if (secure === true) { + cookie.push('secure'); + } + if (utils$1.isString(sameSite)) { + cookie.push(`SameSite=${sameSite}`); } + document.cookie = cookie.join('; '); + }, + read(name) { + if (typeof document === 'undefined') return null; + const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); + return match ? decodeURIComponent(match[1]) : null; + }, + remove(name) { + this.write(name, '', Date.now() - 86400000, '/'); } +} : +// Non-standard browser env (web workers, react-native) lack needed support. +{ + write() {}, + read() { + return null; + }, + remove() {} +}; - : - - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() {}, - read() { - return null; - }, - remove() {} - }; - -const headersToObject = (thing) => - thing instanceof AxiosHeaders$1 ? { ...thing } : thing; +const headersToObject = thing => thing instanceof AxiosHeaders ? { + ...thing +} : thing; /** * Config-specific merge-function which creates a new config-object @@ -139722,10 +139305,11 @@ function mergeConfig(config1, config2) { // eslint-disable-next-line no-param-reassign config2 = config2 || {}; const config = {}; - function getMergedValue(target, source, prop, caseless) { if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { - return utils$1.merge.call({ caseless }, target, source); + return utils$1.merge.call({ + caseless + }, target, source); } else if (utils$1.isPlainObject(source)) { return utils$1.merge({}, source); } else if (utils$1.isArray(source)) { @@ -139733,7 +139317,6 @@ function mergeConfig(config1, config2) { } return source; } - function mergeDeepProperties(a, b, prop, caseless) { if (!utils$1.isUndefined(b)) { return getMergedValue(a, b, prop, caseless); @@ -139766,7 +139349,6 @@ function mergeConfig(config1, config2) { return getMergedValue(undefined, a); } } - const mergeMap = { url: valueFromConfig2, method: valueFromConfig2, @@ -139796,47 +139378,37 @@ function mergeConfig(config1, config2) { socketPath: defaultToConfig2, responseEncoding: defaultToConfig2, validateStatus: mergeDirectKeys, - headers: (a, b, prop) => - mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true), + headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true) }; - - utils$1.forEach( - Object.keys({ ...config1, ...config2 }), - function computeConfigValue(prop) { - if ( - prop === "__proto__" || - prop === "constructor" || - prop === "prototype" - ) - return; - const merge = utils$1.hasOwnProp(mergeMap, prop) - ? mergeMap[prop] - : mergeDeepProperties; - const configValue = merge(config1[prop], config2[prop], prop); - (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || - (config[prop] = configValue); - }, - ); - + utils$1.forEach(Object.keys({ + ...config1, + ...config2 + }), function computeConfigValue(prop) { + if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; + const merge = utils$1.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + utils$1.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue); + }); return config; } -const resolveConfig = (config) => { +var resolveConfig = config => { const newConfig = mergeConfig({}, config); - - let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig; - - newConfig.headers = headers = AxiosHeaders$1.from(headers); - + let { + data, + withXSRFToken, + xsrfHeaderName, + xsrfCookieName, + headers, + auth + } = newConfig; + newConfig.headers = headers = AxiosHeaders.from(headers); newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer); // HTTP basic authentication if (auth) { - headers.set('Authorization', 'Basic ' + - btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : '')) - ); + headers.set('Authorization', 'Basic ' + btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))); } - if (utils$1.isFormData(data)) { if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { headers.setContentType(undefined); // browser handles it @@ -139851,7 +139423,7 @@ const resolveConfig = (config) => { } }); } - } + } // Add xsrf header // This is only done if running in a standard browser environment. @@ -139859,58 +139431,50 @@ const resolveConfig = (config) => { if (platform.hasStandardBrowserEnv) { withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); - - if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) { + if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(newConfig.url)) { // Add xsrf header const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); - if (xsrfValue) { headers.set(xsrfHeaderName, xsrfValue); } } } - return newConfig; }; const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -const xhrAdapter = isXHRAdapterSupported && function (config) { +var xhrAdapter = isXHRAdapterSupported && function (config) { return new Promise(function dispatchXhrRequest(resolve, reject) { const _config = resolveConfig(config); let requestData = _config.data; - const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize(); - let {responseType, onUploadProgress, onDownloadProgress} = _config; + const requestHeaders = AxiosHeaders.from(_config.headers).normalize(); + let { + responseType, + onUploadProgress, + onDownloadProgress + } = _config; let onCanceled; let uploadThrottled, downloadThrottled; let flushUpload, flushDownload; - function done() { flushUpload && flushUpload(); // flush events flushDownload && flushDownload(); // flush events _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); - _config.signal && _config.signal.removeEventListener('abort', onCanceled); } - let request = new XMLHttpRequest(); - request.open(_config.method.toUpperCase(), _config.url, true); // Set the request timeout in MS request.timeout = _config.timeout; - function onloadend() { if (!request) { return; } // Prepare the response - const responseHeaders = AxiosHeaders$1.from( - 'getAllResponseHeaders' in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === 'text' || responseType === 'json' ? - request.responseText : request.response; + const responseHeaders = AxiosHeaders.from('getAllResponseHeaders' in request && request.getAllResponseHeaders()); + const responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response; const response = { data: responseData, status: request.status, @@ -139919,7 +139483,6 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { config, request }; - settle(function _resolve(value) { resolve(value); done(); @@ -139931,7 +139494,6 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { // Clean up request request = null; } - if ('onloadend' in request) { // Use onloadend if available request.onloadend = onloadend; @@ -139960,26 +139522,25 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { if (!request) { return; } - - reject(new AxiosError$1('Request aborted', AxiosError$1.ECONNABORTED, config, request)); + reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); // Clean up request request = null; }; // Handle low level network errors - request.onerror = function handleError(event) { - // Browsers deliver a ProgressEvent in XHR onerror - // (message may be empty; when present, surface it) - // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event - const msg = event && event.message ? event.message : 'Network Error'; - const err = new AxiosError$1(msg, AxiosError$1.ERR_NETWORK, config, request); - // attach the underlying event for consumers who want details - err.event = event || null; - reject(err); - request = null; + request.onerror = function handleError(event) { + // Browsers deliver a ProgressEvent in XHR onerror + // (message may be empty; when present, surface it) + // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event + const msg = event && event.message ? event.message : 'Network Error'; + const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request); + // attach the underlying event for consumers who want details + err.event = event || null; + reject(err); + request = null; }; - + // Handle timeout request.ontimeout = function handleTimeout() { let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded'; @@ -139987,11 +139548,7 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { if (_config.timeoutErrorMessage) { timeoutErrorMessage = _config.timeoutErrorMessage; } - reject(new AxiosError$1( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, - config, - request)); + reject(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, request)); // Clean up request request = null; @@ -140019,19 +139576,16 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { // Handle progress if needed if (onDownloadProgress) { - ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true)); + [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); request.addEventListener('progress', downloadThrottled); } // Not all browsers support upload events if (onUploadProgress && request.upload) { - ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress)); - + [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); request.upload.addEventListener('progress', uploadThrottled); - request.upload.addEventListener('loadend', flushUpload); } - if (_config.cancelToken || _config.signal) { // Handle cancellation // eslint-disable-next-line func-names @@ -140039,52 +139593,45 @@ const xhrAdapter = isXHRAdapterSupported && function (config) { if (!request) { return; } - reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel); + reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); request.abort(); request = null; }; - _config.cancelToken && _config.cancelToken.subscribe(onCanceled); if (_config.signal) { _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled); } } - const protocol = parseProtocol(_config.url); - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError$1('Unsupported protocol ' + protocol + ':', AxiosError$1.ERR_BAD_REQUEST, config)); + reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); return; } - // Send the request request.send(requestData || null); }); }; const composeSignals = (signals, timeout) => { - const {length} = (signals = signals ? signals.filter(Boolean) : []); - + const { + length + } = signals = signals ? signals.filter(Boolean) : []; if (timeout || length) { let controller = new AbortController(); - let aborted; - const onabort = function (reason) { if (!aborted) { aborted = true; unsubscribe(); const err = reason instanceof Error ? reason : this.reason; - controller.abort(err instanceof AxiosError$1 ? err : new CanceledError$1(err instanceof Error ? err.message : err)); + controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err)); } }; - let timer = timeout && setTimeout(() => { timer = null; - onabort(new AxiosError$1(`timeout of ${timeout}ms exceeded`, AxiosError$1.ETIMEDOUT)); + onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT)); }, timeout); - const unsubscribe = () => { if (signals) { timer && clearTimeout(timer); @@ -140095,53 +139642,46 @@ const composeSignals = (signals, timeout) => { signals = null; } }; - - signals.forEach((signal) => signal.addEventListener('abort', onabort)); - - const {signal} = controller; - + signals.forEach(signal => signal.addEventListener('abort', onabort)); + const { + signal + } = controller; signal.unsubscribe = () => utils$1.asap(unsubscribe); - return signal; } }; -const composeSignals$1 = composeSignals; - const streamChunk = function* (chunk, chunkSize) { let len = chunk.byteLength; - - if (!chunkSize || len < chunkSize) { + if (len < chunkSize) { yield chunk; return; } - let pos = 0; let end; - while (pos < len) { end = pos + chunkSize; yield chunk.slice(pos, end); pos = end; } }; - const readBytes = async function* (iterable, chunkSize) { for await (const chunk of readStream(iterable)) { yield* streamChunk(chunk, chunkSize); } }; - const readStream = async function* (stream) { if (stream[Symbol.asyncIterator]) { yield* stream; return; } - const reader = stream.getReader(); try { for (;;) { - const {done, value} = await reader.read(); + const { + done, + value + } = await reader.read(); if (done) { break; } @@ -140151,30 +139691,28 @@ const readStream = async function* (stream) { await reader.cancel(); } }; - const trackStream = (stream, chunkSize, onProgress, onFinish) => { const iterator = readBytes(stream, chunkSize); - let bytes = 0; let done; - let _onFinish = (e) => { + let _onFinish = e => { if (!done) { done = true; onFinish && onFinish(e); } }; - return new ReadableStream({ async pull(controller) { try { - const {done, value} = await iterator.next(); - + const { + done, + value + } = await iterator.next(); if (done) { - _onFinish(); + _onFinish(); controller.close(); return; } - let len = value.byteLength; if (onProgress) { let loadedBytes = bytes += len; @@ -140192,124 +139730,106 @@ const trackStream = (stream, chunkSize, onProgress, onFinish) => { } }, { highWaterMark: 2 - }) + }); }; const DEFAULT_CHUNK_SIZE = 64 * 1024; - -const {isFunction} = utils$1; - -const globalFetchAPI = (({Request, Response}) => ({ - Request, Response +const { + isFunction +} = utils$1; +const globalFetchAPI = (({ + Request, + Response +}) => ({ + Request, + Response }))(utils$1.global); - const { - ReadableStream: ReadableStream$1, TextEncoder: TextEncoder$1 + ReadableStream: ReadableStream$1, + TextEncoder: TextEncoder$1 } = utils$1.global; - - const test = (fn, ...args) => { try { return !!fn(...args); } catch (e) { - return false + return false; } }; - -const factory = (env) => { +const factory = env => { env = utils$1.merge.call({ skipUndefined: true }, globalFetchAPI, env); - - const {fetch: envFetch, Request, Response} = env; + const { + fetch: envFetch, + Request, + Response + } = env; const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; const isRequestSupported = isFunction(Request); const isResponseSupported = isFunction(Response); - if (!isFetchSupported) { return false; } - const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); - - const encodeText = isFetchSupported && (typeof TextEncoder$1 === 'function' ? - ((encoder) => (str) => encoder.encode(str))(new TextEncoder$1()) : - async (str) => new Uint8Array(await new Request(str).arrayBuffer()) - ); - + const encodeText = isFetchSupported && (typeof TextEncoder$1 === 'function' ? (encoder => str => encoder.encode(str))(new TextEncoder$1()) : async str => new Uint8Array(await new Request(str).arrayBuffer())); const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => { let duplexAccessed = false; - + const body = new ReadableStream$1(); const hasContentType = new Request(platform.origin, { - body: new ReadableStream$1(), + body, method: 'POST', get duplex() { duplexAccessed = true; return 'half'; - }, + } }).headers.has('Content-Type'); - + body.cancel(); return duplexAccessed && !hasContentType; }); - - const supportsResponseStream = isResponseSupported && isReadableStreamSupported && - test(() => utils$1.isReadableStream(new Response('').body)); - + const supportsResponseStream = isResponseSupported && isReadableStreamSupported && test(() => utils$1.isReadableStream(new Response('').body)); const resolvers = { - stream: supportsResponseStream && ((res) => res.body) + stream: supportsResponseStream && (res => res.body) }; - - isFetchSupported && ((() => { + isFetchSupported && (() => { ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => { !resolvers[type] && (resolvers[type] = (res, config) => { let method = res && res[type]; - if (method) { return method.call(res); } - - throw new AxiosError$1(`Response type '${type}' is not supported`, AxiosError$1.ERR_NOT_SUPPORT, config); + throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config); }); }); - })()); - - const getBodyLength = async (body) => { + })(); + const getBodyLength = async body => { if (body == null) { return 0; } - if (utils$1.isBlob(body)) { return body.size; } - if (utils$1.isSpecCompliantForm(body)) { const _request = new Request(platform.origin, { method: 'POST', - body, + body }); return (await _request.arrayBuffer()).byteLength; } - if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { return body.byteLength; } - if (utils$1.isURLSearchParams(body)) { body = body + ''; } - if (utils$1.isString(body)) { return (await encodeText(body)).byteLength; } }; - const resolveBodyLength = async (headers, body) => { const length = utils$1.toFiniteNumber(headers.getContentLength()); - return length == null ? getBodyLength(body) : length; }; - - return async (config) => { + return async config => { let { url, method, @@ -140324,152 +139844,107 @@ const factory = (env) => { withCredentials = 'same-origin', fetchOptions } = resolveConfig(config); - let _fetch = envFetch || fetch; - responseType = responseType ? (responseType + '').toLowerCase() : 'text'; - - let composedSignal = composeSignals$1([signal, cancelToken && cancelToken.toAbortSignal()], timeout); - + let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout); let request = null; - const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => { composedSignal.unsubscribe(); }); - let requestContentLength; - try { - if ( - onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' && - (requestContentLength = await resolveBodyLength(headers, data)) !== 0 - ) { + if (onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) { let _request = new Request(url, { method: 'POST', body: data, - duplex: "half" + duplex: 'half' }); - let contentTypeHeader; - if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { headers.setContentType(contentTypeHeader); } - if (_request.body) { - const [onProgress, flush] = progressEventDecorator( - requestContentLength, - progressEventReducer(asyncDecorator(onUploadProgress)) - ); - + const [onProgress, flush] = progressEventDecorator(requestContentLength, progressEventReducer(asyncDecorator(onUploadProgress))); data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); } } - if (!utils$1.isString(withCredentials)) { withCredentials = withCredentials ? 'include' : 'omit'; } // Cloudflare Workers throws when credentials are defined // see https://github.com/cloudflare/workerd/issues/902 - const isCredentialsSupported = isRequestSupported && "credentials" in Request.prototype; - + const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; const resolvedOptions = { ...fetchOptions, signal: composedSignal, method: method.toUpperCase(), headers: headers.normalize().toJSON(), body: data, - duplex: "half", + duplex: 'half', credentials: isCredentialsSupported ? withCredentials : undefined }; - request = isRequestSupported && new Request(url, resolvedOptions); - let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions)); - const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response'); - - if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { + if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) { const options = {}; - ['status', 'statusText', 'headers'].forEach(prop => { options[prop] = response[prop]; }); - const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length')); - - const [onProgress, flush] = onDownloadProgress && progressEventDecorator( - responseContentLength, - progressEventReducer(asyncDecorator(onDownloadProgress), true) - ) || []; - - response = new Response( - trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { - flush && flush(); - unsubscribe && unsubscribe(); - }), - options - ); + const [onProgress, flush] = onDownloadProgress && progressEventDecorator(responseContentLength, progressEventReducer(asyncDecorator(onDownloadProgress), true)) || []; + response = new Response(trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { + flush && flush(); + unsubscribe && unsubscribe(); + }), options); } - responseType = responseType || 'text'; - let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config); - !isStreamResponse && unsubscribe && unsubscribe(); - return await new Promise((resolve, reject) => { settle(resolve, reject, { data: responseData, - headers: AxiosHeaders$1.from(response.headers), + headers: AxiosHeaders.from(response.headers), status: response.status, statusText: response.statusText, config, request }); - }) + }); } catch (err) { unsubscribe && unsubscribe(); - if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { - throw Object.assign( - new AxiosError$1('Network Error', AxiosError$1.ERR_NETWORK, config, request, err && err.response), - { - cause: err.cause || err - } - ) + throw Object.assign(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, err && err.response), { + cause: err.cause || err + }); } - - throw AxiosError$1.from(err, err && err.code, config, request, err && err.response); + throw AxiosError.from(err, err && err.code, config, request, err && err.response); } - } + }; }; - const seedCache = new Map(); - -const getFetch = (config) => { - let env = (config && config.env) || {}; - const {fetch, Request, Response} = env; - const seeds = [ - Request, Response, fetch - ]; - - let len = seeds.length, i = len, - seed, target, map = seedCache; - +const getFetch = config => { + let env = config && config.env || {}; + const { + fetch, + Request, + Response + } = env; + const seeds = [Request, Response, fetch]; + let len = seeds.length, + i = len, + seed, + target, + map = seedCache; while (i--) { seed = seeds[i]; target = map.get(seed); - - target === undefined && map.set(seed, target = (i ? new Map() : factory(env))); - + target === undefined && map.set(seed, target = i ? new Map() : factory(env)); map = target; } - return target; }; - getFetch(); /** @@ -140478,14 +139953,14 @@ getFetch(); * - `http` for Node.js * - `xhr` for browsers * - `fetch` for fetch API-based requests - * + * * @type {Object} */ const knownAdapters = { http: httpAdapter, xhr: xhrAdapter, fetch: { - get: getFetch, + get: getFetch } }; @@ -140493,35 +139968,39 @@ const knownAdapters = { utils$1.forEach(knownAdapters, (fn, value) => { if (fn) { try { - Object.defineProperty(fn, 'name', { value }); + Object.defineProperty(fn, 'name', { + value + }); } catch (e) { // eslint-disable-next-line no-empty } - Object.defineProperty(fn, 'adapterName', { value }); + Object.defineProperty(fn, 'adapterName', { + value + }); } }); /** * Render a rejection reason string for unknown or unsupported adapters - * + * * @param {string} reason * @returns {string} */ -const renderReason = (reason) => `- ${reason}`; +const renderReason = reason => `- ${reason}`; /** * Check if the adapter is resolved (function, null, or false) - * + * * @param {Function|null|false} adapter * @returns {boolean} */ -const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; +const isResolvedHandle = adapter => utils$1.isFunction(adapter) || adapter === null || adapter === false; /** * Get the first suitable adapter from the provided list. * Tries each adapter in order until a supported one is found. * Throws an AxiosError if no adapter is suitable. - * + * * @param {Array|string|Function} adapters - Adapter(s) by name or function. * @param {Object} config - Axios request configuration * @throws {AxiosError} If no suitable adapter is available @@ -140529,63 +140008,44 @@ const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === */ function getAdapter(adapters, config) { adapters = utils$1.isArray(adapters) ? adapters : [adapters]; - - const { length } = adapters; + const { + length + } = adapters; let nameOrAdapter; let adapter; - const rejectedReasons = {}; - for (let i = 0; i < length; i++) { nameOrAdapter = adapters[i]; let id; - adapter = nameOrAdapter; - if (!isResolvedHandle(nameOrAdapter)) { adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - if (adapter === undefined) { - throw new AxiosError$1(`Unknown adapter '${id}'`); + throw new AxiosError(`Unknown adapter '${id}'`); } } - if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) { break; } - rejectedReasons[id || '#' + i] = adapter; } - if (!adapter) { - const reasons = Object.entries(rejectedReasons) - .map(([id, state]) => `adapter ${id} ` + - (state === false ? 'is not supported by the environment' : 'is not available in the build') - ); - - let s = length ? - (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : - 'as no adapter specified'; - - throw new AxiosError$1( - `There is no suitable adapter to dispatch the request ` + s, - 'ERR_NOT_SUPPORT' - ); + const reasons = Object.entries(rejectedReasons).map(([id, state]) => `adapter ${id} ` + (state === false ? 'is not supported by the environment' : 'is not available in the build')); + let s = length ? reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0]) : 'as no adapter specified'; + throw new AxiosError(`There is no suitable adapter to dispatch the request ` + s, 'ERR_NOT_SUPPORT'); } - return adapter; } /** * Exports Axios adapters and utility to resolve an adapter */ -const adapters = { +var adapters = { /** * Resolve an adapter from a list of adapter names or functions. * @type {Function} */ getAdapter, - /** * Exposes all known adapters * @type {Object} @@ -140604,9 +140064,8 @@ function throwIfCancellationRequested(config) { if (config.cancelToken) { config.cancelToken.throwIfRequested(); } - if (config.signal && config.signal.aborted) { - throw new CanceledError$1(null, config); + throw new CanceledError(null, config); } } @@ -140619,33 +140078,20 @@ function throwIfCancellationRequested(config) { */ function dispatchRequest(config) { throwIfCancellationRequested(config); - - config.headers = AxiosHeaders$1.from(config.headers); + config.headers = AxiosHeaders.from(config.headers); // Transform request data - config.data = transformData.call( - config, - config.transformRequest - ); - + config.data = transformData.call(config, config.transformRequest); if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { config.headers.setContentType('application/x-www-form-urlencoded', false); } - - const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter, config); - + const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config); return adapter(config).then(function onAdapterResolution(response) { throwIfCancellationRequested(config); // Transform response data - response.data = transformData.call( - config, - config.transformResponse, - response - ); - - response.headers = AxiosHeaders$1.from(response.headers); - + response.data = transformData.call(config, config.transformResponse, response); + response.headers = AxiosHeaders.from(response.headers); return response; }, function onAdapterRejection(reason) { if (!isCancel(reason)) { @@ -140653,15 +140099,10 @@ function dispatchRequest(config) { // Transform response data if (reason && reason.response) { - reason.response.data = transformData.call( - config, - config.transformResponse, - reason.response - ); - reason.response.headers = AxiosHeaders$1.from(reason.response.headers); + reason.response.data = transformData.call(config, config.transformResponse, reason.response); + reason.response.headers = AxiosHeaders.from(reason.response.headers); } } - return Promise.reject(reason); }); } @@ -140674,7 +140115,6 @@ const validators$1 = {}; return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; }; }); - const deprecatedWarnings = {}; /** @@ -140688,39 +140128,28 @@ const deprecatedWarnings = {}; */ validators$1.transitional = function transitional(validator, version, message) { function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + return '[Axios v' + VERSION + "] Transitional option '" + opt + "'" + desc + (message ? '. ' + message : ''); } // eslint-disable-next-line func-names return (value, opt, opts) => { if (validator === false) { - throw new AxiosError$1( - formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), - AxiosError$1.ERR_DEPRECATED - ); + throw new AxiosError(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), AxiosError.ERR_DEPRECATED); } - if (version && !deprecatedWarnings[opt]) { deprecatedWarnings[opt] = true; // eslint-disable-next-line no-console - console.warn( - formatMessage( - opt, - ' has been deprecated since v' + version + ' and will be removed in the near future' - ) - ); + console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future')); } - return validator ? validator(value, opt, opts) : true; }; }; - validators$1.spelling = function spelling(correctSpelling) { return (value, opt) => { // eslint-disable-next-line no-console console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); return true; - } + }; }; /** @@ -140735,7 +140164,7 @@ validators$1.spelling = function spelling(correctSpelling) { function assertOptions(options, schema, allowUnknown) { if (typeof options !== 'object') { - throw new AxiosError$1('options must be an object', AxiosError$1.ERR_BAD_OPTION_VALUE); + throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); } const keys = Object.keys(options); let i = keys.length; @@ -140746,17 +140175,16 @@ function assertOptions(options, schema, allowUnknown) { const value = options[opt]; const result = value === undefined || validator(value, opt, options); if (result !== true) { - throw new AxiosError$1('option ' + opt + ' must be ' + result, AxiosError$1.ERR_BAD_OPTION_VALUE); + throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); } continue; } if (allowUnknown !== true) { - throw new AxiosError$1('Unknown option ' + opt, AxiosError$1.ERR_BAD_OPTION); + throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); } } } - -const validator = { +var validator = { assertOptions, validators: validators$1 }; @@ -140774,8 +140202,8 @@ class Axios { constructor(instanceConfig) { this.defaults = instanceConfig || {}; this.interceptors = { - request: new InterceptorManager$1(), - response: new InterceptorManager$1() + request: new InterceptorManager(), + response: new InterceptorManager() }; } @@ -140793,27 +140221,35 @@ class Axios { } catch (err) { if (err instanceof Error) { let dummy = {}; - - Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error()); + Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error(); // slice off the Error: ... line - const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + const stack = (() => { + if (!dummy.stack) { + return ''; + } + const firstNewlineIndex = dummy.stack.indexOf('\n'); + return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1); + })(); try { if (!err.stack) { err.stack = stack; // match without the 2 top stack lines - } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - err.stack += '\n' + stack; + } else if (stack) { + const firstNewlineIndex = stack.indexOf('\n'); + const secondNewlineIndex = firstNewlineIndex === -1 ? -1 : stack.indexOf('\n', firstNewlineIndex + 1); + const stackWithoutTwoTopLines = secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1); + if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) { + err.stack += '\n' + stack; + } } } catch (e) { // ignore the case where "stack" is an un-writable property } } - throw err; } } - _request(configOrUrl, config) { /*eslint no-param-reassign:0*/ // Allow for axios('example/url'[, config]) a la fetch API @@ -140823,11 +140259,12 @@ class Axios { } else { config = configOrUrl || {}; } - config = mergeConfig(this.defaults, config); - - const {transitional, paramsSerializer, headers} = config; - + const { + transitional, + paramsSerializer, + headers + } = config; if (transitional !== undefined) { validator.assertOptions(transitional, { silentJSONParsing: validators.transitional(validators.boolean), @@ -140836,7 +140273,6 @@ class Axios { legacyInterceptorReqResOrdering: validators.transitional(validators.boolean) }, false); } - if (paramsSerializer != null) { if (utils$1.isFunction(paramsSerializer)) { config.paramsSerializer = { @@ -140856,7 +140292,6 @@ class Axios { } else { config.allowAbsoluteUrls = true; } - validator.assertOptions(config, { baseUrl: validators.spelling('baseURL'), withXsrfToken: validators.spelling('withXSRFToken') @@ -140866,19 +140301,11 @@ class Axios { config.method = (config.method || this.defaults.method || 'get').toLowerCase(); // Flatten headers - let contextHeaders = headers && utils$1.merge( - headers.common, - headers[config.method] - ); - - headers && utils$1.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - (method) => { - delete headers[method]; - } - ); - - config.headers = AxiosHeaders$1.concat(contextHeaders, headers); + let contextHeaders = headers && utils$1.merge(headers.common, headers[config.method]); + headers && utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], method => { + delete headers[method]; + }); + config.headers = AxiosHeaders.concat(contextHeaders, headers); // filter out skipped interceptors const requestInterceptorChain = []; @@ -140887,47 +140314,35 @@ class Axios { if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { return; } - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - const transitional = config.transitional || transitionalDefaults; const legacyInterceptorReqResOrdering = transitional && transitional.legacyInterceptorReqResOrdering; - if (legacyInterceptorReqResOrdering) { requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); } else { requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); } }); - const responseInterceptorChain = []; this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); }); - let promise; let i = 0; let len; - if (!synchronousRequestInterceptors) { const chain = [dispatchRequest.bind(this), undefined]; chain.unshift(...requestInterceptorChain); chain.push(...responseInterceptorChain); len = chain.length; - promise = Promise.resolve(config); - while (i < len) { promise = promise.then(chain[i++], chain[i++]); } - return promise; } - len = requestInterceptorChain.length; - let newConfig = config; - while (i < len) { const onFulfilled = requestInterceptorChain[i++]; const onRejected = requestInterceptorChain[i++]; @@ -140938,23 +140353,18 @@ class Axios { break; } } - try { promise = dispatchRequest.call(this, newConfig); } catch (error) { return Promise.reject(error); } - i = 0; len = responseInterceptorChain.length; - while (i < len) { promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); } - return promise; } - getUri(config) { config = mergeConfig(this.defaults, config); const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); @@ -140965,7 +140375,7 @@ class Axios { // Provide aliases for supported request methods utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { /*eslint func-names:0*/ - Axios.prototype[method] = function(url, config) { + Axios.prototype[method] = function (url, config) { return this.request(mergeConfig(config || {}, { method, url, @@ -140973,10 +140383,7 @@ utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoDa })); }; }); - utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - function generateHTTPMethod(isForm) { return function httpMethod(url, data, config) { return this.request(mergeConfig(config || {}, { @@ -140989,14 +140396,10 @@ utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) })); }; } - Axios.prototype[method] = generateHTTPMethod(); - Axios.prototype[method + 'Form'] = generateHTTPMethod(true); }); -const Axios$1 = Axios; - /** * A `CancelToken` is an object that can be used to request cancellation of an operation. * @@ -141009,21 +140412,16 @@ class CancelToken { if (typeof executor !== 'function') { throw new TypeError('executor must be a function.'); } - let resolvePromise; - this.promise = new Promise(function promiseExecutor(resolve) { resolvePromise = resolve; }); - const token = this; // eslint-disable-next-line func-names this.promise.then(cancel => { if (!token._listeners) return; - let i = token._listeners.length; - while (i-- > 0) { token._listeners[i](cancel); } @@ -141038,21 +140436,17 @@ class CancelToken { token.subscribe(resolve); _resolve = resolve; }).then(onfulfilled); - promise.cancel = function reject() { token.unsubscribe(_resolve); }; - return promise; }; - executor(function cancel(message, config, request) { if (token.reason) { // Cancellation has already been requested return; } - - token.reason = new CanceledError$1(message, config, request); + token.reason = new CanceledError(message, config, request); resolvePromise(token.reason); }); } @@ -141075,7 +140469,6 @@ class CancelToken { listener(this.reason); return; } - if (this._listeners) { this._listeners.push(listener); } else { @@ -141096,18 +140489,13 @@ class CancelToken { this._listeners.splice(index, 1); } } - toAbortSignal() { const controller = new AbortController(); - - const abort = (err) => { + const abort = err => { controller.abort(err); }; - this.subscribe(abort); - controller.signal.unsubscribe = () => this.unsubscribe(abort); - return controller.signal; } @@ -141127,8 +140515,6 @@ class CancelToken { } } -const CancelToken$1 = CancelToken; - /** * Syntactic sugar for invoking a function and expanding an array for arguments. * @@ -141164,7 +140550,7 @@ function spread(callback) { * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false */ function isAxiosError(payload) { - return utils$1.isObject(payload) && (payload.isAxiosError === true); + return utils$1.isObject(payload) && payload.isAxiosError === true; } const HttpStatusCode = { @@ -141236,15 +140622,12 @@ const HttpStatusCode = { OriginIsUnreachable: 523, TimeoutOccurred: 524, SslHandshakeFailed: 525, - InvalidSslCertificate: 526, + InvalidSslCertificate: 526 }; - Object.entries(HttpStatusCode).forEach(([key, value]) => { HttpStatusCode[value] = key; }); -const HttpStatusCode$1 = HttpStatusCode; - /** * Create an instance of Axios * @@ -141253,38 +140636,41 @@ const HttpStatusCode$1 = HttpStatusCode; * @returns {Axios} A new instance of Axios */ function createInstance(defaultConfig) { - const context = new Axios$1(defaultConfig); - const instance = bind(Axios$1.prototype.request, context); + const context = new Axios(defaultConfig); + const instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance - utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true}); + utils$1.extend(instance, Axios.prototype, context, { + allOwnKeys: true + }); // Copy context to instance - utils$1.extend(instance, context, null, {allOwnKeys: true}); + utils$1.extend(instance, context, null, { + allOwnKeys: true + }); // Factory for creating new instances instance.create = function create(instanceConfig) { return createInstance(mergeConfig(defaultConfig, instanceConfig)); }; - return instance; } // Create the default instance to be exported -const axios = createInstance(defaults$1); +const axios = createInstance(defaults); // Expose Axios class to allow class inheritance -axios.Axios = Axios$1; +axios.Axios = Axios; // Expose Cancel & CancelToken -axios.CanceledError = CanceledError$1; -axios.CancelToken = CancelToken$1; +axios.CanceledError = CanceledError; +axios.CancelToken = CancelToken; axios.isCancel = isCancel; axios.VERSION = VERSION; axios.toFormData = toFormData; // Expose AxiosError class -axios.AxiosError = AxiosError$1; +axios.AxiosError = AxiosError; // alias for CanceledError for backward compatibility axios.Cancel = axios.CanceledError; @@ -141293,7 +140679,6 @@ axios.Cancel = axios.CanceledError; axios.all = function all(promises) { return Promise.all(promises); }; - axios.spread = spread; // Expose isAxiosError @@ -141301,15 +140686,10 @@ axios.isAxiosError = isAxiosError; // Expose mergeConfig axios.mergeConfig = mergeConfig; - -axios.AxiosHeaders = AxiosHeaders$1; - +axios.AxiosHeaders = AxiosHeaders; axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode$1; - +axios.HttpStatusCode = HttpStatusCode; axios.default = axios; module.exports = axios; diff --git a/package-lock.json b/package-lock.json index d3ab01f..7cdaa35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -875,14 +875,14 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", - "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", + "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "proxy-from-env": "^2.1.0" } }, "node_modules/axios/node_modules/form-data": { @@ -1595,10 +1595,13 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/readable-stream": { "version": "3.6.2",