1 | import { __read } from "tslib";
|
2 |
|
3 | var UNKNOWN_FUNCTION = '?';
|
4 | var OPERA10_PRIORITY = 10;
|
5 | var OPERA11_PRIORITY = 20;
|
6 | var CHROME_PRIORITY = 30;
|
7 | var WINJS_PRIORITY = 40;
|
8 | var GECKO_PRIORITY = 50;
|
9 | function createFrame(filename, func, lineno, colno) {
|
10 | var frame = {
|
11 | filename: filename,
|
12 | function: func,
|
13 | // All browser frames are considered in_app
|
14 | in_app: true,
|
15 | };
|
16 | if (lineno !== undefined) {
|
17 | frame.lineno = lineno;
|
18 | }
|
19 | if (colno !== undefined) {
|
20 | frame.colno = colno;
|
21 | }
|
22 | return frame;
|
23 | }
|
24 |
|
25 | var chromeRegex = /^\s*at (?:(.*?) ?\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i;
|
26 | var chromeEvalRegex = /\((\S*)(?::(\d+))(?::(\d+))\)/;
|
27 | var chrome = function (line) {
|
28 | var parts = chromeRegex.exec(line);
|
29 | if (parts) {
|
30 | var isEval = parts[2] && parts[2].indexOf('eval') === 0;
|
31 | if (isEval) {
|
32 | var subMatch = chromeEvalRegex.exec(parts[2]);
|
33 | if (subMatch) {
|
34 |
|
35 | parts[2] = subMatch[1];
|
36 | parts[3] = subMatch[2];
|
37 | parts[4] = subMatch[3];
|
38 | }
|
39 | }
|
40 |
|
41 |
|
42 | var _a = __read(extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]), 2), func = _a[0], filename = _a[1];
|
43 | return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);
|
44 | }
|
45 | return;
|
46 | };
|
47 | export var chromeStackParser = [CHROME_PRIORITY, chrome];
|
48 |
|
49 |
|
50 |
|
51 | var geckoREgex = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i;
|
52 | var geckoEvalRegex = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
|
53 | var gecko = function (line) {
|
54 | var _a;
|
55 | var parts = geckoREgex.exec(line);
|
56 | if (parts) {
|
57 | var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;
|
58 | if (isEval) {
|
59 | var subMatch = geckoEvalRegex.exec(parts[3]);
|
60 | if (subMatch) {
|
61 |
|
62 | parts[1] = parts[1] || 'eval';
|
63 | parts[3] = subMatch[1];
|
64 | parts[4] = subMatch[2];
|
65 | parts[5] = '';
|
66 | }
|
67 | }
|
68 | var filename = parts[3];
|
69 | var func = parts[1] || UNKNOWN_FUNCTION;
|
70 | _a = __read(extractSafariExtensionDetails(func, filename), 2), func = _a[0], filename = _a[1];
|
71 | return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);
|
72 | }
|
73 | return;
|
74 | };
|
75 | export var geckoStackParser = [GECKO_PRIORITY, gecko];
|
76 | var winjsRegex = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
|
77 | var winjs = function (line) {
|
78 | var parts = winjsRegex.exec(line);
|
79 | return parts
|
80 | ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)
|
81 | : undefined;
|
82 | };
|
83 | export var winjsStackParser = [WINJS_PRIORITY, winjs];
|
84 | var opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
|
85 | var opera10 = function (line) {
|
86 | var parts = opera10Regex.exec(line);
|
87 | return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;
|
88 | };
|
89 | export var opera10StackParser = [OPERA10_PRIORITY, opera10];
|
90 | var opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i;
|
91 | var opera11 = function (line) {
|
92 | var parts = opera11Regex.exec(line);
|
93 | return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;
|
94 | };
|
95 | export var opera11StackParser = [OPERA11_PRIORITY, opera11];
|
96 |
|
97 |
|
98 |
|
99 |
|
100 |
|
101 |
|
102 |
|
103 |
|
104 |
|
105 |
|
106 |
|
107 |
|
108 |
|
109 |
|
110 |
|
111 |
|
112 |
|
113 |
|
114 |
|
115 |
|
116 | var extractSafariExtensionDetails = function (func, filename) {
|
117 | var isSafariExtension = func.indexOf('safari-extension') !== -1;
|
118 | var isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;
|
119 | return isSafariExtension || isSafariWebExtension
|
120 | ? [
|
121 | func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,
|
122 | isSafariExtension ? "safari-extension:" + filename : "safari-web-extension:" + filename,
|
123 | ]
|
124 | : [func, filename];
|
125 | };
|
126 |
|
\ | No newline at end of file |