module.exports = {
  parserOptions: {
    sourceType: "module",
    ecmaVersion: 2020,
    ecmaFeatures: {
      jsx: true
    }
  },
  settings: {
    react: {
      version: "18"
    },
  },
  plugins: ["@stylistic/eslint-plugin", "react"],
  extends: [],
  rules: {
    "jsx-quotes": 1,
    "react/react-in-jsx-scope": 0,
    "react/react-in-jsx-scope": 0,
    "react/display-name": 0,
    "react/forbid-prop-types": 0,
    "react/jsx-indent-props": 0,
    "react/jsx-indent": 0,
    "react/jsx-no-literals": 0,
    "react/jsx-sort-prop-types": 0,
    "react/jsx-sort-props": 0,
    "react/jsx-max-props-per-line": 0,
    "react/no-multi-comp": 0,
    "react/jsx-no-bind": 0,
    "react/no-string-refs": 0,
    "react/jsx-boolean-value": 1,
    "react/jsx-closing-bracket-location": 1,
    "react/jsx-curly-spacing": 1,
    "react/jsx-handler-names": 1,
    "react/jsx-key": 1,
    "react/jsx-no-duplicate-props": 1,
    "react/jsx-no-undef": 1,
    "react/jsx-pascal-case": 1,
    "react/jsx-uses-react": 1,
    "react/jsx-uses-vars": 1,
    "react/no-danger": 1,
    "react/no-deprecated": 1,
    "react/no-did-mount-set-state": 1,
    "react/no-did-update-set-state": 1,
    "react/no-direct-mutation-state": 1,
    "react/no-is-mounted": 1,
    "react/no-set-state": 1,
    "react/no-unknown-property": 1,
    "react/prefer-es6-class": 1,
    "react/prop-types": 1,
    "react/self-closing-comp": 1,
    "react/sort-comp": 1,
    "no-console": ["error", {allow: ["warn", "error"]}],
    "no-self-assign": ["error", {props: false}],
    "brace-style": ["error", "1tbs", {allowSingleLine: true}],
    "comma-dangle": ["off"],
    "comma-spacing": ["error", {before: false, after: true}],
    "dot-notation": "error",
    "eol-last": ["error", "always"],
    "no-irregular-whitespace": ["error"],
    "@stylistic/indent": ["error", 2],
    "@stylistic/no-mixed-spaces-and-tabs": ["error"],
    "no-debugger": "error",
    "no-floating-decimal": ["error"],
    "no-multiple-empty-lines": ["error", {max: 1, maxBOF: 0, maxEOF: 0}],
    "no-new-wrappers": "error",
    "no-throw-literal": "error",
    "no-trailing-spaces": ["error"],
    "no-var": "error",
    "object-shorthand": "error",
    "prefer-const": ["error", {destructuring: "all"}],
    "prefer-exponentiation-operator": "error",
    "quote-props": ["error", "as-needed"],
    "object-curly-spacing": ["error", "never"],
    "space-before-blocks": ["error", "always"],
    "space-before-function-paren": ["error", {
      anonymous: "never",
      named: "never",
      asyncArrow: "always",
    }],
    "space-in-parens": ["error", "never"],
    "keyword-spacing": ["error", {before: true, after: true}],
    "func-call-spacing": ["error", "never"],
    "no-whitespace-before-property": ["error"],
    "block-spacing": ["error", "always"],
    "key-spacing": ["error", {
      beforeColon: false,
      afterColon: true,
      mode: "minimum",
    }],
    "space-unary-ops": ["error", {
      words: true,
      nonwords: false,
      overrides: {},
    }],
    "guard-for-in": ["warn"],
    quotes: ["error", "double", {avoidEscape: true, allowTemplateLiterals: true}],
    curly: ["error", "all"],
    "prefer-template": ["error"],
    "generator-star-spacing": ["error", {
      before: false,
      after: true,
      anonymous: {before: false, after: true},
      method: {before: true, after: false},
    }],
    "yield-star-spacing": ["error", {before: false, after: true}],
  },
}
