UNPKG

norm-axios

Version:

Norm Axios 是一个基于 Axios 的约定式请求库,提供了约定式的请求方式与强大的 Hook API,帮助你更高效的开发。

1 lines 13.1 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("Vue"),require("axios")):"function"==typeof define&&define.amd?define(["Vue","axios"],t):"object"==typeof exports?exports.NormAxios=t(require("Vue"),require("axios")):e.NormAxios=t(e.Vue,e.axios)}(globalThis,(e,t)=>(()=>{"use strict";var n={vue:function(t){t.exports=e},axios:function(e){e.exports=t}},a={};function r(e){var t=a[e];if(void 0!==t)return t.exports;var l=a[e]={exports:{}};return n[e](l,l.exports,r),l.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{r.r(l),r.d(l,{definePlugin:()=>o,GLOBAL_CONFIG_PROVIDER_SYMBOL:()=>m,clearCache:()=>f,getCacheAll:()=>c,usePagination:()=>K,NormAxios:()=>a,useRequest:()=>Z,useGlobalConfigProvider:()=>h});var e=r("axios"),t=r.n(e);function n(e,t){let n={...e};for(let e=0;e<t.length;e++){let a=t[e];delete n[a]}return n}class a{axiosInstance;axiosConfig;constructor(e){this.axiosInstance=t().create(n(e,["interceptor"])),this.axiosConfig=e,this.axiosInstance.interceptors.request.use(async t=>(await e.interceptor?.onBeforeRequest?.(t),t),e=>Promise.reject(e)),this.axiosInstance.interceptors.response.use(t=>e.interceptor?.onResponse?.(t)||t,t=>e?.interceptor?.onResponseError?.(t))}request(e){return this.axiosInstance.request(e)}get(e,t,n){return this.request({method:"get",url:e,params:t,...n})}post(e,t,n){return this.request({method:"post",url:e,data:t,...n})}put(e,t,n){return this.request({method:"put",url:e,data:t,...n})}delete(e,t,n){return this.request({method:"delete",url:e,data:t,...n})}static extend(e,t){return new a(Object.assign(e.axiosConfig,t))}}let o=function(e){return e},u=new Map,i=e=>u.get(e),s=(e,t,n)=>{let a=i(e);a?.timer&&clearTimeout(a.timer);let r=setTimeout(()=>u.delete(e),t);u.set(e,{...n,timer:r})},c=()=>Object.fromEntries(u.entries()),f=e=>{if(!e)return u.clear();(Array.isArray(e)?e:[e]).forEach(e=>u.delete(e))};function d(e,t=0,n={}){let a;"object"!=typeof n&&(n={});let{signal:r,leading:l=!1,trailing:o=!0,maxWait:u}=n,i=[,,];l&&(i[0]="leading"),o&&(i[1]="trailing");let s=null,c=function(e,t,{signal:n,edges:a}={}){let r;let l=null,o=null!=a&&a.includes("leading"),u=null==a||a.includes("trailing"),i=()=>{null!==l&&(e.apply(r,l),r=void 0,l=null)},s=()=>{u&&i(),v()},c=null,f=()=>{null!=c&&clearTimeout(c),c=setTimeout(()=>{c=null,s()},t)},d=()=>{null!==c&&(clearTimeout(c),c=null)},v=()=>{d(),r=void 0,l=null},p=function(...e){if(n?.aborted)return;r=this,l=e;let t=null==c;f(),o&&t&&i()};return p.schedule=f,p.cancel=v,p.flush=()=>{d(),i()},n?.addEventListener("abort",v,{once:!0}),p}(function(...t){a=e.apply(this,t),s=null},t,{signal:r,edges:i}),f=function(...t){if(null!=u){if(null===s)s=Date.now();else if(Date.now()-s>=u)return a=e.apply(this,t),s=Date.now(),c.cancel(),c.schedule(),a}return c.apply(this,t),a};return f.cancel=c.cancel,f.flush=()=>(c.flush(),a),f}var v=r("vue");let p=function(e,t,n){let a=()=>d(e,(0,v.toValue)(t),{leading:(0,v.toValue)(n.leading),trailing:(0,v.toValue)(n.trailing),maxWait:(0,v.toValue)(n.maxWait)}),r=a();return(0,v.watchEffect)(()=>{r&&r.cancel(),r=a()}),r},m=Symbol("GlobalProvider");function h(e){(0,v.provide)(m,e)}let g=new WeakMap,w="undefined"!=typeof window&&"undefined"!=typeof document,y=Object.prototype.toString,b=e=>"[object Object]"===y.call(e),S=()=>{},x=e=>e();function R(e){let t=Object.create(null);return n=>t[n]||(t[n]=e(n))}let j=/\B([A-Z])/g;R(e=>e.replace(j,"-$1").toLowerCase());let O=/-(\w)/g;R(e=>e.replace(O,(e,t)=>t?t.toUpperCase():""));function T(e){return Array.isArray(e)?e:[e]}let D=w?window:void 0,P=w?window.document:void 0,V=w?window.navigator:void 0;function E(e){var t;let n=(0,v.toValue)(e);return null!=(t=null==n?void 0:n.$el)?t:n}function q(...e){var t,n,a,r;let l=[],o=()=>{l.forEach(e=>e()),l.length=0},u=(e,t,n,a)=>(e.addEventListener(t,n,a),()=>e.removeEventListener(t,n,a)),i=(0,v.computed)(()=>{let t=T((0,v.toValue)(e[0])).filter(e=>null!=e);return t.every(e=>"string"!=typeof e)?t:void 0}),s=(t=()=>{var t,n;return[null!=(n=null==(t=i.value)?void 0:t.map(e=>E(e)))?n:[D].filter(e=>null!=e),T((0,v.toValue)(i.value?e[1]:e[0])),T((0,v.unref)(i.value?e[2]:e[1])),(0,v.toValue)(i.value?e[3]:e[2])]},n=([e,t,n,a])=>{if(o(),!(null==e?void 0:e.length)||!(null==t?void 0:t.length)||!(null==n?void 0:n.length))return;let r=b(a)?{...a}:a;l.push(...e.flatMap(e=>t.flatMap(t=>n.map(n=>u(e,t,n,r)))))},a={flush:"post"},(0,v.watch)(t,n,{...a,immediate:!0}));return r=o,!(0,v.getCurrentScope)()||(0,v.onScopeDispose)(r),()=>{s(),o()}}w&&window.location;function C(e){let t=function(){let e=shallowRef(!1),t=getCurrentInstance();return t&&onMounted(()=>{e.value=!0},t),e}();return computed(()=>(t.value,!!e()))}function M(e,t,n={}){let a;let{window:r=D,...l}=n,o=C(()=>r&&"MutationObserver"in r),u=()=>{a&&(a.disconnect(),a=void 0)},i=computed(()=>new Set(toArray(toValue(e)).map(E).filter(notNullish))),s=watch(()=>i.value,e=>{u(),o.value&&e.size&&(a=new MutationObserver(t),e.forEach(e=>a.observe(e,l)))},{immediate:!0,flush:"post"}),c=()=>{s(),u()};return tryOnScopeDispose(c),{isSupported:o,stop:c,takeRecords:()=>null==a?void 0:a.takeRecords()}}let A=Symbol("vueuse-ssr-width");function I(e){return JSON.parse(JSON.stringify(e))}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;let B="vueuse-storage";function N(e){return e}function F(e,t){return e.value=t}Number.POSITIVE_INFINITY;let _=function(e,t,n){let a=()=>(function(e,t=0,n={}){"object"!=typeof n&&(n={});let{leading:a=!0,trailing:r=!0,signal:l}=n;return d(e,t,{leading:a,trailing:r,signal:l,maxWait:t})})(e,(0,v.toValue)(t),{leading:(0,v.toValue)(n.leading),trailing:(0,v.toValue)(n.trailing)}),r=a();return(0,v.watchEffect)(()=>{r&&r.cancel(),r=a()}),r},L=function(e){return{all:e=e||new Map,on:function(t,n){var a=e.get(t);a?a.push(n):e.set(t,[n])},off:function(t,n){var a=e.get(t);a&&(n?a.splice(a.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var a=e.get(t);a&&a.slice().map(function(e){e(n)}),(a=e.get("*"))&&a.slice().map(function(e){e(t,n)})}}}(),W=new Map,k=e=>W.get(e),z=e=>{W.delete(e)},G=(e,t)=>{W.set(e,t),t.then(t=>(z(e),t)).catch(t=>{throw z(e),t})},U=o(({options:e,setState:t,params:a})=>{let r;let{cacheKey:l,staleTime:o=0,cacheTime:u=6e5,getCache:c,setCache:f}=e;if(!l)return;let d=(0,v.ref)(!1),p=(0,v.ref)(!0),m=e=>o===1/0||e+o>Date.now(),h=e=>{t({...n(e,["time","timer"])})},g=e=>c?c(e,a.value):i(e),w=(e,t)=>{f?f(e,t):s(e,u,t)},y=g(l);return y&&h(y),L.on(l,e=>{if(d.value){d.value=!1;return}h(e)}),{onBefore(){let e=g(l);if(e&&(h(e),m(e.time)))return{isReturned:!0}},onRequest(e,t){let n=k(l);return n&&n!==r?(d.value=!0,p.value=!1):(r=n=e(...t),G(l,n)),{servicePromise:n}},onSuccess(e,t,n){w(l,{data:e,params:t,rawData:n?.data,response:n,time:Date.now()});let a=g(l);d.value=!0,p.value?L.emit(l,a):(p.value=!0,d.value=!1)}}}),J=o(({finished:e,options:t,refresh:n})=>{let a;let{errorRetryCount:r,errorRetryInterval:l=1e3}=t,o=(0,v.toRef)(r),u=(0,v.toRef)(l),i=(0,v.ref)(0),s=(0,v.computed)(()=>!o.value||i.value>=o.value||!e.value),c=()=>{a&&clearTimeout(a)},f=()=>{i.value=0},d=()=>{i.value+=1};return(0,v.onUnmounted)(()=>{c()}),{onBefore(){c()},onSuccess(){f()},onError(){if(s.value)return f();d(),a=setTimeout(n,u.value)}}}),Y=o(({options:e,setState:t})=>{let n,a,r;let{loadingKeep:l=0,loadingDelay:o=0}=e,u=(0,v.toRef)(o),i=(0,v.toRef)(l),s=()=>{a&&clearTimeout(a)},c=()=>{r&&clearTimeout(r)},f=(e,t)=>{s(),a=setTimeout(t,e)},d=(e,t)=>{c(),r=setTimeout(t,e)},p=e=>{t({loading:e})};return{onBefore(){n=Date.now(),u.value?f(u.value,()=>p(!0)):p(!0)},onFinallyFetchDone(){s();let e=Date.now()-n;!i.value||e>=i.value?p(!1):e<i.value&&d(i.value-e,()=>{p(!1)})}}}),$=o(({finished:e,refresh:t,options:n})=>{let a;let{pollingInterval:r=0,pollingWhenDocumentHidden:l=!1,pollingErrorRetryCount:o=3}=n,u=(0,v.ref)(0),i=(0,v.toRef)(r),s=(0,v.toRef)(o),c=(0,v.toRef)(l),f=function(e={}){let{document:t=P}=e;if(!t)return(0,v.shallowRef)("visible");let n=(0,v.shallowRef)(t.visibilityState);return q(t,"visibilitychange",()=>{n.value=t.visibilityState},{passive:!0}),n}(),d=(0,v.computed)(()=>i.value<=0||u.value-1>=s.value&&s.value!==1/0||!c.value&&"hidden"===f.value||!e.value),p=()=>{a&&clearTimeout(a)},m=()=>{u.value=0},h=()=>{u.value+=1};return(0,v.watch)(f,()=>{"visible"!==f.value||d.value||t()}),(0,v.onUnmounted)(()=>{p()}),{onBefore(){p()},onSuccess(){m()},onError(){h()},onFinally(){if(d.value)return m();a=setTimeout(t,i.value)}}}),H=o(({refresh:e,options:t,scope:n})=>{let{refreshOnWindowFocus:a=!1,focusTimespan:r=5e3}=t,l=(0,v.toRef)(a),o=(0,v.toRef)(r),u=(0,v.ref)(Date.now()),i=function(e={}){let{window:t=D}=e;if(!t)return(0,v.shallowRef)(!1);let n=(0,v.shallowRef)(t.document.hasFocus()),a={passive:!0};return q(t,"blur",()=>{n.value=!1},a),q(t,"focus",()=>{n.value=!0},a),n}();n.run(()=>{(0,v.watch)(i,()=>{if(l.value){if(!i.value)return u.value=Date.now();o.value&&Date.now()-u.value<o.value||e()}})})});function Z(e,t={},n=[]){let a=(0,v.effectScope)(),r=(0,v.inject)(m,{}),l=[...n,U,Y,H,$,J,...r?.plugins||[]],o=Object.assign(t,r?.common),{register:u,runPluginHooks:i}=function(e){let t=(0,v.ref)([]);return{register:n=>{t.value=e.map(e=>e(n)).filter(Boolean)},runPluginHooks:(e,...n)=>Object.assign({},...t.value.map(t=>t[e]?.(...n)).filter(Boolean))}}(l),s=function(e){let t={data:e.initialData,rawData:void 0,response:void 0,error:void 0,params:e.defaultParams||[],loading:!1,finished:!1},n=(0,v.shallowReactive)({...t});return{loading:(0,v.computed)(()=>n.loading),finished:(0,v.computed)(()=>n.finished),data:(0,v.computed)(()=>n.data),rawData:(0,v.computed)(()=>n.response?.data),error:(0,v.computed)(()=>n.error),response:(0,v.computed)(()=>n.response),params:(0,v.computed)(()=>n.params),setState:e=>{Object.assign(t,e),Object.assign(n,e)},rawState:t}}(o),c=function({setState:e,rawState:t,data:n},a,r={},l){let{ready:o=(0,v.ref)(!0),debounceWait:u=500,debounceMaxWait:i,debounceLeading:s=!1,debounceTrailing:c=!0,throttleWait:f=500,throttleLeading:d=!0,throttleTrailing:m=!0,onBefore:h,onFinally:g,onError:w,onSuccess:y,onFinallyFetchDone:b,formatData:S}=r,x=0,R=!1,j=async(...t)=>{setTimeout(()=>{h?.(t)},0);let r=l("onBefore",t);if(r?.isReturned){e({loading:!1,finished:!0});return}let o=x+=1;e({params:t,finished:!1});try{let r=(...e)=>new Promise(t=>t(a(...e))),{servicePromise:u}=l("onRequest",r,t),i=await (u||r(...t));if(!Array.isArray(i))return Promise.reject(TypeError("server 请返回正确的 ResponseContent 类型格式"));let[s,c,f]=i;if(o===x&&(e({finished:!0}),b?.(t),l("onFinallyFetchDone",t)),R)return o===x&&(R=!1),n.value;if(e({response:f}),c)return e({error:c}),w?.(c,t,f),l("onError",c,t,f),Promise.reject(c);let d=S?S(s,t,f):s;return e({data:d,error:void 0}),y?.(d,t,f),l("onSuccess",d,t,f),d}catch(e){return Promise.reject(e)}finally{g?.(t),l("onFinally",t)}},O=async(...e)=>{if(o.value)return j(...e)},T=n=>{let a="function"==typeof n?n(t):n;e({data:a}),l("onMutate",a)},D=p(O,u,{maxWait:i,leading:s,trailing:c}),P=_(O,f,{leading:d,trailing:m});return{run:O,refresh:()=>O(...t.params),cancel:()=>{R=!0,e({loading:!1}),l("onCancel")},mutate:T,optimisticUpdate:(e,n=t.params)=>{let a=t.data;T(e),O(...n).catch(()=>{void 0!==a&&T(a)})},debounceRun:D,throttleRun:P}}(s,e,o,i),f={...s,...c,scope:a,options:o};return(0,v.onScopeDispose)(()=>{a.stop()}),u(f),o.manual||!0===o.watchSource||c.run(...s.rawState.params),a.run(()=>{!0===o.watchSource&&(0,v.watchEffect)(()=>{c.run(...s.rawState.params)}),"boolean"!=typeof o.watchSource&&o.watchSource&&(0,v.watch)(o.watchSource,()=>{c.run(...s.rawState.params)},{deep:o.watchDeep})}),{...s,...c}}function K(e,t={}){let a=(0,v.inject)(m,{}),r=Object.assign(t,a?.pagination),{target:l,initialPage:o=1,initialPageSize:u=10,loadMoreOffset:i=100,pageWatch:s=!0,resetPageWhenPageSizeChange:c=!0,addedMode:f,onSuccess:d}=r,p=(0,v.ref)(o),h=(0,v.ref)(u),g=(0,v.ref)(o),w=(0,v.ref)(f),y=(0,v.ref)([]),b=Z(()=>e({page:p.value,pageSize:h.value}),{...n(r,["target","initialPage","initialPageSize","pageWatch"]),onSuccess(e,t,n){d?.(e,t,n),w.value&&(y.value=(p.value<=g.value?e.list:[...y.value,...e.list])??[],g.value=p.value)}}),S=(0,v.computed)(()=>b.data.value?.total??0),x=(0,v.computed)(()=>Math.ceil(S.value/h.value)),R=(0,v.computed)(()=>p.value===x.value),j=(0,v.computed)({get:()=>p.value,set(e){p.value=e,s&&b.refresh()}}),O=(0,v.computed)({get:()=>h.value,set(e){h.value=e,c&&(j.value=1)}});return q(l,"scroll",e=>{let{scrollHeight:t,scrollTop:n,clientHeight:a}=e.target;n+a>=t-i&&!R.value&&b.finished.value&&(j.value+=1)}),{...b,list:(0,v.computed)(()=>w.value?y.value:b.data.value?.list??[]),page:j,pageSize:O,total:S,totalPage:x,isLastPage:R}}})(),l})());