Skip to content

Commit 98e0593

Browse files
committed
fix(browser): Set : as a part of gecko protocol regex group.
1 parent 1c5bff0 commit 98e0593

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

packages/browser/src/stack-parsers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export const chromeStackParser: StackLineParser = [CHROME_PRIORITY, chrome];
6666
// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js
6767
// We need this specific case for now because we want no other regex to match.
6868
const geckoREgex =
69-
/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i;
69+
/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|safari-extension|safari-web-extension|capacitor)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i;
7070
const geckoEvalRegex = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
7171

7272
const gecko: StackLineParserFn = line => {

packages/browser/test/unit/tracekit/firefox.test.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,4 +314,50 @@ describe('Tracekit - Firefox Tests', () => {
314314
},
315315
});
316316
});
317+
318+
it('should parse Firefox errors with `file` inside an identifier', () => {
319+
const FIREFOX_FILE_IN_IDENTIFIER = {
320+
stack:
321+
'us@https://www.random_website.com/vendor.d1cae9cfc9917df88de7.js:1:296021\n' +
322+
'detectChanges@https://www.random_website.com/vendor.d1cae9cfc9917df88de7.js:1:333807\n' +
323+
'handleProfileResult@https://www.random_website.com/main.4a4119c3cdfd10266d84.js:146:1018410\n',
324+
fileName: 'https://www.random_website.com/main.4a4119c3cdfd10266d84.js',
325+
lineNumber: 5529,
326+
columnNumber: 16,
327+
message: 'this.props.raw[this.state.dataSource].rows is undefined',
328+
name: 'TypeError',
329+
};
330+
331+
const stacktrace = exceptionFromError(parser, FIREFOX_FILE_IN_IDENTIFIER);
332+
333+
expect(stacktrace).toEqual({
334+
stacktrace: {
335+
frames: [
336+
{
337+
colno: 1018410,
338+
filename: 'https://www.random_website.com/main.4a4119c3cdfd10266d84.js',
339+
function: 'handleProfileResult',
340+
in_app: true,
341+
lineno: 146,
342+
},
343+
{
344+
colno: 333807,
345+
filename: 'https://www.random_website.com/vendor.d1cae9cfc9917df88de7.js',
346+
function: 'detectChanges',
347+
in_app: true,
348+
lineno: 1,
349+
},
350+
{
351+
colno: 296021,
352+
filename: 'https://www.random_website.com/vendor.d1cae9cfc9917df88de7.js',
353+
function: 'us',
354+
in_app: true,
355+
lineno: 1,
356+
},
357+
],
358+
},
359+
type: 'TypeError',
360+
value: 'this.props.raw[this.state.dataSource].rows is undefined',
361+
});
362+
});
317363
});

0 commit comments

Comments
 (0)