@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
129 lines (128 loc) • 7.08 kB
JavaScript
import { createMedusaCatalogService } from "../catalog/medusa-service.js";
import { createCatalogQueryOptionsFactory } from "../catalog/query-options.js";
import { createMedusaCategoryService } from "../categories/medusa-service.js";
import { createCategoryQueryOptionsFactory } from "../categories/query-options.js";
import { createMedusaCollectionService } from "../collections/medusa-service.js";
import { createCollectionQueryOptionsFactory } from "../collections/query-options.js";
import { createMedusaOrderService } from "../orders/medusa-service.js";
import { createOrderQueryOptionsFactory } from "../orders/query-options.js";
import { createMedusaProductAttributeService } from "../product-attributes/medusa-service.js";
import { createProductAttributeQueryOptionsFactory } from "../product-attributes/query-options.js";
import { createMedusaProductListService } from "../product-lists/medusa-service.js";
import { createProductListQueryOptionsFactory } from "../product-lists/query-options.js";
import { createMedusaProductLocationAvailabilityService } from "../product-location-availability/medusa-service.js";
import { createProductLocationAvailabilityQueryOptionsFactory } from "../product-location-availability/query-options.js";
import { createMedusaProductService } from "../products/medusa-service.js";
import { createProductQueryOptionsFactory } from "../products/query-options.js";
import { createMedusaRegionService } from "../regions/medusa-service.js";
import { createRegionQueryOptionsFactory } from "../regions/query-options.js";
import { createMedusaProductReviewService } from "../reviews/medusa-service.js";
import { createProductReviewQueryOptionsFactory } from "../reviews/query-options.js";
import { createMedusaStorefrontQueryKeys, resolveMedusaStorefrontFoundation } from "./foundation.js";
const server_read_createMedusaStorefrontQueryKeys = createMedusaStorefrontQueryKeys;
function createMedusaStorefrontServerReadPreset(config) {
const { namespace, cacheConfig, defaultQueryKeys } = resolveMedusaStorefrontFoundation(config);
const queryKeys = {
products: config.products?.queryKeys ?? defaultQueryKeys.products,
productLists: config.productLists?.queryKeys ?? defaultQueryKeys.productLists,
productAttributes: config.productAttributes?.queryKeys ?? defaultQueryKeys.productAttributes,
productLocationAvailability: config.productLocationAvailability?.queryKeys ?? defaultQueryKeys.productLocationAvailability,
orders: config.orders?.queryKeys ?? defaultQueryKeys.orders,
regions: config.regions?.queryKeys ?? defaultQueryKeys.regions,
categories: config.categories?.queryKeys ?? defaultQueryKeys.categories,
collections: config.collections?.queryKeys ?? defaultQueryKeys.collections,
catalog: config.catalog?.queryKeys ?? defaultQueryKeys.catalog,
reviews: config.reviews?.queryKeys ?? defaultQueryKeys.reviews
};
const services = {
products: createMedusaProductService(config.sdk, config.products?.serviceConfig),
productLists: config.productLists?.service ?? createMedusaProductListService(config.sdk, config.productLists?.serviceConfig),
productAttributes: config.productAttributes?.service ?? createMedusaProductAttributeService(config.sdk, config.productAttributes?.serviceConfig),
productLocationAvailability: config.productLocationAvailability?.service ?? createMedusaProductLocationAvailabilityService(config.sdk, config.productLocationAvailability?.serviceConfig),
orders: config.orders?.service ?? createMedusaOrderService(config.sdk, config.orders?.serviceConfig),
regions: createMedusaRegionService(config.sdk),
categories: createMedusaCategoryService(config.sdk, config.categories?.serviceConfig),
collections: createMedusaCollectionService(config.sdk, config.collections?.serviceConfig),
catalog: createMedusaCatalogService(config.sdk, config.catalog?.serviceConfig),
reviews: config.reviews?.service ?? createMedusaProductReviewService(config.sdk, config.reviews?.serviceConfig)
};
const queries = {
products: createProductQueryOptionsFactory({
service: services.products,
queryKeys: queryKeys.products,
queryKeyNamespace: namespace,
cacheConfig,
...config.products?.hooks ?? {}
}),
productLists: createProductListQueryOptionsFactory({
service: services.productLists,
queryKeys: queryKeys.productLists,
queryKeyNamespace: namespace,
cacheConfig,
...config.productLists?.hooks ?? {}
}),
productAttributes: createProductAttributeQueryOptionsFactory({
service: services.productAttributes,
queryKeys: queryKeys.productAttributes,
queryKeyNamespace: namespace,
cacheConfig,
...config.productAttributes?.hooks ?? {}
}),
productLocationAvailability: createProductLocationAvailabilityQueryOptionsFactory({
service: services.productLocationAvailability,
queryKeys: queryKeys.productLocationAvailability,
queryKeyNamespace: namespace,
cacheConfig
}),
orders: createOrderQueryOptionsFactory({
service: services.orders,
queryKeys: queryKeys.orders,
queryKeyNamespace: namespace,
cacheConfig,
...config.orders?.hooks ?? {}
}),
regions: createRegionQueryOptionsFactory({
service: services.regions,
queryKeys: queryKeys.regions,
queryKeyNamespace: namespace,
cacheConfig,
...config.regions?.hooks ?? {}
}),
categories: createCategoryQueryOptionsFactory({
service: services.categories,
queryKeys: queryKeys.categories,
queryKeyNamespace: namespace,
cacheConfig,
...config.categories?.hooks ?? {}
}),
collections: createCollectionQueryOptionsFactory({
service: services.collections,
queryKeys: queryKeys.collections,
queryKeyNamespace: namespace,
cacheConfig,
...config.collections?.hooks ?? {}
}),
catalog: createCatalogQueryOptionsFactory({
service: services.catalog,
queryKeys: queryKeys.catalog,
queryKeyNamespace: namespace,
cacheConfig,
...config.catalog?.hooks ?? {}
}),
reviews: createProductReviewQueryOptionsFactory({
service: services.reviews,
queryKeys: queryKeys.reviews,
queryKeyNamespace: namespace,
cacheConfig,
...config.reviews?.hooks ?? {}
})
};
return {
namespace,
cacheConfig,
queryKeys,
services,
queries
};
}
export { server_read_createMedusaStorefrontQueryKeys as createMedusaStorefrontQueryKeys, createMedusaStorefrontServerReadPreset };