{
  "extends": "tslint:recommended",
  "linterOptions": {
    "exclude": ["node_modules/**", "**/*.test.ts"]
  },
  "rules": {
    "adjacent-overload-signatures": true,
    "arrow-parens": false,
    "ban-comma-operator": true,
    "class-name": true,
    "curly": true,
    "cyclomatic-complexity": true,
    "deprecation": true,
    "encoding": true,
    "eofline": true,
    "file-name-casing": [true, "kebab-case"],
    "forin": true,
    "interface-name": [true, "always-prefix"],
    "interface-over-type-literal": true,
    "jsdoc-format": true,
    "max-classes-per-file": [true, 1],
    "max-line-length": { "options": [120] },
    "member-access": [true, "check-accessor"],
    "new-parens": true,
    "no-angle-bracket-type-assertion": true,
    "no-any": true,
    "no-arg": true,
    "no-bitwise": false,
    "no-conditional-assignment": true,
    "no-consecutive-blank-lines": true,
    "no-console": {
      "severity": "warning",
      "options": ["debug", "info", "log", "time", "timeEnd", "trace"]
    },
    "no-construct": true,
    "no-debugger": true,
    "no-duplicate-imports": true,
    "no-duplicate-super": true,
    "no-duplicate-switch-case": true,
    "no-duplicate-variable": true,
    "no-empty": true,
    "no-eval": true,
    "no-floating-promises": true,
    "no-implicit-dependencies": [true, ["~"]],
    "no-import-side-effect": true,
    "no-internal-module": true,
    "no-invalid-template-strings": true,
    "no-magic-numbers": [true, -1, 0, 1, 2],
    "no-misused-new": true,
    "no-non-null-assertion": true,
    "no-object-literal-type-assertion": true,
    "no-parameter-reassignment": true,
    "no-redundant-jsdoc": true,
    "no-require-imports": true,
    "no-reference": true,
    "no-return-await": true,
    "no-shadowed-variable": true,
    "no-string-throw": true,
    "no-switch-case-fall-through": true,
    "no-this-assignment": [true, { "allow-destructuring": true }],
    "no-trailing-whitespace": true,
    "no-unbound-method": true,
    "no-unnecessary-initializer": true,
    "no-unnecessary-type-assertion": true,
    "no-unsafe-finally": true,
    "no-var-keyword": true,
    "no-var-requires": true,
    "no-void-expression": true,
    "number-literal-format": true,
    "prefer-const": true,
    "prefer-for-of": true,
    "prefer-function-over-method": true,
    "prefer-object-spread": true,
    "prefer-readonly": true,
    "prefer-while": true,
    "promise-function-async": true,
    "quotemark": [true, "double", "avoid-template", "avoid-escape"],
    "radix": true,
    "restrict-plus-operands": true,
    "semicolon": true,
    "space-before-function-paren": [
      true,
      {
        "anonymous": "never",
        "named": "never",
        "asyncArrow": "always",
        "method": "never",
        "constructor": "never"
      }
    ],
    "strict-type-predicates": true,
    "switch-default": true,
    "trailing-comma": false,
    "triple-equals": true,
    "typedef": [
      true,
      "array-destructuring",
      "arrow-call-signature",
      "call-signature",
      "member-variable-declaration",
      "object-destructuring",
      "parameter",
      "property-declaration"
    ],
    "typedef-whitespace": [
      true,
      {
        "call-signature": "nospace",
        "index-signature": "nospace",
        "parameter": "nospace",
        "property-declaration": "nospace",
        "variable-declaration": "nospace"
      }
    ],
    "use-default-type-parameter": true,
    "use-isnan": true,
    "variable-name": [true, "ban-keywords", "check-format"],
    "whitespace": [
      true,
      "check-branch",
      "check-decl",
      "check-operator",
      "check-module",
      "check-separator",
      "chec-rest-spread",
      "check-type",
      "check-typecast",
      "check-type-operator",
      "check-preblock"
    ]
  },
  "jsRules": {
    "max-line-length": {
      "options": [120]
    }
  }
}
