UNPKG

tongtong-utils

Version:

String类

291 lines (269 loc) 11.2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.loopApi = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _qs = require('qs'); var _qs2 = _interopRequireDefault(_qs); var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios); var _mockjs = require('mockjs'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var request = function request(api, params, apiConfig) { return new Promise(function (resolve) { if (!api) { resolve({ success: false, message: '没有配置接口' }); } else { if (window._request_params) { params = _extends({}, window._request_params, params); } var prevParams = Object.clone(params); var url = void 0; var type = 'get'; if ((typeof api === 'undefined' ? 'undefined' : _typeof(api)) === "object") { url = api._url; type = api._type || 'get'; if (api._token) { params = _extends({ token: api._token }, params); } if (api._params) { params = _extends({}, params, api._params); } if (api._before) { params = api._before(params); } } else { url = api; } var _cacheKey = url + '?' + _qs2.default.stringify(params); var res = window.__cache.get(_cacheKey); if ((typeof api === 'undefined' ? 'undefined' : _typeof(api)) === "object" && api._result) { if (api._result instanceof Function) { res = (0, _mockjs.mock)(api._result(params)); } else { res = (0, _mockjs.mock)(api._result); } } if (res) { if ((typeof api === 'undefined' ? 'undefined' : _typeof(api)) === "object" && api._handle) { res = api._handle(res, params, prevParams); } resolve(res); return; } else { if (api._cacheKeys && api._cacheKeys.includes(_cacheKey)) { api._cacheKeys.splice(api._cacheKeys.indexOf(_cacheKey), 1); } } var config = {}; if (type === 'get') { config = { params: params, paramsSerializer: function paramsSerializer(param) { for (var key in param) { var value = param[key]; if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !(value instanceof Array)) { param[key] = JSON.stringify(value); } } return _qs2.default.stringify(param, { arrayFormat: 'repeat' }); } }; } else { config = { data: params, transformRequest: [function (data) { for (var key in data) { var value = data[key]; if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !(value instanceof Array)) { data[key] = JSON.stringify(value); } } return _qs2.default.stringify(data, { arrayFormat: 'repeat' }); }] }; } if ((typeof api === 'undefined' ? 'undefined' : _typeof(api)) === "object") { config.timeout = api._timeout; config.silence = api._silence; } config = Object.assign(config, apiConfig); _axios2.default.request(url, _extends({ method: type, headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest' } }, config)).then(function (res) { if (api._cache) { api._cacheKey = url + '?' + _qs2.default.stringify(params); window.__cache.set(api._cacheKey, res, api._cache); if (!api._cacheKeys) { api._cacheKeys = []; } if (!api._cacheKeys.includes(api._cacheKey)) { api._cacheKeys.push(api._cacheKey); } } if (api._handle) { res = api._handle(res, params, prevParams); } resolve(res && 'success' in res ? res : res && res.data ? res.data : res); }).catch(function (err) { resolve(_extends({ success: false, message: '', error: err }, err)); }); } }); }; var defaultCache = '1s'; var defaultType = 'get'; window.__cache = { get: function get(key) { var value = this.data[key]; if (value) { if (value.time && value.time < new Date()) { this.remove(key); return null; } return value.data; } return null; }, set: function set(key, value, time) { var t = null; if (time && time.length >= 2) { try { t = new Date(); var n = parseInt(time.substring(0, time.length - 1), 10); var f = time.substring(time.length - 1, time.length); switch (f) { case 's': t.setSeconds(t.getSeconds() + n);break; case 'm': t.setMinutes(t.getMinutes() + n);break; case 'h': t.setHours(t.getHours() + n);break; case 'd': t.setDate(t.getDate() + n);break; case 'w': t.setDate(t.getDate() + n * 7);break; case 'M': t.setMonth(t.getMonth() + n);break; case 'y': t.setFullYear(t.getFullYear() + n);break; } t = t.getTime(); } catch (e) { t = null; } } this.data[key] = { data: value, time: t }; return true; }, remove: function remove(keys) { if (keys instanceof Array) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = keys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var key = _step.value; delete this.data[key]; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } else if (keys instanceof Object) { if (keys._cacheKeys) { var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = keys._cacheKeys[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var _key = _step2.value; delete this.data[_key]; } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } delete keys._cacheKeys; } } else { delete this.data[keys]; } }, data: {} }; var loopApi = exports.loopApi = function loopApi(obj) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; options = Object.extend({}, options, { defaultCache: defaultCache, defaultType: defaultType }); if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === "object") { for (var key in obj) { if (key.indexOf('_') === 0) { continue; } var val = obj[key]; if (typeof val === "string") { obj[key] = { __url: val }; val = obj[key]; } if ((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === "object") { if (val.__url) { val._url = val.__url; } else if (!val._url) { if (obj._url) { val._url = obj._url + '/' + key; } else { val._url = key; } } else { val._url = (obj._url ? obj._url + '/' : '') + val._url; } if (obj._token) { val._token = obj._token; } if (obj._params) { if (val._params) { val._params = Object.extend(val._params, obj._params); } else { val._params = obj._params; } } val._type = val._type || obj._type || options.defaultType; val._cache = val._cache !== undefined ? val._cache : obj._cache !== undefined ? obj._cache : options.defaultCache; if (!Object.isEmpty(val, [/^_/])) { loopApi(val); } } } } }; exports.default = request;