mirror of
https://github.com/vercel/commerce.git
synced 2025-06-09 01:36:57 +00:00
* new SFCC provider * add search * normalization + search * categories as search results * adress PR feedback * Update README.md * get all paths for SSG * product variants and options * Apply suggestions from code review Co-authored-by: Luis Alvarez D. <luis@vercel.com> * remove console log * prettier * clean console log * ran prettier * Updated readme * remove static data and revert config changes * set default site Co-authored-by: Luis Alvarez D. <luis@vercel.com>
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import { GetProductOperation, Product } from '@vercel/commerce/types/product'
|
|
import type { SFCCConfig } from '../index'
|
|
import type { OperationContext } from '@vercel/commerce/api/operations'
|
|
import { normalizeProduct } from '../utils/normalise-product'
|
|
|
|
export default function getProductOperation({
|
|
commerce,
|
|
}: OperationContext<any>) {
|
|
async function getProduct<T extends GetProductOperation>({
|
|
query = '',
|
|
variables,
|
|
config,
|
|
}: {
|
|
query?: string
|
|
variables?: T['variables']
|
|
config?: Partial<SFCCConfig>
|
|
preview?: boolean
|
|
} = {}): Promise<Product | {} | any> {
|
|
// TODO: support locale
|
|
const { sdk, locale } = commerce.getConfig(config) as SFCCConfig
|
|
const shopperProductsClient = await sdk.getshopperProductsClient()
|
|
const product = await shopperProductsClient.getProduct({
|
|
parameters: { id: variables?.slug as string },
|
|
})
|
|
const normalizedProduct = normalizeProduct(product)
|
|
|
|
return {
|
|
product: normalizedProduct,
|
|
}
|
|
}
|
|
|
|
return getProduct
|
|
}
|