{
    "env": {
        "browser": true,
        "es6": true,
        "node": true
    },
    "parser": "@babel/eslint-parser",
    "parserOptions": {
        "requireConfigFile": false,
        "babelOptions": {
            "presets": [
                "@babel/preset-react"
            ]
        }
    },
    "extends": [
        "react-app",
        "airbnb",
        "prettier",
        "plugin:prettier/recommended"
    ],
    "plugins": [
        "prettier",
        "unused-imports"
    ],
    "settings": {
        "import/resolver": {
            "node": {
                "paths": [
                    "src"
                ]
            }
        }
    },
    "rules": {
        // Prettier configs based on airbnb guide
        "prettier/prettier": [
            "warn",
            {
                "arrowParens": "always",
                "bracketSpacing": true,
                "jsxBracketSameLine": false,
                "jsxSingleQuote": false,
                "printWidth": 100,
                "proseWrap": "always",
                "quoteProps": "as-needed",
                "semi": true,
                "singleQuote": true,
                "tabWidth": 2,
                "trailingComma": "es5",
                "useTabs": false,
                "endOfLine": "auto",
            }
        ],
        "react/jsx-filename-extension": [
            "warn",
            {
                "extensions": [
                    ".js",
                    ".jsx"
                ]
            }
        ],
        "import/no-extraneous-dependencies": [
            "warn",
            {
                "devDependencies": true
            }
        ],
        "no-unused-vars": "off",
        "no-console": "off",
        "no-use-before-define": "off",
        "no-underscore-dangle": "off",
        "no-param-reassign": "off", // mutating redux state in redux-toolkit.
        "import/no-unresolved": "off", // raw-loader
        "global-require": "off", // raw-loader
        "react/no-array-index-key": "off",
        "react/no-unescaped-entities": "off",
        "react/destructuring-assignment": "off",
        "react/jsx-props-no-spreading": "off",
        "react/state-in-constructor": "off",
        "react/no-danger": "off",
        "react/prop-types": "off",
        "react/forbid-prop-types": "off",
        "react/require-default-props": "off",
        "react/default-props-match-prop-types": "off",
        "react/no-unused-prop-types": "off",
        "react/react-in-jsx-scope": "off", // after react v17
        "react/jsx-uses-react": "off", // after react v17
        "react/jsx-no-bind": "off",
        "unused-imports/no-unused-imports": "warn"
    }
}