@sentry/browser 6.19.7 → 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.
- package/cjs/client.d.ts +63 -0
- package/cjs/client.d.ts.map +1 -0
- package/cjs/client.js +116 -0
- package/cjs/client.js.map +1 -0
- package/cjs/eventbuilder.d.ts +37 -0
- package/cjs/eventbuilder.d.ts.map +1 -0
- package/{dist → cjs}/eventbuilder.js +52 -53
- package/cjs/eventbuilder.js.map +1 -0
- package/cjs/exports.d.ts +11 -0
- package/cjs/exports.d.ts.map +1 -0
- package/{dist → cjs}/exports.js +21 -7
- package/cjs/exports.js.map +1 -0
- package/{dist → cjs}/flags.d.ts +0 -0
- package/{dist → cjs}/flags.d.ts.map +0 -0
- package/{dist → cjs}/flags.js +0 -0
- package/{dist → cjs}/flags.js.map +0 -0
- package/{dist → cjs}/helpers.d.ts +0 -5
- package/cjs/helpers.d.ts.map +1 -0
- package/{dist → cjs}/helpers.js +15 -49
- package/cjs/helpers.js.map +1 -0
- package/{dist → cjs}/index.d.ts +1 -2
- package/{dist → cjs}/index.d.ts.map +1 -1
- package/cjs/index.js +15 -0
- package/cjs/index.js.map +1 -0
- package/{dist → cjs}/integrations/breadcrumbs.d.ts +6 -7
- package/cjs/integrations/breadcrumbs.d.ts.map +1 -0
- package/{dist → cjs}/integrations/breadcrumbs.js +39 -57
- package/cjs/integrations/breadcrumbs.js.map +1 -0
- package/{dist → cjs}/integrations/dedupe.d.ts +0 -0
- package/{dist → cjs}/integrations/dedupe.d.ts.map +1 -1
- package/{dist → cjs}/integrations/dedupe.js +28 -30
- package/cjs/integrations/dedupe.js.map +1 -0
- package/{dist → cjs}/integrations/globalhandlers.d.ts +0 -0
- package/cjs/integrations/globalhandlers.d.ts.map +1 -0
- package/{dist → cjs}/integrations/globalhandlers.js +57 -57
- package/cjs/integrations/globalhandlers.js.map +1 -0
- package/{dist → cjs}/integrations/index.d.ts +0 -0
- package/{dist → cjs}/integrations/index.d.ts.map +0 -0
- package/{dist → cjs}/integrations/index.js +0 -0
- package/{dist → cjs}/integrations/index.js.map +0 -0
- package/{dist → cjs}/integrations/linkederrors.d.ts +3 -3
- package/cjs/integrations/linkederrors.d.ts.map +1 -0
- package/cjs/integrations/linkederrors.js +62 -0
- package/cjs/integrations/linkederrors.js.map +1 -0
- package/{dist → cjs}/integrations/trycatch.d.ts +0 -0
- package/{dist → cjs}/integrations/trycatch.d.ts.map +0 -0
- package/{dist → cjs}/integrations/trycatch.js +30 -40
- package/cjs/integrations/trycatch.js.map +1 -0
- package/{dist → cjs}/integrations/useragent.d.ts +0 -0
- package/{dist → cjs}/integrations/useragent.d.ts.map +0 -0
- package/cjs/integrations/useragent.js +40 -0
- package/cjs/integrations/useragent.js.map +1 -0
- package/{dist → cjs}/sdk.d.ts +3 -3
- package/cjs/sdk.d.ts.map +1 -0
- package/{dist → cjs}/sdk.js +47 -28
- package/cjs/sdk.js.map +1 -0
- package/cjs/stack-parsers.d.ts +9 -0
- package/cjs/stack-parsers.d.ts.map +1 -0
- package/{dist → cjs}/stack-parsers.js +45 -44
- package/cjs/stack-parsers.js.map +1 -0
- package/{esm/transports/new-fetch.d.ts → cjs/transports/fetch.d.ts} +3 -3
- package/cjs/transports/fetch.d.ts.map +1 -0
- package/cjs/transports/fetch.js +20 -0
- package/cjs/transports/fetch.js.map +1 -0
- package/cjs/transports/index.d.ts +3 -0
- package/cjs/transports/index.d.ts.map +1 -0
- package/cjs/transports/index.js +6 -0
- package/cjs/transports/index.js.map +1 -0
- package/{dist → cjs}/transports/utils.d.ts +0 -0
- package/{dist → cjs}/transports/utils.d.ts.map +1 -1
- package/{dist → cjs}/transports/utils.js +17 -17
- package/cjs/transports/utils.js.map +1 -0
- package/{types/transports/new-xhr.d.ts → cjs/transports/xhr.d.ts} +3 -3
- package/cjs/transports/xhr.d.ts.map +1 -0
- package/{esm/transports/new-xhr.js → cjs/transports/xhr.js} +14 -14
- package/cjs/transports/xhr.js.map +1 -0
- package/{dist → cjs}/version.d.ts +0 -0
- package/{dist → cjs}/version.d.ts.map +0 -0
- package/{dist → cjs}/version.js +0 -0
- package/{dist → cjs}/version.js.map +0 -0
- package/esm/client.d.ts +41 -11
- package/esm/client.d.ts.map +1 -1
- package/esm/client.js +79 -41
- package/esm/client.js.map +1 -1
- package/esm/eventbuilder.d.ts +10 -12
- package/esm/eventbuilder.d.ts.map +1 -1
- package/esm/eventbuilder.js +52 -53
- package/esm/eventbuilder.js.map +1 -1
- package/esm/exports.d.ts +7 -6
- package/esm/exports.d.ts.map +1 -1
- package/esm/exports.js +4 -4
- package/esm/exports.js.map +1 -1
- package/esm/flags.js +1 -1
- package/esm/flags.js.map +1 -1
- package/esm/helpers.d.ts +0 -5
- package/esm/helpers.d.ts.map +1 -1
- package/esm/helpers.js +15 -48
- package/esm/helpers.js.map +1 -1
- package/esm/index.d.ts +1 -2
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -6
- package/esm/index.js.map +1 -1
- package/esm/integrations/breadcrumbs.d.ts +6 -7
- package/esm/integrations/breadcrumbs.d.ts.map +1 -1
- package/esm/integrations/breadcrumbs.js +38 -57
- package/esm/integrations/breadcrumbs.js.map +1 -1
- package/esm/integrations/dedupe.d.ts.map +1 -1
- package/esm/integrations/dedupe.js +26 -29
- package/esm/integrations/dedupe.js.map +1 -1
- package/esm/integrations/globalhandlers.d.ts.map +1 -1
- package/esm/integrations/globalhandlers.js +52 -53
- package/esm/integrations/globalhandlers.js.map +1 -1
- package/esm/integrations/linkederrors.d.ts +3 -3
- package/esm/integrations/linkederrors.d.ts.map +1 -1
- package/esm/integrations/linkederrors.js +24 -25
- package/esm/integrations/linkederrors.js.map +1 -1
- package/esm/integrations/trycatch.js +28 -39
- package/esm/integrations/trycatch.js.map +1 -1
- package/esm/integrations/useragent.js +17 -20
- package/esm/integrations/useragent.js.map +1 -1
- package/esm/sdk.d.ts +3 -3
- package/esm/sdk.d.ts.map +1 -1
- package/esm/sdk.js +44 -25
- package/esm/sdk.js.map +1 -1
- package/esm/stack-parsers.d.ts +8 -6
- package/esm/stack-parsers.d.ts.map +1 -1
- package/esm/stack-parsers.js +45 -44
- package/esm/stack-parsers.js.map +1 -1
- package/esm/transports/fetch.d.ts +7 -14
- package/esm/transports/fetch.d.ts.map +1 -1
- package/esm/transports/fetch.js +15 -77
- package/esm/transports/fetch.js.map +1 -1
- package/esm/transports/index.d.ts +2 -5
- package/esm/transports/index.d.ts.map +1 -1
- package/esm/transports/index.js +2 -5
- package/esm/transports/index.js.map +1 -1
- package/esm/transports/utils.d.ts.map +1 -1
- package/esm/transports/utils.js +16 -16
- package/esm/transports/utils.js.map +1 -1
- package/esm/transports/xhr.d.ts +9 -9
- package/esm/transports/xhr.d.ts.map +1 -1
- package/esm/transports/xhr.js +38 -59
- package/esm/transports/xhr.js.map +1 -1
- package/esm/version.js +1 -1
- package/esm/version.js.map +1 -1
- package/package.json +6 -7
- package/types/client.d.ts +41 -11
- package/types/client.d.ts.map +1 -1
- package/types/eventbuilder.d.ts +10 -12
- package/types/eventbuilder.d.ts.map +1 -1
- package/types/exports.d.ts +7 -6
- package/types/exports.d.ts.map +1 -1
- package/types/helpers.d.ts +0 -5
- package/types/helpers.d.ts.map +1 -1
- package/types/index.d.ts +1 -2
- package/types/index.d.ts.map +1 -1
- package/types/integrations/breadcrumbs.d.ts +6 -7
- package/types/integrations/breadcrumbs.d.ts.map +1 -1
- package/types/integrations/dedupe.d.ts.map +1 -1
- package/types/integrations/globalhandlers.d.ts.map +1 -1
- package/types/integrations/linkederrors.d.ts +3 -3
- package/types/integrations/linkederrors.d.ts.map +1 -1
- package/types/sdk.d.ts +3 -3
- package/types/sdk.d.ts.map +1 -1
- package/types/stack-parsers.d.ts +8 -6
- package/types/stack-parsers.d.ts.map +1 -1
- package/types/transports/fetch.d.ts +7 -14
- package/types/transports/fetch.d.ts.map +1 -1
- package/types/transports/index.d.ts +2 -5
- package/types/transports/index.d.ts.map +1 -1
- package/types/transports/utils.d.ts.map +1 -1
- package/types/transports/xhr.d.ts +9 -9
- package/types/transports/xhr.d.ts.map +1 -1
- package/build/bundle.debug.min.js +0 -3
- package/build/bundle.debug.min.js.map +0 -1
- package/build/bundle.es6.debug.min.js +0 -3
- package/build/bundle.es6.debug.min.js.map +0 -1
- package/build/bundle.es6.js +0 -6868
- package/build/bundle.es6.js.map +0 -1
- package/build/bundle.es6.min.js +0 -3
- package/build/bundle.es6.min.js.map +0 -1
- package/build/bundle.js +0 -7169
- package/build/bundle.js.map +0 -1
- package/build/bundle.min.js +0 -3
- package/build/bundle.min.js.map +0 -1
- package/dist/backend.d.ts +0 -43
- package/dist/backend.d.ts.map +0 -1
- package/dist/backend.js +0 -58
- package/dist/backend.js.map +0 -1
- package/dist/client.d.ts +0 -33
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -77
- package/dist/client.js.map +0 -1
- package/dist/eventbuilder.d.ts +0 -39
- package/dist/eventbuilder.d.ts.map +0 -1
- package/dist/eventbuilder.js.map +0 -1
- package/dist/exports.d.ts +0 -10
- package/dist/exports.d.ts.map +0 -1
- package/dist/exports.js.map +0 -1
- package/dist/helpers.d.ts.map +0 -1
- package/dist/helpers.js.map +0 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +0 -1
- package/dist/integrations/breadcrumbs.d.ts.map +0 -1
- package/dist/integrations/breadcrumbs.js.map +0 -1
- package/dist/integrations/dedupe.js.map +0 -1
- package/dist/integrations/globalhandlers.d.ts.map +0 -1
- package/dist/integrations/globalhandlers.js.map +0 -1
- package/dist/integrations/linkederrors.d.ts.map +0 -1
- package/dist/integrations/linkederrors.js +0 -62
- package/dist/integrations/linkederrors.js.map +0 -1
- package/dist/integrations/trycatch.js.map +0 -1
- package/dist/integrations/useragent.js +0 -42
- package/dist/integrations/useragent.js.map +0 -1
- package/dist/sdk.d.ts.map +0 -1
- package/dist/sdk.js.map +0 -1
- package/dist/stack-parsers.d.ts +0 -7
- package/dist/stack-parsers.d.ts.map +0 -1
- package/dist/stack-parsers.js.map +0 -1
- package/dist/transports/base.d.ts +0 -65
- package/dist/transports/base.d.ts.map +0 -1
- package/dist/transports/base.js +0 -141
- package/dist/transports/base.js.map +0 -1
- package/dist/transports/fetch.d.ts +0 -17
- package/dist/transports/fetch.d.ts.map +0 -1
- package/dist/transports/fetch.js +0 -81
- package/dist/transports/fetch.js.map +0 -1
- package/dist/transports/index.d.ts +0 -6
- package/dist/transports/index.d.ts.map +0 -1
- package/dist/transports/index.js +0 -12
- package/dist/transports/index.js.map +0 -1
- package/dist/transports/new-fetch.d.ts +0 -10
- package/dist/transports/new-fetch.d.ts.map +0 -1
- package/dist/transports/new-fetch.js +0 -27
- package/dist/transports/new-fetch.js.map +0 -1
- package/dist/transports/new-xhr.d.ts +0 -11
- package/dist/transports/new-xhr.d.ts.map +0 -1
- package/dist/transports/new-xhr.js +0 -46
- package/dist/transports/new-xhr.js.map +0 -1
- package/dist/transports/utils.js.map +0 -1
- package/dist/transports/xhr.d.ts +0 -11
- package/dist/transports/xhr.d.ts.map +0 -1
- package/dist/transports/xhr.js +0 -64
- package/dist/transports/xhr.js.map +0 -1
- package/esm/backend.d.ts +0 -43
- package/esm/backend.d.ts.map +0 -1
- package/esm/backend.js +0 -57
- package/esm/backend.js.map +0 -1
- package/esm/transports/base.d.ts +0 -65
- package/esm/transports/base.d.ts.map +0 -1
- package/esm/transports/base.js +0 -140
- package/esm/transports/base.js.map +0 -1
- package/esm/transports/new-fetch.d.ts.map +0 -1
- package/esm/transports/new-fetch.js +0 -25
- package/esm/transports/new-fetch.js.map +0 -1
- package/esm/transports/new-xhr.d.ts +0 -11
- package/esm/transports/new-xhr.d.ts.map +0 -1
- package/esm/transports/new-xhr.js.map +0 -1
- package/types/backend.d.ts +0 -43
- package/types/backend.d.ts.map +0 -1
- package/types/transports/base.d.ts +0 -65
- package/types/transports/base.d.ts.map +0 -1
- package/types/transports/new-fetch.d.ts +0 -10
- package/types/transports/new-fetch.d.ts.map +0 -1
- package/types/transports/new-xhr.d.ts.map +0 -1
package/cjs/client.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { BaseClient, Scope } from '@sentry/core';
|
|
2
|
+
import { ClientOptions, Event, EventHint, Options, Severity, SeverityLevel } from '@sentry/types';
|
|
3
|
+
export interface BaseBrowserOptions {
|
|
4
|
+
/**
|
|
5
|
+
* A pattern for error URLs which should exclusively be sent to Sentry.
|
|
6
|
+
* This is the opposite of {@link Options.denyUrls}.
|
|
7
|
+
* By default, all errors will be sent.
|
|
8
|
+
*/
|
|
9
|
+
allowUrls?: Array<string | RegExp>;
|
|
10
|
+
/**
|
|
11
|
+
* A pattern for error URLs which should not be sent to Sentry.
|
|
12
|
+
* To allow certain errors instead, use {@link Options.allowUrls}.
|
|
13
|
+
* By default, all errors will be sent.
|
|
14
|
+
*/
|
|
15
|
+
denyUrls?: Array<string | RegExp>;
|
|
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
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The Sentry Browser SDK Client.
|
|
31
|
+
*
|
|
32
|
+
* @see BrowserOptions for documentation on configuration options.
|
|
33
|
+
* @see SentryClient for usage documentation.
|
|
34
|
+
*/
|
|
35
|
+
export declare class BrowserClient extends BaseClient<BrowserClientOptions> {
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new Browser SDK instance.
|
|
38
|
+
*
|
|
39
|
+
* @param options Configuration options for this SDK.
|
|
40
|
+
*/
|
|
41
|
+
constructor(options: BrowserClientOptions);
|
|
42
|
+
/**
|
|
43
|
+
* @inheritDoc
|
|
44
|
+
*/
|
|
45
|
+
eventFromException(exception: unknown, hint?: EventHint): PromiseLike<Event>;
|
|
46
|
+
/**
|
|
47
|
+
* @inheritDoc
|
|
48
|
+
*/
|
|
49
|
+
eventFromMessage(message: string, level?: Severity | SeverityLevel, hint?: EventHint): PromiseLike<Event>;
|
|
50
|
+
/**
|
|
51
|
+
* @inheritDoc
|
|
52
|
+
*/
|
|
53
|
+
sendEvent(event: Event): void;
|
|
54
|
+
/**
|
|
55
|
+
* @inheritDoc
|
|
56
|
+
*/
|
|
57
|
+
protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike<Event | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Sends client reports as an envelope.
|
|
60
|
+
*/
|
|
61
|
+
private _flushOutcomes;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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
|
+
/**
|
|
10
|
+
* The Sentry Browser SDK Client.
|
|
11
|
+
*
|
|
12
|
+
* @see BrowserOptions for documentation on configuration options.
|
|
13
|
+
* @see SentryClient for usage documentation.
|
|
14
|
+
*/
|
|
15
|
+
class BrowserClient extends core_1.BaseClient {
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new Browser SDK instance.
|
|
18
|
+
*
|
|
19
|
+
* @param options Configuration options for this SDK.
|
|
20
|
+
*/
|
|
21
|
+
constructor(options) {
|
|
22
|
+
options._metadata = options._metadata || {};
|
|
23
|
+
options._metadata.sdk = options._metadata.sdk || {
|
|
24
|
+
name: 'sentry.javascript.browser',
|
|
25
|
+
packages: [
|
|
26
|
+
{
|
|
27
|
+
name: 'npm:@sentry/browser',
|
|
28
|
+
version: core_1.SDK_VERSION,
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
version: core_1.SDK_VERSION,
|
|
32
|
+
};
|
|
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
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* @inheritDoc
|
|
44
|
+
*/
|
|
45
|
+
eventFromException(exception, hint) {
|
|
46
|
+
return eventbuilder_1.eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @inheritDoc
|
|
50
|
+
*/
|
|
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
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @inheritDoc
|
|
58
|
+
*/
|
|
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
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @inheritDoc
|
|
86
|
+
*/
|
|
87
|
+
_prepareEvent(event, scope, hint) {
|
|
88
|
+
event.platform = event.platform || 'javascript';
|
|
89
|
+
return super._prepareEvent(event, scope, hint);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Sends client reports as an envelope.
|
|
93
|
+
*/
|
|
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;
|
|
99
|
+
}
|
|
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
|
+
}
|
|
115
|
+
exports.BrowserClient = BrowserClient;
|
|
116
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types';
|
|
2
|
+
/**
|
|
3
|
+
* This function creates an exception from a JavaScript Error
|
|
4
|
+
*/
|
|
5
|
+
export declare function exceptionFromError(stackParser: StackParser, ex: Error): Exception;
|
|
6
|
+
/**
|
|
7
|
+
* @hidden
|
|
8
|
+
*/
|
|
9
|
+
export declare function eventFromPlainObject(stackParser: StackParser, exception: Record<string, unknown>, syntheticException?: Error, isUnhandledRejection?: boolean): Event;
|
|
10
|
+
/**
|
|
11
|
+
* @hidden
|
|
12
|
+
*/
|
|
13
|
+
export declare function eventFromError(stackParser: StackParser, ex: Error): Event;
|
|
14
|
+
/** Parses stack frames from an error */
|
|
15
|
+
export declare function parseStackFrames(stackParser: StackParser, ex: Error & {
|
|
16
|
+
framesToPop?: number;
|
|
17
|
+
stacktrace?: string;
|
|
18
|
+
}): StackFrame[];
|
|
19
|
+
/**
|
|
20
|
+
* Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.
|
|
21
|
+
* @hidden
|
|
22
|
+
*/
|
|
23
|
+
export declare function eventFromException(stackParser: StackParser, exception: unknown, hint?: EventHint, attachStacktrace?: boolean): PromiseLike<Event>;
|
|
24
|
+
/**
|
|
25
|
+
* Builds and Event from a Message
|
|
26
|
+
* @hidden
|
|
27
|
+
*/
|
|
28
|
+
export declare function eventFromMessage(stackParser: StackParser, message: string, level?: Severity | SeverityLevel, hint?: EventHint, attachStacktrace?: boolean): PromiseLike<Event>;
|
|
29
|
+
/**
|
|
30
|
+
* @hidden
|
|
31
|
+
*/
|
|
32
|
+
export declare function eventFromUnknownInput(stackParser: StackParser, exception: unknown, syntheticException?: Error, attachStacktrace?: boolean, isUnhandledRejection?: boolean): Event;
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
*/
|
|
36
|
+
export declare function eventFromString(stackParser: StackParser, input: string, syntheticException?: Error, attachStacktrace?: boolean): Event;
|
|
37
|
+
//# sourceMappingURL=eventbuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventbuilder.d.ts","sourceRoot":"","sources":["../../../src/eventbuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAe9G;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,GAAG,SAAS,CAkBjF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,kBAAkB,CAAC,EAAE,KAAK,EAC1B,oBAAoB,CAAC,EAAE,OAAO,GAC7B,KAAK,CA0BP;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,GAAG,KAAK,CAMzE;AAED,wCAAwC;AACxC,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,WAAW,EACxB,EAAE,EAAE,KAAK,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,UAAU,EAAE,CAed;AAmCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,OAAO,EAClB,IAAI,CAAC,EAAE,SAAS,EAChB,gBAAgB,CAAC,EAAE,OAAO,GACzB,WAAW,CAAC,KAAK,CAAC,CASpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EAEf,KAAK,GAAE,QAAQ,GAAG,aAAsB,EACxC,IAAI,CAAC,EAAE,SAAS,EAChB,gBAAgB,CAAC,EAAE,OAAO,GACzB,WAAW,CAAC,KAAK,CAAC,CAQpB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,OAAO,EAClB,kBAAkB,CAAC,EAAE,KAAK,EAC1B,gBAAgB,CAAC,EAAE,OAAO,EAC1B,oBAAoB,CAAC,EAAE,OAAO,GAC7B,KAAK,CAiEP;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,MAAM,EACb,kBAAkB,CAAC,EAAE,KAAK,EAC1B,gBAAgB,CAAC,EAAE,OAAO,GACzB,KAAK,CAeP"}
|
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
-
|
|
3
|
-
var types_1 = require("@sentry/types");
|
|
4
|
-
var utils_1 = require("@sentry/utils");
|
|
5
|
-
var stack_parsers_1 = require("./stack-parsers");
|
|
2
|
+
const utils_1 = require("@sentry/utils");
|
|
6
3
|
/**
|
|
7
|
-
* This function creates an exception from
|
|
8
|
-
* @param stacktrace TraceKitStackTrace that will be converted to an exception
|
|
9
|
-
* @hidden
|
|
4
|
+
* This function creates an exception from a JavaScript Error
|
|
10
5
|
*/
|
|
11
|
-
function exceptionFromError(ex) {
|
|
6
|
+
function exceptionFromError(stackParser, ex) {
|
|
12
7
|
// Get the frames first since Opera can lose the stack if we touch anything else first
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
const frames = parseStackFrames(stackParser, ex);
|
|
9
|
+
const exception = {
|
|
15
10
|
type: ex && ex.name,
|
|
16
11
|
value: extractMessage(ex),
|
|
17
12
|
};
|
|
18
13
|
if (frames.length) {
|
|
19
|
-
exception.stacktrace = { frames
|
|
14
|
+
exception.stacktrace = { frames };
|
|
20
15
|
}
|
|
21
16
|
if (exception.type === undefined && exception.value === '') {
|
|
22
17
|
exception.value = 'Unrecoverable error caught';
|
|
@@ -27,13 +22,13 @@ exports.exceptionFromError = exceptionFromError;
|
|
|
27
22
|
/**
|
|
28
23
|
* @hidden
|
|
29
24
|
*/
|
|
30
|
-
function eventFromPlainObject(exception, syntheticException, isUnhandledRejection) {
|
|
31
|
-
|
|
25
|
+
function eventFromPlainObject(stackParser, exception, syntheticException, isUnhandledRejection) {
|
|
26
|
+
const event = {
|
|
32
27
|
exception: {
|
|
33
28
|
values: [
|
|
34
29
|
{
|
|
35
30
|
type: utils_1.isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',
|
|
36
|
-
value:
|
|
31
|
+
value: `Non-Error ${isUnhandledRejection ? 'promise rejection' : 'exception'} captured with keys: ${utils_1.extractExceptionKeysForMessage(exception)}`,
|
|
37
32
|
},
|
|
38
33
|
],
|
|
39
34
|
},
|
|
@@ -42,9 +37,10 @@ function eventFromPlainObject(exception, syntheticException, isUnhandledRejectio
|
|
|
42
37
|
},
|
|
43
38
|
};
|
|
44
39
|
if (syntheticException) {
|
|
45
|
-
|
|
46
|
-
if (
|
|
47
|
-
event.
|
|
40
|
+
const frames = parseStackFrames(stackParser, syntheticException);
|
|
41
|
+
if (frames.length) {
|
|
42
|
+
// event.exception.values[0] has been set above
|
|
43
|
+
event.exception.values[0].stacktrace = { frames };
|
|
48
44
|
}
|
|
49
45
|
}
|
|
50
46
|
return event;
|
|
@@ -53,23 +49,23 @@ exports.eventFromPlainObject = eventFromPlainObject;
|
|
|
53
49
|
/**
|
|
54
50
|
* @hidden
|
|
55
51
|
*/
|
|
56
|
-
function eventFromError(ex) {
|
|
52
|
+
function eventFromError(stackParser, ex) {
|
|
57
53
|
return {
|
|
58
54
|
exception: {
|
|
59
|
-
values: [exceptionFromError(ex)],
|
|
55
|
+
values: [exceptionFromError(stackParser, ex)],
|
|
60
56
|
},
|
|
61
57
|
};
|
|
62
58
|
}
|
|
63
59
|
exports.eventFromError = eventFromError;
|
|
64
60
|
/** Parses stack frames from an error */
|
|
65
|
-
function parseStackFrames(ex) {
|
|
61
|
+
function parseStackFrames(stackParser, ex) {
|
|
66
62
|
// Access and store the stacktrace property before doing ANYTHING
|
|
67
63
|
// else to it because Opera is not very good at providing it
|
|
68
64
|
// reliably in other circumstances.
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
const stacktrace = ex.stacktrace || ex.stack || '';
|
|
66
|
+
const popSize = getPopSize(ex);
|
|
71
67
|
try {
|
|
72
|
-
return
|
|
68
|
+
return stackParser(stacktrace, popSize);
|
|
73
69
|
}
|
|
74
70
|
catch (e) {
|
|
75
71
|
// no-empty
|
|
@@ -78,7 +74,7 @@ function parseStackFrames(ex) {
|
|
|
78
74
|
}
|
|
79
75
|
exports.parseStackFrames = parseStackFrames;
|
|
80
76
|
// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108
|
|
81
|
-
|
|
77
|
+
const reactMinifiedRegexp = /Minified React error #\d+;/i;
|
|
82
78
|
function getPopSize(ex) {
|
|
83
79
|
if (ex) {
|
|
84
80
|
if (typeof ex.framesToPop === 'number') {
|
|
@@ -96,7 +92,7 @@ function getPopSize(ex) {
|
|
|
96
92
|
* In this specific case we try to extract stacktrace.message.error.message
|
|
97
93
|
*/
|
|
98
94
|
function extractMessage(ex) {
|
|
99
|
-
|
|
95
|
+
const message = ex && ex.message;
|
|
100
96
|
if (!message) {
|
|
101
97
|
return 'No error message';
|
|
102
98
|
}
|
|
@@ -109,11 +105,11 @@ function extractMessage(ex) {
|
|
|
109
105
|
* Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.
|
|
110
106
|
* @hidden
|
|
111
107
|
*/
|
|
112
|
-
function eventFromException(exception, hint, attachStacktrace) {
|
|
113
|
-
|
|
114
|
-
|
|
108
|
+
function eventFromException(stackParser, exception, hint, attachStacktrace) {
|
|
109
|
+
const syntheticException = (hint && hint.syntheticException) || undefined;
|
|
110
|
+
const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);
|
|
115
111
|
utils_1.addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }
|
|
116
|
-
event.level =
|
|
112
|
+
event.level = 'error';
|
|
117
113
|
if (hint && hint.event_id) {
|
|
118
114
|
event.event_id = hint.event_id;
|
|
119
115
|
}
|
|
@@ -124,10 +120,11 @@ exports.eventFromException = eventFromException;
|
|
|
124
120
|
* Builds and Event from a Message
|
|
125
121
|
* @hidden
|
|
126
122
|
*/
|
|
127
|
-
function eventFromMessage(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
123
|
+
function eventFromMessage(stackParser, message,
|
|
124
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
125
|
+
level = 'info', hint, attachStacktrace) {
|
|
126
|
+
const syntheticException = (hint && hint.syntheticException) || undefined;
|
|
127
|
+
const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);
|
|
131
128
|
event.level = level;
|
|
132
129
|
if (hint && hint.event_id) {
|
|
133
130
|
event.event_id = hint.event_id;
|
|
@@ -138,12 +135,12 @@ exports.eventFromMessage = eventFromMessage;
|
|
|
138
135
|
/**
|
|
139
136
|
* @hidden
|
|
140
137
|
*/
|
|
141
|
-
function eventFromUnknownInput(exception, syntheticException, attachStacktrace, isUnhandledRejection) {
|
|
142
|
-
|
|
138
|
+
function eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace, isUnhandledRejection) {
|
|
139
|
+
let event;
|
|
143
140
|
if (utils_1.isErrorEvent(exception) && exception.error) {
|
|
144
141
|
// If it is an ErrorEvent with `error` property, extract it to get actual Error
|
|
145
|
-
|
|
146
|
-
return eventFromError(errorEvent.error);
|
|
142
|
+
const errorEvent = exception;
|
|
143
|
+
return eventFromError(stackParser, errorEvent.error);
|
|
147
144
|
}
|
|
148
145
|
// If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name
|
|
149
146
|
// and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be
|
|
@@ -153,31 +150,31 @@ function eventFromUnknownInput(exception, syntheticException, attachStacktrace,
|
|
|
153
150
|
// https://developer.mozilla.org/en-US/docs/Web/API/DOMException
|
|
154
151
|
// https://webidl.spec.whatwg.org/#es-DOMException-specialness
|
|
155
152
|
if (utils_1.isDOMError(exception) || utils_1.isDOMException(exception)) {
|
|
156
|
-
|
|
153
|
+
const domException = exception;
|
|
157
154
|
if ('stack' in exception) {
|
|
158
|
-
event = eventFromError(exception);
|
|
155
|
+
event = eventFromError(stackParser, exception);
|
|
159
156
|
}
|
|
160
157
|
else {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
event = eventFromString(message, syntheticException, attachStacktrace);
|
|
158
|
+
const name = domException.name || (utils_1.isDOMError(domException) ? 'DOMError' : 'DOMException');
|
|
159
|
+
const message = domException.message ? `${name}: ${domException.message}` : name;
|
|
160
|
+
event = eventFromString(stackParser, message, syntheticException, attachStacktrace);
|
|
164
161
|
utils_1.addExceptionTypeValue(event, message);
|
|
165
162
|
}
|
|
166
163
|
if ('code' in domException) {
|
|
167
|
-
event.tags =
|
|
164
|
+
event.tags = Object.assign(Object.assign({}, event.tags), { 'DOMException.code': `${domException.code}` });
|
|
168
165
|
}
|
|
169
166
|
return event;
|
|
170
167
|
}
|
|
171
168
|
if (utils_1.isError(exception)) {
|
|
172
169
|
// we have a real Error object, do nothing
|
|
173
|
-
return eventFromError(exception);
|
|
170
|
+
return eventFromError(stackParser, exception);
|
|
174
171
|
}
|
|
175
172
|
if (utils_1.isPlainObject(exception) || utils_1.isEvent(exception)) {
|
|
176
173
|
// If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize
|
|
177
174
|
// it manually. This will allow us to group events based on top-level keys which is much better than creating a new
|
|
178
175
|
// group on any key/value change.
|
|
179
|
-
|
|
180
|
-
event = eventFromPlainObject(objectException, syntheticException, isUnhandledRejection);
|
|
176
|
+
const objectException = exception;
|
|
177
|
+
event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);
|
|
181
178
|
utils_1.addExceptionMechanism(event, {
|
|
182
179
|
synthetic: true,
|
|
183
180
|
});
|
|
@@ -192,8 +189,8 @@ function eventFromUnknownInput(exception, syntheticException, attachStacktrace,
|
|
|
192
189
|
// - a plain Object
|
|
193
190
|
//
|
|
194
191
|
// So bail out and capture it as a simple message:
|
|
195
|
-
event = eventFromString(exception, syntheticException, attachStacktrace);
|
|
196
|
-
utils_1.addExceptionTypeValue(event,
|
|
192
|
+
event = eventFromString(stackParser, exception, syntheticException, attachStacktrace);
|
|
193
|
+
utils_1.addExceptionTypeValue(event, `${exception}`, undefined);
|
|
197
194
|
utils_1.addExceptionMechanism(event, {
|
|
198
195
|
synthetic: true,
|
|
199
196
|
});
|
|
@@ -203,14 +200,16 @@ exports.eventFromUnknownInput = eventFromUnknownInput;
|
|
|
203
200
|
/**
|
|
204
201
|
* @hidden
|
|
205
202
|
*/
|
|
206
|
-
function eventFromString(input, syntheticException, attachStacktrace) {
|
|
207
|
-
|
|
203
|
+
function eventFromString(stackParser, input, syntheticException, attachStacktrace) {
|
|
204
|
+
const event = {
|
|
208
205
|
message: input,
|
|
209
206
|
};
|
|
210
207
|
if (attachStacktrace && syntheticException) {
|
|
211
|
-
|
|
212
|
-
if (
|
|
213
|
-
event.
|
|
208
|
+
const frames = parseStackFrames(stackParser, syntheticException);
|
|
209
|
+
if (frames.length) {
|
|
210
|
+
event.exception = {
|
|
211
|
+
values: [{ value: input, stacktrace: { frames } }],
|
|
212
|
+
};
|
|
214
213
|
}
|
|
215
214
|
}
|
|
216
215
|
return event;
|
|
@@ -0,0 +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 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
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { Breadcrumb, BreadcrumbHint, Request, SdkInfo, Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, Stacktrace, Thread, User, } from '@sentry/types';
|
|
2
|
+
export type { BrowserOptions } from './client';
|
|
3
|
+
export type { ReportDialogOptions } from './helpers';
|
|
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
|
+
export { BrowserClient } from './client';
|
|
6
|
+
export { makeFetchTransport, makeXHRTransport } from './transports';
|
|
7
|
+
export { defaultStackParser, defaultStackLineParsers, chromeStackLineParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser, } from './stack-parsers';
|
|
8
|
+
export { defaultIntegrations, forceLoad, init, lastEventId, onLoad, showReportDialog, flush, close, wrap } from './sdk';
|
|
9
|
+
export { SDK_NAME } from './version';
|
|
10
|
+
export { GlobalHandlers, TryCatch, Breadcrumbs, LinkedErrors, UserAgent, Dedupe } from './integrations';
|
|
11
|
+
//# sourceMappingURL=exports.d.ts.map
|
|
@@ -0,0 +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,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/{dist → cjs}/exports.js
RENAMED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
-
var types_1 = require("@sentry/types");
|
|
3
|
-
exports.Severity = types_1.Severity;
|
|
4
2
|
var core_1 = require("@sentry/core");
|
|
5
3
|
exports.addGlobalEventProcessor = core_1.addGlobalEventProcessor;
|
|
6
4
|
exports.addBreadcrumb = core_1.addBreadcrumb;
|
|
@@ -8,6 +6,7 @@ exports.captureException = core_1.captureException;
|
|
|
8
6
|
exports.captureEvent = core_1.captureEvent;
|
|
9
7
|
exports.captureMessage = core_1.captureMessage;
|
|
10
8
|
exports.configureScope = core_1.configureScope;
|
|
9
|
+
exports.createTransport = core_1.createTransport;
|
|
11
10
|
exports.getHubFromCarrier = core_1.getHubFromCarrier;
|
|
12
11
|
exports.getCurrentHub = core_1.getCurrentHub;
|
|
13
12
|
exports.Hub = core_1.Hub;
|
|
@@ -23,13 +22,21 @@ exports.setTag = core_1.setTag;
|
|
|
23
22
|
exports.setTags = core_1.setTags;
|
|
24
23
|
exports.setUser = core_1.setUser;
|
|
25
24
|
exports.withScope = core_1.withScope;
|
|
25
|
+
exports.FunctionToString = core_1.FunctionToString;
|
|
26
|
+
exports.InboundFilters = core_1.InboundFilters;
|
|
26
27
|
var client_1 = require("./client");
|
|
27
28
|
exports.BrowserClient = client_1.BrowserClient;
|
|
28
|
-
var
|
|
29
|
-
exports.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
exports.
|
|
29
|
+
var transports_1 = require("./transports");
|
|
30
|
+
exports.makeFetchTransport = transports_1.makeFetchTransport;
|
|
31
|
+
exports.makeXHRTransport = transports_1.makeXHRTransport;
|
|
32
|
+
var stack_parsers_1 = require("./stack-parsers");
|
|
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;
|
|
33
40
|
var sdk_1 = require("./sdk");
|
|
34
41
|
exports.defaultIntegrations = sdk_1.defaultIntegrations;
|
|
35
42
|
exports.forceLoad = sdk_1.forceLoad;
|
|
@@ -42,4 +49,11 @@ exports.close = sdk_1.close;
|
|
|
42
49
|
exports.wrap = sdk_1.wrap;
|
|
43
50
|
var version_1 = require("./version");
|
|
44
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;
|
|
45
59
|
//# sourceMappingURL=exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../src/exports.ts"],"names":[],"mappings":";AAoBA,qCAyBsB;AAxBpB,yCAAA,uBAAuB,CAAA;AACvB,+BAAA,aAAa,CAAA;AACb,kCAAA,gBAAgB,CAAA;AAChB,8BAAA,YAAY,CAAA;AACZ,gCAAA,cAAc,CAAA;AACd,gCAAA,cAAc,CAAA;AACd,iCAAA,eAAe,CAAA;AACf,mCAAA,iBAAiB,CAAA;AACjB,+BAAA,aAAa,CAAA;AACb,qBAAA,GAAG,CAAA;AACH,0BAAA,QAAQ,CAAA;AACR,uBAAA,KAAK,CAAA;AACL,yBAAA,OAAO,CAAA;AACP,kCAAA,gBAAgB,CAAA;AAChB,6BAAA,WAAW,CAAA;AACX,4BAAA,UAAU,CAAA;AACV,0BAAA,QAAQ,CAAA;AACR,2BAAA,SAAS,CAAA;AACT,wBAAA,MAAM,CAAA;AACN,yBAAA,OAAO,CAAA;AACP,yBAAA,OAAO,CAAA;AACP,2BAAA,SAAS,CAAA;AACT,kCAAA,gBAAgB,CAAA;AAChB,gCAAA,cAAc,CAAA;AAGhB,mCAAyC;AAAhC,iCAAA,aAAa,CAAA;AACtB,2CAAoE;AAA3D,0CAAA,kBAAkB,CAAA;AAAE,wCAAA,gBAAgB,CAAA;AAC7C,iDAQyB;AAPvB,6CAAA,kBAAkB,CAAA;AAClB,kDAAA,uBAAuB,CAAA;AACvB,gDAAA,qBAAqB,CAAA;AACrB,+CAAA,oBAAoB,CAAA;AACpB,iDAAA,sBAAsB,CAAA;AACtB,iDAAA,sBAAsB,CAAA;AACtB,+CAAA,oBAAoB,CAAA;AAEtB,6BAAwH;AAA/G,oCAAA,mBAAmB,CAAA;AAAE,0BAAA,SAAS,CAAA;AAAE,qBAAA,IAAI,CAAA;AAAE,4BAAA,WAAW,CAAA;AAAE,uBAAA,MAAM,CAAA;AAAE,iCAAA,gBAAgB,CAAA;AAAE,sBAAA,KAAK,CAAA;AAAE,sBAAA,KAAK,CAAA;AAAE,qBAAA,IAAI,CAAA;AACxG,qCAAqC;AAA5B,6BAAA,QAAQ,CAAA;AACjB,+CAAwG;AAA/F,wCAAA,cAAc,CAAA;AAAE,kCAAA,QAAQ,CAAA;AAAE,qCAAA,WAAW,CAAA;AAAE,sCAAA,YAAY,CAAA;AAAE,mCAAA,SAAS,CAAA;AAAE,gCAAA,MAAM,CAAA","sourcesContent":["export type {\n Breadcrumb,\n BreadcrumbHint,\n Request,\n SdkInfo,\n Event,\n EventHint,\n Exception,\n // eslint-disable-next-line deprecation/deprecation\n Severity,\n SeverityLevel,\n StackFrame,\n Stacktrace,\n Thread,\n User,\n} from '@sentry/types';\n\nexport type { BrowserOptions } from './client';\nexport type { ReportDialogOptions } from './helpers';\n\nexport {\n addGlobalEventProcessor,\n addBreadcrumb,\n captureException,\n captureEvent,\n captureMessage,\n configureScope,\n createTransport,\n getHubFromCarrier,\n getCurrentHub,\n Hub,\n makeMain,\n Scope,\n Session,\n startTransaction,\n SDK_VERSION,\n setContext,\n setExtra,\n setExtras,\n setTag,\n setTags,\n setUser,\n withScope,\n FunctionToString,\n InboundFilters,\n} from '@sentry/core';\n\nexport { BrowserClient } from './client';\nexport { makeFetchTransport, makeXHRTransport } from './transports';\nexport {\n defaultStackParser,\n defaultStackLineParsers,\n chromeStackLineParser,\n geckoStackLineParser,\n opera10StackLineParser,\n opera11StackLineParser,\n winjsStackLineParser,\n} from './stack-parsers';\nexport { defaultIntegrations, forceLoad, init, lastEventId, onLoad, showReportDialog, flush, close, wrap } from './sdk';\nexport { SDK_NAME } from './version';\nexport { GlobalHandlers, TryCatch, Breadcrumbs, LinkedErrors, UserAgent, Dedupe } from './integrations';\n"]}
|
package/{dist → cjs}/flags.d.ts
RENAMED
|
File without changes
|
|
File without changes
|
package/{dist → cjs}/flags.js
RENAMED
|
File without changes
|
|
File without changes
|
|
@@ -44,9 +44,4 @@ export interface ReportDialogOptions {
|
|
|
44
44
|
/** Callback after reportDialog showed up */
|
|
45
45
|
onLoad?(): void;
|
|
46
46
|
}
|
|
47
|
-
/**
|
|
48
|
-
* Injects the Report Dialog script
|
|
49
|
-
* @hidden
|
|
50
|
-
*/
|
|
51
|
-
export declare function injectReportDialog(options?: ReportDialogOptions): void;
|
|
52
47
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAwB,SAAS,EAAS,eAAe,EAAE,MAAM,eAAe,CAAC;AAWjG;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAClB,EAAE,EAAE,eAAe,EACnB,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,SAAS,CAAC;CAClB,EACN,MAAM,CAAC,EAAE,eAAe,GAEvB,GAAG,CAyGL;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAElC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,MAAM,CAAC,IAAI,IAAI,CAAC;CACjB"}
|