{
  "parser": "@typescript-eslint/parser",
  "reportUnusedDisableDirectives": false,
  "extends": [
    "plugin:import/errors",
    "plugin:import/warnings",
    "plugin:prettier/recommended",
    "plugin:jsx-a11y/recommended"
  ],
  "env": {
    "jest": true
  },
  "plugins": [
    "@typescript-eslint",
    "react",
    "react-hooks",
    "import",
    "jsx-a11y"
  ],
  "rules": {
    "import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
    "import/extensions": [
      "error",
      "never",
      {
        "json": "always",
        "svg": "always",
        "mock": "always",
        "js": "always"
      }
    ],
    "import/no-unresolved": "off",
    "jsx-a11y/anchor-is-valid": [
      "error",
      {
        "components": ["Link"],
        "specialLink": ["hrefLeft", "hrefRight"],
        "aspects": ["invalidHref", "preferButton"]
      }
    ], // next/link api incompatible with no-href aspect
    "react-hooks/rules-of-hooks": "error",
    "react-hooks/exhaustive-deps": "warn"
  },
  "settings": {
    "import/parser": "@typescript-eslint/parser",
    "import/resolver": {
      "node": {
        "extensions": [".js", ".ts", ".tsx"]
      }
    }
  },
  "overrides": [
    {
      "files": ["*.ts", "*.tsx"],
      "extends": [
        "plugin:@typescript-eslint/recommended"
      ],
      "rules": {
        "@typescript-eslint/ban-ts-comment": "off",
        "@typescript-eslint/no-unused-vars": [
          "error",
          {
            "vars": "all",
            "args": "after-used",
            "ignoreRestSiblings": true,
            "argsIgnorePattern": "^_"
          }
        ],
        "@typescript-eslint/no-extra-semi": "off" // conflicts with prettier
      }
    }
  ]
}
