83 lines
2.0 KiB
JavaScript
83 lines
2.0 KiB
JavaScript
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: '^_',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
];
|