@@ -13,19 +13,20 @@ function getSdkMetadataForEnvelopeHeader(api: API): SdkInfo | undefined {
1313}
1414
1515/**
16- * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.
17- * Merge with existing data if any.
16+ * Add SDK metadata (name, version, packages, integrations) to the event.
17+ *
18+ * Mutates the object in place. If prior metadata exists, it will be merged with the given metadata.
1819 **/
19- function enhanceEventWithSdkInfo ( event : Event , sdkInfo ?: SdkInfo ) : Event {
20+ function enhanceEventWithSdkInfo ( event : Event , sdkInfo ?: SdkInfo ) : void {
2021 if ( ! sdkInfo ) {
21- return event ;
22+ return ;
2223 }
2324 event . sdk = event . sdk || { } ;
2425 event . sdk . name = event . sdk . name || sdkInfo . name ;
2526 event . sdk . version = event . sdk . version || sdkInfo . version ;
2627 event . sdk . integrations = [ ...( event . sdk . integrations || [ ] ) , ...( sdkInfo . integrations || [ ] ) ] ;
2728 event . sdk . packages = [ ...( event . sdk . packages || [ ] ) , ...( sdkInfo . packages || [ ] ) ] ;
28- return event ;
29+ return ;
2930}
3031
3132/** Creates a SentryRequest from a Session. */
@@ -55,11 +56,7 @@ export function eventToSentryRequest(event: Event, api: API): SentryRequest {
5556 const eventType = event . type || 'event' ;
5657 const useEnvelope = eventType === 'transaction' || api . forceEnvelope ( ) ;
5758
58- const req : SentryRequest = {
59- body : JSON . stringify ( sdkInfo ? enhanceEventWithSdkInfo ( event , api . metadata . sdk ) : event ) ,
60- type : eventType ,
61- url : useEnvelope ? api . getEnvelopeEndpointWithUrlEncodedAuth ( ) : api . getStoreEndpointWithUrlEncodedAuth ( ) ,
62- } ;
59+ enhanceEventWithSdkInfo ( event , api . metadata . sdk ) ;
6360
6461 // Since we don't need to manipulate envelopes nor store them, there is no exported concept of an Envelope with
6562 // operations including serialization and deserialization. Instead, we only implement a minimal subset of the spec to
@@ -118,11 +115,22 @@ export function eventToSentryRequest(event: Event, api: API): SentryRequest {
118115
119116 const itemHeaders = JSON . stringify ( itemHeaderEntries ) ;
120117
118+ const eventJSON = JSON . stringify ( event ) ;
119+
121120 // The trailing newline is optional; leave it off to avoid sending unnecessary bytes. (Would be
122121 // `const envelope = `${envelopeHeaders}\n${itemHeaders}\n${req.body}\n`;`.)
123- const envelope = `${ envelopeHeaders } \n${ itemHeaders } \n${ req . body } ` ;
124- req . body = envelope ;
122+ const envelope = `${ envelopeHeaders } \n${ itemHeaders } \n${ eventJSON } ` ;
123+
124+ return {
125+ body : envelope ,
126+ type : eventType ,
127+ url : api . getEnvelopeEndpointWithUrlEncodedAuth ( ) ,
128+ } ;
125129 }
126130
127- return req ;
131+ return {
132+ body : JSON . stringify ( event ) ,
133+ type : eventType ,
134+ url : api . getStoreEndpointWithUrlEncodedAuth ( ) ,
135+ } ;
128136}
0 commit comments