Files
zulip/zephyr/static/js/blueslip.js
Zev Benjamin b383ee1dd4 Only report a given error message once per page load
(imported from commit 058fe321a991bbc50eed63b0bdbf75bcfa8afe2b)
2013-03-13 10:55:33 -04:00

72 lines
1.4 KiB
JavaScript

// Silence jslint errors about the "console" global
/*global console: true */
var blueslip = (function () {
var exports = {};
var error_has_stack = Error().hasOwnProperty('stack');
var reported_errors = {};
function report_error(msg) {
var stack;
if (error_has_stack) {
stack = Error().stack;
} else {
stack = 'No stacktrace available';
}
var key = msg + stack;
if (reported_errors.hasOwnProperty(key)) {
return;
}
$.ajax({
type: 'POST',
url: '/json/report_error',
dataType: 'json',
data: { message: msg, stacktrace: stack },
timeout: 10*1000,
success: function () {
reported_errors[key] = true;
}
});
}
exports.log = function blueslip_log (msg) {
console.log(msg);
};
exports.info = function blueslip_info (msg) {
console.info(msg);
};
exports.warn = function blueslip_warn (msg) {
console.warn(msg);
if (debug_mode) {
console.trace();
}
};
exports.error = function blueslip_error (msg) {
if (debug_mode) {
throw new Error(msg);
} else {
console.error(msg);
report_error(msg);
}
};
exports.fatal = function blueslip_fatal (msg) {
if (! debug_mode) {
report_error(msg);
}
throw new Error(msg);
};
return exports;
}());
/*global console: false */