90 lines
2.7 KiB
JavaScript
90 lines
2.7 KiB
JavaScript
const js = require('@eslint/js');
|
|
const globals = require('globals');
|
|
const prettier = require('eslint-config-prettier');
|
|
const {includeIgnoreFile} = require('@eslint/compat');
|
|
const path = require('node:path');
|
|
const react = require('eslint-plugin-react');
|
|
const reactHooks = require('eslint-plugin-react-hooks');
|
|
|
|
const gitignorePath = path.resolve(__dirname, '.gitignore');
|
|
|
|
module.exports = [
|
|
includeIgnoreFile(gitignorePath),
|
|
{
|
|
ignores: [
|
|
'node_modules/',
|
|
'dist/',
|
|
'build/',
|
|
'coverage/',
|
|
'.next/',
|
|
'out/',
|
|
'AdminPanel/client/src/pages/AiIntegration/ai/**',
|
|
'AdminPanel/client/src/pages/AiIntegration/js/plugins.js',
|
|
'AdminPanel/client/src/pages/AiIntegration/js/plugins-ui.js',
|
|
'*.min.js',
|
|
'package-lock.json',
|
|
'npm-shrinkwrap.json',
|
|
'SpellChecker/**',
|
|
'Metrics/**'
|
|
]
|
|
},
|
|
js.configs.recommended,
|
|
{
|
|
languageOptions: {
|
|
ecmaVersion: 2022,
|
|
sourceType: 'module',
|
|
globals: {
|
|
...globals.node, // All Node.js globals automatically
|
|
...globals.es2022 // Modern JavaScript globals
|
|
}
|
|
},
|
|
rules: {
|
|
// Code quality rules (compatible with Prettier)
|
|
'no-unused-vars': [
|
|
'error',
|
|
{
|
|
argsIgnorePattern: '^_',
|
|
varsIgnorePattern: '^_',
|
|
caughtErrorsIgnorePattern: '^_'
|
|
}
|
|
],
|
|
'no-undef': 'error',
|
|
eqeqeq: 'off',
|
|
curly: ['error', 'all'],
|
|
|
|
// Server-friendly settings
|
|
'no-console': 'off', // Allow console in server code
|
|
'no-continue': 'off', // Allow continue statements
|
|
'no-plusplus': 'off',
|
|
|
|
// Modern JavaScript practices
|
|
'prefer-const': 'error', // Enforce const for immutable bindings
|
|
'no-var': 'error', // Enforce let/const over var
|
|
'object-shorthand': 'error', // Modern object property syntax
|
|
'prefer-arrow-callback': 'error', // Modern callback style
|
|
'no-duplicate-imports': 'error', // Avoid duplicate imports
|
|
'no-useless-constructor': 'error', // Remove unnecessary constructors
|
|
'no-useless-return': 'error', // Remove unnecessary return statements
|
|
'max-lines': ['warn', 5000]
|
|
}
|
|
},
|
|
{
|
|
files: ['AdminPanel/client/**/*.{js,jsx}'],
|
|
plugins: {react, 'react-hooks': reactHooks},
|
|
languageOptions: {
|
|
ecmaVersion: 2022,
|
|
sourceType: 'module',
|
|
parserOptions: {ecmaFeatures: {jsx: true}},
|
|
globals: {...globals.browser, ...globals.es2022}
|
|
},
|
|
settings: {react: {version: 'detect'}},
|
|
rules: {
|
|
'react/react-in-jsx-scope': 'off',
|
|
'react/jsx-uses-vars': 'error',
|
|
'react-hooks/rules-of-hooks': 'error',
|
|
'react-hooks/exhaustive-deps': 'warn'
|
|
}
|
|
},
|
|
prettier
|
|
];
|