{
  "extends": "tslint:latest",
  "defaultSeverity": "warning",
  "rules": {
    "align": [
      false,
      "parameters",
      "arguments",
      "statements"
    ],
    "ban": [
      true,
      "eval",
      { "name": [ "_", "forEach" ] },
      { "name": [ "_", "each" ] },
      { "name": [ "$", "each" ] }
    ],
    "class-name": true,
    "comment-format": [
      true,
      "check-space",
      "check-lowercase",
      { "ignore-words": [ "TODO", "HACK" ] }
    ],
    "curly": true,
    "eofline": true,
    "forin": true,
    "indent": [ true, "spaces", 4 ],
    "linebreak-style": [ true, "CRLF" ],
    "interface-name": [
      true,
      "always-prefix"
    ],
    "jsdoc-format": true,
    "label-position": true,
    "max-line-length": [
      true,
      180
    ],
    "ordered-imports": [
        false
    ],
    "member-access": true,
    "member-ordering": [
      true,
      {
        "order": [
          "private-static-field",
          "protected-static-field",
          "public-static-field",
          "private-instance-field",
          "protected-instance-field",
          "public-instance-field",
          "private-constructor",
          "protected-constructor",
          "public-constructor",
          "public-static-method",
          "protected-static-method",
          "public-instance-method",
          "protected-instance-method",
          "private-instance-method"
        ]
      }
    ],
    "new-parens": true,
    "no-angle-bracket-type-assertion": true,
    "no-any": false,
    "no-arg": true,
    "no-boolean-literal-compare": true,
    "no-bitwise": true,
    "no-conditional-assignment": true,
    "no-consecutive-blank-lines": true,
    "no-console": [
      true,
      "debug",
      "info",
      "error",
      "log",
      "warn",
      "time",
      "timeEnd",
      "trace"
    ],
    "no-construct": true,
    "no-parameter-properties": false,
    "no-debugger": true,
    //"no-default-export": true,
    "no-duplicate-imports": false,
    "no-duplicate-super": true,
    //"no-duplicate-key": true,
    "no-duplicate-variable": true,
    "no-empty": true,
    "no-eval": true,
    "no-inferrable-types": [ false ],
    "no-internal-module": true,
    "no-invalid-this": [
      true,
      "check-function-in-method"
    ],
    //"no-mergeable-namespace": true,
    "no-misused-new": true,
    //"no-irregular-whitespace": true, // UTF-8 BOM
    "no-non-null-assertion": false,
    "no-null-keyword": true,
    "no-reference": true,
    "no-reference-import": true,
    "no-require-imports": true,
    "no-shadowed-variable": true,
    "no-string-literal": true,
    "no-switch-case-fall-through": true,
    //"no-trailing-whitespace": true, // false positive on blank lines
    "no-unnecessary-type-assertion": true,
    "no-unnecessary-callback-wrapper": true,
    "no-unnecessary-initializer": true,
    //"no-unreachable": true,
    "no-unused-expression": true,
    "no-unused-variable": true,
    "no-unnecessary-qualifier": true,
    "no-unsafe-finally": true,
    "no-unsafe-any": false,
    "no-this-assignment": [
      true,
      { "allowed-names": [ "^self$", "^thisclass$" ] }
    ],
    "no-unbound-method": [ true, "ignore-static" ],
    "no-use-before-declare": true,
    "no-var-keyword": true,
    "no-var-requires": true,
    "no-void-expression": [ true, "ignore-arrow-function-shorthand" ],
    "object-literal-sort-keys": false,
    //"object-literal-shorthand": true,
    //"object-literal-key-quotes": true,
    "prefer-object-spread": true,
    "prefer-conditional-expression": true,
    "prefer-const": true,
    "one-line": [
      true,
      "check-open-brace",
      "check-catch",
      "check-else",
      "check-finally",
      "check-whitespace"
    ],
    "one-variable-per-declaration": true,
    "quotemark": [
      true,
      "double",
      "avoid-escape"
    ],
    "radix": false,
    "semicolon": [ true, "always" ],
    "switch-default": true,
    "trailing-comma": [
      false,
      {
        "multiline": "never",
        "singleline": "never"
      }
    ],
    "triple-equals": true,
    "typedef": [
      true,
      "call-signature",
      "arrow-call-signature",
      "parameter",
      //"arrow-parameter",
      "property-declaration",
      //"variable-declaration",
      "member-variable-declaration"
    ],
    "typedef-whitespace": [
      true,
      {
        "call-signature": "nospace",
        "index-signature": "nospace",
        "parameter": "nospace",
        "property-declaration": "nospace",
        "variable-declaration": "nospace"
      },
      {
        "call-signature": "space",
        "index-signature": "space",
        "parameter": "space",
        "property-declaration": "space",
        "variable-declaration": "space"
      }
    ],
    "use-default-type-parameter": true,
    "use-isnan": true,
    //"strict-type-predicates": true,
    "strict-boolean-expressions": false,
    /*"use-strict": [
      true,
      "check-module",
      "check-function"
    ],*/
    "variable-name": [
      true,
      "check-format",
      "ban-keywords"
    ],
    "whitespace": [
      true,
      "check-branch",
      "check-decl",
      "check-operator",
      "check-separator",
      "check-type",
      "check-rest-spread",
      "check-typecast",
      "check-type-operator",
      "check-preblock"
    ],
    "array-type": [ true, "array" ],
    "arrow-parens": [ true, "ban-single-arg-parens" ],
    "arrow-return-shorthand": true,
    "import-spacing": false,
    "match-default-export-name": true,
    "newline-before-return": false,
    "return-undefined": true,
    "space-before-function-paren": [
      true,
      {
        "anonymous": "always",
        "named": "never",
        "asyncArrow": "always",
        "method": "never",
        "constructor": "never"
      }
    ],
    "switch-final-break": [ true, "always" ],
    "deprecation": true,
    "restrict-plus-operands": false, // currently broken
    "no-submodule-imports": true,
    "no-string-throw": true,
    "no-sparse-arrays": true,
    "no-invalid-template-strings": true,
    "no-inferred-empty-object-type": true,
    "no-for-in-array": true,
    "no-floating-promises": true,
    "await-promise": [true, "Thenable"],
    "promise-function-async": true,
    "unified-signatures": true,
    "prefer-for-of": true,
    "only-arrow-functions": true,
    "no-parameter-reassignment": true,
    "no-namespace": true,
    //"no-magic-numbers": true,
    "no-import-side-effect": true,
    "adjacent-overload-signatures": true,
    "no-implicit-dependencies": false
  }
}