summaryrefslogtreecommitdiffhomepage
path: root/gui
diff options
context:
space:
mode:
authorOskar <oskar@mullvad.net>2024-10-02 08:08:27 +0200
committerOskar <oskar@mullvad.net>2024-10-02 10:15:59 +0200
commitc0b514def3623964bcaace3cb06bad7762a3de04 (patch)
tree6c5e0a854f0ac6bc8e9725759a097985731a72cb /gui
parent1217112350515255c1933fe2e8192147d660b7f2 (diff)
downloadmullvadvpn-c0b514def3623964bcaace3cb06bad7762a3de04.tar.xz
mullvadvpn-c0b514def3623964bcaace3cb06bad7762a3de04.zip
Add react hooks eslint plugin
Diffstat (limited to 'gui')
-rw-r--r--gui/eslint.config.mjs4
-rw-r--r--gui/package-lock.json20
-rw-r--r--gui/package.json1
3 files changed, 25 insertions, 0 deletions
diff --git a/gui/eslint.config.mjs b/gui/eslint.config.mjs
index 5c2b5d848c..75f28f6091 100644
--- a/gui/eslint.config.mjs
+++ b/gui/eslint.config.mjs
@@ -1,6 +1,7 @@
import eslint from '@eslint/js';
import prettier from 'eslint-plugin-prettier/recommended';
import react from 'eslint-plugin-react';
+import reactHooks from 'eslint-plugin-react-hooks';
import simpleImportSort from 'eslint-plugin-simple-import-sort';
import globals from 'globals';
import tseslint from 'typescript-eslint';
@@ -128,6 +129,7 @@ export default tseslint.config(
files: ['**/*.{js,mjs,ts,tsx}'],
plugins: {
'simple-import-sort': simpleImportSort,
+ 'react-hooks': reactHooks,
},
rules: {
quotes: ['error', 'single', { avoidEscape: true }],
@@ -144,6 +146,8 @@ export default tseslint.config(
'@typescript-eslint/ban-ts-comment': ['error', { 'ts-ignore': false }],
'simple-import-sort/imports': 'error',
+ 'react-hooks/rules-of-hooks': 'error',
+
'@typescript-eslint/no-use-before-define': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
diff --git a/gui/package-lock.json b/gui/package-lock.json
index 6ff861c565..3f6bddbe34 100644
--- a/gui/package-lock.json
+++ b/gui/package-lock.json
@@ -56,6 +56,7 @@
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-react": "^7.36.1",
+ "eslint-plugin-react-hooks": "^0.0.0-experimental-2d16326d-20240930",
"eslint-plugin-simple-import-sort": "^12.1.1",
"gettext-extractor": "^3.5.4",
"globals": "^15.9.0",
@@ -5216,6 +5217,18 @@
"eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
}
},
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "0.0.0-experimental-2d16326d-20240930",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-0.0.0-experimental-2d16326d-20240930.tgz",
+ "integrity": "sha512-6SrTdUGjhhQ51U6a695UlDFzR46pFlhz0yYyLrO5f4pXGHA0aE9X0TrqcB1gPyqB7LhSKjDSaoHC5/J48GG2UQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
+ }
+ },
"node_modules/eslint-plugin-react/node_modules/resolve": {
"version": "2.0.0-next.5",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
@@ -18032,6 +18045,13 @@
}
}
},
+ "eslint-plugin-react-hooks": {
+ "version": "0.0.0-experimental-2d16326d-20240930",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-0.0.0-experimental-2d16326d-20240930.tgz",
+ "integrity": "sha512-6SrTdUGjhhQ51U6a695UlDFzR46pFlhz0yYyLrO5f4pXGHA0aE9X0TrqcB1gPyqB7LhSKjDSaoHC5/J48GG2UQ==",
+ "dev": true,
+ "requires": {}
+ },
"eslint-plugin-simple-import-sort": {
"version": "12.1.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz",
diff --git a/gui/package.json b/gui/package.json
index 457a5a97d1..6298c01286 100644
--- a/gui/package.json
+++ b/gui/package.json
@@ -62,6 +62,7 @@
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-react": "^7.36.1",
+ "eslint-plugin-react-hooks": "^0.0.0-experimental-2d16326d-20240930",
"eslint-plugin-simple-import-sort": "^12.1.1",
"gettext-extractor": "^3.5.4",
"globals": "^15.9.0",