"use strict";functione(e){returne&&"object"==typeofe&&"default"ine?e:{default:e}}vart=e(require("axios"));functionn(e,t){if(!(einstanceoft))thrownewTypeError("Cannot call a class as a function")}functionr(e,t){for(varn=0;n<t.length;n++){varr=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"inr&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}functiono(e,t,n){returntine?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}functions(e,t){varn=Object.keys(e);if(Object.getOwnPropertySymbols){varr=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){returnObject.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}returnn}functioni(e){for(vart=1;t<arguments.length;t++){varn=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}returne}vara=window.navigator.userAgent.toLowerCase(),u="micromessenger"==a.match(/MicroMessenger/i),c=/iphone|ipad|ipod/.test(a),l=/android/.test(a),d=function(e){vart=window.localStorage.getItem(e);try{returnJSON.parse(t)}catch(e){returnt}};functionf(e){returne?Object.keys(e).map((function(t){returnvoid0===e[t]?"":encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).filter((function(e){returnnull!=e})).join("&"):""}functionh(){returnu?d("vccChannel")||"":(l?"159905":c?"159904":d("vccChannel"))||""}functiong(){vare=arguments.length>0&&void0!==arguments[0]?arguments[0]:function(){};return{service:{response:function(t){varn=t.data,r=t.config;if(r.rawData)return[n,null];if(0===n.code&&0===n.business_code||"0000"===n.code&&"0000"===n.businessCode)return[n.data,null];varo=n.msg||"服务异常";r.hideToast&&n.noAlert||e(o);vars=newError(o);returns.response=n,console.error(s),[null,s]},request:function(e){vart=e.method,n=e.hideVccChannel;returne.headers["X-Auth-Token"]=d("vccToken")||"",e.customHeader&&Object.assign(e.headers,e.customHeader),e.creditToken&&(e.headers["X-Auth-Token"]=d("creditToken")),n||(e.headers.vccChannel=h()),"post"===t&&e.emulateJSON&&(e.headers["Content-Type"]="application/x-www-form-urlencoded",e.data=f(e.data)),e}}}}varp={status:{400:"错误请求",401:"您未登录或登录超时,请重新登录",403:"拒绝访问",404:"请求错误,未找到该资源",405:"请求方法未允许",408:"请求超时",500:"服务器端出错",501:"网络未实现",502:"网络错误",503:"服务不可用",504:"网络超时",505:"http版本不支持该请求"}},v={default:{request:function(e){returne},response:function(e){returne.data}}},y={timeout:15e3},m=function(){functione(){varr=arguments.length>0&&void0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void0!==arguments[2]?arguments[2]:function(){},a=arguments.length>3&&void0!==arguments[3]?arguments[3]:function(){};returnn(this,e),this.CancelToken=t.default.CancelToken,this.instance=t.default.create(i(i({},y),o)),this.pending={},this.reqNum=0,this.timeId=null,this.toastFn=s,this.loadingFn=a,this.strategyModes=i(i({},g(this.toastFn)),r),this.strategyModes.default=v,this.initRequestInterceptors(),this.initResponseInterceptors(),this.instance}varo,s,a;returno=e,(s=[{key:"beforeRequest",value:function(){vare=this;this.reqNum++,clearTimeout(this.timeId),this.timeId=setTimeout((function(){e.loadingFn(!0)}),1300)}},{key:"afterRequest",value:function(){this.reqNum--,this.reqNum<=0&&(this.clearRequest(),this.loadingFn(!1))}},{key:"clearRequest",value:function(){clearTimeout(this.timeId)}},{key:"setStrategy",value:function(){vare=arguments.length>0&&void0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void0!==arguments[1]&&arguments[1];this.strategyModes=t?e:i(i({},this.strategyModes),e)}},{key:"setLoadingFn",value:function(){vare=arguments.length>0&&void0!==arguments[0]?arguments[0]:function(){};this.loadingFn=e}},{key:"setToastFn",value:function(){vare=arguments.length>0&&void0!==arguments[0]?arguments[0]:function(){};this.toastFn=e}},{key:"initRequestInterceptors",value:function(){vare=this;this.instance.interceptors.request.use((function(t){return!t.hideLoading&&e.beforeRequest(t.url||""),e.pending[t.url]&&e.pending[t.url]("取消重复请求"),t.cancelToken=newe.CancelToken((function(n){returne.pending[t.url]=n})),t.strategy||(t.strategy="service"),e.strategyModes[t.strategy].request&&(t=e.strategyModes[t.strategy].request(t)),t}),(function(e){return[null,e]}))}},{key:"initResponseInterceptors",value:function(){vare=this,t=this;this.instance.interceptors.response.use((function(e){returne.config.url&&(!e.config.hideLoading&&t.afterRequest(),deletet.pending[e.config.url||""]),t.strategyModes[e.config.strategy].response(e)}),(function(n){t.afterRequest();varr="",o=!0;"Network Error"!==n.message||n.response?n.response&&n.response.status?r=p.status[n.response.status]||"未知异常码: ".concat(n.response.status):"取消重复请求"===n.message&&(r="取消重复请求",o=!1):r="服务不可用",o&&e.toastFn(r||"服务异常,请稍后重试");vars=newError(r);returnconsole.error(s),[null,s]}))}}])&&r(o.prototype,s),a&&r(o,a),e}();module.exports=m;