{
  "root": true,
  "env": {
    "browser": true,
    "commonjs": true,
    "es6": true,
    "node": true,
    "jest": true
  },
  "parser": "@typescript-eslint/parser",
  "extends": [
    "airbnb",
    "plugin:react/recommended",
    "plugin:prettier/recommended",
    "plugin:react-hooks/recommended"
  ],
  "parserOptions": {
    "ecmaFeatures": {
      "experimentalObjectRestSpread": true
    },
    "sourceType": "module"
  },
  "plugins": ["react", "babel", "@typescript-eslint/eslint-plugin"],
  "globals": {
    "ActiveXObject": false,
    "describe": false,
    "it": false,
    "expect": false,
    "jest": false,
    "$": false,
    "afterEach": false,
    "beforeEach": false
  },
  "overrides": [
    {
      "files": ["*.ts", "*.tsx"],
      "rules": {
        "@typescript-eslint/no-unused-vars": [2, { "args": "none" }],
        "@typescript-eslint/no-use-before-define": [2, { "functions": false, "classes": false }]
      }
    }
  ],
  "rules": {
    "prettier/prettier": ["warn", { "trailingComma": "es5", "printWidth": 200 }],
    "linebreak-style": ["error", "unix"],
    "no-console": ["warn", { "allow": ["warn", "error", "log"] }],
    "no-case-declarations": 0,
    "no-param-reassign": 0,
    "no-underscore-dangle": 0,
    "no-useless-constructor": 0,
    "no-unused-vars": [2, { "vars": "all", "args": "none" }],
    "no-restricted-syntax": 0,
    "no-unused-expressions": ["error", { "allowShortCircuit": true, "allowTernary": true }],
    "no-plusplus": 0,
    "no-return-assign": 0,
    "no-script-url": 0,
    "no-extend-native": 0,
    "no-restricted-globals": 0,
    "no-nested-ternary": 0,
    "no-empty": 0,
    "no-void": 0,
    "no-useless-escape": 0,
    "no-bitwise": 0,
    "no-mixed-operators": 0,
    "consistent-return": 0,
    "one-var": 0,
    "prefer-promise-reject-errors": 0,
    "prefer-destructuring": 0,
    "global-require": 0,
    "guard-for-in": 0,
    "func-names": 0,
    "strict": 0,
    "radix": 0,
    "no-prototype-builtins": 0,
    "class-methods-use-this": 0,
    "import/no-dynamic-require": 0,
    "import/no-unresolved": 0,
    "import/extensions": 0,
    "import/no-extraneous-dependencies": 0,
    "import/prefer-default-export": 0,
    "import/no-absolute-path": 0,
    "react/no-danger": 0,
    "react/forbid-prop-types": 0,
    "react/prop-types": 0,
    "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", "ts", "tsx"] }],
    "react/sort-comp": 0,
    "react/no-did-update-set-state": 0,
    "react/prefer-stateless-function": 0,
    "react/jsx-closing-tag-location": 0,
    "react/jsx-no-bind": 0,
    "react/no-array-index-key": 0,
    "react/no-children-prop": 0,
    "react/no-did-mount-set-state": 0,
    "react/no-find-dom-node": 0,
    "react/default-props-match-prop-types": 0,
    "react/jsx-one-expression-per-line": 0,
    "react/react-in-jsx-scope": 0,
    "react/jsx-props-no-spreading": 0,
    "jsx-a11y/anchor-is-valid": 0,
    "jsx-a11y/no-static-element-interactions": 0,
    "jsx-a11y/click-events-have-key-events": 0,
    "jsx-a11y/no-noninteractive-element-interactions": 0,
    "jsx-a11y/alt-text": 0,
    "jsx-a11y/label-has-for": 0,
    "jsx-a11y/label-has-associated-control": 0,
    "jsx-a11y/no-noninteractive-tabindex": 0,
    "jsx-a11y/tabindex-no-positive": 0,
    "react/jsx-indent": 0,
    "react/display-name": 0,
    "react/no-multi-comp": 0,
    "react/destructuring-assignment": 0,
    "react/no-access-state-in-setstate": 0,
    "react/button-has-type": 0,
    "react/require-default-props": 0,
    "react/jsx-wrap-multilines": 0,
    "react/no-render-return-value": 0,
    "array-callback-return": 0,
    "no-cond-assign": 0,
    "@typescript-eslint/explicit-function-return-type": 0,
    "no-use-before-define": 0,
    "@typescript-eslint/no-use-before-define": 2,
    "@typescript-eslint/no-var-requires": 0,
    "@typescript-eslint/no-empty-function": 0,
    "no-shadow": 0,
    "no-continue": 0,
    "no-loop-func": 0,
    "prefer-spread": 0,
    "react-hooks/rules-of-hooks": "error",
    "react-hooks/exhaustive-deps": "warn",
    "no-undef": 0
  }
}
