* Update to jest 24
* Add notice about pnpResolver.js
* Formatting
* Fix linting
* Update to jest 24.1.0
* Update jest-pnp-resolver
* Swap create-react-app params in e2e scripts
* Add extraGlobals to supportedKeys
* Bump jest to 24.3.1
* Bump jest to 24.4.0
* Bumb jest to 24.5.0
* Update template dependencies jest to 24.5.0
* Debug failing test
* Remove jest-pnp-resolver
* Remove console.log
* Revert yarn.lock.cached
* Initial pass adding typescript-eslint
* Add warning to shared rule set
* Add documentation for setting up VSCode extension
* Provide tsconfig path to typescript-eslitn
* Add Babel plug-in for Hooks; Add ESLint plug-in for Hooks (WIP)
* Fix transform destructuring loose config
* Add eslint-plugin-react-hooks to package.json
* Fix package.json's
* Fix eslint-plugin-react-hooks version
* Fix package.json
* Fix package.json
* Add eslint-plugin-react-hooks to script package.json
* Force array destructuring to work in loose mode only for known Hooks
* Update based on feedback from PR
* Add 'exhaustive-deps' lint rule
* Bump eslint-plugin-react-hooks to stable version
* Remove extraneous dependency from react-scripts
* Revert "Revert "Speed up TypeScript projects (#5903)""
This reverts commit 544a5943ce.
* Move fork-ts-checker dep to react-dev-utils
* Convert WebpackDevServerUtils.createCompiler to take in options arg
* Update README.md for react-dev-utils
As a lot of [people](https://hackernoon.com/why-i-no-longer-use-typescript-with-react-and-why-you-shouldnt-either-e744d27452b4) is complaining about TypeScript performance in CRA, I decided to enable `async` mode in TypeScript checker.
These changes basically brings the JS compilation times to TS projects. So, recompilation took less than 1 second instead of 3 seconds in medium size project.
The problem with async mode is that type-errors are reported after Webpack ends up recompilation as TypeScript could be slower than Babel. PR allows to emit files compiled by Babel immediately and then wait for TS and show type errors in terminal later. Also, if there was no compilation errors and any type error occurs, we trigger a hot-reload with new errors to show error overlay in browser.
Also, I wanted to start a discussion about `skipLibCheck: false` option in default `tsconfig.json`. This makes recompilations really slow and we should consider to set it to `true` or at least give users a big warning to let them know that it could be really slow.
The following video is showing the updated workflow with a forced 2.5 second delay for type-check to give you an idea how it works.

I'm pretty sure that PR needs some polishing and improvements but it should works as it is. Especially a "hack" with reloading the browser after type-check looks ugly to me.
cc @brunolemos as he is an initiator of an original TypeScript PR.
Should fix https://github.com/facebook/create-react-app/issues/5820
* Remove react-scripts type reference on eject
* Check for env file
* Check eject for typescript
* Shuffle appTypeDeclarations
* Append internal types on eject
* Ensure lib is published for types
* Adjust comment
* Don't add a bunch of new lines
* File should exist and not be deleted
* Add debug
* Set file explicitly
* Revert "Set file explicitly"
This reverts commit bcd58a36cbd08a71af50b037d8f1fae6c595fb4e.
* Copy file before destroying ourselves
* Revert "Add debug"
This reverts commit 0068ba81c6d79d99788877c9e1b618acd7412dce.
* Specify types in package
* Do not remove types file on eject
* Stop copying types into generated project
* Reference react and react-dom
* Reference node types
* Install node types as well
* Restore copying
* Add Node to the list of installed types
* Reference Jest types
* Remove jest types from install
* Remove jest from CRA install
* Remove Jest reference and let user do this themselves
* Stop copying types file
* Add types key to package.json
* Add appTypeDeclarations and create when missing
* Rename declarations file
* Add Jest back to install instructions
* Minimize diff
* Add TypeScript app creation
* Actually specify new extension
* Check for ts and tsx
* Fix types in default service worker file
* Mirror changes in JS version of SW
* Separate templates
* Use separate template directory
* Remove unused function
* Add a tsconfig file to the template
* Test install of typescript
* Add e2e for TypeScript
* Check for index.tsx to make sure we're not in the JS template
* Ensure TypeScript doesn't leak into normal installs
* Ignore some files
* Print version of CRA
* Fix script
* Add new template
* Move test to correct location
* Use `verifyTypeScriptSetup` routine to populate files
* Ensure tsconfig is created
* Adds the PnP plugin for Webpack to find dependencies when working under PnP
* Adds configuration for jest
* Adds an e2e test for when using PnP
* Avoids cra from crashing at the engine check
* Avoids cra from crashing when initializing react-scripts
* Makes the ownPath portable
* Fixes linting
* Bumps to pnp-webpack-plugin@1.1.0, removes symlinks: false
* Adds a --use-pnp option
* Pin version