@alova/scene-react
Version:
scenario react hooks with alova.js
2 lines (1 loc) • 26.7 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("alova"),require("react")):"function"==typeof define&&define.amd?define(["exports","alova","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).AlovaScene={},e.alova,e.react)}(this,(function(e,t,r){"use strict";const n=Promise,o=void 0,a=null,s=!0,c=!1,i=Object,u=Number,l=String,d=Boolean,f=RegExp,h=Symbol.toStringTag,m="valueOf",v="default",p="silent",g="undefined"==typeof window&&"undefined"!=typeof process,y=e=>n.resolve(e),S=(e,t,r)=>e.then(t,r),b=(e,t)=>e.catch(t),w=(e,t)=>e.forEach(t),E=(e,...t)=>e.push(...t),R=(e,t)=>e.filter(t),M=(e,t)=>e.map(t),k=(e,t)=>e.includes(t),q=e=>e.length,A=e=>Array.isArray(e),C=e=>e.shift(),T=(e,t,r=0,...n)=>e.splice(t,r,...n),x=e=>e.config,P=e=>e.context,D=e=>i.keys(e),L=(e,t=0)=>setTimeout(e,t),F=e=>clearTimeout(e),j=(e,t)=>e.test(t),Q=(e=0)=>{let t=o;return r=>{t&&F(t),t=L(r,e)}},H=()=>{const e=(new Date).getTime();return Math.floor(Math.random()*e).toString(36)},$=()=>{},z=e=>e,O=e=>{throw e},_=(e,t)=>e instanceof t,N=(e,t)=>`[alova/${e}]${t}`,B=e=>(t,r)=>{if(!t)throw Z(Error,N(e,r))},G=(e,t=c)=>({value:e,writable:t}),K=(e,t,r,n=c)=>{i.defineProperty(e,t,n?r:G(r,c))},V=(e,...t)=>{let r=o;return w(e,(e=>{const n=e(...t);r=n!==o?n:r})),r},W=e=>typeof e,I=e=>"function"===W(e),U=e=>"string"===W(e),J=e=>e!==a&&"object"===W(e),X=e=>"[object Object]"===i.prototype.toString.call(e),Y=(e,t,r=s,n,o)=>{const a=()=>{o&&n&&(e=t(e,n,o))!==o[n]&&(o[n]=e)};if(r&&a(),J(e))for(const n in e)_(e,l)||Y(e[n],t,r,n,e);return!r&&a(),e},Z=(e,...t)=>new e(...t),ee=(e,t=[])=>I(e)?e(...t):e,te=e=>e?e.getTime():Date.now(),re=e=>"number"==typeof e&&!isNaN(e),ne="memory",oe="placeholder",ae="restore",se=(e,t)=>{let{delay:r,multiplier:n=1,startQuiver:o,endQuiver:a}=e,s=(r||0)*Math.pow(n,t-1);return(o||a)&&(o=o||0,a=a||1,s+=s*o+Math.random()*s*(a-o),s=Math.floor(s)),s},ce=(e,r=[])=>{const n=I(e)?e(...r):e;return B("scene")(_(n,t.Method),"hook handler must be a method instance or a function that returns method instance"),n};function ie(e=$){let t=[];return[r=>(t.includes(r)||(t.push(r),e(t)),()=>{t=R(t,(e=>e!==r)),e(t)}),(...e)=>{if(t.length>0)return w(t,(t=>t(...e)))},()=>{t=[],e(t)}]}const ue=(e,t)=>{const n=r.useState(e);if(t){const e=ye();e.current=n[0],n[2]=e}return n},le=(e,t,n)=>{const o=r.useMemo(e,t),a=[o,$];if(n){const e=ye();e.current=o,E(a,e)}return a},de=e=>A(e)&&I(e[1])?e[2]?e[2].current:e[0]:e,fe=e=>A(e)&&I(e[1])?e[0]:e,he=(...e)=>M(e,(e=>fe(e))),me=(e,t)=>{if(I(t)){const r=e[2]?e[2].current:e[0];t=t(A(r)?[...r]:J(r)?{...r}:r)}e[1](t),e[2]&&(e[2].current=t)},ve=(e,t)=>{const n=r.useRef(c);r.useEffect((()=>{n.current?t():n.current=!0}),e)},pe=e=>r.useEffect(e,[]),ge=e=>{r.useEffect((()=>e),[])},ye=e=>r.useRef(e),Se=e=>{const t=[e,$],r=ye();return r.current=e,E(t,r),t},be=e=>(ye().current=e,r.useCallback(((...t)=>{e.apply(null,t)}),[]));const we=B("usePagination"),Ee=(e,t)=>we(re(e)&&e<q(t),"index must be a number that less than list length");function Re(e,{preloadPreviousPage:r=s,preloadNextPage:n=s,total:a=(e=>e.total),data:u=(e=>e.data),append:l=c,initialPage:d=1,initialPageSize:f=10,watchingStates:h=[],initialData:m,immediate:v=s,middleware:p=$,force:g=$,...S},P,F,j,H,z,O,N,B,G,K){const V=B();V.current=e;const W=B(c),U=B(0),J=P(d,s),X=P(f,s),Y=P(m&&u(m)||[],s),{snapshots:Z,get:ee,save:se,remove:ce}=B((e=>{let r={};return{snapshots:()=>r,save(e,n=c){const o=t.getMethodKey(e);r[o]&&!n||(r[o]={entity:e})},get:n=>r[t.getMethodKey(_(n,t.Method)?n:e(n))],remove(e){e?delete r[e]:r={}}}})((e=>V.current(e,H(X))))).current,ie=e=>u(e)||e,ue=(t=H(J))=>{const r=H(X),n=e(t,r);return se(n),n};N(h,(()=>{j(J,d),U.current=0,W.current=s}));const le=B({}),de=e=>(...t)=>le.current[e](...t),fe=t.useWatcher(ue,[...h,z(J),z(X)],{immediate:v,initialData:m,middleware(e,t){p({...e,delegatingActions:{refresh:de("refresh"),insert:de("insert"),remove:de("remove"),replace:de("replace"),reload:de("reload"),getState:e=>H({page:J,pageSize:X,data:Y,pageCount:ve,total:me,isLastPage:Se}[e])}},y);let r=y();return W.current?0===U.current&&(U.current++,r=t()):r=t(),r},force:(...e)=>e[1]||g(...e),abortLast:!1,...S}),{send:he}=fe,me=P(m?a(m):o,s),ve=F((()=>{const e=H(me);return e!==o?Math.ceil(e/H(X)):o}),O(X,me),s),pe=G(fe.data),ge=(e=H(pe),r,n,a=c,i)=>{const{e:u}=((e,t)=>{const r=t!==o?t:e?x(e).localCache:o,n=e=>re(e)?te()+e:te(e);let a=ne,s=0,i=c,u=o;if(!I(r))if(re(r)||_(r,Date))s=n(r);else{const{mode:e=ne,expire:t=0,tag:c}=r||{};a=e,s=n(t),i=[oe,ae].includes(e),u=c?c.toString():o}return{e:s,m:a,s:i,t:u}})(n);if(u<=te())return c;if(i)return s;if(t.queryCache(n))return c;const l=H(ve),d=l?r>l:a?q(ie(e))<H(X):c;return r>0&&!d},ye=(e,t=c)=>{const r=H(J)+1,o=ue(r);n&&ge(e,r,o,s,t)&&b(ke(o,t),$)},Se=F((()=>{const e=H(pe);if(!e)return s;const t=ie(e),r=H(J),n=H(ve),o=A(t)?q(t):0;return n?r>=n:o<H(X)}),O(J,ve,fe.data,X),s),be=()=>{const e=ee(H(J));e&&t.setCache(e.entity,(e=>{if(e){const t=ie(e)||[];return T(t,0,q(t),...H(Y)),e}}))},Re=t.useFetcher({force:e=>e}),{fetching:Me,fetch:ke,abort:qe,onSuccess:Ae}=Re,Ce=G(Me);Ae((({method:e,data:r})=>{const n=ee(H(J));if(n&&t.getMethodKey(n.entity)===t.getMethodKey(e)){const e=ie(r);if(l){const t=H(Y),r=H(X),n=q(t)%r;n>0&&j(Y,(t=>(T(t,(H(J)-1)*r,n,...e),t)))}else j(Y,e)}})),fe.onSuccess((({data:e,sendArgs:[t,n],method:s})=>{const{total:c}=ee(s)||{};j(me,c!==o?c:a(e)),n||((e=>{const t=H(J)-1,n=ue(t);r&&ge(e,t,n)&&b(ke(n),$)})(e),ye(e));const i=H(X),u=ie(e);we(A(u),"Got wrong array, did you return the correct array of list in `data` function"),l?(W.current&&j(Y,[]),t===o?j(Y,[...H(Y),...u]):t&&j(Y,(e=>(T(e,(t-1)*i,i,...u),e)))):j(Y,u)})),fe.onComplete((()=>{W.current=c,U.current=0}));const Te=e=>{const t=H(Y).indexOf(e);return we(t>=0,"item is not found in list"),t},xe=K(((t=H(J))=>{let r=t;if(l){if(!re(t)){const e=Te(t);r=Math.floor(e/H(X))+1}we(r<=H(J),"refresh page can't greater than page"),b(he(r,s),$)}else we(re(r),"unable to calculate refresh page by item in pagination mode"),b(r===H(J)?he(o,s):ke(e(r,H(X)),s),$)})),Pe=B(Q()).current,De=(e=c)=>{const r=H(J),n=Z();let o=(a=n,i.values(a));var a;if(e)ce();else{const e=M(R([ee(r-1),ee(r),ee(r+1)],Boolean),(({entity:e})=>t.getMethodKey(e)));o=M(R(D(n),(t=>!k(e,t))),(e=>{const t=n[e];return delete n[e],t}))}t.invalidateCache(M(o,(({entity:e})=>e)))},Le=B(Q()).current,Fe=()=>Le((()=>{H(Ce)&&qe(),De(),L((()=>{const e=ee(H(J)+1);if(e){const r=ie(t.queryCache(e.entity)||{})||[];ye(o,q(r)<H(X))}}))})),je=e=>{const t=H(me);if(re(t)){const r=Math.max(t+e,0);j(me,r);const n=H(J);w([ee(n-1),ee(n),ee(n+1)],(e=>{e&&(e.total=r)}))}},Qe=K(((e,r=0)=>{const n=re(r)?r:Te(r)+1;let a=o;if(j(Y,(t=>(q(H(Y))%H(X)==0&&(a=t.pop()),T(t,n,0,e),t))),je(1),be(),a){const e=ee(H(J)+1);e&&t.setCache(e.entity,(e=>{if(e){const t=ie(e)||[];return t.unshift(a),t.pop(),e}}))}Fe()}));let He;const $e=K((e=>{const r=re(e)?e:Te(e);Ee(r,H(Y));const n=H(J),a=ee(n+1);let s=o;a&&t.setCache(a.entity,(e=>{if(e){const t=ie(e);return s=C(t||[]),e}}));const c=H(Se);s||c?(He||(He=[...H(Y)]),r>=0&&j(Y,(e=>(T(e,r,1),s&&E(e,s),e)))):He&&j(Y,He),je(-1),be(),Fe(),Pe((()=>{s||c||xe(n),!l&&c&&q(H(Y))<=0&&j(J,(e=>e-1)),He=o}))})),ze=K(((e,t)=>{we(t!==o,"must specify replace position");const r=re(t)?t:Te(t);Ee(r,H(Y)),j(Y,(t=>(T(t,r,1,e),t))),be()})),Oe=K((()=>{De(s),W.current=s,H(J)===d?b(he(),$):j(J,d)}));return le.current={refresh:xe,insert:Qe,remove:$e,replace:ze,reload:Oe},{...fe,update:e=>{const{data:t}=e;t&&(j(Y,t),delete e.data),fe.update(e)},fetching:Re.fetching,onFetchSuccess:Re.onSuccess,onFetchError:Re.onError,onFetchComplete:Re.onComplete,page:J,pageSize:X,data:z(Y),pageCount:z(ve),total:z(me),isLastPage:z(Se),refresh:xe,insert:Qe,remove:$e,replace:ze,reload:Oe}}var Me=(e,t,r,n,a,s,c,i,u,l,d,f)=>{const m={behavior:r,method:t,silentMethod:n,retryTimes:s,retryDelay:c,sendArgs:i,data:u,vDataResponse:l,error:d,status:f,queueName:a},v={};w(D(m),(e=>{m[e]!==o&&(v[e]=m[e])}));const p=["GlobalSQEvent","GlobalSQSuccessEvent","GlobalSQErrorEvent","GlobalSQFailEvent","ScopedSQEvent","ScopedSQSuccessEvent","ScopedSQErrorEvent","ScopedSQCompleteEvent","ScopedSQRetryEvent","RetriableRetryEvent","RetriableFailEvent","SSEOpenEvent","SSEMessageEvent","SSEErrorEvent"][e];return p&&K(v,h,p),v};let ke;const qe=e=>ke=e;let Ae;let Ce={};let Te=0;const xe=e=>Te=e;let Pe=[];const De=[],Le=[],Fe=[],je=[],Qe=[],He=B("useSQHook");var $e={forward:e=>_(e,Date)?e.getTime():o,backward:e=>Z(Date,e)},ze={forward:e=>_(e,f)?e.source:void 0,backward:e=>Z(f,e)};const Oe=(e={})=>{const t={date:$e,regexp:ze,...e};return{serialize:e=>(J(e)&&(e=Y(A(e)?[...e]:{...e},(e=>{let r=o;const n=D(t).reduce(((e,n)=>{if(!r){const a=t[n].forward(e);a!==o&&(r=n,e=a)}return e}),e);return"[object Object]"===i.prototype.toString.call(e)?e={...e}:A(e)&&(e=[...e]),r!==o?[r,n]:e}))),e),deserialize:e=>J(e)?Y(e,(e=>{if(A(e)&&2===q(e)){const r=t[e[0]];e=r?r.backward(e[1]):e}return e}),c):e}},_e=Symbol("vdid"),Ne=Symbol("original"),Be=/\[vd:([0-9a-z]+)\]/,Ge=e=>{const t=null==e?void 0:e[_e];t&&ke&&(ke[t]=o)},Ke=(e,t=s)=>{Ge(e);const r=null==e?void 0:e[_e];return(r?`[vd:${r}]`:o)||(t?e:o)};function Ve(){return Ke(this)}const We=function(){};We.prototype=i.create(a,{[m]:G(Ve)});const Ie=function(){};Ie.prototype=i.create(a,{[m]:G(Ve)});var Ue=(e,t=H())=>{const r=(e,t=H())=>{if(e===a)e=Z(We);else if(e===o)e=Z(Ie);else{const t=i(e);K(t,m,Ve),K(t,Ne,e),e=t}return K(e,_e,t),e},n=r(e,t);return(X(n)||A(n))&&Y(n,(e=>r(e))),n};const Je=Array.isArray,Xe=(e,t=s)=>{const r=e=>(Ge(e),(null==e?void 0:e[_e])&&(_(e,Ie)?e=o:_(e,We)?e=a:(_(e,u)||_(e,l)||_(e,d))&&(e=e[Ne])),e),n=r(e);return t&&(X(n)||Je(n))&&Y(n,(e=>r(e))),n};const Ye="__$k",Ze="__$v",et=()=>(He(!!Ae,"alova instance is not found, Do you forget to set `alova` or call `bootSilentFactory`?"),Ae.storage);let tt=o;const rt="alova.SQ",nt="alova.SM.",ot=(e,t)=>{const r=et();J(t)&&(t=Y(A(t)?[...t]:{...t},((e,t,r)=>{var n;if(t===Ze&&r[Ye])return e;if("context"===t&&"Alova"===(null===(n=null==e?void 0:e.constructor)||void 0===n?void 0:n.name))return o;const a=null==e?void 0:e[_e];let s=Xe(e,c);if("[object Object]"===i.prototype.toString.call(s)?(e={...e},s={}):A(e)&&(e=[...e],s=[]),a){const t={[Ye]:a,[Ze]:s,...e};if(_(e,l))for(let r=0;r<q(e);r++)null==t||delete t[r];e=t}return e}))),tt=tt||Oe(Ce),r.set(e,tt.serialize(t))},at=e=>{const t=et().get(e);return tt=tt||Oe(Ce),J(t)?Y(tt.deserialize(t),(e=>{if(J(e)&&(null==e?void 0:e[Ye])){const t=e[Ye],r=Ue(e[Ze],t);w(D(e),(t=>{k([Ye,Ze],t)||(r[t]=e[t])})),e=r}return e}),c):t},st=e=>{et().remove(e)},ct=e=>{ot(nt+e.id,e)},it=(e,t,r)=>{const n=at(rt)||{},o=n[e]||[],a=o.findIndex((e=>e===t));a>=0&&(r?(T(o,a,1,r.id),ct(r)):T(o,a,1),st(nt+t),q(o)<=0&&delete n[e],q(D(n))>0?ot(rt,n):st(rt))};let ut={};const lt=(e,t)=>{const r=e=>{const r=Ke(e);return r in t?t[r]:U(e)?e.replace(Z(f,Be.source,"g"),(e=>e in t?t[e]:e)):e};return J(e)&&!Ke(e,c)?Y(e,r):e=r(e),e},dt=(e,t)=>{let r={};const n=Ke(e,c);if(n&&(r[n]=t),J(e))for(const n in e)r={...r,...dt(e[n],null==t?void 0:t[n])};return r},ft=(e,t)=>{t?e.active=t:delete e.active},ht=1e3,mt=(e,r)=>{const n=t=>{const r=e[0];if(r){const n=Pe.find((({queue:e})=>_(e,f)?j(e,t):e===t)),o=()=>e[0]&&a(e[0]),s=(null==n?void 0:n.wait)?ee(n.wait,[r,t]):0;s&&s>0?L(o,s):o()}},a=(i,u=0)=>{ft(i,s);const{cache:l,id:d,behavior:f,entity:h,retryError:m=/.*/,maxRetryTimes:v=0,backoff:g={delay:ht},resolveHandler:y=$,rejectHandler:b=$,fallbackHandlers:E=[],retryHandlers:R=[],handlerArgs:M=[],virtualResponse:k,force:A}=i;V(Le,Me(0,h,f,i,r,u)),S(h.send(A),(a=>{if(C(e),l&&it(r,d),y(a),f===p){const n=dt(k,a),{targetRefMethod:s,updateStates:c}=i;if(_(s,t.Method)&&c&&q(c)>0){const e={};w(c,(t=>{e[t]=e=>lt(e,n)}));t.updateState(s,e)||t.setCache(s,(e=>lt(e,n)))}((e,t)=>{w(t,(t=>{lt(t.entity,e),t.cache&&ct(t)}))})(n,e),V(Fe,Me(1,h,f,i,r,u,o,o,a,n))}ft(i,c),n(r)}),(t=>{if(f!==p)C(e),b(t);else{const e=e=>V(je,Me(2,h,f,i,r,u,e,o,o,o,t)),{name:n="",message:s=""}=t||{};let c,l;_(m,RegExp)?l=m:J(m)&&(c=m.name,l=m.message);const d=c&&j(c,n)||l&&j(l,s);if(u<v&&d){const t=se(g,u+1);e(t),L((()=>{a(i,++u),V(R,Me(8,h,f,i,o,u,t,M))}),t)}else xe(2),e(),V(E,Me(6,h,f,i,o,o,o,M,o,o,t)),V(Qe,Me(3,h,f,i,r,u,o,o,o,o,t))}ft(i,c)}))};n(r)},vt=(e,t,r=v,n=$)=>{e.cache=t;const o=ut[r]=ut[r]||[],a=q(o)<=0,s=n()!==c;return s&&(t&&((e,t)=>{ct(e);const r=at(rt)||{},n=r[t]=r[t]||[];E(n,e.id),ot(rt,r)})(e,r),E(o,e),a&&1===Te&&mt(o,r)),s},pt=e=>{let t=o,r="",n=0;for(const o in ut)if(n=ut[o].indexOf(e),n>=0){t=ut[o],r=o;break}return[t,r,n]};class gt{constructor(e,t,r=H(),n,o,a,s,c,i,u,l,d,f){const h=this;h.entity=e,h.behavior=t,h.id=r,h.force=!!n,h.retryError=o,h.maxRetryTimes=a,h.backoff=s,h.fallbackHandlers=c,h.resolveHandler=i,h.rejectHandler=u,h.handlerArgs=l,h.vDatas=d,h.retryHandlers=f}save(){this.cache&&ct(this)}replace(e){const t=this;He(e.cache===t.cache,"the cache of new silentMethod must equal with this silentMethod");const[r,n,o]=pt(t);r&&(T(r,o,1,e),t.cache&&it(n,t.id,e))}remove(){const e=this,[t,r,n]=pt(e);t&&(T(t,n,1),e.cache&&it(r,e.id))}setUpdateState(e,r="data"){const n=_(e,t.Method)?e:t.matchSnapshotMethod(e,c);n&&(this.targetRefMethod=n,this.updateStates=A(r)?r:[r])}}let yt=o;function St(e,r={}){const{middleware:a=$}=r,{c:i,m:u,b:l}=((e,t)=>{const{behavior:r="queue",queue:a,retryError:i,maxRetryTimes:u,backoff:l}=t||{},d=[],f=[],h=[],m=[];let v;return{c:(...t)=>(He(I(e),"method handler must be a function. eg. useSQRequest(() => method)"),qe({}),v=t,e(...t)),m:({method:e,sendArgs:t,cachedResponse:g,update:b,decorateSuccess:w,decorateError:E,decorateComplete:R,config:M},k)=>{const{silentDefaultResponse:A,vDataCaptured:C,force:T=c}=M,P=ee(r,t),L=ee(a,t),F=ee(T,t);let Q;w(((t,r,n,a)=>{0===n&&(yt=Q),t(Me(5,e,P,Q,o,o,o,r.sendArgs,r.data)),n===a-1&&(yt=o)})),E(((t,r)=>{t(Me(6,e,P,Q,o,o,o,r.sendArgs,o,o,r.error))})),R(((t,r)=>{t(Me(7,e,P,Q,o,o,o,r.sendArgs,r.data,o,r.error,r.status))}));const H=()=>{qe(v=o)};if(I(C)){let t=ke&&q(D(ke))>0;if(!t){const{url:r,data:n}=e,{params:o,headers:a}=x(e);Y({url:r,params:o,data:n,headers:a},(e=>(t||!Ke(e,c)&&!j(Be,e)||(t=s),e)))}const r=t?C(e):o;if(r!==o)return H(),y(r)}if("static"!==P){const r=()=>{const r=Z(n,((t,r)=>{Q=Z(gt,e,P,o,!!F,i,u,l,d,t,r,v,ke&&D(ke),m),H()}));return S(y(),(()=>{const r=()=>Me(4,e,P,Q,o,o,o,t);vt(Q,q(d)<=0&&P===p,L,(()=>V(f,r())))&&V(h,r())})),r};if("queue"===P){const e=ee(T,t)||!g;return e&&b({loading:s}),e?r():S(y(g))}const a=r(),c=Q.virtualResponse=Ue(I(A)?A():o);return S(a,(e=>{b({data:e})})),y(c)}return H(),k()},b:{onFallback:e=>{E(d,e)},onBeforePushQueue:e=>{E(f,e)},onPushedQueue:e=>{E(h,e)},onRetry:e=>{E(m,e)}}}})(e,r);return{...t.useRequest(i,{...r,middleware:(e,t)=>(a(e,(()=>y(o))),u(e,t))}),...l}}const bt=(e,r,n,o)=>{let a=s;const{enableFocus:i=s,enableVisibility:u=s,enableNetwork:l=s,pollingTime:d=0,throttle:f=1e3}=r,h=t.useRequest(e,r),m=()=>{a&&(h.send(),f>0&&(a=c,setTimeout((()=>a=s),f)))};let v=$,p=$,y=$,S=$;return n((()=>{g||(v=l?bt.onNetwork(m,r):v,p=i?bt.onFocus(m,r):p,y=u?bt.onVisibility(m,r):y,S=d>0?bt.onPolling(m,r):S)})),o((()=>{v(),p(),y(),S()})),h},wt=(e,t)=>(window.addEventListener(e,t),()=>window.removeEventListener(e,t));bt.onNetwork=e=>wt("online",e),bt.onFocus=e=>wt("focus",e),bt.onVisibility=e=>wt("visibilitychange",(()=>"visible"===document.visibilityState&&e())),bt.onPolling=(e,t)=>{const r=setInterval(e,t.pollingTime);return()=>clearInterval(r)};const Et="useCaptcha",Rt=B(Et);const Mt={},kt=e=>{const t=e=>A(e)?[...e]:X(e)?{...e}:e;return Y(t(e),t)},qt=B("useForm");var At=(e,r,n,a,i,u,l,d,f,h,m)=>{if(re(e)||U(e)){const t=e,r=Mt[t];return qt(!!r,`the form data of id \`${t}\` is not initial`),r.hookReturns}const{id:v,initialForm:p,store:g,resetAfterSubmiting:y,immediate:S=c,middleware:b}=r,w=n(kt(p),s),R=e,M=[],k=a((()=>ee(R,[i(w)])),[]),q=J(g),A=q?g.enable:g,C=P(i(k)).storage,T=h(((e,r)=>`alova/form-${r||t.getMethodKey(e)}`)(i(k),v)),x=h(c),D=h(Oe(q?g.serializers:o)),L=h(!1),F=v?Mt[v]:o,j=m((()=>{x.current=s,l(w,kt(p)),A&&C.remove(T.current)})),Q=m((e=>{l(w,{...i(w),...e})}));let H={form:u(w),...t.useRequest(((...e)=>R(i(w),...e)),{...r,middleware:b?(e,t)=>b({...e,delegatingActions:{updateForm:Q,reset:j}},t):o,immediate:A||F?c:S}),onRestore(e){E(M,e)},updateForm:Q,reset:j};v&&(F||(L.current=s),L.current&&(Mt[v]={hookReturns:H,config:r}));const{send:$,onSuccess:z}=H;return f((()=>{if(A&&!F){const e=D.current.deserialize(C.get(T.current));e&&(l(w,e),V(M),A&&S&&$())}})),d([w],(()=>{!x.current&&A?C.set(T.current,D.current.serialize(i(w))):x.current=c})),z((()=>{y&&j()})),F&&!L.current?F.hookReturns:H};const Ct="useRetriableRequest",Tt=B(Ct);var xt=(e,r,a,i)=>{const{retry:u=3,backoff:l={delay:1e3},middleware:d=$}=r,f=[],h=[],m=a(0),v=a(o),p=a(o),g=a(o),w=a(c),R=a(c),M=a(o),k=(e,t,r)=>{L((()=>{V(h,Me(10,e,o,o,o,m.current,o,t,o,o,r)),v.current=o,m.current=0}))},q=i((()=>{Tt(w.current,"there are no requests being retried"),v.current=new Error(N(Ct,"stop retry manually")),R.current?A.abort():(k(p.current,g.current,v.current),A.update({error:v.current,loading:c}),w.current=c,F(M.current))})),A=t.useRequest(e,{...r,middleware(e,t){d({...e,delegatingActions:{stop:q}},(()=>y(o)));const{update:r,sendArgs:a,send:i,method:h,controlLoading:E}=e,A=(e=c)=>{e!==w.current&&(r({loading:e}),w.current=e)};return E(),A(s),p.current=h,g.current=a,R.current=s,S(t(),(e=>(m.current=0,R.current=c,A(),e)),(e=>{if(!v.current&&(re(u)?m.current<u:u(e,...a))){const e=se(l,++m.current);M.current=L((()=>{b(i(...a),$),V(f,Me(9,h,o,o,o,m.current,e,a))}),e)}else A(),e=v.current||e,k(h,a,e);return R.current=c,t=e,n.reject(t);var t}))}});return{...A,stop:q,onRetry:e=>{E(f,e)},onFail:e=>{E(h,e)}}};const Pt=B("useSSE"),Dt="open",Lt="error",Ft="message";var jt=(e,r={},n,a,i,u,l,d,f,h,m,v)=>{const{initialData:p,withCredentials:g,interceptByGlobalResponded:y=s,immediate:b=c}=r,w=s;let E=m(o),k=m(o);const q=n(p,s),A=n(2,s);let C,T=ce(e);const L=new Map,[F,j,Q]=ie(),[H,N,B]=ie(),[G,K,V]=ie();let W=z,U=O,J=$;const Y=e=>{const{responsed:t,responded:r}=(e=>P(e).options)(e);if(C=r||t,I(C))W=C;else if(C&&X(C)){const{onSuccess:e,onError:t,onComplete:r}=C;W=I(e)?e:W,U=I(t)?t:U,J=I(r)?r:J}},Z=async e=>{const{headers:r,name:n,transformData:o=z}=x(T),a=(e=>e.__key__)(T),s=await e,c=await o(s,r||{});l(q,c);const i=t.matchSnapshotMethod({filter:e=>(e.hitSource||[]).some((e=>_(e,RegExp)?e.test(n):e===n||e===a))});return i.length>0&&t.invalidateCache(i),c},ee=async(e,t)=>{Pt(!!E.current,"EventSource is not initialized");const r=E.current,n=(e,t,n)=>{const a=Me(e,T,o,o,o,o,o,o,t,o,n);return a.eventSource=r,a};if(e===Dt)return Promise.resolve(n(11));const a=y?W:z,s=y?U:O,c=y?J:$,i=(u=S(t,(e=>Z(a(e,T))),(e=>Z(s(e,T)))),l=()=>{c(T)},u.finally(l));var u,l;return S(i,(e=>n(12,e)),(e=>n(13,o,e)))},te=e=>t=>t.error===o?e(t):K(t),re=v(((e,t)=>{var r;if(!L.has(e)){const t=ie((r=>{var n;0===r.length&&(null===(n=E.current)||void 0===n||n.removeEventListener(e,t[1]),L.delete(e))})),n=t[1];L.set(e,t),null===(r=E.current)||void 0===r||r.addEventListener(e,(t=>{S(ee(e,Promise.resolve(t.data)),te(n))}))}const[n]=L.get(e);return n(t)})),ne=()=>{var e;l(A,1),S(ee(Dt,Promise.resolve()),j),null===(e=k.current)||void 0===e||e.resolve()},oe=e=>{var t;l(A,2),S(ee(Lt,Promise.reject(null!==(t=null==e?void 0:e.message)&&void 0!==t?t:"SSE Error")),te(N))},ae=e=>{S(ee(Ft,Promise.resolve(e.data)),te(N))},se=v((()=>{const e=E.current;e&&(k.current&&k.current.resolve(),e.close(),e.removeEventListener(Dt,ne),e.removeEventListener(Lt,oe),e.removeEventListener(Ft,ae),l(A,2),L.forEach((([t,r],n)=>{e.removeEventListener(n,r)})))})),ue=v(((...t)=>{let r=E.current,n=k.current;r&&w&&se(),n||(n=k.current=function(){let e,t;return{promise:new Promise(((r,n)=>{e=r,t=n})),resolve:e,reject:t}}(),n.promise.finally((()=>{n=o}))),T=ce(e,t),Y(T);const{params:a}=x(T),{baseURL:s,url:c}=T,i=((e,t,r)=>{const n=(e=e.endsWith("/")?e.slice(0,-1):e)+(t=t.match(/^(\/|https?:\/\/)/)?t:`/${t}`),a=M(R(D(r),(e=>r[e]!==o)),(e=>`${e}=${r[e]}`)).join("&");return a?+n.includes("?")?`${n}&${a}`:`${n}?${a}`:n})(s,c,a);return r=new EventSource(i,{withCredentials:g}),E.current=r,l(A,0),r.addEventListener(Dt,ne),r.addEventListener(Lt,oe),r.addEventListener(Ft,ae),L.forEach((([e,t],n)=>{null==r||r.addEventListener(n,(e=>{S(ee(n,Promise.resolve(e.data)),te(t))}))})),n.promise}));return h((()=>{se(),Q(),B(),V(),L.forEach((([e,t,r])=>{r()}))})),f((()=>{b&&ue()})),{readyState:u(A),data:u(q),eventSource:u(E),send:ue,close:se,onMessage:H,onError:G,onOpen:F,on:re}};const Qt={},Ht=B("subscriber"),$t={authRole:null},zt={authRole:"login"},Ot={authRole:"logout"},_t={authRole:"refreshToken"},Nt=({meta:e},t)=>{if(X(e))for(const r in e){const n=t[r];if(_(n,RegExp)?n.test(e[r]):e[r]===n)return s}return c},Bt=(e,t)=>Z(n,(r=>{E(t,{method:e,resolve:r})})),Gt=(e,t,r,n)=>{if(Nt(e,(null==t?void 0:t.metaMatches)||r)){return(I(t)?t:X(t)&&I(t.handler)?t.handler:$)(n,e)}},Kt=async(e,t,r,a,i,u)=>{const l=q(a)>=2;let d=null==i?void 0:i.isExpired(...a);if(_(d,n)&&(d=await d),d)try{let n=s;if(l&&u&&(n=c,await Bt(e,t)),n&&(r(s),await(null==i?void 0:i.handler(...a)),r(c),w(t,(({resolve:e})=>e()))),l){const t=e.config,r=t.transformData;t.transformData=o;const n=await e;return t.transformData=r,n}}finally{r(c),T(t,0,q(t))}},Vt=e=>{let t=o,r=o,n=o;if(I(e))t=e;else if(X(e)){const{onSuccess:o,onError:a,onComplete:s}=e;t=I(o)?o:t,r=I(a)?a:r,n=I(s)?s:n}return{onSuccess:t,onError:r,onComplete:n}},Wt=(e,t)=>B(e)(A(t)&&q(t)>0,"please use an array to represent serial requests"),It=(e,t)=>(C(e),(r,n)=>{null==t||t(r,(()=>y(o))),r.controlLoading(),r.update({loading:s});const a=[];let i=n();for(const t in e)i=S(i,(n=>{const o=e[t](n,...r.sendArgs);return E(a,o),o.send()}));return r.decorateError(((e,t)=>{t.method=a[q(a)-1],e(t)})),i.finally((()=>{r.update({loading:c})}))});var Ut=()=>{const e=at(rt)||{},r={};return w(D(e),(n=>{const o=r[n]=r[n]||[];w(e[n],(e=>{const r=at(nt+e);r&&E(o,(e=>{const{id:r,behavior:n,entity:o,retryError:a,maxRetryTimes:c,backoff:i,fallbackHandlers:u,resolveHandler:l,rejectHandler:d,handlerArgs:f,targetRefMethod:h,force:m}=e,v=e=>{const{type:r,url:n,config:o,data:a}=e;return Z(t.Method,r,Ae,n,o,a)},p=Z(gt,v(o),n,r,m,a,c,i,u,l,d,f);return p.cache=s,h&&(p.targetRefMethod=v(h)),w(D(e),(t=>{k(["id","behavior","entity","retryError","maxRetryTimes","backoff","fallbackHandlers","resolveHandler","rejectHandler","handlerArgs","targetRefMethod","force"],t)||(p[t]=e[t])})),p})(r))}))})),r};const Jt=(e,t)=>()=>{const r=t.indexOf(e);r>=0&&T(t,r,1)};const Xt=(e,t=v,r=c)=>{const n=(t=[])=>t.filter((t=>{if(e===o)return s;const n=x(t.entity).name||"";return(_(e,RegExp)?j(e,n):n===e)&&(r?t.active:s)}));return[...n(ut[t]),...0===Te?n(Ut()[t]):[]]};function Yt(){}const Zt=(e,t={})=>bt(e,t,pe,ge);w(D(bt),(e=>{K(Zt,e,{get:()=>bt[e],set:t=>bt[e]=t},s)}));e.accessAction=(e,t)=>{const r=[];"symbol"==typeof e||U(e)||re(e)?(Ht(!!Qt[e],`no handler which id is \`${e.toString()}\` is matched`),E(r,...Qt[e])):_(e,RegExp)&&w(R(D(Qt),(t=>e.test(t))),(e=>{E(r,...Qt[e])})),w(r,t)},e.actionDelegationMiddleware=e=>((e,t)=>{const r=t(c);return(t,n)=>{if(!r.current){const{abort:n,update:o,delegatingActions:a={}}=t;(Qt[e]=Qt[e]||[]).push((e=>!!e.send)(t)?{...a,send:t.send,abort:n,update:o}:{...a,fetch:t.fetch,abort:n,update:o}),r.current=s}return n()}})(e,ye),e.bootSilentFactory=e=>{var t;if(0===Te){const{alova:r}=e;Ae=r,((e={})=>{Ce=e})(e.serializers),((e=0)=>{Pe=A(e)?e:[{queue:v,wait:e}]})(e.requestWait),L((()=>{var e;e=Ut(),w(D(e),(t=>{const r=ut[t]=ut[t]||[];E(r,...e[t])})),w(D(ut),(e=>{mt(ut[e],e)})),xe(1),V(De)}),null!==(t=e.delay)&&void 0!==t?t:500)}},e.createClientTokenAuthentication=({visitorMeta:e,login:t,logout:r,refreshToken:n,assignToken:o=$})=>{let a=c,s=[];return{waitingList:s,onAuthRequired:r=>async c=>{const i=Nt(c,e||$t),u=Nt(c,(null==t?void 0:t.metaMatches)||zt);return i||u||Nt(c,(null==n?void 0:n.metaMatches)||_t)||(a&&await Bt(c,s),await Kt(c,s,(e=>a=e),[c],n)),i||u||await o(c),null==r?void 0:r(c)},onResponseRefreshToken:e=>{const n=Vt(e);return{...n,onSuccess:async(e,o)=>(await Gt(o,t,zt,e),await Gt(o,r,Ot,e),(n.onSuccess||z)(e,o))}}}},e.createServerTokenAuthentication=({visitorMeta:e,login:t,logout:r,refreshTokenOnSuccess:n,refreshTokenOnError:o,assignToken:a=$})=>{let s=c,i=[];return{waitingList:i,onAuthRequired:r=>async c=>{const u=Nt(c,e||$t),l=Nt(c,(null==t?void 0:t.metaMatches)||zt);return u||l||Nt(c,(null==n?void 0:n.metaMatches)||_t)||Nt(c,(null==o?void 0:o.metaMatches)||_t)||s&&await Bt(c,i),u||l||await a(c),null==r?void 0:r(c)},onResponseRefreshToken:a=>{const c=Vt(a);return{...c,onSuccess:async(o,a)=>{if(!Nt(a,e||$t)&&!Nt(a,(null==t?void 0:t.metaMatches)||zt)&&!Nt(a,(null==n?void 0:n.metaMatches)||_t)){const e=await Kt(a,i,(e=>s=e),[o,a],n,s);if(e)return e}return await Gt(a,t,zt,o),await Gt(a,r,Ot,o),(c.onSuccess||z)(o,a)},onError:async(r,n)=>{if(!Nt(n,e||$t)&&!Nt(n,(null==t?void 0:t.metaMatches)||zt)&&!Nt(n,(null==o?void 0:o.metaMatches)||_t)){const e=await Kt(n,i,(e=>s=e),[r,n],o,s);if(e)return e}return(c.onError||$)(r,n)}}}}},e.dehydrateVData=e=>Xe(e),e.equals=(e,t)=>e===t?s:Ke(e)===Ke(t),e.filterSilentMethods=Xt,e.getSilentMethod=(e,t=v,r=c)=>Xt(e,t,r)[0],e.isVData=e=>!!Ke(e,c)||j(Be,e),e.onBeforeSilentSubmit=e=>(E(Le,e),Jt(e,Le)),e.onSilentSubmitBoot=e=>(E(De,e),Jt(e,De)),e.onSilentSubmitError=e=>(E(je,e),Jt(e,je)),e.onSilentSubmitFail=e=>(E(Qe,e),Jt(e,Qe)),e.onSilentSubmitSuccess=e=>(E(Fe,e),Jt(e,Fe)),e.silentQueueMap=ut,e.stringifyVData=Ke,e.updateStateEffect=(e,r,n={})=>{const a=n.onMatch;return n.onMatch=e=>{yt&&(yt.setUpdateState(e,I(t.updateState)?o:D(t.updateState)),yt.save()),(a||Yt)(e)},t.updateState(e,r,n)},e.useAutoRequest=Zt,e.useCaptcha=(e,r={})=>((e,r,a,i,u,l,d,f)=>{const{initialCountdown:h,middleware:m}=r;Rt(h===o||h>0,"initialCountdown must be greater than 0");const v=a(0,s),p=t.useRequest(e,{...r,immediate:c,middleware:m?(e,t)=>m({...e,send:y},t):o}),g=d(o),y=f(((...e)=>Z(n,((t,n)=>{u(v)<=0?p.send(...e).then((e=>{i(v,r.initialCountdown||60),g.current=setInterval((()=>{i(v,(e=>e-1)),u(v)<=0&&clearInterval(g.current)}),1e3),t(e)})).catch((e=>n(e))):n(new Error(N(Et,"the countdown is not over yet")))}))));return{...p,send:y,countdown:l(v)}})(e,r,ue,me,de,fe,ye,be),e.useForm=(e,t={})=>At(e,t,ue,le,de,fe,me,ve,pe,ye,be),e.usePagination=(e,t={})=>Re(e,t,ue,le,me,de,fe,he,ve,ye,Se,be),e.useRetriableRequest=(e,t={})=>xt(e,t,ye,be),e.useSQRequest=(e,t={})=>St(e,t),e.useSSE=(e,t={})=>jt(e,t,ue,0,0,fe,me,0,pe,ge,ye,be),e.useSerialRequest=(e,r={})=>(Wt("useSerialRequest",e),t.useRequest(e[0],{...r,middleware:It(e,r.middleware)})),e.useSerialWatcher=(e,r,n={})=>(Wt("useSerialWatcher",e),t.useWatcher(e[0],r,{...n,middleware:It(e,n.middleware)})),Object.defineProperty(e,"__esModule",{value:!0})}));