From a23765053b2198fb10e1773a7c2b3011b3ee33b6 Mon Sep 17 00:00:00 2001 From: aiirvizionz Date: Sat, 18 Jul 2026 17:40:42 -0600 Subject: [PATCH] fix(iterate): require decimal interval values --- packages/cli/src/commands/iterate-options.ts | 3 +++ packages/cli/src/commands/iterate.test.ts | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/commands/iterate-options.ts b/packages/cli/src/commands/iterate-options.ts index 200575b4..ed54d0dc 100644 --- a/packages/cli/src/commands/iterate-options.ts +++ b/packages/cli/src/commands/iterate-options.ts @@ -1,6 +1,9 @@ import { InvalidArgumentError } from 'commander'; export function parsePositiveSafeInteger(value: string): number { + if (!/^\d+$/.test(value.trim())) { + throw new InvalidArgumentError('must be a positive safe integer'); + } const parsed = Number(value); if (!Number.isSafeInteger(parsed) || parsed < 1) { throw new InvalidArgumentError('must be a positive safe integer'); diff --git a/packages/cli/src/commands/iterate.test.ts b/packages/cli/src/commands/iterate.test.ts index 4892cab6..77e97b44 100644 --- a/packages/cli/src/commands/iterate.test.ts +++ b/packages/cli/src/commands/iterate.test.ts @@ -6,7 +6,7 @@ describe('parsePositiveSafeInteger', () => { expect(parsePositiveSafeInteger('60')).toBe(60); }); - it.each(['nope', '0', '-1', '1.5', 'Infinity', '9007199254740992'])( + it.each(['nope', '0', '-1', '1.5', '1e2', '0x10', 'Infinity', '9007199254740992'])( 'rejects invalid interval %s', (value) => { expect(() => parsePositiveSafeInteger(value)).toThrow('positive safe integer');