@@ -313,39 +313,47 @@ export class Breadcrumbs implements Integration {
313
313
function addSentryBreadcrumb ( serializedData : string ) : void {
314
314
// There's always something that can go wrong with deserialization...
315
315
try {
316
- try {
317
- const event = JSON . parse ( serializedData ) ;
318
- getCurrentHub ( ) . addBreadcrumb (
319
- {
320
- category : `sentry.${ event . type === 'transaction' ? 'transaction' : 'event' } ` ,
321
- event_id : event . event_id ,
322
- level : event . level || Severity . fromString ( 'error' ) ,
323
- message : getEventDescription ( event ) ,
324
- } ,
325
- {
326
- event,
327
- } ,
328
- ) ;
329
- } catch ( _oO ) {
330
- // We are dealing with an envelope here
331
- // For simplicity we only deal with transactions
332
- const envelopeLines = serializedData . split ( '\n' ) ;
333
- const envelopeHeader = JSON . parse ( envelopeLines [ 0 ] ) ;
334
- const itemHeader = JSON . parse ( envelopeLines [ 1 ] ) ;
335
- const item = JSON . parse ( envelopeLines [ 2 ] ) ;
336
- getCurrentHub ( ) . addBreadcrumb (
337
- {
338
- category : `sentry.${ itemHeader . type } ` ,
339
- event_id : envelopeHeader . event_id ,
340
- level : item . level ,
341
- message : getEventDescription ( item ) ,
342
- } ,
343
- {
344
- item,
345
- } ,
346
- ) ;
347
- }
348
- } catch ( _oO ) {
349
- logger . error ( 'Error while adding sentry type breadcrumb' ) ;
316
+ const event = JSON . parse ( serializedData ) ;
317
+ getCurrentHub ( ) . addBreadcrumb (
318
+ {
319
+ category : `sentry.${ event . type === 'transaction' ? 'transaction' : 'event' } ` ,
320
+ event_id : event . event_id ,
321
+ level : event . level || Severity . fromString ( 'error' ) ,
322
+ message : getEventDescription ( event ) ,
323
+ } ,
324
+ {
325
+ event,
326
+ } ,
327
+ ) ;
328
+ } catch ( error ) {
329
+ logger . error ( 'Error while adding sentry type breadcrumb will try envelope' , error ) ;
330
+ addSentryBreadcrumbWithEnvelope ( serializedData ) ;
331
+ }
332
+ }
333
+
334
+ /**
335
+ * Does the same as {@link addSentryBreadcrumb} but works with envelope
336
+ */
337
+ function addSentryBreadcrumbWithEnvelope ( envelope : string ) : void {
338
+ try {
339
+ // We are dealing with an envelope here
340
+ // For simplicity we only deal with transactions
341
+ const envelopeLines = envelope . split ( '\n' ) ;
342
+ const envelopeHeader = JSON . parse ( envelopeLines [ 0 ] ) ;
343
+ const itemHeader = JSON . parse ( envelopeLines [ 1 ] ) ;
344
+ const item = JSON . parse ( envelopeLines [ 2 ] ) ;
345
+ getCurrentHub ( ) . addBreadcrumb (
346
+ {
347
+ category : `sentry.${ itemHeader . type } ` ,
348
+ event_id : envelopeHeader . event_id ,
349
+ level : item . level ,
350
+ message : getEventDescription ( item ) ,
351
+ } ,
352
+ {
353
+ item,
354
+ } ,
355
+ ) ;
356
+ } catch ( error ) {
357
+ logger . error ( 'Error while adding sentry type breadcrumb' , error ) ;
350
358
}
351
359
}
0 commit comments