refactor: share gateway timeout parsing

This commit is contained in:
Peter Steinberger
2026-03-14 00:56:40 +00:00
parent d1fda7b8f2
commit 4e055d8df2
4 changed files with 83 additions and 34 deletions

View File

@@ -16,3 +16,39 @@ export function parseTimeoutMs(raw: unknown): number | undefined {
}
return Number.isFinite(value) ? value : undefined;
}
export function parseTimeoutMsWithFallback(
raw: unknown,
fallbackMs: number,
options: {
invalidType?: "fallback" | "error";
} = {},
): number {
if (raw === undefined || raw === null) {
return fallbackMs;
}
const value =
typeof raw === "string"
? raw.trim()
: typeof raw === "number" || typeof raw === "bigint"
? String(raw)
: null;
if (value === null) {
if (options.invalidType === "error") {
throw new Error("invalid --timeout");
}
return fallbackMs;
}
if (!value) {
return fallbackMs;
}
const parsed = Number.parseInt(value, 10);
if (!Number.isFinite(parsed) || parsed <= 0) {
throw new Error(`invalid --timeout: ${value}`);
}
return parsed;
}