sourcecred/explorer
William Chargin 5744d3c860
Autogenerate PropTypes from Flow types (#20)
Summary:
Closes #17; see discussion there.

This commit uses the `babel-plugin-flow-react-proptypes` package to
automatically create PropType definitions from components that are typed
with Flow. It simultaneously updates all of our existing components to
be typed with Flow. As a result, we have both static and dynamic type
checking.

Test Plan:
Note that `yarn test` and `yarn flow` report no errors, and that there
are no prop validation errors at runtime with `yarn start`.

Then, apply the following patch:
```diff
diff --git a/explorer/src/UserExplorer.js b/explorer/src/UserExplorer.js
index bb574cd..636a10d 100644
--- a/explorer/src/UserExplorer.js
+++ b/explorer/src/UserExplorer.js
@@ -18,7 +18,7 @@ export class UserExplorer extends Component<{
         .sort((a,b) => b[1] - a[1]);
     const entries = sortedUserWeightTuples.map(authorWeight => {
       const [author, weight] = authorWeight;
-      return <UserEntry userId={author} weight={weight} key={author}/>
+      return <UserEntry userId={55} weight={weight} key={author}/>
     });
     return <div className="user-explorer">
       <h3> User Explorer </h3>
```
Note that `yarn test` fails (the `App.test.js` E2E rendering test),
`yarn flow` fails, and there is a runtime prop validation error.

wchargin-branch: autogenerate-proptypes
2018-02-17 13:30:16 -08:00
..
config Eject from create-react-app (#19) 2018-02-17 13:28:47 -08:00
flow-typed/npm Frontend setup (#13) 2018-02-16 14:32:24 -08:00
public Frontend setup (#13) 2018-02-16 14:32:24 -08:00
scripts Eject from create-react-app (#19) 2018-02-17 13:28:47 -08:00
src Autogenerate PropTypes from Flow types (#20) 2018-02-17 13:30:16 -08:00
.flowconfig Frontend setup (#13) 2018-02-16 14:32:24 -08:00
.gitignore Frontend setup (#13) 2018-02-16 14:32:24 -08:00
package.json Autogenerate PropTypes from Flow types (#20) 2018-02-17 13:30:16 -08:00
yarn.lock Autogenerate PropTypes from Flow types (#20) 2018-02-17 13:30:16 -08:00