Skip to content

SreejithNS/urlqueryparams

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

URLQueryParams ts

Documentation Status GitHub license GitHub stars

An extended version of URLSearchParams with support for Objects and Arrays.

URLQueryParams implements URLSearchParams interface, so that it can be replaced with URLSearchParams for query string manipulation.

Features

  • Can be used with Express.js which accepts Arrays and Objects in query parameters.
  • It doesn't pollute the Global namespace as it's a separate Class.
  • ✨Built in Typescript Definitions✨

🔰 Setup

Install

npm -i -s object-in-queryparams

(or)

yarn add object-in-queryparams

Usage

import { URLQueryParams } from "object-in-queryparams";

const queryParams = new URLQueryParams(
    {
        name: "John",
        age: 12,
        score: [52,16,23],
        tags: ["sports","fitness"],
        sort: {
            createdAt : "asc",
            updatedAt : -1
        }
    }
)

console.log(decodeURIComponent(queryParams.toString()))
/**
 * Output:
 *  "name=John&age=12&score[]=52&score[]=16&score[]=23&tags[]=sports&tags[]=fitness&sort[createdAt]=asc&sort[updatedAt]=desc" 
 */

Documentation

URLQueryParams implements URLSearchParams interface, where the constructor accepts a few more signatures than URLSearchParams:

✅ Supported Signatures

  • { [param]: string | number }
  • { [param]: string[] | number[] }
  • { [param]: { [param]: string | number } }
  • And all other signatures that are supported by URLSearchParams

❎ Unsupported Signatures

  • Arrays within Nested Objects are not supported.
    • { [param]: { [param]: string[] | number[] } }
  • Double nested Objects are not supported.
    • { [param]: { [param]: {...} } }

🦄 Contribution & Issues

If this package helped you and saved your time thank me by giving a star ⭐ to my repo. Post your issues here Pull Requests are always welcomed.

GitHub stars GitHub issues GitHub pull-requests

License

MIT License

Copyright (c) 2021 Sreejith N Subramanian