26 lines
649 B
TypeScript
26 lines
649 B
TypeScript
import { Global } from "../global"
|
|
import { Log } from "../util/log"
|
|
import path from "path"
|
|
|
|
export namespace ModelsDev {
|
|
const log = Log.create({ service: "models.dev" })
|
|
const file = Bun.file(path.join(Global.Path.cache, "models.json"))
|
|
|
|
export async function get() {
|
|
if (await file.exists()) {
|
|
refresh()
|
|
return file.json()
|
|
}
|
|
await refresh()
|
|
return get()
|
|
}
|
|
|
|
async function refresh() {
|
|
log.info("refreshing")
|
|
const result = await fetch("https://models.dev/api.json")
|
|
if (!result.ok)
|
|
throw new Error(`Failed to fetch models.dev: ${result.statusText}`)
|
|
await Bun.write(file, result)
|
|
}
|
|
}
|