query-cast
v2.0.1
Published
Query params parser and cast micro-library
Downloads
11
Maintainers
Readme
query-cast
Is a small utility which helps you parse and cast the query (or search) params of the url:
import { queryCast, Types } from 'query-cast';
const schema = {
foo: Types.FLOAT,
bar: Types.BOOLEAN,
baz: Types.STRING
};
const cast = queryCast(schema);
cast('?foo=12.15&bar=false&baz=baaaz'); // {foo: 12.15, bar: false, baz: 'baaaz'}
You may ask, why do you need to create a cast function first? Because in this case you can combine as many cast functions as you want using combineQueryCasts
method:
import { combineQueryCasts, squeryCast, Types } from 'query-cast';
const foo = queryCast({
foo: Types.FLOAT
});
const barBaz = queryCast({
bar: Types.BOOLEAN,
baz: Types.STRING
});
const cast = combineQueryCasts({
foo,
barBaz
});
cast('?foo=12.15&bar=false&baz=baaaz'); // {foo: {foo: 12.15}, barBaz: {bar: false, baz: 'baaaz'}}
You may think of it as a reducers from redux
library. So, you split these parsers into small peacies and use them separately or combine when you need some of them at the same time.
API
query-cast
is based on typeable.js
. So, schema definition is the same as for typeable library.
queryCast(schema)
Create cast function based upon schema.
schema: {[key: string]: Types | [Types]}
– describe the shape of the output. You should use the types fromTypes
-enum from the lib while defining it. List of supported types below:Types.STRING
– string value will left as isTypes.BOOLEAN
– convert to boolean. Any number which is greater than 0,Infinity
,'1'
,'yes'
,'+'
will be cast totrue
.Types.INTEGER
– convert to integerTypes.FLOAT
– convert to floatTypes.NUMBER
– alias ofTypes.FLOAT
Types.DATE
– convert toDate
-objectTypes.ANY
– the same asTypes.STRING
combineQueryCasts(casts)
Create a new cast function based upon the object, whose params are different cast functions and gather the result into a single object, whose keys correspond to the keys of the passed cast functions.
casts: {[key: string]: queryCast}
– An object whose values correspond to different cast functions that need to be combined into one.