{
  "extends": ["eslint:recommended"],
  "plugins": ["jsdoc"],
  "rules": {
    "brace-style": "error",
    "camelcase": "error",
    "comma-spacing": [
      "error",
      {
        "before": false,
        "after": true
      }
    ],
    "curly": "error",
    "eol-last": ["error", "always"],
    "eqeqeq": ["error", "always"],
    "indent": [
      "error",
      2,
      {
        "SwitchCase": 1
      }
    ],
    "jsdoc/check-param-names": "error",
    "jsdoc/check-tag-names": "error",
    "jsdoc/newline-after-description": "error",
    "jsdoc/require-description-complete-sentence": "error",
    "jsdoc/require-param": "error",
    "jsdoc/require-param-name": "error",
    "jsdoc/require-param-type": "error",
    "jsdoc/valid-types": "error",
    "key-spacing": "error",
    "linebreak-style": ["error", "unix"],
    "newline-before-return": "error",
    "no-await-in-loop": "error",
    "no-console": [
      "error",
      {
        "allow": ["warn", "error"]
      }
    ],
    "no-multi-spaces": "error",
    "no-return-await": "error",
    "no-unused-vars": [
      "error",
      {
        "argsIgnorePattern": "next"
      }
    ],
    "no-var": "error",
    "object-curly-spacing": ["error", "always"],
    "padding-line-between-statements": [
      "error",
      {
        "blankLine": "always",
        "prev": ["const", "let", "var"],
        "next": "*"
      },
      {
        "blankLine": "any",
        "prev": ["const", "let", "var"],
        "next": ["const", "let", "var"]
      }
    ],
    "prefer-const": [
      "error",
      {
        "destructuring": "any",
        "ignoreReadBeforeAssign": false
      }
    ],
    "quotes": [
      "error",
      "single",
      {
        "allowTemplateLiterals": true,
        "avoidEscape": true
      }
    ],
    "require-await": "error",
    "require-jsdoc": [
      "error",
      {
        "require": {
          "FunctionDeclaration": true,
          "MethodDefinition": true,
          "ClassDeclaration": true,
          "ArrowFunctionExpression": false,
          "FunctionExpression": false
        }
      }
    ],
    "semi": ["error", "always"],
    "space-before-blocks": "error",
    "spaced-comment": ["error", "always"],
    "space-infix-ops": "error"
  }
}
