New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@better-typed/react-hyper-fetch

Package Overview
Dependencies
Maintainers
2
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@better-typed/react-hyper-fetch - npm Package Compare versions

Comparing version 1.4.0 to 1.5.0

dist/hooks/use-app-manager/index.d.ts

8

dist/config-provider/config-provider.types.d.ts
import React from "react";
import { CommandInstance } from "@better-typed/hyper-fetch";
import { UseFetchOptionsType } from "../use-fetch";
import { UseSubmitOptionsType } from "../use-submit";
import { UseCacheOptionsType } from "../use-cache";
import { UseQueueOptionsType } from "../use-queue";
import { UseFetchOptionsType } from "../hooks/use-fetch";
import { UseSubmitOptionsType } from "../hooks/use-submit";
import { UseCacheOptionsType } from "../hooks/use-cache";
import { UseQueueOptionsType } from "../hooks/use-queue";
export declare type ConfigProviderOptionsType = {

@@ -8,0 +8,0 @@ useFetchConfig?: Partial<UseFetchOptionsType<CommandInstance>>;

@@ -1,2 +0,2 @@

var We=Object.create;var ae=Object.defineProperty,ze=Object.defineProperties,He=Object.getOwnPropertyDescriptor,Xe=Object.getOwnPropertyDescriptors,Ye=Object.getOwnPropertyNames,Ie=Object.getOwnPropertySymbols,Ze=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty,_e=Object.prototype.propertyIsEnumerable;var we=(e,n,r)=>n in e?ae(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r,d=(e,n)=>{for(var r in n||(n={}))Me.call(n,r)&&we(e,r,n[r]);if(Ie)for(var r of Ie(n))_e.call(n,r)&&we(e,r,n[r]);return e},w=(e,n)=>ze(e,Xe(n));var Ve=(e,n)=>{for(var r in n)ae(e,r,{get:n[r],enumerable:!0})},Le=(e,n,r,y)=>{if(n&&typeof n=="object"||typeof n=="function")for(let f of Ye(n))!Me.call(e,f)&&f!==r&&ae(e,f,{get:()=>n[f],enumerable:!(y=He(n,f))||y.enumerable});return e};var et=(e,n,r)=>(r=e!=null?We(Ze(e)):{},Le(n||!e||!e.__esModule?ae(r,"default",{value:e,enumerable:!0}):r,e)),tt=e=>Le(ae({},"__esModule",{value:!0}),e);var ue=(e,n,r)=>new Promise((y,f)=>{var m=o=>{try{i(r.next(o))}catch(g){f(g)}},T=o=>{try{i(r.throw(o))}catch(g){f(g)}},i=o=>o.done?y(o.value):Promise.resolve(o.value).then(m,T);i((r=r.apply(e,n)).next())});var ct={};Ve(ct,{getDetailsState:()=>z,getInitialState:()=>Te,getRefreshTime:()=>qe,getTimestamp:()=>Qe,getValidCacheData:()=>Ke,initialState:()=>W,isEmpty:()=>Ue,isEqual:()=>ce,isStaleCacheData:()=>fe,useAppManager:()=>ut,useCache:()=>at,useCacheDefaultOptions:()=>he,useCommandEvents:()=>Z,useFetch:()=>rt,useFetchDefaultOptions:()=>D,useQueue:()=>st,useQueueDefaultOptions:()=>Ce,useSubmit:()=>ot,useSubmitDefaultOptions:()=>ge,useTrackedState:()=>_});module.exports=tt(ct);var Ae=require("react"),re=require("@better-typed/react-lifecycle-hooks"),pe=require("@better-typed/react-performance-hooks"),le=require("@better-typed/hyper-fetch");var B=require("react"),Be=require("@better-typed/react-lifecycle-hooks"),Z=({command:e,dispatcher:n,logger:r,actions:y,setCacheData:f})=>{let{cache:m,commandManager:T}=e.builder,i=(0,B.useRef)(null),o=(0,B.useRef)(null),g=(0,B.useRef)(null),C=(0,B.useRef)(null),R=(0,B.useRef)(null),E=(0,B.useRef)(null),a=(0,B.useRef)(null),b=(0,B.useRef)(null),v=(0,B.useRef)(null),h=(0,B.useRef)(new Map),U=(0,B.useRef)(null),q=t=>{let u=h.current.get(t);u==null||u.unmount(),h.current.delete(t)},O=()=>{let t=h.current;Array.from(t.values()).forEach(c=>{c.unmount()}),t.clear()},x=(t,u,c)=>{var Q,G,Y,N,ee;let{isOffline:F,isFailed:$,isCanceled:L}=c;e.offline&&F&&$?(r.debug("Performing offline error callback",{data:u,details:c}),(Q=C.current)==null||Q.call(C,{response:u[1],command:t,details:c})):L?(r.debug("Performing abort callback",{data:u,details:c}),(G=g.current)==null||G.call(g,{response:u[1],command:t,details:c})):$?(r.debug("Performing error callback",{data:u,details:c}),(N=o.current)==null||N.call(o,{response:u[1],command:t,details:c})):(r.debug("Performing success callback",{data:u,details:c}),(Y=i.current)==null||Y.call(i,{response:u[0],command:t,details:c})),(ee=R.current)==null||ee.call(R,{response:u,command:t,details:c})},s=t=>({isLoading:u})=>{let c=!u&&!n.hasRunningRequests(t);(u||c)&&y.setLoading(u,!1)},p=(t,u)=>{var c;(c=b.current)==null||c.call(b,t,u)},l=(t,u)=>{var c;(c=v.current)==null||c.call(v,t,u)},S=t=>u=>{var c;(c=E.current)==null||c.call(E,{command:t,details:u})},P=t=>u=>{var c;(c=a.current)==null||c.call(a,{command:t,details:u})},k=t=>(u,c)=>{x(t,u,c)},j=({requestId:t})=>{q(t)},X=()=>{var t;(t=U.current)==null||t.unmount(),U.current=null},K=t=>{let u=T.events.onLoading(t.queueKey,s(t.queueKey)),c=m.events.onData(t.cacheKey,f),F=()=>{u(),c()};return X(),U.current={unmount:F},F},se=(t,u)=>{if(!u){let{queueKey:N,cacheKey:ee}=t,A=T.events.onRequestStart(N,S(t)),J=T.events.onResponseStart(N,P(t)),Re=T.events.onUploadProgress(N,l),xe=T.events.onDownloadProgress(N,p),Se=T.events.onResponse(ee,k(t)),Ee=()=>{xe(),Re(),A(),J(),Se()};return h.current.set(N,{unmount:Ee}),Ee}let c=T.events.onRemoveById(u,j),F=T.events.onRequestStartById(u,S(t)),$=T.events.onResponseStartById(u,P(t)),L=T.events.onResponseById(u,k(t)),Q=T.events.onUploadProgressById(u,l),G=T.events.onDownloadProgressById(u,p),Y=()=>{c(),G(),Q(),F(),$(),L()};return h.current.set(u,{unmount:Y}),Y},M=()=>{let{abortKey:t}=e;n.getAllRunningRequest().forEach(c=>{c.command.abortKey===t&&n.delete(c.command.queueKey,c.requestId,t)})};return(0,Be.useWillUnmount)(()=>{O(),X()}),[{abort:M,onSuccess:t=>{i.current=t},onError:t=>{o.current=t},onAbort:t=>{g.current=t},onOfflineError:t=>{C.current=t},onFinished:t=>{R.current=t},onRequestStart:t=>{E.current=t},onResponseStart:t=>{a.current=t},onDownloadProgress:t=>{b.current=t},onUploadProgress:t=>{v.current=t}},{addDataListener:K,clearDataListener:X,addLifecycleListeners:se,removeLifecycleListener:q,clearLifecycleListeners:O}]};var W={data:null,error:null,loading:!1,status:null,retries:0,timestamp:null};var ke=require("react"),ie=require("@better-typed/react-lifecycle-hooks");var Ue=e=>{let n=Object.prototype.toString.call(e);return Array.isArray(e)?!e.length:typeof e=="object"&&e!==null&&n==="[object Object]"?!Object.keys(e).length:!1},ce=(e,n)=>{let r=Object.prototype.toString.call(e),y=Object.prototype.toString.call(n),f=typeof e,m=typeof n,T=o=>f===o&&m===o,i=o=>r===o&&y===o;return r!==y?!1:e===null&&n===null||T("number")&&Number.isNaN(e)&&Number.isNaN(n)||Ue(e)&&Ue(n)?!0:Array.isArray(e)&&Array.isArray(n)?e.length!==n.length?!1:!e.some((o,g)=>!ce(o,n[g])):T("object")&&i("[object Object]")?Object.keys(e).length!==Object.keys(n).length?!1:!Object.entries(e).some(([o,g])=>!ce(g,n[o])):e instanceof Date&&n instanceof Date?+e==+n:e===n};var de=e=>w(d({},e),{throttle:void 0,debounce:void 0});var z=(e,n)=>d({retries:(e==null?void 0:e.retries)||0,timestamp:+new Date,isFailed:!1,isCanceled:!1,isOffline:!1},n),fe=(e,n)=>n?+new Date>+n+e:!0,Ke=(e,n,r)=>!fe(e.cacheTime,r==null?void 0:r.details.timestamp)&&r?r:n?{data:n,details:z(),cacheTime:1e3,clearKey:e.builder.cache.clearKey}:null,Qe=e=>e?new Date(e):null,Te=(e,n,r)=>{var g,C,R;let{builder:y,cacheKey:f}=r,{cache:m}=y,T=m.get(f),i=Ke(r,e,T),o=n.hasRunningRequests(r.queueKey);return w(d({},W),{data:((g=i==null?void 0:i.data)==null?void 0:g[0])||W.data,error:((C=i==null?void 0:i.data)==null?void 0:C[1])||W.error,status:((R=i==null?void 0:i.data)==null?void 0:R[2])||W.status,retries:(i==null?void 0:i.details.retries)||W.retries,timestamp:Qe((i==null?void 0:i.details.timestamp)||W.timestamp),loading:o})};var _=({command:e,dispatcher:n,initialData:r,deepCompare:y,dependencyTracking:f,defaultCacheEmitting:m=!0})=>{let{builder:T,cacheKey:i,queueKey:o,cacheTime:g}=e,{cache:C,commandManager:R}=T,E=(0,ie.useForceUpdate)(),a=(0,ke.useRef)(Te(r,n,e)),b=(0,ke.useRef)([]),v=()=>{let s=C.get(i);return fe(g,(s==null?void 0:s.details.timestamp)||a.current.timestamp)},h=s=>{b.current.some(l=>s.includes(l))&&E()},U=s=>{b.current.includes(s)||b.current.push(s)};(0,ie.useDidUpdate)(()=>{a.current.loading=n.hasRunningRequests(o);let s=Te(r,n,e),p=(r==null?void 0:r[0])===a.current.data,l=!!(a.current.data||a.current.error)&&!p,S=!l&&a.current.data,P=l&&!a.current.data;(S||P)&&(a.current=s)},[i,o],!0),(0,ie.useDidUpdate)(()=>{(()=>{f||Object.keys(a.current).forEach(p=>U(p))})()},[f],!0);let q=(s,p)=>typeof y=="function"?y(s,p):y?ce(s,p):!1,O=s=>ue(void 0,null,function*(){let p={data:s.data[0],error:s.data[1],status:s.data[2],retries:s.details.retries,timestamp:new Date(s.details.timestamp),loading:a.current.loading},l=Object.keys(p).filter(S=>{let P=S,k=a.current[P],j=p[P];return!q(k,j)});a.current=d(d({},a.current),p),h(l)}),x={setData:(s,p=m)=>{if(p){let l=a.current;C.set(e,[s,l.error,l.status],z(a.current))}else a.current.data=s,h(["data"])},setError:(s,p=m)=>{if(p){let l=a.current;C.set(e,[l.data,s,l.status],z(a.current,{isFailed:!!s}))}else a.current.error=s,h(["error"])},setLoading:(s,p=!0)=>{p?R.events.emitLoading(o,"",{queueKey:o,requestId:"",isLoading:s,isRetry:!1,isOffline:!1}):(a.current.loading=s,h(["loading"]))},setStatus:(s,p=m)=>{if(p){let l=a.current;C.set(e,[l.data,l.error,s],z(a.current))}else a.current.status=s,h(["status"])},setRetries:(s,p=m)=>{if(p){let l=a.current;C.set(e,[l.data,l.error,l.status],z(a.current,{retries:s}))}else a.current.retries=s,h(["retries"])},setTimestamp:(s,p=m)=>{if(p){let l=a.current;C.set(e,[l.data,l.error,l.status],z(a.current,{timestamp:+s}))}else a.current.timestamp=s,h(["timestamp"])}};return[a.current,x,{setRenderKey:U,setCacheData:O,getStaleStatus:v}]};var ne=et(require("react")),nt=ne.default.createContext([{},()=>null]);var H=()=>(0,ne.useContext)(nt);var rt=(e,n=D)=>{let[r]=H(),{dependencies:y=D.dependencies,disabled:f=D.disabled,dependencyTracking:m=D.dependencyTracking,revalidateOnMount:T=D.revalidateOnMount,initialData:i=D.initialData,refresh:o=D.refresh,refreshTime:g=D.refreshTime,refreshBlurred:C=D.refreshBlurred,refreshOnBlur:R=D.refreshOnBlur,refreshOnFocus:E=D.refreshOnFocus,refreshOnReconnect:a=D.refreshOnReconnect,bounce:b=D.bounce,bounceType:v=D.bounceType,bounceTime:h=D.bounceTime,deepCompare:U=D.deepCompare}=d(d(d({},D),r.useFetchConfig),n),q=JSON.stringify(e.dump()),O=(0,pe.useDebounce)(h),x=(0,pe.useThrottle)(h),s=(0,pe.useDebounce)(g),{cacheKey:p,queueKey:l,builder:S}=e,{cache:P,fetchDispatcher:k,appManager:j,loggerManager:X}=S,K=(0,Ae.useRef)(X.init("useFetch")).current,se=v==="throttle"?x:O,M=v==="throttle"?x.throttle:O.debounce,[t,u,{setRenderKey:c,setCacheData:F,getStaleStatus:$}]=_({logger:K,command:e,dispatcher:k,initialData:i,deepCompare:U,dependencyTracking:m}),[L,Q]=Z({logger:K,actions:u,command:e,dispatcher:k,setCacheData:F}),{addDataListener:G,addLifecycleListeners:Y,clearDataListener:N,clearLifecycleListeners:ee}=Q,A=()=>{f?K.debug("Cannot add to fetch queue",{disabled:f}):(K.debug("Fetching data"),k.add(e))};function J(){if(!o)return;let I=qe(g,t.timestamp);K.debug(`Starting refresh counter, request will be send in ${I}ms`),s.debounce(()=>{let te=!j.isFocused,Oe=k.hasRunningRequests(e.queueKey),De=k.getIsActiveQueue(e.queueKey),ve=Oe||De;(te&&C&&!ve||!te&&!ve)&&(A(),K.debug("Performing refresh request")),J()},I)}let Re=I=>{I&&I instanceof le.Command?P.revalidate((0,le.getCommandKey)(I)):I&&!(I instanceof le.Command)?P.revalidate(I):(A(),J())},xe=()=>{let I=$(),te=k.getIsActiveQueue(l);(T||I&&!te)&&A()},Se=()=>{b?(K.debug(`Bounce request with ${v}`,{queueKey:l,command:e}),M(()=>A())):A()};return(0,re.useDidUpdate)(()=>{G(e),Y(e);let I=j.events.onFocus(()=>{E&&(A(),J())}),te=j.events.onBlur(()=>{R&&(A(),J())}),Oe=j.events.onOnline(()=>{a&&(A(),J())}),De=P.events.onRevalidate(p,A);return()=>{N(),ee(),I(),te(),Oe(),De()}},[q],!0),(0,re.useDidMount)(xe),(0,re.useDidUpdate)(Se,[q,...y]),(0,re.useDidUpdate)(J,[q,...y,f,o,g],!0),w(d(d({get data(){return c("data"),t.data},get error(){return c("error"),t.error},get loading(){return c("loading"),t.loading},get status(){return c("status"),t.status},get retries(){return c("retries"),t.retries},get timestamp(){return c("timestamp"),t.timestamp},bounce:de(se)},u),L),{revalidate:Re})};var qe=(e,n)=>{if(n){let r=Date.now()-+n;return r<e?e-r:e}return e};var je=require("@better-typed/hyper-fetch"),D={dependencies:[],disabled:!1,dependencyTracking:!0,revalidateOnMount:!0,initialData:null,refresh:!1,refreshTime:je.DateInterval.hour,refreshBlurred:!0,refreshOnBlur:!1,refreshOnFocus:!1,refreshOnReconnect:!1,bounce:!1,bounceType:"debounce",bounceTime:400,deepCompare:!0};var Pe=require("react"),V=require("@better-typed/hyper-fetch"),Ne=require("@better-typed/react-lifecycle-hooks"),ye=require("@better-typed/react-performance-hooks");var ot=(e,n=ge)=>{let[r]=H(),{disabled:y,dependencyTracking:f,initialData:m,bounce:T,bounceType:i,bounceTime:o,deepCompare:g}=d(d(d({},ge),r.useSubmitConfig),n),{builder:C}=e,{cache:R,submitDispatcher:E,loggerManager:a}=C,b=(0,Pe.useRef)(a.init("useSubmit")).current,v=(0,ye.useDebounce)(o),h=(0,ye.useThrottle)(o),U=(0,Pe.useRef)(()=>null),q=i==="throttle"?h:v,O=i==="throttle"?h.throttle:v.debounce,[x,s,{setRenderKey:p,setCacheData:l}]=_({logger:b,command:e,dispatcher:E,initialData:m,deepCompare:g,dependencyTracking:f}),[S,P]=Z({logger:b,actions:s,command:e,dispatcher:E,setCacheData:l}),{addDataListener:k,addLifecycleListeners:j}=P,X=(...M)=>{let t=M[0],u=e.clone(t);if(y)throw b.warning("Cannot submit request",{disabled:y,submitOptions:t}),new Error("Cannot submit request. Option 'disabled' is enabled");let c=()=>(k(u),(0,V.commandSendRequest)(u,w(d({dispatcherType:"submit"},t),{onSettle:(F,$)=>{var L;j(u,F),(L=t==null?void 0:t.onSettle)==null||L.call(t,F,$)}})));return new Promise(F=>{(()=>ue(void 0,null,function*(){if(b.debug("Submitting request",{disabled:y,submitOptions:t}),T){let L=U.current;U.current=Q=>{L(Q),F(Q)},O(()=>ue(void 0,null,function*(){let Q=U.current;U.current=()=>null;let G=yield c();Q(G)}))}else{let L=yield c();F(L)}}))()})},K=M=>{!M||(M&&M instanceof V.Command?R.revalidate((0,V.getCommandKey)(M)):M instanceof V.Command||R.revalidate(M))},se={onSubmitSuccess:S.onSuccess,onSubmitError:S.onError,onSubmitFinished:S.onFinished,onSubmitRequestStart:S.onRequestStart,onSubmitResponseStart:S.onResponseStart,onSubmitDownloadProgress:S.onDownloadProgress,onSubmitUploadProgress:S.onUploadProgress,onSubmitOfflineError:S.onOfflineError,onSubmitAbort:S.onAbort};return(0,Ne.useDidMount)(()=>{k(e)}),w(d(d({submit:X,get data(){return p("data"),x.data},get error(){return p("error"),x.error},get submitting(){return p("loading"),x.loading},get status(){return p("status"),x.status},get retries(){return p("retries"),x.retries},get timestamp(){return p("timestamp"),x.timestamp},abort:S.abort},s),se),{bounce:de(q),revalidate:K})};var ge={disabled:!1,dependencyTracking:!0,initialData:null,bounce:!1,bounceType:"debounce",bounceTime:400,deepCompare:!0};var me=require("react"),$e=require("@better-typed/hyper-fetch"),be=require("@better-typed/react-lifecycle-hooks");var st=(e,n=Ce)=>{let[r]=H(),{queueType:y="auto"}=d(d(d({},Ce),r.useQueueConfig),n),{abortKey:f,queueKey:m,builder:T}=e,{commandManager:i}=T,[o]=(0,$e.getCommandDispatcher)(e,y),g=(0,me.useRef)(null),[C,R]=(0,me.useState)(!1),[E,a]=(0,me.useState)([]),b=O=>O.map(x=>w(d({},x),{stopRequest:()=>o.stopRequest(m,x.requestId),startRequest:()=>o.startRequest(m,x.requestId),deleteRequest:()=>o.delete(m,x.requestId,f)})),v=(O,x)=>{a(s=>s.map(p=>p.requestId===O?d(d({},p),x):p))},h=()=>{let O=o.getQueue(m);R(O.stopped),a(b(O.requests))},U=O=>{R(O.stopped),a(b(O.requests))},q=()=>{var S;let O=o.events.onQueueChange(m,U),x=o.events.onQueueStatus(m,U),s=i.events.onDownloadProgress(m,(P,{requestId:k})=>{v(k,{downloading:P})}),p=i.events.onUploadProgress(m,(P,{requestId:k})=>{v(k,{uploading:P})}),l=()=>{x(),O(),s(),p()};return(S=g.current)==null||S.call(g),g.current=l,l};return(0,be.useDidMount)(h),(0,be.useDidUpdate)(q,[C,E,a,R],!0),{stopped:C,requests:E,stop:()=>o.stop(m),pause:()=>o.pause(m),start:()=>o.start(m)}};var Ce={queueType:"auto"};var Ge=require("react"),oe=require("@better-typed/hyper-fetch");var at=(e,n=he)=>{let{cacheKey:r,builder:y}=e,{cache:f,loggerManager:m}=y,T=(0,Ge.useRef)(m.init("useCache")).current,[i]=(0,oe.getCommandDispatcher)(e),[o]=H(),{dependencyTracking:g,initialData:C,deepCompare:R}=d(d(d({},he),o.useCacheConfig),n),[E,a,{setRenderKey:b,setCacheData:v}]=_({logger:T,command:e,dispatcher:i,initialData:C,deepCompare:R,dependencyTracking:g}),[h]=Z({logger:T,actions:a,command:e,dispatcher:i,setCacheData:v}),U=q=>{q instanceof oe.Command?f.revalidate((0,oe.getCommandKey)(q,!0)):q?f.revalidate(q):f.revalidate(r)};return w(d({get data(){return b("data"),E.data},get error(){return b("error"),E.error},get loading(){return b("loading"),E.loading},get status(){return b("status"),E.status},get retries(){return b("retries"),E.retries},get timestamp(){return b("timestamp"),E.timestamp},onCacheError:h.onError,onCacheSuccess:h.onSuccess,onCacheChange:h.onFinished},a),{revalidate:U})};var he={dependencyTracking:!0,initialData:null,deepCompare:!0};var Fe=require("react"),Je=require("@better-typed/react-lifecycle-hooks"),ut=e=>{let[n,r]=(0,Fe.useState)(e.appManager.isOnline),[y,f]=(0,Fe.useState)(e.appManager.isFocused),m=()=>{let o=e.appManager.events.onOnline(()=>r(!0)),g=e.appManager.events.onOffline(()=>r(!1)),C=e.appManager.events.onFocus(()=>f(!0)),R=e.appManager.events.onBlur(()=>f(!1));return()=>{o(),g(),C(),R()}},T=o=>{e.appManager.setOnline(o)},i=o=>{e.appManager.setFocused(o)};return(0,Je.useDidMount)(m),{isOnline:n,isFocused:y,setOnline:T,setFocused:i}};
var We=Object.create;var ae=Object.defineProperty,ze=Object.defineProperties,He=Object.getOwnPropertyDescriptor,Xe=Object.getOwnPropertyDescriptors,Ye=Object.getOwnPropertyNames,Ie=Object.getOwnPropertySymbols,Ze=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty,_e=Object.prototype.propertyIsEnumerable;var we=(e,n,r)=>n in e?ae(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r,d=(e,n)=>{for(var r in n||(n={}))Me.call(n,r)&&we(e,r,n[r]);if(Ie)for(var r of Ie(n))_e.call(n,r)&&we(e,r,n[r]);return e},w=(e,n)=>ze(e,Xe(n));var Ve=(e,n)=>{for(var r in n)ae(e,r,{get:n[r],enumerable:!0})},Ae=(e,n,r,g)=>{if(n&&typeof n=="object"||typeof n=="function")for(let f of Ye(n))!Me.call(e,f)&&f!==r&&ae(e,f,{get:()=>n[f],enumerable:!(g=He(n,f))||g.enumerable});return e};var et=(e,n,r)=>(r=e!=null?We(Ze(e)):{},Ae(n||!e||!e.__esModule?ae(r,"default",{value:e,enumerable:!0}):r,e)),tt=e=>Ae(ae({},"__esModule",{value:!0}),e);var ue=(e,n,r)=>new Promise((g,f)=>{var m=o=>{try{i(r.next(o))}catch(y){f(y)}},T=o=>{try{i(r.throw(o))}catch(y){f(y)}},i=o=>o.done?g(o.value):Promise.resolve(o.value).then(m,T);i((r=r.apply(e,n)).next())});var ct={};Ve(ct,{getBounceData:()=>ie,getDetailsState:()=>z,getInitialState:()=>ge,getRefreshTime:()=>qe,getTimestamp:()=>Qe,getValidCacheData:()=>Be,initialState:()=>W,isEmpty:()=>Ue,isEqual:()=>ce,isStaleCacheData:()=>ye,useAppManager:()=>ut,useCache:()=>at,useCacheDefaultOptions:()=>xe,useCommandEvents:()=>Y,useFetch:()=>rt,useFetchDefaultOptions:()=>v,useQueue:()=>st,useQueueDefaultOptions:()=>he,useSubmit:()=>ot,useSubmitDefaultOptions:()=>Ce,useTrackedState:()=>Z});module.exports=tt(ct);var Ke=require("react"),ne=require("@better-typed/react-lifecycle-hooks"),le=require("@better-typed/react-performance-hooks"),me=require("@better-typed/hyper-fetch");var L=require("react"),Le=require("@better-typed/react-lifecycle-hooks"),Y=({command:e,dispatcher:n,logger:r,actions:g,setCacheData:f})=>{let{cache:m,commandManager:T}=e.builder,i=(0,L.useRef)(null),o=(0,L.useRef)(null),y=(0,L.useRef)(null),C=(0,L.useRef)(null),R=(0,L.useRef)(null),E=(0,L.useRef)(null),u=(0,L.useRef)(null),b=(0,L.useRef)(null),U=(0,L.useRef)(null),h=(0,L.useRef)(new Map),k=(0,L.useRef)(null),P=t=>{let s=h.current.get(t);s==null||s.unmount(),h.current.delete(t)},O=()=>{let t=h.current;Array.from(t.values()).forEach(c=>{c.unmount()}),t.clear()},x=(t,s,c)=>{var I,Q,$,N,V;let{isOffline:B,isFailed:A,isCanceled:G}=c;e.offline&&B&&A?(r.debug("Performing offline error callback",{data:s,details:c}),(I=C.current)==null||I.call(C,{response:s[1],command:t,details:c})):G?(r.debug("Performing abort callback",{data:s,details:c}),(Q=y.current)==null||Q.call(y,{response:s[1],command:t,details:c})):A?(r.debug("Performing error callback",{data:s,details:c}),(N=o.current)==null||N.call(o,{response:s[1],command:t,details:c})):(r.debug("Performing success callback",{data:s,details:c}),($=i.current)==null||$.call(i,{response:s[0],command:t,details:c})),(V=R.current)==null||V.call(R,{response:s,command:t,details:c})},a=t=>({isLoading:s})=>{let c=!s&&!n.hasRunningRequests(t);(s||c)&&g.setLoading(s,!1)},p=(t,s)=>{var c;(c=b.current)==null||c.call(b,t,s)},l=(t,s)=>{var c;(c=U.current)==null||c.call(U,t,s)},S=t=>s=>{var c;(c=E.current)==null||c.call(E,{command:t,details:s})},F=t=>s=>{var c;(c=u.current)==null||c.call(u,{command:t,details:s})},q=t=>(s,c)=>{x(t,s,c)},j=({requestId:t})=>{P(t)},X=()=>{var t;(t=k.current)==null||t.unmount(),k.current=null},M=t=>{let s=T.events.onLoading(t.queueKey,a(t.queueKey)),c=m.events.onData(t.cacheKey,f),B=()=>{s(),c()};return X(),k.current={unmount:B},B},oe=(t,s)=>{if(!s){let{queueKey:N,cacheKey:V}=t,K=T.events.onRequestStart(N,S(t)),J=T.events.onResponseStart(N,F(t)),fe=T.events.onUploadProgress(N,l),Se=T.events.onDownloadProgress(N,p),Ee=T.events.onResponse(V,q(t)),Te=()=>{Se(),fe(),K(),J(),Ee()};return h.current.set(N,{unmount:Te}),Te}let c=T.events.onRemoveById(s,j),B=T.events.onRequestStartById(s,S(t)),A=T.events.onResponseStartById(s,F(t)),G=T.events.onResponseById(s,q(t)),I=T.events.onUploadProgressById(s,l),Q=T.events.onDownloadProgressById(s,p),$=()=>{c(),Q(),I(),B(),A(),G()};return h.current.set(s,{unmount:$}),$},se=()=>{let{abortKey:t}=e;n.getAllRunningRequest().forEach(c=>{c.command.abortKey===t&&n.delete(c.command.queueKey,c.requestId,t)})};return(0,Le.useWillUnmount)(()=>{O(),X()}),[{abort:se,onSuccess:t=>{i.current=t},onError:t=>{o.current=t},onAbort:t=>{y.current=t},onOfflineError:t=>{C.current=t},onFinished:t=>{R.current=t},onRequestStart:t=>{E.current=t},onResponseStart:t=>{u.current=t},onDownloadProgress:t=>{b.current=t},onUploadProgress:t=>{U.current=t}},{addDataListener:M,clearDataListener:X,addLifecycleListeners:oe,removeLifecycleListener:P,clearLifecycleListeners:O}]};var W={data:null,error:null,loading:!1,status:null,retries:0,timestamp:null};var ke=require("react"),pe=require("@better-typed/react-lifecycle-hooks");var Ue=e=>{let n=Object.prototype.toString.call(e);return Array.isArray(e)?!e.length:typeof e=="object"&&e!==null&&n==="[object Object]"?!Object.keys(e).length:!1},ce=(e,n)=>{let r=Object.prototype.toString.call(e),g=Object.prototype.toString.call(n),f=typeof e,m=typeof n,T=o=>f===o&&m===o,i=o=>r===o&&g===o;return r!==g?!1:e===null&&n===null||T("number")&&Number.isNaN(e)&&Number.isNaN(n)||Ue(e)&&Ue(n)?!0:Array.isArray(e)&&Array.isArray(n)?e.length!==n.length?!1:!e.some((o,y)=>!ce(o,n[y])):T("object")&&i("[object Object]")?Object.keys(e).length!==Object.keys(n).length?!1:!Object.entries(e).some(([o,y])=>!ce(y,n[o])):e instanceof Date&&n instanceof Date?+e==+n:e===n};var ie=e=>w(d({},e),{throttle:void 0,debounce:void 0});var z=(e,n)=>d({retries:(e==null?void 0:e.retries)||0,timestamp:+new Date,isFailed:!1,isCanceled:!1,isOffline:!1},n),ye=(e,n)=>n?+new Date>+n+e:!0,Be=(e,n,r)=>!ye(e.cacheTime,r==null?void 0:r.details.timestamp)&&r?r:n?{data:n,details:z(),cacheTime:1e3,clearKey:e.builder.cache.clearKey}:null,Qe=e=>e?new Date(e):null,ge=(e,n,r)=>{var y,C,R;let{builder:g,cacheKey:f}=r,{cache:m}=g,T=m.get(f),i=Be(r,e,T),o=n.hasRunningRequests(r.queueKey);return w(d({},W),{data:((y=i==null?void 0:i.data)==null?void 0:y[0])||W.data,error:((C=i==null?void 0:i.data)==null?void 0:C[1])||W.error,status:((R=i==null?void 0:i.data)==null?void 0:R[2])||W.status,retries:(i==null?void 0:i.details.retries)||W.retries,timestamp:Qe((i==null?void 0:i.details.timestamp)||W.timestamp),loading:o})};var Z=({command:e,dispatcher:n,initialData:r,deepCompare:g,dependencyTracking:f,defaultCacheEmitting:m=!0})=>{let{builder:T,cacheKey:i,queueKey:o,cacheTime:y}=e,{cache:C,commandManager:R}=T,E=(0,pe.useForceUpdate)(),u=(0,ke.useRef)(ge(r,n,e)),b=(0,ke.useRef)([]),U=()=>{let a=C.get(i);return ye(y,(a==null?void 0:a.details.timestamp)||u.current.timestamp)},h=a=>{b.current.some(l=>a.includes(l))&&E()},k=a=>{b.current.includes(a)||b.current.push(a)};(0,pe.useDidUpdate)(()=>{u.current.loading=n.hasRunningRequests(o);let a=ge(r,n,e),p=(r==null?void 0:r[0])===u.current.data,l=!!(u.current.data||u.current.error)&&!p,S=!l&&u.current.data,F=l&&!u.current.data;(S||F)&&(u.current=a)},[i,o],!0),(0,pe.useDidUpdate)(()=>{(()=>{f||Object.keys(u.current).forEach(p=>k(p))})()},[f],!0);let P=(a,p)=>typeof g=="function"?g(a,p):g?ce(a,p):!1,O=a=>ue(void 0,null,function*(){let p={data:a.data[0],error:a.data[1],status:a.data[2],retries:a.details.retries,timestamp:new Date(a.details.timestamp),loading:u.current.loading},l=Object.keys(p).filter(S=>{let F=S,q=u.current[F],j=p[F];return!P(q,j)});u.current=d(d({},u.current),p),h(l)}),x={setData:(a,p=m)=>{if(p){let l=u.current;C.set(e,[a,l.error,l.status],z(u.current))}else u.current.data=a,h(["data"])},setError:(a,p=m)=>{if(p){let l=u.current;C.set(e,[l.data,a,l.status],z(u.current,{isFailed:!!a}))}else u.current.error=a,h(["error"])},setLoading:(a,p=!0)=>{p?R.events.emitLoading(o,"",{queueKey:o,requestId:"",isLoading:a,isRetry:!1,isOffline:!1}):(u.current.loading=a,h(["loading"]))},setStatus:(a,p=m)=>{if(p){let l=u.current;C.set(e,[l.data,l.error,a],z(u.current))}else u.current.status=a,h(["status"])},setRetries:(a,p=m)=>{if(p){let l=u.current;C.set(e,[l.data,l.error,l.status],z(u.current,{retries:a}))}else u.current.retries=a,h(["retries"])},setTimestamp:(a,p=m)=>{if(p){let l=u.current;C.set(e,[l.data,l.error,l.status],z(u.current,{timestamp:+a}))}else u.current.timestamp=a,h(["timestamp"])}};return[u.current,x,{setRenderKey:k,setCacheData:O,getStaleStatus:U}]};var te=et(require("react")),nt=te.default.createContext([{},()=>null]);var H=()=>(0,te.useContext)(nt);var rt=(e,n=v)=>{let[r]=H(),{dependencies:g=v.dependencies,disabled:f=v.disabled,dependencyTracking:m=v.dependencyTracking,revalidateOnMount:T=v.revalidateOnMount,initialData:i=v.initialData,refresh:o=v.refresh,refreshTime:y=v.refreshTime,refreshBlurred:C=v.refreshBlurred,refreshOnBlur:R=v.refreshOnBlur,refreshOnFocus:E=v.refreshOnFocus,refreshOnReconnect:u=v.refreshOnReconnect,bounce:b=v.bounce,bounceType:U=v.bounceType,bounceTime:h=v.bounceTime,deepCompare:k=v.deepCompare}=d(d(d({},v),r.useFetchConfig),n),P=JSON.stringify(e.dump()),O=(0,le.useDebounce)(h),x=(0,le.useThrottle)(h),a=(0,le.useDebounce)(y),{cacheKey:p,queueKey:l,builder:S}=e,{cache:F,fetchDispatcher:q,appManager:j,loggerManager:X}=S,M=(0,Ke.useRef)(X.init("useFetch")).current,oe=U==="throttle"?x:O,se=U==="throttle"?x.throttle:O.debounce,[t,s,{setRenderKey:c,setCacheData:B,getStaleStatus:A}]=Z({logger:M,command:e,dispatcher:q,initialData:i,deepCompare:k,dependencyTracking:m}),[G,I]=Y({logger:M,actions:s,command:e,dispatcher:q,setCacheData:B}),{addDataListener:Q,addLifecycleListeners:$,clearDataListener:N,clearLifecycleListeners:V}=I,K=()=>{f?M.debug("Cannot add to fetch queue",{disabled:f}):(M.debug("Fetching data"),q.add(e))};function J(){if(!o)return;let D=qe(y,t.timestamp);M.debug(`Starting refresh counter, request will be send in ${D}ms`),a.debounce(()=>{let ee=!j.isFocused,Oe=q.hasRunningRequests(e.queueKey),De=q.getIsActiveQueue(e.queueKey),ve=Oe||De;(ee&&C&&!ve||!ee&&!ve)&&(K(),M.debug("Performing refresh request")),J()},D)}let fe=D=>{D&&D instanceof me.Command?F.revalidate((0,me.getCommandKey)(D)):D&&!(D instanceof me.Command)&&F.revalidate(D)},Se=D=>{D&&Array.isArray(D)?D.forEach(fe):D&&!Array.isArray(D)?fe(D):(K(),J())},Ee=()=>{let D=A(),ee=q.getIsActiveQueue(l);(T||D&&!ee)&&K()},Te=()=>{b?(M.debug(`Bounce request with ${U}`,{queueKey:l,command:e}),se(()=>K())):K()};return(0,ne.useDidUpdate)(()=>{Q(e),$(e);let D=j.events.onFocus(()=>{E&&(K(),J())}),ee=j.events.onBlur(()=>{R&&(K(),J())}),Oe=j.events.onOnline(()=>{u&&(K(),J())}),De=F.events.onRevalidate(p,K);return()=>{N(),V(),D(),ee(),Oe(),De()}},[P],!0),(0,ne.useDidMount)(Ee),(0,ne.useDidUpdate)(Te,[P,...g]),(0,ne.useDidUpdate)(J,[P,...g,f,o,y],!0),w(d(d({get data(){return c("data"),t.data},get error(){return c("error"),t.error},get loading(){return c("loading"),t.loading},get status(){return c("status"),t.status},get retries(){return c("retries"),t.retries},get timestamp(){return c("timestamp"),t.timestamp},bounce:ie(oe)},s),G),{revalidate:Se})};var qe=(e,n)=>{if(n){let r=Date.now()-+n;return r<e?e-r:e}return e};var je=require("@better-typed/hyper-fetch"),v={dependencies:[],disabled:!1,dependencyTracking:!0,revalidateOnMount:!0,initialData:null,refresh:!1,refreshTime:je.DateInterval.hour,refreshBlurred:!0,refreshOnBlur:!1,refreshOnFocus:!1,refreshOnReconnect:!1,bounce:!1,bounceType:"debounce",bounceTime:400,deepCompare:!0};var Pe=require("react"),_=require("@better-typed/hyper-fetch"),Ne=require("@better-typed/react-lifecycle-hooks"),be=require("@better-typed/react-performance-hooks");var ot=(e,n=Ce)=>{let[r]=H(),{disabled:g,dependencyTracking:f,initialData:m,bounce:T,bounceType:i,bounceTime:o,deepCompare:y}=d(d(d({},Ce),r.useSubmitConfig),n),{builder:C}=e,{cache:R,submitDispatcher:E,loggerManager:u}=C,b=(0,Pe.useRef)(u.init("useSubmit")).current,U=(0,be.useDebounce)(o),h=(0,be.useThrottle)(o),k=(0,Pe.useRef)(()=>null),P=i==="throttle"?h:U,O=i==="throttle"?h.throttle:U.debounce,[x,a,{setRenderKey:p,setCacheData:l}]=Z({logger:b,command:e,dispatcher:E,initialData:m,deepCompare:y,dependencyTracking:f}),[S,F]=Y({logger:b,actions:a,command:e,dispatcher:E,setCacheData:l}),{addDataListener:q,addLifecycleListeners:j}=F,X=(...t)=>{let s=t[0],c=e.clone(s);if(g)throw b.warning("Cannot submit request",{disabled:g,submitOptions:s}),new Error("Cannot submit request. Option 'disabled' is enabled");let B=()=>(q(c),(0,_.commandSendRequest)(c,w(d({dispatcherType:"submit"},s),{onSettle:(A,G)=>{var I;j(c,A),(I=s==null?void 0:s.onSettle)==null||I.call(s,A,G)}})));return new Promise(A=>{(()=>ue(void 0,null,function*(){if(b.debug("Submitting request",{disabled:g,submitOptions:s}),T){let I=k.current;k.current=Q=>{I(Q),A(Q)},O(()=>ue(void 0,null,function*(){let Q=k.current;k.current=()=>null;let $=yield B();Q($)}))}else{let I=yield B();A(I)}}))()})},M=t=>{t&&t instanceof _.Command?R.revalidate((0,_.getCommandKey)(t)):t&&!(t instanceof _.Command)&&R.revalidate(t)},oe=t=>{!t||(t&&Array.isArray(t)?t.forEach(M):t&&!Array.isArray(t)&&M(t))},se={onSubmitSuccess:S.onSuccess,onSubmitError:S.onError,onSubmitFinished:S.onFinished,onSubmitRequestStart:S.onRequestStart,onSubmitResponseStart:S.onResponseStart,onSubmitDownloadProgress:S.onDownloadProgress,onSubmitUploadProgress:S.onUploadProgress,onSubmitOfflineError:S.onOfflineError,onSubmitAbort:S.onAbort};return(0,Ne.useDidMount)(()=>{q(e)}),w(d(d({submit:X,get data(){return p("data"),x.data},get error(){return p("error"),x.error},get submitting(){return p("loading"),x.loading},get status(){return p("status"),x.status},get retries(){return p("retries"),x.retries},get timestamp(){return p("timestamp"),x.timestamp},abort:S.abort},a),se),{bounce:ie(P),revalidate:oe})};var Ce={disabled:!1,dependencyTracking:!0,initialData:null,bounce:!1,bounceType:"debounce",bounceTime:400,deepCompare:!0};var de=require("react"),$e=require("@better-typed/hyper-fetch"),Re=require("@better-typed/react-lifecycle-hooks");var st=(e,n=he)=>{let[r]=H(),{queueType:g="auto"}=d(d(d({},he),r.useQueueConfig),n),{abortKey:f,queueKey:m,builder:T}=e,{commandManager:i}=T,[o]=(0,$e.getCommandDispatcher)(e,g),y=(0,de.useRef)(null),[C,R]=(0,de.useState)(!1),[E,u]=(0,de.useState)([]),b=O=>O.map(x=>w(d({},x),{stopRequest:()=>o.stopRequest(m,x.requestId),startRequest:()=>o.startRequest(m,x.requestId),deleteRequest:()=>o.delete(m,x.requestId,f)})),U=(O,x)=>{u(a=>a.map(p=>p.requestId===O?d(d({},p),x):p))},h=()=>{let O=o.getQueue(m);R(O.stopped),u(b(O.requests))},k=O=>{R(O.stopped),u(b(O.requests))},P=()=>{var S;let O=o.events.onQueueChange(m,k),x=o.events.onQueueStatus(m,k),a=i.events.onDownloadProgress(m,(F,{requestId:q})=>{U(q,{downloading:F})}),p=i.events.onUploadProgress(m,(F,{requestId:q})=>{U(q,{uploading:F})}),l=()=>{x(),O(),a(),p()};return(S=y.current)==null||S.call(y),y.current=l,l};return(0,Re.useDidMount)(h),(0,Re.useDidUpdate)(P,[C,E,u,R],!0),{stopped:C,requests:E,stop:()=>o.stop(m),pause:()=>o.pause(m),start:()=>o.start(m)}};var he={queueType:"auto"};var Ge=require("react"),re=require("@better-typed/hyper-fetch");var at=(e,n=xe)=>{let{cacheKey:r,builder:g}=e,{cache:f,loggerManager:m}=g,T=(0,Ge.useRef)(m.init("useCache")).current,[i]=(0,re.getCommandDispatcher)(e),[o]=H(),{dependencyTracking:y,initialData:C,deepCompare:R}=d(d(d({},xe),o.useCacheConfig),n),[E,u,{setRenderKey:b,setCacheData:U}]=Z({logger:T,command:e,dispatcher:i,initialData:C,deepCompare:R,dependencyTracking:y}),[h]=Y({logger:T,actions:u,command:e,dispatcher:i,setCacheData:U}),k=P=>{P instanceof re.Command?f.revalidate((0,re.getCommandKey)(P,!0)):P?f.revalidate(P):f.revalidate(r)};return w(d({get data(){return b("data"),E.data},get error(){return b("error"),E.error},get loading(){return b("loading"),E.loading},get status(){return b("status"),E.status},get retries(){return b("retries"),E.retries},get timestamp(){return b("timestamp"),E.timestamp},onCacheError:h.onError,onCacheSuccess:h.onSuccess,onCacheChange:h.onFinished},u),{revalidate:k})};var xe={dependencyTracking:!0,initialData:null,deepCompare:!0};var Fe=require("react"),Je=require("@better-typed/react-lifecycle-hooks"),ut=e=>{let[n,r]=(0,Fe.useState)(e.appManager.isOnline),[g,f]=(0,Fe.useState)(e.appManager.isFocused),m=()=>{let o=e.appManager.events.onOnline(()=>r(!0)),y=e.appManager.events.onOffline(()=>r(!1)),C=e.appManager.events.onFocus(()=>f(!0)),R=e.appManager.events.onBlur(()=>f(!1));return()=>{o(),y(),C(),R()}},T=o=>{e.appManager.setOnline(o)},i=o=>{e.appManager.setFocused(o)};return(0,Je.useDidMount)(m),{isOnline:n,isFocused:g,setOnline:T,setFocused:i}};
//# sourceMappingURL=index.cjs.js.map

@@ -1,7 +0,8 @@

export * from "./use-fetch";
export * from "./use-submit";
export * from "./use-queue";
export * from "./use-cache";
export * from "./use-app-manager";
export * from "./hooks/use-fetch";
export * from "./hooks/use-submit";
export * from "./hooks/use-queue";
export * from "./hooks/use-cache";
export * from "./hooks/use-app-manager";
export * from "./helpers";
export * from "./utils/deep-equal.utils";
export * from "./types";
export * from "./utils";

@@ -1,2 +0,2 @@

var qe=Object.defineProperty,Pe=Object.defineProperties;var Fe=Object.getOwnPropertyDescriptors;var Ce=Object.getOwnPropertySymbols;var Ie=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var be=(e,n,r)=>n in e?qe(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r,d=(e,n)=>{for(var r in n||(n={}))Ie.call(n,r)&&be(e,r,n[r]);if(Ce)for(var r of Ce(n))we.call(n,r)&&be(e,r,n[r]);return e},w=(e,n)=>Pe(e,Fe(n));var ne=(e,n,r)=>new Promise((g,y)=>{var m=o=>{try{i(r.next(o))}catch(T){y(T)}},f=o=>{try{i(r.throw(o))}catch(T){y(T)}},i=o=>o.done?g(o.value):Promise.resolve(o.value).then(m,f);i((r=r.apply(e,n)).next())});import{useRef as Ne}from"react";import{useDidUpdate as fe,useDidMount as $e}from"@better-typed/react-lifecycle-hooks";import{useDebounce as Se,useThrottle as Ge}from"@better-typed/react-performance-hooks";import{Command as Ee,getCommandKey as Je}from"@better-typed/hyper-fetch";import{useRef as A}from"react";import{useWillUnmount as Me}from"@better-typed/react-lifecycle-hooks";var V=({command:e,dispatcher:n,logger:r,actions:g,setCacheData:y})=>{let{cache:m,commandManager:f}=e.builder,i=A(null),o=A(null),T=A(null),C=A(null),R=A(null),E=A(null),a=A(null),b=A(null),D=A(null),h=A(new Map),v=A(null),q=t=>{let u=h.current.get(t);u==null||u.unmount(),h.current.delete(t)},O=()=>{let t=h.current;Array.from(t.values()).forEach(c=>{c.unmount()}),t.clear()},x=(t,u,c)=>{var K,G,H,N,Z;let{isOffline:F,isFailed:$,isCanceled:L}=c;e.offline&&F&&$?(r.debug("Performing offline error callback",{data:u,details:c}),(K=C.current)==null||K.call(C,{response:u[1],command:t,details:c})):L?(r.debug("Performing abort callback",{data:u,details:c}),(G=T.current)==null||G.call(T,{response:u[1],command:t,details:c})):$?(r.debug("Performing error callback",{data:u,details:c}),(N=o.current)==null||N.call(o,{response:u[1],command:t,details:c})):(r.debug("Performing success callback",{data:u,details:c}),(H=i.current)==null||H.call(i,{response:u[0],command:t,details:c})),(Z=R.current)==null||Z.call(R,{response:u,command:t,details:c})},s=t=>({isLoading:u})=>{let c=!u&&!n.hasRunningRequests(t);(u||c)&&g.setLoading(u,!1)},p=(t,u)=>{var c;(c=b.current)==null||c.call(b,t,u)},l=(t,u)=>{var c;(c=D.current)==null||c.call(D,t,u)},S=t=>u=>{var c;(c=E.current)==null||c.call(E,{command:t,details:u})},P=t=>u=>{var c;(c=a.current)==null||c.call(a,{command:t,details:u})},U=t=>(u,c)=>{x(t,u,c)},j=({requestId:t})=>{q(t)},z=()=>{var t;(t=v.current)==null||t.unmount(),v.current=null},B=t=>{let u=f.events.onLoading(t.queueKey,s(t.queueKey)),c=m.events.onData(t.cacheKey,y),F=()=>{u(),c()};return z(),v.current={unmount:F},F},te=(t,u)=>{if(!u){let{queueKey:N,cacheKey:Z}=t,Q=f.events.onRequestStart(N,S(t)),J=f.events.onResponseStart(N,P(t)),se=f.events.onUploadProgress(N,l),ae=f.events.onDownloadProgress(N,p),ue=f.events.onResponse(Z,U(t)),ce=()=>{ae(),se(),Q(),J(),ue()};return h.current.set(N,{unmount:ce}),ce}let c=f.events.onRemoveById(u,j),F=f.events.onRequestStartById(u,S(t)),$=f.events.onResponseStartById(u,P(t)),L=f.events.onResponseById(u,U(t)),K=f.events.onUploadProgressById(u,l),G=f.events.onDownloadProgressById(u,p),H=()=>{c(),G(),K(),F(),$(),L()};return h.current.set(u,{unmount:H}),H},M=()=>{let{abortKey:t}=e;n.getAllRunningRequest().forEach(c=>{c.command.abortKey===t&&n.delete(c.command.queueKey,c.requestId,t)})};return Me(()=>{O(),z()}),[{abort:M,onSuccess:t=>{i.current=t},onError:t=>{o.current=t},onAbort:t=>{T.current=t},onOfflineError:t=>{C.current=t},onFinished:t=>{R.current=t},onRequestStart:t=>{E.current=t},onResponseStart:t=>{a.current=t},onDownloadProgress:t=>{b.current=t},onUploadProgress:t=>{D.current=t}},{addDataListener:B,clearDataListener:z,addLifecycleListeners:te,removeLifecycleListener:q,clearLifecycleListeners:O}]};var X={data:null,error:null,loading:!1,status:null,retries:0,timestamp:null};import{useRef as Re}from"react";import{useDidUpdate as xe,useForceUpdate as Ke}from"@better-typed/react-lifecycle-hooks";var he=e=>{let n=Object.prototype.toString.call(e);return Array.isArray(e)?!e.length:typeof e=="object"&&e!==null&&n==="[object Object]"?!Object.keys(e).length:!1},re=(e,n)=>{let r=Object.prototype.toString.call(e),g=Object.prototype.toString.call(n),y=typeof e,m=typeof n,f=o=>y===o&&m===o,i=o=>r===o&&g===o;return r!==g?!1:e===null&&n===null||f("number")&&Number.isNaN(e)&&Number.isNaN(n)||he(e)&&he(n)?!0:Array.isArray(e)&&Array.isArray(n)?e.length!==n.length?!1:!e.some((o,T)=>!re(o,n[T])):f("object")&&i("[object Object]")?Object.keys(e).length!==Object.keys(n).length?!1:!Object.entries(e).some(([o,T])=>!re(T,n[o])):e instanceof Date&&n instanceof Date?+e==+n:e===n};var oe=e=>w(d({},e),{throttle:void 0,debounce:void 0});var Y=(e,n)=>d({retries:(e==null?void 0:e.retries)||0,timestamp:+new Date,isFailed:!1,isCanceled:!1,isOffline:!1},n),me=(e,n)=>n?+new Date>+n+e:!0,Le=(e,n,r)=>!me(e.cacheTime,r==null?void 0:r.details.timestamp)&&r?r:n?{data:n,details:Y(),cacheTime:1e3,clearKey:e.builder.cache.clearKey}:null,Be=e=>e?new Date(e):null,de=(e,n,r)=>{var T,C,R;let{builder:g,cacheKey:y}=r,{cache:m}=g,f=m.get(y),i=Le(r,e,f),o=n.hasRunningRequests(r.queueKey);return w(d({},X),{data:((T=i==null?void 0:i.data)==null?void 0:T[0])||X.data,error:((C=i==null?void 0:i.data)==null?void 0:C[1])||X.error,status:((R=i==null?void 0:i.data)==null?void 0:R[2])||X.status,retries:(i==null?void 0:i.details.retries)||X.retries,timestamp:Be((i==null?void 0:i.details.timestamp)||X.timestamp),loading:o})};var ee=({command:e,dispatcher:n,initialData:r,deepCompare:g,dependencyTracking:y,defaultCacheEmitting:m=!0})=>{let{builder:f,cacheKey:i,queueKey:o,cacheTime:T}=e,{cache:C,commandManager:R}=f,E=Ke(),a=Re(de(r,n,e)),b=Re([]),D=()=>{let s=C.get(i);return me(T,(s==null?void 0:s.details.timestamp)||a.current.timestamp)},h=s=>{b.current.some(l=>s.includes(l))&&E()},v=s=>{b.current.includes(s)||b.current.push(s)};xe(()=>{a.current.loading=n.hasRunningRequests(o);let s=de(r,n,e),p=(r==null?void 0:r[0])===a.current.data,l=!!(a.current.data||a.current.error)&&!p,S=!l&&a.current.data,P=l&&!a.current.data;(S||P)&&(a.current=s)},[i,o],!0),xe(()=>{(()=>{y||Object.keys(a.current).forEach(p=>v(p))})()},[y],!0);let q=(s,p)=>typeof g=="function"?g(s,p):g?re(s,p):!1,O=s=>ne(void 0,null,function*(){let p={data:s.data[0],error:s.data[1],status:s.data[2],retries:s.details.retries,timestamp:new Date(s.details.timestamp),loading:a.current.loading},l=Object.keys(p).filter(S=>{let P=S,U=a.current[P],j=p[P];return!q(U,j)});a.current=d(d({},a.current),p),h(l)}),x={setData:(s,p=m)=>{if(p){let l=a.current;C.set(e,[s,l.error,l.status],Y(a.current))}else a.current.data=s,h(["data"])},setError:(s,p=m)=>{if(p){let l=a.current;C.set(e,[l.data,s,l.status],Y(a.current,{isFailed:!!s}))}else a.current.error=s,h(["error"])},setLoading:(s,p=!0)=>{p?R.events.emitLoading(o,"",{queueKey:o,requestId:"",isLoading:s,isRetry:!1,isOffline:!1}):(a.current.loading=s,h(["loading"]))},setStatus:(s,p=m)=>{if(p){let l=a.current;C.set(e,[l.data,l.error,s],Y(a.current))}else a.current.status=s,h(["status"])},setRetries:(s,p=m)=>{if(p){let l=a.current;C.set(e,[l.data,l.error,l.status],Y(a.current,{retries:s}))}else a.current.retries=s,h(["retries"])},setTimestamp:(s,p=m)=>{if(p){let l=a.current;C.set(e,[l.data,l.error,l.status],Y(a.current,{timestamp:+s}))}else a.current.timestamp=s,h(["timestamp"])}};return[a.current,x,{setRenderKey:v,setCacheData:O,getStaleStatus:D}]};import Qe,{useContext as Ae,useMemo as Qt,useState as At}from"react";var je=Qe.createContext([{},()=>null]);var W=()=>Ae(je);var nn=(e,n=k)=>{let[r]=W(),{dependencies:g=k.dependencies,disabled:y=k.disabled,dependencyTracking:m=k.dependencyTracking,revalidateOnMount:f=k.revalidateOnMount,initialData:i=k.initialData,refresh:o=k.refresh,refreshTime:T=k.refreshTime,refreshBlurred:C=k.refreshBlurred,refreshOnBlur:R=k.refreshOnBlur,refreshOnFocus:E=k.refreshOnFocus,refreshOnReconnect:a=k.refreshOnReconnect,bounce:b=k.bounce,bounceType:D=k.bounceType,bounceTime:h=k.bounceTime,deepCompare:v=k.deepCompare}=d(d(d({},k),r.useFetchConfig),n),q=JSON.stringify(e.dump()),O=Se(h),x=Ge(h),s=Se(T),{cacheKey:p,queueKey:l,builder:S}=e,{cache:P,fetchDispatcher:U,appManager:j,loggerManager:z}=S,B=Ne(z.init("useFetch")).current,te=D==="throttle"?x:O,M=D==="throttle"?x.throttle:O.debounce,[t,u,{setRenderKey:c,setCacheData:F,getStaleStatus:$}]=ee({logger:B,command:e,dispatcher:U,initialData:i,deepCompare:v,dependencyTracking:m}),[L,K]=V({logger:B,actions:u,command:e,dispatcher:U,setCacheData:F}),{addDataListener:G,addLifecycleListeners:H,clearDataListener:N,clearLifecycleListeners:Z}=K,Q=()=>{y?B.debug("Cannot add to fetch queue",{disabled:y}):(B.debug("Fetching data"),U.add(e))};function J(){if(!o)return;let I=Oe(T,t.timestamp);B.debug(`Starting refresh counter, request will be send in ${I}ms`),s.debounce(()=>{let _=!j.isFocused,ie=U.hasRunningRequests(e.queueKey),pe=U.getIsActiveQueue(e.queueKey),le=ie||pe;(_&&C&&!le||!_&&!le)&&(Q(),B.debug("Performing refresh request")),J()},I)}let se=I=>{I&&I instanceof Ee?P.revalidate(Je(I)):I&&!(I instanceof Ee)?P.revalidate(I):(Q(),J())},ae=()=>{let I=$(),_=U.getIsActiveQueue(l);(f||I&&!_)&&Q()},ue=()=>{b?(B.debug(`Bounce request with ${D}`,{queueKey:l,command:e}),M(()=>Q())):Q()};return fe(()=>{G(e),H(e);let I=j.events.onFocus(()=>{E&&(Q(),J())}),_=j.events.onBlur(()=>{R&&(Q(),J())}),ie=j.events.onOnline(()=>{a&&(Q(),J())}),pe=P.events.onRevalidate(p,Q);return()=>{N(),Z(),I(),_(),ie(),pe()}},[q],!0),$e(ae),fe(ue,[q,...g]),fe(J,[q,...g,y,o,T],!0),w(d(d({get data(){return c("data"),t.data},get error(){return c("error"),t.error},get loading(){return c("loading"),t.loading},get status(){return c("status"),t.status},get retries(){return c("retries"),t.retries},get timestamp(){return c("timestamp"),t.timestamp},bounce:oe(te)},u),L),{revalidate:se})};var Oe=(e,n)=>{if(n){let r=Date.now()-+n;return r<e?e-r:e}return e};import{DateInterval as We}from"@better-typed/hyper-fetch";var k={dependencies:[],disabled:!1,dependencyTracking:!0,revalidateOnMount:!0,initialData:null,refresh:!1,refreshTime:We.hour,refreshBlurred:!0,refreshOnBlur:!1,refreshOnFocus:!1,refreshOnReconnect:!1,bounce:!1,bounceType:"debounce",bounceTime:400,deepCompare:!0};import{useRef as De}from"react";import{Command as ve,getCommandKey as ze,commandSendRequest as He}from"@better-typed/hyper-fetch";import{useDidMount as Xe}from"@better-typed/react-lifecycle-hooks";import{useDebounce as Ye,useThrottle as Ze}from"@better-typed/react-performance-hooks";var Pn=(e,n=Te)=>{let[r]=W(),{disabled:g,dependencyTracking:y,initialData:m,bounce:f,bounceType:i,bounceTime:o,deepCompare:T}=d(d(d({},Te),r.useSubmitConfig),n),{builder:C}=e,{cache:R,submitDispatcher:E,loggerManager:a}=C,b=De(a.init("useSubmit")).current,D=Ye(o),h=Ze(o),v=De(()=>null),q=i==="throttle"?h:D,O=i==="throttle"?h.throttle:D.debounce,[x,s,{setRenderKey:p,setCacheData:l}]=ee({logger:b,command:e,dispatcher:E,initialData:m,deepCompare:T,dependencyTracking:y}),[S,P]=V({logger:b,actions:s,command:e,dispatcher:E,setCacheData:l}),{addDataListener:U,addLifecycleListeners:j}=P,z=(...M)=>{let t=M[0],u=e.clone(t);if(g)throw b.warning("Cannot submit request",{disabled:g,submitOptions:t}),new Error("Cannot submit request. Option 'disabled' is enabled");let c=()=>(U(u),He(u,w(d({dispatcherType:"submit"},t),{onSettle:(F,$)=>{var L;j(u,F),(L=t==null?void 0:t.onSettle)==null||L.call(t,F,$)}})));return new Promise(F=>{(()=>ne(void 0,null,function*(){if(b.debug("Submitting request",{disabled:g,submitOptions:t}),f){let L=v.current;v.current=K=>{L(K),F(K)},O(()=>ne(void 0,null,function*(){let K=v.current;v.current=()=>null;let G=yield c();K(G)}))}else{let L=yield c();F(L)}}))()})},B=M=>{!M||(M&&M instanceof ve?R.revalidate(ze(M)):M instanceof ve||R.revalidate(M))},te={onSubmitSuccess:S.onSuccess,onSubmitError:S.onError,onSubmitFinished:S.onFinished,onSubmitRequestStart:S.onRequestStart,onSubmitResponseStart:S.onResponseStart,onSubmitDownloadProgress:S.onDownloadProgress,onSubmitUploadProgress:S.onUploadProgress,onSubmitOfflineError:S.onOfflineError,onSubmitAbort:S.onAbort};return Xe(()=>{U(e)}),w(d(d({submit:z,get data(){return p("data"),x.data},get error(){return p("error"),x.error},get submitting(){return p("loading"),x.loading},get status(){return p("status"),x.status},get retries(){return p("retries"),x.retries},get timestamp(){return p("timestamp"),x.timestamp},abort:S.abort},s),te),{bounce:oe(q),revalidate:B})};var Te={disabled:!1,dependencyTracking:!0,initialData:null,bounce:!1,bounceType:"debounce",bounceTime:400,deepCompare:!0};import{useState as Ue,useRef as _e}from"react";import{getCommandDispatcher as Ve}from"@better-typed/hyper-fetch";import{useDidMount as et,useDidUpdate as tt}from"@better-typed/react-lifecycle-hooks";var Hn=(e,n=ge)=>{let[r]=W(),{queueType:g="auto"}=d(d(d({},ge),r.useQueueConfig),n),{abortKey:y,queueKey:m,builder:f}=e,{commandManager:i}=f,[o]=Ve(e,g),T=_e(null),[C,R]=Ue(!1),[E,a]=Ue([]),b=O=>O.map(x=>w(d({},x),{stopRequest:()=>o.stopRequest(m,x.requestId),startRequest:()=>o.startRequest(m,x.requestId),deleteRequest:()=>o.delete(m,x.requestId,y)})),D=(O,x)=>{a(s=>s.map(p=>p.requestId===O?d(d({},p),x):p))},h=()=>{let O=o.getQueue(m);R(O.stopped),a(b(O.requests))},v=O=>{R(O.stopped),a(b(O.requests))},q=()=>{var S;let O=o.events.onQueueChange(m,v),x=o.events.onQueueStatus(m,v),s=i.events.onDownloadProgress(m,(P,{requestId:U})=>{D(U,{downloading:P})}),p=i.events.onUploadProgress(m,(P,{requestId:U})=>{D(U,{uploading:P})}),l=()=>{x(),O(),s(),p()};return(S=T.current)==null||S.call(T),T.current=l,l};return et(h),tt(q,[C,E,a,R],!0),{stopped:C,requests:E,stop:()=>o.stop(m),pause:()=>o.pause(m),start:()=>o.start(m)}};var ge={queueType:"auto"};import{useRef as nt}from"react";import{getCommandDispatcher as rt,Command as ot,getCommandKey as st}from"@better-typed/hyper-fetch";var ir=(e,n=ye)=>{let{cacheKey:r,builder:g}=e,{cache:y,loggerManager:m}=g,f=nt(m.init("useCache")).current,[i]=rt(e),[o]=W(),{dependencyTracking:T,initialData:C,deepCompare:R}=d(d(d({},ye),o.useCacheConfig),n),[E,a,{setRenderKey:b,setCacheData:D}]=ee({logger:f,command:e,dispatcher:i,initialData:C,deepCompare:R,dependencyTracking:T}),[h]=V({logger:f,actions:a,command:e,dispatcher:i,setCacheData:D}),v=q=>{q instanceof ot?y.revalidate(st(q,!0)):q?y.revalidate(q):y.revalidate(r)};return w(d({get data(){return b("data"),E.data},get error(){return b("error"),E.error},get loading(){return b("loading"),E.loading},get status(){return b("status"),E.status},get retries(){return b("retries"),E.retries},get timestamp(){return b("timestamp"),E.timestamp},onCacheError:h.onError,onCacheSuccess:h.onSuccess,onCacheChange:h.onFinished},a),{revalidate:v})};var ye={dependencyTracking:!0,initialData:null,deepCompare:!0};import{useState as ke}from"react";import{useDidMount as at}from"@better-typed/react-lifecycle-hooks";var Cr=e=>{let[n,r]=ke(e.appManager.isOnline),[g,y]=ke(e.appManager.isFocused),m=()=>{let o=e.appManager.events.onOnline(()=>r(!0)),T=e.appManager.events.onOffline(()=>r(!1)),C=e.appManager.events.onFocus(()=>y(!0)),R=e.appManager.events.onBlur(()=>y(!1));return()=>{o(),T(),C(),R()}},f=o=>{e.appManager.setOnline(o)},i=o=>{e.appManager.setFocused(o)};return at(m),{isOnline:n,isFocused:g,setOnline:f,setFocused:i}};export{Y as getDetailsState,de as getInitialState,Oe as getRefreshTime,Be as getTimestamp,Le as getValidCacheData,X as initialState,he as isEmpty,re as isEqual,me as isStaleCacheData,Cr as useAppManager,ir as useCache,ye as useCacheDefaultOptions,V as useCommandEvents,nn as useFetch,k as useFetchDefaultOptions,Hn as useQueue,ge as useQueueDefaultOptions,Pn as useSubmit,Te as useSubmitDefaultOptions,ee as useTrackedState};
var qe=Object.defineProperty,Pe=Object.defineProperties;var Fe=Object.getOwnPropertyDescriptors;var Ce=Object.getOwnPropertySymbols;var Ie=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var be=(e,n,r)=>n in e?qe(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r,d=(e,n)=>{for(var r in n||(n={}))Ie.call(n,r)&&be(e,r,n[r]);if(Ce)for(var r of Ce(n))we.call(n,r)&&be(e,r,n[r]);return e},w=(e,n)=>Pe(e,Fe(n));var ne=(e,n,r)=>new Promise((y,g)=>{var m=o=>{try{i(r.next(o))}catch(T){g(T)}},f=o=>{try{i(r.throw(o))}catch(T){g(T)}},i=o=>o.done?y(o.value):Promise.resolve(o.value).then(m,f);i((r=r.apply(e,n)).next())});import{useRef as Ne}from"react";import{useDidUpdate as fe,useDidMount as $e}from"@better-typed/react-lifecycle-hooks";import{useDebounce as Se,useThrottle as Ge}from"@better-typed/react-performance-hooks";import{Command as Ee,getCommandKey as Je}from"@better-typed/hyper-fetch";import{useRef as K}from"react";import{useWillUnmount as Me}from"@better-typed/react-lifecycle-hooks";var _=({command:e,dispatcher:n,logger:r,actions:y,setCacheData:g})=>{let{cache:m,commandManager:f}=e.builder,i=K(null),o=K(null),T=K(null),C=K(null),R=K(null),E=K(null),u=K(null),b=K(null),v=K(null),h=K(new Map),U=K(null),P=t=>{let s=h.current.get(t);s==null||s.unmount(),h.current.delete(t)},O=()=>{let t=h.current;Array.from(t.values()).forEach(c=>{c.unmount()}),t.clear()},x=(t,s,c)=>{var I,B,$,N,Y;let{isOffline:L,isFailed:A,isCanceled:G}=c;e.offline&&L&&A?(r.debug("Performing offline error callback",{data:s,details:c}),(I=C.current)==null||I.call(C,{response:s[1],command:t,details:c})):G?(r.debug("Performing abort callback",{data:s,details:c}),(B=T.current)==null||B.call(T,{response:s[1],command:t,details:c})):A?(r.debug("Performing error callback",{data:s,details:c}),(N=o.current)==null||N.call(o,{response:s[1],command:t,details:c})):(r.debug("Performing success callback",{data:s,details:c}),($=i.current)==null||$.call(i,{response:s[0],command:t,details:c})),(Y=R.current)==null||Y.call(R,{response:s,command:t,details:c})},a=t=>({isLoading:s})=>{let c=!s&&!n.hasRunningRequests(t);(s||c)&&y.setLoading(s,!1)},p=(t,s)=>{var c;(c=b.current)==null||c.call(b,t,s)},l=(t,s)=>{var c;(c=v.current)==null||c.call(v,t,s)},S=t=>s=>{var c;(c=E.current)==null||c.call(E,{command:t,details:s})},F=t=>s=>{var c;(c=u.current)==null||c.call(u,{command:t,details:s})},k=t=>(s,c)=>{x(t,s,c)},j=({requestId:t})=>{P(t)},z=()=>{var t;(t=U.current)==null||t.unmount(),U.current=null},M=t=>{let s=f.events.onLoading(t.queueKey,a(t.queueKey)),c=m.events.onData(t.cacheKey,g),L=()=>{s(),c()};return z(),U.current={unmount:L},L},ee=(t,s)=>{if(!s){let{queueKey:N,cacheKey:Y}=t,Q=f.events.onRequestStart(N,S(t)),J=f.events.onResponseStart(N,F(t)),re=f.events.onUploadProgress(N,l),ue=f.events.onDownloadProgress(N,p),ce=f.events.onResponse(Y,k(t)),oe=()=>{ue(),re(),Q(),J(),ce()};return h.current.set(N,{unmount:oe}),oe}let c=f.events.onRemoveById(s,j),L=f.events.onRequestStartById(s,S(t)),A=f.events.onResponseStartById(s,F(t)),G=f.events.onResponseById(s,k(t)),I=f.events.onUploadProgressById(s,l),B=f.events.onDownloadProgressById(s,p),$=()=>{c(),B(),I(),L(),A(),G()};return h.current.set(s,{unmount:$}),$},te=()=>{let{abortKey:t}=e;n.getAllRunningRequest().forEach(c=>{c.command.abortKey===t&&n.delete(c.command.queueKey,c.requestId,t)})};return Me(()=>{O(),z()}),[{abort:te,onSuccess:t=>{i.current=t},onError:t=>{o.current=t},onAbort:t=>{T.current=t},onOfflineError:t=>{C.current=t},onFinished:t=>{R.current=t},onRequestStart:t=>{E.current=t},onResponseStart:t=>{u.current=t},onDownloadProgress:t=>{b.current=t},onUploadProgress:t=>{v.current=t}},{addDataListener:M,clearDataListener:z,addLifecycleListeners:ee,removeLifecycleListener:P,clearLifecycleListeners:O}]};var H={data:null,error:null,loading:!1,status:null,retries:0,timestamp:null};import{useRef as Re}from"react";import{useDidUpdate as xe,useForceUpdate as Be}from"@better-typed/react-lifecycle-hooks";var he=e=>{let n=Object.prototype.toString.call(e);return Array.isArray(e)?!e.length:typeof e=="object"&&e!==null&&n==="[object Object]"?!Object.keys(e).length:!1},se=(e,n)=>{let r=Object.prototype.toString.call(e),y=Object.prototype.toString.call(n),g=typeof e,m=typeof n,f=o=>g===o&&m===o,i=o=>r===o&&y===o;return r!==y?!1:e===null&&n===null||f("number")&&Number.isNaN(e)&&Number.isNaN(n)||he(e)&&he(n)?!0:Array.isArray(e)&&Array.isArray(n)?e.length!==n.length?!1:!e.some((o,T)=>!se(o,n[T])):f("object")&&i("[object Object]")?Object.keys(e).length!==Object.keys(n).length?!1:!Object.entries(e).some(([o,T])=>!se(T,n[o])):e instanceof Date&&n instanceof Date?+e==+n:e===n};var ae=e=>w(d({},e),{throttle:void 0,debounce:void 0});var X=(e,n)=>d({retries:(e==null?void 0:e.retries)||0,timestamp:+new Date,isFailed:!1,isCanceled:!1,isOffline:!1},n),me=(e,n)=>n?+new Date>+n+e:!0,Ae=(e,n,r)=>!me(e.cacheTime,r==null?void 0:r.details.timestamp)&&r?r:n?{data:n,details:X(),cacheTime:1e3,clearKey:e.builder.cache.clearKey}:null,Le=e=>e?new Date(e):null,de=(e,n,r)=>{var T,C,R;let{builder:y,cacheKey:g}=r,{cache:m}=y,f=m.get(g),i=Ae(r,e,f),o=n.hasRunningRequests(r.queueKey);return w(d({},H),{data:((T=i==null?void 0:i.data)==null?void 0:T[0])||H.data,error:((C=i==null?void 0:i.data)==null?void 0:C[1])||H.error,status:((R=i==null?void 0:i.data)==null?void 0:R[2])||H.status,retries:(i==null?void 0:i.details.retries)||H.retries,timestamp:Le((i==null?void 0:i.details.timestamp)||H.timestamp),loading:o})};var V=({command:e,dispatcher:n,initialData:r,deepCompare:y,dependencyTracking:g,defaultCacheEmitting:m=!0})=>{let{builder:f,cacheKey:i,queueKey:o,cacheTime:T}=e,{cache:C,commandManager:R}=f,E=Be(),u=Re(de(r,n,e)),b=Re([]),v=()=>{let a=C.get(i);return me(T,(a==null?void 0:a.details.timestamp)||u.current.timestamp)},h=a=>{b.current.some(l=>a.includes(l))&&E()},U=a=>{b.current.includes(a)||b.current.push(a)};xe(()=>{u.current.loading=n.hasRunningRequests(o);let a=de(r,n,e),p=(r==null?void 0:r[0])===u.current.data,l=!!(u.current.data||u.current.error)&&!p,S=!l&&u.current.data,F=l&&!u.current.data;(S||F)&&(u.current=a)},[i,o],!0),xe(()=>{(()=>{g||Object.keys(u.current).forEach(p=>U(p))})()},[g],!0);let P=(a,p)=>typeof y=="function"?y(a,p):y?se(a,p):!1,O=a=>ne(void 0,null,function*(){let p={data:a.data[0],error:a.data[1],status:a.data[2],retries:a.details.retries,timestamp:new Date(a.details.timestamp),loading:u.current.loading},l=Object.keys(p).filter(S=>{let F=S,k=u.current[F],j=p[F];return!P(k,j)});u.current=d(d({},u.current),p),h(l)}),x={setData:(a,p=m)=>{if(p){let l=u.current;C.set(e,[a,l.error,l.status],X(u.current))}else u.current.data=a,h(["data"])},setError:(a,p=m)=>{if(p){let l=u.current;C.set(e,[l.data,a,l.status],X(u.current,{isFailed:!!a}))}else u.current.error=a,h(["error"])},setLoading:(a,p=!0)=>{p?R.events.emitLoading(o,"",{queueKey:o,requestId:"",isLoading:a,isRetry:!1,isOffline:!1}):(u.current.loading=a,h(["loading"]))},setStatus:(a,p=m)=>{if(p){let l=u.current;C.set(e,[l.data,l.error,a],X(u.current))}else u.current.status=a,h(["status"])},setRetries:(a,p=m)=>{if(p){let l=u.current;C.set(e,[l.data,l.error,l.status],X(u.current,{retries:a}))}else u.current.retries=a,h(["retries"])},setTimestamp:(a,p=m)=>{if(p){let l=u.current;C.set(e,[l.data,l.error,l.status],X(u.current,{timestamp:+a}))}else u.current.timestamp=a,h(["timestamp"])}};return[u.current,x,{setRenderKey:U,setCacheData:O,getStaleStatus:v}]};import Qe,{useContext as Ke,useMemo as Kt,useState as jt}from"react";var je=Qe.createContext([{},()=>null]);var W=()=>Ke(je);var rn=(e,n=q)=>{let[r]=W(),{dependencies:y=q.dependencies,disabled:g=q.disabled,dependencyTracking:m=q.dependencyTracking,revalidateOnMount:f=q.revalidateOnMount,initialData:i=q.initialData,refresh:o=q.refresh,refreshTime:T=q.refreshTime,refreshBlurred:C=q.refreshBlurred,refreshOnBlur:R=q.refreshOnBlur,refreshOnFocus:E=q.refreshOnFocus,refreshOnReconnect:u=q.refreshOnReconnect,bounce:b=q.bounce,bounceType:v=q.bounceType,bounceTime:h=q.bounceTime,deepCompare:U=q.deepCompare}=d(d(d({},q),r.useFetchConfig),n),P=JSON.stringify(e.dump()),O=Se(h),x=Ge(h),a=Se(T),{cacheKey:p,queueKey:l,builder:S}=e,{cache:F,fetchDispatcher:k,appManager:j,loggerManager:z}=S,M=Ne(z.init("useFetch")).current,ee=v==="throttle"?x:O,te=v==="throttle"?x.throttle:O.debounce,[t,s,{setRenderKey:c,setCacheData:L,getStaleStatus:A}]=V({logger:M,command:e,dispatcher:k,initialData:i,deepCompare:U,dependencyTracking:m}),[G,I]=_({logger:M,actions:s,command:e,dispatcher:k,setCacheData:L}),{addDataListener:B,addLifecycleListeners:$,clearDataListener:N,clearLifecycleListeners:Y}=I,Q=()=>{g?M.debug("Cannot add to fetch queue",{disabled:g}):(M.debug("Fetching data"),k.add(e))};function J(){if(!o)return;let D=Oe(T,t.timestamp);M.debug(`Starting refresh counter, request will be send in ${D}ms`),a.debounce(()=>{let Z=!j.isFocused,ie=k.hasRunningRequests(e.queueKey),pe=k.getIsActiveQueue(e.queueKey),le=ie||pe;(Z&&C&&!le||!Z&&!le)&&(Q(),M.debug("Performing refresh request")),J()},D)}let re=D=>{D&&D instanceof Ee?F.revalidate(Je(D)):D&&!(D instanceof Ee)&&F.revalidate(D)},ue=D=>{D&&Array.isArray(D)?D.forEach(re):D&&!Array.isArray(D)?re(D):(Q(),J())},ce=()=>{let D=A(),Z=k.getIsActiveQueue(l);(f||D&&!Z)&&Q()},oe=()=>{b?(M.debug(`Bounce request with ${v}`,{queueKey:l,command:e}),te(()=>Q())):Q()};return fe(()=>{B(e),$(e);let D=j.events.onFocus(()=>{E&&(Q(),J())}),Z=j.events.onBlur(()=>{R&&(Q(),J())}),ie=j.events.onOnline(()=>{u&&(Q(),J())}),pe=F.events.onRevalidate(p,Q);return()=>{N(),Y(),D(),Z(),ie(),pe()}},[P],!0),$e(ce),fe(oe,[P,...y]),fe(J,[P,...y,g,o,T],!0),w(d(d({get data(){return c("data"),t.data},get error(){return c("error"),t.error},get loading(){return c("loading"),t.loading},get status(){return c("status"),t.status},get retries(){return c("retries"),t.retries},get timestamp(){return c("timestamp"),t.timestamp},bounce:ae(ee)},s),G),{revalidate:ue})};var Oe=(e,n)=>{if(n){let r=Date.now()-+n;return r<e?e-r:e}return e};import{DateInterval as We}from"@better-typed/hyper-fetch";var q={dependencies:[],disabled:!1,dependencyTracking:!0,revalidateOnMount:!0,initialData:null,refresh:!1,refreshTime:We.hour,refreshBlurred:!0,refreshOnBlur:!1,refreshOnFocus:!1,refreshOnReconnect:!1,bounce:!1,bounceType:"debounce",bounceTime:400,deepCompare:!0};import{useRef as De}from"react";import{Command as ve,getCommandKey as ze,commandSendRequest as He}from"@better-typed/hyper-fetch";import{useDidMount as Xe}from"@better-typed/react-lifecycle-hooks";import{useDebounce as Ye,useThrottle as Ze}from"@better-typed/react-performance-hooks";var Fn=(e,n=Te)=>{let[r]=W(),{disabled:y,dependencyTracking:g,initialData:m,bounce:f,bounceType:i,bounceTime:o,deepCompare:T}=d(d(d({},Te),r.useSubmitConfig),n),{builder:C}=e,{cache:R,submitDispatcher:E,loggerManager:u}=C,b=De(u.init("useSubmit")).current,v=Ye(o),h=Ze(o),U=De(()=>null),P=i==="throttle"?h:v,O=i==="throttle"?h.throttle:v.debounce,[x,a,{setRenderKey:p,setCacheData:l}]=V({logger:b,command:e,dispatcher:E,initialData:m,deepCompare:T,dependencyTracking:g}),[S,F]=_({logger:b,actions:a,command:e,dispatcher:E,setCacheData:l}),{addDataListener:k,addLifecycleListeners:j}=F,z=(...t)=>{let s=t[0],c=e.clone(s);if(y)throw b.warning("Cannot submit request",{disabled:y,submitOptions:s}),new Error("Cannot submit request. Option 'disabled' is enabled");let L=()=>(k(c),He(c,w(d({dispatcherType:"submit"},s),{onSettle:(A,G)=>{var I;j(c,A),(I=s==null?void 0:s.onSettle)==null||I.call(s,A,G)}})));return new Promise(A=>{(()=>ne(void 0,null,function*(){if(b.debug("Submitting request",{disabled:y,submitOptions:s}),f){let I=U.current;U.current=B=>{I(B),A(B)},O(()=>ne(void 0,null,function*(){let B=U.current;U.current=()=>null;let $=yield L();B($)}))}else{let I=yield L();A(I)}}))()})},M=t=>{t&&t instanceof ve?R.revalidate(ze(t)):t&&!(t instanceof ve)&&R.revalidate(t)},ee=t=>{!t||(t&&Array.isArray(t)?t.forEach(M):t&&!Array.isArray(t)&&M(t))},te={onSubmitSuccess:S.onSuccess,onSubmitError:S.onError,onSubmitFinished:S.onFinished,onSubmitRequestStart:S.onRequestStart,onSubmitResponseStart:S.onResponseStart,onSubmitDownloadProgress:S.onDownloadProgress,onSubmitUploadProgress:S.onUploadProgress,onSubmitOfflineError:S.onOfflineError,onSubmitAbort:S.onAbort};return Xe(()=>{k(e)}),w(d(d({submit:z,get data(){return p("data"),x.data},get error(){return p("error"),x.error},get submitting(){return p("loading"),x.loading},get status(){return p("status"),x.status},get retries(){return p("retries"),x.retries},get timestamp(){return p("timestamp"),x.timestamp},abort:S.abort},a),te),{bounce:ae(P),revalidate:ee})};var Te={disabled:!1,dependencyTracking:!0,initialData:null,bounce:!1,bounceType:"debounce",bounceTime:400,deepCompare:!0};import{useState as Ue,useRef as _e}from"react";import{getCommandDispatcher as Ve}from"@better-typed/hyper-fetch";import{useDidMount as et,useDidUpdate as tt}from"@better-typed/react-lifecycle-hooks";var Xn=(e,n=ye)=>{let[r]=W(),{queueType:y="auto"}=d(d(d({},ye),r.useQueueConfig),n),{abortKey:g,queueKey:m,builder:f}=e,{commandManager:i}=f,[o]=Ve(e,y),T=_e(null),[C,R]=Ue(!1),[E,u]=Ue([]),b=O=>O.map(x=>w(d({},x),{stopRequest:()=>o.stopRequest(m,x.requestId),startRequest:()=>o.startRequest(m,x.requestId),deleteRequest:()=>o.delete(m,x.requestId,g)})),v=(O,x)=>{u(a=>a.map(p=>p.requestId===O?d(d({},p),x):p))},h=()=>{let O=o.getQueue(m);R(O.stopped),u(b(O.requests))},U=O=>{R(O.stopped),u(b(O.requests))},P=()=>{var S;let O=o.events.onQueueChange(m,U),x=o.events.onQueueStatus(m,U),a=i.events.onDownloadProgress(m,(F,{requestId:k})=>{v(k,{downloading:F})}),p=i.events.onUploadProgress(m,(F,{requestId:k})=>{v(k,{uploading:F})}),l=()=>{x(),O(),a(),p()};return(S=T.current)==null||S.call(T),T.current=l,l};return et(h),tt(P,[C,E,u,R],!0),{stopped:C,requests:E,stop:()=>o.stop(m),pause:()=>o.pause(m),start:()=>o.start(m)}};var ye={queueType:"auto"};import{useRef as nt}from"react";import{getCommandDispatcher as rt,Command as ot,getCommandKey as st}from"@better-typed/hyper-fetch";var pr=(e,n=ge)=>{let{cacheKey:r,builder:y}=e,{cache:g,loggerManager:m}=y,f=nt(m.init("useCache")).current,[i]=rt(e),[o]=W(),{dependencyTracking:T,initialData:C,deepCompare:R}=d(d(d({},ge),o.useCacheConfig),n),[E,u,{setRenderKey:b,setCacheData:v}]=V({logger:f,command:e,dispatcher:i,initialData:C,deepCompare:R,dependencyTracking:T}),[h]=_({logger:f,actions:u,command:e,dispatcher:i,setCacheData:v}),U=P=>{P instanceof ot?g.revalidate(st(P,!0)):P?g.revalidate(P):g.revalidate(r)};return w(d({get data(){return b("data"),E.data},get error(){return b("error"),E.error},get loading(){return b("loading"),E.loading},get status(){return b("status"),E.status},get retries(){return b("retries"),E.retries},get timestamp(){return b("timestamp"),E.timestamp},onCacheError:h.onError,onCacheSuccess:h.onSuccess,onCacheChange:h.onFinished},u),{revalidate:U})};var ge={dependencyTracking:!0,initialData:null,deepCompare:!0};import{useState as ke}from"react";import{useDidMount as at}from"@better-typed/react-lifecycle-hooks";var br=e=>{let[n,r]=ke(e.appManager.isOnline),[y,g]=ke(e.appManager.isFocused),m=()=>{let o=e.appManager.events.onOnline(()=>r(!0)),T=e.appManager.events.onOffline(()=>r(!1)),C=e.appManager.events.onFocus(()=>g(!0)),R=e.appManager.events.onBlur(()=>g(!1));return()=>{o(),T(),C(),R()}},f=o=>{e.appManager.setOnline(o)},i=o=>{e.appManager.setFocused(o)};return at(m),{isOnline:n,isFocused:y,setOnline:f,setFocused:i}};export{ae as getBounceData,X as getDetailsState,de as getInitialState,Oe as getRefreshTime,Le as getTimestamp,Ae as getValidCacheData,H as initialState,he as isEmpty,se as isEqual,me as isStaleCacheData,br as useAppManager,pr as useCache,ge as useCacheDefaultOptions,_ as useCommandEvents,rn as useFetch,q as useFetchDefaultOptions,Xn as useQueue,ye as useQueueDefaultOptions,Fn as useSubmit,Te as useSubmitDefaultOptions,V as useTrackedState};
//# sourceMappingURL=index.esm.js.map
{
"name": "@better-typed/react-hyper-fetch",
"version": "1.4.0",
"version": "1.5.0",
"private": false,

@@ -5,0 +5,0 @@ "description": "React hooks and utils for the hyper-fetch",

import React from "react";
import { CommandInstance } from "@better-typed/hyper-fetch";
import { UseFetchOptionsType } from "use-fetch";
import { UseSubmitOptionsType } from "use-submit";
import { UseCacheOptionsType } from "use-cache";
import { UseQueueOptionsType } from "use-queue";
import { UseFetchOptionsType } from "hooks/use-fetch";
import { UseSubmitOptionsType } from "hooks/use-submit";
import { UseCacheOptionsType } from "hooks/use-cache";
import { UseQueueOptionsType } from "hooks/use-queue";

@@ -9,0 +9,0 @@ export type ConfigProviderOptionsType = {

@@ -1,7 +0,8 @@

export * from "./use-fetch";
export * from "./use-submit";
export * from "./use-queue";
export * from "./use-cache";
export * from "./use-app-manager";
export * from "./hooks/use-fetch";
export * from "./hooks/use-submit";
export * from "./hooks/use-queue";
export * from "./hooks/use-cache";
export * from "./hooks/use-app-manager";
export * from "./helpers";
export * from "./utils/deep-equal.utils";
export * from "./types";
export * from "./utils";

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc