Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

search-params

troch383.3kMIT4.0.1TypeScript support: included

A module to manipulate search part of URLs (querystring)

querystring, query, query params, search params, search, location, url

readme

search-params

A module to manipulate search part of URLs (querystring). Created to externalise some code shared by path-parser and route-node.

API

parse: <T>(path: string, opts?: IOptions) => T

Parse a querystring and returns an object of parameters. See options below for available options. Optional generic type can be provided.

build: <T>(params: T, opts?: IOptions) => string

Build a querystring from a list of parameters. Optional generic type can be provided.

omit: (path: string, paramsToOmit: string[], opts?: IOptions) => IOmitResponse

Remove a list of parameters (names) from a querystring, and returns an object containing removedParams and querystring.

keep: (path: string, paramsToKeep: string[], opts?: IOptions) => IKeepResponse

Keep a list of parameters (names) from a querystring, and returns an object containing keptParams and querystring.

Options

All options are optional.

  • arrayFormat: Specifies how arrays should be stringified
    • 'none' (default): no brackets or indexes are added to query parameter names ('role=member&role=admin')
    • 'brackets: brackets are added to query parameter names ('role[]=member&role[]=admin')
    • 'index': brackets and indexes are added to query parameter names ('role[0]=member&role[1]=admin')
  • booleanFormat: specifies how boolean values are stringified and parsed
    • 'none' (default): booleans are stringified to strings ('istrue=true&isfalse=false')
    • 'empty-true': same as 'none' except true values are stringified without value ('istrue&isfalse=false'). If you choose this boolean format, make sure to change the value of 'nullFormat'.
    • 'string': same as 'none' but 'true' and 'false' are parsed as booleans
    • 'unicode': true and false are displayed with unicode characters, and parsed as booleans ('istrue=✓&isfalse=✗')
  • nullFormat: specifies how null values are stringified and parsed
    • 'default' (default): null values are stringified without equal sign and value ('isnull')
    • 'string': null values are stringified to 'null' ('isnull=null') and parsed as null values
    • 'hidden': null values are not stringified

Example

For more examples, look at the tests.

import { parse, build, omit, keep } from 'search-params'

parse('country=scotland&town=glasgow')
// {
//     country: 'scotland',
//     town: 'glasgow'
// }

build({
  country: 'scotland',
  town: 'glasgow'
})
// 'country=scotland&town=glasgow'

omit('country=scotland&town=glasgow', ['country '])
// {
//     removedParams: {
//         country: 'scotland'
//     },
//     querystring: 'town=glasgow'
// }

keep('country=scotland&town=glasgow', ['country '])
// {
//     keptParams: {
//         country: 'scotland'
//     },
//     querystring: 'country=scotland'
// }

changelog

4.0.0 (2021-02-25)

Bug Fixes

  • parse plus signs to spaces and correctly handle param names (#5) (052c570)

BREAKING CHANGES

Possible breaking changes:

  • Non encoded plus signs are now parsed to spaces
  • Parameter names are now properly encoded and decoded

3.0.0 (2019-12-30)

Maintain package

(#2) (f41f072):

  • Update dev dependencies
  • Switch to strict type checking (TypeScript)
  • Add optional generic type to parse and build
  • Fix bug on decoding values

2.1.3 (2018-06-05)

Bug Fixes

  • decode unicode values to account for them coming from a browser URL (262db43)

2.1.2 (2018-03-27)

Bug Fixes

  • fix package.json config (sideEffects) and add module (73fe800)

2.1.1 (2018-03-25)

2.1.0 (2018-03-25)

Features

  • add 'empty-true' options for booleans (9e3950b)
  • add 'nullFormat' option (9b452db)

2.0.0 (2018-03-19)

Code Refactoring

BREAKING CHANGES

  • do NOT upgrade to version 2.x.x if you use router5@5.x.x, route-node@2.x.x or path-parser@3.x.x
  • 'toObject' method has been removed
  • 'parse' now returns an object of parameters rather than a list
  • 'build' now takes an object of parameters rather than a list
  • 'omit' now returns an object with 'removedParams' and 'querystring'
  • 'getSearch' and withoutBrackets methods have been removed

1.3.0 (2016-09-09)

Bug Fixes

  • don't serialize undefined or null parameter, handle parsing and building true values (41d700a)

1.2.0 (2016-03-29)

1.1.0 (2016-02-22)

Features

  • export hasBrackets and withoutBrackets functions (84a5f0b)

1.0.0 (2016-02-20)

Features

  • add parse, build and omit functions (584f20d)
  • add toObject function and add tests (15bea67)