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 🙏

© 2025 – Pkg Stats / Ryan Hefner

mproc

v0.0.2

Published

Message processing middleware, for Node.js/JavaScript

Readme

MProc

Message processing middleware, for Node.js/JavaScript. It can chain message processors, simple functions that receives a message (a simple JavaScript object).

Installation

Via npm on Node:

npm install mproc

Usage

Reference in your program:

var mproc = require('mproc');

Create a message processor, and build a chain of message processors

var processor = mproc.createProcessor();
processor.use(function (message, next) { message++; next(null, message); })
    .use(function (message, next) { console.dir(message); })

Each message processor is a function that receives two parameters:

  • message: A simple JavaScript object
  • next: A function that receives two parameters err, message. It executes the next step in the message processor chain.

You can define a processor with a fail error function:

var processor = mproc.createProcessor()
    .use(function (msg, next) { ... })
    .use(function (msg, next) { ... })
    .fail(function (err) { ... })

The supplied fail function will be invoked if any next function call receives a non-null first argument, or if the middleware function raise an exception.

To send a message to a processor:

processor.run(message);

Note: each function in the chain can have asynchronous processing or not, then it can invoke the next or not.

Usually, each step/function in the message processor chain, calls the next function with the same message. But they can enrich/transform the message, or give another message to the next function.

To give the same message (maybe enriched or transformed), you can call:

next();

without arguments. If you want to send a NEW message to the next steps, use:

next(null, newmessage);

Sometimes, you want to send new message to the same processor. In those cases, the step function can be defined with a third parameter, the context, an auxiliary object with a function post:

function numbers(messsage, next, context) {
    for (var k = 1; k < message.counter; k++)
        context.post({ counter: k });
}

context.post function processes the new message in the next tick.

See the Web Crawler sample for an example of using context.post to produce multiple message in one step.

See Collatz sample for an example using context.post to have a loop in the message process.

Development

git clone git://github.com/ajlopez/MProc.git
cd MProc
npm install
npm test

Samples

To do

  • Named subprocessors, to send/post messages.
  • Distributed samples.
  • context.clone utility function to deep clone a message.

Versions

  • 0.0.1: Published, 2013-01-19, with .createProcessor, processor.run, processor.runSync, context.send, context.post.
  • 0.0.2: Published. 2014-10-13. Removing proc.runSync, context.send. Adding proc.fail. Using setImmediate.

Contribution

Feel free to file issues and submit pull requests � contributions are welcome.

If you submit a pull request, please be sure to add or update corresponding test cases, and ensure that npm test continues to pass.