Skip to content

Commit d209408

Browse files
committed
3.14.0
1 parent cb5e0df commit d209408

20 files changed

+111
-41
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
## 3.14.0
4+
* NEW: URL values captured in http + breadcrumb interfaces are now trimmed to new `maxUrlLength` config (default 250). See: https://github.com/getsentry/raven-js/pull/906
5+
* CHANGE: Better extraction of URLs from eval frames on Chrome, Firefox. This may affect issue grouping of some events. See: https://github.com/getsentry/raven-js/pull/907
6+
* BUGFIX: Raven.js now parses webpack:// URLs (generated when using devtool: eval). See: https://github.com/getsentry/raven-js/pull/908
7+
* BUGFIX: React Native frames on Android no longer show [native code]. See: https://github.com/getsentry/raven-js/pull/875
8+
9+
310
## 3.13.1
411
* BUGFIX: Revert TypeScript declaration changes from 3.13.0 that resulted in bad imports. See: https://github.com/getsentry/raven-js/issues/898
512

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "raven-js",
3-
"version": "3.13.1",
3+
"version": "3.14.0",
44
"dependencies": {},
55
"main": "dist/raven.js",
66
"ignore": [

dist/plugins/angular.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! Raven.js 3.13.1 (f55d281) | github.com/getsentry/raven-js */
1+
/*! Raven.js 3.14.0 (6b817d7) | github.com/getsentry/raven-js */
22

33
/*
44
* Includes TraceKit

dist/plugins/angular.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/plugins/console.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! Raven.js 3.13.1 (f55d281) | github.com/getsentry/raven-js */
1+
/*! Raven.js 3.14.0 (6b817d7) | github.com/getsentry/raven-js */
22

33
/*
44
* Includes TraceKit

dist/plugins/console.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/plugins/ember.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! Raven.js 3.13.1 (f55d281) | github.com/getsentry/raven-js */
1+
/*! Raven.js 3.14.0 (6b817d7) | github.com/getsentry/raven-js */
22

33
/*
44
* Includes TraceKit

dist/plugins/ember.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/plugins/require.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! Raven.js 3.13.1 (f55d281) | github.com/getsentry/raven-js */
1+
/*! Raven.js 3.14.0 (6b817d7) | github.com/getsentry/raven-js */
22

33
/*
44
* Includes TraceKit

dist/plugins/require.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/plugins/vue.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! Raven.js 3.13.1 (f55d281) | github.com/getsentry/raven-js */
1+
/*! Raven.js 3.14.0 (6b817d7) | github.com/getsentry/raven-js */
22

33
/*
44
* Includes TraceKit

dist/plugins/vue.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/raven.js

Lines changed: 79 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! Raven.js 3.13.1 (f55d281) | github.com/getsentry/raven-js */
1+
/*! Raven.js 3.14.0 (6b817d7) | github.com/getsentry/raven-js */
22

33
/*
44
* Includes TraceKit
@@ -115,6 +115,9 @@ function Raven() {
115115
crossOrigin: 'anonymous',
116116
collectWindowErrors: true,
117117
maxMessageLength: 0,
118+
119+
// By default, truncates URL values to 250 chars
120+
maxUrlLength: 250,
118121
stackTraceLimit: 50,
119122
autoBreadcrumbs: true,
120123
sampleRate: 1
@@ -152,7 +155,7 @@ Raven.prototype = {
152155
// webpack (using a build step causes webpack #1617). Grunt verifies that
153156
// this value matches package.json during build.
154157
// See: https://github.com/getsentry/raven-js/issues/465
155-
VERSION: '3.13.1',
158+
VERSION: '3.14.0',
156159

157160
debug: false,
158161

@@ -457,9 +460,10 @@ Raven.prototype = {
457460

458461
if (this._globalOptions.stacktrace || (options && options.stacktrace)) {
459462
var ex;
460-
// create a stack trace from this point; just trim
461-
// off extra frames so they don't include this function call (or
462-
// earlier Raven.js library fn calls)
463+
// Generate a "synthetic" stack trace from this point.
464+
// NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative
465+
// of a bug with Raven.js. Sentry generates synthetic traces either by configuration,
466+
// or if it catches a thrown object without a "stack" property.
463467
try {
464468
throw new Error(msg);
465469
} catch (ex1) {
@@ -473,6 +477,9 @@ Raven.prototype = {
473477
// fingerprint on msg, not stack trace (legacy behavior, could be
474478
// revisited)
475479
fingerprint: msg,
480+
// since we know this is a synthetic trace, the top N-most frames
481+
// MUST be from Raven.js, so mark them as in_app later by setting
482+
// trimHeadFrames
476483
trimHeadFrames: (options.trimHeadFrames || 0) + 1
477484
}, options);
478485

@@ -1385,9 +1392,46 @@ Raven.prototype = {
13851392
exception.value = truncate(exception.value, max);
13861393
}
13871394

1395+
var request = data.request;
1396+
if (request) {
1397+
if (request.url) {
1398+
request.url = truncate(request.url, this._globalOptions.maxUrlLength);
1399+
}
1400+
if (request.Referer) {
1401+
request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength);
1402+
}
1403+
}
1404+
1405+
if (data.breadcrumbs && data.breadcrumbs.values)
1406+
this._trimBreadcrumbs(data.breadcrumbs);
1407+
13881408
return data;
13891409
},
13901410

1411+
/**
1412+
* Truncate breadcrumb values (right now just URLs)
1413+
*/
1414+
_trimBreadcrumbs: function (breadcrumbs) {
1415+
// known breadcrumb properties with urls
1416+
// TODO: also consider arbitrary prop values that start with (https?)?://
1417+
var urlprops = {to: 1, from: 1, url: 1},
1418+
crumb,
1419+
data;
1420+
1421+
for (var i = 0; i < breadcrumbs.values.length; i++) {
1422+
crumb = breadcrumbs.values[i];
1423+
if (!crumb.hasOwnProperty('data'))
1424+
continue;
1425+
1426+
data = crumb.data;
1427+
for (var prop in urlprops) {
1428+
if (data.hasOwnProperty(prop)) {
1429+
data[prop] = truncate(data[prop], this._globalOptions.maxUrlLength);
1430+
}
1431+
}
1432+
}
1433+
},
1434+
13911435
_getHttpData: function() {
13921436
if (!this._hasNavigator && !this._hasDocument) return;
13931437
var httpData = {};
@@ -2491,18 +2535,31 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
24912535
function computeStackTraceFromStackProp(ex) {
24922536
if (typeof ex.stack === 'undefined' || !ex.stack) return;
24932537

2494-
var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|<anonymous>).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,
2495-
gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|resource|\[native).*?)(?::(\d+))?(?::(\d+))?\s*$/i,
2496-
winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,
2538+
var chrome = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,
2539+
gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?)(?::(\d+))?(?::(\d+))?\s*$/i,
2540+
winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,
2541+
2542+
// Used to additionally parse URL/line/column from eval frames
2543+
geckoEval = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i,
2544+
chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/,
2545+
24972546
lines = ex.stack.split('\n'),
24982547
stack = [],
2548+
submatch,
24992549
parts,
25002550
element,
25012551
reference = /^(.*) is undefined$/.exec(ex.message);
25022552

25032553
for (var i = 0, j = lines.length; i < j; ++i) {
25042554
if ((parts = chrome.exec(lines[i]))) {
2505-
var isNative = parts[2] && parts[2].indexOf('native') !== -1;
2555+
var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line
2556+
var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line
2557+
if (isEval && (submatch = chromeEval.exec(parts[2]))) {
2558+
// throw out eval line/column and use top-most line/column number
2559+
parts[2] = submatch[1]; // url
2560+
parts[3] = submatch[2]; // line
2561+
parts[4] = submatch[3]; // column
2562+
}
25062563
element = {
25072564
'url': !isNative ? parts[2] : null,
25082565
'func': parts[1] || UNKNOWN_FUNCTION,
@@ -2519,6 +2576,19 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
25192576
'column': parts[4] ? +parts[4] : null
25202577
};
25212578
} else if ((parts = gecko.exec(lines[i]))) {
2579+
var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;
2580+
if (isEval && (submatch = geckoEval.exec(parts[3]))) {
2581+
// throw out eval line/column and use top-most line number
2582+
parts[3] = submatch[1];
2583+
parts[4] = submatch[2];
2584+
parts[5] = null; // no column when eval
2585+
} else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') {
2586+
// FireFox uses this awesome columnNumber property for its top frame
2587+
// Also note, Firefox's column number is 0-based and everything else expects 1-based,
2588+
// so adding 1
2589+
// NOTE: this hack doesn't work if top-most frame is eval
2590+
stack[0].column = ex.columnNumber + 1;
2591+
}
25222592
element = {
25232593
'url': parts[3],
25242594
'func': parts[1] || UNKNOWN_FUNCTION,
@@ -2541,13 +2611,6 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
25412611
return null;
25422612
}
25432613

2544-
if (!stack[0].column && typeof ex.columnNumber !== 'undefined') {
2545-
// FireFox uses this awesome columnNumber property for its top frame
2546-
// Also note, Firefox's column number is 0-based and everything else expects 1-based,
2547-
// so adding 1
2548-
stack[0].column = ex.columnNumber + 1;
2549-
}
2550-
25512614
return {
25522615
'name': ex.name,
25532616
'message': ex.message,

dist/raven.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/raven.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/sri.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
{
22
"@dist/raven.js": {
33
"hashes": {
4-
"sha256": "DqjGfkHlXEUoWD0W2CirZy+/TcbA2bWYVZGM4GICEwc=",
5-
"sha512": "pEOdKiz/v/gFCOIrBNn9R/Cg/z2a+oGEnwqs5h//UGAQ3ODQxdKfKvVotG+hw0z+R57+g07af2l9oOqcjcu53g=="
4+
"sha256": "GaVHYvmPLfox/Z5Ob1I5FWL3pVAPwZLuPktzwzCxcms=",
5+
"sha512": "SEmxNHXuuNcE69xNoUGYGeNqfDJoip3KO39CZAR5n1UNu1gYNFKF138iQz9d6xq7ZO4jEHH95Nb4zgQpFigkpA=="
66
},
77
"type": null,
8-
"integrity": "sha256-DqjGfkHlXEUoWD0W2CirZy+/TcbA2bWYVZGM4GICEwc= sha512-pEOdKiz/v/gFCOIrBNn9R/Cg/z2a+oGEnwqs5h//UGAQ3ODQxdKfKvVotG+hw0z+R57+g07af2l9oOqcjcu53g==",
8+
"integrity": "sha256-GaVHYvmPLfox/Z5Ob1I5FWL3pVAPwZLuPktzwzCxcms= sha512-SEmxNHXuuNcE69xNoUGYGeNqfDJoip3KO39CZAR5n1UNu1gYNFKF138iQz9d6xq7ZO4jEHH95Nb4zgQpFigkpA==",
99
"path": "dist/raven.js"
1010
},
1111
"@dist/raven.min.js": {
1212
"hashes": {
13-
"sha256": "rQKHhUx4JZkHPhu3S2kaqiCLZEOuVBP9W6K6LZMeSPI=",
14-
"sha512": "xnf3jkR3/5vLX/GSvRlZnJJMfzP4I1oFMyINzQGq9+2esFgSywjARxwYG/ypRnCxJyNhBH3jxdNBHN0UEy/30w=="
13+
"sha256": "YqZhLyo9sB/cpJWaREgvUe+nFUN9qC8h+qdNs8OoAVk=",
14+
"sha512": "s7n51Ike9SKQix2aVAB8KytL5B3H9Uk5LAMY731p6lQtGX9JNgVL3uxqoTDEM/pJ9gxVyO2aJXNAjvFNvrFzrg=="
1515
},
1616
"type": null,
17-
"integrity": "sha256-rQKHhUx4JZkHPhu3S2kaqiCLZEOuVBP9W6K6LZMeSPI= sha512-xnf3jkR3/5vLX/GSvRlZnJJMfzP4I1oFMyINzQGq9+2esFgSywjARxwYG/ypRnCxJyNhBH3jxdNBHN0UEy/30w==",
17+
"integrity": "sha256-YqZhLyo9sB/cpJWaREgvUe+nFUN9qC8h+qdNs8OoAVk= sha512-s7n51Ike9SKQix2aVAB8KytL5B3H9Uk5LAMY731p6lQtGX9JNgVL3uxqoTDEM/pJ9gxVyO2aJXNAjvFNvrFzrg==",
1818
"path": "dist/raven.min.js"
1919
}
2020
}

docs/sentry-doc-config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,6 @@
6666
}
6767
},
6868
"vars": {
69-
"RAVEN_VERSION": "3.13.1"
69+
"RAVEN_VERSION": "3.14.0"
7070
}
7171
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "raven-js",
3-
"version": "3.13.1",
3+
"version": "3.14.0",
44
"license": "BSD-2-Clause",
55
"homepage": "https://github.com/getsentry/raven-js",
66
"scripts": {

src/raven.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ Raven.prototype = {
9090
// webpack (using a build step causes webpack #1617). Grunt verifies that
9191
// this value matches package.json during build.
9292
// See: https://github.com/getsentry/raven-js/issues/465
93-
VERSION: '3.13.1',
93+
VERSION: '3.14.0',
9494

9595
debug: false,
9696

test/raven.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,7 +1078,7 @@ describe('globals', function() {
10781078
extra: {'session:duration': 100},
10791079
});
10801080
assert.deepEqual(opts.auth, {
1081-
sentry_client: 'raven-js/3.13.1',
1081+
sentry_client: 'raven-js/3.14.0',
10821082
sentry_key: 'abc',
10831083
sentry_version: '7'
10841084
});
@@ -1125,7 +1125,7 @@ describe('globals', function() {
11251125
extra: {'session:duration': 100},
11261126
});
11271127
assert.deepEqual(opts.auth, {
1128-
sentry_client: 'raven-js/3.13.1',
1128+
sentry_client: 'raven-js/3.14.0',
11291129
sentry_key: 'abc',
11301130
sentry_secret: 'def',
11311131
sentry_version: '7'

0 commit comments

Comments
 (0)