mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-04 01:30:21 +00:00
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
function normalizeNumericString(value: string): string | undefined {
|
|
const trimmed = value.trim();
|
|
return trimmed ? trimmed : undefined;
|
|
}
|
|
|
|
export function parseFiniteNumber(value: unknown): number | undefined {
|
|
if (typeof value === "number" && Number.isFinite(value)) {
|
|
return value;
|
|
}
|
|
if (typeof value === "string") {
|
|
const parsed = Number.parseFloat(value);
|
|
if (Number.isFinite(parsed)) {
|
|
return parsed;
|
|
}
|
|
}
|
|
return undefined;
|
|
}
|
|
|
|
export function parseStrictInteger(value: unknown): number | undefined {
|
|
if (typeof value === "number") {
|
|
return Number.isSafeInteger(value) ? value : undefined;
|
|
}
|
|
if (typeof value !== "string") {
|
|
return undefined;
|
|
}
|
|
const normalized = normalizeNumericString(value);
|
|
if (!normalized || !/^[+-]?\d+$/.test(normalized)) {
|
|
return undefined;
|
|
}
|
|
const parsed = Number(normalized);
|
|
return Number.isSafeInteger(parsed) ? parsed : undefined;
|
|
}
|
|
|
|
export function parseStrictPositiveInteger(value: unknown): number | undefined {
|
|
const parsed = parseStrictInteger(value);
|
|
return parsed !== undefined && parsed > 0 ? parsed : undefined;
|
|
}
|
|
|
|
export function parseStrictNonNegativeInteger(value: unknown): number | undefined {
|
|
const parsed = parseStrictInteger(value);
|
|
return parsed !== undefined && parsed >= 0 ? parsed : undefined;
|
|
}
|