npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@flatfile/filter-builder

v1.0.3

Published

## Purpose

Downloads

15

Readme

Flatfile Filter Builder

Purpose

All of the filtering/sorting/pagination capabilities in X currently operate through use of dedicated url parameters. e.g. GET records?sortField=first_name&sortDirection=asc&filterField=last_name&filter=error&versionId=dev_vr_123456. This has proven cumbersome to use, difficult to maintain, and lacking in the flexibility needed by our end users. The goal of filter-builder is to replace these url parameters with a structured, queryable, consistent filtering pattern that can be used across the application and expanded ad infinitum.

Implementation

filter-builder introduces several new patterns.

The first pattern is that of the Filter object. This object contains all the necessary information needed to filter, sort, and paginate a record set. Filter establishes a strict contract that the ephemeral module can expect and parse in a consistent manner.

The second pattern is that of the Flatfile Query Language (FFQL). FFQL is a strict, logical query language that can be parsed into a Filter object. The query language operates as follow:

// Old Filtering...
GET records?sortField=first_name&sortDirection=asc&filterField=last_name&filter=error&versionId=dev_vr_123456

// New Filtering using FFQL
GET records?q=last_name is error&sort=first_name asc&versionId=dev_vr_123456

FFQL is extensible and fully logically parsable, opening up previously unsupported techniques:

GET records?q=((age gte 18 and age lte 65) or first_name eq Bender) and is error

The following operations are supported:

// Data Filter Operators
'eq' | 'ne' | 'gte' | 'gt' | 'lt' | 'lte' | 'like'

// Message Filter Operators
'is'

// Message Filter Statuses
'error' | 'warning' | 'info' | 'valid'

// Logical Filter Operators
'and' | 'or'

Notes

The filter-builder package is complete and has 100% test coverage, but has not been implemented anywhere in the application at this time. Forward rolling changes will need to take into account backwards compatibility and multiple ephemeral storage strategies.