import type { OperationContext, OperationOptions, } from '@commerce/api/operations' import { GetSiteInfoQuery, GetSiteInfoQueryVariables } from '@framework/schema' import type { ShopifyConfig, Provider } from '..' import { GetSiteInfoOperation } from '../../types/site' import { getCategories, getBrands, getSiteInfoQuery } from '../../utils' export default function getSiteInfoOperation({ commerce, }: OperationContext) { async function getSiteInfo(opts?: { config?: Partial preview?: boolean }): Promise async function getSiteInfo( opts: { config?: Partial preview?: boolean } & OperationOptions ): Promise async function getSiteInfo({ query = getSiteInfoQuery, config, }: { query?: string config?: Partial preview?: boolean } = {}): Promise { const cfg = commerce.getConfig(config) const categories = await getCategories(cfg) const brands = await getBrands(cfg) const { data } = await cfg.fetch< GetSiteInfoQuery, GetSiteInfoQueryVariables >(query) return { categories, brands, } } return getSiteInfo }