Name
sn_app_insights.StackTraceParser
Description
No description available
Script
var StackTraceParser = Class.create();
StackTraceParser.prototype = {
initialize: function() {},
GENERATED_SCRIPT_PREFIX: "org.mozilla.javascript.gen.",
parseStackTrace: function(stack) {
stack = stack.trim();
var parsedStack = [];
var splitStack = stack.split("\n");
for (var i = 0; i < splitStack.length; i++) {
var stackString = splitStack[i].trim();
var stackObject = {
"value": stackString
};
if (stackString.startsWith(this.GENERATED_SCRIPT_PREFIX) && stackString.indexOf("null_null") == -1 && stackString.indexOf("_refname_") == -1) {
var classPart = stackString.substring(stackString.indexOf("(") + 1);
classPart = classPart.substring(0, classPart.indexOf(")"));
if (classPart.indexOf(":") > 0) {
stackObject.lineNumber = parseInt(classPart.substring(classPart.indexOf(":") + 1));
classPart = classPart.substring(0, classPart.indexOf(":"));
}
if (classPart.indexOf(".script") > 0) {
classPart = classPart.substring(0, classPart.indexOf(".script"));
}
stackObject.table = classPart.substring(0, classPart.indexOf("."));
stackObject.sys_id = classPart.substring(stackObject.table.length + 1);
parsedStack.push(stackObject);
}
}
return parsedStack;
},
getScriptsInStack: function(stackTrace) {
var scriptsInStack = new Object();
var parsedStack = this.parseStackTrace(stackTrace);
var callingOrder = 1;
for (var i = parsedStack.length - 1; i >= 0; i--) {
var stackElement = parsedStack[i];
if (!gs.nil(stackElement.sys_id) && !gs.nil(stackElement.table) && !scriptsInStack[stackElement.sys_id]) {
var script = {};
script.table = stackElement.table;
script.calling_order = callingOrder++;
scriptsInStack[stackElement.sys_id] = script;
}
}
return scriptsInStack;
},
type: 'StackTraceParser'
};
Sys ID
10a6f147db651010e4318f8d139619d9