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

Allow @babel/preset-typescript to be configured #11840

Merged
merged 13 commits into from
May 9, 2020
Merged

Allow @babel/preset-typescript to be configured #11840

merged 13 commits into from
May 9, 2020

Conversation

Skn0tt
Copy link
Contributor

@Skn0tt Skn0tt commented Apr 12, 2020

Some usages, e.g. getting parameter decorators to work properly, require configuring @babel/preset-typescript.

This PR adds that functionality to next/babel.

Some usages, e.g. [getting parameter decorators to work properly](WarnerHooh/babel-plugin-parameter-decorator#19), require configuring `@babel/preset-typescript`.

This commit adds that functionality to `next/babel`.
@ijjk
Copy link
Member

ijjk commented Apr 12, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary Skn0tt/next.js canary Change
buildDuration 10.1s 10.4s ⚠️ +252ms
nodeModulesSize 61 MB 61 MB ⚠️ +118 B
Client Bundles (main, webpack, commons)
zeit/next.js canary Skn0tt/next.js canary Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..e3d8.js gzip 10.2 kB 10.2 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 Skn0tt/next.js canary 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.78 kB 6.78 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.5 kB 51.5 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary Change
index.html gzip 917 B 917 B
link.html gzip 926 B 926 B
withRouter.html gzip 915 B 915 B
Overall change 2.76 kB 2.76 kB

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary Skn0tt/next.js canary Change
buildDuration 11.3s 12s ⚠️ +758ms
nodeModulesSize 61 MB 61 MB ⚠️ +118 B
Client Bundles (main, webpack, commons)
zeit/next.js canary Skn0tt/next.js canary Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..e3d8.js gzip 10.2 kB 10.2 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 Skn0tt/next.js canary 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.78 kB 6.78 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.5 kB 51.5 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary Change
_error.js gzip 233 kB 233 kB ⚠️ +228 B
404.html gzip 1.32 kB 1.32 kB
hooks.html gzip 956 B 956 B
index.js gzip 233 kB 233 kB -187 B
link.js gzip 243 kB 243 kB ⚠️ +1 B
routerDirect.js gzip 241 kB 241 kB ⚠️ +186 B
withRouter.js gzip 241 kB 241 kB ⚠️ +286 B
Overall change 1.19 MB 1.19 MB ⚠️ +514 B

@timneutkens
Copy link
Member

I believe onlyRemoveTypeImports should be a default, but seems that it causes issues when not using the latest TypeScript version as per the documentation here: https://babeljs.io/docs/en/babel-preset-typescript#onlyremovetypeimports

Will check with the Babel team to be sure 🙏

@timneutkens
Copy link
Member

Discussed with Nicolo from the Babel team, we can't safely enable onlyRemoveTypeImports without breaking existing applications, so adding in this configurability makes sense.

Could you add a test to test/integration/typescript for this behavior, that will ensure it doesn't break in the future.

@Skn0tt
Copy link
Contributor Author

Skn0tt commented Apr 13, 2020

I've added a unit test for code generation using next/babel. I've decided to test it using the onlyRemoveTypeImports setting and upgraded @babel/preset-typescript for that matter, so I will close #11845 in favor of this one.

@ijjk
Copy link
Member

ijjk commented Apr 13, 2020

Stats from current PR

Default Server Mode (Decrease detected ✓)
General Overall decrease ✓
zeit/next.js canary Skn0tt/next.js canary Change
buildDuration 10.2s 10.3s ⚠️ +38ms
nodeModulesSize 61 MB 61 MB -2.49 kB
Client Bundles (main, webpack, commons)
zeit/next.js canary Skn0tt/next.js canary Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..a4ac.js gzip 10.2 kB 10.2 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 Skn0tt/next.js canary 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.78 kB 6.78 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.5 kB 51.5 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary Change
index.html gzip 927 B 927 B
link.html gzip 935 B 935 B
withRouter.html gzip 922 B 922 B
Overall change 2.78 kB 2.78 kB

Serverless Mode (Increase detected ⚠️)
General Overall decrease ✓
zeit/next.js canary Skn0tt/next.js canary Change
buildDuration 11.2s 11.1s -157ms
nodeModulesSize 61 MB 61 MB -2.49 kB
Client Bundles (main, webpack, commons)
zeit/next.js canary Skn0tt/next.js canary Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..a4ac.js gzip 10.2 kB 10.2 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 Skn0tt/next.js canary 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.78 kB 6.78 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.5 kB 51.5 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary 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 Skn0tt/next.js canary Change
_error.js gzip 234 kB 234 kB ⚠️ +11 B
404.html gzip 1.33 kB 1.33 kB
hooks.html gzip 957 B 957 B
index.js gzip 234 kB 234 kB ⚠️ +11 B
link.js gzip 244 kB 244 kB ⚠️ +10 B
routerDirect.js gzip 242 kB 242 kB ⚠️ +170 B
withRouter.js gzip 242 kB 242 kB ⚠️ +342 B
Overall change 1.2 MB 1.2 MB ⚠️ +544 B

@timneutkens
Copy link
Member

timneutkens commented Apr 14, 2020

Please add integration tests for this too in test/integration/typescript or a copy of it with just the specific config. Including tests for how it's supposed to work (eg setting the option and using import type.

Just testing setting the option is not enough as it could still break between versions.

Overall 95% or more of our tests are integration tests for this reason.

@Skn0tt
Copy link
Contributor Author

Skn0tt commented Apr 18, 2020

I've added integration tests, but they depend on #11909 to be resolved first.

@ijjk
Copy link
Member

ijjk commented Apr 18, 2020

Stats from current PR

Default Server Mode (Decrease detected ✓)
General Overall decrease ✓
zeit/next.js canary Skn0tt/next.js canary Change
buildDuration 11.2s 11.3s ⚠️ +189ms
nodeModulesSize 55.5 MB 55.5 MB -2.58 kB
Client Bundles (main, webpack, commons)
zeit/next.js canary Skn0tt/next.js canary Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..5e5e.js gzip 10.3 kB 10.3 kB
framework.a1..NSE.txt gzip 220 B 220 B
framework.a1..NSE.txt gzip 220 B 220 B
framework.HASH.js gzip 39 kB 39 kB
Overall change 56.7 kB 56.7 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary Skn0tt/next.js canary Change
main-HASH.module.js gzip 4.79 kB 4.79 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.85 kB 6.85 kB
framework.HA..dule.js gzip 39 kB 39 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary Skn0tt/next.js canary Change
polyfills-HASH.js gzip 26.2 kB 26.2 kB
Overall change 26.2 kB 26.2 kB
Client Pages
zeit/next.js canary Skn0tt/next.js canary Change
_app.js gzip 1.23 kB 1.23 kB
_error.js gzip 3.12 kB 3.12 kB
hooks.js gzip 663 B 663 B
index.js gzip 222 B 222 B
link.js gzip 2.06 kB 2.06 kB
routerDirect.js gzip 280 B 280 B
withRouter.js gzip 278 B 278 B
Overall change 7.85 kB 7.85 kB
Client Pages Modern
zeit/next.js canary Skn0tt/next.js canary Change
_app.module.js gzip 598 B 598 B
_error.module.js gzip 2.09 kB 2.09 kB
hooks.module.js gzip 383 B 383 B
index.module.js gzip 223 B 223 B
link.module.js gzip 1.52 kB 1.52 kB
routerDirect..dule.js gzip 279 B 279 B
withRouter.m..dule.js gzip 278 B 278 B
Overall change 5.37 kB 5.37 kB
Client Build Manifests
zeit/next.js canary Skn0tt/next.js canary 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 Skn0tt/next.js canary Change
index.html gzip 927 B 927 B
link.html gzip 937 B 937 B
withRouter.html gzip 924 B 924 B
Overall change 2.79 kB 2.79 kB

Serverless Mode (Decrease detected ✓)
General Overall decrease ✓
zeit/next.js canary Skn0tt/next.js canary Change
buildDuration 12s 12.1s ⚠️ +98ms
nodeModulesSize 55.5 MB 55.5 MB -2.58 kB
Client Bundles (main, webpack, commons)
zeit/next.js canary Skn0tt/next.js canary Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..5e5e.js gzip 10.3 kB 10.3 kB
framework.a1..NSE.txt gzip 220 B 220 B
framework.a1..NSE.txt gzip 220 B 220 B
framework.HASH.js gzip 39 kB 39 kB
Overall change 56.7 kB 56.7 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary Skn0tt/next.js canary Change
main-HASH.module.js gzip 4.79 kB 4.79 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.85 kB 6.85 kB
framework.HA..dule.js gzip 39 kB 39 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary Skn0tt/next.js canary Change
polyfills-HASH.js gzip 26.2 kB 26.2 kB
Overall change 26.2 kB 26.2 kB
Client Pages
zeit/next.js canary Skn0tt/next.js canary Change
_app.js gzip 1.23 kB 1.23 kB
_error.js gzip 3.12 kB 3.12 kB
hooks.js gzip 663 B 663 B
index.js gzip 222 B 222 B
link.js gzip 2.06 kB 2.06 kB
routerDirect.js gzip 280 B 280 B
withRouter.js gzip 278 B 278 B
Overall change 7.85 kB 7.85 kB
Client Pages Modern
zeit/next.js canary Skn0tt/next.js canary Change
_app.module.js gzip 598 B 598 B
_error.module.js gzip 2.09 kB 2.09 kB
hooks.module.js gzip 383 B 383 B
index.module.js gzip 223 B 223 B
link.module.js gzip 1.52 kB 1.52 kB
routerDirect..dule.js gzip 279 B 279 B
withRouter.m..dule.js gzip 278 B 278 B
Overall change 5.37 kB 5.37 kB
Client Build Manifests
zeit/next.js canary Skn0tt/next.js canary Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles
zeit/next.js canary Skn0tt/next.js canary Change
_error.js 558 kB 558 kB
404.html 4.18 kB 4.18 kB
hooks.html 3.81 kB 3.81 kB
index.js 558 kB 558 kB
link.js 594 kB 594 kB
routerDirect.js 587 kB 587 kB
withRouter.js 587 kB 587 kB
Overall change 2.89 MB 2.89 MB

@ijjk
Copy link
Member

ijjk commented Apr 18, 2020

Failing test suites

test/integration/typescript-only-remove-type-imports/test/index.test.js

  • TypeScript onlyRemoveTypeImports > should not elide the UserStatistics import
Expand output

● TypeScript onlyRemoveTypeImports › should not elide the UserStatistics import

expect(received).toContain(expected) // indexOf

Expected value:  "getNewsletterRecipients"
Received number: 1

  14 |     })
  15 | 
> 16 |     expect(code).toContain('getNewsletterRecipients')
     |                  ^
  17 |   })
  18 | })
  19 | 

  at Object.<anonymous> (integration/typescript-only-remove-type-imports/test/index.test.js:16:18)

Copy link
Member

@timneutkens timneutkens left a comment

Choose a reason for hiding this comment

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

I think we have to update at least @babel/core but I'd update all of the @babel deps just to be sure

@Skn0tt
Copy link
Contributor Author

Skn0tt commented Apr 21, 2020

I've updated the @babel dependencies, but there's a clash in the TypeScript definitions. Apparently, the @babel/types@7.7.4 that's installed for the global Jest config is clashing with the newer @babel/types@7.9.5 I've upgraded to. This seems odd to me, as package-local installed dependencies should take precedence over monorepo-global installed tooling dependencies like Jest. Could someone more familiar with tooling Next's tooling setup have a look at this?

@Timer Timer modified the milestone: 9.3.6 Apr 22, 2020
@Timer Timer added this to the 9.3.x milestone Apr 28, 2020
@johnrjj
Copy link

johnrjj commented May 8, 2020

Hey there! Anything I can do to help move this PR along? I see the build is green now, may just need a rebase. Happy to help :)

@Skn0tt
Copy link
Contributor Author

Skn0tt commented May 9, 2020

Thanks for reminding me of this ^^ Should be mergeable now.

@Skn0tt Skn0tt requested a review from timneutkens May 9, 2020 06:22
@ijjk
Copy link
Member

ijjk commented May 9, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary Skn0tt/next.js canary Change
buildDuration 13.5s 12.6s -895ms
nodeModulesSize 58.7 MB 59.5 MB ⚠️ +791 kB
Page Load Tests Overall increase ✓
zeit/next.js canary Skn0tt/next.js canary Change
/ failed reqs 0 0
/ total time (seconds) 2.269 2.224 -0.04
/ avg req/sec 1101.67 1124.27 ⚠️ +22.6
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.434 1.422 -0.01
/error-in-render avg req/sec 1743.04 1757.53 ⚠️ +14.49
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary Skn0tt/next.js canary Change
main-HASH.js gzip 6.23 kB 6.24 kB ⚠️ +16 B
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..5232.js gzip 10.3 kB N/A N/A
framework.HASH.js gzip 39.1 kB 39.1 kB
de003c3a9d30..5ce3.js gzip N/A 10.4 kB N/A
Overall change 56.4 kB 56.6 kB ⚠️ +179 B
Client Bundles (main, webpack, commons) Modern Overall decrease ✓
zeit/next.js canary Skn0tt/next.js canary Change
main-HASH.module.js gzip 4.83 kB 4.83 kB -1 B
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.88 kB N/A N/A
framework.HA..dule.js gzip 39.1 kB 39.1 kB
de003c3a9d30..dule.js gzip N/A 6.85 kB N/A
Overall change 51.6 kB 51.6 kB -35 B
Legacy Client Bundles (polyfills)
zeit/next.js canary Skn0tt/next.js canary Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages Overall increase ⚠️
zeit/next.js canary Skn0tt/next.js canary Change
_app.js gzip 1.23 kB 1.26 kB ⚠️ +23 B
_error.js gzip 3.13 kB 3.29 kB ⚠️ +158 B
hooks.js gzip 663 B 881 B ⚠️ +218 B
index.js gzip 222 B 222 B
link.js gzip 2.06 kB 2.06 kB
routerDirect.js gzip 280 B 280 B
withRouter.js gzip 278 B 278 B
Overall change 7.86 kB 8.26 kB ⚠️ +399 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary Skn0tt/next.js canary Change
_app.module.js gzip 598 B 599 B ⚠️ +1 B
_error.module.js gzip 2.09 kB 2.09 kB
hooks.module.js gzip 383 B 383 B
index.module.js gzip 223 B 223 B
link.module.js gzip 1.52 kB 1.52 kB
routerDirect..dule.js gzip 279 B 279 B
withRouter.m..dule.js gzip 278 B 278 B
Overall change 5.37 kB 5.37 kB ⚠️ +1 B
Client Build Manifests
zeit/next.js canary Skn0tt/next.js canary 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 Overall increase ⚠️
zeit/next.js canary Skn0tt/next.js canary Change
index.html gzip 926 B 929 B ⚠️ +3 B
link.html gzip 937 B 938 B ⚠️ +1 B
withRouter.html gzip 925 B 927 B ⚠️ +2 B
Overall change 2.79 kB 2.79 kB ⚠️ +6 B

Diffs

Diff for _app.js
@@ -55,6 +55,8 @@ module.exports = _inherits;
 "use strict";
 
 
+var _regeneratorRuntime = __webpack_require__("o0o1");
+
 var _classCallCheck = __webpack_require__("lwsE");
 
 var _createClass = __webpack_require__("W8MJ");
@@ -65,7 +67,7 @@ var _possibleConstructorReturn = __webpack_require__("a1gu");
 
 var _getPrototypeOf = __webpack_require__("Nsbk");
 
-var _regeneratorRuntime = __webpack_require__("o0o1");
+var _asyncToGenerator = __webpack_require__("yXPU");
 
 function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function () { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
 
@@ -88,28 +90,35 @@ exports.AppInitialProps = _utils.AppInitialProps;
 * This allows for keeping state between navigation, custom error handling, injecting additional data.
 */
 
-function appGetInitialProps(_ref) {
-  var Component, ctx, pageProps;
-  return _regeneratorRuntime.async(function appGetInitialProps$(_context) {
-    while (1) {
-      switch (_context.prev = _context.next) {
-        case 0:
-          Component = _ref.Component, ctx = _ref.ctx;
-          _context.next = 3;
-          return _regeneratorRuntime.awrap((0, _utils.loadGetInitialProps)(Component, ctx));
-
-        case 3:
-          pageProps = _context.sent;
-          return _context.abrupt("return", {
-            pageProps: pageProps
-          });
-
-        case 5:
-        case "end":
-          return _context.stop();
+function appGetInitialProps(_x) {
+  return _appGetInitialProps.apply(this, arguments);
+}
+
+function _appGetInitialProps() {
+  _appGetInitialProps = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
+    var Component, ctx, pageProps;
+    return _regeneratorRuntime.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            Component = _ref.Component, ctx = _ref.ctx;
+            _context.next = 3;
+            return (0, _utils.loadGetInitialProps)(Component, ctx);
+
+          case 3:
+            pageProps = _context.sent;
+            return _context.abrupt("return", {
+              pageProps: pageProps
+            });
+
+          case 5:
+          case "end":
+            return _context.stop();
+        }
       }
-    }
-  }, null, null, null, Promise);
+    }, _callee);
+  }));
+  return _appGetInitialProps.apply(this, arguments);
 }
 
 var App = /*#__PURE__*/function (_react$default$Compon) {
@@ -140,7 +149,7 @@ var App = /*#__PURE__*/function (_react$default$Compon) {
           pageProps = _this$props.pageProps,
           __N_SSG = _this$props.__N_SSG,
           __N_SSP = _this$props.__N_SSP;
-      return _react["default"].createElement(Component, Object.assign({}, pageProps, // we don't add the legacy URL prop if it's using non-legacy
+      return /*#__PURE__*/_react["default"].createElement(Component, Object.assign({}, pageProps, // we don't add the legacy URL prop if it's using non-legacy
       // methods like getStaticProps and getServerSideProps
       !(__N_SSG || __N_SSP) ? {
         url: createUrl(router)
Diff for _app.module.js
@@ -75,7 +75,7 @@ class App extends _react.default.Component {
       __N_SSG,
       __N_SSP
     } = this.props;
-    return _react.default.createElement(Component, Object.assign({}, pageProps, // we don't add the legacy URL prop if it's using non-legacy
+    return /*#__PURE__*/_react.default.createElement(Component, Object.assign({}, pageProps, // we don't add the legacy URL prop if it's using non-legacy
     // methods like getStaticProps and getServerSideProps
     !(__N_SSG || __N_SSP) ? {
       url: createUrl(router)
Diff for _error.js
@@ -108,17 +108,17 @@ var Error = /*#__PURE__*/function (_react$default$Compon) {
     value: function render() {
       var statusCode = this.props.statusCode;
       var title = this.props.title || statusCodes[statusCode] || 'An unexpected error has occurred';
-      return _react["default"].createElement("div", {
+      return /*#__PURE__*/_react["default"].createElement("div", {
         style: styles.error
-      }, _react["default"].createElement(_head["default"], null, _react["default"].createElement("title", null, statusCode, ": ", title)), _react["default"].createElement("div", null, _react["default"].createElement("style", {
+      }, /*#__PURE__*/_react["default"].createElement(_head["default"], null, /*#__PURE__*/_react["default"].createElement("title", null, statusCode, ": ", title)), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("style", {
         dangerouslySetInnerHTML: {
           __html: 'body { margin: 0 }'
         }
-      }), statusCode ? _react["default"].createElement("h1", {
+      }), statusCode ? /*#__PURE__*/_react["default"].createElement("h1", {
         style: styles.h1
-      }, statusCode) : null, _react["default"].createElement("div", {
+      }, statusCode) : null, /*#__PURE__*/_react["default"].createElement("div", {
         style: styles.desc
-      }, _react["default"].createElement("h2", {
+      }, /*#__PURE__*/_react["default"].createElement("h2", {
         style: styles.h2
       }, title, "."))));
     }
@@ -372,7 +372,7 @@ exports["default"] = Head;
 /***/ (function(module, exports) {
 
 function _nonIterableSpread() {
-  throw new TypeError("Invalid attempt to spread non-iterable instance");
+  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
 }
 
 module.exports = _nonIterableSpread;
@@ -383,7 +383,7 @@ module.exports = _nonIterableSpread;
 /***/ (function(module, exports) {
 
 function _iterableToArray(iter) {
-  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+  if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
 }
 
 module.exports = _iterableToArray;
@@ -419,16 +419,12 @@ if (false) {}
 /***/ }),
 
 /***/ "Ijbi":
-/***/ (function(module, exports) {
+/***/ (function(module, exports, __webpack_require__) {
 
-function _arrayWithoutHoles(arr) {
-  if (Array.isArray(arr)) {
-    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
-      arr2[i] = arr[i];
-    }
+var arrayLikeToArray = __webpack_require__("WkPL");
 
-    return arr2;
-  }
+function _arrayWithoutHoles(arr) {
+  if (Array.isArray(arr)) return arrayLikeToArray(arr);
 }
 
 module.exports = _arrayWithoutHoles;
@@ -479,10 +475,12 @@ var arrayWithoutHoles = __webpack_require__("Ijbi");
 
 var iterableToArray = __webpack_require__("EbDI");
 
+var unsupportedIterableToArray = __webpack_require__("ZhPi");
+
 var nonIterableSpread = __webpack_require__("Bnag");
 
 function _toConsumableArray(arr) {
-  return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
+  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
 }
 
 module.exports = _toConsumableArray;
@@ -541,6 +539,23 @@ module.exports = _createClass;
 
 /***/ }),
 
+/***/ "WkPL":
+/***/ (function(module, exports) {
+
+function _arrayLikeToArray(arr, len) {
+  if (len == null || len > arr.length) len = arr.length;
+
+  for (var i = 0, arr2 = new Array(len); i < len; i++) {
+    arr2[i] = arr[i];
+  }
+
+  return arr2;
+}
+
+module.exports = _arrayLikeToArray;
+
+/***/ }),
+
 /***/ "Xuae":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -646,6 +661,24 @@ exports["default"] = function () {
 
 /***/ }),
 
+/***/ "ZhPi":
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayLikeToArray = __webpack_require__("WkPL");
+
+function _unsupportedIterableToArray(o, minLen) {
+  if (!o) return;
+  if (typeof o === "string") return arrayLikeToArray(o, minLen);
+  var n = Object.prototype.toString.call(o).slice(8, -1);
+  if (n === "Object" && o.constructor) n = o.constructor.name;
+  if (n === "Map" || n === "Set") return Array.from(n);
+  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
+}
+
+module.exports = _unsupportedIterableToArray;
+
+/***/ }),
+
 /***/ "a1gu":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -668,16 +701,16 @@ module.exports = _possibleConstructorReturn;
 /***/ "cDf5":
 /***/ (function(module, exports) {
 
-function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
-
 function _typeof(obj) {
-  if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
+  "@babel/helpers - typeof";
+
+  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
     module.exports = _typeof = function _typeof(obj) {
-      return _typeof2(obj);
+      return typeof obj;
     };
   } else {
     module.exports = _typeof = function _typeof(obj) {
-      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
+      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
     };
   }
Diff for _error.module.js
@@ -83,17 +83,17 @@ class Error extends _react.default.Component {
       statusCode
     } = this.props;
     var title = this.props.title || statusCodes[statusCode] || 'An unexpected error has occurred';
-    return _react.default.createElement("div", {
+    return /*#__PURE__*/_react.default.createElement("div", {
       style: styles.error
-    }, _react.default.createElement(_head.default, null, _react.default.createElement("title", null, statusCode, ": ", title)), _react.default.createElement("div", null, _react.default.createElement("style", {
+    }, /*#__PURE__*/_react.default.createElement(_head.default, null, /*#__PURE__*/_react.default.createElement("title", null, statusCode, ": ", title)), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("style", {
       dangerouslySetInnerHTML: {
         __html: 'body { margin: 0 }'
       }
-    }), statusCode ? _react.default.createElement("h1", {
+    }), statusCode ? /*#__PURE__*/_react.default.createElement("h1", {
       style: styles.h1
-    }, statusCode) : null, _react.default.createElement("div", {
+    }, statusCode) : null, /*#__PURE__*/_react.default.createElement("div", {
       style: styles.desc
-    }, _react.default.createElement("h2", {
+    }, /*#__PURE__*/_react.default.createElement("h2", {
       style: styles.h2
     }, title, "."))));
   }
Diff for hooks.js
@@ -13,10 +13,7 @@ function _arrayWithHoles(arr) {
 }
 // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
 function _iterableToArrayLimit(arr, i) {
-  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
-    return;
-  }
-
+  if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
   var _arr = [];
   var _n = true;
   var _d = false;
@@ -41,16 +38,37 @@ function _iterableToArrayLimit(arr, i) {
 
   return _arr;
 }
+// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
+function _arrayLikeToArray(arr, len) {
+  if (len == null || len > arr.length) len = arr.length;
+
+  for (var i = 0, arr2 = new Array(len); i < len; i++) {
+    arr2[i] = arr[i];
+  }
+
+  return arr2;
+}
+// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
+
+function _unsupportedIterableToArray(o, minLen) {
+  if (!o) return;
+  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
+  var n = Object.prototype.toString.call(o).slice(8, -1);
+  if (n === "Object" && o.constructor) n = o.constructor.name;
+  if (n === "Map" || n === "Set") return Array.from(n);
+  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
+}
 // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
 function _nonIterableRest() {
-  throw new TypeError("Invalid attempt to destructure non-iterable instance");
+  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
 }
 // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js
 
 
 
+
 function _slicedToArray(arr, i) {
-  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
+  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
 }
 // EXTERNAL MODULE: ./node_modules/react/index.js
 var react = __webpack_require__("q1tI");
Diff for link.js
@@ -382,7 +382,7 @@ var Link = /*#__PURE__*/function (_react$Component) {
 
 
       if (typeof children === 'string') {
-        children = _react["default"].createElement("a", null, children);
+        children = /*#__PURE__*/_react["default"].createElement("a", null, children);
       } // This will return the first child, if multiple are provided it will throw an error
Diff for link.module.js
@@ -283,7 +283,7 @@ class Link extends _react.Component {
     } = this.formatUrls(this.props.href, this.props.as); // Deprecated. Warning shown by propType check. If the children provided is a string (<Link>example</Link>) we wrap it in an <a> tag
 
     if (typeof children === 'string') {
-      children = _react.default.createElement("a", null, children);
+      children = /*#__PURE__*/_react.default.createElement("a", null, children);
     } // This will return the first child, if multiple are provided it will throw an error
Diff for de003c3a9d30..904ac3fd2.js
@@ -37,7 +37,7 @@ var _router = __webpack_require__("nOHt");
 
 function withRouter(ComposedComponent) {
   function WithRouterWrapper(props) {
-    return _react["default"].createElement(ComposedComponent, Object.assign({
+    return /*#__PURE__*/_react["default"].createElement(ComposedComponent, Object.assign({
       router: (0, _router.useRouter)()
     }, props));
   }
@@ -214,10 +214,12 @@ var arrayWithHoles = __webpack_require__("wTVA");
 
 var iterableToArrayLimit = __webpack_require__("m0LI");
 
+var unsupportedIterableToArray = __webpack_require__("ZhPi");
+
 var nonIterableRest = __webpack_require__("wkBT");
 
 function _slicedToArray(arr, i) {
-  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
+  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
 }
 
 module.exports = _slicedToArray;
@@ -293,6 +295,23 @@ module.exports = _createClass;
 
 /***/ }),
 
+/***/ "WkPL":
+/***/ (function(module, exports) {
+
+function _arrayLikeToArray(arr, len) {
+  if (len == null || len > arr.length) len = arr.length;
+
+  for (var i = 0, arr2 = new Array(len); i < len; i++) {
+    arr2[i] = arr[i];
+  }
+
+  return arr2;
+}
+
+module.exports = _arrayLikeToArray;
+
+/***/ }),
+
 /***/ "YTqd":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -340,19 +359,57 @@ exports.getRouteRegex = getRouteRegex;
 
 /***/ }),
 
-/***/ "cDf5":
+/***/ "ZhPi":
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayLikeToArray = __webpack_require__("WkPL");
+
+function _unsupportedIterableToArray(o, minLen) {
+  if (!o) return;
+  if (typeof o === "string") return arrayLikeToArray(o, minLen);
+  var n = Object.prototype.toString.call(o).slice(8, -1);
+  if (n === "Object" && o.constructor) n = o.constructor.name;
+  if (n === "Map" || n === "Set") return Array.from(n);
+  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
+}
+
+module.exports = _unsupportedIterableToArray;
+
+/***/ }),
+
+/***/ "b48C":
 /***/ (function(module, exports) {
 
-function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
+function _isNativeReflectConstruct() {
+  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+  if (Reflect.construct.sham) return false;
+  if (typeof Proxy === "function") return true;
+
+  try {
+    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
+    return true;
+  } catch (e) {
+    return false;
+  }
+}
+
+module.exports = _isNativeReflectConstruct;
+
+/***/ }),
+
+/***/ "cDf5":
+/***/ (function(module, exports) {
 
 function _typeof(obj) {
-  if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
+  "@babel/helpers - typeof";
+
+  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
     module.exports = _typeof = function _typeof(obj) {
-      return _typeof2(obj);
+      return typeof obj;
     };
   } else {
     module.exports = _typeof = function _typeof(obj) {
-      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
+      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
     };
   }
 
@@ -423,6 +480,8 @@ exports["default"] = mitt;
 
 var _regeneratorRuntime = __webpack_require__("o0o1");
 
+var _asyncToGenerator = __webpack_require__("yXPU");
+
 var _slicedToArray = __webpack_require__("J4zp");
 
 var _classCallCheck = __webpack_require__("lwsE");
@@ -1080,48 +1139,56 @@ var Router = /*#__PURE__*/function () {
     }
   }, {
     key: "fetchComponent",
-    value: function fetchComponent(route) {
-      var cancelled, cancel, componentResult, error;
-      return _regeneratorRuntime.async(function fetchComponent$(_context) {
-        while (1) {
-          switch (_context.prev = _context.next) {
-            case 0:
-              cancelled = false;
-
-              cancel = this.clc = function () {
-                cancelled = true;
-              };
-
-              route = delBasePath(route);
-              _context.next = 5;
-              return _regeneratorRuntime.awrap(this.pageLoader.loadPage(route));
-
-            case 5:
-              componentResult = _context.sent;
-
-              if (!cancelled) {
-                _context.next = 10;
-                break;
-              }
-
-              error = new Error("Abort fetching component for route: \"".concat(route, "\""));
-              error.cancelled = true;
-              throw error;
-
-            case 10:
-              if (cancel === this.clc) {
-                this.clc = null;
-              }
-
-              return _context.abrupt("return", componentResult);
-
-            case 12:
-            case "end":
-              return _context.stop();
+    value: function () {
+      var _fetchComponent = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(route) {
+        var cancelled, cancel, componentResult, error;
+        return _regeneratorRuntime.wrap(function _callee$(_context) {
+          while (1) {
+            switch (_context.prev = _context.next) {
+              case 0:
+                cancelled = false;
+
+                cancel = this.clc = function () {
+                  cancelled = true;
+                };
+
+                route = delBasePath(route);
+                _context.next = 5;
+                return this.pageLoader.loadPage(route);
+
+              case 5:
+                componentResult = _context.sent;
+
+                if (!cancelled) {
+                  _context.next = 10;
+                  break;
+                }
+
+                error = new Error("Abort fetching component for route: \"".concat(route, "\""));
+                error.cancelled = true;
+                throw error;
+
+              case 10:
+                if (cancel === this.clc) {
+                  this.clc = null;
+                }
+
+                return _context.abrupt("return", componentResult);
+
+              case 12:
+              case "end":
+                return _context.stop();
+            }
           }
-        }
-      }, null, this, null, Promise);
-    }
+        }, _callee, this);
+      }));
+
+      function fetchComponent(_x) {
+        return _fetchComponent.apply(this, arguments);
+      }
+
+      return fetchComponent;
+    }()
   }, {
     key: "_getData",
     value: function _getData(fn) {
@@ -1204,6 +1271,8 @@ Router.events = mitt_1["default"]();
 
 var _regeneratorRuntime = __webpack_require__("o0o1");
 
+var _asyncToGenerator = __webpack_require__("yXPU");
+
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
@@ -1259,86 +1328,93 @@ function isResSent(res) {
 
 exports.isResSent = isResSent;
 
-function loadGetInitialProps(App, ctx) {
-  var _a, message, res, props, _message;
+function loadGetInitialProps(_x, _x2) {
+  return _loadGetInitialProps.apply(this, arguments);
+}
 
-  return _regeneratorRuntime.async(function loadGetInitialProps$(_context) {
-    while (1) {
-      switch (_context.prev = _context.next) {
-        case 0:
-          if (true) {
-            _context.next = 4;
-            break;
-          }
+function _loadGetInitialProps() {
+  _loadGetInitialProps = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(App, ctx) {
+    var _a, message, res, props, _message;
+
+    return _regeneratorRuntime.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            if (true) {
+              _context.next = 4;
+              break;
+            }
 
-          if (!((_a = App.prototype) === null || _a === void 0 ? void 0 : _a.getInitialProps)) {
-            _context.next = 4;
-            break;
-          }
+            if (!((_a = App.prototype) === null || _a === void 0 ? void 0 : _a.getInitialProps)) {
+              _context.next = 4;
+              break;
+            }
 
-          message = "\"".concat(getDisplayName(App), ".getInitialProps()\" is defined as an instance method - visit https://err.sh/zeit/next.js/get-initial-props-as-an-instance-method for more information.");
-          throw new Error(message);
+            message = "\"".concat(getDisplayName(App), ".getInitialProps()\" is defined as an instance method - visit https://err.sh/zeit/next.js/get-initial-props-as-an-instance-method for more information.");
+            throw new Error(message);
 
-        case 4:
-          // when called from _app `ctx` is nested in `ctx`
-          res = ctx.res || ctx.ctx && ctx.ctx.res;
+          case 4:
+            // when called from _app `ctx` is nested in `ctx`
+            res = ctx.res || ctx.ctx && ctx.ctx.res;
 
-          if (App.getInitialProps) {
-            _context.next = 12;
-            break;
-          }
+            if (App.getInitialProps) {
+              _context.next = 12;
+              break;
+            }
 
-          if (!(ctx.ctx && ctx.Component)) {
-            _context.next = 11;
-            break;
-          }
+            if (!(ctx.ctx && ctx.Component)) {
+              _context.next = 11;
+              break;
+            }
 
-          _context.next = 9;
-          return _regeneratorRuntime.awrap(loadGetInitialProps(ctx.Component, ctx.ctx));
+            _context.next = 9;
+            return loadGetInitialProps(ctx.Component, ctx.ctx);
 
-        case 9:
-          _context.t0 = _context.sent;
-          return _context.abrupt("return", {
-            pageProps: _context.t0
-          });
+          case 9:
+            _context.t0 = _context.sent;
+            return _context.abrupt("return", {
+              pageProps: _context.t0
+            });
 
-        case 11:
-          return _context.abrupt("return", {});
+          case 11:
+            return _context.abrupt("return", {});
 
-        case 12:
-          _context.next = 14;
-          return _regeneratorRuntime.awrap(App.getInitialProps(ctx));
+          case 12:
+            _context.next = 14;
+            return App.getInitialProps(ctx);
 
-        case 14:
-          props = _context.sent;
+          case 14:
+            props = _context.sent;
 
-          if (!(res && isResSent(res))) {
-            _context.next = 17;
-            break;
-          }
+            if (!(res && isResSent(res))) {
+              _context.next = 17;
+              break;
+            }
 
-          return _context.abrupt("return", props);
+            return _context.abrupt("return", props);
 
-        case 17:
-          if (props) {
-            _context.next = 20;
-            break;
-          }
+          case 17:
+            if (props) {
+              _context.next = 20;
+              break;
+            }
 
-          _message = "\"".concat(getDisplayName(App), ".getInitialProps()\" should resolve to an object. But found \"").concat(props, "\" instead.");
-          throw new Error(_message);
+            _message = "\"".concat(getDisplayName(App), ".getInitialProps()\" should resolve to an object. But found \"").concat(props, "\" instead.");
+            throw new Error(_message);
 
-        case 20:
-          if (false) {}
+          case 20:
+            if (false) {}
 
-          return _context.abrupt("return", props);
+            return _context.abrupt("return", props);
 
-        case 22:
-        case "end":
-          return _context.stop();
+          case 22:
+          case "end":
+            return _context.stop();
+        }
       }
-    }
-  }, null, null, null, Promise);
+    }, _callee);
+  }));
+  return _loadGetInitialProps.apply(this, arguments);
 }
 
 exports.loadGetInitialProps = loadGetInitialProps;
@@ -2250,10 +2326,7 @@ module.exports = _classCallCheck;
 /***/ (function(module, exports) {
 
 function _iterableToArrayLimit(arr, i) {
-  if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
-    return;
-  }
-
+  if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
   var _arr = [];
   var _n = true;
   var _d = false;
@@ -2513,18 +2586,7 @@ exports.encode = exports.stringify = __webpack_require__("4JlD");
 
 var setPrototypeOf = __webpack_require__("SksO");
 
-function isNativeReflectConstruct() {
-  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
-  if (Reflect.construct.sham) return false;
-  if (typeof Proxy === "function") return true;
-
-  try {
-    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
-    return true;
-  } catch (e) {
-    return false;
-  }
-}
+var isNativeReflectConstruct = __webpack_require__("b48C");
 
 function _construct(Parent, args, Class) {
   if (isNativeReflectConstruct()) {
@@ -2562,11 +2624,54 @@ module.exports = _arrayWithHoles;
 /***/ (function(module, exports) {
 
 function _nonIterableRest() {
-  throw new TypeError("Invalid attempt to destructure non-iterable instance");
+  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
 }
 
 module.exports = _nonIterableRest;
 
+/***/ }),
+
+/***/ "yXPU":
+/***/ (function(module, exports) {
+
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+  try {
+    var info = gen[key](arg);
+    var value = info.value;
+  } catch (error) {
+    reject(error);
+    return;
+  }
+
+  if (info.done) {
+    resolve(value);
+  } else {
+    Promise.resolve(value).then(_next, _throw);
+  }
+}
+
+function _asyncToGenerator(fn) {
+  return function () {
+    var self = this,
+        args = arguments;
+    return new Promise(function (resolve, reject) {
+      var gen = fn.apply(self, args);
+
+      function _next(value) {
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+      }
+
+      function _throw(err) {
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+      }
+
+      _next(undefined);
+    });
+  };
+}
+
+module.exports = _asyncToGenerator;
+
 /***/ })
 
 }]);
\ No newline at end of file
Diff for de003c3a9d30..8b.module.js
@@ -37,7 +37,7 @@ var _router = __webpack_require__("nOHt");
 
 function withRouter(ComposedComponent) {
   function WithRouterWrapper(props) {
-    return _react.default.createElement(ComposedComponent, Object.assign({
+    return /*#__PURE__*/_react.default.createElement(ComposedComponent, Object.assign({
       router: (0, _router.useRouter)()
     }, props));
   }
@@ -287,16 +287,16 @@ exports.getRouteRegex = getRouteRegex;
 /***/ "cDf5":
 /***/ (function(module, exports) {
 
-function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
-
 function _typeof(obj) {
-  if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
+  "@babel/helpers - typeof";
+
+  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
     module.exports = _typeof = function _typeof(obj) {
-      return _typeof2(obj);
+      return typeof obj;
     };
   } else {
     module.exports = _typeof = function _typeof(obj) {
-      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
+      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
     };
   }
Diff for main-HASH.js
@@ -184,6 +184,8 @@ if (false) {}
 
 var _regeneratorRuntime = __webpack_require__("o0o1");
 
+var _asyncToGenerator = __webpack_require__("yXPU");
+
 var _classCallCheck = __webpack_require__("lwsE");
 
 var _createClass = __webpack_require__("W8MJ");
@@ -384,187 +386,202 @@ var Container = /*#__PURE__*/function (_react$default$Compon) {
 var emitter = (0, _mitt["default"])();
 exports.emitter = emitter;
 
-var _default = function _default(_temp) {
-  var _ref8, passedWebpackHMR, _await$pageLoader$loa, app, mod, initialErr, _await$pageLoader$loa2, _require2, isValidElementType, renderCtx;
-
-  return _regeneratorRuntime.async(function _default$(_context) {
-    while (1) {
-      switch (_context.prev = _context.next) {
-        case 0:
-          _ref8 = _temp === void 0 ? {} : _temp, passedWebpackHMR = _ref8.webpackHMR; // This makes sure this specific lines are removed in production
-
-          if (false) {}
-
-          _context.next = 4;
-          return _regeneratorRuntime.awrap(pageLoader.loadPageScript('/_app'));
-
-        case 4:
-          _await$pageLoader$loa = _context.sent;
-          app = _await$pageLoader$loa.page;
-          mod = _await$pageLoader$loa.mod;
-          App = app;
-
-          if (mod && mod.unstable_onPerformanceData) {
-            onPerfEntry = function onPerfEntry(_ref2) {
-              var name = _ref2.name,
-                  startTime = _ref2.startTime,
-                  value = _ref2.value,
-                  duration = _ref2.duration,
-                  entryType = _ref2.entryType;
-              mod.unstable_onPerformanceData({
-                name: name,
-                startTime: startTime,
-                value: value,
-                duration: duration,
-                entryType: entryType
-              });
-            };
-          }
-
-          initialErr = err;
-          _context.prev = 10;
-          ;
-          _context.next = 14;
-          return _regeneratorRuntime.awrap(pageLoader.loadPage(page));
+var _default = /*#__PURE__*/function () {
+  var _default2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_temp) {
+    var _ref8, passedWebpackHMR, _yield$pageLoader$loa, app, mod, initialErr, _yield$pageLoader$loa2, _require2, isValidElementType, renderCtx;
+
+    return _regeneratorRuntime.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            _ref8 = _temp === void 0 ? {} : _temp, passedWebpackHMR = _ref8.webpackHMR; // This makes sure this specific lines are removed in production
+
+            if (false) {}
+
+            _context.next = 4;
+            return pageLoader.loadPageScript('/_app');
+
+          case 4:
+            _yield$pageLoader$loa = _context.sent;
+            app = _yield$pageLoader$loa.page;
+            mod = _yield$pageLoader$loa.mod;
+            App = app;
+
+            if (mod && mod.unstable_onPerformanceData) {
+              onPerfEntry = function onPerfEntry(_ref2) {
+                var name = _ref2.name,
+                    startTime = _ref2.startTime,
+                    value = _ref2.value,
+                    duration = _ref2.duration,
+                    entryType = _ref2.entryType;
+                mod.unstable_onPerformanceData({
+                  name: name,
+                  startTime: startTime,
+                  value: value,
+                  duration: duration,
+                  entryType: entryType
+                });
+              };
+            }
 
-        case 14:
-          _await$pageLoader$loa2 = _context.sent;
-          Component = _await$pageLoader$loa2.page;
+            initialErr = err;
+            _context.prev = 10;
+            ;
+            _context.next = 14;
+            return pageLoader.loadPage(page);
 
-          if (true) {
-            _context.next = 20;
-            break;
-          }
+          case 14:
+            _yield$pageLoader$loa2 = _context.sent;
+            Component = _yield$pageLoader$loa2.page;
 
-          _require2 = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module 'react-is'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())), isValidElementType = _require2.isValidElementType;
-
-          if (isValidElementType(Component)) {
-            _context.next = 20;
-            break;
-          }
+            if (true) {
+              _context.next = 20;
+              break;
+            }
 
-          throw new Error("The default export is not a React Component in page: \"" + page + "\"");
+            _require2 = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module 'react-is'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())), isValidElementType = _require2.isValidElementType;
 
-        case 20:
-          _context.next = 25;
-          break;
+            if (isValidElementType(Component)) {
+              _context.next = 20;
+              break;
+            }
 
-        case 22:
-          _context.prev = 22;
-          _context.t0 = _context["catch"](10);
-          // This catches errors like throwing in the top level of a module
-          initialErr = _context.t0;
+            throw new Error("The default export is not a React Component in page: \"" + page + "\"");
 
-        case 25:
-          if (!window.__NEXT_PRELOADREADY) {
-            _context.next = 28;
+          case 20:
+            _context.next = 25;
             break;
-          }
 
-          _context.next = 28;
-          return _regeneratorRuntime.awrap(window.__NEXT_PRELOADREADY(dynamicIds));
-
-        case 28:
-          exports.router = router = (0, _router.createRouter)(page, query, asPath, {
-            initialProps: props,
-            pageLoader: pageLoader,
-            App: App,
-            Component: Component,
-            wrapApp: wrapApp,
-            err: initialErr,
-            isFallback: isFallback,
-            subscription: function subscription(_ref3, App) {
-              var Component = _ref3.Component,
-                  props = _ref3.props,
-                  err = _ref3.err;
-              render({
-                App: App,
-                Component: Component,
-                props: props,
-                err: err
-              });
-            }
-          }); // call init-client middleware
+          case 22:
+            _context.prev = 22;
+            _context.t0 = _context["catch"](10);
+            // This catches errors like throwing in the top level of a module
+            initialErr = _context.t0;
 
-          if (false) {}
+          case 25:
+            if (!window.__NEXT_PRELOADREADY) {
+              _context.next = 28;
+              break;
+            }
 
-          renderCtx = {
-            App: App,
-            Component: Component,
-            props: props,
-            err: initialErr
-          };
+            _context.next = 28;
+            return window.__NEXT_PRELOADREADY(dynamicIds);
+
+          case 28:
+            exports.router = router = (0, _router.createRouter)(page, query, asPath, {
+              initialProps: props,
+              pageLoader: pageLoader,
+              App: App,
+              Component: Component,
+              wrapApp: wrapApp,
+              err: initialErr,
+              isFallback: isFallback,
+              subscription: function subscription(_ref3, App) {
+                var Component = _ref3.Component,
+                    props = _ref3.props,
+                    err = _ref3.err;
+                render({
+                  App: App,
+                  Component: Component,
+                  props: props,
+                  err: err
+                });
+              }
+            }); // call init-client middleware
+
+            if (false) {}
+
+            renderCtx = {
+              App: App,
+              Component: Component,
+              props: props,
+              err: initialErr
+            };
 
-          if (false) {}
+            if (false) {}
 
-          render(renderCtx);
-          return _context.abrupt("return", emitter);
+            render(renderCtx);
+            return _context.abrupt("return", emitter);
 
-        case 34:
-          if (true) {
-            _context.next = 36;
-            break;
-          }
+          case 34:
+            if (true) {
+              _context.next = 36;
+              break;
+            }
 
-          return _context.abrupt("return", {
-            emitter: emitter,
-            render: render,
-            renderCtx: renderCtx
-          });
+            return _context.abrupt("return", {
+              emitter: emitter,
+              render: render,
+              renderCtx: renderCtx
+            });
 
-        case 36:
-        case "end":
-          return _context.stop();
+          case 36:
+          case "end":
+            return _context.stop();
+        }
       }
-    }
-  }, null, null, [[10, 22]], Promise);
-};
+    }, _callee, null, [[10, 22]]);
+  }));
+
+  function _default(_x) {
+    return _default2.apply(this, arguments);
+  }
+
+  return _default;
+}();
 
 exports["default"] = _default;
 
-function render(props) {
-  return _regeneratorRuntime.async(function render$(_context2) {
-    while (1) {
-      switch (_context2.prev = _context2.next) {
-        case 0:
-          if (!props.err) {
-            _context2.next = 4;
-            break;
-          }
+function render(_x2) {
+  return _render.apply(this, arguments);
+} // This method handles all runtime and debug errors.
+// 404 and 500 errors are special kind of errors
+// and they are still handle via the main render method.
 
-          _context2.next = 3;
-          return _regeneratorRuntime.awrap(renderError(props));
 
-        case 3:
-          return _context2.abrupt("return");
+function _render() {
+  _render = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(props) {
+    return _regeneratorRuntime.wrap(function _callee2$(_context2) {
+      while (1) {
+        switch (_context2.prev = _context2.next) {
+          case 0:
+            if (!props.err) {
+              _context2.next = 4;
+              break;
+            }
 
-        case 4:
-          _context2.prev = 4;
-          _context2.next = 7;
-          return _regeneratorRuntime.awrap(doRender(props));
+            _context2.next = 3;
+            return renderError(props);
 
-        case 7:
-          _context2.next = 13;
-          break;
+          case 3:
+            return _context2.abrupt("return");
 
-        case 9:
-          _context2.prev = 9;
-          _context2.t0 = _context2["catch"](4);
-          _context2.next = 13;
-          return _regeneratorRuntime.awrap(renderError((0, _extends2["default"])({}, props, {
-            err: _context2.t0
-          })));
+          case 4:
+            _context2.prev = 4;
+            _context2.next = 7;
+            return doRender(props);
 
-        case 13:
-        case "end":
-          return _context2.stop();
-      }
-    }
-  }, null, null, [[4, 9]], Promise);
-} // This method handles all runtime and debug errors.
-// 404 and 500 errors are special kind of errors
-// and they are still handle via the main render method.
+          case 7:
+            _context2.next = 13;
+            break;
 
+          case 9:
+            _context2.prev = 9;
+            _context2.t0 = _context2["catch"](4);
+            _context2.next = 13;
+            return renderError((0, _extends2["default"])({}, props, {
+              err: _context2.t0
+            }));
+
+          case 13:
+          case "end":
+            return _context2.stop();
+        }
+      }
+    }, _callee2, null, [[4, 9]]);
+  }));
+  return _render.apply(this, arguments);
+}
 
 function renderError(props) {
   var App = props.App,
@@ -689,7 +706,7 @@ function clearMarks() {
 
 function AppContainer(_ref5) {
   var children = _ref5.children;
-  return _react["default"].createElement(Container, {
+  return /*#__PURE__*/_react["default"].createElement(Container, {
     fn: function fn(error) {
       return renderError({
         App: App,
@@ -698,9 +715,9 @@ function AppContainer(_ref5) {
         return console.error('Error rendering page: ', err);
       });
     }
-  }, _react["default"].createElement(_routerContext.RouterContext.Provider, {
+  }, /*#__PURE__*/_react["default"].createElement(_routerContext.RouterContext.Provider, {
     value: (0, _router.makePublicRouterInstance)(router)
-  }, _react["default"].createElement(_headManagerContext.HeadManagerContext.Provider, {
+  }, /*#__PURE__*/_react["default"].createElement(_headManagerContext.HeadManagerContext.Provider, {
     value: updateHead
   }, children)));
 }
@@ -712,75 +729,82 @@ var wrapApp = function wrapApp(App) {
       err: err,
       router: router
     });
-    return _react["default"].createElement(AppContainer, null, _react["default"].createElement(App, appProps));
+    return /*#__PURE__*/_react["default"].createElement(AppContainer, null, /*#__PURE__*/_react["default"].createElement(App, appProps));
   };
 };
 
-function doRender(_ref6) {
-  var App, Component, props, err, _router2, pathname, _query, _asPath, AppTree, appCtx, appProps, elem;
+function doRender(_x3) {
+  return _doRender.apply(this, arguments);
+}
 
-  return _regeneratorRuntime.async(function doRender$(_context3) {
-    while (1) {
-      switch (_context3.prev = _context3.next) {
-        case 0:
-          App = _ref6.App, Component = _ref6.Component, props = _ref6.props, err = _ref6.err; // Usual getInitialProps fetching is handled in next/router
-          // this is for when ErrorComponent gets replaced by Component by HMR
+function _doRender() {
+  _doRender = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(_ref6) {
+    var App, Component, props, err, _router2, pathname, _query, _asPath, AppTree, appCtx, appProps, elem;
 
-          if (!(!props && Component && Component !== ErrorComponent && lastAppProps.Component === ErrorComponent)) {
-            _context3.next = 8;
-            break;
-          }
+    return _regeneratorRuntime.wrap(function _callee3$(_context3) {
+      while (1) {
+        switch (_context3.prev = _context3.next) {
+          case 0:
+            App = _ref6.App, Component = _ref6.Component, props = _ref6.props, err = _ref6.err; // Usual getInitialProps fetching is handled in next/router
+            // this is for when ErrorComponent gets replaced by Component by HMR
 
-          _router2 = router, pathname = _router2.pathname, _query = _router2.query, _asPath = _router2.asPath;
-          AppTree = wrapApp(App);
-          appCtx = {
-            router: router,
-            AppTree: AppTree,
-            Component: ErrorComponent,
-            ctx: {
-              err: err,
-              pathname: pathname,
-              query: _query,
-              asPath: _asPath,
-              AppTree: AppTree
+            if (!(!props && Component && Component !== ErrorComponent && lastAppProps.Component === ErrorComponent)) {
+              _context3.next = 8;
+              break;
             }
-          };
-          _context3.next = 7;
-          return _regeneratorRuntime.awrap((0, _utils.loadGetInitialProps)(App, appCtx));
-
-        case 7:
-          props = _context3.sent;
-
-        case 8:
-          Component = Component || lastAppProps.Component;
-          props = props || lastAppProps.props;
-          appProps = (0, _extends2["default"])({}, props, {
-            Component: Component,
-            err: err,
-            router: router
-          }); // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.
-
-          lastAppProps = appProps;
-          emitter.emit('before-reactdom-render', {
-            Component: Component,
-            ErrorComponent: ErrorComponent,
-            appProps: appProps
-          });
-          elem = _react["default"].createElement(AppContainer, null, _react["default"].createElement(App, appProps)); // We catch runtime errors using componentDidCatch which will trigger renderError
 
-          renderReactElement( false ? undefined : elem, appElement);
-          emitter.emit('after-reactdom-render', {
-            Component: Component,
-            ErrorComponent: ErrorComponent,
-            appProps: appProps
-          });
+            _router2 = router, pathname = _router2.pathname, _query = _router2.query, _asPath = _router2.asPath;
+            AppTree = wrapApp(App);
+            appCtx = {
+              router: router,
+              AppTree: AppTree,
+              Component: ErrorComponent,
+              ctx: {
+                err: err,
+                pathname: pathname,
+                query: _query,
+                asPath: _asPath,
+                AppTree: AppTree
+              }
+            };
+            _context3.next = 7;
+            return (0, _utils.loadGetInitialProps)(App, appCtx);
 
-        case 16:
-        case "end":
-          return _context3.stop();
+          case 7:
+            props = _context3.sent;
+
+          case 8:
+            Component = Component || lastAppProps.Component;
+            props = props || lastAppProps.props;
+            appProps = (0, _extends2["default"])({}, props, {
+              Component: Component,
+              err: err,
+              router: router
+            }); // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.
+
+            lastAppProps = appProps;
+            emitter.emit('before-reactdom-render', {
+              Component: Component,
+              ErrorComponent: ErrorComponent,
+              appProps: appProps
+            });
+            elem = /*#__PURE__*/_react["default"].createElement(AppContainer, null, /*#__PURE__*/_react["default"].createElement(App, appProps)); // We catch runtime errors using componentDidCatch which will trigger renderError
+
+            renderReactElement( false ? /*#__PURE__*/undefined : elem, appElement);
+            emitter.emit('after-reactdom-render', {
+              Component: Component,
+              ErrorComponent: ErrorComponent,
+              appProps: appProps
+            });
+
+          case 16:
+          case "end":
+            return _context3.stop();
+        }
       }
-    }
-  }, null, null, null, Promise);
+    }, _callee3);
+  }));
+  return _doRender.apply(this, arguments);
 }
 
 /***/ }),
Diff for main-HASH.module.js
@@ -557,14 +557,14 @@ function AppContainer(_ref5) {
   var {
     children
   } = _ref5;
-  return _react.default.createElement(Container, {
+  return /*#__PURE__*/_react.default.createElement(Container, {
     fn: error => renderError({
       App,
       err: error
     }).catch(err => console.error('Error rendering page: ', err))
-  }, _react.default.createElement(_routerContext.RouterContext.Provider, {
+  }, /*#__PURE__*/_react.default.createElement(_routerContext.RouterContext.Provider, {
     value: (0, _router.makePublicRouterInstance)(router)
-  }, _react.default.createElement(_headManagerContext.HeadManagerContext.Provider, {
+  }, /*#__PURE__*/_react.default.createElement(_headManagerContext.HeadManagerContext.Provider, {
     value: updateHead
   }, children)));
 }
@@ -575,7 +575,7 @@ var wrapApp = App => props => {
     err,
     router
   });
-  return _react.default.createElement(AppContainer, null, _react.default.createElement(App, appProps));
+  return /*#__PURE__*/_react.default.createElement(AppContainer, null, /*#__PURE__*/_react.default.createElement(App, appProps));
 };
 
 async function doRender(_ref6) {
@@ -624,10 +624,10 @@ async function doRender(_ref6) {
     appProps
   });
 
-  var elem = _react.default.createElement(AppContainer, null, _react.default.createElement(App, appProps)); // We catch runtime errors using componentDidCatch which will trigger renderError
+  var elem = /*#__PURE__*/_react.default.createElement(AppContainer, null, /*#__PURE__*/_react.default.createElement(App, appProps)); // We catch runtime errors using componentDidCatch which will trigger renderError
 
 
-  renderReactElement( false ? undefined : elem, appElement);
+  renderReactElement( false ? /*#__PURE__*/undefined : elem, appElement);
   emitter.emit('after-reactdom-render', {
     Component,
     ErrorComponent,
Diff for index.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.dcd3b906e1f4d8455e8b.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-4be2f450df0193b80de0.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID","isFallback":false,"gip":true}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-51838dc5b2b8e0705281.js"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.857936b621a904ac3fd2.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.dcd3b906e1f4d8455e8b.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-ae58c5bbcac63647d713.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-4be2f450df0193b80de0.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_ssgManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_ssgManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.9c10f81c48c2c37b9948.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-02911e89882e2306a50b.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID","isFallback":false,"gip":true}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-51838dc5b2b8e0705281.js"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.a5c2bcf968929a59beaa.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.9c10f81c48c2c37b9948.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-11bd4b43155578cea9b3.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-02911e89882e2306a50b.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_ssgManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_ssgManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Diff for link.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/link.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.dcd3b906e1f4d8455e8b.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-4be2f450df0193b80de0.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div><h3>A Link page!</h3><a href="/">Go to /</a></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/link","query":{},"buildId":"BUILD_ID","isFallback":false,"gip":true}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-51838dc5b2b8e0705281.js"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.module.js" crossorigin="anonymous" type="module"></script><script src="/_n
Cleaning up orphan processes

Copy link
Member

@timneutkens timneutkens left a comment

Choose a reason for hiding this comment

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

Really great work @Skn0tt 💯

@timneutkens timneutkens merged commit be02fe1 into vercel:canary May 9, 2020
rokinsky pushed a commit to rokinsky/next.js that referenced this pull request Jul 11, 2020
* Allow `@babel/preset-typescript` to be configured

Some usages, e.g. [getting parameter decorators to work properly](WarnerHooh/babel-plugin-parameter-decorator#19), require configuring `@babel/preset-typescript`.

This commit adds that functionality to `next/babel`.

* Add unit test for babel/preset allowing to pass options to @babel/preset-typescript

* Add integration test for onlyRemoveTypeImports

* Update babel dependencies

* Update to compatible typescript version and fix types

* Fix linting and run pre-nccing

* Update size-limit test

* Add additional tests

* Re-Apply delta to be calculated using -262

Co-authored-by: JJ Kasper <jj@jjsweb.site>
@Timer Timer removed this from the 10.x.x milestone Nov 16, 2020
@vercel vercel locked as resolved and limited conversation to collaborators Jan 29, 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.

5 participants