File size: 793 Bytes
0bfe2e3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { Request, Response, NextFunction } from 'express';
import { createLogger, APIError, constants } from '@aiostreams/core';
import { createResponse } from '../utils/responses';

const logger = createLogger('server');

export const errorMiddleware = (
  err: Error,
  req: Request,
  res: Response,
  next: NextFunction
) => {
  if (!err) {
    next();
    return;
  }

  let error;
  if (!(err instanceof APIError)) {
    // log unexpected errors
    logger.error(err);
    logger.error(err.stack);
    error = new APIError(constants.ErrorCode.INTERNAL_SERVER_ERROR);
  } else {
    error = err;
  }

  res.status(error.statusCode).json(
    createResponse({
      success: false,
      error: {
        code: error.code,
        message: error.message,
      },
    })
  );
  return;
};