mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 18:22:42 -08:00
32 lines
958 B
TypeScript
32 lines
958 B
TypeScript
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;
|
|
}
|