query-cast v2.0.1
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.FLOATTypes.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.