@@ -25,6 +25,7 @@ import {
25
25
AfterSourceHookFunctionPayload ,
26
26
BeforeSourceHookFunctionPayload ,
27
27
PLUGIN_HOOKS_ERROR_CODES ,
28
+ UpdateRequestFn ,
28
29
} from './types' ;
29
30
import getBeforeSourceHookHandler from './handleBeforeSourceHooks' ;
30
31
import type { YogaLogger , Plugin , YogaInitialContext } from 'graphql-yoga' ;
@@ -207,27 +208,19 @@ export default async function hooksPlugin(config: PluginConfig): Promise<HooksPl
207
208
} ;
208
209
209
210
// Provide callback to update request
210
- const updateRequest = ( modifications : RequestInit ) => {
211
+ const updateRequest : UpdateRequestFn = ( modifications : RequestInit ) => {
211
212
const { headers : newHeaders , ...otherModifications } = modifications ;
212
-
213
- // Handle header merging properly
213
+ // Handle header merging
214
214
if ( newHeaders ) {
215
215
const originalHeaders = options . headers || { } ;
216
- let mergedHeaders : Record < string , string > = { } ;
217
-
218
- // Handle different header formats
219
216
if ( originalHeaders instanceof Headers ) {
220
- originalHeaders . forEach ( ( value , key ) => {
221
- mergedHeaders [ key ] = value ;
222
- } ) ;
223
- } else if ( originalHeaders && typeof originalHeaders === 'object' ) {
224
- mergedHeaders = { ...( originalHeaders as Record < string , string > ) } ;
217
+ const headersObj = Object . fromEntries ( originalHeaders . entries ( ) ) ;
218
+ options . headers = { ...headersObj , ...newHeaders } ;
219
+ } else {
220
+ options . headers = { ...originalHeaders , ...newHeaders } ;
225
221
}
226
- // Merge new headers
227
- Object . assign ( mergedHeaders , newHeaders ) ;
228
- options . headers = mergedHeaders ;
229
222
}
230
- // Apply other modifications (including body with modified query)
223
+ // Apply other modifications
231
224
Object . assign ( options , otherModifications ) ;
232
225
} ;
233
226
0 commit comments