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

Offical Documentation

Official Docs: