refactor: add main.ts decomposition guardrails and extract core helpers

This commit is contained in:
2026-02-09 19:33:36 -08:00
parent 272d92169d
commit 6922a6741f
15 changed files with 1331 additions and 823 deletions

31
src/core/utils/coerce.ts Normal file
View File

@@ -0,0 +1,31 @@
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;
}