UNPKG

next

Version:

The React Framework

81 lines (80 loc) 2.99 kB
import { NextURL } from '../next-url'; import { toNodeOutgoingHttpHeaders, validateURL } from '../utils'; import { RemovedUAError, RemovedPageError } from '../error'; import { RequestCookies } from './cookies'; export const INTERNALS = Symbol('internal request'); /** * This class extends the [Web `Request` API](https://developer.mozilla.org/docs/Web/API/Request) with additional convenience methods. * * Read more: [Next.js Docs: `NextRequest`](https://nextjs.org/docs/app/api-reference/functions/next-request) */ export class NextRequest extends Request { constructor(input, init = {}){ const url = typeof input !== 'string' && 'url' in input ? input.url : String(input); validateURL(url); // node Request instance requires duplex option when a body // is present or it errors, we don't handle this for // Request being passed in since it would have already // errored if this wasn't configured if (process.env.NEXT_RUNTIME !== 'edge') { if (init.body && init.duplex !== 'half') { init.duplex = 'half'; } } if (input instanceof Request) super(input, init); else super(url, init); const nextUrl = new NextURL(url, { headers: toNodeOutgoingHttpHeaders(this.headers), nextConfig: init.nextConfig }); this[INTERNALS] = { cookies: new RequestCookies(this.headers), nextUrl, url: process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE ? url : nextUrl.toString() }; } [Symbol.for('edge-runtime.inspect.custom')]() { return { cookies: this.cookies, nextUrl: this.nextUrl, url: this.url, // rest of props come from Request bodyUsed: this.bodyUsed, cache: this.cache, credentials: this.credentials, destination: this.destination, headers: Object.fromEntries(this.headers), integrity: this.integrity, keepalive: this.keepalive, method: this.method, mode: this.mode, redirect: this.redirect, referrer: this.referrer, referrerPolicy: this.referrerPolicy, signal: this.signal }; } get cookies() { return this[INTERNALS].cookies; } get nextUrl() { return this[INTERNALS].nextUrl; } /** * @deprecated * `page` has been deprecated in favour of `URLPattern`. * Read more: https://nextjs.org/docs/messages/middleware-request-page */ get page() { throw new RemovedPageError(); } /** * @deprecated * `ua` has been removed in favour of \`userAgent\` function. * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent */ get ua() { throw new RemovedUAError(); } get url() { return this[INTERNALS].url; } } //# sourceMappingURL=request.js.map