src/normalization/numbers.ts

export function clamp01(value: unknown, fallback = 0.5) { const parsed = Number(value); if (!Number.isFinite(parsed)) return fallback; if (parsed <= 0) return 0; if (parsed >= 1) return 1; return parsed; }

export function clampInt(value: unknown, min: number, max: number) { const parsed = Math.floor(Number(value)); if (!Number.isFinite(parsed)) return min; if (parsed < min) return min; if (parsed > max) return max; return parsed; }

export function clampNumber(value: unknown, min: number, max: number, fallback = min) { const parsed = Number(value); if (!Number.isFinite(parsed)) return fallback; if (parsed < min) return min; if (parsed > max) return max; return parsed; }