koa-error-mapper

An error mapper for Koa applications

Usage no npm install needed!

<script type="module">
  import koaErrorMapper from 'https://cdn.skypack.dev/koa-error-mapper';
</script>

README

koa-error-mapper

koa-error-mapper is a middleware that handles application errors by mapping them to a custom format.

Status

npm version build status

Installation

Install the package via yarn:

❯ yarn add koa-error-mapper

or via npm:

❯ npm install koa-error-mapper --save

Usage

Mappers

Mappers are responsible for handling errors and normalizing the response. A generic fallback mapper is included in case no custom mapper is available.

The only interface for a mapper is a map() function. A mapper should return undefined if it is not capable or responsible for mapping a specific error. It must return an object with status and body. If not returned on the object, the value on the response will be undefined for precaution. It may also contain a headers property.

module.exports = {
  map(e) {
    if (!(e instanceof CustomError)) {
      return;
    }

    // Add your own custom logic here.
    return { status: e.code, body: { message: e.message }, headers: { Foo: 'Bar' }};
  }
};

Now use the error mapper and register CustomMapper:

'use strict';

const CustomError = require('path/to/my/custom/error');
const Koa = require('koa');
const app = new Koa();
const customMapper = require('path/to/my/custom/mapper');

app.use(errorMapper([customMapper]);

app.get('/', async () => {
  throw new CustomError(401, 'Ah-ah!');
});

app.listen(3000);

Result:

GET /

HTTP/1.1 401 Unauthorized
Foo: Bar

{ "message": "Ah-ah!" }

Tests

❯ yarn test

Release

❯ npm version [<new version> | major | minor | patch] -m "Release %s"

License

MIT