Build installer and management site from spec

This commit is contained in:
2026-05-07 23:22:34 +09:00
parent 0b061e63b7
commit af6e559682
33 changed files with 7125 additions and 1 deletions

30
src/shared/mojang.ts Normal file
View File

@@ -0,0 +1,30 @@
import { MinecraftRelease } from './types'
const VERSION_MANIFEST_URL = 'https://launchermeta.mojang.com/mc/game/version_manifest.json'
let cachedReleases: MinecraftRelease[] | null = null
export async function fetchReleaseVersions(): Promise<MinecraftRelease[]> {
if (cachedReleases != null) {
return cachedReleases
}
try {
const response = await fetch(VERSION_MANIFEST_URL)
if (!response.ok) {
throw new Error(`Failed to fetch versions: ${response.status}`)
}
const payload = await response.json() as { versions?: MinecraftRelease[] }
cachedReleases = (payload.versions ?? []).filter((entry) => entry.type === 'release')
return cachedReleases
} catch {
cachedReleases = [
{ id: '1.21.4', type: 'release' },
{ id: '1.21.1', type: 'release' },
{ id: '1.20.6', type: 'release' },
{ id: '1.20.1', type: 'release' }
]
return cachedReleases
}
}