Skip to content

Commit 2404144

Browse files
committed
feat: add edge middleware support to ntl dev
1 parent 7132dab commit 2404144

File tree

14 files changed

+517
-106
lines changed

14 files changed

+517
-106
lines changed

.vscode/settings.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
"deno.enablePaths": [
33
"packages/runtime/src/templates/edge",
44
"demos/middleware/.netlify/edge-functions",
5+
"demos/middleware/netlify/edge-functions",
56
"demos/server-components/.netlify/edge-functions",
67
],
7-
"deno.unstable": true,
8-
"deno.importMap": "demos/server-components/.netlify/edge-functions-import-map.json"
8+
"deno.unstable": true
99
}

demos/middleware/middleware.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,13 @@ import { MiddlewareRequest } from '@netlify/next'
55

66
export async function middleware(req: NextRequest) {
77
let response
8-
const {
9-
nextUrl: { pathname },
10-
} = req
8+
const { pathname } = req.nextUrl
119

1210
const request = new MiddlewareRequest(req)
13-
1411
if (pathname.startsWith('/static')) {
1512
// Unlike NextResponse.next(), this actually sends the request to the origin
1613
const res = await request.next()
17-
const message = `This was static but has been transformed in ${req.geo.city}`
14+
const message = `This was static but has been transformed in ${req.geo?.city}`
1815

1916
// Transform the response HTML and props
2017
res.replaceText('p[id=message]', message)
@@ -58,6 +55,16 @@ export async function middleware(req: NextRequest) {
5855
response.headers.set('x-modified-in-rewrite', 'true')
5956
}
6057

58+
if (pathname.startsWith('/shows/redirectme')) {
59+
const url = req.nextUrl.clone()
60+
url.pathname = '/shows/100'
61+
response = NextResponse.redirect(url)
62+
}
63+
64+
if (pathname.startsWith('/shows/redirectexternal')) {
65+
response = NextResponse.redirect('http://example.com/')
66+
}
67+
6168
if (!response) {
6269
response = NextResponse.next()
6370
}

demos/middleware/netlify.toml

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ ignore = "if [ $CACHED_COMMIT_REF == $COMMIT_REF ]; then (exit 1); else git diff
66
[build.environment]
77
NEXT_USE_NETLIFY_EDGE = "true"
88

9-
[[plugins]]
10-
package = "../plugin-wrapper/"
11-
9+
# [[plugins]]
10+
# package = "@netlify/plugin-nextjs"
1211
# This is a fake plugin, that makes it run npm install
1312
[[plugins]]
1413
package = "@netlify/plugin-local-install-core"
@@ -19,15 +18,13 @@ included_files = [
1918
"!node_modules/sharp/build/Release/sharp-darwin-*"
2019
]
2120

22-
[dev]
23-
framework = "#static"
24-
21+
# [dev]
22+
# framework = "#static"
2523
[[redirects]]
2624
from = "/_next/static/*"
2725
to = "/static/:splat"
2826
status = 200
29-
30-
[[redirects]]
31-
from = "/*"
32-
to = "/.netlify/functions/___netlify-handler"
33-
status = 200
27+
# [[redirects]]
28+
# from = "/*"
29+
# to = "/.netlify/functions/___netlify-handler"
30+
# status = 200

demos/middleware/pages/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ export default function Home() {
2525
<p>
2626
<Link href="/shows/rewrite-external">Rewrite to external URL</Link>
2727
</p>
28+
<p>
29+
<Link href="/shows/redirectme">Redirect URL</Link>
30+
</p>
31+
<p>
32+
<Link href="/shows/redirectexternal">Redirect to external URL</Link>
33+
</p>
2834
<p>
2935
<Link href="/shows/static/3">Add header to static page</Link>
3036
</p>

demos/middleware/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
},
1818
"exclude": [
1919
"node_modules",
20+
"netlify/edge-functions/**/*",
2021
"../../src/templates/edge/*"
2122
],
2223
"include": [

0 commit comments

Comments
 (0)