@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
26 lines (25 loc) • 1.06 kB
JavaScript
const assertNever = (value)=>{
throw new Error(`Unsupported prefetch skip mode: ${String(value)}`);
};
const isQueryFresh = (queryClient, queryKey, staleTime)=>{
const state = queryClient.getQueryState(queryKey);
if (!state || state.isInvalidated || void 0 === state.data) return false;
return Date.now() - state.dataUpdatedAt < staleTime;
};
const isQueryInFlight = (queryClient, queryKey)=>{
const state = queryClient.getQueryState(queryKey);
return state?.fetchStatus === "fetching";
};
const shouldSkipPrefetch = (params)=>{
if (!params.skipIfCached) return false;
if (isQueryInFlight(params.queryClient, params.queryKey)) return true;
switch(params.skipMode){
case "any":
return void 0 !== params.queryClient.getQueryData(params.queryKey);
case "fresh":
return isQueryFresh(params.queryClient, params.queryKey, params.cacheOptions.staleTime);
default:
return assertNever(params.skipMode);
}
};
export { isQueryFresh, isQueryInFlight, shouldSkipPrefetch };