diff --git a/ui/.eslintrc.json b/ui/.eslintrc.json new file mode 100644 index 000000000..bee9e538f --- /dev/null +++ b/ui/.eslintrc.json @@ -0,0 +1,57 @@ +{ + "root": true, + "env": { + "browser": true + }, + "plugins": [ + "jane", + "inferno" + ], + "extends": [ + "plugin:jane/recommended", + "plugin:jane/typescript", + "plugin:inferno/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "./tsconfig.json", + "warnOnUnsupportedTypeScriptVersion": false + }, + "rules": { + "@typescript-eslint/camelcase": 0, + "@typescript-eslint/member-delimiter-style": 0, + "@typescript-eslint/no-empty-interface": 0, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/no-this-alias": 0, + "@typescript-eslint/no-unused-vars": 0, + "@typescript-eslint/no-use-before-define": 0, + "@typescript-eslint/no-useless-constructor": 0, + "arrow-body-style": 0, + "curly": 0, + "eol-last": 0, + "eqeqeq": 0, + "func-style": 0, + "import/no-duplicates": 0, + "inferno/jsx-key": 0, + "inferno/jsx-no-target-blank": 0, + "inferno/jsx-props-class-name": 0, + "inferno/no-direct-mutation-state": 0, + "inferno/no-unknown-property": 0, + "max-statements": 0, + "new-cap": 0, + "no-console": 0, + "no-duplicate-imports": 0, + "no-extra-parens": 0, + "no-return-assign": 0, + "no-throw-literal": 0, + "no-trailing-spaces": 0, + "no-unused-expressions": 0, + "no-useless-constructor": 0, + "no-useless-escape": 0, + "no-var": 0, + "prefer-const": 0, + "prefer-rest-params": 0, + "quote-props": 0, + "unicorn/filename-case": 0 + } +} diff --git a/ui/package.json b/ui/package.json index 3537a2ac3..df5e07578 100644 --- a/ui/package.json +++ b/ui/package.json @@ -1,19 +1,16 @@ { "name": "lemmy", - "version": "1.0.0", "description": "A simple UI for lemmy", + "version": "1.0.0", + "author": "Dessalines", + "license": "GPL-2.0-or-later", "main": "index.js", "scripts": { - "start": "node fuse dev", - "build": "node fuse prod" + "build": "node fuse prod", + "lint": "eslint --report-unused-disable-directives --ext .js,.ts,.tsx src", + "start": "node fuse dev" }, "keywords": [], - "author": "Dessalines", - "license": "GPL-2.0-or-later", - "engines": { - "node": ">=8.9.0" - }, - "engineStrict": true, "dependencies": { "@types/autosize": "^3.0.6", "@types/js-cookie": "^2.2.1", @@ -43,9 +40,40 @@ }, "devDependencies": { "@types/i18next": "^12.1.0", + "eslint": "^6.5.1", + "eslint-plugin-inferno": "^7.14.3", + "eslint-plugin-jane": "^7.0.0", "fuse-box": "^3.1.3", + "husky": "^3.0.9", + "lint-staged": "^9.4.2", + "sortpack": "^2.0.1", "ts-transform-classcat": "^0.0.2", "ts-transform-inferno": "^4.0.2", "typescript": "^3.5.3" + }, + "engines": { + "node": ">=8.9.0" + }, + "engineStrict": true, + "husky": { + "hooks": { + "pre-commit": "lint-staged", + "pre-push": "npm run lint" + } + }, + "lint-staged": { + "*.js": [ + "npm run lint" + ], + "*.ts": [ + "npm run lint" + ], + "*.tsx": [ + "npm run lint" + ], + "package.json": [ + "sortpack", + "git add" + ] } } diff --git a/ui/src/components/symbols.tsx b/ui/src/components/symbols.tsx index e2803fb7d..a299ff253 100644 --- a/ui/src/components/symbols.tsx +++ b/ui/src/components/symbols.tsx @@ -8,7 +8,7 @@ export class Symbols extends Component { render() { return ( -