UNPKG

react-query

Version:

Hooks for managing, caching and syncing asynchronous and remote data in React

3 lines (2 loc) 15.9 kB
import e from"react";function r(){return(r=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function t(e,r){if(null==e)return{};var t,n,u={},i=Object.keys(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||(u[t]=e[t]);return u}var n="idle",u="loading",i="error",o="success",c=0,a=function(){return c++},s={},f="undefined"==typeof window,l=function(){},d=console||{error:l,warn:l,log:l};function h(e){d=e}function v(r){var t=e.useRef();return t.current=r,e.useCallback((function(){return t.current}),[])}function y(e,r){return"function"==typeof e?e(r):e}function p(e,r){return w(r)?Object.assign.apply(Object,[{}].concat(Object.keys(r).sort().map((function(e){var t;return(t={})[e]=r[e],t})))):r}function g(e){return JSON.stringify(e,p)}function w(e){return e&&"object"==typeof e&&!Array.isArray(e)}function m(){return"undefined"==typeof document||void 0===document.visibilityState||"visible"===document.visibilityState||"prerender"===document.visibilityState}function q(e){if(w(e[0])){if(e[0].hasOwnProperty("queryKey")&&e[0].hasOwnProperty("queryFn")){var r=e[0],t=r.queryKey,n=r.variables,u=void 0===n?[]:n,i=r.queryFn,o=r.config;return[t,u,i,void 0===o?{}:o]}throw new Error("queryKey and queryFn keys are required.")}if("function"==typeof e[2]){var c=e[0],a=e[1],s=void 0===a?[]:a,f=e[2],l=e[3];return[c,s,f,void 0===l?{}:l]}var d=e[0],h=e[1],v=e[2];return[d,[],h,void 0===v?{}:v]}function b(r){var t=e.useRef(!1);return e[f?"useEffect":"useLayoutEffect"]((function(){return t.current=!0,function(){return t.current=!1}}),[]),e.useCallback((function(){return t.current?r.apply(void 0,arguments):void 0}),[r])}var S=e.createContext(),F={current:{retry:3,retryDelay:function(e){return Math.min(1e3*Math.pow(2,e),3e4)},staleTime:0,cacheTime:3e5,refetchAllOnWindowFocus:!0,refetchInterval:!1,suspense:!1,queryKeySerializerFn:function e(r){if(!r)return[];if("function"==typeof r)try{return e(r())}catch(e){return[]}"string"==typeof r&&(r=[r]);var t=g(r);return r=JSON.parse(t),[t,r]},queryFnParamsFilter:function(e){return e},throwOnError:!1,useErrorBoundary:void 0,onSuccess:l,onError:l,onSettled:l,refetchOnMount:!0}};function E(){return e.useContext(S)||F.current}function O(t){var n=t.config,u=t.children,i=e.useContext(S),o=e.useMemo((function(){var e=r({},i||F.current,{},n);return void 0===e.useErrorBoundary&&(e.useErrorBoundary=e.suspense),e}),[n,i]);return i||(F.current=o),e.createElement(S.Provider,{value:o},u)}function P(e,r,t){return t?r?r(e):e:(e&&e.then||(e=Promise.resolve(e)),r?e.then(r):e)}function C(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}function I(e){return function(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];try{return Promise.resolve(e.apply(this,r))}catch(e){return Promise.reject(e)}}}function M(e,r){var t=e();return t&&t.then?t.then(r):r(t)}var D=function(){var e=[],n={queries:{},isFetching:0},u=function(){n.isFetching=Object.values(D.queries).reduce((function(e,r){return r.state.isFetching?e+1:e}),0),e.forEach((function(e){return e(n)}))};n.subscribe=function(r){return e.push(r),function(){e.splice(e.indexOf(r),1)}},n.clear=function(){n.queries={},u()};var i=function(e,r){var t=(void 0===r?{}:r).exact;if("function"!=typeof e){var u=F.current.queryKeySerializerFn(e),i=u[0],o=u[1];e=function(e){return t?e.queryHash===i:function e(r,t){return typeof r==typeof t&&("object"==typeof r?!Object.keys(t).some((function(n){return!e(r[n],t[n])})):r===t)}(e.queryKey,o)}}return Object.values(n.queries).filter(e)};return n.getQueries=i,n.getQuery=function(e){return i(e,{exact:!0})[0]},n.getQueryData=function(e){var r;return null==(r=n.getQuery(e))?void 0:r.state.data},n.removeQueries=function(e,r){var t=(void 0===r?{}:r).exact,o=i(e,{exact:t});o.forEach((function(e){clearTimeout(e.staleTimeout),delete n.queries[e.queryHash]})),o.length&&u()},n.refetchQueries=I((function(e,r){var t=void 0===r?{}:r,u=t.exact,o=t.throwOnError,c=t.force,a=!0===e?Object.values(n.queries):i(e,{exact:u});return C((function(){return P(Promise.all(a.map((function(e){return e.fetch({force:c})}))))}),(function(e){if(o)throw e}))})),n._buildQuery=function(e,t,i,o){var c=o.queryKeySerializerFn(e),a=c[0],d=c[1],h=n.queries[a];return h?(Object.assign(h,{queryVariables:t,queryFn:i}),Object.assign(h.config,o)):((h=function(e){var t=e.config.queryReducer||R,i=void 0===e.queryHash,o="function"==typeof e.config.initialData?e.config.initialData():e.config.initialData,c=void 0!==o,a=!!i||!c,f=e.config.manual,d=r({},e,{instances:[],state:t(void 0,{type:j,initialStatus:i||f||c?"success":"loading",initialData:o,hasInitialData:c,isStale:a,manual:f})}),h=function(e){d.state=t(d.state,e),d.instances.forEach((function(e){return e.onStateUpdate(d.state)})),u()};d.scheduleStaleTimeout=function(){d.config.staleTime!==1/0&&(d.staleTimeout=setTimeout((function(){h({type:T})}),d.config.staleTime))},d.scheduleGarbageCollection=function(){d.cacheTimeout=setTimeout((function(){n.removeQueries((function(e){return e.queryHash===d.queryHash}))}),void 0===d.state.data&&"error"!==d.state.status?0:d.config.cacheTime)},d.heal=function(){clearTimeout(d.cacheTimeout),d.cancelled=null},d.subscribe=function(e){var t=d.instances.find((function(r){return r.id===e.id}));return t?Object.assign(t,e):(t=r({onStateUpdate:l},e),d.instances.push(e)),d.heal(),function(){d.instances=d.instances.filter((function(r){return r.id!==e.id})),d.instances.length||(d.cancelled=s,d.cancelQueries&&d.cancelQueries(),d.scheduleGarbageCollection())}};var v=I((function(e){for(var r=arguments.length,t=new Array(r>1?r-1:0),n=1;n<r;n++)t[n-1]=arguments[n];return C((function(){var r=e.apply(void 0,d.config.queryFnParamsFilter(t));return d.cancelQueries=function(){return null==r.cancel?void 0:r.cancel()},P(r,(function(e){if(delete d.cancelQueries,d.cancelled)throw d.cancelled;return e}))}),(function(r){var n=!1;if(delete d.cancelQueries,d.cancelled)throw d.cancelled;return h({type:Q}),M((function(){if(!0===d.config.retry||d.state.failureCount<=d.config.retry){if(!m())return d.shouldContinueRetryOnFocus=!0,n=!0,new Promise(l);delete d.shouldContinueRetryOnFocus;var r=y(d.config.retryDelay,d.state.failureCount);return n=!0,P(new Promise((function(n,u){setTimeout(I((function(){return d.cancelled?u(d.cancelled):C((function(){return P(v.apply(void 0,[e].concat(t)),(function(e){if(d.cancelled)return u(d.cancelled);n(e)}))}),(function(e){if(d.cancelled)return u(d.cancelled);u(e)}))})),r)})))}}),(function(e){if(n)return e;throw r}))}))}));return d.fetch=I((function(e){var r=void 0===e?{}:e,t=r.force,n=r.__queryFn,u=void 0===n?d.queryFn:n;if(d.queryHash&&(d.state.isStale||t))return d.promise||(d.promise=I((function(){return d.cancelled=null,C((function(){return h({type:x}),P(v.apply(void 0,[u].concat(d.queryKey,d.queryVariables)),(function(e){return d.setData(e),d.instances.forEach((function(e){return e.onSuccess&&e.onSuccess(d.state.data)})),d.instances.forEach((function(e){return e.onSettled&&e.onSettled(d.state.data,null)})),delete d.promise,e}))}),(function(e){h({type:A,cancelled:e===d.cancelled,error:e}),delete d.promise,e!==d.cancelled&&(d.instances.forEach((function(r){return r.onError&&r.onError(e)})),d.instances.forEach((function(r){return r.onSettled&&r.onSettled(void 0,e)})))}))}))()),d.promise})),d.setData=function(e){h({type:k,updater:e}),clearTimeout(d.staleTimeout),d.scheduleStaleTimeout()},d}({queryKey:d,queryHash:a,queryVariables:t,queryFn:i,config:o})).state.data&&(h.scheduleStaleTimeout(),h.heal(),h.scheduleGarbageCollection()),h.queryHash&&(f||(n.queries[a]=h,u()))),h},n.prefetchQuery=I((function(){for(var e=!1,u=arguments.length,i=new Array(u),o=0;o<u;o++)i[o]=arguments[o];var c=q(i),a=c[0],s=c[1],f=c[2],l=c[3],d=l.force,h=t(l,["force"]);h=r({},F.current,{},h);var v=n._buildQuery(a,s,f,h);return M((function(){if(v.state.isStale||d)return C((function(){return P(v.fetch(),(function(r){return v.wasPrefetched=!0,e=!0,r}))}),(function(e){if(h.throwOnError)throw e}))}),(function(r){return e?r:v.state.data}))})),n.setQueryData=function(e,u,o){void 0===o&&(o={});var c=o,a=c.exact,s=t(c,["exact"]),f=i(e,{exact:a});f.length||"function"==typeof e||(f=[n._buildQuery(e,void 0,(function(){return new Promise(l)}),r({},F.current,{},s))]),f.forEach((function(e){return e.setData(u)}))},n}(),j={},Q={},T={},x={},k={},A={};function R(e,t){switch(t.type){case j:return{status:t.initialStatus,error:null,isFetching:!t.hasInitialData&&!t.manual,canFetchMore:!1,failureCount:0,isStale:t.isStale,data:t.initialData,updatedAt:t.hasInitialData?Date.now():0};case Q:return r({},e,{failureCount:e.failureCount+1});case T:return r({},e,{isStale:!0});case x:return r({},e,{status:"error"===e.status?"loading":e.status,isFetching:!0,failureCount:0});case k:return r({},e,{status:"success",data:y(t.updater,e.data),error:null,isStale:!1,isFetching:!1,canFetchMore:t.canFetchMore,updatedAt:Date.now(),failureCount:0});case A:return r({},e,{isFetching:!1},!t.cancelled&&{status:"error",error:t.error,isStale:!0});default:throw new Error}}var H,K=function(){var e=F.current.refetchAllOnWindowFocus;m()&&(void 0===navigator.onLine||navigator.onLine)&&D.refetchQueries((function(r){return!!r.instances.length&&(r.shouldContinueRetryOnFocus?(delete r.promise,!0):void 0===r.config.refetchOnWindowFocus?e:r.config.refetchOnWindowFocus)})).catch(d.error)};function L(e){H&&H(),H=e(K)}function V(){var r=e.useState({}),t=r[0],n=r[1];return e.useEffect((function(){return D.subscribe((function(){return n({})}))}),[]),e.useMemo((function(){return t&&D.isFetching}),[t])}function _(e,r,t){return t?r?r(e):e:(e&&e.then||(e=Promise.resolve(e)),r?e.then(r):e)}L((function(e){var r;if(!f&&(null==(r=window)?void 0:r.addEventListener))return window.addEventListener("visibilitychange",e,!1),window.addEventListener("focus",e,!1),function(){window.removeEventListener("visibilitychange",e),window.removeEventListener("focus",e)}}));var B=function(){return{status:"idle",data:void 0,error:null}};var W={};var z={},G={},U={};function J(e,r){if(r.type===W)return{status:"idle",data:void 0,error:null};if(r.type===z)return{status:"loading"};if("loading"===e.status&&r.type===G)return{status:"success",data:r.data};if("loading"===e.status&&r.type===U)return{status:"error",error:r.error};throw new Error}function N(t,n){void 0===n&&(n={});var u,i=e.useReducer(J,null,B),o=i[0],c=b(i[1]),s=v(t),f=v(r({},E(),{},n)),l=e.useRef(),h=e.useCallback((u=function(e,t){void 0===t&&(t={});var n=r({},f(),{},t),u=a();return l.current=u,c({type:z}),function(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}((function(){return _(s()(e),(function(e){return _(n.onSuccess(e),(function(){return _(n.onSettled(e,null),(function(){return l.current===u&&c({type:G,data:e}),e}))}))}))}),(function(e){return d.error(e),_(n.onError(e),(function(){return _(n.onSettled(void 0,e),(function(){if(l.current===u&&c({type:U,error:e}),n.throwOnError)throw e}))}))}))},function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];try{return Promise.resolve(u.apply(this,e))}catch(e){return Promise.reject(e)}}),[c,f,s]),y=e.useCallback((function(){return c({type:W})}),[c]);return e.useEffect((function(){if(f().useErrorBoundary&&o.error)throw o.error}),[f,o.error]),[h,r({},o,{reset:y})]}function X(n,u,i,o){void 0===o&&(o={});var c,s=(null===(c=e.useRef(null)).current&&(c.current=a()),c.current);o=r({},E(),{},o);var f=e.useRef(),l=D._buildQuery(n,u,i,o);f.current&&void 0===f.current.queryHash&&void 0===l.queryHash||(f.current=l);var h,y=f.current,p=b(e.useState()[1]),g=v(o),w=e.useCallback((h=function(e){void 0===e&&(e={});var r=e,n=r.throwOnError,u=t(r,["throwOnError"]);return function(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}((function(){return e=y.fetch(u),t?r?r(e):e:(e&&e.then||(e=Promise.resolve(e)),r?e.then(r):e);var e,r,t}),(function(e){if(n)throw e}))},function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];try{return Promise.resolve(h.apply(this,e))}catch(e){return Promise.reject(e)}}),[y]);return e.useEffect((function(){var e=y.subscribe({id:s,onStateUpdate:function(){return p({})},onSuccess:function(e){return g().onSuccess(e)},onError:function(e){return g().onError(e)},onSettled:function(e,r){return g().onSettled(e,r)}});return g().manual||y.wasPrefetched||y.wasSuspensed||!y.state.isStale||!g().refetchOnMount&&1!==y.instances.length||w().catch(d.error),y.wasPrefetched=!1,y.wasSuspensed=!1,e}),[g,s,y,w,p]),e.useEffect((function(){if(o.refetchInterval&&(!y.refetchInterval||o.refetchInterval<y.refetchInterval))return clearInterval(y.refetchInterval),y.refetchInterval=setInterval((function(){(m()||o.refetchIntervalInBackground)&&w().catch(d.error)}),o.refetchInterval),function(){clearInterval(y.refetchInterval),delete y.refetchInterval}}),[o.refetchInterval,o.refetchIntervalInBackground,y.refetchInterval,w]),r({},y.state,{config:o,query:y,refetch:w})}function Y(){for(var e=arguments.length,r=new Array(e),t=0;t<e;t++)r[t]=arguments[t];var n=X.apply(void 0,q(r));if(n.config.suspense){if("error"===n.status)throw n.error;if("loading"===n.status)throw n.wasSuspensed=!0,n.refetch()}return n}function Z(){for(var t=arguments.length,n=new Array(t),u=0;u<t;u++)n[u]=arguments[u];var i=q(n),o=i[0],c=i[1],a=i[2],s=i[3],f=void 0===s?{}:s,l=e.useRef();void 0!==l.current&&delete f.initialData;var d=X(o,c,a,f),h=d.data,v=d.status;e.useEffect((function(){"success"===v&&void 0!==h&&(l.current=h)}),[h,v]);var y=h;if(void 0===y&&(y=l.current),void 0!==y&&(v="success"),d.config.suspense){if("error"===d.status)throw d.error;if("loading"===d.status)throw d.wasSuspensed=!0,d.refetch()}return r({},d,{resolvedData:y,latestData:h,status:v})}function $(e,r,t){return t?r?r(e):e:(e&&e.then||(e=Promise.resolve(e)),r?e.then(r):e)}function ee(e){return function(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];try{return Promise.resolve(e.apply(this,r))}catch(e){return Promise.reject(e)}}}function re(e,r){if(e)throw r;return r}function te(e,r){try{var t=e()}catch(e){return r(!0,e)}return t&&t.then?t.then(r.bind(null,!1),r.bind(null,!0)):r(!1,t)}function ne(){for(var t=e.useRef(),n=arguments.length,u=new Array(n),i=0;i<n;i++)u[i]=arguments[i];var o=q(u),c=o[0],a=o[1],s=o[2],f=o[3],l=void 0===f?{}:f,d=l.getFetchMore,h=v(d),y=s,p=X(c,a,s=ee((function(){return $(Promise.all(t.current.query.pageVariables.map((function(e){return y.apply(void 0,e)}))),(function(e){return t.current.query.canFetchMore=h()(e[e.length-1],e),e}))})),l);t.current=p;var g=p.refetch,w=p.data,m=void 0===w?[]:w,b=p.query.canFetchMore;p.query.pageVariables||(p.query.pageVariables=[[].concat(p.query.queryKey,p.query.queryVariables)]);var S=e.useCallback((function(e){return void 0===e&&(e=t.current.query.canFetchMore),g({force:!0,__queryFn:ee((function(){for(var r=arguments.length,n=new Array(r),u=0;u<r;u++)n[u]=arguments[u];return te((function(){t.current.query.isFetchingMore=!0;var r=[].concat(n,[e]);t.current.query.pageVariables.push(r);var u=t.current.data;return $(y.apply(void 0,r),(function(e){var r=[].concat(u,[e]);return t.current.query.canFetchMore=h()(r[r.length-1],r),r}))}),(function(e,r){return t.current.query.isFetchingMore=!1,re(e,r)}))}))})}),[h,y,g]),F=e.useMemo((function(){return!!p.query.isFetchingMore}),[p.query.isFetchingMore]);if(p.config.suspense){if("error"===p.status)throw p.error;if("loading"===p.status)throw p.wasSuspensed=!0,p.refetch()}return r({},p,{data:m,canFetchMore:b,fetchMore:S,isFetchingMore:F})}export{O as ReactQueryConfigProvider,D as queryCache,h as setConsole,L as setFocusHandler,g as stableStringify,i as statusError,n as statusIdle,u as statusLoading,o as statusSuccess,ne as useInfiniteQuery,V as useIsFetching,N as useMutation,Z as usePaginatedQuery,Y as useQuery}; //# sourceMappingURL=react-query.min.mjs.map