import type { OperationContext } from '@commerce/api/operations' import { normalizeProduct } from '../../utils' import type { Provider, SaleorConfig } from '..' import * as Query from '../../utils/queries' type Variables = { slug: string } type ReturnType = { product: any } export default function getProductOperation({ commerce }: OperationContext) { async function getProduct({ query = Query.ProductOneBySlug, variables, config: cfg, }: { query?: string variables: Variables config?: Partial preview?: boolean }): Promise { const { fetch, locale } = commerce.getConfig(cfg) const { data } = await fetch( query, { variables }, { ...(locale && { headers: { 'Accept-Language': locale, }, }), } ) return { product: data?.product ? normalizeProduct(data.product) : null, } } return getProduct }