create-boom-error
Version:
Simply create sub-classed Boom errors for Hapi applications.
45 lines (36 loc) • 889 B
JavaScript
const Boom = require('@hapi/boom');
const Decamelize = require('decamelize');
class BaseError extends Error {
name;
code;
}
function isDecoratedBoom(err) {
return err instanceof BaseError;
}
function createBoomError(name, statusCode, message, code) {
return class extends BaseError {
constructor() {
super();
this.name = name;
if (code) {
this.code = code;
} else {
this.code = Decamelize(name);
}
this.message = undefined;
if (typeof message === 'string') {
this.message = message;
} else if (typeof message === 'function') {
this.message = message.apply(null, arguments);
}
Boom.boomify(this, { statusCode });
if (!message) {
Reflect.deleteProperty(this.output.payload, 'message');
}
}
}
}
module.exports = {
isDecoratedBoom,
createBoomError
};