Files
openclaw/scripts/lib/strict-integer-option.ts
2026-08-02 17:34:46 -07:00

25 lines
694 B
TypeScript

// Strict integer parsing is dependency-free so native Node TypeScript scripts can reuse it.
export function parseStrictIntegerOption(params: {
fallback: number;
label: string;
min: number;
raw: string | undefined;
}): number {
const raw = params.raw?.trim();
if (!raw) {
return params.fallback;
}
if (!/^\d+$/u.test(raw)) {
throw new Error(
`${params.label} must be an integer >= ${params.min}; got ${JSON.stringify(raw)}`,
);
}
const value = Number(raw);
if (!Number.isSafeInteger(value) || value < params.min) {
throw new Error(
`${params.label} must be an integer >= ${params.min}; got ${JSON.stringify(raw)}`,
);
}
return value;
}