(object: Record<string, string>)
| 147 | * is not spec compliant. |
| 148 | */ |
| 149 | export function objectToBaggageHeader(object: Record<string, string>): string | undefined { |
| 150 | if (Object.keys(object).length === 0) { |
| 151 | // An empty baggage header is not spec compliant: We return undefined. |
| 152 | return undefined; |
| 153 | } |
| 154 | |
| 155 | return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => { |
| 156 | const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`; |
| 157 | const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`; |
| 158 | if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) { |
| 159 | DEBUG_BUILD && |
| 160 | debug.warn( |
| 161 | `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`, |
| 162 | ); |
| 163 | return baggageHeader; |
| 164 | } else { |
| 165 | return newBaggageHeader; |
| 166 | } |
| 167 | }, ''); |
| 168 | } |
| 169 | |
| 170 | /** |
| 171 | * Merge two baggage headers into one. |
no test coverage detected