From 261d59380e768d1ee1058ef14ca1bc3f111c6228 Mon Sep 17 00:00:00 2001 From: Yousef Moazzam Date: Tue, 9 Sep 2025 09:30:55 +0100 Subject: [PATCH 1/5] Remove tools integrating prettier and eslint For simplicitly, for now, it will be sufficient to use the two tools (prettier and eslint) independently, rather than having some kind of integration of them. --- frontend/eslint.config.js | 7 +-- frontend/package-lock.json | 115 ------------------------------------- frontend/package.json | 2 - 3 files changed, 1 insertion(+), 123 deletions(-) diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 91fbe02..1f026db 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -4,8 +4,6 @@ import reactHooks from "eslint-plugin-react-hooks"; import reactRefresh from "eslint-plugin-react-refresh"; import tseslint from "typescript-eslint"; import react from "eslint-plugin-react"; -import prettier from "eslint-plugin-prettier"; -import prettierConfig from "eslint-config-prettier"; export default tseslint.config( { ignores: ["dist"] }, @@ -25,7 +23,6 @@ export default tseslint.config( "react-hooks": reactHooks, "react-refresh": reactRefresh, react, - prettier, }, rules: { ...reactHooks.configs.recommended.rules, @@ -35,7 +32,6 @@ export default tseslint.config( ], "react/react-in-jsx-scope": "off", "react/jsx-uses-react": "off", - "prettier/prettier": "error", "@typescript-eslint/no-unused-vars": [ "error", { argsIgnorePattern: "^_" }, @@ -46,6 +42,5 @@ export default tseslint.config( version: "detect", }, }, - }, - prettierConfig + } ); diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1035e0b..9f6cfbf 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -47,8 +47,6 @@ "@types/relay-runtime": "^19.0.2", "@vitejs/plugin-react": "^4.3.3", "eslint": "^9.13.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-react-refresh": "^0.4.14", @@ -1780,19 +1778,6 @@ "node": ">= 8" } }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -3874,53 +3859,6 @@ } } }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", - "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, "node_modules/eslint-plugin-react": { "version": "7.37.5", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", @@ -4126,13 +4064,6 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", @@ -5938,36 +5869,6 @@ "node": ">= 0.8.0" } }, - "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -6853,22 +6754,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.9" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, "node_modules/three": { "version": "0.173.0", "resolved": "https://registry.npmjs.org/three/-/three-0.173.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index ddef848..929484f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -55,8 +55,6 @@ "@types/relay-runtime": "^19.0.2", "@vitejs/plugin-react": "^4.3.3", "eslint": "^9.13.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-react-refresh": "^0.4.14", From 6f2b166779de7f119bf8b837f4cbb901e7b593aa Mon Sep 17 00:00:00 2001 From: Yousef Moazzam Date: Tue, 9 Sep 2025 12:25:18 +0100 Subject: [PATCH 2/5] Add prettier dev dependency --- frontend/package-lock.json | 17 +++++++++++++++++ frontend/package.json | 1 + 2 files changed, 18 insertions(+) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9f6cfbf..69d8aee 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -53,6 +53,7 @@ "globals": "^15.11.0", "husky": "^9.1.7", "lint-staged": "^16.1.5", + "prettier": "^3.6.2", "relay-compiler": "^20.0.0", "typescript": "~5.6.2", "typescript-eslint": "^8.11.0", @@ -5869,6 +5870,22 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 929484f..5195300 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -61,6 +61,7 @@ "globals": "^15.11.0", "husky": "^9.1.7", "lint-staged": "^16.1.5", + "prettier": "^3.6.2", "relay-compiler": "^20.0.0", "typescript": "~5.6.2", "typescript-eslint": "^8.11.0", From 5ef4c46522e3616ee4d2ddca528b5e1f528043f0 Mon Sep 17 00:00:00 2001 From: Yousef Moazzam Date: Tue, 9 Sep 2025 10:35:15 +0100 Subject: [PATCH 3/5] Remove eslint rules relating to react package import --- frontend/eslint.config.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 1f026db..2a8e8e6 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -30,8 +30,6 @@ export default tseslint.config( "warn", { allowConstantExport: true }, ], - "react/react-in-jsx-scope": "off", - "react/jsx-uses-react": "off", "@typescript-eslint/no-unused-vars": [ "error", { argsIgnorePattern: "^_" }, From 2c709a04c1f4c5cf77ab718072beeb67f32b6d07 Mon Sep 17 00:00:00 2001 From: Yousef Moazzam Date: Tue, 9 Sep 2025 13:13:45 +0100 Subject: [PATCH 4/5] Add eslint rule for pattern to ignore unused var --- frontend/eslint.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 2a8e8e6..800ffec 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -32,7 +32,7 @@ export default tseslint.config( ], "@typescript-eslint/no-unused-vars": [ "error", - { argsIgnorePattern: "^_" }, + { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }, ], }, settings: { From 3d293598149b1e16ad6c739e4e6aa134f026fc3d Mon Sep 17 00:00:00 2001 From: Yousef Moazzam Date: Tue, 9 Sep 2025 10:52:58 +0100 Subject: [PATCH 5/5] Add eslint step in frontend code CI --- .github/workflows/_frontend_code.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/_frontend_code.yml b/.github/workflows/_frontend_code.yml index 462b702..2ec6806 100644 --- a/.github/workflows/_frontend_code.yml +++ b/.github/workflows/_frontend_code.yml @@ -9,7 +9,7 @@ on: - main jobs: - lint: + code_checks: runs-on: ubuntu-latest steps: - name: Checkout repository code @@ -27,3 +27,7 @@ jobs: - name: Check Formatting of TypeScript Code working-directory: frontend run: npm run format:check + + - name: Check Linting Rules for TypeScript Code + working-directory: frontend + run: npm run lint