const tseslint = require('@typescript-eslint/eslint-plugin');
const tsParser = require('@typescript-eslint/parser');
const unusedImports = require('eslint-plugin-unused-imports');
module.exports = [
{
ignores: [
'node_modules/**',
'dist/**',
'build/**',
'*.config.js',
'eslint.config.js',
'jest.config.js',
'server/dist/**',
'server/dist-mcp/**',
'server/data/**',
'server/src/mcp-standalone.ts',
'extension/icons/**',
'cli/dist/**',
'cli/eslint.config.js',
'cli/jest.config.js',
'**/*.d.ts',
],
},
{
files: ['server/src/**/*.ts', 'server/src/**/*.tsx', 'cli/src/**/*.ts', 'cli/src/**/*.tsx'],
languageOptions: {
parser: tsParser,
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: ['./server/tsconfig.json', './cli/tsconfig.json'],
},
},
plugins: {
'@typescript-eslint': tseslint,
'unused-imports': unusedImports,
},
rules: {
// TypeScript specific rules
'@typescript-eslint/no-unused-vars': 'warn',
'@typescript-eslint/no-explicit-any': 'warn',
'@typescript-eslint/no-inferrable-types': 'warn',
// Unused imports and variables
'unused-imports/no-unused-imports': 'error',
'unused-imports/no-unused-vars': [
'warn',
{
vars: 'all',
varsIgnorePattern: '^_',
args: 'after-used',
argsIgnorePattern: '^_',
},
],
// General rules
'no-debugger': 'error',
'no-var': 'error',
'prefer-const': 'error',
'no-unused-vars': 'off', // Disabled in favor of unused-imports
},
},
{
files: ['**/*.js', '**/*.jsx'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
plugins: {
'unused-imports': unusedImports,
},
rules: {
// Unused imports and variables
'unused-imports/no-unused-imports': 'error',
'unused-imports/no-unused-vars': [
'warn',
{
vars: 'all',
varsIgnorePattern: '^_',
args: 'after-used',
argsIgnorePattern: '^_',
},
],
// General rules
'no-debugger': 'error',
'no-var': 'error',
'prefer-const': 'error',
'no-unused-vars': 'off', // Disabled in favor of unused-imports
},
},
{
files: ['**/*.test.ts', '**/*.test.js'],
rules: {
// Test-specific rules can be added here
},
},
];