@sentry/browser 7.0.0-alpha.1 → 7.0.0-beta.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 (185) hide show
  1. package/cjs/client.d.ts +23 -18
  2. package/cjs/client.d.ts.map +1 -1
  3. package/cjs/client.js +75 -51
  4. package/cjs/client.js.map +1 -1
  5. package/cjs/eventbuilder.d.ts +1 -1
  6. package/cjs/eventbuilder.js +31 -33
  7. package/cjs/eventbuilder.js.map +1 -1
  8. package/cjs/exports.d.ts +5 -4
  9. package/cjs/exports.d.ts.map +1 -1
  10. package/cjs/exports.js +20 -8
  11. package/cjs/exports.js.map +1 -1
  12. package/cjs/helpers.d.ts +0 -5
  13. package/cjs/helpers.d.ts.map +1 -1
  14. package/cjs/helpers.js +15 -49
  15. package/cjs/helpers.js.map +1 -1
  16. package/cjs/index.d.ts +1 -2
  17. package/cjs/index.d.ts.map +1 -1
  18. package/cjs/index.js +7 -9
  19. package/cjs/index.js.map +1 -1
  20. package/cjs/integrations/breadcrumbs.d.ts +6 -7
  21. package/cjs/integrations/breadcrumbs.d.ts.map +1 -1
  22. package/cjs/integrations/breadcrumbs.js +37 -54
  23. package/cjs/integrations/breadcrumbs.js.map +1 -1
  24. package/cjs/integrations/dedupe.js +25 -26
  25. package/cjs/integrations/dedupe.js.map +1 -1
  26. package/cjs/integrations/globalhandlers.d.ts.map +1 -1
  27. package/cjs/integrations/globalhandlers.js +52 -53
  28. package/cjs/integrations/globalhandlers.js.map +1 -1
  29. package/cjs/integrations/linkederrors.d.ts.map +1 -1
  30. package/cjs/integrations/linkederrors.js +26 -29
  31. package/cjs/integrations/linkederrors.js.map +1 -1
  32. package/cjs/integrations/trycatch.js +30 -40
  33. package/cjs/integrations/trycatch.js.map +1 -1
  34. package/cjs/integrations/useragent.js +19 -21
  35. package/cjs/integrations/useragent.js.map +1 -1
  36. package/cjs/sdk.d.ts +2 -2
  37. package/cjs/sdk.d.ts.map +1 -1
  38. package/cjs/sdk.js +47 -34
  39. package/cjs/sdk.js.map +1 -1
  40. package/cjs/stack-parsers.d.ts +7 -6
  41. package/cjs/stack-parsers.d.ts.map +1 -1
  42. package/cjs/stack-parsers.js +45 -45
  43. package/cjs/stack-parsers.js.map +1 -1
  44. package/cjs/transports/fetch.d.ts +7 -14
  45. package/cjs/transports/fetch.d.ts.map +1 -1
  46. package/cjs/transports/fetch.js +17 -78
  47. package/cjs/transports/fetch.js.map +1 -1
  48. package/cjs/transports/index.d.ts +2 -6
  49. package/cjs/transports/index.d.ts.map +1 -1
  50. package/cjs/transports/index.js +2 -10
  51. package/cjs/transports/index.js.map +1 -1
  52. package/cjs/transports/utils.d.ts.map +1 -1
  53. package/cjs/transports/utils.js +17 -17
  54. package/cjs/transports/utils.js.map +1 -1
  55. package/cjs/transports/xhr.d.ts +9 -9
  56. package/cjs/transports/xhr.d.ts.map +1 -1
  57. package/cjs/transports/xhr.js +39 -59
  58. package/cjs/transports/xhr.js.map +1 -1
  59. package/esm/client.d.ts +23 -18
  60. package/esm/client.d.ts.map +1 -1
  61. package/esm/client.js +73 -50
  62. package/esm/client.js.map +1 -1
  63. package/esm/eventbuilder.d.ts +1 -1
  64. package/esm/eventbuilder.js +30 -32
  65. package/esm/eventbuilder.js.map +1 -1
  66. package/esm/exports.d.ts +5 -4
  67. package/esm/exports.d.ts.map +1 -1
  68. package/esm/exports.js +4 -3
  69. package/esm/exports.js.map +1 -1
  70. package/esm/flags.js +1 -1
  71. package/esm/flags.js.map +1 -1
  72. package/esm/helpers.d.ts +0 -5
  73. package/esm/helpers.d.ts.map +1 -1
  74. package/esm/helpers.js +15 -48
  75. package/esm/helpers.js.map +1 -1
  76. package/esm/index.d.ts +1 -2
  77. package/esm/index.d.ts.map +1 -1
  78. package/esm/index.js +4 -6
  79. package/esm/index.js.map +1 -1
  80. package/esm/integrations/breadcrumbs.d.ts +6 -7
  81. package/esm/integrations/breadcrumbs.d.ts.map +1 -1
  82. package/esm/integrations/breadcrumbs.js +36 -54
  83. package/esm/integrations/breadcrumbs.js.map +1 -1
  84. package/esm/integrations/dedupe.js +23 -25
  85. package/esm/integrations/dedupe.js.map +1 -1
  86. package/esm/integrations/globalhandlers.d.ts.map +1 -1
  87. package/esm/integrations/globalhandlers.js +48 -50
  88. package/esm/integrations/globalhandlers.js.map +1 -1
  89. package/esm/integrations/linkederrors.d.ts.map +1 -1
  90. package/esm/integrations/linkederrors.js +24 -28
  91. package/esm/integrations/linkederrors.js.map +1 -1
  92. package/esm/integrations/trycatch.js +28 -39
  93. package/esm/integrations/trycatch.js.map +1 -1
  94. package/esm/integrations/useragent.js +17 -20
  95. package/esm/integrations/useragent.js.map +1 -1
  96. package/esm/sdk.d.ts +2 -2
  97. package/esm/sdk.d.ts.map +1 -1
  98. package/esm/sdk.js +44 -31
  99. package/esm/sdk.js.map +1 -1
  100. package/esm/stack-parsers.d.ts +7 -6
  101. package/esm/stack-parsers.d.ts.map +1 -1
  102. package/esm/stack-parsers.js +45 -45
  103. package/esm/stack-parsers.js.map +1 -1
  104. package/esm/transports/fetch.d.ts +7 -14
  105. package/esm/transports/fetch.d.ts.map +1 -1
  106. package/esm/transports/fetch.js +15 -77
  107. package/esm/transports/fetch.js.map +1 -1
  108. package/esm/transports/index.d.ts +2 -6
  109. package/esm/transports/index.d.ts.map +1 -1
  110. package/esm/transports/index.js +2 -6
  111. package/esm/transports/index.js.map +1 -1
  112. package/esm/transports/utils.d.ts.map +1 -1
  113. package/esm/transports/utils.js +16 -16
  114. package/esm/transports/utils.js.map +1 -1
  115. package/esm/transports/xhr.d.ts +9 -9
  116. package/esm/transports/xhr.d.ts.map +1 -1
  117. package/esm/transports/xhr.js +38 -59
  118. package/esm/transports/xhr.js.map +1 -1
  119. package/esm/version.js +1 -1
  120. package/esm/version.js.map +1 -1
  121. package/package.json +4 -4
  122. package/types/client.d.ts +23 -18
  123. package/types/client.d.ts.map +1 -1
  124. package/types/eventbuilder.d.ts +1 -1
  125. package/types/exports.d.ts +5 -4
  126. package/types/exports.d.ts.map +1 -1
  127. package/types/helpers.d.ts +0 -5
  128. package/types/helpers.d.ts.map +1 -1
  129. package/types/index.d.ts +1 -2
  130. package/types/index.d.ts.map +1 -1
  131. package/types/integrations/breadcrumbs.d.ts +6 -7
  132. package/types/integrations/breadcrumbs.d.ts.map +1 -1
  133. package/types/integrations/globalhandlers.d.ts.map +1 -1
  134. package/types/integrations/linkederrors.d.ts.map +1 -1
  135. package/types/sdk.d.ts +2 -2
  136. package/types/sdk.d.ts.map +1 -1
  137. package/types/stack-parsers.d.ts +7 -6
  138. package/types/stack-parsers.d.ts.map +1 -1
  139. package/types/transports/fetch.d.ts +7 -14
  140. package/types/transports/fetch.d.ts.map +1 -1
  141. package/types/transports/index.d.ts +2 -6
  142. package/types/transports/index.d.ts.map +1 -1
  143. package/types/transports/utils.d.ts.map +1 -1
  144. package/types/transports/xhr.d.ts +9 -9
  145. package/types/transports/xhr.d.ts.map +1 -1
  146. package/cjs/transports/base.d.ts +0 -65
  147. package/cjs/transports/base.d.ts.map +0 -1
  148. package/cjs/transports/base.js +0 -141
  149. package/cjs/transports/base.js.map +0 -1
  150. package/cjs/transports/new-fetch.d.ts +0 -10
  151. package/cjs/transports/new-fetch.d.ts.map +0 -1
  152. package/cjs/transports/new-fetch.js +0 -27
  153. package/cjs/transports/new-fetch.js.map +0 -1
  154. package/cjs/transports/new-xhr.d.ts +0 -11
  155. package/cjs/transports/new-xhr.d.ts.map +0 -1
  156. package/cjs/transports/new-xhr.js +0 -46
  157. package/cjs/transports/new-xhr.js.map +0 -1
  158. package/cjs/transports/setup.d.ts +0 -22
  159. package/cjs/transports/setup.d.ts.map +0 -1
  160. package/cjs/transports/setup.js +0 -44
  161. package/cjs/transports/setup.js.map +0 -1
  162. package/esm/transports/base.d.ts +0 -65
  163. package/esm/transports/base.d.ts.map +0 -1
  164. package/esm/transports/base.js +0 -140
  165. package/esm/transports/base.js.map +0 -1
  166. package/esm/transports/new-fetch.d.ts +0 -10
  167. package/esm/transports/new-fetch.d.ts.map +0 -1
  168. package/esm/transports/new-fetch.js +0 -25
  169. package/esm/transports/new-fetch.js.map +0 -1
  170. package/esm/transports/new-xhr.d.ts +0 -11
  171. package/esm/transports/new-xhr.d.ts.map +0 -1
  172. package/esm/transports/new-xhr.js +0 -44
  173. package/esm/transports/new-xhr.js.map +0 -1
  174. package/esm/transports/setup.d.ts +0 -22
  175. package/esm/transports/setup.d.ts.map +0 -1
  176. package/esm/transports/setup.js +0 -42
  177. package/esm/transports/setup.js.map +0 -1
  178. package/types/transports/base.d.ts +0 -65
  179. package/types/transports/base.d.ts.map +0 -1
  180. package/types/transports/new-fetch.d.ts +0 -10
  181. package/types/transports/new-fetch.d.ts.map +0 -1
  182. package/types/transports/new-xhr.d.ts +0 -11
  183. package/types/transports/new-xhr.d.ts.map +0 -1
  184. package/types/transports/setup.d.ts +0 -22
  185. package/types/transports/setup.d.ts.map +0 -1
package/cjs/client.d.ts CHANGED
@@ -1,11 +1,6 @@
1
- import { BaseClient, NewTransport, Scope } from '@sentry/core';
2
- import { Event, EventHint, Options, Severity, SeverityLevel, Transport } from '@sentry/types';
3
- import { ReportDialogOptions } from './helpers';
4
- /**
5
- * Configuration options for the Sentry Browser SDK.
6
- * @see BrowserClient for more information.
7
- */
8
- export interface BrowserOptions extends Options {
1
+ import { BaseClient, Scope } from '@sentry/core';
2
+ import { ClientOptions, Event, EventHint, Options, Severity, SeverityLevel } from '@sentry/types';
3
+ export interface BaseBrowserOptions {
9
4
  /**
10
5
  * A pattern for error URLs which should exclusively be sent to Sentry.
11
6
  * This is the opposite of {@link Options.denyUrls}.
@@ -19,25 +14,31 @@ export interface BrowserOptions extends Options {
19
14
  */
20
15
  denyUrls?: Array<string | RegExp>;
21
16
  }
17
+ /**
18
+ * Configuration options for the Sentry Browser SDK.
19
+ * @see @sentry/types Options for more information.
20
+ */
21
+ export interface BrowserOptions extends Options, BaseBrowserOptions {
22
+ }
23
+ /**
24
+ * Configuration options for the Sentry Browser SDK Client class
25
+ * @see BrowserClient for more information.
26
+ */
27
+ export interface BrowserClientOptions extends ClientOptions, BaseBrowserOptions {
28
+ }
22
29
  /**
23
30
  * The Sentry Browser SDK Client.
24
31
  *
25
32
  * @see BrowserOptions for documentation on configuration options.
26
33
  * @see SentryClient for usage documentation.
27
34
  */
28
- export declare class BrowserClient extends BaseClient<BrowserOptions> {
35
+ export declare class BrowserClient extends BaseClient<BrowserClientOptions> {
29
36
  /**
30
37
  * Creates a new Browser SDK instance.
31
38
  *
32
39
  * @param options Configuration options for this SDK.
33
40
  */
34
- constructor(options: BrowserOptions | undefined, transport: Transport, newTransport?: NewTransport);
35
- /**
36
- * Show a report dialog to the user to send feedback to a specific event.
37
- *
38
- * @param options Set individual options for the dialog
39
- */
40
- showReportDialog(options?: ReportDialogOptions): void;
41
+ constructor(options: BrowserClientOptions);
41
42
  /**
42
43
  * @inheritDoc
43
44
  */
@@ -49,10 +50,14 @@ export declare class BrowserClient extends BaseClient<BrowserOptions> {
49
50
  /**
50
51
  * @inheritDoc
51
52
  */
52
- protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike<Event | null>;
53
+ sendEvent(event: Event): void;
53
54
  /**
54
55
  * @inheritDoc
55
56
  */
56
- protected _sendEvent(event: Event): void;
57
+ protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike<Event | null>;
58
+ /**
59
+ * Sends client reports as an envelope.
60
+ */
61
+ private _flushOutcomes;
57
62
  }
58
63
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAe,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAK9F,OAAO,EAAsB,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGpE;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,OAAO;IAC7C;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAEnC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CACnC;AAED;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,UAAU,CAAC,cAAc,CAAC;IAC3D;;;;OAIG;gBACgB,OAAO,4BAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY;IAgBlG;;;;OAIG;IACI,gBAAgB,CAAC,OAAO,GAAE,mBAAwB,GAAG,IAAI;IAkBhE;;OAEG;IACI,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;IAInF;;OAEG;IACI,gBAAgB,CACrB,OAAO,EAAE,MAAM,EAEf,KAAK,GAAE,QAAQ,GAAG,aAAsB,EACxC,IAAI,CAAC,EAAE,SAAS,GACf,WAAW,CAAC,KAAK,CAAC;IAUrB;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;IAKjG;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAOzC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAwD,KAAK,EAAe,MAAM,cAAc,CAAC;AACpH,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAkBlG,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAEnC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,OAAO,EAAE,kBAAkB;CAAG;AAEtE;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa,EAAE,kBAAkB;CAAG;AAElF;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,UAAU,CAAC,oBAAoB,CAAC;IACjE;;;;OAIG;gBACgB,OAAO,EAAE,oBAAoB;IAwBhD;;OAEG;IACI,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;IAInF;;OAEG;IACI,gBAAgB,CACrB,OAAO,EAAE,MAAM,EAEf,KAAK,GAAE,QAAQ,GAAG,aAAsB,EACxC,IAAI,CAAC,EAAE,SAAS,GACf,WAAW,CAAC,KAAK,CAAC;IAIrB;;OAEG;IACI,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAgCpC;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;IAKjG;;OAEG;IACH,OAAO,CAAC,cAAc;CAwBvB"}
package/cjs/client.js CHANGED
@@ -1,27 +1,24 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
- var tslib_1 = require("tslib");
3
- var core_1 = require("@sentry/core");
4
- var utils_1 = require("@sentry/utils");
5
- var eventbuilder_1 = require("./eventbuilder");
6
- var flags_1 = require("./flags");
7
- var helpers_1 = require("./helpers");
8
- var integrations_1 = require("./integrations");
2
+ const core_1 = require("@sentry/core");
3
+ const utils_1 = require("@sentry/utils");
4
+ const eventbuilder_1 = require("./eventbuilder");
5
+ const flags_1 = require("./flags");
6
+ const breadcrumbs_1 = require("./integrations/breadcrumbs");
7
+ const utils_2 = require("./transports/utils");
8
+ const globalObject = utils_1.getGlobalObject();
9
9
  /**
10
10
  * The Sentry Browser SDK Client.
11
11
  *
12
12
  * @see BrowserOptions for documentation on configuration options.
13
13
  * @see SentryClient for usage documentation.
14
14
  */
15
- var BrowserClient = /** @class */ (function (_super) {
16
- tslib_1.__extends(BrowserClient, _super);
15
+ class BrowserClient extends core_1.BaseClient {
17
16
  /**
18
17
  * Creates a new Browser SDK instance.
19
18
  *
20
19
  * @param options Configuration options for this SDK.
21
20
  */
22
- function BrowserClient(options, transport, newTransport) {
23
- if (options === void 0) { options = {}; }
24
- var _this = this;
21
+ constructor(options) {
25
22
  options._metadata = options._metadata || {};
26
23
  options._metadata.sdk = options._metadata.sdk || {
27
24
  name: 'sentry.javascript.browser',
@@ -33,60 +30,87 @@ var BrowserClient = /** @class */ (function (_super) {
33
30
  ],
34
31
  version: core_1.SDK_VERSION,
35
32
  };
36
- _this = _super.call(this, options, transport, newTransport) || this;
37
- return _this;
33
+ super(options);
34
+ if (options.sendClientReports && globalObject.document) {
35
+ globalObject.document.addEventListener('visibilitychange', () => {
36
+ if (globalObject.document.visibilityState === 'hidden') {
37
+ this._flushOutcomes();
38
+ }
39
+ });
40
+ }
38
41
  }
39
42
  /**
40
- * Show a report dialog to the user to send feedback to a specific event.
41
- *
42
- * @param options Set individual options for the dialog
43
+ * @inheritDoc
43
44
  */
44
- BrowserClient.prototype.showReportDialog = function (options) {
45
- if (options === void 0) { options = {}; }
46
- // doesn't work without a document (React Native)
47
- var document = utils_1.getGlobalObject().document;
48
- if (!document) {
49
- return;
50
- }
51
- if (!this._isEnabled()) {
52
- flags_1.IS_DEBUG_BUILD && utils_1.logger.error('Trying to call showReportDialog with Sentry Client disabled');
53
- return;
54
- }
55
- helpers_1.injectReportDialog(tslib_1.__assign(tslib_1.__assign({}, options), { dsn: options.dsn || this.getDsn() }));
56
- };
45
+ eventFromException(exception, hint) {
46
+ return eventbuilder_1.eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);
47
+ }
57
48
  /**
58
49
  * @inheritDoc
59
50
  */
60
- BrowserClient.prototype.eventFromException = function (exception, hint) {
61
- return eventbuilder_1.eventFromException(utils_1.stackParserFromOptions(this._options), exception, hint, this._options.attachStacktrace);
62
- };
51
+ eventFromMessage(message,
52
+ // eslint-disable-next-line deprecation/deprecation
53
+ level = 'info', hint) {
54
+ return eventbuilder_1.eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);
55
+ }
63
56
  /**
64
57
  * @inheritDoc
65
58
  */
66
- BrowserClient.prototype.eventFromMessage = function (message,
67
- // eslint-disable-next-line deprecation/deprecation
68
- level, hint) {
69
- if (level === void 0) { level = 'info'; }
70
- return eventbuilder_1.eventFromMessage(utils_1.stackParserFromOptions(this._options), message, level, hint, this._options.attachStacktrace);
71
- };
59
+ sendEvent(event) {
60
+ // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and
61
+ // activated its `sentry` option.
62
+ // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in
63
+ // bundles, if it is not used by the SDK.
64
+ // This all sadly is a bit ugly, but we currently don't have a "pre-send" hook on the integrations so we do it this
65
+ // way for now.
66
+ const breadcrumbIntegration = this.getIntegrationById(breadcrumbs_1.BREADCRUMB_INTEGRATION_ID);
67
+ if (breadcrumbIntegration &&
68
+ // We check for definedness of `options`, even though it is not strictly necessary, because that access to
69
+ // `.sentry` below does not throw, in case users provided their own integration with id "Breadcrumbs" that does
70
+ // not have an`options` field
71
+ breadcrumbIntegration.options &&
72
+ breadcrumbIntegration.options.sentry) {
73
+ core_1.getCurrentHub().addBreadcrumb({
74
+ category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,
75
+ event_id: event.event_id,
76
+ level: event.level,
77
+ message: utils_1.getEventDescription(event),
78
+ }, {
79
+ event,
80
+ });
81
+ }
82
+ super.sendEvent(event);
83
+ }
72
84
  /**
73
85
  * @inheritDoc
74
86
  */
75
- BrowserClient.prototype._prepareEvent = function (event, scope, hint) {
87
+ _prepareEvent(event, scope, hint) {
76
88
  event.platform = event.platform || 'javascript';
77
- return _super.prototype._prepareEvent.call(this, event, scope, hint);
78
- };
89
+ return super._prepareEvent(event, scope, hint);
90
+ }
79
91
  /**
80
- * @inheritDoc
92
+ * Sends client reports as an envelope.
81
93
  */
82
- BrowserClient.prototype._sendEvent = function (event) {
83
- var integration = this.getIntegration(integrations_1.Breadcrumbs);
84
- if (integration) {
85
- integration.addSentryBreadcrumb(event);
94
+ _flushOutcomes() {
95
+ const outcomes = this._clearOutcomes();
96
+ if (outcomes.length === 0) {
97
+ flags_1.IS_DEBUG_BUILD && utils_1.logger.log('No outcomes to send');
98
+ return;
86
99
  }
87
- _super.prototype._sendEvent.call(this, event);
88
- };
89
- return BrowserClient;
90
- }(core_1.BaseClient));
100
+ if (!this._dsn) {
101
+ flags_1.IS_DEBUG_BUILD && utils_1.logger.log('No dsn provided, will not send outcomes');
102
+ return;
103
+ }
104
+ flags_1.IS_DEBUG_BUILD && utils_1.logger.log('Sending outcomes:', outcomes);
105
+ const url = core_1.getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options.tunnel);
106
+ const envelope = utils_1.createClientReportEnvelope(outcomes, this._options.tunnel && utils_1.dsnToString(this._dsn));
107
+ try {
108
+ utils_2.sendReport(url, utils_1.serializeEnvelope(envelope));
109
+ }
110
+ catch (e) {
111
+ flags_1.IS_DEBUG_BUILD && utils_1.logger.error(e);
112
+ }
113
+ }
114
+ }
91
115
  exports.BrowserClient = BrowserClient;
92
116
  //# sourceMappingURL=client.js.map
package/cjs/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/client.ts"],"names":[],"mappings":";;AAAA,qCAA4E;AAE5E,uCAAgF;AAEhF,+CAAsE;AACtE,iCAAyC;AACzC,qCAAoE;AACpE,+CAA6C;AAsB7C;;;;;GAKG;AACH;IAAmC,yCAA0B;IAC3D;;;;OAIG;IACH,uBAAmB,OAA4B,EAAE,SAAoB,EAAE,YAA2B;QAA/E,wBAAA,EAAA,YAA4B;QAA/C,iBAcC;QAbC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAC5C,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;YAC/C,IAAI,EAAE,2BAA2B;YACjC,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EAAE,kBAAW;iBACrB;aACF;YACD,OAAO,EAAE,kBAAW;SACrB,CAAC;QAEF,QAAA,kBAAM,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,SAAC;;IAC1C,CAAC;IAED;;;;OAIG;IACI,wCAAgB,GAAvB,UAAwB,OAAiC;QAAjC,wBAAA,EAAA,YAAiC;QACvD,iDAAiD;QACjD,IAAM,QAAQ,GAAG,uBAAe,EAAU,CAAC,QAAQ,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACtB,sBAAc,IAAI,cAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC9F,OAAO;SACR;QAED,4BAAkB,uCACb,OAAO,KACV,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,IACjC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,0CAAkB,GAAzB,UAA0B,SAAkB,EAAE,IAAgB;QAC5D,OAAO,iCAAkB,CAAC,8BAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACpH,CAAC;IAED;;OAEG;IACI,wCAAgB,GAAvB,UACE,OAAe;IACf,mDAAmD;IACnD,KAAwC,EACxC,IAAgB;QADhB,sBAAA,EAAA,cAAwC;QAGxC,OAAO,+BAAgB,CACrB,8BAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EACrC,OAAO,EACP,KAAK,EACL,IAAI,EACJ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAC/B,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,qCAAa,GAAvB,UAAwB,KAAY,EAAE,KAAa,EAAE,IAAgB;QACnE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC;QAChD,OAAO,iBAAM,aAAa,YAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACO,kCAAU,GAApB,UAAqB,KAAY;QAC/B,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,0BAAW,CAAC,CAAC;QACrD,IAAI,WAAW,EAAE;YACf,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACxC;QACD,iBAAM,UAAU,YAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACH,oBAAC;AAAD,CAAC,AAxFD,CAAmC,iBAAU,GAwF5C;AAxFY,sCAAa","sourcesContent":["import { BaseClient, NewTransport, Scope, SDK_VERSION } from '@sentry/core';\nimport { Event, EventHint, Options, Severity, SeverityLevel, Transport } from '@sentry/types';\nimport { getGlobalObject, logger, stackParserFromOptions } from '@sentry/utils';\n\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { injectReportDialog, ReportDialogOptions } from './helpers';\nimport { Breadcrumbs } from './integrations';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see BrowserClient for more information.\n */\nexport interface BrowserOptions extends Options {\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.denyUrls}.\n * By default, all errors will be sent.\n */\n allowUrls?: Array<string | RegExp>;\n\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To allow certain errors instead, use {@link Options.allowUrls}.\n * By default, all errors will be sent.\n */\n denyUrls?: Array<string | RegExp>;\n}\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient<BrowserOptions> {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserOptions = {}, transport: Transport, newTransport?: NewTransport) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options, transport, newTransport);\n }\n\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n public showReportDialog(options: ReportDialogOptions = {}): void {\n // doesn't work without a document (React Native)\n const document = getGlobalObject<Window>().document;\n if (!document) {\n return;\n }\n\n if (!this._isEnabled()) {\n IS_DEBUG_BUILD && logger.error('Trying to call showReportDialog with Sentry Client disabled');\n return;\n }\n\n injectReportDialog({\n ...options,\n dsn: options.dsn || this.getDsn(),\n });\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike<Event> {\n return eventFromException(stackParserFromOptions(this._options), exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike<Event> {\n return eventFromMessage(\n stackParserFromOptions(this._options),\n message,\n level,\n hint,\n this._options.attachStacktrace,\n );\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike<Event | null> {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, scope, hint);\n }\n\n /**\n * @inheritDoc\n */\n protected _sendEvent(event: Event): void {\n const integration = this.getIntegration(Breadcrumbs);\n if (integration) {\n integration.addSentryBreadcrumb(event);\n }\n super._sendEvent(event);\n }\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseClient, getCurrentHub, getEnvelopeEndpointWithUrlEncodedAuth, Scope, SDK_VERSION } from '@sentry/core';\nimport { ClientOptions, Event, EventHint, Options, Severity, SeverityLevel } from '@sentry/types';\nimport {\n createClientReportEnvelope,\n dsnToString,\n getEventDescription,\n getGlobalObject,\n logger,\n serializeEnvelope,\n} from '@sentry/utils';\n\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Breadcrumbs } from './integrations';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs';\nimport { sendReport } from './transports/utils';\n\nconst globalObject = getGlobalObject<Window>();\n\nexport interface BaseBrowserOptions {\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.denyUrls}.\n * By default, all errors will be sent.\n */\n allowUrls?: Array<string | RegExp>;\n\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To allow certain errors instead, use {@link Options.allowUrls}.\n * By default, all errors will be sent.\n */\n denyUrls?: Array<string | RegExp>;\n}\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport interface BrowserOptions extends Options, BaseBrowserOptions {}\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport interface BrowserClientOptions extends ClientOptions, BaseBrowserOptions {}\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient<BrowserClientOptions> {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserClientOptions) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && globalObject.document) {\n globalObject.document.addEventListener('visibilitychange', () => {\n if (globalObject.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike<Event> {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike<Event> {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): void {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) as Breadcrumbs | null;\n if (\n breadcrumbIntegration &&\n // We check for definedness of `options`, even though it is not strictly necessary, because that access to\n // `.sentry` below does not throw, in case users provided their own integration with id \"Breadcrumbs\" that does\n // not have an`options` field\n breadcrumbIntegration.options &&\n breadcrumbIntegration.options.sentry\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 super.sendEvent(event);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike<Event | null> {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, scope, hint);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n private _flushOutcomes(): void {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n IS_DEBUG_BUILD && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n IS_DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n IS_DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options.tunnel);\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n try {\n sendReport(url, serializeEnvelope(envelope));\n } catch (e) {\n IS_DEBUG_BUILD && logger.error(e);\n }\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types';
2
2
  /**
3
- * This function creates an exception from an TraceKitStackTrace
3
+ * This function creates an exception from a JavaScript Error
4
4
  */
5
5
  export declare function exceptionFromError(stackParser: StackParser, ex: Error): Exception;
6
6
  /**
@@ -1,18 +1,17 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
- var tslib_1 = require("tslib");
3
- var utils_1 = require("@sentry/utils");
2
+ const utils_1 = require("@sentry/utils");
4
3
  /**
5
- * This function creates an exception from an TraceKitStackTrace
4
+ * This function creates an exception from a JavaScript Error
6
5
  */
7
6
  function exceptionFromError(stackParser, ex) {
8
7
  // Get the frames first since Opera can lose the stack if we touch anything else first
9
- var frames = parseStackFrames(stackParser, ex);
10
- var exception = {
8
+ const frames = parseStackFrames(stackParser, ex);
9
+ const exception = {
11
10
  type: ex && ex.name,
12
11
  value: extractMessage(ex),
13
12
  };
14
13
  if (frames.length) {
15
- exception.stacktrace = { frames: frames };
14
+ exception.stacktrace = { frames };
16
15
  }
17
16
  if (exception.type === undefined && exception.value === '') {
18
17
  exception.value = 'Unrecoverable error caught';
@@ -24,12 +23,12 @@ exports.exceptionFromError = exceptionFromError;
24
23
  * @hidden
25
24
  */
26
25
  function eventFromPlainObject(stackParser, exception, syntheticException, isUnhandledRejection) {
27
- var event = {
26
+ const event = {
28
27
  exception: {
29
28
  values: [
30
29
  {
31
30
  type: utils_1.isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',
32
- value: "Non-Error " + (isUnhandledRejection ? 'promise rejection' : 'exception') + " captured with keys: " + utils_1.extractExceptionKeysForMessage(exception),
31
+ value: `Non-Error ${isUnhandledRejection ? 'promise rejection' : 'exception'} captured with keys: ${utils_1.extractExceptionKeysForMessage(exception)}`,
33
32
  },
34
33
  ],
35
34
  },
@@ -38,10 +37,10 @@ function eventFromPlainObject(stackParser, exception, syntheticException, isUnha
38
37
  },
39
38
  };
40
39
  if (syntheticException) {
41
- var frames_1 = parseStackFrames(stackParser, syntheticException);
42
- if (frames_1.length) {
40
+ const frames = parseStackFrames(stackParser, syntheticException);
41
+ if (frames.length) {
43
42
  // event.exception.values[0] has been set above
44
- event.exception.values[0].stacktrace = { frames: frames_1 };
43
+ event.exception.values[0].stacktrace = { frames };
45
44
  }
46
45
  }
47
46
  return event;
@@ -63,8 +62,8 @@ function parseStackFrames(stackParser, ex) {
63
62
  // Access and store the stacktrace property before doing ANYTHING
64
63
  // else to it because Opera is not very good at providing it
65
64
  // reliably in other circumstances.
66
- var stacktrace = ex.stacktrace || ex.stack || '';
67
- var popSize = getPopSize(ex);
65
+ const stacktrace = ex.stacktrace || ex.stack || '';
66
+ const popSize = getPopSize(ex);
68
67
  try {
69
68
  return stackParser(stacktrace, popSize);
70
69
  }
@@ -75,7 +74,7 @@ function parseStackFrames(stackParser, ex) {
75
74
  }
76
75
  exports.parseStackFrames = parseStackFrames;
77
76
  // Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108
78
- var reactMinifiedRegexp = /Minified React error #\d+;/i;
77
+ const reactMinifiedRegexp = /Minified React error #\d+;/i;
79
78
  function getPopSize(ex) {
80
79
  if (ex) {
81
80
  if (typeof ex.framesToPop === 'number') {
@@ -93,7 +92,7 @@ function getPopSize(ex) {
93
92
  * In this specific case we try to extract stacktrace.message.error.message
94
93
  */
95
94
  function extractMessage(ex) {
96
- var message = ex && ex.message;
95
+ const message = ex && ex.message;
97
96
  if (!message) {
98
97
  return 'No error message';
99
98
  }
@@ -107,8 +106,8 @@ function extractMessage(ex) {
107
106
  * @hidden
108
107
  */
109
108
  function eventFromException(stackParser, exception, hint, attachStacktrace) {
110
- var syntheticException = (hint && hint.syntheticException) || undefined;
111
- var event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);
109
+ const syntheticException = (hint && hint.syntheticException) || undefined;
110
+ const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);
112
111
  utils_1.addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }
113
112
  event.level = 'error';
114
113
  if (hint && hint.event_id) {
@@ -123,10 +122,9 @@ exports.eventFromException = eventFromException;
123
122
  */
124
123
  function eventFromMessage(stackParser, message,
125
124
  // eslint-disable-next-line deprecation/deprecation
126
- level, hint, attachStacktrace) {
127
- if (level === void 0) { level = 'info'; }
128
- var syntheticException = (hint && hint.syntheticException) || undefined;
129
- var event = eventFromString(stackParser, message, syntheticException, attachStacktrace);
125
+ level = 'info', hint, attachStacktrace) {
126
+ const syntheticException = (hint && hint.syntheticException) || undefined;
127
+ const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);
130
128
  event.level = level;
131
129
  if (hint && hint.event_id) {
132
130
  event.event_id = hint.event_id;
@@ -138,10 +136,10 @@ exports.eventFromMessage = eventFromMessage;
138
136
  * @hidden
139
137
  */
140
138
  function eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace, isUnhandledRejection) {
141
- var event;
139
+ let event;
142
140
  if (utils_1.isErrorEvent(exception) && exception.error) {
143
141
  // If it is an ErrorEvent with `error` property, extract it to get actual Error
144
- var errorEvent = exception;
142
+ const errorEvent = exception;
145
143
  return eventFromError(stackParser, errorEvent.error);
146
144
  }
147
145
  // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name
@@ -152,18 +150,18 @@ function eventFromUnknownInput(stackParser, exception, syntheticException, attac
152
150
  // https://developer.mozilla.org/en-US/docs/Web/API/DOMException
153
151
  // https://webidl.spec.whatwg.org/#es-DOMException-specialness
154
152
  if (utils_1.isDOMError(exception) || utils_1.isDOMException(exception)) {
155
- var domException = exception;
153
+ const domException = exception;
156
154
  if ('stack' in exception) {
157
155
  event = eventFromError(stackParser, exception);
158
156
  }
159
157
  else {
160
- var name_1 = domException.name || (utils_1.isDOMError(domException) ? 'DOMError' : 'DOMException');
161
- var message = domException.message ? name_1 + ": " + domException.message : name_1;
158
+ const name = domException.name || (utils_1.isDOMError(domException) ? 'DOMError' : 'DOMException');
159
+ const message = domException.message ? `${name}: ${domException.message}` : name;
162
160
  event = eventFromString(stackParser, message, syntheticException, attachStacktrace);
163
161
  utils_1.addExceptionTypeValue(event, message);
164
162
  }
165
163
  if ('code' in domException) {
166
- event.tags = tslib_1.__assign(tslib_1.__assign({}, event.tags), { 'DOMException.code': "" + domException.code });
164
+ event.tags = Object.assign(Object.assign({}, event.tags), { 'DOMException.code': `${domException.code}` });
167
165
  }
168
166
  return event;
169
167
  }
@@ -175,7 +173,7 @@ function eventFromUnknownInput(stackParser, exception, syntheticException, attac
175
173
  // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize
176
174
  // it manually. This will allow us to group events based on top-level keys which is much better than creating a new
177
175
  // group on any key/value change.
178
- var objectException = exception;
176
+ const objectException = exception;
179
177
  event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);
180
178
  utils_1.addExceptionMechanism(event, {
181
179
  synthetic: true,
@@ -192,7 +190,7 @@ function eventFromUnknownInput(stackParser, exception, syntheticException, attac
192
190
  //
193
191
  // So bail out and capture it as a simple message:
194
192
  event = eventFromString(stackParser, exception, syntheticException, attachStacktrace);
195
- utils_1.addExceptionTypeValue(event, "" + exception, undefined);
193
+ utils_1.addExceptionTypeValue(event, `${exception}`, undefined);
196
194
  utils_1.addExceptionMechanism(event, {
197
195
  synthetic: true,
198
196
  });
@@ -203,14 +201,14 @@ exports.eventFromUnknownInput = eventFromUnknownInput;
203
201
  * @hidden
204
202
  */
205
203
  function eventFromString(stackParser, input, syntheticException, attachStacktrace) {
206
- var event = {
204
+ const event = {
207
205
  message: input,
208
206
  };
209
207
  if (attachStacktrace && syntheticException) {
210
- var frames_2 = parseStackFrames(stackParser, syntheticException);
211
- if (frames_2.length) {
208
+ const frames = parseStackFrames(stackParser, syntheticException);
209
+ if (frames.length) {
212
210
  event.exception = {
213
- values: [{ value: input, stacktrace: { frames: frames_2 } }],
211
+ values: [{ value: input, stacktrace: { frames } }],
214
212
  };
215
213
  }
216
214
  }
@@ -1 +1 @@
1
- {"version":3,"file":"eventbuilder.js","sourceRoot":"","sources":["../../../src/eventbuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\n/**\n * This function creates an exception from an TraceKitStackTrace\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, 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 stackParser: StackParser,\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(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): 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 stackParser(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 stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = '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 stackParser: StackParser,\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, 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 stackParser: StackParser,\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(stackParser, 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(stackParser, 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(stackParser, 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)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\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(stackParser, 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(stackParser, 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(\n stackParser: StackParser,\n input: string,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\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, SeverityLevel, StackFrame, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, 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 stackParser: StackParser,\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(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): 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 stackParser(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 stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = '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 stackParser: StackParser,\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike<Event> {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, 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 stackParser: StackParser,\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(stackParser, 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(stackParser, 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(stackParser, 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)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\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(stackParser, 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(stackParser, 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(\n stackParser: StackParser,\n input: string,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n"]}
package/cjs/exports.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- export type { Breadcrumb, BreadcrumbHint, Request, SdkInfo, Event, EventHint, EventStatus, Exception, Response, Severity, SeverityLevel, StackFrame, Stacktrace, Thread, User, } from '@sentry/types';
1
+ export type { Breadcrumb, BreadcrumbHint, Request, SdkInfo, Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, Stacktrace, Thread, User, } from '@sentry/types';
2
2
  export type { BrowserOptions } from './client';
3
3
  export type { ReportDialogOptions } from './helpers';
4
- export { addGlobalEventProcessor, addBreadcrumb, captureException, captureEvent, captureMessage, configureScope, getHubFromCarrier, getCurrentHub, Hub, makeMain, Scope, Session, startTransaction, SDK_VERSION, setContext, setExtra, setExtras, setTag, setTags, setUser, withScope, } from '@sentry/core';
4
+ export { addGlobalEventProcessor, addBreadcrumb, captureException, captureEvent, captureMessage, configureScope, createTransport, getHubFromCarrier, getCurrentHub, Hub, makeMain, Scope, Session, startTransaction, SDK_VERSION, setContext, setExtra, setExtras, setTag, setTags, setUser, withScope, FunctionToString, InboundFilters, } from '@sentry/core';
5
5
  export { BrowserClient } from './client';
6
- export { defaultStackParsers, chromeStackParser, geckoStackParser, opera10StackParser, opera11StackParser, winjsStackParser, } from './stack-parsers';
7
- export { injectReportDialog } from './helpers';
6
+ export { makeFetchTransport, makeXHRTransport } from './transports';
7
+ export { defaultStackParser, defaultStackLineParsers, chromeStackLineParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser, } from './stack-parsers';
8
8
  export { defaultIntegrations, forceLoad, init, lastEventId, onLoad, showReportDialog, flush, close, wrap } from './sdk';
9
9
  export { SDK_NAME } from './version';
10
+ export { GlobalHandlers, TryCatch, Breadcrumbs, LinkedErrors, UserAgent, Dedupe } from './integrations';
10
11
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/exports.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,cAAc,EACd,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EAER,QAAQ,EACR,aAAa,EACb,UAAU,EACV,UAAU,EACV,MAAM,EACN,IAAI,GACL,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErD,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,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,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,YAAY,EACV,UAAU,EACV,cAAc,EACd,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,SAAS,EAET,QAAQ,EACR,aAAa,EACb,UAAU,EACV,UAAU,EACV,MAAM,EACN,IAAI,GACL,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,eAAe,EACf,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,EACT,gBAAgB,EAChB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,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;AACrC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
package/cjs/exports.js CHANGED
@@ -6,6 +6,7 @@ exports.captureException = core_1.captureException;
6
6
  exports.captureEvent = core_1.captureEvent;
7
7
  exports.captureMessage = core_1.captureMessage;
8
8
  exports.configureScope = core_1.configureScope;
9
+ exports.createTransport = core_1.createTransport;
9
10
  exports.getHubFromCarrier = core_1.getHubFromCarrier;
10
11
  exports.getCurrentHub = core_1.getCurrentHub;
11
12
  exports.Hub = core_1.Hub;
@@ -21,17 +22,21 @@ exports.setTag = core_1.setTag;
21
22
  exports.setTags = core_1.setTags;
22
23
  exports.setUser = core_1.setUser;
23
24
  exports.withScope = core_1.withScope;
25
+ exports.FunctionToString = core_1.FunctionToString;
26
+ exports.InboundFilters = core_1.InboundFilters;
24
27
  var client_1 = require("./client");
25
28
  exports.BrowserClient = client_1.BrowserClient;
29
+ var transports_1 = require("./transports");
30
+ exports.makeFetchTransport = transports_1.makeFetchTransport;
31
+ exports.makeXHRTransport = transports_1.makeXHRTransport;
26
32
  var stack_parsers_1 = require("./stack-parsers");
27
- exports.defaultStackParsers = stack_parsers_1.defaultStackParsers;
28
- exports.chromeStackParser = stack_parsers_1.chromeStackParser;
29
- exports.geckoStackParser = stack_parsers_1.geckoStackParser;
30
- exports.opera10StackParser = stack_parsers_1.opera10StackParser;
31
- exports.opera11StackParser = stack_parsers_1.opera11StackParser;
32
- exports.winjsStackParser = stack_parsers_1.winjsStackParser;
33
- var helpers_1 = require("./helpers");
34
- exports.injectReportDialog = helpers_1.injectReportDialog;
33
+ exports.defaultStackParser = stack_parsers_1.defaultStackParser;
34
+ exports.defaultStackLineParsers = stack_parsers_1.defaultStackLineParsers;
35
+ exports.chromeStackLineParser = stack_parsers_1.chromeStackLineParser;
36
+ exports.geckoStackLineParser = stack_parsers_1.geckoStackLineParser;
37
+ exports.opera10StackLineParser = stack_parsers_1.opera10StackLineParser;
38
+ exports.opera11StackLineParser = stack_parsers_1.opera11StackLineParser;
39
+ exports.winjsStackLineParser = stack_parsers_1.winjsStackLineParser;
35
40
  var sdk_1 = require("./sdk");
36
41
  exports.defaultIntegrations = sdk_1.defaultIntegrations;
37
42
  exports.forceLoad = sdk_1.forceLoad;
@@ -44,4 +49,11 @@ exports.close = sdk_1.close;
44
49
  exports.wrap = sdk_1.wrap;
45
50
  var version_1 = require("./version");
46
51
  exports.SDK_NAME = version_1.SDK_NAME;
52
+ var integrations_1 = require("./integrations");
53
+ exports.GlobalHandlers = integrations_1.GlobalHandlers;
54
+ exports.TryCatch = integrations_1.TryCatch;
55
+ exports.Breadcrumbs = integrations_1.Breadcrumbs;
56
+ exports.LinkedErrors = integrations_1.LinkedErrors;
57
+ exports.UserAgent = integrations_1.UserAgent;
58
+ exports.Dedupe = integrations_1.Dedupe;
47
59
  //# sourceMappingURL=exports.js.map