diff --git a/lib/mdx.ts b/lib/mdx.ts index d67cf022..c69addff 100644 --- a/lib/mdx.ts +++ b/lib/mdx.ts @@ -193,22 +193,28 @@ export async function getAllProducts(locale: string): Promise { .filter(Boolean); return resolvedImages.length > 0; }) - .map((doc) => ({ - slug: doc.slug, - frontmatter: { - title: doc.title, - sku: doc.sku || '', - description: doc.description || '', - categories: Array.isArray(doc.categories) - ? doc.categories.map((c: any) => c.category) - : [], - images: ((doc.images as any[]) || []) - .map((img) => (typeof img === 'string' ? img : img.url)) - .filter(Boolean), - locale: doc.locale, - }, - content: null, - })); + .map((doc) => { + const resolvedImages = ((doc.images as any[]) || []) + .map((img) => (typeof img === 'string' ? img : img.url)) + .filter(Boolean) as string[]; + + const plainCategories = Array.isArray(doc.categories) + ? doc.categories.map((c: any) => String(c.category)) + : []; + + return { + slug: String(doc.slug), + frontmatter: { + title: String(doc.title), + sku: doc.sku ? String(doc.sku) : '', + description: doc.description ? String(doc.description) : '', + categories: plainCategories, + images: resolvedImages, + locale: String(doc.locale), + }, + content: null, + }; + }); // Also include English fallbacks for slugs not in this locale if (locale !== 'en') { @@ -229,23 +235,29 @@ export async function getAllProducts(locale: string): Promise { .filter(Boolean); return resolvedImages.length > 0; }) - .map((doc) => ({ - slug: doc.slug, - frontmatter: { - title: doc.title, - sku: doc.sku || '', - description: doc.description || '', - categories: Array.isArray(doc.categories) - ? doc.categories.map((c: any) => c.category) - : [], - images: ((doc.images as any[]) || []) - .map((img) => (typeof img === 'string' ? img : img.url)) - .filter(Boolean), - locale: doc.locale, - isFallback: true, - }, - content: null, - })); + .map((doc) => { + const resolvedImages = ((doc.images as any[]) || []) + .map((img) => (typeof img === 'string' ? img : img.url)) + .filter(Boolean) as string[]; + + const plainCategories = Array.isArray(doc.categories) + ? doc.categories.map((c: any) => String(c.category)) + : []; + + return { + slug: String(doc.slug), + frontmatter: { + title: String(doc.title), + sku: doc.sku ? String(doc.sku) : '', + description: doc.description ? String(doc.description) : '', + categories: plainCategories, + images: resolvedImages, + locale: String(doc.locale), + isFallback: true, + }, + content: null, + }; + }); products = [...products, ...fallbacks]; }