@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.es6.js +61 -126
- package/build/bundle.es6.js.map +1 -1
- package/build/bundle.es6.min.js +2 -2
- package/build/bundle.es6.min.js.map +1 -1
- package/build/bundle.js +60 -125
- package/build/bundle.js.map +1 -1
- package/build/bundle.min.js +2 -2
- package/build/bundle.min.js.map +1 -1
- package/dist/parsers.d.ts +2 -2
- package/dist/parsers.d.ts.map +1 -1
- package/dist/parsers.js +7 -7
- package/dist/parsers.js.map +1 -1
- package/dist/tracekit.d.ts +5 -19
- package/dist/tracekit.d.ts.map +1 -1
- package/dist/tracekit.js +51 -116
- package/dist/tracekit.js.map +1 -1
- package/esm/parsers.d.ts +2 -2
- package/esm/parsers.d.ts.map +1 -1
- package/esm/parsers.js +7 -7
- package/esm/parsers.js.map +1 -1
- package/esm/tracekit.d.ts +5 -19
- package/esm/tracekit.d.ts.map +1 -1
- package/esm/tracekit.js +52 -117
- package/esm/tracekit.js.map +1 -1
- package/package.json +4 -4
package/build/bundle.es6.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @sentry/browser 6.17.
|
|
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
|
* TODO(v7): Remove this enum and replace with SeverityLevel
|
|
@@ -4263,7 +4263,7 @@ var Sentry = (function (exports) {
|
|
|
4263
4263
|
hub.bindClient(client);
|
|
4264
4264
|
}
|
|
4265
4265
|
|
|
4266
|
-
const SDK_VERSION = '6.17.
|
|
4266
|
+
const SDK_VERSION = '6.17.8-beta.0';
|
|
4267
4267
|
|
|
4268
4268
|
let originalFunctionToString;
|
|
4269
4269
|
/** Patch toString calls to return proper name for wrapped functions */
|
|
@@ -4494,10 +4494,6 @@ var Sentry = (function (exports) {
|
|
|
4494
4494
|
InboundFilters: InboundFilters
|
|
4495
4495
|
});
|
|
4496
4496
|
|
|
4497
|
-
/**
|
|
4498
|
-
* This was originally forked from https://github.com/occ/TraceKit, but has since been
|
|
4499
|
-
* largely modified and is now maintained as part of Sentry JS SDK.
|
|
4500
|
-
*/
|
|
4501
4497
|
// global reference to slice
|
|
4502
4498
|
const UNKNOWN_FUNCTION = '?';
|
|
4503
4499
|
// Chromium based browsers: Chrome, Brave, new Opera, new Edge
|
|
@@ -4511,10 +4507,11 @@ var Sentry = (function (exports) {
|
|
|
4511
4507
|
const chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/;
|
|
4512
4508
|
// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108
|
|
4513
4509
|
const reactMinifiedRegexp = /Minified React error #\d+;/i;
|
|
4510
|
+
const opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
|
|
4511
|
+
const opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i;
|
|
4514
4512
|
/** JSDoc */
|
|
4515
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
|
|
4516
4513
|
function computeStackTrace(ex) {
|
|
4517
|
-
let
|
|
4514
|
+
let frames = [];
|
|
4518
4515
|
let popSize = 0;
|
|
4519
4516
|
if (ex) {
|
|
4520
4517
|
if (typeof ex.framesToPop === 'number') {
|
|
@@ -4525,47 +4522,50 @@ var Sentry = (function (exports) {
|
|
|
4525
4522
|
}
|
|
4526
4523
|
}
|
|
4527
4524
|
try {
|
|
4528
|
-
//
|
|
4529
|
-
//
|
|
4530
|
-
//
|
|
4531
|
-
|
|
4532
|
-
|
|
4533
|
-
return popFrames(stack, popSize);
|
|
4534
|
-
}
|
|
4525
|
+
// Access and store the stacktrace property before doing ANYTHING
|
|
4526
|
+
// else to it because Opera is not very good at providing it
|
|
4527
|
+
// reliably in other circumstances.
|
|
4528
|
+
const stacktrace = ex.stacktrace || ex.stack || '';
|
|
4529
|
+
frames = parseFrames(stacktrace);
|
|
4535
4530
|
}
|
|
4536
4531
|
catch (e) {
|
|
4537
4532
|
// no-empty
|
|
4538
4533
|
}
|
|
4539
|
-
|
|
4540
|
-
|
|
4541
|
-
if (stack) {
|
|
4542
|
-
return popFrames(stack, popSize);
|
|
4543
|
-
}
|
|
4544
|
-
}
|
|
4545
|
-
catch (e) {
|
|
4546
|
-
// no-empty
|
|
4534
|
+
if (frames.length && popSize > 0) {
|
|
4535
|
+
frames = frames.slice(popSize);
|
|
4547
4536
|
}
|
|
4548
4537
|
return {
|
|
4549
4538
|
message: extractMessage(ex),
|
|
4550
4539
|
name: ex && ex.name,
|
|
4551
|
-
stack:
|
|
4552
|
-
failed: true,
|
|
4540
|
+
stack: frames,
|
|
4553
4541
|
};
|
|
4554
4542
|
}
|
|
4555
4543
|
/** JSDoc */
|
|
4556
|
-
// eslint-disable-next-line
|
|
4557
|
-
function
|
|
4558
|
-
|
|
4559
|
-
|
|
4560
|
-
}
|
|
4561
|
-
const stack = [];
|
|
4562
|
-
const lines = ex.stack.split('\n');
|
|
4544
|
+
// eslint-disable-next-line complexity
|
|
4545
|
+
function parseFrames(stackString) {
|
|
4546
|
+
const frames = [];
|
|
4547
|
+
const lines = stackString.split('\n');
|
|
4563
4548
|
let isEval;
|
|
4564
4549
|
let submatch;
|
|
4565
4550
|
let parts;
|
|
4566
4551
|
let element;
|
|
4567
4552
|
for (const line of lines) {
|
|
4568
|
-
if ((parts =
|
|
4553
|
+
if ((parts = opera10Regex.exec(line))) {
|
|
4554
|
+
element = {
|
|
4555
|
+
filename: parts[2],
|
|
4556
|
+
function: parts[3] || UNKNOWN_FUNCTION,
|
|
4557
|
+
lineno: +parts[1],
|
|
4558
|
+
};
|
|
4559
|
+
}
|
|
4560
|
+
else if ((parts = opera11Regex.exec(line))) {
|
|
4561
|
+
element = {
|
|
4562
|
+
filename: parts[5],
|
|
4563
|
+
function: parts[3] || parts[4] || UNKNOWN_FUNCTION,
|
|
4564
|
+
lineno: +parts[1],
|
|
4565
|
+
colno: +parts[2],
|
|
4566
|
+
};
|
|
4567
|
+
}
|
|
4568
|
+
else if ((parts = chrome.exec(line))) {
|
|
4569
4569
|
isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line
|
|
4570
4570
|
if (isEval && (submatch = chromeEval.exec(parts[2]))) {
|
|
4571
4571
|
// throw out eval line/column and use top-most line/column number
|
|
@@ -4575,20 +4575,20 @@ var Sentry = (function (exports) {
|
|
|
4575
4575
|
}
|
|
4576
4576
|
// Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now
|
|
4577
4577
|
// would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)
|
|
4578
|
-
const [func,
|
|
4578
|
+
const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);
|
|
4579
4579
|
element = {
|
|
4580
|
-
|
|
4581
|
-
func,
|
|
4582
|
-
|
|
4583
|
-
|
|
4580
|
+
filename,
|
|
4581
|
+
function: func,
|
|
4582
|
+
lineno: parts[3] ? +parts[3] : undefined,
|
|
4583
|
+
colno: parts[4] ? +parts[4] : undefined,
|
|
4584
4584
|
};
|
|
4585
4585
|
}
|
|
4586
4586
|
else if ((parts = winjs.exec(line))) {
|
|
4587
4587
|
element = {
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
|
|
4591
|
-
|
|
4588
|
+
filename: parts[2],
|
|
4589
|
+
function: parts[1] || UNKNOWN_FUNCTION,
|
|
4590
|
+
lineno: +parts[3],
|
|
4591
|
+
colno: parts[4] ? +parts[4] : undefined,
|
|
4592
4592
|
};
|
|
4593
4593
|
}
|
|
4594
4594
|
else if ((parts = gecko.exec(line))) {
|
|
@@ -4600,78 +4600,22 @@ var Sentry = (function (exports) {
|
|
|
4600
4600
|
parts[4] = submatch[2];
|
|
4601
4601
|
parts[5] = ''; // no column when eval
|
|
4602
4602
|
}
|
|
4603
|
-
let
|
|
4603
|
+
let filename = parts[3];
|
|
4604
4604
|
let func = parts[1] || UNKNOWN_FUNCTION;
|
|
4605
|
-
[func,
|
|
4605
|
+
[func, filename] = extractSafariExtensionDetails(func, filename);
|
|
4606
4606
|
element = {
|
|
4607
|
-
|
|
4608
|
-
func,
|
|
4609
|
-
|
|
4610
|
-
|
|
4607
|
+
filename,
|
|
4608
|
+
function: func,
|
|
4609
|
+
lineno: parts[4] ? +parts[4] : undefined,
|
|
4610
|
+
colno: parts[5] ? +parts[5] : undefined,
|
|
4611
4611
|
};
|
|
4612
4612
|
}
|
|
4613
4613
|
else {
|
|
4614
4614
|
continue;
|
|
4615
4615
|
}
|
|
4616
|
-
|
|
4617
|
-
}
|
|
4618
|
-
if (!stack.length) {
|
|
4619
|
-
return null;
|
|
4620
|
-
}
|
|
4621
|
-
return {
|
|
4622
|
-
message: extractMessage(ex),
|
|
4623
|
-
name: ex.name,
|
|
4624
|
-
stack,
|
|
4625
|
-
};
|
|
4626
|
-
}
|
|
4627
|
-
/** JSDoc */
|
|
4628
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4629
|
-
function computeStackTraceFromStacktraceProp(ex) {
|
|
4630
|
-
if (!ex || !ex.stacktrace) {
|
|
4631
|
-
return null;
|
|
4632
|
-
}
|
|
4633
|
-
// Access and store the stacktrace property before doing ANYTHING
|
|
4634
|
-
// else to it because Opera is not very good at providing it
|
|
4635
|
-
// reliably in other circumstances.
|
|
4636
|
-
const stacktrace = ex.stacktrace;
|
|
4637
|
-
const opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
|
|
4638
|
-
const opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i;
|
|
4639
|
-
const lines = stacktrace.split('\n');
|
|
4640
|
-
const stack = [];
|
|
4641
|
-
let parts;
|
|
4642
|
-
for (let line = 0; line < lines.length; line += 2) {
|
|
4643
|
-
let element = null;
|
|
4644
|
-
if ((parts = opera10Regex.exec(lines[line]))) {
|
|
4645
|
-
element = {
|
|
4646
|
-
url: parts[2],
|
|
4647
|
-
func: parts[3],
|
|
4648
|
-
line: +parts[1],
|
|
4649
|
-
column: null,
|
|
4650
|
-
};
|
|
4651
|
-
}
|
|
4652
|
-
else if ((parts = opera11Regex.exec(lines[line]))) {
|
|
4653
|
-
element = {
|
|
4654
|
-
url: parts[5],
|
|
4655
|
-
func: parts[3] || parts[4],
|
|
4656
|
-
line: +parts[1],
|
|
4657
|
-
column: +parts[2],
|
|
4658
|
-
};
|
|
4659
|
-
}
|
|
4660
|
-
if (element) {
|
|
4661
|
-
if (!element.func && element.line) {
|
|
4662
|
-
element.func = UNKNOWN_FUNCTION;
|
|
4663
|
-
}
|
|
4664
|
-
stack.push(element);
|
|
4665
|
-
}
|
|
4666
|
-
}
|
|
4667
|
-
if (!stack.length) {
|
|
4668
|
-
return null;
|
|
4616
|
+
frames.push(element);
|
|
4669
4617
|
}
|
|
4670
|
-
return
|
|
4671
|
-
message: extractMessage(ex),
|
|
4672
|
-
name: ex.name,
|
|
4673
|
-
stack,
|
|
4674
|
-
};
|
|
4618
|
+
return frames;
|
|
4675
4619
|
}
|
|
4676
4620
|
/**
|
|
4677
4621
|
* Safari web extensions, starting version unknown, can produce "frames-only" stacktraces.
|
|
@@ -4693,25 +4637,16 @@ var Sentry = (function (exports) {
|
|
|
4693
4637
|
* Unfortunatelly "just" changing RegExp is too complicated now and making it pass all tests
|
|
4694
4638
|
* and fix this case seems like an impossible, or at least way too time-consuming task.
|
|
4695
4639
|
*/
|
|
4696
|
-
const extractSafariExtensionDetails = (func,
|
|
4640
|
+
const extractSafariExtensionDetails = (func, filename) => {
|
|
4697
4641
|
const isSafariExtension = func.indexOf('safari-extension') !== -1;
|
|
4698
4642
|
const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;
|
|
4699
4643
|
return isSafariExtension || isSafariWebExtension
|
|
4700
4644
|
? [
|
|
4701
4645
|
func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,
|
|
4702
|
-
isSafariExtension ? `safari-extension:${
|
|
4646
|
+
isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,
|
|
4703
4647
|
]
|
|
4704
|
-
: [func,
|
|
4648
|
+
: [func, filename];
|
|
4705
4649
|
};
|
|
4706
|
-
/** Remove N number of frames from the stack */
|
|
4707
|
-
function popFrames(stacktrace, popSize) {
|
|
4708
|
-
try {
|
|
4709
|
-
return Object.assign(Object.assign({}, stacktrace), { stack: stacktrace.stack.slice(popSize) });
|
|
4710
|
-
}
|
|
4711
|
-
catch (e) {
|
|
4712
|
-
return stacktrace;
|
|
4713
|
-
}
|
|
4714
|
-
}
|
|
4715
4650
|
/**
|
|
4716
4651
|
* There are cases where stacktrace.message is an Event object
|
|
4717
4652
|
* https://github.com/getsentry/sentry-javascript/issues/1949
|
|
@@ -4790,12 +4725,12 @@ var Sentry = (function (exports) {
|
|
|
4790
4725
|
* @hidden
|
|
4791
4726
|
*/
|
|
4792
4727
|
function prepareFramesForEvent(stack) {
|
|
4793
|
-
if (!stack
|
|
4728
|
+
if (!stack.length) {
|
|
4794
4729
|
return [];
|
|
4795
4730
|
}
|
|
4796
4731
|
let localStack = stack;
|
|
4797
|
-
const firstFrameFunction = localStack[0].
|
|
4798
|
-
const lastFrameFunction = localStack[localStack.length - 1].
|
|
4732
|
+
const firstFrameFunction = localStack[0].function || '';
|
|
4733
|
+
const lastFrameFunction = localStack[localStack.length - 1].function || '';
|
|
4799
4734
|
// If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)
|
|
4800
4735
|
if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {
|
|
4801
4736
|
localStack = localStack.slice(1);
|
|
@@ -4807,12 +4742,12 @@ var Sentry = (function (exports) {
|
|
|
4807
4742
|
// The frame where the crash happened, should be the last entry in the array
|
|
4808
4743
|
return localStack
|
|
4809
4744
|
.slice(0, STACKTRACE_LIMIT)
|
|
4810
|
-
.map(
|
|
4811
|
-
|
|
4812
|
-
|
|
4813
|
-
|
|
4745
|
+
.map(frame => ({
|
|
4746
|
+
filename: frame.filename || localStack[0].filename,
|
|
4747
|
+
function: frame.function || '?',
|
|
4748
|
+
lineno: frame.lineno,
|
|
4749
|
+
colno: frame.colno,
|
|
4814
4750
|
in_app: true,
|
|
4815
|
-
lineno: frame.line === null ? undefined : frame.line,
|
|
4816
4751
|
}))
|
|
4817
4752
|
.reverse();
|
|
4818
4753
|
}
|