/**
 * Copyright (c) 2021 Yummygum - CC BY-NC-ND
 * This file is licensed separately from the rest of the project.
 * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
 */
{
  "parser": "@babel/eslint-parser",
  "parserOptions": {
    "ecmaVersion": 11,
    "ecmaFeatures": {
      "jsx": true,
      "modules": true
    }
  },
  "plugins": [
    "react",
    "import",
    "jest"
  ],
  "env": {
    "node": true,
    "browser": true,
    "jest/globals": true
  },
  "root": true,
  "globals": {},
  "extends": [
    "eslint:recommended",
    "plugin:react/recommended",
    "airbnb"
  ],
  "ignorePatterns": [
    "dist"
  ],
  "rules": {
    "jsx-a11y": 0,
    "semi": [
      2,
      "never"
    ],
    "brace-style": [
      2,
      "1tbs",
      {
        "allowSingleLine": true
      }
    ],
    "camelcase": 2,
    "comma-style": [
      2,
      "last"
    ],
    "curly": 2,
    "eqeqeq": 2,
    "func-names": 2,
    "space-before-function-paren": [
      "error",
      "never"
    ],
    "guard-for-in": 2,
    "wrap-iife": 2,
    "no-undef": 2,

    "new-cap": 2,
    "quotes": [
      2,
      "single"
    ],
    "no-trailing-spaces": 2,
    "comma-dangle": 0,
    "max-len": [
      2,
      {
        "code": 120,
        "tabWidth": 2,
        "ignoreComments": true,
        "ignoreUrls": true,
        "ignoreStrings": true,
        "ignoreTemplateLiterals": true
      }
    ],
    "no-underscore-dangle": 0,
    "strict": 0,
    "no-shadow": 0,
    "no-var": 2,
    "no-useless-rename": 2,
    "no-new-object": 2,
    "no-array-constructor": 2,
    "no-unused-vars": 1,
    "array-callback-return": 0,
    "global-require": 0,
    "prefer-spread": 1,
    "prefer-arrow-callback": 2,
    "prefer-const": 1,
    "react/prop-types": 2,
    "react/boolean-prop-naming": [
      "warn",
      {
        "rule": "^(is|has)[A-Z]([A-Za-z0-9]?)+"
      }
    ],
    "react/button-has-type": 0,
    "react/self-closing-comp": 1,
    "react/default-props-match-prop-types": 1,
    "react/no-deprecated": 1,
    "react/require-default-props": 0,
    "react/jsx-pascal-case": 2,
    "react/jsx-key": 1,
    "react/no-danger": 0,
    "react/jsx-no-duplicate-props": 2,
    "react/jsx-props-no-spreading": 0,
    "react/jsx-one-expression-per-line": 0,
    "react/no-direct-mutation-state": 1,
    "react/no-typos": 2,
    "react/no-string-refs": 1,
    "react/jsx-equals-spacing": [
      2,
      "never"
    ],

    "import/prefer-default-export": 0,
    "import/no-unresolved": 0,
    "react/no-array-index-key": 0,
    "no-console": [
      1,
      {
        "allow": ["warn", "error"]
      }
    ],
    "no-extend-native": 2,
    "react/jsx-filename-extension": [
      1,
      {
        "extensions": [
          ".js"
        ]
      }
    ],
    "react/jsx-max-props-per-line": [
      2,
      {
        "maximum": 1,
        "when": "multiline"
      }
    ],
    "function-paren-newline": [
      2,
      "multiline"
    ],
    "object-curly-newline": [
      "error",
      {
        "multiline": true,
        "minProperties": 3,
        "consistent": true
      }
    ],
    "import/no-dynamic-require": 2,
    "no-nested-ternary": 0,
    "jsx-a11y/mouse-events-have-key-events": 0,
    "jsx-a11y/no-noninteractive-element-interactions": 0,
    "jsx-a11y/click-events-have-key-events": 0,
    "jsx-a11y/label-has-for": 0,
    "jsx-a11y/no-static-element-interactions": 0,
    "jsx-a11y/label-has-associated-control": 0,
    "jsx-a11y/anchor-is-valid": 0,
    "jsx-a11y/media-has-caption": 0,
    "react/no-did-update-set-state": 0,
    "no-use-before-define": 0,
    "react/forbid-prop-types": 0,
    "import/no-extraneous-dependencies": [
      "error",
      {
        "devDependencies": true,
        "optionalDependencies": false,
        "peerDependencies": false
      }
    ],
    "jest/no-disabled-tests": "warn",
    "jest/no-focused-tests": "error",
    "jest/no-identical-title": "error",
    "jest/prefer-to-have-length": "warn",
    "jest/valid-expect": "error"
  }
}
