(headers)
| 37 | |
| 38 | // Convert an undici response headers array to a plain object (Map<string, string>) |
| 39 | function responseHeadersArrayToDictionary(headers) { |
| 40 | const dict = {}; |
| 41 | let charset; |
| 42 | let mimeType; |
| 43 | for (let idx = 0; idx < headers.length; idx += 2) { |
| 44 | const key = `${headers[idx]}`; |
| 45 | const lowerCasedKey = StringPrototypeToLowerCase(key); |
| 46 | const value = `${headers[idx + 1]}`; |
| 47 | const prevValue = dict[key]; |
| 48 | |
| 49 | if (lowerCasedKey === 'content-type') { |
| 50 | const result = sniffMimeType(value); |
| 51 | charset = result.charset; |
| 52 | mimeType = result.mimeType; |
| 53 | } |
| 54 | |
| 55 | if (typeof prevValue === 'string') { |
| 56 | // ChromeDevTools frontend treats 'set-cookie' as a special case |
| 57 | // https://github.com/ChromeDevTools/devtools-frontend/blob/4275917f84266ef40613db3c1784a25f902ea74e/front_end/core/sdk/NetworkRequest.ts#L1368 |
| 58 | if (lowerCasedKey === 'set-cookie') dict[key] = `${prevValue}\n${value}`; |
| 59 | else dict[key] = `${prevValue}, ${value}`; |
| 60 | } else { |
| 61 | dict[key] = value; |
| 62 | } |
| 63 | } |
| 64 | return [dict, charset, mimeType]; |
| 65 | }; |
| 66 | |
| 67 | /** |
| 68 | * When a client request starts, emit Network.requestWillBeSent event. |
no test coverage detected