jotai-query-toolkit
Version:
A toolkit for opinionated ways to use Jotai, react-query, and next.js
2 lines (1 loc) • 12.1 kB
JavaScript
var Se=Object.defineProperty,Ce=Object.defineProperties;var ve=Object.getOwnPropertyDescriptors;var G=Object.getOwnPropertySymbols;var oe=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;var ae=(e,t,r)=>t in e?Se(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,h=(e,t)=>{for(var r in t||(t={}))oe.call(t,r)&&ae(e,r,t[r]);if(G)for(var r of G(t))ne.call(t,r)&&ae(e,r,t[r]);return e},W=(e,t)=>Ce(e,ve(t));var g=(e,t)=>{var r={};for(var o in e)oe.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&G)for(var o of G(e))t.indexOf(o)<0&&ne.call(e,o)&&(r[o]=e[o]);return r};import Xe from"fast-deep-equal/es6";import{atom as he}from"jotai";import{atomFamily as Ye}from"jotai/utils";var ie=()=>new WeakMap,ue=(e,t)=>{let r=e.get(t);if(r)return r},se=(e,t,r)=>{e.get(t)||e.set(t,r)},J=(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}},S=(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}},ye=()=>{let e=new WeakMap;return(r,o)=>{let n=J(e,o);if(n)return n;let a=r();return S(e,o,a),a}};var me=Symbol?Symbol.isConcatSpreadable:void 0;function Fe(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":toString.call(e)}function ke(e){return typeof e=="object"&&e!==null}function we(e){return ke(e)&&Fe(e)=="[object Arguments]"}function fe(e){return Array.isArray(e)||we(e)||!!(me&&e&&e[me])}function K(e,t){let r=fe(e)?e.flat():e,o=t?fe(t)?t.flat(100):t:null;return o?[r,o].flat(100):r}var d=ie();function j(e){return`[jotai-query-toolkit] ${e}`}import Ue from"fast-deep-equal/es6";import{atom as le}from"jotai";import{atomWithQuery as $e}from"jotai/query";import{hashQueryKey as Je}from"react-query";import{atom as Re}from"jotai";import{atomFamily as Ee}from"jotai/utils";import Ge from"fast-deep-equal/es6";var C=Ee(e=>{let t=Re(void 0);return t.debugLabel=`initialDataAtom/${e}`,t},Ge);var w=typeof window=="undefined",pe,ce=typeof process=="object"&&((pe=process==null?void 0:process.env)==null?void 0:pe.NODE_ENV)!=="production",R={Default:1e4,Fast:5e3,RealTime:2e3,None:!1};import{atomFamily as Ne}from"jotai/utils";import{QueryObserver as _e}from"react-query";import{atom as Le}from"jotai";import{QueryClient as je}from"react-query";var z=new je({defaultOptions:{queries:{cacheTime:1e3*60*60*12,notifyOnChangeProps:["data","error"]}}});import{atom as Me}from"jotai";var B=Me(z),A=e=>e(B);import Ve from"fast-deep-equal/es6";var T=Ne(e=>Le(t=>{var a;if(!e)return;let r=A(t),o=((a=r.getQueryCache().find(e))==null?void 0:a.options)||{queryKey:e},n=r.defaultQueryObserverOptions(W(h({},o),{notifyOnChangeProps:["isFetching","isIdle","isSuccess","isStale"]}));return new _e(r,n)}),Ve);var ze=(e,t,r)=>{let o=typeof t=="function"?t(e):t;return r?K(o,e(r)):K(o)},H=(e,t,r={})=>{let o=le(a=>{let q=typeof r=="function"?r(a):r,{equalityFn:s=Ue,getShouldRefetch:u,queryKeyAtom:y,refetchInterval:m,refetchOnMount:f=!1,refetchOnWindowFocus:c=!1,refetchOnReconnect:O=!1}=q,I=g(q,["equalityFn","getShouldRefetch","queryKeyAtom","refetchInterval","refetchOnMount","refetchOnWindowFocus","refetchOnReconnect"]),Q=ze(a,e,y),P=Je(Q),v=C(P),D=a(v),b=u&&D?u(D):!0,k=a(B),F=()=>b?m===!1?!1:m||R.Default:!1,E=k.defaultQueryOptions(W(h({},I),{refetchInterval:F(),refetchOnMount:b?f:!1,refetchOnWindowFocus:b?c:!1,refetchOnReconnect:b?O:!1,initialData:D})),x=$e(U=>h({queryKey:Q,queryFn:$=>t(U,$)},E),A);return x.debugLabel=`atomWithQuery/queryAtom/${P}`,{queryKey:Q,queryAtom:x,initialData:D}}),n=le(a=>{let{initialData:i,queryAtom:s,queryKey:u}=a(o);return S(d,[n],u),w?i:a(s)},(a,i,s)=>{var y;let{queryKey:u}=a(o);switch(s.type){case"refetch":{let m=a(T(u));m==null||m.refetch();break}case"setQueryData":{(y=A(a).getQueryCache().find(u))==null||y.setData(s.payload.data,s.payload.options);break}case"mutate":{A(a).executeMutation(s.payload);break}}});return n};import{hashQueryKey as M}from"react-query";var Be=(e,t,r,o)=>{let n=typeof t=="function"?t(e,r):t,a=r?M(r).slice(1,-1):void 0,i=M(n),s=i==null?void 0:i.includes(a);if(o){let u=e(o);return K(n,s?u:[r,u])}return s?K(n):K(n,r)};function N(e,t,r,o){let n=Be(e,t,r,o),a=M(n);return{queryKey:n,hashedQueryKey:a}}function He(e,t){return M(K(e,t))}function Qe(e,t,r){return`${e}/${He(t,r)}`}var Ze=(e,t,r={})=>{let o=ye();return Ye(n=>{let a=he(s=>{typeof r=="function"&&(r=r(n,s));let c=r,{queryKeyAtom:u}=c,y=g(c,["queryKeyAtom"]),{queryKey:m}=N(s,e,n,u);return{queryAtom:H(m,(O,I)=>t(O,n,I),y),queryKey:m}}),i=o(()=>he(s=>{let{queryAtom:u,queryKey:y}=s(a);return S(d,[i],y),s(u)},(s,u,y)=>u(s(a).queryAtom,y)),[a]);return i.debugLabel=Qe("atomFamilyWithQuery","TODO:fix",n),i},Xe)};import nt from"fast-deep-equal/es6";import{atom as De}from"jotai";import{atomFamily as at}from"jotai/utils";import et from"fast-deep-equal/es6";import{atom as Ae}from"jotai";import{atomWithInfiniteQuery as tt}from"jotai/query";import{hashQueryKey as rt}from"react-query";function de(e){if(!!e)return"pages"in e&&"pageParams"in e?e:{pages:[e],pageParams:[void 0]}}var ot=(e,t,r)=>{let o=typeof t=="function"?t(e):t;return r?K(o,e(r)):K(o)},X=(e,t,r={})=>{let o=Ae(a=>{let q=typeof r=="function"?r(a):r,{equalityFn:s=et,getShouldRefetch:u,queryKeyAtom:y,refetchInterval:m,refetchOnMount:f=!1,refetchOnWindowFocus:c=!1,refetchOnReconnect:O=!1}=q,I=g(q,["equalityFn","getShouldRefetch","queryKeyAtom","refetchInterval","refetchOnMount","refetchOnWindowFocus","refetchOnReconnect"]),Q=ot(a,e,y),P=rt(Q),v=C(P),D=de(a(v)),b=u&&D?u(D):!0,F=A(a).defaultQueryOptions(I),E=()=>b?m===!1?!1:m||R.Default:!1,x=tt(U=>W(h({queryKey:Q,queryFn:$=>t(U,$)},F),{initialData:D,refetchInterval:E(),refetchOnMount:b?f:!1,refetchOnWindowFocus:b?c:!1,refetchOnReconnect:b?O:!1}),A);return x.debugLabel=`atomWithInfiniteQuery/queryAtom/${P}`,{queryKey:Q,queryAtom:x,initialData:D}}),n=Ae(a=>{let{initialData:i,queryAtom:s,queryKey:u}=a(o);return S(d,[n],u),w?i:a(s)},(a,i,s)=>i(a(o).queryAtom,s));return n};var it=(e,t,r={})=>at(o=>{let n=De(i=>{typeof r=="function"&&(r=r(o,i));let f=r,{queryKeyAtom:s}=f,u=g(f,["queryKeyAtom"]),{queryKey:y}=N(i,e,o,s);return{queryAtom:X(y,(c,O)=>t(c,o,O),u),queryKey:y}}),a=De(i=>{let{queryAtom:s,queryKey:u}=i(n);return se(d,a,u),i(s)},(i,s,u)=>s(i(n).queryAtom,u));return a},nt);import{atom as ft}from"jotai";import{atomFamily as be,atomWithDefault as ct}from"jotai/utils";import Ke from"fast-deep-equal/es6";import{atomFamily as ut}from"jotai/utils";import{InfiniteQueryObserver as st}from"react-query";import{atom as yt}from"jotai";import mt from"fast-deep-equal/es6";var _=ut(e=>yt(t=>{var i;let r=A(t),o=((i=r.getQueryCache().find(e))==null?void 0:i.options)||{queryKey:e},n=r.defaultQueryObserverOptions(W(h({},o),{notifyOnChangeProps:["isFetchingPreviousPage","isFetchingNextPage","hasNextPage","hasPreviousPage"]}));return new st(r,n)}),mt);var pt=be(e=>ct(t=>{let r=t(_(e)),{isFetchingPreviousPage:o,isFetchingNextPage:n,hasNextPage:a,hasPreviousPage:i}=r.getCurrentResult();return{isFetchingPreviousPage:o,isFetchingNextPage:n,hasNextPage:a,hasPreviousPage:i}}),Ke),Y=be(e=>ft(t=>{if(!e)throw Error("infiniteQueryKeyStatusAtom: no query key found");let r=pt(e),o=t(_(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)}),Ke);import{atomFamily as Oe,atomWithDefault as lt}from"jotai/utils";import Ie from"fast-deep-equal/es6";import{atom as Qt}from"jotai";var ht=Oe(e=>lt(t=>{let r=t(T(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}}),Ie),Z=Oe(e=>Qt(t=>{if(!e)throw Error("queryKeyObserver: no query key found");let r=ht(e),o=t(T(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)}),Ie);import{atom as L}from"jotai";import{atomFamily as dt}from"jotai/utils";import At from"fast-deep-equal/es6";var ee=new WeakMap,Dt=typeof process=="object"&&process.env.NODE_ENV==="development"&&typeof window!="undefined"&&"__REDUX_DEVTOOLS_EXTENSION__"in window,bt=()=>{try{return window.__REDUX_DEVTOOLS_EXTENSION__}catch{throw new Error("Please install or enable Redux Devtools")}},Kt=dt(e=>L(t=>{if(!Dt)return;let r=!!e.write,o=L(!1),n=L(void 0),a=e.debugLabel||e.toString(),i=bt(),s=ee.get(e),u=s||i.connect({name:a});s?s.shouldInit&&(u.shouldInit=!1,ee.set(e,u)):(u.shouldInit=!0,ee.set(e,u));let y,m=L(f=>{r&&(f(o)||u.send(`${a} - ${new Date().toLocaleString()}`,f(e)))},(f,c,O)=>{let I=Q=>{var P,v,D,b,k,F;Q.type==="DISPATCH"&&Q.state?((((P=Q.payload)==null?void 0:P.type)==="JUMP_TO_ACTION"||((v=Q.payload)==null?void 0:v.type)==="JUMP_TO_STATE")&&c(o,!0),((D=Q.payload)==null?void 0:D.type)!=="TOGGLE_ACTION"&&c(e,JSON.parse(Q.state))):Q.type==="DISPATCH"&&((b=Q.payload)==null?void 0:b.type)==="COMMIT"?u.init(f(n)):Q.type==="DISPATCH"&&((k=Q.payload)==null?void 0:k.type)==="IMPORT_STATE"&&(((F=Q.payload.nextLiftedState)==null?void 0:F.computedStates)||[]).forEach(({state:x},q)=>{q===0?u==null||u.init(x):c(e,x)})};switch(O.type){case"mount":y=r?u.subscribe(I):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))}),At);import{hashQueryKey as Ot}from"react-query";import{atom as It}from"jotai";import{atomFamily as Pt}from"jotai/utils";function xt(e){return C(Ot(e))}function Wt(e,t){let r=e(xt(t));if(r)return r}function To(e,t){return Pt(r=>It(o=>{let n=typeof e=="function"?e(r):e;return Wt(o,n)??t(r,o)}))}function qo(e,t){return function(o){return[typeof e=="function"?e(o):e,()=>t(o)]}}import{useCallbackOne as V,useMemoOne as Pe}from"use-memo-one";import{atom as gt}from"jotai";import{useAtomCallback as te,useAtomValue as xe}from"jotai/utils";var Tt=gt(void 0),qt=e=>e?Y(e):Tt;function St(e){let t=Pe(()=>e,[e]),r=xe(t),o=ue(d,t),n=V(()=>{o||console.warn(j(`no query key was found for ${t.debugLabel||t.toString()}`))},[o,t]),a=Pe(()=>qt(o),[o]),i=xe(a),s=te(V((f,c)=>{n(),c(t,{type:"fetchNextPage"})},[t])),u=te(V((f,c)=>{n(),c(t,{type:"fetchPreviousPage"})},[t])),y=te(V((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,h({fetchNextPage:s,fetchPreviousPage:u,refetch:y},m)]}import{useCallback as We,useMemo as ge}from"react";import{atom as Ct}from"jotai";import{useAtomCallback as Te,useAtomValue as qe}from"jotai/utils";var vt=Ct(void 0),Ft=e=>e?Z(e):vt;function re(e){ce&&console.error(j(`no query key was found for ${e.debugLabel||e.toString()||"UnknownAtom"}, is it an atomFamilyWithQuery atom?`))}function kt(e){let t=ge(()=>e,[e]),r=qe(t),n=J(d,[t]);n||re(e);let a=ge(()=>Ft(n),[n]),i=qe(a),s=Te(We(async m=>{if(!n){re(e);return}let f=m(T(n));await(f==null?void 0:f.refetch())},[e,n])),u=Te(We(async(m,f,c)=>{var I;if(!n){re(e);return}await((I=A(m).getQueryCache().find(n))==null?void 0:I.setData(c.data,c.options))},[e,n]));return[r,h({refetch:s,setQueryData:u},i||{})]}export{w as IS_SSR,R as QueryRefreshRates,it as atomFamilyWithInfiniteQuery,Ze as atomFamilyWithQuery,To as atomFamilyWithStaticQuery,X as atomWithInfiniteQuery,H as atomWithQuery,Kt as devtoolAtom,A as getQueryClientAtom,_ as infiniteQueryKeyObserver,Y as infiniteQueryKeyStatusAtom,C as initialDataAtom,xt as makeInitialDataAtom,K as makeQueryKey,z as queryClient,B as queryClientAtom,qo as queryFamilyFactory,d as queryKeyCache,T as queryKeyObserver,Z as queryKeyStatusAtom,St as useInfiniteQueryAtom,kt as useQueryAtom};