Skip to content

Commit b5d31ca

Browse files
committed
feat: enhance mergeConfig to handle Headers instances and normalize headers
1 parent 04abb0d commit b5d31ca

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

src/config-handler.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { processHeaders } from './utils';
12
import {
23
GET,
34
APPLICATION_JSON,
@@ -297,9 +298,27 @@ export function mergeConfig<K extends keyof RequestConfig>(
297298
targetConfig: RequestConfig,
298299
): void {
299300
if (overrideConfig[property]) {
300-
targetConfig[property] = {
301-
...baseConfig[property],
302-
...overrideConfig[property],
303-
};
301+
const base = baseConfig[property];
302+
const override = overrideConfig[property];
303+
304+
// Handle Headers instances which don't expose entries as own enumerable properties
305+
if (
306+
property === 'headers' &&
307+
((base as Headers | (HeadersObject & HeadersInit)) instanceof Headers ||
308+
(override as Headers | (HeadersObject & HeadersInit)) instanceof
309+
Headers)
310+
) {
311+
const baseNormalized = processHeaders(base);
312+
const overrideNormalized = processHeaders(override);
313+
targetConfig[property] = {
314+
...baseNormalized,
315+
...overrideNormalized,
316+
} as RequestConfig[K];
317+
} else {
318+
targetConfig[property] = {
319+
...base,
320+
...override,
321+
};
322+
}
304323
}
305324
}

0 commit comments

Comments
 (0)