UNPKG

next

Version:

The React Framework

48 lines (47 loc) 1.94 kB
import type { ExperimentalConfig, I18NConfig } from '../config-shared'; import type { NextRequest } from './spec-extension/request'; import type { NextFetchEvent } from './spec-extension/fetch-event'; import type { NextResponse } from './spec-extension/response'; import type { CloneableBody } from '../body-streams'; import type { OutgoingHttpHeaders } from 'http'; import type { FetchMetrics } from '../base-http'; export type { MiddlewareConfigInput as MiddlewareConfig } from '../../build/segment-config/middleware/middleware-config'; export interface RequestData { headers: OutgoingHttpHeaders; method: string; nextConfig?: { basePath?: string; i18n?: I18NConfig | null; trailingSlash?: boolean; experimental?: Pick<ExperimentalConfig, 'cacheLife' | 'authInterrupts'>; }; page?: { name?: string; params?: { [key: string]: string | string[] | undefined; }; }; url: string; body?: ReadableStream<Uint8Array>; signal: AbortSignal; /** passed in when running in edge runtime sandbox */ waitUntil?: (promise: Promise<any>) => void; } export type NodejsRequestData = Omit<RequestData, 'body'> & { body?: CloneableBody; }; export interface FetchEventResult { response: Response; waitUntil: Promise<any>; fetchMetrics?: FetchMetrics; } export type NextMiddlewareResult = NextResponse | Response | null | undefined | void; /** * Middleware allows you to run code before a request is completed. * Then, based on the incoming request, you can modify the response * by rewriting, redirecting, modifying the request or response headers, * or responding directly. * * Read more: [Next.js Docs: Middleware](https://nextjs.org/docs/app/building-your-application/routing/middleware) */ export type NextMiddleware = (request: NextRequest, event: NextFetchEvent) => NextMiddlewareResult | Promise<NextMiddlewareResult>;