@ganintegrity/gan-error
Version:
an extendable ES6 Error with support for HTTP errors
39 lines (28 loc) • 813 B
JavaScript
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;