timhaley94/holdem

View on GitHub
server/src/modules/errors/index.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
const types = {
  BadRequest: 400,
  Unauthorized: 401,
  NotFound: 404,
  Conflict: 409,
  Fatal: 500,
};

class BaseError extends Error {
  constructor(message) {
    super();
    this.message = message;
  }
}

const error = (status) => (
  class extends BaseError {
    constructor(...args) {
      super(...args);
      this.status = status;
    }
  }
);

const errors = Object.entries(types).reduce(
  (acc, [name, status]) => ({
    ...acc,
    [name]: error(status),
  }),
  {},
);

module.exports = {
  ...errors,
  BaseError,
};