{
  "env": {
    "browser": true,
    "es2021": true
  },
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaFeatures": {
      "jsx": true
    },
    "ecmaVersion": 12,
    "sourceType": "module",
    "allowImportExportEverywhere": false,
    "codeFrame": false,
    "project": "./tsconfig.json"
  },
  "ignorePatterns": ["build/", "dist/"],
  "extends": [
    "plugin:react/recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended",
    "airbnb",
    "airbnb-typescript",
    "prettier",
    "plugin:import/errors",
    "plugin:import/warnings",
    "plugin:import/typescript"
  ],
  "plugins": ["import", "react", "@typescript-eslint", "prettier"],
  "rules": {
    "import/extensions": [
      "error",
      "ignorePackages",
      {
        "js": "never",
        "jsx": "never",
        "ts": "never",
        "tsx": "never"
      }
    ],
    "@typescript-eslint/naming-convention": [
      "error",
      {
        "selector": "function",
        "format": ["PascalCase", "camelCase"],
        "leadingUnderscore": "allowSingleOrDouble"
      }
    ],
    "no-restricted-syntax": ["error", "ForInStatement", "LabeledStatement", "WithStatement"],
    "react/function-component-definition": [2, { "namedComponents": "arrow-function" }],
    "import/order": [
      "error",
      {
        "alphabetize": {
          "order": "asc",
          "caseInsensitive": true
        },
        "newlines-between": "never",
        "groups": ["builtin", "external", "parent", "sibling", "index"],
        "pathGroups": [
          {
            "pattern": "react",
            "group": "external",
            "position": "before"
          }
        ],
        "pathGroupsExcludedImportTypes": ["builtin"]
      }
    ],
    "max-len": ["error", { "code": 150 }],
    "@typescript-eslint/ban-ts-comment": ["off"],
    "import/prefer-default-export": ["off"],
    "react/prop-types": ["warn"],
    "react/require-default-props": "off",
    "react/jsx-props-no-spreading": ["off"],
    "react/jsx-curly-newline": "off",
    "no-underscore-dangle": "off"
  },
  "settings": {
    "import/resolver": {
      "node": {
        "paths": ["src"]
      }
    }
  }
}
