| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522 | 
							- 'use strict';
 
- var bind = require('./helpers/bind');
 
- // utils is a library of generic helper functions non-specific to axios
 
- var toString = Object.prototype.toString;
 
- // eslint-disable-next-line func-names
 
- var kindOf = (function(cache) {
 
-   // eslint-disable-next-line func-names
 
-   return function(thing) {
 
-     var str = toString.call(thing);
 
-     return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
 
-   };
 
- })(Object.create(null));
 
- function kindOfTest(type) {
 
-   type = type.toLowerCase();
 
-   return function isKindOf(thing) {
 
-     return kindOf(thing) === type;
 
-   };
 
- }
 
- /**
 
-  * Determine if a value is an Array
 
-  *
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is an Array, otherwise false
 
-  */
 
- function isArray(val) {
 
-   return Array.isArray(val);
 
- }
 
- /**
 
-  * Determine if a value is undefined
 
-  *
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if the value is undefined, otherwise false
 
-  */
 
- function isUndefined(val) {
 
-   return typeof val === 'undefined';
 
- }
 
- /**
 
-  * Determine if a value is a Buffer
 
-  *
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is a Buffer, otherwise false
 
-  */
 
- function isBuffer(val) {
 
-   return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
 
-     && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);
 
- }
 
- /**
 
-  * Determine if a value is an ArrayBuffer
 
-  *
 
-  * @function
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is an ArrayBuffer, otherwise false
 
-  */
 
- var isArrayBuffer = kindOfTest('ArrayBuffer');
 
- /**
 
-  * Determine if a value is a view on an ArrayBuffer
 
-  *
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
 
-  */
 
- function isArrayBufferView(val) {
 
-   var result;
 
-   if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
 
-     result = ArrayBuffer.isView(val);
 
-   } else {
 
-     result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));
 
-   }
 
-   return result;
 
- }
 
- /**
 
-  * Determine if a value is a String
 
-  *
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is a String, otherwise false
 
-  */
 
- function isString(val) {
 
-   return typeof val === 'string';
 
- }
 
- /**
 
-  * Determine if a value is a Number
 
-  *
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is a Number, otherwise false
 
-  */
 
- function isNumber(val) {
 
-   return typeof val === 'number';
 
- }
 
- /**
 
-  * Determine if a value is an Object
 
-  *
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is an Object, otherwise false
 
-  */
 
- function isObject(val) {
 
-   return val !== null && typeof val === 'object';
 
- }
 
- /**
 
-  * Determine if a value is a plain Object
 
-  *
 
-  * @param {Object} val The value to test
 
-  * @return {boolean} True if value is a plain Object, otherwise false
 
-  */
 
- function isPlainObject(val) {
 
-   if (kindOf(val) !== 'object') {
 
-     return false;
 
-   }
 
-   var prototype = Object.getPrototypeOf(val);
 
-   return prototype === null || prototype === Object.prototype;
 
- }
 
- /**
 
-  * Determine if a value is a empty Object
 
-  *
 
-  * @param {Object} val The value to test
 
-  * @return {boolean} True if value is a empty Object, otherwise false
 
-  */
 
- function isEmptyObject(val) {
 
-   return val && Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;
 
- }
 
- /**
 
-  * Determine if a value is a Date
 
-  *
 
-  * @function
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is a Date, otherwise false
 
-  */
 
- var isDate = kindOfTest('Date');
 
- /**
 
-  * Determine if a value is a File
 
-  *
 
-  * @function
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is a File, otherwise false
 
-  */
 
- var isFile = kindOfTest('File');
 
- /**
 
-  * Determine if a value is a Blob
 
-  *
 
-  * @function
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is a Blob, otherwise false
 
-  */
 
- var isBlob = kindOfTest('Blob');
 
- /**
 
-  * Determine if a value is a FileList
 
-  *
 
-  * @function
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is a File, otherwise false
 
-  */
 
- var isFileList = kindOfTest('FileList');
 
- /**
 
-  * Determine if a value is a Function
 
-  *
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is a Function, otherwise false
 
-  */
 
- function isFunction(val) {
 
-   return toString.call(val) === '[object Function]';
 
- }
 
- /**
 
-  * Determine if a value is a Stream
 
-  *
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is a Stream, otherwise false
 
-  */
 
- function isStream(val) {
 
-   return isObject(val) && isFunction(val.pipe);
 
- }
 
- /**
 
-  * Determine if a value is a FormData
 
-  *
 
-  * @param {Object} thing The value to test
 
-  * @returns {boolean} True if value is an FormData, otherwise false
 
-  */
 
- function isFormData(thing) {
 
-   var pattern = '[object FormData]';
 
-   return thing && (
 
-     (typeof FormData === 'function' && thing instanceof FormData) ||
 
-     toString.call(thing) === pattern ||
 
-     (isFunction(thing.toString) && thing.toString() === pattern)
 
-   );
 
- }
 
- /**
 
-  * Determine if a value is a URLSearchParams object
 
-  * @function
 
-  * @param {Object} val The value to test
 
-  * @returns {boolean} True if value is a URLSearchParams object, otherwise false
 
-  */
 
- var isURLSearchParams = kindOfTest('URLSearchParams');
 
- /**
 
-  * Trim excess whitespace off the beginning and end of a string
 
-  *
 
-  * @param {String} str The String to trim
 
-  * @returns {String} The String freed of excess whitespace
 
-  */
 
- function trim(str) {
 
-   return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
 
- }
 
- /**
 
-  * Determine if we're running in a standard browser environment
 
-  *
 
-  * This allows axios to run in a web worker, and react-native.
 
-  * Both environments support XMLHttpRequest, but not fully standard globals.
 
-  *
 
-  * web workers:
 
-  *  typeof window -> undefined
 
-  *  typeof document -> undefined
 
-  *
 
-  * react-native:
 
-  *  navigator.product -> 'ReactNative'
 
-  * nativescript
 
-  *  navigator.product -> 'NativeScript' or 'NS'
 
-  */
 
- function isStandardBrowserEnv() {
 
-   var product;
 
-   if (typeof navigator !== 'undefined' && (
 
-     (product = navigator.product) === 'ReactNative' ||
 
-     product === 'NativeScript' ||
 
-     product === 'NS')
 
-   ) {
 
-     return false;
 
-   }
 
-   return typeof window !== 'undefined' && typeof document !== 'undefined';
 
- }
 
- /**
 
-  * Iterate over an Array or an Object invoking a function for each item.
 
-  *
 
-  * If `obj` is an Array callback will be called passing
 
-  * the value, index, and complete array for each item.
 
-  *
 
-  * If 'obj' is an Object callback will be called passing
 
-  * the value, key, and complete object for each property.
 
-  *
 
-  * @param {Object|Array} obj The object to iterate
 
-  * @param {Function} fn The callback to invoke for each item
 
-  */
 
- function forEach(obj, fn) {
 
-   // Don't bother if no value provided
 
-   if (obj === null || typeof obj === 'undefined') {
 
-     return;
 
-   }
 
-   // Force an array if not already something iterable
 
-   if (typeof obj !== 'object') {
 
-     /*eslint no-param-reassign:0*/
 
-     obj = [obj];
 
-   }
 
-   if (isArray(obj)) {
 
-     // Iterate over array values
 
-     for (var i = 0, l = obj.length; i < l; i++) {
 
-       fn.call(null, obj[i], i, obj);
 
-     }
 
-   } else {
 
-     // Iterate over object keys
 
-     for (var key in obj) {
 
-       if (Object.prototype.hasOwnProperty.call(obj, key)) {
 
-         fn.call(null, obj[key], key, obj);
 
-       }
 
-     }
 
-   }
 
- }
 
- /**
 
-  * Accepts varargs expecting each argument to be an object, then
 
-  * immutably merges the properties of each object and returns result.
 
-  *
 
-  * When multiple objects contain the same key the later object in
 
-  * the arguments list will take precedence.
 
-  *
 
-  * Example:
 
-  *
 
-  * ```js
 
-  * var result = merge({foo: 123}, {foo: 456});
 
-  * console.log(result.foo); // outputs 456
 
-  * ```
 
-  *
 
-  * @param {Object} obj1 Object to merge
 
-  * @returns {Object} Result of all merge properties
 
-  */
 
- function merge(/* obj1, obj2, obj3, ... */) {
 
-   var result = {};
 
-   function assignValue(val, key) {
 
-     if (isPlainObject(result[key]) && isPlainObject(val)) {
 
-       result[key] = merge(result[key], val);
 
-     } else if (isPlainObject(val)) {
 
-       result[key] = merge({}, val);
 
-     } else if (isArray(val)) {
 
-       result[key] = val.slice();
 
-     } else {
 
-       result[key] = val;
 
-     }
 
-   }
 
-   for (var i = 0, l = arguments.length; i < l; i++) {
 
-     forEach(arguments[i], assignValue);
 
-   }
 
-   return result;
 
- }
 
- /**
 
-  * Extends object a by mutably adding to it the properties of object b.
 
-  *
 
-  * @param {Object} a The object to be extended
 
-  * @param {Object} b The object to copy properties from
 
-  * @param {Object} thisArg The object to bind function to
 
-  * @return {Object} The resulting value of object a
 
-  */
 
- function extend(a, b, thisArg) {
 
-   forEach(b, function assignValue(val, key) {
 
-     if (thisArg && typeof val === 'function') {
 
-       a[key] = bind(val, thisArg);
 
-     } else {
 
-       a[key] = val;
 
-     }
 
-   });
 
-   return a;
 
- }
 
- /**
 
-  * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
 
-  *
 
-  * @param {string} content with BOM
 
-  * @return {string} content value without BOM
 
-  */
 
- function stripBOM(content) {
 
-   if (content.charCodeAt(0) === 0xFEFF) {
 
-     content = content.slice(1);
 
-   }
 
-   return content;
 
- }
 
- /**
 
-  * Inherit the prototype methods from one constructor into another
 
-  * @param {function} constructor
 
-  * @param {function} superConstructor
 
-  * @param {object} [props]
 
-  * @param {object} [descriptors]
 
-  */
 
- function inherits(constructor, superConstructor, props, descriptors) {
 
-   constructor.prototype = Object.create(superConstructor.prototype, descriptors);
 
-   constructor.prototype.constructor = constructor;
 
-   props && Object.assign(constructor.prototype, props);
 
- }
 
- /**
 
-  * Resolve object with deep prototype chain to a flat object
 
-  * @param {Object} sourceObj source object
 
-  * @param {Object} [destObj]
 
-  * @param {Function|Boolean} [filter]
 
-  * @param {Function} [propFilter]
 
-  * @returns {Object}
 
-  */
 
- function toFlatObject(sourceObj, destObj, filter, propFilter) {
 
-   var props;
 
-   var i;
 
-   var prop;
 
-   var merged = {};
 
-   destObj = destObj || {};
 
-   // eslint-disable-next-line no-eq-null,eqeqeq
 
-   if (sourceObj == null) return destObj;
 
-   do {
 
-     props = Object.getOwnPropertyNames(sourceObj);
 
-     i = props.length;
 
-     while (i-- > 0) {
 
-       prop = props[i];
 
-       if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
 
-         destObj[prop] = sourceObj[prop];
 
-         merged[prop] = true;
 
-       }
 
-     }
 
-     sourceObj = filter !== false && Object.getPrototypeOf(sourceObj);
 
-   } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);
 
-   return destObj;
 
- }
 
- /*
 
-  * determines whether a string ends with the characters of a specified string
 
-  * @param {String} str
 
-  * @param {String} searchString
 
-  * @param {Number} [position= 0]
 
-  * @returns {boolean}
 
-  */
 
- function endsWith(str, searchString, position) {
 
-   str = String(str);
 
-   if (position === undefined || position > str.length) {
 
-     position = str.length;
 
-   }
 
-   position -= searchString.length;
 
-   var lastIndex = str.indexOf(searchString, position);
 
-   return lastIndex !== -1 && lastIndex === position;
 
- }
 
- /**
 
-  * Returns new array from array like object or null if failed
 
-  * @param {*} [thing]
 
-  * @returns {?Array}
 
-  */
 
- function toArray(thing) {
 
-   if (!thing) return null;
 
-   if (isArray(thing)) return thing;
 
-   var i = thing.length;
 
-   if (!isNumber(i)) return null;
 
-   var arr = new Array(i);
 
-   while (i-- > 0) {
 
-     arr[i] = thing[i];
 
-   }
 
-   return arr;
 
- }
 
- // eslint-disable-next-line func-names
 
- var isTypedArray = (function(TypedArray) {
 
-   // eslint-disable-next-line func-names
 
-   return function(thing) {
 
-     return TypedArray && thing instanceof TypedArray;
 
-   };
 
- })(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));
 
- function forEachEntry(obj, fn) {
 
-   var generator = obj && obj[Symbol.iterator];
 
-   var iterator = generator.call(obj);
 
-   var result;
 
-   while ((result = iterator.next()) && !result.done) {
 
-     var pair = result.value;
 
-     fn.call(obj, pair[0], pair[1]);
 
-   }
 
- }
 
- function matchAll(regExp, str) {
 
-   var matches;
 
-   var arr = [];
 
-   while ((matches = regExp.exec(str)) !== null) {
 
-     arr.push(matches);
 
-   }
 
-   return arr;
 
- }
 
- var isHTMLForm = kindOfTest('HTMLFormElement');
 
- var hasOwnProperty = (function resolver(_hasOwnProperty) {
 
-   return function(obj, prop) {
 
-     return _hasOwnProperty.call(obj, prop);
 
-   };
 
- })(Object.prototype.hasOwnProperty);
 
- module.exports = {
 
-   isArray: isArray,
 
-   isArrayBuffer: isArrayBuffer,
 
-   isBuffer: isBuffer,
 
-   isFormData: isFormData,
 
-   isArrayBufferView: isArrayBufferView,
 
-   isString: isString,
 
-   isNumber: isNumber,
 
-   isObject: isObject,
 
-   isPlainObject: isPlainObject,
 
-   isEmptyObject: isEmptyObject,
 
-   isUndefined: isUndefined,
 
-   isDate: isDate,
 
-   isFile: isFile,
 
-   isBlob: isBlob,
 
-   isFunction: isFunction,
 
-   isStream: isStream,
 
-   isURLSearchParams: isURLSearchParams,
 
-   isStandardBrowserEnv: isStandardBrowserEnv,
 
-   forEach: forEach,
 
-   merge: merge,
 
-   extend: extend,
 
-   trim: trim,
 
-   stripBOM: stripBOM,
 
-   inherits: inherits,
 
-   toFlatObject: toFlatObject,
 
-   kindOf: kindOf,
 
-   kindOfTest: kindOfTest,
 
-   endsWith: endsWith,
 
-   toArray: toArray,
 
-   isTypedArray: isTypedArray,
 
-   isFileList: isFileList,
 
-   forEachEntry: forEachEntry,
 
-   matchAll: matchAll,
 
-   isHTMLForm: isHTMLForm,
 
-   hasOwnProperty: hasOwnProperty
 
- };
 
 
  |