@sentry/browser 6.18.1 → 6.19.1

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 (187) hide show
  1. package/bundles/bundle.debug.min.js +3 -0
  2. package/bundles/bundle.debug.min.js.map +1 -0
  3. package/bundles/bundle.es6.debug.min.js +3 -0
  4. package/bundles/bundle.es6.debug.min.js.map +1 -0
  5. package/{build → bundles}/bundle.es6.js +270 -278
  6. package/bundles/bundle.es6.js.map +1 -0
  7. package/bundles/bundle.es6.min.js +3 -0
  8. package/bundles/bundle.es6.min.js.map +1 -0
  9. package/{build → bundles}/bundle.js +305 -306
  10. package/bundles/bundle.js.map +1 -0
  11. package/bundles/bundle.min.js +3 -0
  12. package/bundles/bundle.min.js.map +1 -0
  13. package/dist/backend.d.ts.map +1 -1
  14. package/dist/backend.js +2 -2
  15. package/dist/backend.js.map +1 -1
  16. package/dist/client.d.ts.map +1 -1
  17. package/dist/client.js +1 -1
  18. package/dist/client.js.map +1 -1
  19. package/dist/eventbuilder.d.ts +24 -10
  20. package/dist/eventbuilder.d.ts.map +1 -1
  21. package/dist/eventbuilder.js +119 -23
  22. package/dist/eventbuilder.js.map +1 -1
  23. package/dist/exports.d.ts.map +1 -1
  24. package/dist/exports.js.map +1 -1
  25. package/dist/helpers.d.ts.map +1 -1
  26. package/dist/helpers.js +2 -6
  27. package/dist/helpers.js.map +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/integrations/breadcrumbs.d.ts.map +1 -1
  31. package/dist/integrations/breadcrumbs.js.map +1 -1
  32. package/dist/integrations/dedupe.d.ts.map +1 -1
  33. package/dist/integrations/dedupe.js +1 -1
  34. package/dist/integrations/dedupe.js.map +1 -1
  35. package/dist/integrations/globalhandlers.d.ts.map +1 -1
  36. package/dist/integrations/globalhandlers.js +3 -11
  37. package/dist/integrations/globalhandlers.js.map +1 -1
  38. package/dist/integrations/index.d.ts.map +1 -1
  39. package/dist/integrations/index.js.map +1 -1
  40. package/dist/integrations/linkederrors.d.ts.map +1 -1
  41. package/dist/integrations/linkederrors.js +2 -2
  42. package/dist/integrations/linkederrors.js.map +1 -1
  43. package/dist/integrations/trycatch.d.ts.map +1 -1
  44. package/dist/integrations/trycatch.js +26 -21
  45. package/dist/integrations/trycatch.js.map +1 -1
  46. package/dist/integrations/useragent.d.ts.map +1 -1
  47. package/dist/integrations/useragent.js.map +1 -1
  48. package/dist/sdk.d.ts.map +1 -1
  49. package/dist/sdk.js +3 -9
  50. package/dist/sdk.js.map +1 -1
  51. package/dist/stack-parsers.d.ts +5 -5
  52. package/dist/stack-parsers.d.ts.map +1 -1
  53. package/dist/stack-parsers.js +16 -6
  54. package/dist/stack-parsers.js.map +1 -1
  55. package/dist/transports/base.d.ts +6 -6
  56. package/dist/transports/base.d.ts.map +1 -1
  57. package/dist/transports/base.js +17 -68
  58. package/dist/transports/base.js.map +1 -1
  59. package/dist/transports/fetch.d.ts.map +1 -1
  60. package/dist/transports/fetch.js +2 -0
  61. package/dist/transports/fetch.js.map +1 -1
  62. package/dist/transports/index.d.ts.map +1 -1
  63. package/dist/transports/index.js.map +1 -1
  64. package/dist/transports/utils.d.ts.map +1 -1
  65. package/dist/transports/utils.js +2 -3
  66. package/dist/transports/utils.js.map +1 -1
  67. package/dist/transports/xhr.d.ts.map +1 -1
  68. package/dist/transports/xhr.js +2 -0
  69. package/dist/transports/xhr.js.map +1 -1
  70. package/dist/version.d.ts.map +1 -1
  71. package/dist/version.js.map +1 -1
  72. package/esm/backend.d.ts.map +1 -1
  73. package/esm/backend.js +2 -2
  74. package/esm/backend.js.map +1 -1
  75. package/esm/client.d.ts.map +1 -1
  76. package/esm/client.js +2 -2
  77. package/esm/client.js.map +1 -1
  78. package/esm/eventbuilder.d.ts +24 -10
  79. package/esm/eventbuilder.d.ts.map +1 -1
  80. package/esm/eventbuilder.js +113 -21
  81. package/esm/eventbuilder.js.map +1 -1
  82. package/esm/exports.d.ts.map +1 -1
  83. package/esm/exports.js.map +1 -1
  84. package/esm/helpers.d.ts.map +1 -1
  85. package/esm/helpers.js +2 -6
  86. package/esm/helpers.js.map +1 -1
  87. package/esm/index.d.ts.map +1 -1
  88. package/esm/index.js.map +1 -1
  89. package/esm/integrations/breadcrumbs.d.ts.map +1 -1
  90. package/esm/integrations/breadcrumbs.js.map +1 -1
  91. package/esm/integrations/dedupe.d.ts.map +1 -1
  92. package/esm/integrations/dedupe.js +2 -2
  93. package/esm/integrations/dedupe.js.map +1 -1
  94. package/esm/integrations/globalhandlers.d.ts.map +1 -1
  95. package/esm/integrations/globalhandlers.js +3 -11
  96. package/esm/integrations/globalhandlers.js.map +1 -1
  97. package/esm/integrations/index.d.ts.map +1 -1
  98. package/esm/integrations/index.js.map +1 -1
  99. package/esm/integrations/linkederrors.d.ts.map +1 -1
  100. package/esm/integrations/linkederrors.js +1 -1
  101. package/esm/integrations/linkederrors.js.map +1 -1
  102. package/esm/integrations/trycatch.d.ts.map +1 -1
  103. package/esm/integrations/trycatch.js +26 -21
  104. package/esm/integrations/trycatch.js.map +1 -1
  105. package/esm/integrations/useragent.d.ts.map +1 -1
  106. package/esm/integrations/useragent.js.map +1 -1
  107. package/esm/sdk.d.ts.map +1 -1
  108. package/esm/sdk.js +3 -9
  109. package/esm/sdk.js.map +1 -1
  110. package/esm/stack-parsers.d.ts +5 -5
  111. package/esm/stack-parsers.d.ts.map +1 -1
  112. package/esm/stack-parsers.js +16 -6
  113. package/esm/stack-parsers.js.map +1 -1
  114. package/esm/transports/base.d.ts +6 -6
  115. package/esm/transports/base.d.ts.map +1 -1
  116. package/esm/transports/base.js +19 -70
  117. package/esm/transports/base.js.map +1 -1
  118. package/esm/transports/fetch.d.ts.map +1 -1
  119. package/esm/transports/fetch.js +2 -0
  120. package/esm/transports/fetch.js.map +1 -1
  121. package/esm/transports/index.d.ts.map +1 -1
  122. package/esm/transports/index.js.map +1 -1
  123. package/esm/transports/utils.d.ts.map +1 -1
  124. package/esm/transports/utils.js +2 -3
  125. package/esm/transports/utils.js.map +1 -1
  126. package/esm/transports/xhr.d.ts.map +1 -1
  127. package/esm/transports/xhr.js +2 -0
  128. package/esm/transports/xhr.js.map +1 -1
  129. package/esm/version.d.ts.map +1 -1
  130. package/esm/version.js.map +1 -1
  131. package/package.json +15 -13
  132. package/types/backend.d.ts +43 -0
  133. package/types/backend.d.ts.map +1 -0
  134. package/types/client.d.ts +33 -0
  135. package/types/client.d.ts.map +1 -0
  136. package/types/eventbuilder.d.ts +39 -0
  137. package/types/eventbuilder.d.ts.map +1 -0
  138. package/types/exports.d.ts +10 -0
  139. package/types/exports.d.ts.map +1 -0
  140. package/types/helpers.d.ts +52 -0
  141. package/types/helpers.d.ts.map +1 -0
  142. package/types/index.d.ts +16 -0
  143. package/types/index.d.ts.map +1 -0
  144. package/types/integrations/breadcrumbs.d.ts +47 -0
  145. package/types/integrations/breadcrumbs.d.ts.map +1 -0
  146. package/types/integrations/dedupe.d.ts +21 -0
  147. package/types/integrations/dedupe.d.ts.map +1 -0
  148. package/types/integrations/globalhandlers.d.ts +30 -0
  149. package/types/integrations/globalhandlers.d.ts.map +1 -0
  150. package/types/integrations/index.d.ts +7 -0
  151. package/types/integrations/index.d.ts.map +1 -0
  152. package/types/integrations/linkederrors.d.ts +42 -0
  153. package/types/integrations/linkederrors.d.ts.map +1 -0
  154. package/types/integrations/trycatch.d.ts +33 -0
  155. package/types/integrations/trycatch.d.ts.map +1 -0
  156. package/types/integrations/useragent.d.ts +17 -0
  157. package/types/integrations/useragent.d.ts.map +1 -0
  158. package/types/sdk.d.ts +112 -0
  159. package/types/sdk.d.ts.map +1 -0
  160. package/types/stack-parsers.d.ts +7 -0
  161. package/types/stack-parsers.d.ts.map +1 -0
  162. package/types/transports/base.d.ts +65 -0
  163. package/types/transports/base.d.ts.map +1 -0
  164. package/types/transports/fetch.d.ts +17 -0
  165. package/types/transports/fetch.d.ts.map +1 -0
  166. package/types/transports/index.d.ts +4 -0
  167. package/types/transports/index.d.ts.map +1 -0
  168. package/types/transports/utils.d.ts +48 -0
  169. package/types/transports/utils.d.ts.map +1 -0
  170. package/types/transports/xhr.d.ts +11 -0
  171. package/types/transports/xhr.d.ts.map +1 -0
  172. package/types/version.d.ts +2 -0
  173. package/types/version.d.ts.map +1 -0
  174. package/build/bundle.es6.js.map +0 -1
  175. package/build/bundle.es6.min.js +0 -3
  176. package/build/bundle.es6.min.js.map +0 -1
  177. package/build/bundle.js.map +0 -1
  178. package/build/bundle.min.js +0 -3
  179. package/build/bundle.min.js.map +0 -1
  180. package/dist/parsers.d.ts +0 -21
  181. package/dist/parsers.d.ts.map +0 -1
  182. package/dist/parsers.js +0 -108
  183. package/dist/parsers.js.map +0 -1
  184. package/esm/parsers.d.ts +0 -21
  185. package/esm/parsers.d.ts.map +0 -1
  186. package/esm/parsers.js +0 -103
  187. package/esm/parsers.js.map +0 -1
@@ -1,25 +1,39 @@
1
- import { Event, EventHint, Options, Severity } from '@sentry/types';
1
+ import { Event, EventHint, Exception, Severity, StackFrame } from '@sentry/types';
2
+ /**
3
+ * This function creates an exception from an TraceKitStackTrace
4
+ * @param stacktrace TraceKitStackTrace that will be converted to an exception
5
+ * @hidden
6
+ */
7
+ export declare function exceptionFromError(ex: Error): Exception;
8
+ /**
9
+ * @hidden
10
+ */
11
+ export declare function eventFromPlainObject(exception: Record<string, unknown>, syntheticException?: Error, isUnhandledRejection?: boolean): Event;
12
+ /**
13
+ * @hidden
14
+ */
15
+ export declare function eventFromError(ex: Error): Event;
16
+ /** Parses stack frames from an error */
17
+ export declare function parseStackFrames(ex: Error & {
18
+ framesToPop?: number;
19
+ stacktrace?: string;
20
+ }): StackFrame[];
2
21
  /**
3
22
  * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.
4
23
  * @hidden
5
24
  */
6
- export declare function eventFromException(options: Options, exception: unknown, hint?: EventHint): PromiseLike<Event>;
25
+ export declare function eventFromException(exception: unknown, hint?: EventHint, attachStacktrace?: boolean): PromiseLike<Event>;
7
26
  /**
8
27
  * Builds and Event from a Message
9
28
  * @hidden
10
29
  */
11
- export declare function eventFromMessage(options: Options, message: string, level?: Severity, hint?: EventHint): PromiseLike<Event>;
30
+ export declare function eventFromMessage(message: string, level?: Severity, hint?: EventHint, attachStacktrace?: boolean): PromiseLike<Event>;
12
31
  /**
13
32
  * @hidden
14
33
  */
15
- export declare function eventFromUnknownInput(exception: unknown, syntheticException?: Error, options?: {
16
- isRejection?: boolean;
17
- attachStacktrace?: boolean;
18
- }): Event;
34
+ export declare function eventFromUnknownInput(exception: unknown, syntheticException?: Error, attachStacktrace?: boolean, isUnhandledRejection?: boolean): Event;
19
35
  /**
20
36
  * @hidden
21
37
  */
22
- export declare function eventFromString(input: string, syntheticException?: Error, options?: {
23
- attachStacktrace?: boolean;
24
- }): Event;
38
+ export declare function eventFromString(input: string, syntheticException?: Error, attachStacktrace?: boolean): Event;
25
39
  //# sourceMappingURL=eventbuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eventbuilder.d.ts","sourceRoot":"","sources":["../src/eventbuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAepE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAW7G;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,QAAwB,EAC/B,IAAI,CAAC,EAAE,SAAS,GACf,WAAW,CAAC,KAAK,CAAC,CAUpB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,OAAO,EAClB,kBAAkB,CAAC,EAAE,KAAK,EAC1B,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACvB,GACL,KAAK,CAiEP;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,kBAAkB,CAAC,EAAE,KAAK,EAC1B,OAAO,GAAE;IACP,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACvB,GACL,KAAK,CAaP"}
1
+ {"version":3,"file":"eventbuilder.d.ts","sourceRoot":"","sources":["../../src/eventbuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAwBlF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,GAAG,SAAS,CAkBvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,kBAAkB,CAAC,EAAE,KAAK,EAC1B,oBAAoB,CAAC,EAAE,OAAO,GAC7B,KAAK,CAyBP;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAM/C;AAED,wCAAwC;AACxC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,KAAK,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,EAAE,CAqBxG;AAmCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,OAAO,EAClB,IAAI,CAAC,EAAE,SAAS,EAChB,gBAAgB,CAAC,EAAE,OAAO,GACzB,WAAW,CAAC,KAAK,CAAC,CASpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,QAAwB,EAC/B,IAAI,CAAC,EAAE,SAAS,EAChB,gBAAgB,CAAC,EAAE,OAAO,GACzB,WAAW,CAAC,KAAK,CAAC,CAQpB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,OAAO,EAClB,kBAAkB,CAAC,EAAE,KAAK,EAC1B,gBAAgB,CAAC,EAAE,OAAO,EAC1B,oBAAoB,CAAC,EAAE,OAAO,GAC7B,KAAK,CAiEP;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,KAAK,CAa5G"}
@@ -1,16 +1,112 @@
1
1
  import { __assign } from "tslib";
2
2
  import { Severity } from '@sentry/types';
3
- import { addExceptionMechanism, addExceptionTypeValue, isDOMError, isDOMException, isError, isErrorEvent, isEvent, isPlainObject, resolvedSyncPromise, } from '@sentry/utils';
4
- import { eventFromError, eventFromPlainObject, parseStackFrames } from './parsers';
3
+ import { addExceptionMechanism, addExceptionTypeValue, createStackParser, extractExceptionKeysForMessage, isDOMError, isDOMException, isError, isErrorEvent, isEvent, isPlainObject, normalizeToSize, resolvedSyncPromise, } from '@sentry/utils';
4
+ import { chromeStackParser, geckoStackParser, opera10StackParser, opera11StackParser, winjsStackParser, } from './stack-parsers';
5
+ /**
6
+ * This function creates an exception from an TraceKitStackTrace
7
+ * @param stacktrace TraceKitStackTrace that will be converted to an exception
8
+ * @hidden
9
+ */
10
+ export function exceptionFromError(ex) {
11
+ // Get the frames first since Opera can lose the stack if we touch anything else first
12
+ var frames = parseStackFrames(ex);
13
+ var exception = {
14
+ type: ex && ex.name,
15
+ value: extractMessage(ex),
16
+ };
17
+ if (frames.length) {
18
+ exception.stacktrace = { frames: frames };
19
+ }
20
+ if (exception.type === undefined && exception.value === '') {
21
+ exception.value = 'Unrecoverable error caught';
22
+ }
23
+ return exception;
24
+ }
25
+ /**
26
+ * @hidden
27
+ */
28
+ export function eventFromPlainObject(exception, syntheticException, isUnhandledRejection) {
29
+ var event = {
30
+ exception: {
31
+ values: [
32
+ {
33
+ type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',
34
+ value: "Non-Error " + (isUnhandledRejection ? 'promise rejection' : 'exception') + " captured with keys: " + extractExceptionKeysForMessage(exception),
35
+ },
36
+ ],
37
+ },
38
+ extra: {
39
+ __serialized__: normalizeToSize(exception),
40
+ },
41
+ };
42
+ if (syntheticException) {
43
+ var frames_1 = parseStackFrames(syntheticException);
44
+ if (frames_1.length) {
45
+ event.stacktrace = { frames: frames_1 };
46
+ }
47
+ }
48
+ return event;
49
+ }
50
+ /**
51
+ * @hidden
52
+ */
53
+ export function eventFromError(ex) {
54
+ return {
55
+ exception: {
56
+ values: [exceptionFromError(ex)],
57
+ },
58
+ };
59
+ }
60
+ /** Parses stack frames from an error */
61
+ export function parseStackFrames(ex) {
62
+ // Access and store the stacktrace property before doing ANYTHING
63
+ // else to it because Opera is not very good at providing it
64
+ // reliably in other circumstances.
65
+ var stacktrace = ex.stacktrace || ex.stack || '';
66
+ var popSize = getPopSize(ex);
67
+ try {
68
+ return createStackParser(opera10StackParser, opera11StackParser, chromeStackParser, winjsStackParser, geckoStackParser)(stacktrace, popSize);
69
+ }
70
+ catch (e) {
71
+ // no-empty
72
+ }
73
+ return [];
74
+ }
75
+ // Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108
76
+ var reactMinifiedRegexp = /Minified React error #\d+;/i;
77
+ function getPopSize(ex) {
78
+ if (ex) {
79
+ if (typeof ex.framesToPop === 'number') {
80
+ return ex.framesToPop;
81
+ }
82
+ if (reactMinifiedRegexp.test(ex.message)) {
83
+ return 1;
84
+ }
85
+ }
86
+ return 0;
87
+ }
88
+ /**
89
+ * There are cases where stacktrace.message is an Event object
90
+ * https://github.com/getsentry/sentry-javascript/issues/1949
91
+ * In this specific case we try to extract stacktrace.message.error.message
92
+ */
93
+ function extractMessage(ex) {
94
+ var message = ex && ex.message;
95
+ if (!message) {
96
+ return 'No error message';
97
+ }
98
+ if (message.error && typeof message.error.message === 'string') {
99
+ return message.error.message;
100
+ }
101
+ return message;
102
+ }
5
103
  /**
6
104
  * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.
7
105
  * @hidden
8
106
  */
9
- export function eventFromException(options, exception, hint) {
107
+ export function eventFromException(exception, hint, attachStacktrace) {
10
108
  var syntheticException = (hint && hint.syntheticException) || undefined;
11
- var event = eventFromUnknownInput(exception, syntheticException, {
12
- attachStacktrace: options.attachStacktrace,
13
- });
109
+ var event = eventFromUnknownInput(exception, syntheticException, attachStacktrace);
14
110
  addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }
15
111
  event.level = Severity.Error;
16
112
  if (hint && hint.event_id) {
@@ -22,12 +118,10 @@ export function eventFromException(options, exception, hint) {
22
118
  * Builds and Event from a Message
23
119
  * @hidden
24
120
  */
25
- export function eventFromMessage(options, message, level, hint) {
121
+ export function eventFromMessage(message, level, hint, attachStacktrace) {
26
122
  if (level === void 0) { level = Severity.Info; }
27
123
  var syntheticException = (hint && hint.syntheticException) || undefined;
28
- var event = eventFromString(message, syntheticException, {
29
- attachStacktrace: options.attachStacktrace,
30
- });
124
+ var event = eventFromString(message, syntheticException, attachStacktrace);
31
125
  event.level = level;
32
126
  if (hint && hint.event_id) {
33
127
  event.event_id = hint.event_id;
@@ -37,8 +131,7 @@ export function eventFromMessage(options, message, level, hint) {
37
131
  /**
38
132
  * @hidden
39
133
  */
40
- export function eventFromUnknownInput(exception, syntheticException, options) {
41
- if (options === void 0) { options = {}; }
134
+ export function eventFromUnknownInput(exception, syntheticException, attachStacktrace, isUnhandledRejection) {
42
135
  var event;
43
136
  if (isErrorEvent(exception) && exception.error) {
44
137
  // If it is an ErrorEvent with `error` property, extract it to get actual Error
@@ -60,7 +153,7 @@ export function eventFromUnknownInput(exception, syntheticException, options) {
60
153
  else {
61
154
  var name_1 = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');
62
155
  var message = domException.message ? name_1 + ": " + domException.message : name_1;
63
- event = eventFromString(message, syntheticException, options);
156
+ event = eventFromString(message, syntheticException, attachStacktrace);
64
157
  addExceptionTypeValue(event, message);
65
158
  }
66
159
  if ('code' in domException) {
@@ -77,7 +170,7 @@ export function eventFromUnknownInput(exception, syntheticException, options) {
77
170
  // it manually. This will allow us to group events based on top-level keys which is much better than creating a new
78
171
  // group on any key/value change.
79
172
  var objectException = exception;
80
- event = eventFromPlainObject(objectException, syntheticException, options.isRejection);
173
+ event = eventFromPlainObject(objectException, syntheticException, isUnhandledRejection);
81
174
  addExceptionMechanism(event, {
82
175
  synthetic: true,
83
176
  });
@@ -92,7 +185,7 @@ export function eventFromUnknownInput(exception, syntheticException, options) {
92
185
  // - a plain Object
93
186
  //
94
187
  // So bail out and capture it as a simple message:
95
- event = eventFromString(exception, syntheticException, options);
188
+ event = eventFromString(exception, syntheticException, attachStacktrace);
96
189
  addExceptionTypeValue(event, "" + exception, undefined);
97
190
  addExceptionMechanism(event, {
98
191
  synthetic: true,
@@ -102,15 +195,14 @@ export function eventFromUnknownInput(exception, syntheticException, options) {
102
195
  /**
103
196
  * @hidden
104
197
  */
105
- export function eventFromString(input, syntheticException, options) {
106
- if (options === void 0) { options = {}; }
198
+ export function eventFromString(input, syntheticException, attachStacktrace) {
107
199
  var event = {
108
200
  message: input,
109
201
  };
110
- if (options.attachStacktrace && syntheticException) {
111
- var frames_1 = parseStackFrames(syntheticException);
112
- if (frames_1.length) {
113
- event.stacktrace = { frames: frames_1 };
202
+ if (attachStacktrace && syntheticException) {
203
+ var frames_2 = parseStackFrames(syntheticException);
204
+ if (frames_2.length) {
205
+ event.stacktrace = { frames: frames_2 };
114
206
  }
115
207
  }
116
208
  return event;
@@ -1 +1 @@
1
- {"version":3,"file":"eventbuilder.js","sourceRoot":"","sources":["../src/eventbuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { Event, EventHint, Options, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport { eventFromError, eventFromPlainObject, parseStackFrames } from './parsers';\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(options: Options, exception: unknown, hint?: EventHint): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n options: Options,\n message: string,\n level: Severity = Severity.Info,\n hint?: EventHint,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(message, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n exception: unknown,\n syntheticException?: Error,\n options: {\n isRejection?: boolean;\n attachStacktrace?: boolean;\n } = {},\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(message, syntheticException, options);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception as Error)) {\n // we have a real Error object, do nothing\n return eventFromError(exception as Error);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record<string, unknown>;\n event = eventFromPlainObject(objectException, syntheticException, options.isRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception as string, syntheticException, options);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n input: string,\n syntheticException?: Error,\n options: {\n attachStacktrace?: boolean;\n } = {},\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (options.attachStacktrace && syntheticException) {\n const frames = parseStackFrames(syntheticException);\n if (frames.length) {\n event.stacktrace = { frames };\n }\n }\n\n return event;\n}\n"]}
1
+ {"version":3,"file":"eventbuilder.js","sourceRoot":"","sources":["../../src/eventbuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { Event, EventHint, Exception, Severity, StackFrame } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n createStackParser,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport {\n chromeStackParser,\n geckoStackParser,\n opera10StackParser,\n opera11StackParser,\n winjsStackParser,\n} from './stack-parsers';\n\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromError(ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n exception: Record<string, unknown>,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(syntheticException);\n if (frames.length) {\n event.stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(ex: Error & { framesToPop?: number; stacktrace?: string }): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return createStackParser(\n opera10StackParser,\n opera11StackParser,\n chromeStackParser,\n winjsStackParser,\n geckoStackParser,\n )(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n message: string,\n level: Severity = Severity.Info,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception as Error)) {\n // we have a real Error object, do nothing\n return eventFromError(exception as Error);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record<string, unknown>;\n event = eventFromPlainObject(objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(input: string, syntheticException?: Error, attachStacktrace?: boolean): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(syntheticException);\n if (frames.length) {\n event.stacktrace = { frames };\n }\n }\n\n return event;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,EACV,MAAM,EACN,IAAI,GACL,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,GAAG,EACH,QAAQ,EACR,KAAK,EACL,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACxH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,EACV,MAAM,EACN,IAAI,GACL,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,GAAG,EACH,QAAQ,EACR,KAAK,EACL,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACxH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,QAAQ,GAKT,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,GAAG,EACH,QAAQ,EACR,KAAK,EACL,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,GACV,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAuB,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACxH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC","sourcesContent":["export {\n Breadcrumb,\n BreadcrumbHint,\n Request,\n SdkInfo,\n Event,\n EventHint,\n EventStatus,\n Exception,\n Response,\n Severity,\n StackFrame,\n Stacktrace,\n Thread,\n User,\n} from '@sentry/types';\n\nexport { SeverityLevel } from '@sentry/utils';\n\nexport {\n addGlobalEventProcessor,\n addBreadcrumb,\n captureException,\n captureEvent,\n captureMessage,\n configureScope,\n getHubFromCarrier,\n getCurrentHub,\n Hub,\n makeMain,\n Scope,\n Session,\n startTransaction,\n SDK_VERSION,\n setContext,\n setExtra,\n setExtras,\n setTag,\n setTags,\n setUser,\n withScope,\n} from '@sentry/core';\n\nexport { BrowserOptions } from './backend';\nexport { BrowserClient } from './client';\nexport { injectReportDialog, ReportDialogOptions } from './helpers';\nexport { eventFromException, eventFromMessage } from './eventbuilder';\nexport { defaultIntegrations, forceLoad, init, lastEventId, onLoad, showReportDialog, flush, close, wrap } from './sdk';\nexport { SDK_NAME } from './version';\n"]}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,QAAQ,GAKT,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,GAAG,EACH,QAAQ,EACR,KAAK,EACL,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,GACV,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAuB,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACxH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC","sourcesContent":["export {\n Breadcrumb,\n BreadcrumbHint,\n Request,\n SdkInfo,\n Event,\n EventHint,\n EventStatus,\n Exception,\n Response,\n Severity,\n StackFrame,\n Stacktrace,\n Thread,\n User,\n} from '@sentry/types';\n\nexport { SeverityLevel } from '@sentry/utils';\n\nexport {\n addGlobalEventProcessor,\n addBreadcrumb,\n captureException,\n captureEvent,\n captureMessage,\n configureScope,\n getHubFromCarrier,\n getCurrentHub,\n Hub,\n makeMain,\n Scope,\n Session,\n startTransaction,\n SDK_VERSION,\n setContext,\n setExtra,\n setExtras,\n setTag,\n setTags,\n setUser,\n withScope,\n} from '@sentry/core';\n\nexport { BrowserOptions } from './backend';\nexport { BrowserClient } from './client';\nexport { injectReportDialog, ReportDialogOptions } from './helpers';\nexport { eventFromException, eventFromMessage } from './eventbuilder';\nexport { defaultIntegrations, forceLoad, init, lastEventId, onLoad, showReportDialog, flush, close, wrap } from './sdk';\nexport { SDK_NAME } from './version';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAwB,SAAS,EAAS,eAAe,EAAE,MAAM,eAAe,CAAC;AAejG;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAClB,EAAE,EAAE,eAAe,EACnB,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,SAAS,CAAC;CAClB,EACN,MAAM,CAAC,EAAE,eAAe,GAEvB,GAAG,CAyGL;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAElC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,MAAM,CAAC,IAAI,IAAI,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,IAAI,CAiC1E"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAwB,SAAS,EAAS,eAAe,EAAE,MAAM,eAAe,CAAC;AAejG;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAClB,EAAE,EAAE,eAAe,EACnB,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,SAAS,CAAC;CAClB,EACN,MAAM,CAAC,EAAE,eAAe,GAEvB,GAAG,CAyGL;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAElC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,MAAM,CAAC,IAAI,IAAI,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,IAAI,CA6B1E"}
package/esm/helpers.js CHANGED
@@ -128,15 +128,11 @@ export function injectReportDialog(options) {
128
128
  return;
129
129
  }
130
130
  if (!options.eventId) {
131
- if (isDebugBuild()) {
132
- logger.error("Missing eventId option in showReportDialog call");
133
- }
131
+ isDebugBuild() && logger.error('Missing eventId option in showReportDialog call');
134
132
  return;
135
133
  }
136
134
  if (!options.dsn) {
137
- if (isDebugBuild()) {
138
- logger.error("Missing dsn option in showReportDialog call");
139
- }
135
+ isDebugBuild() && logger.error('Missing dsn option in showReportDialog call');
140
136
  return;
141
137
  }
142
138
  var script = global.document.createElement('script');
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { captureException, getReportDialogEndpoint, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getGlobalObject,\n getOriginalFunction,\n isDebugBuild,\n logger,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nconst global = getGlobalObject<Window>();\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sentryWrapped: WrappedFunction = function (this: any): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n\n/**\n * Injects the Report Dialog script\n * @hidden\n */\nexport function injectReportDialog(options: ReportDialogOptions = {}): void {\n if (!global.document) {\n return;\n }\n\n if (!options.eventId) {\n if (isDebugBuild()) {\n logger.error(`Missing eventId option in showReportDialog call`);\n }\n return;\n }\n\n if (!options.dsn) {\n if (isDebugBuild()) {\n logger.error(`Missing dsn option in showReportDialog call`);\n }\n return;\n }\n\n const script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(options.dsn, options);\n\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n\n const injectionPoint = global.document.head || global.document.body;\n\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n }\n}\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { captureException, getReportDialogEndpoint, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getGlobalObject,\n getOriginalFunction,\n isDebugBuild,\n logger,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nconst global = getGlobalObject<Window>();\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sentryWrapped: WrappedFunction = function (this: any): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n\n/**\n * Injects the Report Dialog script\n * @hidden\n */\nexport function injectReportDialog(options: ReportDialogOptions = {}): void {\n if (!global.document) {\n return;\n }\n\n if (!options.eventId) {\n isDebugBuild() && logger.error('Missing eventId option in showReportDialog call');\n return;\n }\n\n if (!options.dsn) {\n isDebugBuild() && logger.error('Missing dsn option in showReportDialog call');\n return;\n }\n\n const script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(options.dsn, options);\n\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n\n const injectionPoint = global.document.head || global.document.body;\n\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAE1B,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhE,OAAO,KAAK,mBAAmB,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAU3C,QAAA,MAAM,YAAY;;;;;;;;;CAIjB,CAAC;AAEF,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAE1B,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhE,OAAO,KAAK,mBAAmB,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAU3C,QAAA,MAAM,YAAY;;;;;;;;;CAIjB,CAAC;AAEF,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,UAAU,EAAE,CAAC"}
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,cAAc,WAAW,CAAC;AAE1B,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,mBAAmB,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAE3C,IAAI,kBAAkB,GAAG,EAAE,CAAC;AAE5B,gGAAgG;AAChG,IAAM,OAAO,GAAG,eAAe,EAAU,CAAC;AAC1C,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE;IACjD,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;CAClD;AAED,IAAM,YAAY,kCACb,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,CACvB,CAAC;AAEF,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,UAAU,EAAE,CAAC","sourcesContent":["export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nconst _window = getGlobalObject<Window>();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...CoreIntegrations,\n ...BrowserIntegrations,\n};\n\nexport { INTEGRATIONS as Integrations, Transports };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,cAAc,WAAW,CAAC;AAE1B,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,mBAAmB,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAE3C,IAAI,kBAAkB,GAAG,EAAE,CAAC;AAE5B,gGAAgG;AAChG,IAAM,OAAO,GAAG,eAAe,EAAU,CAAC;AAC1C,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE;IACjD,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;CAClD;AAED,IAAM,YAAY,kCACb,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,CACvB,CAAC;AAEF,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,UAAU,EAAE,CAAC","sourcesContent":["export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nconst _window = getGlobalObject<Window>();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...CoreIntegrations,\n ...BrowserIntegrations,\n};\n\nexport { INTEGRATIONS as Integrations, Transports };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../src/integrations/breadcrumbs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAY,MAAM,eAAe,CAAC;AAW7D,YAAY;AACZ,UAAU,kBAAkB;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,GAAG;QAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IACzD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd;AAED;;;GAGG;AACH,qBAAa,WAAY,YAAW,WAAW;IAC7C;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAiB;IAEzC;;OAEG;IACI,IAAI,EAAE,MAAM,CAAkB;IAErC,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C;;OAEG;gBACgB,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAYxD;;OAEG;IACI,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAiB9C;;;;;;;OAOG;IACI,SAAS,IAAI,IAAI;CAiBzB"}
1
+ {"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../../src/integrations/breadcrumbs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAY,MAAM,eAAe,CAAC;AAW7D,YAAY;AACZ,UAAU,kBAAkB;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,GAAG;QAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IACzD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd;AAED;;;GAGG;AACH,qBAAa,WAAY,YAAW,WAAW;IAC7C;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAiB;IAEzC;;OAEG;IACI,IAAI,EAAE,MAAM,CAAkB;IAErC,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C;;OAEG;gBACgB,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAYxD;;OAEG;IACI,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAiB9C;;;;;;;OAOG;IACI,SAAS,IAAI,IAAI;CAiBzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumbs.js","sourceRoot":"","sources":["../../src/integrations/breadcrumbs.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Severity } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n getEventDescription,\n getGlobalObject,\n htmlTreeAsString,\n parseUrl,\n safeJoin,\n severityFromString,\n} from '@sentry/utils';\n\n/** JSDoc */\ninterface BreadcrumbsOptions {\n console: boolean;\n dom: boolean | { serializeAttribute: string | string[] };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Breadcrumbs';\n\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /** JSDoc */\n private readonly _options: BreadcrumbsOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial<BreadcrumbsOptions>) {\n this._options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Create a breadcrumb of `sentry` from the events themselves\n */\n public addSentryBreadcrumb(event: Event): void {\n if (!this._options.sentry) {\n return;\n }\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this._options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this._options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this._options.dom));\n }\n if (this._options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this._options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this._options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom: BreadcrumbsOptions['dom']): (handlerData: { [key: string]: any }) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node, keyAttrs)\n : htmlTreeAsString(handlerData.event as unknown as Node, keyAttrs);\n } catch (e) {\n target = '<unknown>';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: Severity.Error,\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n const global = getGlobalObject<Window>();\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n"]}
1
+ {"version":3,"file":"breadcrumbs.js","sourceRoot":"","sources":["../../../src/integrations/breadcrumbs.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Severity } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n getEventDescription,\n getGlobalObject,\n htmlTreeAsString,\n parseUrl,\n safeJoin,\n severityFromString,\n} from '@sentry/utils';\n\n/** JSDoc */\ninterface BreadcrumbsOptions {\n console: boolean;\n dom: boolean | { serializeAttribute: string | string[] };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Breadcrumbs';\n\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /** JSDoc */\n private readonly _options: BreadcrumbsOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial<BreadcrumbsOptions>) {\n this._options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Create a breadcrumb of `sentry` from the events themselves\n */\n public addSentryBreadcrumb(event: Event): void {\n if (!this._options.sentry) {\n return;\n }\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this._options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this._options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this._options.dom));\n }\n if (this._options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this._options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this._options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom: BreadcrumbsOptions['dom']): (handlerData: { [key: string]: any }) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node, keyAttrs)\n : htmlTreeAsString(handlerData.event as unknown as Node, keyAttrs);\n } catch (e) {\n target = '<unknown>';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: Severity.Error,\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n const global = getGlobalObject<Window>();\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"dedupe.d.ts","sourceRoot":"","sources":["../../src/integrations/dedupe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,cAAc,EAAa,GAAG,EAAE,WAAW,EAAc,MAAM,eAAe,CAAC;AAG/F,2BAA2B;AAC3B,qBAAa,MAAO,YAAW,WAAW;IACxC;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAY;IAEpC;;OAEG;IACI,IAAI,EAAE,MAAM,CAAa;IAEhC;;OAEG;IACH,OAAO,CAAC,cAAc,CAAC,CAAQ;IAE/B;;OAEG;IACI,SAAS,CAAC,uBAAuB,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,EAAE,aAAa,EAAE,MAAM,GAAG,GAAG,IAAI;CAmB9G"}
1
+ {"version":3,"file":"dedupe.d.ts","sourceRoot":"","sources":["../../../src/integrations/dedupe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,cAAc,EAAa,GAAG,EAAE,WAAW,EAAc,MAAM,eAAe,CAAC;AAG/F,2BAA2B;AAC3B,qBAAa,MAAO,YAAW,WAAW;IACxC;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAY;IAEpC;;OAEG;IACI,IAAI,EAAE,MAAM,CAAa;IAEhC;;OAEG;IACH,OAAO,CAAC,cAAc,CAAC,CAAQ;IAE/B;;OAEG;IACI,SAAS,CAAC,uBAAuB,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,EAAE,aAAa,EAAE,MAAM,GAAG,GAAG,IAAI;CAmB9G"}
@@ -1,4 +1,4 @@
1
- import { logger } from '@sentry/utils';
1
+ import { isDebugBuild, logger } from '@sentry/utils';
2
2
  /** Deduplication filter */
3
3
  var Dedupe = /** @class */ (function () {
4
4
  function Dedupe() {
@@ -17,7 +17,7 @@ var Dedupe = /** @class */ (function () {
17
17
  // Juuust in case something goes wrong
18
18
  try {
19
19
  if (_shouldDropEvent(currentEvent, self._previousEvent)) {
20
- logger.warn("Event dropped due to being a duplicate of previously captured event.");
20
+ isDebugBuild() && logger.warn('Event dropped due to being a duplicate of previously captured event.');
21
21
  return null;
22
22
  }
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dedupe.js","sourceRoot":"","sources":["../../src/integrations/dedupe.ts"],"names":[],"mappings":"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","sourcesContent":["import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((currentEvent: Event) => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n logger.warn(`Event dropped due to being a duplicate of previously captured event.`);\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n } else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"dedupe.js","sourceRoot":"","sources":["../../../src/integrations/dedupe.ts"],"names":[],"mappings":"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","sourcesContent":["import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { isDebugBuild, logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((currentEvent: Event) => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n isDebugBuild() && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n } else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"globalhandlers.d.ts","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,WAAW,EAAuB,MAAM,eAAe,CAAC;AAexF,aAAK,oCAAoC,GAAG,SAAS,GAAG,sBAAsB,CAAC;AAE/E,YAAY;AACZ,aAAK,0BAA0B,GAAG,MAAM,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;AAExF,sBAAsB;AACtB,qBAAa,cAAe,YAAW,WAAW;IAChD;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAoB;IAE5C;;OAEG;IACI,IAAI,EAAE,MAAM,CAAqB;IAExC,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD;;;OAGG;IACH,OAAO,CAAC,YAAY,CAGlB;IAEF,YAAY;gBACO,OAAO,CAAC,EAAE,0BAA0B;IAOvD;;OAEG;IACI,SAAS,IAAI,IAAI;CAgBzB"}
1
+ {"version":3,"file":"globalhandlers.d.ts","sourceRoot":"","sources":["../../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,WAAW,EAAuB,MAAM,eAAe,CAAC;AAexF,aAAK,oCAAoC,GAAG,SAAS,GAAG,sBAAsB,CAAC;AAE/E,YAAY;AACZ,aAAK,0BAA0B,GAAG,MAAM,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;AAExF,sBAAsB;AACtB,qBAAa,cAAe,YAAW,WAAW;IAChD;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAoB;IAE5C;;OAEG;IACI,IAAI,EAAE,MAAM,CAAqB;IAExC,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD;;;OAGG;IACH,OAAO,CAAC,YAAY,CAGlB;IAEF,YAAY;gBACO,OAAO,CAAC,EAAE,0BAA0B;IAOvD;;OAEG;IACI,SAAS,IAAI,IAAI;CAgBzB"}
@@ -63,10 +63,7 @@ function _installGlobalOnErrorHandler() {
63
63
  }
64
64
  var event = error === undefined && isString(msg)
65
65
  ? _eventFromIncompleteOnError(msg, url, line, column)
66
- : _enhanceEventWithInitialFrame(eventFromUnknownInput(error || msg, undefined, {
67
- attachStacktrace: attachStacktrace,
68
- isRejection: false,
69
- }), url, line, column);
66
+ : _enhanceEventWithInitialFrame(eventFromUnknownInput(error || msg, undefined, attachStacktrace, false), url, line, column);
70
67
  event.level = Severity.Error;
71
68
  addMechanismAndCapture(hub, error, event, 'onerror');
72
69
  });
@@ -105,10 +102,7 @@ function _installGlobalOnUnhandledRejectionHandler() {
105
102
  }
106
103
  var event = isPrimitive(error)
107
104
  ? _eventFromRejectionWithPrimitive(error)
108
- : eventFromUnknownInput(error, undefined, {
109
- attachStacktrace: attachStacktrace,
110
- isRejection: true,
111
- });
105
+ : eventFromUnknownInput(error, undefined, attachStacktrace, true);
112
106
  event.level = Severity.Error;
113
107
  addMechanismAndCapture(hub, error, event, 'onunhandledrejection');
114
108
  return;
@@ -188,9 +182,7 @@ function _enhanceEventWithInitialFrame(event, url, line, column) {
188
182
  return event;
189
183
  }
190
184
  function globalHandlerLog(type) {
191
- if (isDebugBuild()) {
192
- logger.log("Global Handler attached: " + type);
193
- }
185
+ isDebugBuild() && logger.log("Global Handler attached: " + type);
194
186
  }
195
187
  function addMechanismAndCapture(hub, error, event, type) {
196
188
  addExceptionMechanism(event, {