Skip to content

Commit c51ed56

Browse files
authored
feat(browser): Track if cdn or npm bundle (#6976)
1 parent 8c350e7 commit c51ed56

File tree

4 files changed

+31
-3
lines changed

4 files changed

+31
-3
lines changed

packages/browser/src/client.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ import type {
99
Severity,
1010
SeverityLevel,
1111
} from '@sentry/types';
12-
import { createClientReportEnvelope, dsnToString, logger, serializeEnvelope } from '@sentry/utils';
12+
import { createClientReportEnvelope, dsnToString, getSDKSource, logger, serializeEnvelope } from '@sentry/utils';
1313

1414
import { eventFromException, eventFromMessage } from './eventbuilder';
1515
import { WINDOW } from './helpers';
1616
import type { Breadcrumbs } from './integrations';
1717
import { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs';
1818
import type { BrowserTransportOptions } from './transports/types';
19+
1920
/**
2021
* Configuration options for the Sentry Browser SDK.
2122
* @see @sentry/types Options for more information.
@@ -41,12 +42,14 @@ export class BrowserClient extends BaseClient<BrowserClientOptions> {
4142
* @param options Configuration options for this SDK.
4243
*/
4344
public constructor(options: BrowserClientOptions) {
45+
const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();
46+
4447
options._metadata = options._metadata || {};
4548
options._metadata.sdk = options._metadata.sdk || {
4649
name: 'sentry.javascript.browser',
4750
packages: [
4851
{
49-
name: 'npm:@sentry/browser',
52+
name: `${sdkSource}:@sentry/browser`,
5053
version: SDK_VERSION,
5154
},
5255
],

packages/browser/test/unit/index.test.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { getReportDialogEndpoint, SDK_VERSION } from '@sentry/core';
2+
import * as utils from '@sentry/utils';
23

34
import type { Event } from '../../src';
45
import {
@@ -277,6 +278,27 @@ describe('SentryBrowser initialization', () => {
277278
expect(sdkData?.version).toBe(SDK_VERSION);
278279
});
279280

281+
it('uses SDK source from window for package name', () => {
282+
global.SENTRY_SDK_SOURCE = 'loader';
283+
init({ dsn });
284+
285+
const sdkData = (getCurrentHub().getClient() as any).getOptions()._metadata.sdk;
286+
287+
expect(sdkData?.packages[0].name).toBe('loader:@sentry/browser');
288+
delete global.SENTRY_SDK_SOURCE;
289+
});
290+
291+
it('uses SDK source from global for package name', () => {
292+
const spy = jest.spyOn(utils, 'getSDKSource').mockReturnValue('cdn');
293+
init({ dsn });
294+
295+
const sdkData = (getCurrentHub().getClient() as any).getOptions()._metadata.sdk;
296+
297+
expect(sdkData?.packages[0].name).toBe('cdn:@sentry/browser');
298+
expect(utils.getSDKSource).toBeCalledTimes(1);
299+
spy.mockRestore();
300+
});
301+
280302
it('should set SDK data when instantiating a client directly', () => {
281303
const options = getDefaultBrowserClientOptions({ dsn });
282304
const client = new BrowserClient(options);

packages/utils/src/env.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
declare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;
1717

18-
type SdkSource = 'npm' | 'cdn' | 'loader';
18+
export type SdkSource = 'npm' | 'cdn' | 'loader';
1919

2020
/**
2121
* Figures out if we're building a browser bundle.

packages/utils/src/worldwide.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
import type { Integration } from '@sentry/types';
1616

17+
import type { SdkSource } from './env';
18+
1719
/** Internal global with common properties and Sentry extensions */
1820
export interface InternalGlobal {
1921
navigator?: { userAgent?: string };
@@ -26,6 +28,7 @@ export interface InternalGlobal {
2628
SENTRY_RELEASE?: {
2729
id?: string;
2830
};
31+
SENTRY_SDK_SOURCE?: SdkSource;
2932
__SENTRY__: {
3033
globalEventProcessors: any;
3134
hub: any;

0 commit comments

Comments
 (0)