export function asFiniteNumber( value: unknown, fallback: number, min?: number, max?: number, ): number { if (typeof value !== "number" || !Number.isFinite(value)) return fallback; if (min !== undefined && value < min) return min; if (max !== undefined && value > max) return max; return value; } export function asString(value: unknown, fallback: string): string { if (typeof value !== "string") return fallback; const trimmed = value.trim(); return trimmed.length > 0 ? trimmed : fallback; } export function asBoolean(value: unknown, fallback: boolean): boolean { if (typeof value === "boolean") return value; if (typeof value === "string") { const normalized = value.trim().toLowerCase(); if (normalized === "yes" || normalized === "true" || normalized === "1") { return true; } if (normalized === "no" || normalized === "false" || normalized === "0") { return false; } } return fallback; }