From 7ff76049c7bde14819a0b5a6e1b934079ec35ff5 Mon Sep 17 00:00:00 2001 From: Stepan Usatiuk Date: Wed, 25 Dec 2019 20:51:12 +0300 Subject: [PATCH] add husky checks --- frontend/src/Auth/Login.tsx | 5 +- frontend/src/Auth/Signup.tsx | 5 +- frontend/src/Documents/Docs.scss | 6 +- frontend/src/Documents/DocumentCard.tsx | 5 +- frontend/src/Documents/DocumentEdit.tsx | 5 +- frontend/src/Documents/NewDocumentCard.tsx | 5 +- frontend/src/Documents/Shared.scss | 2 +- .../src/Documents/tests/DocumentEdit.test.tsx | 8 +- .../src/Documents/tests/Overview.test.tsx | 4 +- frontend/src/Home/Home.scss | 2 +- frontend/src/Home/Home.tsx | 5 +- frontend/src/env.ts | 2 +- frontend/src/index.html | 31 ++- frontend/src/redux/api/docs/index.ts | 2 +- frontend/src/redux/docs/sagas.ts | 8 +- package-lock.json | 228 ++++++++++++++++++ package.json | 3 + src/app.ts | 3 +- src/config/index.ts | 4 +- src/entity/User.ts | 2 +- 20 files changed, 276 insertions(+), 59 deletions(-) diff --git a/frontend/src/Auth/Login.tsx b/frontend/src/Auth/Login.tsx index b5a5640..3992c77 100644 --- a/frontend/src/Auth/Login.tsx +++ b/frontend/src/Auth/Login.tsx @@ -119,8 +119,5 @@ function mapDispatchToProps(dispatch: Dispatch) { } export const Login = withRouter( - connect( - mapStateToProps, - mapDispatchToProps, - )(LoginComponent), + connect(mapStateToProps, mapDispatchToProps)(LoginComponent), ); diff --git a/frontend/src/Auth/Signup.tsx b/frontend/src/Auth/Signup.tsx index beb8cae..b084ce2 100644 --- a/frontend/src/Auth/Signup.tsx +++ b/frontend/src/Auth/Signup.tsx @@ -130,8 +130,5 @@ function mapDispatchToProps(dispatch: Dispatch) { } export const Signup = withRouter( - connect( - mapStateToProps, - mapDispatchToProps, - )(SignupComponent), + connect(mapStateToProps, mapDispatchToProps)(SignupComponent), ); diff --git a/frontend/src/Documents/Docs.scss b/frontend/src/Documents/Docs.scss index 276df0f..4fd314c 100644 --- a/frontend/src/Documents/Docs.scss +++ b/frontend/src/Documents/Docs.scss @@ -66,7 +66,6 @@ } .document { - textarea, .documentContents { background: white; @@ -109,7 +108,7 @@ height: 100%; width: 3rem; - >* { + > * { width: 100%; height: 100%; @@ -229,7 +228,6 @@ } .document { - textarea, .documentContents { transition: 0.3s; @@ -266,4 +264,4 @@ } } } -} \ No newline at end of file +} diff --git a/frontend/src/Documents/DocumentCard.tsx b/frontend/src/Documents/DocumentCard.tsx index b825b26..a7d86a1 100644 --- a/frontend/src/Documents/DocumentCard.tsx +++ b/frontend/src/Documents/DocumentCard.tsx @@ -77,8 +77,5 @@ function mapDispatchToProps(dispatch: Dispatch) { } export const DocumentCard = withRouter( - connect( - null, - mapDispatchToProps, - )(DocumentCardComponent), + connect(null, mapDispatchToProps)(DocumentCardComponent), ); diff --git a/frontend/src/Documents/DocumentEdit.tsx b/frontend/src/Documents/DocumentEdit.tsx index 447917c..0378df0 100644 --- a/frontend/src/Documents/DocumentEdit.tsx +++ b/frontend/src/Documents/DocumentEdit.tsx @@ -283,8 +283,5 @@ function mapDispatchToProps(dispatch: Dispatch) { } export const DocumentEdit = withRouter( - connect( - mapStateToProps, - mapDispatchToProps, - )(DocumentEditComponent), + connect(mapStateToProps, mapDispatchToProps)(DocumentEditComponent), ); diff --git a/frontend/src/Documents/NewDocumentCard.tsx b/frontend/src/Documents/NewDocumentCard.tsx index 17275ce..caea944 100644 --- a/frontend/src/Documents/NewDocumentCard.tsx +++ b/frontend/src/Documents/NewDocumentCard.tsx @@ -44,8 +44,5 @@ function mapDispatchToProps(dispatch: Dispatch) { } export const NewDocumentCard = withRouter( - connect( - mapStateToProps, - mapDispatchToProps, - )(NewDocumentCardComponent), + connect(mapStateToProps, mapDispatchToProps)(NewDocumentCardComponent), ); diff --git a/frontend/src/Documents/Shared.scss b/frontend/src/Documents/Shared.scss index 027f364..f1e6cbd 100644 --- a/frontend/src/Documents/Shared.scss +++ b/frontend/src/Documents/Shared.scss @@ -10,4 +10,4 @@ margin-right: auto; padding-top: 2 * $pt-navbar-height + 20px; max-height: 100%; -} \ No newline at end of file +} diff --git a/frontend/src/Documents/tests/DocumentEdit.test.tsx b/frontend/src/Documents/tests/DocumentEdit.test.tsx index 5cdf5aa..cef1bc6 100644 --- a/frontend/src/Documents/tests/DocumentEdit.test.tsx +++ b/frontend/src/Documents/tests/DocumentEdit.test.tsx @@ -49,8 +49,8 @@ describe("", () => { it("should warn before exiting with unsaved changes", () => { // https://medium.com/@DavideRama/testing-global-event-listener-within-a-react-component-b9d661e59953 const map: { [key: string]: any } = {}; - window.addEventListener = jest.fn((event, cb) => { - map[event] = cb; + window.addEventListener = jest.fn((_event, cb) => { + map[_event] = cb; }); const wrapper = mount( @@ -80,8 +80,8 @@ describe("", () => { it("shouldn't warn before exiting with no changes", () => { const map: { [key: string]: any } = {}; - window.addEventListener = jest.fn((event, cb) => { - map[event] = cb; + window.addEventListener = jest.fn((_event, cb) => { + map[_event] = cb; }); const wrapper = mount( diff --git a/frontend/src/Documents/tests/Overview.test.tsx b/frontend/src/Documents/tests/Overview.test.tsx index 224962a..10effa8 100644 --- a/frontend/src/Documents/tests/Overview.test.tsx +++ b/frontend/src/Documents/tests/Overview.test.tsx @@ -15,7 +15,7 @@ describe("", () => { allDocs={{}} fetching={false} spinner={false} - fetchDocs={() => {}} + fetchDocs={() => undefined} />, ); @@ -28,7 +28,7 @@ describe("", () => { allDocs={{ 1: { id: 1 } } as any} fetching={false} spinner={false} - fetchDocs={() => {}} + fetchDocs={() => undefined} />, ); diff --git a/frontend/src/Home/Home.scss b/frontend/src/Home/Home.scss index fad787b..0b9347d 100644 --- a/frontend/src/Home/Home.scss +++ b/frontend/src/Home/Home.scss @@ -45,4 +45,4 @@ .bp3-navbar { transition: 0.3s; } -} \ No newline at end of file +} diff --git a/frontend/src/Home/Home.tsx b/frontend/src/Home/Home.tsx index 2a9ffa2..fad54ac 100644 --- a/frontend/src/Home/Home.tsx +++ b/frontend/src/Home/Home.tsx @@ -200,8 +200,5 @@ function mapDispatchToProps(dispatch: Dispatch) { } export const Home = withRouter( - connect( - mapStateToProps, - mapDispatchToProps, - )(HomeComponent), + connect(mapStateToProps, mapDispatchToProps)(HomeComponent), ); diff --git a/frontend/src/env.ts b/frontend/src/env.ts index dde8cf3..995525f 100644 --- a/frontend/src/env.ts +++ b/frontend/src/env.ts @@ -1,2 +1,2 @@ export const apiRoot = process.env.API_ROOT || "http://localhost:3000"; -export const webRoot = process.env.WEB_ROOT || "http://localhost:1234"; \ No newline at end of file +export const webRoot = process.env.WEB_ROOT || "http://localhost:1234"; diff --git a/frontend/src/index.html b/frontend/src/index.html index acf467a..17807f6 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -1,21 +1,20 @@ + + + + - - - - + - + Writer + - Writer - - - -
- - - - \ No newline at end of file + +
+ + + diff --git a/frontend/src/redux/api/docs/index.ts b/frontend/src/redux/api/docs/index.ts index 7560370..38c0297 100644 --- a/frontend/src/redux/api/docs/index.ts +++ b/frontend/src/redux/api/docs/index.ts @@ -1,7 +1,7 @@ import { IDocumentJSON } from "~../../src/entity/Document"; import { IAPIResponse } from "~../../src/types"; -import { fetchJSONAuth, fetchJSON } from "../utils"; +import { fetchJSON, fetchJSONAuth } from "../utils"; export async function fetchRecentDocs(): Promise< IAPIResponse diff --git a/frontend/src/redux/docs/sagas.ts b/frontend/src/redux/docs/sagas.ts index 4a5e164..ace02e8 100644 --- a/frontend/src/redux/docs/sagas.ts +++ b/frontend/src/redux/docs/sagas.ts @@ -146,7 +146,13 @@ function* docsUploadStart(action: IDocsUploadStartAction) { for (const doc of changedDocs) { const { response, timeout } = yield race({ - response: call(patchDoc, doc.id, doc.name, doc.content, doc.shared), + response: call( + patchDoc, + doc.id, + doc.name, + doc.content, + doc.shared, + ), timeout: delay(10000), }); diff --git a/package-lock.json b/package-lock.json index fbe552b..27c64dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -324,6 +324,12 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz", "integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==" }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, "@types/prettier": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.0.tgz", @@ -648,6 +654,32 @@ "ylru": "^1.2.0" } }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -719,6 +751,12 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "clean-stack": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", @@ -1150,6 +1188,46 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, "cross-env": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz", @@ -2184,6 +2262,117 @@ "resolved": "https://registry.npmjs.org/humanize-number/-/humanize-number-0.0.2.tgz", "integrity": "sha1-EcCvakcWQ2M1iFiASPF5lUFInBg=" }, + "husky": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-3.1.0.tgz", + "integrity": "sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "ci-info": "^2.0.0", + "cosmiconfig": "^5.2.1", + "execa": "^1.0.0", + "get-stdin": "^7.0.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^4.2.0", + "please-upgrade-node": "^3.2.0", + "read-pkg": "^5.2.0", + "run-node": "^1.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "get-stdin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2377,6 +2566,12 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3385,6 +3580,12 @@ "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=" }, + "opencollective-postinstall": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", + "dev": true + }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -3659,6 +3860,15 @@ } } }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -4009,6 +4219,12 @@ "is-promise": "^2.1.0" } }, + "run-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", + "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", + "dev": true + }, "rxjs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", @@ -4037,6 +4253,12 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -4071,6 +4293,12 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", diff --git a/package.json b/package.json index f38e8ae..074466a 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "eslint-plugin-prettier": "^3.1.1", "eslint-plugin-react": "^7.17.0", "eslint-plugin-react-hooks": "^2.3.0", + "husky": "^3.1.0", "mocha": "^6.2.2", "prettier": "^1.19.1", "supertest": "^4.0.2", @@ -66,6 +67,8 @@ "node_modules" ], "scripts": { + "pre-commit": "tslint --project . --fix && tslint --project ./frontend --fix && prettier src/** --write && prettier frontend/src/** --write", + "pre-push": "npm test && cd frontend && npm test", "ts-node-dev": "ts-node-dev -r tsconfig-paths/register src/server.ts", "start": "ts-node -T -r tsconfig-paths/register src/server.ts", "prod-start": "cross-env NODE_ENV=development npm start", diff --git a/src/app.ts b/src/app.ts index 4eb5aee..d8b87af 100644 --- a/src/app.ts +++ b/src/app.ts @@ -6,8 +6,7 @@ import * as bodyParser from "koa-body"; import * as jwt from "koa-jwt"; import * as logger from "koa-logger"; import * as send from "koa-send"; -import sslify from "koa-sslify"; -import { xForwardedProtoResolver } from "koa-sslify"; +import sslify, { xForwardedProtoResolver } from "koa-sslify"; import * as serve from "koa-static"; import { config, EnvType } from "~config"; diff --git a/src/config/index.ts b/src/config/index.ts index 7366443..b2aabe2 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -2,7 +2,9 @@ import * as fs from "fs"; import { ConnectionOptions } from "typeorm"; export enum EnvType { - production, development, test + production, + development, + test, } export interface IConfig { diff --git a/src/entity/User.ts b/src/entity/User.ts index 4774cce..e6c8d4f 100644 --- a/src/entity/User.ts +++ b/src/entity/User.ts @@ -29,7 +29,7 @@ export class User extends BaseEntity { @PrimaryGeneratedColumn() public id: number; - @Column({ length: 190}) + @Column({ length: 190 }) @Index({ unique: true }) public username: string;