Files
Zos/Skills/@be/node_modules/format-error/index.js

55 lines
1.1 KiB
JavaScript

var _toJSON = Error.prototype.toJSON;
var patchError = function(){
Error.prototype.toJSON = function() {
var alt = {};
var storeKey = function(key) {
var value = this[key];
// assume message is duped in stack
if (key === 'message') return;
if (key === 'stack') {
if (value.indexOf('Error: ') === 0)
value = value.substr(7);
key = 'Error';
}
alt[key] = value;
}
Object.getOwnPropertyNames(this).forEach(storeKey, this);
return alt;
}
};
var unpatchError = function(){
Error.prototype.toJSON = _toJSON;
};
var format = function(error, options){
var prettyjson = require('prettyjson');
patchError();
var makeSimple = function(error){
// prettyjson doesn't like it otherwise
return JSON.parse(JSON.stringify(error));
};
var simpleError = makeSimple(error);
var message = prettyjson.render(simpleError, options);
// revert in case the rest of the consumers code
// doesn't play well with this
unpatchError();
return message;
};
module.exports = {
format: format,
patchError: patchError,
unpatchError: unpatchError
};