{ "$schema": "http://json-schema.org/draft-04/schema#", "definitions": { "rule": { "type": ["boolean", "object", "array"], "minItems": 1, "properties": { "severity": { "description": "Severity level. Level \"error\" will cause exit code 2.", "type": "string", "enum": ["default", "error", "warning", "warn", "off", "none"], "default": "default" } } }, "rules": { "properties": { "align": { "description": "Enforces vertical alignment.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "arguments", "elements", "members", "parameters", "statements" ] }, "minItems": 1, "maxItems": 5, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/align/definitions/options/items" }, "maxItems": 6, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/align/definitions/options" }, { "$ref": "#/definitions/rules/properties/align/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "arrow-parens": { "description": "Requires parentheses around the parameters of arrow function definitions.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["ban-single-arg-parens"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/arrow-parens/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/arrow-parens/definitions/options" }, { "$ref": "#/definitions/rules/properties/arrow-parens/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "arrow-return-shorthand": { "description": "Suggests to convert `() => { return x; }` to `() => x`.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["multiline"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/arrow-return-shorthand/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/arrow-return-shorthand/definitions/options" }, { "$ref": "#/definitions/rules/properties/arrow-return-shorthand/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "ban": { "description": "Bans the use of specific functions or global methods.", "definitions": { "options": { "type": "array", "items": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 3 }, { "type": "object", "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 3 } ] }, "message": { "type": "string" } }, "required": ["name"], "additionalProperties": false } ] }, "minItems": 1, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/ban/definitions/options/items" }, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/ban/definitions/options" }, { "$ref": "#/definitions/rules/properties/ban/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "ban-comma-operator": { "description": "Bans the comma operator.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "binary-expression-operand-order": { "description": "In a binary expression, a literal should always be on the right-hand side if possible.\nFor example, prefer 'x + 1' over '1 + x'.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "class-name": { "description": "Enforces PascalCased class and interface names.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "comment-format": { "description": "Enforces formatting rules for single-line comments.", "definitions": { "options": { "type": "array", "items": { "anyOf": [ { "type": "string", "enum": [ "check-space", "check-lowercase", "check-uppercase" ], "minItems": 1, "maxItems": 3, "uniqueItems": true }, { "type": "object", "properties": { "ignore-words": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "ignore-pattern": { "type": "string" } }, "minProperties": 1, "maxProperties": 1 } ] }, "minItems": 1, "maxItems": 4, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/comment-format/definitions/options/items" }, "maxItems": 5, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/comment-format/definitions/options" }, { "$ref": "#/definitions/rules/properties/comment-format/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "completed-docs": { "description": "Enforces documentation for important items be filled out.", "definitions": { "options": { "type": "array", "items": { "oneOf": [ { "type": "string", "enum": [ "classes", "enums", "enum-members", "functions", "interfaces", "methods", "namespaces", "properties", "types", "variables" ] }, { "type": "object", "properties": { "classes": { "type": "object", "properties": { "visibilities": { "type": "string", "enum": ["all", "exported", "internal"] } }, "additionalProperties": false }, "enums": { "type": "object", "properties": { "visibilities": { "type": "string", "enum": ["all", "exported", "internal"] } }, "additionalProperties": false }, "enum-members": { "type": "object", "properties": { "visibilities": { "type": "string", "enum": ["all", "exported", "internal"] } }, "additionalProperties": false }, "functions": { "type": "object", "properties": { "visibilities": { "type": "string", "enum": ["all", "exported", "internal"] } }, "additionalProperties": false }, "interfaces": { "type": "object", "properties": { "visibilities": { "type": "string", "enum": ["all", "exported", "internal"] } }, "additionalProperties": false }, "methods": { "type": "object", "properties": { "locations": { "type": "string", "enum": ["all", "instance", "static"] }, "privacies": { "type": "string", "enum": ["all", "private", "protected", "public"] } }, "additionalProperties": false }, "namespaces": { "type": "object", "properties": { "visibilities": { "type": "string", "enum": ["all", "exported", "internal"] } }, "additionalProperties": false }, "properties": { "type": "object", "properties": { "locations": { "type": "string", "enum": ["all", "instance", "static"] }, "privacies": { "type": "string", "enum": ["all", "private", "protected", "public"] } }, "additionalProperties": false }, "types": { "type": "object", "properties": { "visibilities": { "type": "string", "enum": ["all", "exported", "internal"] } }, "additionalProperties": false }, "variables": { "type": "object", "properties": { "visibilities": { "type": "string", "enum": ["all", "exported", "internal"] } }, "additionalProperties": false } } } ] }, "minItems": 1, "maxItems": 10, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/completed-docs/definitions/options/items" }, "maxItems": 11, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/completed-docs/definitions/options" }, { "$ref": "#/definitions/rules/properties/completed-docs/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "curly": { "description": "Enforces braces for `if`/`for`/`do`/`while` statements.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["as-needed", "ignore-same-line"], "minItems": 1, "maxItems": 2, "uniqueItems": true } } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/curly/definitions/options/items" }, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/curly/definitions/options" }, { "$ref": "#/definitions/rules/properties/curly/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "cyclomatic-complexity": { "description": "Enforces a threshold of cyclomatic complexity.", "definitions": { "options": { "type": "array", "items": { "type": "number", "minimum": 2 }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/cyclomatic-complexity/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/cyclomatic-complexity/definitions/options" }, { "$ref": "#/definitions/rules/properties/cyclomatic-complexity/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "deprecation": { "description": "Warns when deprecated APIs are used.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "encoding": { "description": "Enforces UTF-8 file encoding.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "eofline": { "description": "Ensures the file ends with a newline.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "file-header": { "description": "Enforces a certain header comment for all files, matched by a regular expression.", "definitions": { "options": { "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 2 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/file-header/definitions/options/items" }, "maxItems": 3, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/file-header/definitions/options" }, { "$ref": "#/definitions/rules/properties/file-header/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "file-name-casing": { "description": "Enforces a consistent file naming convention.", "definitions": { "file-name-cases": { "type": "string", "enum": ["camel-case", "pascal-case", "kebab-case", "snake-case"] } }, "type": "array", "minItems": 2, "items": [ { "type": "boolean" }, { "oneOf": [ { "$ref": "#/definitions/rules/properties/file-name-casing/definitions/file-name-cases" }, { "type": "object", "additionalProperties": { "$ref": "#/definitions/rules/properties/file-name-casing/definitions/file-name-cases" }, "minProperties": 1 } ] } ] }, "forin": { "description": "Requires a `for ... in` statement to be filtered with an `if` statement.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "import-blacklist": { "description": "Disallows importing the specified modules directly via `import` and `require`.\nInstead only sub modules may be imported from that module.", "definitions": { "options": { "type": "array", "items": { "oneOf": [ { "type": "string", "minLength": 1 }, { "type": "object", "additionalProperties": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } } }, { "type": "array", "items": { "type": "string" }, "minLength": 1 } ] }, "minItems": 1, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/import-blacklist/definitions/options/items" }, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/import-blacklist/definitions/options" }, { "$ref": "#/definitions/rules/properties/import-blacklist/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "import-spacing": { "description": "Ensures proper spacing between import statement keywords", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "indent": { "description": "Enforces indentation with tabs or spaces.", "definitions": { "options": { "type": "array", "items": [ { "type": "string", "enum": ["tabs", "spaces"] }, { "type": "number", "enum": [2, 4] } ], "minItems": 1, "maxItems": 2 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" }, { "$ref": "#/definitions/rules/properties/indent/definitions/options/items/0" }, { "$ref": "#/definitions/rules/properties/indent/definitions/options/items/1" } ], "maxItems": 3, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/indent/definitions/options" }, { "$ref": "#/definitions/rules/properties/indent/definitions/options/items/0" } ] }, "severity": {} }, "additionalProperties": false } ] }, "jsdoc-format": { "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["check-multiline-start"] }, "minItems": 0, "maxItems": 1, "uniqueItems": true } }, "description": "Enforces basic format rules for JSDoc comments.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/jsdoc-format/definitions/options/items" }, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/jsdoc-format/definitions/options" }, { "$ref": "#/definitions/rules/properties/jsdoc-format/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "label-position": { "description": "Only allows labels in sensible locations.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "linebreak-style": { "description": "Enforces a consistent linebreak style.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["LF", "CRLF"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/linebreak-style/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/linebreak-style/definitions/options" }, { "$ref": "#/definitions/rules/properties/linebreak-style/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "max-classes-per-file": { "description": "A file may not contain more than the specified number of classes", "definitions": { "options": { "type": "array", "items": [ { "type": "number", "minimum": 1 }, { "type": "string", "enum": ["exclude-class-expressions"] } ], "minItems": 1, "maxItems": 2 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" }, { "$ref": "#/definitions/rules/properties/max-classes-per-file/definitions/options/items/0" }, { "$ref": "#/definitions/rules/properties/max-classes-per-file/definitions/options/items/1" } ], "additionalItems": false, "minItems": 2, "maxItems": 3, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/max-classes-per-file/definitions/options" }, { "$ref": "#/definitions/rules/properties/max-classes-per-file/definitions/options/items/0" } ] }, "severity": {} }, "additionalProperties": false } ] }, "max-file-line-count": { "description": "Requires files to remain under a certain number of lines", "definitions": { "options": { "type": "array", "items": { "type": "number", "minimum": 1 }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/max-file-line-count/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/max-file-line-count/definitions/options" }, { "$ref": "#/definitions/rules/properties/max-file-line-count/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "max-line-length": { "description": "Requires lines to be under a certain max length.", "definitions": { "options": { "type": "array", "items": { "oneOf": [ { "type": "number" }, { "type": "object", "properties": { "limit": { "type": "number" }, "ignore-pattern": { "type": "string" }, "check-strings": { "type": "boolean" }, "check-regex": { "type": "boolean" } }, "additionalProperties": false } ] }, "minLength": 1, "maxLength": 2 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/max-line-length/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/max-line-length/definitions/options" }, { "$ref": "#/definitions/rules/properties/max-line-length/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "member-ordering": { "description": "Enforces member ordering.", "definitions": { "kinds": { "type": "array", "items": { "type": "string", "enum": [ "static-field", "instance-field", "static-method", "instance-method", "constructor", "public-static-field", "public-static-method", "protected-static-field", "protected-static-method", "private-static-field", "private-static-method", "public-instance-field", "protected-instance-field", "private-instance-field", "public-constructor", "protected-constructor", "private-constructor", "public-instance-method", "protected-instance-method", "private-instance-method", "public-static-accessor", "protected-static-accessor", "private-static-accessor", "public-instance-accessor", "protected-instance-accessor", "private-instance-accessor" ] }, "minItems": 1, "maxItems": 15, "uniqueItems": true }, "options": { "type": "array", "items": { "type": "object", "properties": { "order": { "oneOf": [ { "type": "string", "enum": [ "fields-first", "instance-sandwich", "statics-first" ] }, { "type": "array", "items": { "anyOf": [ { "$ref": "#/definitions/rules/properties/member-ordering/definitions/kinds/items" }, { "type": "object", "properties": { "name": { "type": "string" }, "kinds": { "$ref": "#/definitions/rules/properties/member-ordering/definitions/kinds" } }, "additionalProperties": false } ] }, "minItems": 1, "maxItems": 15, "uniqueItems": true } ] }, "alphabetize": { "type": "boolean" } }, "additionalProperties": false }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/member-ordering/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/member-ordering/definitions/options" }, { "$ref": "#/definitions/rules/properties/member-ordering/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "newline-before-return": { "description": "Enforces blank line before return when not the only line in the block.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "newline-per-chained-call": { "description": "Requires that chained method calls be broken apart onto separate lines.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "new-parens": { "description": "Requires parentheses when invoking a constructor via the `new` keyword.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-arg": { "description": "Disallows use of `arguments.callee`.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-bitwise": { "description": "Disallows bitwise operators.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-conditional-assignment": { "description": "Disallows any type of assignment in conditionals.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-consecutive-blank-lines": { "description": "Disallows one or more blank lines in a row.", "definitions": { "options": { "type": "array", "items": { "type": "number", "minimum": 1 }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-consecutive-blank-lines/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-consecutive-blank-lines/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-consecutive-blank-lines/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-console": { "description": "Bans the use of specified `console` methods.", "definitions": { "options": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-console/definitions/options/items" }, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-console/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-console/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-construct": { "description": "Disallows access to the constructors of `String`, `Number`, and `Boolean`.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-debugger": { "description": "Disallows `debugger` statements.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-default-export": { "description": "Disallows default exports in ES6-style modules.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-duplicate-imports": { "description": "Disallows multiple import statements from the same module.", "definitions": { "options": { "type": "object", "properties": { "allow-namespace-imports": { "type": "boolean" } }, "additionalProperties": false } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" }, { "$ref": "#/definitions/rules/properties/no-duplicate-imports/definitions/options" } ], "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-duplicate-imports/definitions/options" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-duplicate-super": { "description": "Warns if 'super()' appears twice in a constructor.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-duplicate-switch-case": { "description": "Prevents duplicate cases in switch statements.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-duplicate-variable": { "description": "Disallows duplicate variable declarations in the same block scope.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["check-parameters"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-duplicate-variable/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-duplicate-variable/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-duplicate-variable/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-dynamic-delete": { "description": "Bans usage of the delete operator with computed key expressions.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-empty": { "description": "Disallows empty blocks.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["allow-empty-catch", "allow-empty-functions"] }, "minItems": 1, "maxItems": 2, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-empty/definitions/options/items" }, "maxItems": 3, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-empty/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-empty/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-eval": { "description": "Disallows `eval` function invocations.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-for-in-array": { "description": "Disallows iterating over an array with a for-in loop.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-implicit-dependencies": { "description": "Disallows importing modules that are not listed as dependency in the project’s package.json.", "definitions": { "options": { "type": "array", "items": [ { "type": "string", "enum": ["dev", "optional"] }, { "type": "array" } ], "minItems": 0, "maxItems": 3 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "maxItems": 3, "additionalItems": { "$ref": "#/definitions/rules/properties/no-implicit-dependencies/definitions/options/items" }, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-implicit-dependencies/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-implicit-dependencies/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-import-side-effect": { "description": "Avoid import statements with side-effect.", "definitions": { "options": { "type": "array", "items": { "type": "object", "properties": { "ignore-module": { "type": "string" } }, "additionalProperties": false }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-import-side-effect/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-import-side-effect/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-import-side-effect/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-invalid-template-strings": { "description": "Warns on use of `${` in non-template strings.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-invalid-this": { "description": "Disallows using the `this` keyword outside of classes.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["check-function-in-method"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-invalid-this/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-invalid-this/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-invalid-this/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-irregular-whitespace": { "description": "Disallow irregular whitespace outside of strings and comments", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-magic-numbers": { "description": "Disallows the use constant number values outside of variable assignments.\nWhen no list of allowed values is specified, -1, 0 and 1 are allowed by default.", "definitions": { "options": { "type": "array", "items": { "type": "number" }, "minItems": 1, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-magic-numbers/definitions/options/items" }, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-magic-numbers/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-magic-numbers/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-null-keyword": { "description": "Disallows use of the `null` keyword literal.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-parameter-reassignment": { "description": "Disallows reassigning parameters.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-reference": { "description": "Disallows `/// ` imports (use ES6-style imports instead).", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-return-await": { "description": "Disallows unnecessary `return await`.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-require-imports": { "description": "Disallows invocation of `require()`.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-shadowed-variable": { "description": "Disallows shadowing variable declarations.", "definitions": { "options": { "type": "array", "items": { "type": "object", "properties": { "class": { "type": "boolean" }, "enum": { "type": "boolean" }, "function": { "type": "boolean" }, "import": { "type": "boolean" }, "interface": { "type": "boolean" }, "namespace": { "type": "boolean" }, "typeAlias": { "type": "boolean" }, "typeParameter": { "type": "boolean" } }, "additionalProperties": false }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-shadowed-variable/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-shadowed-variable/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-shadowed-variable/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-sparse-arrays": { "description": "Forbids array literals to contain missing elements.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-string-literal": { "description": "Forbids unnecessary string literal property access.\nAllows `obj[\"prop-erty\"]` (can't be a regular property access).\nDisallows `obj[\"property\"]` (should be `obj.property`).", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-string-throw": { "description": "Flags throwing plain strings or concatenations of strings because only Errors produce proper stack traces.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-submodule-imports": { "description": "Disallows importing any submodule.", "definitions": { "options": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-submodule-imports/definitions/options/items" }, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-submodule-imports/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-submodule-imports/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-switch-case-fall-through": { "description": "Disallows falling through case statements.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-this-assignment": { "description": "Disallows unnecessary references to `this`.", "definitions": { "options": { "type": "array", "items": { "type": "object", "properties": { "allow-destructuring": { "type": "boolean" }, "allowed-names": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } }, "additionalProperties": false }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-this-assignment/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-this-assignment/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-this-assignment/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-trailing-whitespace": { "description": "Disallows trailing whitespace at the end of a line.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "ignore-comments", "ignore-jsdoc", "ignore-template-strings", "ignore-blank-lines" ] }, "minItems": 1, "maxItems": 4, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-trailing-whitespace/definitions/options/items" }, "maxItems": 5, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-trailing-whitespace/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-trailing-whitespace/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-unnecessary-callback-wrapper": { "description": "Replaces `x => f(x)` with just `f`.\nTo catch more cases, enable `only-arrow-functions` and `arrow-return-shorthand` too.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-unnecessary-class": { "description": "Disallows classes that are not strictly necessary.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "allow-constructor-only", "allow-empty-class", "allow-static-only" ] }, "minLength": 0, "maxLength": 3 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-unnecessary-class/definitions/options/items" }, "maxItems": 4, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-unnecessary-class/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-unnecessary-class/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-unnecessary-initializer": { "description": "Forbids a 'var'/'let' statement or destructuring initializer to be initialized to 'undefined'.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-unsafe-finally": { "description": "Disallows control flow statements, such as `return`, `continue` `break` and `throws` in finally blocks.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-unused-expression": { "description": "Disallows unused expression statements.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "allow-fast-null-checks", "allow-new", "allow-tagged-template" ] }, "minItems": 1, "maxItems": 3, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-unused-expression/definitions/options/items" }, "maxItems": 4, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-unused-expression/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-unused-expression/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-use-before-declare": { "description": "Disallows usage of variables before their declaration.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-var-keyword": { "description": "Disallows usage of the `var` keyword.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-void-expression": { "description": "Requires expressions of type `void` to appear in statement position.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["ignore-arrow-function-shorthand"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/no-void-expression/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/no-void-expression/definitions/options" }, { "$ref": "#/definitions/rules/properties/no-void-expression/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "number-literal-format": { "description": "Checks that decimal literals should begin with '0.' instead of just '.', and should not end with a trailing '0'.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "object-literal-key-quotes": { "description": "Enforces consistent object literal property quote style.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "always", "as-needed", "consistent", "consistent-as-needed" ] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/object-literal-key-quotes/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/object-literal-key-quotes/definitions/options" }, { "$ref": "#/definitions/rules/properties/object-literal-key-quotes/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "object-literal-shorthand": { "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["always", "never"] }, "minItems": 1, "maxItems": 2, "uniqueItems": true } }, "description": "Enforces use of ES6 object literal shorthand when possible.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/object-literal-shorthand/definitions/options/items" }, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/object-literal-shorthand/definitions/options" }, { "$ref": "#/definitions/rules/properties/object-literal-shorthand/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "object-literal-sort-keys": { "description": "Checks ordering of keys in object literals.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "ignore-case", "locale-compare", "match-declaration-order", "shorthand-first" ] }, "minItems": 1, "maxItems": 4, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/object-literal-sort-keys/definitions/options/items" }, "maxItems": 5, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/object-literal-sort-keys/definitions/options" }, { "$ref": "#/definitions/rules/properties/object-literal-sort-keys/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "one-line": { "description": "Requires the specified tokens to be on the same line as the expression preceding them.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "check-catch", "check-finally", "check-else", "check-open-brace", "check-whitespace" ] }, "minItems": 1, "maxItems": 5, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/one-line/definitions/options/items" }, "maxItems": 6, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/one-line/definitions/options" }, { "$ref": "#/definitions/rules/properties/one-line/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "one-variable-per-declaration": { "description": "Disallows multiple variable definitions in the same declaration statement.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["ignore-for-loop"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/one-variable-per-declaration/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/one-variable-per-declaration/definitions/options" }, { "$ref": "#/definitions/rules/properties/one-variable-per-declaration/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "only-arrow-functions": { "description": "Disallows traditional (non-arrow) function expressions.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["allow-declarations", "allow-named-functions"] }, "minItems": 1, "maxItems": 2, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/only-arrow-functions/definitions/options/items" }, "maxItems": 3, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/only-arrow-functions/definitions/options" }, { "$ref": "#/definitions/rules/properties/only-arrow-functions/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "ordered-imports": { "description": "Requires that import statements be alphabetized.", "definitions": { "options": { "type": "array", "items": { "type": "object", "properties": { "grouped-imports": { "type": "boolean" }, "groups": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "name": { "type": "string" }, "match": { "type": "string" }, "order": { "type": "number" } }, "required": ["match", "order"] } ] } }, "import-sources-order": { "type": "string", "enum": [ "case-insensitive", "case-insensitive-legacy", "lowercase-first", "lowercase-last", "any" ] }, "named-imports-order": { "type": "string", "enum": [ "case-insensitive", "case-insensitive-legacy", "lowercase-first", "lowercase-last", "any" ] }, "module-source-path": { "type": "string", "enum": ["full", "basename"] } }, "additionalProperties": false }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/ordered-imports/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/ordered-imports/definitions/options" }, { "$ref": "#/definitions/rules/properties/ordered-imports/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "prefer-conditional-expression": { "description": "Recommends to use a conditional expression instead of assigning to the same thing in each branch of an if statement.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["check-else-if"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/prefer-conditional-expression/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/prefer-conditional-expression/definitions/options" }, { "$ref": "#/definitions/rules/properties/prefer-conditional-expression/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "prefer-const": { "description": "Requires that variable declarations use `const` instead of `let` and `var` if possible.", "definitions": { "options": { "type": "array", "items": { "type": "object", "properties": { "destructuring": { "type": "string", "enum": ["all", "any"] } }, "additionalProperties": false }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/prefer-const/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/prefer-const/definitions/options" }, { "$ref": "#/definitions/rules/properties/prefer-const/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "prefer-for-of": { "description": "Recommends a 'for-of' loop over a standard 'for' loop if the index is only used to access the array being iterated.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "prefer-function-over-method": { "description": "Warns for class methods that do not use 'this'.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["allow-public", "allow-protected"] }, "minItems": 1, "maxItems": 2, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/prefer-function-over-method/definitions/options/items" }, "maxItems": 3, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/prefer-function-over-method/definitions/options" }, { "$ref": "#/definitions/rules/properties/prefer-function-over-method/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "prefer-method-signature": { "description": "Prefer `foo(): void` over `foo: () => void` in interfaces and types.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "prefer-object-spread": { "description": "Enforces the use of the ES2015 object spread operator over `Object.assign()` where appropriate.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "prefer-switch": { "description": "Prefer a `switch` statement to an `if` statement with simple `===` comparisons.", "definitions": { "options": { "type": "array", "items": { "type": "object", "properties": { "min-cases": { "type": "number", "minimum": 0 } }, "additionalProperties": false }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/prefer-switch/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/prefer-switch/definitions/options" }, { "$ref": "#/definitions/rules/properties/prefer-switch/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "prefer-template": { "description": "Prefer a template expression over string literal concatenation.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["allow-single-concat"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/prefer-template/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/prefer-template/definitions/options" }, { "$ref": "#/definitions/rules/properties/prefer-template/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "prefer-while": { "description": "Prefer while loops instead of for loops without an initializer and incrementor.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "additionalProperties": false } ] }, "promise-function-async": { "description": "Requires any function or method that returns a promise to be marked async.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "quotemark": { "description": "Requires single or double quotes for string literals.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "single", "double", "jsx-single", "jsx-double", "avoid-escape", "avoid-template" ] }, "minItems": 1, "maxItems": 4, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/quotemark/definitions/options/items" }, "maxItems": 5, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/quotemark/definitions/options" }, { "$ref": "#/definitions/rules/properties/quotemark/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "radix": { "description": "Requires the radix parameter to be specified when calling `parseInt`.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "restrict-plus-operands": { "description": "When adding two variables, operands must both be of type number or of type string.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "return-undefined": { "description": "Prefer `return;` in void functions and `return undefined;` in value-returning functions.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "semicolon": { "description": "Enforces consistent semicolon usage at the end of every statement.", "definitions": { "options": { "type": "array", "items": [ { "type": "string", "enum": ["always", "never"] }, { "type": "string", "enum": [ "ignore-interfaces", "ignore-bound-class-methods", "strict-bound-class-methods" ] } ], "minItems": 1, "maxItems": 3 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" }, { "$ref": "#/definitions/rules/properties/semicolon/definitions/options/items/0" }, { "$ref": "#/definitions/rules/properties/semicolon/definitions/options/items/1" } ], "maxItems": 3, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/semicolon/definitions/options" }, { "$ref": "#/definitions/rules/properties/semicolon/definitions/options/items/0" } ] }, "severity": {} }, "additionalProperties": false } ] }, "space-before-function-paren": { "description": "Require or disallow a space before function parenthesis", "definitions": { "options": { "type": "array", "items": { "type": "object", "properties": { "anonymous": { "type": "string", "enum": ["always", "never"] }, "asyncArrow": { "type": "string", "enum": ["always", "never"] }, "constructor": { "type": "string", "enum": ["always", "never"] }, "method": { "type": "string", "enum": ["always", "never"] }, "named": { "type": "string", "enum": ["always", "never"] } }, "additionalProperties": false }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/space-before-function-paren/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/space-before-function-paren/definitions/options" }, { "$ref": "#/definitions/rules/properties/space-before-function-paren/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "space-within-parens": { "description": "Enforces spaces within parentheses or disallow them.", "definitions": { "options": { "type": "array", "items": { "type": "number", "min": 0 }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/space-within-parens/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/space-within-parens/definitions/options" }, { "$ref": "#/definitions/rules/properties/space-within-parens/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "switch-default": { "description": "Require a `default` case in all `switch` statements.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "switch-final-break": { "description": "Checks whether the final clause of a switch statement ends in `break;`.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["always"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/switch-final-break/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/switch-final-break/definitions/options" }, { "$ref": "#/definitions/rules/properties/switch-final-break/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "trailing-comma": { "description": "Requires or disallows trailing commas in array and object literals, destructuring assignments, function typings, named imports and exports and function parameters.", "definitions": { "options": { "type": "array", "items": { "type": "object", "properties": { "multiline": { "anyOf": [ { "type": "string", "enum": ["always", "never"] }, { "type": "object", "properties": { "arrays": { "type": "string", "enum": ["always", "never", "ignore"] }, "exports": { "type": "string", "enum": ["always", "never", "ignore"] }, "functions": { "type": "string", "enum": ["always", "never", "ignore"] }, "imports": { "type": "string", "enum": ["always", "never", "ignore"] }, "objects": { "type": "string", "enum": ["always", "never", "ignore"] }, "typeLiterals": { "type": "string", "enum": ["always", "never", "ignore"] } }, "additionalProperties": false } ] }, "singleline": { "anyOf": [ { "type": "string", "enum": ["always", "never"] }, { "type": "object", "properties": { "arrays": { "type": "string", "enum": ["always", "never", "ignore"] }, "exports": { "type": "string", "enum": ["always", "never", "ignore"] }, "functions": { "type": "string", "enum": ["always", "never", "ignore"] }, "imports": { "type": "string", "enum": ["always", "never", "ignore"] }, "objects": { "type": "string", "enum": ["always", "never", "ignore"] }, "typeLiterals": { "type": "string", "enum": ["always", "never", "ignore"] } }, "additionalProperties": false } ] }, "esSpecCompliant": { "description": "Option to forbid trailing comma after rest", "type": "boolean" } }, "additionalProperties": false }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/trailing-comma/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/trailing-comma/definitions/options" }, { "$ref": "#/definitions/rules/properties/trailing-comma/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "triple-equals": { "description": "Requires `===` and `!==` in place of `==` and `!=`.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["allow-null-check", "allow-undefined-check"] }, "minItems": 1, "maxItems": 3, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/triple-equals/definitions/options/items" }, "maxItems": 3, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/triple-equals/definitions/options" }, { "$ref": "#/definitions/rules/properties/triple-equals/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "typeof-compare": { "description": "Makes sure result of `typeof` is compared to correct string values", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "use-isnan": { "description": "Enforces use of the `isNaN()` function to check for NaN references instead of a comparison to the `NaN` constant.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "variable-name": { "description": "Checks variable names for various errors.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "check-format", "require-const-for-all-caps", "allow-leading-underscore", "allow-trailing-underscore", "allow-pascal-case", "allow-snake-case", "ban-keywords" ] }, "minItems": 1, "maxItems": 7, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/variable-name/definitions/options/items" }, "maxItems": 7, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/variable-name/definitions/options" }, { "$ref": "#/definitions/rules/properties/variable-name/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "whitespace": { "description": "Enforces whitespace style conventions.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "check-branch", "check-decl", "check-operator", "check-module", "check-separator", "check-rest-spread", "check-type", "check-typecast", "check-type-operator", "check-preblock", "check-postbrace" ], "minItems": 1, "maxItems": 10, "uniqueItems": true } } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/rules/properties/whitespace/definitions/options/items" }, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/rules/properties/whitespace/definitions/options" }, { "$ref": "#/definitions/rules/properties/whitespace/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] } } }, "tsRules": { "properties": { "adjacent-overload-signatures": { "description": "Enforces function overloads to be consecutive.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "array-type": { "description": "Requires using either 'T[]' or 'Array' for arrays.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["array", "generic", "array-simple"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/array-type/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/array-type/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/array-type/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "await-promise": { "description": "Warns for an awaited value that is not a Promise.", "definitions": { "options": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/await-promise/definitions/options/items" }, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/await-promise/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/await-promise/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "ban-types": { "description": "Bans specific types from being used. Does not ban the corresponding runtime objects from being used.", "definitions": { "options": { "type": "array", "items": { "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 2 }, "minItems": 1, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/ban-types/definitions/options/items" }, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/ban-types/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/ban-types/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "callable-types": { "description": "An interface or literal type with just a call signature can be written as a function type.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "interface-name": { "description": "Requires interface names to begin with a capital 'I'", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["always-prefix", "never-prefix"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/interface-name/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/interface-name/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/interface-name/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "interface-over-type-literal": { "description": "Prefer an interface declaration over a type literal (`type T = { ... }`)", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "match-default-export-name": { "description": "Requires that a default import have the same name as the declaration it imports.\nDoes nothing for anonymous default exports.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "member-access": { "description": "Requires explicit visibility declarations for class members.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "no-public", "check-accessor", "check-constructor", "check-parameter-property" ] }, "minItems": 1, "maxItems": 4, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/member-access/definitions/options/items" }, "maxItems": 4, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/member-access/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/member-access/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-angle-bracket-type-assertion": { "description": "Requires the use of `as Type` for type assertions instead of ``.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-any": { "description": "Disallows usages of `any` as a type declaration.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" }, { "type": "object", "properties": { "ignore-rest-args": { "type": "boolean" } } } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-boolean-literal-compare": { "description": "Warns on comparison to a boolean literal, as in `x === true`.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-empty-interface": { "description": "Forbids empty interfaces.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-floating-promises": { "description": "Promises returned by functions must be handled appropriately.", "definitions": { "options": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/no-floating-promises/definitions/options/items" }, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/no-floating-promises/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/no-floating-promises/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-inferrable-types": { "description": "Disallows explicit type declarations for variables or parameters initialized to a number, string, or boolean.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["ignore-params", "ignore-properties"] }, "minItems": 1, "maxItems": 2, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/no-inferrable-types/definitions/options/items" }, "maxItems": 3, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/no-inferrable-types/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/no-inferrable-types/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-inferred-empty-object-type": { "description": "Disallow type inference of {} (empty object type) at function and constructor call sites", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-internal-module": { "description": "Disallows internal `module`", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-mergeable-namespace": { "description": "Disallows mergeable namespaces in the same file.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-misused-new": { "description": "Warns on apparent attempts to define constructors for interfaces or `new` for classes.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-namespace": { "description": "Disallows use of internal `module`s and `namespace`s.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["allow-declarations"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/no-namespace/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/no-namespace/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/no-namespace/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-non-null-assertion": { "description": "Disallows non-null assertions.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-object-literal-type-assertion": { "description": "Forbids an object literal to appear in a type assertion expression.\nCasting to `any` is still allowed.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-parameter-properties": { "description": "Disallows parameter properties in class constructors.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-redundant-jsdoc": { "description": "Forbids JSDoc which duplicates TypeScript functionality.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-reference-import": { "description": "Don't `` if you import `foo` anyway.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-unbound-method": { "description": "Warns when a method is used as outside of a method call.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": ["ignore-static"] }, "minItems": 1, "maxItems": 1 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/no-unbound-method/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/no-unbound-method/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/no-unbound-method/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-unnecessary-qualifier": { "description": "Warns when a namespace qualifier (`A.x`) is unnecessary.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-unnecessary-type-assertion": { "description": "Warns if a type assertion does not change the type of an expression.", "definitions": { "options": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/no-unnecessary-type-assertion/definitions/options/items" }, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/no-unnecessary-type-assertion/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/no-unnecessary-type-assertion/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-unsafe-any": { "description": "Warns when using an expression of type 'any' in a dynamic way.\nUses are only allowed if they would work for `{} | null | undefined`.\nType casts and tests are allowed.\nExpressions that work on all values (such as `\"\" + x`) are allowed.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "no-unused-variable": { "description": "Disallows unused imports, variables, functions and private class members. Similar to tsc's --noUnusedParameters and --noUnusedLocals options, but does not interrupt code compilation.", "definitions": { "options": { "type": "array", "items": { "oneOf": [ { "type": "string", "enum": ["check-parameters"] }, { "type": "object", "properties": { "ignore-pattern": { "type": "string" } }, "additionalProperties": false } ] }, "minItems": 1, "maxItems": 2, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/no-unused-variable/definitions/options/items" }, "maxItems": 3, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/no-unused-variable/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/no-unused-variable/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "no-var-requires": { "description": "Disallows the use of require statements except in import statements.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "prefer-readonly": { "description": "Requires that private variables are marked as `readonly` if they’re never modified outside of the constructor.", "definitions": { "options": { "type": "array", "items": { "enum": ["only-inline-lambdas"], "type": "string" } } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/prefer-readonly/definitions/options/items" }, "maxItems": 2, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/prefer-readonly/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/prefer-readonly/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "strict-boolean-expressions": { "description": "Restricts the types allowed in boolean expressions. By default only booleans are allowed.\n\nThe following nodes are checked:\n* Arguments to the `!`, `&&`, and `||` operators\n* The condition in a conditional expression (`cond ? x : y`)\n* Conditions for `if`, `for`, `while`, and `do-while` statements.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "allow-null-union", "allow-undefined-union", "allow-string", "allow-enum", "allow-number", "allow-mix", "allow-boolean-or-undefined", "ignore-rhs" ] }, "minItems": 1, "maxItems": 8, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/strict-boolean-expressions/definitions/options/items" }, "maxItems": 6, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/strict-boolean-expressions/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/strict-boolean-expressions/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "strict-type-predicates": { "description": "Warns for type predicates that are always true or always false.\nWorks for 'typeof' comparisons to constants (e.g. 'typeof foo === \"string\"'), and equality comparison to 'null'/'undefined'.\n(TypeScript won't let you compare '1 === 2', but it has an exception for '1 === undefined'.)\nDoes not yet work for 'instanceof'.\nDoes *not* warn for 'if (x.y)' where 'x.y' is always truthy. For that, see strict-boolean-expressions.\n\nThis rule requires `strictNullChecks` to work properly.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "typedef": { "description": "Requires type definitions to exist.", "definitions": { "options": { "type": "array", "items": { "type": "string", "enum": [ "call-signature", "arrow-call-signature", "parameter", "arrow-parameter", "property-declaration", "variable-declaration", "member-variable-declaration", "object-destructuring", "array-destructuring" ] }, "minItems": 1, "maxItems": 9, "uniqueItems": true } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": { "$ref": "#/definitions/tsRules/properties/typedef/definitions/options/items" }, "maxItems": 10, "uniqueItems": true, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/typedef/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/typedef/definitions/options/items" } ] }, "severity": {} }, "additionalProperties": false } ] }, "typedef-whitespace": { "description": "Requires or disallows whitespace for type definitions.", "definitions": { "options": { "type": "array", "items": [ { "type": "object", "properties": { "call-signature": { "type": "string", "enum": ["nospace", "onespace", "space"] }, "index-signature": { "type": "string", "enum": ["nospace", "onespace", "space"] }, "parameter": { "type": "string", "enum": ["nospace", "onespace", "space"] }, "property-declaration": { "type": "string", "enum": ["nospace", "onespace", "space"] }, "variable-declaration": { "type": "string", "enum": ["nospace", "onespace", "space"] } }, "additionalProperties": false }, { "type": "object", "properties": { "call-signature": { "type": "string", "enum": ["nospace", "onespace", "space"] }, "index-signature": { "type": "string", "enum": ["nospace", "onespace", "space"] }, "parameter": { "type": "string", "enum": ["nospace", "onespace", "space"] }, "property-declaration": { "type": "string", "enum": ["nospace", "onespace", "space"] }, "variable-declaration": { "type": "string", "enum": ["nospace", "onespace", "space"] } }, "additionalProperties": false } ], "minItems": 1, "maxItems": 2 } }, "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" }, { "$ref": "#/definitions/tsRules/properties/typedef-whitespace/definitions/options/items/0" }, { "$ref": "#/definitions/tsRules/properties/typedef-whitespace/definitions/options/items/1" } ], "maxItems": 3, "properties": { "options": { "description": "An option value or an array of multiple option values.", "oneOf": [ { "$ref": "#/definitions/tsRules/properties/typedef-whitespace/definitions/options" }, { "$ref": "#/definitions/tsRules/properties/typedef-whitespace/definitions/options/items/0" } ] }, "severity": {} }, "additionalProperties": false } ] }, "type-literal-delimiter": { "description": "Checks that type literal members are separated by semicolons.\nEnforces a trailing semicolon for multiline type literals.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" }, { "type": "object", "properties": { "singleLine": { "type": "string", "enum": ["always", "never"] } } } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "unified-signatures": { "description": "Warns for any two overloads that could be unified into one by using a union or an optional/rest parameter.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] }, "use-default-type-parameter": { "description": "Warns if an explicitly specified type argument is the default for that type parameter.", "allOf": [ { "$ref": "#/definitions/rule" }, { "items": [ { "type": "boolean" } ], "additionalItems": false, "properties": { "severity": {} }, "additionalProperties": false } ] } } } }, "properties": { "extends": { "description": "The name of a built-in configuration preset, or a path or array of paths to other configuration files which are extended by this configuration. These values are handled using node module resolution semantics.", "type": ["string", "array"], "items": { "type": "string" } }, "rulesDirectory": { "description": "A path to a directory or an array of paths to directories of custom rules. These values are handled using node module resolution semantics, if an `index.js` is placed in your rules directory.", "type": ["string", "array"], "items": { "type": "string" } }, "rules": { "description": "A map of rules that will be used to lint TypeScript files. These rules apply to `.ts` and `.tsx` files.", "allOf": [ { "$ref": "#/definitions/tsRules" }, { "$ref": "#/definitions/rules" } ] }, "jsRules": { "description": "A map of rules that will be used to lint JavaScript files. These rules apply to `.js` and `.jsx` files.", "$ref": "#/definitions/rules" }, "defaultSeverity": { "description": "The severity level used when a rule specifies \"default\" as its severity level. If undefined, \"error\" is used.", "type": "string", "enum": ["error", "warning", "warn", "off", "none"], "default": "error" }, "linterOptions": { "description": "Additional linter options.", "type": "object", "properties": { "exclude": { "description": "An array of globs. Any file matching these globs will not be linted. All exclude patterns are relative to the configuration file they were specified in.", "type": "array", "items": { "type": "string" } } } } }, "title": "JSON schema for the TSLint configuration files.", "type": "object" }