From e9309fc433b30fe9529626fdcb53639eae108324 Mon Sep 17 00:00:00 2001 From: Natalie Rose Date: Fri, 18 Sep 2026 13:29:58 +1000 Subject: [PATCH] Fix number handling when receiving empty strings --- lib/core/util.test.ts | 5 +++++ lib/core/util.ts | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/core/util.test.ts b/lib/core/util.test.ts index b65b68e..0c50b89 100644 --- a/lib/core/util.test.ts +++ b/lib/core/util.test.ts @@ -74,21 +74,26 @@ test('util.fixNumbers', () => { expect(util.fixNumbers({ foo: '1.0' })).toStrictEqual({ foo: 1.0 }); expect(util.fixNumbers({ foo: '1.1' })).toStrictEqual({ foo: 1.1 }); expect(util.fixNumbers({ foo: '1.1.1' })).toStrictEqual({ foo: '1.1.1' }); + expect(util.fixNumbers({ foo: '' })).toStrictEqual({ foo: '' }); expect(util.fixNumbers({ foo: { bar: 100 } })).toStrictEqual({ foo: { bar: 100 } }); expect(util.fixNumbers({ foo: { bar: '100' } })).toStrictEqual({ foo: { bar: 100 } }); expect(util.fixNumbers({ foo: { bar: '1.0' } })).toStrictEqual({ foo: { bar: 1.0 } }); expect(util.fixNumbers({ foo: { bar: '1.1' } })).toStrictEqual({ foo: { bar: 1.1 } }); expect(util.fixNumbers({ foo: { bar: '1.1.1' } })).toStrictEqual({ foo: { bar: '1.1.1' } }); + expect(util.fixNumbers({ foo: { bar: '' } })).toStrictEqual({ foo: { bar: '' } }); expect(util.fixNumbers({ foo: [{ bar: 100 }] })).toStrictEqual({ foo: [{ bar: 100 }] }); expect(util.fixNumbers({ foo: [{ bar: '100' }] })).toStrictEqual({ foo: [{ bar: 100 }] }); expect(util.fixNumbers({ foo: [{ bar: '1.0' }] })).toStrictEqual({ foo: [{ bar: 1.0 }] }); expect(util.fixNumbers({ foo: [{ bar: '1.1' }] })).toStrictEqual({ foo: [{ bar: 1.1 }] }); expect(util.fixNumbers({ foo: [{ bar: '1.1.1' }] })).toStrictEqual({ foo: [{ bar: '1.1.1' }] }); + expect(util.fixNumbers({ foo: [{ bar: '' }] })).toStrictEqual({ foo: [{ bar: '' }] }); expect(util.fixNumbers(1)).toBe(1); expect(util.fixNumbers('ok')).toBe('ok'); + expect(util.fixNumbers('')).toBe(''); // A top-level array stays an array (stats/credits returns one). expect(util.fixNumbers([{ bar: '100' }])).toStrictEqual([{ bar: 100 }]); expect(util.fixNumbers(['100', 'ok'])).toStrictEqual([100, 'ok']); + expect(util.fixNumbers(['100', 'ok', ''])).toStrictEqual([100, 'ok', '']); }); test('util.removeLeadingSlash', () => { diff --git a/lib/core/util.ts b/lib/core/util.ts index bd7fbea..2e65ed8 100644 --- a/lib/core/util.ts +++ b/lib/core/util.ts @@ -140,10 +140,11 @@ export const commify = function (num: number) { }; const handleString = function (string: any) { - if (isNaN(string)) { - return string; + if (typeof string === 'string' && string !== '') { + const asNumber = Number(string); + return !isNaN(asNumber) ? asNumber : string; } - return string * 1; + return string; }; const handleObj = function (obj: any): any { -- 2.51.2