1+ import { IS_DEBUG_BUILD } from './flags' ;
2+ import { logger } from './logger' ;
3+
14export type AllowedBaggageKeys = 'environment' | 'release' ; // TODO: Add remaining allowed baggage keys | 'transaction' | 'userid' | 'usersegment';
25export type BaggageObj = Partial < Record < AllowedBaggageKeys , string > & Record < string , string > > ;
36
@@ -34,7 +37,7 @@ export function createBaggage(initItems: BaggageObj, baggageString: string = '')
3437 return [ { ...initItems } , baggageString ] ;
3538}
3639
37- /** Add a value to baggage */
40+ /** Get a value from baggage */
3841export function getBaggageValue ( baggage : Baggage , key : keyof BaggageObj ) : BaggageObj [ keyof BaggageObj ] {
3942 return baggage [ 0 ] [ key ] ;
4043}
@@ -46,17 +49,23 @@ export function setBaggageValue(baggage: Baggage, key: keyof BaggageObj, value:
4649
4750/** Serialize a baggage object */
4851export function serializeBaggage ( baggage : Baggage ) : string {
49- return Object . keys ( baggage [ 0 ] ) . reduce ( ( prev , key ) => {
50- const val = baggage [ 0 ] [ key as keyof BaggageObj ] as string ;
52+ return Object . keys ( baggage [ 0 ] ) . reduce ( ( prev , key : keyof BaggageObj ) => {
53+ const val = baggage [ 0 ] [ key ] as string ;
5154 const baggageEntry = `${ SENTRY_BAGGAGE_KEY_PREFIX } ${ encodeURIComponent ( key ) } =${ encodeURIComponent ( val ) } ` ;
5255 const newVal = prev === '' ? baggageEntry : `${ prev } ,${ baggageEntry } ` ;
53- return newVal . length > MAX_BAGGAGE_STRING_LENGTH ? prev : newVal ;
56+ if ( newVal . length > MAX_BAGGAGE_STRING_LENGTH ) {
57+ IS_DEBUG_BUILD &&
58+ logger . warn ( `Not adding key: ${ key } with val: ${ val } to baggage due to exceeding baggage size limits.` ) ;
59+ return prev ;
60+ } else {
61+ return newVal ;
62+ }
5463 } , baggage [ 1 ] ) ;
5564}
5665
5766/** Parse a baggage header to a string */
58- export function parseBaggageString ( baggageString : string ) : Baggage {
59- return baggageString . split ( ',' ) . reduce (
67+ export function parseBaggageString ( inputBaggageString : string ) : Baggage {
68+ return inputBaggageString . split ( ',' ) . reduce (
6069 ( [ baggageObj , baggageString ] , curr ) => {
6170 const [ key , val ] = curr . split ( '=' ) ;
6271 if ( SENTRY_BAGGAGE_KEY_PREFIX_REGEX . test ( key ) ) {
0 commit comments