|
5 | 5 | */
|
6 | 6 | export const parseHeaders = (
|
7 | 7 | headers: Record<string, string | undefined> | null,
|
8 |
| -): Map<string, string | null> => { |
| 8 | +): ParsedHeaders => { |
9 | 9 | if (headers === null) return new Map()
|
10 |
| - return Object.entries(headers).reduce((h, [key, value]) => { |
11 |
| - h.set(key.toLowerCase(), value ?? null) |
12 |
| - return h |
13 |
| - }, new Map()) |
| 10 | + return CaseInsensitiveMap( |
| 11 | + Object.entries(headers).reduce((h, [key, value]) => { |
| 12 | + h.set(key.toLowerCase(), value ?? null) |
| 13 | + return h |
| 14 | + }, new Map()), |
| 15 | + ) |
14 | 16 | }
|
| 17 | + |
| 18 | +export type ParsedHeaders = Pick< |
| 19 | + Map<string, string | null>, |
| 20 | + 'get' | 'has' | 'size' | 'keys' | 'values' | 'entries' | 'forEach' |
| 21 | +> |
| 22 | + |
| 23 | +export const CaseInsensitiveMap = ( |
| 24 | + map: Map<string, string | null>, |
| 25 | +): ParsedHeaders => ({ |
| 26 | + get: (key) => map.get(key.toLowerCase()), |
| 27 | + has: (key) => map.has(key.toLowerCase()), |
| 28 | + size: map.size, |
| 29 | + keys: () => map.keys(), |
| 30 | + values: () => map.values(), |
| 31 | + entries: () => map.entries(), |
| 32 | + forEach: (callback, thisArg) => map.forEach(callback, thisArg), |
| 33 | +}) |
0 commit comments