@@ -19,9 +19,9 @@ import {
1919} from './utils/url' ;
2020
2121type PolymorphicRequestHeaders =
22- | Record < string , string | undefined >
23- | Array < [ string , string ] >
24- | Iterable < Iterable < string > >
22+ | Record < string , unknown >
23+ | Array < [ string , unknown ] >
24+ | Iterable < Iterable < unknown > >
2525 // the below is not precisely the Header type used in Request, but it'll pass duck-typing
2626 | {
2727 append : ( key : string , value : string ) => void ;
@@ -183,7 +183,6 @@ export function _callOnRequestSpanEnd(
183183 *
184184 * @internal Exported for cross-package instrumentation (for example Cloudflare Workers fetcher bindings)
185185 * and unit tests
186- * @hidden
187186 *
188187 * Baggage handling:
189188 * 1. No previous baggage header → include Sentry baggage
@@ -243,16 +242,17 @@ export function _INTERNAL_getTracingHeadersForFetchRequest(
243242 } else if ( isHeadersInitTupleArray ( originalHeaders ) ) {
244243 const newHeaders = [ ...originalHeaders ] ;
245244
246- if ( ! originalHeaders . find ( header => header [ 0 ] === 'sentry-trace' ) ) {
245+ if ( ! newHeaders . find ( header => header [ 0 ] === 'sentry-trace' ) ) {
247246 newHeaders . push ( [ 'sentry-trace' , sentryTrace ] ) ;
248247 }
249248
250- if ( propagateTraceparent && traceparent && ! originalHeaders . find ( header => header [ 0 ] === 'traceparent' ) ) {
249+ if ( propagateTraceparent && traceparent && ! newHeaders . find ( header => header [ 0 ] === 'traceparent' ) ) {
251250 newHeaders . push ( [ 'traceparent' , traceparent ] ) ;
252251 }
253252
254253 const prevBaggageHeaderWithSentryValues = originalHeaders . find (
255- header => header [ 0 ] === 'baggage' && baggageHeaderHasSentryBaggageValues ( header [ 1 ] ) ,
254+ header =>
255+ header [ 0 ] === 'baggage' && typeof header [ 1 ] === 'string' && baggageHeaderHasSentryBaggageValues ( header [ 1 ] ) ,
256256 ) ;
257257
258258 if ( baggage && ! prevBaggageHeaderWithSentryValues ) {
@@ -319,7 +319,11 @@ function endSpan(span: Span, handlerData: HandlerDataFetch): void {
319319 span . end ( ) ;
320320}
321321
322- function baggageHeaderHasSentryBaggageValues ( baggageHeader : string ) : boolean {
322+ function baggageHeaderHasSentryBaggageValues ( baggageHeader : unknown ) : boolean {
323+ if ( typeof baggageHeader !== 'string' ) {
324+ return false ;
325+ }
326+
323327 return baggageHeader . split ( ',' ) . some ( baggageEntry => baggageEntry . trim ( ) . startsWith ( SENTRY_BAGGAGE_KEY_PREFIX ) ) ;
324328}
325329
@@ -328,14 +332,13 @@ function isHeaders(headers: unknown): headers is Headers {
328332}
329333
330334/** `HeadersInit` array form: each entry is a [name, value] pair of strings. */
331- function isHeadersInitTupleArray ( headers : unknown ) : headers is [ string , string ] [ ] {
335+ function isHeadersInitTupleArray ( headers : unknown ) : headers is [ string , unknown ] [ ] {
332336 if ( ! Array . isArray ( headers ) ) {
333337 return false ;
334338 }
335339
336340 return headers . every (
337- ( item ) : item is [ string , string ] =>
338- Array . isArray ( item ) && item . length === 2 && typeof item [ 0 ] === 'string' && typeof item [ 1 ] === 'string' ,
341+ ( item ) : item is [ string , unknown ] => Array . isArray ( item ) && item . length === 2 && typeof item [ 0 ] === 'string' ,
339342 ) ;
340343}
341344
0 commit comments