Home

Awesome

tweenz

npm (scoped) Build Status Greenkeeper badge

A small library for writing Express middleware, inspired by Pyramid tweens.

Why?

This library does the following:

Please Note! This middleware stores the whole response body in memory. If you are returning particularly large responses, you should be aware of this.

Getting started

yarn add tweenz

A tween in tweenz looks like this:

export default () => {
    // one-time configuration code goes here

    return async (requestDetails, req, res) => {
        // code to be executed for each request before
        // the actual application code goes here

        const details = await requestDetails;

        // code to be executed for each request after
        // the actual application code goes here
    };
};

Example

Here's a tween to calculate the time taken for a request to complete:

time-logger.js

export default () => {
    return async (requestDetails, req, res) => {
        const startAt = process.hrtime();

        // wait for request to complete
        await requestDetails;

        // calculate time taken for request
        const [seconds, nanoseconds] = process.hrtime(startAt);
        const miliseconds = seconds * 1e3 + nanoseconds * 1e-6;
        console.log(`Request took ${miliseconds}ms to complete!`);
    };
};

app.js

import express from 'express';
import tweenz from 'tweenz';
import timeLogger from './time-logger';

const app = express();
app.use(tweenz(timeLogger()));

...

API

Registering tweens

tweenz(tween [, tween ...])

Tween Callback

A tween is a callback, which will get executed with the following arguments