next.js/test/e2e/app-dir/next-after-app/middleware.js
middleware.js55 lines1.4 KB
import { cookies } from 'next/headers'
import { NextResponse, after } from 'next/server'
import { cliLog } from './utils/log'

export async function middleware(
  /** @type {import ('next/server').NextRequest} */ request
) {
  const url = new URL(request.url)

  {
    const match = url.pathname.match(
      /^(?<prefix>\/[^/]+?)\/middleware\/redirect-source/
    )
    if (match) {
      const prefix = match.groups.prefix
      const requestId = url.searchParams.get('requestId')
      const cookieStore = await cookies()
      after(async () => {
        cliLog({
          source: '[middleware] /middleware/redirect-source',
          requestId,
          cookies: { testCookie: cookieStore.get('testCookie')?.value },
        })
      })
      return NextResponse.redirect(
        new URL(prefix + '/middleware/redirect', request.url)
      )
    }
  }

  {
    const match = url.pathname.match(
      /^(?<prefix>\/[^/]+?)\/provided-request-context\/middleware/
    )
    if (match) {
      const prefix = match.groups.prefix
      after(() => {
        cliLog({
          source: '[middleware] /provided-request-context/middleware',
        })
      })
      return NextResponse.redirect(
        new URL(prefix + '/middleware/redirect', request.url)
      )
    }
  }
}

export const config = {
  matcher: [
    '/:prefix/middleware/:path*',
    '/:prefix/provided-request-context/middleware',
  ],
}
Quest for Codev2.0.0
/
SIGN IN