4
0
forked from crowetic/commerce
Catalin Pinte 90aa798891
Fix Commerce.js product normalizer (#877)
* Fix normalizer, since assets is optional now.

* Fix missing categories & options

* Update cart normalizer
2022-11-16 08:36:16 +02:00

40 lines
1.0 KiB
TypeScript

import type { OperationContext } from '@vercel/commerce/api/operations'
import type {
Category,
GetSiteInfoOperation,
} from '@vercel/commerce/types/site'
import { normalizeCategory } from '../../utils/normalize-category'
import type { CommercejsConfig, Provider } from '../index'
export type GetSiteInfoResult<
T extends { categories: any[]; brands: any[] } = {
categories: Category[]
brands: any[]
}
> = T
export default function getSiteInfoOperation({
commerce,
}: OperationContext<Provider>) {
async function getSiteInfo<T extends GetSiteInfoOperation>({
config,
}: {
query?: string
variables?: any
config?: Partial<CommercejsConfig>
preview?: boolean
} = {}): Promise<T['data']> {
const { sdkFetch } = commerce.getConfig(config)
const { data: categories } = await sdkFetch('categories', 'list')
const formattedCategories = categories?.map(normalizeCategory) ?? []
return {
categories: formattedCategories,
brands: [],
}
}
return getSiteInfo
}