{
  "extends": ["prettier", "prettier/react"],
  "plugins": ["import", "react", "prettier"],
  "settings": {
    "import/extensions": [".js"]
  },
  "parser": "babel-eslint",
  "parserOptions": {
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "env": {
    "browser": true,
    "mocha": true,
    "node": true
  },
  "rules": {
    "constructor-super": "error",
    "dot-notation": ["error", { "allowKeywords": true }],
    "import/default": "error",
    "import/export": "error",
    "import/first": "error",
    "import/named": "error",
    "import/namespace": "error",
    "import/newline-after-import": "error",
    "import/no-deprecated": "error",
    "import/no-extraneous-dependencies": [
      "error",
      { "peerDependencies": true }
    ],
    "import/no-mutable-exports": "error",
    "import/no-named-as-default": "error",
    "import/no-named-as-default-member": "error",
    "import/no-unresolved": "error",
    "linebreak-style": "error",
    "lines-around-comment": [
      "error",
      {
        "beforeBlockComment": true,
        "afterBlockComment": true,
        "allowBlockStart": true,
        "allowObjectStart": true,
        "allowArrayStart": true
      }
    ],
    "no-array-constructor": "error",
    "no-class-assign": "error",
    "no-console": "error",
    "no-const-assign": "error",
    "no-debugger": "error",
    "no-dupe-args": "error",
    "no-dupe-class-members": "error",
    "no-dupe-keys": "error",
    "no-duplicate-case": "error",
    "no-empty": "error",
    "no-empty-character-class": "error",
    "no-empty-pattern": "error",
    "no-ex-assign": "error",
    "no-extend-native": "error",
    "no-extra-boolean-cast": "error",
    "no-func-assign": "error",
    "no-invalid-regexp": "error",
    "no-lonely-if": "error",
    "no-native-reassign": "error",
    "no-negated-in-lhs": "error",
    "no-new-object": "error",
    "no-new-symbol": "error",
    "no-path-concat": "error",
    "no-redeclare": "error",
    "no-regex-spaces": "error",
    "no-restricted-globals": [
      "error",
      "Debug",
      "document",
      "Document",
      "event",
      "history",
      "History",
      "length",
      "Map",
      "Node",
      "parent",
      "Range",
      "Selection",
      "Set",
      "Text"
    ],
    "no-sequences": "error",
    "no-shadow": "error",
    "no-shadow-restricted-names": "error",
    "no-tabs": "error",
    "no-this-before-super": "error",
    "no-throw-literal": "error",
    "no-undef": "error",
    "no-unneeded-ternary": "error",
    "no-unreachable": "error",
    "no-unsafe-finally": "error",
    "no-unsafe-negation": "error",
    "no-unused-expressions": "error",
    "no-unused-vars": ["error", { "vars": "all", "args": "none" }],
    "no-useless-call": "error",
    "no-useless-computed-key": "error",
    "no-useless-constructor": "error",
    "no-useless-rename": "error",
    "no-var": "error",
    "no-void": "error",
    "no-with": "error",
    "object-shorthand": ["error", "always"],
    "prefer-arrow-callback": "error",
    "prefer-const": [
      "error",
      { "destructuring": "all", "ignoreReadBeforeAssign": true }
    ],
    "prefer-rest-params": "error",
    "prefer-spread": "error",
    "prefer-template": "error",
    "prettier/prettier": "error",
    "radix": "error",
    "react/jsx-boolean-value": ["error", "never"],
    "react/jsx-key": "error",
    "react/jsx-no-duplicate-props": "error",
    "react/jsx-no-target-blank": "error",
    "react/jsx-no-undef": "error",
    "react/jsx-uses-react": "error",
    "react/jsx-uses-vars": "error",
    "react/jsx-wrap-multilines": "error",
    "react/no-deprecated": "error",
    "react/no-did-mount-set-state": "error",
    "react/no-did-update-set-state": "error",
    "react/no-string-refs": "error",
    "react/no-unknown-property": "error",
    "react/react-in-jsx-scope": "error",
    "react/self-closing-comp": "error",
    "react/sort-prop-types": "error",
    "spaced-comment": ["error", "always", { "exceptions": ["-"] }],
    "use-isnan": "error",
    "valid-jsdoc": [
      "error",
      { "prefer": { "return": "returns" }, "requireReturn": false }
    ],
    "valid-typeof": "error",
    "yield-star-spacing": ["error", "after"],
    "yoda": ["error", "never"],
    "padding-line-between-statements": [
      "error",
      { "blankLine": "always", "prev": "multiline-expression", "next": "*" },
      { "blankLine": "any", "prev": "multiline-expression", "next": "return" },
      { "blankLine": "always", "prev": "*", "next": "multiline-expression" },
      { "blankLine": "always", "prev": "*", "next": "multiline-expression" },
      { "blankLine": "any", "prev": "empty", "next": "multiline-expression" },
      { "blankLine": "always", "prev": "multiline-block-like", "next": "*" },
      { "blankLine": "any", "prev": "multiline-block-like", "next": "return" },
      { "blankLine": "always", "prev": "*", "next": "multiline-block-like" },
      { "blankLine": "always", "prev": "*", "next": "multiline-block-like" },
      { "blankLine": "any", "prev": "case", "next": "case" }
    ]
  },
  "overrides": [
    {
      "files": "**/test/**/*.js",
      "rules": {
        "import/no-extraneous-dependencies": false
      }
    }
  ]
}