A zero-dependency, immutable data structure for search params management.
Install filterion
using npm:
npm i filterion
Require it into any module and use natively:
import { Filterion } from 'filterion';
const filter = new Filterion()
.add('device', 'iPhone')
.add('price', 649);
console.log(filter.getPayload());
/*
{
device: { '=': [ 'iPhone' ] },
price: { '=': [ 649 ] }
}
*/
Or leverage the query string API:
import { Filterion } from 'filterion';
const newQuery = new Filterion()
.fromQueryString('device=iPhone&price=649')
.remove('price')
.add('year', 2007)
.toQueryString();
console.log(newQuery);
/*
device=iPhone&year=2007
*/
Filterion can be used in a type-safe context:
import { Filterion } from 'filterion';
// Good
const filterion = new Filterion<{ price: string }>()
.add('price', 649);
// Bad
const filterion = new Filterion<{ name: string }>()
.add('price', 649);
/*
error TS2345: Argument of type '"price"' is not assignable to parameter of type '"name"'.
*/
Inspired by immutable.js, an immutable collections library for JavaScript.
MIT