| import { NextResponse } from "next/server"; | |
| import { | |
| fetchGithubContext, | |
| fetchGithubSourceFiles, | |
| fetchHfSpaceContext, | |
| fetchHfSpaceSourceFiles, | |
| } from "@/lib/repo-fetch"; | |
| export const runtime = "nodejs"; | |
| const TARGETS = [ | |
| { | |
| kind: "hf-space" as const, | |
| owner: "victor", | |
| name: "gemma-avatar", | |
| url: "https://huggingface.co/spaces/victor/gemma-avatar", | |
| }, | |
| ]; | |
| export async function GET() { | |
| const targets = await Promise.all( | |
| TARGETS.map(async (t) => { | |
| try { | |
| const [context, files] = | |
| t.kind === "hf-space" | |
| ? await Promise.all([fetchHfSpaceContext(t.owner, t.name), fetchHfSpaceSourceFiles(t.owner, t.name)]) | |
| : await Promise.all([fetchGithubContext(t.owner, t.name), fetchGithubSourceFiles(t.owner, t.name)]); | |
| return { ...t, context, files, ok: true }; | |
| } catch (err) { | |
| return { | |
| ...t, | |
| context: err instanceof Error ? err.message : "fetch failed", | |
| files: [], | |
| ok: false, | |
| }; | |
| } | |
| }), | |
| ); | |
| return NextResponse.json({ targets }); | |
| } | |