Skip to content

Commit 34a8f9a

Browse files
timfishlobsterkatie
authored andcommitted
feat: Remove stack parser support for Opera pre v15 (#4923)
Opera v15 was released in 2013 and was based on Chromium. This PR removes the two Opera specific stack parsers that cater for versions before this from the defaults. Anyone still wanting to support these ancient browser versions can do the following: ```ts import { init, defaultStackParsers, opera10StackParser, opera11StackParser } from '@sentry/browser'; init({ dsn: '__DSN__', stackParser: [...defaultStackParsers, opera10StackParser, opera11StackParser] }) ```
1 parent 8533cef commit 34a8f9a

File tree

2 files changed

+8
-13
lines changed

2 files changed

+8
-13
lines changed

Diff for: packages/browser/src/stack-parsers.ts

+1-7
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,7 @@ const opera11: StackLineParserFn = line => {
130130

131131
export const opera11StackParser: StackLineParser = [OPERA11_PRIORITY, opera11];
132132

133-
export const defaultStackParsers = [
134-
chromeStackParser,
135-
geckoStackParser,
136-
opera10StackParser,
137-
opera11StackParser,
138-
winjsStackParser,
139-
];
133+
export const defaultStackParsers = [chromeStackParser, geckoStackParser, winjsStackParser];
140134

141135
/**
142136
* Safari web extensions, starting version unknown, can produce "frames-only" stacktraces.

Diff for: packages/browser/test/unit/tracekit/opera.test.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { createStackParser } from '@sentry/utils';
22

33
import { exceptionFromError } from '../../../src/eventbuilder';
4-
import { defaultStackParsers } from '../../../src/stack-parsers';
4+
import { defaultStackParsers, opera10StackParser, opera11StackParser } from '../../../src/stack-parsers';
55

6-
const parser = createStackParser(...defaultStackParsers);
6+
const operaParser = createStackParser(opera10StackParser, opera11StackParser);
7+
const chromiumParser = createStackParser(...defaultStackParsers);
78

89
describe('Tracekit - Opera Tests', () => {
910
it('should parse Opera 10 error', () => {
@@ -29,7 +30,7 @@ describe('Tracekit - Opera Tests', () => {
2930
'',
3031
};
3132

32-
const ex = exceptionFromError(parser, OPERA_10);
33+
const ex = exceptionFromError(operaParser, OPERA_10);
3334

3435
expect(ex).toEqual({
3536
value: 'Statement on line 42: Type mismatch (usually non-object value supplied where object required)',
@@ -75,7 +76,7 @@ describe('Tracekit - Opera Tests', () => {
7576
' foo();',
7677
};
7778

78-
const ex = exceptionFromError(parser, OPERA_11);
79+
const ex = exceptionFromError(operaParser, OPERA_11);
7980

8081
expect(ex).toEqual({
8182
value: "'this.undef' is not a function",
@@ -112,7 +113,7 @@ describe('Tracekit - Opera Tests', () => {
112113
' dumpException3();',
113114
};
114115

115-
const ex = exceptionFromError(parser, OPERA_12);
116+
const ex = exceptionFromError(operaParser, OPERA_12);
116117

117118
expect(ex).toEqual({
118119
value: "Cannot convert 'x' to object",
@@ -156,7 +157,7 @@ describe('Tracekit - Opera Tests', () => {
156157
' at bar (http://path/to/file.js:108:168)',
157158
};
158159

159-
const ex = exceptionFromError(parser, OPERA_25);
160+
const ex = exceptionFromError(chromiumParser, OPERA_25);
160161

161162
expect(ex).toEqual({
162163
value: "Cannot read property 'undef' of null",

0 commit comments

Comments
 (0)