// 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' } } ];