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

Generic Type for GetStaticPaths #11430

Merged
merged 5 commits into from
Mar 31, 2020
Merged

Generic Type for GetStaticPaths #11430

merged 5 commits into from
Mar 31, 2020

Conversation

wongmjane
Copy link
Contributor

@wongmjane wongmjane commented Mar 28, 2020

Adding generic typing for params for GetStaticPaths, GetStaticProps and GetServerSideProps types could help enforcing consistent shape with the params type

type RouteParams = { slug: string }

export const getStaticPaths: GetStaticPaths<RouteParams> = async () => ({
  paths: [
    { params: { slug: 'foo' } },
    { params: { slug: 'bar' } },
    { params: { slug: 'baz' } },
  ],
  fallback: false,
})

export const getStaticProps: GetStaticProps<
  { data: unknown },
  RouteParams
> = async ({ params }) => ({
  props: {
    data: await getSomeData(params.slug),
  },
})

@ijjk
Copy link
Member

ijjk commented Mar 28, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary wongmjane/next.js patch-1 Change
buildDuration 10.8s 11s ⚠️ +170ms
nodeModulesSize 52.8 MB 52.8 MB ⚠️ +34 B
Client Bundles (main, webpack, commons)
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.js gzip 6.24 kB 6.24 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..c6c1.js gzip 10.1 kB 10.1 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.2 kB 56.2 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.module.js gzip 4.77 kB 4.77 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary wongmjane/next.js patch-1 Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.03 kB 2.03 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.86 kB 7.86 kB
Client Pages Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.module.js gzip 594 B 594 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.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary wongmjane/next.js patch-1 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 wongmjane/next.js patch-1 Change
index.html gzip 917 B 917 B
link.html gzip 925 B 925 B
withRouter.html gzip 915 B 915 B
Overall change 2.76 kB 2.76 kB

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
zeit/next.js canary wongmjane/next.js patch-1 Change
buildDuration 11.7s 11.7s -16ms
nodeModulesSize 52.8 MB 52.8 MB ⚠️ +34 B
Client Bundles (main, webpack, commons)
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.js gzip 6.24 kB 6.24 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..c6c1.js gzip 10.1 kB 10.1 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.2 kB 56.2 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.module.js gzip 4.77 kB 4.77 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary wongmjane/next.js patch-1 Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.03 kB 2.03 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.86 kB 7.86 kB
Client Pages Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.module.js gzip 594 B 594 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.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary wongmjane/next.js patch-1 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 wongmjane/next.js patch-1 Change
_error.js gzip 294 kB 294 kB -599 B
404.html gzip 1.32 kB 1.32 kB
hooks.html gzip 958 B 958 B
index.js gzip 294 kB 294 kB ⚠️ +31 B
link.js gzip 302 kB 301 kB -560 B
routerDirect.js gzip 300 kB 300 kB ⚠️ +138 B
withRouter.js gzip 300 kB 300 kB -132 B
Overall change 1.49 MB 1.49 MB -1.12 kB

Copy link
Member

@lfades lfades left a comment

Choose a reason for hiding this comment

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

@wongmjane Hi thank you for the PR, I like this change, would you like to add a test to it? I can tell you how, otherwise I can do it myself 👍

@ijjk
Copy link
Member

ijjk commented Mar 28, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary wongmjane/next.js patch-1 Change
buildDuration 9.9s 10.7s ⚠️ +779ms
nodeModulesSize 52.8 MB 52.8 MB ⚠️ +98 B
Client Bundles (main, webpack, commons)
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.js gzip 6.24 kB 6.24 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..c6c1.js gzip 10.1 kB 10.1 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.2 kB 56.2 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.module.js gzip 4.77 kB 4.77 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary wongmjane/next.js patch-1 Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.03 kB 2.03 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.86 kB 7.86 kB
Client Pages Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.module.js gzip 594 B 594 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.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary wongmjane/next.js patch-1 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 wongmjane/next.js patch-1 Change
index.html gzip 917 B 917 B
link.html gzip 925 B 925 B
withRouter.html gzip 915 B 915 B
Overall change 2.76 kB 2.76 kB

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
zeit/next.js canary wongmjane/next.js patch-1 Change
buildDuration 11.2s 11.8s ⚠️ +561ms
nodeModulesSize 52.8 MB 52.8 MB ⚠️ +98 B
Client Bundles (main, webpack, commons)
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.js gzip 6.24 kB 6.24 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..c6c1.js gzip 10.1 kB 10.1 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.2 kB 56.2 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.module.js gzip 4.77 kB 4.77 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary wongmjane/next.js patch-1 Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.03 kB 2.03 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.86 kB 7.86 kB
Client Pages Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.module.js gzip 594 B 594 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.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary wongmjane/next.js patch-1 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 wongmjane/next.js patch-1 Change
_error.js gzip 294 kB 294 kB -395 B
404.html gzip 1.32 kB 1.32 kB
hooks.html gzip 958 B 958 B
index.js gzip 294 kB 293 kB -606 B
link.js gzip 302 kB 302 kB -155 B
routerDirect.js gzip 300 kB 300 kB -76 B
withRouter.js gzip 300 kB 300 kB ⚠️ +180 B
Overall change 1.49 MB 1.49 MB -1.05 kB

@lfades lfades self-requested a review March 28, 2020 18:31
Copy link
Member

@lfades lfades left a comment

Choose a reason for hiding this comment

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

Just added tests to the PR, I'm approving it again. Thank you @wongmjane !

@ijjk
Copy link
Member

ijjk commented Mar 31, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary wongmjane/next.js patch-1 Change
buildDuration 9.3s 9.5s ⚠️ +198ms
nodeModulesSize 47.7 MB 47.7 MB ⚠️ +98 B
Client Bundles (main, webpack, commons)
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..c6c1.js gzip 10.1 kB 10.1 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.3 kB 56.3 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary wongmjane/next.js patch-1 Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.03 kB 2.03 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.86 kB 7.86 kB
Client Pages Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.module.js gzip 594 B 594 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.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary wongmjane/next.js patch-1 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 wongmjane/next.js patch-1 Change
index.html gzip 920 B 920 B
link.html gzip 928 B 928 B
withRouter.html gzip 916 B 916 B
Overall change 2.76 kB 2.76 kB

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
zeit/next.js canary wongmjane/next.js patch-1 Change
buildDuration 10.1s 10s -90ms
nodeModulesSize 47.7 MB 47.7 MB ⚠️ +98 B
Client Bundles (main, webpack, commons)
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..c6c1.js gzip 10.1 kB 10.1 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.3 kB 56.3 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary wongmjane/next.js patch-1 Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.03 kB 2.03 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.86 kB 7.86 kB
Client Pages Modern
zeit/next.js canary wongmjane/next.js patch-1 Change
_app.module.js gzip 594 B 594 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.28 kB 5.28 kB
Client Build Manifests
zeit/next.js canary wongmjane/next.js patch-1 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 wongmjane/next.js patch-1 Change
_error.js gzip 233 kB 233 kB ⚠️ +43 B
404.html gzip 1.32 kB 1.32 kB
hooks.html gzip 960 B 960 B
index.js gzip 233 kB 233 kB -10 B
link.js gzip 243 kB 243 kB ⚠️ +2 B
routerDirect.js gzip 241 kB 241 kB -28 B
withRouter.js gzip 241 kB 241 kB -305 B
Overall change 1.19 MB 1.19 MB -298 B

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.

3 participants