{
  root: true,
  parser: "babel-eslint",
  plugins: [/*"import", */"jsx-a11y", "react", "cypress", "chai-friendly"],
  env: {
    browser: true,
    commonjs: true,
    es6: true,
    jest: true,
    node: true,
    "cypress/globals": true
  },
  extends: ["plugin:cypress/recommended"],
  parserOptions: {
    ecmaVersion: 6,
    sourceType: "module",
    ecmaFeatures: {
      jsx: true,
      generators: true,
      experimentalObjectRestSpread: true
    }
  },
  settings: {
    "import/ignore": [
      "node_modules",
      "\\.(json|css|jpg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm)$"
    ],
    "import/extensions": [".js"],
    "import/resolver": {
      node: {
        extensions: [".js", ".json"]
      }
    }
  },
  rules: {
    // http://eslint.org/docs/rules/
    "no-return-await": "off",
    "array-callback-return": "warn",
    "camelcase": "warn",
    "curly": "warn",
    "default-case": ["warn", { commentPattern: "^no default$" }],
    "dot-location": ["warn", "property"],
    "eol-last": "warn",
    "eqeqeq": ["warn", "always"],
    "indent": ["warn", 2, { "SwitchCase": 1 }],
    "guard-for-in": "warn",
    "keyword-spacing": "warn",
    "new-parens": "warn",
    "no-array-constructor": "warn",
    "no-caller": "warn",
    "no-cond-assign": ["warn", "always"],
    "no-const-assign": "warn",
    "no-control-regex": "warn",
    "no-delete-var": "warn",
    "no-dupe-args": "warn",
    "no-dupe-class-members": "warn",
    "no-dupe-keys": "warn",
    "no-duplicate-case": "warn",
    "no-empty-character-class": "warn",
    "no-empty-pattern": "warn",
    "no-eval": "warn",
    "no-ex-assign": "warn",
    "no-extend-native": "warn",
    "no-extra-bind": "warn",
    "no-extra-label": "warn",
    "no-fallthrough": "warn",
    "no-func-assign": "warn",
    "no-global-assign": "warn",
    "no-implied-eval": "warn",
    "no-invalid-regexp": "warn",
    "no-iterator": "warn",
    "no-label-var": "warn",
    "no-labels": ["warn", { allowLoop: false, allowSwitch: false }],
    "no-lone-blocks": "warn",
    "no-loop-func": "warn",
    "no-mixed-operators": ["warn", {
      groups: [
        ["&", "|", "^", "~", "<<", ">>", ">>>"],
        ["==", "!=", "===", "!==", ">", ">=", "<", "<="],
        ["&&", "||"],
        ["in", "instanceof"]
      ],
      allowSamePrecedence: false
    }],
    "no-multi-str": "warn",
    "no-new-func": "warn",
    "no-new-object": "warn",
    "no-new-symbol": "warn",
    "no-new-wrappers": "warn",
    "no-obj-calls": "warn",
    "no-octal": "warn",
    "no-octal-escape": "warn",
    "no-redeclare": "warn",
    "no-regex-spaces": "warn",
    "no-restricted-syntax": [
      "warn",
      "LabeledStatement",
      "WithStatement"
    ],
    "no-script-url": "warn",
    "no-self-assign": "warn",
    "no-self-compare": "warn",
    "no-sequences": "warn",
    "no-shadow-restricted-names": "warn",
    "no-sparse-arrays": "warn",
    "no-template-curly-in-string": "warn",
    "no-this-before-super": "warn",
    "no-throw-literal": "warn",
    "no-undef": "warn",
    "no-unexpected-multiline": "warn",
    "no-unreachable": "warn",
    "no-unsafe-negation": "warn",
    "no-unused-expressions": "warn",
    "no-unused-labels": "warn",
    "no-unused-vars": ["warn", { vars: "local", args: "none" }],
    "no-use-before-define": ["warn", "nofunc"],
    "no-useless-computed-key": "warn",
    "no-useless-concat": "warn",
    "no-useless-constructor": "warn",
    "no-useless-escape": "warn",
    "no-useless-rename": ["warn", {
      ignoreDestructuring: false,
      ignoreImport: false,
      ignoreExport: false
    }],
    "no-with": "warn",
    "no-whitespace-before-property": "warn",
    "object-curly-spacing": ["warn", "always"],
    "operator-assignment": ["warn", "always"],
    radix: "warn",
    "require-yield": "warn",
    "rest-spread-spacing": ["warn", "never"],
    "semi": "warn",
    strict: ["warn", "never"],
    "unicode-bom": ["warn", "never"],
    "use-isnan": "warn",
    "valid-typeof": "warn",
    "react/jsx-boolean-value": "warn",
    "react/jsx-closing-bracket-location": "warn",
    "react/jsx-curly-spacing": "warn",
    "react/jsx-equals-spacing": ["warn", "never"],
    "react/jsx-first-prop-new-line": ["warn", "multiline"],
    "react/jsx-handler-names": "warn",
    "react/jsx-indent": ["warn", 2],
    "react/jsx-indent-props": ["warn", 2],
    "react/jsx-key": "warn",
    "react/jsx-max-props-per-line": "warn",
    "react/jsx-no-bind": ["warn", {"allowArrowFunctions": true}],
    "react/jsx-no-comment-textnodes": "warn",
    "react/jsx-no-duplicate-props": ["warn", { ignoreCase: true }],
    "react/jsx-no-undef": "warn",
    "react/jsx-pascal-case": ["warn", {
      allowAllCaps: true,
      ignore: []
    }],
    "react/jsx-sort-props": "warn",
    "react/jsx-tag-spacing": "warn",
    "react/jsx-uses-react": "off",
    "react/jsx-uses-vars": "warn",
    "react/jsx-wrap-multilines": "warn",
    "react/no-deprecated": "warn",
    "react/no-did-mount-set-state": "warn",
    "react/no-did-update-set-state": "warn",
    "react/no-direct-mutation-state": "warn",
    "react/no-is-mounted": "warn",
    "react/no-unused-prop-types": "warn",
    "react/prefer-es6-class": "warn",
    "react/prefer-stateless-function": "warn",
    "react/prop-types": "warn",
    "react/react-in-jsx-scope": "warn",
    "react/require-render-return": "warn",
    "react/self-closing-comp": "warn",
    "react/sort-comp": "warn",
    "react/sort-prop-types": "warn",
    "react/style-prop-object": "warn",
    "react/void-dom-elements-no-children": "warn",
    // https://github.com/evcohen/eslint-plugin-jsx-a11y/tree/master/docs/rules
    "jsx-a11y/aria-role": "warn",
    "jsx-a11y/img-has-alt": "warn",
    "jsx-a11y/img-redundant-alt": "warn",
    "jsx-a11y/no-access-key": "warn"

  }
}
