UNPKG

@origami-minecraft/devbuilds

Version:

Origami is a terminal-first Minecraft launcher that supports authentication, installation, and launching of Minecraft versions — with built-in support for Microsoft accounts, mod loaders, profile management, and more. Designed for power users, modders, an

69 lines (57 loc) 2.53 kB
import axios from 'axios'; import { ORIGAMi_USER_AGENT } from '../../config/defaults'; export const graalvmProvider = { name: 'GraalVM CE', withJre: false, async listVersions(): Promise<string[]> { const res = await axios.get('https://api.github.com/repos/graalvm/graalvm-ce-builds/releases', { headers: { 'Accept': 'application/vnd.github+json', 'User-Agent': ORIGAMi_USER_AGENT } }); const versions: string[] = res.data .map((release: any) => release.tag_name) .filter((tag: string) => tag.startsWith('jdk-')) .map((tag: string) => `GraalVM ${tag}`); const sorted = versions.sort((a, b) => { const extractVersion = (str: string) => str.replace('GraalVM jdk-', '').split('.').map(n => parseInt(n, 10)); const [aMajor, aMinor, aPatch] = extractVersion(a); const [bMajor, bMinor, bPatch] = extractVersion(b); if (aMajor !== bMajor) return bMajor - aMajor; if (aMinor !== bMinor) return bMinor - aMinor; return bPatch - aPatch; }); return sorted; }, async getBinary(version: string, os: string, arch: string, imageType: string): Promise<{ name: string, link: string }> { const tag = version.replace('GraalVM ', ''); const res = await axios.get(`https://api.github.com/repos/graalvm/graalvm-ce-builds/releases/tags/${tag}`, { headers: { 'Accept': 'application/vnd.github+json', 'User-Agent': ORIGAMi_USER_AGENT } }); const assets = res.data.assets; const platformFragment = (() => { const osMap: Record<string, string> = { linux: 'linux', mac: 'macos', windows: 'windows' }; const archMap: Record<string, string> = { x64: 'x64', aarch64: 'aarch64' }; return `${osMap[os]}-${archMap[arch]}`; })(); const ext = os === 'windows' ? '.zip' : '.tar.gz'; const asset = assets.find((a: any) => typeof a.name === 'string' && a.name.includes(platformFragment) && a.name.includes(tag) && a.name.endsWith(ext)); if (!asset) throw new Error(`No GraalVM binary found for ${platformFragment} 😢`); return { name: asset.name, link: asset.browser_download_url }; } };