MCPcopy Create free account
hub / github.com/nodejs/node / normalizeHeaders

Function normalizeHeaders

deps/undici/src/lib/mock/snapshot-utils.js:104–135  ·  view source on GitHub ↗

* Normalizes headers for consistent comparison * * @param {Object|UndiciHeaders} headers - Headers to normalize * @returns {NormalizedHeaders} - Normalized headers as a lowercase object

(headers)

Source from the content-addressed store, hash-verified

102 * @returns {NormalizedHeaders} - Normalized headers as a lowercase object
103 */
104function 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
137const validSnapshotModes = /** @type {const} */ (['record', 'playback', 'update'])
138

Callers 2

formatRequestKeyFunction · 0.70
recordMethod · 0.70

Calls 5

isUndiciHeadersFunction · 0.85
StringClass · 0.85
toStringMethod · 0.45
entriesMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected