{
  "extends": ["eslint:recommended", "plugin:react/recommended", "prettier"],
  "settings": {
    "react": {"version": "detect"}
  },
  "parserOptions": {
    "ecmaVersion": 2020,
    "sourceType": "module",
    "ecmaFeatures": {
      "arrowFunctions": true,
      "blockBindings": true,
      "classes": true,
      "defaultParams": true,
      "destructuring": true,
      "forOf": true,
      "generators": true,
      "modules": true,
      "templateStrings": true,
      "jsx": true
    }
  },
  "env": {
    "browser": true,
    "es6": true,
    "jasmine": true,
    "node": true
  },
  "overrides": [
    {
      "files": ["*.ts", "*.tsx"],
      "parser": "@typescript-eslint/parser",
      "plugins": ["@typescript-eslint"],
      "extends": [
        "plugin:@typescript-eslint/recommended"
      ],
      "rules": {
        // You can add TypeScript-specific rules here
      }
    }
  ],
  "plugins": [
    "react",
    "import"
  ],
  "parser": "@babel/eslint-parser",
  "rules": {
    "accessor-pairs": ["error"],
    "block-scoped-var": ["error"],
    "consistent-return": ["error"],
    "curly": ["error", "all"],
    "default-case": ["error"],
    "dot-location": ["off"],
    "dot-notation": ["error"],
    "eqeqeq": ["error"],
    "guard-for-in": ["off"],
    "import/export": "error",
    "import/named": ["off"],
    "import/namespace": ["off"],
    "import/no-duplicates": ["error"],
    "import/no-named-as-default": ["off"],
    "import/no-unresolved": ["off"],
    "new-cap": ["error", {
      "capIsNewExceptionPattern": "Immutable\\.*"
    }],
    "no-alert": ["off"],
    "no-caller": ["error"],
    "no-case-declarations": ["error"],
    "no-console": ["error"],
    "no-div-regex": ["error"],
    "no-dupe-keys": ["error"],
    "no-else-return": ["error"],
    "no-empty-pattern": ["error"],
    "no-eq-null": ["error"],
    "no-eval": ["error"],
    "no-extend-native": ["error"],
    "no-extra-bind": ["error"],
    "no-extra-boolean-cast": ["error"],
    "no-inline-comments": ["off"],
    "no-implicit-coercion": ["off"],
    "no-implied-eval": ["error"],
    "no-inner-declarations": ["off"],
    "no-invalid-this": ["error"],
    "no-iterator": ["error"],
    "no-labels": ["error"],
    "no-lone-blocks": ["error"],
    "no-loop-func": ["error"],
    "no-multi-str": ["error"],
    "no-native-reassign": ["error"],
    "no-new": ["error"],
    "no-new-func": ["error"],
    "no-new-wrappers": ["error"],
    "no-param-reassign": ["off"],
    "no-process-env": ["warn"],
    "no-proto": ["error"],
    "no-prototype-builtins": ["off"],
    "no-redeclare": ["error"],
    "no-return-assign": ["error"],
    "no-script-url": ["error"],
    "no-self-compare": ["error"],
    "no-sequences": ["error"],
    "no-shadow": ["off"],
    "no-throw-literal": ["error"],
    "no-unused-expressions": ["error"],
    "no-use-before-define": ["error", "nofunc"],
    "no-useless-call": ["error"],
    "no-useless-concat": ["error"],
    "no-with": ["error"],
    "prefer-const": ["error"],
    "radix": ["error"],
    "react/jsx-no-duplicate-props": ["error"],
    "react/jsx-no-undef": ["error"],
    "react/jsx-uses-react": ["error"],
    "react/jsx-uses-vars": ["error"],
    "react/no-did-update-set-state": ["error"],
    "react/no-direct-mutation-state": ["error"],
    "react/no-is-mounted": ["error"],
    "react/no-unknown-property": ["error", {"ignore": ["jsx"]}],
    "react/prefer-es6-class": ["error", "always"],
    "react/prop-types": "error",
    "valid-jsdoc": ["off"],
    "yoda": ["error"],
    "spaced-comment": ["error", "always", {
      "block": {
        "exceptions": ["*"]
      }
    }],
    "no-unused-vars": ["error", {
        "args": "after-used",
        "argsIgnorePattern": "^_",
        "caughtErrorsIgnorePattern": "^e$"
    }],
    "no-magic-numbers": ["error", {
      "ignoreArrayIndexes": true,
      "ignore": [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 100, 10, 16, 0.5, 25, 1000]
    }],
    "no-underscore-dangle": ["off"],
    "no-useless-escape": ["off"]
  }
}
