* Normalizes headers for consistent comparison * * @param {Object|UndiciHeaders} headers - Headers to normalize * @returns {NormalizedHeaders} - Normalized headers as a lowercase object
(headers)
| 102 | * @returns {NormalizedHeaders} - Normalized headers as a lowercase object |
| 103 | */ |
| 104 | function normalizeHeaders (headers) { |
| 105 | /** @type {NormalizedHeaders} */ |
| 106 | const normalizedHeaders = {} |
| 107 | |
| 108 | if (!headers) return normalizedHeaders |
| 109 | |
| 110 | // Handle array format (undici internal format: [name, value, name, value, ...]) |
| 111 | if (isUndiciHeaders(headers)) { |
| 112 | for (let i = 0; i < headers.length; i += 2) { |
| 113 | const key = headers[i] |
| 114 | const value = headers[i + 1] |
| 115 | if (key && value !== undefined) { |
| 116 | // Convert Buffers to strings if needed |
| 117 | const keyStr = Buffer.isBuffer(key) ? key.toString() : key |
| 118 | const valueStr = Buffer.isBuffer(value) ? value.toString() : value |
| 119 | normalizedHeaders[keyStr.toLowerCase()] = valueStr |
| 120 | } |
| 121 | } |
| 122 | return normalizedHeaders |
| 123 | } |
| 124 | |
| 125 | // Handle object format |
| 126 | if (headers && typeof headers === 'object') { |
| 127 | for (const [key, value] of Object.entries(headers)) { |
| 128 | if (key && typeof key === 'string') { |
| 129 | normalizedHeaders[key.toLowerCase()] = Array.isArray(value) ? value.join(', ') : String(value) |
| 130 | } |
| 131 | } |
| 132 | } |
| 133 | |
| 134 | return normalizedHeaders |
| 135 | } |
| 136 | |
| 137 | const validSnapshotModes = /** @type {const} */ (['record', 'playback', 'update']) |
| 138 |
no test coverage detected