import js from '@eslint/js'; import tseslint from 'typescript-eslint'; import unusedImports from 'eslint-plugin-unused-imports'; export default tseslint.config( { ignores: ['dist', 'node_modules'], }, js.configs.recommended, ...tseslint.configs.recommended, { files: ['**/*.ts'], plugins: { 'unused-imports': unusedImports, }, rules: { '@typescript-eslint/explicit-function-return-type': 'error', '@typescript-eslint/no-explicit-any': 'error', '@typescript-eslint/no-unused-vars': 'off', 'unused-imports/no-unused-imports': 'error', 'unused-imports/no-unused-vars': [ 'error', { vars: 'all', varsIgnorePattern: '^_', args: 'after-used', argsIgnorePattern: '^_', }, ], 'max-lines': ['error', { max: 250, skipBlankLines: true, skipComments: true }], 'max-lines-per-function': ['error', { max: 40, skipBlankLines: true, skipComments: true }], 'max-params': ['error', 4], 'max-depth': ['error', 4], complexity: ['error', 10], '@typescript-eslint/no-non-null-assertion': 'error', '@typescript-eslint/prefer-nullish-coalescing': 'error', '@typescript-eslint/prefer-optional-chain': 'error', '@typescript-eslint/no-floating-promises': 'error', '@typescript-eslint/no-misused-promises': 'error', 'prefer-const': 'error', 'no-var': 'error', 'eqeqeq': ['error', 'always'], 'curly': ['error', 'all'], 'no-else-return': 'error', 'no-console': ['warn', { allow: ['warn', 'error'] }], }, }, );