@valbo/async-middleware

Use async middlewares with express.

Usage no npm install needed!

<script type="module">
  import valboAsyncMiddleware from 'https://cdn.skypack.dev/@valbo/async-middleware';
</script>

README

@valbo/async-middleware

Use async middlewares with express.

npm (scoped) semantic-release Build Status Coverage Status Known Vulnerabilities

Install

npm install @valbo/async-middleware

Usage

Exports wrappers that allows you to use async functions as express middlewares. If the wrapped middlewares throw, the error will be catched and passed to next().

import express, { Request, Response, NextFunction } from 'express';
import { asyncMiddleware, asyncErrorMiddleware, AsyncRequestHandler, AsyncErrorRequestHandler } from '@valbo/async-middleware';

const getUser: AsyncRequestHandler = async (request: Request, response: Response, next: NextFunction): Promise<void> => {
  response.locals.user = await database.getUser();
  next();
};

const errorHandler: AsyncErrorRequestHandler = async (error: any, request: Request, response: Response, next: NextFunction): Promise<void> => {
  if (error.report) {
    await remoteAlerts.report(error);
  }
  response.status(error.status);
  response.json({ error: { status: error.status, name: error.name, message: error.message } });
};

const app = express();

app.use(asyncMiddleware(getUser));
app.use(asyncErrorMiddleware(errorHandler));