import globals from 'globals'; import js from '@eslint/js'; import tseslint from 'typescript-eslint'; import prettier from 'eslint-plugin-prettier'; export default [ // Base configuration for all files { files: ['**/*.{ts}'], ignores: ['dist/**', 'docs/**', 'src/components/bot/templates/**'], languageOptions: { ecmaVersion: 'latest', sourceType: 'module', globals: { ...globals.node, NodeJS: 'readonly', // Add NodeJS as a global Express: 'readonly', // Add Express as a global }, }, plugins: { prettier: prettier, }, rules: { ...js.configs.recommended.rules, ...prettier.configs.recommended.rules, camelcase: 'off', 'no-invalid-this': 'off', 'prettier/prettier': 'error', 'require-jsdoc': 'off', 'valid-jsdoc': 'off', 'new-cap': ['error', { capIsNew: false }], 'no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_', }, ], }, }, // TypeScript-specific configuration { files: ['**/*.ts', '**/*.tsx'], languageOptions: { parser: tseslint.parser, parserOptions: { ecmaVersion: 'latest', sourceType: 'module', project: './tsconfig.json', }, }, plugins: { '@typescript-eslint': tseslint.plugin, }, rules: { ...tseslint.configs.recommended.rules, '@typescript-eslint/naming-convention': [ 'error', { selector: 'default', format: ['camelCase', 'PascalCase', 'snake_case', 'UPPER_CASE'], leadingUnderscore: 'allow', trailingUnderscore: 'allow', }, { selector: 'property', format: null, }, ], '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_', }, ], }, }, ];