@sentry/browser 6.17.7 → 6.17.8-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/bundle.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! @sentry/browser 6.17.7 (635dfc2) | https://github.com/getsentry/sentry-javascript */
1
+ /*! @sentry/browser 6.17.8-beta.0 (07f9257) | https://github.com/getsentry/sentry-javascript */
2
2
  var Sentry = (function (exports) {
3
3
  /*! *****************************************************************************
4
4
  Copyright (c) Microsoft Corporation.
@@ -4471,7 +4471,7 @@ var Sentry = (function (exports) {
4471
4471
  hub.bindClient(client);
4472
4472
  }
4473
4473
 
4474
- var SDK_VERSION = '6.17.7';
4474
+ var SDK_VERSION = '6.17.8-beta.0';
4475
4475
 
4476
4476
  var originalFunctionToString;
4477
4477
  /** Patch toString calls to return proper name for wrapped functions */
@@ -4694,10 +4694,6 @@ var Sentry = (function (exports) {
4694
4694
  InboundFilters: InboundFilters
4695
4695
  });
4696
4696
 
4697
- /**
4698
- * This was originally forked from https://github.com/occ/TraceKit, but has since been
4699
- * largely modified and is now maintained as part of Sentry JS SDK.
4700
- */
4701
4697
  // global reference to slice
4702
4698
  var UNKNOWN_FUNCTION = '?';
4703
4699
  // Chromium based browsers: Chrome, Brave, new Opera, new Edge
@@ -4711,10 +4707,11 @@ var Sentry = (function (exports) {
4711
4707
  var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/;
4712
4708
  // Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108
4713
4709
  var reactMinifiedRegexp = /Minified React error #\d+;/i;
4710
+ var opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
4711
+ var opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i;
4714
4712
  /** JSDoc */
4715
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
4716
4713
  function computeStackTrace(ex) {
4717
- var stack = null;
4714
+ var frames = [];
4718
4715
  var popSize = 0;
4719
4716
  if (ex) {
4720
4717
  if (typeof ex.framesToPop === 'number') {
@@ -4725,42 +4722,30 @@ var Sentry = (function (exports) {
4725
4722
  }
4726
4723
  }
4727
4724
  try {
4728
- // This must be tried first because Opera 10 *destroys*
4729
- // its stacktrace property if you try to access the stack
4730
- // property first!!
4731
- stack = computeStackTraceFromStacktraceProp(ex);
4732
- if (stack) {
4733
- return popFrames(stack, popSize);
4734
- }
4725
+ // Access and store the stacktrace property before doing ANYTHING
4726
+ // else to it because Opera is not very good at providing it
4727
+ // reliably in other circumstances.
4728
+ var stacktrace = ex.stacktrace || ex.stack || '';
4729
+ frames = parseFrames(stacktrace);
4735
4730
  }
4736
4731
  catch (e) {
4737
4732
  // no-empty
4738
4733
  }
4739
- try {
4740
- stack = computeStackTraceFromStackProp(ex);
4741
- if (stack) {
4742
- return popFrames(stack, popSize);
4743
- }
4744
- }
4745
- catch (e) {
4746
- // no-empty
4734
+ if (frames.length && popSize > 0) {
4735
+ frames = frames.slice(popSize);
4747
4736
  }
4748
4737
  return {
4749
4738
  message: extractMessage(ex),
4750
4739
  name: ex && ex.name,
4751
- stack: [],
4752
- failed: true,
4740
+ stack: frames,
4753
4741
  };
4754
4742
  }
4755
4743
  /** JSDoc */
4756
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity
4757
- function computeStackTraceFromStackProp(ex) {
4744
+ // eslint-disable-next-line complexity
4745
+ function parseFrames(stackString) {
4758
4746
  var e_1, _a, _b;
4759
- if (!ex || !ex.stack) {
4760
- return null;
4761
- }
4762
- var stack = [];
4763
- var lines = ex.stack.split('\n');
4747
+ var frames = [];
4748
+ var lines = stackString.split('\n');
4764
4749
  var isEval;
4765
4750
  var submatch;
4766
4751
  var parts;
@@ -4768,7 +4753,22 @@ var Sentry = (function (exports) {
4768
4753
  try {
4769
4754
  for (var lines_1 = __values(lines), lines_1_1 = lines_1.next(); !lines_1_1.done; lines_1_1 = lines_1.next()) {
4770
4755
  var line = lines_1_1.value;
4771
- if ((parts = chrome.exec(line))) {
4756
+ if ((parts = opera10Regex.exec(line))) {
4757
+ element = {
4758
+ filename: parts[2],
4759
+ function: parts[3] || UNKNOWN_FUNCTION,
4760
+ lineno: +parts[1],
4761
+ };
4762
+ }
4763
+ else if ((parts = opera11Regex.exec(line))) {
4764
+ element = {
4765
+ filename: parts[5],
4766
+ function: parts[3] || parts[4] || UNKNOWN_FUNCTION,
4767
+ lineno: +parts[1],
4768
+ colno: +parts[2],
4769
+ };
4770
+ }
4771
+ else if ((parts = chrome.exec(line))) {
4772
4772
  isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line
4773
4773
  if (isEval && (submatch = chromeEval.exec(parts[2]))) {
4774
4774
  // throw out eval line/column and use top-most line/column number
@@ -4778,20 +4778,20 @@ var Sentry = (function (exports) {
4778
4778
  }
4779
4779
  // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now
4780
4780
  // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)
4781
- var _c = __read(extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]), 2), func = _c[0], url = _c[1];
4781
+ var _c = __read(extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]), 2), func = _c[0], filename = _c[1];
4782
4782
  element = {
4783
- url: url,
4784
- func: func,
4785
- line: parts[3] ? +parts[3] : null,
4786
- column: parts[4] ? +parts[4] : null,
4783
+ filename: filename,
4784
+ function: func,
4785
+ lineno: parts[3] ? +parts[3] : undefined,
4786
+ colno: parts[4] ? +parts[4] : undefined,
4787
4787
  };
4788
4788
  }
4789
4789
  else if ((parts = winjs.exec(line))) {
4790
4790
  element = {
4791
- url: parts[2],
4792
- func: parts[1] || UNKNOWN_FUNCTION,
4793
- line: +parts[3],
4794
- column: parts[4] ? +parts[4] : null,
4791
+ filename: parts[2],
4792
+ function: parts[1] || UNKNOWN_FUNCTION,
4793
+ lineno: +parts[3],
4794
+ colno: parts[4] ? +parts[4] : undefined,
4795
4795
  };
4796
4796
  }
4797
4797
  else if ((parts = gecko.exec(line))) {
@@ -4803,20 +4803,20 @@ var Sentry = (function (exports) {
4803
4803
  parts[4] = submatch[2];
4804
4804
  parts[5] = ''; // no column when eval
4805
4805
  }
4806
- var url = parts[3];
4806
+ var filename = parts[3];
4807
4807
  var func = parts[1] || UNKNOWN_FUNCTION;
4808
- _b = __read(extractSafariExtensionDetails(func, url), 2), func = _b[0], url = _b[1];
4808
+ _b = __read(extractSafariExtensionDetails(func, filename), 2), func = _b[0], filename = _b[1];
4809
4809
  element = {
4810
- url: url,
4811
- func: func,
4812
- line: parts[4] ? +parts[4] : null,
4813
- column: parts[5] ? +parts[5] : null,
4810
+ filename: filename,
4811
+ function: func,
4812
+ lineno: parts[4] ? +parts[4] : undefined,
4813
+ colno: parts[5] ? +parts[5] : undefined,
4814
4814
  };
4815
4815
  }
4816
4816
  else {
4817
4817
  continue;
4818
4818
  }
4819
- stack.push(element);
4819
+ frames.push(element);
4820
4820
  }
4821
4821
  }
4822
4822
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
@@ -4826,63 +4826,7 @@ var Sentry = (function (exports) {
4826
4826
  }
4827
4827
  finally { if (e_1) throw e_1.error; }
4828
4828
  }
4829
- if (!stack.length) {
4830
- return null;
4831
- }
4832
- return {
4833
- message: extractMessage(ex),
4834
- name: ex.name,
4835
- stack: stack,
4836
- };
4837
- }
4838
- /** JSDoc */
4839
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
4840
- function computeStackTraceFromStacktraceProp(ex) {
4841
- if (!ex || !ex.stacktrace) {
4842
- return null;
4843
- }
4844
- // Access and store the stacktrace property before doing ANYTHING
4845
- // else to it because Opera is not very good at providing it
4846
- // reliably in other circumstances.
4847
- var stacktrace = ex.stacktrace;
4848
- var opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
4849
- var opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i;
4850
- var lines = stacktrace.split('\n');
4851
- var stack = [];
4852
- var parts;
4853
- for (var line = 0; line < lines.length; line += 2) {
4854
- var element = null;
4855
- if ((parts = opera10Regex.exec(lines[line]))) {
4856
- element = {
4857
- url: parts[2],
4858
- func: parts[3],
4859
- line: +parts[1],
4860
- column: null,
4861
- };
4862
- }
4863
- else if ((parts = opera11Regex.exec(lines[line]))) {
4864
- element = {
4865
- url: parts[5],
4866
- func: parts[3] || parts[4],
4867
- line: +parts[1],
4868
- column: +parts[2],
4869
- };
4870
- }
4871
- if (element) {
4872
- if (!element.func && element.line) {
4873
- element.func = UNKNOWN_FUNCTION;
4874
- }
4875
- stack.push(element);
4876
- }
4877
- }
4878
- if (!stack.length) {
4879
- return null;
4880
- }
4881
- return {
4882
- message: extractMessage(ex),
4883
- name: ex.name,
4884
- stack: stack,
4885
- };
4829
+ return frames;
4886
4830
  }
4887
4831
  /**
4888
4832
  * Safari web extensions, starting version unknown, can produce "frames-only" stacktraces.
@@ -4904,25 +4848,16 @@ var Sentry = (function (exports) {
4904
4848
  * Unfortunatelly "just" changing RegExp is too complicated now and making it pass all tests
4905
4849
  * and fix this case seems like an impossible, or at least way too time-consuming task.
4906
4850
  */
4907
- var extractSafariExtensionDetails = function (func, url) {
4851
+ var extractSafariExtensionDetails = function (func, filename) {
4908
4852
  var isSafariExtension = func.indexOf('safari-extension') !== -1;
4909
4853
  var isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;
4910
4854
  return isSafariExtension || isSafariWebExtension
4911
4855
  ? [
4912
4856
  func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,
4913
- isSafariExtension ? "safari-extension:" + url : "safari-web-extension:" + url,
4857
+ isSafariExtension ? "safari-extension:" + filename : "safari-web-extension:" + filename,
4914
4858
  ]
4915
- : [func, url];
4859
+ : [func, filename];
4916
4860
  };
4917
- /** Remove N number of frames from the stack */
4918
- function popFrames(stacktrace, popSize) {
4919
- try {
4920
- return __assign(__assign({}, stacktrace), { stack: stacktrace.stack.slice(popSize) });
4921
- }
4922
- catch (e) {
4923
- return stacktrace;
4924
- }
4925
- }
4926
4861
  /**
4927
4862
  * There are cases where stacktrace.message is an Event object
4928
4863
  * https://github.com/getsentry/sentry-javascript/issues/1949
@@ -5001,12 +4936,12 @@ var Sentry = (function (exports) {
5001
4936
  * @hidden
5002
4937
  */
5003
4938
  function prepareFramesForEvent(stack) {
5004
- if (!stack || !stack.length) {
4939
+ if (!stack.length) {
5005
4940
  return [];
5006
4941
  }
5007
4942
  var localStack = stack;
5008
- var firstFrameFunction = localStack[0].func || '';
5009
- var lastFrameFunction = localStack[localStack.length - 1].func || '';
4943
+ var firstFrameFunction = localStack[0].function || '';
4944
+ var lastFrameFunction = localStack[localStack.length - 1].function || '';
5010
4945
  // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)
5011
4946
  if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {
5012
4947
  localStack = localStack.slice(1);
@@ -5019,11 +4954,11 @@ var Sentry = (function (exports) {
5019
4954
  return localStack
5020
4955
  .slice(0, STACKTRACE_LIMIT)
5021
4956
  .map(function (frame) { return ({
5022
- colno: frame.column === null ? undefined : frame.column,
5023
- filename: frame.url || localStack[0].url,
5024
- function: frame.func || '?',
4957
+ filename: frame.filename || localStack[0].filename,
4958
+ function: frame.function || '?',
4959
+ lineno: frame.lineno,
4960
+ colno: frame.colno,
5025
4961
  in_app: true,
5026
- lineno: frame.line === null ? undefined : frame.line,
5027
4962
  }); })
5028
4963
  .reverse();
5029
4964
  }