UNPKG

@ganintegrity/gan-error

Version:

an extendable ES6 Error with support for HTTP errors

39 lines (28 loc) 813 B
const { STATUS_CODES } = require('statuses'); const GanError = require('./GanError'); const upperFirst = str => str.charAt(0).toUpperCase() + str.slice(1); function parseStatusString(str) { return str .split(' ') .reduce((result, word) => result + upperFirst(word.toLowerCase())); } class HttpError extends GanError {} Object.entries(STATUS_CODES).forEach(([code, statusString]) => { code = parseInt(code); if (code < 400 || code >= 600) { return; } let name = parseStatusString(statusString); if (!name.endsWith('Error')) { name += 'Error'; } const error = class extends HttpError { static get name() { return name; } }; error.status = code; error.prototype.status = code; HttpError[code] = HttpError[name] = error; }); module.exports = HttpError;