{
    "root": true,
    "parser": "@typescript-eslint/parser",
    "plugins": ["@typescript-eslint"],
    "env": {
      "node": true
    },
    "extends": [
      "eslint:recommended",
      "plugin:@typescript-eslint/recommended"
    ],
    "rules": {
      "arrow-body-style": ["error", "as-needed"],
      "complexity": ["warn", { "max": 20 }],
      "curly": ["error", "multi-line", "consistent"],
      "eqeqeq": ["error", "smart"],
      "no-constant-condition": ["error", { "checkLoops": false }],
      "no-empty": ["error", { "allowEmptyCatch": true }],
      "no-lonely-if": "error",
      "no-var": "error",
      "object-shorthand": "error",
      "one-var": ["error", { "var": "never", "let": "never" }],
      "prefer-arrow-callback": "error",
      "prefer-const": ["error", { "destructuring": "all" }],
      "prefer-object-spread": "error",
      "prefer-rest-params": "warn",
      "prefer-spread": "warn",
      "quote-props": ["error", "consistent-as-needed"],
      "quotes": "error",
      "spaced-comment": ["error", "always", { "markers": ["/"] }],
      "yoda": ["error", "never", { "exceptRange": true }],
      "@typescript-eslint/no-empty-function": ["error", { "allow": ["arrowFunctions"] }],
      "@typescript-eslint/no-namespace": "off",
      "@typescript-eslint/no-explicit-any": "off",
      "@typescript-eslint/no-unused-vars": ["error", {
        "varsIgnorePattern": "^_",
        "argsIgnorePattern": "^_"
      }]
    }
  }