https://github.com/euberdeveloper/queryencoder
An npm module to encode an object into query params of an url
https://github.com/euberdeveloper/queryencoder
Last synced: 3 months ago
JSON representation
An npm module to encode an object into query params of an url
- Host: GitHub
- URL: https://github.com/euberdeveloper/queryencoder
- Owner: euberdeveloper
- License: mit
- Created: 2021-05-25T22:09:05.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-06-27T11:06:07.000Z (about 4 years ago)
- Last Synced: 2025-03-06T19:42:21.508Z (4 months ago)
- Language: TypeScript
- Homepage: https://queryencoder.euber.dev
- Size: 370 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README



[](https://coveralls.io/github/euberdeveloper/queryencoder?branch=main)
[](https://codecov.io/gh/euberdeveloper/queryencoder)
[](https://snyk.io/test/github/euberdeveloper/queryencoder?targetFile=package.json)
[](https://david-dm.org/euberdeveloper/queryencoder)
[](http://commitizen.github.io/cz-cli/)
[](https://github.com/euberdeveloper/queryencoder/blob/master/LICENSE)
[](https://github.com/euberdeveloper/queryencoder/issues)
[](https://github.com/euberdeveloper/queryencoder/stargazers)

[](https://github.com/prettier/prettier)
[](https://www.npmjs.com/package/queryencoder)# queryencoder
An npm module to encode an object into query params of an url## Install
To install queryencoder, run:
```bash
$ npm install queryencoder
```## Usage
### Simple
```js
const { encode } = require('queryencoder');const object = {
str: 'string',
n: 23,
truthy: true
};// The result is '?str=string&n=23&truthy=true'
const queryUrl = encode(object);
```### With nested object
```js
const { encode } = require('queryencoder');const object = {
str: 'string',
nested: {
a: 'ciao'
}
};// The result is '?str=string&nested=true&nested.a=ciao'
const queryUrl = encode(object);
```### With some options
```js
const { encode } = require('queryencoder');const object = {
str: 'string',
shown: undefined,
nested: {
a: 'ciao'
},
vero: true
};// The result is 'str=string&nested.a=ciao&vero'
const queryUrl = encode(object, {
preserveUndefined: true,
addQuestionMark: false,
flagNestedParents: false,
shortBoolean: true
});
```### With some dates
```js
const { encode } = require('queryencoder');const object = {
date: new Date('1999-04-23')
};// The result is 'date=1999-04-23'
const queryUrl = encode(object, {
dateParser: date => date.toISOString().slice(0, 10)
});
```## API
The documentation site is: [queryencoder documentation](https://queryencoder.euber.dev)
The documentation for development site is: [queryencoder dev documentation](https://queryencoder-dev.euber.dev)
### encode
The function to encode an object into an url query param string.
**Syntax:**
`const queryString = encode(object, options);`
**Parameters:**
* __object__: It is the object describing the parameters that should be encoded. It is an object that can be nested ad have values of type: string, number, boolean and Date.
* __options__: Optional. It is the object containing the options.**Options parameters:**
* __addQuestionMark__: Optional. A `boolean` that says if the `?` will be added to the begin of the result. Default value: `true`.
* __shortBoolean__: Optional. If a value is of boolean type, it will be just declared if `true` while omitted if `false`. (e.g. `&val`) Default value: `false`.
* __flagNestedParents__: Optional. A `boolean` that says if in case there is a nested object, a parameter with value true for each path to the parents will be added. Default value: `true`.
* __preserveNull__: Optional. A `boolean` that says if all the null values will be kept and parsed as 'null'. Default value: `true`.
* __preserveUndefined__: Optional. A `boolean` that says if all the undefined values will be kept and parsed as 'undefined'. Default value: `false`.
* __dateParser__: Optional. The function used to parse the dates. Default value: `value => value.toISOString()`.## Development
To build the module make sure you have the dev dependencies installed.
The project is written in `Typescript`, bundled with `Webpack` and linted with `ESLint`.
### Lint
In order to lint the code:
```bash
$ npm run lint
```In order to lint and fix the code:
```bash
$ npm run lint:fix
```There are also the `:source` and `:test` suffix after `lint` in order to lint only the source code or the test code.
### Transpile
To transpile both the source and the test code:
```bash
$ npm run transpile
```The `source` and the `test` folders will be transpiled in the `dist` folder. Also the `type declarations` will be generated.
To transpile only the source code:
```bash
$ npm run transpile:source
```The `source` folder will be transpiled in the `dist` folder. Also the `type declarations` will be generated.
### Test
After having transpiled the code, run:
```bash
$ npm test
```in order to run the tests with `mocha`.
If a coverage report is to be generated, run:
```bash
$ npm run nyc
```### Bundle
```bash
$ npm run bundle
```The `source` folder will be compiled in the `bundled` folder. It will contain the bundled `index.js` and `index.d.ts` files.