From dfe08aed33d6df979fee1085c32588d8058fc163 Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Fri, 30 Jun 2023 00:50:53 +0200 Subject: [PATCH] Fix NextRequest constructor parameters (#52001) FIx the type change introduced in #51727 --- .../src/server/web/spec-extension/request.ts | 2 +- test/unit/web-runtime/next-request.test.ts | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 test/unit/web-runtime/next-request.test.ts diff --git a/packages/next/src/server/web/spec-extension/request.ts b/packages/next/src/server/web/spec-extension/request.ts index de893ce522d..8f651512c76 100644 --- a/packages/next/src/server/web/spec-extension/request.ts +++ b/packages/next/src/server/web/spec-extension/request.ts @@ -16,7 +16,7 @@ export class NextRequest extends Request { nextUrl: NextURL } - constructor(input: URL | RequestInfo, init: RequestInit) { + constructor(input: URL | RequestInfo, init: RequestInit = {}) { const url = typeof input !== 'string' && 'url' in input ? input.url : String(input) validateURL(url) diff --git a/test/unit/web-runtime/next-request.test.ts b/test/unit/web-runtime/next-request.test.ts new file mode 100644 index 00000000000..6f441e1bfc0 --- /dev/null +++ b/test/unit/web-runtime/next-request.test.ts @@ -0,0 +1,23 @@ +/** + * @jest-environment @edge-runtime/jest-environment + */ + +import { expectTypeOf } from 'expect-type' +import { NextRequest } from 'next/src/server/web/spec-extension/request' + +it('should have 1 required parameter for constructor', () => { + expect(NextRequest.length).toBe(1) +}) + +it('should allow the 2nd parameter to be undefined', () => { + const request = new NextRequest('https://vercel.com') + expectTypeOf(request).toMatchTypeOf() + + expect( + new NextRequest('https://vercel.com', { geo: { city: 'Mars' } }) + ).toHaveProperty('geo.city', 'Mars') + expect(new NextRequest('https://vercel.com')).toHaveProperty( + 'nextUrl.pathname', + '/' + ) +})