1
+ import { IS_DEBUG_BUILD } from './flags' ;
2
+ import { logger } from './logger' ;
3
+
1
4
export type AllowedBaggageKeys = 'environment' | 'release' ; // TODO: Add remaining allowed baggage keys | 'transaction' | 'userid' | 'usersegment';
2
5
export type BaggageObj = Partial < Record < AllowedBaggageKeys , string > & Record < string , string > > ;
3
6
@@ -34,7 +37,7 @@ export function createBaggage(initItems: BaggageObj, baggageString: string = '')
34
37
return [ { ...initItems } , baggageString ] ;
35
38
}
36
39
37
- /** Add a value to baggage */
40
+ /** Get a value from baggage */
38
41
export function getBaggageValue ( baggage : Baggage , key : keyof BaggageObj ) : BaggageObj [ keyof BaggageObj ] {
39
42
return baggage [ 0 ] [ key ] ;
40
43
}
@@ -46,17 +49,23 @@ export function setBaggageValue(baggage: Baggage, key: keyof BaggageObj, value:
46
49
47
50
/** Serialize a baggage object */
48
51
export 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 ;
51
54
const baggageEntry = `${ SENTRY_BAGGAGE_KEY_PREFIX } ${ encodeURIComponent ( key ) } =${ encodeURIComponent ( val ) } ` ;
52
55
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
+ }
54
63
} , baggage [ 1 ] ) ;
55
64
}
56
65
57
66
/** 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 (
60
69
( [ baggageObj , baggageString ] , curr ) => {
61
70
const [ key , val ] = curr . split ( '=' ) ;
62
71
if ( SENTRY_BAGGAGE_KEY_PREFIX_REGEX . test ( key ) ) {
0 commit comments