107 lines
2.9 KiB
JavaScript
107 lines
2.9 KiB
JavaScript
// eslint.config.js - CommonJS format
|
|
const tseslint = require('@typescript-eslint/eslint-plugin');
|
|
const tsparser = require('@typescript-eslint/parser');
|
|
const importPlugin = require('eslint-plugin-import');
|
|
const js = require('@eslint/js');
|
|
|
|
module.exports = [
|
|
js.configs.recommended,
|
|
{
|
|
ignores: [
|
|
'dist/**',
|
|
'build/**',
|
|
'node_modules/**',
|
|
'*.min.js',
|
|
'.eslintcache',
|
|
'*.tsbuildinfo',
|
|
'.vscode/**',
|
|
'.idea/**'
|
|
]
|
|
},
|
|
{
|
|
files: ['**/*.ts'],
|
|
languageOptions: {
|
|
parser: tsparser,
|
|
parserOptions: {
|
|
ecmaVersion: 2020,
|
|
sourceType: 'module',
|
|
project: './tsconfig.json'
|
|
},
|
|
ecmaVersion: 2020,
|
|
sourceType: 'module',
|
|
globals: {
|
|
document: 'readonly',
|
|
navigator: 'readonly',
|
|
window: 'readonly',
|
|
console: 'readonly',
|
|
alert: 'readonly',
|
|
setTimeout: 'readonly',
|
|
clearTimeout: 'readonly',
|
|
localStorage: 'readonly',
|
|
atob: 'readonly',
|
|
btoa: 'readonly',
|
|
crypto: 'readonly',
|
|
WebSocket: 'readonly'
|
|
}
|
|
},
|
|
plugins: {
|
|
'@typescript-eslint': tseslint,
|
|
'import': importPlugin
|
|
},
|
|
rules: {
|
|
// TypeScript specific rules
|
|
'@typescript-eslint/explicit-module-boundary-types': 'warn',
|
|
'@typescript-eslint/no-explicit-any': 'warn',
|
|
'@typescript-eslint/no-unused-vars': ['error', { 'argsIgnorePattern': '^_', 'varsIgnorePattern': '^_' }],
|
|
'@typescript-eslint/consistent-type-definitions': ['error', 'interface'],
|
|
'@typescript-eslint/consistent-type-imports': 'error',
|
|
|
|
// Import rules
|
|
'import/no-unresolved': 'off', // Turn off because we're using TypeScript paths
|
|
'import/named': 'error',
|
|
'import/default': 'error',
|
|
'import/namespace': 'error',
|
|
'import/order': [
|
|
'error',
|
|
{
|
|
'groups': ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],
|
|
'newlines-between': 'always',
|
|
'alphabetize': { 'order': 'asc', 'caseInsensitive': true }
|
|
}
|
|
],
|
|
|
|
// General ESLint rules
|
|
'no-console': 'off', // Allowing console statements
|
|
'eqeqeq': ['error', 'always'],
|
|
'no-var': 'error',
|
|
'prefer-const': 'error',
|
|
'curly': 'error',
|
|
}
|
|
},
|
|
// JavaScript config for Node.js files
|
|
{
|
|
files: ['**/*.js'],
|
|
languageOptions: {
|
|
sourceType: 'commonjs',
|
|
globals: {
|
|
// Node globals
|
|
process: 'readonly',
|
|
module: 'writable',
|
|
exports: 'writable',
|
|
require: 'readonly',
|
|
__dirname: 'readonly',
|
|
__filename: 'readonly',
|
|
Buffer: 'readonly',
|
|
console: 'readonly',
|
|
setTimeout: 'readonly',
|
|
clearTimeout: 'readonly',
|
|
setInterval: 'readonly',
|
|
clearInterval: 'readonly'
|
|
}
|
|
},
|
|
rules: {
|
|
'no-undef': 'error',
|
|
'no-unused-vars': 'error'
|
|
}
|
|
}
|
|
]; |