module.exports = {
env: {
browser: true,
es6: true,
node: true,
},
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly',
},
extends: [
'airbnb-typescript',
'airbnb/hooks',
'plugin:@typescript-eslint/recommended',
'plugin:jest/recommended',
'plugin:prettier/recommended',
],
plugins: ['react', '@typescript-eslint'],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaFeatures: { jsx: true },
ecmaVersion: 2018,
sourceType: 'module',
project: './tsconfig.json',
},
rules: {
indent: [2, 2, { SwitchCase: 1 }],
'linebreak-style': 'off',
'prettier/prettier': [
'error',
{
endOfLine: 'auto',
},
],
'@typescript-eslint/explicit-module-boundary-types': 'off',
'react-hooks/exhaustive-deps': 'error',
'no-alert': 'off',
'no-console': 'off',
'no-shadow': 'off',
'@typescript-eslint/no-shadow': 'off',
'arrow-parens': 'off',
'react/no-array-index-key': 'off',
'implicit-arrow-linebreak': 'off',
'import/prefer-default-export': 'off',
'import/no-cycle': 'off',
'no-undef': 'off',
'react/no-unescaped-entities': 'off',
'import/extensions': 'off',
'react/prop-types': 'off',
'no-unused-vars': 'off',
'import/no-unresolved': 'off',
'react/jsx-props-no-spreading': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'react/display-name': 'off',
camelcase: 'off',
'global-require': 'off',
'react/jsx-wrap-multilines': 'off',
'no-control-regex': 0,
'no-use-before-define': 0,
'import/no-extraneous-dependencies': 0,
'react/jsx-filename-extension': [2, { extensions: ['.js', '.jsx', '.ts', '.tsx'] }],
'jsx-a11y/no-noninteractive-element-interactions': 0,
},
};