1 | import { dsnToString, createEnvelope, dropUndefinedKeys } from '@sentry/utils';
|
2 |
|
3 |
|
4 | function getSdkMetadataForEnvelopeHeader(metadata) {
|
5 | if (!metadata || !metadata.sdk) {
|
6 | return;
|
7 | }
|
8 | const { name, version } = metadata.sdk;
|
9 | return { name, version };
|
10 | }
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 | function enhanceEventWithSdkInfo(event, sdkInfo) {
|
17 | if (!sdkInfo) {
|
18 | return event;
|
19 | }
|
20 | event.sdk = event.sdk || {};
|
21 | event.sdk.name = event.sdk.name || sdkInfo.name;
|
22 | event.sdk.version = event.sdk.version || sdkInfo.version;
|
23 | event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];
|
24 | event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];
|
25 | return event;
|
26 | }
|
27 |
|
28 |
|
29 | function createSessionEnvelope(
|
30 | session,
|
31 | dsn,
|
32 | metadata,
|
33 | tunnel,
|
34 | ) {
|
35 | var sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);
|
36 | var envelopeHeaders = {
|
37 | sent_at: new Date().toISOString(),
|
38 | ...(sdkInfo && { sdk: sdkInfo }),
|
39 | ...(!!tunnel && { dsn: dsnToString(dsn) }),
|
40 | };
|
41 |
|
42 | var envelopeItem =
|
43 | 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session];
|
44 |
|
45 | return createEnvelope(envelopeHeaders, [envelopeItem]);
|
46 | }
|
47 |
|
48 |
|
49 |
|
50 |
|
51 | function createEventEnvelope(
|
52 | event,
|
53 | dsn,
|
54 | metadata,
|
55 | tunnel,
|
56 | ) {
|
57 | var sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);
|
58 | var eventType = event.type || 'event';
|
59 |
|
60 | enhanceEventWithSdkInfo(event, metadata && metadata.sdk);
|
61 |
|
62 | var envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 | delete event.sdkProcessingMetadata;
|
69 |
|
70 | var eventItem = [{ type: eventType }, event];
|
71 | return createEnvelope(envelopeHeaders, [eventItem]);
|
72 | }
|
73 |
|
74 | function createEventEnvelopeHeaders(
|
75 | event,
|
76 | sdkInfo,
|
77 | tunnel,
|
78 | dsn,
|
79 | ) {
|
80 | var dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;
|
81 |
|
82 | return {
|
83 | event_id: event.event_id ,
|
84 | sent_at: new Date().toISOString(),
|
85 | ...(sdkInfo && { sdk: sdkInfo }),
|
86 | ...(!!tunnel && { dsn: dsnToString(dsn) }),
|
87 | ...(event.type === 'transaction' &&
|
88 | dynamicSamplingContext && {
|
89 | trace: dropUndefinedKeys({ ...dynamicSamplingContext }),
|
90 | }),
|
91 | };
|
92 | }
|
93 |
|
94 | export { createEventEnvelope, createSessionEnvelope };
|
95 |
|