Dom Sip 66e3269b0e
SFCC provider (#727)
* 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>
2022-04-20 12:08:26 -05:00

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
}