!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).VueRequest=e.VueRequest||{},e.Vue)}(this,(function(e,n){"use strict";const t={},a=Symbol("GLOBAL_OPTIONS_PROVIDE_KEY"),r=()=>t,o=n.defineComponent({name:"RequestConfig",props:{config:{type:Object,required:!0}},setup(e,{slots:t}){const{config:r}=e;return n.provide(a,r),()=>{var e;return null===(e=t.default)||void 0===e?void 0:e.call(t)}}}),u=Object.prototype.toString,i=e=>u.call(e),l=e=>"[object Object]"===i(e),c=e=>null!==e&&"object"==typeof e,s=e=>e instanceof Function,d=e=>null==e,v="undefined"==typeof window,f=()=>{var e,n;return!v&&"visible"===(null===(e=window)||void 0===e||null===(n=e.document)||void 0===n?void 0:n.visibilityState)},p=()=>{var e,n,t;return null===(e=!v&&(null===(n=window)||void 0===n||null===(t=n.navigator)||void 0===t?void 0:t.onLine))||void 0===e||e},g=Promise.resolve(null),m=async(...e)=>{const n=await fetch(...e);if(n.ok)return n.json();throw new Error(n.statusText)},h=(e,n,t)=>{const a=n.replace(/\[(\d+)\]/g,".$1").split(".");let r=e;for(const e of a)if(r=Object(r)[e],void 0===r)return t;return r};function y(e,n){const t=Object.assign({},e);for(const e of n)delete t[e];return t}const w=(e,n=!1)=>{const t=`Warning: [vue-request] ${e}`;if(n)return new Error(t);console.error(t)};var E;const O=new Set,T=new Set,b=new Set,S=(e,n)=>{let t;switch(e){case"FOCUS_LISTENER":t=O;break;case"RECONNECT_LISTENER":t=b;break;case"VISIBLE_LISTENER":t=T}if(!t.has(n))return t.add(n),()=>{t.delete(n)}},j=e=>{e.forEach((e=>{e()}))};function q(e,n,t){let a,r,o,u,i,l,s=0,d=!1,v=!1,f=!0;const p=!n&&0!==n&&"function"==typeof window.requestAnimationFrame;if("function"!=typeof e)throw new TypeError("Expected a function");function g(n){const t=a,o=r;return a=r=void 0,s=n,u=e.apply(o,t),u}function m(e,n){return p?(window.cancelAnimationFrame(i),window.requestAnimationFrame(e)):setTimeout(e,n)}function h(e){const t=e-l;return void 0===l||t>=n||t<0||v&&e-s>=o}function y(){const e=Date.now();if(h(e))return w(e);i=m(y,function(e){const t=e-s,a=n-(e-l);return v?Math.min(a,o-t):a}(e))}function w(e){return i=void 0,f&&a?g(e):(a=r=void 0,u)}function E(...e){const t=Date.now(),o=h(t);if(a=e,r=this,l=t,o){if(void 0===i)return function(e){return s=e,i=m(y,n),d?g(e):u}(l);if(v)return i=m(y,n),g(l)}return void 0===i&&(i=m(y,n)),u}return n=+n||0,c(t)&&(d=!!t.leading,v="maxWait"in t,o=v?Math.max(+t.maxWait||0,n):o,f="trailing"in t?!!t.trailing:f),E.cancel=function(){void 0!==i&&function(e){if(p)return window.cancelAnimationFrame(e);clearTimeout(e)}(i),s=0,a=l=r=i=void 0},E.flush=function(){return void 0===i?u:w(Date.now())},E.pending=function(){return void 0!==i},E}function R(e,n){for(const a in n)void 0!==n[a]&&(c(n[a])&&c(e[a])&&a in e?(l(n[a])||(t=n[a],Array.isArray(t)))&&R(e[a],n[a]):e[a]=n[a]);var t}function K(e,...n){const t=Object.assign({},e);if(!n.length)return t;for(const e of n)R(t,e);return t}!v&&null!==(E=window)&&void 0!==E&&E.addEventListener&&(window.addEventListener("visibilitychange",(()=>{f()&&j(T)}),!1),window.addEventListener("focus",(()=>j(O)),!1),window.addEventListener("online",(()=>j(b)),!1));const L=(e,t,a)=>{var r,o,u;const{initialAutoRunFlag:i,initialData:l,loadingDelay:v,pollingInterval:m,debounceInterval:h,debounceOptions:y,throttleInterval:w,throttleOptions:E,pollingWhenHidden:O,pollingWhenOffline:T,errorRetryCount:b,errorRetryInterval:j,stopPollingWhenHiddenOrOffline:R,refreshOnWindowFocus:K,refocusTimespan:L,updateCache:I,formatResult:P,onSuccess:_,onError:C,onBefore:M,onAfter:W}=t,A=n.ref(0),F=n.ref(null!==(r=null==a?void 0:a.loading)&&void 0!==r&&r),N=n.ref(null!==(o=null==a?void 0:a.data)&&void 0!==o?o:l),k=n.ref(null==a?void 0:a.error),D=n.ref(null!==(u=null==a?void 0:a.params)&&void 0!==u?u:[]),x=(V={loading:F,data:N,error:k,params:D},U=[e=>I(e)],e=>{Object.keys(e).forEach((n=>{V[n].value=e[n]})),U.forEach((e=>e(V)))});var V,U;const z=()=>{A.value=0},B=n.ref(0),H=n.ref(),Q=n.ref(),Y=n.ref(),G=()=>{H.value&&H.value(),Y.value&&Y.value(),Q.value&&Q.value()},$=n.computed((()=>{if(j)return j;return 1e3*Math.floor(Math.random()*2**Math.min(A.value,9)+1)})),J=(...n)=>{x({loading:!v,params:n}),Y.value=(()=>{let e;return v&&(e=setTimeout(x,v,{loading:!0})),()=>e&&clearTimeout(e)})(),B.value+=1;const t=B.value;return null==M||M(n),e(...n).then((e=>{if(t===B.value){const t=P?P(e):e;return x({data:t,loading:!1,error:void 0}),_&&_(t,n),z(),t}return g})).catch((e=>(t===B.value&&(x({data:void 0,loading:!1,error:e}),C&&C(e,n),console.error(e)),g))).finally((()=>{t===B.value&&(Y.value(),Q.value=(e=>{let n;const t=-1===b,a=A.valuen&&clearTimeout(n)})((()=>J(...n))),H.value=(e=>{if(k.value&&0!==b)return;let n;if(!d(m)&&m>=0){if(!O&&!f()||!T&&!p())return void(R.value=!0);n=setTimeout(e,m)}return()=>n&&clearTimeout(n)})((()=>J(...n))),null==W||W(n))}))},X=!d(h)&&q(J,h,y),Z=!d(w)&&function(e,n,t){let a=!0,r=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return c(t)&&(a="leading"in t?!!t.leading:a,r="trailing"in t?!!t.trailing:r),q(e,n,{leading:a,trailing:r,maxWait:n})}(J,w,E),ee=(...e)=>(G(),!i.value&&X?(X(...e),g):Z?(Z(...e),g):(z(),J(...e))),ne=()=>ee(...D.value),te=[],ae=e=>{e&&te.push(e)},re=()=>{R.value&&(O||f())&&(T||p())&&(ne(),R.value=!1)};O||ae(S("VISIBLE_LISTENER",re)),T||ae(S("RECONNECT_LISTENER",re));const oe=((e,n)=>{let t=!1;return(...a)=>{t||(t=!0,e(...a),setTimeout((()=>{t=!1}),n))}})(ne,L);K&&(ae(S("VISIBLE_LISTENER",oe)),ae(S("FOCUS_LISTENER",oe)));return{loading:F,data:N,error:k,params:D,run:ee,cancel:()=>{B.value+=1,x({loading:!1}),X&&X.cancel(),Z&&Z.cancel(),G()},refresh:ne,mutate:e=>{const n=s(e)?e(N.value):e;x({data:n})},unmount:()=>{te.forEach((e=>e()))}}},I=new Map,P=e=>{if(d(e))return;const n=I.get(e);return n?{data:n.data,cacheTime:n.cacheTime}:void 0},_="__QUERY_DEFAULT_KEY__";function C(e,t){const o=n.inject(a,{}),{cacheKey:u,defaultParams:i=[],manual:l=!1,ready:c=n.ref(!0),refreshDeps:s=[],loadingDelay:d=0,pollingWhenHidden:v=!1,pollingWhenOffline:f=!1,refreshOnWindowFocus:p=!1,refocusTimespan:m=5e3,cacheTime:h=6e5,staleTime:w=0,errorRetryCount:E=0,errorRetryInterval:O=0,queryKey:T,...b}={...r(),...o,...t},S=n.ref(!1),j=n.ref(!1),q={initialAutoRunFlag:j,loadingDelay:d,pollingWhenHidden:v,pollingWhenOffline:f,stopPollingWhenHiddenOrOffline:S,cacheKey:u,errorRetryCount:E,errorRetryInterval:O,refreshOnWindowFocus:p,refocusTimespan:m,updateCache:e=>{var t,a;if(!u)return;const r=null===(t=P(u))||void 0===t?void 0:t.data,o=null==r?void 0:r.queries,i=(e=>{const t={};return Object.keys(e).forEach((a=>{t[a]=n.unref(e[a])})),t})(e),l=null!==(a=null==T?void 0:T(...e.params.value))&&void 0!==a?a:_;((e,n,t)=>{const a=I.get(e);null!=a&&a.timer&&clearTimeout(a.timer);const r=setTimeout((()=>I.delete(e)),t);I.set(e,{data:n,timer:r,cacheTime:(new Date).getTime()})})(u,{queries:{...o,[l]:{...null==o?void 0:o[l],...i}},latestQueriesKey:l},h)},...y(b,["pagination","listKey"])},R=n.ref(!1),K=n.ref(),C=n.ref(),M=n.ref(),W=n.reactive({[_]:n.reactive(L(e,q))}),A=n.ref(_),F=n.computed((()=>{var e;return null!==(e=W[A.value])&&void 0!==e?e:{}}));if(n.watch(F,(e=>{R.value=e.loading,K.value=e.data,C.value=e.error,M.value=e.params}),{immediate:!0,deep:!0}),u){var N;const t=P(u);null!=t&&null!==(N=t.data)&&void 0!==N&&N.queries&&(Object.keys(t.data.queries).forEach((a=>{const r=t.data.queries[a];W[a]=n.reactive(L(e,q,{loading:r.loading,params:r.params,data:r.data,error:r.error}))})),t.data.latestQueriesKey&&(A.value=t.data.latestQueriesKey))}const k=n.ref(),D=n.ref(!1),x=(...t)=>{var a;if(!c.value&&!D.value)return k.value=t,g;const r=null!==(a=null==T?void 0:T(...t))&&void 0!==a?a:_;return W[r]||(W[r]=n.reactive(L(e,q))),A.value=r,F.value.run(...t)},V=()=>{Object.keys(W).forEach((e=>{W[e].cancel(),W[e].unmount(),delete W[e]}))};if(!l){var U;j.value=!0;const e=P(u),n=null!==(U=null==e?void 0:e.data.queries)&&void 0!==U?U:{},t=e&&(-1===w||e.cacheTime+w>(new Date).getTime()),a=Object.keys(n).length>0;t||(a?Object.keys(W).forEach((e=>{var n;null===(n=W[e])||void 0===n||n.refresh()})):x(...i)),j.value=!1}const z=n.ref();return z.value=n.watch(c,(e=>{D.value=!0,e&&k.value&&(x(...k.value),z.value())}),{flush:"sync"}),s.length&&n.watch(s,(()=>{!l&&F.value.refresh()})),n.onUnmounted((()=>{V()})),{loading:R,data:K,error:C,params:M,cancel:()=>F.value.cancel(),refresh:()=>F.value.refresh(),mutate:e=>F.value.mutate(e),run:x,reset:()=>{V(),A.value=_,W[_]=n.reactive(L(e,q))},queries:W}}const M=e=>(...n)=>{if(s(e))return M(e(...n))();if(c(t=e)&&s(t.then)&&s(t.catch))return e;if(l(e)){const{url:n,...t}=e;return m(n,t)}if("[object String]"===i(e))return m(e);throw w("Unknown service type",!0);var t};e.RequestConfig=o,e.setGlobalOptions=e=>{Object.keys(e).forEach((n=>{t[n]=e[n]}))},e.useLoadMore=function(e,t){var o;s(e)||w("useLoadMore only support function service");const u=M(e),i=n.inject(a,{}),{queryKey:l,isNoMore:c,listKey:d="list",...v}=Object.assign({listKey:null!==(o=i.listKey)&&void 0!==o?o:r().listKey},null!=t?t:{});l&&w("useLoadMore does not support concurrent request");const f=n.ref(!1),p=n.ref(!1),g=n.ref(!1),m=n.ref(0),{data:E,params:O,queries:T,run:b,reset:S,cancel:j,...q}=C(u,{...v,onSuccess:(...e)=>{var n;p.value=!1,m.value++,null==v||null===(n=v.onSuccess)||void 0===n||n.call(v,...e)},onError:(...e)=>{var n;p.value=!1,null==v||null===(n=v.onError)||void 0===n||n.call(v,...e)},queryKey:()=>String(m.value)}),R=n.ref(E.value);n.watchEffect((()=>{void 0!==E.value&&(R.value=E.value)}));const K=n.computed((()=>!(!c||!s(c))&&c(R.value))),L=n.computed((()=>{let e=[];return Object.values(T).forEach((n=>{const t=h(n.data,d);t&&Array.isArray(t)&&(e=e.concat(t))})),e}));return{data:R,dataList:L,params:O,noMore:K,loadingMore:p,refreshing:f,reloading:g,run:b,reload:async()=>{g.value=!0,S(),m.value=0,R.value=void 0;const[,...e]=O.value,n=[void 0,...e];await b(...n),g.value=!1},loadMore:()=>{if(K.value)return;p.value=!0;const[,...e]=O.value,n=[{dataList:L.value,data:R.value},...e];b(...n)},reset:S,refresh:async()=>{f.value=!0;const e=m.value-1,n=e<0?0:e;R.value=T[n].data,m.value=0;const[,...t]=O.value,a=[void 0,...t];await b(...a),Object.keys(T).forEach((e=>{e!==(0).toString()&&(T[e].cancel(),T[e].unmount(),delete T[e])})),f.value=!1},cancel:()=>{j(),p.value=!1,f.value=!1},...y(q,["refresh","mutate"])}},e.usePagination=function(e,t){var o,u;const i=M(e),l=n.inject(a,{}),{pagination:{currentKey:c,pageSizeKey:s,totalKey:d,totalPageKey:v},queryKey:f,...p}=K({pagination:{currentKey:"current",pageSizeKey:"pageSize",totalKey:"total",totalPageKey:"totalPage"}},{pagination:null!==(o=r().pagination)&&void 0!==o?o:{}},{pagination:null!==(u=l.pagination)&&void 0!==u?u:{}},null!=t?t:{});f&&w("usePagination does not support concurrent request");const g=K({defaultParams:[{[c]:1,[s]:10}]},p),{data:m,params:y,queries:E,run:O,reset:T,...b}=C(i,g),S=e=>{const[n,...t]=y.value,a=[{...n,...e},...t];O(...a)},j=e=>{S({[c]:e})},q=e=>{S({[s]:e})},R=n.ref(!1),L=n.computed((()=>h(m.value,d,0))),I=n.computed({get:()=>{var e,n;return null!==(e=null===(n=y.value[0])||void 0===n?void 0:n[c])&&void 0!==e?e:g.defaultParams[0][c]},set:e=>{j(e)}}),P=n.computed({get:()=>{var e,n;return null!==(e=null===(n=y.value[0])||void 0===n?void 0:n[s])&&void 0!==e?e:g.defaultParams[0][s]},set:e=>{q(e)}}),_=n.computed((()=>h(m.value,v,Math.ceil(L.value/P.value))));return{data:m,params:y,current:I,pageSize:P,total:L,totalPage:_,reloading:R,run:O,changeCurrent:j,changePageSize:q,changePagination:(e,n)=>{S({[c]:e,[s]:n})},reload:async()=>{const{defaultParams:e,manual:n}=g;T(),n||(R.value=!0,await O(...e),R.value=!1)},...b}},e.useRequest=function(e,t){const a=M(e),{reset:r,run:o,...u}=C(a,null!=t?t:{}),i=n.ref(!1);return{reload:async()=>{const{defaultParams:e=[],manual:n}=t;r(),n||(i.value=!0,await o(...e),i.value=!1)},run:o,reloading:i,...u}},Object.defineProperty(e,"__esModule",{value:!0})}));