@algoan/nestjs-http-exception-filter
Version:
A simple http exception filter for NestJS applications
59 lines • 4.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getErrorMessage = exports.getCode = void 0;
const lodash_1 = require("lodash");
function getCode(exResponse) {
if (typeof exResponse === 'string') {
return formatErrorCode(exResponse);
}
if ('error' in exResponse && typeof exResponse.error === 'string') {
return formatErrorCode(exResponse.error);
}
if ('code' in exResponse && typeof exResponse.code === 'string') {
return exResponse.code;
}
return '';
}
exports.getCode = getCode;
function getErrorMessage(exResponse) {
if (typeof exResponse === 'string') {
return exResponse;
}
if (typeof exResponse.message === 'string') {
return exResponse.message;
}
if (Array.isArray(exResponse.message)) {
const error = exResponse.message[0];
if (typeof error === 'string') {
return error;
}
const validationError = parseErrorMessage(error);
if (validationError) {
return validationError;
}
}
return 'INTERNAL_SERVER_ERROR';
}
exports.getErrorMessage = getErrorMessage;
function formatErrorCode(error) {
return (0, lodash_1.toUpper)((0, lodash_1.snakeCase)(error));
}
function parseErrorMessage(error) {
let message = '';
const messages = findConstraints(error);
if (messages === undefined) {
return 'Invalid parameter';
}
Object.keys(messages).forEach((key) => {
message += `${message === '' ? '' : ' -- '}${messages[key]}`;
});
return message;
}
function findConstraints(error) {
let objectToIterate = error;
while (objectToIterate.children !== undefined) {
objectToIterate = objectToIterate.children[0];
}
return objectToIterate.constraints;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3IudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbUNBQTRDO0FBUTVDLFNBQWdCLE9BQU8sQ0FBQyxVQUFzQztJQUM1RCxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLE9BQU8sSUFBSSxVQUFVLElBQUksT0FBTyxVQUFVLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2xFLE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxNQUFNLElBQUksVUFBVSxJQUFJLE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNoRSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQWRELDBCQWNDO0FBS0QsU0FBZ0IsZUFBZSxDQUFDLFVBQXNDO0lBQ3BFLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksT0FBTyxVQUFVLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzNDLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBRXRDLE1BQU0sS0FBSyxHQUE2QixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQVcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixPQUFPLGVBQWUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sdUJBQXVCLENBQUM7QUFDakMsQ0FBQztBQXRCRCwwQ0FzQkM7QUFRRCxTQUFTLGVBQWUsQ0FBQyxLQUFhO0lBQ3BDLE9BQU8sSUFBQSxnQkFBTyxFQUFDLElBQUEsa0JBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFLRCxTQUFTLGlCQUFpQixDQUFDLEtBQXNCO0lBQy9DLElBQUksT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUN6QixNQUFNLFFBQVEsR0FBMkIsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWhFLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFRLEVBQUU7UUFDbEQsT0FBTyxJQUFJLEdBQUcsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBS0QsU0FBUyxlQUFlLENBQUMsS0FBc0I7SUFDN0MsSUFBSSxlQUFlLEdBQW9CLEtBQUssQ0FBQztJQUM3QyxPQUFPLGVBQWUsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDOUMsZUFBZSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE9BQU8sZUFBZSxDQUFDLFdBQVcsQ0FBQztBQUNyQyxDQUFDIn0=