@sentry/browser 7.0.0-beta.0 → 7.0.0-rc.0

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 (190) hide show
  1. package/README.md +2 -3
  2. package/cjs/client.js +125 -102
  3. package/cjs/client.js.map +1 -1
  4. package/cjs/eventbuilder.js +225 -165
  5. package/cjs/eventbuilder.js.map +1 -1
  6. package/cjs/exports.js +55 -59
  7. package/cjs/exports.js.map +1 -1
  8. package/cjs/flags.js +7 -3
  9. package/cjs/flags.js.map +1 -1
  10. package/cjs/helpers.js +125 -97
  11. package/cjs/helpers.js.map +1 -1
  12. package/cjs/index.js +77 -10
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/integrations/breadcrumbs.js +222 -174
  15. package/cjs/integrations/breadcrumbs.js.map +1 -1
  16. package/cjs/integrations/dedupe.js +184 -142
  17. package/cjs/integrations/dedupe.js.map +1 -1
  18. package/cjs/integrations/globalhandlers.js +211 -170
  19. package/cjs/integrations/globalhandlers.js.map +1 -1
  20. package/cjs/integrations/httpcontext.js +51 -0
  21. package/cjs/integrations/httpcontext.js.map +1 -0
  22. package/cjs/integrations/index.js +18 -14
  23. package/cjs/integrations/index.js.map +1 -1
  24. package/cjs/integrations/linkederrors.js +81 -50
  25. package/cjs/integrations/linkederrors.js.map +1 -1
  26. package/cjs/integrations/trycatch.js +252 -208
  27. package/cjs/integrations/trycatch.js.map +1 -1
  28. package/cjs/sdk.js +166 -125
  29. package/cjs/sdk.js.map +1 -1
  30. package/cjs/stack-parsers.js +143 -93
  31. package/cjs/stack-parsers.js.map +1 -1
  32. package/cjs/transports/fetch.js +30 -15
  33. package/cjs/transports/fetch.js.map +1 -1
  34. package/cjs/transports/index.js +10 -6
  35. package/cjs/transports/index.js.map +1 -1
  36. package/cjs/transports/utils.js +56 -52
  37. package/cjs/transports/utils.js.map +1 -1
  38. package/cjs/transports/xhr.js +40 -30
  39. package/cjs/transports/xhr.js.map +1 -1
  40. package/esm/client.js +124 -101
  41. package/esm/client.js.map +1 -1
  42. package/esm/eventbuilder.js +218 -158
  43. package/esm/eventbuilder.js.map +1 -1
  44. package/esm/exports.js +12 -8
  45. package/esm/exports.js.map +1 -1
  46. package/esm/flags.js +5 -2
  47. package/esm/flags.js.map +1 -1
  48. package/esm/helpers.js +124 -96
  49. package/esm/helpers.js.map +1 -1
  50. package/esm/index.js +27 -7
  51. package/esm/index.js.map +1 -1
  52. package/esm/integrations/breadcrumbs.js +218 -171
  53. package/esm/integrations/breadcrumbs.js.map +1 -1
  54. package/esm/integrations/dedupe.js +181 -139
  55. package/esm/integrations/dedupe.js.map +1 -1
  56. package/esm/integrations/globalhandlers.js +208 -167
  57. package/esm/integrations/globalhandlers.js.map +1 -1
  58. package/esm/integrations/httpcontext.js +49 -0
  59. package/esm/integrations/httpcontext.js.map +1 -0
  60. package/esm/integrations/index.js +7 -7
  61. package/esm/integrations/index.js.map +1 -1
  62. package/esm/integrations/linkederrors.js +77 -46
  63. package/esm/integrations/linkederrors.js.map +1 -1
  64. package/esm/integrations/trycatch.js +249 -205
  65. package/esm/integrations/trycatch.js.map +1 -1
  66. package/esm/sdk.js +163 -123
  67. package/esm/sdk.js.map +1 -1
  68. package/esm/stack-parsers.js +134 -91
  69. package/esm/stack-parsers.js.map +1 -1
  70. package/esm/transports/fetch.js +28 -13
  71. package/esm/transports/fetch.js.map +1 -1
  72. package/esm/transports/index.js +3 -3
  73. package/esm/transports/index.js.map +1 -1
  74. package/esm/transports/utils.js +55 -51
  75. package/esm/transports/utils.js.map +1 -1
  76. package/esm/transports/xhr.js +38 -28
  77. package/esm/transports/xhr.js.map +1 -1
  78. package/package.json +4 -4
  79. package/types/client.d.ts +5 -4
  80. package/types/client.d.ts.map +1 -1
  81. package/types/exports.d.ts +3 -4
  82. package/types/exports.d.ts.map +1 -1
  83. package/types/helpers.d.ts +2 -1
  84. package/types/helpers.d.ts.map +1 -1
  85. package/types/index.d.ts +1 -1
  86. package/types/integrations/{useragent.d.ts → httpcontext.d.ts} +3 -3
  87. package/types/integrations/httpcontext.d.ts.map +1 -0
  88. package/types/integrations/index.d.ts +1 -1
  89. package/types/integrations/index.d.ts.map +1 -1
  90. package/types/sdk.d.ts +2 -2
  91. package/types/sdk.d.ts.map +1 -1
  92. package/types/transports/fetch.d.ts +3 -5
  93. package/types/transports/fetch.d.ts.map +1 -1
  94. package/types/transports/types.d.ts +10 -0
  95. package/types/transports/types.d.ts.map +1 -0
  96. package/types/transports/utils.d.ts +1 -1
  97. package/types/transports/utils.d.ts.map +1 -1
  98. package/types/transports/xhr.d.ts +3 -7
  99. package/types/transports/xhr.d.ts.map +1 -1
  100. package/cjs/client.d.ts +0 -63
  101. package/cjs/client.d.ts.map +0 -1
  102. package/cjs/eventbuilder.d.ts +0 -37
  103. package/cjs/eventbuilder.d.ts.map +0 -1
  104. package/cjs/exports.d.ts +0 -11
  105. package/cjs/exports.d.ts.map +0 -1
  106. package/cjs/flags.d.ts +0 -3
  107. package/cjs/flags.d.ts.map +0 -1
  108. package/cjs/helpers.d.ts +0 -47
  109. package/cjs/helpers.d.ts.map +0 -1
  110. package/cjs/index.d.ts +0 -15
  111. package/cjs/index.d.ts.map +0 -1
  112. package/cjs/integrations/breadcrumbs.d.ts +0 -46
  113. package/cjs/integrations/breadcrumbs.d.ts.map +0 -1
  114. package/cjs/integrations/dedupe.d.ts +0 -21
  115. package/cjs/integrations/dedupe.d.ts.map +0 -1
  116. package/cjs/integrations/globalhandlers.d.ts +0 -30
  117. package/cjs/integrations/globalhandlers.d.ts.map +0 -1
  118. package/cjs/integrations/index.d.ts +0 -7
  119. package/cjs/integrations/index.d.ts.map +0 -1
  120. package/cjs/integrations/linkederrors.d.ts +0 -42
  121. package/cjs/integrations/linkederrors.d.ts.map +0 -1
  122. package/cjs/integrations/trycatch.d.ts +0 -33
  123. package/cjs/integrations/trycatch.d.ts.map +0 -1
  124. package/cjs/integrations/useragent.d.ts +0 -17
  125. package/cjs/integrations/useragent.d.ts.map +0 -1
  126. package/cjs/integrations/useragent.js +0 -40
  127. package/cjs/integrations/useragent.js.map +0 -1
  128. package/cjs/sdk.d.ts +0 -112
  129. package/cjs/sdk.d.ts.map +0 -1
  130. package/cjs/stack-parsers.d.ts +0 -9
  131. package/cjs/stack-parsers.d.ts.map +0 -1
  132. package/cjs/transports/fetch.d.ts +0 -10
  133. package/cjs/transports/fetch.d.ts.map +0 -1
  134. package/cjs/transports/index.d.ts +0 -3
  135. package/cjs/transports/index.d.ts.map +0 -1
  136. package/cjs/transports/utils.d.ts +0 -48
  137. package/cjs/transports/utils.d.ts.map +0 -1
  138. package/cjs/transports/xhr.d.ts +0 -11
  139. package/cjs/transports/xhr.d.ts.map +0 -1
  140. package/cjs/version.d.ts +0 -2
  141. package/cjs/version.d.ts.map +0 -1
  142. package/cjs/version.js +0 -4
  143. package/cjs/version.js.map +0 -1
  144. package/esm/client.d.ts +0 -63
  145. package/esm/client.d.ts.map +0 -1
  146. package/esm/eventbuilder.d.ts +0 -37
  147. package/esm/eventbuilder.d.ts.map +0 -1
  148. package/esm/exports.d.ts +0 -11
  149. package/esm/exports.d.ts.map +0 -1
  150. package/esm/flags.d.ts +0 -3
  151. package/esm/flags.d.ts.map +0 -1
  152. package/esm/helpers.d.ts +0 -47
  153. package/esm/helpers.d.ts.map +0 -1
  154. package/esm/index.d.ts +0 -15
  155. package/esm/index.d.ts.map +0 -1
  156. package/esm/integrations/breadcrumbs.d.ts +0 -46
  157. package/esm/integrations/breadcrumbs.d.ts.map +0 -1
  158. package/esm/integrations/dedupe.d.ts +0 -21
  159. package/esm/integrations/dedupe.d.ts.map +0 -1
  160. package/esm/integrations/globalhandlers.d.ts +0 -30
  161. package/esm/integrations/globalhandlers.d.ts.map +0 -1
  162. package/esm/integrations/index.d.ts +0 -7
  163. package/esm/integrations/index.d.ts.map +0 -1
  164. package/esm/integrations/linkederrors.d.ts +0 -42
  165. package/esm/integrations/linkederrors.d.ts.map +0 -1
  166. package/esm/integrations/trycatch.d.ts +0 -33
  167. package/esm/integrations/trycatch.d.ts.map +0 -1
  168. package/esm/integrations/useragent.d.ts +0 -17
  169. package/esm/integrations/useragent.d.ts.map +0 -1
  170. package/esm/integrations/useragent.js +0 -38
  171. package/esm/integrations/useragent.js.map +0 -1
  172. package/esm/sdk.d.ts +0 -112
  173. package/esm/sdk.d.ts.map +0 -1
  174. package/esm/stack-parsers.d.ts +0 -9
  175. package/esm/stack-parsers.d.ts.map +0 -1
  176. package/esm/transports/fetch.d.ts +0 -10
  177. package/esm/transports/fetch.d.ts.map +0 -1
  178. package/esm/transports/index.d.ts +0 -3
  179. package/esm/transports/index.d.ts.map +0 -1
  180. package/esm/transports/utils.d.ts +0 -48
  181. package/esm/transports/utils.d.ts.map +0 -1
  182. package/esm/transports/xhr.d.ts +0 -11
  183. package/esm/transports/xhr.d.ts.map +0 -1
  184. package/esm/version.d.ts +0 -2
  185. package/esm/version.d.ts.map +0 -1
  186. package/esm/version.js +0 -3
  187. package/esm/version.js.map +0 -1
  188. package/types/integrations/useragent.d.ts.map +0 -1
  189. package/types/version.d.ts +0 -2
  190. package/types/version.d.ts.map +0 -1
package/esm/helpers.js CHANGED
@@ -1,118 +1,146 @@
1
- import { captureException, withScope } from '@sentry/core';
2
- import { addExceptionMechanism, addExceptionTypeValue, addNonEnumerableProperty, getOriginalFunction, markFunctionWrapped, } from '@sentry/utils';
1
+ import { withScope, captureException } from '@sentry/core';
2
+ import { getOriginalFunction, addExceptionTypeValue, addExceptionMechanism, markFunctionWrapped, addNonEnumerableProperty } from '@sentry/utils';
3
+
3
4
  let ignoreOnError = 0;
5
+
4
6
  /**
5
7
  * @hidden
6
8
  */
7
- export function shouldIgnoreOnError() {
8
- return ignoreOnError > 0;
9
+ function shouldIgnoreOnError() {
10
+ return ignoreOnError > 0;
9
11
  }
12
+
10
13
  /**
11
14
  * @hidden
12
15
  */
13
- export function ignoreNextOnError() {
14
- // onerror should trigger before setTimeout
15
- ignoreOnError += 1;
16
- setTimeout(() => {
17
- ignoreOnError -= 1;
18
- });
16
+ function ignoreNextOnError() {
17
+ // onerror should trigger before setTimeout
18
+ ignoreOnError += 1;
19
+ setTimeout(() => {
20
+ ignoreOnError -= 1;
21
+ });
19
22
  }
23
+
20
24
  /**
21
25
  * Instruments the given function and sends an event to Sentry every time the
22
26
  * function throws an exception.
23
27
  *
24
- * @param fn A function to wrap.
28
+ * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always
29
+ * has a correct `this` context.
25
30
  * @returns The wrapped function.
26
31
  * @hidden
27
32
  */
28
- export function wrap(fn, options = {}, before) {
29
- // for future readers what this does is wrap a function and then create
30
- // a bi-directional wrapping between them.
31
- //
32
- // example: wrapped = wrap(original);
33
- // original.__sentry_wrapped__ -> wrapped
34
- // wrapped.__sentry_original__ -> original
35
- if (typeof fn !== 'function') {
36
- return fn;
33
+ function wrap(
34
+ fn,
35
+ options
36
+
37
+ = {},
38
+ before,
39
+ ) {
40
+ // for future readers what this does is wrap a function and then create
41
+ // a bi-directional wrapping between them.
42
+ //
43
+ // example: wrapped = wrap(original);
44
+ // original.__sentry_wrapped__ -> wrapped
45
+ // wrapped.__sentry_original__ -> original
46
+
47
+ if (typeof fn !== 'function') {
48
+ return fn;
49
+ }
50
+
51
+ try {
52
+ // if we're dealing with a function that was previously wrapped, return
53
+ // the original wrapper.
54
+ var wrapper = fn.__sentry_wrapped__;
55
+ if (wrapper) {
56
+ return wrapper;
37
57
  }
38
- try {
39
- // if we're dealing with a function that was previously wrapped, return
40
- // the original wrapper.
41
- const wrapper = fn.__sentry_wrapped__;
42
- if (wrapper) {
43
- return wrapper;
44
- }
45
- // We don't wanna wrap it twice
46
- if (getOriginalFunction(fn)) {
47
- return fn;
48
- }
49
- }
50
- catch (e) {
51
- // Just accessing custom props in some Selenium environments
52
- // can cause a "Permission denied" exception (see raven-js#495).
53
- // Bail on wrapping and return the function as-is (defers to window.onerror).
54
- return fn;
58
+
59
+ // We don't wanna wrap it twice
60
+ if (getOriginalFunction(fn)) {
61
+ return fn;
55
62
  }
56
- /* eslint-disable prefer-rest-params */
57
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
- const sentryWrapped = function () {
59
- const args = Array.prototype.slice.call(arguments);
60
- try {
61
- if (before && typeof before === 'function') {
62
- before.apply(this, arguments);
63
- }
64
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access
65
- const wrappedArguments = args.map((arg) => wrap(arg, options));
66
- // Attempt to invoke user-land function
67
- // NOTE: If you are a Sentry user, and you are seeing this stack frame, it
68
- // means the sentry.javascript SDK caught an error invoking your application code. This
69
- // is expected behavior and NOT indicative of a bug with sentry.javascript.
70
- return fn.apply(this, wrappedArguments);
71
- }
72
- catch (ex) {
73
- ignoreNextOnError();
74
- withScope((scope) => {
75
- scope.addEventProcessor((event) => {
76
- if (options.mechanism) {
77
- addExceptionTypeValue(event, undefined, undefined);
78
- addExceptionMechanism(event, options.mechanism);
79
- }
80
- event.extra = Object.assign(Object.assign({}, event.extra), { arguments: args });
81
- return event;
82
- });
83
- captureException(ex);
84
- });
85
- throw ex;
86
- }
87
- };
88
- /* eslint-enable prefer-rest-params */
89
- // Accessing some objects may throw
90
- // ref: https://github.com/getsentry/sentry-javascript/issues/1168
63
+ } catch (e) {
64
+ // Just accessing custom props in some Selenium environments
65
+ // can cause a "Permission denied" exception (see raven-js#495).
66
+ // Bail on wrapping and return the function as-is (defers to window.onerror).
67
+ return fn;
68
+ }
69
+
70
+ // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`
71
+ var sentryWrapped = function () {
72
+ var args = Array.prototype.slice.call(arguments);
73
+
91
74
  try {
92
- for (const property in fn) {
93
- if (Object.prototype.hasOwnProperty.call(fn, property)) {
94
- sentryWrapped[property] = fn[property];
95
- }
96
- }
75
+ if (before && typeof before === 'function') {
76
+ before.apply(this, arguments);
77
+ }
78
+
79
+ var wrappedArguments = args.map((arg) => wrap(arg, options));
80
+
81
+ // Attempt to invoke user-land function
82
+ // NOTE: If you are a Sentry user, and you are seeing this stack frame, it
83
+ // means the sentry.javascript SDK caught an error invoking your application code. This
84
+ // is expected behavior and NOT indicative of a bug with sentry.javascript.
85
+ return fn.apply(this, wrappedArguments);
86
+ } catch (ex) {
87
+ ignoreNextOnError();
88
+
89
+ withScope((scope) => {
90
+ scope.addEventProcessor((event) => {
91
+ if (options.mechanism) {
92
+ addExceptionTypeValue(event, undefined, undefined);
93
+ addExceptionMechanism(event, options.mechanism);
94
+ }
95
+
96
+ event.extra = {
97
+ ...event.extra,
98
+ arguments: args,
99
+ };
100
+
101
+ return event;
102
+ });
103
+
104
+ captureException(ex);
105
+ });
106
+
107
+ throw ex;
97
108
  }
98
- catch (_oO) { } // eslint-disable-line no-empty
99
- // Signal that this function has been wrapped/filled already
100
- // for both debugging and to prevent it to being wrapped/filled twice
101
- markFunctionWrapped(sentryWrapped, fn);
102
- addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);
103
- // Restore original function name (not all browsers allow that)
104
- try {
105
- const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');
106
- if (descriptor.configurable) {
107
- Object.defineProperty(sentryWrapped, 'name', {
108
- get() {
109
- return fn.name;
110
- },
111
- });
112
- }
113
- // eslint-disable-next-line no-empty
109
+ };
110
+
111
+ // Accessing some objects may throw
112
+ // ref: https://github.com/getsentry/sentry-javascript/issues/1168
113
+ try {
114
+ for (var property in fn) {
115
+ if (Object.prototype.hasOwnProperty.call(fn, property)) {
116
+ sentryWrapped[property] = fn[property];
117
+ }
114
118
  }
115
- catch (_oO) { }
116
- return sentryWrapped;
119
+ } catch (_oO) {}
120
+ // Signal that this function has been wrapped/filled already
121
+ // for both debugging and to prevent it to being wrapped/filled twice
122
+ markFunctionWrapped(sentryWrapped, fn);
123
+
124
+ addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);
125
+
126
+ // Restore original function name (not all browsers allow that)
127
+ try {
128
+ var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') ;
129
+ if (descriptor.configurable) {
130
+ Object.defineProperty(sentryWrapped, 'name', {
131
+ get() {
132
+ return fn.name;
133
+ },
134
+ });
135
+ }
136
+ } catch (_oO) {}
137
+
138
+ return sentryWrapped;
117
139
  }
118
- //# sourceMappingURL=helpers.js.map
140
+
141
+ /**
142
+ * All properties the report dialog supports
143
+ */
144
+
145
+ export { ignoreNextOnError, shouldIgnoreOnError, wrap };
146
+ //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { captureException, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getOriginalFunction,\n markFunctionWrapped,\n} from '@sentry/utils';\n\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"]}
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/helpers.ts"],"sourcesContent":["import { captureException, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getOriginalFunction,\n markFunctionWrapped,\n} from '@sentry/utils';\n\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. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\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 // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped: WrappedFunction = function (this: unknown): 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"],"names":[],"mappings":";;;AAUA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;"}
package/esm/index.js CHANGED
@@ -1,13 +1,33 @@
1
- export * from './exports';
2
- import { Integrations as CoreIntegrations } from '@sentry/core';
1
+ import './exports.js';
2
+ import { Integrations } from '@sentry/core';
3
+ export { FunctionToString, Hub, InboundFilters, SDK_VERSION, Scope, addBreadcrumb, addGlobalEventProcessor, captureEvent, captureException, captureMessage, configureScope, createTransport, getCurrentHub, getHubFromCarrier, makeMain, setContext, setExtra, setExtras, setTag, setTags, setUser, startTransaction, withScope } from '@sentry/core';
3
4
  import { getGlobalObject } from '@sentry/utils';
4
- import * as BrowserIntegrations from './integrations';
5
+ import * as index from './integrations/index.js';
6
+ export { BrowserClient } from './client.js';
7
+ export { makeFetchTransport } from './transports/fetch.js';
8
+ export { makeXHRTransport } from './transports/xhr.js';
9
+ export { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser } from './stack-parsers.js';
10
+ export { close, defaultIntegrations, flush, forceLoad, init, lastEventId, onLoad, showReportDialog, wrap } from './sdk.js';
11
+ export { GlobalHandlers } from './integrations/globalhandlers.js';
12
+ export { TryCatch } from './integrations/trycatch.js';
13
+ export { Breadcrumbs } from './integrations/breadcrumbs.js';
14
+ export { LinkedErrors } from './integrations/linkederrors.js';
15
+ export { HttpContext } from './integrations/httpcontext.js';
16
+ export { Dedupe } from './integrations/dedupe.js';
17
+
5
18
  let windowIntegrations = {};
19
+
6
20
  // This block is needed to add compatibility with the integrations packages when used with a CDN
7
- const _window = getGlobalObject();
21
+ var _window = getGlobalObject();
8
22
  if (_window.Sentry && _window.Sentry.Integrations) {
9
- windowIntegrations = _window.Sentry.Integrations;
23
+ windowIntegrations = _window.Sentry.Integrations;
10
24
  }
11
- const INTEGRATIONS = Object.assign(Object.assign(Object.assign({}, windowIntegrations), CoreIntegrations), BrowserIntegrations);
25
+
26
+ var INTEGRATIONS = {
27
+ ...windowIntegrations,
28
+ ...Integrations,
29
+ ...index,
30
+ };
31
+
12
32
  export { INTEGRATIONS as Integrations };
13
- //# sourceMappingURL=index.js.map
33
+ //# sourceMappingURL=index.js.map
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;AAEtD,IAAI,kBAAkB,GAAG,EAAE,CAAC;AAE5B,gGAAgG;AAChG,MAAM,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,MAAM,YAAY,iDACb,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,CACvB,CAAC;AAEF,OAAO,EAAE,YAAY,IAAI,YAAY,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';\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 };\n"]}
1
+ {"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":["export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport * as BrowserIntegrations from './integrations';\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 };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;"}