function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var _toString = Object.prototype.toString; /** * 对字符串进行编码转换 * * @param str 字符串 */ function encode(str) { return encodeURIComponent(str).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']'); } /** * 是不是一个日期对象 * * @param date 判断目标 */ function isDate(date) { return _toString.call(date) === '[object Date]'; } /** * 是不是一个普通对象 * * @param obj 判断目标 */ function isPlainObject(obj) { return _toString.call(obj) === '[object Object]'; } /** * 深度合并多个对象 * * @param objs n 个对象 */ function deepMerge() { var result = {}; function assignValue(key, val) { // 如果当前结果和当前值都为普通对象 // 递归进行深度合并 if (isPlainObject(result[key]) && isPlainObject(val)) { result[key] = deepMerge(result[key], val); } // 如果只有当前值为普通对象 // 直接深拷贝当前值 else if (isPlainObject(val)) { result[key] = deepMerge({}, val); } // 如果都不是普通对象 // 直接赋值 else { result[key] = val; } } for (var _len = arguments.length, objs = new Array(_len), _key = 0; _key < _len; _key++) { objs[_key] = arguments[_key]; } objs.forEach(function assignObj(obj) { Object.entries(obj).forEach(function assignKey(_ref) { var _ref2 = _slicedToArray(_ref, 2), key = _ref2[0], value = _ref2[1]; assignValue(key, value); }); }); return result; } /** * 从对象中提取一部分属性 * * @param obj 源对象 * @param keys 需要提取的 key */ function pick(obj) { var _pick = {}; for (var _len2 = arguments.length, keys = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { keys[_key2 - 1] = arguments[_key2]; } keys.forEach(function pickKey(key) { _pick[key] = obj[key]; }); return _pick; } /** * 从对象中剔除一部分属性 * * @param obj 源对象 * @param keys 需要剔除的 key */ function omit(obj) { var _omit = _objectSpread2({}, obj); for (var _len3 = arguments.length, keys = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { keys[_key3 - 1] = arguments[_key3]; } keys.forEach(function omitKey(key) { delete _omit[key]; }); return _omit; } /** * 通过请求地址和序列化参数生成新的请求地址 * * @param url 请求地址 * @param serializedParams 序列化参数 */ function generateURL(url, serializedParams) { // 移除 hash var hashIndex = url.indexOf('#'); if (hashIndex !== -1) { url = url.slice(0, hashIndex); } if (serializedParams === '') { return url; } // 拼接前缀 var prefix = url.indexOf('?') === -1 ? '?' : '&'; serializedParams = "".concat(prefix).concat(serializedParams); return "".concat(url).concat(serializedParams); } /** * 默认参数序列化 * * @param params 请求参数 */ function paramsSerialization(params) { var parts = []; Object.entries(params).forEach(function encodeKeyValue(_ref) { var _ref2 = _slicedToArray(_ref, 2), key = _ref2[0], value = _ref2[1]; if (value === null || value === void 0 || value !== value) { return; } // 如果值是一个数组, 则特殊处理 key if (Array.isArray(value)) { key += '[]'; } // 转成数组统一处理 var values = [].concat(value); values.forEach(function (val) { if (isPlainObject(val)) { val = JSON.stringify(val); } else if (isDate(val)) { val = val.toISOString(); } parts.push("".concat(encode(key), "=").concat(encode(val))); }); }); return parts.join('&'); } /** * 处理 URL 参数 * * @param url 请求地址 * @param params 请求参数 * @param paramsSerializer 自定义参数序列化 */ function buildURL(url) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var paramsSerializer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : paramsSerialization; return generateURL(url, paramsSerializer(params)); } /** * 只取 config2 中的配置 * * @param keys * @param config * @param config2 */ function onlyFromConfig2(keys, config, config2) { keys.forEach(function (key) { if (config2[key] !== void 0) { config[key] = config2[key]; } }); } /** * 优先取 config2 中的配置, config2 中没有就取 config1 * * @param keys * @param config * @param config1 * @param config2 */ function priorityFromConfig2(keys, config, config1, config2) { keys.forEach(function (key) { if (config2[key] !== void 0) { config[key] = config2[key]; } else if (config1[key] !== void 0) { config[key] = config1[key]; } }); } /** * 深度合并配置 * * @param keys * @param config * @param config1 * @param config2 */ function deepMergeConfig(keys, config, config1, config2) { keys.forEach(function (key) { if (isPlainObject(config2[key])) { var _config1$key; config[key] = deepMerge((_config1$key = config1[key]) !== null && _config1$key !== void 0 ? _config1$key : {}, config2[key]); } else if (isPlainObject(config1[key])) { config[key] = deepMerge(config1[key]); } }); } /** * 合并 Axios 请求配置 * * @param config1 Axios 请求配置1 * @param config2 Axios 请求配置2 */ function mergeConfig() { var config1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var config2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var config = {}; var onlyFromConfig2Keys = ['url', 'data']; var priorityFromConfig2Keys = ['adapter', 'baseURL', 'method', 'validateStatus', 'paramsSerializer', 'transformRequest', 'transformResponse', 'errorHandler', 'cancelToken', 'dataType', 'responseType', 'timeout', 'enableHttp2', 'enableQuic', 'enableCache', 'sslVerify']; var deepMergeConfigKeys = ['headers', 'params']; onlyFromConfig2(onlyFromConfig2Keys, config, config2); priorityFromConfig2(priorityFromConfig2Keys, config, config1, config2); deepMergeConfig(deepMergeConfigKeys, config, config1, config2); return config; } /** * 拦截器管理器 */ var InterceptorManagerClass = /*#__PURE__*/function () { function InterceptorManagerClass() { _classCallCheck(this, InterceptorManagerClass); /** * 生成拦截器 id */ this._id = 0; /** * 拦截器集合 */ this._interceptors = {}; } _createClass(InterceptorManagerClass, [{ key: "use", value: function use(resolved, rejected) { this._interceptors[++this._id] = { resolved: resolved, rejected: rejected }; return this._id; } }, { key: "eject", value: function eject(id) { delete this._interceptors[id]; } }, { key: "forEach", value: function forEach(executor, reverse) { var interceptors = Object.values(this._interceptors); if (reverse === 'reverse') { interceptors = interceptors.reverse(); } interceptors.forEach(executor); } }]); return InterceptorManagerClass; }(); var CancelClass = /*#__PURE__*/function () { /** * @param message 取消信息 */ function CancelClass(message) { _classCallCheck(this, CancelClass); this.message = message; } _createClass(CancelClass, [{ key: "toString", value: function toString() { var message = this.message ? ": ".concat(this.message) : ''; return "Cancel".concat(message); } }]); return CancelClass; }(); /** * 是否是取消请求实例 * * @param value 判断的值 */ function isCancel(value) { return value instanceof CancelClass; } /** * 请求方法转全小写 * * @param config Axios 请求配置 */ function methodToLowercase() { var method = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'get'; return method.toLowerCase(); } /** * 请求方法转全大写 * * @param config Axios 请求配置 */ function methodToUppercase() { var method = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'GET'; return method.toUpperCase(); } /** * 拉平请求头 * * @param config Axios 请求配置 */ function flattenHeaders(config) { var _headers$common, _headers$method; var headers = config.headers; if (headers === void 0) { return {}; } var method = methodToLowercase(config.method); return _objectSpread2(_objectSpread2(_objectSpread2({}, (_headers$common = headers.common) !== null && _headers$common !== void 0 ? _headers$common : {}), (_headers$method = headers[method]) !== null && _headers$method !== void 0 ? _headers$method : {}), omit(headers, 'common', 'options', 'get', 'head', 'post', 'put', 'delete', 'trace', 'connect')); } /** * 转换数据 * * @param data 请求数据/响应数据 * @param headers 请求头/响应头 * @param transforms 请求数据转换函数/响应数据转换函数 */ function transformData(data, headers, transforms) { if (transforms === void 0) { return data; } if (!Array.isArray(transforms)) { transforms = [transforms]; } transforms.forEach(function (transform) { data = transform(data, headers); }); return data; } /** * 检查是否是一个绝对 URL * * xxx:// 或者 "//" 开头, 视为绝对地址 * * @param url 需要检查的 URL */ function isAbsoluteURL(url) { return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); } /** * 拼接 baseURL 和 url 获得完整的 URL * * combineURL('1/2///','////3/4') => '1/2/3/4' */ function combineURL(baseURL, url) { return "".concat(baseURL.replace(/\/*$/, ''), "/").concat(url.replace(/^\/*/, '')); } /** * 根据配置中的 baseURL 和 url 和 params 生成完整 URL * * @param config Axios 请求配置 */ function transformURL(config) { var _config$baseURL = config.baseURL, baseURL = _config$baseURL === void 0 ? '' : _config$baseURL, _config$url = config.url, url = _config$url === void 0 ? '' : _config$url; var fullURL = isAbsoluteURL(url) ? url : combineURL(baseURL, url); return buildURL(fullURL, config.params, config.paramsSerializer); } /** * Axios 请求配置转换成各大平台通用请求配置 * * 抹平差异 * * @param config Axios 请求配置 */ function transformRequest(config) { return _objectSpread2({ url: transformURL(config), method: methodToUppercase(config.method), header: config.headers }, pick(config, 'data', 'headers', 'dataType', 'responseType', 'timeout', 'enableHttp2', 'enableQuic', 'enableCache', 'sslVerify')); } /** * 各大平台通用响应体转成 Axios 响应体 * * 抹平差异 * * @param response 通用响应体 * @param config Axios 请求配置 */ function transformResponse(response, config) { var _ref, _response$statusCode, _ref2, _response$header; var status = (_ref = (_response$statusCode = response.statusCode) !== null && _response$statusCode !== void 0 ? _response$statusCode : response.status) !== null && _ref !== void 0 ? _ref : 400; var headers = (_ref2 = (_response$header = response.header) !== null && _response$header !== void 0 ? _response$header : response.headers) !== null && _ref2 !== void 0 ? _ref2 : {}; var statusText = status === 200 ? 'OK' : status === 400 ? 'Bad Adapter' : ''; return _objectSpread2({ status: status, statusText: statusText, headers: headers, config: config }, pick(response, 'data', 'cookies', 'profile')); } /** * AxiosError 继承自 Error */ var AxiosErrorClass = /*#__PURE__*/function (_Error) { _inherits(AxiosErrorClass, _Error); var _super = _createSuper(AxiosErrorClass); /** * @param message 错误信息 * @param config Axios 请求配置 * @param request 通用请求配置 * @param response Axios 响应体 */ function AxiosErrorClass(message, config, request, response) { var _this; _classCallCheck(this, AxiosErrorClass); _this = _super.call(this, message); _this.config = config; _this.request = request; _this.response = response; _this.isAxiosError = true; // 修复继承系统自带类 prototype 设置失败的问题 Object.setPrototypeOf(_assertThisInitialized(_this), AxiosErrorClass.prototype); return _this; } return AxiosErrorClass; }( /*#__PURE__*/_wrapNativeSuper(Error)); /** * 创建 AxiosError 的工厂方法 * * 返回一个新的 AxiosError 对象 * * @param message 错误信息 * @param config Axios 请求配置 * @param request 通用请求配置 * @param response Axios 响应体 */ function createError(message, config, request, response) { return new AxiosErrorClass(message, config, request, response); } /** * 请求函数 * * @param config Axios 请求配置 */ function request(config) { return new Promise(function dispatchAdapter(resolve, reject) { var adapter = config.adapter, cancelToken = config.cancelToken; var requestConfig = transformRequest(config); /** * 捕获错误 * * @param message 错误信息 * @param response Axios 响应体 */ function catchError(message, response) { if (typeof message !== 'string') { message = '配置不正确或者网络异常'; } reject(createError(message, config, requestConfig, response)); } if (adapter === void 0) { catchError('平台适配失败,您需要参阅文档使用自定义适配器手动适配当前平台'); return; } /** * 效验状态码 * * @param res 请求结果 */ function handleResponse(res) { var response = transformResponse(res, config); if (config.validateStatus === void 0 || config.validateStatus(response.status)) { resolve(response); } else { catchError("\u8BF7\u6C42\u5931\u8D25\uFF0C\u72B6\u6001\u7801\u4E3A ".concat(response.status), response); } } // 使用适配器发送请求 var task = adapter(_objectSpread2(_objectSpread2({}, requestConfig), {}, { success: handleResponse, fail: catchError })); // 如果存在取消令牌 // 则调用取消令牌里的 listener 监听用户的取消操作 if (cancelToken !== void 0) { cancelToken.listener.then(function onCanceled(reason) { if (task !== void 0) { task.abort(); } reject(reason); }); } }); } /** * 如果已经取消, 则抛出取消对象 * * @param config Axios 请求配置 */ function throwIfCancellationRequested(config) { if (config.cancelToken) { config.cancelToken.throwIfRequested(); } } /** * 发送请求 * * @param config Axios 请求配置 */ function dispatchRequest(config) { var _config$data; throwIfCancellationRequested(config); config.headers = flattenHeaders(config); config.data = transformData((_config$data = config.data) !== null && _config$data !== void 0 ? _config$data : {}, config.headers, config.transformRequest); function onResolved(response) { throwIfCancellationRequested(config); response.data = transformData(response.data, response.headers, config.transformResponse); return response; } function onRejected(reason) { var _config$errorHandler, _config$errorHandler2; if (!isCancel(reason)) { throwIfCancellationRequested(config); if (reason.response !== void 0) { reason.response.data = transformData(reason.response.data, reason.response.headers, config.transformResponse); } } return (_config$errorHandler = (_config$errorHandler2 = config.errorHandler) === null || _config$errorHandler2 === void 0 ? void 0 : _config$errorHandler2.call(config, reason)) !== null && _config$errorHandler !== void 0 ? _config$errorHandler : Promise.reject(reason); } return request(config).then(onResolved, onRejected); } var AxiosClass = /*#__PURE__*/function () { /** * @param defaults 自定义默认配置 */ function AxiosClass() { var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, AxiosClass); this.defaults = defaults; this.interceptors = { request: new InterceptorManagerClass(), response: new InterceptorManagerClass() }; } _createClass(AxiosClass, [{ key: "getUri", value: function getUri(config) { var _mergeConfig = mergeConfig(this.defaults, config), _mergeConfig$url = _mergeConfig.url, url = _mergeConfig$url === void 0 ? '' : _mergeConfig$url, params = _mergeConfig.params, paramsSerializer = _mergeConfig.paramsSerializer; return buildURL(url, params, paramsSerializer).replace(/^\?/, ''); } }, { key: "request", value: function request(config) { var requestConfig = mergeConfig(this.defaults, config); var promiseRequest = Promise.resolve(requestConfig); // 执行请求拦截器 this.interceptors.request.forEach(function executor(_ref) { var resolved = _ref.resolved, rejected = _ref.rejected; promiseRequest = promiseRequest.then(resolved, rejected); }, 'reverse'); // 发送请求 var promiseResponse = promiseRequest.then(dispatchRequest); // 执行响应拦截器 this.interceptors.response.forEach(function executor(_ref2) { var resolved = _ref2.resolved, rejected = _ref2.rejected; promiseResponse = promiseResponse.then(resolved, rejected); }); return promiseResponse; } }, { key: "options", value: function options(url, config) { return this._requestMethodWithoutParams('options', url, void 0, config); } }, { key: "get", value: function get(url, params, config) { return this._requestMethodWithoutParams('get', url, params, config); } }, { key: "head", value: function head(url, params, config) { return this._requestMethodWithoutParams('head', url, params, config); } }, { key: "post", value: function post(url, data, config) { return this._requestMethodWithoutData('post', url, data, config); } }, { key: "put", value: function put(url, data, config) { return this._requestMethodWithoutData('put', url, data, config); } }, { key: "delete", value: function _delete(url, params, config) { return this._requestMethodWithoutParams('delete', url, params, config); } }, { key: "trace", value: function trace(url, config) { return this._requestMethodWithoutParams('trace', url, void 0, config); } }, { key: "connect", value: function connect(url, config) { return this._requestMethodWithoutParams('connect', url, void 0, config); } /** * 合并配置后发送 HTTP 请求 * * @param method 请求方法 * @param url 请求地址 * @param params 请求参数 * @param config 额外配置 */ }, { key: "_requestMethodWithoutParams", value: function _requestMethodWithoutParams(method, url, params) { var config = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; return this.request(_objectSpread2(_objectSpread2({}, config), {}, { method: method, url: url, params: params })); } /** * 合并配置后发送 HTTP 请求 * * @param method 请求方法 * @param url 请求地址 * @param data 请求数据 * @param config 额外配置 */ }, { key: "_requestMethodWithoutData", value: function _requestMethodWithoutData(method, url, data) { var config = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; return this.request(_objectSpread2(_objectSpread2({}, config), {}, { method: method, url: url, data: data })); } }]); return AxiosClass; }(); var CancelTokenClass = /*#__PURE__*/function () { function CancelTokenClass(executor) { var _this = this; _classCallCheck(this, CancelTokenClass); var action; this.listener = new Promise(function (resolve) { action = function action(message) { // 防止重复取消 if (_this._reason) { return; } _this._reason = new CancelClass(message); resolve(_this._reason); }; }); executor(action); } _createClass(CancelTokenClass, [{ key: "throwIfRequested", value: function throwIfRequested() { if (this._reason) { throw this._reason; } } /** * 返回一个 CancelTokenSource * * CancelTokenSource.token 是一个 CancelToken 对象 * * CancelTokenSource.cancel 是一个 CancelAction 函数 * * 调用 CancelTokenSource.cancel('这里可以填写您的错误信息') * * 取消请求 CancelTokenSource.token */ }], [{ key: "source", value: function source() { var cancel; var token = new CancelTokenClass(function executor(action) { cancel = action; }); return { token: token, cancel: cancel }; } }]); return CancelTokenClass; }(); /** * 自适应当前平台 */ function adaptive() { var stack = [function () { return uni.request; }, function () { return wx.request; }, function () { return my.request; }, function () { return swan.request; }, function () { return tt.request; }, function () { return qq.request; }]; var adapter; while (stack.length !== 0 && adapter === void 0) { try { adapter = stack.shift()(); } catch (err) {} } return adapter; } var defaults = { /** * 适配器 */ adapter: adaptive(), /** * 请求方法 */ method: 'get', /** * 请求头 */ headers: { common: { Accept: 'application/json, test/plain, */*' }, options: {}, get: {}, head: {}, post: { 'Context-Type': 'application/x-www-form-urlencoded; charset=utf-8' }, put: { 'Context-Type': 'application/x-www-form-urlencoded; charset=utf-8' }, "delete": {}, trace: {}, connect: {} }, /** * 状态码效验 * * @param status 状态码 */ validateStatus: function validateStatus(status) { return status >= 200 && status < 300; }, /** * 超时时间 */ timeout: 10000, /** * 响应数据格式 */ dataType: 'json', /** * 响应数据类型 */ responseType: 'text', /** * 开启 http2 */ enableHttp2: false, /** * 开启 quic */ enableQuic: false, /** * 开启 cache */ enableCache: false, /** * 验证 ssl 证书 */ sslVerify: true }; /** * 创建一个新的 Axios 实例 * * 返回一个 Axios 实例增强 */ function createInstance(defaults) { var instance = new AxiosClass(defaults); /** * 支持重载的 axios 函数 */ function axios(url) { var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // 调用方式一处理请求配置 if (typeof url !== 'string') { config = url; } // 调用方式二处理请求配置 else { config = _objectSpread2(_objectSpread2({}, config), {}, { url: url }); } return instance.request(config); } // instance 的属性合并到 axios 函数中 Object.assign(axios, instance); // instance 的方法合并到 axios 函数中 Object.setPrototypeOf(axios, Object.getPrototypeOf(instance)); return axios; } /** * Axios 实例拓展 */ var axios = createInstance(defaults); // 添加 create 工厂方法 axios.create = function create() { var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return createInstance(mergeConfig(axios.defaults, defaults)); }; // 添加 Axios 类 axios.Axios = AxiosClass; // 添加 CancelToken 类 axios.CancelToken = CancelTokenClass; // 添加 检查错误是否来自取消请求 方法 axios.isCancel = isCancel; export default axios;