text: module.exports = {
    parser: '@typescript-eslint/parser',
    extends: [
      'eslint:recommended',
      'plugin:react/recommended',
      'plugin:@typescript-eslint/recommended',
      'prettier/@typescript-eslint',
      'plugin:prettier/recommended',
      'airbnb',
      'airbnb/hooks',
    ],
    plugins: ['@typescript-eslint', 'prettier', 'react', 'emotion'],
    parserOptions: {
      ecmaVersion: 2018,
      sourceType: 'module',
      ecmaFeatures: { jsx: true },
    },
    env: {
      browser: true,
      es6: true,
      node: true,
    },
    rules: {
      'import/extensions': [
        'error',
        'ignorePackages',
        {
          js: 'never',
          jsx: 'never',
          ts: 'never',
          tsx: 'never',
        },
      ],
      'arrow-parens': ['error', 'always'],
      'max-len': ['error', { code: 140, ignoreUrls: true }],
      'import/prefer-default-export': 'off',
      '@typescript-eslint/explicit-function-return-type': 'off',
      '@typescript-eslint/explicit-module-boundary-types': 'off',
      indent: ['error', 2, { SwitchCase: 1 }],
      quotes: ['error', 'single'],
      semi: ['error', 'always'],
      'react/prop-types': 'off', // Disable prop-types as we use TypeScript for type checking
      'prettier/prettier': 'error',
      'react/jsx-filename-extension': [1, { extensions: ['.tsx', '.ts'] }],
      'react/no-unescaped-entities': 'off',
      'react/jsx-one-expression-per-line': 'off',
      'react/jsx-props-no-spreading': 'off',
      'object-curly-newline': [
        'error',
        {
          ObjectExpression: { multiline: true },
          ObjectPattern: { multiline: true },
          ImportDeclaration: 'never',
          ExportDeclaration: { multiline: true, minProperties: 2 },
        },
      ],
      'emotion/jsx-import': 'error',
      'emotion/no-vanilla': 'error',
      'emotion/import-from-emotion': 'error',
      'emotion/styled-import': 'error',
    },
    settings: {
      react: { version: 'detect' },
      'import/resolver': { typescript: {} }, // this loads <rootdir>/tsconfig.json to eslint
    },
    overrides: [
      // Override some TypeScript rules just for .js files
      {
        files: ['*.js'],
        rules: { '@typescript-eslint/no-var-requires': 'off', '@typescript-esling/implicit-any-type': 'off' },
      },
    ],
  };
  