Files
cloudflare__vinext/tests/fixtures/cf-app-basic/middleware.ts
James Anderson 4f7eec967e fix(router): avoid repeated App path decoding (#2556)
* fix(router): avoid repeated App path decoding

* test(router): align encoded middleware pathname

* fix(router): match Next encoded path semantics

* fix(prerender): accept canonical encoded app params

* fix(router): preserve encoded interception params

* test(build): tolerate watch output replacement

* test(router): cover repeatedly encoded production paths

* fix(router): preserve action request route identity

* refactor(middleware): remove stale pathname argument

* refactor(router): align fallback interception paths

* refactor(router): derive request path identity from value

* fix(router): preserve encoded route parity

* fix(router): preserve raw config path matching

* fix(router): preserve raw encoded route identity

* fix(router): canonicalize encoded dot segments

* fix(router): restore encoded path parity after main merge

* fix(app-router): exact-match generated params

* fix(app-router): chain generated parent params

* fix(app-router): preserve generated param ownership

* fix(app-router): preserve per-result param ownership

* fix(app-router): preserve params after empty parallel generation

* fix(app-router): chain parallel static params by branch
2026-07-14 22:09:29 +01:00

29 lines
1.1 KiB
TypeScript

import { draftMode } from "next/headers";
import { NextResponse, type NextRequest } from "next/server";
/**
* Mirrors the upstream `app-middleware` fixture: mutate the *request* headers
* so downstream handlers (including Pages Router `pages/api/*`) observe the
* injected header, and enable draft mode on `?draft=true`. Regression coverage
* for #1520.
*/
export async function middleware(request: NextRequest) {
if (request.nextUrl.pathname === "/%61dmin") {
return NextResponse.rewrite(new URL("/admin", request.url));
}
if (request.nextUrl.pathname.startsWith("/encoded-parity/rewrite/")) {
const target = request.nextUrl.clone();
target.pathname = request.nextUrl.pathname.replace(
"/encoded-parity/rewrite/",
"/encoded-parity/page/",
);
return NextResponse.rewrite(target);
}
if (request.nextUrl.searchParams.get("draft")) {
(await draftMode()).enable();
}
const headers = new Headers(request.headers);
headers.set("x-from-middleware", "hello-from-middleware");
return NextResponse.next({ request: { headers } });
}