@@ -613,13 +613,17 @@ export abstract class BaseClient<O extends ClientOptions> implements Client<O> {
613
613
* @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.
614
614
*/
615
615
protected _processEvent ( event : Event , hint : EventHint , scope ?: Scope ) : PromiseLike < Event > {
616
- const { beforeSend, sampleRate } = this . getOptions ( ) ;
616
+ const options = this . getOptions ( ) ;
617
+ const { sampleRate } = options ;
617
618
618
619
if ( ! this . _isEnabled ( ) ) {
619
620
return rejectedSyncPromise ( new SentryError ( 'SDK not enabled, will not capture event.' , 'log' ) ) ;
620
621
}
621
622
622
623
const isTransaction = event . type === 'transaction' ;
624
+ const beforeSendProcessorName = isTransaction ? 'beforeSendTransaction' : 'beforeSend' ;
625
+ const beforeSendProcessor = options [ beforeSendProcessorName ] ;
626
+
623
627
// 1.0 === 100% events are sent
624
628
// 0.0 === 0% events are sent
625
629
// Sampling for transaction happens somewhere else
@@ -641,17 +645,17 @@ export abstract class BaseClient<O extends ClientOptions> implements Client<O> {
641
645
}
642
646
643
647
const isInternalException = hint . data && ( hint . data as { __sentry__ : boolean } ) . __sentry__ === true ;
644
- if ( isInternalException || isTransaction || ! beforeSend ) {
648
+ if ( isInternalException || ! beforeSendProcessor ) {
645
649
return prepared ;
646
650
}
647
651
648
- const beforeSendResult = beforeSend ( prepared , hint ) ;
649
- return _validateBeforeSendResult ( beforeSendResult ) ;
652
+ const beforeSendResult = beforeSendProcessor ( prepared , hint ) ;
653
+ return _validateBeforeSendResult ( beforeSendResult , beforeSendProcessorName ) ;
650
654
} )
651
655
. then ( processedEvent => {
652
656
if ( processedEvent === null ) {
653
657
this . recordDroppedEvent ( 'before_send' , event . type || 'error' ) ;
654
- throw new SentryError ( '`beforeSend` returned `null`, will not send event.' , 'log' ) ;
658
+ throw new SentryError ( `\` ${ beforeSendProcessorName } \` returned \ `null\ `, will not send event.` , 'log' ) ;
655
659
}
656
660
657
661
const session = scope && scope . getSession ( ) ;
@@ -764,12 +768,13 @@ export abstract class BaseClient<O extends ClientOptions> implements Client<O> {
764
768
}
765
769
766
770
/**
767
- * Verifies that return value of configured `beforeSend` is of expected type, and returns the value if so.
771
+ * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.
768
772
*/
769
773
function _validateBeforeSendResult (
770
774
beforeSendResult : PromiseLike < Event | null > | Event | null ,
775
+ beforeSendProcessorName : 'beforeSend' | 'beforeSendTransaction' ,
771
776
) : PromiseLike < Event | null > | Event | null {
772
- const invalidValueError = '`beforeSend` must return `null` or a valid event.' ;
777
+ const invalidValueError = `\` ${ beforeSendProcessorName } \` must return \ `null\ ` or a valid event.` ;
773
778
if ( isThenable ( beforeSendResult ) ) {
774
779
return beforeSendResult . then (
775
780
event => {
@@ -779,7 +784,7 @@ function _validateBeforeSendResult(
779
784
return event ;
780
785
} ,
781
786
e => {
782
- throw new SentryError ( `beforeSend rejected with ${ e } ` ) ;
787
+ throw new SentryError ( `\` ${ beforeSendProcessorName } \` rejected with ${ e } ` ) ;
783
788
} ,
784
789
) ;
785
790
} else if ( ! isPlainObject ( beforeSendResult ) && beforeSendResult !== null ) {
0 commit comments