ucsc-xena-client
Version:
UCSC Xena Client. Functional genomics visualizations.
59 lines (47 loc) • 1.83 kB
JavaScript
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _ = require('./underscore_ext');
// properities of Error objects which we want to serialize.
var errorProps = ['name', 'message', 'context'];
var getErrorProps = function getErrorProps(err) {
var props = _.pick(err, errorProps);
return err.errors ? _.assoc(props, 'errors', err.errors.map(getErrorProps)) : props;
};
function CompositeError(message) {
Error.call(this, message);
this.name = 'CompositeError';
for (var _len = arguments.length, errors = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
errors[_key - 1] = arguments[_key];
}
this.errors = errors;
}
CompositeError.prototype = Object.create(Error.prototype);
CompositeError.prototype.constructor = CompositeError;
function compositeError(message) {
var err = new Error(message);
for (var _len2 = arguments.length, errors = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
errors[_key2 - 1] = arguments[_key2];
}
err.errors = errors;
return err;
}
function logError(err) {
if (err.errors) {
err.errors.forEach(logError);
}
if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && typeof window.chrome !== 'undefined') {
// In Chrome, rethrowing provides better source map support
setTimeout(function () {
throw err;
});
} else {
console.error(err.stack || err); // uglify should drop this for us in production
}
return err;
}
module.exports = {
CompositeError: CompositeError,
compositeError: compositeError,
getErrorProps: getErrorProps,
logError: logError
};
;