56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
|
|
/**
|
||
|
|
* ESLint 9 Flat Config
|
||
|
|
* Migration from .eslintrc.js
|
||
|
|
*/
|
||
|
|
|
||
|
|
import js from '@eslint/js';
|
||
|
|
import tseslint from 'typescript-eslint';
|
||
|
|
import prettier from 'eslint-config-prettier';
|
||
|
|
import security from 'eslint-plugin-security';
|
||
|
|
import sonarjs from 'eslint-plugin-sonarjs';
|
||
|
|
|
||
|
|
export default tseslint.config(
|
||
|
|
js.configs.recommended,
|
||
|
|
...tseslint.configs.recommended,
|
||
|
|
prettier,
|
||
|
|
{
|
||
|
|
plugins: {
|
||
|
|
security,
|
||
|
|
sonarjs,
|
||
|
|
},
|
||
|
|
languageOptions: {
|
||
|
|
parserOptions: {
|
||
|
|
ecmaVersion: 2022,
|
||
|
|
sourceType: 'module',
|
||
|
|
},
|
||
|
|
},
|
||
|
|
rules: {
|
||
|
|
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
|
||
|
|
'@typescript-eslint/explicit-function-return-type': 'warn',
|
||
|
|
'@typescript-eslint/no-explicit-any': 'error',
|
||
|
|
'security/detect-object-injection': 'warn',
|
||
|
|
// Temporarily disabled due to ESLint 9 compatibility issues
|
||
|
|
// 'security/detect-non-literal-regexp': 'warn',
|
||
|
|
'sonarjs/cognitive-complexity': ['warn', 15],
|
||
|
|
},
|
||
|
|
},
|
||
|
|
// Type-checked config for packages with tsconfig.json
|
||
|
|
...tseslint.configs.recommendedTypeChecked,
|
||
|
|
{
|
||
|
|
languageOptions: {
|
||
|
|
parserOptions: {
|
||
|
|
project: true,
|
||
|
|
tsconfigRootDir: import.meta.dirname,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
rules: {
|
||
|
|
'@typescript-eslint/no-floating-promises': 'error',
|
||
|
|
'@typescript-eslint/await-thenable': 'error',
|
||
|
|
},
|
||
|
|
},
|
||
|
|
{
|
||
|
|
ignores: ['node_modules', 'dist', 'build', '.next', 'coverage', '**/*.config.js'],
|
||
|
|
}
|
||
|
|
);
|
||
|
|
|