import type { OperationContext } from '@commerce/api/operations' import type { RawProduct } from '@framework/types/product' import type { Product } from '@commerce/types/product' import type { GetProductOperation } from '@commerce/types/product' import type { OrdercloudConfig, Provider } from '../index' import { normalize as normalizeProduct } from '@framework/utils/product' export default function getProductOperation({ commerce, }: OperationContext) { async function getProduct({ config, variables, }: { query?: string variables?: T['variables'] config?: Partial preview?: boolean } = {}): Promise<{ product: Product }> { const { fetch } = commerce.getConfig(config) const rawProduct: RawProduct = await fetch( 'GET', `/products/${variables?.slug}` ) return { product: normalizeProduct(rawProduct), } } return getProduct }