[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/tslint.json","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":{"description":"Forbid for\u2026in statements\nhttps://palantir.github.io/tslint/rules/no-for-in/","allOf":[{"$ref":"#/definitions/rule"},{"items":[{"type":"boolean"}],"additionalItems":false,"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":{"allOf":[{"$ref":"#/definitions/rules/properties/no-implicit-dependencies/definitions/options/items/0"},{"$ref":"#/definitions/rules/properties/no-implicit-dependencies/definitions/options/items/1"}]},"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/0"},{"$ref":"#/definitions/rules/properties/no-implicit-dependencies/definitions/options/items/1"}]},"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-undefined-union":{"description":"Forbid explicitly declared or implicitly returned union types with both null and undefined as members\nhttps://palantir.github.io/tslint/rules/no-null-undefined-union/","allOf":[{"$ref":"#/definitions/rule"},{"items":[{"type":"boolean"}],"additionalItems":false,"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 `/// <reference path=>` 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}]},"no-async-without-await":{"description":"Force functions marked async contain an await or return statement\nhttps://palantir.github.io/tslint/rules/no-async-without-await/","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","minimum":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}]},"ban-ts-ignore":{"description":"Bans \"// @ts-ignore\" comments from being used.","allOf":[{"$ref":"#/definitions/rule"},{"items":[{"type":"boolean"}],"additionalItems":false,"additionalProperties":false}]},"array-type":{"description":"Requires using either 'T[]' or 'Array<T>' 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 `<Type>`.","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 `<reference types=\"foo\" />` 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}]},"function-constructor":{"description":"Prevents using the built-in Function constructor.","allOf":[{"$ref":"#/definitions/rule"},{"items":[{"type":"boolean"}],"additionalItems":false,"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":{"$ref":"#/definitions/rules","description":"A map of rules that will be used to lint JavaScript files. These rules apply to `.js` and `.jsx` files."},"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"}
</schema>

[User] Provide a JSON object that satisfies the schema "JSON schema for the TSLint configuration files.". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Severity level. Level "error" will cause exit code 2.

Enforces vertical alignment.

arguments elements members parameters statements

An option value or an array of multiple option values.

Requires parentheses around the parameters of arrow function definitions.

Suggests to convert `() => { return x; }` to `() => x`.

Bans the use of specific functions or global methods.

Bans the comma operator.

In a binary expression, a literal should always be on the right-hand side if possible.
For example, prefer 'x + 1' over '1 + x'.

Enforces PascalCased class and interface names.

Enforces formatting rules for single-line comments.

Enforces documentation for important items be filled out.

classes enums enum-members functions interfaces methods namespaces properties types variables

Enforces braces for `if`/`for`/`do`/`while` statements.

Enforces a threshold of cyclomatic complexity.

Warns when deprecated APIs are used.

Enforces UTF-8 file encoding.

Ensures the file ends with a newline.

Enforces a certain header comment for all files, matched by a regular expression.

Enforces a consistent file naming convention.

camel-case pascal-case kebab-case snake-case

Requires a `for ... in` statement to be filtered with an `if` statement.

Disallows importing the specified modules directly via `import` and `require`.
Instead only sub modules may be imported from that module.

Ensures proper spacing between import statement keywords

Enforces indentation with tabs or spaces.

Enforces basic format rules for JSDoc comments.

An option value or an array of multiple option values.

Only allows labels in sensible locations.

Enforces a consistent linebreak style.

A file may not contain more than the specified number of classes

Requires files to remain under a certain number of lines

Requires lines to be under a certain max length.

Enforces member ordering.

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

Enforces blank line before return when not the only line in the block.

Requires that chained method calls be broken apart onto separate lines.

Requires parentheses when invoking a constructor via the `new` keyword.

Disallows use of `arguments.callee`.

Disallows bitwise operators.

Disallows any type of assignment in conditionals.

Disallows one or more blank lines in a row.

Bans the use of specified `console` methods.

Disallows access to the constructors of `String`, `Number`, and `Boolean`.

Disallows `debugger` statements.

Disallows default exports in ES6-style modules.

Disallows multiple import statements from the same module.

Warns if 'super()' appears twice in a constructor.

Prevents duplicate cases in switch statements.

Disallows duplicate variable declarations in the same block scope.

An option value or an array of multiple option values.

Bans usage of the delete operator with computed key expressions.

Disallows empty blocks.

Disallows `eval` function invocations.

Forbid for…in statements
https://palantir.github.io/tslint/rules/no-for-in/

Disallows iterating over an array with a for-in loop.

Disallows importing modules that are not listed as dependency in the project's package.json.

Avoid import statements with side-effect.

Warns on use of `${` in non-template strings.

Disallows using the `this` keyword outside of classes.

Disallow irregular whitespace outside of strings and comments

Disallows the use constant number values outside of variable assignments.
When no list of allowed values is specified, -1, 0 and 1 are allowed by default.

Forbid explicitly declared or implicitly returned union types with both null and undefined as members
https://palantir.github.io/tslint/rules/no-null-undefined-union/

Disallows use of the `null` keyword literal.

Disallows reassigning parameters.

Disallows `/// <reference path=>` imports (use ES6-style imports instead).

Disallows unnecessary `return await`.

Disallows invocation of `require()`.

Disallows shadowing variable declarations.

Forbids array literals to contain missing elements.

Forbids unnecessary string literal property access.
Allows `obj["prop-erty"]` (can't be a regular property access).
Disallows `obj["property"]` (should be `obj.property`).

Flags throwing plain strings or concatenations of strings because only Errors produce proper stack traces.

Disallows importing any submodule.

An option value or an array of multiple option values.

Disallows falling through case statements.

Disallows unnecessary references to `this`.

Disallows trailing whitespace at the end of a line.

ignore-comments ignore-jsdoc ignore-template-strings ignore-blank-lines

Replaces `x => f(x)` with just `f`.
To catch more cases, enable `only-arrow-functions` and `arrow-return-shorthand` too.

Disallows classes that are not strictly necessary.

Forbids a 'var'/'let' statement or destructuring initializer to be initialized to 'undefined'.

Disallows control flow statements, such as `return`, `continue` `break` and `throws` in finally blocks.

Disallows unused expression statements.

Disallows usage of variables before their declaration.

Disallows usage of the `var` keyword.

Requires expressions of type `void` to appear in statement position.

Checks that decimal literals should begin with '0.' instead of just '.', and should not end with a trailing '0'.

Enforces consistent object literal property quote style.

always as-needed consistent consistent-as-needed

Enforces use of ES6 object literal shorthand when possible.

Checks ordering of keys in object literals.

ignore-case locale-compare match-declaration-order shorthand-first

Requires the specified tokens to be on the same line as the expression preceding them.

check-catch check-finally check-else check-open-brace check-whitespace

Disallows multiple variable definitions in the same declaration statement.

Disallows traditional (non-arrow) function expressions.

An option value or an array of multiple option values.

Requires that import statements be alphabetized.

case-insensitive case-insensitive-legacy lowercase-first lowercase-last any

Recommends to use a conditional expression instead of assigning to the same thing in each branch of an if statement.

Requires that variable declarations use `const` instead of `let` and `var` if possible.

Recommends a 'for-of' loop over a standard 'for' loop if the index is only used to access the array being iterated.

Warns for class methods that do not use 'this'.

Prefer `foo(): void` over `foo: () => void` in interfaces and types.

Enforces the use of the ES2015 object spread operator over `Object.assign()` where appropriate.

Prefer a `switch` statement to an `if` statement with simple `===` comparisons.

Prefer a template expression over string literal concatenation.

Prefer while loops instead of for loops without an initializer and incrementor.

Force functions marked async contain an await or return statement
https://palantir.github.io/tslint/rules/no-async-without-await/

Requires any function or method that returns a promise to be marked async.

Requires single or double quotes for string literals.

single double jsx-single jsx-double avoid-escape avoid-template

Requires the radix parameter to be specified when calling `parseInt`.

When adding two variables, operands must both be of type number or of type string.

Prefer `return;` in void functions and `return undefined;` in value-returning functions.

Enforces consistent semicolon usage at the end of every statement.

An option value or an array of multiple option values.

Require or disallow a space before function parenthesis

Enforces spaces within parentheses or disallow them.

Require a `default` case in all `switch` statements.

Checks whether the final clause of a switch statement ends in `break;`.

Requires or disallows trailing commas in array and object literals, destructuring assignments, function typings, named imports and exports and function parameters.

Option to forbid trailing comma after rest

Requires `===` and `!==` in place of `==` and `!=`.

Makes sure result of `typeof` is compared to correct string values

Enforces use of the `isNaN()` function to check for NaN references instead of a comparison to the `NaN` constant.

Checks variable names for various errors.

check-format require-const-for-all-caps allow-leading-underscore allow-trailing-underscore allow-pascal-case allow-snake-case ban-keywords

Enforces whitespace style conventions.

check-branch check-decl check-operator check-module check-separator check-rest-spread check-type check-typecast check-type-operator check-preblock check-postbrace

Enforces function overloads to be consecutive.

Bans "// @ts-ignore" comments from being used.

Requires using either 'T[]' or 'Array<T>' for arrays.

Warns for an awaited value that is not a Promise.

Bans specific types from being used. Does not ban the corresponding runtime objects from being used.

An interface or literal type with just a call signature can be written as a function type.

Requires interface names to begin with a capital 'I'

An option value or an array of multiple option values.

Prefer an interface declaration over a type literal (`type T = { ... }`)

Requires that a default import have the same name as the declaration it imports.
Does nothing for anonymous default exports.

Requires explicit visibility declarations for class members.

no-public check-accessor check-constructor check-parameter-property

Requires the use of `as Type` for type assertions instead of `<Type>`.

Disallows usages of `any` as a type declaration.

Warns on comparison to a boolean literal, as in `x === true`.

Forbids empty interfaces.

Promises returned by functions must be handled appropriately.

Disallows explicit type declarations for variables or parameters initialized to a number, string, or boolean.

Disallow type inference of {} (empty object type) at function and constructor call sites

Disallows internal `module`

Disallows mergeable namespaces in the same file.

Warns on apparent attempts to define constructors for interfaces or `new` for classes.

Disallows use of internal `module`s and `namespace`s.

Disallows non-null assertions.

Forbids an object literal to appear in a type assertion expression.
Casting to `any` is still allowed.

Disallows parameter properties in class constructors.

Forbids JSDoc which duplicates TypeScript functionality.

Don't `<reference types="foo" />` if you import `foo` anyway.

Warns when a method is used as outside of a method call.

An option value or an array of multiple option values.

Warns when a namespace qualifier (`A.x`) is unnecessary.

Warns if a type assertion does not change the type of an expression.

Warns when using an expression of type 'any' in a dynamic way.
Uses are only allowed if they would work for `{} | null | undefined`.
Type casts and tests are allowed.
Expressions that work on all values (such as `"" + x`) are allowed.

Disallows unused imports, variables, functions and private class members. Similar to tsc's --noUnusedParameters and --noUnusedLocals options, but does not interrupt code compilation.

Disallows the use of require statements except in import statements.

Requires that private variables are marked as `readonly` if they're never modified outside of the constructor.

Restricts the types allowed in boolean expressions. By default only booleans are allowed.

The following nodes are checked:
* Arguments to the `!`, `&&`, and `||` operators
* The condition in a conditional expression (`cond ? x : y`)
* Conditions for `if`, `for`, `while`, and `do-while` statements.

allow-null-union allow-undefined-union allow-string allow-enum allow-number allow-mix allow-boolean-or-undefined ignore-rhs

Warns for type predicates that are always true or always false.
Works for 'typeof' comparisons to constants (e.g. 'typeof foo === "string"'), and equality comparison to 'null'/'undefined'.
(TypeScript won't let you compare '1 === 2', but it has an exception for '1 === undefined'.)
Does not yet work for 'instanceof'.
Does *not* warn for 'if (x.y)' where 'x.y' is always truthy. For that, see strict-boolean-expressions.

This rule requires `strictNullChecks` to work properly.

Requires type definitions to exist.

call-signature arrow-call-signature parameter arrow-parameter property-declaration variable-declaration member-variable-declaration object-destructuring array-destructuring

Requires or disallows whitespace for type definitions.

Checks that type literal members are separated by semicolons.
Enforces a trailing semicolon for multiline type literals.

Warns for any two overloads that could be unified into one by using a union or an optional/rest parameter.

Warns if an explicitly specified type argument is the default for that type parameter.

Prevents using the built-in Function constructor.

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.

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.

A map of rules that will be used to lint TypeScript files. These rules apply to `.ts` and `.tsx` files.

A map of rules that will be used to lint JavaScript files. These rules apply to `.js` and `.jsx` files.

The severity level used when a rule specifies "default" as its severity level. If undefined, "error" is used.

Additional linter options.

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.

JSON schema for the TSLint configuration files.

Provide a JSON object that satisfies the schema "JSON schema for the TSLint configuration files.". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

JSON schema for the TSLint configuration files.