Skip to content

Commit fb49dc3

Browse files
committed
Merge branch 'master' of github.com:getsentry/sentry-javascript
2 parents 757faa6 + 518e310 commit fb49dc3

File tree

11 files changed

+1993
-205
lines changed

11 files changed

+1993
-205
lines changed

packages/browser/rollup.config.js

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ const bundleConfig = {
5454
format: 'iife',
5555
name: 'Sentry',
5656
sourcemap: true,
57+
strict: false,
5758
},
5859
context: 'window',
5960
plugins: [

packages/browser/src/tracekit.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// tslint:disable
22

3-
import { getGlobalObject, isError, isErrorEvent } from '@sentry/utils';
3+
import { getGlobalObject, isError, isErrorEvent, normalize } from '@sentry/utils';
44

55
/**
66
* @hidden
@@ -38,7 +38,6 @@ interface ComputeStackTrace {
3838
* @param {(string|number)=} depth
3939
*/
4040
(ex: Error, depth?: string | number): StackTrace;
41-
_computeStackTraceFromStackProp(ex: any): StackTrace;
4241
}
4342

4443
/**
@@ -275,6 +274,9 @@ TraceKit._report = (function reportModuleWrapper() {
275274
var err = (e && (e.detail ? e.detail.reason : e.reason)) || e;
276275
var stack = TraceKit._computeStackTrace(err);
277276
stack.mechanism = 'onunhandledrejection';
277+
if (!stack.message) {
278+
stack.message = JSON.stringify(normalize(err))
279+
}
278280
_notifyHandlers(stack, true, err);
279281
}
280282

@@ -479,7 +481,7 @@ TraceKit._computeStackTrace = (function _computeStackTraceWrapper() {
479481
// gecko regex: `(?:bundle|\d+\.js)`: `bundle` is for react native, `\d+\.js` also but specifically for ram bundles because it
480482
// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js
481483
// We need this specific case for now because we want no other regex to match.
482-
gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i,
484+
gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i,
483485
winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,
484486
// Used to additionally parse URL/line/column from eval frames
485487
isEval,
@@ -494,6 +496,7 @@ TraceKit._computeStackTrace = (function _computeStackTraceWrapper() {
494496

495497
for (var i = 0, j = lines.length; i < j; ++i) {
496498
if ((parts = chrome.exec(lines[i]))) {
499+
var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line
497500
isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line
498501
if (isEval && (submatch = chromeEval.exec(parts[2]))) {
499502
// throw out eval line/column and use top-most line/column number
@@ -504,7 +507,7 @@ TraceKit._computeStackTrace = (function _computeStackTraceWrapper() {
504507
element = {
505508
url: parts[2],
506509
func: parts[1] || UNKNOWN_FUNCTION,
507-
args: [],
510+
args: isNative ? [parts[2]] : [],
508511
line: parts[3] ? +parts[3] : null,
509512
column: parts[4] ? +parts[4] : null,
510513
};
@@ -520,6 +523,7 @@ TraceKit._computeStackTrace = (function _computeStackTraceWrapper() {
520523
isEval = parts[3] && parts[3].indexOf(' > eval') > -1;
521524
if (isEval && (submatch = geckoEval.exec(parts[3]))) {
522525
// throw out eval line/column and use top-most line number
526+
parts[1] = parts[1] || `eval`;
523527
parts[3] = submatch[1];
524528
parts[4] = submatch[2];
525529
parts[5] = ''; // no column when eval

packages/browser/test/integration/test.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -667,9 +667,9 @@ for (var idx in frames) {
667667
},
668668
function(sentryData) {
669669
if (debounceAssertEventCount(sentryData, 1, done)) {
670+
// non-error rejections doesnt provide stacktraces so we can skip the assertion
670671
assert.equal(sentryData[0].exception.values[0].value, '"test"');
671672
assert.equal(sentryData[0].exception.values[0].type, 'UnhandledRejection');
672-
assert.equal(sentryData[0].exception.values[0].stacktrace, undefined);
673673
assert.equal(sentryData[0].exception.values[0].mechanism.handled, false);
674674
assert.equal(sentryData[0].exception.values[0].mechanism.type, 'onunhandledrejection');
675675
done();
@@ -696,9 +696,9 @@ for (var idx in frames) {
696696
},
697697
function(sentryData) {
698698
if (debounceAssertEventCount(sentryData, 1, done)) {
699-
assert.isAtMost(sentryData[0].exception.values[0].value.length, 303);
699+
// non-error rejections doesnt provide stacktraces so we can skip the assertion
700+
assert.equal(sentryData[0].exception.values[0].value.length, 253);
700701
assert.equal(sentryData[0].exception.values[0].type, 'UnhandledRejection');
701-
assert.equal(sentryData[0].exception.values[0].stacktrace, undefined);
702702
assert.equal(sentryData[0].exception.values[0].mechanism.handled, false);
703703
assert.equal(sentryData[0].exception.values[0].mechanism.type, 'onunhandledrejection');
704704
done();
@@ -725,9 +725,9 @@ for (var idx in frames) {
725725
},
726726
function(sentryData) {
727727
if (debounceAssertEventCount(sentryData, 1, done)) {
728+
// non-error rejections doesnt provide stacktraces so we can skip the assertion
728729
assert.equal(sentryData[0].exception.values[0].value, '{"a":"b"}');
729730
assert.equal(sentryData[0].exception.values[0].type, 'UnhandledRejection');
730-
assert.equal(sentryData[0].exception.values[0].stacktrace, undefined);
731731
assert.equal(sentryData[0].exception.values[0].mechanism.handled, false);
732732
assert.equal(sentryData[0].exception.values[0].mechanism.type, 'onunhandledrejection');
733733
done();
@@ -761,9 +761,9 @@ for (var idx in frames) {
761761
},
762762
function(sentryData) {
763763
if (debounceAssertEventCount(sentryData, 1, done)) {
764-
assert.isAtMost(sentryData[0].exception.values[0].value.length, 303);
764+
// non-error rejections doesnt provide stacktraces so we can skip the assertion
765+
assert.equal(sentryData[0].exception.values[0].value.length, 253);
765766
assert.equal(sentryData[0].exception.values[0].type, 'UnhandledRejection');
766-
assert.equal(sentryData[0].exception.values[0].stacktrace, undefined);
767767
assert.equal(sentryData[0].exception.values[0].mechanism.handled, false);
768768
assert.equal(sentryData[0].exception.values[0].mechanism.type, 'onunhandledrejection');
769769
done();

packages/browser/test/tracekit.test.ts

-194
This file was deleted.

0 commit comments

Comments
 (0)