UNPKG

@techsio/storefront-data

Version:

Medusa-first storefront data layer built on TanStack Query.

96 lines • 8.85 kB
import type { UseMutationResult } from "@tanstack/react-query"; import type { CartQueryKeys } from "../cart/types"; import { type CacheConfig, type CacheStrategy } from "../shared/cache-config"; import { type ActiveCartQueryKeyMatcher } from "../shared/cart-cache-sync"; import type { QueryResult } from "../shared/hook-result-types"; import type { QueryFactoryOptions, ReadQueryOptions, SuspenseQueryOptions } from "../shared/hook-types"; import { type PrefetchSkipMode } from "../shared/prefetch"; import type { QueryNamespace } from "../shared/query-keys"; import type { StorageValueStore } from "../shared/storage-value-store"; import type { AddFavoriteProductListItemInput, AddProductListItemInput, ChangeProductListItemQuantityInput, CreateCustomProductListInput, CreateFavoriteProductListInput, CreateProductListCartInput, DeleteProductListInput, DeleteProductListItemInput, IncrementProductListItemInput, ProductListCartLike, ProductListDeleteResponse, ProductListDetailInputBase, ProductListListInputBase, ProductListListResult, ProductListMutationOptions, ProductListQueryKeys, ProductListService, UpdateProductListInput, UpdateProductListItemInput, UseProductListResult, UseProductListsResult, UseSuspenseProductListResult, UseSuspenseProductListsResult } from "./types"; type SuspenseListInput<TInput extends ProductListListInputBase> = Omit<TInput, "enabled">; type SuspenseDetailInput<TInput extends ProductListDetailInputBase> = Omit<TInput, "enabled" | "id"> & { id: NonNullable<TInput["id"]>; }; export type ProductListPrefetchHookOptions = { cacheStrategy?: CacheStrategy; defaultDelay?: number; skipIfCached?: boolean; skipMode?: PrefetchSkipMode; }; export type ProductListPrefetchOptions = { cacheStrategy?: CacheStrategy; prefetchedBy?: string; skipIfCached?: boolean; skipMode?: PrefetchSkipMode; }; export type CreateProductListHooksConfig<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; cartQueryKeys?: CartQueryKeys; cartStorage?: StorageValueStore; isActiveCartQueryKey?: ActiveCartQueryKeyMatcher; }; export type ProductListHooks<TProductList, TProductListItem, TCart extends ProductListCartLike, TListInput extends ProductListListInputBase, TDetailInput extends ProductListDetailInputBase> = { getListQueryOptions: (input: TListInput, options?: { queryOptions?: ReadQueryOptions<ProductListListResult<TProductList>>; }) => QueryFactoryOptions<ProductListListResult<TProductList>>; getDetailQueryOptions: (input: TDetailInput, options?: { queryOptions?: ReadQueryOptions<TProductList | null>; }) => QueryFactoryOptions<TProductList | null>; useProductLists: (input?: TListInput, options?: { queryOptions?: ReadQueryOptions<ProductListListResult<TProductList>>; }) => UseProductListsResult<TProductList>; useSuspenseProductLists: (input?: SuspenseListInput<TListInput>, options?: { queryOptions?: SuspenseQueryOptions<ProductListListResult<TProductList>>; }) => UseSuspenseProductListsResult<TProductList>; useProductList: (input: TDetailInput, options?: { queryOptions?: ReadQueryOptions<TProductList | null>; }) => UseProductListResult<TProductList>; useSuspenseProductList: (input: SuspenseDetailInput<TDetailInput>, options?: { queryOptions?: SuspenseQueryOptions<TProductList | null>; }) => UseSuspenseProductListResult<TProductList>; useProductListDetails: (inputs: TDetailInput[], options?: { enabled?: boolean; queryOptions?: ReadQueryOptions<TProductList | null>; }) => QueryResult<TProductList | null>[]; usePrefetchProductLists: (options?: ProductListPrefetchHookOptions) => { prefetchProductLists: (input?: TListInput, prefetchOptions?: ProductListPrefetchOptions) => Promise<void>; delayedPrefetch: (input?: TListInput, delay?: number, prefetchId?: string) => string; cancelPrefetch: (prefetchId: string) => void; }; usePrefetchProductList: (options?: ProductListPrefetchHookOptions) => { prefetchProductList: (input: TDetailInput, prefetchOptions?: ProductListPrefetchOptions) => Promise<void>; delayedPrefetch: (input: TDetailInput, delay?: number, prefetchId?: string) => string; cancelPrefetch: (prefetchId: string) => void; }; useCreateFavoriteProductList: <TContext = unknown>(options?: ProductListMutationOptions<TProductList | null, CreateFavoriteProductListInput, TContext>) => UseMutationResult<TProductList | null, unknown, CreateFavoriteProductListInput, TContext>; useCreateCustomProductList: <TContext = unknown>(options?: ProductListMutationOptions<TProductList | null, CreateCustomProductListInput, TContext>) => UseMutationResult<TProductList | null, unknown, CreateCustomProductListInput, TContext>; useUpdateProductList: <TContext = unknown>(options?: ProductListMutationOptions<TProductList | null, UpdateProductListInput, TContext>) => UseMutationResult<TProductList | null, unknown, UpdateProductListInput, TContext>; useDeleteProductList: <TContext = unknown>(options?: ProductListMutationOptions<ProductListDeleteResponse, DeleteProductListInput, TContext>) => UseMutationResult<ProductListDeleteResponse, unknown, DeleteProductListInput, TContext>; useAddProductListItem: <TContext = unknown>(options?: ProductListMutationOptions<TProductListItem | null, AddProductListItemInput, TContext>) => UseMutationResult<TProductListItem | null, unknown, AddProductListItemInput, TContext>; useAddFavoriteProductListItem: <TContext = unknown>(options?: ProductListMutationOptions<TProductListItem | null, AddFavoriteProductListItemInput, TContext>) => UseMutationResult<TProductListItem | null, unknown, AddFavoriteProductListItemInput, TContext>; useCreateProductListCart: <TContext = unknown>(options?: ProductListMutationOptions<TCart, CreateProductListCartInput, TContext>) => UseMutationResult<TCart, unknown, CreateProductListCartInput, TContext>; useUpdateProductListItem: <TContext = unknown>(options?: ProductListMutationOptions<TProductListItem | null, UpdateProductListItemInput, TContext>) => UseMutationResult<TProductListItem | null, unknown, UpdateProductListItemInput, TContext>; useChangeProductListItemQuantity: <TContext = unknown>(options?: ProductListMutationOptions<TProductListItem | null, ChangeProductListItemQuantityInput, TContext>) => UseMutationResult<TProductListItem | null, unknown, ChangeProductListItemQuantityInput, TContext>; useIncrementProductListItem: <TContext = unknown>(options?: ProductListMutationOptions<TProductListItem | null, IncrementProductListItemInput, TContext>) => UseMutationResult<TProductListItem | null, unknown, IncrementProductListItemInput, TContext>; useDeleteProductListItem: <TContext = unknown>(options?: ProductListMutationOptions<ProductListDeleteResponse, DeleteProductListItemInput, TContext>) => UseMutationResult<ProductListDeleteResponse, unknown, DeleteProductListItemInput, TContext>; }; export declare function createProductListHooks<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, cartQueryKeys, cartStorage, isActiveCartQueryKey, }: CreateProductListHooksConfig<TProductList, TProductListItem, TCart, TListInput, TListParams, TDetailInput, TDetailParams, TListKeyParams, TDetailKeyParams>): ProductListHooks<TProductList, TProductListItem, TCart, TListInput, TDetailInput>; export {}; //# sourceMappingURL=hooks.d.ts.map