@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
24 lines (23 loc) • 1.22 kB
JavaScript
import { createCacheConfig } from "../shared/cache-config.js";
import { applyRegion } from "../shared/region.js";
import { createCatalogQueryKeys } from "./query-keys.js";
function createCatalogQueryOptionsFactory({ service, buildListParams, queryKeys, queryKeyNamespace = "storefront-data", cacheConfig }) {
const resolvedCacheConfig = cacheConfig ?? createCacheConfig();
const resolvedQueryKeys = queryKeys ?? createCatalogQueryKeys(queryKeyNamespace);
const buildList = buildListParams ?? ((input)=>input);
return {
getListQueryOptions: (input, options)=>{
const { enabled: _inputEnabled, ...listInput } = input;
const resolvedInput = applyRegion(listInput, options?.region ?? void 0);
const listParams = buildList(resolvedInput);
const cacheStrategy = options?.cacheStrategy ?? "semiStatic";
return {
queryKey: resolvedQueryKeys.list(listParams),
queryFn: ({ signal })=>service.getCatalogProducts(listParams, signal),
...resolvedCacheConfig[cacheStrategy],
...options?.queryOptions ?? {}
};
}
};
}
export { createCatalogQueryOptionsFactory };