import type { Gender, Metrics, StandardUnit } from "@blade-and-brawn/domain"; import avgWeightDataJson from "./data/avg-weights.json" with { type: "json" }; export const getAvgWeight = (gender: Gender, age: number) => { type AvgWeightData = { metadata: { unit: StandardUnit; }; weights: Metrics[]; }; const avgWeightData = avgWeightDataJson as AvgWeightData; const avgWeights = avgWeightData.weights.filter((a) => a.gender === gender); const firstAvgWeight = avgWeights[0]; if (!firstAvgWeight) throw new Error("No average weights"); const closest = { diff: Math.abs(firstAvgWeight.age - age), avg: firstAvgWeight, }; for (const avg of avgWeights) { const diff = Math.abs(avg.age - age); if (diff < closest.diff) { closest.diff = diff; closest.avg = avg; } } return closest.avg.weight; };