sieve-ts
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

Sieve

Node.js/Typescript types and services for Biarity/Sieve.

Build Status Maintainability Rating Security Rating Vulnerabilities

HttpParam or Sieve

If you use the Sieve package for filtering in your (.NET) back-end then you probably only have to look at the SieveFilterService. If however, you use this package for multiple back-ends you can use the HttpParamFilterService as the fall-back to use "regular" HTTP-params

Usage

  1. install & import the package:

    yarn add sieve-ts
     import { Filter, SieveFilterService } from "sieve-ts";
  2. construct a filter using the models:

     const filter = new Filter({
      pageIndex: 2,
      pageSize: 45,
      sorts: [
        {
          field: "testField",
          direction: SortDirection.Ascending,
        },
      ],
      filters: [
        {
          fields: ["firstField", "secondField"],
          values: ["singleValue"],
          operator: Operators.CONTAINS,
        },
      ],
    })
  3. create a service and use it:

    // user either one, both will return a string
    const service = new SieveFilterService();
    const service = new HttpParamService();
  4. use the service to create a usable value:

    console.log(service.toValue(filter));
  5. Observe the output:

    // The Sieve service will have combined the fields together into a single filter:
    page=3&pageSize=45&Filters=(firstField|secondField)@=singleValue&Sorts=testField
    
    // the HTTP service will simply pass both variables:
    page=3&pageSize=45&firstField=singleValue&secondField=singleValue&testField=+

Retrieving filter objects from the URL

You can also give the FilterService the URL query parameter string and have it figure out the filter structure. Let's try it with a rather complicated query param string: page=3&pageSize=45&Filters=(firstField|secondField)@=singleValue&Sorts=testField

// create service
const sieveService = new SieveFilterService();

// parse filter
const filters = sieveService.parse(
  "page=3&pageSize=45&Filters=(firstField|secondField)@=singleValue&Sorts=testField",
);

// output
console.log(JSON.stringify(filters, null, 2));

Extra/custom parameters

To include extra/custom parameters simply call the toValue or getFilterValue functions with the optional second argument (key:value):

console.log(service.toValue(filter, {firstKey: "firstValue", secondKey: "secondValue"}));

Customized Sieve instances

If you have customized parts of your back-end Sieve you can also pass along the custom options to the SieveService. Let's say we've customized the word "page" to someOtherWordForPage and the character to split filter keys from | to ~, our config would look like this:

  const sieveService = new SieveFilterService({
    ...SIEVE_CONSTANTS,
    page: "someOtherWordForPage",
    keySplitChar: "~",
  });

Which would result in the following result instead:

  someOtherWordForPage=3&pagesize=45&Filters=(firstField~secondField)@=singleValue&Sorts=testField

Readme

Keywords

none

Package Sidebar

Install

npm i sieve-ts

Weekly Downloads

46

Version

1.1.1

License

MIT

Unpacked Size

193 kB

Total Files

40

Last publish

Collaborators

  • mastermindzh