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

curate

v0.2.0

Published

API Manufacturer for Query Objects

Downloads

2

Readme

Curate

Curate makes it easy to quickly expose database queries to an express-api. It also features a client component that makes it easy to consume those API methods.

It works especially well with modella and chino.

Example

configuration

app.js var app = express(), curate = require('curate');

curate.app = app;
curate.namespace = 'api/v1'

exposing server methods

user-model/server.js

  var curate = require('curate'),
      db = require('mong')('localhost/db');

  var User = module.exports = function(attrs) {
    this.username = attrs.username;
    this.password = attrs.password;
    this.email = attrs.email;
  }

  User.allUsers = function(cb) {
    db.get('users').find({}, cb);
  }

  curate('users/all', User.allUsers);

You can now visit http://localhost/api/v1/users and get JSON of the users returned by the User.allUsers query.

consuming the API

Curate also provides easy consumption of the generated API.

user-model/client.js

var curate = require('curate');

var User = module.exports = function() {
}

User.allUsers = curate('users/all', User);

This maps the client-side User.allUsers to hit /api/v1/users/all and use the resulting JSON in a callback. The resulting function has the same fingerprint as the server-side function. It expects a cb(err, results) for its argument.

The second argument passes the JSON returned into a constructor. ie. Instead of passing just JSON in, it will pass the JSON to the constructor to make full-fledged objects.

Filtering results

Sometimes you don't want the raw-db exposed to the client. For this, you can specify the filter method in the app.js

For example:

var app = express(),
    curate = require('curate');

curate.app = app;
curate.filterMethod = 'filter';

Now, if an instance has a method named filter it will call it and only pass the results of that method into the exposed API.