Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add TS types for NextMiddleware #30578

Merged
merged 22 commits into from Nov 30, 2021
Merged

Add TS types for NextMiddleware #30578

merged 22 commits into from Nov 30, 2021

Conversation

styfle
Copy link
Member

@styfle styfle commented Oct 28, 2021

This allows TypeScript users to have type safety for middleware functions.

ijjk
ijjk previously requested changes Oct 28, 2021
Copy link
Member

@ijjk ijjk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we convert one of the _middleware in the middleware-core tests to use these types so we can ensure they are working correctly?

@ijjk

This comment has been minimized.

lfades
lfades previously approved these changes Oct 28, 2021
@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@styfle styfle dismissed ijjk’s stale review October 29, 2021 02:27

Added TS tests

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

molebox
molebox previously approved these changes Nov 11, 2021
Copy link
Contributor

@molebox molebox left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks fine to me

@styfle styfle dismissed stale reviews from molebox and leerob via f92123c November 11, 2021 22:32
@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk
Copy link
Member

ijjk commented Nov 22, 2021

Failing test suites

Commit: 2f5f985

test/integration/middleware-typescript/test/index.test.js

  • TypeScript Middleware > next build > should not fail to build middleware
Expand output

● TypeScript Middleware › next build › should not fail to build middleware

expect(received).not.toMatch(expected)

Expected pattern: not /Failed to compile/
Received string:      "Failed to compile.

../../../packages/next/build/compiler.ts:39:19
Type error: Namespace '\"/home/runner/work/next.js/next.js/packages/next/dist/compiled/webpack/webpack\".webpack' has no exported member 'Configuration'.

  37 | 
  38 | export function runCompiler(
> 39 |   config: webpack.Configuration,
     |                   ^
  40 |   { runWebpackSpan }: { runWebpackSpan: Span }
  41 | ): Promise<CompilerResult> {
  42 |   return new Promise((resolve, reject) => {
"

   9 |     it('should not fail to build middleware', async () => {
  10 |       const { stderr, code } = await nextBuild(appDir, [], { stderr: true })
> 11 |       expect(stderr).not.toMatch(/Failed to compile/)
     |                                ^
  12 |       expect(stderr).not.toMatch(/is not assignable to type/)
  13 |       expect(code).toBe(0)
  14 |     })

  at Object.<anonymous> (integration/middleware-typescript/test/index.test.js:11:32)

@molebox molebox self-requested a review November 29, 2021 08:57
molebox
molebox previously approved these changes Nov 29, 2021
Copy link
Contributor

@molebox molebox left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we convert one of the _middleware in the middleware-core tests to use these types so we can ensure they are working correctly?

Hey @ijjk do you know if this was done? If so, and you're happy, lets ship!

@ijjk
Copy link
Member

ijjk commented Nov 30, 2021

Stats from current PR

Default Build (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
buildDuration 22.4s 22.9s ⚠️ +454ms
buildDurationCached 4.1s 4.2s ⚠️ +128ms
nodeModulesSize 347 MB 347 MB ⚠️ +409 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
/ failed reqs 0 0
/ total time (seconds) 3.534 3.752 ⚠️ +0.22
/ avg req/sec 707.37 666.39 ⚠️ -40.98
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.878 1.834 -0.04
/error-in-render avg req/sec 1331.5 1363.42 +31.92
Client Bundles (main, webpack, commons)
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
450.HASH.js gzip 179 B 179 B
framework-HASH.js gzip 42.2 kB 42.2 kB
main-HASH.js gzip 28.4 kB 28.4 kB
webpack-HASH.js gzip 1.45 kB 1.45 kB
Overall change 72.3 kB 72.3 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
_app-HASH.js gzip 1.37 kB 1.37 kB
_error-HASH.js gzip 194 B 194 B
amp-HASH.js gzip 312 B 312 B
css-HASH.js gzip 326 B 326 B
dynamic-HASH.js gzip 2.38 kB 2.38 kB
head-HASH.js gzip 350 B 350 B
hooks-HASH.js gzip 635 B 635 B
image-HASH.js gzip 4.49 kB 4.49 kB
index-HASH.js gzip 263 B 263 B
link-HASH.js gzip 1.87 kB 1.87 kB
routerDirect..HASH.js gzip 321 B 321 B
script-HASH.js gzip 383 B 383 B
withRouter-HASH.js gzip 318 B 318 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 13.3 kB 13.3 kB
Client Build Manifests
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
_buildManifest.js gzip 460 B 460 B
Overall change 460 B 460 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
index.html gzip 532 B 532 B
link.html gzip 545 B 545 B
withRouter.html gzip 526 B 526 B
Overall change 1.6 kB 1.6 kB

Default Build with SWC (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
buildDuration 23.3s 23.6s ⚠️ +302ms
buildDurationCached 3.9s 4s ⚠️ +154ms
nodeModulesSize 347 MB 347 MB ⚠️ +409 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
/ failed reqs 0 0
/ total time (seconds) 3.503 3.606 ⚠️ +0.1
/ avg req/sec 713.72 693.33 ⚠️ -20.39
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.637 1.762 ⚠️ +0.13
/error-in-render avg req/sec 1527.53 1418.97 ⚠️ -108.56
Client Bundles (main, webpack, commons)
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
450.HASH.js gzip 179 B 179 B
framework-HASH.js gzip 42.3 kB 42.3 kB
main-HASH.js gzip 28.6 kB 28.6 kB
webpack-HASH.js gzip 1.44 kB 1.44 kB
Overall change 72.5 kB 72.5 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
_app-HASH.js gzip 1.35 kB 1.35 kB
_error-HASH.js gzip 180 B 180 B
amp-HASH.js gzip 305 B 305 B
css-HASH.js gzip 321 B 321 B
dynamic-HASH.js gzip 2.37 kB 2.37 kB
head-HASH.js gzip 342 B 342 B
hooks-HASH.js gzip 622 B 622 B
image-HASH.js gzip 4.53 kB 4.53 kB
index-HASH.js gzip 256 B 256 B
link-HASH.js gzip 1.91 kB 1.91 kB
routerDirect..HASH.js gzip 314 B 314 B
script-HASH.js gzip 375 B 375 B
withRouter-HASH.js gzip 309 B 309 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 13.3 kB 13.3 kB
Client Build Manifests
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
_buildManifest.js gzip 458 B 458 B
Overall change 458 B 458 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js add-types-for-next-middleware Change
index.html gzip 532 B 532 B
link.html gzip 545 B 545 B
withRouter.html gzip 526 B 526 B
Overall change 1.6 kB 1.6 kB
Commit: aedf68c

@kodiakhq kodiakhq bot merged commit b01a6ba into canary Nov 30, 2021
@kodiakhq kodiakhq bot deleted the add-types-for-next-middleware branch November 30, 2021 20:43
@vercel vercel locked as resolved and limited conversation to collaborators Jan 27, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants