diff --git a/packages/cli/src/commands/deploy.test.ts b/packages/cli/src/commands/deploy.test.ts index 0cc42a24..0c0d7542 100644 --- a/packages/cli/src/commands/deploy.test.ts +++ b/packages/cli/src/commands/deploy.test.ts @@ -6,7 +6,7 @@ describe('deploy numeric option parsers', () => { expect(parsePositiveSafeInteger('4')).toBe(4); }); - it.each(['nope', '0', '-1', '1.5', 'Infinity', '9007199254740992'])( + it.each(['nope', '0', '-1', '1.5', '1e2', '0x10', 'Infinity', '9007199254740992'])( 'rejects invalid resource count %s', (value) => { expect(() => parsePositiveSafeInteger(value)).toThrow('positive safe integer'); @@ -18,7 +18,7 @@ describe('deploy numeric option parsers', () => { expect(parsePositiveFiniteNumber('12.75')).toBe(12.75); }); - it.each(['nope', '0', '-1', 'NaN', 'Infinity', '-Infinity'])( + it.each(['nope', '0', '-1', '1e2', '0x10', 'NaN', 'Infinity', '-Infinity'])( 'rejects invalid finite value %s', (value) => { expect(() => parsePositiveFiniteNumber(value)).toThrow('positive finite number'); diff --git a/packages/cli/src/commands/deploy.ts b/packages/cli/src/commands/deploy.ts index bd3e787c..fc2b7dd0 100644 --- a/packages/cli/src/commands/deploy.ts +++ b/packages/cli/src/commands/deploy.ts @@ -2,6 +2,9 @@ import { Command, InvalidArgumentError } from 'commander'; import kleur from 'kleur'; export function parsePositiveSafeInteger(value: string): number { + if (!/^\d+$/.test(value)) { + 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'); @@ -10,6 +13,9 @@ export function parsePositiveSafeInteger(value: string): number { } export function parsePositiveFiniteNumber(value: string): number { + if (!/^\d+(?:\.\d+)?$/.test(value)) { + throw new InvalidArgumentError('must be a positive finite number'); + } const parsed = Number(value); if (!Number.isFinite(parsed) || parsed <= 0) { throw new InvalidArgumentError('must be a positive finite number');