module.exports = { parser: '@typescript-eslint/parser', reportUnusedDisableDirectives: true, env: { browser: true, commonjs: true, es6: true, node: true, }, plugins: ['import', 'jest', 'prettier', 'react', 'react-hooks', '@typescript-eslint'], extends: [ 'standard', 'eslint:recommended', 'plugin:jest/all', 'plugin:@typescript-eslint/recommended', 'plugin:import/errors', 'plugin:import/warnings', 'plugin:react/recommended', 'plugin:prettier/recommended', ], parserOptions: { project: './tsconfig.json', sourceType: 'module', ecmaVersion: 2018, }, settings: { 'import/resolver': 'webpack', react: { version: 'detect', }, }, rules: { 'linebreak-style': ['error', 'unix'], 'import/first': 'error', 'import/no-unresolved': ['error'], 'jest/lowercase-name': [ 'error', { ignore: ['describe'], }, ], 'jest/prefer-inline-snapshots': ['warn'], 'no-eval': 'error', 'no-use-before-define': 'off', // Using @typescript-eslint version instead. // react 'react/display-name': 'error', 'react/function-component-definition': [2, { namedComponents: 'function-declaration' }], 'react-hooks/rules-of-hooks': 'error', 'react-hooks/exhaustive-deps': 'warn', // typescript '@typescript-eslint/explicit-function-return-type': 'error', '@typescript-eslint/explicit-module-boundary-types': 'off', '@typescript-eslint/member-delimiter-style': [ 'error', { multiline: { delimiter: 'none', requireLast: false, }, singleline: { delimiter: 'semi', requireLast: false, }, }, ], '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-use-before-define': 'error', '@typescript-eslint/promise-function-async': ['error'], '@typescript-eslint/semi': ['error', 'never'], }, }