From a2fa637ab3fd8960a4a1061e0e40f0fef86f1910 Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 30 Nov 2021 16:59:02 -0500 Subject: [PATCH] fix(types): add missing ua types for NextRequest (#31901) * fix(types): add missing ua type for NextRequest add missing ua string type on NextRequest["ua"], returns full agent as string * Update UserAgent type Co-authored-by: JJ Kasper --- .../next/server/web/spec-extension/request.ts | 24 +++++++++++++++++-- .../pages/interface/_middleware.ts | 4 ++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/next/server/web/spec-extension/request.ts b/packages/next/server/web/spec-extension/request.ts index c3f5fe1f31..61d86ef406 100644 --- a/packages/next/server/web/spec-extension/request.ts +++ b/packages/next/server/web/spec-extension/request.ts @@ -1,5 +1,4 @@ import type { I18NConfig } from '../../config-shared' -import type { IResult } from 'next/dist/compiled/ua-parser-js' import type { RequestData } from '../types' import { NextURL } from '../next-url' import { isBot } from '../../utils' @@ -110,6 +109,27 @@ export interface RequestInit extends globalThis.RequestInit { } } -interface UserAgent extends IResult { +interface UserAgent { isBot: boolean + ua: string + browser: { + name?: string + version?: string + } + device: { + model?: string + type?: string + vendor?: string + } + engine: { + name?: string + version?: string + } + os: { + name?: string + version?: string + } + cpu: { + architecture?: string + } } diff --git a/test/integration/middleware-typescript/pages/interface/_middleware.ts b/test/integration/middleware-typescript/pages/interface/_middleware.ts index 3bc9e83c11..8c8f527503 100644 --- a/test/integration/middleware-typescript/pages/interface/_middleware.ts +++ b/test/integration/middleware-typescript/pages/interface/_middleware.ts @@ -1,6 +1,10 @@ import { NextMiddleware } from 'next/server' export const middleware: NextMiddleware = function (request) { + console.log(request.ua?.browser) + console.log(request.ua?.isBot) + console.log(request.ua?.ua) + return new Response(null, { headers: { 'req-url-basepath': request.nextUrl.basePath,