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 |
|
3 | A 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
|
25 | const snl = require("simple-node-logger");
|
26 | const logger = snl.createSimpleLogger();
|
27 |
|
28 | // use web framework, express for example
|
29 | const express = require("express");
|
30 | const app = express();
|
31 |
|
32 | const MiddlewareManager = require("light-middleware");
|
33 | const middlewareManager = new MiddlewareManager(logger , true, ["Custom-Cors-Header1", "Custom-Cors-Header2"]);
|
34 |
|
35 | app.use(middlewareManager.catchNotFoundError);
|
36 | app.use(middlewareManager.enableCors);
|
37 | app.use(middlewareManager.errorHandler);
|
38 | app.use(middlewareManager.expressBackwardCompatibility);
|
39 | app.use(middlewareManager.logRequest);
|
40 | app.use(middlewareManager.setStartRequestTimestamp);
|
41 |
|
42 | // use as a wrapper for middleware handler
|
43 | const testMiddlewareHandler = async function (req, res, next) {
|
44 | if (req.body) {
|
45 | next();
|
46 | } else {
|
47 | next(new Error("body not OK"));
|
48 | }
|
49 | };
|
50 | app.use(middlewareManager.asyncErrorHandler(testMiddlewareHandler));
|
51 |
|
52 | // or as a wrapper for endpoint handler
|
53 | const 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 | };
|
60 | app.post("/test_handler", asyncErrorHandler(testEndpointHandler));
|
61 | ```
|