UNPKG

@fast-china/axios

Version:

Fast Axios 请求工具库.

3 lines (2 loc) 4.27 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("axios"),s=require("lodash-unified"),r=require("../uni-adapter/index.js"),o=require("./fastAxios.js");require("./types/options.js");const t={cancelDuplicateRequest:!0,loading:!1,loadingText:"加载中...",cache:!1,getMethodCacheHandle:!0,simpleDataFormat:!0,showErrorMessage:!0,showCodeMessage:!0,autoDownloadFile:!0,restfulResult:!0},a=new Map,i=e=>{if(a.has(e)){a.get(e)(e),a.delete(e)}},n=e=>{if("undefined"!=typeof uni);else{const s=new Blob([e.data],{type:"application/octet-stream;charset=UTF-8"}),r=e.headers["content-disposition"],o=/filename=([^;]+\.[^.;]+);*/.exec(r)[1],t=document.createElement("a"),a=window.URL.createObjectURL(s),i=/^"(.*)"$/g;t.style.display="none",t.href=a,t.download=decodeURI(o.replace(i,"$1")),document.body.appendChild(t),t.click(),document.body.removeChild(t),window.URL.revokeObjectURL(a)}},c={request:c=>{const l=o.useFastAxios(),p={...t,...c};if(s.isNil(p.requestCipher)&&(p.requestCipher=l.requestCipher),p.cache&&"GET"===p.method.toUpperCase()&&p.restfulResult&&p.simpleDataFormat){if(p.params&&console.warn("[Fast.Axios] 如果使用 Http Cache,则不能存在任何 'params' 参数"),l.cache?.get){const e=l.cache.get(p.url);if(e)return Promise.resolve(e)}}else p.cache=!1;const d=(e=>{let{data:r}=e;const{url:o,method:t,params:a}=e;return s.isString(r)&&(r=JSON.parse(r)),[o,t,JSON.stringify(a),JSON.stringify(r)].join("&")})(c),u=Date.now(),m=e.create({adapter:"undefined"!=typeof uni?r.createUniAppAxiosAdapter():void 0,baseURL:l.baseUrl,timeout:l.timeout,headers:l.headers,responseType:"json"});return m.interceptors.request.use(s=>(i(d),p.cancelDuplicateRequest&&((s,r)=>{r.cancelToken=r.cancelToken||new e.CancelToken(e=>{a.has(s)||a.set(s,e)})})(d,s),l.interceptors?.request(s),p.loading&&l.loading?.show(p.loadingText),"json"===s.responseType&&(p.requestCipher?l.crypto?.encrypt(s,u):p.getMethodCacheHandle&&"GET"===s.method.toUpperCase()&&(s.params=s.params||{},s.params._=u)),s),e=>(console.error("[Fast.Axios]",e),Promise.reject(e))),m.interceptors.response.use(r=>{if(i(d),p.loading&&l.loading?.close(p),l.interceptors?.response)try{const e=l.interceptors.response(r,p);if(!s.isNil(e))return Promise.resolve(e)}catch(o){return console.error("[Fast.Axios]",o),Promise.reject(o)}if("blob"===r.config.responseType||"DOWNLOAD"===p.method.toUpperCase())return 200===r.status?(p.autoDownloadFile&&n(r),Promise.resolve(r)):(l.message?.error(l.errorCode.fileDownloadError),Promise.reject(r));if("json"===r.config.responseType){let o=r.data;if(p.restfulResult){const t=o,a=t?.code??r.status;if(a<200||a>299||!1===t?.success)return p.showCodeMessage&&t?.message&&(s.isObject(t?.message)?l.message?.error(JSON.stringify(t?.message)):l.message?.error(t?.message)),console.error("[Fast.Axios]",new e.AxiosError(t?.message??"服务器内部错误!")),Promise.reject(new e.AxiosError(t?.message??"服务器内部错误!"))}return p.requestCipher&&(o=l.crypto?.decrypt(r,p)),p.cache&&p.restfulResult&&p.simpleDataFormat&&l.cache?.set(p.url,o?.data),p.simpleDataFormat?Promise.resolve(o?.data):Promise.resolve(o)}return p.simpleDataFormat?Promise.resolve(r.data):Promise.resolve(r)},async r=>{if(i(d),p.loading&&l.loading?.close(p),e.isCancel(r))return console.warn(`[Fast.Axios] ${l.errorCode.cancelDuplicate}`),Promise.reject();if(!1===globalThis?.navigator?.onLine)return l.message?.error(l.errorCode.offLine),Promise.reject();if(l.interceptors?.responseError)try{const e=l.interceptors.responseError(r,p);if(!s.isNil(e))return Promise.reject(e)}catch(t){return console.error("[Fast.Axios]",t),Promise.reject(t)}if(p.showErrorMessage){const e=await(async e=>{let s="";const r=e?.response?.data?.code||e?.response?.status||e?.code||e?.message||"default";if("blob"===e?.request?.responseType)try{s=JSON.parse(await(e?.response?.data?.text()))?.message}catch{s=e?.response?.data?.message||o.useFastAxios().errorCode[r]}else s=e?.response?.data?.message||o.useFastAxios().errorCode[r];return s})(r);l.message?.error(e)}return console.error("[Fast.Axios]",r),Promise.reject(r)}),m(p)},downloadFile:n};exports.createFastAxios=o.createFastAxios,exports.useFastAxios=o.useFastAxios,exports.axiosUtil=c; //# sourceMappingURL=index.js.map