fast-querystring
Advanced tools
Comparing version 0.6.0 to 0.6.1
@@ -5,2 +5,4 @@ "use strict"; | ||
const plusRegex = /\+/g; | ||
/** | ||
@@ -37,6 +39,5 @@ * @callback parse | ||
keyEndingIndex = hasBothKeyValuePair ? equalityIndex : i; | ||
key = input.slice(startingIndex + 1, keyEndingIndex); | ||
// Check if the current range consist of a single key | ||
// Only update value if '=' exists in the current range | ||
if (hasBothKeyValuePair) { | ||
@@ -50,3 +51,3 @@ value = input.slice(equalityIndex + 1, i); | ||
if (keyHasPlus) { | ||
key = key.replaceAll("+", " "); | ||
key = key.replace(plusRegex, " "); | ||
} | ||
@@ -61,3 +62,3 @@ | ||
if (valueHasPlus) { | ||
value = value.replaceAll("+", " "); | ||
value = value.replace(plusRegex, " "); | ||
} | ||
@@ -75,2 +76,3 @@ | ||
// Optimization: value.pop is faster than Array.isArray(value) | ||
if (currentValue.pop) { | ||
@@ -85,3 +87,2 @@ currentValue.push(value); | ||
// Reset reading key value pairs | ||
key = ""; | ||
value = ""; | ||
@@ -105,3 +106,3 @@ startingIndex = i; | ||
} | ||
// Check '+', and replace it with empty space. | ||
// Check '+', and remember to replace it with empty space. | ||
else if (c === 43) { | ||
@@ -108,0 +109,0 @@ if (equalityIndex <= startingIndex) { |
@@ -37,2 +37,4 @@ "use strict"; | ||
const keyLength = keys.length; | ||
const separator = "&"; | ||
let valueLength = 0; | ||
@@ -45,16 +47,20 @@ for (let i = 0; i < keyLength; i++) { | ||
if (i) { | ||
result += "&"; | ||
result += separator; | ||
} | ||
if (Array.isArray(value)) { | ||
const valueLength = value.length; | ||
valueLength = value.length; | ||
for (let j = 0; j < valueLength; j++) { | ||
if (j) { | ||
result += "&"; | ||
result += separator; | ||
} | ||
result += encodedKey + getAsPrimitive(value[j]); | ||
// Optimization: Dividing into multiple lines improves the performance. | ||
// Since v8 does not need to care about the '+' character if it was one-liner. | ||
result += encodedKey; | ||
result += getAsPrimitive(value[j]); | ||
} | ||
} else { | ||
result += encodedKey + getAsPrimitive(value); | ||
result += encodedKey; | ||
result += getAsPrimitive(value); | ||
} | ||
@@ -61,0 +67,0 @@ } |
{ | ||
"name": "fast-querystring", | ||
"version": "0.6.0", | ||
"version": "0.6.1", | ||
"description": "", | ||
"main": "lib/index.js", | ||
"type": "commonjs", | ||
"engines": { | ||
"node": ">= 15.0.0" | ||
}, | ||
"scripts": { | ||
@@ -11,0 +8,0 @@ "format": "rome format . --write", |
@@ -51,13 +51,13 @@ # fast-querystring | ||
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข | ||
โ qs โ 10000 โ 314822.82 op/sec โ ยฑ 1.12 % โ | ||
โ query-string โ 1000 โ 330364.46 op/sec โ ยฑ 0.89 % โ | ||
โ querystringify โ 10000 โ 442352.24 op/sec โ ยฑ 1.31 % โ | ||
โ @aws-sdk/querystring-parser โ 10000 โ 471561.65 op/sec โ ยฑ 1.12 % โ | ||
โ URLSearchParams-with-Object.fromEntries โ 10000 โ 865453.19 op/sec โ ยฑ 2.29 % โ | ||
โ URLSearchParams-with-construct โ 10000 โ 1234031.63 op/sec โ ยฑ 3.12 % โ | ||
โ node:querystring โ 10000 โ 1484397.94 op/sec โ ยฑ 2.46 % โ | ||
โ qs โ 10000 โ 317841.53 op/sec โ ยฑ 1.18 % โ | ||
โ query-string โ 10000 โ 341009.91 op/sec โ ยฑ 1.06 % โ | ||
โ querystringify โ 1000 โ 451609.79 op/sec โ ยฑ 0.61 % โ | ||
โ @aws-sdk/querystring-parser โ 1000 โ 477241.09 op/sec โ ยฑ 0.69 % โ | ||
โ URLSearchParams-with-Object.fromEntries โ 10000 โ 870095.07 op/sec โ ยฑ 3.29 % โ | ||
โ URLSearchParams-with-construct โ 10000 โ 1232650.60 op/sec โ ยฑ 2.95 % โ | ||
โ node:querystring โ 10000 โ 1462802.04 op/sec โ ยฑ 3.69 % โ | ||
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข | ||
โ Fastest test โ Samples โ Result โ Tolerance โ | ||
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข | ||
โ fast-querystring โ 10000 โ 1798615.82 op/sec โ ยฑ 2.65 % โ | ||
โ fast-querystring โ 10000 โ 1809816.84 op/sec โ ยฑ 3.19 % โ | ||
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโ | ||
@@ -74,13 +74,13 @@ ``` | ||
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข | ||
โ query-string โ 10000 โ 290850.12 op/sec โ ยฑ 1.52 % โ | ||
โ qs โ 10000 โ 324324.45 op/sec โ ยฑ 2.05 % โ | ||
โ http-querystring-stringify โ 10000 โ 481327.85 op/sec โ ยฑ 1.77 % โ | ||
โ URLSearchParams โ 10000 โ 538867.84 op/sec โ ยฑ 3.93 % โ | ||
โ querystringify โ 10000 โ 774992.18 op/sec โ ยฑ 2.51 % โ | ||
โ node:querystring โ 10000 โ 1827458.66 op/sec โ ยฑ 5.41 % โ | ||
โ query-string โ 10000 โ 284130.63 op/sec โ ยฑ 1.62 % โ | ||
โ qs โ 10000 โ 334799.48 op/sec โ ยฑ 1.93 % โ | ||
โ http-querystring-stringify โ 10000 โ 482642.49 op/sec โ ยฑ 1.72 % โ | ||
โ URLSearchParams โ 10000 โ 587274.65 op/sec โ ยฑ 1.88 % โ | ||
โ querystringify โ 10000 โ 753960.35 op/sec โ ยฑ 2.20 % โ | ||
โ node:querystring โ 10000 โ 1796993.95 op/sec โ ยฑ 5.34 % โ | ||
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข | ||
โ Fastest test โ Samples โ Result โ Tolerance โ | ||
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข | ||
โ fast-querystring โ 10000 โ 1881474.27 op/sec โ ยฑ 4.78 % โ | ||
โ fast-querystring โ 10000 โ 2051022.89 op/sec โ ยฑ 4.52 % โ | ||
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโ | ||
``` |
14817
253