@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
35 lines • 2.93 kB
TypeScript
import { type CacheConfig, type CacheStrategy } from "../shared/cache-config";
import type { QueryFactoryOptions, ReadQueryOptions } from "../shared/hook-types";
import type { QueryNamespace } from "../shared/query-keys";
import type { ProductListCartLike, ProductListDetailInputBase, ProductListListInputBase, ProductListListResult, ProductListQueryKeys, ProductListService } from "./types";
export type CreateProductListQueryOptionsFactoryConfig<TProductList, TProductListItem, TCart extends ProductListCartLike, TListInput extends ProductListListInputBase, TListParams, TDetailInput extends ProductListDetailInputBase, TDetailParams, TListKeyParams = TListParams & {
customerId?: string | null;
}, TDetailKeyParams = TDetailParams & {
customerId?: string | null;
}> = {
service: ProductListService<TProductList, TProductListItem, TCart, TListParams, TDetailParams>;
buildListParams?: (input: TListInput) => TListParams;
buildDetailParams?: (input: TDetailInput) => TDetailParams;
buildListKeyParams?: (input: TListInput, params: TListParams) => TListKeyParams;
buildDetailKeyParams?: (input: TDetailInput, params: TDetailParams) => TDetailKeyParams;
queryKeys?: ProductListQueryKeys<TListKeyParams, TDetailKeyParams>;
queryKeyNamespace?: QueryNamespace;
cacheConfig?: CacheConfig;
defaultPageSize?: number;
};
export type ProductListQueryOptionsFactory<TProductList, TListInput extends ProductListListInputBase, TDetailInput extends ProductListDetailInputBase> = {
getListQueryOptions: (input: TListInput, options?: {
queryOptions?: ReadQueryOptions<ProductListListResult<TProductList>>;
cacheStrategy?: CacheStrategy;
}) => QueryFactoryOptions<ProductListListResult<TProductList>>;
getDetailQueryOptions: (input: TDetailInput, options?: {
queryOptions?: ReadQueryOptions<TProductList | null>;
cacheStrategy?: CacheStrategy;
}) => QueryFactoryOptions<TProductList | null>;
};
export declare function createProductListQueryOptionsFactory<TProductList, TProductListItem, TCart extends ProductListCartLike, TListInput extends ProductListListInputBase, TListParams = Omit<TListInput, "enabled" | "customerId" | "page">, TDetailInput extends ProductListDetailInputBase = ProductListDetailInputBase, TDetailParams = Omit<TDetailInput, "enabled" | "customerId">, TListKeyParams = TListParams & {
customerId?: string | null;
}, TDetailKeyParams = TDetailParams & {
customerId?: string | null;
}>({ service, buildListParams, buildDetailParams, buildListKeyParams, buildDetailKeyParams, queryKeys, queryKeyNamespace, cacheConfig, defaultPageSize, }: CreateProductListQueryOptionsFactoryConfig<TProductList, TProductListItem, TCart, TListInput, TListParams, TDetailInput, TDetailParams, TListKeyParams, TDetailKeyParams>): ProductListQueryOptionsFactory<TProductList, TListInput, TDetailInput>;
//# sourceMappingURL=query-options.d.ts.map