// 배포 전에 공개 릴리스 저장소의 릴리스 목록을 releases.json 으로 굽는다. // (브라우저에서 Forgejo API 를 직접 호출하면 CORS 에 막히므로 빌드 시점에 정적 생성) // 사용: node site/fetch-releases.mjs import { writeFileSync } from "node:fs"; const API = "https://git.chanpaca.net/api/v1/repos/Video-Downloader/releases/releases?limit=50"; const res = await fetch(API, { headers: { Accept: "application/json" } }); if (!res.ok) throw new Error(`릴리스 API 실패: HTTP ${res.status}`); const raw = await res.json(); const releases = raw .filter((r) => !r.draft) .sort((a, b) => new Date(b.published_at) - new Date(a.published_at)) .map((r) => ({ tag: r.tag_name, name: r.name || r.tag_name, published_at: r.published_at, prerelease: r.prerelease, notes: r.body || "", assets: (r.assets || []).map((a) => ({ name: a.name, size: a.size, url: a.browser_download_url, })), })); const out = { generated_at: new Date().toISOString(), repo_url: "https://git.chanpaca.net/Video-Downloader/releases", releases, }; writeFileSync(new URL("./releases.json", import.meta.url), JSON.stringify(out, null, 2)); console.log(`releases.json 생성: 릴리스 ${releases.length}건`);