UNPKG

@techsio/storefront-data

Version:

Medusa-first storefront data layer built on TanStack Query.

24 lines (23 loc) • 1.22 kB
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 };