import { Provider, SwellConfig } from '..' import type { OperationContext } from '@commerce/api/operations' import type { Page } from '../../types/page' export type GetAllPagesResult< T extends { pages: any[] } = { pages: Page[] } > = T export default function getAllPagesOperation({ commerce, }: OperationContext) { async function getAllPages(opts?: { config?: Partial preview?: boolean }): Promise async function getAllPages(opts: { url: string config?: Partial preview?: boolean }): Promise> async function getAllPages({ config: cfg, preview, }: { url?: string config?: Partial preview?: boolean } = {}): Promise { const config = commerce.getConfig(cfg) const { locale, fetch } = config const data = await fetch('content', 'list', ['pages']) const pages = data?.results?.map(({ slug, ...rest }: { slug: string }) => ({ url: `/${locale}/${slug}`, ...rest, })) ?? [] return { pages, } } return getAllPages }