const path = require('path'); module.exports = { parser: '@typescript-eslint/parser', extends: [ 'airbnb-base', 'plugin:import/errors', 'plugin:import/warnings', 'plugin:import/typescript', ], root: true, env: { browser: true, }, rules: { 'import/no-extraneous-dependencies': 0, 'import/extensions': ['error', 'always', { ts: 'never', js: 'never', }], 'prefer-destructuring': ['error', { object: true, // Because Babel transformation bloats bundle size. array: false, }], // Because Babel transformation bloats bundle size. 'prefer-object-spread': ['off'], // Because we use Babel transformer to remove them. 'no-console': ['off'], }, overrides: [{ files: ['*.ts'], parserOptions: { project: path.resolve(__dirname, './tsconfig-eslint.json'), sourceType: 'module', }, extends: [ 'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended', 'plugin:@typescript-eslint/recommended-requiring-type-checking', ], plugins: [ '@typescript-eslint', ], rules: { '@typescript-eslint/prefer-includes': ['off'], '@typescript-eslint/explicit-function-return-type': ['error', { allowExpressions: true, allowHigherOrderFunctions: true, }], }, }, { files: [ 'src/**/__tests__/*.ts', 'src/**/__mocks__/*.ts', ], env: { jest: true, }, extends: [ 'plugin:jest/recommended', 'plugin:jest/style', ], }], };