import{d as H,t as N}from"./lodash@4.17.21-2c729a72.js";const L=(n,{manual:e,ready:t=!0,refreshDeps:s=[],refreshDepsAction:i})=>{const u=Vue.ref(!1);return Vue.watchEffect(()=>{!e&&n.options.refreshDeps!==!0&&(u.value=Vue.unref(t))}),s instanceof Array?Vue.watch([u,...s],([r])=>{r&&!e&&r&&(i?i():n.refresh())},{deep:!0,immediate:!1}):Vue.watch(u,r=>{!e&&r&&(i?i():n.refresh())}),{name:"autoRunPlugin",onBefore:()=>{if(!Vue.unref(t))return{stopNow:!0}}}};L.onInit=({ready:n=!0,manual:e})=>({loading:!e&&Vue.unref(n)});const w=new Map,$=(n,e,t)=>{const s=w.get(n);s!=null&&s.timer&&clearTimeout(s.timer);let i;e>-1&&(i=setTimeout(()=>{w.delete(n)},e)),w.set(n,{...t,timer:i})},y=n=>w.get(n),R=new Map,M=n=>R.get(n),I=(n,e)=>{R.set(n,e),e.then(t=>(R.delete(n),t)).catch(t=>{throw R.delete(n),t})},p={},j=[],Q=(n,e)=>{p[n]&&(p[n].forEach(t=>t(e)),j.forEach(t=>t({type:n,data:e})))},E=(n,e)=>(p[n]||(p[n]=[]),p[n].push(e),function(){const s=p[n].indexOf(e);p[n].splice(s,1)}),G=(n,{cacheKey:e,cacheTime:t=5*60*1e3,staleTime:s=0,setCache:i,getCache:u})=>{const r=Vue.ref(),l=Vue.ref(),c=(o,a)=>{i?i(a):$(o,t,a),Q(o,a.data)},h=(o,a=[])=>u?u(a):y(o);return Vue.watchEffect(()=>{if(!e)return;const o=h(e);o&&Object.hasOwnProperty.call(o,"data")&&(n.state.data=o.data,n.state.params=o.params,(s===-1||new Date().getTime()-o.time<=s)&&(n.state.loading=!1)),r.value=E(e,a=>{n.setState({data:a})})}),Vue.onScopeDispose(()=>{var o;(o=r.value)==null||o.call(r)}),e?{name:"cachePlugin",onBefore:o=>{const a=h(e,o);return!a||!Object.hasOwnProperty.call(a,"data")?{}:s===-1||new Date().getTime()-a.time<=s?{loading:!1,data:a==null?void 0:a.data,returnNow:!0}:{data:a==null?void 0:a.data}},onRequest:(o,a)=>{let v=M(e);return v&&v!==l.value?{servicePromise:v}:(v=o(...a),l.value=v,I(e,v),{servicePromise:v})},onSuccess:(o,a)=>{var v;e&&((v=r.value)==null||v.call(r),c(e,{data:o,params:a,time:new Date().getTime()}),r.value=E(e,d=>{n.setState({data:d})}))},onMutate:o=>{var a;e&&((a=r.value)==null||a.call(r),c(e,{data:o,params:n.state.params,time:new Date().getTime()}),r.value=E(e,v=>{n.setState({data:v})}))}}:{}},Y=(n,{debounceWait:e,debounceLeading:t,debounceTrailing:s,debounceMaxWait:i})=>{const u=Vue.ref(),r=Vue.computed(()=>{const l={},c=Vue.unref(t),h=Vue.unref(s),o=Vue.unref(i);return c!==void 0&&(l.leading=c),h!==void 0&&(l.trailing=h),o!==void 0&&(l.maxWait=o),l});return Vue.watchEffect(l=>{if(Vue.unref(e)){const c=n.runAsync.bind(n);u.value=H(h=>{h()},Vue.unref(e),r.value),n.runAsync=(...h)=>new Promise((o,a)=>{var v;(v=u.value)==null||v.call(u,()=>{c(...h).then(o).catch(a)})}),l(()=>{var h;(h=u.value)==null||h.cancel(),n.runAsync=c})}}),Vue.unref(e)?{name:"debouncePlugin",onCancel:()=>{var l;(l=u.value)==null||l.cancel()}}:{}};var z=Object.defineProperty,J=(n,e,t)=>e in n?z(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,F=(n,e,t)=>(J(n,typeof e!="symbol"?e+"":e,t),t);class W{constructor(){F(this,"table",{}),F(this,"hashTable",{})}insert(e){const t=Symbol(e);return this.table[e]=!0,this.hashTable[t]=e,t}find(e){return this.hashTable[e]}}new W;var X=Object.defineProperty,Z=(n,e,t)=>e in n?X(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,U=(n,e,t)=>(Z(n,typeof e!="symbol"?e+"":e,t),t);class K{constructor(){U(this,"requestInstances",new Map),U(this,"listeners",[])}emit(e){this.listeners.forEach(t=>t(e))}subscribe(e){return this.listeners.push(e),()=>{const t=this.listeners.indexOf(e);this.listeners.splice(t,1)}}insert(e,t){this.requestInstances.set(e,{...t}),this.emit({key:e,...t})}update(e,t){this.has(e)&&this.requestInstances.set(e,{...this.requestInstances.get(e),...t})}has(e){return this.requestInstances.has(e)}reset(e){if(this.requestInstances.has(e)){const t=this.requestInstances.get(e);this.requestInstances.clear(),this.insert(e,t)}else this.requestInstances.clear()}getAll(){return this.requestInstances}}new K;const k=(n,{loadingDelay:e})=>{const t=Vue.ref();if(!Vue.unref(e))return{};const s=()=>{t.value&&clearTimeout(t.value)};return{name:"loadingDelayPlugin",onBefore:()=>(s(),t.value=setTimeout(()=>{n.setState({loading:!0})},Vue.unref(e)),{loading:!1}),onFinally:()=>{s()},onCancel:()=>{s()}}};function O(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}const ee=!!(typeof window<"u"&&window.document&&window.document.createElement);function S(){return O()?document.visibilityState!=="hidden":!0}const b=[];function te(n){return b.push(n),function(){const t=b.indexOf(n);b.splice(t,1)}}if(O()){const n=()=>{if(S())for(let e=0;e{const i=Vue.ref(),u=Vue.ref(),r=Vue.ref(0),l=()=>{var c;i.value&&clearInterval(i.value),(c=u.value)==null||c.call(u)};return Vue.watchEffect(()=>{Vue.unref(e)||l()}),Vue.unref(e)?{name:"pollingPlugin",onBefore:()=>{l()},onError:()=>{r.value+=1},onSuccess:()=>{r.value=0},onFinally:()=>{s===-1||s!==-1&&r.value<=s?i.value=setTimeout(()=>{!t&&!S()?u.value=te(()=>{n.refresh()}):n.refresh()},Vue.unref(e)):r.value=0},onCancel:()=>{l()}}:{}};function se(n,e){let t=!1;return(...s)=>{t||(t=!0,n(...s),setTimeout(()=>{t=!1},e))}}function re(){return O()&&typeof navigator.onLine<"u"?navigator.onLine:!0}const _=[];function ie(n){return _.push(n),function(){const t=_.indexOf(n);t>-1&&_.splice(t,1)}}if(ee){const n=()=>{if(!(!S()||!re()))for(let e=0;e<_.length;e++){const t=_[e];t()}};window.addEventListener("visibilitychange",n,!1),window.addEventListener("focus",n,!1)}const ue=(n,{refreshOnWindowFocus:e,focusTimespan:t=5e3})=>{const s=Vue.ref(),i=()=>{var u;(u=s.value)==null||u.call(s)};return Vue.watchEffect(u=>{if(Vue.unref(e)){const r=se(n.refresh.bind(n),Vue.unref(t));s.value=ie(()=>{r()})}u(()=>{i()})}),Vue.onScopeDispose(()=>{i()}),{name:"refreshOnWindowFocusPlugin"}},oe=(n,{retryInterval:e,retryCount:t})=>{const s=Vue.ref(),i=Vue.ref(0),u=Vue.ref(!1);return t?{name:"retryPlugin",onBefore:()=>{u.value||(i.value=0),u.value=!1,s.value&&clearTimeout(s.value)},onSuccess:()=>{i.value=0},onError:()=>{if(i.value+=1,t===-1||i.value<=t){const r=e??Math.min(1e3*2**i.value,3e4);s.value=setTimeout(()=>{u.value=!0,n.refresh()},r)}else i.value=0},onCancel:()=>{i.value=0,s.value&&clearTimeout(s.value)}}:{}},ae=(n,{throttleWait:e,throttleLeading:t,throttleTrailing:s})=>{const i=Vue.computed(()=>{const r={};return Vue.unref(t)!==void 0&&(r.leading=Vue.unref(t)),Vue.unref(s)!==void 0&&(r.trailing=Vue.unref(s)),r}),u=Vue.computed(()=>N(r=>{r()},Vue.unref(e),i.value));return Vue.watchEffect(r=>{if(Vue.unref(e)){const l=n.runAsync.bind(n);n.runAsync=(...c)=>new Promise((h,o)=>{var a;(a=u.value)==null||a.call(u,()=>{l(...c).then(h).catch(o)})}),r(()=>{var c;n.runAsync=l,(c=u.value)==null||c.cancel()})}}),Vue.unref(e)?{name:"throttlePlugin",onCancel:()=>{var r;(r=u.value)==null||r.cancel()}}:{}},C=n=>typeof n=="function",le=n=>typeof n=="boolean";var ce=Object.defineProperty,fe=(n,e,t)=>e in n?ce(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,P=(n,e,t)=>(fe(n,typeof e!="symbol"?e+"":e,t),t);class de{constructor(e,t,s,i={}){P(this,"pluginImpls"),P(this,"count",0),P(this,"state",{loading:!1,params:void 0,data:void 0,error:void 0}),P(this,"previousValidData"),this.serviceRef=e,this.options=t,this.setUpdateData=s,this.initState=i,this.state={...this.state,loading:!t.manual,...i}}setState(e={}){this.state={...this.state,...e},this.setUpdateData(this.state)}setData(e,t){console.warn("Please use 'setFetchState' instead of 'setData'"),t instanceof Array?t.forEach(s=>{this.state[s]=e,this.setUpdateData(e,s)}):(this.state[t]=e,this.setUpdateData(e,t))}setFetchState(e,t){t instanceof Array?t.forEach(s=>{this.state[s]=e,this.setUpdateData(e,s)}):(this.state[t]=e,this.setUpdateData(e,t))}runPluginHandler(e,...t){var s,i,u;const r=(u=(i=(s=this.pluginImpls)==null?void 0:s.map(l=>{var c;return(c=l[e])==null?void 0:c.call(l,...t)}))!=null?i:[])==null?void 0:u.filter(Boolean);return Object.assign({},...r)}async runAsync(...e){var t,s,i,u,r,l,c,h,o;this.count+=1;const a=this.count,{stopNow:v=!1,returnNow:d=!1,...V}=this.runPluginHandler("onBefore",e);if(v)return new Promise(()=>{});if(this.setState({loading:!0,params:e,...V}),d)return Promise.resolve(V.data);(s=(t=this.options).onBefore)==null||s.call(t,e);try{let{servicePromise:f}=this.runPluginHandler("onRequest",this.serviceRef.value,e);const m=D=>{var A,T,B,q;if(a!==this.count)return new Promise(()=>{});const g=this.options.formatResult?this.options.formatResult(D):D;return this.setState({data:g,error:void 0,loading:!1}),(T=(A=this.options).onSuccess)==null||T.call(A,g,e),this.runPluginHandler("onSuccess",g,e),this.previousValidData=g,(q=(B=this.options).onFinally)==null||q.call(B,e,g,void 0),a===this.count&&this.runPluginHandler("onFinally",e,g,void 0),g};f||(f=this.serviceRef.value(...e));const x=await f;return m(x)}catch(f){if(a!==this.count)return new Promise(()=>{});throw this.setState({error:f,loading:!1}),(u=(i=this.options).onError)==null||u.call(i,f,e),this.runPluginHandler("onError",f,e),(C((r=this.options)==null?void 0:r.rollbackOnError)&&((l=this.options)!=null&&l.rollbackOnError(e))||le((c=this.options)==null?void 0:c.rollbackOnError)&&this.options.rollbackOnError)&&this.setState({data:this.previousValidData}),(o=(h=this.options).onFinally)==null||o.call(h,e,void 0,f),a===this.count&&this.runPluginHandler("onFinally",e,void 0,f),f}}run(...e){this.runAsync(...e).catch(t=>{this.options.onError||console.error(t)})}cancel(){this.count+=1,this.setState({loading:!1}),this.runPluginHandler("onCancel")}refresh(){this.run(...this.state.params||[])}refreshAsync(){return this.runAsync(...this.state.params||[])}mutate(e){const t=C(e)?e(this.state.data):e;this.runPluginHandler("onMutate",t),this.setState({data:t})}}const he=Symbol("USEREQUEST_GLOBAL_OPTIONS_PROVIDE_KEY");function ve(n){return Object.keys(n).filter(t=>["data","loading","params","error"].includes(t)).length===4}function me(n,e={},t=[]){const s=Vue.inject(he,{}),{initialData:i=void 0,manual:u=!1,ready:r=!0,...l}={...s??{},...e??{}},c={manual:u,ready:r,...l},h=Vue.ref(n),o=Vue.reactive({data:i,loading:!1,params:void 0,error:void 0}),a=(f,m)=>{m?o[m]=f:ve(f)&&(o.data=f.data,o.loading=f.loading,o.error=f.error,o.params=f.params)},v=t.map(f=>{var m;return(m=f==null?void 0:f.onInit)==null?void 0:m.call(f,c)}).filter(Boolean),d=new de(h,c,a,Object.assign({},...v,o));d.options=c,d.pluginImpls=t.map(f=>f(d,c));const V=Vue.computed(()=>Vue.isRef(r)?r.value:r);if(Vue.watchEffect(()=>{if(!u){const f=d.state.params||e.defaultParams||[];V.value&&d.options.refreshDeps===!0&&h.value&&d.run(...f)}}),!u&&d.options.refreshDeps!==!0){const f=d.state.params||e.defaultParams||[];Vue.unref(r)&&d.run(...f)}return Vue.onScopeDispose(()=>{d.cancel()}),{...Vue.toRefs(o),cancel:d.cancel.bind(d),refresh:d.refresh.bind(d),refreshAsync:d.refreshAsync.bind(d),run:d.run.bind(d),runAsync:d.runAsync.bind(d),mutate:d.mutate.bind(d)}}function pe(n,e,t){var s;const i=(s=[null,Y,k,ne,ue,ae,L,G,oe])==null?void 0:s.filter(Boolean);return me(n,e,[...t||[],...i])}export{pe as u};