posthog-js 1.297.2 → 1.297.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/array.full.es5.js +1 -1
  2. package/dist/array.full.js +1 -1
  3. package/dist/array.full.no-external.js +1 -1
  4. package/dist/array.js +1 -1
  5. package/dist/array.no-external.js +1 -1
  6. package/dist/customizations.full.js +1 -1
  7. package/dist/lazy-recorder.js +1 -1
  8. package/dist/main.js +1 -1
  9. package/dist/module.full.js +1 -1
  10. package/dist/module.full.no-external.js +1 -1
  11. package/dist/module.js +1 -1
  12. package/dist/module.no-external.js +1 -1
  13. package/dist/posthog-recorder.js +1 -1
  14. package/dist/src/extensions/exception-autocapture/chunk-ids.d.ts +4 -0
  15. package/dist/src/extensions/exception-autocapture/error-conversion.d.ts +62 -0
  16. package/dist/src/extensions/exception-autocapture/stack-trace.d.ts +31 -0
  17. package/dist/src/extensions/exception-autocapture/type-checking.d.ts +10 -0
  18. package/dist/src/extensions/replay/config.d.ts +9 -0
  19. package/dist/src/extensions/replay/mutation-throttler.d.ts +18 -0
  20. package/dist/src/extensions/replay/sessionrecording-utils.d.ts +19 -0
  21. package/dist/src/extensions/replay/sessionrecording-wrapper.d.ts +75 -0
  22. package/dist/src/extensions/replay/sessionrecording.d.ts +163 -0
  23. package/dist/src/extensions/replay/triggerMatching.d.ts +99 -0
  24. package/lib/package.json +1 -1
  25. package/lib/src/extensions/exception-autocapture/chunk-ids.d.ts +4 -0
  26. package/lib/src/extensions/exception-autocapture/chunk-ids.js +44 -0
  27. package/lib/src/extensions/exception-autocapture/chunk-ids.js.map +1 -0
  28. package/lib/src/extensions/exception-autocapture/error-conversion.d.ts +62 -0
  29. package/lib/src/extensions/exception-autocapture/error-conversion.js +324 -0
  30. package/lib/src/extensions/exception-autocapture/error-conversion.js.map +1 -0
  31. package/lib/src/extensions/exception-autocapture/stack-trace.d.ts +31 -0
  32. package/lib/src/extensions/exception-autocapture/stack-trace.js +283 -0
  33. package/lib/src/extensions/exception-autocapture/stack-trace.js.map +1 -0
  34. package/lib/src/extensions/exception-autocapture/type-checking.d.ts +10 -0
  35. package/lib/src/extensions/exception-autocapture/type-checking.js +59 -0
  36. package/lib/src/extensions/exception-autocapture/type-checking.js.map +1 -0
  37. package/lib/src/extensions/replay/config.d.ts +9 -0
  38. package/lib/src/extensions/replay/config.js +248 -0
  39. package/lib/src/extensions/replay/config.js.map +1 -0
  40. package/lib/src/extensions/replay/mutation-throttler.d.ts +18 -0
  41. package/lib/src/extensions/replay/mutation-throttler.js +96 -0
  42. package/lib/src/extensions/replay/mutation-throttler.js.map +1 -0
  43. package/lib/src/extensions/replay/sessionrecording-utils.d.ts +19 -0
  44. package/lib/src/extensions/replay/sessionrecording-utils.js +157 -0
  45. package/lib/src/extensions/replay/sessionrecording-utils.js.map +1 -0
  46. package/lib/src/extensions/replay/sessionrecording-wrapper.d.ts +75 -0
  47. package/lib/src/extensions/replay/sessionrecording-wrapper.js +285 -0
  48. package/lib/src/extensions/replay/sessionrecording-wrapper.js.map +1 -0
  49. package/lib/src/extensions/replay/sessionrecording.d.ts +163 -0
  50. package/lib/src/extensions/replay/sessionrecording.js +1208 -0
  51. package/lib/src/extensions/replay/sessionrecording.js.map +1 -0
  52. package/lib/src/extensions/replay/triggerMatching.d.ts +99 -0
  53. package/lib/src/extensions/replay/triggerMatching.js +390 -0
  54. package/lib/src/extensions/replay/triggerMatching.js.map +1 -0
  55. package/lib/tsconfig.tsbuildinfo +1 -1
  56. package/package.json +2 -2
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ // Portions of this file are derived from getsentry/sentry-javascript by Software, Inc. dba Sentry
3
+ // Licensed under the MIT License
4
+ var __assign = (this && this.__assign) || function () {
5
+ __assign = Object.assign || function(t) {
6
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
7
+ s = arguments[i];
8
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
9
+ t[p] = s[p];
10
+ }
11
+ return t;
12
+ };
13
+ return __assign.apply(this, arguments);
14
+ };
15
+ var __read = (this && this.__read) || function (o, n) {
16
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
17
+ if (!m) return o;
18
+ var i = m.call(o), r, ar = [], e;
19
+ try {
20
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
21
+ }
22
+ catch (error) { e = { error: error }; }
23
+ finally {
24
+ try {
25
+ if (r && !r.done && (m = i["return"])) m.call(i);
26
+ }
27
+ finally { if (e) throw e.error; }
28
+ }
29
+ return ar;
30
+ };
31
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
32
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
33
+ if (ar || !(i in from)) {
34
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
35
+ ar[i] = from[i];
36
+ }
37
+ }
38
+ return to.concat(ar || Array.prototype.slice.call(from));
39
+ };
40
+ var __values = (this && this.__values) || function(o) {
41
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
42
+ if (m) return m.call(o);
43
+ if (o && typeof o.length === "number") return {
44
+ next: function () {
45
+ if (o && i >= o.length) o = void 0;
46
+ return { value: o && o[i++], done: !o };
47
+ }
48
+ };
49
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
50
+ };
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ exports.defaultStackParser = exports.defaultStackLineParsers = exports.opera11StackLineParser = exports.opera10StackLineParser = exports.winjsStackLineParser = exports.geckoStackLineParser = exports.chromeStackLineParser = void 0;
53
+ exports.reverseAndStripFrames = reverseAndStripFrames;
54
+ exports.createStackParser = createStackParser;
55
+ // 💖 open source
56
+ // This was originally forked from https://github.com/csnover/TraceKit, and was largely
57
+ // re-written as part of raven - js.
58
+ //
59
+ // This code was later copied to the JavaScript mono - repo and further modified and
60
+ // refactored over the years.
61
+ // Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.
62
+ //
63
+ // Permission is hereby granted, free of charge, to any person obtaining a copy of this
64
+ // software and associated documentation files(the 'Software'), to deal in the Software
65
+ // without restriction, including without limitation the rights to use, copy, modify,
66
+ // merge, publish, distribute, sublicense, and / or sell copies of the Software, and to
67
+ // permit persons to whom the Software is furnished to do so, subject to the following
68
+ // conditions:
69
+ //
70
+ // The above copyright notice and this permission notice shall be included in all copies
71
+ // or substantial portions of the Software.
72
+ //
73
+ // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
74
+ // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
75
+ // PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
76
+ // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
77
+ // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
78
+ // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
79
+ var core_1 = require("@posthog/core");
80
+ var WEBPACK_ERROR_REGEXP = /\(error: (.*)\)/;
81
+ var STACKTRACE_FRAME_LIMIT = 50;
82
+ var UNKNOWN_FUNCTION = '?';
83
+ var OPERA10_PRIORITY = 10;
84
+ var OPERA11_PRIORITY = 20;
85
+ var CHROME_PRIORITY = 30;
86
+ var WINJS_PRIORITY = 40;
87
+ var GECKO_PRIORITY = 50;
88
+ function createFrame(filename, func, lineno, colno) {
89
+ var frame = {
90
+ platform: 'web:javascript',
91
+ filename: filename,
92
+ function: func === '<anonymous>' ? UNKNOWN_FUNCTION : func,
93
+ in_app: true, // All browser frames are considered in_app
94
+ };
95
+ if (!(0, core_1.isUndefined)(lineno)) {
96
+ frame.lineno = lineno;
97
+ }
98
+ if (!(0, core_1.isUndefined)(colno)) {
99
+ frame.colno = colno;
100
+ }
101
+ return frame;
102
+ }
103
+ // This regex matches frames that have no function name (ie. are at the top level of a module).
104
+ // For example "at http://localhost:5000//script.js:1:126"
105
+ // Frames _with_ function names usually look as follows: "at commitLayoutEffects (react-dom.development.js:23426:1)"
106
+ var chromeRegexNoFnName = /^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i;
107
+ // This regex matches all the frames that have a function name.
108
+ var chromeRegex = /^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i;
109
+ var chromeEvalRegex = /\((\S*)(?::(\d+))(?::(\d+))\)/;
110
+ // Chromium based browsers: Chrome, Brave, new Opera, new Edge
111
+ // We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments
112
+ // See: https://github.com/getsentry/sentry-javascript/issues/6880
113
+ var chromeStackParserFn = function (line) {
114
+ // If the stack line has no function name, we need to parse it differently
115
+ var noFnParts = chromeRegexNoFnName.exec(line);
116
+ if (noFnParts) {
117
+ var _a = __read(noFnParts, 4), filename = _a[1], line_1 = _a[2], col = _a[3];
118
+ return createFrame(filename, UNKNOWN_FUNCTION, +line_1, +col);
119
+ }
120
+ var parts = chromeRegex.exec(line);
121
+ if (parts) {
122
+ var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line
123
+ if (isEval) {
124
+ var subMatch = chromeEvalRegex.exec(parts[2]);
125
+ if (subMatch) {
126
+ // throw out eval line/column and use top-most line/column number
127
+ parts[2] = subMatch[1]; // url
128
+ parts[3] = subMatch[2]; // line
129
+ parts[4] = subMatch[3]; // column
130
+ }
131
+ }
132
+ // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now
133
+ // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)
134
+ var _b = __read(extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]), 2), func = _b[0], filename = _b[1];
135
+ return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);
136
+ }
137
+ return;
138
+ };
139
+ exports.chromeStackLineParser = [CHROME_PRIORITY, chromeStackParserFn];
140
+ // gecko regex: `(?:bundle|\d+\.js)`: `bundle` is for react native, `\d+\.js` also but specifically for ram bundles because it
141
+ // generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js
142
+ // We need this specific case for now because we want no other regex to match.
143
+ var geckoREgex = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i;
144
+ var geckoEvalRegex = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
145
+ var gecko = function (line) {
146
+ var _a;
147
+ var parts = geckoREgex.exec(line);
148
+ if (parts) {
149
+ var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;
150
+ if (isEval) {
151
+ var subMatch = geckoEvalRegex.exec(parts[3]);
152
+ if (subMatch) {
153
+ // throw out eval line/column and use top-most line number
154
+ parts[1] = parts[1] || 'eval';
155
+ parts[3] = subMatch[1];
156
+ parts[4] = subMatch[2];
157
+ parts[5] = ''; // no column when eval
158
+ }
159
+ }
160
+ var filename = parts[3];
161
+ var func = parts[1] || UNKNOWN_FUNCTION;
162
+ _a = __read(extractSafariExtensionDetails(func, filename), 2), func = _a[0], filename = _a[1];
163
+ return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);
164
+ }
165
+ return;
166
+ };
167
+ exports.geckoStackLineParser = [GECKO_PRIORITY, gecko];
168
+ var winjsRegex = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
169
+ var winjs = function (line) {
170
+ var parts = winjsRegex.exec(line);
171
+ return parts
172
+ ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)
173
+ : undefined;
174
+ };
175
+ exports.winjsStackLineParser = [WINJS_PRIORITY, winjs];
176
+ var opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
177
+ var opera10 = function (line) {
178
+ var parts = opera10Regex.exec(line);
179
+ return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;
180
+ };
181
+ exports.opera10StackLineParser = [OPERA10_PRIORITY, opera10];
182
+ var opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i;
183
+ var opera11 = function (line) {
184
+ var parts = opera11Regex.exec(line);
185
+ return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;
186
+ };
187
+ exports.opera11StackLineParser = [OPERA11_PRIORITY, opera11];
188
+ exports.defaultStackLineParsers = [exports.chromeStackLineParser, exports.geckoStackLineParser];
189
+ exports.defaultStackParser = createStackParser.apply(void 0, __spreadArray([], __read(exports.defaultStackLineParsers), false));
190
+ function reverseAndStripFrames(stack) {
191
+ if (!stack.length) {
192
+ return [];
193
+ }
194
+ var localStack = Array.from(stack);
195
+ localStack.reverse();
196
+ return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(function (frame) { return (__assign(__assign({}, frame), { filename: frame.filename || getLastStackFrame(localStack).filename, function: frame.function || UNKNOWN_FUNCTION })); });
197
+ }
198
+ function getLastStackFrame(arr) {
199
+ return arr[arr.length - 1] || {};
200
+ }
201
+ function createStackParser() {
202
+ var parsers = [];
203
+ for (var _i = 0; _i < arguments.length; _i++) {
204
+ parsers[_i] = arguments[_i];
205
+ }
206
+ var sortedParsers = parsers.sort(function (a, b) { return a[0] - b[0]; }).map(function (p) { return p[1]; });
207
+ return function (stack, skipFirstLines) {
208
+ var e_1, _a;
209
+ if (skipFirstLines === void 0) { skipFirstLines = 0; }
210
+ var frames = [];
211
+ var lines = stack.split('\n');
212
+ for (var i = skipFirstLines; i < lines.length; i++) {
213
+ var line = lines[i];
214
+ // Ignore lines over 1kb as they are unlikely to be stack frames.
215
+ // Many of the regular expressions use backtracking which results in run time that increases exponentially with
216
+ // input size. Huge strings can result in hangs/Denial of Service:
217
+ // https://github.com/getsentry/sentry-javascript/issues/2286
218
+ if (line.length > 1024) {
219
+ continue;
220
+ }
221
+ // https://github.com/getsentry/sentry-javascript/issues/5459
222
+ // Remove webpack (error: *) wrappers
223
+ var cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;
224
+ // https://github.com/getsentry/sentry-javascript/issues/7813
225
+ // Skip Error: lines
226
+ if (cleanedLine.match(/\S*Error: /)) {
227
+ continue;
228
+ }
229
+ try {
230
+ for (var sortedParsers_1 = (e_1 = void 0, __values(sortedParsers)), sortedParsers_1_1 = sortedParsers_1.next(); !sortedParsers_1_1.done; sortedParsers_1_1 = sortedParsers_1.next()) {
231
+ var parser = sortedParsers_1_1.value;
232
+ var frame = parser(cleanedLine);
233
+ if (frame) {
234
+ frames.push(frame);
235
+ break;
236
+ }
237
+ }
238
+ }
239
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
240
+ finally {
241
+ try {
242
+ if (sortedParsers_1_1 && !sortedParsers_1_1.done && (_a = sortedParsers_1.return)) _a.call(sortedParsers_1);
243
+ }
244
+ finally { if (e_1) throw e_1.error; }
245
+ }
246
+ if (frames.length >= STACKTRACE_FRAME_LIMIT) {
247
+ break;
248
+ }
249
+ }
250
+ return reverseAndStripFrames(frames);
251
+ };
252
+ }
253
+ /**
254
+ * Safari web extensions, starting version unknown, can produce "frames-only" stacktraces.
255
+ * What it means, is that instead of format like:
256
+ *
257
+ * Error: wat
258
+ * at function@url:row:col
259
+ * at function@url:row:col
260
+ * at function@url:row:col
261
+ *
262
+ * it produces something like:
263
+ *
264
+ * function@url:row:col
265
+ * function@url:row:col
266
+ * function@url:row:col
267
+ *
268
+ * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.
269
+ * This function is extracted so that we can use it in both places without duplicating the logic.
270
+ * Unfortunately "just" changing RegExp is too complicated now and making it pass all tests
271
+ * and fix this case seems like an impossible, or at least way too time-consuming task.
272
+ */
273
+ var extractSafariExtensionDetails = function (func, filename) {
274
+ var isSafariExtension = func.indexOf('safari-extension') !== -1;
275
+ var isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;
276
+ return isSafariExtension || isSafariWebExtension
277
+ ? [
278
+ func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,
279
+ isSafariExtension ? "safari-extension:".concat(filename) : "safari-web-extension:".concat(filename),
280
+ ]
281
+ : [func, filename];
282
+ };
283
+ //# sourceMappingURL=stack-trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-trace.js","sourceRoot":"","sources":["../../../../src/extensions/exception-autocapture/stack-trace.ts"],"names":[],"mappings":"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","sourcesContent":["// Portions of this file are derived from getsentry/sentry-javascript by Software, Inc. dba Sentry\n// Licensed under the MIT License\n\n// 💖 open source\n\n// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re-written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport { isUndefined } from '@posthog/core'\n\nexport type StackParser = (stack: string, skipFirstLines?: number) => StackFrame[]\nexport type StackLineParserFn = (line: string) => StackFrame | undefined\nexport type StackLineParser = [number, StackLineParserFn]\n\nexport interface StackFrame {\n platform: string\n filename?: string\n function?: string\n module?: string\n lineno?: number\n colno?: number\n abs_path?: string\n context_line?: string\n pre_context?: string[]\n post_context?: string[]\n in_app?: boolean\n instruction_addr?: string\n addr_mode?: string\n vars?: { [key: string]: any }\n chunk_id?: string\n}\n\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/\nconst STACKTRACE_FRAME_LIMIT = 50\n\nconst UNKNOWN_FUNCTION = '?'\n\nconst OPERA10_PRIORITY = 10\nconst OPERA11_PRIORITY = 20\nconst CHROME_PRIORITY = 30\nconst WINJS_PRIORITY = 40\nconst GECKO_PRIORITY = 50\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n platform: 'web:javascript',\n filename,\n function: func === '<anonymous>' ? UNKNOWN_FUNCTION : func,\n in_app: true, // All browser frames are considered in_app\n }\n\n if (!isUndefined(lineno)) {\n frame.lineno = lineno\n }\n\n if (!isUndefined(colno)) {\n frame.colno = colno\n }\n\n return frame\n}\n\n// This regex matches frames that have no function name (ie. are at the top level of a module).\n// For example \"at http://localhost:5000//script.js:1:126\"\n// Frames _with_ function names usually look as follows: \"at commitLayoutEffects (react-dom.development.js:23426:1)\"\nconst chromeRegexNoFnName = /^\\s*at (\\S+?)(?::(\\d+))(?::(\\d+))\\s*$/i\n\n// This regex matches all the frames that have a function name.\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i\n\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn: StackLineParserFn = (line) => {\n // If the stack line has no function name, we need to parse it differently\n const noFnParts = chromeRegexNoFnName.exec(line) as null | [string, string, string, string]\n\n if (noFnParts) {\n const [, filename, line, col] = noFnParts\n return createFrame(filename, UNKNOWN_FUNCTION, +line, +col)\n }\n\n const parts = chromeRegex.exec(line) as null | [string, string, string, string, string]\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]) as null | [string, string, string, string]\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1] // url\n parts[3] = subMatch[2] // line\n parts[4] = subMatch[3] // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2])\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined)\n }\n\n return\n}\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chromeStackParserFn]\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i\n\nconst gecko: StackLineParserFn = (line) => {\n const parts = geckoREgex.exec(line) as null | [string, string, string, string, string, string]\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]) as null | [string, string, string]\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval'\n parts[3] = subMatch[1]\n parts[4] = subMatch[2]\n parts[5] = '' // no column when eval\n }\n }\n\n let filename = parts[3]\n let func = parts[1] || UNKNOWN_FUNCTION\n ;[func, filename] = extractSafariExtensionDetails(func, filename)\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined)\n }\n\n return\n}\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko]\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nconst winjs: StackLineParserFn = (line) => {\n const parts = winjsRegex.exec(line) as null | [string, string, string, string, string]\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined\n}\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs]\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i\n\nconst opera10: StackLineParserFn = (line) => {\n const parts = opera10Regex.exec(line) as null | [string, string, string, string]\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined\n}\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10]\n\nconst opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i\n\nconst opera11: StackLineParserFn = (line) => {\n const parts = opera11Regex.exec(line) as null | [string, string, string, string, string, string]\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined\n}\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11]\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser]\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers)\n\nexport function reverseAndStripFrames(stack: ReadonlyArray<StackFrame>): StackFrame[] {\n if (!stack.length) {\n return []\n }\n\n const localStack = Array.from(stack)\n\n localStack.reverse()\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map((frame) => ({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION,\n }))\n}\n\nfunction getLastStackFrame(arr: StackFrame[]): StackFrame {\n return arr[arr.length - 1] || {}\n}\n\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map((p) => p[1])\n\n return (stack: string, skipFirstLines: number = 0): StackFrame[] => {\n const frames: StackFrame[] = []\n const lines = stack.split('\\n')\n\n for (let i = skipFirstLines; i < lines.length; i++) {\n const line = lines[i] as string\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine)\n if (frame) {\n frames.push(frame)\n break\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break\n }\n }\n\n return reverseAndStripFrames(frames)\n }\n}\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? (func.split('@')[0] as string) : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename]\n}\n"]}
@@ -0,0 +1,10 @@
1
+ export declare function isEvent(candidate: unknown): candidate is Event;
2
+ export declare function isPlainObject(candidate: unknown): candidate is Record<string, unknown>;
3
+ export declare function isInstanceOf(candidate: unknown, base: any): boolean;
4
+ export declare function isPrimitive(candidate: unknown): candidate is number | string | boolean | bigint | symbol | null | undefined;
5
+ export declare function isError(candidate: unknown): candidate is Error;
6
+ export declare function isErrorEvent(event: string | Error | Event): event is ErrorEvent;
7
+ export declare function isErrorWithStack(candidate: unknown): candidate is Error;
8
+ export declare function isBuiltin(candidate: unknown, className: string): boolean;
9
+ export declare function isDOMException(candidate: unknown): boolean;
10
+ export declare function isDOMError(candidate: unknown): boolean;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ // Portions of this file are derived from getsentry/sentry-javascript by Software, Inc. dba Sentry
3
+ // Licensed under the MIT License
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.isEvent = isEvent;
6
+ exports.isPlainObject = isPlainObject;
7
+ exports.isInstanceOf = isInstanceOf;
8
+ exports.isPrimitive = isPrimitive;
9
+ exports.isError = isError;
10
+ exports.isErrorEvent = isErrorEvent;
11
+ exports.isErrorWithStack = isErrorWithStack;
12
+ exports.isBuiltin = isBuiltin;
13
+ exports.isDOMException = isDOMException;
14
+ exports.isDOMError = isDOMError;
15
+ var core_1 = require("@posthog/core");
16
+ function isEvent(candidate) {
17
+ return !(0, core_1.isUndefined)(Event) && isInstanceOf(candidate, Event);
18
+ }
19
+ function isPlainObject(candidate) {
20
+ return isBuiltin(candidate, 'Object');
21
+ }
22
+ function isInstanceOf(candidate, base) {
23
+ try {
24
+ return candidate instanceof base;
25
+ }
26
+ catch (_a) {
27
+ return false;
28
+ }
29
+ }
30
+ function isPrimitive(candidate) {
31
+ return (0, core_1.isNull)(candidate) || (!(0, core_1.isObject)(candidate) && !(0, core_1.isFunction)(candidate));
32
+ }
33
+ function isError(candidate) {
34
+ switch (Object.prototype.toString.call(candidate)) {
35
+ case '[object Error]':
36
+ case '[object Exception]':
37
+ case '[object DOMException]':
38
+ case '[object DOMError]':
39
+ return true;
40
+ default:
41
+ return isInstanceOf(candidate, Error);
42
+ }
43
+ }
44
+ function isErrorEvent(event) {
45
+ return isBuiltin(event, 'ErrorEvent');
46
+ }
47
+ function isErrorWithStack(candidate) {
48
+ return 'stack' in candidate;
49
+ }
50
+ function isBuiltin(candidate, className) {
51
+ return Object.prototype.toString.call(candidate) === "[object ".concat(className, "]");
52
+ }
53
+ function isDOMException(candidate) {
54
+ return isBuiltin(candidate, 'DOMException');
55
+ }
56
+ function isDOMError(candidate) {
57
+ return isBuiltin(candidate, 'DOMError');
58
+ }
59
+ //# sourceMappingURL=type-checking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-checking.js","sourceRoot":"","sources":["../../../../src/extensions/exception-autocapture/type-checking.ts"],"names":[],"mappings":";AAAA,kGAAkG;AAClG,iCAAiC;;AAIjC,0BAEC;AAED,sCAEC;AAED,oCAMC;AAED,kCAIC;AAED,0BAUC;AAED,oCAEC;AAED,4CAEC;AAED,8BAEC;AAED,wCAEC;AAED,gCAEC;AAtDD,sCAAyE;AAEzE,SAAgB,OAAO,CAAC,SAAkB;IACtC,OAAO,CAAC,IAAA,kBAAW,EAAC,KAAK,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAChE,CAAC;AAED,SAAgB,aAAa,CAAC,SAAkB;IAC5C,OAAO,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;AACzC,CAAC;AAED,SAAgB,YAAY,CAAC,SAAkB,EAAE,IAAS;IACtD,IAAI,CAAC;QACD,OAAO,SAAS,YAAY,IAAI,CAAA;IACpC,CAAC;IAAC,WAAM,CAAC;QACL,OAAO,KAAK,CAAA;IAChB,CAAC;AACL,CAAC;AAED,SAAgB,WAAW,CACvB,SAAkB;IAElB,OAAO,IAAA,aAAM,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAA,eAAQ,EAAC,SAAS,CAAC,IAAI,CAAC,IAAA,iBAAU,EAAC,SAAS,CAAC,CAAC,CAAA;AAChF,CAAC;AAED,SAAgB,OAAO,CAAC,SAAkB;IACtC,QAAQ,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAChD,KAAK,gBAAgB,CAAC;QACtB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,uBAAuB,CAAC;QAC7B,KAAK,mBAAmB;YACpB,OAAO,IAAI,CAAA;QACf;YACI,OAAO,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC7C,CAAC;AACL,CAAC;AAED,SAAgB,YAAY,CAAC,KAA6B;IACtD,OAAO,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;AACzC,CAAC;AAED,SAAgB,gBAAgB,CAAC,SAAkB;IAC/C,OAAO,OAAO,IAAK,SAAmB,CAAA;AAC1C,CAAC;AAED,SAAgB,SAAS,CAAC,SAAkB,EAAE,SAAiB;IAC3D,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,kBAAW,SAAS,MAAG,CAAA;AAChF,CAAC;AAED,SAAgB,cAAc,CAAC,SAAkB;IAC7C,OAAO,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;AAC/C,CAAC;AAED,SAAgB,UAAU,CAAC,SAAkB;IACzC,OAAO,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;AAC3C,CAAC","sourcesContent":["// Portions of this file are derived from getsentry/sentry-javascript by Software, Inc. dba Sentry\n// Licensed under the MIT License\n\nimport { isFunction, isNull, isUndefined, isObject } from '@posthog/core'\n\nexport function isEvent(candidate: unknown): candidate is Event {\n return !isUndefined(Event) && isInstanceOf(candidate, Event)\n}\n\nexport function isPlainObject(candidate: unknown): candidate is Record<string, unknown> {\n return isBuiltin(candidate, 'Object')\n}\n\nexport function isInstanceOf(candidate: unknown, base: any): boolean {\n try {\n return candidate instanceof base\n } catch {\n return false\n }\n}\n\nexport function isPrimitive(\n candidate: unknown\n): candidate is number | string | boolean | bigint | symbol | null | undefined {\n return isNull(candidate) || (!isObject(candidate) && !isFunction(candidate))\n}\n\nexport function isError(candidate: unknown): candidate is Error {\n switch (Object.prototype.toString.call(candidate)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object DOMError]':\n return true\n default:\n return isInstanceOf(candidate, Error)\n }\n}\n\nexport function isErrorEvent(event: string | Error | Event): event is ErrorEvent {\n return isBuiltin(event, 'ErrorEvent')\n}\n\nexport function isErrorWithStack(candidate: unknown): candidate is Error {\n return 'stack' in (candidate as Error)\n}\n\nexport function isBuiltin(candidate: unknown, className: string): boolean {\n return Object.prototype.toString.call(candidate) === `[object ${className}]`\n}\n\nexport function isDOMException(candidate: unknown): boolean {\n return isBuiltin(candidate, 'DOMException')\n}\n\nexport function isDOMError(candidate: unknown): boolean {\n return isBuiltin(candidate, 'DOMError')\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import { NetworkRecordOptions, PostHogConfig } from '../../types';
2
+ export declare const defaultNetworkOptions: Required<NetworkRecordOptions>;
3
+ /**
4
+ * whether a maskRequestFn is provided or not,
5
+ * we ensure that we remove the denied header from requests
6
+ * we _never_ want to record that header by accident
7
+ * if someone complains then we'll add an opt-in to let them override it
8
+ */
9
+ export declare const buildNetworkRequestOptions: (instanceConfig: PostHogConfig, remoteNetworkOptions: Pick<NetworkRecordOptions, "recordHeaders" | "recordBody" | "recordPerformance" | "payloadHostDenyList">) => NetworkRecordOptions;