1
- /* eslint-disable no-underscore-dangle */
2
1
import { NextURL } from 'next/dist/server/web/next-url'
3
2
import { NextResponse } from 'next/server'
4
3
import type { NextRequest } from 'next/server'
@@ -10,14 +9,6 @@ type Context = {
10
9
next : ( ) => Promise < Response >
11
10
}
12
11
13
- // We sneak our own request and context into the middleware using the geo object
14
- type AugmentedGeo = NextRequest [ 'geo' ] & {
15
- // eslint-disable-next-line camelcase
16
- __nf_context : Context
17
- // eslint-disable-next-line camelcase
18
- __nf_request : Request
19
- }
20
-
21
12
/**
22
13
* Supercharge your Next middleware with Netlify Edge Functions
23
14
*/
@@ -28,14 +19,18 @@ export class MiddlewareRequest extends Request {
28
19
constructor ( private nextRequest : NextRequest ) {
29
20
super ( nextRequest )
30
21
if ( ! ( 'Deno' in globalThis ) ) {
31
- throw new Error ( 'NetlifyMiddleware only works in a Netlify Edge Function environment' )
22
+ throw new Error ( 'MiddlewareRequest only works in a Netlify Edge Function environment' )
32
23
}
33
- const geo = nextRequest . geo as AugmentedGeo
34
- if ( ! geo ) {
35
- throw new Error ( 'NetlifyMiddleware must be instantiated with a NextRequest object ' )
24
+ const requestId = nextRequest . headers . get ( 'x-nf-request-id' )
25
+ if ( ! requestId ) {
26
+ throw new Error ( 'Missing x-nf-request-id header ' )
36
27
}
37
- this . context = geo . __nf_context
38
- this . originalRequest = geo . __nf_request
28
+ const requestContext = globalThis . NFRequestContextMap . get ( requestId )
29
+ if ( ! requestContext ) {
30
+ throw new Error ( `Could not find request context for request id ${ requestId } ` )
31
+ }
32
+ this . context = requestContext . context
33
+ this . originalRequest = requestContext . request
39
34
}
40
35
41
36
// Add the headers to the original request, which will be passed to the origin
@@ -83,5 +78,3 @@ export class MiddlewareRequest extends Request {
83
78
return this . nextRequest . url . toString ( )
84
79
}
85
80
}
86
-
87
- /* eslint-enable no-underscore-dangle */
0 commit comments