@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
40 lines • 2.31 kB
TypeScript
import type { ProductDetailInputBase, ProductListInputBase, ProductQueryKeys, ProductService, RegionInfo } from "./types";
type ProductQueryInput = RegionInfo & {
enabled?: boolean;
};
export declare const resolveProductQueryInput: <TInput extends ProductQueryInput>(input: TInput, region?: RegionInfo | null) => TInput;
type ProductListQueryDefinitionConfig<TProduct, TListInput extends ProductListInputBase, TListParams, TDetailParams> = {
input: TListInput;
region?: RegionInfo | null;
service: ProductService<TProduct, TListParams, TDetailParams>;
buildListParams: (input: TListInput) => TListParams;
queryKeys: ProductQueryKeys<TListParams, TDetailParams>;
useGlobalFetcher?: boolean;
transformInput?: (input: TListInput) => TListInput;
};
export declare const createProductListQueryDefinition: <TProduct, TListInput extends ProductListInputBase, TListParams, TDetailParams>({ input, region, service, buildListParams, queryKeys, useGlobalFetcher, transformInput, }: ProductListQueryDefinitionConfig<TProduct, TListInput, TListParams, TDetailParams>) => {
resolvedInput: TListInput;
listParams: TListParams;
useGlobalFetcher: boolean;
queryKey: import("../shared/query-keys").QueryKey;
queryFn: ({ signal }: {
signal?: AbortSignal;
}) => Promise<import("./types").ProductListResponse<TProduct>>;
};
type ProductDetailQueryDefinitionConfig<TProduct, TListParams, TDetailInput extends ProductDetailInputBase, TDetailParams> = {
input: TDetailInput;
region?: RegionInfo | null;
service: ProductService<TProduct, TListParams, TDetailParams>;
buildDetailParams: (input: TDetailInput) => TDetailParams;
queryKeys: ProductQueryKeys<TListParams, TDetailParams>;
};
export declare const createProductDetailQueryDefinition: <TProduct, TListParams, TDetailInput extends ProductDetailInputBase, TDetailParams>({ input, region, service, buildDetailParams, queryKeys, }: ProductDetailQueryDefinitionConfig<TProduct, TListParams, TDetailInput, TDetailParams>) => {
resolvedInput: TDetailInput;
detailParams: TDetailParams;
queryKey: import("../shared/query-keys").QueryKey;
queryFn: ({ signal }: {
signal?: AbortSignal;
}) => Promise<TProduct | null>;
};
export {};
//# sourceMappingURL=query-definition.d.ts.map