harness/app-assets/templates/assets/js/modules/monitor.js (63 lines of code) (raw):
define([
'raven'
], function (
Raven
) {
var config = {
dsn: null,
git_commit: 'not available'
};
try {
config = {
dsn: GRUNT_SENTRY_DSN,
git_commit: GRUNT_LAST_GIT_COMMIT
};
} catch(e) {}
var modules = {
extractTags: function() {
var bodyClass = document.body.getAttribute('class');
var itemTone = bodyClass.match(/tone--([^\s]+)/);
return {
itemTone: itemTone ? itemTone[1] : null,
itemId: document.body.getAttribute('data-page-id'),
deviceKind: document.body.getAttribute('data-ads-config'),
ads: document.body.getAttribute('data-ads-enabled') === 'true',
};
},
ignoreErrors: function() {
var ignoreArray = ['fake'];
ignoreArray.push = function(){};
return ignoreArray;
},
setContext: function(context, fn){
if(config.dsn){
return Raven.context({ tags: { context: context }}, fn);
}
return fn();
}
};
var init = function(){
var tags = modules.extractTags();
if(!Raven.isSetup() && config.dsn){
Raven.config(config.dsn, {
tags: tags,
release: config.git_commit,
ignoreErrors: modules.ignoreErrors(),
shouldSendCallback: function(data) {
if(data.stacktrace && data.stacktrace.frames){
data.stacktrace.frames = data.stacktrace.frames.reverse().slice(0,3).reverse();
}
var sampleRate = 35;
return (Math.random() * 100 <= sampleRate);
}
}).install();
}
};
return {
init: init,
setContext: modules.setContext,
modules: modules,
config: config,
raven: Raven
};
});