queryencoder
An npm module to encode an object into query params of an url
Install
To install queryencoder, run:
$ npm install queryencoder
Usage
Simple
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
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
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
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
The documentation for development site is: queryencoder dev documentation
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 iffalse
. (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:
$ npm run lint
In order to lint and fix the code:
$ 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:
$ 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:
$ 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:
$ npm test
in order to run the tests with mocha
.
If a coverage report is to be generated, run:
$ npm run nyc
Bundle
$ 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.