module.exports = { root: true, ignorePatterns: ['.eslintrc.js'], env: { node: true, es2022: true, jest: true, }, parser: '@typescript-eslint/parser', parserOptions: { ecmaVersion: 2022, sourceType: 'module', project: './tsconfig.json', tsconfigRootDir: __dirname, }, plugins: ['@typescript-eslint', 'import', 'unused-imports', 'jest'], extends: [ 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:import/errors', 'plugin:import/warnings', 'plugin:import/typescript', 'plugin:jest/recommended', ], rules: { 'no-console': ['warn', { allow: ['warn', 'error', 'info', 'debug'] }], 'no-debugger': 'error', 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_', }, ], '@typescript-eslint/explicit-module-boundary-types': 'off', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/consistent-type-definitions': ['error', 'interface'], '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-require-imports': 'off', 'no-async-promise-executor': 'off', 'import/order': [ 'error', { groups: [ 'builtin', 'external', 'internal', ['parent', 'sibling'], 'index', 'object', 'type', ], 'newlines-between': 'always', alphabetize: { order: 'asc', caseInsensitive: true, }, }, ], 'import/no-duplicates': 'error', 'import/no-default-export': 'error', 'import/prefer-default-export': 'off', 'unused-imports/no-unused-imports': 'error', }, overrides: [ { files: ['tests/**/*.ts', '*.test.ts', '*.spec.ts'], parserOptions: { project: './tsconfig.test.json', tsconfigRootDir: __dirname, }, rules: { '@typescript-eslint/no-explicit-any': 'off', 'import/no-default-export': 'off', '@typescript-eslint/no-unused-vars': 'off', 'unused-imports/no-unused-imports': 'off', 'no-console': 'off', 'jest/expect-expect': 'off', }, }, { files: ['scripts/**/*.ts'], rules: { 'no-console': 'off', 'import/no-default-export': 'off', }, }, ], settings: { 'import/resolver': { typescript: { alwaysTryTypes: true, project: ['./tsconfig.json', './tsconfig.test.json'], }, }, }, };