{
  "plugins": ["@typescript-eslint", "prettier", "@typescript-eslint", "unused-imports"],
  "extends": [
    "prettier",
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ],
  "ignorePatterns": ["*.config.js"],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaVersion": 2018,
    "sourceType": "module"
  },
  "rules": {
    "no-unused-vars": "off",
    "@typescript-eslint/no-unused-vars": "warn",
    // Temporary switched off due to wrong eslint errors. Remove in next major exlint version.
    "@typescript-eslint/no-empty-function": "off",
    "react/prop-types": "off",
    "react/jsx-uses-react": "off",
    "react/react-in-jsx-scope": "off",
    "no-case-declarations": "off",
    "curly": "error",
    "dot-notation": "off",
    "eol-last": "error",
    "no-empty-function": "off",
    "eqeqeq": ["error", "always", { "null": "ignore" }],
    "no-console": ["error", { "allow": ["error", "log", "warn", "info"] }],
    "no-var": "error",
    "no-duplicate-imports": "error",
    "@typescript-eslint/no-unused-expressions": [
      "error",
      { "allowShortCircuit": true, "allowTernary": true }
    ],
    "@typescript-eslint/naming-convention": [
      "error",
      {
        "selector": "interface",
        "format": ["PascalCase"]
      }
    ],
    "@typescript-eslint/no-inferrable-types": "error"
  }
}
