Spaces:
Running
Running
| import type { GuardModel } from '$lib/types/leaderboard'; | |
| export function isNumber(value: unknown): value is number { | |
| return typeof value === 'number' && Number.isFinite(value); | |
| } | |
| export function average(values: (number | null)[]) { | |
| const present = values.filter(isNumber); | |
| if (!present.length) return null; | |
| return present.reduce((total, value) => total + value, 0) / present.length; | |
| } | |
| export function geometricMean(values: number[]) { | |
| const present = values.filter((value) => value > 0); | |
| if (!present.length) return null; | |
| const logSum = present.reduce((total, value) => total + Math.log(value), 0); | |
| return Math.exp(logSum / present.length); | |
| } | |
| export function sizeNumber(size: string) { | |
| const parsed = Number.parseFloat(size); | |
| return Number.isFinite(parsed) ? parsed : Number.NaN; | |
| } | |
| export function formatIsoDate(value: string, locale: string) { | |
| const date = new Date(`${value}T00:00:00.000Z`); | |
| if (Number.isNaN(date.getTime()) || date.toISOString().slice(0, 10) !== value) return value; | |
| return new Intl.DateTimeFormat(locale, { | |
| day: 'numeric', | |
| month: 'short', | |
| year: 'numeric', | |
| timeZone: 'UTC' | |
| }).format(date); | |
| } | |
| export function modelRepositoryUrl(model: GuardModel) { | |
| return model.hfUrl ?? `https://huggingface.co/${model.name}`; | |
| } | |