{
  "plugins": [
    "cypress",
    "@cypress/dev"
  ],
  "extends": [
    "plugin:@cypress/dev/general",
    "plugin:@cypress/dev/tests",
    "plugin:@cypress/dev/react",
    "plugin:react/recommended",
    "plugin:react-hooks/recommended",
    "../../packages/reporter/src/.eslintrc.json"
  ],
  "parser": "@typescript-eslint/parser",
  "env": {
    "cypress/globals": true
  },
  "rules": {
    "no-duplicate-imports": "off",
    "no-else-return": [
      "error",
      {
        "allowElseIf": true
      }
    ],
    "react/display-name": "off",
    "react/function-component-definition": [
      "error",
      {
        "namedComponents": "arrow-function",
        "unnamedComponents": "arrow-function"
      }
    ],
    "react/jsx-boolean-value": [
      "error",
      "always"
    ],
    "react/jsx-closing-bracket-location": [
      "error",
      "line-aligned"
    ],
    "react/jsx-closing-tag-location": "error",
    "react/jsx-curly-brace-presence": [
      "error",
      {
        "props": "never",
        "children": "never"
      }
    ],
    "react/jsx-curly-newline": "error",
    "react/jsx-filename-extension": [
      "warn",
      {
        "extensions": [
          ".js",
          ".jsx",
          ".tsx"
        ]
      }
    ],
    "react/jsx-first-prop-new-line": "error",
    "react/jsx-max-props-per-line": [
      "error",
      {
        "maximum": 1,
        "when": "multiline"
      }
    ],
    "react/jsx-no-bind": [
      "error",
      {
        "ignoreDOMComponents": true
      }
    ],
    "react/jsx-no-useless-fragment": "error",
    "react/jsx-one-expression-per-line": [
      "error",
      {
        "allow": "literal"
      }
    ],
    "react/jsx-sort-props": [
      "error",
      {
        "callbacksLast": true,
        "ignoreCase": true,
        "noSortAlphabetically": true,
        "reservedFirst": true
      }
    ],
    "react/jsx-tag-spacing": [
      "error",
      {
        "closingSlash": "never",
        "beforeSelfClosing": "always"
      }
    ],
    "react/jsx-wrap-multilines": [
      "error",
      {
        "declaration": "parens-new-line",
        "assignment": "parens-new-line",
        "return": "parens-new-line",
        "arrow": "parens-new-line",
        "condition": "parens-new-line",
        "logical": "parens-new-line",
        "prop": "parens-new-line"
      }
    ],
    "react/no-array-index-key": "error",
    "react/no-unescaped-entities": "off",
    "react/prop-types": "off",
    "quote-props": [
      "error",
      "as-needed"
    ]
  },
  "overrides": [
    {
      "files": [
        "lib/*"
      ],
      "rules": {
        "no-console": 1
      }
    },
    {
      "files": [
        "**/*.json"
      ],
      "rules": {
        "quotes": "off",
        "comma-dangle": "off"
      }
    },
    {
      "files": "*.spec.tsx",
      "rules": {
        "no-unused-vars": "off",
        "react/jsx-no-bind": "off"
      }
    }
  ]
}
