Skip to content

Commit 8eb52a3

Browse files
committed
add sdk info to envelope header
1 parent 254fc2c commit 8eb52a3

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

packages/core/src/request.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import { Event, SentryRequest, Session } from '@sentry/types';
2+
import { getGlobalObject } from '@sentry/utils';
23

34
import { API } from './api';
45

56
/** Creates a SentryRequest from an event. */
67
export function sessionToSentryRequest(session: Session, api: API): SentryRequest {
8+
const { name, version } = getGlobalObject().__SENTRY__?.sdkInfo || {};
79
const envelopeHeaders = JSON.stringify({
810
sent_at: new Date().toISOString(),
11+
sdk: { name, version },
912
});
1013
const itemHeaders = JSON.stringify({
1114
type: 'session',
@@ -39,9 +42,12 @@ export function eventToSentryRequest(event: Event, api: API): SentryRequest {
3942
// deserialization. Instead, we only implement a minimal subset of the spec to
4043
// serialize events inline here.
4144
if (useEnvelope) {
45+
const { name, version } = getGlobalObject().__SENTRY__?.sdkInfo || {};
46+
4247
const envelopeHeaders = JSON.stringify({
4348
event_id: event.event_id,
4449
sent_at: new Date().toISOString(),
50+
sdk: { name, version },
4551
});
4652
const itemHeaders = JSON.stringify({
4753
type: event.type,

packages/core/test/lib/request.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Event, TransactionSamplingMethod } from '@sentry/types';
2+
import { getGlobalObject } from '@sentry/utils';
23

34
import { API } from '../../src/api';
45
import { eventToSentryRequest } from '../../src/request';
@@ -53,4 +54,22 @@ describe('eventToSentryRequest', () => {
5354
expect('dog' in envelope.event.tags).toBe(true);
5455
});
5556
});
57+
58+
it('adds sdk metadata to envelope header', () => {
59+
getGlobalObject().__SENTRY__ = { sdkInfo: { name: 'sentry.javascript.browser', version: '12.31.12' } } as any;
60+
61+
const result = eventToSentryRequest(event as Event, api);
62+
63+
const [envelopeHeaderString, itemHeaderString, eventString] = result.body.split('\n');
64+
65+
const envelope = {
66+
envelopeHeader: JSON.parse(envelopeHeaderString),
67+
itemHeader: JSON.parse(itemHeaderString),
68+
event: JSON.parse(eventString),
69+
};
70+
71+
expect(envelope.envelopeHeader).toEqual(
72+
expect.objectContaining({ sdk: { name: 'sentry.javascript.browser', version: '12.31.12' } }),
73+
);
74+
});
5675
});

0 commit comments

Comments
 (0)