8000 ref(core): Move `getSdkMetadataForEnvelopeHeader` to utils (#6527) · danieliu/sentry-javascript@402ccd7 · GitHub
[go: up one dir, main page]

Skip to content

Commit 402ccd7

Browse files
authored
ref(core): Move getSdkMetadataForEnvelopeHeader to utils (getsentry#6527)
We want to use `getSdkMetadataForEnvelopeHeader` in Replay to not have duplicated minimal SDKInfo extraction logic. I checked that envelope helper functions are usually publicly exposed from the utils package only (which makes sense to me). So, this PR moves the function from core to utils and calls it in the replay envelope creation function. Note that I changed the input type to accept both, an `Event` as well as `SdkMetadata`, as both have the `sdk: SdkInfo` property. Since `getSdkMetadataForEnvelopeHeader` wasn't exported before, I think we don't have to worry about a breaking change here.
1 parent 2225d16 commit 402ccd7

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

packages/core/src/envelope.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,7 @@ import {
1111
SessionEnvelope,
1212
SessionItem,
1313
} from '@sentry/types';
14-
import { createEnvelope, dropUndefinedKeys, dsnToString } from '@sentry/utils';
15-
16-
/** Extract sdk info from from the API metadata */
17-
function getSdkMetadataForEnvelopeHeader(metadata?: SdkMetadata): SdkInfo | undefined {
18-
if (!metadata || !metadata.sdk) {
19-
return;
20-
}
21-
const { name, version } = metadata.sdk;
22-
return { name, version };
23-
}
14+
import { createEnvelope, dropUndefinedKeys, dsnToString, getSdkMetadataForEnvelopeHeader } from '@sentry/utils';
2415

2516
/**
2617
* Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.

packages/replay/src/util/createReplayEnvelope.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import { Envelope, Event } from '@sentry/types';
2-
import { createEnvelope } from '@sentry/utils';
2+
import { createEnvelope, getSdkMetadataForEnvelopeHeader } from '@sentry/utils';
33

44
export function createReplayEnvelope(
55
replayId: string,
66
replayEvent: Event,
77
payloadWithSequence: string | Uint8Array,
88
): Envelope {
9-
const { name, version } = replayEvent.sdk || {};
109
return createEnvelope(
1110
{
1211
event_id: replayId,
1312
sent_at: new Date().toISOString(),
14-
sdk: { name, version },
13+
sdk: getSdkMetadataForEnvelopeHeader(replayEvent),
1514
},
1615
[
1716
// @ts-ignore New types

packages/utils/src/envelope.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import {
55
Envelope,
66
EnvelopeItem,
77
EnvelopeItemType,
8+
Event,
9+
SdkInfo,
10+
SdkMetadata,
811
TextEncoderInternal,
912
} from '@sentry/types';
1013

@@ -142,3 +145,12 @@ const ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record<EnvelopeItemType, DataCategory> = {
142145
export function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {
143146
return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];
144147
}
148+
149+
/** Extracts the minimal SDK info from from the metadata or an events */
150+
export function getSdkMetadataForEnvelopeHeader(metadataOrEvent?: SdkMetadata | Event): SdkInfo | undefined {
151+
if (!metadataOrEvent || !metadataOrEvent.sdk) {
152+
return;
153+
}
154+
const { name, version } = metadataOrEvent.sdk;
155+
return { name, version };
156+
}

0 commit comments

Comments
 (0)
0