UNPKG

@techsio/storefront-data

Version:

Medusa-first storefront data layer built on TanStack Query.

161 lines • 14.9 kB
import type Medusa from "@medusajs/js-sdk"; import type { HttpTypes } from "@medusajs/types"; import type { CreateCatalogHooksConfig } from "../catalog/hooks"; import { createMedusaCatalogService, type MedusaCatalogListInput, type MedusaCatalogServiceConfig } from "../catalog/medusa-service"; import { type CatalogQueryOptionsFactory } from "../catalog/query-options"; import type { CatalogFacets, CatalogQueryKeys } from "../catalog/types"; import type { CreateCategoryHooksConfig } from "../categories/hooks"; import { createMedusaCategoryService, type MedusaCategoryDetailInput, type MedusaCategoryListInput, type MedusaCategoryServiceConfig } from "../categories/medusa-service"; import { type CategoryQueryOptionsFactory } from "../categories/query-options"; import type { CategoryQueryKeys } from "../categories/types"; import type { CreateCollectionHooksConfig } from "../collections/hooks"; import { createMedusaCollectionService, type MedusaCollectionDetailInput, type MedusaCollectionListInput, type MedusaCollectionServiceConfig } from "../collections/medusa-service"; import { type CollectionQueryOptionsFactory } from "../collections/query-options"; import type { CollectionQueryKeys } from "../collections/types"; import type { CreateOrderHooksConfig } from "../orders/hooks"; import { type MedusaOrderDetailHookInput, type MedusaOrderDetailInput, type MedusaOrderListHookInput, type MedusaOrderListInput, type MedusaOrderServiceConfig } from "../orders/medusa-service"; import { type OrderQueryOptionsFactory } from "../orders/query-options"; import type { OrderQueryKeys, OrderService } from "../orders/types"; import { type MedusaProductAttributeServiceConfig, type MedusaProductAttributesInput } from "../product-attributes/medusa-service"; import { type CreateProductAttributeQueryOptionsFactoryConfig, type ProductAttributeQueryOptionsFactory } from "../product-attributes/query-options"; import type { ProductAttribute, ProductAttributeQueryKeys, ProductAttributeService } from "../product-attributes/types"; import { type MedusaProductListDetailHookInput, type MedusaProductListDetailInput, type MedusaProductListDetailKeyInput, type MedusaProductListListHookInput, type MedusaProductListListInput, type MedusaProductListListKeyInput, type MedusaProductListServiceConfig } from "../product-lists/medusa-service"; import { type CreateProductListQueryOptionsFactoryConfig, type ProductListQueryOptionsFactory } from "../product-lists/query-options"; import type { ProductListBase, ProductListItemBase, ProductListQueryKeys, ProductListService } from "../product-lists/types"; import { type MedusaProductLocationAvailabilityInput, type MedusaProductLocationAvailabilityServiceConfig } from "../product-location-availability/medusa-service"; import { type ProductLocationAvailabilityQueryOptionsFactory } from "../product-location-availability/query-options"; import type { ProductLocationAvailabilityQueryKeys, ProductLocationAvailabilityResponse, ProductLocationAvailabilityService } from "../product-location-availability/types"; import type { CreateProductHooksConfig } from "../products/hooks"; import { createMedusaProductService, type MedusaProductDetailInput, type MedusaProductListInput, type MedusaProductServiceConfig } from "../products/medusa-service"; import { type ProductQueryOptionsFactory } from "../products/query-options"; import type { ProductQueryKeys } from "../products/types"; import type { CreateRegionHooksConfig } from "../regions/hooks"; import { createMedusaRegionService, type MedusaRegionDetailInput, type MedusaRegionListInput } from "../regions/medusa-service"; import { type RegionQueryOptionsFactory } from "../regions/query-options"; import type { RegionQueryKeys } from "../regions/types"; import { type MedusaProductReviewListInput, type MedusaProductReviewServiceConfig } from "../reviews/medusa-service"; import { type CreateProductReviewQueryOptionsFactoryConfig, type ProductReviewQueryOptionsFactory } from "../reviews/query-options"; import type { ProductReviewQueryKeys, ProductReviewService, ReviewBase } from "../reviews/types"; import type { CacheConfig } from "../shared/cache-config"; import type { QueryNamespace } from "../shared/query-keys"; import { createMedusaStorefrontQueryKeys as createMedusaStorefrontQueryKeysFromFoundation } from "./foundation"; type OmitFactoryConfig<TConfig> = Omit<TConfig, "service" | "queryKeys" | "queryKeyNamespace" | "cacheConfig">; type MedusaProductServerReadHooksConfig<TProduct> = Pick<OmitFactoryConfig<CreateProductHooksConfig<TProduct, MedusaProductListInput, MedusaProductListInput, MedusaProductDetailInput, MedusaProductDetailInput>>, "buildListParams" | "buildDetailParams">; type MedusaOrderServerReadHooksConfig = Pick<OmitFactoryConfig<CreateOrderHooksConfig<HttpTypes.StoreOrder, MedusaOrderListHookInput, MedusaOrderListInput, MedusaOrderDetailHookInput, MedusaOrderDetailInput>>, "buildListParams" | "buildDetailParams">; type MedusaProductListServerReadHooksConfig = Pick<OmitFactoryConfig<CreateProductListQueryOptionsFactoryConfig<ProductListBase<ProductListItemBase>, ProductListItemBase, HttpTypes.StoreCart, MedusaProductListListHookInput, MedusaProductListListInput, MedusaProductListDetailHookInput, MedusaProductListDetailInput, MedusaProductListListKeyInput, MedusaProductListDetailKeyInput>>, "buildListParams" | "buildDetailParams" | "buildListKeyParams" | "buildDetailKeyParams" | "defaultPageSize">; type MedusaProductReviewServerReadHooksConfig = Pick<OmitFactoryConfig<CreateProductReviewQueryOptionsFactoryConfig<ReviewBase, MedusaProductReviewListInput, MedusaProductReviewListInput>>, "buildListParams" | "defaultPageSize">; type MedusaProductAttributeServerReadHooksConfig = Pick<OmitFactoryConfig<CreateProductAttributeQueryOptionsFactoryConfig<ProductAttribute, MedusaProductAttributesInput, MedusaProductAttributesInput>>, "buildDetailParams">; type MedusaRegionServerReadHooksConfig = Pick<OmitFactoryConfig<CreateRegionHooksConfig<HttpTypes.StoreRegion, MedusaRegionListInput, MedusaRegionListInput, MedusaRegionDetailInput, MedusaRegionDetailInput>>, "buildListParams" | "buildDetailParams">; type MedusaCategoryServerReadHooksConfig<TCategory> = Pick<OmitFactoryConfig<CreateCategoryHooksConfig<TCategory, MedusaCategoryListInput, MedusaCategoryListInput, MedusaCategoryDetailInput, MedusaCategoryDetailInput>>, "buildListParams" | "buildDetailParams">; type MedusaCollectionServerReadHooksConfig<TCollection> = Pick<OmitFactoryConfig<CreateCollectionHooksConfig<TCollection, MedusaCollectionListInput, MedusaCollectionListInput, MedusaCollectionDetailInput, MedusaCollectionDetailInput>>, "buildListParams" | "buildDetailParams">; type MedusaCatalogServerReadHooksConfig<TProduct, TFacets> = Pick<Omit<CreateCatalogHooksConfig<TProduct, MedusaCatalogListInput, MedusaCatalogListInput, TFacets>, "service" | "queryKeys" | "queryKeyNamespace" | "cacheConfig" | "fallbackFacets">, "buildListParams">; type MedusaStorefrontReadQueryKeys = { products: ProductQueryKeys<MedusaProductListInput, MedusaProductDetailInput>; productLists: ProductListQueryKeys<MedusaProductListListKeyInput, MedusaProductListDetailKeyInput>; productAttributes: ProductAttributeQueryKeys<MedusaProductAttributesInput>; productLocationAvailability: ProductLocationAvailabilityQueryKeys<MedusaProductLocationAvailabilityInput>; orders: OrderQueryKeys<MedusaOrderListInput, MedusaOrderDetailInput>; regions: RegionQueryKeys<MedusaRegionListInput, MedusaRegionDetailInput>; categories: CategoryQueryKeys<MedusaCategoryListInput, MedusaCategoryDetailInput>; collections: CollectionQueryKeys<MedusaCollectionListInput, MedusaCollectionDetailInput>; catalog: CatalogQueryKeys<MedusaCatalogListInput>; reviews: ProductReviewQueryKeys<MedusaProductReviewListInput>; }; type MedusaOrderReadService = OrderService<HttpTypes.StoreOrder, MedusaOrderListInput, MedusaOrderDetailInput>; type MedusaProductListReadService = ProductListService<ProductListBase<ProductListItemBase>, ProductListItemBase, HttpTypes.StoreCart, MedusaProductListListInput, MedusaProductListDetailInput>; type MedusaProductReviewReadService = ProductReviewService<ReviewBase, MedusaProductReviewListInput>; type MedusaProductAttributeReadService = ProductAttributeService<ProductAttribute, MedusaProductAttributesInput>; type MedusaProductLocationAvailabilityReadService = ProductLocationAvailabilityService<ProductLocationAvailabilityResponse, MedusaProductLocationAvailabilityInput>; export type CreateMedusaStorefrontServerReadPresetConfig<TProduct = HttpTypes.StoreProduct, TCategory = HttpTypes.StoreProductCategory, TCollection = HttpTypes.StoreCollection, TCatalogProduct = HttpTypes.StoreProduct, TCatalogFacets = CatalogFacets> = { sdk: Medusa; queryKeyNamespace?: QueryNamespace; cacheConfig?: CacheConfig; products?: { serviceConfig?: MedusaProductServiceConfig<TProduct, MedusaProductListInput, MedusaProductDetailInput>; hooks?: MedusaProductServerReadHooksConfig<TProduct>; queryKeys?: ProductQueryKeys<MedusaProductListInput, MedusaProductDetailInput>; }; productLists?: { service?: MedusaProductListReadService; serviceConfig?: MedusaProductListServiceConfig<ProductListBase<ProductListItemBase>, ProductListItemBase, HttpTypes.StoreCart>; hooks?: MedusaProductListServerReadHooksConfig; queryKeys?: ProductListQueryKeys<MedusaProductListListKeyInput, MedusaProductListDetailKeyInput>; }; productAttributes?: { service?: MedusaProductAttributeReadService; serviceConfig?: MedusaProductAttributeServiceConfig; hooks?: MedusaProductAttributeServerReadHooksConfig; queryKeys?: ProductAttributeQueryKeys<MedusaProductAttributesInput>; }; productLocationAvailability?: { service?: MedusaProductLocationAvailabilityReadService; serviceConfig?: MedusaProductLocationAvailabilityServiceConfig; queryKeys?: ProductLocationAvailabilityQueryKeys<MedusaProductLocationAvailabilityInput>; }; orders?: { service?: MedusaOrderReadService; serviceConfig?: MedusaOrderServiceConfig; hooks?: MedusaOrderServerReadHooksConfig; queryKeys?: OrderQueryKeys<MedusaOrderListInput, MedusaOrderDetailInput>; }; regions?: { hooks?: MedusaRegionServerReadHooksConfig; queryKeys?: RegionQueryKeys<MedusaRegionListInput, MedusaRegionDetailInput>; }; categories?: { serviceConfig?: MedusaCategoryServiceConfig<TCategory, MedusaCategoryListInput, MedusaCategoryDetailInput>; hooks?: MedusaCategoryServerReadHooksConfig<TCategory>; queryKeys?: CategoryQueryKeys<MedusaCategoryListInput, MedusaCategoryDetailInput>; }; collections?: { serviceConfig?: MedusaCollectionServiceConfig<TCollection, MedusaCollectionListInput, MedusaCollectionDetailInput>; hooks?: MedusaCollectionServerReadHooksConfig<TCollection>; queryKeys?: CollectionQueryKeys<MedusaCollectionListInput, MedusaCollectionDetailInput>; }; catalog?: { serviceConfig?: MedusaCatalogServiceConfig<TCatalogProduct, MedusaCatalogListInput, TCatalogFacets>; hooks?: MedusaCatalogServerReadHooksConfig<TCatalogProduct, TCatalogFacets>; queryKeys?: CatalogQueryKeys<MedusaCatalogListInput>; }; reviews?: { service?: MedusaProductReviewReadService; serviceConfig?: MedusaProductReviewServiceConfig<ReviewBase>; hooks?: MedusaProductReviewServerReadHooksConfig; queryKeys?: ProductReviewQueryKeys<MedusaProductReviewListInput>; }; }; type MedusaStorefrontReadServices<TProduct, TCategory, TCollection, TCatalogProduct, TCatalogFacets> = { products: ReturnType<typeof createMedusaProductService<TProduct, MedusaProductListInput, MedusaProductDetailInput>>; productLists: MedusaProductListReadService; productAttributes: MedusaProductAttributeReadService; productLocationAvailability: MedusaProductLocationAvailabilityReadService; orders: MedusaOrderReadService; regions: ReturnType<typeof createMedusaRegionService>; categories: ReturnType<typeof createMedusaCategoryService<TCategory, MedusaCategoryListInput, MedusaCategoryDetailInput>>; collections: ReturnType<typeof createMedusaCollectionService<TCollection, MedusaCollectionListInput, MedusaCollectionDetailInput>>; catalog: ReturnType<typeof createMedusaCatalogService<TCatalogProduct, MedusaCatalogListInput, TCatalogFacets>>; reviews: MedusaProductReviewReadService; }; type MedusaStorefrontReadQueries<TProduct, TCategory, TCollection, TCatalogProduct, TCatalogFacets> = { products: ProductQueryOptionsFactory<TProduct, MedusaProductListInput, MedusaProductDetailInput>; productLists: ProductListQueryOptionsFactory<ProductListBase<ProductListItemBase>, MedusaProductListListHookInput, MedusaProductListDetailHookInput>; productAttributes: ProductAttributeQueryOptionsFactory<ProductAttribute, MedusaProductAttributesInput>; productLocationAvailability: ProductLocationAvailabilityQueryOptionsFactory<ProductLocationAvailabilityResponse, MedusaProductLocationAvailabilityInput>; orders: OrderQueryOptionsFactory<HttpTypes.StoreOrder, MedusaOrderListHookInput, MedusaOrderDetailHookInput>; regions: RegionQueryOptionsFactory<HttpTypes.StoreRegion, MedusaRegionListInput, MedusaRegionDetailInput>; categories: CategoryQueryOptionsFactory<TCategory, MedusaCategoryListInput, MedusaCategoryDetailInput>; collections: CollectionQueryOptionsFactory<TCollection, MedusaCollectionListInput, MedusaCollectionDetailInput>; catalog: CatalogQueryOptionsFactory<TCatalogProduct, MedusaCatalogListInput, TCatalogFacets>; reviews: ProductReviewQueryOptionsFactory<ReviewBase, MedusaProductReviewListInput>; }; export type MedusaStorefrontServerReadPresetResult<TProduct, TCategory, TCollection, TCatalogProduct, TCatalogFacets> = { namespace: QueryNamespace; cacheConfig: CacheConfig; queryKeys: MedusaStorefrontReadQueryKeys; services: MedusaStorefrontReadServices<TProduct, TCategory, TCollection, TCatalogProduct, TCatalogFacets>; queries: MedusaStorefrontReadQueries<TProduct, TCategory, TCollection, TCatalogProduct, TCatalogFacets>; }; export declare const createMedusaStorefrontQueryKeys: typeof createMedusaStorefrontQueryKeysFromFoundation; export declare function createMedusaStorefrontServerReadPreset<TProduct = HttpTypes.StoreProduct, TCategory = HttpTypes.StoreProductCategory, TCollection = HttpTypes.StoreCollection, TCatalogProduct = HttpTypes.StoreProduct, TCatalogFacets = CatalogFacets>(config: CreateMedusaStorefrontServerReadPresetConfig<TProduct, TCategory, TCollection, TCatalogProduct, TCatalogFacets>): MedusaStorefrontServerReadPresetResult<TProduct, TCategory, TCollection, TCatalogProduct, TCatalogFacets>; export {}; //# sourceMappingURL=server-read.d.ts.map