Skip to content

Commit 504c29b

Browse files
Yao Dingsindresorhus
authored andcommitted
Ensure empty string & spaces are parsed as string when parseNumber: true (#195)
1 parent 17315ad commit 504c29b

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ function parse(input, options) {
202202
// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
203203
value = value === undefined ? null : decode(value, options);
204204

205-
if (options.parseNumbers && !Number.isNaN(Number(value))) {
205+
if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {
206206
value = Number(value);
207207
} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
208208
value = value.toLowerCase() === 'true';

test/parse.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ test('NaN value returns as string if option is set', t => {
243243
t.deepEqual(queryString.parse('foo=null', {parseNumbers: true}), {foo: 'null'});
244244
t.deepEqual(queryString.parse('foo=undefined', {parseNumbers: true}), {foo: 'undefined'});
245245
t.deepEqual(queryString.parse('foo=100a&bar=100', {parseNumbers: true}), {foo: '100a', bar: 100});
246+
t.deepEqual(queryString.parse('foo= &bar=', {parseNumbers: true}), {foo: ' ', bar: ''});
246247
});
247248

248249
test('boolean value returns as string by default', t => {

0 commit comments

Comments
 (0)