enhance-axios 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +395 -0
- package/dist/cjs/index.js +686 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/index.min.js +1 -0
- package/dist/esm/index.d.mts +363 -0
- package/dist/esm/index.min.mjs +1 -0
- package/dist/esm/index.mjs +645 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/umd/index.global.js +670 -0
- package/dist/umd/index.global.js.map +1 -0
- package/dist/umd/index.min.global.js +1 -0
- package/dist/umd.bundle/index.axios.global.js +3751 -0
- package/dist/umd.bundle/index.axios.global.js.map +1 -0
- package/dist/umd.bundle/index.axios.min.global.js +9 -0
- package/package.json +95 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../node_modules/axios/lib/helpers/bind.js","../../node_modules/axios/lib/utils.js","../../node_modules/axios/lib/helpers/parseHeaders.js","../../node_modules/axios/lib/helpers/sanitizeHeaderValue.js","../../node_modules/axios/lib/core/AxiosHeaders.js","../../node_modules/axios/lib/core/AxiosError.js","../../node_modules/axios/lib/helpers/null.js","../../node_modules/axios/lib/helpers/toFormData.js","../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../node_modules/axios/lib/helpers/buildURL.js","../../node_modules/axios/lib/core/InterceptorManager.js","../../node_modules/axios/lib/defaults/transitional.js","../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../node_modules/axios/lib/platform/browser/classes/FormData.js","../../node_modules/axios/lib/platform/browser/classes/Blob.js","../../node_modules/axios/lib/platform/browser/index.js","../../node_modules/axios/lib/platform/common/utils.js","../../node_modules/axios/lib/platform/index.js","../../node_modules/axios/lib/helpers/toURLEncodedForm.js","../../node_modules/axios/lib/helpers/formDataToJSON.js","../../node_modules/axios/lib/defaults/index.js","../../node_modules/axios/lib/core/transformData.js","../../node_modules/axios/lib/cancel/isCancel.js","../../node_modules/axios/lib/cancel/CanceledError.js","../../node_modules/axios/lib/core/settle.js","../../node_modules/axios/lib/helpers/parseProtocol.js","../../node_modules/axios/lib/helpers/speedometer.js","../../node_modules/axios/lib/helpers/throttle.js","../../node_modules/axios/lib/helpers/progressEventReducer.js","../../node_modules/axios/lib/helpers/isURLSameOrigin.js","../../node_modules/axios/lib/helpers/cookies.js","../../node_modules/axios/lib/helpers/isAbsoluteURL.js","../../node_modules/axios/lib/helpers/combineURLs.js","../../node_modules/axios/lib/core/buildFullPath.js","../../node_modules/axios/lib/core/mergeConfig.js","../../node_modules/axios/lib/helpers/resolveConfig.js","../../node_modules/axios/lib/adapters/xhr.js","../../node_modules/axios/lib/helpers/composeSignals.js","../../node_modules/axios/lib/helpers/trackStream.js","../../node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js","../../node_modules/axios/lib/env/data.js","../../node_modules/axios/lib/adapters/fetch.js","../../node_modules/axios/lib/adapters/adapters.js","../../node_modules/axios/lib/core/dispatchRequest.js","../../node_modules/axios/lib/helpers/validator.js","../../node_modules/axios/lib/core/Axios.js","../../node_modules/axios/lib/cancel/CancelToken.js","../../node_modules/axios/lib/helpers/spread.js","../../node_modules/axios/lib/helpers/isAxiosError.js","../../node_modules/axios/lib/helpers/HttpStatusCode.js","../../node_modules/axios/lib/axios.js","../../node_modules/axios/index.js","../../src/core/requestManager.ts","../../src/utils/common.ts","../../src/utils/keyGenerator.ts","../../src/utils/formData.ts","../../src/types/index.ts","../../src/core/index.ts","../../src/version.ts"],"sourcesContent":["export { createEnhanceInstance, defaultRetryCondition } from './core';\nexport { version } from './version';\nexport { getFormData, hash } from './utils';\nexport type { CreateEnhanceOptions, EnhanceInstance, PreventDuplicateConfig, CancelRequestConfig, RetryConfig, ContentType, PreventDuplicateOption, CancelRequestOption, RetryOption } from './types';\nexport type { AxiosRequestConfig } from 'axios';","'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n *\n * @param {*} value The value to test\n *\n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n};\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n *\n * @param {*} formData The formData to test\n *\n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a FileList, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n if (!thing) return false;\n if (FormDataCtor && thing instanceof FormDataCtor) return true;\n // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData.\n const proto = getPrototypeOf(thing);\n if (!proto || proto === Object.prototype) return false;\n if (!isFunction(thing.append)) return false;\n const kind = kindOf(thing);\n return (\n kind === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array<unknown>} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== 'undefined') return globalThis;\n return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(...objs) {\n const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\n const targetKey = (caseless && findKey(result, key)) || key;\n // Read via own-prop only — a bare `result[targetKey]` walks the prototype\n // chain, so a polluted Object.prototype value could surface here and get\n // copied into the merged result.\n const existing = hasOwnProperty(result, targetKey) ? result[targetKey] : undefined;\n if (isPlainObject(existing) && isPlainObject(val)) {\n result[targetKey] = merge(existing, val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = objs.length; i < l; i++) {\n objs[i] && forEach(objs[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n // Null-proto descriptor so a polluted Object.prototype.get cannot\n // hijack defineProperty's accessor-vs-data resolution.\n __proto__: null,\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n __proto__: null,\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xfeff) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n Object.defineProperty(constructor.prototype, 'constructor', {\n __proto__: null,\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(constructor, 'super', {\n __proto__: null,\n value: superConstructor.prototype,\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n // eslint-disable-next-line func-names\n return (thing) => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].includes(name)) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n };\n }\n });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach((value) => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const visited = new WeakSet();\n\n const visit = (source) => {\n if (isObject(source)) {\n if (visited.has(source)) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if (!('toJSON' in source)) {\n // add-on descent / delete-on-ascent: preserves path semantics, so DAG nodes serialise at every occurrence (see #7230).\n visited.add(source);\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n visited.delete(source);\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n 'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders &&\n rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nfunction trimSPorHTAB(str) {\n let start = 0;\n let end = str.length;\n\n while (start < end) {\n const code = str.charCodeAt(start);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n start += 1;\n }\n\n while (end > start) {\n const code = str.charCodeAt(end - 1);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n end -= 1;\n }\n\n return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n\n// The control-code ranges are intentional: header sanitization strips C0/DEL bytes.\n// eslint-disable-next-line no-control-regex\nconst INVALID_UNICODE_HEADER_VALUE_CHARS = new RegExp('[\\\\u0000-\\\\u0008\\\\u000a-\\\\u001f\\\\u007f]+', 'g');\n// eslint-disable-next-line no-control-regex\nconst INVALID_BYTE_STRING_HEADER_VALUE_CHARS = new RegExp('[^\\\\u0009\\\\u0020-\\\\u007e\\\\u0080-\\\\u00ff]+', 'g');\n\nfunction sanitizeValue(value, invalidChars) {\n if (utils.isArray(value)) {\n return value.map((item) => sanitizeValue(item, invalidChars));\n }\n\n return trimSPorHTAB(String(value).replace(invalidChars, ''));\n}\n\nexport const sanitizeHeaderValue = (value) =>\n sanitizeValue(value, INVALID_UNICODE_HEADER_VALUE_CHARS);\n\nexport const sanitizeByteStringHeaderValue = (value) =>\n sanitizeValue(value, INVALID_BYTE_STRING_HEADER_VALUE_CHARS);\n\nexport function toByteStringHeaderObject(headers) {\n const byteStringHeaders = Object.create(null);\n\n utils.forEach(headers.toJSON(), (value, header) => {\n byteStringHeaders[header] = sanitizeByteStringHeaderValue(value);\n });\n\n return byteStringHeaders;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\nimport { sanitizeHeaderValue } from '../helpers/sanitizeHeaderValue.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(String(value));\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header\n .trim()\n .toLowerCase()\n .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach((methodName) => {\n Object.defineProperty(obj, methodName + accessorName, {\n // Null-proto descriptor so a polluted Object.prototype.get cannot turn\n // this data descriptor into an accessor descriptor on the way in.\n __proto__: null,\n value: function (arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true,\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null &&\n value !== false &&\n (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals =\n (this[$internals] =\n this[$internals] =\n {\n accessors: {},\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n },\n };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst REDACTED = '[REDACTED ****]';\n\nfunction hasOwnOrPrototypeToJSON(source) {\n if (utils.hasOwnProp(source, 'toJSON')) {\n return true;\n }\n\n let prototype = Object.getPrototypeOf(source);\n\n while (prototype && prototype !== Object.prototype) {\n if (utils.hasOwnProp(prototype, 'toJSON')) {\n return true;\n }\n\n prototype = Object.getPrototypeOf(prototype);\n }\n\n return false;\n}\n\n// Build a plain-object snapshot of `config` and replace the value of any key\n// (case-insensitive) listed in `redactKeys` with REDACTED. Walks through arrays\n// and AxiosHeaders, and short-circuits on circular references.\nfunction redactConfig(config, redactKeys) {\n const lowerKeys = new Set(redactKeys.map((k) => String(k).toLowerCase()));\n const seen = [];\n\n const visit = (source) => {\n if (source === null || typeof source !== 'object') return source;\n if (utils.isBuffer(source)) return source;\n if (seen.indexOf(source) !== -1) return undefined;\n\n if (source instanceof AxiosHeaders) {\n source = source.toJSON();\n }\n\n seen.push(source);\n\n let result;\n if (utils.isArray(source)) {\n result = [];\n source.forEach((v, i) => {\n const reducedValue = visit(v);\n if (!utils.isUndefined(reducedValue)) {\n result[i] = reducedValue;\n }\n });\n } else {\n if (!utils.isPlainObject(source) && hasOwnOrPrototypeToJSON(source)) {\n seen.pop();\n return source;\n }\n\n result = Object.create(null);\n for (const [key, value] of Object.entries(source)) {\n const reducedValue = lowerKeys.has(key.toLowerCase()) ? REDACTED : visit(value);\n if (!utils.isUndefined(reducedValue)) {\n result[key] = reducedValue;\n }\n }\n }\n\n seen.pop();\n return result;\n };\n\n return visit(config);\n}\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n\n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n // Null-proto descriptor so a polluted Object.prototype.get cannot turn\n // this data descriptor into an accessor descriptor on the way in.\n __proto__: null,\n value: message,\n enumerable: true,\n writable: true,\n configurable: true,\n });\n\n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n // Opt-in redaction: when the request config carries a `redact` array, the\n // value of any matching key (case-insensitive, at any depth) is replaced\n // with REDACTED in the serialized snapshot. Undefined or empty leaves the\n // existing serialization behavior unchanged.\n const config = this.config;\n const redactKeys = config && utils.hasOwnProp(config, 'redact') ? config.redact : undefined;\n const serializedConfig =\n utils.isArray(redactKeys) && redactKeys.length > 0\n ? redactConfig(config, redactKeys)\n : utils.toJSONObject(config);\n\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: serializedConfig,\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ECONNREFUSED = 'ECONNREFUSED';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\nAxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED';\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\n .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\n );\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n const maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n ) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : key + '[]',\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable,\n });\n\n function build(value, path, depth = 0) {\n if (utils.isUndefined(value)) return;\n\n if (depth > maxDepth) {\n throw new AxiosError(\n 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,\n AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n );\n }\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key], depth + 1);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\n .join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain counterparts (`:`, `$`, `,`, `+`).\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nexport function encode(val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = utils.isURLSearchParams(params)\n ? params.toString()\n : new AxiosURLSearchParams(params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null,\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false,\n legacyInterceptorReqResOrdering: true,\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n","import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob,\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\n};\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function (value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options,\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map((match) => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = utils.isArray(target[name])\n ? target[name].concat(value)\n : [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!utils.hasOwnProp(target, name) || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\nconst own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined);\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n const formSerializer = own(this, 'formSerializer');\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const env = own(this, 'env');\n const _FormData = env && env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n },\n ],\n\n transformResponse: [\n function transformResponse(data) {\n const transitional = own(this, 'transitional') || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const responseType = own(this, 'responseType');\n const JSONRequested = responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, own(this, 'parseReviver'));\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(this, 'response'));\n }\n throw e;\n }\n }\n }\n\n return data;\n },\n ],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob,\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': undefined,\n },\n },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'query'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n response.status >= 400 && response.status < 500 ? AxiosError.ERR_BAD_REQUEST : AxiosError.ERR_BAD_RESPONSE,\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25}):(?:\\/\\/)?/.exec(url);\n return (match && match[1]) || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n if (!e || typeof e.loaded !== 'number') {\n return;\n }\n const rawLoaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded;\n const progressBytes = Math.max(0, loaded - bytesNotified);\n const rate = _speedometer(progressBytes);\n\n bytesNotified = Math.max(bytesNotified, loaded);\n\n const data = {\n loaded,\n total,\n progress: total ? loaded / total : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n // Match name=value by splitting on the semicolon separator instead of building a\n // RegExp from `name` — interpolating an unescaped string into a RegExp would let\n // metacharacters (e.g. `.+?` in an attacker-influenced cookie name) cause ReDoS or\n // match the wrong cookie. Browsers may serialize cookie pairs as either \";\" or\n // \"; \", so ignore optional whitespace before each cookie name.\n const cookies = document.cookie.split(';');\n for (let i = 0; i < cookies.length; i++) {\n const cookie = cookies[i].replace(/^\\s+/, '');\n const eq = cookie.indexOf('=');\n if (eq !== -1 && cookie.slice(0, eq) === name) {\n return decodeURIComponent(cookie.slice(eq + 1));\n }\n }\n return null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n },\n }\n : // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {},\n };\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n if (typeof url !== 'string') {\n return false;\n }\n\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n\n // Use a null-prototype object so that downstream reads such as `config.auth`\n // or `config.baseURL` cannot inherit polluted values from Object.prototype.\n // `hasOwnProperty` is restored as a non-enumerable own slot to preserve\n // ergonomics for user code that relies on it.\n const config = Object.create(null);\n Object.defineProperty(config, 'hasOwnProperty', {\n // Null-proto descriptor so a polluted Object.prototype.get cannot turn\n // this data descriptor into an accessor descriptor on the way in.\n __proto__: null,\n value: Object.prototype.hasOwnProperty,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({ caseless }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (utils.hasOwnProp(config2, prop)) {\n return getMergedValue(a, b);\n } else if (utils.hasOwnProp(config1, prop)) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n allowedSocketPaths: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;\n const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;\n const configValue = merge(a, b, prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nconst FORM_DATA_CONTENT_HEADERS = ['content-type', 'content-length'];\n\nfunction setFormDataHeaders(headers, formHeaders, policy) {\n if (policy !== 'content-only') {\n headers.set(formHeaders);\n return;\n }\n\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (FORM_DATA_CONTENT_HEADERS.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n}\n\n/**\n * Encode a UTF-8 string to a Latin-1 byte string for use with btoa().\n * This is a modern replacement for the deprecated unescape(encodeURIComponent(str)) pattern.\n *\n * @param {string} str The string to encode\n *\n * @returns {string} UTF-8 bytes as a Latin-1 string\n */\nconst encodeUTF8 = (str) =>\n encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) =>\n String.fromCharCode(parseInt(hex, 16))\n );\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n // Read only own properties to prevent prototype pollution gadgets\n // (e.g. Object.prototype.baseURL = 'https://evil.com').\n const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);\n\n const data = own('data');\n let withXSRFToken = own('withXSRFToken');\n const xsrfHeaderName = own('xsrfHeaderName');\n const xsrfCookieName = own('xsrfCookieName');\n let headers = own('headers');\n const auth = own('auth');\n const baseURL = own('baseURL');\n const allowAbsoluteUrls = own('allowAbsoluteUrls');\n const url = own('url');\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(baseURL, url, allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? encodeUTF8(auth.password) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n setFormDataHeaders(headers, data.getHeaders(), own('formDataHeaderPolicy'));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n if (utils.isFunction(withXSRFToken)) {\n withXSRFToken = withXSRFToken(newConfig);\n }\n\n // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)\n // and misconfigurations (e.g. \"false\") from short-circuiting the same-origin check and leaking\n // the XSRF token cross-origin.\n const shouldSendXSRF =\n withXSRFToken === true || (withXSRFToken == null && isURLSameOrigin(newConfig.url));\n\n if (shouldSendXSRF) {\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport { toByteStringHeaderObject } from '../helpers/sanitizeHeaderValue.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request,\n };\n\n settle(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.startsWith('file:'))\n ) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n done();\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n done();\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n done();\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(toByteStringHeaderObject(requestHeaders), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = (cancel) => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n done();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && !platform.protocols.includes(protocol)) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n signals = signals ? signals.filter(Boolean) : [];\n\n if (!timeout && !signals.length) {\n return;\n }\n\n const controller = new AbortController();\n\n let aborted = false;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (!signals) { return; }\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","/**\n * Estimate decoded byte length of a data:// URL *without* allocating large buffers.\n * - For base64: compute exact decoded size using length and padding;\n * handle %XX at the character-count level (no string allocation).\n * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound.\n *\n * @param {string} url\n * @returns {number}\n */\nexport default function estimateDataURLDecodedBytes(url) {\n if (!url || typeof url !== 'string') return 0;\n if (!url.startsWith('data:')) return 0;\n\n const comma = url.indexOf(',');\n if (comma < 0) return 0;\n\n const meta = url.slice(5, comma);\n const body = url.slice(comma + 1);\n const isBase64 = /;base64/i.test(meta);\n\n if (isBase64) {\n let effectiveLen = body.length;\n const len = body.length; // cache length\n\n for (let i = 0; i < len; i++) {\n if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) {\n const a = body.charCodeAt(i + 1);\n const b = body.charCodeAt(i + 2);\n const isHex =\n ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) &&\n ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102));\n\n if (isHex) {\n effectiveLen -= 2;\n i += 2;\n }\n }\n }\n\n let pad = 0;\n let idx = len - 1;\n\n const tailIsPct3D = (j) =>\n j >= 2 &&\n body.charCodeAt(j - 2) === 37 && // '%'\n body.charCodeAt(j - 1) === 51 && // '3'\n (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd'\n\n if (idx >= 0) {\n if (body.charCodeAt(idx) === 61 /* '=' */) {\n pad++;\n idx--;\n } else if (tailIsPct3D(idx)) {\n pad++;\n idx -= 3;\n }\n }\n\n if (pad === 1 && idx >= 0) {\n if (body.charCodeAt(idx) === 61 /* '=' */) {\n pad++;\n } else if (tailIsPct3D(idx)) {\n pad++;\n }\n }\n\n const groups = Math.floor(effectiveLen / 4);\n const bytes = groups * 3 - (pad || 0);\n return bytes > 0 ? bytes : 0;\n }\n\n if (typeof Buffer !== 'undefined' && typeof Buffer.byteLength === 'function') {\n return Buffer.byteLength(body, 'utf8');\n }\n\n // Compute UTF-8 byte length directly from UTF-16 code units without allocating\n // a byte buffer (TextEncoder.encode would defeat the DoS guard on large bodies).\n // Using body.length here would undercount non-ASCII (e.g. '€' is 1 code unit\n // but 3 UTF-8 bytes).\n let bytes = 0;\n for (let i = 0, len = body.length; i < len; i++) {\n const c = body.charCodeAt(i);\n if (c < 0x80) {\n bytes += 1;\n } else if (c < 0x800) {\n bytes += 2;\n } else if (c >= 0xd800 && c <= 0xdbff && i + 1 < len) {\n const next = body.charCodeAt(i + 1);\n if (next >= 0xdc00 && next <= 0xdfff) {\n bytes += 4;\n i++;\n } else {\n bytes += 3;\n }\n } else {\n bytes += 3;\n }\n }\n return bytes;\n}\n","export const VERSION = \"1.16.1\";","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\nimport estimateDataURLDecodedBytes from '../helpers/estimateDataURLDecodedBytes.js';\nimport { VERSION } from '../env/data.js';\nimport { toByteStringHeaderObject } from '../helpers/sanitizeHeaderValue.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n const globalObject =\n utils.global !== undefined && utils.global !== null\n ? utils.global\n : globalThis;\n const { ReadableStream, TextEncoder } = globalObject;\n\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n {\n Request: globalObject.Request,\n Response: globalObject.Response,\n },\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const request = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n });\n\n const hasContentType = request.headers.has('Content-Type');\n\n if (request.body != null) {\n request.body.cancel();\n }\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n maxContentLength,\n maxBodyLength,\n } = resolveConfig(config);\n\n const hasMaxContentLength = utils.isNumber(maxContentLength) && maxContentLength > -1;\n const hasMaxBodyLength = utils.isNumber(maxBodyLength) && maxBodyLength > -1;\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n // Enforce maxContentLength for data: URLs up-front so we never materialize\n // an oversized payload. The HTTP adapter applies the same check (see http.js\n // \"if (protocol === 'data:')\" branch).\n if (hasMaxContentLength && typeof url === 'string' && url.startsWith('data:')) {\n const estimated = estimateDataURLDecodedBytes(url);\n if (estimated > maxContentLength) {\n throw new AxiosError(\n 'maxContentLength size of ' + maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n request\n );\n }\n }\n\n // Enforce maxBodyLength against the outbound request body before dispatch.\n // Mirrors http.js behavior (ERR_BAD_REQUEST / 'Request body larger than\n // maxBodyLength limit'). Skip when the body length cannot be determined\n // (e.g. a live ReadableStream supplied by the caller).\n if (hasMaxBodyLength && method !== 'get' && method !== 'head') {\n const outboundLength = await resolveBodyLength(headers, data);\n if (\n typeof outboundLength === 'number' &&\n isFinite(outboundLength) &&\n outboundLength > maxBodyLength\n ) {\n throw new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config,\n request\n );\n }\n }\n\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n // If data is FormData and Content-Type is multipart/form-data without boundary,\n // delete it so fetch can set it correctly with the boundary\n if (utils.isFormData(data)) {\n const contentType = headers.getContentType();\n if (\n contentType &&\n /^multipart\\/form-data/i.test(contentType) &&\n !/boundary=/i.test(contentType)\n ) {\n headers.delete('content-type');\n }\n }\n\n // Set User-Agent header if not already set (fetch defaults to 'node' in Node.js)\n headers.set('User-Agent', 'axios/' + VERSION, false);\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: toByteStringHeaderObject(headers.normalize()),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n // Cheap pre-check: if the server honestly declares a content-length that\n // already exceeds the cap, reject before we start streaming.\n if (hasMaxContentLength) {\n const declaredLength = utils.toFiniteNumber(response.headers.get('content-length'));\n if (declaredLength != null && declaredLength > maxContentLength) {\n throw new AxiosError(\n 'maxContentLength size of ' + maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n request\n );\n }\n }\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (\n supportsResponseStream &&\n response.body &&\n (onDownloadProgress || hasMaxContentLength || (isStreamResponse && unsubscribe))\n ) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n let bytesRead = 0;\n const onChunkProgress = (loadedBytes) => {\n if (hasMaxContentLength) {\n bytesRead = loadedBytes;\n if (bytesRead > maxContentLength) {\n throw new AxiosError(\n 'maxContentLength size of ' + maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n request\n );\n }\n }\n onProgress && onProgress(loadedBytes);\n };\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onChunkProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n // Fallback enforcement for environments without ReadableStream support\n // (legacy runtimes). Detect materialized size from typed output; skip\n // streams/Response passthrough since the user will read those themselves.\n if (hasMaxContentLength && !supportsResponseStream && !isStreamResponse) {\n let materializedSize;\n if (responseData != null) {\n if (typeof responseData.byteLength === 'number') {\n materializedSize = responseData.byteLength;\n } else if (typeof responseData.size === 'number') {\n materializedSize = responseData.size;\n } else if (typeof responseData === 'string') {\n materializedSize =\n typeof TextEncoder === 'function'\n ? new TextEncoder().encode(responseData).byteLength\n : responseData.length;\n }\n }\n if (typeof materializedSize === 'number' && materializedSize > maxContentLength) {\n throw new AxiosError(\n 'maxContentLength size of ' + maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n request\n );\n }\n }\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n // Safari can surface fetch aborts as a DOMException-like object whose\n // branded getters throw. Prefer our composed signal reason before reading\n // the caught error, preserving timeout vs cancellation semantics.\n if (composedSignal && composedSignal.aborted && composedSignal.reason instanceof AxiosError) {\n const canceledError = composedSignal.reason;\n canceledError.config = config;\n request && (canceledError.request = request);\n err !== canceledError && (canceledError.cause = err);\n throw canceledError;\n }\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n // Null-proto descriptors so a polluted Object.prototype.get cannot turn\n // these data descriptors into accessor descriptors on the way in.\n Object.defineProperty(fn, 'name', { __proto__: null, value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { __proto__: null, value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length\n ? reasons.length > 1\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n : ' ' + renderReason(reasons[0])\n : 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object<string, Function|Object>}\n */\n adapters: knownAdapters,\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(config, config.transformRequest);\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Expose the current response on config so that transformResponse can\n // attach it to any AxiosError it throws (e.g. on JSON parse failure).\n // We clean it up afterwards to avoid polluting the config object.\n config.response = response;\n try {\n response.data = transformData.call(config, config.transformResponse, response);\n } finally {\n delete config.response;\n }\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\n function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n config.response = reason.response;\n try {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n } finally {\n delete config.response;\n }\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n }\n );\n}\n","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n // Use hasOwnProperty so a polluted Object.prototype.<opt> cannot supply\n // a non-function validator and cause a TypeError.\n const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager(),\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = (() => {\n if (!dummy.stack) {\n return '';\n }\n\n const firstNewlineIndex = dummy.stack.indexOf('\\n');\n\n return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1);\n })();\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack) {\n const firstNewlineIndex = stack.indexOf('\\n');\n const secondNewlineIndex =\n firstNewlineIndex === -1 ? -1 : stack.indexOf('\\n', firstNewlineIndex + 1);\n const stackWithoutTwoTopLines =\n secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1);\n\n if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) {\n err.stack += '\\n' + stack;\n }\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const { transitional, paramsSerializer, headers } = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\n );\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'query', 'common'], (method) => {\n delete headers[method];\n });\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch', 'query'], function forEachMethodWithData(method) {\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\n );\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n // QUERY is a safe/idempotent read method; multipart form bodies don't fit\n // its semantics, so no queryForm shorthand is generated.\n if (method !== 'query') {\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n }\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then((cancel) => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = (onfulfilled) => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise((resolve) => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel,\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n // Copy context to instance\n utils.extend(instance, context, null, { allOwnKeys: true });\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig,\n create,\n} = axios;\n\nexport {\n axios as default,\n create,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig,\n};\n","/**\n * 请求管理器\n *\n * 负责管理所有 pending 状态的请求,支持:\n * 1. 防重复提交:检查是否有相同的正在进行的请求\n * 2. 取消请求:取消指定的正在进行的请求\n *\n * 存储结构:\n * - preventPending: 防重复提交的 pending 请求(key 来自 preventDuplicate.requestKey)\n * - cancelPending: 取消请求的 pending 请求(key 来自 cancelRequest.requestKey)\n *\n * 两个 Map 独立,同一个 key 可同时存在于两者(各自 requestKey 可能不同)。\n *\n * 取消机制:使用 AbortController / AbortSignal(axios 1.x 推荐)\n */\n\nimport type { AxiosRequestConfig } from 'axios';\nimport type { PendingRequest } from '../types';\n\nexport class RequestManager {\n private preventPending = new Map<string, PendingRequest>();\n private cancelPending = new Map<string, PendingRequest>();\n\n /**\n * 注册一个新请求\n */\n registerRequest(\n key: string,\n type: 'prevent' | 'cancel',\n controller: AbortController,\n promise: Promise<unknown>,\n config?: AxiosRequestConfig,\n ): void {\n const pending: PendingRequest = {\n key,\n config: config || ({} as AxiosRequestConfig),\n controller,\n promise,\n timestamp: Date.now(),\n };\n (type === 'prevent' ? this.preventPending : this.cancelPending).set(key, pending);\n }\n\n /**\n * 移除请求记录\n */\n unregisterRequest(key: string, type: 'prevent' | 'cancel'): void {\n (type === 'prevent' ? this.preventPending : this.cancelPending).delete(key);\n }\n\n /**\n * 取消并移除请求,同时检查两个 Map\n */\n cancelRequest(key: string): boolean {\n let cancelled = false;\n\n const abort = (map: Map<string, PendingRequest>) => {\n const req = map.get(key);\n if (req) {\n try { req.controller.abort('Cancelled by cancelRequest'); } catch { /* noop */ }\n map.delete(key);\n cancelled = true;\n }\n };\n\n abort(this.preventPending);\n abort(this.cancelPending);\n return cancelled;\n }\n\n /**\n * 获取请求状态(优先返回 preventPending)\n */\n getRequestStatus(key: string): PendingRequest | undefined {\n return this.preventPending.get(key) ?? this.cancelPending.get(key);\n }\n\n getPreventPending(key: string): PendingRequest | undefined {\n return this.preventPending.get(key);\n }\n\n getCancelPending(key: string): PendingRequest | undefined {\n return this.cancelPending.get(key);\n }\n\n /**\n * 清空所有 pending 请求\n */\n clearAll(): void {\n const abortAll = (map: Map<string, PendingRequest>, reason: string) => {\n for (const req of map.values()) {\n try { req.controller.abort(reason); } catch { /* noop */ }\n }\n map.clear();\n };\n\n abortAll(this.preventPending, 'Cleared by clearAll');\n abortAll(this.cancelPending, 'Cleared by clearAll');\n }\n\n /**\n * 获取 pending 数量(注意两 Map 独立,合计可能重复计数)\n */\n getPendingCount(): { prevent: number; cancel: number; total: number } {\n return {\n prevent: this.preventPending.size,\n cancel: this.cancelPending.size,\n total: this.preventPending.size + this.cancelPending.size,\n };\n }\n\n /**\n * 获取所有 pending 的 key\n */\n getPendingKeys(): { prevent: string[]; cancel: string[] } {\n return {\n prevent: Array.from(this.preventPending.keys()),\n cancel: Array.from(this.cancelPending.keys()),\n };\n }\n}\n","/**\n * 内部共享工具\n */\n\n/**\n * 检查值是否为可安全遍历键的普通对象\n * 排除 Array / Blob / Date / FormData / Map / Set 等内置类型\n */\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== 'object' || value === null) return false;\n if (Array.isArray(value)) return false;\n if (value instanceof Blob) return false;\n if (value instanceof Date) return false;\n if (typeof FormData !== 'undefined' && value instanceof FormData) return false;\n if (typeof Map !== 'undefined' && value instanceof Map) return false;\n if (typeof Set !== 'undefined' && value instanceof Set) return false;\n return true;\n}\n","import type { AxiosRequestConfig } from 'axios';\nimport { isPlainObject } from './common';\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 辅助函数\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 将特殊类型转为普通对象,供模板解析和哈希使用:\n * URLSearchParams → { key: value, ... }\n * 其他(Blob/FormData/原值)→ 原样返回\n */\nfunction toPlain(value: unknown): unknown {\n if (value == null) return value;\n if (typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams) {\n return Object.fromEntries(value);\n }\n return value;\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 公开 API\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 获取嵌套属性的值\n *\n * 支持两种路径格式:\n * - 点分隔:data.user.name\n * - 括号索引:data.users[0].name(内部转为 data.users.0.name)\n */\nexport function getNestedValue(obj: unknown, path: string): unknown {\n if (!path) return obj;\n const normalized = path.replace(/\\[(\\d+)\\]/g, '.$1');\n return normalized.split('.').reduce<unknown>(\n (o: any, k) => (o == null ? undefined : o[k]),\n obj,\n );\n}\n\n/**\n * 解析字符串模板\n * 支持 ${xxx} 或 ${xxx.yyy} 或 ${xxx[0].yyy} 占位符\n */\nexport function resolveTemplate(template: string, config: AxiosRequestConfig): string {\n const context = {\n method: config.method?.toUpperCase() || 'GET',\n url: config.url || '',\n params: toPlain(config.params),\n data: toPlain(config.data),\n };\n\n return template.replace(/\\$\\{([^}]+)\\}/g, (_match, path) => {\n const value = getNestedValue(context, path);\n if (value == null) return '';\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n });\n}\n\n/**\n * 生成默认的 requestKey(method + url + params + data 的排序哈希)\n *\n * 自动剔除 params 和 data 中的 _ 字段(缓存破坏参数),\n * 避免重试时 key 不一致导致 deferred 链断裂。\n */\nexport function generateDefaultKey(config: AxiosRequestConfig): string {\n const parts = [\n config.method?.toUpperCase() || 'GET',\n config.url || '',\n config.params != null ? JSON.stringify(sortObject(stripCacheParam(toPlain(config.params)))) : '',\n config.data != null ? JSON.stringify(sortObject(stripCacheParam(toPlain(config.data)))) : '',\n ];\n return hash(parts.join('|'));\n}\n\n/**\n * 字符串哈希(FNV-1a 32-bit,兼容浏览器)\n */\nexport function hash(str: string): string {\n let h = 0x811c9dc5;\n for (let i = 0; i < str.length; i++) {\n h ^= str.charCodeAt(i);\n h = (h * 0x01000193) >>> 0;\n }\n return h.toString(16).padStart(8, '0');\n}\n\n/**\n * 解析 requestKey\n *\n * - 函数 → 直接调用\n * - 包含 ${ 的字符串 → 模板解析\n * - 其他字符串 → 原样返回\n * - 未提供 → 自动生成(method + url + params + data)\n */\nexport function resolveRequestKey(\n config: AxiosRequestConfig,\n keyTemplate?: string | ((config: AxiosRequestConfig, hash: (str: string) => string) => string),\n): string {\n if (!keyTemplate) return generateDefaultKey(config);\n\n if (typeof keyTemplate === 'function') {\n return keyTemplate(config, hash);\n }\n\n if (typeof keyTemplate === 'string' && keyTemplate.includes('${')) {\n return hash(resolveTemplate(keyTemplate, config));\n }\n\n return keyTemplate;\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 内部函数\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 剔除对象中的 _ 字段(缓存破坏参数,不应参与 key 生成)\n */\nfunction stripCacheParam(obj: unknown): unknown {\n if (obj == null || typeof obj !== 'object') return obj;\n if (Array.isArray(obj)) return obj;\n if (!isPlainObject(obj)) return obj;\n const { _, ...rest } = obj as Record<string, unknown>;\n return rest;\n}\n\n/**\n * 对对象键进行递归排序(保证相同数据产生相同哈希)\n *\n * 非 plain 对象(Blob / FormData / Date 等)直接返回原值,\n * 避免 Object.keys() 返回空数组导致哈希碰撞。\n */\nfunction sortObject(obj: unknown): unknown {\n if (obj == null || typeof obj !== 'object') return obj;\n if (Array.isArray(obj)) return obj.map(sortObject);\n if (!isPlainObject(obj)) return obj;\n const sorted: Record<string, unknown> = {};\n const keys = Object.keys(obj).sort();\n for (const key of keys) {\n sorted[key] = sortObject(obj[key]);\n }\n return sorted;\n}\n","/**\n * getFormData — 将任意数据转换为 FormData\n *\n * 转换规则:\n * - File / Blob → 字段名 'file'(可通过 fieldName 自定义)\n * - FileList → 遍历,每个文件字段名 'file'\n * - 数组 → 遍历每一项,所有值共用同一字段名\n * - 普通对象 → 遍历 entries,每个 key 作为字段名;嵌套对象用 . 连接\n * - string/number/boolean → 转字符串,字段名 'file'\n * - null / undefined → 跳过\n */\n\nimport { isPlainObject } from './common';\n\nfunction appendValue(fd: FormData, key: string, value: unknown): void {\n if (value == null) return;\n\n if (value instanceof File) {\n fd.append(key, value);\n } else if (value instanceof Blob) {\n fd.append(key, value);\n } else if (value instanceof Date) {\n fd.append(key, value.toISOString());\n } else if (Array.isArray(value)) {\n for (const item of value) {\n appendValue(fd, key, item);\n }\n } else if (isPlainObject(value)) {\n for (const [subKey, subValue] of Object.entries(value)) {\n appendValue(fd, `${key}.${subKey}`, subValue);\n }\n } else {\n fd.append(key, String(value));\n }\n}\n\nexport function getFormData(data: unknown, fieldName?: string): FormData {\n const fd = new FormData();\n if (data == null) return fd;\n\n // FileList — 不能使用 for-of 迭代,单独处理\n if (typeof FileList !== 'undefined' && data instanceof FileList) {\n const key = fieldName || 'file';\n for (let i = 0; i < data.length; i++) fd.append(key, data[i]);\n return fd;\n }\n\n // 顶层普通对象 — 使用对象自身的 key\n if (isPlainObject(data)) {\n for (const [key, value] of Object.entries(data)) {\n appendValue(fd, key, value);\n }\n return fd;\n }\n\n // 其余所有类型统一走 appendValue\n appendValue(fd, fieldName || 'file', data);\n return fd;\n}\n","/**\n * enhance-axios 类型定义\n */\n\n// 引入 axios 类型\nimport type { AxiosRequestConfig, AxiosError } from 'axios';\nimport type { RequestManager } from '../core/requestManager';\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 基础类型\n// ════════════════════════════════════════════════════════════════════════════════\n\nexport type RequestMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';\n\n/**\n * Content-Type 简化配置\n *\n * - 'json': application/json;charset=UTF-8\n * - 'form': application/x-www-form-urlencoded\n * - 'file': multipart/form-data(当 data 为 FormData 时不设置,交由浏览器自动处理)\n * - 其他字符串:直接用作 Content-Type 值\n */\nexport type ContentType = 'json' | 'form' | 'file' | (string & {});\n\nexport const CONTENT_TYPE_MAP: Record<string, string> = {\n json: 'application/json;charset=UTF-8',\n form: 'application/x-www-form-urlencoded',\n};\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 配置接口\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 防重复提交配置\n *\n * 用于防止用户在短时间内重复发送相同请求\n * 当检测到重复请求时,返回已有请求的 Promise,阻止当前请求继续执行\n */\nexport interface PreventDuplicateConfig {\n /** 是否启用防重复提交,默认 true */\n enabled?: boolean;\n /** 请求标识生成方式 */\n requestKey?: string | ((config: AxiosRequestConfig, hash: (str: string) => string) => string);\n /** 生效的 HTTP 方法,默认全部方法 */\n methods?: string[];\n /** 防重复时间窗口(ms),默认 1000 */\n intervalMs?: number;\n}\n\n/**\n * 取消请求配置\n *\n * 用于取消正在进行的相同请求,只保留最新发出的请求\n * 当检测到相同请求时,取消旧请求,继续执行当前请求\n */\nexport interface CancelRequestConfig {\n /** 是否启用取消请求,默认 true */\n enabled?: boolean;\n /** 请求标识生成方式 */\n requestKey?: string | ((config: AxiosRequestConfig, hash: (str: string) => string) => string);\n /** 生效的 HTTP 方法,默认全部方法 */\n methods?: string[];\n}\n\n/**\n * 失败重试配置\n *\n * 用于在请求失败时自动重试\n */\nexport interface RetryConfig {\n /** 是否启用重试,默认 true */\n enabled?: boolean;\n /** 重试次数,默认 3 */\n retries?: number;\n /** 初始重试延迟(ms),默认 1000 */\n retryDelay?: number;\n /** 重试条件判断函数 */\n retryCondition?: (error: AxiosError) => boolean;\n /** 是否启用指数退避,默认 true */\n exponential?: boolean;\n /** 最大延迟时间(ms),默认 30000 */\n maxDelay?: number;\n /** 生效的 HTTP 方法,默认全部方法 */\n methods?: string[];\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 内部类型\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * Pending 请求结构\n *\n * 用于存储正在进行的请求信息\n */\nexport interface PendingRequest {\n /** 请求标识 */\n key: string;\n /** 请求配置 */\n config: AxiosRequestConfig;\n /** AbortController,用于取消请求 */\n controller: AbortController;\n /** 请求的 Promise */\n promise: Promise<unknown>;\n /** 请求创建时间戳 */\n timestamp: number;\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 增强实例接口\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 增强实例 API\n *\n * 提供对增强功能的访问和控制\n */\nexport interface EnhanceInstance {\n /** 请求管理器 */\n requestManager: RequestManager;\n /** 取消所有 pending 请求 */\n clearAll: () => void;\n /** 取消指定请求 */\n cancelRequest: (key: string) => boolean;\n /** 获取请求状态 */\n getRequestStatus: (key: string) => PendingRequest | undefined;\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 配置联合类型(用于灵活的 API)\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 防重复配置联合类型\n *\n * 支持多种输入格式:\n * - boolean: 直接启用/禁用\n * - string: 设置 requestKey\n * - function: 设置 requestKey 生成函数\n * - number: 设置 intervalMs\n * - string[]: 设置 methods\n * - object: 完整配置对象\n */\nexport type PreventDuplicateOption =\n | PreventDuplicateConfig\n | boolean\n | string\n | ((config: AxiosRequestConfig, hash: (str: string) => string) => string)\n | number\n | string[];\n\n/**\n * 取消请求配置联合类型\n *\n * 支持多种输入格式(同上)\n */\nexport type CancelRequestOption =\n | CancelRequestConfig\n | boolean\n | string\n | ((config: AxiosRequestConfig, hash: (str: string) => string) => string)\n | string[];\n\n/**\n * 重试配置联合类型\n *\n * 支持多种输入格式:\n * - boolean: 启用/禁用\n * - number: 设置 retries\n * - number[]: 生成 retryCondition(匹配数组中状态码或网络错误)\n * - function: 设置 retryCondition\n * - object: 完整配置对象\n */\nexport type RetryOption =\n | RetryConfig\n | boolean\n | number\n | ((error: AxiosError) => boolean);\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 内部类型(归一化后的配置,可选字段已填充默认值)\n// ════════════════════════════════════════════════════════════════════════════════\n\ntype RequiredKeys<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;\n\nexport type InternalPreventConfig = RequiredKeys<PreventDuplicateConfig, 'enabled' | 'intervalMs'>;\n\nexport type InternalCancelConfig = RequiredKeys<CancelRequestConfig, 'enabled'>;\n\nexport type InternalRetryConfig = RequiredKeys<\n RetryConfig,\n 'enabled' | 'retries' | 'retryDelay' | 'retryCondition' | 'exponential' | 'maxDelay'\n>;\n\n// ════════════════════════════════════════════════════════════════════════════════\n// AxiosRequestConfig 扩展\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 增强后的 AxiosRequestConfig\n *\n * 扩展了 preventDuplicate、cancelRequest 和 retry 字段\n */\nexport interface CreateEnhanceOptions extends AxiosRequestConfig {\n /** Content-Type 简化配置,默认 'json' */\n contentType?: ContentType;\n /** 防重复提交配置 */\n preventDuplicate?: PreventDuplicateOption;\n /** 取消请求配置 */\n cancelRequest?: CancelRequestOption;\n /** 重试配置 */\n retry?: RetryOption;\n /** 所有请求自动添加 _ 参数防止缓存,默认 true,仅 false 关闭 */\n needCacheBust?: boolean;\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 模块扩展\n// ════════════════════════════════════════════════════════════════════════════════\n\n// 扩展 axios 的 AxiosRequestConfig 类型\ndeclare module 'axios' {\n interface AxiosRequestConfig {\n /** Content-Type 简化配置,默认 'json' */\n contentType?: ContentType;\n /** 防重复提交配置 */\n preventDuplicate?: PreventDuplicateOption;\n /** 取消请求配置 */\n cancelRequest?: CancelRequestOption;\n /** 重试配置 */\n retry?: RetryOption;\n /** 所有请求自动添加 _ 参数防止缓存,默认 true,仅 false 关闭 */\n needCacheBust?: boolean;\n }\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 导出\n// ════════════════════════════════════════════════════════════════════════════════\n\nexport { RequestManager } from '../core/requestManager';","/**\n * enhance-axios 核心模块\n *\n * ════════════════════════════════════════════════════════════════════════════════\n * 功能说明\n * ════════════════════════════════════════════════════════════════════════════════\n *\n * 五个增强能力:\n * 1. 防重复提交 (preventDuplicate) — 短时间内相同请求复用第一次的结果\n * 2. 取消请求 (cancelRequest) — 新请求到达时取消旧请求,始终保留最新\n * 3. 失败重试 (retry) — HTTP 错误或业务码异常时自动重试\n * 4. 数据转换 (contentType) — 根据 Content-Type 自动转换 data 格式\n * 5. 缓存破坏 (needCacheBust) — 所有请求追加 _ 参数防止缓存\n *\n * ════════════════════════════════════════════════════════════════════════════════\n * 默认策略\n * ════════════════════════════════════════════════════════════════════════════════\n *\n * 功能 | 默认启用 | 默认 methods | 默认 key 生成\n * --------|---------|----------------------------------|------------------\n * 防重复 | 是 | POST, PUT, PATCH, DELETE | hash(method|url|params|data)\n * 取消请求| 是 | GET | 同上\n * 重试 | 是 | 全部 | N/A\n * 数据转换| 是 | N/A (有 data 的请求) | N/A\n * 缓存破坏| 是 | 全部 | N/A\n *\n * 防重复和取消请求通过 methods 各自控制生效范围,默认互不重叠。\n * 同一请求同时命中两者时:步骤 3(取消旧请求)→ 步骤 4(防重复检查)→ 步骤 5(注册)。\n *\n * ════════════════════════════════════════════════════════════════════════════════\n * 配置规则\n * ════════════════════════════════════════════════════════════════════════════════\n *\n * 1. 请求级配置覆盖实例级配置\n * 2. 请求级传入 object 默认 enabled: true(显式 opt-in)\n * 3. 快捷写法(string/function/number/array)暗含 enabled: true\n * 4. needCacheBust 仅 false 关闭,其他值一律视为 true\n * 5. methods: undefined / null → 全部方法,methods: [] → 不应用\n *\n * ════════════════════════════════════════════════════════════════════════════════\n * 请求拦截器流程\n * ════════════════════════════════════════════════════════════════════════════════\n *\n * 步骤 1 — 获取有效配置 请求级 > 实例级\n * 步骤 2 — Content-Type 处理 默认 json,file 不设(浏览器自动 boundary)\n * 步骤 3 — 取消旧请求 同 cancelKey 的旧请求被 abort\n * 步骤 4 — 防重复检查 同 preventKey 且在 intervalMs 内 → 阻止,返回 deferred.promise\n * 步骤 5 — 注册新请求 AbortController + requestManager 双 Map 注册\n * 步骤 6 — 数据转换注入 file/form → transformRequest(json 由 axios 处理)\n * 步骤 7 — 缓存破坏 追加 _=<timestamp> 到 params(key 生成后,不影响防重复)\n *\n * ════════════════════════════════════════════════════════════════════════════════\n * 响应拦截器流程\n * ════════════════════════════════════════════════════════════════════════════════\n *\n * 成功 (2xx):\n * 1. 业务码重试检测(retryCondition 在 success handler 中直接判断)\n * 2. resolve deferred → 清理 pendingReturns + requestManager\n *\n * 错误 (非 2xx / 网络错误 / 取消):\n * 情况 1 ─ 防重复拦截 → 返回 deferred.promise(不清理,等待者拿原请求结果)\n * 情况 2 ─ 请求被取消 → reject deferred → 清理 → 抛出\n * 情况 3 ─ 满足重试条件 → 保留 deferred → 清理 requestManager → 延迟后重试\n * 情况 4 ─ 不满足/重试耗尽 → reject deferred → 清理 → 抛出\n *\n * ════════════════════════════════════════════════════════════════════════════════\n * deferred 机制\n * ════════════════════════════════════════════════════════════════════════════════\n *\n * pendingReturns: Map<key, { resolve, reject, promise }>\n * 请求 A 创建 deferred — 请求 B 被拦截时拿到 A 的 deferred.promise\n * 重试链复用同一个 deferred — 被拦截的请求拿到最终结果而非中间失败\n *\n * requestManager: { preventPending, cancelPending }\n * 两个独立 Map,各自存 { key, config, controller, promise, timestamp }\n * controller 用于 abort(),promise 指向 pendingReturns 的 deferred.promise\n *\n * ════════════════════════════════════════════════════════════════════════════════\n * 清理时机\n * ════════════════════════════════════════════════════════════════════════════════\n *\n * 操作 | pendingReturns | requestManager | deferred\n * ------------------|----------------|----------------|----------\n * 成功 / 重试成功 | 删除 | 取消注册 | resolve\n * 失败 / 重试耗尽 | 删除 | 取消注册 | reject\n * 重试前 | 保留 | 取消注册 | 保留\n * 防重复拦截 | - | - | -\n * 请求被取消 | 删除 | 取消注册 | reject\n * clearAll() | 全部删除 | 全部清空 | reject 全部\n *\n * ════════════════════════════════════════════════════════════════════════════════\n * 重试场景\n * ════════════════════════════════════════════════════════════════════════════════\n *\n * 场景 | HTTP | 重试 | 判断方式\n * -------------------|--------|------|------------------\n * 网络错误 | 无 | 是 | !error.response\n * 408 / 429 / 5xx | >=400 | 是 | retryCondition\n * 4xx 客户端错误 | 400+ | 否 | 默认不重试\n * 请求取消 | - | 否 | axios.isCancel()\n * 防重复拦截 | - | 否 | __preventReturn\n * 2xx 业务码异常 | 200 | 自定义| success handler 中 retryCondition\n */\n\nimport axios, { AxiosInstance, AxiosRequestConfig, AxiosError } from 'axios';\nimport { RequestManager } from './requestManager';\nimport { resolveRequestKey, getFormData } from '../utils';\nimport type {\n CreateEnhanceOptions,\n EnhanceInstance,\n PreventDuplicateConfig,\n CancelRequestConfig,\n RetryConfig,\n PreventDuplicateOption,\n CancelRequestOption,\n RetryOption,\n InternalPreventConfig,\n InternalCancelConfig,\n InternalRetryConfig,\n RequestMethod,\n} from '../types';\nimport { CONTENT_TYPE_MAP } from '../types';\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 存储防重复请求的延迟 Promise\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 延迟 Promise 结构\n *\n * 用于防重复提交:当检测到重复请求时,后续请求可以等待原始请求的结果。\n * Promise 会在原始请求(包括重试)最终完成时被 resolve/reject。\n * 重试链会复用同一个 deferred,保证后续请求拿到最终结果而非中间失败。\n */\ninterface PendingDeferred {\n resolve: (value: unknown) => void;\n reject: (reason: unknown) => void;\n promise: Promise<unknown>;\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 默认配置\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 默认防重复配置\n */\nconst DEFAULT_PREVENT_CONFIG: InternalPreventConfig = {\n enabled: true,\n methods: ['POST', 'PUT', 'PATCH', 'DELETE'],\n intervalMs: 1000,\n};\n\n/**\n * 默认取消请求配置\n */\nconst DEFAULT_CANCEL_CONFIG: InternalCancelConfig = {\n enabled: true,\n methods: ['GET'],\n};\n\n/**\n * 默认重试条件(可导出复用)\n *\n * - 网络错误 / CORS 等(无 response)→ 重试\n * - 408 Request Timeout → 重试\n * - 429 Too Many Requests → 重试\n * - 5xx 服务器错误 → 重试\n * - 其他(4xx 等)→ 不重试\n */\nexport function defaultRetryCondition(error: AxiosError): boolean {\n if (!error.response) {\n return true;\n }\n const status = error.response.status;\n if (status === 408 || status === 429) {\n return true;\n }\n if (status >= 500 && status < 600) {\n return true;\n }\n return false;\n}\n\n/**\n * 默认重试配置\n */\nconst DEFAULT_RETRY_CONFIG: InternalRetryConfig = {\n enabled: true,\n retries: 3,\n retryDelay: 1000,\n retryCondition: defaultRetryCondition,\n exponential: true,\n maxDelay: 30000,\n};\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 工具函数\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 检查 HTTP 方法是否在允许列表中\n */\nfunction shouldApply(method?: string, methods?: string[] | null): boolean {\n if (methods == null) return true;\n if (methods.length === 0) return false;\n return methods.includes(method?.toUpperCase() || 'GET');\n}\n\n/**\n * 计算重试延迟(支持指数退避)\n *\n * @param retryConfig 重试配置\n * @param retryCount 当前重试次数(从 0 开始)\n * @returns 延迟时间(ms)\n *\n * 指数退避公式:min(retryDelay * 2^retryCount, maxDelay)\n */\nfunction calculateRetryDelay(\n retryConfig: { retryDelay: number; exponential: boolean; maxDelay: number },\n retryCount: number\n): number {\n let delay = retryConfig.retryDelay;\n if (retryConfig.exponential) {\n delay = Math.min(\n retryConfig.retryDelay * Math.pow(2, retryCount),\n retryConfig.maxDelay\n );\n }\n return delay;\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 数据自动转换(transformRequest 注入)\n// ════════════════════════════════════════════════════════════════════════════════\n\nfunction getDataFormat(config: AxiosRequestConfig): string | undefined {\n const headers = config.headers || {};\n const ctKey = Object.keys(headers).find(k => k.toLowerCase() === 'content-type');\n if (ctKey) {\n const ct = String(headers[ctKey]).toLowerCase();\n if (ct.includes('multipart/form-data')) return 'file';\n if (ct.includes('application/x-www-form-urlencoded')) return 'form';\n if (ct.includes('application/json') || ct.includes('+json')) return 'json';\n }\n return config.contentType;\n}\n\nfunction injectDataTransform(\n config: AxiosRequestConfig,\n format: 'file' | 'form',\n instance: AxiosInstance,\n): void {\n if ((config as any).__dataTransformInjected) return;\n (config as any).__dataTransformInjected = true;\n\n const ourTransform = (data: unknown) => {\n if (data == null || data instanceof FormData || data instanceof URLSearchParams) return data;\n if (typeof data !== 'object') return data;\n if (format === 'file') return getFormData(data);\n return new URLSearchParams(data as Record<string, string>);\n };\n\n const existing = config.transformRequest;\n const defaults = instance.defaults.transformRequest;\n const source = existing != null ? existing : defaults;\n let chain: ((...args: any[]) => any)[] = [];\n if (source != null) {\n chain = Array.isArray(source) ? [...source] : [source];\n }\n config.transformRequest = [ourTransform, ...chain];\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 配置归一化函数\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 判断配置是否已设置(不是 undefined/null)\n */\nfunction isConfigSet(config: any): boolean {\n return config != null;\n}\n\n/**\n * 配置归一化:防重复提交\n *\n * 支持的输入格式:\n * - boolean: 赋给 enabled\n * - string: 赋给 requestKey\n * - function: 赋给 requestKey\n * - number: 赋给 intervalMs\n * - array: 赋给 methods\n * - object: 合并到配置\n * - undefined/null: 视为未传递,使用默认值\n */\nfunction normalizePreventConfig(\n config: PreventDuplicateOption | undefined,\n defaults: InternalPreventConfig\n): InternalPreventConfig {\n // undefined/null 视为未传递\n if (!isConfigSet(config)) {\n return defaults;\n }\n\n // boolean -> enabled\n if (typeof config === 'boolean') {\n return { ...defaults, enabled: config };\n }\n\n // string -> requestKey\n if (typeof config === 'string') {\n return { ...defaults, enabled: true, requestKey: config };\n }\n\n // function -> requestKey\n if (typeof config === 'function') {\n return { ...defaults, enabled: true, requestKey: config as (cfg: AxiosRequestConfig, h: (s: string) => string) => string };\n }\n\n // number -> intervalMs\n if (typeof config === 'number') {\n return { ...defaults, enabled: true, intervalMs: config };\n }\n\n // array -> methods\n if (Array.isArray(config)) {\n return { ...defaults, enabled: true, methods: [...(config as string[])] };\n }\n\n // object -> 合并\n return {\n enabled: (config as PreventDuplicateConfig).enabled ?? true,\n requestKey: (config as PreventDuplicateConfig).requestKey ?? defaults.requestKey,\n methods: (config as PreventDuplicateConfig).methods != null\n ? (config as PreventDuplicateConfig).methods\n : defaults.methods,\n intervalMs: (config as PreventDuplicateConfig).intervalMs ?? defaults.intervalMs,\n };\n}\n\n/**\n * 配置归一化:取消请求\n *\n * 支持的输入格式同 normalizePreventConfig\n */\nfunction normalizeCancelConfig(\n config: CancelRequestOption | undefined,\n defaults: InternalCancelConfig\n): InternalCancelConfig {\n if (!isConfigSet(config)) {\n return defaults;\n }\n\n if (typeof config === 'boolean') {\n return { ...defaults, enabled: config };\n }\n\n if (typeof config === 'string') {\n return { ...defaults, enabled: true, requestKey: config };\n }\n\n if (typeof config === 'function') {\n return { ...defaults, enabled: true, requestKey: config as (cfg: AxiosRequestConfig, h: (s: string) => string) => string };\n }\n\n if (Array.isArray(config)) {\n return { ...defaults, enabled: true, methods: [...(config as string[])] };\n }\n\n return {\n enabled: (config as CancelRequestConfig).enabled ?? true,\n requestKey: (config as CancelRequestConfig).requestKey ?? defaults.requestKey,\n methods: (config as CancelRequestConfig).methods != null\n ? (config as CancelRequestConfig).methods\n : defaults.methods,\n };\n}\n\n/**\n * 配置归一化:失败重试\n *\n * 支持的输入格式:\n * - boolean: 赋给 enabled\n * - number: 赋给 retries\n * - number[]: 生成 retryCondition(匹配数组中状态码或网络错误)\n * - function: 赋给 retryCondition\n * - object: 合并到配置\n * - undefined/null: 视为未传递,使用默认值\n *\n * 注意:非对象类型的快捷方式默认开启该功能(enabled: true),\n * 仅 retry: false 时明确关闭。\n */\nfunction normalizeRetryConfig(\n config: RetryOption | undefined,\n defaults: InternalRetryConfig\n): InternalRetryConfig {\n if (!isConfigSet(config)) {\n return defaults;\n }\n\n if (typeof config === 'boolean') {\n return { ...defaults, enabled: config };\n }\n\n if (typeof config === 'number') {\n return { ...defaults, enabled: true, retries: config };\n }\n\n if (typeof config === 'function') {\n return { ...defaults, enabled: true, retryCondition: config as (error: AxiosError) => boolean };\n }\n\n if (Array.isArray(config)) {\n const codes = config as number[];\n return {\n ...defaults,\n enabled: true,\n retryCondition: (error: AxiosError) => {\n if (!error.response) return true;\n return codes.includes(error.response.status);\n },\n };\n }\n\n return {\n enabled: (config as RetryConfig).enabled ?? true,\n retries: (config as RetryConfig).retries ?? defaults.retries,\n retryDelay: (config as RetryConfig).retryDelay ?? defaults.retryDelay,\n retryCondition: (config as RetryConfig).retryCondition ?? defaults.retryCondition,\n exponential: (config as RetryConfig).exponential ?? defaults.exponential,\n maxDelay: (config as RetryConfig).maxDelay ?? defaults.maxDelay,\n methods: (config as RetryConfig).methods != null\n ? (config as RetryConfig).methods\n : defaults.methods,\n };\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 核心函数\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 获取有效的增强配置\n *\n * 优先级规则:\n * 1. 请求级配置优先于实例级配置(通过 methods 数组控制生效方法)\n * 2. 未设置时使用实例默认配置\n * 3. 默认 methods:防重复 -> POST/PUT/PATCH/DELETE,取消请求 -> GET\n *\n * @param config 请求配置\n * @param instanceDefaults 实例默认配置\n */\nfunction getEffectiveConfig(\n config: AxiosRequestConfig,\n instanceDefaults: {\n prevent: InternalPreventConfig;\n cancel: InternalCancelConfig;\n }\n): { prevent: InternalPreventConfig; cancel: InternalCancelConfig } {\n const prevent = isConfigSet(config.preventDuplicate)\n ? normalizePreventConfig(config.preventDuplicate, instanceDefaults.prevent)\n : { ...instanceDefaults.prevent };\n\n const cancel = isConfigSet(config.cancelRequest)\n ? normalizeCancelConfig(config.cancelRequest, instanceDefaults.cancel)\n : { ...instanceDefaults.cancel };\n\n return { prevent, cancel };\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 请求清理辅助\n// ════════════════════════════════════════════════════════════════════════════════\n\nfunction getPendingKey(config: AxiosRequestConfig): string | undefined {\n return (config as any).__pendingKey;\n}\nfunction getCancelKey(config: AxiosRequestConfig): string | undefined {\n return (config as any).__cancelKey;\n}\n\n/**\n * 清理 requestManager 中的注册记录(不操作 deferred)\n */\nfunction cleanupRegistered(config: AxiosRequestConfig, rm: RequestManager): void {\n const pk = getPendingKey(config);\n const ck = getCancelKey(config);\n if (pk) rm.unregisterRequest(pk, 'prevent');\n if (ck && ck !== pk) rm.unregisterRequest(ck, 'cancel');\n}\n\n/**\n * 失败时:reject deferred + 清理\n */\nfunction rejectAndCleanup(\n config: AxiosRequestConfig, rm: RequestManager,\n pr: Map<string, PendingDeferred>, reason: unknown\n): void {\n const pk = getPendingKey(config);\n const ck = getCancelKey(config);\n if (pk) {\n const df = pr.get(pk);\n if (df) { df.reject(reason); pr.delete(pk); }\n rm.unregisterRequest(pk, 'prevent');\n }\n if (ck && ck !== pk) rm.unregisterRequest(ck, 'cancel');\n}\n\nfunction resolveAndCleanup(\n config: AxiosRequestConfig, rm: RequestManager,\n pr: Map<string, PendingDeferred>, data: unknown\n): void {\n const pk = getPendingKey(config);\n const ck = getCancelKey(config);\n if (pk) {\n const df = pr.get(pk);\n if (df) { df.resolve(data); pr.delete(pk); }\n rm.unregisterRequest(pk, 'prevent');\n }\n if (ck && ck !== pk) rm.unregisterRequest(ck, 'cancel');\n}\n\n// ════════════════════════════════════════════════════════════════════════════════\n// 主函数\n// ════════════════════════════════════════════════════════════════════════════════\n\n/**\n * 创建增强的 axios 实例\n *\n * @param options 实例配置\n * @returns 增强后的 axios 实例\n */\nfunction createEnhanceInstance(options: CreateEnhanceOptions = {}): AxiosInstance & { enhance: EnhanceInstance } {\n // ─────────────────────────────────────────────────────────────────────────\n // 创建原生 axios 实例\n // ─────────────────────────────────────────────────────────────────────────\n const instance = axios.create(options);\n\n // ─────────────────────────────────────────────────────────────────────────\n // 初始化默认配置\n // ─────────────────────────────────────────────────────────────────────────\n const defaultPrevent = { ...DEFAULT_PREVENT_CONFIG };\n const defaultCancel = { ...DEFAULT_CANCEL_CONFIG };\n const defaultRetry = { ...DEFAULT_RETRY_CONFIG };\n\n // 处理实例级别的配置归一化\n if (isConfigSet(options.preventDuplicate)) {\n const normalized = normalizePreventConfig(options.preventDuplicate, DEFAULT_PREVENT_CONFIG);\n Object.assign(defaultPrevent, normalized);\n }\n\n if (isConfigSet(options.cancelRequest)) {\n const normalized = normalizeCancelConfig(options.cancelRequest, DEFAULT_CANCEL_CONFIG);\n Object.assign(defaultCancel, normalized);\n }\n\n if (isConfigSet(options.retry)) {\n const normalized = normalizeRetryConfig(options.retry, DEFAULT_RETRY_CONFIG);\n Object.assign(defaultRetry, normalized);\n }\n\n const needCacheBust = options.needCacheBust ?? true;\n\n // ─────────────────────────────────────────────────────────────────────────\n // 初始化请求管理器 和 延迟 Promise 存储\n // ─────────────────────────────────────────────────────────────────────────\n const requestManager = new RequestManager();\n const pendingReturns = new Map<string, PendingDeferred>();\n\n // ─────────────────────────────────────────────────────────────────────────\n // 暴露给用户的 enhance API\n // ─────────────────────────────────────────────────────────────────────────\n const enhanceInstance: EnhanceInstance = {\n requestManager,\n clearAll: () => {\n for (const [_key, deferred] of pendingReturns) {\n try { deferred.reject(new Error('All requests cleared')); } catch { }\n }\n pendingReturns.clear();\n requestManager.clearAll();\n },\n cancelRequest: (key: string) => requestManager.cancelRequest(key),\n getRequestStatus: (key: string) => requestManager.getRequestStatus(key),\n };\n\n // ════════════════════════════════════════════════════════════════════════════\n // 请求拦截器\n // ════════════════════════════════════════════════════════════════════════════\n instance.interceptors.request.use(\n (config) => {\n const method = config.method?.toUpperCase() || 'GET';\n\n // ─────────────────────────────────────────────────────────────────────\n // 步骤 1:获取有效的增强配置\n // ─────────────────────────────────────────────────────────────────────\n const { prevent, cancel } = getEffectiveConfig(config, { prevent: defaultPrevent, cancel: defaultCancel });\n\n // ─────────────────────────────────────────────────────────────────────\n // 步骤 2:处理 Content-Type\n // ─────────────────────────────────────────────────────────────────────\n // 仅在未显式设置 Content-Type 时处理(大小写不敏感)\n // 'json' → application/json;charset=UTF-8(默认)\n // 'form' → application/x-www-form-urlencoded\n // 'file' → 不设置(multipart/form-data 需要 boundary)\n // 自定义字符串 → 直接使用\n const headers = config.headers || {};\n const hasContentType = typeof headers === 'object'\n && Object.keys(headers).some(k => k.toLowerCase() === 'content-type');\n\n if (!hasContentType) {\n const contentType = config.contentType;\n\n if (contentType !== 'file') {\n config.headers = config.headers || {};\n const value = contentType != null\n ? (CONTENT_TYPE_MAP[contentType] || contentType)\n : CONTENT_TYPE_MAP.json;\n config.headers['Content-Type'] = value;\n }\n }\n\n // ─────────────────────────────────────────────────────────────────────\n // 步骤 3:取消旧请求(同 key 的旧请求被中止)\n // ─────────────────────────────────────────────────────────────────────\n if (cancel.enabled && shouldApply(method, cancel.methods)) {\n const key = resolveRequestKey(config, cancel.requestKey);\n // 清除旧请求的 key 标记,避免其异步 error handler 误删新请求的注册\n const existing = requestManager.getRequestStatus(key);\n if (existing?.config) {\n (existing.config as any).__cancelKey = undefined;\n (existing.config as any).__pendingKey = undefined;\n }\n requestManager.cancelRequest(key);\n }\n\n // ─────────────────────────────────────────────────────────────────────\n // 步骤 4:防重复检查(同 key 且在 intervalMs 内则阻止当前请求)\n // ─────────────────────────────────────────────────────────────────────\n if (prevent.enabled && shouldApply(method, prevent.methods)) {\n const key = resolveRequestKey(config, prevent.requestKey);\n\n // 检查是否有正在进行的相同请求\n const existing = requestManager.getRequestStatus(key);\n if (existing) {\n const now = Date.now();\n // 如果请求还在 intervalMs 内,则返回已有请求的 Promise\n if (now - existing.timestamp < prevent.intervalMs) {\n const deferred = pendingReturns.get(key);\n if (deferred) {\n // 阻止当前请求:通过 AbortController 中止本次请求\n const controller = new AbortController();\n config.signal = controller.signal;\n controller.abort('Request prevented by duplicate');\n\n // 保存 key,用于响应拦截器中可能需要的清理\n (config as any).__pendingKey = key;\n\n // 创建错误对象,携带原请求的 Promise 给调用方\n const error = new Error('Request prevented by duplicate') as AxiosError;\n (error as any).__preventReturn = true;\n (error as any).__pendingPromise = deferred.promise;\n (error as any).__pendingKey = key;\n error.config = config;\n\n return Promise.reject(error);\n }\n }\n }\n }\n\n // ─────────────────────────────────────────────────────────────────────\n // 步骤 5:注册新请求(创建 AbortController 供后续 cancel/prevent 使用)\n // ─────────────────────────────────────────────────────────────────────\n const needsPrevent = prevent.enabled && shouldApply(method, prevent.methods);\n const needsCancel = cancel.enabled && shouldApply(method, cancel.methods);\n\n if (needsPrevent || needsCancel) {\n const controller = new AbortController();\n config.signal = controller.signal;\n (config as any).__controller = controller;\n\n if (needsCancel) {\n const cancelKey = resolveRequestKey(config, cancel.requestKey);\n (config as any).__cancelKey = cancelKey;\n requestManager.registerRequest(cancelKey, 'cancel', controller, Promise.resolve(), config);\n }\n\n if (needsPrevent) {\n const preventKey = resolveRequestKey(config, prevent.requestKey);\n (config as any).__pendingKey = preventKey;\n\n let deferred = pendingReturns.get(preventKey);\n if (!deferred) {\n let resolveFn: (value: unknown) => void;\n let rejectFn: (reason: unknown) => void;\n const promise = new Promise<unknown>((resolve, reject) => {\n resolveFn = resolve;\n rejectFn = reject;\n });\n deferred = { resolve: resolveFn!, reject: rejectFn!, promise };\n pendingReturns.set(preventKey, deferred);\n }\n\n requestManager.registerRequest(preventKey, 'prevent', controller, deferred.promise, config);\n }\n }\n\n // ─────────────────────────────────────────────────────────────────────\n // 步骤 6:注入数据转换(file/form → transformRequest,json 由 axios 默认处理)\n // ─────────────────────────────────────────────────────────────────────\n const format = getDataFormat(config);\n if (format === 'file' || format === 'form') {\n injectDataTransform(config, format, instance);\n }\n\n // ─────────────────────────────────────────────────────────────────────\n // 步骤 7:缓存破坏(追加 _ 参数,key 生成后执行,stripCacheParam 自动剔除不影响 key)\n // ─────────────────────────────────────────────────────────────────────\n if ((config.needCacheBust ?? needCacheBust) !== false) {\n const stamp = Date.now().toString(36);\n if (config.params instanceof URLSearchParams) {\n config.params.append('_', stamp);\n } else if (typeof config.params === 'object' && config.params !== null) {\n config.params = { ...config.params, _: stamp };\n } else {\n config.params = { _: stamp };\n }\n }\n\n return config;\n },\n (error) => {\n if (error?.config) rejectAndCleanup(error.config, requestManager, pendingReturns, error);\n return Promise.reject(error);\n }\n );\n\n // ════════════════════════════════════════════════════════════════════════════\n // 响应拦截器\n // ════════════════════════════════════════════════════════════════════════════\n instance.interceptors.response.use(\n // ─────────────────────────────────────────────────────────────────────────\n // 成功响应处理 (2xx)\n // ─────────────────────────────────────────────────────────────────────────\n async (response) => {\n const config = response.config;\n\n // ─────────────────────────────────────────────────────────────────────\n // 检查业务码重试(2xx 但业务逻辑失败)\n // ─────────────────────────────────────────────────────────────────────\n const retryConfig = normalizeRetryConfig(config.retry, defaultRetry);\n if (retryConfig.enabled && shouldApply(config.method, retryConfig.methods)) {\n const syntheticError = new Error('Business logic error') as AxiosError;\n syntheticError.config = config;\n syntheticError.response = response;\n syntheticError.isAxiosError = true;\n\n if (retryConfig.retryCondition(syntheticError)) {\n const retryCount = (config as any).__retryCount || 0;\n if (retryCount < retryConfig.retries) {\n await new Promise((resolve) => setTimeout(resolve, calculateRetryDelay(retryConfig, retryCount)));\n cleanupRegistered(config, requestManager);\n (config as any).__retryCount = retryCount + 1;\n return instance.request(config);\n }\n }\n }\n\n resolveAndCleanup(config, requestManager, pendingReturns, response);\n return response;\n },\n\n // ─────────────────────────────────────────────────────────────────────────\n // 错误响应处理 (非 2xx / 网络错误 / 取消 / 防重复拦截)\n // ─────────────────────────────────────────────────────────────────────────\n async (error) => {\n const config = error.config || (error as any).config;\n if (!config) return Promise.reject(error);\n\n // 情况 1:防重复拦截 → 返回原始 deferred.promise\n if ((error as any)?.__preventReturn && (error as any)?.__pendingPromise) {\n return (error as any).__pendingPromise;\n }\n\n // 情况 2:请求被取消 → reject + 清理(不重试)\n if (axios.isCancel(error)) {\n rejectAndCleanup(config, requestManager, pendingReturns, error);\n return Promise.reject(error);\n }\n\n // 情况 3:重试\n const retryConfig = normalizeRetryConfig(config.retry, defaultRetry);\n if (retryConfig.enabled && shouldApply(config.method, retryConfig.methods)) {\n const retryCount = (config as any).__retryCount || 0;\n\n const shouldRetry =\n retryCount < retryConfig.retries &&\n retryConfig.retryCondition(error);\n\n if (shouldRetry) {\n await new Promise((resolve) => setTimeout(resolve, calculateRetryDelay(retryConfig, retryCount)));\n cleanupRegistered(config, requestManager);\n (config as any).__retryCount = retryCount + 1;\n return instance.request(config);\n }\n }\n\n // 情况 4:不需要重试或重试耗尽,清理并抛出错误\n rejectAndCleanup(config, requestManager, pendingReturns, error);\n return Promise.reject(error);\n }\n );\n\n // ════════════════════════════════════════════════════════════════════════════\n // 添加 RESTful 方法封装\n // ════════════════════════════════════════════════════════════════════════════\n const methods: RequestMethod[] = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'];\n\n for (const method of methods) {\n (instance as any)[method.toLowerCase()] = (url: string, data?: any, config?: AxiosRequestConfig) => {\n const finalConfig: AxiosRequestConfig = {\n ...config,\n url,\n method: method,\n };\n\n // 根据方法类型决定 data 参数的位置\n if (['GET', 'HEAD', 'OPTIONS'].includes(method)) {\n if (data) finalConfig.params = data;\n } else {\n if (data !== undefined) finalConfig.data = data;\n }\n\n return instance.request(finalConfig);\n };\n }\n\n // 添加 enhance 属性\n (instance as any).enhance = enhanceInstance;\n\n return instance as AxiosInstance & { enhance: EnhanceInstance };\n}\n\nexport { createEnhanceInstance };\n","// 此文件由构建脚本自动生成,请勿手动修改\nexport const version = '1.0.2';\nexport default version;\n"],"mappings":"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","names":["prototype","filter","hasOwnProperty","filter","self","prototype","prototype","toString","encode","isFormData","isFileList","transitional","validateStatus","origin","merge","own","transitional","signal","iterator","done","bytes","isFunction","ReadableStream","fetch","adapter","adapter","version","validators","transitional","create","Axios","AxiosError","CanceledError","isCancel","CancelToken","VERSION","all","isAxiosError","spread","toFormData","AxiosHeaders","HttpStatusCode","getAdapter","mergeConfig","isPlainObject","isPlainObject","isPlainObject","defaults"]}
|