{
  "env": {
    "browser": true,
    "es6": true,
    "jest/globals": true,
    "node": true
  },
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaFeatures": {
      "experimentalObjectRestSpread": true,
      "jsx": true
    },
    "sourceType": "module"
  },
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:jsdoc/recommended",
    "plugin:json/recommended",
    "plugin:markdown/recommended",
    "prettier"
  ],
  "plugins": ["@typescript-eslint", "html", "jest", "jsdoc", "json"],
  "rules": {
    "no-console": "error",
    "no-prototype-builtins": "off",
    "no-unused-vars": "off",
    "jsdoc/check-indentation": "off",
    "jsdoc/check-alignment": "off",
    "jsdoc/check-line-alignment": "off",
    "jsdoc/multiline-blocks": "off",
    "jsdoc/newline-after-description": "off",
    "jsdoc/tag-lines": "off",
    "jsdoc/require-param-description": "off",
    "jsdoc/require-param-type": "off",
    "jsdoc/require-returns": "off",
    "jsdoc/require-returns-description": "off",
    "cypress/no-async-tests": "off",
    "@typescript-eslint/ban-ts-comment": [
      "error",
      {
        "ts-expect-error": "allow-with-description",
        "ts-ignore": "allow-with-description",
        "ts-nocheck": "allow-with-description",
        "ts-check": "allow-with-description",
        "minimumDescriptionLength": 10
      }
    ],
    "json/*": ["error", "allowComments"],
    "no-empty": ["error", { "allowEmptyCatch": true }]
  },
  "overrides": [
    {
      "files": ["cypress/**", "demos/**"],
      "rules": {
        "no-console": "off"
      }
    },
    {
      "files": ["*.spec.{ts,js}", "cypress/**", "demos/**", "**/docs/**"],
      "rules": {
        "jsdoc/require-jsdoc": "off",
        "@typescript-eslint/no-unused-vars": "off"
      }
    },
    {
      "files": ["*.html", "*.md", "**/*.md/*"],
      "rules": {
        "no-var": "error",
        "no-undef": "off",
        "@typescript-eslint/no-unused-vars": "off"
      }
    }
  ]
}
