﻿{
    "extends": "tslint:latest",
    "rulesDirectory": [
        "node_modules/rxjs-tslint",
        "node_modules/codelyzer"
    ],
    "rules": {
        "max-classes-per-file": [
            true,
            20,
            "exclude-class-expressions"
        ],
        "ordered-imports": [
            true,
            {
                "import-sources-order": "lowercase-last",
                "named-imports-order": "lowercase-first",
                "grouped-imports": true
            }
        ],
        "no-submodule-imports": [
            false,
            "@angular",
            "rxjs/operators",
            "puppeteer/DeviceDescriptors",
            "safe-memory-cache/map",
            "@angular/platform-browser",
            "@angular/core/testing"
        ],
        "no-this-assignment": [
            true,
            {
                "allowed-names": [
                    "^self$"
                ],
                "allow-destructuring": true
            }
        ],
        "array-type": [
            true,
            "array"
        ],
        "arrow-parens": [
            true,
            "ban-single-arg-parens"
        ],
        "trailing-comma": [
            true,
            {
                "multiline": "never",
                "singleline": "never"
            }
        ],
        "space-before-function-paren": [
            true,
            {
                "anonymous": "always",
                "named": "never",
                "asyncArrow": "always"
            }
        ],
        "no-implicit-dependencies": false,
        "interface-name": false,
        "class-name": true,
        "comment-format": [
            false,
            "check-space"
        ],
        "curly": true,
        "eofline": false,
        "forin": true,
        "indent": [
            true,
            "spaces"
        ],
        "cyclomatic-complexity": [
            true,
            40
        ],
        "label-position": true,
        "max-line-length": [
            true,
            160
        ],
        "member-access": false,
        "member-ordering": [
            true,
            {
                "order": [
                    "private-static-field",
                    "public-static-field",
                    "private-instance-field",
                    "public-instance-field",
                    "public-static-method",
                    "private-static-method",
                    "public-constructor",
                    "private-constructor",
                    "public-instance-method",
                    "protected-instance-method",
                    "private-instance-method"
                ]
            }
        ],
        "no-arg": true,
        "no-bitwise": false,
        "no-console": [
            true,
            "debug",
            "info",
            "time",
            "timeEnd",
            "trace",
            "log"
        ],
        "no-construct": true,
        "no-debugger": true,
        "no-duplicate-variable": true,
        "no-empty": false,
        "no-eval": true,
        "no-inferrable-types": true,
        "no-shadowed-variable": true,
        "no-string-literal": false,
        "no-switch-case-fall-through": true,
        "no-trailing-whitespace": true,
        "no-unused-expression": true,
        "no-use-before-declare": false,
        "no-var-keyword": true,
        "no-any": true,
        "object-literal-sort-keys": false,
        "one-line": [
            false,
            "check-open-brace",
            "check-catch",
            "check-else",
            "check-whitespace"
        ],
        "quotemark": [
            true,
            "single"
        ],
        "radix": true,
        "semicolon": [
            true,
            "always"
        ],
        "triple-equals": [
            true,
            "allow-null-check"
        ],
        "typedef-whitespace": [
            true,
            {
                "call-signature": "nospace",
                "index-signature": "nospace",
                "parameter": "nospace",
                "property-declaration": "nospace",
                "variable-declaration": "nospace"
            }
        ],
        "typedef": [
            true,
            "call-signature",
            "property-declaration"
        ],
        "variable-name": false,
        "whitespace": [
            true,
            "check-branch",
            "check-decl",
            "check-operator",
            "check-separator",
            "check-type"
        ],
        "no-access-missing-member": false,
        "component-class-suffix": true,
        "component-max-inline-declarations": false,
        "component-selector": [
            true,
            "element",
            "mk",
            "kebab-case"
        ],
        "contextual-lifecycle": true,
        "directive-class-suffix": true,
        "directive-selector": [
            true,
            "attribute",
            "mk",
            "camelCase"
        ],
        "no-attribute-decorator": true,
        "no-conflicting-lifecycle": true,
        "no-forward-ref": true,
        "no-host-metadata-property": true,
        "no-input-rename": true,
        "no-inputs-metadata-property": true,
        "no-lifecycle-call": true,
        "no-output-native": true,
        "no-output-on-prefix": true,
        "no-output-rename": true,
        "no-outputs-metadata-property": true,
        "no-pipe-impure": true,
        "no-queries-metadata-property": true,
        "no-unused-css": true,
        "prefer-inline-decorator": false,
        "prefer-output-readonly": true,
        "template-banana-in-box": true,
        "template-conditional-complexity": [
            true,
            4
        ],
        "template-cyclomatic-complexity": [
            false,
            5
        ],
        "template-i18n": [
            false,
            "check-id",
            "check-text"
        ],
        "template-no-negated-async": true,
        "template-use-track-by-function": false,
        "use-component-selector": true,
        "use-component-view-encapsulation": true,
        "use-lifecycle-interface": true,
        "use-pipe-transform-interface": true
    }
}