module.exports = {
  root: true,
  env: { browser: true, es2020: true },
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:react-hooks/recommended',
  ],
  ignorePatterns: ['dist', '.eslintrc.cjs'],
  parser: '@typescript-eslint/parser',
  plugins: ['react-refresh'],
  rules: {
    'react-refresh/only-export-components': [
      'warn',
      { allowConstantExport: true },
    ],
    '@typescript-eslint/consistent-type-imports': 'error',
    '@typescript-eslint/member-delimiter-style': [
      'error',
      {
        'multiline': {
          'delimiter': 'none',
          'requireLast': true
        },
        'singleline': {
          'delimiter': 'comma',
          'requireLast': false
        }
      }
    ],
    '@typescript-eslint/type-annotation-spacing': [
      'error',
      {
        'before': false,
        'after': true,
        'overrides': {
          'arrow': {
            'before': true,
            'after': true
          }
        }
      }
    ],
    'arrow-body-style': [
      'error',
      'as-needed'
    ],
    'arrow-spacing': 'error',
    'brace-style': [
      'error',
      '1tbs'
    ],
    'comma-dangle': [
      'error',
      'always-multiline'
    ],
    'curly': [
      'off'
    ],
    'eol-last': [
      'error',
      'always'
    ],
    'indent': [
      'error',
      2
    ],
    'jsx-quotes': [
      'error',
      'prefer-double'
    ],
    'line-comment-position': [
      'error',
      'above'
    ],
    'linebreak-style': [
      'error',
      'unix'
    ],
    'max-len': [
      'warn',
      {
        'code': 160
      }
    ],
    'no-array-constructor': 'error',
    'no-eval': 'error',
    'no-lonely-if': 'error',
    'no-multi-assign': 'error',
    'no-new-object': 'error',
    'no-tabs': 'error',
    'no-trailing-spaces': 'warn',
    'no-unreachable': 'error',
    'no-var': 'error',
    'nonblock-statement-body-position': 'error',
    'one-var': [
      'error',
      'never'
    ],
    'prefer-arrow-callback': 'error',
    'prefer-const': 'warn',
    'quotes': [
      'error',
      'single'
    ],
    'semi': [
      'error',
      'never'
    ],
    'sort-imports': [
      'warn',
      {
        'memberSyntaxSortOrder': [
          'none',
          'all',
          'single',
          'multiple'
        ]
      }
    ],
    'sort-vars': 'error'
  },
  'overrides': [
    {
      'files': [
        '*.tsx'
      ],
      'rules': {
        'max-len': [
          'off'
        ]
      }
    }
  ]
}