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

rethink-filter-parser

v0.1.0

Published

Parses simple lambdas and turns them into ReQL.

Downloads

3

Readme

RethinkDB filter parser

This is pretty experimental, and mostly for my own edification. It turns simple lambdas into ReQL, for no good reason, other than to give a sort of C# style interface. Half the things you should be able to do aren't implemented yet. Also, it converts the function to a string then parses it, so it'll bork on a wide variety of otherwise reasonable-looking functions.

Installation

$ npm install --save rethink-filter-parser

Usage

Import and use.

import parser from 'rethink-filter-parser';

// ...

r.table('people').filter(parser((x) => x.age > 18))
// equivalent to r.table('people').filter(r.row('age').gt(18))

Note that the choice of the name x to stand for the row is arbitrary: it could be called something else, as long as there is exactly one argument.

The 'preferred' way is to use rethink-plus:

import parser from 'rethink-filter-parser';
import RethinkPlus from 'rethink-plus';

let db = new RethinkPlus({plugins: [parser.plugin]});
let adults = await db.table.people.filter((x) => x.age > 16);

You can add context to use within your lambda - the 2nd argument can be referred to by ctx:

let people = await db.table.people.filter((x) => x.age > ctx, minAge);

If you pass an object, the fields are accessible just by name:

let people = await db.table.people.filter((x) => x.age > minAge, {minAge});

Note that the lambda is parsed, not run, and so it can't 'see' other variables in the scope: hence the context parameter.

Finally, if you're stuck without lambdas, you can use a good old-fashioned function, as long as it only has one statement and it begins with return:

db.table.people.filter(function (x) { return x.age > minAge; }, {minAge})

That sort of defeats the point though...

Licence etc

ISC licence, do what you like. It's pretty much only half-written, so if you're interested in this project get in touch and I'll make an effort to finish it!