UNPKG

jotai-query-toolkit

Version:

A toolkit for opinionated ways to use Jotai, react-query, and next.js

2 lines (1 loc) 13.2 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var qe=Object.defineProperty,Se=Object.defineProperties;var Ce=Object.getOwnPropertyDescriptors;var E=Object.getOwnPropertySymbols;var re=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable;var ne=(e,t,r)=>t in e?qe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Q=(e,t)=>{for(var r in t||(t={}))re.call(t,r)&&ne(e,r,t[r]);if(E)for(var r of E(t))oe.call(t,r)&&ne(e,r,t[r]);return e},x=(e,t)=>Se(e,Ce(t));var W=(e,t)=>{var r={};for(var o in e)re.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&E)for(var o of E(e))t.indexOf(o)<0&&oe.call(e,o)&&(r[o]=e[o]);return r};var _es6 = require('fast-deep-equal/es6'); var _es62 = _interopRequireDefault(_es6);var _jotai = require('jotai');var _utils = require('jotai/utils');var ae=()=>new WeakMap,ie=(e,t)=>{let r=e.get(t);if(r)return r},ue=(e,t,r)=>{e.get(t)||e.set(t,r)},$=(e,t)=>{for(;;){let[r,...o]=t,n=e.get(r);if(!n)return;if(!o.length)return n[1];e=n[0],t=o}},q=(e,t,r)=>{for(;;){let[o,...n]=t,a=e.get(o);if(a||(a=[new WeakMap],e.set(o,a)),!n.length){a[1]=r;return}e=a[0],t=n}},se=()=>{let e=new WeakMap;return(r,o)=>{let n=$(e,o);if(n)return n;let a=r();return q(e,o,a),a}};var ye=Symbol?Symbol.isConcatSpreadable:void 0;function ve(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":toString.call(e)}function Fe(e){return typeof e=="object"&&e!==null}function ke(e){return Fe(e)&&ve(e)=="[object Arguments]"}function me(e){return Array.isArray(e)||ke(e)||!!(ye&&e&&e[ye])}function b(e,t){let r=me(e)?e.flat():e,o=t?me(t)?t.flat(100):t:null;return o?[r,o].flat(100):r}var h=ae();function G(e){return`[jotai-query-toolkit] ${e}`}var _query = require('jotai/query');var _reactquery = require('react-query');var S=_utils.atomFamily.call(void 0, e=>{let t=_jotai.atom.call(void 0, void 0);return t.debugLabel=`initialDataAtom/${e}`,t},_es62.default);var k=typeof window=="undefined",ce,fe=typeof process=="object"&&((ce=process==null?void 0:process.env)==null?void 0:ce.NODE_ENV)!=="production",w= exports.QueryRefreshRates ={Default:1e4,Fast:5e3,RealTime:2e3,None:!1};var J=new (0, _reactquery.QueryClient)({defaultOptions:{queries:{cacheTime:1e3*60*60*12,notifyOnChangeProps:["data","error"]}}});var z=_jotai.atom.call(void 0, J),d= exports.getQueryClientAtom =e=>e(z);var g=_utils.atomFamily.call(void 0, e=>_jotai.atom.call(void 0, t=>{var a;if(!e)return;let r=d(t),o=((a=r.getQueryCache().find(e))==null?void 0:a.options)||{queryKey:e},n=r.defaultQueryObserverOptions(x(Q({},o),{notifyOnChangeProps:["isFetching","isIdle","isSuccess","isStale"]}));return new (0, _reactquery.QueryObserver)(r,n)}),_es62.default);var Je=(e,t,r)=>{let o=typeof t=="function"?t(e):t;return r?b(o,e(r)):b(o)},B= exports.atomWithQuery =(e,t,r={})=>{let o=_jotai.atom.call(void 0, a=>{let T=typeof r=="function"?r(a):r,{equalityFn:s=_es62.default,getShouldRefetch:u,queryKeyAtom:y,refetchInterval:m,refetchOnMount:f=!1,refetchOnWindowFocus:c=!1,refetchOnReconnect:K=!1}=T,O=W(T,["equalityFn","getShouldRefetch","queryKeyAtom","refetchInterval","refetchOnMount","refetchOnWindowFocus","refetchOnReconnect"]),l=Je(a,e,y),I=_reactquery.hashQueryKey.call(void 0, l),C=S(I),A=a(C),D=u&&A?u(A):!0,F=a(z),v=()=>D?m===!1?!1:m||w.Default:!1,R=F.defaultQueryOptions(x(Q({},O),{refetchInterval:v(),refetchOnMount:D?f:!1,refetchOnWindowFocus:D?c:!1,refetchOnReconnect:D?K:!1,initialData:A})),P=_query.atomWithQuery.call(void 0, V=>Q({queryKey:l,queryFn:U=>t(V,U)},R),d);return P.debugLabel=`atomWithQuery/queryAtom/${I}`,{queryKey:l,queryAtom:P,initialData:A}}),n=_jotai.atom.call(void 0, a=>{let{initialData:i,queryAtom:s,queryKey:u}=a(o);return q(h,[n],u),k?i:a(s)},(a,i,s)=>{var y;let{queryKey:u}=a(o);switch(s.type){case"refetch":{let m=a(g(u));m==null||m.refetch();break}case"setQueryData":{(y=d(a).getQueryCache().find(u))==null||y.setData(s.payload.data,s.payload.options);break}case"mutate":{d(a).executeMutation(s.payload);break}}});return n};var ze=(e,t,r,o)=>{let n=typeof t=="function"?t(e,r):t,a=r?_reactquery.hashQueryKey.call(void 0, r).slice(1,-1):void 0,i=_reactquery.hashQueryKey.call(void 0, n),s=i==null?void 0:i.includes(a);if(o){let u=e(o);return b(n,s?u:[r,u])}return s?b(n):b(n,r)};function M(e,t,r,o){let n=ze(e,t,r,o),a=_reactquery.hashQueryKey.call(void 0, n);return{queryKey:n,hashedQueryKey:a}}function Be(e,t){return _reactquery.hashQueryKey.call(void 0, b(e,t))}function le(e,t,r){return`${e}/${Be(t,r)}`}var Ye=(e,t,r={})=>{let o=se();return _utils.atomFamily.call(void 0, n=>{let a=_jotai.atom.call(void 0, s=>{typeof r=="function"&&(r=r(n,s));let c=r,{queryKeyAtom:u}=c,y=W(c,["queryKeyAtom"]),{queryKey:m}=M(s,e,n,u);return{queryAtom:B(m,(K,O)=>t(K,n,O),y),queryKey:m}}),i=o(()=>_jotai.atom.call(void 0, s=>{let{queryAtom:u,queryKey:y}=s(a);return q(h,[i],y),s(u)},(s,u,y)=>u(s(a).queryAtom,y)),[a]);return i.debugLabel=le("atomFamilyWithQuery","TODO:fix",n),i},_es62.default)};function he(e){if(!!e)return"pages"in e&&"pageParams"in e?e:{pages:[e],pageParams:[void 0]}}var rt=(e,t,r)=>{let o=typeof t=="function"?t(e):t;return r?b(o,e(r)):b(o)},H= exports.atomWithInfiniteQuery =(e,t,r={})=>{let o=_jotai.atom.call(void 0, a=>{let T=typeof r=="function"?r(a):r,{equalityFn:s=_es62.default,getShouldRefetch:u,queryKeyAtom:y,refetchInterval:m,refetchOnMount:f=!1,refetchOnWindowFocus:c=!1,refetchOnReconnect:K=!1}=T,O=W(T,["equalityFn","getShouldRefetch","queryKeyAtom","refetchInterval","refetchOnMount","refetchOnWindowFocus","refetchOnReconnect"]),l=rt(a,e,y),I=_reactquery.hashQueryKey.call(void 0, l),C=S(I),A=he(a(C)),D=u&&A?u(A):!0,v=d(a).defaultQueryOptions(O),R=()=>D?m===!1?!1:m||w.Default:!1,P=_query.atomWithInfiniteQuery.call(void 0, V=>x(Q({queryKey:l,queryFn:U=>t(V,U)},v),{initialData:A,refetchInterval:R(),refetchOnMount:D?f:!1,refetchOnWindowFocus:D?c:!1,refetchOnReconnect:D?K:!1}),d);return P.debugLabel=`atomWithInfiniteQuery/queryAtom/${I}`,{queryKey:l,queryAtom:P,initialData:A}}),n=_jotai.atom.call(void 0, a=>{let{initialData:i,queryAtom:s,queryKey:u}=a(o);return q(h,[n],u),k?i:a(s)},(a,i,s)=>i(a(o).queryAtom,s));return n};var at=(e,t,r={})=>_utils.atomFamily.call(void 0, o=>{let n=_jotai.atom.call(void 0, i=>{typeof r=="function"&&(r=r(o,i));let f=r,{queryKeyAtom:s}=f,u=W(f,["queryKeyAtom"]),{queryKey:y}=M(i,e,o,s);return{queryAtom:H(y,(c,K)=>t(c,o,K),u),queryKey:y}}),a=_jotai.atom.call(void 0, i=>{let{queryAtom:s,queryKey:u}=i(n);return ue(h,a,u),i(s)},(i,s,u)=>s(i(n).queryAtom,u));return a},_es62.default);var N=_utils.atomFamily.call(void 0, e=>_jotai.atom.call(void 0, t=>{var i;let r=d(t),o=((i=r.getQueryCache().find(e))==null?void 0:i.options)||{queryKey:e},n=r.defaultQueryObserverOptions(x(Q({},o),{notifyOnChangeProps:["isFetchingPreviousPage","isFetchingNextPage","hasNextPage","hasPreviousPage"]}));return new (0, _reactquery.InfiniteQueryObserver)(r,n)}),_es62.default);var ct=_utils.atomFamily.call(void 0, e=>_utils.atomWithDefault.call(void 0, t=>{let r=t(N(e)),{isFetchingPreviousPage:o,isFetchingNextPage:n,hasNextPage:a,hasPreviousPage:i}=r.getCurrentResult();return{isFetchingPreviousPage:o,isFetchingNextPage:n,hasNextPage:a,hasPreviousPage:i}}),_es62.default),X= exports.infiniteQueryKeyStatusAtom =_utils.atomFamily.call(void 0, e=>_jotai.atom.call(void 0, t=>{if(!e)throw Error("infiniteQueryKeyStatusAtom: no query key found");let r=ct(e),o=t(N(e)),n=()=>{throw new Error("infiniteQueryKeyStatusAtom: setting data without mount")},a=({isFetchingPreviousPage:i,isFetchingNextPage:s,hasNextPage:u,hasPreviousPage:y})=>n({isFetchingPreviousPage:i,isFetchingNextPage:s,hasNextPage:u,hasPreviousPage:y});return r.onMount=i=>(n=i,o.subscribe(a)),t(r)}),_es62.default);var Qt=_utils.atomFamily.call(void 0, e=>_utils.atomWithDefault.call(void 0, t=>{let r=t(g(e));if(!r)return{isLoading:!1,isFetching:!1,isIdle:!1,isSuccess:!1,isStale:!1};let{isFetching:o,isLoading:n,isIdle:a,isSuccess:i,isStale:s}=r==null?void 0:r.getCurrentResult();return{isLoading:n,isFetching:o,isIdle:a,isSuccess:i,isStale:s}}),_es62.default),Y= exports.queryKeyStatusAtom =_utils.atomFamily.call(void 0, e=>_jotai.atom.call(void 0, t=>{if(!e)throw Error("queryKeyObserver: no query key found");let r=Qt(e),o=t(g(e)),n=()=>{throw new Error("queryKeyObserver: setting data without mount")},a=({isFetching:i,isLoading:s,isIdle:u,isSuccess:y,isStale:m})=>n({isLoading:s,isFetching:i,isIdle:u,isSuccess:y,isStale:m});return r.onMount=i=>(n=i,o==null?void 0:o.subscribe(a)),t(r)}),_es62.default);var Z=new WeakMap,At=typeof process=="object"&&process.env.NODE_ENV==="development"&&typeof window!="undefined"&&"__REDUX_DEVTOOLS_EXTENSION__"in window,Dt=()=>{try{return window.__REDUX_DEVTOOLS_EXTENSION__}catch (e2){throw new Error("Please install or enable Redux Devtools")}},bt= exports.devtoolAtom =_utils.atomFamily.call(void 0, e=>_jotai.atom.call(void 0, t=>{if(!At)return;let r=!!e.write,o=_jotai.atom.call(void 0, !1),n=_jotai.atom.call(void 0, void 0),a=e.debugLabel||e.toString(),i=Dt(),s=Z.get(e),u=s||i.connect({name:a});s?s.shouldInit&&(u.shouldInit=!1,Z.set(e,u)):(u.shouldInit=!0,Z.set(e,u));let y,m=_jotai.atom.call(void 0, f=>{r&&(f(o)||u.send(`${a} - ${new Date().toLocaleString()}`,f(e)))},(f,c,K)=>{let O=l=>{var I,C,A,D,F,v;l.type==="DISPATCH"&&l.state?((((I=l.payload)==null?void 0:I.type)==="JUMP_TO_ACTION"||((C=l.payload)==null?void 0:C.type)==="JUMP_TO_STATE")&&c(o,!0),((A=l.payload)==null?void 0:A.type)!=="TOGGLE_ACTION"&&c(e,JSON.parse(l.state))):l.type==="DISPATCH"&&((D=l.payload)==null?void 0:D.type)==="COMMIT"?u.init(f(n)):l.type==="DISPATCH"&&((F=l.payload)==null?void 0:F.type)==="IMPORT_STATE"&&(((v=l.payload.nextLiftedState)==null?void 0:v.computedStates)||[]).forEach(({state:P},T)=>{T===0?u==null||u.init(P):c(e,P)})};switch(K.type){case"mount":y=r?u.subscribe(O):void 0,u.shouldInit&&u.init(f(e))}});m.onMount=f=>(f({type:"mount"}),()=>y==null?void 0:y()),t(m),r||u.send(`${a} - ${new Date().toLocaleString()}`,t(e))}),_es62.default);function Pt(e){return S(_reactquery.hashQueryKey.call(void 0, e))}function xt(e,t){let r=e(Pt(t));if(r)return r}function go(e,t){return _utils.atomFamily.call(void 0, r=>_jotai.atom.call(void 0, o=>{let n=typeof e=="function"?e(r):e;return _nullishCoalesce(xt(o,n), () => (t(r,o)))}))}function To(e,t){return function(o){return[typeof e=="function"?e(o):e,()=>t(o)]}}var _usememoone = require('use-memo-one');var gt=_jotai.atom.call(void 0, void 0),Tt=e=>e?X(e):gt;function qt(e){let t=_usememoone.useMemoOne.call(void 0, ()=>e,[e]),r=_utils.useAtomValue.call(void 0, t),o=ie(h,t),n=_usememoone.useCallbackOne.call(void 0, ()=>{o||console.warn(G(`no query key was found for ${t.debugLabel||t.toString()}`))},[o,t]),a=_usememoone.useMemoOne.call(void 0, ()=>Tt(o),[o]),i=_utils.useAtomValue.call(void 0, a),s=_utils.useAtomCallback.call(void 0, _usememoone.useCallbackOne.call(void 0, (f,c)=>{n(),c(t,{type:"fetchNextPage"})},[t])),u=_utils.useAtomCallback.call(void 0, _usememoone.useCallbackOne.call(void 0, (f,c)=>{n(),c(t,{type:"fetchPreviousPage"})},[t])),y=_utils.useAtomCallback.call(void 0, _usememoone.useCallbackOne.call(void 0, (f,c)=>{n(),c(t,{type:"refetch"})},[t])),m={isFetchingPreviousPage:(i==null?void 0:i.isFetchingPreviousPage)||!1,isFetchingNextPage:(i==null?void 0:i.isFetchingNextPage)||!1,hasNextPage:!!(i==null?void 0:i.hasNextPage)||!1,hasPreviousPage:!!(i==null?void 0:i.hasPreviousPage)||!1};return[r,Q({fetchNextPage:s,fetchPreviousPage:u,refetch:y},m)]}var _react = require('react');var Ct=_jotai.atom.call(void 0, void 0),vt=e=>e?Y(e):Ct;function te(e){fe&&console.error(G(`no query key was found for ${e.debugLabel||e.toString()||"UnknownAtom"}, is it an atomFamilyWithQuery atom?`))}function Ft(e){let t=_react.useMemo.call(void 0, ()=>e,[e]),r=_utils.useAtomValue.call(void 0, t),n=$(h,[t]);n||te(e);let a=_react.useMemo.call(void 0, ()=>vt(n),[n]),i=_utils.useAtomValue.call(void 0, a),s=_utils.useAtomCallback.call(void 0, _react.useCallback.call(void 0, async m=>{if(!n){te(e);return}let f=m(g(n));await(f==null?void 0:f.refetch())},[e,n])),u=_utils.useAtomCallback.call(void 0, _react.useCallback.call(void 0, async(m,f,c)=>{var O;if(!n){te(e);return}await((O=d(m).getQueryCache().find(n))==null?void 0:O.setData(c.data,c.options))},[e,n]));return[r,Q({refetch:s,setQueryData:u},i||{})]}exports.IS_SSR = k; exports.QueryRefreshRates = w; exports.atomFamilyWithInfiniteQuery = at; exports.atomFamilyWithQuery = Ye; exports.atomFamilyWithStaticQuery = go; exports.atomWithInfiniteQuery = H; exports.atomWithQuery = B; exports.devtoolAtom = bt; exports.getQueryClientAtom = d; exports.infiniteQueryKeyObserver = N; exports.infiniteQueryKeyStatusAtom = X; exports.initialDataAtom = S; exports.makeInitialDataAtom = Pt; exports.makeQueryKey = b; exports.queryClient = J; exports.queryClientAtom = z; exports.queryFamilyFactory = To; exports.queryKeyCache = h; exports.queryKeyObserver = g; exports.queryKeyStatusAtom = Y; exports.useInfiniteQueryAtom = qt; exports.useQueryAtom = Ft;