import { NextRequest, NextResponse } from 'next/server' const EMDASH_URL = process.env.EMDASH_URL || 'http://localhost:4321' const EMDASH_TOKEN = process.env.EMDASH_API_TOKEN || '' export async function GET( request: NextRequest, { params }: { params: Promise<{ collection: string }> } ) { const { collection } = await params if (!EMDASH_TOKEN) return NextResponse.json({ items: [] }) try { const url = new URL(`/_emdash/api/content/${collection}`, EMDASH_URL) const { searchParams } = request.nextUrl url.searchParams.set('status', searchParams.get('status') || 'published') url.searchParams.set('limit', searchParams.get('limit') || '20') const res = await fetch(url.toString(), { headers: { Authorization: `Bearer ${EMDASH_TOKEN}` }, next: { revalidate: 60 }, }) if (!res.ok) return NextResponse.json({ items: [] }) const json = await res.json() as { data?: { items?: unknown[] }; items?: unknown[] } const raw = json.data?.items ?? json.items ?? [] // emDash stores image fields as { provider, id, src } — flatten to plain URL strings. const items = raw.map((item: unknown) => { if (!item || typeof item !== 'object') return item const r = item as Record const data = r.data as Record | undefined if (!data) return item const normalized: Record = {} for (const [k, v] of Object.entries(data)) { normalized[k] = v && typeof v === 'object' && 'src' in v ? (v as { src: unknown }).src ?? v : v } return { ...r, data: normalized } }) return NextResponse.json({ items }) } catch { return NextResponse.json({ items: [] }) } }