module.exports = { parser: '@typescript-eslint/parser', parserOptions: { project: './tsconfig.json', ecmaFeatures: { jsx: true }, extraFileExtensions: ['mjs', 'tsx', 'ts'], ecmaVersion: 2020, sourceType: 'module' }, plugins: ['react', '@typescript-eslint', 'import'], env: { browser: true, commonjs: true, es6: true, es2020: true, jest: true, }, settings: { react: { pragma: 'React', version: 'detect', }, 'import/resolver': { typescript: { alwaysTryTypes: true } }, 'import/parsers': { '@typescript-eslint/parser': ['.ts', '.tsx'], }, }, rules: { '@typescript-eslint/explicit-module-boundary-types': 0, '@typescript-eslint/explicit-function-return-type': [0, { allowExpressions: true }], '@typescript-eslint/indent': ['error', 4], '@typescript-eslint/interface-name-prefix': [0, { prefixWithI: 'never' }], '@typescript-eslint/no-explicit-any': [0], '@typescript-eslint/naming-convention': [2, { selector: 'enum', format: ['UPPER_CASE', 'PascalCase'], }], '@typescript-eslint/no-non-null-assertion': 0, 'arrow-body-style': 'off', 'consistent-return': 0, curly: [2, 'all'], 'default-case': 0, 'import/no-cycle': 0, 'import/prefer-default-export': 'off', 'import/no-named-as-default': 0, indent: [0, 4], 'no-alert': 2, 'no-console': 2, 'no-debugger': 2, 'no-underscore-dangle': 'off', 'no-useless-escape': 'off', 'object-curly-newline': 'off', 'react-hooks/exhaustive-deps': 0, 'react/display-name': 0, 'react/jsx-indent-props': ['error', 4], 'react/jsx-indent': ['error', 4], 'react/jsx-one-expression-per-line': 'off', 'react/jsx-props-no-spreading': 0, 'react/prop-types': 'off', 'react/state-in-constructor': 'off', }, extends: [ 'airbnb-base', 'airbnb-typescript/base', 'airbnb/hooks', 'plugin:react/recommended', 'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended', 'plugin:import/errors', 'plugin:import/warnings', 'plugin:import/typescript', ], globals: {}, };