{
  "extends": ["airbnb", "airbnb/hooks", "prettier"],
  "parser": "@babel/eslint-parser",
  "parserOptions": {
    "babelOptions": {
      "presets": [
        "@babel/preset-env",
        "@babel/preset-react",
        "@babel/preset-typescript"
      ],
      "plugins": ["@babel/plugin-transform-runtime"]
    }
  },
  "plugins": ["html", "react"],
  "rules": {
    "no-param-reassign": 1,
    "react/prop-types": 0,
    "react/jsx-props-no-spreading": 0,
    "import/extensions": [
      "error",
      "ignorePackages",
      {
        "js": "never",
        "jsx": "never",
        "ts": "never",
        "tsx": "never"
      }
    ],
    "import/no-extraneous-dependencies": [
      "error",
      {
        "devDependencies": true,
        "optionalDependencies": false,
        "peerDependencies": false
      }
    ],
    "react/function-component-definition": [
      0,
      {
        "namedComponents": "function-declaration"
      }
    ]
  },
  "settings": {
    "import/resolver": {
      "node": {
        "extensions": [".js", ".jsx", ".ts", ".tsx"]
      }
    }
  },
  // eslint that apply only to typescript files
  "overrides": [
    {
      "files": ["*.ts", "*.tsx"],
      "extends": ["airbnb-typescript", "prettier"],
      "parser": "@typescript-eslint/parser",
      "plugins": ["@typescript-eslint"],
      "parserOptions": {
        "project": "./tsconfig.json"
      },
      "rules": {
        "react/require-default-props": 0,
        "@typescript-eslint/no-explicit-any": 1
      }
    }
  ]
}
