const path = require('path'); module.exports = { root: true, env: { node: true, }, parser: '@typescript-eslint/parser', parserOptions: { project: path.join(__dirname, 'tsconfig.extension.json'), }, plugins: [ '@typescript-eslint', ], extends: [ 'airbnb-base', 'airbnb-typescript/base', 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:import/typescript', ], settings: { 'import/resolver': { typescript: { // This is needed to properly resolve paths. project: path.join(__dirname, 'tsconfig.extension.json'), }, }, 'import/extensions': ['.js', '.jsx', '.ts', '.tsx'], }, rules: { '@typescript-eslint/lines-between-class-members': 'off', // max-len set to ignore "import" lines (as they usually get long and messy). 'max-len': ['error', { code: 100, ignorePattern: '^import\\s.+\\sfrom\\s.+;' }], // I mainly have this off as it ruins auto import sorting in VSCode. 'object-curly-newline': 'off', 'import/extensions': ['error', 'ignorePackages', { js: 'never', jsx: 'never', ts: 'never', tsx: 'never', }], 'no-restricted-syntax': 'off', 'no-await-in-loop': 'off', }, // Overrides for types. overrides: [{ files: ['**/*.d.ts'], rules: { // @typescript-eslint/no-unused-vars does not work with type definitions '@typescript-eslint/no-unused-vars': 'off', // Sometimes eslint complains about this for types (usually when using namespaces). 'import/prefer-default-export': 'off', // Types are only used for development (usually!) so dev dependencies are fine. 'import/no-extraneous-dependencies': ['error', { devDependencies: true }], } }], };