import fetch from 'node-fetch'; export interface Asset { name: string; browser_download_url: string; } export interface Release { name: string; html_url: string; tag_name: string; message?: string; assets: Asset[]; version: string; } export default async(version: string, token: string, miscTestBuilds: boolean): Promise => { const repository = miscTestBuilds ? 'oven-sh/misc-test-builds' : 'oven-sh/bun' let url; if (version === 'latest' || miscTestBuilds) url = `https://api.github.com/repos/${repository}/releases/latest`; else url = `https://api.github.com/repos/${repository}/releases/tags/${version.includes('canary') ? version : `bun-v${version}`}`; const release: any = await (await fetch(url, { headers: { 'Content-Type': 'application/json', 'User-Agent': 'setup-bun-github-action', 'Authorization': `token ${token}` } })).json(); return { ...release, version: miscTestBuilds ? `timestamp-v${new Date(release.name).getTime().toString()}` : release.tag_name.replace('bun-v', '') }; }