76083210ed
This PR moves the internal logic associated with `req.ua` into an explicit method the user should to call to have the same behavior. **before** ```typescript // middleware.ts import { NextRequest, NextResponse } from 'next/server' export function middleware(request: NextRequest) { const url = request.nextUrl const viewport = request.ua.device.type === 'mobile' ? 'mobile' : 'desktop' url.searchParams.set('viewport', viewport) return NextResponse.rewrites(url) } ``` **after** ```typescript // middleware.ts import { NextRequest, NextResponse, userAgent } from 'next/server' export function middleware(request: NextRequest) { const url = request.nextUrl const { device } = userAgent(request) const viewport = device.type === 'mobile' ? 'mobile' : 'desktop' url.searchParams.set('viewport', viewport) return NextResponse.rewrites(url) } ``` This potentially will save the extra 17 kB related to the size of `ua-parser-js`
28 lines
815 B
TypeScript
28 lines
815 B
TypeScript
export class PageSignatureError extends Error {
|
|
constructor({ page }: { page: string }) {
|
|
super(`The middleware "${page}" accepts an async API directly with the form:
|
|
|
|
export function middleware(request, event) {
|
|
return NextResponse.redirect('/new-location')
|
|
}
|
|
|
|
Read more: https://nextjs.org/docs/messages/middleware-new-signature
|
|
`)
|
|
}
|
|
}
|
|
|
|
export class RemovedPageError extends Error {
|
|
constructor() {
|
|
super(`The request.page has been deprecated in favour of \`URLPattern\`.
|
|
Read more: https://nextjs.org/docs/messages/middleware-request-page
|
|
`)
|
|
}
|
|
}
|
|
|
|
export class RemovedUAError extends Error {
|
|
constructor() {
|
|
super(`The request.page has been removed in favour of \`userAgent\` function.
|
|
Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent
|
|
`)
|
|
}
|
|
}
|