Skip to content

[chore] pass eslint to flat config #455

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 0 additions & 108 deletions openbas-front/.eslintrc.cjs

This file was deleted.

129 changes: 129 additions & 0 deletions openbas-front/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
import path from 'path';
import { fileURLToPath } from 'url';
import stylistic from '@stylistic/eslint-plugin';
import reactRefresh from 'eslint-plugin-react-refresh';
import globals from 'globals';
import js from '@eslint/js';
// import tsParser from '@typescript-eslint/parser';
import reactRecommended from 'eslint-plugin-react/configs/recommended.js';
import customRules from 'eslint-plugin-custom-rules';
import importNewlines from 'eslint-plugin-custom-rules';

// import eslint-plugin-react-hooks & @typescript-eslint/eslint-plugin to not let tools report them as unused
// eslint-disable-next-line @typescript-eslint/no-unused-vars
import eslintPluginReactHooks from 'eslint-plugin-react-hooks';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
import tsEslintEslintPlugin from '@typescript-eslint/eslint-plugin';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
import is18nextEslintPlugin from 'eslint-plugin-i18next';

import { FlatCompat } from '@eslint/eslintrc';

// mimic CommonJS variables -- not needed if using CommonJS
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const compat = new FlatCompat({
baseDirectory: __dirname,
});

// TODO add eslint-plugin-import when https://github.com/import-js/eslint-plugin-import/issues/2556 is done

export default [
// rules recommended by @eslint/js
js.configs.recommended,

// rules recommended by eslint-plugin-react
{
...reactRecommended,
settings: {
react: {
version: 'detect',
},
},
},

// rules recommended by @stylistic/eslint-plugin
stylistic.configs.customize({
semi: true,
}),

// rules recommended by @typescript-eslint/eslint-plugin
...compat.extends('plugin:@typescript-eslint/recommended'),

// rules recommended by eslint-plugin-react-hooks
...compat.extends('plugin:react-hooks/recommended'),

// rules recommended by eslint-plugin-i18next
...compat.extends('plugin:i18next/recommended'),

// eslint-plugin-custom-rules config
{
plugins: {
'custom-rules': customRules,
'import-newlines': importNewlines,
},
rules: {
'custom-rules/classes-rule': 1,
},
},

// other config
{
languageOptions: {
globals: {
...globals.browser,
...globals.commonjs,
...globals.es2020,
process: true,
},
},
plugins: {
'react-refresh': reactRefresh,
},
rules: {
// react-refresh rules
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],

// react rules
'react/no-unused-prop-types': 0,
'react/prop-types': 0,

// @typescript-eslint rules
'@typescript-eslint/naming-convention': ['error', {
selector: 'variable',
format: ['camelCase', 'UPPER_CASE'],
leadingUnderscore: 'allow',
trailingUnderscore: 'allow',
filter: {
regex: '/([^_]*)/',
match: true,
},
}],
'@typescript-eslint/no-unused-vars': [
'error',
{
argsIgnorePattern: '^_',
varsIgnorePattern: '^_',
caughtErrorsIgnorePattern: '^_',
},
],

// import-newlines rules
'import-newlines/enforce': ['error', {items: 20, 'max-len': 180}],

// @stylistic rules
'@stylistic/arrow-parens': 'off',
'@stylistic/quote-props': ['error', 'as-needed'],
'@stylistic/brace-style': ['error', '1tbs'],
},
},

// ignores patterns
{
ignores: ['src/static/ext', 'packages', 'builder/prod/build', 'builder/dev/build', 'playwright-report'],
},
];
19 changes: 7 additions & 12 deletions openbas-front/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
"@mui/lab": "5.0.0-alpha.170",
"@mui/material": "5.15.18",
"@mui/styles": "5.15.18",
"@mui/utils": "5.15.14",
"@mui/x-date-pickers": "6.20.0",
"@redux-devtools/extension": "3.3.0",
"@uiw/react-md-editor": "4.0.4",
Expand All @@ -30,7 +29,6 @@
"d3-hierarchy": "3.1.2",
"date-fns": "3.6.0",
"dompurify": "3.1.4",
"elkjs": "0.9.3",
"final-form": "4.20.10",
"final-form-arrays": "3.1.0",
"history": "5.3.0",
Expand Down Expand Up @@ -73,7 +71,6 @@
"zod": "3.23.8"
},
"devDependencies": {
"@babel/plugin-transform-modules-commonjs": "7.24.6",
"@eslint/eslintrc": "3.1.0",
"@eslint/js": "8.57.0",
"@playwright/test": "1.44.1",
Expand All @@ -85,25 +82,23 @@
"@types/react-csv": "1.1.10",
"@types/react-dom": "18.3.0",
"@types/seamless-immutable": "7.1.19",
"@types/uuid": "9.0.8",
"@typescript-eslint/eslint-plugin": "7.10.0",
"@typescript-eslint/parser": "7.10.0",
"@typescript-eslint/eslint-plugin": "7.11.0",
"@typescript-eslint/parser": "7.11.0",
"@vitejs/plugin-react": "4.3.0",
"chokidar": "3.6.0",
"compression": "1.7.4",
"cross-env": "7.0.3",
"esbuild": "0.21.4",
"eslint": "8.57.0",
"eslint-config-airbnb": "19.0.4",
"eslint-config-airbnb-base": "15.0.0",
"eslint-config-airbnb-typescript": "18.0.0",
"eslint-config-react-app": "7.0.1",
"eslint-import-resolver-typescript": "3.6.1",
"eslint-plugin-custom-rules": "link:packages/eslint-plugin-custom-rules",
"eslint-plugin-i18next": "6.0.3",
"eslint-plugin-import": "2.29.1",
"eslint-plugin-import-newlines": "1.4.0",
"eslint-plugin-playwright": "1.5.4",
"eslint-plugin-react": "7.34.1",
"eslint-plugin-playwright": "1.6.2",
"eslint-plugin-react": "7.34.2",
"eslint-plugin-react-hooks": "4.6.2",
"eslint-plugin-react-refresh": "0.4.7",
"express": "4.19.2",
"fs-extra": "11.2.0",
"globals": "15.0.0",
Expand Down
Loading