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 NextApiHandler type #10573

Merged
merged 3 commits into from Feb 19, 2020
Merged

Add NextApiHandler type #10573

merged 3 commits into from Feb 19, 2020

Conversation

martpie
Copy link
Contributor

@martpie martpie commented Feb 18, 2020

Add a NextApiHandler type, so we can type API routes the following:

import { NextApiHandler } from 'next';

const healthCheckHandler: NextApiHandler = (_req, res) => {
  res.status(200).json({ message: 'ok' });
};

export default healthCheckHandler;

instead of

import { NextApiResponse, NextApiRequest } from 'next';

const healthCheckHandler = (_req: NextApiRequest, res: NextApiResponse) => {
  res.status(200).json({ message: 'ok' });
};

export default healthCheckHandler;

@ijjk
Copy link
Member

ijjk commented Feb 18, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary martpie/next.js next-api-handler Change
buildDuration 11s 11.1s ⚠️ +131ms
nodeModulesSize 53.9 MB 53.9 MB ⚠️ +315 B
Client Bundles (main, webpack, commons)
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.js gzip 5.13 kB 5.13 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..6894.js gzip 16.3 kB 16.3 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 70 kB 70 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.module.js gzip 4.13 kB 4.13 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.7 kB 64.7 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary martpie/next.js next-api-handler Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary martpie/next.js next-api-handler Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.95 kB 2.95 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.73 kB 9.73 kB
Client Pages Modern
zeit/next.js canary martpie/next.js next-api-handler Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.49 kB 2.49 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.25 kB 7.25 kB
Client Build Manifests
zeit/next.js canary martpie/next.js next-api-handler Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary martpie/next.js next-api-handler Change
index.html gzip 1.03 kB 1.03 kB
link.html gzip 1.04 kB 1.04 kB
withRouter.html gzip 1.03 kB 1.03 kB
Overall change 3.11 kB 3.11 kB

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
zeit/next.js canary martpie/next.js next-api-handler Change
buildDuration 12s 12.6s ⚠️ +537ms
nodeModulesSize 53.9 MB 53.9 MB ⚠️ +315 B
Client Bundles (main, webpack, commons)
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.js gzip 5.13 kB 5.13 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..6894.js gzip 16.3 kB 16.3 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 70 kB 70 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.module.js gzip 4.13 kB 4.13 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.7 kB 64.7 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary martpie/next.js next-api-handler Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary martpie/next.js next-api-handler Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.95 kB 2.95 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.73 kB 9.73 kB
Client Pages Modern
zeit/next.js canary martpie/next.js next-api-handler Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.49 kB 2.49 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.25 kB 7.25 kB
Client Build Manifests
zeit/next.js canary martpie/next.js next-api-handler Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall decrease ✓
zeit/next.js canary martpie/next.js next-api-handler Change
_error.js gzip 290 kB 289 kB -866 B
404.html gzip 1.44 kB 1.44 kB
hooks.html gzip 1.08 kB 1.08 kB
index.js gzip 289 kB 290 kB ⚠️ +802 B
link.js gzip 320 kB 319 kB -723 B
routerDirect.js gzip 316 kB 317 kB ⚠️ +72 B
withRouter.js gzip 316 kB 315 kB -307 B
Overall change 1.53 MB 1.53 MB -1.02 kB

Commit: 58477b6

@ijjk
Copy link
Member

ijjk commented Feb 18, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary martpie/next.js next-api-handler Change
buildDuration 12.2s 12.2s -25ms
nodeModulesSize 53.9 MB 53.9 MB ⚠️ +319 B
Client Bundles (main, webpack, commons)
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.js gzip 5.13 kB 5.13 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..6894.js gzip 16.3 kB 16.3 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 70 kB 70 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.module.js gzip 4.13 kB 4.13 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.7 kB 64.7 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary martpie/next.js next-api-handler Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary martpie/next.js next-api-handler Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.95 kB 2.95 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.73 kB 9.73 kB
Client Pages Modern
zeit/next.js canary martpie/next.js next-api-handler Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.49 kB 2.49 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.25 kB 7.25 kB
Client Build Manifests
zeit/next.js canary martpie/next.js next-api-handler Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary martpie/next.js next-api-handler Change
index.html gzip 1.03 kB 1.03 kB
link.html gzip 1.04 kB 1.04 kB
withRouter.html gzip 1.03 kB 1.03 kB
Overall change 3.11 kB 3.11 kB

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary martpie/next.js next-api-handler Change
buildDuration 13.3s 13.1s -230ms
nodeModulesSize 53.9 MB 53.9 MB ⚠️ +319 B
Client Bundles (main, webpack, commons)
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.js gzip 5.13 kB 5.13 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..6894.js gzip 16.3 kB 16.3 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 70 kB 70 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.module.js gzip 4.13 kB 4.13 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.7 kB 64.7 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary martpie/next.js next-api-handler Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary martpie/next.js next-api-handler Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.95 kB 2.95 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.73 kB 9.73 kB
Client Pages Modern
zeit/next.js canary martpie/next.js next-api-handler Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.49 kB 2.49 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.25 kB 7.25 kB
Client Build Manifests
zeit/next.js canary martpie/next.js next-api-handler Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary martpie/next.js next-api-handler Change
_error.js gzip 289 kB 289 kB ⚠️ +6 B
404.html gzip 1.44 kB 1.44 kB
hooks.html gzip 1.08 kB 1.08 kB
index.js gzip 289 kB 289 kB ⚠️ +322 B
link.js gzip 319 kB 319 kB -608 B
routerDirect.js gzip 317 kB 317 kB ⚠️ +100 B
withRouter.js gzip 316 kB 316 kB ⚠️ +704 B
Overall change 1.53 MB 1.53 MB ⚠️ +524 B

Commit: ec9705b

Copy link
Member

@Timer Timer left a comment

Choose a reason for hiding this comment

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

LGTM!

@Timer Timer added this to the 9.3.0 milestone Feb 19, 2020
@ijjk
Copy link
Member

ijjk commented Feb 19, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary martpie/next.js next-api-handler Change
buildDuration 11s 11.2s ⚠️ +214ms
nodeModulesSize 53.8 MB 53.8 MB ⚠️ +319 B
Client Bundles (main, webpack, commons)
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.js gzip 5.05 kB 5.05 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..abdd.js gzip 12.2 kB 12.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 57.2 kB 57.2 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.module.js gzip 4.13 kB 4.13 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 9.2 kB 9.2 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 53.2 kB 53.2 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary martpie/next.js next-api-handler Change
polyfills-HASH.js gzip 20.3 kB 20.3 kB
Overall change 20.3 kB 20.3 kB
Client Pages
zeit/next.js canary martpie/next.js next-api-handler Change
_app.js gzip 1.06 kB 1.06 kB
_error.js gzip 2.98 kB 2.98 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 1.9 kB 1.9 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.38 kB 7.38 kB
Client Pages Modern
zeit/next.js canary martpie/next.js next-api-handler Change
_app.module.js gzip 577 B 577 B
_error.module.js gzip 2.08 kB 2.08 kB
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.26 kB 5.26 kB
Client Build Manifests
zeit/next.js canary martpie/next.js next-api-handler Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary martpie/next.js next-api-handler Change
index.html gzip 926 B 926 B
link.html gzip 933 B 933 B
withRouter.html gzip 923 B 923 B
Overall change 2.78 kB 2.78 kB

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
zeit/next.js canary martpie/next.js next-api-handler Change
buildDuration 11.9s 12s ⚠️ +123ms
nodeModulesSize 53.8 MB 53.8 MB ⚠️ +319 B
Client Bundles (main, webpack, commons)
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.js gzip 5.05 kB 5.05 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..abdd.js gzip 12.2 kB 12.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 57.2 kB 57.2 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary martpie/next.js next-api-handler Change
main-HASH.module.js gzip 4.13 kB 4.13 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 9.2 kB 9.2 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 53.2 kB 53.2 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary martpie/next.js next-api-handler Change
polyfills-HASH.js gzip 20.3 kB 20.3 kB
Overall change 20.3 kB 20.3 kB
Client Pages
zeit/next.js canary martpie/next.js next-api-handler Change
_app.js gzip 1.06 kB 1.06 kB
_error.js gzip 2.98 kB 2.98 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 1.9 kB 1.9 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.38 kB 7.38 kB
Client Pages Modern
zeit/next.js canary martpie/next.js next-api-handler Change
_app.module.js gzip 577 B 577 B
_error.module.js gzip 2.08 kB 2.08 kB
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.26 kB 5.26 kB
Client Build Manifests
zeit/next.js canary martpie/next.js next-api-handler Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall decrease ✓
zeit/next.js canary martpie/next.js next-api-handler Change
_error.js gzip 290 kB 290 kB ⚠️ +58 B
404.html gzip 1.33 kB 1.33 kB
hooks.html gzip 965 B 965 B
index.js gzip 289 kB 289 kB -29 B
link.js gzip 298 kB 297 kB -412 B
routerDirect.js gzip 298 kB 298 kB ⚠️ +130 B
withRouter.js gzip 296 kB 296 kB ⚠️ +59 B
Overall change 1.47 MB 1.47 MB -194 B

Commit: 9f2ec82

@Timer Timer merged commit 0a5cc30 into vercel:canary Feb 19, 2020
styfle pushed a commit to vercel/vercel that referenced this pull request Apr 3, 2020
* add NowApiHandler type

`now` equivalent of `NextApiHandler` introduced vercel/next.js#10573

* chore: add fixture

Signed-off-by: Logan McAnsh <logan@mcan.sh>
@vercel vercel locked as resolved and limited conversation to collaborators Jan 31, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants