JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q43365F
  • License BSD-3-Clause

Make working with url query-strings enjoyable.

Package Exports

  • @zakkudo/query-string
  • @zakkudo/query-string/QueryStringError

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@zakkudo/query-string) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@zakkudo/query-string

Make working with url query-strings enjoyable.

Build Status Coverage Status Known Vulnerabilities Node License: MIT

Why use this?

  • Consistancy with simplicity
  • The instance acts like a plain-old-object
  • JSON.stringify() will serialize it to json like it was a normal object
  • Casting to a string will format it to be directly usable in a query Update the properties after initialization and the serialization will reflect the updates
  • Complex params are automatically serialized and deserialized from json

Install

# Install using npm
npm install @zakkudo/query-string
# Install using yarn
yarn add @zakkudo/query-string

Examples

Initializing with an object

import QueryString from '@zakkudo/query-string';

const query = new QueryString({
  page: 3,
  title: 'awesomeness',
  complex: {'test': 'value'}
});

String(query) // '?page=3&title=awesomeness&complex=%7B%22test%22%3A%22value%22%7D&'
query.toString() // '?page=3&title=awesomeness&complex=%7B%22test%22%3A%22value%22%7D&'

const url = `http://example${query}` //Automatically serializes correctly

const url = `http://example${query}` //Automatically serializes correctly with changes

Initializing with a URL and making changes dynamically

import QueryString from '@zakkudo/query-string';

const query = new QueryString('http://example?page=3&title=awesomeness');

delete query.page;

String(query) // '?title=awesomeness'
query.toString() // '?title=awesomeness'

Error handling

import QueryString from '@zakkudo/query-string';
import QueryStringError from '@zakkudo/query-string/QueryStringError';

try {
    const query = new QueryString('http://invalid.com/?first=1?second=2')
} catch(e) {
    if (e instanceof QueryStringError) {
        console.error(e.message); // Trying to add duplicate query param when already exists
    } else {
        throw e;
    }
}

API

@zakkudo/query-string~QueryString ⏏

Kind: Exported class

new QueryString(data)

Throws:

Param Type Description
data String | Object | QueryString Initial data. A url String will be parsed, and Object/QueryString instances will be copied.

@zakkudo/query-string/QueryStringError~QueryStringError ⇐ Error

Error class used by QueryString for raising errors generated during parsing or serialization.

Kind: Exported class

Extends: Error

new QueryStringError(message, url)

Param Type Description
message String A message describing the reason for the error.
url String The related url fragment when the error was generated

queryStringError.url

The related url fragment when the error was generated

Kind: instance property of QueryStringError