tweenz
v3.0.2
Published
[![npm (scoped)](https://img.shields.io/npm/v/tweenz.svg)](https://yarn.pm/tweenz) [![Build Status](https://travis-ci.org/sharkcore/tweenz.svg?branch=master)](https://travis-ci.org/sharkcore/tweenz) [![Greenkeeper badge](https://badges.greenkeeper.io/shar
Downloads
15
Readme
tweenz
A small library for writing Express middleware, inspired by Pyramid tweens.
Why?
This library does the following:
- Exposes the response body to the middleware (as part of
requestDetails
) - Provides a first class API to allow middleware to safely execute code after the request has finished
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
requestDetails
An object of the following type:
{ responseBody: string; }
req
res