diff --git a/frontend/.gitignore b/frontend/.gitignore
index 0ec3efa..ed92f1b 100644
--- a/frontend/.gitignore
+++ b/frontend/.gitignore
@@ -21,6 +21,8 @@ lib-cov
# Coverage directory used by tools like istanbul
coverage
+dist/
+
# nyc test coverage
.nyc_output
diff --git a/frontend/package.json b/frontend/package.json
index f6dfef6..e654a7f 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -25,6 +25,9 @@
"babel-preset-react": "^6.24.1",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
+ "husky": "^0.14.3",
+ "prettier": "1.13.5",
+ "pretty-quick": "^1.6.0",
"source-map-loader": "^0.2.3",
"tslint": "^5.10.0",
"tslint-config-prettier": "^1.13.0",
@@ -37,6 +40,7 @@
"scripts": {
"start:dev": "webpack-dev-server --hot",
"build": "webpack --mode production",
- "lint": "tslint -c tslint.json 'src/**/*.{ts,tsx}'"
+ "lint": "tslint -c tslint.json 'src/**/*.{ts,tsx}'",
+ "precommit": "pretty-quick --staged"
}
}
diff --git a/frontend/src/components/GitHubButton.tsx b/frontend/src/components/GitHubButton.tsx
index a06a0b3..aa298e3 100644
--- a/frontend/src/components/GitHubButton.tsx
+++ b/frontend/src/components/GitHubButton.tsx
@@ -3,31 +3,37 @@ import { Button, Icon } from "semantic-ui-react";
import { client } from "../configuration";
export interface IGitHubButtonState {
- loading: boolean
+ loading: boolean;
}
export class GitHubButton extends React.Component<{}, IGitHubButtonState> {
+ constructor(props: {}) {
+ super(props);
+ this.state = {
+ loading: false
+ };
+ }
- constructor(props: {}) {
- super(props);
- this.state = {
- loading: false,
- };
- }
+ render() {
+ return (
+
+ );
+ }
- render() {
- return
- }
-
- submitToGitHub() {
- this.setState({loading: true})
- client.getGitHubRedirect()
- .then(res => {
- this.setState({loading: false})
- window.location.href = res.url
- })
- }
-}
\ No newline at end of file
+ submitToGitHub() {
+ this.setState({ loading: true });
+ client.getGitHubRedirect().then(res => {
+ this.setState({ loading: false });
+ window.location.href = res.url;
+ });
+ }
+}
diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx
index 8f30aa4..ec59db5 100644
--- a/frontend/src/index.tsx
+++ b/frontend/src/index.tsx
@@ -1,19 +1,19 @@
import * as React from "react";
import * as ReactDOM from "react-dom";
-import { hot } from 'react-hot-loader';
+import { hot } from "react-hot-loader";
-import { WelcomePage } from "./components/WelcomePage";
-import { HashRouter as Router, Route, Link} from "react-router-dom";
+import { HashRouter as Router, Route } from "react-router-dom";
import { GitHubButton } from "./components/GitHubButton";
+import { WelcomePage } from "./components/WelcomePage";
ReactDOM.render(
-
-
-
-
-
- ,
- document.getElementById("example")
+
+
+
+
+
+ ,
+ document.getElementById("example")
);
-export default hot(module)(WelcomePage)
\ No newline at end of file
+export default hot(module)(WelcomePage);
diff --git a/frontend/tslint.json b/frontend/tslint.json
index 49810f2..fe89e81 100644
--- a/frontend/tslint.json
+++ b/frontend/tslint.json
@@ -4,6 +4,7 @@
// override tslint-react rules here
"jsx-wrap-multiline": false,
"member-access": [true, "no-public"],
- "jsx-boolean-value": "never"
+ "jsx-boolean-value": [true, "never"],
+ "no-reference": false
}
-}
\ No newline at end of file
+}
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 9c0d121..35282fc 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -1192,6 +1192,10 @@ chrome-trace-event@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz#d395af2d31c87b90a716c831fe326f69768ec084"
+ci-info@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2"
+
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
@@ -1842,6 +1846,18 @@ execa@^0.7.0:
signal-exit "^3.0.0"
strip-eof "^1.0.0"
+execa@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da"
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
expand-brackets@^2.1.4:
version "2.1.4"
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
@@ -2368,6 +2384,14 @@ https-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+husky@^0.14.3:
+ version "0.14.3"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3"
+ dependencies:
+ is-ci "^1.0.10"
+ normalize-path "^1.0.0"
+ strip-indent "^2.0.0"
+
iconv-lite@0.4.19:
version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
@@ -2392,6 +2416,10 @@ ignore-walk@^3.0.1:
dependencies:
minimatch "^3.0.4"
+ignore@^3.3.7:
+ version "3.3.8"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b"
+
import-local@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
@@ -2514,6 +2542,12 @@ is-callable@^1.1.1, is-callable@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+is-ci@^1.0.10:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
+ dependencies:
+ ci-info "^1.0.0"
+
is-data-descriptor@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@@ -3047,6 +3081,10 @@ move-concurrently@^1.0.1:
rimraf "^2.5.4"
run-queue "^1.0.3"
+mri@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.1.tgz#85aa26d3daeeeedf80dc5984af95cc5ca5cad9f1"
+
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -3187,6 +3225,10 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
+normalize-path@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379"
+
normalize-path@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
@@ -3509,6 +3551,10 @@ posix-character-classes@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+prettier@1.13.5:
+ version "1.13.5"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.5.tgz#7ae2076998c8edce79d63834e9b7b09fead6bfd0"
+
pretty-error@^2.0.2:
version "2.1.1"
resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
@@ -3516,6 +3562,16 @@ pretty-error@^2.0.2:
renderkid "^2.0.1"
utila "~0.4"
+pretty-quick@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-1.6.0.tgz#afc3591eb5c4cf37614a305d489a8a40e57c9258"
+ dependencies:
+ chalk "^2.3.0"
+ execa "^0.8.0"
+ find-up "^2.1.0"
+ ignore "^3.3.7"
+ mri "^1.1.0"
+
private@^0.1.6, private@^0.1.8, private@~0.1.5:
version "0.1.8"
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
@@ -4334,6 +4390,10 @@ strip-indent@^1.0.1:
dependencies:
get-stdin "^4.0.1"
+strip-indent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
+
strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"