fast-querystring
Fast query-string parser and stringifier to replace the legacy node:querystring
module.
Installation
npm i fast-querystring
Features
- Supports both
parse
andstringify
methods fromnode:querystring
module - Parsed object does not have prototype methods
- Uses
&
separator as default - Supports only input of type
string
- Supports repeating keys in query string
foo=bar&foo=baz
parses into{foo: ['bar', 'baz']}
- Supports pairs with missing values
foo=bar&hola
parses into{foo: 'bar', hola: ''}
- Stringify does not support nested values (just like
node:querystring
)
Usage
const qs = require('fast-querystring')
// Parsing a querystring
console.log(qs.parse('hello=world&foo=bar&values=v1&values=v2'))
// {
// hello: 'world',
// foo: 'bar',
// values: ['v1', 'v2']
// }
// Stringifying an object
console.log(qs.stringify({ foo: ['bar', 'baz'] }))
// 'foo=bar&foo=baz'
Benchmark
All benchmarks are run using Node.js v20.2.0 running on M1 Max.
- Parsing a query-string
> node benchmark/parse.mjs
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโ
โ Slower tests โ Samples โ Result โ Tolerance โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข
โ query-string โ 10000 โ 273968.62 op/sec โ ยฑ 1.48 % โ
โ qs โ 9999 โ 324118.68 op/sec โ ยฑ 0.99 % โ
โ querystringify โ 1000 โ 410157.64 op/sec โ ยฑ 0.68 % โ
โ @aws-sdk/querystring-parser โ 1000 โ 431465.20 op/sec โ ยฑ 0.83 % โ
โ URLSearchParams-with-Object.fromEntries โ 5000 โ 833939.19 op/sec โ ยฑ 0.97 % โ
โ URLSearchParams-with-construct โ 10000 โ 980017.92 op/sec โ ยฑ 2.42 % โ
โ node:querystring โ 10000 โ 1068165.86 op/sec โ ยฑ 3.41 % โ
โ querystringparser โ 3000 โ 1384001.31 op/sec โ ยฑ 0.95 % โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข
โ Fastest test โ Samples โ Result โ Tolerance โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข
โ fast-querystring โ 10000 โ 1584458.62 op/sec โ ยฑ 2.64 % โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโ
- Stringify a query-string
> node benchmark/stringify.mjs
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโ
โ Slower tests โ Samples โ Result โ Tolerance โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข
โ query-string โ 10000 โ 314662.25 op/sec โ ยฑ 1.08 % โ
โ qs โ 9500 โ 353621.74 op/sec โ ยฑ 0.98 % โ
โ http-querystring-stringify โ 10000 โ 372189.04 op/sec โ ยฑ 1.48 % โ
โ @aws-sdk/querystring-builder โ 10000 โ 411658.63 op/sec โ ยฑ 1.67 % โ
โ URLSearchParams โ 10000 โ 454438.85 op/sec โ ยฑ 1.32 % โ
โ querystringparser โ 10000 โ 455615.18 op/sec โ ยฑ 4.22 % โ
โ querystringify โ 10000 โ 879020.96 op/sec โ ยฑ 2.12 % โ
โ querystringify-ts โ 10000 โ 879134.48 op/sec โ ยฑ 2.19 % โ
โ node:querystring โ 10000 โ 1244505.97 op/sec โ ยฑ 2.12 % โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข
โ Fastest test โ Samples โ Result โ Tolerance โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข
โ fast-querystring โ 10000 โ 1953717.60 op/sec โ ยฑ 3.16 % โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโ
- Importing package.
> node benchmark/import.mjs
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโโโโโโโโโคโโโโโโโโโโโโ
โ Slower tests โ Samples โ Result โ Tolerance โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข
โ @aws-sdk/querystring-parser โ 1000 โ 12360.51 op/sec โ ยฑ 0.57 % โ
โ qs โ 1000 โ 14507.74 op/sec โ ยฑ 0.36 % โ
โ querystringify โ 1000 โ 14750.53 op/sec โ ยฑ 0.39 % โ
โ query-string โ 1000 โ 16335.05 op/sec โ ยฑ 0.87 % โ
โ querystringparser โ 1000 โ 17018.50 op/sec โ ยฑ 0.42 % โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข
โ Fastest test โ Samples โ Result โ Tolerance โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโข
โ fast-querystring โ 2500 โ 74605.83 op/sec โ ยฑ 0.91 % โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโโโโโโโโโงโโโโโโโโโโโโ