import { BlogList } from './../../schema.d'; import { OperationContext,OperationOptions } from '@commerce/api/operations'; import { BigcommerceConfig } from '../../../bigcommerce/api'; import type { GetAllBlogPathsQuery,BlogTranslation } from '../../schema'; import { getAllBlogPathsQuery } from '../../utils/queries/get-all-blog-paths-query'; import { Provider } from '../index'; import { GetAllBlogPathsOperation } from './../../../commerce/types/blogs'; export type GetAllBlogPathsResult = { blogs: Array<{ node: { path: string } }> } export default function getAllBlogPathsOperation({ commerce, }: OperationContext) { async function getAllBlogPaths< T extends GetAllBlogPathsOperation >(opts?: { variables?: T['variables'] config?: BigcommerceConfig }): Promise async function getAllBlogPaths( opts: { variables?: T['variables'] config?: BigcommerceConfig } & OperationOptions ): Promise async function getAllBlogPaths({ query = getAllBlogPathsQuery, variables, config: cfg, }: { query?: string variables?: T['variables'] config?: BigcommerceConfig } = {}): Promise { const config = commerce.getConfig(cfg) const { data } = await config.fetch(query, { variables, }) const blogs = data.blogs.items; return { blogs: blogs?.map(val=>val.translations.map((p:BlogTranslation) => ({ path: `/${p.slug}` }))) } } return getAllBlogPaths }