import type { KiboCommerceConfig } from '../index' import { Product } from '@commerce/types/product' import { GetProductOperation } from '@commerce/types/product' import type { OperationContext } from '@commerce/api/operations' import { getProductQuery } from '../queries/get-product-query' import { normalizeProduct } from '../../lib/normalize' export default function getProductOperation({ commerce, }: OperationContext) { async function getProduct({ query = getProductQuery, variables, config, }: { query?: string variables?: T['variables'] config?: Partial preview?: boolean } = {}): Promise { const productVariables = { productCode: variables?.slug} const cfg = commerce.getConfig(config) const { data } = await cfg.fetch(query, { variables: productVariables }); const normalizedProduct = normalizeProduct(data.product, cfg) return { product: normalizedProduct } } return getProduct }