




















@@ -21,6 +21,14 @@ function invalidDuration(raw: string, reason?: string): Error {
2121return new Error(`${prefix} Use values like 500ms, 30s, 5m, 2h, or 1h30m.`);
2222}
232324+function roundSafeDurationMs(raw: string, value: number): number {
25+const ms = Math.round(value);
26+if (!Number.isSafeInteger(ms)) {
27+throw invalidDuration(raw);
28+}
29+return ms;
30+}
31+2432export function parseDurationMs(raw: string, opts?: DurationMsParseOptions): number {
2533const trimmed = normalizeLowercaseStringOrEmpty(normalizeOptionalString(raw) ?? "");
2634if (!trimmed) {
@@ -35,11 +43,7 @@ export function parseDurationMs(raw: string, opts?: DurationMsParseOptions): num
3543throw invalidDuration(raw);
3644}
3745const unit = (single[2] ?? opts?.defaultUnit ?? "ms") as "ms" | "s" | "m" | "h" | "d";
38-const ms = Math.round(value * DURATION_MULTIPLIERS[unit]);
39-if (!Number.isFinite(ms)) {
40-throw invalidDuration(raw);
41-}
42-return ms;
46+return roundSafeDurationMs(raw, value * DURATION_MULTIPLIERS[unit]);
4347}
44484549// Composite form (e.g. "1h30m", "2m500ms"); each token must include a unit.
@@ -71,9 +75,5 @@ export function parseDurationMs(raw: string, opts?: DurationMsParseOptions): num
7175throw invalidDuration(raw);
7276}
737774-const ms = Math.round(totalMs);
75-if (!Number.isFinite(ms)) {
76-throw invalidDuration(raw);
77-}
78-return ms;
78+return roundSafeDurationMs(raw, totalMs);
7979}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。