From 7c3a528d350f2dbdaca48339c8d6ee2f30a2a38c Mon Sep 17 00:00:00 2001 From: Domas Date: Fri, 9 Apr 2021 11:23:08 +0300 Subject: [PATCH] fix url query parser treating empty string as a number (#32825) --- packages/grafana-data/src/utils/url.test.ts | 5 +++++ packages/grafana-data/src/utils/url.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/grafana-data/src/utils/url.test.ts b/packages/grafana-data/src/utils/url.test.ts index ca531ca3aa7..c1a8bfd07e4 100644 --- a/packages/grafana-data/src/utils/url.test.ts +++ b/packages/grafana-data/src/utils/url.test.ts @@ -40,6 +40,11 @@ describe('parseKeyValue', () => { expect(obj).toEqual({ num1: 12, num2: 12.2 }); }); + it('should not parse empty strinhg as number', () => { + const obj = urlUtil.parseKeyValue('num1=&num2=12.2'); + expect(obj).toEqual({ num1: '', num2: 12.2 }); + }); + it('should parse boolean params', () => { const obj = urlUtil.parseKeyValue('bool1&bool2=true&bool3=false'); expect(obj).toEqual({ bool1: true, bool2: true, bool3: false }); diff --git a/packages/grafana-data/src/utils/url.ts b/packages/grafana-data/src/utils/url.ts index 3b2416d65f4..51b577893dd 100644 --- a/packages/grafana-data/src/utils/url.ts +++ b/packages/grafana-data/src/utils/url.ts @@ -155,7 +155,7 @@ export function parseKeyValue(keyValue: string) { val = val !== undefined ? tryDecodeURIComponent(val as string) : true; let parsedVal: any; - if (typeof val === 'string') { + if (typeof val === 'string' && val !== '') { parsedVal = val === 'true' || val === 'false' ? val === 'true' : _.toNumber(val); } else { parsedVal = val;