http_build_query of the JavaScript World with full typeScript support
npm install complex-query-builder
š„ http_build_query of JavaScript š„
complex-query-builder can be used to mimic the behavior of http_build_query available in PHP. It's useful for building complex Query for WordPress and Other Rest API where data type of array and deeply nested arrays are required.
- Written on TypeScript.
- Fully typed and ready for consumption in any JavaScript or TypeScript project.
- Works on Node, Browser and React Native.
This library uses querystring package for escape characters.
- complexQueryBuilder - http_build_query of JavaScript
- Installation & Usage
- For node, react-native or any project where you have dependency management
- TypeScript ESM
- JavaScript Require Syntax
- For Browser
- APIS
- complexQueryBuilder
- Types
- License
- Contribution
Install with your favorite package manager.
Using Yarn:
```
yarn add complex-query-builder
Using NPM:
`
npm i complex-query-builder
`
Now you can import specific functions or the factory function from the module using commonjs or esm statements.
#### TypeScript ESM
`typescript`
import complexQueryBuilder, { QueryObject } from 'complex-query-builder';
#### JavaScript Require Syntax
`javascript`
const complexQueryBuilder = require('complex-query-builder');
Add a script tag with the umd bundle from unpkg or release page.
`html`
Now you will have CQB global in your hand with all functions to use!
`html`
`ts
import complexQueryBuilder, { QueryObject } from 'complex-query-builder';
const query1: QueryObject = {
page: 10,
theme: 'dark',
features: ['view', 'edit', 'notify'],
highContrast: false,
date: {
day: 15,
month: 12,
year: 2020,
},
};
console.log(complexQueryBuilder(query1));
// output> page=10&theme=dark&features[0]=view&features[1]=edit&features[2]=notify&highContrast=false&date[day]=15&date[month]=12&date[year]=2020
// with parent
console.log(complexQueryBuilder(query1, 'dashboard'));
// output> dashboard[page]=10&dashboard[theme]=dark&dashboard[features][0]=view&dashboard[features][1]=edit&dashboard[features][2]=notify&dashboard[highContrast]=false&dashboard[date][day]=15&dashboard[date][month]=12&dashboard[date][year]=2020
`
`ts
type Primitives = string | number | boolean;
type PrimitivesArray = (Primitives | QueryObject)[];
interface QueryObject {
[key: string]: Primitives | PrimitivesArray | QueryObject;
}
const complexQueryBuilder: (
obj: QueryObject | PrimitivesArray,
parent?: string | undefined
) => string;
``
This package is licensed under the MIT License.
Any kind of contribution is welcome. Thanks!