UNPKG

2.6 kBMarkdownView Raw
1# light-middleware [![NPM version](https://badge.fury.io/js/light-middleware.svg)](https://badge.fury.io/js/light-middleware) [![Build Status](https://travis-ci.com/v-electrolux/light-middleware.svg?branch=master)](https://travis-ci.com/v-electrolux/light-middleware) [![Code Coverage](https://badgen.now.sh/codecov/c/github/v-electrolux/light-middleware)](https://badgen.now.sh/codecov/c/github/v-electrolux/light-middleware) [![install size](https://packagephobia.com/badge?p=light-middleware)](https://packagephobia.com/result?p=light-middleware)
2
3A very tiny package (zero dependencies) that contains a bunch of most common middlewares, used in many micro-services
4
5## Install
6
7```shell script
8$ npm install light-middleware
9```
10
11## Usage
12
13- catchNotFoundError - middleware for throwing 404 error to user
14- enableCors - middleware for enabling CORS requests to micro-service
15- errorHandler - middleware for simple error handling
16- expressBackwardCompatibility - middleware that adds method status and json (if you do not want use express module)
17- logRequest - middleware for simple logging, you can use any logger module with log, error, info, fatal methods
18- setStartRequestTimestamp - middleware that set starting time of request (for calculating duration for example)
19- asyncErrorHandler - wraps async handler and converts it to classic express-handler style
20
21## Example
22
23```javascript
24// use logger module here, for example simple-node-logger
25const snl = require("simple-node-logger");
26const logger = snl.createSimpleLogger();
27
28// use web framework, express for example
29const express = require("express");
30const app = express();
31
32const MiddlewareManager = require("light-middleware");
33const middlewareManager = new MiddlewareManager(logger , true);
34
35app.use(middlewareManager.catchNotFoundError);
36app.use(middlewareManager.enableCors);
37app.use(middlewareManager.errorHandler);
38app.use(middlewareManager.expressBackwardCompatibility);
39app.use(middlewareManager.logRequest);
40app.use(middlewareManager.setStartRequestTimestamp);
41
42// use as a wrapper for middleware handler
43const testMiddlewareHandler = async function (req, res, next) {
44 if (req.body) {
45 next();
46 } else {
47 next(new Error("body not OK"));
48 }
49};
50app.use(middlewareManager.asyncErrorHandler(testMiddlewareHandler));
51
52// or as a wrapper for endpoint handler
53const testEndpointHandler = async function (req, res, next) {
54 if (req.body) {
55 res.end("body OK");
56 } else {
57 throw new Error("body not OK");
58 }
59};
60app.post("/test_handler", asyncErrorHandler(testEndpointHandler));
61```