Skip to content

Commit bd38f37

Browse files
committed
feat: Make @sentry/browser more treeshakeable
For Electron
1 parent 9041c1d commit bd38f37

File tree

4 files changed

+60
-63
lines changed

4 files changed

+60
-63
lines changed

packages/browser/src/backend.ts

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { BaseBackend } from '@sentry/core';
22
import { Event, EventHint, Options, Severity, Transport } from '@sentry/types';
3-
import { addExceptionMechanism, supportsFetch, SyncPromise } from '@sentry/utils';
3+
import { supportsFetch } from '@sentry/utils';
44

5-
import { eventFromString, eventFromUnknownInput } from './eventbuilder';
5+
import { eventFromException, eventFromMessage } from './eventbuilder';
66
import { FetchTransport, XHRTransport } from './transports';
77

88
/**
@@ -63,32 +63,12 @@ export class BrowserBackend extends BaseBackend<BrowserOptions> {
6363
* @inheritDoc
6464
*/
6565
public eventFromException(exception: any, hint?: EventHint): PromiseLike<Event> {
66-
const syntheticException = (hint && hint.syntheticException) || undefined;
67-
const event = eventFromUnknownInput(exception, syntheticException, {
68-
attachStacktrace: this._options.attachStacktrace,
69-
});
70-
addExceptionMechanism(event, {
71-
handled: true,
72-
type: 'generic',
73-
});
74-
event.level = Severity.Error;
75-
if (hint && hint.event_id) {
76-
event.event_id = hint.event_id;
77-
}
78-
return SyncPromise.resolve(event);
66+
return eventFromException(this._options, exception, hint);
7967
}
8068
/**
8169
* @inheritDoc
8270
*/
8371
public eventFromMessage(message: string, level: Severity = Severity.Info, hint?: EventHint): PromiseLike<Event> {
84-
const syntheticException = (hint && hint.syntheticException) || undefined;
85-
const event = eventFromString(message, syntheticException, {
86-
attachStacktrace: this._options.attachStacktrace,
87-
});
88-
event.level = level;
89-
if (hint && hint.event_id) {
90-
event.event_id = hint.event_id;
91-
}
92-
return SyncPromise.resolve(event);
72+
return eventFromMessage(this._options, message, level, hint);
9373
}
9474
}

packages/browser/src/eventbuilder.ts

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Event } from '@sentry/types';
1+
import { Event, EventHint, Options, Severity } from '@sentry/types';
22
import {
33
addExceptionMechanism,
44
addExceptionTypeValue,
@@ -8,11 +8,51 @@ import {
88
isErrorEvent,
99
isEvent,
1010
isPlainObject,
11+
SyncPromise,
1112
} from '@sentry/utils';
1213

1314
import { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';
1415
import { computeStackTrace } from './tracekit';
1516

17+
/**
18+
* Builds and Event from a Exception
19+
*/
20+
export function eventFromException(options: Options, exception: any, hint?: EventHint): PromiseLike<Event> {
21+
const syntheticException = (hint && hint.syntheticException) || undefined;
22+
const event = eventFromUnknownInput(exception, syntheticException, {
23+
attachStacktrace: options.attachStacktrace,
24+
});
25+
addExceptionMechanism(event, {
26+
handled: true,
27+
type: 'generic',
28+
});
29+
event.level = Severity.Error;
30+
if (hint && hint.event_id) {
31+
event.event_id = hint.event_id;
32+
}
33+
return SyncPromise.resolve(event);
34+
}
35+
36+
/**
37+
* Builds and Event from a Message
38+
*/
39+
export function eventFromMessage(
40+
options: Options,
41+
message: string,
42+
level: Severity = Severity.Info,
43+
hint?: EventHint,
44+
): PromiseLike<Event> {
45+
const syntheticException = (hint && hint.syntheticException) || undefined;
46+
const event = eventFromString(message, syntheticException, {
47+
attachStacktrace: options.attachStacktrace,
48+
});
49+
event.level = level;
50+
if (hint && hint.event_id) {
51+
event.event_id = hint.event_id;
52+
}
53+
return SyncPromise.resolve(event);
54+
}
55+
1656
/** JSDoc */
1757
export function eventFromUnknownInput(
1858
exception: unknown,

packages/browser/src/index.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ export * from './exports';
33
import { Integrations as CoreIntegrations } from '@sentry/core';
44
import { getGlobalObject } from '@sentry/utils';
55

6-
import * as BrowserIntegrations from './integrations';
7-
import * as Transports from './transports';
6+
import { Breadcrumbs, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';
7+
import { BaseTransport, FetchTransport, XHRTransport } from './transports';
88

99
let windowIntegrations = {};
1010

@@ -19,7 +19,17 @@ if (_window.Sentry && _window.Sentry.Integrations) {
1919
const INTEGRATIONS = {
2020
...windowIntegrations,
2121
...CoreIntegrations,
22-
...BrowserIntegrations,
22+
Breadcrumbs,
23+
GlobalHandlers,
24+
LinkedErrors,
25+
TryCatch,
26+
UserAgent,
2327
};
2428

25-
export { INTEGRATIONS as Integrations, Transports };
29+
const TRANSPORTS = {
30+
BaseTransport,
31+
FetchTransport,
32+
XHRTransport,
33+
};
34+
35+
export { INTEGRATIONS as Integrations, TRANSPORTS as Transports };

yarn.lock

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1833,32 +1833,11 @@ [email protected]:
18331833
version "0.8.2"
18341834
resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
18351835

1836-
agent-base@4, agent-base@^4.3.0:
1837-
version "4.3.0"
1838-
resolved "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee"
1839-
integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==
1840-
dependencies:
1841-
es6-promisify "^5.0.0"
1842-
1843-
agent-base@5:
1836+
agent-base@4, agent-base@5, agent-base@6, agent-base@^4.3.0, agent-base@~4.2.0:
18441837
version "5.1.1"
18451838
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c"
18461839
integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==
18471840

1848-
agent-base@6:
1849-
version "6.0.0"
1850-
resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a"
1851-
integrity sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==
1852-
dependencies:
1853-
debug "4"
1854-
1855-
agent-base@~4.2.0:
1856-
version "4.2.1"
1857-
resolved "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
1858-
integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==
1859-
dependencies:
1860-
es6-promisify "^5.0.0"
1861-
18621841
agentkeepalive@^3.4.1:
18631842
version "3.5.2"
18641843
resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67"
@@ -4619,18 +4598,6 @@ es-to-primitive@^1.1.1, es-to-primitive@^1.2.0:
46194598
is-date-object "^1.0.1"
46204599
is-symbol "^1.0.2"
46214600

4622-
es6-promise@^4.0.3:
4623-
version "4.2.8"
4624-
resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
4625-
integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
4626-
4627-
es6-promisify@^5.0.0:
4628-
version "5.0.0"
4629-
resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
4630-
integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
4631-
dependencies:
4632-
es6-promise "^4.0.3"
4633-
46344601
escape-html@~1.0.3:
46354602
version "1.0.3"
46364603
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"

0 commit comments

Comments
 (0)