@jecloud/utils
Version:
JECloud 工具库
1 lines • 3.01 kB
JavaScript
var t=this&&this.__assign||function(){return t=Object.assign||function(t){for(var e,o=1,n=arguments.length;o<n;o++)for(var r in e=arguments[o])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},t.apply(this,arguments)};import e from"axios";import o from"qs";import{AxiosCanceler as n}from"./axios-cancel";import{ContentTypeEnum as r,RequestEnum as s}from"./axios-enum";import{isFunction as i,cloneDeep as a,has as p}from"../../index";var u=function(){function u(t){this.options=t,this.axiosInstance=e.create(t),this._setupInterceptors()}return u.prototype._createAxios=function(t){this.axiosInstance=e.create(t)},u.prototype._getTransform=function(){return this.options.transform},u.prototype._isIgnoreCancelToken=function(t){var e,o,n;return null!==(o=null===(e=t.requestOptions)||void 0===e?void 0:e.ignoreCancelToken)&&void 0!==o?o:null===(n=this.options.requestOptions)||void 0===n?void 0:n.ignoreCancelToken},u.prototype.getAxios=function(){return this.axiosInstance},u.prototype.configAxios=function(t){this.axiosInstance&&(this.options=t,this.axiosInstance=e.create(t),this._setupInterceptors())},u.prototype.setHeader=function(t){this.axiosInstance&&Object.assign(this.axiosInstance.defaults.headers,t)},u.prototype._setupInterceptors=function(){var t=this,e=this._getTransform();if(e){var o=e.requestInterceptors,r=e.requestInterceptorsCatch,s=e.responseInterceptors,a=e.responseInterceptorsCatch,p=new n;this.axiosInstance.interceptors.request.use((function(e){return!t._isIgnoreCancelToken(e)&&p.addPending(e),i(o)&&(e=o(e,t.options)),e=t.supportFormData(e)}),i(r)?r:void 0),this.axiosInstance.interceptors.response.use((function(t){return t&&p.removePending(t.config),i(s)&&(t=s(t)),t}),i(a)?a:void 0)}},u.prototype.supportFormData=function(e){var n,i=e.headers||this.options.headers;return((null==i?void 0:i["Content-Type"])||(null==i?void 0:i["content-type"]))===r.FORM_URLENCODED&&p(e,"data")&&(null===(n=e.method)||void 0===n?void 0:n.toUpperCase())!==s.GET?t(t({},e),{data:o.stringify(e.data,{arrayFormat:"brackets"})}):e},u.prototype.get=function(e,o){return this.request(t(t({},e),{method:"GET"}),o)},u.prototype.post=function(e,o){return this.request(t(t({},e),{method:"POST"}),o)},u.prototype.put=function(e,o){return this.request(t(t({},e),{method:"PUT"}),o)},u.prototype.delete=function(e,o){return this.request(t(t({},e),{method:"DELETE"}),o)},u.prototype.request=function(t,e){var o,n,r=this,s=a(t),p=Object.assign({},null!==(o=this._getTransform())&&void 0!==o?o:{},null!==(n=s.transform)&&void 0!==n?n:{}),u=this.options.requestOptions,c=Object.assign({},u,e),h=p||{},f=h.beforeRequestHook,d=h.requestCatchHook,l=h.transformRequestHook;return f&&i(f)&&(s=f(s,c)),s.requestOptions=c,new Promise((function(t,e){r.axiosInstance.request(s).then((function(o){if(l&&i(l))try{var n=l(o,c);t(n)}catch(t){e(t||new Error("request error!"))}else t(o)})).catch((function(t){d&&i(d)?e(d(t,c)):e(t)}))}))},u}();export{u as VAxios};export function createAxios(t){return new u(t||{})}