11import { AsyncLocalStorage } from 'node:async_hooks' ;
22
3- const responseHeadersLocalStorage = new AsyncLocalStorage < Headers > ( ) ;
4-
53/**
64 * Set a header on the middleware response.
75 * We do this because of https://github.com/opennextjs/opennextjs-cloudflare/issues/92
86 * It can be removed as soon as we move to opennext where hopefully this is fixed.
97 */
108export function setMiddlewareHeader ( response : Response , name : string , value : string ) {
9+ // @ts -ignore
10+ const responseHeadersLocalStorage =
11+ global . responseHeadersLocalStorage as AsyncLocalStorage < Headers > ;
12+ console . log ( 'setMiddlewareHeader 0' , name , ! ! responseHeadersLocalStorage ) ;
1113 const responseHeaders = responseHeadersLocalStorage . getStore ( ) ;
1214 response . headers . set ( name , value ) ;
1315
14- console . log ( 'setMiddlewareHeader' , name , ! ! responseHeaders ) ;
16+ console . log ( 'setMiddlewareHeader 1 ' , name , ! ! responseHeaders ) ;
1517
1618 if ( responseHeaders ) {
1719 responseHeaders . set ( name , value ) ;
@@ -24,6 +26,13 @@ export function setMiddlewareHeader(response: Response, name: string, value: str
2426export async function withMiddlewareHeadersStorage (
2527 handler : ( ) => Promise < Response > ,
2628) : Promise < Response > {
29+ // @ts -ignore
30+ const responseHeadersLocalStorage =
31+ ( global . responseHeadersLocalStorage as AsyncLocalStorage < Headers > ) ??
32+ new AsyncLocalStorage < Headers > ( ) ;
33+ // @ts -ignore
34+ global . responseHeadersLocalStorage = responseHeadersLocalStorage ;
35+
2736 const responseHeaders = new Headers ( ) ;
2837 const response = await responseHeadersLocalStorage . run ( responseHeaders , handler ) ;
2938
0 commit comments