code: function getScriptUrlFromStack(stack, skipStackDepth) {
    var matches, remainingStack,
        url = null,
        ignoreMessage = typeof skipStackDepth === "number";
    skipStackDepth = ignoreMessage ? Math.round(skipStackDepth) : 0;
    if (typeof stack === "string" && stack) {
      if (ignoreMessage) {
        matches = stack.match(/(data:text\/javascript(?:;[^,]+)?,.+?|(?:|blob:)(?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/);
      }
      else {
        matches = stack.match(/^(?:|[^:@]*@|.+\)@(?=data:text\/javascript|blob|http[s]?|file)|.+?\s+(?: at |@)(?:[^:\(]+ )*[\(]?)(data:text\/javascript(?:;[^,]+)?,.+?|(?:|blob:)(?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/);
  
        if (!(matches && matches[1])) {
          matches = stack.match(/\)@(data:text\/javascript(?:;[^,]+)?,.+?|(?:|blob:)(?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/);
        }
      }
  
      if (matches && matches[1]) {
        if (skipStackDepth > 0) {
          remainingStack = stack.slice(stack.indexOf(matches[0]) + matches[0].length);
          url = getScriptUrlFromStack(remainingStack, (skipStackDepth - 1));
        }
        else {
          url = matches[1];
        }
      }
  
      // TODO: Handle more edge cases!
      // Fixes #1
      // See https://github.com/JamesMGreene/currentExecutingScript/issues/1
  
      // ???
  
    }
    return url;
  }
docs: Get the currently executing script URL from an Error stack trace