Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

http-querystring-stringify

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

http-querystring-stringify

Create querystrings

  • 2.0.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
5.3K
decreased by-1.85%
Maintainers
1
Weekly downloads
 
Created
Source

http-querystring-stringify

Simple, small and correct querystring serialization-only for the browser or server.

This package is intended for client side code or input data which structure is defined by the application. It has no DoS protection and simplicity and correctness is prioritized over performance.

If you need extreme performance you should consider https://github.com/petkaantonov/querystringparser.

This package was written because serialization seems to happen most often on the client as a single operation and similar performance-focused libraries had trade-offs and bugs while others carried huge dependencies.

var stringify = require('http-querystring-stringify')

stringify({
	first: 'John',
	last: 'Wayne',
})
// -> first=John&last=Wayne

stringify({
	brands: ['KitKat', 'Snickers', 'Bounty'],
})
// -> brands[]=KitKat&brands[]=Snickers&brands[]=Bounty

stringify({
	sites: [{name: 'facebook', color: 'blue'}],
})
// -> sites[0][name]=facebook&sites[0][color]=blue
  • toJSON is respected (like JSON.stringify does)
  • true and false are converted to y or n respectively
  • null is represented by an empty string
  • undefined values will be skipped completely (like JSON.stringify does)
  • arrays will be numbered only if they contain arrays or objects themselves

Compatibility with parsers

Generally there are two types of parsers: those supporting extended nesting and those that just support repeated keys.

Perfect support (extended nesting):

var input = {
	a: '',
	b: 's',
	c: [ '1', '2', '3' ],
	d: '&=[]',
	e: [ '1', '2', [ '3', '4' ] ],
	f: [ '1', { a: '1' } ],
}

deepEqual(parse(stringify(input)), input);
	-> true;

Will flatten:

parse(stringify({
	a: '',
	b: 's',
	c: [ '1', '2', '3' ],
	d: '&=[]',
	e: [ '1', '2', [ '3', '4' ] ],
	f: [ '1', { a: '1' } ],
}));
	-> {
		a: '',
		b: 's',
		d: '&=[]',

		// expect arrays to be collapsed like this
		'c[]': [ '1', '2', '3' ],

		// expect objects and multi-level arrays to be flattened like this
		'e[0]': '1',
		'e[1]': '2',
		'e[2][]': [ '3', '4' ],
		'f[0]': '1',
		'f[1][a]': '1',
	};

FAQs

Package last updated on 25 Sep 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc